UNPKG

smarkform

Version:

[![SmarkForm Logo](docs/assets/SmarkForm_logo.png)](https://www.npmjs.com/package/smarkform)

2 lines (1 loc) 43.8 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).SmarkForm=t()}(this,function(){"use strict";function e(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function t(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?typeof e:"null"));return e}function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function r(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach(function(t){r(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function a(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function s(e,t,n){"symbol"==typeof t&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}function l(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function c(e,n,r,o){return(c=function(){function e(e,t){return function(n){!function(e){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),o(n,"An initializer"),e.push(n)}}function n(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function r(t,r,o,i,a,s,c,d,u){var p;switch(a){case 1:p="accessor";break;case 2:p="method";break;case 3:p="getter";break;case 4:p="setter";break;default:p="field"}var f,g,h={kind:p,name:c?"#"+r:l(r),static:s,private:c},m={v:!1};if(0!==a&&(h.addInitializer=e(i,m)),c||0!==a&&2!==a)if(2===a)f=function(e){return n(u,e),o.value};else{var y=0===a||1===a;(y||3===a)&&(f=c?function(e){return n(u,e),o.get.call(e)}:function(e){return o.get.call(e)}),(y||4===a)&&(g=c?function(e,t){n(u,e),o.set.call(e,t)}:function(e,t){o.set.call(e,t)})}else f=function(e){return e[r]},0===a&&(g=function(e,t){e[r]=t});var v=c?u.bind():function(e){return r in e};h.access=f&&g?{get:f,set:g,has:v}:f?{get:f,has:v}:{set:g,has:v};try{return t(d,h)}finally{m.v=!0}}function o(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function i(e,t){var n=typeof t;if(1===e){if("object"!==n||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&o(t.get,"accessor.get"),void 0!==t.set&&o(t.set,"accessor.set"),void 0!==t.init&&o(t.init,"accessor.init")}else if("function"!==n)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function a(e){return function(t){e(this,t)}}function c(e,t,n,o,l,c,d,u,p){var f,g,h,m,y,v,N,b,w=n[0];if(d?(0===l||1===l?(f={get:(y=n[3],function(){return y(this)}),set:a(n[4])},h="get"):3===l?(f={get:n[3]},h="get"):4===l?(f={set:n[3]},h="set"):f={value:n[3]},0!==l&&(1===l&&s(f.set,"#"+o,"set"),s(f[h||"value"],"#"+o,h))):0!==l&&(f=Object.getOwnPropertyDescriptor(t,o)),1===l?m={get:f.get,set:f.set}:2===l?m=f.value:3===l?m=f.get:4===l&&(m=f.set),"function"==typeof w)void 0!==(v=r(w,o,f,u,l,c,d,m,p))&&(i(l,v),0===l?g=v:1===l?(g=v.init,N=v.get||m.get,b=v.set||m.set,m={get:N,set:b}):m=v);else for(var E=w.length-1;E>=0;E--){var _;void 0!==(v=r(w[E],o,f,u,l,c,d,m,p))&&(i(l,v),0===l?_=v:1===l?(_=v.init,N=v.get||m.get,b=v.set||m.set,m={get:N,set:b}):m=v,void 0!==_&&(void 0===g?g=_:"function"==typeof g?g=[g,_]:g.push(_)))}if(0===l||1===l){if(void 0===g)g=function(e,t){return t};else if("function"!=typeof g){var x=g;g=function(e,t){for(var n=t,r=0;r<x.length;r++)n=x[r].call(e,n);return n}}else{var k=g;g=function(e,t){return k.call(e,t)}}e.push(g)}0!==l&&(1===l?(f.get=m.get,f.set=m.set):2===l?f.value=m:3===l?f.get=m:4===l&&(f.set=m),d?1===l?(e.push(function(e,t){return m.get.call(e,t)}),e.push(function(e,t){return m.set.call(e,t)})):2===l?e.push(m):e.push(function(e,t){return m.call(e,t)}):Object.defineProperty(t,o,f))}function d(e,n,r){for(var o,i,a,s=[],l=new Map,d=new Map,p=0;p<n.length;p++){var f=n[p];if(Array.isArray(f)){var g,h,m=f[1],y=f[2],v=f.length>3,N=m>=5,b=r;if(N?(g=e,0!=(m-=5)&&(h=i=i||[]),v&&!a&&(a=function(n){return t(n)===e}),b=a):(g=e.prototype,0!==m&&(h=o=o||[])),0!==m&&!v){var w=N?d:l,E=w.get(y)||0;if(!0===E||3===E&&4!==m||4===E&&3!==m)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+y);!E&&m>2?w.set(y,m):w.set(y,!0)}c(s,g,f,y,m,N,v,h,b)}}return u(s,o),u(s,i),s}function u(e,t){t&&e.push(function(e){for(var n=0;n<t.length;n++)t[n].call(e);return e})}return function(t,n,r,o){return{e:d(t,n,o),get c(){return function(t,n){if(n.length>0){for(var r=[],o=t,a=t.name,s=n.length-1;s>=0;s--){var l={v:!1};try{var c=n[s](o,{kind:"class",name:a,addInitializer:e(r,l)})}finally{l.v=!0}void 0!==c&&(i(10,c),o=c)}return[o,function(){for(var e=0;e<r.length;e++)r[e].call(o)}]}}(t,r)}}}}())(e,n,r,o)}function d(e,t){const n=null===e.parentNode?e=>null===e:t=>null===t||t.isSameNode(e);return[...e.querySelectorAll(t)].filter(e=>n(e.parentNode.closest(t)))}function u(e,t){let n=e.parentNode;const r=t>=0?1:-1;for(;n;){if(n.scrollHeight>n.clientHeight*r){var o=n.scrollHeight-n.clientHeight*r;if(t<=o*r)return void(n.scrollTop+=t);n.scrollTop=o,t-=o}n=n.parentNode}}function p(){return Math.random().toString(36).substring(2)}function f(e){try{return JSON.parse(e)}catch(e){}}const g=Symbol("Events"),h=Symbol("allEvents"),m=/^on(?:Before|After)Action_/,y=/^onLocal_/,v=/^onAll_/,N=["keydown","keyup","keypress","beforeinput","input","change","focus","blur","click","dblclick","contextmenu","mousedown","mouseup","mousemove","mouseenter","mouseleave","mouseover","mouseout","focusin","focusout"];function b(e,t,n){return e.has(t)||e.set(t,[]),e.get(t).push(n.bind(this)),this}var w={disEnhance(e){e.targetNode.tagName.toLowerCase()&&e.targetNode.addEventListener("submit",function(e){e.preventDefault()})}};const E=["property_name"];var _;let x;const k={},A=Symbol("smart_component"),T=/^[a-z0-9_]+$/i,O=/[\*\?]/,I=class extends Error{constructor(e,t,n){super("RenderError(".concat(n,"): ").concat(t)),this.code=e,this.path=n,this.stack=this.stack.split("\n").slice(2).join("\n")}};let S;_=class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{property_name:n="smark"}=t,r=a(t,E),o=arguments.length>2?arguments[2]:void 0;const i=this;if(i.validName=function(){let e=0;return function(){if(i.parent.isSingleton)return"";for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];for(let e of n)if("string"==typeof e&&(e=e.trim(),e.length))return e;return"UNNAMED"+ ++e}}(),i.actions={},i.property_name=n,i.selector="[data-".concat(i.property_name,"]"),i.types=k,i.targetNode=e,i.options=r,i.setNodeOptions(i.targetNode,i.options),i.parent=o,!i.parent instanceof S)throw i.renderError("INVALID_PARENT","Smark Components must have valid Smark Component parent.");i.root=null===i.parent?i:i.parent.root,i.parents={},i.parents[Symbol.iterator]=function*(){let e=i.parent;for(;e;)yield e,e=e.parent};const s=i.inheritedOption("autoId",!1);let l;i.genId=!1!==s&&(!0===s?e=>e.replace(/\//g,"_"):"string"==typeof s?e=>s+e.replace(/\//g,"_"):"function"==typeof s&&s),i.onRenderedTasks=[],i.renderedSync=!1,i.rendered=new Promise(e=>l=e),i.children={},i.targetNode[A]=i,(async()=>{await i.render();for(const e of i.onRenderedTasks)await e();i.onRenderedTasks=null,l(!0),setTimeout(()=>i.renderedSync=!0,1),await i.emit("afterRender",{context:i},!1)})(),i.options.onRendered&&i.onRendered(i.options.onRendered)}async unrender(){const e=this;await e.emit("beforeUnrender",{context:e},!1),e.targetNode.remove()}onRendered(e){const t=this;t.onRenderedTasks?t.onRenderedTasks.push(e.bind(t)):e.bind(t)()}getNodeOptions(e,t){const n=this,r=(e.dataset[n.property_name]||"").trim()||null,o=i(i({},t),(()=>{try{const e=JSON.parse(r);if("object"!=typeof e)throw new Error("NO_OBJECT");return e}catch(e){return r.match(T)?{type:r}:{}}})());return o.action||o.type||(o.type=function(e,t){switch(e.tagName.toLowerCase()){case"ul":case"ol":case"table":case"thead":case"tbody":case"tfoot":return"list";case"input":const n=String(e.getAttribute("type")||"").toLowerCase();if(t.isSingleton)return t.options.type;switch(n){case"number":case"date":case"radio":case"color":return n}case"textarea":case"select":return"input";case"label":return"label";default:return"form"}}(e,n)),n.setNodeOptions(e,o),o}setNodeOptions(e,t){e.dataset[this.property_name]=JSON.stringify(t)}async enhance(e,t){const n=this;let r=n.getNodeOptions(e,t);if(w.disEnhance(n),r.action){if(r.type||(r.type="trigger"),"trigger"!=r.type)throw n.renderError("ACTION_IN_NON_TRIGGER",'"action" property is only allowed for "trigger" components but "'.concat(r.type,'" type specified.'))}else if("string"!=typeof r.type)throw n.renderError("NO_TYPE_PROVIDED","Invalid SmarkForm item: type is mandatory for non trigger components.");const o=n.types[r.type];if(!o)throw n.renderError("UNKNOWN_TYPE","Unimplemented SmarkForm component controller: ".concat(r.type));return new o(e,r,n)}getComponent(e){var t;return e[A]||(null===(t=e.parentElement)||void 0===t?void 0:t.closest(this.selector)[A])||null}getPath(){const e=this;return[e,...e.parents].map(e=>e.name).reverse().join("/")||"/"}find(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";let t=this;if(""===t.name&&t.parent.isSingleton&&(t=t.parent),e=String(e),"/"==e[0])for(;t.parent;)t=t.parent;const n=e.split("/").filter(e=>e),r=n.findIndex(e=>e.match(O));if(r>=0){const e=(o=n[r],new RegExp("^"+o.replace(/\*+/g,".*").replace(/\?/g,".")+"$")),i=n.slice(0,r).join("/"),a=n.slice(r+1).join("/"),s=t.find(i);return Object.entries(s.children).filter(t=>{let[n,r]=t;return r&&n.match(e)}).map(e=>{let[,t]=e;return t.find(a)}).flat(1/0)}var o;return n.reduce((e,t)=>{if(void 0!==e){if(".."==t)return e.parent;if("."!=t[0])return e.children[t];{if("."==t)return e;if(!e.parent)return;const n=parseInt(t.slice(1));if(isNaN(n))return;if("list"!=e.parent.options.type){const t=Object.keys(e.parent.children),r=t.findIndex(t=>t==e.name),o=t[r+n];return e.parent.children[o]}{const t=parseInt(e.name)+n;if(!isNaN(t))return e.parent.children[t]}}}},t)}inheritedOption(e,t){const n=this;for(const t of[n,...n.parents])if(void 0!==t.options[e])return t.options[e];return t}moveTo(){const e=this;e.targetNode.id||(e.targetNode.id=e.getPath()),document.location.hash=e.targetNode.id,window.history.pushState({},void 0,window.location.pathname)}getTriggers(){const e=this,t=[],n=new Set([arguments.length>0&&void 0!==arguments[0]?arguments[0]:""].flat().map(String).filter(e=>e)),r=n.has("*");for(const o of[e,...e.root.targetNode.querySelectorAll(e.selector)].map(e=>e[A]).filter(e=>e)){const i=o.getTriggerArgs();i&&((Object.is(i.context,e)||Object.is(o,e))&&(r||n.has(i.action))&&t.push(o))}return t}updateId(){const e=this;if(!1===e.genId)return;const t=e.genId(e.getPath());if(e.targetNode.id!=t){e.targetNode.id=t;for(const t of Object.values(e.children))t.updateId()}return e.targetNode.id}focus(){const e=this;for(const t in e.children)return e.children[t].focus();e.targetFieldNode?e.targetFieldNode.focus():e.targetNode.focus()}getTriggerArgs(){}renderError(e,t){var n;const r=this,o=null!==(n=r.parent)&&void 0!==n&&n.isSingleton?r.parent.targetNode:r.targetNode,i=new I(e,t,r.getPath());return function(e,t){const n=document.createElement("div");n.setAttribute("title",t.message),n.setAttribute("style","display: inline-block; padding: .5em 1em; background: red; color: yellow; border-radius: 50% 0%"),n.appendChild(document.createTextNode(t.code));const r=document.createElement("span");r.setAttribute("title","Log the error again"),r.setAttribute("style","cursor: pointer; font-weight: bold; background-color: white; color: red; border-radius: 50%; padding: 0 4px; margin-left: 8px;"),r.textContent="↧",r.addEventListener("click",()=>{console.error(t)}),n.appendChild(r),e.replaceWith(n)}(o,i),i}},[S,x]=c(_,[],[function(e,t){let{kind:n}=t;if("class"==n)return class extends e{constructor(e,t){const n={},r=[];for(const[e,o]of Object.entries(t))e.match(m)?r.push([e.substring(2),o,"onLocal"]):e.match(y)?r.push([e.substring(8),o,"onLocal"]):e.match(v)?r.push([e.substring(6),o,"onAll"]):n[e]=o;for(var o=arguments.length,i=new Array(o>2?o-2:0),a=2;a<o;a++)i[a-2]=arguments[a];super(e,n,...i);const s=this;if(s[g]=new Map,s[h]=new Map,s.onLocal=b.bind(s,s[g]),s.onAll=b.bind(s,s[h]),s.on=s.onAll,s.eventHooks=function(e){const t={};for(const n in e)t[n]=[...e[n]];return Object.defineProperty(t,"_dynamic",{get(){return new Proxy(this,{get:(e,t)=>(t in e||(e[t]=[]),e[t])})}}),t._dynamic}(super.eventHooks),Object.is(s,s.root))for(const e of N)s.targetNode.addEventListener(e,t=>{const n=s.getComponent(t.target),r={type:e,originalEvent:t,context:n,preventDefault:t.preventDefault.bind(t),stopPropagation:t.stopPropagation.bind(t),stopImmediatePropagation:t.stopImmediatePropagation.bind(t)};n.emit(e,r)},!0);for(const[e,t,n]of r)s[n](e,t)}async emit(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=this;let o=!1,a=!1;const s=i(i({},t),{},{type:e,defaultPrevented:!1});n&&(s.preventDefault=()=>s.defaultPrevented=!0,s.stopPropagation=()=>o=!0,s.stopImmediatePropagation=()=>a=!0);const l=[...r[g].get(e)||[],...r[h].get(e)||[]];for(const e of l){if(a)break;await e(t)}for(const n of r.parents){if(o)break;const r=n[h].get(e)||[];for(const e of r){if(a)break;await e(t)}}for(const n of r.eventHooks[e])await n(t);return!s.defaultPrevented}}}]).c,x();class L extends S{constructor(){if(super(...arguments),this._isField=!0,!Object.is(this,this.root)&&(this.name=this.validName(this.options.name,this.targetNode.getAttribute("name")),this.options.hasOwnProperty("value"))){if(null!==this.targetNode.getAttribute("value"))throw me.renderError("VALUE_CONFLICT",'Initial value specied both as "value" option and HTML "value" attribute.');this.targetNode.setAttribute("value",this.options.value)}}}function P(e,t){if(void 0!==k[e])throw new Error("Duplicate component type definition: ".concat(e));if(!(t.prototype instanceof S))throw new Error("Bad component type implementation for: ".concat(e));k[e]=t}class j{constructor(e){const t=this;t.form=e,t.revealed=null;const n=j.onStatusChange.bind(t);t.form.targetNode.addEventListener("keydown",n,!0),t.form.targetNode.addEventListener("keyup",n,!0),t.form.targetNode.addEventListener("focusout",n,!0),t.form.targetNode.addEventListener("focusin",n,!0)}static onStatusChange(e){const t=this;if("keyup"==e.type)return void("Control"==e.key&&t.reveal(!1));if("focusout"==e.type)return void(null!==t.revealed&&t.reveal());if("focusin"==e.type&&null===t.revealed)return;const n=e.ctrlKey||"Control"==e.key,r=e.altKey||"Alt"==e.key;if(n&&("Control"==e.key||"Alt"==e.key)||"focusin"==e.type){const n=r?2:1;return void t.reveal(e.target,n)}if(t.revealed instanceof Array){const n=t.revealed.find(t=>t.options.hotkey==e.key);n&&(e.preventDefault(),e.stopPropagation(),n.targetNode.disabled||n.targetNode.click())}}reveal(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this;if(null!==n.revealed){for(const e of n.revealed)e.targetNode.removeAttribute("data-hotkey");n.revealed.length=0}if(!1===e&&(n.revealed=null),e){const r=n.form.getComponent(e),o=function(e){const t=[e,...e.parents];return[...t,...t.map(C).flat()]}(r),i=o.map((e,t)=>{const n=[];for(const r of e.getTriggers("*")){const e=String(r.options.hotkey||"");if(""==e)continue;const o=r.getTriggerArgs()||{};n.push({tg:r,distance:t,args:o,hotkey:e})}return n}).flat().sort((e,t)=>{var n,o;const i=null===(n=e.args.target)||void 0===n?void 0:n.targetNode,a=null===(o=t.args.target)||void 0===o?void 0:o.targetNode,s=a?.5*a.contains(r.targetNode):0,l=i?.5*i.contains(r.targetNode):0;return+e.distance-t.distance+s-l}),a=new Map;n.revealed=[];for(const r of i){const[o,i]=a.get(r.hotkey)||[1,0];o<t?a.set(r.hotkey,[o+1,r.distance]):o>t||(Object.is(r.tg.targetNode,e)||r.distance>i)&&(r.tg.targetNode.disabled||r.tg.targetNode.setAttribute("data-hotkey",r.hotkey),n.revealed.push(r.tg),a.set(r.hotkey,[o+1,r.distance]))}}}}function C(e){var t;const n=(null===(t=e.parent)||void 0===t?void 0:t.children)||[],r=Object.keys(n).findIndex(t=>t===e.name),o=Object.values(n),i=o.slice(0,r).reverse();return[...o.slice(r+1),...i]}const F=["action","context","target"],D=function(e,t){let{kind:n,name:r,addInitializer:o}=t;"method"==n&&o(function(){const t=this;this.actions[r]=async function(n){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=!1;if(o.data=n,o.silent||(i=!await t.emit("BeforeAction_".concat(r),o),n=o.data),!i)return n=await e.call(t,n,o),o.data=n,o.silent||t.emit("AfterAction_".concat(r),o),n}})};class R extends S{constructor(e,t){delete t.name;for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];return super(e,t,...r)}render(){const e=this;e.parent.onRendered(()=>{var t;const n=e.getTriggerArgs();"function"==typeof(null===(t=n.context)||void 0===t?void 0:t.onTriggerRender)&&n.context.onTriggerRender(n)})}disable(){this.targetNode.disabled=!0}enable(){this.targetNode.disabled=!1}getTriggerArgs(){const e=this,t=[e,...e.parents],n=e.options,{action:r,context:o,target:s}=n,l=a(n,F);if(!r)return;const c=o?e.parent.find(o):t.find(e=>"function"==typeof e.actions[r]),d=s?null==c?void 0:c.find(s):o?null:t.slice(1).find(e=>{var t;return null===(t=e.parent)||void 0===t?void 0:t.targetNode.isSameNode(null==c?void 0:c.targetNode)})||null;return i({action:r,origin:e,context:c,target:d},l)}}async function M(e){const t=this.getComponent(e.target).getTriggerArgs();if(!t)return;const{context:n,action:r,data:o}=t,i=null==n?void 0:n.actions[r];if("function"!=typeof i)throw this.renderError("UNKNOWN_ACTION","Unknown action ".concat(r)+(n?" for ".concat(n.options.type):""));return await i(o,t)}const U=["allow_select"],H=["context","target"];class B extends S{constructor(e,t){let{allow_select:n=!1}=t,r=a(t,U);delete r.name;for(var o=arguments.length,s=new Array(o>2?o-2:0),l=2;l<o;l++)s[l-2]=arguments[l];super(e,i({allow_select:n},r),...s);const c=this;c.eventHooks.click.push(function(e){if(e.defaultPrevented)return;const{target:t}=c.getLabelArgs();null!=t&&t.targetFieldNode||t.focus()})}async render(){const e=this;for(const t of d(e.targetNode,e.selector)){const n=await e.enhance(t);if(null!=n&&n._isField)throw e.renderError("FIELD_IN_LABEL","Non action components not allowed in labels, found ".concat(n.name," in form ").concat(e.getPath(),"."))}e.parent.onRendered(async()=>{const t=String(e.targetNode.tagName).toLowerCase(),n=e.getLabelArgs().target||{};if(await n.rendered,n.targetFieldNode&&(n.targetFieldNode.id||(n.targetFieldNode.id=p()),e.targetNode.setAttribute("for",n.targetFieldNode.id)),"label"!=t){e.targetNode.id||(e.targetNode.id=p());const t=(n.targetNode.getAttribute("aria-labelledby")||"").split(" ").filter(e=>e);0>t.indexOf(e.targetNode.id)&&t.push(e.targetNode.id),n.targetNode.setAttribute("aria-labelledby",t.join(" "))}else if(!n.targetFieldNode)throw e.renderError("LABEL_FOR_NONFIELD","Native <label> tags targetting non native field are not allowed in HTML, you should use different tag.");e.options.allow_select||(e.targetNode.style["user-select"]="none")})}getLabelArgs(){const e=this;let t,n;const r=e.options,{context:o,target:s}=r,l=a(r,H);if(o||s)t=o?e.parent.find(o):e.parent,n=s?t.find(s):t;else{t=e.parent;const r=t.targetNode.querySelectorAll(e.selector);let o=!1;for(const t in r)if(o){let o=e.getComponent(r[t]);if(null!=o&&o._isField){n=o;break}}else Object.is(r[t],e.targetNode)&&(o=!0)}return i({origin:e,context:t,target:n},l)}}const J=function(e,t){let{kind:n}=t;if("class"==n){var r;let t;return r=class extends e{constructor(){super(...arguments),t(this)}render(){const e=super.render(...arguments),t=this;return t.root.onRendered(()=>{t.fold(null,{operation:t.options.folded?"fold":"unfold",autofocus:!1})}),e}fold(e){var t;let{operation:n="toggle",origin:r,autofocus:o=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=this,a="none"==i.targetNode.style.display,s="fold"==n||"unfold"!=n&&!a;i.targetNode.style.display=s?"none":i.originalDisplayProp,i.getTriggers("fold").forEach(e=>{const{foldedClass:t,unfoldedClass:n}=e.options;t&&e.targetNode.classList[s?"add":"remove"](t),n&&e.targetNode.classList[s?"remove":"add"](n)}),i.getTriggers(["addItem","removeItem"]).map(s?e=>e.disable():e=>e.enable()),o&&(null===(t=s?r:i)||void 0===t||t.focus())}},[t]=c(r,[[D,2,"fold"]],[]).e,r}},q=["target"],W=function(e,t){let{kind:n}=t;if("method"==n)return async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{target:r}=n,o=a(n,q);const i=await e.call(this,t,o);try{await r.import(i)}catch(e){}return i}},z=["target"],K=function(e,t){let{kind:n}=t;if("method"==n)return async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{target:r}=n,o=a(n,z);try{t=await r.export()}catch(e){}return await e.call(this,t,o)}};var G;let V,X,Y;async function $(e){await e.rendered;for(const t of e.getTriggers(["removeItem","addItem"]))t.targetNode.disabled="removeItem"==t.options.action?e.children.length<=e.min_items&&"clear"!=t.options.failback:e.children.length>=e.max_items}G=class extends L{constructor(){V(super(...arguments));const e=this;this.eventHooks.click.push(t=>{!t.defaultPrevented&&e.inheritedOption("focus_on_click",!0)&&this.focus()})}async render(){const e=this;e.originalDisplayProp=e.targetNode.style.display;for(const t of d(e.targetNode,e.selector)){const n=await e.enhance(t);if(null!=n&&n._isField){if(void 0!==e.children[n.name])throw e.renderError("REPEATED_FIELD_NAME","Field name '".concat(n.name,"' used more than once in this form level."));e.children[n.name]=n,n.updateId()}}}async export(){return Object.fromEntries(await Promise.all(Object.entries(this.children).map(async e=>{let[t,n]=e;return[t,await n.export(null,{silent:!0})]})))}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this,r=Object(e).constructor;if(r!=={}.constructor&&!(e=f(e)))throw n.renderError("FORM_NOT_PLAIN_OBJECT","Expected plain object or vailid JSON for form import, ".concat(r.name," given."));const o=Object.fromEntries(await Promise.all(Object.entries(n.children).map(async n=>{let[r,o]=n;return[r,await o.import(e[r],{focus:t,silent:!0})]})));return t&&n.focus(),o}async isEmpty(){const e=this;for(const t of Object.values(e.children))if(!await t.isEmpty())return!1;return!0}async clear(e){let{focus:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await this.import({},{focus:t,silent:!0})}},({e:[V],c:[Y,X]}=c(G,[[[D,W],2,"export"],[[D,K],2,"import"],[D,2,"clear"]],[J])),X();const Q=function(e,t){let{kind:n}=t;return"class"==n?class extends e{async render(){const e=await super.render(...arguments),t=this;return setTimeout(()=>$(t),1),e}}:"method"==n?async function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];const o=await e.call(this,...n);return $(this),o}:void 0},Z=Symbol("smart_mutex");class ee{constructor(){this.mtx=Promise.resolve()}lock(){let e;const t=new Promise(t=>{e=()=>t()}),n=this.mtx;return this.mtx=t,n.then(function(){return e})}}const te=function(e){return function(t,n){let{kind:r}=n;if("method"==r)return async function(){const n=this;n[Z]||(n[Z]={}),n[Z][e]||(n[Z][e]=new ee);const r=await n[Z][e].lock();let o,i;try{for(var a=arguments.length,s=new Array(a),l=0;l<a;l++)s[l]=arguments[l];i=await t.call(n,...s)}catch(e){o=e}if(r(),o)throw o;return i}}};var ne;let re,oe,ie,ae,se,le,ce;var de,ue=new WeakSet;ie=[te("list_mutating"),D,W],ae=[D,te("list_mutating"),Q],se=[D,te("list_mutating"),Q],le="render";async function pe(e){const t=this;t.templates.header?t.templates.header.after(e):t.targetNode.appendChild(e)}let fe;ne=class extends L{constructor(){super(...arguments),n(this,ue),re(this)}async[le](){const e=this;e.originalDisplayProp=e.targetNode.style.display,e.min_items=Math.max(0,"number"==typeof e.options.min_items?e.options.min_items:1),e.max_items=Math.max(e.min_items,"number"==typeof e.options.max_items?e.options.max_items:1/0),e.children=[],e.templates=function(e){const t={};for(const n of[...e.targetNode.children]){const{role:r="item"}=f(n.getAttribute("data-smark"))||{};switch(r){case"empty_list":case"header":case"separator":case"last_separator":case"footer":case"placeholder":n.setAttribute("data-role",r);case"item":if(void 0!==t[r])throw e.renderError("LIST_DUPLICATE_TEMPLATE","Repated list template role ".concat(r));t[r]=n,t[r].remove()}}if(e.targetNode.children.length){const{role:t="(unspecified)"}=f(e.targetNode.children[0].getAttribute("data-smark"))||{};throw e.renderError("LIST_UNKNOWN_TEMPLATE_ROLE","Unknown list template role ".concat(t))}if(t.last_separator||(t.last_separator=t.separator),null!==t.item.querySelector("[id]"))throw e.renderError("LIST_CONTAINS_ID","List components are not allowed to contain elements with 'id' attribute");return t}(e),e.placeholders=[];const t=e.getNodeOptions(e.templates.item,{type:e.options.of});if(e.options.of&&t.type!=e.options.of)throw e.renderError("LIST_ITEM_TYPE_MISSMATCH","List item type missmatch");for(const t of[e.templates.header,e.templates.footer])if(t){e.targetNode.appendChild(t);for(const n of d(t,e.selector)){const t=await e.enhance(n);if(null!=t&&t._isField)throw e.renderError("FIELD_IN_WRONG_LIST_TEMPLATE","Fields are not allowed in list's template roles other than item.")}}e.root.onRendered(async()=>{for(let t=0;t<e.min_items;t++)await e.addItem({silent:!0});0==e.min_items&&await e.renum(),e.targetNode.setAttribute("aria-live","polite"),e.targetNode.setAttribute("aria-atomic","true")})}onTriggerRender(e){let{action:t,origin:n,context:r}=e;switch(t){case"addItem":case"removeItem":1+[...n.parents].findIndex(e=>Object.is(e,r))&&n.options.hotkey&&null===(o=n.targetNode).getAttribute("tabindex")&&o.setAttribute("tabindex","-1")}var o}async export(){const e=this,t=[],n=[],r=!e.inheritedOption("exportEmpties",!1);for(const o of e.children)r&&await o.isEmpty()?t.length<e.min_items&&n.push(o):t.push(await o.export(null,{silent:!0}));for(let r=0;t.length<e.min_items;r++)t.push(await n[r].export(null,{silent:!0}));return t}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{focus:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this;e instanceof Array||(e=[e]);for(let r=0;r<Math.min(e.length,n.max_items);r++)n.children.length<=r&&await n.addItem({silent:!0}),await n.children[r].import(e[r],{focus:t,silent:!0});for(let t=Math.max(e.length,n.min_items);t<n.children.length;)await n.removeItem({silent:!0});e.length>n.max_items&&n.emit("error",{code:"LIST_IMPORT_OVERFLOW",message:"Trying to import array greater than list's max_items. Data beyond max_items ignored.",context:n,data:e,options:n.options});for(let t=e.length;t<n.children.length;t++)n.children[t].clear({silent:!0});t&&n.focus()}async addItem(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=this;if(n.action="addItem",n.origin||(n.origin=null),n.context||(n.context=r),n.source||(n.source=null),n.target||(n.target=null),n.position||(n.position="after"),n.autoscroll||(n.autoscroll=null),n.failback||(n.failback="throw"),"after"!=n.position&&"before"!=n.position)throw r.renderError("LIST_WRONG_ADDITEM_POSITION","Invalid value for addItem() position property: ".concat(n.position));if(r.children.length>=r.max_items){if("none"===n.failback);else r.emit("error",{code:"LIST_MAX_ITEMS_REACHED",message:"Cannot add items over max_items boundary",options:n});return}r.children.length&&!n.target&&(n.target="before"==n.position?r.children[0]:r.children[r.children.length-1]);const o=r.templates.item.cloneNode(!0);let i;if(r.children.length?r.children=(await Promise.all(r.children.map(async(e,t)=>{if(e.targetNode.isSameNode(n.target.targetNode)){e.targetNode[n.position](o),i=await r.enhance(o,{type:"form"}),await i.rendered;const t=[e,i];return"before"==n.position&&t.reverse(),t}return e}))).flat():(await e(ue,r,pe).call(r,o),i=await r.enhance(o,{type:"form",name:0}),await i.rendered,r.children.push(i),i.name=0),await r.renum(),n.source){const e=i.find(n.source);if(e){const t=await e.export();await i.import(t,{silent:!0})}}if("elegant"==n.autoscroll&&i)u(i.targetNode,-i.offsetHeight);else{const e=i?"self"==n.autoscroll?i:"parent"==n.autoscroll?i.parent:null:null;e&&e.moveTo()}return r.renderedSync&&i.focus(),i}async removeItem(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this;t.action="removeItem",t.origin||(t.origin=null),t.context||(t.context=n),t.target||(t.target=null),t.autoscroll||(t.autoscroll=null);let r=t.preserve_non_empty||(t.preserve_non_empty=!1);if(t.failback||(t.failback="throw"),!t.target){if(r)for(const e of[...n.children].reverse())if(await e.isEmpty()){t.target=e;break}t.target||(t.target=n.children[n.children.length-1],r=!1)}const o=t.target instanceof Array?t.target:[t.target];for(const e of[...o].reverse()){if(n.children.length<=n.min_items)switch(t.failback){case"none":break;case"clear":return void await e.clear({silent:!0});default:return void n.emit("error",{code:"LIST_MIN_ITEMS_REACHED",message:"Cannot remove items under min_items boundary",options:t})}if(r&&!await e.isEmpty())continue;let o=null,a=null;const s=n.children.filter((n,r,i)=>{if(n.targetNode.isSameNode(e.targetNode)){if("elegant"==t.autoscroll)u(n.targetNode,n.targetNode.offsetHeight);else{const e="self"==t.autoscroll?n:"parent"==t.autoscroll?n.parent:null;e&&e.moveTo()}return o=n,a=i.length-r>1?a=r:0==r?null:r-1,!1}return!0});await n.emit("removeItem_beforeRender",i(i({},t),{},{target:o,targetNode:o.targetNode}),!1),await o.unrender(),n.children=s,await n.renum(),await n.emit("removeItem_afterRender",i(i({},t),{},{target:o,targetNode:o.targetNode}),!1),null!==a&&n.children[a].focus()}}async isEmpty(){const e=this;for(const t of e.children)if(!await t.isEmpty())return!1;return!0}async clear(e){let{focus:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await this.import([],{focus:t,silent:!0})}count(e){let{delta:t=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.children.length+Number(t)}position(e){let{target:t,offset:n=1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Number(null==t?void 0:t.name)+Number(n)}async renum(){const t=this;for(const e in t.children)t.children[e].name=e,t.children[e].updateId();if(t.templates.separator||t.templates.last_separator)for(const e in t.children){const n=e>=t.children.length-1,r=e<=0?null:n?"last_separator":"separator",o=t.children[e].targetNode,i=o.previousElementSibling,a=i&&i.getAttribute("data-role");if(a!==r){a&&i.remove();const e=t.templates[r];r&&e&&o.parentElement.insertBefore(e.cloneNode(!0),o)}if(n){const e=o.nextElementSibling;e&&e.remove()}}if(t.templates.empty_list&&(t.children.length?t.templates.empty_list.remove():await e(ue,t,pe).call(t,t.templates.empty_list)),t.templates.placeholder&&t.max_items){let e=(t.max_items||0)-t.children.length;if(e>0&&0===t.children.length&&t.templates.empty_list&&e--,t.placeholders.length<e)for(let n=t.placeholders.length;n<e;n++){const e=t.templates.placeholder.cloneNode(!0);t.templates.footer?t.templates.footer.before(e):t.targetNode.appendChild(e),t.placeholders.push(e)}else for(let n=t.placeholders.length;n>e;n--)t.placeholders.pop().remove()}t.getTriggers("position").forEach(e=>{const t=e.getTriggerArgs();e.targetNode.innerText=this.position(t.data,i(i({},t),{},{silent:!0}))}),t.getTriggers("count").forEach(e=>{const t=e.getTriggerArgs();e.targetNode.innerText=this.count(t.data,i(i({},t),{},{silent:!0}))})}},({e:[re],c:[ce,oe]}=c(ne,[[ie,2,"export"],[[D,K],2,"import"],[ae,2,"addItem"],[se,2,"removeItem"],[D,2,"clear"],[D,2,"count"],[D,2,"position"]],[J,function(e,t){let{kind:n}=t;if("class"==n){var r;let t,n,o;return n=te("list_mutating"),o="render",r=class extends e{constructor(){super(...arguments),t(this)}async[o](){const e=await super.render(...arguments),t=this;if(t.sortable=!!t.options.sortable,t.templates.item.setAttribute("draggable",t.sortable),t.children.forEach(e=>e.targetNode.setAttribute("dragable",t.sortable)),t.sortable){let e=null,n=null;t.targetNode.addEventListener("dragstart",t=>{null===e?(e=t.target,t.stopPropagation()):t.preventDefault()}),t.targetNode.addEventListener("dragover",e=>e.preventDefault()),t.targetNode.addEventListener("drop",t=>{if(!e)return;let r=t.target;for(;r.parentElement&&r.parentElement!=e.parentElement;)r=r.parentElement;n=r}),t.targetNode.addEventListener("dragend",async()=>{n&&await t.move({from:t.getComponent(e),to:t.getComponent(n)}),e=null,n=null})}return e}async move(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=this;let{from:n,to:r}=e;if(null===r||null===n)return;const o=Number(null==n?void 0:n.name),i=Number(null==r?void 0:r.name);if(o==i)return;if(o<i){const e=[...t.children.slice(o+1,i+1),t.children[o]];t.children.splice(o,i-o+1,...e)}else if(o>i){const e=[t.children[o],...t.children.slice(i,o)];t.children.splice(i,o-i+1,...e)}const a=(o<i?1:-1)>0?"after":"before";r.targetNode[a](n.targetNode),t.renum()}},[t]=c(r,[[n,2,"move"]],[]).e,r}},Q])),oe();class ge extends Y{constructor(){fe(super(...arguments));this.eventHooks.keydown.push(function(e){if(!e.defaultPrevented&&"Enter"===e.originalEvent.key){const t=e.originalEvent.shiftKey;if("TEXTAREA"===e.context.targetNode.tagName&&!e.originalEvent.ctrlKey&&!t)return;let n=t?e.context.find(".-1")||e.context.find("../.-1"):e.context.find(".+1")||e.context.find("../.+1");n&&(n.focus(),e.originalEvent.preventDefault(),e.originalEvent.stopPropagation())}})}async render(){const e=this;if(e.isSingleton=!("INPUT"===e.targetNode.tagName||"SELECT"===e.targetNode.tagName||"TEXTAREA"===e.targetNode.tagName),e.isCheckbox=!e.isSingleton&&"checkbox"==String(e.targetNode.type).toLowerCase(),e.isSingleton){await super.render();const t=Object.values(e.children);if(1!=t.length)throw e.renderError("NOT_A_SINGLETON","Singleton forms are only allowed to contain exactly one"+" data field but ".concat(t.length," found."));const n=t[0];if(e.options.type!==n.options.type)throw e.renderError("SINGLETON_TYPE_MISMATCH","Singleton type (".concat(e.options.type,")")+" does not match child field type (".concat(n.options.type,")."));e.targetFieldNode=n.targetNode}else e.targetFieldNode=e.targetNode}async export(e,t){var n;const r=this;if(r.isSingleton)return await r.children[""].export(e,t);const o=r.targetFieldNode;let i;return i=r.isCheckbox?!!o.checked:"json"===r.options.encoding&&"SELECT"===o.tagName.toUpperCase()&&null===(null===(n=o.options[o.selectedIndex])||void 0===n?void 0:n.getAttribute("value"))?JSON.stringify(o.options[o.selectedIndex].text):o.value,"json"===r.options.encoding?f(i)||null:i}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this;if(n.isSingleton)return await n.children[""].import(e,t);let{focus:r=!0}=t;const o=n.targetFieldNode;if("object"==typeof e&&"input"===n.options.type||"json"===n.options.encoding){e||(e=null);e=("TEXTAREA"===o.tagName.toUpperCase()?JSON.stringify(e,null,4):JSON.stringify(e))||""}if(n.isCheckbox)n.targetNode.checked=!!e;else if("json"===n.options.encoding&&"SELECT"===o.tagName.toUpperCase()){if(n.targetNode.value=e||"null",-1===o.selectedIndex){const t=f(e)||"",n=Array.from(o.options).findIndex(e=>e.text===t);-1!==n&&(o.selectedIndex=n)}}else n.targetNode.value=e;return r&&n.focus(),n.targetNode.value}async isEmpty(){return!(this.isCheckbox?"":await this.export(null,{silent:!0})).trim().length}async clear(e){let{focus:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};await this.import("json"===this.options.encoding?null:"",{focus:t})}}var he;let ye;de=ge,[fe]=c(de,[[[D,W],2,"export"],[[D,K],2,"import"],[D,2,"clear"]],[]).e;class ve extends ge{constructor(){super(...arguments),ye(this)}async render(){await super.render();const e=this,t=e.targetFieldNode.tagName,n=e.targetFieldNode.getAttribute("type");if("INPUT"!=t||"number"!=(n||"number").toLowerCase())throw e.renderError("NOT_A_NUMBER_FIELD",'Number inputs require an INPUT tag of type "number".');n||(e.targetFieldNode.type="number")}async export(){const e=await super.export(...arguments);return this.isSingleton?e:e.length&&!isNaN(e)?Number(e):null}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=typeof e;if(this.isSingleton)return await super.import(e,t);return await super.import("number"==n?e:"string"==n&&e.length&&!isNaN(e)?Number(e):null,t)}async isEmpty(){return null===await this.export(null,{silent:!0})}}var Ne;let be;he=ve,[ye]=c(he,[[D,2,"export"],[D,2,"import"]],[]).e;const we=/T.*/;function Ee(e){return 8==e.length?new Date([e.substring(0,4),e.substring(4,6),e.substring(6,8)].join("-")):10==e.length&&"-"==e[4]&&"-"==e[7]?new Date(e):NaN}function _e(e){return e.toISOString().replace(we,"")}class xe extends ge{constructor(){super(...arguments),be(this)}async render(){await super.render();const e=this,t=e.targetFieldNode.tagName,n=e.targetFieldNode.getAttribute("type");if("INPUT"!=t||"date"!=(n||"date").toLowerCase())throw e.renderError("NOT_A_DATE_FIELD",'Date inputs require an INPUT tag of type "date".');n||(e.targetFieldNode.type="date")}async export(){const e=await super.export(...arguments);if(this.isSingleton)return e;if(!e.length)return null;const t=Ee(e);return isNaN(t)?null:_e(t)}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.isSingleton)return await super.import(e,{focus:t});const n=e instanceof Date?e:"number"==typeof e?new Date(e):e&&"string"==typeof e?Ee(e):NaN;return await super.import(isNaN(n)?null:_e(n),{focus:t})}async isEmpty(){return null===await this.export(null,{silent:!0})}}var ke;let Ae;Ne=xe,[be]=c(Ne,[[D,2,"export"],[D,2,"import"]],[]).e;class Te extends ge{constructor(){Ae(super(...arguments));const e=this;let t=e.parent.children[e.name],n=e;t?(e.targetNode.setAttribute("name",t.sharedNodeName),t.radioButtons.push(e.targetNode),n={}):(t=e,t.sharedNodeName=p(),t.targetNode.setAttribute("name",t.sharedNodeName),t.radioButtons=[t.targetNode]);let r=Oe.bind(t);return e.targetNode.addEventListener("click",r),e.targetNode.addEventListener("keydown",r),n}async render(){await super.render();const e=this,t=e.targetFieldNode.tagName,n=e.targetFieldNode.getAttribute("type");if("INPUT"!=t||"radio"!=(n||"radio").toLowerCase())throw e.renderError("NOT_A_RADIO_FIELD",'Radio inputs require an INPUT tag of type "radio".');n||(e.targetFieldNode.type="radio")}async export(){var e;return(null===(e=this.radioButtons.find(e=>e.checked))||void 0===e?void 0:e.value)||null}async import(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this.radioButtons.find(t=>t.value===e);n?n.checked=!0:this.radioButtons.forEach(e=>e.checked=!1),t&&this.focus()}async isEmpty(){return!(1+this.radioButtons.findIndex(e=>e.checked))}}function Oe(e){if("click"===e.type||"keydown"===e.type&&"Delete"===e.code){var t;const n=this;let r=!0;Object.is(null===(t=n.lastClicked)||void 0===t?void 0:t.target,e.target)&&(r=!n.lastClicked.checked&&"keydown"!==e.type),n.lastClicked={target:e.target,checked:r},e.target.checked=r}}var Ie;let Se;ke=Te,[Ae]=c(ke,[[[D,W],2,"export"],[[D,K],2,"import"]],[]).e;const Le=/^#([a-f0-9]{3}){1,2}$/i,Pe="\n opacity: .5;\n background: repeating-linear-gradient(\n 45deg,\n black,\n black 10px,\n white 10px,\n white 20px\n ),\n black;\n background-blend-mode: difference;\n";class je extends ge{constructor(){Se(super(...arguments)),this.eventHooks.keydown.push(e=>{e.defaultPrevented||"Delete"===e.originalEvent.key&&e.context.clear()})}async render(){await super.render();const e=this;if(e.isSingleton)return;const t=e.targetFieldNode.tagName,n=e.targetFieldNode.getAttribute("type");if("INPUT"!=t||"color"!=(n||"color").toLowerCase())throw e.renderError("NOT_A_COLOR_FIELD",'Color inputs require an INPUT tag of type "color".');n||(e.targetFieldNode.type="color");const r=e.targetFieldNode.getAttribute("value");e.isDefined=null!==r&&""!==r.trim(),e.defaultStyleAttr=e.targetFieldNode.getAttribute("style")+";",e.isDefined||e.targetFieldNode.setAttribute("style",e.defaultStyleAttr+Pe);const o=t=>{"Enter"!==t.code&&"Space"!==t.Code&&void 0!==t.code||(e.isDefined=!0,e.targetFieldNode.setAttribute("style",e.defaultStyleAttr))};e.targetFieldNode.addEventListener("keydown",o),e.targetFieldNode.addEventListener("click",o),e.targetFieldNode.addEventListener("change",o)}async export(){let e=await super.export(...arguments);return this.isSingleton||(e=this.isDefined&&e.match(Le)?e.toLowerCase():null),e}async import(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=this;r.isSingleton||(null!==t&&t.match(Le)?(r.isDefined=!0,r.targetFieldNode.setAttribute("style",r.defaultStyleAttr)):(r.isDefined=!1,r.targetFieldNode.setAttribute("style",r.defaultStyleAttr+Pe))),4==(null===(e=t)||void 0===e?void 0:e.length)&&(t="#".concat(t[1]).concat(t[1]).concat(t[2]).concat(t[2]).concat(t[3]).concat(t[3]));const o=await super.import(t,n);return r.isDefined?o:null}async isEmpty(){return null===await this.export(null,{silent:!0})}}Ie=je,[Se]=c(Ie,[[D,2,"export"],[D,2,"import"]],[]).e;const Ce=["customActions"];for(const[e,t]of Object.entries({trigger:R,label:B,form:Y,list:ce,input:ge,number:ve,date:xe,radio:Te,color:je}))P(e,t);class Fe extends Y{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{customActions:n={}}=t;const r=i(i({},a(t,Ce)),{},{name:"",type:"form"});super(e,r,null);const o=this;o.setNodeOptions(o.targetNode,r),o.actions=i(i({},o.actions),Object.fromEntries(Object.entries(n).map(e=>{let[t,n]=e;return[t,n.bind(o)]}))),o.targetNode.addEventListener("click",M.bind(o),!0),new j(o)}async render(){this.targetNode.setAttribute("aria-busy","true"),await super.render(),this.targetNode.setAttribute("aria-busy","false")}}return Fe.createType=P,Fe});//# sourceMappingURL=SmarkForm.umd.js.map