peryl 1.5.13 → 1.5.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ function t(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i={},n={},a=e.parcelRequirede31;null==a&&((a=function(t){if(t in i)return i[t].exports;if(t in n){var e=n[t];delete n[t];var a={id:t,exports:{}};return i[t]=a,e.call(a.exports,a,a.exports),a.exports}var s=new Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}).register=function(t,e){n[t]=e},e.parcelRequirede31=a),a.register("lQ1yG",(function(e,i){t(e.exports,"HAppActions",(function(){return r}),(function(t){return r=t})),t(e.exports,"HDispatchScopes",(function(){return c}),(function(t){return c=t})),t(e.exports,"happ",(function(){return y}),(function(t){return y=t})),t(e.exports,"HApp",(function(){return A}),(function(t){return A=t})),t(e.exports,"happel",(function(){return g}),(function(t){return g=t}));var n=a("hrCkK"),s=function(t,e,i,n){return new(i||(i=Promise))((function(a,s){function o(t){try{d(n.next(t))}catch(t){s(t)}}function l(t){try{d(n.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?a(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,l)}d((n=n.apply(t,e||[])).next())}))};const o=console.log,l=console.error,d=console.warn;var r,u,c,h;(u=r||(r={})).init="happ-init",u.mount="happ-mount",u.umount="happ-umount",u.action="happ-action",u.attribute="happ-attribute",(h=c||(c={})).element="element",h.window="window";const v=window.requestAnimationFrame||function(t){window.setTimeout(t,1e3/60)},m=window.cancelAnimationFrame||function(t){window.clearTimeout(t)},p="action:",f="dispatch:",w="render:",b="happ";function y(t){return new A(t.state,t.view,t.dispatcher,t.element,t.debug,t.name)}function g(t){customElements.define(`${b}-${t.name}`,class extends HTMLElement{static get observedAttributes(){return t.attributes}connectedCallback(){this.attachShadow({mode:"open"}),this._happel.mount(this.shadowRoot)}disconnectedCallback(){this._happel.umount()}adoptedCallback(){this._happel.update()}attributeChangedCallback(t,e,i){this._happel.dispatch(r.attribute,{attrName:t,oldVal:e,newVal:i})}constructor(){super(),this._happel=new A(t.state,t.view,t.dispatcher,void 0,t.debug,t.name,t.attributes),this._happel.customElement=this}})}class A{_dispatchAction(t,e,i,n){return s(this,void 0,void 0,(function*(){if(this.debug){o(this.name,p,{type:t,data:e,event:i});const a=performance.now();yield this._dispatch(t,e,i,n);const s=performance.now();o(this.name,f,s-a+" ms",this.state)}else yield this._dispatch(t,e,i,n)}))}_dispatch(t,e,i,n){return s(this,void 0,void 0,(function*(){if(!n){try{yield this.dispatcher({type:t,data:e,event:i},this.state,this.dispatch)}catch(t){l(this.name,f,t)}this.update()}"element"===n&&this._dispatchElement(t,e),"window"===n&&this._dispatchWindow(t,e)}))}_dispatchElement(t,e){return s(this,void 0,void 0,(function*(){this.customElement&&_(this.customElement,r.action,{type:t,data:e}),!this.customElement&&this.element&&_(this.element,r.action,{type:t,data:e})}))}_dispatchWindow(t,e){return s(this,void 0,void 0,(function*(){window.dispatchEvent(new CustomEvent(r.action,{detail:{type:t,data:e}}))}))}windowActionListen(){this._windowActionListener?d("windowEventListener already added"):(this._windowActionListener=t=>{const e=t.detail;this._dispatchAction(r.action,e)},window.addEventListener(r.action,this._windowActionListener))}_updateDom(t,e,i){if(this.debug){const a=performance.now();(0,n.hsmls2idomPatch)(t,e,i);const s=performance.now();o(this.name,"update:",s-a+" ms",t)}else(0,n.hsmls2idomPatch)(t,e,i)}constructor(t,e,i,n,a,d,u){this.refs={},this.dispatch=(t,e,i)=>s(this,void 0,void 0,(function*(){return this._dispatchAction(t,e,void 0,i)})),this.render=()=>{if(this.debug){const t=performance.now();let e;try{e=this.view(this.state)}catch(t){l(this.name,w,t)}const i=performance.now();return o(this.name,w,i-t+" ms",e),null!=e?e:[]}{let t;try{t=this.view(this.state)}catch(t){l(this.name,w,t)}return null!=t?t:[]}},this.actionCb=(t,e,i)=>{void 0===(e=(null==e?void 0:e.constructor)===Function?e(i):e)&&i&&(e=i instanceof CustomEvent?i.detail:function(t){const e=t.target;if("FORM"===e.nodeName){t.preventDefault();const i={data:{},validation:{},valid:!0},n=e.elements;for(let t=0;t<n.length;t++){const e=E(n[t]);if(e&&e.name){const a=i.data,s=e.name,o=e.value;void 0===a[s]?a[s]=o:"string"==typeof a[s]||a[s]instanceof String?a[s]=o instanceof Array?[a[s],...o]:[a[s],o]:a[s]instanceof Array?o instanceof Array?a[s]=a[s].concat(o):a[s].push(o):a[s]=o instanceof Array?[a[s],...o]:[a[s],o],a[s]instanceof Array&&(a[s]=a[s].filter((t=>null!==t)),"radio"===n[t].type&&(a[s]=a[s].length?a[s][0]:null)),e.validation&&(i.validation[s]=e.validation),e.valid||(i.valid=!1)}}return i}return E(e)}(i)),this._dispatchAction(t,e,i)},this.mount=t=>{const e="string"==typeof t?document.getElementById(t):t;if(e&&e[b]){e[b].umount()}if(e&&!this.element){this.element=e,e[b]=this;const t=this.render();this._updateDom(e,t,this),this._dispatchAction(r.mount,this.element)}return this},this.umount=()=>{if(this.element){this._dispatchAction(r.umount,this.element),this.element.hasAttribute(b)&&this.element.removeAttribute(b);const t=this.element.querySelectorAll(`[${b}]`);for(let e=0;e<t.length;e++){const i=t[e].happ;null==i||i.umount()}for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);delete this.element.happ,this.element=void 0}return this._windowActionListener&&window.removeEventListener(r.action,this._windowActionListener),this},this.update=()=>(this.element&&!this._updateSched&&(this._updateSched=v((()=>{if(this.element){const t=this.render();this._updateDom(this.element,t,this)}this._updateSched=void 0}))),this),this.toHsml=()=>{if(this.element){if(!this._updateSched)return["div",{skip:!0}];m(this._updateSched),this._updateSched=void 0}const t=this.render();return t.push((t=>{this.element||(this.element=t,t.happ=this,this._dispatchAction(r.mount,this.element))})),["div",t]},this.toHtml=()=>this.element?this.element.outerHTML:"",this.debug=null!=a&&a,this.name=null!=d?d:b,this.attributes=null!=u?u:[],this.state=t(),this.view=e,this.dispatcher=null!=i?i:t=>s(this,void 0,void 0,(function*(){return o(this.name,p,t.type,t.data)})),this._dispatchAction(r.init,this).then((()=>n&&this.mount(n)))}}function _(t,e,i){var n,a;null==t||t.dispatchEvent(new CustomEvent(e,{detail:i})),null===(a=(n=t)[`on${e}`])||void 0===a||a.call(n,new CustomEvent(e,{detail:i}))}function E(t){const e=t;if(e.willValidate){let t=!0;for(const i in e.validity)if("customError"!==i&&"valid"!==i&&e.validity[i]){const n=e.validation;if(n){const a=n[i];if(a){e.setCustomValidity(a),t=!1;break}e.setCustomValidity("");break}}t&&e.setCustomValidity("")}let i;switch(t.nodeName){case"INPUT":const e=t;switch(e.type){case"text":case"hidden":case"password":case"email":case"search":case"url":case"tel":case"color":case"submit":case"button":i={name:e.name,value:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"number":case"range":i={name:e.name,value:e.valueAsNumber,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"datetime-local":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:isNaN(e.valueAsNumber)?null:new Date(e.valueAsNumber),validation:e.validationMessage,valid:e.validity.valid};break;case"date":case"month":case"time":case"week":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:e.valueAsDate,validation:e.validationMessage,valid:e.validity.valid};break;case"radio":i={name:e.name,value:e.checked?e.value:null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"checkbox":i="on"===e.value?{name:e.name,value:e.checked,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}:{name:e.name,value:e.checked?String(e.value):null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"file":const t=e.files,n=1===t.length?t[0]:t;i={name:e.name,value:n,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}}break;case"SELECT":const n=t;if(n.multiple){const t=Array.from(n.selectedOptions).map((t=>t.value));i={name:n.name,value:t,valueString:n.value,validation:n.validationMessage,valid:n.validity.valid}}else i={name:n.name,value:n.value,validation:n.validationMessage,valid:n.validity.valid};break;case"TEXTAREA":const a=t;i={name:a.name,value:a.value,validation:a.validationMessage,valid:a.validity.valid};break;case"BUTTON":const s=t;i={name:s.name,value:s.value,validation:s.validationMessage,valid:s.validity.valid}}return i}}));
2
+ //# sourceMappingURL=hsml-app-form-validation_demo.1ef7fa68.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/hsml-app.ts"],"sourcesContent":["import { HAttrOnData, HAttrOnDataFnc, HElement, HElements, HHandlerCtx } from \"./hsml\";\nimport { hsmls2idomPatch } from \"./hsml-idom\";\n\nconst log = console.log;\nconst error = console.error;\nconst warn = console.warn;\n\nexport type HState<State> = () => State;\n\nexport type HView<State, HActionType extends string> = (\n state: State\n) => HElements<HActionType>;\n\nexport type HView1<State, HActionType extends string> = (\n state: State\n) => HElement<HActionType>;\n\nexport type HAppAction =\n | \"happ-init\"\n | \"happ-mount\"\n | \"happ-umount\"\n | \"happ-action\"\n | \"happ-attribute\";\n\nexport enum HAppActions {\n init = \"happ-init\",\n mount = \"happ-mount\",\n umount = \"happ-umount\",\n action = \"happ-action\",\n attribute = \"happ-attribute\"\n}\n\nexport interface HAction<HActionType extends string> {\n type: HActionType;\n data?: any;\n event?: Event;\n}\n\nexport type HDispatchScope =\n | \"element\"\n | \"window\";\n\nexport enum HDispatchScopes {\n element = \"element\",\n window = \"window\"\n}\n\nexport type HDispatch<HActionType extends string> = (\n type: HAction<HActionType>[\"type\"],\n data?: HAction<HActionType>[\"data\"],\n scope?: HDispatchScope | HDispatchScopes\n) => Promise<void>;\n\nexport type HDispatcher<State, HActionType extends string> = (\n // this: HApp<State, HActionType>,\n action: HAction<HActionType | HAppAction | HAppActions>,\n state: State,\n dispatch: HDispatch<HActionType>\n) => Promise<void>;\n\nconst schedule = window.requestAnimationFrame ||\n // window.webkitRequestAnimationFrame ||\n // (window as any).mozRequestAnimationFrame ||\n // (window as any).oRequestAnimationFrame ||\n // (window as any).msRequestAnimationFrame ||\n function (callback: Function) { window.setTimeout(callback, 1000 / 60); };\n\nconst unschedule = window.cancelAnimationFrame ||\n // window.webkitCancelAnimationFrame ||\n // (window as any).mozCancelAnimationFrame ||\n // (window as any).oCancelAnimationFrame ||\n // (window as any).msCancelAnimationFrame ||\n function (handle: number) { window.clearTimeout(handle); };\n\nconst msgAction = \"action:\";\nconst msgDispatch = \"dispatch:\";\nconst msgRender = \"render:\";\nconst msgUpdate = \"update:\";\n\nconst HAPP = \"happ\";\n\nexport interface HAppI<State, HActionType extends string> {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element?: Element | string | null;\n debug?: boolean;\n name?: string;\n attributes?: string[];\n}\n\n/**\n * HApp definition\n *\n * @param hAppI HApp definition\n * @returns HApp instance\n */\nexport function happ<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element: Element | string | null;\n debug?: boolean;\n name?: string;\n // attributes?: string[];\n}) {\n return new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n hAppI.element,\n hAppI.debug,\n hAppI.name\n // hAppI!.attributes\n );\n}\n\n// export type Class<T = object> = new (...args: any[]) => T;\n\n// export function happi<State, HActionType extends string>(\n// hAppI: Class<HAppI<State, HActionType>>,\n// element?: Element | string | null,\n// debug? boolean,\n// name?: string,\n// attributes: string[]\n// ) {\n// const hapi = new hAppI();\n// return new HApp<State, HActionType>(\n// hapi.state,\n// hapi.view,\n// hapi.dispatcher,\n// element,\n// debug\n// );\n// }\n\n// HAppEl\n\n/**\n * HApp custom HTML element definition.\n *\n * @param hAppI HApp definition\n */\nexport function happel<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n /** Element suffix name, element name patern is `happ-${name}` */\n name: string;\n /** Element attribute list */\n attributes: string[];\n debug?: boolean;\n}): void {\n customElements.define(\n `${HAPP}-${hAppI.name}`,\n class HAppElement extends HTMLElement {\n static get observedAttributes() {\n return hAppI.attributes;\n }\n\n private _happel: HApp<State, HActionType>;\n\n constructor() {\n super();\n this._happel = new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n undefined,\n hAppI.debug,\n hAppI.name,\n hAppI.attributes\n );\n (this._happel as any).customElement = this;\n }\n\n connectedCallback() {\n // this._happel.mount(this);\n this.attachShadow({ mode: \"open\" });\n this._happel.mount(this.shadowRoot as any);\n }\n\n disconnectedCallback() {\n this._happel.umount();\n }\n\n adoptedCallback() {\n this._happel.update();\n }\n\n attributeChangedCallback(\n attrName: string,\n oldVal: string | null,\n newVal: string | null\n ) {\n this._happel.dispatch(\n HAppActions.attribute as any,\n { attrName, oldVal, newVal });\n }\n }\n );\n}\n\n/**\n * HSML App\n */\nexport class HApp<State, HActionType extends string> implements HHandlerCtx<HActionType> {\n\n readonly state: State;\n readonly view: HView<State, HActionType>;\n readonly dispatcher: HDispatcher<State, HActionType>;\n\n debug: boolean;\n\n readonly name: string;\n readonly attributes: string[];\n\n readonly element?: HTMLElement;\n readonly refs: { [key: string]: HTMLElement } = {};\n\n readonly customElement?: HTMLElement; // happ custom html element\n\n private _updateSched?: number;\n\n // private _onDispatch?: HDispatcher<State>;\n\n private _windowActionListener?: (event: Event) => void;\n\n constructor(\n state: HState<State>,\n view: HView<State, HActionType>,\n dispatcher?: HDispatcher<State, HActionType>,\n element?: Element | string | null,\n debug?: boolean ,\n name?: string,\n attributes?: string[]\n ) {\n this.debug = debug ?? false;\n this.name = name ?? HAPP;\n this.attributes = attributes ?? [];\n this.state = state();\n this.view = view;\n this.dispatcher = dispatcher ?? (async (a) => log(this.name, msgAction, a.type, a.data));\n this._dispatchAction(HAppActions.init, this).then(() => element && this.mount(element));\n }\n\n /**\n * Dispatch app action.\n */\n dispatch: HDispatch<HActionType> = async (\n type: HActionType,\n data?: any,\n scope?: HDispatchScope\n ): Promise<void> => {\n return this._dispatchAction(type, data, undefined, scope);\n }\n\n // onDispatch = (dispatcher: HDispatcher<State>): this => {\n // this._onDispatch = dispatcher;\n // return this;\n // }\n\n private async _dispatchAction(\n type: HActionType | HAppAction | HAppActions,\n data?: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n if (this.debug) {\n log(this.name, msgAction, { type, data, event });\n const t0 = performance.now();\n await this._dispatch(type, data, event, scope);\n const t1 = performance.now();\n log(this.name, msgDispatch, `${t1 - t0} ms`, this.state);\n } else {\n await this._dispatch(type, data, event, scope);\n }\n }\n\n private async _dispatch(\n type: HActionType | HAppAction | HAppActions,\n data: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n if (!scope) {\n try {\n await this.dispatcher(\n { type: type as HActionType, data, event },\n this.state,\n this.dispatch\n );\n } catch (e) {\n error(this.name, msgDispatch, e);\n }\n this.update();\n }\n scope === \"element\" && this._dispatchElement(type, data);\n scope === \"window\" && this._dispatchWindow(type, data);\n }\n\n private async _dispatchElement(\n type: HActionType | HAppAction | HAppActions,\n data?: any\n ): Promise<void> {\n this.customElement && elementDispatchCustomEvent(this.customElement, HAppActions.action, { type, data });\n !this.customElement && this.element && elementDispatchCustomEvent(this.element, HAppActions.action, { type, data });\n // this._onDispatch?.({ type, data, event }, this.state, this.dispatch);\n }\n\n private async _dispatchWindow(\n type: HActionType | HAppAction | HAppActions,\n data?: any): Promise<void> {\n window.dispatchEvent(new CustomEvent(HAppActions.action, { detail: { type, data } }));\n }\n\n /**\n * Window action listen and route actions to dispatcher.\n * Call this method on app mount action.\n * Listening will be stopped on app umount automatically.\n */\n windowActionListen() {\n if (!this._windowActionListener) {\n this._windowActionListener = (event: Event) => {\n const action = (event as CustomEvent).detail as HAction<HActionType>;\n this._dispatchAction(HAppActions.action, action);\n };\n window.addEventListener(HAppActions.action, this._windowActionListener);\n } else {\n warn(\"windowEventListener already added\");\n }\n }\n\n /**\n * Render HSML based on app state.\n */\n render = (): HElements<HActionType> => {\n if (this.debug) {\n const t0 = performance.now();\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n const t1 = performance.now();\n log(this.name, msgRender, `${t1 - t0} ms`, hsmls);\n return hsmls ?? [];\n } else {\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n return hsmls ?? [];\n }\n }\n\n /**\n * HSML action callback.\n */\n actionCb = (actionType: HActionType, data: HAttrOnData, event: Event): void => {\n data = (data?.constructor === Function)\n ? (data as HAttrOnDataFnc)(event)\n : data;\n if (data === undefined && event) {\n if (event instanceof CustomEvent) {\n data = event.detail;\n } else {\n data = formData(event) as any;\n // TODO middlewares for data processing\n // const middlewares: ((data: any, event: Event) => any)[] = [];\n // data = middlewares.reduce(\n // (data, middleware) => middleware(data, event),\n // data\n // );\n }\n }\n this._dispatchAction(actionType, data, event);\n }\n\n private _updateDom<HActionType extends string>(\n el: Element,\n hsml: HElements<HActionType>,\n ctx: HHandlerCtx<HActionType>\n ): void {\n if (this.debug) {\n const t0 = performance.now();\n hsmls2idomPatch(el, hsml, ctx);\n const t1 = performance.now();\n log(this.name, msgUpdate, `${t1 - t0} ms`, el);\n } else {\n hsmls2idomPatch(el, hsml, ctx);\n }\n }\n\n /**\n * Mount app to DOM element.\n *\n * @param e DOM element\n */\n mount = (e: Element | string | null): this => {\n const el = (typeof e === \"string\") ? document.getElementById(e) : e;\n if (el && (el as any)[HAPP]) {\n const a = (el as any)[HAPP] as HApp<State, HActionType>;\n a.umount();\n }\n if (el && !this.element) {\n (this as any).element = el;\n (el as any)[HAPP] = this;\n const hsmls = (this as any).render();\n this._updateDom<HActionType>(el, hsmls, this);\n this._dispatchAction(HAppActions.mount, this.element);\n }\n return this;\n }\n\n /**\n * Umount app to DOM element.\n */\n umount = (): this => {\n if (this.element) {\n this._dispatchAction(HAppActions.umount, this.element);\n if (this.element.hasAttribute(HAPP)) {\n this.element.removeAttribute(HAPP);\n }\n const aNodes = this.element.querySelectorAll(`[${HAPP}]`);\n for (let i = 0; i < aNodes.length; i++) {\n const a = (aNodes[i] as any).happ as HApp<State, HActionType>;\n a?.umount();\n }\n while (this.element.firstChild /*.hasChildNodes()*/) {\n this.element.removeChild(this.element.firstChild);\n }\n delete (this.element as any).happ;\n (this as any).element = undefined;\n }\n if (this._windowActionListener) {\n window.removeEventListener(HAppActions.action, this._windowActionListener);\n }\n return this;\n }\n\n /**\n * Update DOM element based on app state.\n */\n update = (): this => {\n if (this.element && !this._updateSched) {\n this._updateSched = schedule(() => {\n if (this.element) {\n const hsmls = this.render();\n this._updateDom<HActionType>(this.element, hsmls, this);\n }\n this._updateSched = undefined;\n });\n }\n return this;\n }\n\n toHsml = (): HElement<HActionType> => {\n if (this.element) {\n if (this._updateSched) {\n unschedule(this._updateSched);\n this._updateSched = undefined;\n } else {\n return [\"div\", { skip: true }];\n }\n }\n const hsmls = this.render();\n hsmls.push(\n (e: Element) => {\n if (!this.element) {\n (this as any).element = e;\n (e as any).happ = this;\n this._dispatchAction(HAppActions.mount, this.element);\n }\n });\n return [\"div\", hsmls];\n }\n\n toHtml = (): string => {\n return this.element ? this.element.outerHTML : \"\";\n }\n\n}\n\nfunction elementDispatchCustomEvent<HActionType extends string>(\n el: HTMLElement,\n type: HActionType,\n data: any\n) {\n el?.dispatchEvent(new CustomEvent(type, { detail: data }));\n (el as any)[`on${type}`]?.(new CustomEvent(type, { detail: data }));\n}\n\ntype FormDataInputValue = string | number | boolean | null | Array<string | number | boolean | null>;\n\ntype FormInputData = {\n name?: string;\n value: FormDataInputValue;\n valueString?: string;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\ntype FormData = {\n data: {\n [name: string]: FormDataInputValue;\n };\n validation: { [name: string]: string };\n valid: boolean;\n};\n\nexport type HFormInputData<Value = FormDataInputValue> = {\n name?: string;\n value: Value;\n valueString?: string | null;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\nexport type HFormData<Data> = {\n data: Data;\n validation: { [name in keyof Data]?: string };\n valid?: boolean;\n};\n\nfunction formData(e: Event): FormData | FormInputData | undefined {\n const el = e.target as HTMLElement;\n switch (el.nodeName) {\n case \"FORM\":\n (e as Event).preventDefault();\n const form: FormData = {\n data: {},\n validation: {},\n valid: true\n };\n const els = (el as HTMLFormElement).elements;\n for (let i = 0; i < els.length; i++) {\n const inputData = formInputData(els[i]);\n if (inputData && inputData.name) {\n const formData = form.data;\n const name = inputData.name;\n const value = inputData.value;\n if (formData[name] === undefined) {\n formData[name] = value;\n } else if (typeof formData[name] === \"string\" || formData[name] instanceof String) {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value as string];\n }\n } else if (formData[name] instanceof Array) {\n if (value instanceof Array) {\n formData[name] = (formData[name] as Array<any>).concat(value);\n } else {\n (formData[name] as Array<any>).push(value);\n }\n } else {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value];\n }\n }\n if (formData[name] instanceof Array) {\n formData[name] = (formData[name] as Array<any>)\n .filter(d => d !== null);\n if ((els[i] as HTMLInputElement).type === \"radio\") {\n formData[name] = (formData[name] as Array<any>).length\n ? (formData[name] as Array<any>)[0]\n : null;\n }\n }\n if (inputData.validation) {\n form.validation[name] = inputData.validation;\n }\n if (!inputData.valid) {\n form.valid = false;\n }\n }\n }\n return form;\n default:\n return formInputData(el);\n }\n}\n\nfunction formInputData(el: Element): FormInputData | undefined {\n // Client-side form validation\n // https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation\n const vel = el as HTMLInputElement;\n if (vel.willValidate) {\n let valid = true;\n for (const key in vel.validity) {\n if (key !== \"customError\" && key !== \"valid\") {\n if ((vel.validity as any)[key]) {\n const msgs = (vel as any)[\"validation\"];\n if (msgs) {\n const msg = (msgs as any)[key];\n if (msg) {\n vel.setCustomValidity(msg);\n // vel.reportValidity();\n valid = false;\n break;\n } else {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n break;\n }\n }\n }\n }\n }\n if (valid) {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n }\n }\n\n let data: FormInputData | undefined;\n switch (el.nodeName) {\n case \"INPUT\":\n const iel = el as HTMLInputElement;\n switch (iel.type) {\n case \"text\":\n case \"hidden\":\n case \"password\":\n case \"email\":\n case \"search\":\n case \"url\":\n case \"tel\":\n case \"color\":\n case \"submit\":\n case \"button\":\n data = {\n name: iel.name,\n value: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"number\":\n case \"range\":\n data = {\n name: iel.name,\n value: iel.valueAsNumber,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"datetime-local\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: isNaN(iel.valueAsNumber)\n ? null\n : new Date(iel.valueAsNumber),\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: iel.valueAsDate,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"radio\":\n data = {\n name: iel.name,\n value: iel.checked ? iel.value : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"checkbox\":\n if (iel.value === \"on\") { // value not set in element\n data = {\n name: iel.name,\n value: iel.checked,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n } else {\n data = {\n name: iel.name,\n value: iel.checked ? String(iel.value) : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n }\n break;\n case \"file\":\n const files = (iel as any).files as FileList;\n const value: any = files.length === 1 ? files[0] : files;\n data = {\n name: iel.name,\n value,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n }\n break;\n case \"SELECT\":\n const sel = el as HTMLSelectElement;\n if (sel.multiple) {\n const values = Array.from(sel.selectedOptions).map(o => o.value);\n data = {\n name: sel.name,\n value: values,\n valueString: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n } else {\n data = {\n name: sel.name,\n value: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n }\n break;\n case \"TEXTAREA\":\n const tel = el as HTMLTextAreaElement;\n data = {\n name: tel.name,\n value: tel.value,\n validation: tel.validationMessage,\n valid: tel.validity.valid\n };\n break;\n case \"BUTTON\":\n const bel = el as HTMLButtonElement;\n data = {\n name: bel.name,\n value: bel.value,\n validation: bel.validationMessage,\n valid: bel.validity.valid\n };\n break;\n }\n return data;\n}\n"],"names":["$fe5fa9c04fc86188$var$log","console","log","$fe5fa9c04fc86188$var$error","error","$fe5fa9c04fc86188$var$warn","warn","$fe5fa9c04fc86188$export$3dcd9fad60135c2c","HAppActions","$fe5fa9c04fc86188$export$3d736e925369e0e4","HDispatchScopes","$fe5fa9c04fc86188$var$schedule","window","requestAnimationFrame","callback","setTimeout","$fe5fa9c04fc86188$var$unschedule","cancelAnimationFrame","handle","clearTimeout","$fe5fa9c04fc86188$var$msgAction","$fe5fa9c04fc86188$var$msgDispatch","$fe5fa9c04fc86188$var$msgRender","$fe5fa9c04fc86188$var$HAPP","$fe5fa9c04fc86188$export$eb8950696418f795","hAppI","$fe5fa9c04fc86188$export$8cfef5dc37c46888","state","view","dispatcher","element","debug","name","$fe5fa9c04fc86188$export$1cfc54b3834d3c50","customElements","define","HTMLElement","observedAttributes","attributes","connectedCallback","this","attachShadow","mode","_happel","mount","shadowRoot","disconnectedCallback","umount","adoptedCallback","update","attributeChangedCallback","attrName","oldVal","newVal","dispatch","attribute","constructor","super","undefined","customElement","_dispatchAction","type","data","event","scope","t0","performance","now","_dispatch","t1","e","_dispatchElement","_dispatchWindow","$fe5fa9c04fc86188$var$elementDispatchCustomEvent","action","dispatchEvent","CustomEvent","detail","windowActionListen","_windowActionListener","addEventListener","_updateDom","el","hsml","ctx","$hrCkK","hsmls2idomPatch","refs","$fe5fa9c04fc86188$var$__awaiter","render","hsmls","actionCb","actionType","Function","target","nodeName","preventDefault","form","validation","valid","els","elements","i","length","inputData","$fe5fa9c04fc86188$var$formInputData","formData","value","String","Array","concat","push","filter","d","$fe5fa9c04fc86188$var$formData","document","getElementById","hasAttribute","removeAttribute","aNodes","querySelectorAll","a","happ","firstChild","removeChild","removeEventListener","_updateSched","toHsml","skip","toHtml","outerHTML","init","then","_b","_a","call","vel","willValidate","key","validity","msgs","msg","setCustomValidity","iel","validationMessage","valueAsNumber","valueString","valueNumber","isNaN","valueDate","Date","valueAsDate","checked","files","sel","multiple","values","from","selectedOptions","map","o","tel","bel"],"version":3,"file":"hsml-app-form-validation_demo.1ef7fa68.js.map"}
@@ -0,0 +1,2 @@
1
+ !function(){function t(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i={},n={},a=e.parcelRequirede31;null==a&&((a=function(t){if(t in i)return i[t].exports;if(t in n){var e=n[t];delete n[t];var a={id:t,exports:{}};return i[t]=a,e.call(a.exports,a,a.exports),a.exports}var s=new Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}).register=function(t,e){n[t]=e},e.parcelRequirede31=a),a.register("es1PA",(function(e,i){t(e.exports,"HAppActions",(function(){return r}),(function(t){return r=t})),t(e.exports,"HDispatchScopes",(function(){return c}),(function(t){return c=t})),t(e.exports,"happ",(function(){return y}),(function(t){return y=t})),t(e.exports,"HApp",(function(){return A}),(function(t){return A=t})),t(e.exports,"happel",(function(){return g}),(function(t){return g=t}));var n=a("8IJ2T"),s=function(t,e,i,n){return new(i||(i=Promise))((function(a,s){function o(t){try{d(n.next(t))}catch(t){s(t)}}function l(t){try{d(n.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?a(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,l)}d((n=n.apply(t,e||[])).next())}))};const o=console.log,l=console.error,d=console.warn;var r,u,c,h;(u=r||(r={})).init="happ-init",u.mount="happ-mount",u.umount="happ-umount",u.action="happ-action",u.attribute="happ-attribute",(h=c||(c={})).element="element",h.window="window";const v=window.requestAnimationFrame||function(t){window.setTimeout(t,1e3/60)},m=window.cancelAnimationFrame||function(t){window.clearTimeout(t)},p="action:",f="dispatch:",w="render:",b="happ";function y(t){return new A(t.state,t.view,t.dispatcher,t.element,t.debug,t.name)}function g(t){customElements.define(`${b}-${t.name}`,class extends HTMLElement{static get observedAttributes(){return t.attributes}connectedCallback(){this.attachShadow({mode:"open"}),this._happel.mount(this.shadowRoot)}disconnectedCallback(){this._happel.umount()}adoptedCallback(){this._happel.update()}attributeChangedCallback(t,e,i){this._happel.dispatch(r.attribute,{attrName:t,oldVal:e,newVal:i})}constructor(){super(),this._happel=new A(t.state,t.view,t.dispatcher,void 0,t.debug,t.name,t.attributes),this._happel.customElement=this}})}class A{_dispatchAction(t,e,i,n){return s(this,void 0,void 0,(function*(){if(this.debug){o(this.name,p,{type:t,data:e,event:i});const a=performance.now();yield this._dispatch(t,e,i,n);const s=performance.now();o(this.name,f,s-a+" ms",this.state)}else yield this._dispatch(t,e,i,n)}))}_dispatch(t,e,i,n){return s(this,void 0,void 0,(function*(){if(!n){try{yield this.dispatcher({type:t,data:e,event:i},this.state,this.dispatch)}catch(t){l(this.name,f,t)}this.update()}"element"===n&&this._dispatchElement(t,e),"window"===n&&this._dispatchWindow(t,e)}))}_dispatchElement(t,e){return s(this,void 0,void 0,(function*(){this.customElement&&_(this.customElement,r.action,{type:t,data:e}),!this.customElement&&this.element&&_(this.element,r.action,{type:t,data:e})}))}_dispatchWindow(t,e){return s(this,void 0,void 0,(function*(){window.dispatchEvent(new CustomEvent(r.action,{detail:{type:t,data:e}}))}))}windowActionListen(){this._windowActionListener?d("windowEventListener already added"):(this._windowActionListener=t=>{const e=t.detail;this._dispatchAction(r.action,e)},window.addEventListener(r.action,this._windowActionListener))}_updateDom(t,e,i){if(this.debug){const a=performance.now();(0,n.hsmls2idomPatch)(t,e,i);const s=performance.now();o(this.name,"update:",s-a+" ms",t)}else(0,n.hsmls2idomPatch)(t,e,i)}constructor(t,e,i,n,a,d,u){this.refs={},this.dispatch=(t,e,i)=>s(this,void 0,void 0,(function*(){return this._dispatchAction(t,e,void 0,i)})),this.render=()=>{if(this.debug){const t=performance.now();let e;try{e=this.view(this.state)}catch(t){l(this.name,w,t)}const i=performance.now();return o(this.name,w,i-t+" ms",e),null!=e?e:[]}{let t;try{t=this.view(this.state)}catch(t){l(this.name,w,t)}return null!=t?t:[]}},this.actionCb=(t,e,i)=>{void 0===(e=(null==e?void 0:e.constructor)===Function?e(i):e)&&i&&(e=i instanceof CustomEvent?i.detail:function(t){const e=t.target;if("FORM"===e.nodeName){t.preventDefault();const i={data:{},validation:{},valid:!0},n=e.elements;for(let t=0;t<n.length;t++){const e=E(n[t]);if(e&&e.name){const a=i.data,s=e.name,o=e.value;void 0===a[s]?a[s]=o:"string"==typeof a[s]||a[s]instanceof String?a[s]=o instanceof Array?[a[s],...o]:[a[s],o]:a[s]instanceof Array?o instanceof Array?a[s]=a[s].concat(o):a[s].push(o):a[s]=o instanceof Array?[a[s],...o]:[a[s],o],a[s]instanceof Array&&(a[s]=a[s].filter((t=>null!==t)),"radio"===n[t].type&&(a[s]=a[s].length?a[s][0]:null)),e.validation&&(i.validation[s]=e.validation),e.valid||(i.valid=!1)}}return i}return E(e)}(i)),this._dispatchAction(t,e,i)},this.mount=t=>{const e="string"==typeof t?document.getElementById(t):t;if(e&&e[b]){e[b].umount()}if(e&&!this.element){this.element=e,e[b]=this;const t=this.render();this._updateDom(e,t,this),this._dispatchAction(r.mount,this.element)}return this},this.umount=()=>{if(this.element){this._dispatchAction(r.umount,this.element),this.element.hasAttribute(b)&&this.element.removeAttribute(b);const t=this.element.querySelectorAll(`[${b}]`);for(let e=0;e<t.length;e++){const i=t[e].happ;null==i||i.umount()}for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);delete this.element.happ,this.element=void 0}return this._windowActionListener&&window.removeEventListener(r.action,this._windowActionListener),this},this.update=()=>(this.element&&!this._updateSched&&(this._updateSched=v((()=>{if(this.element){const t=this.render();this._updateDom(this.element,t,this)}this._updateSched=void 0}))),this),this.toHsml=()=>{if(this.element){if(!this._updateSched)return["div",{skip:!0}];m(this._updateSched),this._updateSched=void 0}const t=this.render();return t.push((t=>{this.element||(this.element=t,t.happ=this,this._dispatchAction(r.mount,this.element))})),["div",t]},this.toHtml=()=>this.element?this.element.outerHTML:"",this.debug=null!=a&&a,this.name=null!=d?d:b,this.attributes=null!=u?u:[],this.state=t(),this.view=e,this.dispatcher=null!=i?i:t=>s(this,void 0,void 0,(function*(){return o(this.name,p,t.type,t.data)})),this._dispatchAction(r.init,this).then((()=>n&&this.mount(n)))}}function _(t,e,i){var n,a;null==t||t.dispatchEvent(new CustomEvent(e,{detail:i})),null===(a=(n=t)[`on${e}`])||void 0===a||a.call(n,new CustomEvent(e,{detail:i}))}function E(t){const e=t;if(e.willValidate){let t=!0;for(const i in e.validity)if("customError"!==i&&"valid"!==i&&e.validity[i]){const n=e.validation;if(n){const a=n[i];if(a){e.setCustomValidity(a),t=!1;break}e.setCustomValidity("");break}}t&&e.setCustomValidity("")}let i;switch(t.nodeName){case"INPUT":const e=t;switch(e.type){case"text":case"hidden":case"password":case"email":case"search":case"url":case"tel":case"color":case"submit":case"button":i={name:e.name,value:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"number":case"range":i={name:e.name,value:e.valueAsNumber,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"datetime-local":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:isNaN(e.valueAsNumber)?null:new Date(e.valueAsNumber),validation:e.validationMessage,valid:e.validity.valid};break;case"date":case"month":case"time":case"week":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:e.valueAsDate,validation:e.validationMessage,valid:e.validity.valid};break;case"radio":i={name:e.name,value:e.checked?e.value:null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"checkbox":i="on"===e.value?{name:e.name,value:e.checked,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}:{name:e.name,value:e.checked?String(e.value):null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"file":const t=e.files,n=1===t.length?t[0]:t;i={name:e.name,value:n,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}}break;case"SELECT":const n=t;if(n.multiple){const t=Array.from(n.selectedOptions).map((t=>t.value));i={name:n.name,value:t,valueString:n.value,validation:n.validationMessage,valid:n.validity.valid}}else i={name:n.name,value:n.value,validation:n.validationMessage,valid:n.validity.valid};break;case"TEXTAREA":const a=t;i={name:a.name,value:a.value,validation:a.validationMessage,valid:a.validity.valid};break;case"BUTTON":const s=t;i={name:s.name,value:s.value,validation:s.validationMessage,valid:s.validity.valid}}return i}}))}();
2
+ //# sourceMappingURL=hsml-app-form-validation_demo.81fb94b2.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/hsml-app.ts"],"sourcesContent":["import { HAttrOnData, HAttrOnDataFnc, HElement, HElements, HHandlerCtx } from \"./hsml\";\nimport { hsmls2idomPatch } from \"./hsml-idom\";\n\nconst log = console.log;\nconst error = console.error;\nconst warn = console.warn;\n\nexport type HState<State> = () => State;\n\nexport type HView<State, HActionType extends string> = (\n state: State\n) => HElements<HActionType>;\n\nexport type HView1<State, HActionType extends string> = (\n state: State\n) => HElement<HActionType>;\n\nexport type HAppAction =\n | \"happ-init\"\n | \"happ-mount\"\n | \"happ-umount\"\n | \"happ-action\"\n | \"happ-attribute\";\n\nexport enum HAppActions {\n init = \"happ-init\",\n mount = \"happ-mount\",\n umount = \"happ-umount\",\n action = \"happ-action\",\n attribute = \"happ-attribute\"\n}\n\nexport interface HAction<HActionType extends string> {\n type: HActionType;\n data?: any;\n event?: Event;\n}\n\nexport type HDispatchScope =\n | \"element\"\n | \"window\";\n\nexport enum HDispatchScopes {\n element = \"element\",\n window = \"window\"\n}\n\nexport type HDispatch<HActionType extends string> = (\n type: HAction<HActionType>[\"type\"],\n data?: HAction<HActionType>[\"data\"],\n scope?: HDispatchScope | HDispatchScopes\n) => Promise<void>;\n\nexport type HDispatcher<State, HActionType extends string> = (\n // this: HApp<State, HActionType>,\n action: HAction<HActionType | HAppAction | HAppActions>,\n state: State,\n dispatch: HDispatch<HActionType>\n) => Promise<void>;\n\nconst schedule = window.requestAnimationFrame ||\n // window.webkitRequestAnimationFrame ||\n // (window as any).mozRequestAnimationFrame ||\n // (window as any).oRequestAnimationFrame ||\n // (window as any).msRequestAnimationFrame ||\n function (callback: Function) { window.setTimeout(callback, 1000 / 60); };\n\nconst unschedule = window.cancelAnimationFrame ||\n // window.webkitCancelAnimationFrame ||\n // (window as any).mozCancelAnimationFrame ||\n // (window as any).oCancelAnimationFrame ||\n // (window as any).msCancelAnimationFrame ||\n function (handle: number) { window.clearTimeout(handle); };\n\nconst msgAction = \"action:\";\nconst msgDispatch = \"dispatch:\";\nconst msgRender = \"render:\";\nconst msgUpdate = \"update:\";\n\nconst HAPP = \"happ\";\n\nexport interface HAppI<State, HActionType extends string> {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element?: Element | string | null;\n debug?: boolean;\n name?: string;\n attributes?: string[];\n}\n\n/**\n * HApp definition\n *\n * @param hAppI HApp definition\n * @returns HApp instance\n */\nexport function happ<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element: Element | string | null;\n debug?: boolean;\n name?: string;\n // attributes?: string[];\n}) {\n return new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n hAppI.element,\n hAppI.debug,\n hAppI.name\n // hAppI!.attributes\n );\n}\n\n// export type Class<T = object> = new (...args: any[]) => T;\n\n// export function happi<State, HActionType extends string>(\n// hAppI: Class<HAppI<State, HActionType>>,\n// element?: Element | string | null,\n// debug? boolean,\n// name?: string,\n// attributes: string[]\n// ) {\n// const hapi = new hAppI();\n// return new HApp<State, HActionType>(\n// hapi.state,\n// hapi.view,\n// hapi.dispatcher,\n// element,\n// debug\n// );\n// }\n\n// HAppEl\n\n/**\n * HApp custom HTML element definition.\n *\n * @param hAppI HApp definition\n */\nexport function happel<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n /** Element suffix name, element name patern is `happ-${name}` */\n name: string;\n /** Element attribute list */\n attributes: string[];\n debug?: boolean;\n}): void {\n customElements.define(\n `${HAPP}-${hAppI.name}`,\n class HAppElement extends HTMLElement {\n static get observedAttributes() {\n return hAppI.attributes;\n }\n\n private _happel: HApp<State, HActionType>;\n\n constructor() {\n super();\n this._happel = new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n undefined,\n hAppI.debug,\n hAppI.name,\n hAppI.attributes\n );\n (this._happel as any).customElement = this;\n }\n\n connectedCallback() {\n // this._happel.mount(this);\n this.attachShadow({ mode: \"open\" });\n this._happel.mount(this.shadowRoot as any);\n }\n\n disconnectedCallback() {\n this._happel.umount();\n }\n\n adoptedCallback() {\n this._happel.update();\n }\n\n attributeChangedCallback(\n attrName: string,\n oldVal: string | null,\n newVal: string | null\n ) {\n this._happel.dispatch(\n HAppActions.attribute as any,\n { attrName, oldVal, newVal });\n }\n }\n );\n}\n\n/**\n * HSML App\n */\nexport class HApp<State, HActionType extends string> implements HHandlerCtx<HActionType> {\n\n readonly state: State;\n readonly view: HView<State, HActionType>;\n readonly dispatcher: HDispatcher<State, HActionType>;\n\n debug: boolean;\n\n readonly name: string;\n readonly attributes: string[];\n\n readonly element?: HTMLElement;\n readonly refs: { [key: string]: HTMLElement } = {};\n\n readonly customElement?: HTMLElement; // happ custom html element\n\n private _updateSched?: number;\n\n // private _onDispatch?: HDispatcher<State>;\n\n private _windowActionListener?: (event: Event) => void;\n\n constructor(\n state: HState<State>,\n view: HView<State, HActionType>,\n dispatcher?: HDispatcher<State, HActionType>,\n element?: Element | string | null,\n debug?: boolean ,\n name?: string,\n attributes?: string[]\n ) {\n this.debug = debug ?? false;\n this.name = name ?? HAPP;\n this.attributes = attributes ?? [];\n this.state = state();\n this.view = view;\n this.dispatcher = dispatcher ?? (async (a) => log(this.name, msgAction, a.type, a.data));\n this._dispatchAction(HAppActions.init, this).then(() => element && this.mount(element));\n }\n\n /**\n * Dispatch app action.\n */\n dispatch: HDispatch<HActionType> = async (\n type: HActionType,\n data?: any,\n scope?: HDispatchScope\n ): Promise<void> => {\n return this._dispatchAction(type, data, undefined, scope);\n }\n\n // onDispatch = (dispatcher: HDispatcher<State>): this => {\n // this._onDispatch = dispatcher;\n // return this;\n // }\n\n private async _dispatchAction(\n type: HActionType | HAppAction | HAppActions,\n data?: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n if (this.debug) {\n log(this.name, msgAction, { type, data, event });\n const t0 = performance.now();\n await this._dispatch(type, data, event, scope);\n const t1 = performance.now();\n log(this.name, msgDispatch, `${t1 - t0} ms`, this.state);\n } else {\n await this._dispatch(type, data, event, scope);\n }\n }\n\n private async _dispatch(\n type: HActionType | HAppAction | HAppActions,\n data: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n if (!scope) {\n try {\n await this.dispatcher(\n { type: type as HActionType, data, event },\n this.state,\n this.dispatch\n );\n } catch (e) {\n error(this.name, msgDispatch, e);\n }\n this.update();\n }\n scope === \"element\" && this._dispatchElement(type, data);\n scope === \"window\" && this._dispatchWindow(type, data);\n }\n\n private async _dispatchElement(\n type: HActionType | HAppAction | HAppActions,\n data?: any\n ): Promise<void> {\n this.customElement && elementDispatchCustomEvent(this.customElement, HAppActions.action, { type, data });\n !this.customElement && this.element && elementDispatchCustomEvent(this.element, HAppActions.action, { type, data });\n // this._onDispatch?.({ type, data, event }, this.state, this.dispatch);\n }\n\n private async _dispatchWindow(\n type: HActionType | HAppAction | HAppActions,\n data?: any): Promise<void> {\n window.dispatchEvent(new CustomEvent(HAppActions.action, { detail: { type, data } }));\n }\n\n /**\n * Window action listen and route actions to dispatcher.\n * Call this method on app mount action.\n * Listening will be stopped on app umount automatically.\n */\n windowActionListen() {\n if (!this._windowActionListener) {\n this._windowActionListener = (event: Event) => {\n const action = (event as CustomEvent).detail as HAction<HActionType>;\n this._dispatchAction(HAppActions.action, action);\n };\n window.addEventListener(HAppActions.action, this._windowActionListener);\n } else {\n warn(\"windowEventListener already added\");\n }\n }\n\n /**\n * Render HSML based on app state.\n */\n render = (): HElements<HActionType> => {\n if (this.debug) {\n const t0 = performance.now();\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n const t1 = performance.now();\n log(this.name, msgRender, `${t1 - t0} ms`, hsmls);\n return hsmls ?? [];\n } else {\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n return hsmls ?? [];\n }\n }\n\n /**\n * HSML action callback.\n */\n actionCb = (actionType: HActionType, data: HAttrOnData, event: Event): void => {\n data = (data?.constructor === Function)\n ? (data as HAttrOnDataFnc)(event)\n : data;\n if (data === undefined && event) {\n if (event instanceof CustomEvent) {\n data = event.detail;\n } else {\n data = formData(event) as any;\n // TODO middlewares for data processing\n // const middlewares: ((data: any, event: Event) => any)[] = [];\n // data = middlewares.reduce(\n // (data, middleware) => middleware(data, event),\n // data\n // );\n }\n }\n this._dispatchAction(actionType, data, event);\n }\n\n private _updateDom<HActionType extends string>(\n el: Element,\n hsml: HElements<HActionType>,\n ctx: HHandlerCtx<HActionType>\n ): void {\n if (this.debug) {\n const t0 = performance.now();\n hsmls2idomPatch(el, hsml, ctx);\n const t1 = performance.now();\n log(this.name, msgUpdate, `${t1 - t0} ms`, el);\n } else {\n hsmls2idomPatch(el, hsml, ctx);\n }\n }\n\n /**\n * Mount app to DOM element.\n *\n * @param e DOM element\n */\n mount = (e: Element | string | null): this => {\n const el = (typeof e === \"string\") ? document.getElementById(e) : e;\n if (el && (el as any)[HAPP]) {\n const a = (el as any)[HAPP] as HApp<State, HActionType>;\n a.umount();\n }\n if (el && !this.element) {\n (this as any).element = el;\n (el as any)[HAPP] = this;\n const hsmls = (this as any).render();\n this._updateDom<HActionType>(el, hsmls, this);\n this._dispatchAction(HAppActions.mount, this.element);\n }\n return this;\n }\n\n /**\n * Umount app to DOM element.\n */\n umount = (): this => {\n if (this.element) {\n this._dispatchAction(HAppActions.umount, this.element);\n if (this.element.hasAttribute(HAPP)) {\n this.element.removeAttribute(HAPP);\n }\n const aNodes = this.element.querySelectorAll(`[${HAPP}]`);\n for (let i = 0; i < aNodes.length; i++) {\n const a = (aNodes[i] as any).happ as HApp<State, HActionType>;\n a?.umount();\n }\n while (this.element.firstChild /*.hasChildNodes()*/) {\n this.element.removeChild(this.element.firstChild);\n }\n delete (this.element as any).happ;\n (this as any).element = undefined;\n }\n if (this._windowActionListener) {\n window.removeEventListener(HAppActions.action, this._windowActionListener);\n }\n return this;\n }\n\n /**\n * Update DOM element based on app state.\n */\n update = (): this => {\n if (this.element && !this._updateSched) {\n this._updateSched = schedule(() => {\n if (this.element) {\n const hsmls = this.render();\n this._updateDom<HActionType>(this.element, hsmls, this);\n }\n this._updateSched = undefined;\n });\n }\n return this;\n }\n\n toHsml = (): HElement<HActionType> => {\n if (this.element) {\n if (this._updateSched) {\n unschedule(this._updateSched);\n this._updateSched = undefined;\n } else {\n return [\"div\", { skip: true }];\n }\n }\n const hsmls = this.render();\n hsmls.push(\n (e: Element) => {\n if (!this.element) {\n (this as any).element = e;\n (e as any).happ = this;\n this._dispatchAction(HAppActions.mount, this.element);\n }\n });\n return [\"div\", hsmls];\n }\n\n toHtml = (): string => {\n return this.element ? this.element.outerHTML : \"\";\n }\n\n}\n\nfunction elementDispatchCustomEvent<HActionType extends string>(\n el: HTMLElement,\n type: HActionType,\n data: any\n) {\n el?.dispatchEvent(new CustomEvent(type, { detail: data }));\n (el as any)[`on${type}`]?.(new CustomEvent(type, { detail: data }));\n}\n\ntype FormDataInputValue = string | number | boolean | null | Array<string | number | boolean | null>;\n\ntype FormInputData = {\n name?: string;\n value: FormDataInputValue;\n valueString?: string;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\ntype FormData = {\n data: {\n [name: string]: FormDataInputValue;\n };\n validation: { [name: string]: string };\n valid: boolean;\n};\n\nexport type HFormInputData<Value = FormDataInputValue> = {\n name?: string;\n value: Value;\n valueString?: string | null;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\nexport type HFormData<Data> = {\n data: Data;\n validation: { [name in keyof Data]?: string };\n valid?: boolean;\n};\n\nfunction formData(e: Event): FormData | FormInputData | undefined {\n const el = e.target as HTMLElement;\n switch (el.nodeName) {\n case \"FORM\":\n (e as Event).preventDefault();\n const form: FormData = {\n data: {},\n validation: {},\n valid: true\n };\n const els = (el as HTMLFormElement).elements;\n for (let i = 0; i < els.length; i++) {\n const inputData = formInputData(els[i]);\n if (inputData && inputData.name) {\n const formData = form.data;\n const name = inputData.name;\n const value = inputData.value;\n if (formData[name] === undefined) {\n formData[name] = value;\n } else if (typeof formData[name] === \"string\" || formData[name] instanceof String) {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value as string];\n }\n } else if (formData[name] instanceof Array) {\n if (value instanceof Array) {\n formData[name] = (formData[name] as Array<any>).concat(value);\n } else {\n (formData[name] as Array<any>).push(value);\n }\n } else {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value];\n }\n }\n if (formData[name] instanceof Array) {\n formData[name] = (formData[name] as Array<any>)\n .filter(d => d !== null);\n if ((els[i] as HTMLInputElement).type === \"radio\") {\n formData[name] = (formData[name] as Array<any>).length\n ? (formData[name] as Array<any>)[0]\n : null;\n }\n }\n if (inputData.validation) {\n form.validation[name] = inputData.validation;\n }\n if (!inputData.valid) {\n form.valid = false;\n }\n }\n }\n return form;\n default:\n return formInputData(el);\n }\n}\n\nfunction formInputData(el: Element): FormInputData | undefined {\n // Client-side form validation\n // https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation\n const vel = el as HTMLInputElement;\n if (vel.willValidate) {\n let valid = true;\n for (const key in vel.validity) {\n if (key !== \"customError\" && key !== \"valid\") {\n if ((vel.validity as any)[key]) {\n const msgs = (vel as any)[\"validation\"];\n if (msgs) {\n const msg = (msgs as any)[key];\n if (msg) {\n vel.setCustomValidity(msg);\n // vel.reportValidity();\n valid = false;\n break;\n } else {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n break;\n }\n }\n }\n }\n }\n if (valid) {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n }\n }\n\n let data: FormInputData | undefined;\n switch (el.nodeName) {\n case \"INPUT\":\n const iel = el as HTMLInputElement;\n switch (iel.type) {\n case \"text\":\n case \"hidden\":\n case \"password\":\n case \"email\":\n case \"search\":\n case \"url\":\n case \"tel\":\n case \"color\":\n case \"submit\":\n case \"button\":\n data = {\n name: iel.name,\n value: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"number\":\n case \"range\":\n data = {\n name: iel.name,\n value: iel.valueAsNumber,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"datetime-local\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: isNaN(iel.valueAsNumber)\n ? null\n : new Date(iel.valueAsNumber),\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: iel.valueAsDate,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"radio\":\n data = {\n name: iel.name,\n value: iel.checked ? iel.value : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"checkbox\":\n if (iel.value === \"on\") { // value not set in element\n data = {\n name: iel.name,\n value: iel.checked,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n } else {\n data = {\n name: iel.name,\n value: iel.checked ? String(iel.value) : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n }\n break;\n case \"file\":\n const files = (iel as any).files as FileList;\n const value: any = files.length === 1 ? files[0] : files;\n data = {\n name: iel.name,\n value,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n }\n break;\n case \"SELECT\":\n const sel = el as HTMLSelectElement;\n if (sel.multiple) {\n const values = Array.from(sel.selectedOptions).map(o => o.value);\n data = {\n name: sel.name,\n value: values,\n valueString: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n } else {\n data = {\n name: sel.name,\n value: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n }\n break;\n case \"TEXTAREA\":\n const tel = el as HTMLTextAreaElement;\n data = {\n name: tel.name,\n value: tel.value,\n validation: tel.validationMessage,\n valid: tel.validity.valid\n };\n break;\n case \"BUTTON\":\n const bel = el as HTMLButtonElement;\n data = {\n name: bel.name,\n value: bel.value,\n validation: bel.validationMessage,\n valid: bel.validity.valid\n };\n break;\n }\n return data;\n}\n"],"names":["$a85519cc1b20a4af$var$log","console","log","$a85519cc1b20a4af$var$error","error","$a85519cc1b20a4af$var$warn","warn","$a85519cc1b20a4af$export$3dcd9fad60135c2c","HAppActions","$a85519cc1b20a4af$export$3d736e925369e0e4","HDispatchScopes","$a85519cc1b20a4af$var$schedule","window","requestAnimationFrame","callback","setTimeout","$a85519cc1b20a4af$var$unschedule","cancelAnimationFrame","handle","clearTimeout","$a85519cc1b20a4af$var$msgAction","$a85519cc1b20a4af$var$msgDispatch","$a85519cc1b20a4af$var$msgRender","$a85519cc1b20a4af$var$HAPP","$a85519cc1b20a4af$export$eb8950696418f795","hAppI","$a85519cc1b20a4af$export$8cfef5dc37c46888","state","view","dispatcher","element","debug","name","$a85519cc1b20a4af$export$1cfc54b3834d3c50","customElements","define","HTMLElement","observedAttributes","attributes","connectedCallback","this","attachShadow","mode","_happel","mount","shadowRoot","disconnectedCallback","umount","adoptedCallback","update","attributeChangedCallback","attrName","oldVal","newVal","dispatch","attribute","constructor","super","undefined","customElement","_dispatchAction","type","data","event","scope","t0","performance","now","_dispatch","t1","e","_dispatchElement","_dispatchWindow","$a85519cc1b20a4af$var$elementDispatchCustomEvent","action","dispatchEvent","CustomEvent","detail","windowActionListen","_windowActionListener","addEventListener","_updateDom","el","hsml","ctx","$8IJ2T","hsmls2idomPatch","refs","$a85519cc1b20a4af$var$__awaiter","render","hsmls","actionCb","actionType","Function","target","nodeName","preventDefault","form","validation","valid","els","elements","i","length","inputData","$a85519cc1b20a4af$var$formInputData","formData","value","String","Array","concat","push","filter","d","$a85519cc1b20a4af$var$formData","document","getElementById","hasAttribute","removeAttribute","aNodes","querySelectorAll","a","happ","firstChild","removeChild","removeEventListener","_updateSched","toHsml","skip","toHtml","outerHTML","init","then","_b","_a","call","vel","willValidate","key","validity","msgs","msg","setCustomValidity","iel","validationMessage","valueAsNumber","valueString","valueNumber","isNaN","valueDate","Date","valueAsDate","checked","files","sel","multiple","values","from","selectedOptions","map","o","tel","bel"],"version":3,"file":"hsml-app-form-validation_demo.81fb94b2.js.map"}
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App Form</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-form-validation_demo.705c3b16.js"></script><script src="hsml-app-form-validation_demo.a6318a9a.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App Form</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-form-validation_demo.705c3b16.js"></script><script src="hsml-app-form-validation_demo.a6318a9a.js" nomodule defer></script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App Form</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-form_demo.9f5de7f9.js"></script><script src="hsml-app-form_demo.35253446.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App Form</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-form_demo.9f5de7f9.js"></script><script src="hsml-app-form_demo.35253446.js" nomodule defer></script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <div id="app"></div> <script type="module" src="hsml-app-test_demo.82e9b3aa.js"></script><script src="hsml-app-test_demo.84db225e.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <div id="app"></div> <script type="module" src="hsml-app-test_demo.82e9b3aa.js"></script><script src="hsml-app-test_demo.84db225e.js" nomodule defer></script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>hsml tictactoe demo</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-tictactoe_demo.84aaf792.js"></script><script src="hsml-app-tictactoe_demo.868e02e5.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>hsml tictactoe demo</title><link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"></head><body> <div id="app"></div> <script type="module" src="hsml-app-tictactoe_demo.84aaf792.js"></script><script src="hsml-app-tictactoe_demo.868e02e5.js" nomodule defer></script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App</title></head><body> <div id="app"></div> <script type="module" src="hsml-app_demo.fff12c58.js"></script><script src="hsml-app_demo.806aff82.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>PeRyL HSML App</title></head><body> <div id="app"></div> <script type="module" src="hsml-app_demo.fff12c58.js"></script><script src="hsml-app_demo.806aff82.js" nomodule defer></script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <happ-app></happ-app> <script type="module" src="hsml-appel_demo.7fcc74a6.js"></script><script src="hsml-appel_demo.1da052b6.js" nomodule defer></script> <script>document.getElementsByTagName("happ-app")[0].addEventListener("action",(function(e){console.log("EventListener action",e.detail)}));</script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <happ-app></happ-app> <script type="module" src="hsml-appel_demo.7fcc74a6.js"></script><script src="hsml-appel_demo.1da052b6.js" nomodule defer></script> <script>document.getElementsByTagName("happ-app")[0].addEventListener("action",(function(e){console.log("EventListener action",e.detail)}));</script> </body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.eea04196.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.97679c59.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <div id="app"></div> <script type="module" src="hsml-appi_demo.73f3689b.js"></script><script src="hsml-appi_demo.62af4432.js" nomodule defer></script> </body></html>
1
+ <!DOCTYPE html><html lang="en"><head><script nomodule defer src="hsml-app-form-validation_demo.81fb94b2.js"></script><script nomodule defer src="hsml-app-form-validation_demo.f7646688.js"></script><script type="module" src="hsml-app-form-validation_demo.1ef7fa68.js"></script><script type="module" src="hsml-app-form-validation_demo.e698b306.js"></script><meta charset="utf-8"><title>PeRyL hsml app demo</title></head><body> <h1>PeRyL hsml app demo</h1> <div id="app"></div> <script type="module" src="hsml-appi_demo.73f3689b.js"></script><script src="hsml-appi_demo.62af4432.js" nomodule defer></script> </body></html>
package/dist/hsml-app.js CHANGED
@@ -207,17 +207,17 @@ class HApp {
207
207
  }
208
208
  _dispatch(type, data, event, scope) {
209
209
  return __awaiter(this, void 0, void 0, function* () {
210
- try {
211
- if (!scope) {
210
+ if (!scope) {
211
+ try {
212
212
  yield this.dispatcher({ type: type, data, event }, this.state, this.dispatch);
213
- this.update();
214
213
  }
215
- scope === "element" && this._dispatchElement(type, data);
216
- scope === "window" && this._dispatchWindow(type, data);
217
- }
218
- catch (e) {
219
- error(this.name, msgDispatch, e);
214
+ catch (e) {
215
+ error(this.name, msgDispatch, e);
216
+ }
217
+ this.update();
220
218
  }
219
+ scope === "element" && this._dispatchElement(type, data);
220
+ scope === "window" && this._dispatchWindow(type, data);
221
221
  });
222
222
  }
223
223
  _dispatchElement(type, data) {
@@ -1 +1 @@
1
- {"version":3,"file":"hsml-app.js","sourceRoot":"","sources":["../src/hsml-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hsml-app.js","sourceRoot":"","sources":["../src/hsml-app.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peryl",
3
- "version": "1.5.13",
3
+ "version": "1.5.14",
4
4
  "description": "PeRyL TypeScript library and tools for rapid web development",
5
5
  "keywords": [
6
6
  "PeRyL",
package/src/hsml-app.ts CHANGED
@@ -283,20 +283,20 @@ export class HApp<State, HActionType extends string> implements HHandlerCtx<HAct
283
283
  event?: Event,
284
284
  scope?: HDispatchScope
285
285
  ): Promise<void> {
286
- try {
287
- if (!scope) {
286
+ if (!scope) {
287
+ try {
288
288
  await this.dispatcher(
289
289
  { type: type as HActionType, data, event },
290
290
  this.state,
291
291
  this.dispatch
292
292
  );
293
- this.update();
293
+ } catch (e) {
294
+ error(this.name, msgDispatch, e);
294
295
  }
295
- scope === "element" && this._dispatchElement(type, data);
296
- scope === "window" && this._dispatchWindow(type, data);
297
- } catch (e) {
298
- error(this.name, msgDispatch, e);
296
+ this.update();
299
297
  }
298
+ scope === "element" && this._dispatchElement(type, data);
299
+ scope === "window" && this._dispatchWindow(type, data);
300
300
  }
301
301
 
302
302
  private async _dispatchElement(
@@ -1,2 +0,0 @@
1
- function t(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,enumerable:!0,configurable:!0})}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i={},n={},a=e.parcelRequirede31;null==a&&((a=function(t){if(t in i)return i[t].exports;if(t in n){var e=n[t];delete n[t];var a={id:t,exports:{}};return i[t]=a,e.call(a.exports,a,a.exports),a.exports}var s=new Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}).register=function(t,e){n[t]=e},e.parcelRequirede31=a),a.register("lQ1yG",(function(e,i){t(e.exports,"HAppActions",(function(){return r}),(function(t){return r=t})),t(e.exports,"HDispatchScopes",(function(){return c}),(function(t){return c=t})),t(e.exports,"happ",(function(){return y}),(function(t){return y=t})),t(e.exports,"HApp",(function(){return A}),(function(t){return A=t})),t(e.exports,"happel",(function(){return g}),(function(t){return g=t}));var n=a("hrCkK"),s=function(t,e,i,n){return new(i||(i=Promise))((function(a,s){function o(t){try{d(n.next(t))}catch(t){s(t)}}function l(t){try{d(n.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?a(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,l)}d((n=n.apply(t,e||[])).next())}))};const o=console.log,l=console.error,d=console.warn;var r,u,c,h;(u=r||(r={})).init="happ-init",u.mount="happ-mount",u.umount="happ-umount",u.action="happ-action",u.attribute="happ-attribute",(h=c||(c={})).element="element",h.window="window";const v=window.requestAnimationFrame||function(t){window.setTimeout(t,1e3/60)},m=window.cancelAnimationFrame||function(t){window.clearTimeout(t)},p="action:",f="dispatch:",w="render:",b="happ";function y(t){return new A(t.state,t.view,t.dispatcher,t.element,t.debug,t.name)}function g(t){customElements.define(`${b}-${t.name}`,class extends HTMLElement{static get observedAttributes(){return t.attributes}connectedCallback(){this.attachShadow({mode:"open"}),this._happel.mount(this.shadowRoot)}disconnectedCallback(){this._happel.umount()}adoptedCallback(){this._happel.update()}attributeChangedCallback(t,e,i){this._happel.dispatch(r.attribute,{attrName:t,oldVal:e,newVal:i})}constructor(){super(),this._happel=new A(t.state,t.view,t.dispatcher,void 0,t.debug,t.name,t.attributes),this._happel.customElement=this}})}class A{_dispatchAction(t,e,i,n){return s(this,void 0,void 0,(function*(){if(this.debug){o(this.name,p,{type:t,data:e,event:i});const a=performance.now();yield this._dispatch(t,e,i,n);const s=performance.now();o(this.name,f,s-a+" ms",this.state)}else yield this._dispatch(t,e,i,n)}))}_dispatch(t,e,i,n){return s(this,void 0,void 0,(function*(){try{n||(yield this.dispatcher({type:t,data:e,event:i},this.state,this.dispatch),this.update()),"element"===n&&this._dispatchElement(t,e),"window"===n&&this._dispatchWindow(t,e)}catch(t){l(this.name,f,t)}}))}_dispatchElement(t,e){return s(this,void 0,void 0,(function*(){this.customElement&&_(this.customElement,r.action,{type:t,data:e}),!this.customElement&&this.element&&_(this.element,r.action,{type:t,data:e})}))}_dispatchWindow(t,e){return s(this,void 0,void 0,(function*(){window.dispatchEvent(new CustomEvent(r.action,{detail:{type:t,data:e}}))}))}windowActionListen(){this._windowActionListener?d("windowEventListener already added"):(this._windowActionListener=t=>{const e=t.detail;this._dispatchAction(r.action,e)},window.addEventListener(r.action,this._windowActionListener))}_updateDom(t,e,i){if(this.debug){const a=performance.now();(0,n.hsmls2idomPatch)(t,e,i);const s=performance.now();o(this.name,"update:",s-a+" ms",t)}else(0,n.hsmls2idomPatch)(t,e,i)}constructor(t,e,i,n,a,d,u){this.refs={},this.dispatch=(t,e,i)=>s(this,void 0,void 0,(function*(){return this._dispatchAction(t,e,void 0,i)})),this.render=()=>{if(this.debug){const t=performance.now();let e;try{e=this.view(this.state)}catch(t){l(this.name,w,t)}const i=performance.now();return o(this.name,w,i-t+" ms",e),null!=e?e:[]}{let t;try{t=this.view(this.state)}catch(t){l(this.name,w,t)}return null!=t?t:[]}},this.actionCb=(t,e,i)=>{void 0===(e=(null==e?void 0:e.constructor)===Function?e(i):e)&&i&&(e=i instanceof CustomEvent?i.detail:function(t){const e=t.target;if("FORM"===e.nodeName){t.preventDefault();const i={data:{},validation:{},valid:!0},n=e.elements;for(let t=0;t<n.length;t++){const e=E(n[t]);if(e&&e.name){const a=i.data,s=e.name,o=e.value;void 0===a[s]?a[s]=o:"string"==typeof a[s]||a[s]instanceof String?a[s]=o instanceof Array?[a[s],...o]:[a[s],o]:a[s]instanceof Array?o instanceof Array?a[s]=a[s].concat(o):a[s].push(o):a[s]=o instanceof Array?[a[s],...o]:[a[s],o],a[s]instanceof Array&&(a[s]=a[s].filter((t=>null!==t)),"radio"===n[t].type&&(a[s]=a[s].length?a[s][0]:null)),e.validation&&(i.validation[s]=e.validation),e.valid||(i.valid=!1)}}return i}return E(e)}(i)),this._dispatchAction(t,e,i)},this.mount=t=>{const e="string"==typeof t?document.getElementById(t):t;if(e&&e[b]){e[b].umount()}if(e&&!this.element){this.element=e,e[b]=this;const t=this.render();this._updateDom(e,t,this),this._dispatchAction(r.mount,this.element)}return this},this.umount=()=>{if(this.element){this._dispatchAction(r.umount,this.element),this.element.hasAttribute(b)&&this.element.removeAttribute(b);const t=this.element.querySelectorAll(`[${b}]`);for(let e=0;e<t.length;e++){const i=t[e].happ;null==i||i.umount()}for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);delete this.element.happ,this.element=void 0}return this._windowActionListener&&window.removeEventListener(r.action,this._windowActionListener),this},this.update=()=>(this.element&&!this._updateSched&&(this._updateSched=v((()=>{if(this.element){const t=this.render();this._updateDom(this.element,t,this)}this._updateSched=void 0}))),this),this.toHsml=()=>{if(this.element){if(!this._updateSched)return["div",{skip:!0}];m(this._updateSched),this._updateSched=void 0}const t=this.render();return t.push((t=>{this.element||(this.element=t,t.happ=this,this._dispatchAction(r.mount,this.element))})),["div",t]},this.toHtml=()=>this.element?this.element.outerHTML:"",this.debug=null!=a&&a,this.name=null!=d?d:b,this.attributes=null!=u?u:[],this.state=t(),this.view=e,this.dispatcher=null!=i?i:t=>s(this,void 0,void 0,(function*(){return o(this.name,p,t.type,t.data)})),this._dispatchAction(r.init,this).then((()=>n&&this.mount(n)))}}function _(t,e,i){var n,a;null==t||t.dispatchEvent(new CustomEvent(e,{detail:i})),null===(a=(n=t)[`on${e}`])||void 0===a||a.call(n,new CustomEvent(e,{detail:i}))}function E(t){const e=t;if(e.willValidate){let t=!0;for(const i in e.validity)if("customError"!==i&&"valid"!==i&&e.validity[i]){const n=e.validation;if(n){const a=n[i];if(a){e.setCustomValidity(a),t=!1;break}e.setCustomValidity("");break}}t&&e.setCustomValidity("")}let i;switch(t.nodeName){case"INPUT":const e=t;switch(e.type){case"text":case"hidden":case"password":case"email":case"search":case"url":case"tel":case"color":case"submit":case"button":i={name:e.name,value:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"number":case"range":i={name:e.name,value:e.valueAsNumber,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"datetime-local":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:isNaN(e.valueAsNumber)?null:new Date(e.valueAsNumber),validation:e.validationMessage,valid:e.validity.valid};break;case"date":case"month":case"time":case"week":i={name:e.name,value:e.value,valueNumber:isNaN(e.valueAsNumber)?null:e.valueAsNumber,valueDate:e.valueAsDate,validation:e.validationMessage,valid:e.validity.valid};break;case"radio":i={name:e.name,value:e.checked?e.value:null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"checkbox":i="on"===e.value?{name:e.name,value:e.checked,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}:{name:e.name,value:e.checked?String(e.value):null,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid};break;case"file":const t=e.files,n=1===t.length?t[0]:t;i={name:e.name,value:n,valueString:e.value,validation:e.validationMessage,valid:e.validity.valid}}break;case"SELECT":const n=t;if(n.multiple){const t=Array.from(n.selectedOptions).map((t=>t.value));i={name:n.name,value:t,valueString:n.value,validation:n.validationMessage,valid:n.validity.valid}}else i={name:n.name,value:n.value,validation:n.validationMessage,valid:n.validity.valid};break;case"TEXTAREA":const a=t;i={name:a.name,value:a.value,validation:a.validationMessage,valid:a.validity.valid};break;case"BUTTON":const s=t;i={name:s.name,value:s.value,validation:s.validationMessage,valid:s.validity.valid}}return i}}));
2
- //# sourceMappingURL=hsml-app-form-validation_demo.97679c59.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["src/hsml-app.ts"],"sourcesContent":["import { HAttrOnData, HAttrOnDataFnc, HElement, HElements, HHandlerCtx } from \"./hsml\";\nimport { hsmls2idomPatch } from \"./hsml-idom\";\n\nconst log = console.log;\nconst error = console.error;\nconst warn = console.warn;\n\nexport type HState<State> = () => State;\n\nexport type HView<State, HActionType extends string> = (\n state: State\n) => HElements<HActionType>;\n\nexport type HView1<State, HActionType extends string> = (\n state: State\n) => HElement<HActionType>;\n\nexport type HAppAction =\n | \"happ-init\"\n | \"happ-mount\"\n | \"happ-umount\"\n | \"happ-action\"\n | \"happ-attribute\";\n\nexport enum HAppActions {\n init = \"happ-init\",\n mount = \"happ-mount\",\n umount = \"happ-umount\",\n action = \"happ-action\",\n attribute = \"happ-attribute\"\n}\n\nexport interface HAction<HActionType extends string> {\n type: HActionType;\n data?: any;\n event?: Event;\n}\n\nexport type HDispatchScope =\n | \"element\"\n | \"window\";\n\nexport enum HDispatchScopes {\n element = \"element\",\n window = \"window\"\n}\n\nexport type HDispatch<HActionType extends string> = (\n type: HAction<HActionType>[\"type\"],\n data?: HAction<HActionType>[\"data\"],\n scope?: HDispatchScope | HDispatchScopes\n) => Promise<void>;\n\nexport type HDispatcher<State, HActionType extends string> = (\n // this: HApp<State, HActionType>,\n action: HAction<HActionType | HAppAction | HAppActions>,\n state: State,\n dispatch: HDispatch<HActionType>\n) => Promise<void>;\n\nconst schedule = window.requestAnimationFrame ||\n // window.webkitRequestAnimationFrame ||\n // (window as any).mozRequestAnimationFrame ||\n // (window as any).oRequestAnimationFrame ||\n // (window as any).msRequestAnimationFrame ||\n function (callback: Function) { window.setTimeout(callback, 1000 / 60); };\n\nconst unschedule = window.cancelAnimationFrame ||\n // window.webkitCancelAnimationFrame ||\n // (window as any).mozCancelAnimationFrame ||\n // (window as any).oCancelAnimationFrame ||\n // (window as any).msCancelAnimationFrame ||\n function (handle: number) { window.clearTimeout(handle); };\n\nconst msgAction = \"action:\";\nconst msgDispatch = \"dispatch:\";\nconst msgRender = \"render:\";\nconst msgUpdate = \"update:\";\n\nconst HAPP = \"happ\";\n\nexport interface HAppI<State, HActionType extends string> {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element?: Element | string | null;\n debug?: boolean;\n name?: string;\n attributes?: string[];\n}\n\n/**\n * HApp definition\n *\n * @param hAppI HApp definition\n * @returns HApp instance\n */\nexport function happ<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n element: Element | string | null;\n debug?: boolean;\n name?: string;\n // attributes?: string[];\n}) {\n return new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n hAppI.element,\n hAppI.debug,\n hAppI.name\n // hAppI!.attributes\n );\n}\n\n// export type Class<T = object> = new (...args: any[]) => T;\n\n// export function happi<State, HActionType extends string>(\n// hAppI: Class<HAppI<State, HActionType>>,\n// element?: Element | string | null,\n// debug? boolean,\n// name?: string,\n// attributes: string[]\n// ) {\n// const hapi = new hAppI();\n// return new HApp<State, HActionType>(\n// hapi.state,\n// hapi.view,\n// hapi.dispatcher,\n// element,\n// debug\n// );\n// }\n\n// HAppEl\n\n/**\n * HApp custom HTML element definition.\n *\n * @param hAppI HApp definition\n */\nexport function happel<State, HActionType extends string>(hAppI: {\n state: HState<State>;\n view: HView<State, HActionType>;\n dispatcher: HDispatcher<State, HActionType>;\n /** Element suffix name, element name patern is `happ-${name}` */\n name: string;\n /** Element attribute list */\n attributes: string[];\n debug?: boolean;\n}): void {\n customElements.define(\n `${HAPP}-${hAppI.name}`,\n class HAppElement extends HTMLElement {\n static get observedAttributes() {\n return hAppI.attributes;\n }\n\n private _happel: HApp<State, HActionType>;\n\n constructor() {\n super();\n this._happel = new HApp<State, HActionType>(\n hAppI.state,\n hAppI.view,\n hAppI.dispatcher,\n undefined,\n hAppI.debug,\n hAppI.name,\n hAppI.attributes\n );\n (this._happel as any).customElement = this;\n }\n\n connectedCallback() {\n // this._happel.mount(this);\n this.attachShadow({ mode: \"open\" });\n this._happel.mount(this.shadowRoot as any);\n }\n\n disconnectedCallback() {\n this._happel.umount();\n }\n\n adoptedCallback() {\n this._happel.update();\n }\n\n attributeChangedCallback(\n attrName: string,\n oldVal: string | null,\n newVal: string | null\n ) {\n this._happel.dispatch(\n HAppActions.attribute as any,\n { attrName, oldVal, newVal });\n }\n }\n );\n}\n\n/**\n * HSML App\n */\nexport class HApp<State, HActionType extends string> implements HHandlerCtx<HActionType> {\n\n readonly state: State;\n readonly view: HView<State, HActionType>;\n readonly dispatcher: HDispatcher<State, HActionType>;\n\n debug: boolean;\n\n readonly name: string;\n readonly attributes: string[];\n\n readonly element?: HTMLElement;\n readonly refs: { [key: string]: HTMLElement } = {};\n\n readonly customElement?: HTMLElement; // happ custom html element\n\n private _updateSched?: number;\n\n // private _onDispatch?: HDispatcher<State>;\n\n private _windowActionListener?: (event: Event) => void;\n\n constructor(\n state: HState<State>,\n view: HView<State, HActionType>,\n dispatcher?: HDispatcher<State, HActionType>,\n element?: Element | string | null,\n debug?: boolean ,\n name?: string,\n attributes?: string[]\n ) {\n this.debug = debug ?? false;\n this.name = name ?? HAPP;\n this.attributes = attributes ?? [];\n this.state = state();\n this.view = view;\n this.dispatcher = dispatcher ?? (async (a) => log(this.name, msgAction, a.type, a.data));\n this._dispatchAction(HAppActions.init, this).then(() => element && this.mount(element));\n }\n\n /**\n * Dispatch app action.\n */\n dispatch: HDispatch<HActionType> = async (\n type: HActionType,\n data?: any,\n scope?: HDispatchScope\n ): Promise<void> => {\n return this._dispatchAction(type, data, undefined, scope);\n }\n\n // onDispatch = (dispatcher: HDispatcher<State>): this => {\n // this._onDispatch = dispatcher;\n // return this;\n // }\n\n private async _dispatchAction(\n type: HActionType | HAppAction | HAppActions,\n data?: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n if (this.debug) {\n log(this.name, msgAction, { type, data, event });\n const t0 = performance.now();\n await this._dispatch(type, data, event, scope);\n const t1 = performance.now();\n log(this.name, msgDispatch, `${t1 - t0} ms`, this.state);\n } else {\n await this._dispatch(type, data, event, scope);\n }\n }\n\n private async _dispatch(\n type: HActionType | HAppAction | HAppActions,\n data: any,\n event?: Event,\n scope?: HDispatchScope\n ): Promise<void> {\n try {\n if (!scope) {\n await this.dispatcher(\n { type: type as HActionType, data, event },\n this.state,\n this.dispatch\n );\n this.update();\n }\n scope === \"element\" && this._dispatchElement(type, data);\n scope === \"window\" && this._dispatchWindow(type, data);\n } catch (e) {\n error(this.name, msgDispatch, e);\n }\n }\n\n private async _dispatchElement(\n type: HActionType | HAppAction | HAppActions,\n data?: any\n ): Promise<void> {\n this.customElement && elementDispatchCustomEvent(this.customElement, HAppActions.action, { type, data });\n !this.customElement && this.element && elementDispatchCustomEvent(this.element, HAppActions.action, { type, data });\n // this._onDispatch?.({ type, data, event }, this.state, this.dispatch);\n }\n\n private async _dispatchWindow(\n type: HActionType | HAppAction | HAppActions,\n data?: any): Promise<void> {\n window.dispatchEvent(new CustomEvent(HAppActions.action, { detail: { type, data } }));\n }\n\n /**\n * Window action listen and route actions to dispatcher.\n * Call this method on app mount action.\n * Listening will be stopped on app umount automatically.\n */\n windowActionListen() {\n if (!this._windowActionListener) {\n this._windowActionListener = (event: Event) => {\n const action = (event as CustomEvent).detail as HAction<HActionType>;\n this._dispatchAction(HAppActions.action, action);\n };\n window.addEventListener(HAppActions.action, this._windowActionListener);\n } else {\n warn(\"windowEventListener already added\");\n }\n }\n\n /**\n * Render HSML based on app state.\n */\n render = (): HElements<HActionType> => {\n if (this.debug) {\n const t0 = performance.now();\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n const t1 = performance.now();\n log(this.name, msgRender, `${t1 - t0} ms`, hsmls);\n return hsmls ?? [];\n } else {\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n error(this.name, msgRender, e);\n }\n return hsmls ?? [];\n }\n }\n\n /**\n * HSML action callback.\n */\n actionCb = (actionType: HActionType, data: HAttrOnData, event: Event): void => {\n data = (data?.constructor === Function)\n ? (data as HAttrOnDataFnc)(event)\n : data;\n if (data === undefined && event) {\n if (event instanceof CustomEvent) {\n data = event.detail;\n } else {\n data = formData(event) as any;\n // TODO middlewares for data processing\n // const middlewares: ((data: any, event: Event) => any)[] = [];\n // data = middlewares.reduce(\n // (data, middleware) => middleware(data, event),\n // data\n // );\n }\n }\n this._dispatchAction(actionType, data, event);\n }\n\n private _updateDom<HActionType extends string>(\n el: Element,\n hsml: HElements<HActionType>,\n ctx: HHandlerCtx<HActionType>\n ): void {\n if (this.debug) {\n const t0 = performance.now();\n hsmls2idomPatch(el, hsml, ctx);\n const t1 = performance.now();\n log(this.name, msgUpdate, `${t1 - t0} ms`, el);\n } else {\n hsmls2idomPatch(el, hsml, ctx);\n }\n }\n\n /**\n * Mount app to DOM element.\n *\n * @param e DOM element\n */\n mount = (e: Element | string | null): this => {\n const el = (typeof e === \"string\") ? document.getElementById(e) : e;\n if (el && (el as any)[HAPP]) {\n const a = (el as any)[HAPP] as HApp<State, HActionType>;\n a.umount();\n }\n if (el && !this.element) {\n (this as any).element = el;\n (el as any)[HAPP] = this;\n const hsmls = (this as any).render();\n this._updateDom<HActionType>(el, hsmls, this);\n this._dispatchAction(HAppActions.mount, this.element);\n }\n return this;\n }\n\n /**\n * Umount app to DOM element.\n */\n umount = (): this => {\n if (this.element) {\n this._dispatchAction(HAppActions.umount, this.element);\n if (this.element.hasAttribute(HAPP)) {\n this.element.removeAttribute(HAPP);\n }\n const aNodes = this.element.querySelectorAll(`[${HAPP}]`);\n for (let i = 0; i < aNodes.length; i++) {\n const a = (aNodes[i] as any).happ as HApp<State, HActionType>;\n a?.umount();\n }\n while (this.element.firstChild /*.hasChildNodes()*/) {\n this.element.removeChild(this.element.firstChild);\n }\n delete (this.element as any).happ;\n (this as any).element = undefined;\n }\n if (this._windowActionListener) {\n window.removeEventListener(HAppActions.action, this._windowActionListener);\n }\n return this;\n }\n\n /**\n * Update DOM element based on app state.\n */\n update = (): this => {\n if (this.element && !this._updateSched) {\n this._updateSched = schedule(() => {\n if (this.element) {\n const hsmls = this.render();\n this._updateDom<HActionType>(this.element, hsmls, this);\n }\n this._updateSched = undefined;\n });\n }\n return this;\n }\n\n toHsml = (): HElement<HActionType> => {\n if (this.element) {\n if (this._updateSched) {\n unschedule(this._updateSched);\n this._updateSched = undefined;\n } else {\n return [\"div\", { skip: true }];\n }\n }\n const hsmls = this.render();\n hsmls.push(\n (e: Element) => {\n if (!this.element) {\n (this as any).element = e;\n (e as any).happ = this;\n this._dispatchAction(HAppActions.mount, this.element);\n }\n });\n return [\"div\", hsmls];\n }\n\n toHtml = (): string => {\n return this.element ? this.element.outerHTML : \"\";\n }\n\n}\n\nfunction elementDispatchCustomEvent<HActionType extends string>(\n el: HTMLElement,\n type: HActionType,\n data: any\n) {\n el?.dispatchEvent(new CustomEvent(type, { detail: data }));\n (el as any)[`on${type}`]?.(new CustomEvent(type, { detail: data }));\n}\n\ntype FormDataInputValue = string | number | boolean | null | Array<string | number | boolean | null>;\n\ntype FormInputData = {\n name?: string;\n value: FormDataInputValue;\n valueString?: string;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\ntype FormData = {\n data: {\n [name: string]: FormDataInputValue;\n };\n validation: { [name: string]: string };\n valid: boolean;\n};\n\nexport type HFormInputData<Value = FormDataInputValue> = {\n name?: string;\n value: Value;\n valueString?: string | null;\n valueNumber?: number | null;\n valueDate?: Date | null;\n validation: string;\n valid: boolean;\n};\n\nexport type HFormData<Data> = {\n data: Data;\n validation: { [name in keyof Data]?: string };\n valid?: boolean;\n};\n\nfunction formData(e: Event): FormData | FormInputData | undefined {\n const el = e.target as HTMLElement;\n switch (el.nodeName) {\n case \"FORM\":\n (e as Event).preventDefault();\n const form: FormData = {\n data: {},\n validation: {},\n valid: true\n };\n const els = (el as HTMLFormElement).elements;\n for (let i = 0; i < els.length; i++) {\n const inputData = formInputData(els[i]);\n if (inputData && inputData.name) {\n const formData = form.data;\n const name = inputData.name;\n const value = inputData.value;\n if (formData[name] === undefined) {\n formData[name] = value;\n } else if (typeof formData[name] === \"string\" || formData[name] instanceof String) {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value as string];\n }\n } else if (formData[name] instanceof Array) {\n if (value instanceof Array) {\n formData[name] = (formData[name] as Array<any>).concat(value);\n } else {\n (formData[name] as Array<any>).push(value);\n }\n } else {\n if (value instanceof Array) {\n formData[name] = [formData[name] as string, ...value];\n } else {\n formData[name] = [formData[name] as string, value];\n }\n }\n if (formData[name] instanceof Array) {\n formData[name] = (formData[name] as Array<any>)\n .filter(d => d !== null);\n if ((els[i] as HTMLInputElement).type === \"radio\") {\n formData[name] = (formData[name] as Array<any>).length\n ? (formData[name] as Array<any>)[0]\n : null;\n }\n }\n if (inputData.validation) {\n form.validation[name] = inputData.validation;\n }\n if (!inputData.valid) {\n form.valid = false;\n }\n }\n }\n return form;\n default:\n return formInputData(el);\n }\n}\n\nfunction formInputData(el: Element): FormInputData | undefined {\n // Client-side form validation\n // https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation\n const vel = el as HTMLInputElement;\n if (vel.willValidate) {\n let valid = true;\n for (const key in vel.validity) {\n if (key !== \"customError\" && key !== \"valid\") {\n if ((vel.validity as any)[key]) {\n const msgs = (vel as any)[\"validation\"];\n if (msgs) {\n const msg = (msgs as any)[key];\n if (msg) {\n vel.setCustomValidity(msg);\n // vel.reportValidity();\n valid = false;\n break;\n } else {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n break;\n }\n }\n }\n }\n }\n if (valid) {\n vel.setCustomValidity(\"\");\n // vel.reportValidity();\n }\n }\n\n let data: FormInputData | undefined;\n switch (el.nodeName) {\n case \"INPUT\":\n const iel = el as HTMLInputElement;\n switch (iel.type) {\n case \"text\":\n case \"hidden\":\n case \"password\":\n case \"email\":\n case \"search\":\n case \"url\":\n case \"tel\":\n case \"color\":\n case \"submit\":\n case \"button\":\n data = {\n name: iel.name,\n value: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"number\":\n case \"range\":\n data = {\n name: iel.name,\n value: iel.valueAsNumber,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"datetime-local\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: isNaN(iel.valueAsNumber)\n ? null\n : new Date(iel.valueAsNumber),\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n data = {\n name: iel.name,\n value: iel.value,\n valueNumber: isNaN(iel.valueAsNumber)\n ? null\n : iel.valueAsNumber,\n valueDate: iel.valueAsDate,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"radio\":\n data = {\n name: iel.name,\n value: iel.checked ? iel.value : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n case \"checkbox\":\n if (iel.value === \"on\") { // value not set in element\n data = {\n name: iel.name,\n value: iel.checked,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n } else {\n data = {\n name: iel.name,\n value: iel.checked ? String(iel.value) : null,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n }\n break;\n case \"file\":\n const files = (iel as any).files as FileList;\n const value: any = files.length === 1 ? files[0] : files;\n data = {\n name: iel.name,\n value,\n valueString: iel.value,\n validation: iel.validationMessage,\n valid: iel.validity.valid\n };\n break;\n }\n break;\n case \"SELECT\":\n const sel = el as HTMLSelectElement;\n if (sel.multiple) {\n const values = Array.from(sel.selectedOptions).map(o => o.value);\n data = {\n name: sel.name,\n value: values,\n valueString: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n } else {\n data = {\n name: sel.name,\n value: sel.value,\n validation: sel.validationMessage,\n valid: sel.validity.valid\n };\n }\n break;\n case \"TEXTAREA\":\n const tel = el as HTMLTextAreaElement;\n data = {\n name: tel.name,\n value: tel.value,\n validation: tel.validationMessage,\n valid: tel.validity.valid\n };\n break;\n case \"BUTTON\":\n const bel = el as HTMLButtonElement;\n data = {\n name: bel.name,\n value: bel.value,\n validation: bel.validationMessage,\n valid: bel.validity.valid\n };\n break;\n }\n return data;\n}\n"],"names":["$fe5fa9c04fc86188$var$log","console","log","$fe5fa9c04fc86188$var$error","error","$fe5fa9c04fc86188$var$warn","warn","$fe5fa9c04fc86188$export$3dcd9fad60135c2c","HAppActions","$fe5fa9c04fc86188$export$3d736e925369e0e4","HDispatchScopes","$fe5fa9c04fc86188$var$schedule","window","requestAnimationFrame","callback","setTimeout","$fe5fa9c04fc86188$var$unschedule","cancelAnimationFrame","handle","clearTimeout","$fe5fa9c04fc86188$var$msgAction","$fe5fa9c04fc86188$var$msgDispatch","$fe5fa9c04fc86188$var$msgRender","$fe5fa9c04fc86188$var$HAPP","$fe5fa9c04fc86188$export$eb8950696418f795","hAppI","$fe5fa9c04fc86188$export$8cfef5dc37c46888","state","view","dispatcher","element","debug","name","$fe5fa9c04fc86188$export$1cfc54b3834d3c50","customElements","define","HTMLElement","observedAttributes","attributes","connectedCallback","this","attachShadow","mode","_happel","mount","shadowRoot","disconnectedCallback","umount","adoptedCallback","update","attributeChangedCallback","attrName","oldVal","newVal","dispatch","attribute","constructor","super","undefined","customElement","_dispatchAction","type","data","event","scope","t0","performance","now","_dispatch","t1","_dispatchElement","_dispatchWindow","e","$fe5fa9c04fc86188$var$elementDispatchCustomEvent","action","dispatchEvent","CustomEvent","detail","windowActionListen","_windowActionListener","addEventListener","_updateDom","el","hsml","ctx","$hrCkK","hsmls2idomPatch","refs","$fe5fa9c04fc86188$var$__awaiter","render","hsmls","actionCb","actionType","Function","target","nodeName","preventDefault","form","validation","valid","els","elements","i","length","inputData","$fe5fa9c04fc86188$var$formInputData","formData","value","String","Array","concat","push","filter","d","$fe5fa9c04fc86188$var$formData","document","getElementById","hasAttribute","removeAttribute","aNodes","querySelectorAll","a","happ","firstChild","removeChild","removeEventListener","_updateSched","toHsml","skip","toHtml","outerHTML","init","then","_b","_a","call","vel","willValidate","key","validity","msgs","msg","setCustomValidity","iel","validationMessage","valueAsNumber","valueString","valueNumber","isNaN","valueDate","Date","valueAsDate","checked","files","sel","multiple","values","from","selectedOptions","map","o","tel","bel"],"version":3,"file":"hsml-app-form-validation_demo.97679c59.js.map"}