[
    {
        "name": "Editable",
        "comment": " Editable represents a value that can be read-only or editable.\n`ReadOnly a` holds the locked value and `Editable a a`  holds both the old and the newly modified value.\n\n@docs Editable, cancel, edit, map, save, update, value\n",
        "unions": [
            {
                "name": "Editable",
                "comment": " An `Editable` value is either `ReadOnly` or `Editable`.\n\n    view : Editable String -> Html msg\n    view editable =\n        case editable of\n            Editable saved modified ->\n                input [ defaultValue modified ] []\n            ReadOnly saved ->\n                text saved\n\n",
                "args": [
                    "a"
                ],
                "cases": [
                    [
                        "Editable",
                        [
                            "a",
                            "a"
                        ]
                    ],
                    [
                        "ReadOnly",
                        [
                            "a"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "cancel",
                "comment": " Cancels a modified value. This puts the old value into the context of `ReadOnly`.\n\n    Editable.Editable \"old\" \"new\"\n        |> Editable.cancel       --> ReadOnly \"old\"\n\n",
                "type": "Editable a -> Editable a"
            },
            {
                "name": "edit",
                "comment": " Makes a `ReadOnly` value `Editable`.\n\n    Editable.ReadOnly \"old\"\n        |> Editable.update \"new\" --> ReadOnly \"old\"\n        |> Editable.edit         --> Editable \"old\" \"old\"\n        |> Editable.update \"new\" --> Editable \"old\" \"new\"\n\n",
                "type": "Editable a -> Editable a"
            },
            {
                "name": "map",
                "comment": " Apply a function to an `Editable`.\n\n    Editable.ReadOnly \"old\"\n        |> Editable.map String.toUpper --> ReadOnly \"old\"\n\n    Editable.Editable \"old\" \"old\"\n        |> Editable.map String.toUpper --> Editable \"old\" \"OLD\"\n\n",
                "type": "(a -> a) -> Editable a -> Editable a"
            },
            {
                "name": "save",
                "comment": " Save a modified value. This puts the modified value into the context of `ReadOnly`.\n\n    Editable.Editable \"old\" \"new\"\n        |> Editable.save          --> ReadOnly \"new\"\n\n    Editable.ReadOnly \"old\"\n        |> Editable.edit          --> Editable \"old\" \"old\"\n        |> Editable.update \"new\"  --> Editable \"old\" \"new\"\n        |> Editable.save          --> ReadOnly \"new\"\n\n",
                "type": "Editable a -> Editable a"
            },
            {
                "name": "update",
                "comment": " Updates an `Editable` and doesn't change a `ReadOnly`.\n\n    Editable.ReadOnly \"old\"\n        |> Editable.update \"new\"  --> ReadOnly \"old\"\n\n    Editable.Editable \"old\" \"old\"\n        |> Editable.update \"new\"  --> Editable \"old\" \"new\"\n\n",
                "type": "a -> Editable a -> Editable a"
            },
            {
                "name": "value",
                "comment": " Returns the current value of an Editable.\n\n    Editable.ReadOnly \"old\"\n        |> Editable.value  --> \"old\"\n\n    Editable.Editable \"old\" \"new\n        |> Editable.value  --> \"new\"\n",
                "type": "Editable a -> a"
            }
        ],
        "binops": []
    }
]