Feliz: рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдпрд╛рддреНрд░рд╛ | Fable.React рдФрд░ Feliz рдХреЗ рдмреАрдЪ рддреБрд▓рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Zaid-Ajaj/Feliz

рдирдорд╕реНрддреЗ,

рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХреЛ рдлреЗрд▓рд┐рдЬ рдФрд░ рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдпрд╣ рдлреАрдбрдмреИрдХ Fable.Repl рдХреЛ Fable.React + Fulma рд╕реЗ Feliz + Feliz.Bulma рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдкрд╣рд▓реЗ рдЦрдВрдб рдореЗрдВ, рдореИрдВ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдКрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИрдВ рдпрд╛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдБ рдереАрдВред рдореИрдВ Fable.React рдФрд░ Fulma рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдЪреНрдЫреЗ рдФрд░ рдХрдо рдЕрдЪреНрдЫреЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред

рдлрд┐рд░, рджреВрд╕рд░реА рдмрд╛рд░ рдореЗрдВ, рдореИрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдФрд░ рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдХреИрд╕рд╛ рд░рд╣рд╛ред рдмреБрд▓рдорд╛ред рд▓рдХреНрд╖реНрдп рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рдФрд░ рдХреНрдпреЛрдВред

рдЬрд░реВрд░реА

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬрд┐рд╕ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ рдФрд░ рд╡рд╣ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдбрд░рд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛, рдЯрд┐рдкреНрдкрдгреА рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рдЦрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛

рд╡рд░реНрдЧреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдлреАрдбрдмреИрдХ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрд▓рд╛рд╕рд┐рдХ "рдкреЗрд╢реЗрд╡рд░ рдмрдирд╛рдо рд╡рд┐рдкрдХреНрд╖" рдореБрдЭреЗ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдФрд░ рдЖрдХреНрд░рд╛рдордХ рд▓рдЧрд╛ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

  • тЬФя╕П рдХреБрдЫ рдРрд╕рд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдпрд╛
  • тЪая╕П рдХрдИ рдЪреАрдЬреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

    • рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рдЖрджрдд рд╕реЗ рдЕрд▓рдЧ рд╣реИ

    • рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕реЗ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

    • рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

  • тД╣ рдПрдХ рдРрд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдереА рд▓реЗрдХрд┐рди рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ

рдПрдХ рд╣реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдХрдИ рдкреНрд░рддреАрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ :)

рдлреЗрд▓рд┐рдЬрд╝


тЬФя╕П рдлрд╝реЗрд▓рд┐рдЬрд╝ рдФрд░ рдлрд╝реЗрдмрд▓ред рд░рд┐рдПрдХреНрдЯ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдлрд╝реЗрдмрд▓ рдХреЗ рдКрдкрд░ рдПрдХ рдкрд░рдд рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


тЬФя╕П Fable.React рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдЗрдВрдбреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реВрдЪреА рд╣реИред рд╕рд╛рд░рдгреА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

**рдХрд▓реНрдкрд┐рддредрд░рд┐рдПрдХреНрдЯ + рдлреБрд▓реНрдорд╛**

div [ ]
    [ Hero.hero [ Hero.IsFullHeight ]
        [ Hero.body [ ]
            [ Container.container [ ]
                [ img [ Src "img/fable-ionide.png"
                        Style [ Display DisplayOptions.Block
                                Width "auto"
                                Margin "auto" ] ]
                  br [ ]
                  Heading.h3 [ Heading.Modifiers [ Modifier.TextAlignment (Screen.All, TextAlignment.Centered) ] ]
                    [ str "Fable REPL" ]
                  Heading.p [ Heading.IsSubtitle
                              Heading.Is5
                              Heading.Modifiers [ Modifier.TextAlignment (Screen.All, TextAlignment.Centered) ] ]
                    [ str "is only available on desktop" ] ] ] ] ]
**рдлреЗрд▓рд┐рдЬ + рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛**
Html.div [
    Bulma.hero [
        hero.isFullHeight
        prop.children [
            Bulma.heroBody [
                Bulma.container [
                    Html.img [
                        prop.src "img/fable-ionide.png"
                        prop.style [
                            style.display.block
                            style.width length.auto
                            style.margin length.auto
                        ]
                    ]

                    Html.br [ ]

                    Bulma.title3 [
                        text.hasTextCentered
                        prop.text "Fable REPL"
                    ]

                    Bulma.subtitle5 [
                        text.hasTextCentered
                        prop.text "is only available on desktop"
                    ]
                ]
            ]
        ]
    ]
]


тЬФя╕П рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдб рдХреЛ рдЗрдзрд░-рдЙрдзрд░ рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИ

feliz_move_code_demo


тЬФя╕П рдбреЛрдо рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреАрдЖрдИ


тЬФя╕П ICSSUnits рдорд╛рдзреНрдпрдо рд╕реЗ CSS рдФрд░ CSS рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╢рдХреНрдд рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ API

style.marginLeft (length.em 0.5)
style.width (length.percent (model.PanelSplitRatio * 100.))

тЬФя╕П рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЗрдВ Html.* рдпрд╛ Prop.* рдЕрдВрддрд░реНрдЧрдд рд╣реИрдВ


тЬФя╕П я╕П рдлреЗрд▓рд┐рдЬ рдХреЛрдб рдореЗрдВ рд╢реЛрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

Html.span "Fable REPL"

// instead of

// Feliz verbose version
span [
    str "Fable REPL"
]

// Fable.React

span [ ]
    [ str "Fable REPL" ]

// --------------------

Bulma.title4 "Fable REPL"

// instead of

// Feliz.Bulma verbose version
Bulma.title4 [
    prop.text "Fable REPL"
]

// Fable.React
Headings.h4 [ ]
    [ str "Fable REPL" ]
рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╣рдо рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ "рдкрдврд╝" рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рд╣рд░реА рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрднреА-рдХрднреА рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдХреЛ рдХрдо "рд╕реБрд╕рдВрдЧрдд" рднреА рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
Html.tr [
    Html.th "Steps"
    Html.th [
        prop.className "has-text-right"
        prop.text "ms"
    ]
]


тЪая╕П рдпрд╣ (рдЕрднреА рддрдХ) SSR . рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


я╕П рддрд░реАрдХреЛрдВ/рдЧреБрдгреЛрдВ рдХреЗ рдЕрдзрд┐рднрд╛рд░ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ (рдпрд╣ рд╢рд╛рдпрдж рдЖрдпрдирд╛рдЗрдб рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛)

рдореБрдЭреЗ рдХрд░рдирд╛ рдкрдбрд╝рд╛:

  • рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ prop.text 2.0 рд╕рдорд░реНрдерд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдлреНрд▓реЛрдЯ рдерд╛ред
  • рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рджреЗрдЦреЗрдВ

тЪая╕П рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрдХрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рдПрдВред Fable.REPL рдореЗрдВ, рдореБрдЭреЗ System.Func<_,_,_> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирдХрд░реА рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

[<Erase>]
type editor =
    /// <summary>Triggered when the Editor has been mounted</summary>
    static member inline editorDidMount (f : System.Func<Monaco.Editor.IStandaloneCodeEditor, Monaco.IExports, unit>) = Interop.mkAttr "editorDidMount" f
рдЬреЛ рдХреЙрд▓рд┐рдВрдЧ рд╕рд╛рдЗрдб рдкрд░ рдпрд╣ рдХреЛрдб рджреЗрддрд╛ рд╣реИ:
let private registerCompileCommand dispatch =
    System.Func<_,_,_>(
        fun (editor : Monaco.Editor.IStandaloneCodeEditor) (monacoModule : Monaco.IExports) ->
            let triggerCompile () = StartCompile None |> dispatch
            editor.addCommand(monacoModule.KeyMod.Alt ||| int Monaco.KeyCode.Enter, triggerCompile, "") |> ignore
            editor.addCommand(monacoModule.KeyMod.CtrlCmd ||| int Monaco.KeyCode.KEY_S, triggerCompile, "") |> ignore
    )


тЬФя╕П я╕П рдлрд╝реЗрд▓рд┐рдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд▓реЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рд▓рд╛рдЧрдд рд╣реИред

prop.onChange , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 6 рдУрд╡рд░рд▓реЛрдб рдХреА рддрд░рд╣:

  • static member inline onChange (handler: bool -> unit)
  • static member inline onChange (handler: Event -> unit)
  • static member inline onChange (handler: File -> unit)
  • static member inline onChange (handler: File list -> unit)
  • static member inline onChange (handler: string -> unit)
  • static member inline onCheckedChange (handler: bool -> unit)

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ "рдирд╣реАрдВ" рдордЬреЗрджрд╛рд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордХрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

// Feliz
prop.onChange (fun (e : Types.Event) -> e.Value |> ChangeGistToken |> dispatch)

// Fable.React
prop.onChange (fun e -> e.Value |> ChangeGistToken |> dispatch)

тЬФя╕П я╕П рдлрд╝реЗрд▓рд┐рдЬрд╝ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЕрдзрд┐рдХрддрд░ рдЯрд╛рдЗрдк-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдЕрдорд╛рдиреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред Feliz рдФрд░ Feliz.Bulma рдЬреИрд╕реЗ рдЗрд╕рдХреЗ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдгреЛрдВ рдХреЛ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдпрд╣ рдХреЛрдб Feliz рдФрд░ F# рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрдЧрд╛ред

Html.p [
    text.isUppercase
    text.isItalic
    color.hasTextSuccess
    prop.text "Hello Feliz"
]
`text.isUppsercase`, `text.isItalic` рдФрд░ `color.hasTextSuccess` рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ `ClassName "my-css-class`ред рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рд╣реА рдкреНрд░рднрд╛рд╡ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдб рд╣реЛрдЧрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ:
<p class="has-text-success">Hello Feliz<\p>
рдХреА рдмрдЬрд╛рдп
<p class="is-uppercase is-italic has-text-success>Hello Feliz</p>
рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди Feliz.Bulma рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд `++` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
open Feliz.Bulma.Operators

Html.p [
    text.isUppercase
    ++ text.isItalic
    ++ color.hasTextSuccess
    prop.text "Hello Feliz"
]
рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рдВрдЧрдд рд╣реИрдВ рддреЛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝реЗрд▓рд┐рдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ "рдлрд╝реЗрд▓рд┐рдЬрд╝ рддрддреНрд╡" рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред


тД╣ рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдиреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЪреАрдиреА ev.Value рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ Fable.React рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

Fable.React.Extension рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕рднреА Fable.React рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред

open Feliz
open Fable.React.Extensions

рд╕рд┐рдВрдЯреИрдХреНрд╕ HTML рд╕реЛрдЪ рдХреЛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рд╣реИред рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ children рднреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред


рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛

тЬФя╕П Feliz рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ


тЬФя╕П рдлреБрд▓рдорд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдВрдбреЗрдВрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

// Fulma
Card.card [ ]
    [ Card.header [ Common.Props [ OnClick (fun _ -> ToggleWidget title |> dispatch ) ] ]
        [ Card.Header.title [ ]
            [ Icon.icon [ Icon.Props [ Style [ MarginRight ".5em" ] ] ]
                [ Fa.i [ icon; Fa.Size Fa.FaLarge ] [] ]
                str title ]
            Card.Header.icon [ ]
            [ Icon.icon [ ] [ Fa.i [ headerIcon ; Fa.Size Fa.FaLarge ] [] ] ] ]
        ofOption content ]

// Feliz.Bulma
Bulma.card [
    Bulma.cardHeader [
        prop.onClick (fun _ -> ToggleWidget title |> dispatch )
        prop.children [
            Bulma.cardHeaderTitle [
                Bulma.icon [
                    prop.style [
                        style.marginRight (length.em 0.5)
                    ]
                    prop.children [
                        Fa.i [ icon; Fa.Size Fa.FaLarge ] []
                    ]
                ]
                Html.text title
            ]

            Bulma.cardHeaderIcon [
                Bulma.icon [
                    Fa.i [ headerIcon ; Fa.Size Fa.FaLarge ] []
                ]
            ]
        ]
    ]

    Html.ofOption content
]


тЬФя╕П Bulma рдШрдЯрдХреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ Bulma рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж


тЬФя╕П я╕П рдЧреБрдг рд╕реБрд▓рдн рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн button.* , help.* , columns.* рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгреЛрдВ рдЬреИрд╕реЗ button.* , columns.* , рдЖрджрд┐ рдкрд░ рд╕рдВрдШрд░реНрд╖ рдХрд░реЗрдВрдЧреЗред


тЬФя╕П рдШрдЯрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ

Bulma.card > Bulma.cardHeader > Bulma.cardHeaderTitle

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

Bulma.card [
    Bulma.cardHeader [
        prop.onClick (fun _ -> ToggleWidget title |> dispatch )
        prop.children [
            Bulma.cardHeaderTitle [
                // ...
            ]

            Bulma.cardHeaderIcon [
                // ...
            ]
        ]
    ]
]


тЪая╕П рд▓реЗрдХрд┐рди рдХреБрдЫ рдШрдЯрдХ рдПрдХ рд╣реА рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

Bulma.passwordInput рдмрдЬрд╛рдп Bulma.inputPassword

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирдкреБрдЯ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╣реА "рдЙрдкрд╕рд░реНрдЧ" рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред


тЬФя╕П я╕П Feliz.Bulma рдШрдЯрдХреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

Bulma.button [
    // Properties specific to a button coming from Feliz.Bulma
    button.isOutlined
    // Properties specific to a tooltip coming from Feliz.Bulma
    tooltip.hasTooltipRight
    tooltip.text tooltipText
    // General properties coming from Feliz
    prop.disabled isCompiling
    prop.onClick (fun _ -> dispatch msg)
    prop.children [
        Bulma.icon [
            icon.isLarge
            prop.children faIcon
        ]
    ]
]
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдореМрдЬреВрджрд╛ рдШрдЯрдХ рдореЗрдВ рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдЯреВрд▓рдЯрд┐рдк рдХреЛ рдПрдХ рдмрдЯрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдк рдЕрдорд╛рдиреНрдп рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:
Html.select [
    select.isFullwidth
]
рдХреА рдмрдЬрд╛рдп
Bulma.select [
    select.isFullwidth
]
Fulma рдШрдЯрдХ рдкреГрдердХреНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ рдФрд░ рдЬрдм рддрдХ рдЖрдк `CustomClass` рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ CSS рдХрдХреНрд╖рд╛рдПрдВ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред


тЬФя╕П я╕П Feliz.Bulma рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕ HTML рддрддреНрд╡ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ Bulma.field рдЬреЛ div рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ p рддрддреНрд╡ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


тЬФя╕П я╕П Feliz.Bulma, Bulma . рдкрд░ рд╕рдЯреАрдХ рдореИрдкрд┐рдВрдЧ рд╣реИ

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрддрд▓рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ:

  • рдЖрдкрдХреЛ Bulma рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ Bulma рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП
  • рдпрд╣ рд╢реЛрд░ рдХреЛрдб рд╕реЗ рдирд╣реАрдВ рдмрдЪрддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Bulma.tabs рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ tabs рдХреЛ ul рдЙрд╕рдХреЗ рдмрд╛рдж li рд╕рд╛рде a .

рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

// Feliz + Feliz.Bulma
Bulma.tabs [
    tabs.isCentered
    tabs.isMedium
    tabs.isToggle
    prop.children [
        Html.ul [
            Html.li [
                if (activeTab = CodeTab.FSharp) then
                    prop.className "is-active"
                prop.onClick (fun _ -> SetCodeTab CodeTab.FSharp |> dispatch)
                prop.children [
                    Html.a [
                        prop.text "F#"
                    ]
                ]
            ]

            Html.li [
                if (activeTab = CodeTab.Html) then
                    prop.className "is-active"
                prop.onClick (fun _ -> SetCodeTab CodeTab.Html |> dispatch)
                prop.children [
                    Html.a [
                        prop.text "HTML"
                    ]
                ]
            ]

            Html.li [
                if (activeTab = CodeTab.Css) then
                    prop.className "is-active"
                prop.onClick (fun _ -> SetCodeTab CodeTab.Css |> dispatch)
                prop.children [
                    Html.a [
                        prop.text "CSS"
                    ]
                ]
            ]
        ]
    ]
]
рдлреБрд▓реНрдорд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рдмреБрд▓реНрдорд╛ рдШрдЯрдХреЛрдВ" рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
// Fable.React + Fulma
    Tabs.tabs [ Tabs.IsCentered
                Tabs.Size Size.IsMedium
                Tabs.IsToggle ]
        [ Tabs.tab [ Tabs.Tab.IsActive (activeTab = CodeTab.FSharp)
                     Tabs.Tab.Props [
                        OnClick (fun _ -> SetCodeTab CodeTab.FSharp |> dispatch)
                     ] ]
            [ a [ ] [ str "F#" ] ]
          Tabs.tab [ Tabs.Tab.IsActive (activeTab = CodeTab.Html)
                     Tabs.Tab.Props [
                         OnClick (fun _ -> SetCodeTab CodeTab.Html |> dispatch)
                     ] ]
            [ a [ ] [ str "HTML" ] ]
          Tabs.tab [ Tabs.Tab.IsActive (activeTab = CodeTab.Css)
                     Tabs.Tab.Props [
                         OnClick (fun _ -> SetCodeTab CodeTab.Css |> dispatch)
                     ] ]
            [ a [ ] [ str "CSS" ] ] ]

рдзреНрдпрд╛рди рджреЗрдВ:

рдлреБрд▓реНрдорд╛ tab рдХреЛ рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ рдФрд░ Tabs.Tab.* рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Fulma рдХреЛ рдЕрднреА рднреА рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ a рддрддреНрд╡ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реА рд╣реИ)ред


тЬФя╕П я╕П Feliz.Bulma рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИ рддреЛ рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдмреБрд▓рдорд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреБрд▓реНрдорд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдк [Common.fs](https://github.com/Fulma/Fulma/blob/2f99474cd6c793776001d07da009f7211be2f30c/src/Fulma/Common.fs) рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ; рд╕рд╛рде рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рдЕрдкрдиреЗ рдбреАрдпреВ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдлреБрд▓реНрдорд╛ рдХреЛ рдПрдХ рдлрдВрдХреНрд╢рди рдХреЙрд▓ `рдкрд╛рд░реНрд╕рдСрдкреНрд╢рдиреНрд╕` рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдбреАрдпреВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред Feliz.Bulma, Bulma рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ DSL рдирд╣реАрдВ рдмрдирд╛рдХрд░ рдЕрдзрд┐рдХ рдкреНрд░рддреНрдпрдХреНрд╖ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

// Fulma
Column.column
    [
        Column.Width (Screen.Desktop, Column.IsHalf)
        Column.Width (Screen.Mobile, Column.IsFull)
    ]
    [
        // ...
    ]

// Feliz
Bulma.column [
    column.isHalfDesktop
    column.isFullMobile
    prop.children [
        // ...
    ]
]
рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рд╕реВрдЪреА рдХреЗ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж Feliz.Bulma рдХреЗ рдкрд╛рд╕ Fulma рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕рднреА DU рдФрд░ рдХреЛрдб рдХреА рдмрдбрд╝реА рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдЕрднреА рднреА рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ "рд╢рд╛рдорд┐рд▓" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рднрд╛рдЧ [Feliz.Bulma.ElementBuilders.Helpers рдореЙрдбреНрдпреВрд▓](https://github.com/Dzoukr/Feliz.Bulma/blob/3ecbba1579d2a26281f24e6a6664b5d9c5222603/src/Feliz.Bulma/ElementBuilders.fs#L6-L6-Lulma/ElementBuilders.fs#L6-L6-L рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛, рдЖрдкрдХреЗ рдХреЛрдб рдкрд░ рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред


я╕П рдирдпрд╛ рд░рдВрдЧ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

Feliz.Bulma рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХрд╛ рдЕрдкрдирд╛ рд░рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ button.isWarning , help.isWarning , рдЖрджрд┐ред

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд░рдВрдЧ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА button.isMyNewColor , help.isMyNewColor

Fulma рдореЗрдВ, рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд░рдВрдЧ рдкреНрд░рдХрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ


рдХрд▓реНрдкрд┐рдд.рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

тЬФя╕П HTML рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЗрд╕реЗ рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ


я╕П рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдирд┐рдпрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрдХ рджреЛрд╣рд░реА рд╕реВрдЪреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╡рд┐рд╕реНрддреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг:

// When I want to put an empty div
div [ ] [ ]

// When I want to put a div with a single property
div [ ClassName "button" ] [ ]
// or
div [ ClassName "button" ]
    [ ]

// When I want to put a div with several property
div [ ClassName "button"; Id "my-button" ]
    [ ]
// yes but what if one of my property is not that simple?
div
    [
        ClassName "button"
        OnClick (fun _ ->
            // do something
        )
    ]
    [ ]

// It's also possible to have consistent indentation if you do something like that
div [ ] [
    // Children 1
    // Children 2
]

// But if you have non simple property you still have problems, I don't personally don't find it easy to read
// I am not sure if that's how people would write it because I don't use this format personally
div [
    ClassName "button"
    OnClick (fun _ ->
        // do something
    )
] [
    div [ ] [
        str "Children 1"
    ]
]

// and so on
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдВрдкрддреНрддрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреМрд░рд╛рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддреЛ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛:
div
    [
        // Property 1 ...
        // Property 2 ...
        // Property 3 ...
    ]
    [
        div
            [
                // Property 1 ...
                // Property 2 ...
                // Property 3 ...
            ]
            [
                // Children 1 ...
                // Children 2 ...
                // Children 3 ...
            ]
        div
            [
                // Property 1 ...
                // Property 2 ...
                // Property 3 ...
            ]
            [
                // Children 1 ...
                // Children 2 ...
                // Children 3 ...
            ]
    ]

// So for an empty element
div
    [

    ]
    [

    ]

// Awesome... ЁЯЩД
рдлреЗрд▓рд┐рдЬ рдореЗрдВ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ:
// Empty div
Html.div [ ]

// Non empty div
Htmldiv [
    // Property 1
    // Property 2
    // Property 3
    prop.children [
        Html.div [
            // Property 1
            // Property 2
            // Property 3
        ]

        Html.div [
            // Property 1
            // Property 2
            // Property 3
            // Complexe property
            OnClick (fun _ ->
                // Do something
            )
        ]
    ]
]
рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рдХреЗрд╡рд▓ 2 рдорд╛рдорд▓реЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛрдб рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢реЛрд░ рдХреЗ рдмрд┐рдирд╛ рдЦрд╛рд▓реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рднреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред


тЪая╕П рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреАрдЖрдИ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

type HTMLAttr =
    | DefaultChecked of bool
    | DefaultValue of obj
    | Accept of string
    | AcceptCharset of string
    | AccessKey of string
    | Action of string
    | AllowFullScreen of bool
    | AllowTransparency of bool

тЬФя╕П я╕П рдХреБрдЫ рдПрдкреАрдЖрдИ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдб рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред


тЬФя╕П рдпрд╣ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ


рдлреБрд▓реНрдорд╛

тЬФя╕П рдЯрд╛рдЗрдк-рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдкреАрдЖрдИ

Modifier.TextAlignment (Screen.All, TextAlignment.Centered)

Button.button [ Button.Color IsWhite ]
    [ str "White" ]

тЬФя╕П рдлреБрд▓рдорд╛ рдПрдкреАрдЖрдИ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрдм рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ


тЬФя╕П рдлреБрд▓реНрдорд╛ рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рдмреНрдж рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ


тЬФя╕П рд╕рдорд░реНрдерд┐рдд рд░рдВрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ IsCustomColor рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

// All you need to add `custom-purple` support to all your components is this line
let isCustomPurple = IsCustomColor "custom-purple"

тЬФя╕П я╕П рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдореЗрдВ рд╕рдорд╛рди рд╕реНрддрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ


тЬФя╕П я╕П рдЖрдкрдХреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдкрд░ рдлреБрд▓реНрдорд╛ рдкреНрд░рднрд╛рд╡ "рд╕реНрдерд┐рд░" рд╣реИред Feliz.Bulma рдЦрдВрдб рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


я╕П рд▓реЛрдЧреЛрдВ рдХреЛ "рдЦрд╛рд╕ рдорджрджрдЧрд╛рд░" рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рддреЗред

  • рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕
  • рд░рдВрдЧрдордВрдЪ рдХреА рд╕рд╛рдордЧреНрд░реА
  • рд╕рдВрд╢реЛрдзрдХ

я╕П Fulma рдХреЛрдб рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рд╢реЛрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ DSL рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

// Fulma
Heading.p [ Heading.IsSubtitle
            Heading.Is5
            Heading.Modifiers [ Modifier.TextAlignment (Screen.All, TextAlignment.Centered) ] ]
    [ str "is only available on desktop" ]

// Feliz.Bulma
Bulma.subtitle5 [
    text.hasTextCentered
    prop.text "is only available on desktop"
]


я╕П рдлрд╝реБрд▓рдорд╛ рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк Props , Modifiers рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ


рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ 2-3 рд╕рдкреНрддрд╛рд╣ рдХреА рдЕрд╡рдзрд┐ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрднреА рднреА рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

рдЗрддрдирд╛ рд╣реА рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Fable.React рдФрд░ Fulma рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреЗ рдЕрдВрдХ рдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╣ рднреА рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ 3 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЙрди рдкрд░ рдПрдХ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рдЦрдирд╛ рдХрдард┐рди рд╣реИред

рдХреНрдпрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдореБрд╢реНрдХрд┐рд▓ рдерд╛?

Fable.React рд╕реЗ Feliz рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛ред рдлрд╝реЗрд▓рд┐рдЬрд╝ Fable.React рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЖрдк рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓, рдШрдЯрдХ рдкреНрд░рддрд┐ рдШрдЯрдХ, рдЖрджрд┐ рдореЗрдВ рдПрдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рддрд░реАрдХреЗ рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕рднреА open Fable.React рдФрд░ open Fable.React.Props рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдлреБрд▓реНрдорд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ред

рдмреЗрд╢рдХ, рдореИрдВ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рднреВрд▓ рдЧрдпрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЖрдк рдпрд╣рд╛рдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред


Feliz . рдХреЗ рд╕рд╛рде рдореЗрд░реА рдпрд╛рддреНрд░рд╛

рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЦреЛрдЬрддреЗ рд╕рдордп, рдореИрдВ рд░рдХреНрд╖рд╛рддреНрдордХ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдПрдЪрдЯреАрдПрдордПрд▓/рдЬреЗрдПрд╕рдПрдХреНрд╕ рдорд╛рд░реНрдЧ" рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред

рддрдм рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрдиреЛрд╡реЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣реА рд╣рдореЗрдВ рдмрдврд╝рдиреЗ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрд▓реНрдорд┐рд╢ рд╣реИред

рдПрдХ рдФрд░ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖрдИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ JSX "рдЕрд╕рд▓реА рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ" рдирд╣реАрдВ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ React.createElement ред JSX рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╢реБрдЧрд░ рд╣реИ, рд╡рд╣реА рдмрд╛рдд Fable.React рдФрд░ Feliz рдХреЗ рд▓рд┐рдП рдЬрд╛рддреА рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХреАред

рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬреЛ рдХрд┐ Fable REPL рд╣реИред Fable REPL рдПрдХ рдЬрдЯрд┐рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ Fable рдФрд░ React рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдХреА рдПрдХ рдЧреИрд░-рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА:

  • рдлреЗрд▓рд┐рдЬрд╝
  • рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛
  • Feliz рдФрд░ Fable.React рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдВрдЧрдд рд╣реИрдВ
  • Fable.React рд╕реЗ Feliz рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ
  • Feliz . рд╕реЗ DOM рдХреЛ рдиреЗрдЯрд┐рд╡ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлреЗрд▓рд┐рдЬ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдЗрдВрдЯрд░рдСрдк рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ
  • Fulma рд╕реЗ Feliz.Bulma рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ Fulma рд╕рдордХрдХреНрд╖ Feliz рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рд░реВрдкрд╛рдВрддрд░рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреНрд░рд╕рдиреНрди рдерд╛ рдХрд┐ рдХреЛрдб рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдЦрдиреЗ рдХреА рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд┐рддрдиреЗ рдмрдбрд╝реЗ рд╣реЛрддреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИред

рдлрд┐рд░ рдмреАрдЪ-рдмреАрдЪ рдореЗрдВ рдореБрдЭреЗ рдХрд┐рд╕реА рдмрд╛рдд рд╕реЗ рдЬрд▓рди рд╣реЛрдиреЗ рд▓рдЧреА рдкрд░ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред

рдореИрдВрдиреЗ Fable REPL рдХреЛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдкрд╕рдВрдж рдЖрдпрд╛ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рдХреЗрд╡рд▓ рдЕрдм рд╣реИ, рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рдлреЗрд▓рд┐рдЬ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ 2.5 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореИрдВ рдлреБрд▓реНрдорд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╕реБрдзрд╛рд░ рд░рд╣рд╛ рд╣реВрдВред рдлреБрд▓рдорд╛ рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред

Feliz.Bulma рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рддрд╛ рд╣реИ рдФрд░ Fulma рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ; рдпрд╣ рдХреЗрд╡рд▓ 5 рдорд╣реАрдиреЗ рдХрд╛ рд╣реИред

рдЙрд╕ рд╕рдм рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ :)

рдирд┐рд╖реНрдХрд░реНрд╖

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдПрдХрд▓ рд╕реВрдЪреА рд╢реИрд▓реА рд╣реИред рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдмрд╣реБрдд рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИред

рджреВрд╕рд░реЗ, рдЯрд╛рдЗрдк-рд╕реЗрдл рдПрдкреАрдЖрдИ рдПрдХ рдЬрд░реВрд░реА рд╣реИред рдпрд╣ рд╕реАрдПрд╕рдПрд╕ рд╕рдордХрдХреНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдлреИрдВрд╕реА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рдХреАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ :)ред

Feliz.Bulma, Feliz рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрддрдирд╛ рдкрд░рд┐рдкрдХреНрд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдХрд┐ Fulma рдХреЗ рд╕реАрдзреЗ рд╕рдордХрдХреНрд╖ рд╣реЛ рд╕рдХреЗред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ @Dzoukr рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛

3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, 8 рдорд╛рд░реНрдЪ 2017 , рдЯреЙрдорд╕, рдпреВрдЬреАрди рдФрд░ рдореИрдВрдиреЗ Fable.Arch рдХреЛ Elmish рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдПрдХ рд╕рдореБрджрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдЕрджреНрднреБрдд рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлреЗрд▓рд┐рдЬ рдФрд░ рдлреИрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд┐ рдЬреА рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдХреЛ рдлреИрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд░реНрд╖рдг рдорд┐рд▓реЗрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рд╕рд╛рде-рд╕рд╛рде рд░рд╣реЗрдВрдЧреЗред рдЕрдВрдд рдореЗрдВ, рдпреЗ рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреА рдкрд╕рдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @MangelMaxime ,

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдлреЗрд▓рд┐рдЬ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдЗрддрдирд╛ рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ Fable рдЙрдкрдпреЛрдХреНрддрд╛ рдЗрд╕реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдФрд░ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рдкрд╛рдПрдВрдЧреЗред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЦреБрд▓реЗрдкрди рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдкрдиреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдкреНрд░рд╛рд░реНрдердирд╛ рдХрд░реЗрдВ:

рдореИрдВ рдПрдХ рдкрд▓ рдореЗрдВ рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╣реИ, рдкрд╣рд▓реЗ рдореИрдВ рдЖрдкрдХреЗ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреВрдВрдЧрд╛ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

onChange рдУрд╡рд░рд▓реЛрдб

рдЖрдкрдХреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдИрд╡реЗрдВрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рджрд░рдЕрд╕рд▓, рдЖрдк рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

prop.onChange (ChangeGistToken >> dispatch)

ChangeGistToken рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд╣реА рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдбреАрдпреВ рдХрд╛ рдорд╛рдорд▓рд╛ ChangeGistToken of string рддреЛ string -> unit рдХрд╛ рдЕрдзрд┐рднрд╛рд░ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ FileSelected of File рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ file рд╣реЛ рддреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдУрд╡рд░рд▓реЛрдб File -> unit рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЖрдЧреЗ рднреАред рдЖрдкрдХреЛ ev.Value рд╕реЗ Fable.React ev.Value рдХреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

prop.oncheckedChange рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ onChange рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреВрд▓рд┐рдпрди рдХреЗрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ

рдмрд╣реБ-рддрд░реНрдХ рдХреЙрд▓рдмреИрдХ

@Shmew рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЫреВ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

type myExtension = 
    static member inline extenstionProperty value = 
        // transform value here
        let transformedValue = doWeirdStuffWith value
        Interop.mkAttr "extenstionProperty" transformedValue

рдЗрд╕ рддрд░реНрдХ рдХреЗ рдмрд╛рдж, рдЖрдк 'A -> 'B -> unit рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ Func<'A, 'B, unit> :

[<Erase>]
type editor =
    /// <summary>Triggered when the Editor has been mounted</summary>
    static member inline editorDidMount (f : Monaco.Editor.IStandaloneCodeEditor -> Monaco.IExports -> unit) = 
        let transformedFunction = System.Func<Monaco.Editor.IStandaloneCodeEditor, Monaco.IExports, unit>(fun editor exported -> f editor exported)
        Interop.mkAttr "editorDidMount" transformedFunction

рдпрд╣ @Shmew рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рдирд╛ рд╣реЛрдЧрд╛)ред рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рд╣реИ

рдлреЗрд▓рд┐рдЬ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯрд╛рдЗрдк-рд╕реЗрдлреНрдЯреА

рдЬреИрд╕рд╛ рдХрд┐ @Shmew рдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ: рдПрдХ рдЙрдЪрд┐рдд рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╛ рддреЛ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлреЗрд▓рд┐рдЬ рдХреА рддрд░рд╣ IReactProperty рд▓реМрдЯрд╛рддреА рд╣реИрдВред рд░реАрдЪрд╛рд░реНрдЯреНрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ prop рдореЗрдВ рдореМрдЬреВрджрд╛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрддрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдЖрдк рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ ISpecialiedProperty рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкрд╢реНрдЪ-рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IReactProperty рд╕реЗ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдХреЗрд╡рд▓ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ:

type felizExtension = 
    static member inline specializedProp (value: string) : ISpecializedProperty = unbox (prop.text value) 

рдпрд╣ рдореИрдВ Feliz.AntDesign рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЬрд╣рд╛рдВ рдореИрдВ button рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдмрд╛рдж рдореЗрдВ, рдореИрдВ рд╕рдЦреНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдирд╛ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ , рдмреИрдХрд╡рд░реНрдб-рдХрдВрдкреИрдЯ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ)ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Feliz.MaterialUI рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп IReactProperty рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ Feliz.Bulma рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред

рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХрд╛ рдорд╛рдорд▓рд╛

Feliz.Bulma рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ CSS-only рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП Feliz рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрдИ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЕрдм F# рдореЗрдВ рдирд┐рд╣рд┐рдд yield рд╕рд╛рде рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИред рдЗрд╕реЗ TypedCssClasses рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЖрдк рдХрд┐рд╕реА рднреА CSS-only рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рд╢реВрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрддред рдмрд╕ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВрдиреЗ @Dzoukr рджреНрд╡рд╛рд░рд╛ Feliz.Bulma рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрд╛ рддреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛: рдЖрдк Bulma рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ CSS рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ "рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ" рдкреЗрд╢ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ Bulma.button , Bulma.card рдЖрджрд┐ред рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрд╢реЛрдзрдХ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдорди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛, рдХрднреА-рдХрднреА рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрд╕ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдорди рдиреЗ рдлреЗрд▓рд┐рдЬ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

Feliz . рдХрд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди

рдореИрдВ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди Fable.React рдФрд░ Feliz рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рдмрдВрдзрдиред рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕рдХреЗ рд╕рднреА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдлреЗрдордЯреЛ- рд╕рдВрдЧрдд рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреЛрдЭ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИрдВ, рдХреЗ рдмреЛрдЭ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрдИ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдпрджрд┐ рд╕рднреА рд╡реНрдпреБрддреНрдкрдиреНрди Fable.React рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Fable.React рднреА рдЬрд╣рд╛рдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдПрдВ

  • рдлрд╝реЗрд▓рд┐рдЬрд╝-рд╢реИрд▓реА рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдХрд┐рд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдкреНрд░рд▓реЗрдЦрди (рдФрд░ рднреА рдЕрдзрд┐рдХ)ред
  • рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЗрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред

рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рднрд▓реЗ рд╣реА рджреЛрд╣рд░реА рд╕реВрдЪреА рд╕реНрд╡рд░реВрдкрдг рдХрднреА-рдХрднреА рдПрдХ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Fable.React рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд html рдХреА рд╕рдВрд░рдЪрдирд╛ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ div рд╣реИ [.., Html.div рдирд╣реАрдВ [... (рдЖрджрд┐)ред рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ Fable рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИредрдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

рдмрдврд╝рд┐рдпрд╛ рд▓реЗрдЦрди @MangelMaxime , рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдЕрдВрдХ рдмрдирд╛рдП рд╣реИрдВред

рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдореБрджреНрджреЗ рд╣реИрдВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╣реЛрддреА рд╣реИрдВред

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ Feliz рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдирд╛ рдбреЗрд╡рд▓рдкрд░ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬрдм рдкрд░рд┐рдгрд╛рдореА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ Feliz рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

рднрд╛рд░ рдХреЗ

рдореИрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╢реВрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЕрдзрд┐рднрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдпрдирд╛рдЗрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд╣рдо рдХреЗрд╡рд▓ prop.text рдХреЛ рдПрдХ рдПрдХрд▓ рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдп toString рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ?

рдХреЙрд▓рдмреИрдХ:

рдХреЗ рдмрдЬрд╛рдП:

[<Erase>]
type editor =
    /// <summary>Triggered when the Editor has been mounted</summary>
    static member inline editorDidMount (f : System.Func<Monaco.Editor.IStandaloneCodeEditor, Monaco.IExports, unit>) = Interop.mkAttr "editorDidMount" f

рд▓рд┐рдЦрдирд╛:

[<Erase>]
type editor =
    /// <summary>Triggered when the Editor has been mounted</summary>
    static member inline editorDidMount (f : Monaco.Editor.IStandaloneCodeEditor -> Monaco.IExports -> unit) = Interop.mkAttr "editorDidMount" (Func<_,_,_> f)

рдлрд┐рд░ рдЖрдк рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред

рдЕрдорд╛рдиреНрдп рдХреЛрдб рд▓рд┐рдЦрдирд╛

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ Html рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЗрд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдгреЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдХрд░ рд╣реИ, рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА Feliz рд▓рд╛рдЗрдмреНрд░реЗрд░реА Feliz.Plotly рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХрд╛рдо рдХрд╛ рд╣реИред


рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

[<AutoOpen;EditorBrowsable(EditorBrowsableState.Never)>]
module Types =
  type IPlotProperty = interface end
  type IModeBarButtonsProperty = interface end
  type IAaxisProperty = interface end
  type IAggregateProperty = interface end
  type IAggregationProperty = interface end
  type IAggregationsProperty = interface end
  type IAngularaxisProperty = interface end
  type IAnimationProperty = interface end
  type IAnnotationProperty = interface end
  type IAnnotationsProperty = interface end
  type IAreaProperty = interface end
  type IAspectratioProperty = interface end
  type IAxisProperty = interface end
  type IBarProperty = interface end
  type IBarpolarProperty = interface end
  type IBaxisProperty = interface end
  type IBorderProperty = interface end
  type IBoxProperty = interface end
  type IButtonProperty = interface end
  type ICameraProperty = interface end
  type ICandlestickProperty = interface end
  type ICapsProperty = interface end
  type ICarpetProperty = interface end
  type ICaxisProperty = interface end
  type ICellsProperty = interface end
  type ICenterProperty = interface end
  type IChoroplethProperty = interface end
  type IChoroplethmapboxProperty = interface end
  type ICircleProperty = interface end
  type IColoraxisProperty = interface end
  type IColorbarProperty = interface end
  type IColorscaleProperty = interface end
  type IColorscalesProperty = interface end
  type IConcentrationscalesProperty = interface end
  type IConeProperty = interface end
  type IConfigProperty = interface end
  type IConnectorProperty = interface end
  type IContourProperty = interface end
  type IContourcarpetProperty = interface end
  type IContoursProperty = interface end
  type ICumulativeProperty = interface end
  type ICurrentvalueProperty = interface end
  type IDecreasingProperty = interface end
  type IDeltaProperty = interface end
  type IDensitymapboxProperty = interface end
  type IDiagonalProperty = interface end
  type IDimensionProperty = interface end
  type IDimensionsProperty = interface end
  type IDomainProperty = interface end
  type IEditsProperty = interface end
  type IErrorXProperty = interface end
  type IErrorYProperty = interface end
  type IErrorZProperty = interface end
  type IEyeProperty = interface end
  type IFillProperty = interface end
  type IFilterProperty = interface end
  type IFontProperty = interface end
  type IFrameProperty = interface end
  type IFramesEntryProperty = interface end
  type IFramesProperty = interface end
  type IFunnelProperty = interface end
  type IFunnelareaProperty = interface end
  type IGaugeProperty = interface end
  type IGeoProperty = interface end
  type IGradientProperty = interface end
  type IGridProperty = interface end
  type IGroupbyProperty = interface end
  type IHeaderProperty = interface end
  type IHeatmapProperty = interface end
  type IHeatmapglProperty = interface end
  type IHistogram2dProperty = interface end
  type IHistogram2dcontourProperty = interface end
  type IHistogramProperty = interface end
  type IHoverlabelProperty = interface end
  type IImageProperty = interface end
  type IImagesProperty = interface end
  type IIncreasingProperty = interface end
  type IIndicatorProperty = interface end
  type IInsidetextfontProperty = interface end
  type IIsosurfaceProperty = interface end
  type ILabelfontProperty = interface end
  type ILataxisProperty = interface end
  type ILayerProperty = interface end
  type ILayersProperty = interface end
  type ILayoutProperty = interface end
  type ILeafProperty = interface end
  type ILegendProperty = interface end
  type ILightingProperty = interface end
  type ILightpositionProperty = interface end
  type ILineProperty = interface end
  type ILinkProperty = interface end
  type ILonaxisProperty = interface end
  type IMapboxProperty = interface end
  type IMarginProperty = interface end
  type IMarkerProperty = interface end
  type IMeanlineProperty = interface end
  type IMesh3dProperty = interface end
  type IModebarProperty = interface end
  type INodeProperty = interface end
  type INumberProperty = interface end
  type IOhlcProperty = interface end
  type IOutsidetextfontProperty = interface end
  type IPadProperty = interface end
  type IParcatsProperty = interface end
  type IParcoordsProperty = interface end
  type IPathbarProperty = interface end
  type IPieProperty = interface end
  type IPointcloudProperty = interface end
  type IPolarProperty = interface end
  type IProjectProperty = interface end
  type IProjectionProperty = interface end
  type IRadialaxisProperty = interface end
  type IRangebreakProperty = interface end
  type IRangebreaksProperty = interface end
  type IRangefontProperty = interface end
  type IRangeselectorProperty = interface end
  type IRangesliderProperty = interface end
  type IRotationProperty = interface end
  type ISankeyProperty = interface end
  type IScatter3dProperty = interface end
  type IScatterProperty = interface end
  type IScattercarpetProperty = interface end
  type IScattergeoProperty = interface end
  type IScatterglProperty = interface end
  type IScattermapboxProperty = interface end
  type IScatterpolarProperty = interface end
  type IScatterpolarglProperty = interface end
  type IScatterternaryProperty = interface end
  type ISceneProperty = interface end
  type ISelectedProperty = interface end
  type IShapeProperty = interface end
  type IShapesProperty = interface end
  type ISlicesProperty = interface end
  type ISliderProperty = interface end
  type ISlidersProperty = interface end
  type ISortProperty = interface end
  type ISpaceframeProperty = interface end
  type ISplomProperty = interface end
  type IStartsProperty = interface end
  type IStepProperty = interface end
  type IStepsProperty = interface end
  type IStreamProperty = interface end
  type IStreamtubeProperty = interface end
  type IStyleProperty = interface end
  type IStylesProperty = interface end
  type ISunburstProperty = interface end
  type ISurfaceProperty = interface end
  type ISymbolProperty = interface end
  type ITableProperty = interface end
  type ITernaryProperty = interface end
  type ITextfontProperty = interface end
  type IThresholdProperty = interface end
  type ITickfontProperty = interface end
  type ITickformatstopProperty = interface end
  type ITickformatstopsProperty = interface end
  type ITilingProperty = interface end
  type ITitleProperty = interface end
  type ITotalsProperty = interface end
  type ITracesProperty = interface end
  type ITransformsProperty = interface end
  type ITransitionProperty = interface end
  type ITreemapProperty = interface end
  type IUniformtextProperty = interface end
  type IUnselectedProperty = interface end
  type IUpProperty = interface end
  type IUpdatemenuProperty = interface end
  type IUpdatemenusProperty = interface end
  type IViolinProperty = interface end
  type IVolumeProperty = interface end
  type IWaterfallProperty = interface end
  type IXProperty = interface end
  type IXaxisProperty = interface end
  type IXbinsProperty = interface end
  type IYProperty = interface end
  type IYaxisProperty = interface end
  type IYbinsProperty = interface end
  type IZProperty = interface end
  type IZaxisProperty = interface end
  type IButtonsProperty = inherit IModeBarButtonsProperty
  type IMeasureProperty = interface end
  type ITemplateProperty = interface end

рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЧреБрдгреЛрдВ рдХреЛ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ" рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрд╛рд╣рд░ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреЗрд╡рд▓ IReactProperty рд╕реЗ рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Feliz.Plotly рдореИрдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд/рдПрдХрддреНрд░/рдмрджрд▓ рджреВрдВрдЧрд╛ред рд╣рдореЗрд╢рд╛ рдореМрдЬреВрдж рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдлреЗрд▓рд┐рдЬрд╝" рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рджрд░реНрдж рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ @ рдЬреИрдж-рдЕрдЬрд╛рдЬ рдФрд░ рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред

рдзрдиреНрдпрд╡рд╛рдж @ l3m

рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рднрд▓реЗ рд╣реА рджреЛрд╣рд░реА рд╕реВрдЪреА рд╕реНрд╡рд░реВрдкрдг рдХрднреА-рдХрднреА рдПрдХ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Fable.React рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд html рдХреА рд╕рдВрд░рдЪрдирд╛ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ div рд╣реИ [.., Html.div рдирд╣реАрдВ [... (рдЖрджрд┐)ред рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ Fable рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИредрдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ HTML рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдл # 5 рдФрд░ "рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдЦреЛрд▓рдиреЗ" рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлреЗрд▓рд┐рдЬ Html.div рдФрд░ div рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдЪрдЯреАрдПрдордПрд▓ рдХреНрд▓рд╛рд╕ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП @Shmew рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ "рдкреБрд╕реНрддрдХрд╛рд▓рдп" рд╣реИрдВред

"рдЕрдорд╛рдиреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ, рд╣рдо рдлреБрд▓реНрдорд╛ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП IReactProperty рдкреНрд░рдХрд╛рд░ рдХреЛ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдкрдХреЛ Props рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╕рд╣рд╛рдпрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирдХ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╡реЗ рдХреЗрд╡рд▓ рдХреЛрдб рд╣реИрдВ рдЬреЛ HTML рддрддреНрд╡ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред

Bulma.button <div class="button"> рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреЛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдШрдЯрдХреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдП) рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ Fable.ReactLeaflet рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рднреА рдорд╛рдирдХ HTML рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

"рдХреЙрд▓рдмреИрдХ" рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлреИрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рддрд░реНрдХ-рд╡рд┐рддрд░реНрдХ рдереЗ рдФрд░ рдЬрдм рддрдХ рдореИрдВ myFunction(arg1)(arg2) рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рддрдм рдореБрдЭреЗ System.Func рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/fable-compiler/repl/pull/108/files рдкрд░ рднреЗрдЬреЗ рдЧрдП рдкреАрдЖрд░ рдХреЛ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╣рд╛рдп @MangelMaxime ,

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдлреЗрд▓рд┐рдЬ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдЗрддрдирд╛ рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ Fable рдЙрдкрдпреЛрдХреНрддрд╛ рдЗрд╕реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдФрд░ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рдкрд╛рдПрдВрдЧреЗред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЦреБрд▓реЗрдкрди рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдкрдиреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдкреНрд░рд╛рд░реНрдердирд╛ рдХрд░реЗрдВ:

рдореИрдВ рдПрдХ рдкрд▓ рдореЗрдВ рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╣реИ, рдкрд╣рд▓реЗ рдореИрдВ рдЖрдкрдХреЗ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреВрдВрдЧрд╛ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

onChange рдУрд╡рд░рд▓реЛрдб

рдЖрдкрдХреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдИрд╡реЗрдВрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рджрд░рдЕрд╕рд▓, рдЖрдк рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

prop.onChange (ChangeGistToken >> dispatch)

ChangeGistToken рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд╣реА рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдбреАрдпреВ рдХрд╛ рдорд╛рдорд▓рд╛ ChangeGistToken of string рддреЛ string -> unit рдХрд╛ рдЕрдзрд┐рднрд╛рд░ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ FileSelected of File рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ file рд╣реЛ рддреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдУрд╡рд░рд▓реЛрдб File -> unit рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЖрдЧреЗ рднреАред рдЖрдкрдХреЛ ev.Value рд╕реЗ Fable.React ev.Value рдХреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

prop.oncheckedChange рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ onChange рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреВрд▓рд┐рдпрди рдХреЗрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ

рдмрд╣реБ-рддрд░реНрдХ рдХреЙрд▓рдмреИрдХ

@Shmew рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЫреВ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

type myExtension = 
    static member inline extenstionProperty value = 
        // transform value here
        let transformedValue = doWeirdStuffWith value
        Interop.mkAttr "extenstionProperty" transformedValue

рдЗрд╕ рддрд░реНрдХ рдХреЗ рдмрд╛рдж, рдЖрдк 'A -> 'B -> unit рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ Func<'A, 'B, unit> :

[<Erase>]
type editor =
    /// <summary>Triggered when the Editor has been mounted</summary>
    static member inline editorDidMount (f : Monaco.Editor.IStandaloneCodeEditor -> Monaco.IExports -> unit) = 
        let transformedFunction = System.Func<Monaco.Editor.IStandaloneCodeEditor, Monaco.IExports, unit>(fun editor exported -> f editor exported)
        Interop.mkAttr "editorDidMount" transformedFunction

рдпрд╣ @Shmew рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рдирд╛ рд╣реЛрдЧрд╛)ред рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рд╣реИ

рдлреЗрд▓рд┐рдЬ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯрд╛рдЗрдк-рд╕реЗрдлреНрдЯреА

рдЬреИрд╕рд╛ рдХрд┐ @Shmew рдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ: рдПрдХ рдЙрдЪрд┐рдд рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╛ рддреЛ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлреЗрд▓рд┐рдЬ рдХреА рддрд░рд╣ IReactProperty рд▓реМрдЯрд╛рддреА рд╣реИрдВред рд░реАрдЪрд╛рд░реНрдЯреНрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ prop рдореЗрдВ рдореМрдЬреВрджрд╛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрддрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдЖрдк рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ ISpecialiedProperty рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкрд╢реНрдЪ-рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IReactProperty рд╕реЗ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдХреЗрд╡рд▓ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ:

type felizExtension = 
    static member inline specializedProp (value: string) : ISpecializedProperty = unbox (prop.text value) 

рдпрд╣ рдореИрдВ Feliz.AntDesign рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЬрд╣рд╛рдВ рдореИрдВ button рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдмрд╛рдж рдореЗрдВ, рдореИрдВ рд╕рдЦреНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдирд╛ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ , рдмреИрдХрд╡рд░реНрдб-рдХрдВрдкреИрдЯ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ)ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Feliz.MaterialUI рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп IReactProperty рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ Feliz.Bulma рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред

рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХрд╛ рдорд╛рдорд▓рд╛

Feliz.Bulma рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ CSS-only рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП Feliz рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрдИ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЕрдм F# рдореЗрдВ рдирд┐рд╣рд┐рдд yield рд╕рд╛рде рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИред рдЗрд╕реЗ TypedCssClasses рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЖрдк рдХрд┐рд╕реА рднреА CSS-only рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рд╢реВрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрддред рдмрд╕ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВрдиреЗ @Dzoukr рджреНрд╡рд╛рд░рд╛ Feliz.Bulma рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрд╛ рддреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛: рдЖрдк Bulma рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ CSS рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ "рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ" рдкреЗрд╢ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ Bulma.button , Bulma.card рдЖрджрд┐ред рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрд╢реЛрдзрдХ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдорди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛, рдХрднреА-рдХрднреА рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрд╕ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдорди рдиреЗ рдлреЗрд▓рд┐рдЬ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

Feliz . рдХрд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди

рдореИрдВ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди Fable.React рдФрд░ Feliz рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рдмрдВрдзрдиред рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕рдХреЗ рд╕рднреА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдлреЗрдордЯреЛ- рд╕рдВрдЧрдд рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреЛрдЭ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИрдВ, рдХреЗ рдмреЛрдЭ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрдИ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдпрджрд┐ рд╕рднреА рд╡реНрдпреБрддреНрдкрдиреНрди Fable.React рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Fable.React рднреА рдЬрд╣рд╛рдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдПрдВ

  • рдлрд╝реЗрд▓рд┐рдЬрд╝-рд╢реИрд▓реА рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдХрд┐рд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдкреНрд░рд▓реЗрдЦрди (рдФрд░ рднреА рдЕрдзрд┐рдХ)ред
  • рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЗрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП

рджрд░рдЕрд╕рд▓, рдЖрдк рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

prop.onChange (ChangeGistToken >> dispatch)

рджрд░рдЕрд╕рд▓, рдореИрдВрдиреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред

рдмрд╣реБ-рддрд░реНрдХ рдХреЙрд▓рдмреИрдХ

@Shmew рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЫреВ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рддрд░реАрдХрд╛ рд╣реИред

рдУрд╣ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ @Shmew рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рджреЗрдЦрд╛ред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдШреЛрд╖рдгрд╛ рджреЗрдЦреА рдФрд░ рдРрд╕рд╛ рдерд╛ рдЬреИрд╕реЗ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рджреЛрдиреЛрдВ рд╕рд╣реА рд╣реИрдВ, рд╣рдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлреЗрд▓рд┐рдЬ.рдмреБрд▓реНрдорд╛ рдХрд╛ рдорд╛рдорд▓рд╛

рд╣рд╛рдБ, TypedCssClasses рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди Fulma рдпрд╛ Feliz.Bulma рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рд╕рдорд╛рди рд╕реНрддрд░ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдорд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред

рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рджреЗрд╡ рдореЛрдб рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ TypedCssClasses рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдорди рдиреЗ рдХреБрдЫ рдЖрд╕рд╛рди рд╕реАрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд▓рд┐рдЬ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлреБрд▓рдорд╛ рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рд╣рдореЗрдВ рдЙрди рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╣реА рдмреАрдЪ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдЬреЛ рдЕрдиреБрдкрд▓рдмреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд╡реЗ рдЖрдЙрдЯрдкреБрдЯ рддрддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдорд░реНрдерд┐рдд рд░рдВрдЧ рдХреЗ рд╕реЗрдЯ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣реА рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рдЖрдПрдЧреАред

@ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╕рд╣реА рджрд┐рд╢рд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рдкрдврд╝рд╛ рдерд╛ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рд╣реИ) рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╡реЗ рдЗрд╕рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рдФрд░ рдЪреАрдЬреЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ :)

рдзрдиреНрдпрд╡рд╛рдж @MangelMaxime - рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рддреБрд▓рдирд╛ рд╣реИред рдЖрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕реНрд╡рддрдГ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рднреА Fantomas рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ Fable.React рдпрд╛ Feliz рдХреЗ рд╕рд╛рде Fantomas рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реИ?
рдореЗрд░реЗ рдПрдХ рдлреИрдмрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдлреИрдВрдЯреЛрдорд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЖрдпреЛрдирд╛рдЗрдб рдореЗрдВ рдлрд╛рдЗрд▓ рд╕реЗрд╡ рдкрд░ рдСрдЯреЛ-рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░ рджреА рд╣реИ рдФрд░ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмреВрд╕реНрдЯрд░ рд╣реИ - рдореИрдиреНрдпреБрдЕрд▓ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!
рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреИрдВрдЯреЛрдорд╛рд╕ рдЕрдм рдЕрдкрдиреА рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛, рд╡рд╣ рднреА рдлреИрдмрд▓ рдФрд░ рд░рд┐рдПрдХреНрдЯ / рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рдеред

@theimowski рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рд╕реЗ Fantomas рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рдмрдирд╛ рд░рд╣рд╛ рдерд╛ред рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд▓реЗрдХрд░ Fable.React рдФрд░ Feliz рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓ рд░рд╣рд╛ рдерд╛ред

рдореБрдЭреЗ рдлреИрдВрдЯреЛрдорд╛рд╕ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдЗрдВрдбреЗрдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди, рдЬреЛ рдореИрдВрдиреЗ рд░реЗрдкреЛ рдХреЛ рджреЗрдЦрд╛, рдЙрд╕рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдХреЛ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлреИрдВрдЯреЛрдорд╛рд╕ рдХреЗ рдХрд╛рд░рдгред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:

type Test =
    {
        Prop1 : string
    }

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рдмрдирд╛ рд░рд╣реЗ рдФрд░ type Test = { Prop1 : string } рди рдмрди рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдордЭ рдЧрдП рд╣реЛрдВрдЧреЗ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ :)

@theimowski рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛, рдореИрдВ рдЕрдкрдиреА рдЧреИрд░-рдХрд▓реНрдкрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд▓реНрдкрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рдФрд░ рд╢реЙрдЯ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

@MangelMaxime рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХрд┐рд╕реА рддрд░рд╣ рдЖрдкрдХреЗ рдлреБрд▓рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдореБрдЭ рдкрд░ рдХрд▓реНрдкрд┐рдд рджреБрдирд┐рдпрд╛ рдкрд░ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдПрдХрд▓ рд╕реВрдЪреА рднреА рдкрд╕рдВрдж рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдп рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреАрдпреВ рднреА рдкрд╕рдВрдж рд╣реИред рдХрднреА-рдХрднреА рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдбреАрдпреВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Fable.React рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХрд▓ рд╕реВрдЪреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдпрд╛> рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

let myView =
    div </> [
        Classes [ ""; ""; "" ]
        Children [
              ...
        ]
    ]

рдСрдкрд░реЗрдЯрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдбреАрдпреВ рдХрд╛ рд▓рд╛рдн рднреА рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдпрд╣рд╛рдВ рдореЗрд░реЗ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/albertwoo/Fun.LightForm/blob/master/src/Fun.LightForm.Fable/Fable.Reactред рдЕрддрд┐рд░рд┐рдХреНрдд.fs

@ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬ рдЖрдкрдХреЗ рдорд╣рд╛рди рдХрд╛рдо рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдФрд░ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рднреА рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реАред

рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рдп @MangelMaxime ,
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдзрдиреНрдпрд╡рд╛рдж! рд╕рдЪ рдХрд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдЗрддрдиреА рдЧрд╣рд░реА рдирдЬрд░ рд╣реЛрдЧреА рдХрд┐ рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХреБрддреНрддреЗ рдХреЗ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдФрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ рдХрд┐ "рдЕрд░реЗ, рдХреИрд╕реЗ @ рдЬреИрдж-рдЕрдЬрд╛рдЬ рдиреЗ рдлреЗрд▓рд┐рдЬ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ - рдЪрд▓реЛ рдмреБрд▓реНрдорд╛ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВ" рд╕реВрдЬ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА Feliz.Bulma рд░реЗрдкреЛ рдореЗрдВ рдирдпрд╛ рдЕрдВрдХ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ v2 рдХреЛ рдФрд░ рдмреЗрд╣рддрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдкрд░ рд╣рдорд╛рд░реА рд╕рд╣рдорддрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП version2 рд╢рд╛рдЦрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЬрд╝реИрдж рдХреА рдпреЛрдЬрдирд╛ рдХреНрдпрд╛ рд╣реИ, рдПрдкреАрдЖрдИ рдХреЛ рдирд╡реАрдирддрдо рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ 100% рд╕рдВрдЧрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡реИрд╕реЗ рднреА, рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж - рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг!

рдЦрддрд░реЗ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдорд░реНрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рд╣реИ (! рдЦреЗрдж) рдореИрдВ рд╕рд┐рд░реНрдл рдЦрд░реЛрдЬ рдмрд╣рд╕ рдкрд░ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ - рдпрд╣ (рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛) рд╣реИ рд╕реНрдЯрд╛рдЗрд▓ рд╣рдо рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╡рд╣ рдирд┐рд░рдВрддрд░ identation рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ Fable.React рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдВрджрд╛рдЬред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ (рд╢рд╛рдпрдж 10-20%) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

div [ ] [
    Hero.hero [ Hero.IsFullHeight ] [
        Hero.body [ ] [
            Container.container [ ] [
                img [ Src "img/fable-ionide.png"
                      Style [ Display DisplayOptions.Block
                              Width "auto"
                              Margin "auto" ]
                    ]
                br [ ]
                Heading.h3 [ Heading.Modifiers [ Modifier.TextAlignment (Screen.All, TextAlignment.Centered) ] ] [
                    str "Fable REPL"
                ]
                Heading.p [ Heading.IsSubtitle
                            Heading.Is5
                            Heading.Modifiers [ Modifier.TextAlignment (Screen.All, TextAlignment.Centered) ] ] [
                    str "is only available on desktop"
                ]
            ]
        ]
    ]
]

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рд╡реАрдПрд╕ рдХреЛрдб рдФрд░ рдЗрдВрджреНрд░рдзрдиреБрд╖ рдмреНрд░реИрдХреЗрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░реИрдХреЗрдЯ рдУрд╡рд░рд▓реЛрдб рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ (рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдКрдкрд░ рдпрд╛рдж рдХрд┐рдпрд╛) рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд░рд╛рдл рд╡реНрдпреВрдЗрдВрдЬрд┐рди Fable.React рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдпрд╛рдиреА рддрддреНрд╡ рдПрдЯреАрдЖрд░-рд╕реВрдЪреА рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реВрдЪреА, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫред

@ рдЬреИрдж-рдЕрдЬрд╛рдЬ рдлреЗрдордЯреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ; рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ Fable.React-style рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛

рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ Fable.React-style рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛, рдпрд╛ рдХреНрдпрд╛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╢реИрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ рдлреЗрдореНрдЯреЛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ?

@ рдЗрд╕рд╛рдХрд╛рдмреНрд░рд╛рд╣рдо

Fable.React рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлреЗрдордЯреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЪрд╛рд╣рд┐рдП) рд▓реЗрдХрд┐рди Fable.React рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ react , react-dom рдФрд░ react-native рдЕрд╕рдВрдЧрдд рдорд┐рд╢реНрд░рдг рд╣реИред . @MangelMaxime рдиреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ

Fable.React рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рди рдХреЗрд╡рд▓ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ npm рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ react рдФрд░ react-dom рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ Fable.React рдХрд░рддрд╛ рд╣реИ рдЙрдирдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рди рдХрд░реЗрдВ (рдлреЗрд▓рд┐рдЬрд╝ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ react рдФрд░ react-dom рддрд╛рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗрд╡рд▓ рд╡рд╣реА рдЬреЛрдбрд╝ рд╕рдХреЗрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓ рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛред

рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдлрд╝реИрдВрдЯреЛрдорд╛рд╕ рдЕрднреА рддрдХ рдбреАрдПрд╕рдПрд▓ рдХреЛ рдПрдХ рд╕рдордЭрджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реВрдЪреА рд╕реНрд╡рд░реВрдкрдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╣реИ рдпрд╛ рдЕрдЪреНрдЫреЗ рдбрд┐рдлреЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдбреАрдПрд╕рдПрд▓ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдлреЗрд▓рд┐рдЬрд╝-рдореЛрдб" рдзреНрд╡рдЬ рд╣реИ (рдЬреЛ рд╣рдореЗрдВ рдЖрдирд╛ рд╣реИ рдХреЗ рд╕рд╛рде)

@ рдЬреИрдж-рдЕрдЬрд╛рдЬ рд░рд┐рдПрдХреНрдЯ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлреЗрдордЯреЛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реАрдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ l3m рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрдордЯреЛ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлреЗрдордЯреЛ рд░реЗрдкреЛ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрднреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ ^^)

@ l3m Preact рдХрд╛ рдЙрдкрдпреЛрдЧ Femto npm рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрдиреЗ рдкрд░ рдкреНрд░реАрдПрдХреНрдЯ рдореЗрдВ

рдПрдХ рд╢реБрджреНрдз рдкреНрд░реАрдПрдХреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (100% рдиреЙрди-рд░рд┐рдПрдХреНрдЯ рдХреЛрдб) рдмрдирд╛рдирд╛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (Feliz.Preact рдЬреЛ Feliz рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдЬрд┐рд╕рд╕реЗ Preact-only рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрджрд┐ рдЖрдк preact/compat рд╕реЗ рджреВрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

@ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬ рдореИрдВ рдЕрднреА рдЕрдкрдиреЗ рдПрд▓реНрдорд┐рд╢ рдРрдк рдореЗрдВ рдкреНрд░реАрдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл Femto рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рдерд╛ред рдпрджрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдбрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирдЧреЗрдЯ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдмреЗрд╣рддрд░ рд╣реИред

рд╕рд╛рде рд╣реА, рдирд╡реАрдирддрдо рдкреНрд░рдЪрд╛рд░ рдХреЗ рд╕рд╛рде preact/compat рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрдм рдореВрд▓ рдореЗрдВ рд╣реИред

рдЬреЛрдЦрд┐рдо рдореЗрдВ рдкреБрд░рд╛рдиреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!) рдореИрдВ рд╕рд┐рд░реНрдл рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдмрд╣рд╕ рдкрд░ рдЕрдкрдиреЗ рджреЛ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдпрд╣ (рдЕрдзрд┐рдХ рдпрд╛ рдХрдо) рд╡рд╣ рд╕реНрдЯрд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ _does_ рдЕрдЪреНрдЫреА, рд╕реБрд╕рдВрдЧрдд рдкрд╣рдЪрд╛рди рдФрд░ рдХрд▓реНрдкрд┐рдд рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдВрджрд╛рдЬред

рдореИрдВ рдЗрд╕рд╣рд╛рдХ рд╕реЗ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХреЛрдб рдЗрдВрдбреЗрдВрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╕реВрдЪреА рддрд░реАрдХреЗ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ рдкреЛрд╕реНрдЯ рдХрд╛ рдЗрдВрдбреЗрдВрдЯрд┐рдВрдЧ рдмреЗрд╣рддрд░ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдл # 5 рдФрд░ "рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдЦреЛрд▓рдиреЗ" рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлреЗрд▓рд┐рдЬ Html.div рдФрд░ div рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдЪрдЯреАрдПрдордПрд▓ рдХреНрд▓рд╛рд╕ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рд╕реБрдкрд░ рдХреВрд▓ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рд╡рд░реНрдЧ рдХреЛ рд╕реНрдерд┐рд░ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХреЗ?

@ fc1943s Html , prop рдФрд░ style рд╕рднреА рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм F # 5 рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдореЗрдВ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИред

рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ рдХреЛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдЦреЛрдЬ рдХреИрд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛрдЧреА? рдЖрдк рдЕрднреА рднреА Feliz.Html рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@MaxWilsonMS рдЬрд┐рд╕реЗ "рдЕрдВрддрд┐рдо" рдХреЛрдб рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдФрд░ рдЖрдк Feliz.Html.div рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ Feliz.Html. рднрд╛рдЧ рдХреЛ рдорд┐рдЯрд╛ рджреЗрдВрдЧреЗ рдЬреЛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред

рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдЦреЛрд▓рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред :)

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдКрдкрд░ рдХрд╣реА рдЧрдИ рдмрд╛рддреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдг рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВ:

  • рдореИрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдлреЗрд▓рд┐рдЬ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕рд╣рд╛рдХ рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдбреЗрдВрдЯ рд╕рднреА 2s/4s рдирд╣реАрдВ рд╣реИрдВ "рдореИрдВ рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ"ред рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ред

  • рдЕрдЧрд░ рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВ рдЗрд╕реЗ Fable.React рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ред рдореИрдВрдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ "рдлреЗрд▓рд┐рдЬ рд╡реЗ" рдмрдирд╛рдиреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рддреБрд░рдВрдд рднрд╛рдЧ рдЧрдпрд╛ (рдореИрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЖрдКрдВрдЧрд╛!)ред

  • рдореБрдЭреЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧрд╛ рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ "рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛" рдкрд╣рд▓реВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдХреНрд╕рд░ рд╕реАрдПрд╕рдПрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╣рд░ рд╕рдВрднрд╡ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдлрдВрд╕ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реЗ "fontSize" рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "em" рдореЗрдВ, рдпрд╛ "рдЧреНрд░рд┐рдб-рдЯреЗрдореНрдкрд▓реЗрдЯ-рдкрдВрдХреНрддрд┐рдпреЛрдВ" рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирд╕реЗ рдХреБрдЫ "Screen.All" рддрд░реНрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ - рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реЗ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

  • рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ "рдЬреАрд╡рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛" рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдореИрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓ рдкреНрд░реЙрдкреНрд╕ рдХреА рд▓рдВрдмреА рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ style.paddingHorizontal рд╣реЛ рд╕рдХрддрд╛ рд╣реИ style.paddingVertical ред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╣рд╛рдпрдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ :)

  • рдореБрдЭреЗ рдирдП F# рдореЗрдВ Html рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ - рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдореЗрд░реЗ рдХрдВрдзреЗ рдХреЛ рджреЗрдЦрдХрд░ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ - рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдбреЗрд╡рд┐рд▓реНрд╕ рдПрдбрд╡реЛрдХреЗрдЯ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП: div рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрди рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдХрдо рд╣реИ рдЬреЛ рдореИрдВ рдПрдХ рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рд┐рдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЬрд╛рджреВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдмрдХрд┐ рдореБрдЭрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд░рд┐рдПрдХреНрдЯ, рд╕реАрдПрд╕рдПрд╕ рдЖрджрд┐ рдЖрджрд┐ рдЫреБрдкрд╛рдирд╛ред рдЖрдо рддреМрд░ рдкрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдкреАрдЖрдИ рдХреА рдЦреЛрдЬ рдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИред

  • рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реИрд▓рд┐рдпреЛрдВ рдкрд░ рд╕рдВрдХреНрд░рдордг/рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдлрд╝реЗрд▓рд┐рдЬрд╝ рддрд░реАрдХрд╛ рдмрд╕ рдЗрддрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдЕрдЪреНрдЫрд╛ рд╣реИред

  • рдЕрдзрд┐рдХ рдЖрдо рддреМрд░ рдкрд░ рдФрд░ рд╢рд╛рдпрдж рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛: рдЬрд┐рд╕ рдЪреБрдиреМрддреА рдХреЛ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИ рдХрд┐ рдПрд▓реНрдорд┐рд╢ рджреБрдирд┐рдпрд╛ рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреБрдирд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕реНрдкрд╖реНрдЯ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ Fable.React рдпрд╛ Feliz рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕реЗ рд╕реАрдЦрдирд╛ рдореЗрд░реА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрд▓реНрдорд┐рд╢ рдФрд░ рд░рд┐рдПрдХреНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ "рд╕рд╣реА" рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдРрдк рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ред рдХрднреА-рдХрднреА рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди-рдЧреНрд░реЗрдб рд░рд┐рдПрдХреНрдЯ рдРрдк рдмрдирд╛рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдлреИрдмрд▓/рдПрд▓реНрдорд┐рд╢ рдореЗрдВ рд╕реНрдирд╛рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдзрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВрдиреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдореБрдЭ рдкрд░ рд╣реИ!

рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ @ drk-mtr рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдЧрд░ рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВ рдЗрд╕реЗ Fable.React рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ред рдореИрдВрдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ "рдлреЗрд▓рд┐рдЬ рд╡реЗ" рдмрдирд╛рдиреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рддреБрд░рдВрдд рднрд╛рдЧ рдЧрдпрд╛ (рдореИрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЖрдКрдВрдЧрд╛!)ред

рд╣рд╛рдБ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рдХрдард┐рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕рдХреА рдЖрджрдд рдбрд╛рд▓ рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрддреЗ рд╕рдордп рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд╛рдЧрдд рдХрд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдХрд╛рдо рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдХреБрдЫ рдХреЙрдкреА + рдкреЗрд╕реНрдЯ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рддрд░рд╣, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдирд╛)ред

рдореБрдЭреЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧрд╛ рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ "рдХрд╕реНрдЯрдо рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛" рдкрд╣рд▓реВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдХреНрд╕рд░ рд╕реАрдПрд╕рдПрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╣рд░ рд╕рдВрднрд╡ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдлрдВрд╕ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реЗ "fontSize" рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "em" рдореЗрдВ, рдпрд╛ "рдЧреНрд░рд┐рдб-рдЯреЗрдореНрдкрд▓реЗрдЯ-рдкрдВрдХреНрддрд┐рдпреЛрдВ" рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирд╕реЗ рдХреБрдЫ "Screen.All" рддрд░реНрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ - рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реЗ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

рдмрд╕ рдЕрдЧрд░ рдЖрдк рдЬрд╛рдЧрд░реВрдХ рдирд╣реАрдВ рд╣реИрдВ (рдореИрдВ рдЗрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдХрд╛рдлреА рдХреБрдЫ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрд╛):

prop рдФрд░ style рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдПрдХ custom рд╡рд┐рдзрд┐ рд╣реИред

ICssUnit рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: style.fontSize (length.em 1)

рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ "рдЬреАрд╡рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛" рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдореИрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓ рдкреНрд░реЙрдкреНрд╕ рдХреА рд▓рдВрдмреА рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╢реИрд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдкреИрдбрд┐рдВрдЧ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓.рдкреИрдбрд┐рдВрдЧрд╡рд░реНрдЯрд┐рдХрд▓ред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╣рд╛рдпрдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ :)

рдХреБрдЫ рднреА рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рдкреБрд╕реНрддрдХ рдореЗрдВ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЖрдкрдиреЗ рдЬрд┐рди рдЪреАрдЬрд╝реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛/рдЬрдирд╕рдВрдкрд░реНрдХ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛!

рдЕрдзрд┐рдХ рдЖрдо рддреМрд░ рдкрд░ рдФрд░ рд╢рд╛рдпрдж рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛: рдЬрд┐рд╕ рдЪреБрдиреМрддреА рдХреЛ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИ рдХрд┐ рдПрд▓реНрдорд┐рд╢ рджреБрдирд┐рдпрд╛ рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреБрдирд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕реНрдкрд╖реНрдЯ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ Fable.React рдпрд╛ Feliz рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕реЗ рд╕реАрдЦрдирд╛ рдореЗрд░реА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрд▓реНрдорд┐рд╢ рдФрд░ рд░рд┐рдПрдХреНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ "рд╕рд╣реА" рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдРрдк рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ред рдХрднреА-рдХрднреА рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди-рдЧреНрд░реЗрдб рд░рд┐рдПрдХреНрдЯ рдРрдк рдмрдирд╛рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдлреИрдмрд▓/рдПрд▓реНрдорд┐рд╢ рдореЗрдВ рд╕реНрдирд╛рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдзрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВрдиреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдореБрдЭ рдкрд░ рд╣реИ!

Fable World (рдкреНрд░реА-рдлреЗрд▓рд┐рдЬ) рдореЗрдВ рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛, (рдЬреИрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ .fs рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ)ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛ рджрд┐рдпрд╛ред рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдзрд┐рдХ рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рдЖрдИрдПрдордУ)ред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрджрдд рд╣реЛ рдЧрдИ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рд╕рдЪреЗрдд рд╡рд┐рдЪрд╛рд░ рднреА рдирд╣реАрдВ рджреЗрддрд╛ред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЬреЛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рд╣реИред

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдПрд▓реНрдорд┐рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛, рдФрд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдбреЗрдореЛ рдРрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХреЛрдВ/рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЖрдк рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдкреАрдЖрдИ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред

рдлрд╝реЗрд▓рд┐рдЬрд╝ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдУрдкрди-рд╕реЛрд░реНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ # 67 рдмрдирд╛рдпрд╛ рдерд╛ред рдЕрднреА рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдЪреАрдЬрд╝ рд╢рд╛рдпрдж рдбреЙрдХреНрд╕ рдРрдк рд╣реА рд╣реИ, рдпрд╛ @cmeren рдХрд╛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдбреЗрдореЛ рд╣реИ ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕