···2233## 3.4.0
4455-Allows you to make playlists public when using Fission / Webnative.
55+- Adjusted search behaviour, now searches while typing (with a small delay).
66+- Allows you to make playlists public when using Fission / Webnative.
77+- Fixes issue with Safari where reloading after a search caused the loader to be shown indefinitely.
6879810## 3.3.0
+12-4
src/Applications/UI.elm
···136136 -----------------------------------------
137137 -- Debouncing
138138 -----------------------------------------
139139- , debounce =
139139+ , resizeDebouncer =
140140 0.25
141141+ |> Debouncer.fromSeconds
142142+ |> Debouncer.debounce
143143+ |> Debouncer.toDebouncer
144144+ , searchDebouncer =
145145+ 0.5
141146 |> Debouncer.fromSeconds
142147 |> Debouncer.debounce
143148 |> Debouncer.toDebouncer
···337342 CopyToClipboard a ->
338343 Interface.copyToClipboard a
339344340340- Debounce a ->
341341- Interface.debounce update a
342342-343345 DismissNotification a ->
344346 Common.dismissNotification a
345347···370372 RemoveTrackSelection ->
371373 Interface.removeTrackSelection
372374375375+ ResizeDebounce a ->
376376+ Interface.resizeDebounce update a
377377+373378 ResizedWindow a ->
374379 Interface.resizedWindow a
380380+381381+ SearchDebounce a ->
382382+ Interface.searchDebounce update a
375383376384 SetIsTouchDevice a ->
377385 Interface.setIsTouchDevice a
+24-1
src/Applications/UI/Common/State.elm
···44import Browser.Navigation as Nav
55import Common exposing (..)
66import ContextMenu exposing (ContextMenu)
77+import Debouncer.Basic as Debouncer exposing (Debouncer)
78import List.Extra as List
89import Monocle.Lens as Lens exposing (Lens)
910import Notifications exposing (Notification)
···1617import UI.Syncing.Types as Syncing
1718import UI.Tracks.Scene.Covers
1819import UI.Tracks.Scene.List
1919-import UI.Types as UI exposing (Manager, Msg)
2020+import UI.Types as UI exposing (Manager, Model, Msg)
2021import User.Layer exposing (Method)
21222223···3031 |> Page.toString
3132 |> Nav.pushUrl model.navKey
3233 |> return model
3434+3535+3636+debounce : (Model -> Debouncer Msg Msg) -> (Debouncer Msg Msg -> Model -> Model) -> (Debouncer.Msg Msg -> Msg) -> (Msg -> Model -> ( Model, Cmd Msg )) -> Debouncer.Msg Msg -> Manager
3737+debounce getter setter debouncerMsgContainer update debouncerMsg model =
3838+ let
3939+ ( subModel, subCmd, emittedMsg ) =
4040+ Debouncer.update debouncerMsg (getter model)
4141+4242+ mappedCmd =
4343+ Cmd.map debouncerMsgContainer subCmd
4444+4545+ updatedModel =
4646+ setter subModel model
4747+ in
4848+ case emittedMsg of
4949+ Just emitted ->
5050+ updatedModel
5151+ |> update emitted
5252+ |> Return.command mappedCmd
5353+5454+ Nothing ->
5555+ return updatedModel mappedCmd
335634573558dismissNotification : { id : Int } -> Manager
···55// and connect the other bits to it.
667788+import "subworkers"
89import "tocca"
1010+911import loadScript from "load-script2"
1012import JSZip from "jszip"
1113import { saveAs } from "file-saver"