{ "version": 3, "sourceRoot": "Source", "sources": ["WebSharper.Forms/Forms.fs"], "sourcesContent": ["// $begin{copyright}\n//\n// This file is part of WebSharper\n//\n// Copyright (c) 2008-2018 IntelliFactory\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you\n// may not use this file except in compliance with the License. You may\n// obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n// implied. See the License for the specific language governing\n// permissions and limitations under the License.\n//\n// $end{copyright}\nnamespace WebSharper.Forms\n\nopen System.Runtime.CompilerServices\nopen WebSharper\nopen WebSharper.JavaScript\nopen WebSharper.UI\nopen WebSharper.UI.Client\nopen WebSharper.UI.Notation\n\n[]\ntype ErrorMessage (id: string, message: string) =\n\n []\n member this.Id = id\n\n []\n member this.Text = message\n\n[]\nmodule Fresh =\n\n let lastId = ref 0\n\n let Id() =\n incr lastId\n \"Form\" + string !lastId\n\n[]\ntype Result<'T> =\n | Success of 'T\n | Failure of list\n \n[]\ntype Result =\n\n static member IsSuccess (r: Result<'T>) =\n match r with\n | Success _ -> true\n | Failure _ -> false\n\n static member IsFailure (r: Result<'T>) =\n match r with\n | Success _ -> false\n | Failure _ -> true\n\n static member Map (f: 'T -> 'U) (r: Result<'T>) =\n match r with\n | Success x -> Success (f x)\n | Failure m -> Failure m\n\n static member Apply (rf: Result<'T -> 'U>) (rx: Result<'T>) =\n match rf with\n | Failure mf ->\n match rx with\n | Failure mx -> Failure (mf @ mx)\n | Success _ -> Failure mf\n | Success f ->\n match rx with\n | Failure mx -> Failure mx\n | Success x -> Success (f x)\n\n static member ApJoin (rf: Result<'T -> 'U>) (rx: Result>) =\n match rf with\n | Failure mf ->\n match rx with\n | Failure mx -> Failure (mf @ mx)\n | Success _ -> Failure mf\n | Success f ->\n match rx with\n | Failure mx\n | Success (Failure mx) -> Failure mx\n | Success (Success x) -> Success (f x)\n\n static member Bind (f: 'T -> Result<'U>) (r: Result<'T>) : Result<'U> =\n match r with\n | Failure m -> Failure m\n | Success x -> f x\n\n static member Append (app: 'T -> 'T -> 'T) (r1: Result<'T>) (r2: Result<'T>) : Result<'T> =\n match r1 with\n | Failure m1 ->\n match r2 with\n | Failure m2 -> Failure (m1 @ m2)\n | Success _ -> r1\n | Success x1 ->\n match r2 with\n | Failure _ -> r2\n | Success x2 -> Success (app x1 x2)\n\n static member FailWith (errorMessage, ?id) =\n let id = match id with Some id -> id | None -> Fresh.Id()\n Failure [ErrorMessage(id, errorMessage)]\n\n[]\ntype Form<'T, 'R> =\n {\n id : string\n view : View>\n render : 'R\n }\n\n []\n member this.Id = this.id\n []\n member this.View = this.view\n []\n member this.Render = this.render\n\ntype ErrorMessage with\n\n []\n static member Create (id: string, text) =\n new ErrorMessage(id, text)\n\n []\n static member Create (p: Form<_, _>, text) =\n new ErrorMessage(p.id, text)\n\n[]\nmodule Utils =\n\n let memoize f =\n let d = System.Collections.Generic.Dictionary()\n fun x ->\n if d.ContainsKey x then\n d.[x]\n else\n let y = f x\n d.[x] <- y\n y\n\n\n[]\nmodule Form =\n\n []\n type Dependent<'TResult, 'U, 'W>\n (\n renderPrimary: 'U -> Doc,\n pOut: View Doc>>>\n ) =\n\n let out =\n pOut.Bind (function\n | Success p -> p.view\n | Failure m -> View.Const (Failure m))\n \n []\n member this.View : View> = out\n\n []\n member this.RenderPrimary (f: 'U) : Doc =\n renderPrimary f\n\n member this.RenderDependent (f: 'W) : Doc =\n pOut |> Doc.BindView (function\n | Success p -> p.render f\n | Failure _ -> Doc.Empty)\n\n module Dependent =\n let Make primary dependent =\n let dependent = memoize (fun x ->\n let p = dependent x\n { view = p.view; id = p.id; render = fun x -> p.render x :> Doc })\n let pOut = primary.view.Map (Result.Map dependent)\n Dependent((fun x -> primary.render x :> Doc), pOut)\n\n\n []\n module Many =\n\n type ItemOperations(delete: unit -> unit, moveUp: Submitter>, moveDown: Submitter>) =\n []\n member this.Delete() = delete()\n []\n member this.MoveUp = moveUp\n []\n member this.MoveDown = moveDown\n\n type System.Collections.Generic.List<'T> with\n member this.Swap(i, j) =\n let tmp = this.[i]\n this.[i] <- this.[j]\n this.[j] <- tmp\n\n module Fresh =\n\n let Int =\n let x = ref 0\n fun () ->\n incr x\n !x\n\n type Collection<'T, 'V, 'W, 'Y, 'Z when 'W :> Doc and 'Z :> Doc> (p : 'T -> Form<'T, 'V -> 'W>, inits: seq<'T>, adder : Form<'T, 'Y -> 'Z>) =\n let arr = ResizeArray()\n let var = Var.Create arr\n let mk (x: 'T) =\n let ident = Fresh.Int()\n let getThisIndexIn = Seq.findIndex (fun (_, _, j) -> ident = j)\n let vIndex = var.View |> View.Map getThisIndexIn\n let delete() =\n let k = getThisIndexIn arr\n arr.RemoveAt k\n Var.Update var id\n let sMoveUp =\n let inp = vIndex |> View.Map (fun i ->\n if i = 0 then Failure [] else Success true\n )\n Submitter.Create inp (if arr.Count = 0 then Failure [] else Success false)\n let vMoveUp =\n sMoveUp.View |> View.Map (function\n | Success true ->\n let i = getThisIndexIn arr\n arr.Swap(i, i - 1)\n Var.Update var id\n | _ -> ()\n )\n let sMoveDown =\n let inp = vIndex |> View.Map (fun i ->\n if i = arr.Count - 1 then Failure [] else Success true\n )\n Submitter.Create inp (Failure [])\n let vMoveDown =\n sMoveDown.View |> View.Map (function\n | Success true ->\n let i = getThisIndexIn arr\n arr.Swap(i, i + 1)\n Var.Update var id\n | _ -> ()\n )\n let p = p x\n let v = View.Map2 (fun x () -> x) p.view (View.Map2 (fun () () -> ()) vMoveUp vMoveDown)\n let p = { p with view = v }\n p, ItemOperations(delete, sMoveUp, sMoveDown), ident\n do Seq.iter (mk >> arr.Add) inits\n\n let fst3 (x, _, _) = x\n let changesView =\n var.View\n |> View.Bind (fun arr ->\n arr.ToArray()\n |> Array.MapTreeReduce\n (fun x ->\n (fst3 x).view |> View.Map (fun _ -> Seq.singleton x))\n (View.Const Seq.empty)\n (View.Map2 Seq.append)\n )\n\n let add x =\n arr.Add(mk x)\n Var.Update var id\n\n let adderView x =\n match x with\n | Failure _ -> ()\n | Success x -> add x\n Doc.Empty\n\n let out =\n var.View\n |> View.Bind (fun s ->\n s.ToArray()\n |> Array.MapTreeReduce\n (fun (p, _, _) -> p.view |> View.Map (Result.Map Seq.singleton))\n (View.Const (Success Seq.empty))\n (View.Map2 (Result.Append Seq.append))\n )\n\n []\n member this.View = out\n\n member this.Render (f: ItemOperations -> 'V) : Doc =\n changesView\n |> Doc.BindSeqCachedBy (fun (_, _, ident) -> ident) (fun (p, ops, _) ->\n p.render (f ops) :> Doc\n )\n\n []\n member this.Add (x: 'T) =\n add x\n\n member this.RenderAdder f =\n adder.render f\n |> Doc.Append (adder.view |> View.Map adderView |> Doc.EmbedView)\n\n []\n type CollectionWithDefault<'T, 'V, 'W when 'W :> Doc> (p, inits, pInit, ``default``) =\n inherit Collection<'T, 'V, 'W, 'V, 'W> (p, inits, pInit)\n\n member this.Add() = this.Add ``default``\n\n []\n let (>>^) v f = fun g -> g (v f)\n\n let Create view (renderBuilder: _ -> _) =\n {\n id = Fresh.Id()\n view = view\n render = renderBuilder\n }\n\n let Render renderFunction p =\n p.render renderFunction\n |> Doc.Append (\n p.view\n |> View.Map (fun _ -> Doc.Empty)\n |> Doc.EmbedView\n )\n\n []\n let RenderMany (c: Many.Collection<_,_,_,_,_>) f =\n c.Render f\n\n []\n let RenderManyAdder (c: Many.Collection<_,_,_,_,_>) f =\n c.RenderAdder f\n\n []\n let RenderPrimary (d: Dependent<_,_,_>) f =\n d.RenderPrimary f\n\n []\n let RenderDependent (d: Dependent<_,_,_>) f =\n d.RenderDependent f\n\n []\n let GetView (p: Form<_, _ -> _>) =\n p.view\n\n let Return value =\n {\n id = Fresh.Id()\n view = View.Const (Success value)\n render = id\n }\n\n let ReturnFailure () =\n {\n id = Fresh.Id()\n view = View.Const (Failure [])\n render = id\n }\n\n let YieldVar (var: Var<_>) =\n {\n id = var.Id\n view = var.View |> View.Map Success\n render = fun r -> r var\n }\n\n let Yield init =\n YieldVar (Var.Create init)\n\n let YieldFailure () =\n let var = Var.Create JS.Undefined<_> :> Var<_>\n let view = var.View\n {\n id = var.Id\n view = View.SnapshotOn (Failure []) view (view |> View.Map Success)\n render = fun r -> r var\n }\n\n let YieldOption init noneValue =\n let var = Var.Create (defaultArg init noneValue) :> Var<_>\n {\n id = var.Id\n view = var.View |> View.Map (fun x ->\n Success (if x = noneValue then None else Some x))\n render = fun r -> r var\n }\n\n let Apply pf px =\n {\n id = Fresh.Id()\n view = View.Map2 Result.Apply pf.view px.view\n render = pf.render >> px.render\n }\n\n let ApJoin pf px =\n {\n id = Fresh.Id()\n view = View.Map2 Result.ApJoin pf.view px.view\n render = pf.render >> px.render\n }\n\n let WithSubmit p =\n let submitter = Submitter.Create p.view (Failure [])\n {\n id = Fresh.Id()\n view = submitter.View\n render = fun r -> p.render r submitter\n }\n\n let TransmitView p =\n {\n id = p.id\n view = p.view\n render = fun x -> p.render x p.view\n }\n\n let TransmitViewMapResult f p =\n {\n id = p.id\n view = p.view\n render = fun x -> p.render x (View.Map f p.view)\n }\n\n let TransmitViewMap f p =\n TransmitViewMapResult (Result.Map f) p\n\n let MapResult f p : Form<_, _ -> _> =\n {\n id = p.id\n view = View.Map f p.view\n render = p.render\n }\n\n let MapToResult f p =\n MapResult (Result.Bind f) p\n\n let Map f p =\n MapResult (Result.Map f) p\n\n let MapAsyncResult f p : Form<_, _ -> _> =\n {\n id = p.id\n view = View.MapAsync f p.view\n render = p.render\n }\n\n let MapToAsyncResult f p =\n let f x =\n match x with\n | Success x -> async { return! f x }\n | Failure m -> async { return Failure m }\n MapAsyncResult f p\n\n let MapAsync f p =\n let f x =\n match x with\n | Success x -> async { let! y = f x in return Success y }\n | Failure m -> async { return Failure m }\n MapAsyncResult f p\n\n let MapRenderArgs f p =\n {\n id = p.id\n view = p.view\n render = fun g -> g (p.render f)\n }\n\n let FlushErrors p =\n MapResult (function Failure _ -> Failure [] | x -> x) p\n\n let Run f p =\n Map (fun x -> f x; x) p\n\n let RunResult f p =\n MapResult (fun x -> f x; x) p\n\n []\n let ManyForm init addForm itemForm =\n let m = Many.Collection(itemForm, init, addForm)\n {\n id = Fresh.Id()\n view = m.View\n render = fun f -> f m\n }\n\n []\n let Many init addValue itemForm =\n let pInit = itemForm addValue\n let m = Many.CollectionWithDefault(itemForm, init, pInit, addValue)\n {\n id = Fresh.Id()\n view = m.View\n render = fun f -> f m\n }\n\n let Dependent primary dependent =\n let d = Dependent.Make primary dependent\n {\n id = Fresh.Id()\n view = d.View\n render = fun f -> f d\n }\n\n type Builder =\n | Do\n\n []\n member this.Bind(input, output) = Dependent input output\n\n []\n member this.Return x = Return x\n\n []\n member this.ReturnFrom (p: Form<_, _ -> _>) = p\n\n []\n member this.Yield init = Yield init\n\n []\n member this.YieldFrom (p: Form<_, _ -> _>) = p\n\n []\n member this.Zero() = ReturnFailure()\n\n[]\nmodule Validation =\n\n let Is pred msg p =\n p |> Form.MapResult (fun res ->\n match res with\n | Success x -> if pred x then res else Failure [ErrorMessage(p.id, msg)]\n | Failure _ -> res\n )\n\n let IsNotEmpty msg p =\n Is (fun x -> x <> \"\") msg p\n\n let IsMatch (regexp: string) msg p =\n Is (RegExp(regexp).Test) msg p\n\n let MapValidCheckedInput msg p =\n p |> Form.MapResult (fun res ->\n match res with\n | Success (CheckedInput.Valid (x, _)) -> Success x\n | Success _ -> Failure [ErrorMessage.Create(p, msg)]\n | Failure msgs -> Failure msgs\n )\n\n[]\n[]\nmodule Pervasives =\n\n let (<*>) pf px =\n Form.Apply pf px\n\n let (<*?>) pf px =\n Form.ApJoin pf px\n\n[]\nmodule Attr =\n\n open WebSharper.UI.Html\n open WebSharper.UI.Client\n\n let SubmitterValidate (submitter: Submitter<_>) =\n Attr.Append\n (on.click (fun _ _ -> submitter.Trigger()))\n (attr.disabledDynPred (View.Const \"disabled\")\n (submitter.Input |> View.Map Result.IsFailure))\n\n[]\nmodule Doc =\n\n open WebSharper.UI.Html\n open WebSharper.UI.Client\n\n let ButtonValidate caption attrs (submitter: Submitter<_>) =\n Elt.button (Seq.append [|Attr.SubmitterValidate submitter|] attrs) [text caption]\n\n let ShowErrors (v: View>) (f: list -> Doc) =\n v.Doc(function\n | Success _ -> Doc.Empty\n | Failure msgs -> f msgs\n )\n\n let ShowSuccess (v: View>) (f: 'T -> Doc) =\n v.Doc(function\n | Success x -> f x\n | Failure msgs -> Doc.Empty\n )\n\n[]\ntype View =\n\n []\n static member Through (input: View>, v: Var<'U>) : View> =\n input |> View.Map (fun x ->\n match x with\n | Success _ -> x\n | Failure msgs -> Failure (msgs |> List.filter (fun m -> m.Id = v.Id))\n )\n\n []\n static member Through (input: View>, p: Form<'U, 'R>) : View> =\n input |> View.Map (fun x ->\n match x with\n | Success _ -> x\n | Failure msgs -> Failure (msgs |> List.filter (fun m -> m.Id = p.id))\n )\n\n []\n static member ShowErrors (this: View>, f: list -> Doc) : Doc =\n Doc.ShowErrors this f\n\n []\n static member ShowSuccess (this: View>, f: 'T -> Doc) : Doc =\n Doc.ShowSuccess this f\n"], "names": [], "mappings": "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" }