{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/text-input/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,uCAAuC,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,QAAQ,MAAM,0CAA0C,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,mCAAmC,CAAC;AAyFzD,SAAS,kBAAkB,CAAC,YAA0C;IACrE,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;QACtC,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;KACnC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC;AAUD,MAAM,OAAO,GAAG,MAAM,CAAC;IACtB,KAAK;IACL,MAAM,EAAE,sBAAsB,EAAmB;IACjD,QAAQ;IACR,KAAK;IACL,YAAY;IACZ,WAAW;IACX,UAAU;CACV,CAAC;KACA,UAAU,EAAuB;KACjC,QAAQ,EAAiC,CAAC;AAE5C,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,EACnD,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,EACrF,UAAU,EACV,QAAQ,EACR,EAAE,EACF;IACA,YAAY,CAAC,SAAS,EAAE,CAAC,QAA6B,EAAE,IAAyB,EAAE,EAAE;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAClF,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO,EAAE;YAC/B,WAAW,EAAE,CAAC;SACd;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE9C,MAAM,EACL,IAAI,GAAG,EAAE,EACT,YAAY,GAAG,KAAK,EACpB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,GAAG,EACH,SAAS,EACT,GAAG,EACH,SAAS,EACT,IAAI,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EAAE,YAAY,EACrB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EAAE,SAAS,EAChB,IAAI,GAAG,MAAM,EACb,YAAY,EACZ,KAAK,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EACrD,QAAQ,GAAG,cAAc,EAAE,EAAE,EAC7B,OAAO,EACP,IAAI,GAAG,MAAM,EACb,GAAG,UAAU,EAAE,CAAC;IAEjB,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAuB,CAAC,GAAG,QAAQ,EAAE,CAAC;IAE5E,IAAI,KAAK,KAAK,SAAS,EAAE;QACxB,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,YAAY,KAAK,oBAAoB,EAAE;YAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACzC,KAAK,GAAG,YAAY,CAAC;SACrB;KACD;IAED,MAAM,OAAO,GAAG,YAAY,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpF,SAAS,cAAc,CAAC,KAA0B,EAAE,OAAe;QAClE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAC;QAC5C,IAAI,eAAmC,CAAC;QAExC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACtC,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;YACxC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;SACpC;QAED,IAAI,KAAK,KAAK,aAAa,IAAI,OAAO,KAAK,eAAe,EAAE;YAC3D,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACzC;IACF,CAAC;IAED,IAAI,UAAU,EAAE;QACf,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAClC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAC9B;aAAM;YACN,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,KAAK,IAAI,eAAe,EAAE;gBAC7B,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBACjD,IAAI,WAAW,EAAE;oBAChB,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;oBAC1B,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;iBACpC;aACD;YAED,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC/B;KACD;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GACvB,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAEnF,MAAM,kBAAkB,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC;IACtE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAErD,SAAS,WAAW;QACnB,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,IAAI,UAAU,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAG,CACrB,cAAM,GAAG,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,CAAC,YAAY;YAC/C,IAAC,KAAK,IACL,KAAK,EAAE,SAAS,EAChB,OAAO,oBACH,OAAO,IACV,qBAAqB,oBACjB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAClD,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACtB,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,QAGnE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,WAAW,IAElB,KAAK,CACC,CACF,CACP,CAAC;QAEF,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC5B,aAAK,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,IAAI,QAAQ,CAAC,qBAAqB,CAAC;YACrF,aAAK,OAAO,EAAE,QAAQ,CAAC,qBAAqB,GAAI;YAC/C,KAAK,IAAI,aAAK,OAAO,EAAE,QAAQ,CAAC,mBAAmB,IAAG,aAAa,CAAO;YAC3E,aAAK,OAAO,EAAE,QAAQ,CAAC,sBAAsB,GAAI,CAC5C,CACN,CAAC,CAAC,CAAC,CACH,KAAK,IAAI,aAAa,CACtB,CAAC;IACH,CAAC;IAED,OAAO,CACN,aAAK,GAAG,EAAC,MAAM,EAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,cAAc;QAC7E,aACC,GAAG,EAAC,SAAS,EACb,OAAO,EAAE;gBACR,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBACnC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACtC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACzC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACtC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBACnC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBACnC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;gBACpC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBACtC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBAC/C,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBAClD,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBAC7C,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;aACpE,EACD,IAAI,EAAC,cAAc;YAElB,WAAW,EAAE;YACb,IAAI,KAAK,MAAM,IAAI,cAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAI;YACtD,cAAM,GAAG,EAAC,SAAS,EAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,IAClD,OAAO,IAAI,cAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAG,OAAO,CAAQ,CACvD;YACP,+BACK,oBAAoB,CAAC,IAAI,CAAC,oBAChB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAClD,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAC9C,OAAO,EAAE,QAAQ,CAAC,KAAK,EACvB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,KAAK,CAAC,WAAW,EACxB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAC5C,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAC5C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,mBACH,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,GAAG,EAAE;oBACZ,MAAM,IAAI,MAAM,EAAE,CAAC;gBACpB,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,IAAI,OAAO,EAAE,CAAC;gBACtB,CAAC,EACD,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACzB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;oBACvD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC3B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC,EACD,SAAS,EAAE,CAAC,KAAoB,EAAE,EAAE;oBACnC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;gBACnE,CAAC,EACD,OAAO,EAAE,CAAC,KAAoB,EAAE,EAAE;oBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC/D,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,IAAI,OAAO,EAAE,CAAC;gBACtB,CAAC,EACD,cAAc,EAAE,GAAG,EAAE;oBACpB,MAAM,IAAI,MAAM,EAAE,CAAC;gBACpB,CAAC,EACD,cAAc,EAAE,GAAG,EAAE;oBACpB,KAAK,IAAI,KAAK,EAAE,CAAC;gBAClB,CAAC,EACD,gBAAgB,EAAE,CAAC,KAAqB,EAAE,EAAE;oBAC3C,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,eAAe,EAAE;wBACrD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;qBAC/B;gBACF,CAAC,IACA;YACF,cAAM,GAAG,EAAC,UAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,IACpD,QAAQ,IAAI,cAAM,OAAO,EAAE,QAAQ,CAAC,QAAQ,IAAG,QAAQ,CAAQ,CAC1D;YACN,IAAI,KAAK,MAAM,IAAI,CACnB,cACC,OAAO,EAAE;oBACR,QAAQ,CAAC,UAAU;oBACnB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI;iBAC3D,GACA,CACF,CACI;QACN,IAAC,UAAU,IACV,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,GACf,CACG,CACN,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,SAAS,CAAC","sourcesContent":["import { RenderResult } from '@dojo/framework/core/interfaces';\nimport focus from '@dojo/framework/core/middleware/focus';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\nimport dimensions from '@dojo/framework/core/middleware/dimensions';\nimport theme from '../middleware/theme';\nimport validity from '@dojo/framework/core/middleware/validity';\nimport { create, diffProperty, invalidator, tsx } from '@dojo/framework/core/vdom';\nimport { formatAriaProperties } from '../common/util';\nimport HelperText from '../helper-text/index';\nimport Label from '../label/index';\nimport * as css from '../theme/default/text-input.m.css';\n\nexport type TextInputType =\n\t| 'text'\n\t| 'email'\n\t| 'number'\n\t| 'password'\n\t| 'search'\n\t| 'tel'\n\t| 'url'\n\t| 'date';\n\nexport interface BaseInputProperties<T extends { value: any } = { value: string }> {\n\t/** Custom aria attributes */\n\taria?: { [key: string]: string | null };\n\t/** Should the field autocomplete */\n\tautocomplete?: boolean | string;\n\t/** The disabled property of the input */\n\tdisabled?: boolean;\n\t/** Text to display below the input */\n\thelperText?: string;\n\t/** Hides the label for a11y purposes */\n\tlabelHidden?: boolean;\n\t/** The name property of the input */\n\tname?: string;\n\t/** Callback fired when the input is blurred */\n\tonBlur?(): void;\n\t/** Callback fired when the input is focused */\n\tonFocus?(): void;\n\t/** Callback fired when a key is pressed down */\n\tonKeyDown?(key: number, preventDefault: () => void): void;\n\t/** Callback fired when a key is released */\n\tonKeyUp?(key: number, preventDefault: () => void): void;\n\t/** Callback fired when the input validation changes */\n\tonValidate?: (valid: boolean | undefined, message: string) => void;\n\t/** Callback fired when the input value changes */\n\tonValue?(value?: T['value']): void;\n\t/** Callback fired when the input is clicked */\n\tonClick?(): void;\n\t/** Callback fired when the pointer enters the input */\n\tonOver?(): void;\n\t/** Callback fired when the pointer leaves the input */\n\tonOut?(): void;\n\t/** Placeholder text */\n\tplaceholder?: string;\n\t/** The readonly attribute of the input */\n\treadOnly?: boolean;\n\t/** The required attribute of the input */\n\trequired?: boolean;\n\t/** The initial value */\n\tinitialValue?: T['value'];\n\t/** The controlled value */\n\tvalue?: T['value'];\n\t/** The id to be applied to the input */\n\twidgetId?: string;\n\t/** The kind of input */\n\tkind?: 'outlined' | 'filled';\n}\n\nexport interface TextInputChildren {\n\t/** The label to be displayed above the input */\n\tlabel?: RenderResult;\n\t/** Renderer for leading content */\n\tleading?: RenderResult;\n\t/** Renderer for trailing content */\n\ttrailing?: RenderResult;\n}\n\nexport interface TextInputProperties extends BaseInputProperties {\n\t/** Custom validator used to validate the contents of the input */\n\tcustomValidator?: (value: string) => { valid?: boolean; message?: string } | void;\n\t/** The min value a number can be */\n\tmin?: number | string;\n\t/** The max value a number can be */\n\tmax?: number | string;\n\t/** The step to increment the number value by */\n\tstep?: number | string;\n\t/** Maximum number of characters allowed in the input */\n\tmaxLength?: number | string;\n\t/** Minimum number of characters allowed in the input */\n\tminLength?: number | string;\n\t/** Pattern used as part of validation */\n\tpattern?: string | RegExp;\n\t/** Input type, e.g. text, email, tel, etc. */\n\ttype?: TextInputType;\n\t/** Represents if the input value is valid */\n\tvalid?: { valid?: boolean; message?: string } | boolean;\n}\n\nfunction formatAutocomplete(autocomplete: string | boolean | undefined): string | undefined {\n\tif (typeof autocomplete === 'boolean') {\n\t\treturn autocomplete ? 'on' : 'off';\n\t}\n\treturn autocomplete;\n}\n\ninterface TextInputICache {\n\tuuid: string;\n\tdirty: boolean;\n\tvalue?: string;\n\tinitialValue?: string;\n\tautofilled?: boolean;\n}\n\nconst factory = create({\n\ttheme,\n\ticache: createICacheMiddleware<TextInputICache>(),\n\tvalidity,\n\tfocus,\n\tdiffProperty,\n\tinvalidator,\n\tdimensions\n})\n\t.properties<TextInputProperties>()\n\t.children<TextInputChildren | undefined>();\n\nexport const TextInput = factory(function TextInput({\n\tmiddleware: { icache, theme, validity, focus, diffProperty, invalidator, dimensions },\n\tproperties,\n\tchildren,\n\tid\n}) {\n\tdiffProperty('pattern', (previous: TextInputProperties, next: TextInputProperties) => {\n\t\tconst value = next.pattern instanceof RegExp ? next.pattern.source : next.pattern;\n\t\tif (value !== previous.pattern) {\n\t\t\tinvalidator();\n\t\t}\n\t});\n\n\tconst themeCss = theme.classes(css);\n\tconst dirty = icache.getOrSet('dirty', false);\n\n\tconst {\n\t\taria = {},\n\t\tautocomplete = false,\n\t\tclasses,\n\t\tcustomValidator,\n\t\tdisabled,\n\t\thelperText,\n\t\tlabelHidden = false,\n\t\tmax,\n\t\tmaxLength,\n\t\tmin,\n\t\tminLength,\n\t\tname,\n\t\tonBlur,\n\t\tonClick,\n\t\tonFocus,\n\t\tonKeyDown,\n\t\tonKeyUp,\n\t\tonOut,\n\t\tonOver,\n\t\tonValidate,\n\t\tonValue,\n\t\tpattern: patternValue,\n\t\tplaceholder,\n\t\treadOnly,\n\t\trequired,\n\t\tstep,\n\t\ttheme: themeProp,\n\t\ttype = 'text',\n\t\tinitialValue,\n\t\tvalid: validValue = { valid: undefined, message: '' },\n\t\twidgetId = `text-input-${id}`,\n\t\tvariant,\n\t\tkind = 'kind'\n\t} = properties();\n\n\tlet { value } = properties();\n\tconst [{ label, leading, trailing } = {} as TextInputChildren] = children();\n\n\tif (value === undefined) {\n\t\tvalue = icache.get('value');\n\t\tconst existingInitialValue = icache.get('initialValue');\n\n\t\tif (initialValue !== existingInitialValue) {\n\t\t\ticache.set('value', initialValue);\n\t\t\ticache.set('initialValue', initialValue);\n\t\t\tvalue = initialValue;\n\t\t}\n\t}\n\n\tconst pattern = patternValue instanceof RegExp ? patternValue.source : patternValue;\n\n\tfunction callOnValidate(valid: boolean | undefined, message: string) {\n\t\tlet { valid: previousValid } = properties();\n\t\tlet previousMessage: string | undefined;\n\n\t\tif (typeof previousValid === 'object') {\n\t\t\tpreviousMessage = previousValid.message;\n\t\t\tpreviousValid = previousValid.valid;\n\t\t}\n\n\t\tif (valid !== previousValid || message !== previousMessage) {\n\t\t\tonValidate && onValidate(valid, message);\n\t\t}\n\t}\n\n\tif (onValidate) {\n\t\tif (value === undefined && !dirty) {\n\t\t\tcallOnValidate(undefined, '');\n\t\t} else {\n\t\t\ticache.set('dirty', true);\n\t\t\tlet { valid, message = '' } = validity.get('input', value || '');\n\t\t\tif (valid && customValidator) {\n\t\t\t\tconst customValid = customValidator(value || '');\n\t\t\t\tif (customValid) {\n\t\t\t\t\tvalid = customValid.valid;\n\t\t\t\t\tmessage = customValid.message || '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcallOnValidate(valid, message);\n\t\t}\n\t}\n\n\tconst { valid, message } =\n\t\ttypeof validValue === 'boolean' ? { valid: validValue, message: '' } : validValue;\n\n\tconst computedHelperText = (valid === false && message) || helperText;\n\tconst inputFocused = focus.isFocused('input');\n\tconst autofilled = Boolean(icache.get('autofilled'));\n\n\tfunction renderLabel() {\n\t\tconst labelActive = Boolean(!!value || inputFocused || autofilled);\n\n\t\tconst renderedLabel = (\n\t\t\t<span key=\"label\" classes={themeCss.labelWrapper}>\n\t\t\t\t<Label\n\t\t\t\t\ttheme={themeProp}\n\t\t\t\t\tclasses={{\n\t\t\t\t\t\t...classes,\n\t\t\t\t\t\t'@dojo/widgets/label': {\n\t\t\t\t\t\t\t...(classes ? classes['@dojo/widgets/label'] : {}),\n\t\t\t\t\t\t\troot: [themeCss.label],\n\t\t\t\t\t\t\tactive: kind === 'outlined' ? [themeCss.outlinedLabelActive] : []\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tvalid={valid}\n\t\t\t\t\tfocused={inputFocused}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\trequired={required}\n\t\t\t\t\thidden={labelHidden}\n\t\t\t\t\tforId={widgetId}\n\t\t\t\t\tactive={labelActive}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t</span>\n\t\t);\n\n\t\treturn kind === 'outlined' ? (\n\t\t\t<div classes={[themeCss.notchedOutline, labelActive && themeCss.notchedOutlineNotched]}>\n\t\t\t\t<div classes={themeCss.notchedOutlineLeading} />\n\t\t\t\t{label && <div classes={themeCss.notchedOutlineNotch}>{renderedLabel}</div>}\n\t\t\t\t<div classes={themeCss.notchedOutlineTrailing} />\n\t\t\t</div>\n\t\t) : (\n\t\t\tlabel && renderedLabel\n\t\t);\n\t}\n\n\treturn (\n\t\t<div key=\"root\" classes={[theme.variant(), themeCss.root]} role=\"presentation\">\n\t\t\t<div\n\t\t\t\tkey=\"wrapper\"\n\t\t\t\tclasses={[\n\t\t\t\t\tthemeCss.wrapper,\n\t\t\t\t\tdisabled ? themeCss.disabled : null,\n\t\t\t\t\tinputFocused ? themeCss.focused : null,\n\t\t\t\t\tvalid === false ? themeCss.invalid : null,\n\t\t\t\t\tvalid === true ? themeCss.valid : null,\n\t\t\t\t\treadOnly ? themeCss.readonly : null,\n\t\t\t\t\trequired ? themeCss.required : null,\n\t\t\t\t\tleading ? themeCss.hasLeading : null,\n\t\t\t\t\ttrailing ? themeCss.hasTrailing : null,\n\t\t\t\t\t!label || labelHidden ? themeCss.noLabel : null,\n\t\t\t\t\tkind === 'outlined' ? themeCss.outlinedKind : null,\n\t\t\t\t\tkind === 'kind' ? themeCss.defaultKind : null,\n\t\t\t\t\tkind === 'kind' && inputFocused ? themeCss.defaultKindFocused : null\n\t\t\t\t]}\n\t\t\t\trole=\"presentation\"\n\t\t\t>\n\t\t\t\t{renderLabel()}\n\t\t\t\t{kind === 'kind' && <span classes={themeCss.ripple} />}\n\t\t\t\t<span key=\"leading\" classes={themeCss.leadingWrapper}>\n\t\t\t\t\t{leading && <span classes={themeCss.leading}>{leading}</span>}\n\t\t\t\t</span>\n\t\t\t\t<input\n\t\t\t\t\t{...formatAriaProperties(aria)}\n\t\t\t\t\taria-invalid={valid === false ? 'true' : undefined}\n\t\t\t\t\tautocomplete={formatAutocomplete(autocomplete)}\n\t\t\t\t\tclasses={themeCss.input}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tid={widgetId}\n\t\t\t\t\tfocus={focus.shouldFocus}\n\t\t\t\t\tkey={'input'}\n\t\t\t\t\tmax={max}\n\t\t\t\t\tmaxlength={maxLength ? `${maxLength}` : null}\n\t\t\t\t\tmin={min}\n\t\t\t\t\tminlength={minLength ? `${minLength}` : null}\n\t\t\t\t\tname={name}\n\t\t\t\t\tpattern={pattern}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\taria-readonly={readOnly ? 'true' : undefined}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tstep={step}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonblur={() => {\n\t\t\t\t\t\tonBlur && onBlur();\n\t\t\t\t\t}}\n\t\t\t\t\tonfocus={() => {\n\t\t\t\t\t\tonFocus && onFocus();\n\t\t\t\t\t}}\n\t\t\t\t\toninput={(event: Event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tconst value = (event.target as HTMLInputElement).value;\n\t\t\t\t\t\ticache.set('value', value);\n\t\t\t\t\t\tonValue && onValue(value);\n\t\t\t\t\t}}\n\t\t\t\t\tonkeydown={(event: KeyboardEvent) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tonKeyDown && onKeyDown(event.which, () => event.preventDefault());\n\t\t\t\t\t}}\n\t\t\t\t\tonkeyup={(event: KeyboardEvent) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tonKeyUp && onKeyUp(event.which, () => event.preventDefault());\n\t\t\t\t\t}}\n\t\t\t\t\tonclick={() => {\n\t\t\t\t\t\tonClick && onClick();\n\t\t\t\t\t}}\n\t\t\t\t\tonpointerenter={() => {\n\t\t\t\t\t\tonOver && onOver();\n\t\t\t\t\t}}\n\t\t\t\t\tonpointerleave={() => {\n\t\t\t\t\t\tonOut && onOut();\n\t\t\t\t\t}}\n\t\t\t\t\tonanimationstart={(event: AnimationEvent) => {\n\t\t\t\t\t\tif (event.animationName === themeCss.onAutofillShown) {\n\t\t\t\t\t\t\ticache.set('autofilled', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<span key=\"trailing\" classes={themeCss.trailingWrapper}>\n\t\t\t\t\t{trailing && <span classes={themeCss.trailing}>{trailing}</span>}\n\t\t\t\t</span>\n\t\t\t\t{kind === 'kind' && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclasses={[\n\t\t\t\t\t\t\tthemeCss.lineRipple,\n\t\t\t\t\t\t\tinputFocused ? themeCss.defaultKindLineRippleFocused : null\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<HelperText\n\t\t\t\ttext={computedHelperText}\n\t\t\t\tvalid={valid}\n\t\t\t\tclasses={classes}\n\t\t\t\ttheme={themeProp}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nexport default TextInput;\n"]}