@@ -13,12 +13,14 @@ import Data.String as String
1313import Data.String (Pattern (..))
1414import Data.String.Regex as Regex
1515import Data.String.Regex.Flags as RegexFlags
16+ import Data.Tuple (Tuple (..))
1617import Effect (Effect )
1718import Effect.Aff (Aff , Milliseconds (..), delay , makeAff )
1819import Effect.Aff as Aff
1920import Effect.Class.Console (error )
2021import Effect.Uncurried (EffectFn3 , runEffectFn3 )
2122import Partial.Unsafe (unsafeCrashWith )
23+ import Foreign.Object as Object
2224import Halogen as H
2325import Halogen.HTML as HH
2426import Halogen.HTML.Events as HE
@@ -30,7 +32,7 @@ import Try.Editor (MarkerType(..), toStringMarkerType)
3032import Try.Editor as Editor
3133import Try.Gist (getGistById , tryLoadFileFromGist )
3234import Try.GitHub (getRawGitHubFile )
33- import Try.QueryString (compressToEncodedURIComponent , decompressFromEncodedURIComponent , getQueryStringMaybe , setQueryString )
35+ import Try.QueryString (compressToEncodedURIComponent , decompressFromEncodedURIComponent , getQueryStringMaybe , setQueryString , setQueryStrings )
3436import Try.SharedConfig as SharedConfig
3537import Type.Proxy (Proxy (..))
3638import Web.HTML (window )
@@ -74,6 +76,12 @@ parseViewModeParam = case _ of
7476 " output" -> Just Output
7577 _ -> Nothing
7678
79+ encodeViewModeParam :: ViewMode -> String
80+ encodeViewModeParam = case _ of
81+ SideBySide -> " sidebyside"
82+ Code -> " code"
83+ Output -> " output"
84+
7785data Action
7886 = Initialize
7987 | EncodeInURL String
@@ -134,6 +142,12 @@ component = H.mkComponent
134142 UpdateSettings k -> do
135143 old <- H .get
136144 new <- H .modify \state -> state { settings = k state.settings }
145+ H .liftEffect do
146+ setQueryStrings $ Object .fromFoldable
147+ [ Tuple " view" (encodeViewModeParam new.settings.viewMode)
148+ , Tuple " js" (show new.settings.showJs)
149+ , Tuple " compile" (show new.settings.autoCompile)
150+ ]
137151 when (old.settings.showJs /= new.settings.showJs) do
138152 if new.settings.showJs then
139153 H .liftEffect teardownIFrame
0 commit comments