{
  "custom": {},
  "events": {
    "system": {
      "onStartup": {
        "config": {
          "script": "\tself.params.request_focus \u003d True\n\t"
        },
        "scope": "G",
        "type": "script"
      }
    }
  },
  "params": {
    "enabled": true,
    "placeholder": "enter text...",
    "request_focus": false,
    "text": ""
  },
  "propConfig": {
    "params.enabled": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.placeholder": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.request_focus": {
      "onChange": {
        "enabled": null,
        "script": "\t# if focus request  set externally, set focus via message and clear request\n\tif currentValue.value:\n\t\tsystem.perspective.sendMessage(\u0027request_focus\u0027, scope\u003d\u0027view\u0027)\n\t\tself.params.request_focus \u003d False\n\t"
      },
      "paramDirection": "inout",
      "persistent": true
    },
    "params.text": {
      "paramDirection": "inout",
      "persistent": true
    }
  },
  "props": {
    "defaultSize": {
      "height": 50,
      "width": 200
    }
  },
  "root": {
    "children": [
      {
        "meta": {
          "name": "TextField"
        },
        "position": {
          "grow": 1
        },
        "propConfig": {
          "props.enabled": {
            "binding": {
              "config": {
                "path": "view.params.enabled"
              },
              "type": "property"
            }
          },
          "props.placeholder": {
            "binding": {
              "config": {
                "path": "view.params.placeholder"
              },
              "type": "property"
            }
          },
          "props.style.classes": {
            "binding": {
              "config": {
                "expression": "if({this.props.enabled},\u0027Input/Text/text_field_enabled\u0027,\u0027Input/Text/text_field_disabled\u0027)"
              },
              "type": "expr"
            }
          },
          "props.text": {
            "binding": {
              "config": {
                "bidirectional": true,
                "path": "view.params.text"
              },
              "overlayOptOut": true,
              "type": "property"
            }
          }
        },
        "props": {
          "style": {
            "margin": "1%",
            "padding": "1%"
          }
        },
        "scripts": {
          "customMethods": [
            {
              "name": "set_focus",
              "params": [],
              "script": "\tfrom time import sleep\n\tsleep(0.25)\n\tself.focus()\n\t"
            }
          ],
          "extensionFunctions": null,
          "messageHandlers": [
            {
              "messageType": "request_focus",
              "pageScope": false,
              "script": "\tsystem.util.invokeAsynchronous(self.set_focus())\n\t",
              "sessionScope": false,
              "viewScope": true
            }
          ]
        },
        "type": "ia.input.text-field"
      }
    ],
    "meta": {
      "name": "root"
    },
    "props": {
      "direction": "column"
    },
    "type": "ia.container.flex"
  }
}