@ecopages/radiant-ui 0.1.0-rc.16 → 0.1.0-rc.17

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.
@@ -1,3 +1,4 @@
1
+ import type { FormStore } from './form-store';
1
2
  import type { FieldError, FieldRegistration, RegisterOptions } from './types';
2
3
  /** UI slice for one field, computed by `<rui-form>` from the store. */
3
4
  export type FormFieldPresentation = {
@@ -15,6 +16,8 @@ export type FormContextActions = {
15
16
  export type FormContextValue = {
16
17
  /** False until `<rui-form>` has created its store and bound real actions. */
17
18
  ready: boolean;
19
+ /** The live form store, available when ready; never serialized into hydration markup. */
20
+ store: FormStore | undefined;
18
21
  /** Bumps when form store state changes. */
19
22
  revision: number;
20
23
  /** Per-field messages and invalid flags; only the form writes this map. */
@@ -61,6 +61,9 @@ export type RuiFormInvalidDetail<T extends FieldValues = FieldValues> = {
61
61
  * `defaultValues` and `resolver` are object props — they only reach the element via
62
62
  * `prop:` bindings from the `RuiForm` view, not plain attributes. The host queries
63
63
  * `[data-ref="form"]`.
64
+ *
65
+ * `formContext.store` exposes the live store to scoped consumers once ready.
66
+ * Hydration payloads contain presentation only, never the store or its actions.
64
67
  */
65
68
  export declare class RuiForm extends RadiantElement {
66
69
  formProvider: ContextProvider<typeof formContext>;
@@ -1,2 +1,2 @@
1
- import{jsx as lt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as it,customElement as jt,event as nt,onEvent as ee,onUpdated as st,prop as A}from"@ecopages/radiant";import{provideContext as Ut}from"@ecopages/radiant/context";import{createContext as dt}from"@ecopages/radiant/context";var K=dt(Symbol.for("rui-form-context"));function E(t,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:t}function x(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function ft(t,e,r,i){if(r)for(let n of[ct,ht,mt,pt]){let o=await n(e,r,i);if(o)return o}}function ct(t,e){let r=t==null||t===""||t===!1||Array.isArray(t)&&t.length===0;return e.required&&r?E("This field is required",e.required)??"This field is required":void 0}function ht(t,e){let r=typeof t=="number"?t:typeof t=="string"&&t!==""?Number(t):void 0;if(!(r===void 0||Number.isNaN(r))){if(e.min!==void 0&&r<x(e.min))return E(`Minimum value is ${x(e.min)}`,e.min);if(e.max!==void 0&&r>x(e.max))return E(`Maximum value is ${x(e.max)}`,e.max)}}function mt(t,e){let r=t==null?"":String(t);if(e.minLength!==void 0&&r.length<x(e.minLength))return E(`Minimum length is ${x(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&r.length>x(e.maxLength))return E(`Maximum length is ${x(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!x(e.pattern).test(r))return E("Invalid format",e.pattern)??"Invalid format"}async function pt(t,e,r){if(!e.validate)return;let i=typeof e.validate=="function"?[e.validate]:Object.values(e.validate);for(let n of i){let o=await n(t,r);if(o!==!0&&o!==void 0)return o===!1?"Invalid value":String(o)}}async function pe(t,e,r){let i=r??Object.keys(e.fields),n={};for(let o of i){let c=e.fields[o]?.rules,s=await ft(o,t[o],c,t);s&&(n[o]={type:"validation",message:s})}return Object.keys(n).length>0?{values:{},errors:n}:{values:t,errors:{}}}function Q(){return(t,e,r)=>pe(t,e,r.names)}function be(t){return typeof t=="function"?t:Q()}var L=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=be(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=be(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let r=this.fields.get(e.name),i={...e,rules:e.rules??r?.rules,defaultValue:e.defaultValue??r?.defaultValue,getRules:e.getRules??r?.getRules};return this.fields.set(e.name,i),this.values[e.name]===void 0&&i.defaultValue!==void 0&&(this.values={...this.values,[e.name]:i.defaultValue}),i.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===i&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,r){let i=this.fields.get(e);i&&(r.rules!==void 0&&(i.rules=r.rules),r.defaultValue!==void 0&&(i.defaultValue=r.defaultValue))}getValues(){let e={...this.values};for(let[r,i]of this.fields)e[r]=i.getValue();return e}setValue(e,r,i){this.values={...this.values,[e]:r},this.fields.get(String(e))?.setValue(r),i?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),i?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let r={...this.errors};delete r[e],this.errors=r,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),r=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:r===0}}async validateField(e){let r=this.getValues(),n=(await this.resolver(r,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,o={...this.errors};return n?o[e]={type:"validation",message:n}:delete o[e],this.errors=o,this.notify(),!n}async validateAll(){let e=this.getValues(),r=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=r.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,r){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return r==="change";case"onBlur":return r==="blur";case"onTouched":return r==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let r=this.fields.get(e);if(!r)return;let i=r.getValue();this.values={...this.values,[e]:i},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,r){this.isSubmitting=!0,this.isSubmitted=!0;for(let n of this.fields.keys())this.touched={...this.touched,[n]:!0};this.notify();let i=await this.validateAll();if(this.isSubmitting=!1,this.notify(),i){await e(this.getValues());return}r?.(this.errors)}reset(e){let r=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...r},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let i of this.fields.values())i.setValue(this.values[i.name]);this.notify()}collectFieldDefaults(){let e={};for(let[r,i]of this.fields)i.defaultValue!==void 0&&(e[r]=i.defaultValue);return e}buildResolverFields(){let e={};for(let[r,i]of this.fields){let n=i.getRules?.()??i.rules;e[r]={rules:n}}return e}};function ve(t){return t?Se(t.split(",")):[]}function bt(t){return t.join(",")}var ge={fromAttribute:t=>ve(t),toAttribute:t=>t.length>0?bt(t):null,fromProperty:t=>Array.isArray(t)?Se(t.map(String)):typeof t=="string"?ve(t):[]};function ye(t){return t?t.split(",").map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function vt(t){return t.join(",")}var xe={fromAttribute:t=>ye(t),toAttribute:t=>t.length>0?vt(t):null,fromProperty:t=>Array.isArray(t)?t.map(Number).filter(e=>Number.isFinite(e)):typeof t=="number"&&Number.isFinite(t)?[t]:typeof t=="string"?ye(t):[]};function Se(t){return[...new Set(t.map(e=>e.trim()).filter(Boolean))]}var X="data-rui-control",yt="data-rui-field-managed",gt="data-rui-field-label",xt="data-rui-field-description",St="data-rui-field-error";var Y="data-default-values",Ve='[data-ref="field"]',Ee=new Set(["rui-combobox","rui-date-field","rui-date-range-picker","rui-select","rui-tag-group","rui-checkbox","rui-checkbox-group","rui-switch","rui-radio-group","rui-slider","rui-knob","rui-number-field","rui-listbox"]),Fe=`[${X}], ${Array.from(Ee).join(", ")}`,_t=Array.from(Ee).join(", ");function Rt(t){return t.localName==="rui-listbox"&&(t.hasAttribute("embedded")||Reflect.get(t,"embedded")===!0)}function At(t){return t.localName==="input"||t.localName==="textarea"}function Ce(t){return t.localName==="input"}function Te(t){return t.localName==="textarea"}var W={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",r)}},_e={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let r=t.getAttribute("value");return r==null||r===""?"":Number(r)},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",e)}},Re={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}};function we(t,e){let r=Reflect.get(t,"value");return r!==void 0&&e.fromProperty?e.fromProperty(r):e.fromAttribute?e.fromAttribute(t.getAttribute("value")):r}function Le(t,e){Reflect.set(t,"value",e)}var k={read:t=>we(t,ge),write:Le},Vt={read:t=>we(t,xe),write:Le},U=new Map([["rui-checkbox",Re],["rui-switch",Re],["rui-combobox",k],["rui-date-field",W],["rui-date-range-picker",W],["rui-select",k],["rui-radio-group",W],["rui-checkbox-group",k],["rui-listbox",k],["rui-tag-group",k],["rui-slider",Vt],["rui-knob",_e],["rui-number-field",_e]]);function Et(t,e){let r=t,i=new Set,n=s=>{i.has(s)||(i.add(s),e(s))};if(typeof r.getSlotElements=="function")for(let s of r.getSlotElements())n(s);let o=t.querySelector(Ve)??t;for(let s of Array.from(o.children))n(s);for(let s of o.querySelectorAll("*"))n(s);for(let s of Array.from(t.children))n(s);let c=t.shadowRoot;if(c)for(let s of Array.from(c.children))n(s)}function Ae(t){let e=t.filter(r=>!Rt(r));return e.length===0?null:e.find(r=>!e.some(i=>i!==r&&i.contains(r)))??null}function Ft(t){let e=[];return Et(t,r=>{r instanceof HTMLElement&&r.matches(Fe)&&e.push(r)}),e}function Ct(t){let e=t.querySelector(Ve);return e instanceof HTMLElement?Array.from(e.querySelectorAll(Fe)).filter(r=>t.contains(r)):[]}function Tt(t){let e=Ae(Ct(t));return e||Ae(Ft(t))}function wt(t){if(Ce(t)){let r=q(t),i=r===t?void 0:U.get(r.localName);return i?i.read(r):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(Te(t))return t.value;let e=q(t);return U.get(e.localName)?.read(e)??e.getAttribute("value")??""}function Lt(t,e){if(Ce(t)){let i=q(t),n=i===t?void 0:U.get(i.localName);if(n){n.write(i,e);return}if(t.type==="checkbox"){t.checked=!!e;let o=t.closest("rui-checkbox, rui-switch");o&&(e?o.setAttribute("checked",""):o.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(Te(t)){t.value=e==null?"":String(e);return}let r=q(t);U.get(r.localName)?.write(r,e)}function q(t){return t.hasAttribute(X)?t.closest(_t)??t:t}var kt=/^[A-Za-z][A-Za-z0-9_-]*$/;function ke(t){return kt.test(t)}function Nt(t){let e=t.trim();if(ke(e))return e;let r=`rui-${e}`;return e&&ke(r)?r:"rui"}function Ne(t){let e=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${Nt(t)}-${e}`}var Oe,De,Ie,Me,je,Ue,qe,Pe,Be,$e,ze,He,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,et,tt;function Ot(t,e,r,i,n,o){var c,s,F,P,N,B,C,te=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,$=Object.create,ie=[$(null),$(null)],ne=e.length;function O(u,b,m){return function(a,l){b&&(l=a,a=t);for(var v=0;v<u.length;v++)l=u[v].apply(a,m?[l]:[]);return m?l:a}}function S(u,b,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(b+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function se(u,b,m,a,l,v,R,p,y,g,ue){function z(f){if(!ue(f))throw new TypeError("Attempted to access private element on non-instance")}var H=[].concat(b[0]),ae=b[3],G=!R,T=l===1,le=l===3,de=l===4,D=l===2;function I(f,V,he){return function(j,me){return V&&(me=j,j=u),he&&he(j),d[f].call(j,me)}}if(!G){var d={},J=[],_=le?"get":de||T?"set":"value";if(y?(g||T?d={get:rt(function(){return ae(this)},a,"get"),set:function(f){b[4](this,f)}}:d[_]=ae,g||rt(d[_],a,D?"":_)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((s=ie[+p][a])&&(s^l)!==7)throw Error("Decorating two elements with the same name ("+d[_].name+") is not supported yet");ie[+p][a]=l<3?1:l}}for(var h=u,M=H.length-1;M>=0;M-=m?2:1){var fe=S(H[M],"A decorator","be",!0),ce=m?H[M-1]:void 0,Z={},w={kind:["field","accessor","method","getter","setter","class"][l],name:a,metadata:c,addInitializer:function(f,V){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(V,"An initializer","be",!0),v.push(V)}.bind(null,Z)};if(G)s=fe.call(ce,h,w),Z.v=1,S(s,"class decorators","return")&&(h=s);else if(w.static=p,w.private=y,s=w.access={has:y?ue.bind():function(f){return a in f}},de||(s.get=y?D?function(f){return z(f),d.value}:I("get",0,z):function(f){return f[a]}),D||le||(s.set=y?I("set",0,z):function(f,V){f[a]=V}),h=fe.call(ce,T?{get:d.get,set:d.set}:d[_],w),Z.v=1,T){if(typeof h=="object"&&h)(s=S(h.get,"accessor.get"))&&(d.get=s),(s=S(h.set,"accessor.set"))&&(d.set=s),(s=S(h.init,"accessor.init"))&&J.unshift(s);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(h,(g?"field":"method")+" decorators","return")&&(g?J.unshift(h):d[_]=h)}return l<2&&R.push(O(J,p,1),O(v,p,0)),g||G||(y?T?R.splice(-1,0,I("get",p),I("set",p)):R.push(D?d[_]:S.call.bind(d[_])):re(u,a,d)),h}function oe(u){return re(u,te,{configurable:!0,enumerable:!0,value:c})}return o!==void 0&&(c=o[te]),c=$(c??null),N=[],B=function(u){u&&N.push(O(u))},C=function(u,b){for(var m=0;m<r.length;m++){var a=r[m],l=a[1],v=7&l;if((8&l)==u&&!v==b){var R=a[2],p=!!a[3],y=16&l;se(u?t:t.prototype,a,y,p?"#"+R:Dt(R),v,v<2?[]:u?P=P||[]:F=F||[],N,!!u,p,b,u&&p?function(g){return Mt(g)===t}:n)}}},C(8,0),C(0,0),C(8,1),C(0,1),B(F),B(P),s=N,ne||oe(t),{e:s,get c(){var u=[];return ne&&[oe(t=se(t,[e],i,t.name,5,u)),O(u,1)]}}}function Dt(t){var e=It(t,"string");return typeof e=="symbol"?e:e+""}function It(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var i=r.call(t,e||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function rt(t,e,r){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:r?r+" "+e:e})}catch{}return t}function Mt(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var ot=()=>{},qt={register:()=>ot,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>ot},at,ut=class extends it{static{({e:[Ie,Me,je,Ue,qe,Pe,Be,$e,ze,He,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,et,tt,Oe],c:[at,De]}=Ot(this,[jt("rui-form")],[[Ut({context:K,initialValue:{ready:!1,revision:0,fields:{},errors:{},actions:qt}}),0,"formProvider"],[nt({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[nt({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[A({type:Object,defaultValue:{}}),0,"defaultValues"],[A({type:String,attribute:Y}),0,"defaultValuesData"],[A({type:Object}),0,"resolver"],[A({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[A({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[A({type:String,reflect:!0}),0,"action"],[A({type:String,reflect:!0}),0,"method"],[st(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[st(["resolver"]),2,"syncResolver"],[ee({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[ee({ref:"form",type:"submit"}),2,"onNativeSubmit"],[ee({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,it))}formProvider=(Oe(this),Ie(this));submitEvent=(Me(this),je(this));invalidEvent=(Ue(this),qe(this));defaultValues=(Pe(this),Be(this));defaultValuesData=($e(this),ze(this));resolver=(He(this),Ge(this));mode=(Je(this),Ze(this));reValidateMode=(Ke(this),Qe(this));action=(We(this),Xe(this));method=(Ye(this),et(this));onSubmit=void tt(this);store;unsubscribeStore;nativeFormId=Ne("rui-form");lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let i=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{i(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,r)=>{this.ensureStore().updateFieldOptions(e,r)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0})}onConnected(){this.wireOrphanSubmitButtons()}queryNativeForm(){return this.getRef("form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let r of this.querySelectorAll("button[type=submit]"))e.contains(r)||r.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(async r=>{if(this.submitEvent.emit({values:r}),typeof this.onSubmit=="function"){await this.onSubmit(r);return}this.hasNativeSubmission()&&this.queryNativeForm()?.submit()},r=>{this.invalidEvent.emit({errors:r})})}hasNativeSubmission(){return typeof this.onSubmit!="function"&&(this.getAttribute("action")!==null||this.getAttribute("method")!==null)}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(Y);if(!e)return this.defaultValues??{};try{let r=JSON.parse(e);return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store?this.store:(this.store=new L({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()}),this.unsubscribeStore=this.store.subscribe(()=>this.publishFormContext()),this.store)}buildFieldPresentations(e){let r={};for(let i of e.getRegisteredFieldNames()){let n=e.getFieldError(i),o=e.shouldDisplayFieldError(i);r[i]={error:o?n:void 0,invalid:!!(o&&n)}}return r}publishFormContext(e){let r=this.store;if(!r)return;let i=r.getRevision();if(!e?.force&&i===this.lastPublishedRevision)return;this.lastPublishedRevision=i;let n={ready:!0,revision:i,fields:this.buildFieldPresentations(r),errors:{...r.errors},actions:this.formActions};this.lastPublishedContext=n,this.formProvider.setContext(n);for(let o of this.presentationListeners)o(n)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}static{De()}};function Pt({children:t,defaultValues:e,defaultValuesData:r,resolver:i,reValidateMode:n,onSubmit:o,action:c,method:s,...F}){return lt("rui-form",{...F,action:c,method:s,reValidateMode:n,"attr:revalidate-mode":n,"prop:defaultValues":e,"prop:resolver":i,"prop:onSubmit":o,data:{defaultValues:r??(e!==void 0?JSON.stringify(e):void 0)},children:lt("form",{class:"rui-form","data-ref":"form",noValidate:!0,action:c,method:s,children:t})})}export{L as FormStore,X as RUI_CONTROL_ATTR,xt as RUI_FIELD_DESCRIPTION_ATTR,St as RUI_FIELD_ERROR_ATTR,gt as RUI_FIELD_LABEL_ATTR,yt as RUI_FIELD_MANAGED_ATTR,Pt as RuiForm,at as RuiFormElement,Q as createRulesResolver,Tt as findFieldControl,K as formContext,At as isNativeTextControl,wt as readControlValue,pe as runRulesResolver,Lt as writeControlValue};
1
+ import{jsx as lt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as it,customElement as jt,event as nt,onEvent as ee,onUpdated as st,prop as A}from"@ecopages/radiant";import{provideContext as Ut}from"@ecopages/radiant/context";import{createContext as dt}from"@ecopages/radiant/context";var K=dt(Symbol.for("rui-form-context"));function E(t,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:t}function x(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function ft(t,e,r,i){if(r)for(let n of[ct,ht,mt,pt]){let o=await n(e,r,i);if(o)return o}}function ct(t,e){let r=t==null||t===""||t===!1||Array.isArray(t)&&t.length===0;return e.required&&r?E("This field is required",e.required)??"This field is required":void 0}function ht(t,e){let r=typeof t=="number"?t:typeof t=="string"&&t!==""?Number(t):void 0;if(!(r===void 0||Number.isNaN(r))){if(e.min!==void 0&&r<x(e.min))return E(`Minimum value is ${x(e.min)}`,e.min);if(e.max!==void 0&&r>x(e.max))return E(`Maximum value is ${x(e.max)}`,e.max)}}function mt(t,e){let r=t==null?"":String(t);if(e.minLength!==void 0&&r.length<x(e.minLength))return E(`Minimum length is ${x(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&r.length>x(e.maxLength))return E(`Maximum length is ${x(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!x(e.pattern).test(r))return E("Invalid format",e.pattern)??"Invalid format"}async function pt(t,e,r){if(!e.validate)return;let i=typeof e.validate=="function"?[e.validate]:Object.values(e.validate);for(let n of i){let o=await n(t,r);if(o!==!0&&o!==void 0)return o===!1?"Invalid value":String(o)}}async function pe(t,e,r){let i=r??Object.keys(e.fields),n={};for(let o of i){let c=e.fields[o]?.rules,s=await ft(o,t[o],c,t);s&&(n[o]={type:"validation",message:s})}return Object.keys(n).length>0?{values:{},errors:n}:{values:t,errors:{}}}function Q(){return(t,e,r)=>pe(t,e,r.names)}function be(t){return typeof t=="function"?t:Q()}var L=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=be(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=be(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let r=this.fields.get(e.name),i={...e,rules:e.rules??r?.rules,defaultValue:e.defaultValue??r?.defaultValue,getRules:e.getRules??r?.getRules};return this.fields.set(e.name,i),this.values[e.name]===void 0&&i.defaultValue!==void 0&&(this.values={...this.values,[e.name]:i.defaultValue}),i.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===i&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,r){let i=this.fields.get(e);i&&(r.rules!==void 0&&(i.rules=r.rules),r.defaultValue!==void 0&&(i.defaultValue=r.defaultValue))}getValues(){let e={...this.values};for(let[r,i]of this.fields)e[r]=i.getValue();return e}setValue(e,r,i){this.values={...this.values,[e]:r},this.fields.get(String(e))?.setValue(r),i?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),i?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let r={...this.errors};delete r[e],this.errors=r,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),r=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:r===0}}async validateField(e){let r=this.getValues(),n=(await this.resolver(r,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,o={...this.errors};return n?o[e]={type:"validation",message:n}:delete o[e],this.errors=o,this.notify(),!n}async validateAll(){let e=this.getValues(),r=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=r.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,r){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return r==="change";case"onBlur":return r==="blur";case"onTouched":return r==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let r=this.fields.get(e);if(!r)return;let i=r.getValue();this.values={...this.values,[e]:i},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,r){this.isSubmitting=!0,this.isSubmitted=!0;for(let n of this.fields.keys())this.touched={...this.touched,[n]:!0};this.notify();let i=await this.validateAll();if(this.isSubmitting=!1,this.notify(),i){await e(this.getValues());return}r?.(this.errors)}reset(e){let r=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...r},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let i of this.fields.values())i.setValue(this.values[i.name]);this.notify()}collectFieldDefaults(){let e={};for(let[r,i]of this.fields)i.defaultValue!==void 0&&(e[r]=i.defaultValue);return e}buildResolverFields(){let e={};for(let[r,i]of this.fields){let n=i.getRules?.()??i.rules;e[r]={rules:n}}return e}};function ve(t){return t?Se(t.split(",")):[]}function bt(t){return t.join(",")}var ge={fromAttribute:t=>ve(t),toAttribute:t=>t.length>0?bt(t):null,fromProperty:t=>Array.isArray(t)?Se(t.map(String)):typeof t=="string"?ve(t):[]};function ye(t){return t?t.split(",").map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function vt(t){return t.join(",")}var xe={fromAttribute:t=>ye(t),toAttribute:t=>t.length>0?vt(t):null,fromProperty:t=>Array.isArray(t)?t.map(Number).filter(e=>Number.isFinite(e)):typeof t=="number"&&Number.isFinite(t)?[t]:typeof t=="string"?ye(t):[]};function Se(t){return[...new Set(t.map(e=>e.trim()).filter(Boolean))]}var X="data-rui-control",yt="data-rui-field-managed",gt="data-rui-field-label",xt="data-rui-field-description",St="data-rui-field-error";var Y="data-default-values",Ve='[data-ref="field"]',Ee=new Set(["rui-combobox","rui-date-field","rui-date-range-picker","rui-select","rui-tag-group","rui-checkbox","rui-checkbox-group","rui-switch","rui-radio-group","rui-slider","rui-knob","rui-number-field","rui-listbox"]),Fe=`[${X}], ${Array.from(Ee).join(", ")}`,_t=Array.from(Ee).join(", ");function Rt(t){return t.localName==="rui-listbox"&&(t.hasAttribute("embedded")||Reflect.get(t,"embedded")===!0)}function At(t){return t.localName==="input"||t.localName==="textarea"}function Ce(t){return t.localName==="input"}function Te(t){return t.localName==="textarea"}var W={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",r)}},_e={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let r=t.getAttribute("value");return r==null||r===""?"":Number(r)},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",e)}},Re={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}};function we(t,e){let r=Reflect.get(t,"value");return r!==void 0&&e.fromProperty?e.fromProperty(r):e.fromAttribute?e.fromAttribute(t.getAttribute("value")):r}function Le(t,e){Reflect.set(t,"value",e)}var O={read:t=>we(t,ge),write:Le},Vt={read:t=>we(t,xe),write:Le},U=new Map([["rui-checkbox",Re],["rui-switch",Re],["rui-combobox",O],["rui-date-field",W],["rui-date-range-picker",W],["rui-select",O],["rui-radio-group",W],["rui-checkbox-group",O],["rui-listbox",O],["rui-tag-group",O],["rui-slider",Vt],["rui-knob",_e],["rui-number-field",_e]]);function Et(t,e){let r=t,i=new Set,n=s=>{i.has(s)||(i.add(s),e(s))};if(typeof r.getSlotElements=="function")for(let s of r.getSlotElements())n(s);let o=t.querySelector(Ve)??t;for(let s of Array.from(o.children))n(s);for(let s of o.querySelectorAll("*"))n(s);for(let s of Array.from(t.children))n(s);let c=t.shadowRoot;if(c)for(let s of Array.from(c.children))n(s)}function Ae(t){let e=t.filter(r=>!Rt(r));return e.length===0?null:e.find(r=>!e.some(i=>i!==r&&i.contains(r)))??null}function Ft(t){let e=[];return Et(t,r=>{r instanceof HTMLElement&&r.matches(Fe)&&e.push(r)}),e}function Ct(t){let e=t.querySelector(Ve);return e instanceof HTMLElement?Array.from(e.querySelectorAll(Fe)).filter(r=>t.contains(r)):[]}function Tt(t){let e=Ae(Ct(t));return e||Ae(Ft(t))}function wt(t){if(Ce(t)){let r=q(t),i=r===t?void 0:U.get(r.localName);return i?i.read(r):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(Te(t))return t.value;let e=q(t);return U.get(e.localName)?.read(e)??e.getAttribute("value")??""}function Lt(t,e){if(Ce(t)){let i=q(t),n=i===t?void 0:U.get(i.localName);if(n){n.write(i,e);return}if(t.type==="checkbox"){t.checked=!!e;let o=t.closest("rui-checkbox, rui-switch");o&&(e?o.setAttribute("checked",""):o.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(Te(t)){t.value=e==null?"":String(e);return}let r=q(t);U.get(r.localName)?.write(r,e)}function q(t){return t.hasAttribute(X)?t.closest(_t)??t:t}var Ot=/^[A-Za-z][A-Za-z0-9_-]*$/;function Oe(t){return Ot.test(t)}function kt(t){let e=t.trim();if(Oe(e))return e;let r=`rui-${e}`;return e&&Oe(r)?r:"rui"}function ke(t){let e=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${kt(t)}-${e}`}var Ne,De,Ie,Me,je,Ue,qe,Pe,Be,$e,ze,He,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,et,tt;function Nt(t,e,r,i,n,o){var c,s,F,P,k,B,C,te=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,$=Object.create,ie=[$(null),$(null)],ne=e.length;function N(u,b,m){return function(a,l){b&&(l=a,a=t);for(var v=0;v<u.length;v++)l=u[v].apply(a,m?[l]:[]);return m?l:a}}function S(u,b,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(b+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function se(u,b,m,a,l,v,R,p,y,g,ue){function z(f){if(!ue(f))throw new TypeError("Attempted to access private element on non-instance")}var H=[].concat(b[0]),ae=b[3],G=!R,T=l===1,le=l===3,de=l===4,D=l===2;function I(f,V,he){return function(j,me){return V&&(me=j,j=u),he&&he(j),d[f].call(j,me)}}if(!G){var d={},J=[],_=le?"get":de||T?"set":"value";if(y?(g||T?d={get:rt(function(){return ae(this)},a,"get"),set:function(f){b[4](this,f)}}:d[_]=ae,g||rt(d[_],a,D?"":_)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((s=ie[+p][a])&&(s^l)!==7)throw Error("Decorating two elements with the same name ("+d[_].name+") is not supported yet");ie[+p][a]=l<3?1:l}}for(var h=u,M=H.length-1;M>=0;M-=m?2:1){var fe=S(H[M],"A decorator","be",!0),ce=m?H[M-1]:void 0,Z={},w={kind:["field","accessor","method","getter","setter","class"][l],name:a,metadata:c,addInitializer:function(f,V){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(V,"An initializer","be",!0),v.push(V)}.bind(null,Z)};if(G)s=fe.call(ce,h,w),Z.v=1,S(s,"class decorators","return")&&(h=s);else if(w.static=p,w.private=y,s=w.access={has:y?ue.bind():function(f){return a in f}},de||(s.get=y?D?function(f){return z(f),d.value}:I("get",0,z):function(f){return f[a]}),D||le||(s.set=y?I("set",0,z):function(f,V){f[a]=V}),h=fe.call(ce,T?{get:d.get,set:d.set}:d[_],w),Z.v=1,T){if(typeof h=="object"&&h)(s=S(h.get,"accessor.get"))&&(d.get=s),(s=S(h.set,"accessor.set"))&&(d.set=s),(s=S(h.init,"accessor.init"))&&J.unshift(s);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(h,(g?"field":"method")+" decorators","return")&&(g?J.unshift(h):d[_]=h)}return l<2&&R.push(N(J,p,1),N(v,p,0)),g||G||(y?T?R.splice(-1,0,I("get",p),I("set",p)):R.push(D?d[_]:S.call.bind(d[_])):re(u,a,d)),h}function oe(u){return re(u,te,{configurable:!0,enumerable:!0,value:c})}return o!==void 0&&(c=o[te]),c=$(c??null),k=[],B=function(u){u&&k.push(N(u))},C=function(u,b){for(var m=0;m<r.length;m++){var a=r[m],l=a[1],v=7&l;if((8&l)==u&&!v==b){var R=a[2],p=!!a[3],y=16&l;se(u?t:t.prototype,a,y,p?"#"+R:Dt(R),v,v<2?[]:u?P=P||[]:F=F||[],k,!!u,p,b,u&&p?function(g){return Mt(g)===t}:n)}}},C(8,0),C(0,0),C(8,1),C(0,1),B(F),B(P),s=k,ne||oe(t),{e:s,get c(){var u=[];return ne&&[oe(t=se(t,[e],i,t.name,5,u)),N(u,1)]}}}function Dt(t){var e=It(t,"string");return typeof e=="symbol"?e:e+""}function It(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var i=r.call(t,e||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function rt(t,e,r){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:r?r+" "+e:e})}catch{}return t}function Mt(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var ot=()=>{},qt={register:()=>ot,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>ot},at,ut=class extends it{static{({e:[Ie,Me,je,Ue,qe,Pe,Be,$e,ze,He,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,et,tt,Ne],c:[at,De]}=Nt(this,[jt("rui-form")],[[Ut({context:K,initialValue:{ready:!1,store:void 0,revision:0,fields:{},errors:{},actions:qt},hydrate:Object,serialize:({revision:e,fields:r,errors:i})=>({ready:!1,revision:e,fields:r,errors:i})}),0,"formProvider"],[nt({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[nt({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[A({type:Object,defaultValue:{}}),0,"defaultValues"],[A({type:String,attribute:Y}),0,"defaultValuesData"],[A({type:Object}),0,"resolver"],[A({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[A({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[A({type:String,reflect:!0}),0,"action"],[A({type:String,reflect:!0}),0,"method"],[st(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[st(["resolver"]),2,"syncResolver"],[ee({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[ee({ref:"form",type:"submit"}),2,"onNativeSubmit"],[ee({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,it))}formProvider=(Ne(this),Ie(this));submitEvent=(Me(this),je(this));invalidEvent=(Ue(this),qe(this));defaultValues=(Pe(this),Be(this));defaultValuesData=($e(this),ze(this));resolver=(He(this),Ge(this));mode=(Je(this),Ze(this));reValidateMode=(Ke(this),Qe(this));action=(We(this),Xe(this));method=(Ye(this),et(this));onSubmit=void tt(this);store;unsubscribeStore;nativeFormId=ke("rui-form");lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let i=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{i(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,r)=>{this.ensureStore().updateFieldOptions(e,r)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0})}onConnected(){this.wireOrphanSubmitButtons()}queryNativeForm(){return this.getRef("form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let r of this.querySelectorAll("button[type=submit]"))e.contains(r)||r.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(async r=>{if(this.submitEvent.emit({values:r}),typeof this.onSubmit=="function"){await this.onSubmit(r);return}this.hasNativeSubmission()&&this.queryNativeForm()?.submit()},r=>{this.invalidEvent.emit({errors:r})})}hasNativeSubmission(){return typeof this.onSubmit!="function"&&(this.getAttribute("action")!==null||this.getAttribute("method")!==null)}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(Y);if(!e)return this.defaultValues??{};try{let r=JSON.parse(e);return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store||(this.store=new L({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})),this.unsubscribeStore??=this.store.subscribe(()=>this.publishFormContext()),this.store}buildFieldPresentations(e){let r={};for(let i of e.getRegisteredFieldNames()){let n=e.getFieldError(i),o=e.shouldDisplayFieldError(i);r[i]={error:o?n:void 0,invalid:!!(o&&n)}}return r}publishFormContext(e){let r=this.store;if(!r)return;let i=r.getRevision();if(!e?.force&&i===this.lastPublishedRevision)return;this.lastPublishedRevision=i;let n={ready:!0,store:r,revision:i,fields:this.buildFieldPresentations(r),errors:{...r.errors},actions:this.formActions};this.lastPublishedContext=n,this.formProvider.setContext(n);for(let o of this.presentationListeners)o(n)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}static{De()}};function Pt({children:t,defaultValues:e,defaultValuesData:r,resolver:i,reValidateMode:n,onSubmit:o,action:c,method:s,...F}){return lt("rui-form",{...F,action:c,method:s,reValidateMode:n,"attr:revalidate-mode":n,"prop:defaultValues":e,"prop:resolver":i,"prop:onSubmit":o,data:{defaultValues:r??(e!==void 0?JSON.stringify(e):void 0)},children:lt("form",{class:"rui-form","data-ref":"form",noValidate:!0,action:c,method:s,children:t})})}export{L as FormStore,X as RUI_CONTROL_ATTR,xt as RUI_FIELD_DESCRIPTION_ATTR,St as RUI_FIELD_ERROR_ATTR,gt as RUI_FIELD_LABEL_ATTR,yt as RUI_FIELD_MANAGED_ATTR,Pt as RuiForm,at as RuiFormElement,Q as createRulesResolver,Tt as findFieldControl,K as formContext,At as isNativeTextControl,wt as readControlValue,pe as runRulesResolver,Lt as writeControlValue};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/ui/form/form.tsx", "../../../../src/components/ui/form/form.script.tsx", "../../../../src/components/ui/form/form-context.ts", "../../../../src/components/ui/form/resolvers.ts", "../../../../src/components/ui/form/form-store.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/form/control-protocol.ts", "../../../../src/lib/unique-id.ts"],
4
- "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport \"./form.script\";\nexport function RuiForm({\n children,\n defaultValues,\n defaultValuesData,\n resolver,\n reValidateMode,\n onSubmit,\n action,\n method,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-form\", {\n ...props,\n action,\n method,\n reValidateMode,\n \"attr:revalidate-mode\": reValidateMode,\n \"prop:defaultValues\": defaultValues,\n \"prop:resolver\": resolver,\n \"prop:onSubmit\": onSubmit,\n data: {\n defaultValues: defaultValuesData ?? (defaultValues !== void 0 ? JSON.stringify(defaultValues) : void 0)\n },\n children: /* @__PURE__ */jsx(\"form\", {\n class: \"rui-form\",\n \"data-ref\": \"form\",\n noValidate: true,\n action,\n method,\n children\n })\n });\n}", "let _initProto, _initClass, _init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _init_action, _init_extra_action, _init_method, _init_extra_method;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(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; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { provideContext } from \"@ecopages/radiant/context\";\nimport { formContext } from \"./form-context\";\nimport { FormStore } from \"./form-store\";\nimport { RUI_FORM_DEFAULT_VALUES_ATTR } from \"./control-protocol\";\nimport { uniqueId } from \"@/lib/unique-id\";\nconst noopUnregister = () => {};\nconst initialFormActions = {\n register: () => noopUnregister,\n updateFieldOptions: () => {},\n handleFieldChange: () => {},\n handleFieldBlur: () => {},\n subscribePresentation: () => noopUnregister\n};\nlet _RuiForm;\nclass RuiForm extends RadiantElement {\n static {\n ({\n e: [_init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _init_action, _init_extra_action, _init_method, _init_extra_method, _initProto],\n c: [_RuiForm, _initClass]\n } = _applyDecs(this, [customElement(\"rui-form\")], [[provideContext({\n context: formContext,\n initialValue: {\n ready: false,\n revision: 0,\n fields: {},\n errors: {},\n actions: initialFormActions\n }\n }), 0, \"formProvider\"], [event({\n name: \"rui-submit\",\n bubbles: true,\n composed: true\n }), 0, \"submitEvent\"], [event({\n name: \"rui-invalid\",\n bubbles: true,\n composed: true\n }), 0, \"invalidEvent\"], [prop({\n type: Object,\n defaultValue: {}\n }), 0, \"defaultValues\"], [prop({\n type: String,\n attribute: RUI_FORM_DEFAULT_VALUES_ATTR\n }), 0, \"defaultValuesData\"], [prop({\n type: Object\n }), 0, \"resolver\"], [prop({\n type: String,\n reflect: true,\n defaultValue: \"onSubmit\"\n }), 0, \"mode\"], [prop({\n type: String,\n reflect: true,\n attribute: \"revalidate-mode\",\n defaultValue: \"onChange\"\n }), 0, \"reValidateMode\"], [prop({\n type: String,\n reflect: true\n }), 0, \"action\"], [prop({\n type: String,\n reflect: true\n }), 0, \"method\"], [onUpdated([\"defaultValues\", \"defaultValuesData\", \"mode\", \"reValidateMode\"]), 2, \"syncOptions\"], [onUpdated([\"resolver\"]), 2, \"syncResolver\"], [onEvent({\n selector: \"button[type=submit]\",\n type: \"click\"\n }), 2, \"onSubmitButtonClick\"], [onEvent({\n ref: \"form\",\n type: \"submit\"\n }), 2, \"onNativeSubmit\"], [onEvent({\n ref: \"form\",\n type: \"reset\"\n }), 2, \"onNativeReset\"]], 0, void 0, RadiantElement));\n }\n formProvider = (_initProto(this), _init_formProvider(this));\n submitEvent = (_init_extra_formProvider(this), _init_submitEvent(this));\n invalidEvent = (_init_extra_submitEvent(this), _init_invalidEvent(this));\n defaultValues = (_init_extra_invalidEvent(this), _init_defaultValues(this));\n defaultValuesData = (_init_extra_defaultValues(this), _init_defaultValuesData(this));\n resolver = (_init_extra_defaultValuesData(this), _init_resolver(this));\n mode = (_init_extra_resolver(this), _init_mode(this));\n reValidateMode = (_init_extra_mode(this), _init_reValidateMode(this));\n action = (_init_extra_reValidateMode(this), _init_action(this));\n method = (_init_extra_action(this), _init_method(this));\n onSubmit = void _init_extra_method(this);\n store;\n unsubscribeStore;\n nativeFormId = uniqueId(\"rui-form\");\n lastPublishedRevision = -1;\n lastPublishedContext;\n presentationListeners = /* @__PURE__ */new Set();\n formActions = {\n register: registration => {\n const store = this.ensureStore();\n const unregister = store.register(registration);\n this.publishFormContext({\n force: true\n });\n return () => {\n unregister();\n this.publishFormContext({\n force: true\n });\n };\n },\n updateFieldOptions: (name, options) => {\n this.ensureStore().updateFieldOptions(name, options);\n },\n handleFieldChange: name => {\n void this.ensureStore().handleFieldChange(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n handleFieldBlur: name => {\n void this.ensureStore().handleFieldBlur(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n subscribePresentation: listener => {\n this.presentationListeners.add(listener);\n if (this.lastPublishedContext) {\n listener(this.lastPublishedContext);\n }\n return () => this.presentationListeners.delete(listener);\n }\n };\n connectedCallback() {\n super.connectedCallback();\n this.ensureStore();\n this.publishFormContext({\n force: true\n });\n }\n onConnected() {\n this.wireOrphanSubmitButtons();\n }\n queryNativeForm() {\n return this.getRef(\"form\");\n }\n /** Link submit buttons left on the host outside the composed native `<form>`. */\n wireOrphanSubmitButtons() {\n const formEl = this.queryNativeForm();\n if (!formEl) {\n return;\n }\n if (!formEl.id) {\n formEl.id = this.nativeFormId;\n }\n for (const btn of this.querySelectorAll(\"button[type=submit]\")) {\n if (formEl.contains(btn)) {\n continue;\n }\n btn.setAttribute(\"form\", formEl.id);\n }\n }\n runFormSubmit() {\n const store = this.ensureStore();\n void store.handleSubmit(async values => {\n this.submitEvent.emit({\n values\n });\n if (typeof this.onSubmit === \"function\") {\n await this.onSubmit(values);\n return;\n }\n if (this.hasNativeSubmission()) {\n this.queryNativeForm()?.submit();\n }\n }, errors => {\n this.invalidEvent.emit({\n errors\n });\n });\n }\n hasNativeSubmission() {\n return typeof this.onSubmit !== \"function\" && (this.getAttribute(\"action\") !== null || this.getAttribute(\"method\") !== null);\n }\n disconnectedCallback() {\n this.unsubscribeStore?.();\n this.unsubscribeStore = void 0;\n super.disconnectedCallback();\n }\n resolveMode() {\n const fromAttr = this.getAttribute(\"mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.mode ?? \"onSubmit\";\n }\n resolveReValidateMode() {\n const fromAttr = this.getAttribute(\"revalidate-mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.reValidateMode ?? \"onChange\";\n }\n resolveDefaultValues() {\n if (this.defaultValues && Object.keys(this.defaultValues).length > 0) {\n return this.defaultValues;\n }\n const raw = this.defaultValuesData ?? this.getAttribute(RUI_FORM_DEFAULT_VALUES_ATTR);\n if (!raw) {\n return this.defaultValues ?? {};\n }\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n } catch {\n return this.defaultValues ?? {};\n }\n }\n ensureStore() {\n if (this.store) {\n return this.store;\n }\n this.store = new FormStore({\n defaultValues: this.resolveDefaultValues(),\n resolver: typeof this.resolver === \"function\" ? this.resolver : void 0,\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n this.unsubscribeStore = this.store.subscribe(() => this.publishFormContext());\n return this.store;\n }\n buildFieldPresentations(store) {\n const fields = {};\n for (const name of store.getRegisteredFieldNames()) {\n const message = store.getFieldError(name);\n const show = store.shouldDisplayFieldError(name);\n fields[name] = {\n error: show ? message : void 0,\n invalid: Boolean(show && message)\n };\n }\n return fields;\n }\n publishFormContext(options) {\n const store = this.store;\n if (!store) {\n return;\n }\n const revision = store.getRevision();\n if (!options?.force && revision === this.lastPublishedRevision) {\n return;\n }\n this.lastPublishedRevision = revision;\n const nextContext = {\n ready: true,\n revision,\n fields: this.buildFieldPresentations(store),\n errors: {\n ...store.errors\n },\n actions: this.formActions\n };\n this.lastPublishedContext = nextContext;\n this.formProvider.setContext(nextContext);\n for (const listener of this.presentationListeners) {\n listener(nextContext);\n }\n }\n syncOptions() {\n const store = this.ensureStore();\n store.updateOptions({\n defaultValues: this.resolveDefaultValues(),\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n }\n syncResolver() {\n if (typeof this.resolver === \"function\") {\n this.ensureStore().updateOptions({\n resolver: this.resolver\n });\n }\n }\n onSubmitButtonClick(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeSubmit(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeReset() {\n this.store?.reset();\n }\n static {\n _initClass();\n }\n}\nexport { _RuiForm as RuiForm };", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "function resolveRuleMessage(fallback, rule) {\n if (rule === void 0 || rule === false) {\n return void 0;\n }\n if (typeof rule === \"string\") {\n return rule;\n }\n if (typeof rule === \"object\" && rule !== null && \"message\" in rule && typeof rule.message === \"string\") {\n return rule.message;\n }\n return fallback;\n}\nfunction ruleValue(rule) {\n if (typeof rule === \"object\" && rule !== null && \"value\" in rule) {\n return rule.value;\n }\n return rule;\n}\nasync function validateFieldRules(_valueName, value, rules, values) {\n if (!rules) return void 0;\n for (const validator of [validateRequired, validateNumericRange, validateTextRules, validateCustomRules]) {\n const message = await validator(value, rules, values);\n if (message) return message;\n }\n return void 0;\n}\nfunction validateRequired(value, rules) {\n const empty = value === void 0 || value === null || value === \"\" || value === false || Array.isArray(value) && value.length === 0;\n return rules.required && empty ? resolveRuleMessage(\"This field is required\", rules.required) ?? \"This field is required\" : void 0;\n}\nfunction validateNumericRange(value, rules) {\n const numberValue = typeof value === \"number\" ? value : typeof value === \"string\" && value !== \"\" ? Number(value) : void 0;\n if (numberValue === void 0 || Number.isNaN(numberValue)) return void 0;\n if (rules.min !== void 0 && numberValue < ruleValue(rules.min)) return resolveRuleMessage(`Minimum value is ${ruleValue(rules.min)}`, rules.min);\n if (rules.max !== void 0 && numberValue > ruleValue(rules.max)) return resolveRuleMessage(`Maximum value is ${ruleValue(rules.max)}`, rules.max);\n return void 0;\n}\nfunction validateTextRules(value, rules) {\n const text = value == null ? \"\" : String(value);\n if (rules.minLength !== void 0 && text.length < ruleValue(rules.minLength)) return resolveRuleMessage(`Minimum length is ${ruleValue(rules.minLength)}`, rules.minLength);\n if (rules.maxLength !== void 0 && text.length > ruleValue(rules.maxLength)) return resolveRuleMessage(`Maximum length is ${ruleValue(rules.maxLength)}`, rules.maxLength);\n if (rules.pattern !== void 0 && !ruleValue(rules.pattern).test(text)) return resolveRuleMessage(\"Invalid format\", rules.pattern) ?? \"Invalid format\";\n return void 0;\n}\nasync function validateCustomRules(value, rules, values) {\n if (!rules.validate) return void 0;\n const validators = typeof rules.validate === \"function\" ? [rules.validate] : Object.values(rules.validate);\n for (const validate of validators) {\n const result = await validate(value, values);\n if (result !== true && result !== void 0) return result === false ? \"Invalid value\" : String(result);\n }\n return void 0;\n}\nexport async function runRulesResolver(values, context, names) {\n const targetNames = names ?? Object.keys(context.fields);\n const errors = {};\n for (const name of targetNames) {\n const rules = context.fields[name]?.rules;\n const message = await validateFieldRules(name, values[name], rules, values);\n if (message) {\n errors[name] = {\n type: \"validation\",\n message\n };\n }\n }\n if (Object.keys(errors).length > 0) {\n return {\n values: {},\n errors\n };\n }\n return {\n values,\n errors: {}\n };\n}\nexport function createRulesResolver() {\n return (values, context, options) => runRulesResolver(values, context, options.names);\n}", "import { createRulesResolver } from \"./resolvers\";\nfunction normalizeResolver(resolver) {\n if (typeof resolver === \"function\") {\n return resolver;\n }\n return createRulesResolver();\n}\nexport class FormStore {\n mode;\n reValidateMode;\n resolver;\n fields = /* @__PURE__ */new Map();\n listeners = /* @__PURE__ */new Set();\n revision = 0;\n defaultValues;\n values;\n errors = {};\n touched = {};\n dirty = {};\n isSubmitting = false;\n isSubmitted = false;\n constructor(options = {}) {\n this.mode = options.mode ?? \"onSubmit\";\n this.reValidateMode = options.reValidateMode ?? \"onChange\";\n this.resolver = normalizeResolver(options.resolver);\n this.defaultValues = {\n ...(options.defaultValues ?? {})\n };\n this.values = {\n ...this.defaultValues,\n ...(options.values ?? {})\n };\n }\n /** Update options without dropping registered fields. */\n updateOptions(options) {\n if (options.mode !== void 0) {\n this.mode = options.mode;\n }\n if (options.reValidateMode !== void 0) {\n this.reValidateMode = options.reValidateMode;\n }\n if (options.resolver !== void 0) {\n this.resolver = normalizeResolver(options.resolver);\n }\n if (options.defaultValues !== void 0) {\n this.defaultValues = {\n ...options.defaultValues\n };\n }\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n notify() {\n this.revision += 1;\n for (const listener of this.listeners) {\n listener();\n }\n }\n getRevision() {\n return this.revision;\n }\n getRegisteredFieldNames() {\n return Array.from(this.fields.keys());\n }\n register(registration) {\n const existing = this.fields.get(registration.name);\n const entry = {\n ...registration,\n rules: registration.rules ?? existing?.rules,\n defaultValue: registration.defaultValue ?? existing?.defaultValue,\n getRules: registration.getRules ?? existing?.getRules\n };\n this.fields.set(registration.name, entry);\n if (this.values[registration.name] === void 0 && entry.defaultValue !== void 0) {\n this.values = {\n ...this.values,\n [registration.name]: entry.defaultValue\n };\n }\n entry.setValue(this.values[registration.name]);\n return () => {\n const current = this.fields.get(registration.name);\n if (current === entry) {\n this.fields.delete(registration.name);\n this.notify();\n }\n };\n }\n updateFieldOptions(name, options) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n if (options.rules !== void 0) {\n field.rules = options.rules;\n }\n if (options.defaultValue !== void 0) {\n field.defaultValue = options.defaultValue;\n }\n }\n getValues() {\n const next = {\n ...this.values\n };\n for (const [name, field] of this.fields) {\n next[name] = field.getValue();\n }\n return next;\n }\n setValue(name, value, options) {\n this.values = {\n ...this.values,\n [name]: value\n };\n const field = this.fields.get(String(name));\n field?.setValue(value);\n if (options?.shouldDirty) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n }\n if (options?.shouldTouch) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n }\n markTouched(name) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n this.notify();\n }\n markDirty(name) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n this.notify();\n }\n clearErrors(name) {\n if (name) {\n const next = {\n ...this.errors\n };\n delete next[name];\n this.errors = next;\n this.notify();\n return;\n }\n this.errors = {};\n this.notify();\n }\n getFieldError(name) {\n return this.errors[name]?.message;\n }\n getState() {\n const values = this.getValues();\n const errorCount = Object.keys(this.errors).length;\n return {\n values,\n errors: this.errors,\n touched: this.touched,\n dirty: this.dirty,\n isSubmitting: this.isSubmitting,\n isSubmitted: this.isSubmitted,\n isValid: errorCount === 0\n };\n }\n async validateField(name) {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {\n names: [name]\n });\n const message = result.errors[name]?.message;\n const next = {\n ...this.errors\n };\n if (message) {\n next[name] = {\n type: \"validation\",\n message\n };\n } else {\n delete next[name];\n }\n this.errors = next;\n this.notify();\n return !message;\n }\n async validateAll() {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {});\n this.errors = result.errors;\n this.notify();\n return Object.keys(this.errors).length === 0;\n }\n shouldValidate(name, trigger) {\n const mode = this.isSubmitted ? this.reValidateMode : this.mode;\n switch (mode) {\n case \"all\":\n return true;\n case \"onChange\":\n return trigger === \"change\";\n case \"onBlur\":\n return trigger === \"blur\";\n case \"onTouched\":\n return trigger === \"blur\" && Boolean(this.touched[name]);\n case \"onSubmit\":\n return false;\n default:\n return false;\n }\n }\n async handleFieldChange(name) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n const value = field.getValue();\n this.values = {\n ...this.values,\n [name]: value\n };\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n if (this.shouldValidate(name, \"change\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n async handleFieldBlur(name) {\n this.markTouched(name);\n if (this.shouldValidate(name, \"blur\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n /** Whether a field's validation message should be shown in the UI (RHF-style). */\n shouldDisplayFieldError(name) {\n const message = this.errors[name]?.message;\n if (!message) {\n return false;\n }\n if (this.isSubmitted) {\n return true;\n }\n switch (this.mode) {\n case \"all\":\n return Boolean(this.dirty[name] || this.touched[name]);\n case \"onChange\":\n return Boolean(this.dirty[name]);\n case \"onBlur\":\n case \"onTouched\":\n return Boolean(this.touched[name]);\n case \"onSubmit\":\n default:\n return false;\n }\n }\n async handleSubmit(onValid, onInvalid) {\n this.isSubmitting = true;\n this.isSubmitted = true;\n for (const name of this.fields.keys()) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n const valid = await this.validateAll();\n this.isSubmitting = false;\n this.notify();\n if (valid) {\n await onValid(this.getValues());\n return;\n }\n onInvalid?.(this.errors);\n }\n reset(values) {\n const nextDefaults = values ?? {\n ...this.defaultValues,\n ...this.collectFieldDefaults()\n };\n this.values = {\n ...nextDefaults\n };\n this.errors = {};\n this.touched = {};\n this.dirty = {};\n this.isSubmitted = false;\n this.isSubmitting = false;\n for (const field of this.fields.values()) {\n field.setValue(this.values[field.name]);\n }\n this.notify();\n }\n collectFieldDefaults() {\n const defaults = {};\n for (const [name, field] of this.fields) {\n if (field.defaultValue !== void 0) {\n defaults[name] = field.defaultValue;\n }\n }\n return defaults;\n }\n buildResolverFields() {\n const fields = {};\n for (const [name, field] of this.fields) {\n const rules = field.getRules?.() ?? field.rules;\n fields[name] = {\n rules\n };\n }\n return fields;\n }\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { multiValueTransform, numberArrayTransform } from \"../shared/multi-value\";\nexport const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst FIELD_COLUMN_SELECTOR = '[data-ref=\"field\"]';\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-date-field\", \"rui-date-range-picker\", \"rui-select\", \"rui-tag-group\", \"rui-checkbox\", \"rui-checkbox-group\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-knob\", \"rui-number-field\", \"rui-listbox\"]);\nexport const FIELD_CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}`;\nconst HOST_CONTROL_SELECTOR = Array.from(HOST_CONTROL_TAGS).join(\", \");\nfunction isEmbeddedListbox(node) {\n return node.localName === \"rui-listbox\" && (node.hasAttribute(\"embedded\") || Reflect.get(node, \"embedded\") === true);\n}\nconst ARIA_TARGET_SELECTORS = {\n \"rui-combobox\": \"[data-combobox-input]\",\n \"rui-date-field\": \"[data-date-field-input]\",\n \"rui-date-range-picker\": \"[data-range-start]\",\n \"rui-select\": \"[data-select-trigger]\",\n \"rui-tag-group\": \"[data-tag-list]\",\n \"rui-number-field\": \"[data-number-field-input], input\",\n \"rui-knob\": \"[data-knob-control]\",\n \"rui-checkbox\": \"input\",\n \"rui-checkbox-group\": \"[data-checkbox-group-root]\",\n \"rui-switch\": \"input\"\n};\nexport function isNativeTextControl(node) {\n return node.localName === \"input\" || node.localName === \"textarea\";\n}\nfunction isNativeInput(node) {\n return node.localName === \"input\";\n}\nfunction isNativeTextarea(node) {\n return node.localName === \"textarea\";\n}\nconst stringValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n return typeof value === \"string\" ? value : host.getAttribute(\"value\") ?? \"\";\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", next);\n }\n }\n};\nconst numberValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n if (typeof value === \"number\") {\n return value;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", value);\n }\n }\n};\nconst booleanValueAdapter = {\n read: host => {\n const input = host.querySelector('input[type=\"checkbox\"]');\n return input?.checked ?? host.hasAttribute(\"checked\");\n },\n write: (host, value) => {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n }\n};\nfunction readHostValue(host, transform) {\n const value = Reflect.get(host, \"value\");\n if (value !== void 0 && transform.fromProperty) {\n return transform.fromProperty(value);\n }\n if (transform.fromAttribute) {\n return transform.fromAttribute(host.getAttribute(\"value\"));\n }\n return value;\n}\nfunction writeHostValue(host, value) {\n Reflect.set(host, \"value\", value);\n}\nconst stringArrayValueAdapter = {\n read: host => readHostValue(host, multiValueTransform),\n write: writeHostValue\n};\nconst sliderValueAdapter = {\n read: host => readHostValue(host, numberArrayTransform),\n write: writeHostValue\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", stringArrayValueAdapter], [\"rui-date-field\", stringValueAdapter], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", stringArrayValueAdapter], [\"rui-radio-group\", stringValueAdapter], [\"rui-checkbox-group\", stringArrayValueAdapter], [\"rui-listbox\", stringArrayValueAdapter], [\"rui-tag-group\", stringArrayValueAdapter], [\"rui-slider\", sliderValueAdapter], [\"rui-knob\", numberValueAdapter], [\"rui-number-field\", numberValueAdapter]]);\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR) ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n const eligibleCandidates = candidates.filter(candidate => !isEmbeddedListbox(candidate));\n if (eligibleCandidates.length === 0) {\n return null;\n }\n return eligibleCandidates.find(candidate => !eligibleCandidates.some(ancestor => ancestor !== candidate && ancestor.contains(candidate))) ?? null;\n}\nfunction collectFieldControls(root) {\n const candidates = [];\n forEachFieldContentNode(root, node => {\n if (node instanceof HTMLElement && node.matches(FIELD_CONTROL_SELECTOR)) {\n candidates.push(node);\n }\n });\n return candidates;\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR);\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(FIELD_CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n return pickPrimaryFieldControl(collectFieldControls(root));\n}\nexport function isPrimaryFieldControlEvent(root, event) {\n const control = findFieldControl(root);\n if (!control || !(event.target instanceof Element)) {\n return false;\n }\n if (event.target !== control && !control.contains(event.target)) {\n return false;\n }\n const nestedHost = event.target.closest(HOST_CONTROL_SELECTOR);\n return nestedHost === control || nestedHost == null;\n}\nexport function readControlValue(control) {\n if (isNativeInput(control)) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n return adapter.read(host2);\n }\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (isNativeTextarea(control)) {\n return control.value;\n }\n const host = resolveControlHost(control);\n return CONTROL_VALUE_ADAPTERS.get(host.localName)?.read(host) ?? host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (isNativeInput(control)) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n adapter.write(host2, value);\n return;\n }\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (isNativeTextarea(control)) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n CONTROL_VALUE_ADAPTERS.get(host.localName)?.write(host, value);\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(HOST_CONTROL_SELECTOR);\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}]`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR);\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget && isNativeTextControl(ariaTarget)) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nfunction isChecked(input) {\n const checked = Reflect.get(input, \"checked\");\n return typeof checked === \"boolean\" ? checked : input.hasAttribute(\"checked\");\n}\nexport function getAriaControlTarget(control) {\n if (isNativeTextControl(control)) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector(\"[data-thumb]:not([hidden])\") ?? control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-radio-group\") {\n return getSelectedRadio(control) ?? control;\n }\n const selector = ARIA_TARGET_SELECTORS[control.localName];\n return selector ? control.querySelector(selector) ?? control : control;\n}\nfunction getSelectedRadio(control) {\n const radios = control.querySelectorAll('input[type=\"radio\"]');\n return Array.from(radios).find(isChecked) ?? radios[0];\n}\nexport function getAriaControlTargets(control) {\n if (control.localName === \"rui-slider\") {\n const thumbs = Array.from(control.querySelectorAll(\"[data-thumb]:not([hidden])\"));\n return thumbs.length > 0 ? thumbs : [control];\n }\n return [getAriaControlTarget(control)];\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}"],
5
- "mappings": "AAAA,OAAS,OAAAA,OAAW,4BCMpB,OAAS,kBAAAC,GAAgB,iBAAAC,GAAe,SAAAC,GAAO,WAAAC,GAAS,aAAAC,GAAW,QAAAC,MAAY,oBAC/E,OAAS,kBAAAC,OAAsB,4BCP/B,OAAS,iBAAAC,OAAqB,4BACvB,IAAMC,EAAcD,GAA6B,OAAO,IAAI,kBAAkB,CAAC,ECDtF,SAASE,EAAmBC,EAAUC,EAAM,CAC1C,GAAI,EAAAA,IAAS,QAAUA,IAAS,IAGhC,OAAI,OAAOA,GAAS,SACXA,EAEL,OAAOA,GAAS,UAAYA,IAAS,MAAQ,YAAaA,GAAQ,OAAOA,EAAK,SAAY,SACrFA,EAAK,QAEPD,CACT,CACA,SAASE,EAAUD,EAAM,CACvB,OAAI,OAAOA,GAAS,UAAYA,IAAS,MAAQ,UAAWA,EACnDA,EAAK,MAEPA,CACT,CACA,eAAeE,GAAmBC,EAAYC,EAAOC,EAAOC,EAAQ,CAClE,GAAKD,EACL,QAAWE,IAAa,CAACC,GAAkBC,GAAsBC,GAAmBC,EAAmB,EAAG,CACxG,IAAMC,EAAU,MAAML,EAAUH,EAAOC,EAAOC,CAAM,EACpD,GAAIM,EAAS,OAAOA,CACtB,CAEF,CACA,SAASJ,GAAiBJ,EAAOC,EAAO,CACtC,IAAMQ,EAA4BT,GAAU,MAAQA,IAAU,IAAMA,IAAU,IAAS,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EAChI,OAAOC,EAAM,UAAYQ,EAAQf,EAAmB,yBAA0BO,EAAM,QAAQ,GAAK,yBAA2B,MAC9H,CACA,SAASI,GAAqBL,EAAOC,EAAO,CAC1C,IAAMS,EAAc,OAAOV,GAAU,SAAWA,EAAQ,OAAOA,GAAU,UAAYA,IAAU,GAAK,OAAOA,CAAK,EAAI,OACpH,GAAI,EAAAU,IAAgB,QAAU,OAAO,MAAMA,CAAW,GACtD,IAAIT,EAAM,MAAQ,QAAUS,EAAcb,EAAUI,EAAM,GAAG,EAAG,OAAOP,EAAmB,oBAAoBG,EAAUI,EAAM,GAAG,CAAC,GAAIA,EAAM,GAAG,EAC/I,GAAIA,EAAM,MAAQ,QAAUS,EAAcb,EAAUI,EAAM,GAAG,EAAG,OAAOP,EAAmB,oBAAoBG,EAAUI,EAAM,GAAG,CAAC,GAAIA,EAAM,GAAG,EAEjJ,CACA,SAASK,GAAkBN,EAAOC,EAAO,CACvC,IAAMU,EAAOX,GAAS,KAAO,GAAK,OAAOA,CAAK,EAC9C,GAAIC,EAAM,YAAc,QAAUU,EAAK,OAASd,EAAUI,EAAM,SAAS,EAAG,OAAOP,EAAmB,qBAAqBG,EAAUI,EAAM,SAAS,CAAC,GAAIA,EAAM,SAAS,EACxK,GAAIA,EAAM,YAAc,QAAUU,EAAK,OAASd,EAAUI,EAAM,SAAS,EAAG,OAAOP,EAAmB,qBAAqBG,EAAUI,EAAM,SAAS,CAAC,GAAIA,EAAM,SAAS,EACxK,GAAIA,EAAM,UAAY,QAAU,CAACJ,EAAUI,EAAM,OAAO,EAAE,KAAKU,CAAI,EAAG,OAAOjB,EAAmB,iBAAkBO,EAAM,OAAO,GAAK,gBAEtI,CACA,eAAeM,GAAoBP,EAAOC,EAAOC,EAAQ,CACvD,GAAI,CAACD,EAAM,SAAU,OACrB,IAAMW,EAAa,OAAOX,EAAM,UAAa,WAAa,CAACA,EAAM,QAAQ,EAAI,OAAO,OAAOA,EAAM,QAAQ,EACzG,QAAWY,KAAYD,EAAY,CACjC,IAAME,EAAS,MAAMD,EAASb,EAAOE,CAAM,EAC3C,GAAIY,IAAW,IAAQA,IAAW,OAAQ,OAAOA,IAAW,GAAQ,gBAAkB,OAAOA,CAAM,CACrG,CAEF,CACA,eAAsBC,GAAiBb,EAAQc,EAASC,EAAO,CAC7D,IAAMC,EAAcD,GAAS,OAAO,KAAKD,EAAQ,MAAM,EACjDG,EAAS,CAAC,EAChB,QAAWC,KAAQF,EAAa,CAC9B,IAAMjB,EAAQe,EAAQ,OAAOI,CAAI,GAAG,MAC9BZ,EAAU,MAAMV,GAAmBsB,EAAMlB,EAAOkB,CAAI,EAAGnB,EAAOC,CAAM,EACtEM,IACFW,EAAOC,CAAI,EAAI,CACb,KAAM,aACN,QAAAZ,CACF,EAEJ,CACA,OAAI,OAAO,KAAKW,CAAM,EAAE,OAAS,EACxB,CACL,OAAQ,CAAC,EACT,OAAAA,CACF,EAEK,CACL,OAAAjB,EACA,OAAQ,CAAC,CACX,CACF,CACO,SAASmB,GAAsB,CACpC,MAAO,CAACnB,EAAQc,EAASM,IAAYP,GAAiBb,EAAQc,EAASM,EAAQ,KAAK,CACtF,CC9EA,SAASC,GAAkBC,EAAU,CACnC,OAAI,OAAOA,GAAa,WACfA,EAEFC,EAAoB,CAC7B,CACO,IAAMC,EAAN,KAAgB,CACrB,KACA,eACA,SACA,OAAwB,IAAI,IAC5B,UAA2B,IAAI,IAC/B,SAAW,EACX,cACA,OACA,OAAS,CAAC,EACV,QAAU,CAAC,EACX,MAAQ,CAAC,EACT,aAAe,GACf,YAAc,GACd,YAAYC,EAAU,CAAC,EAAG,CACxB,KAAK,KAAOA,EAAQ,MAAQ,WAC5B,KAAK,eAAiBA,EAAQ,gBAAkB,WAChD,KAAK,SAAWJ,GAAkBI,EAAQ,QAAQ,EAClD,KAAK,cAAgB,CACnB,GAAIA,EAAQ,eAAiB,CAAC,CAChC,EACA,KAAK,OAAS,CACZ,GAAG,KAAK,cACR,GAAIA,EAAQ,QAAU,CAAC,CACzB,CACF,CAEA,cAAcA,EAAS,CACjBA,EAAQ,OAAS,SACnB,KAAK,KAAOA,EAAQ,MAElBA,EAAQ,iBAAmB,SAC7B,KAAK,eAAiBA,EAAQ,gBAE5BA,EAAQ,WAAa,SACvB,KAAK,SAAWJ,GAAkBI,EAAQ,QAAQ,GAEhDA,EAAQ,gBAAkB,SAC5B,KAAK,cAAgB,CACnB,GAAGA,EAAQ,aACb,EAEJ,CACA,UAAUC,EAAU,CAClB,YAAK,UAAU,IAAIA,CAAQ,EACpB,IAAM,KAAK,UAAU,OAAOA,CAAQ,CAC7C,CACA,QAAS,CACP,KAAK,UAAY,EACjB,QAAWA,KAAY,KAAK,UAC1BA,EAAS,CAEb,CACA,aAAc,CACZ,OAAO,KAAK,QACd,CACA,yBAA0B,CACxB,OAAO,MAAM,KAAK,KAAK,OAAO,KAAK,CAAC,CACtC,CACA,SAASC,EAAc,CACrB,IAAMC,EAAW,KAAK,OAAO,IAAID,EAAa,IAAI,EAC5CE,EAAQ,CACZ,GAAGF,EACH,MAAOA,EAAa,OAASC,GAAU,MACvC,aAAcD,EAAa,cAAgBC,GAAU,aACrD,SAAUD,EAAa,UAAYC,GAAU,QAC/C,EACA,YAAK,OAAO,IAAID,EAAa,KAAME,CAAK,EACpC,KAAK,OAAOF,EAAa,IAAI,IAAM,QAAUE,EAAM,eAAiB,SACtE,KAAK,OAAS,CACZ,GAAG,KAAK,OACR,CAACF,EAAa,IAAI,EAAGE,EAAM,YAC7B,GAEFA,EAAM,SAAS,KAAK,OAAOF,EAAa,IAAI,CAAC,EACtC,IAAM,CACK,KAAK,OAAO,IAAIA,EAAa,IAAI,IACjCE,IACd,KAAK,OAAO,OAAOF,EAAa,IAAI,EACpC,KAAK,OAAO,EAEhB,CACF,CACA,mBAAmBG,EAAML,EAAS,CAChC,IAAMM,EAAQ,KAAK,OAAO,IAAID,CAAI,EAC7BC,IAGDN,EAAQ,QAAU,SACpBM,EAAM,MAAQN,EAAQ,OAEpBA,EAAQ,eAAiB,SAC3BM,EAAM,aAAeN,EAAQ,cAEjC,CACA,WAAY,CACV,IAAMO,EAAO,CACX,GAAG,KAAK,MACV,EACA,OAAW,CAACF,EAAMC,CAAK,IAAK,KAAK,OAC/BC,EAAKF,CAAI,EAAIC,EAAM,SAAS,EAE9B,OAAOC,CACT,CACA,SAASF,EAAMG,EAAOR,EAAS,CAC7B,KAAK,OAAS,CACZ,GAAG,KAAK,OACR,CAACK,CAAI,EAAGG,CACV,EACc,KAAK,OAAO,IAAI,OAAOH,CAAI,CAAC,GACnC,SAASG,CAAK,EACjBR,GAAS,cACX,KAAK,MAAQ,CACX,GAAG,KAAK,MACR,CAACK,CAAI,EAAG,EACV,GAEEL,GAAS,cACX,KAAK,QAAU,CACb,GAAG,KAAK,QACR,CAACK,CAAI,EAAG,EACV,GAEF,KAAK,OAAO,CACd,CACA,YAAYA,EAAM,CAChB,KAAK,QAAU,CACb,GAAG,KAAK,QACR,CAACA,CAAI,EAAG,EACV,EACA,KAAK,OAAO,CACd,CACA,UAAUA,EAAM,CACd,KAAK,MAAQ,CACX,GAAG,KAAK,MACR,CAACA,CAAI,EAAG,EACV,EACA,KAAK,OAAO,CACd,CACA,YAAYA,EAAM,CAChB,GAAIA,EAAM,CACR,IAAME,EAAO,CACX,GAAG,KAAK,MACV,EACA,OAAOA,EAAKF,CAAI,EAChB,KAAK,OAASE,EACd,KAAK,OAAO,EACZ,MACF,CACA,KAAK,OAAS,CAAC,EACf,KAAK,OAAO,CACd,CACA,cAAcF,EAAM,CAClB,OAAO,KAAK,OAAOA,CAAI,GAAG,OAC5B,CACA,UAAW,CACT,IAAMI,EAAS,KAAK,UAAU,EACxBC,EAAa,OAAO,KAAK,KAAK,MAAM,EAAE,OAC5C,MAAO,CACL,OAAAD,EACA,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,MAAO,KAAK,MACZ,aAAc,KAAK,aACnB,YAAa,KAAK,YAClB,QAASC,IAAe,CAC1B,CACF,CACA,MAAM,cAAcL,EAAM,CACxB,IAAMI,EAAS,KAAK,UAAU,EAMxBE,GALS,MAAM,KAAK,SAASF,EAAQ,CACzC,OAAQ,KAAK,oBAAoB,CACnC,EAAG,CACD,MAAO,CAACJ,CAAI,CACd,CAAC,GACsB,OAAOA,CAAI,GAAG,QAC/BE,EAAO,CACX,GAAG,KAAK,MACV,EACA,OAAII,EACFJ,EAAKF,CAAI,EAAI,CACX,KAAM,aACN,QAAAM,CACF,EAEA,OAAOJ,EAAKF,CAAI,EAElB,KAAK,OAASE,EACd,KAAK,OAAO,EACL,CAACI,CACV,CACA,MAAM,aAAc,CAClB,IAAMF,EAAS,KAAK,UAAU,EACxBG,EAAS,MAAM,KAAK,SAASH,EAAQ,CACzC,OAAQ,KAAK,oBAAoB,CACnC,EAAG,CAAC,CAAC,EACL,YAAK,OAASG,EAAO,OACrB,KAAK,OAAO,EACL,OAAO,KAAK,KAAK,MAAM,EAAE,SAAW,CAC7C,CACA,eAAeP,EAAMQ,EAAS,CAE5B,OADa,KAAK,YAAc,KAAK,eAAiB,KAAK,KAC7C,CACZ,IAAK,MACH,MAAO,GACT,IAAK,WACH,OAAOA,IAAY,SACrB,IAAK,SACH,OAAOA,IAAY,OACrB,IAAK,YACH,OAAOA,IAAY,QAAU,EAAQ,KAAK,QAAQR,CAAI,EACxD,IAAK,WACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,MAAM,kBAAkBA,EAAM,CAC5B,IAAMC,EAAQ,KAAK,OAAO,IAAID,CAAI,EAClC,GAAI,CAACC,EACH,OAEF,IAAME,EAAQF,EAAM,SAAS,EAC7B,KAAK,OAAS,CACZ,GAAG,KAAK,OACR,CAACD,CAAI,EAAGG,CACV,EACA,KAAK,MAAQ,CACX,GAAG,KAAK,MACR,CAACH,CAAI,EAAG,EACV,EACI,KAAK,eAAeA,EAAM,QAAQ,EACpC,MAAM,KAAK,cAAcA,CAAI,EAE7B,KAAK,OAAO,CAEhB,CACA,MAAM,gBAAgBA,EAAM,CAC1B,KAAK,YAAYA,CAAI,EACjB,KAAK,eAAeA,EAAM,MAAM,EAClC,MAAM,KAAK,cAAcA,CAAI,EAE7B,KAAK,OAAO,CAEhB,CAEA,wBAAwBA,EAAM,CAE5B,GAAI,CADY,KAAK,OAAOA,CAAI,GAAG,QAEjC,MAAO,GAET,GAAI,KAAK,YACP,MAAO,GAET,OAAQ,KAAK,KAAM,CACjB,IAAK,MACH,MAAO,GAAQ,KAAK,MAAMA,CAAI,GAAK,KAAK,QAAQA,CAAI,GACtD,IAAK,WACH,MAAO,EAAQ,KAAK,MAAMA,CAAI,EAChC,IAAK,SACL,IAAK,YACH,MAAO,EAAQ,KAAK,QAAQA,CAAI,EAElC,QACE,MAAO,EACX,CACF,CACA,MAAM,aAAaS,EAASC,EAAW,CACrC,KAAK,aAAe,GACpB,KAAK,YAAc,GACnB,QAAWV,KAAQ,KAAK,OAAO,KAAK,EAClC,KAAK,QAAU,CACb,GAAG,KAAK,QACR,CAACA,CAAI,EAAG,EACV,EAEF,KAAK,OAAO,EACZ,IAAMW,EAAQ,MAAM,KAAK,YAAY,EAGrC,GAFA,KAAK,aAAe,GACpB,KAAK,OAAO,EACRA,EAAO,CACT,MAAMF,EAAQ,KAAK,UAAU,CAAC,EAC9B,MACF,CACAC,IAAY,KAAK,MAAM,CACzB,CACA,MAAMN,EAAQ,CACZ,IAAMQ,EAAeR,GAAU,CAC7B,GAAG,KAAK,cACR,GAAG,KAAK,qBAAqB,CAC/B,EACA,KAAK,OAAS,CACZ,GAAGQ,CACL,EACA,KAAK,OAAS,CAAC,EACf,KAAK,QAAU,CAAC,EAChB,KAAK,MAAQ,CAAC,EACd,KAAK,YAAc,GACnB,KAAK,aAAe,GACpB,QAAWX,KAAS,KAAK,OAAO,OAAO,EACrCA,EAAM,SAAS,KAAK,OAAOA,EAAM,IAAI,CAAC,EAExC,KAAK,OAAO,CACd,CACA,sBAAuB,CACrB,IAAMY,EAAW,CAAC,EAClB,OAAW,CAACb,EAAMC,CAAK,IAAK,KAAK,OAC3BA,EAAM,eAAiB,SACzBY,EAASb,CAAI,EAAIC,EAAM,cAG3B,OAAOY,CACT,CACA,qBAAsB,CACpB,IAAMC,EAAS,CAAC,EAChB,OAAW,CAACd,EAAMC,CAAK,IAAK,KAAK,OAAQ,CACvC,IAAMc,EAAQd,EAAM,WAAW,GAAKA,EAAM,MAC1Ca,EAAOd,CAAI,EAAI,CACb,MAAAe,CACF,CACF,CACA,OAAOD,CACT,CACF,EC1UO,SAASE,GAAgBC,EAAO,CACrC,OAAKA,EAGEC,GAAcD,EAAM,MAAM,GAAG,CAAC,EAF5B,CAAC,CAGZ,CACO,SAASE,GAAoBC,EAAQ,CAC1C,OAAOA,EAAO,KAAK,GAAG,CACxB,CACO,IAAMC,GAAsB,CACjC,cAAeJ,GAASD,GAAgBC,CAAK,EAC7C,YAAaG,GAAUA,EAAO,OAAS,EAAID,GAAoBC,CAAM,EAAI,KACzE,aAAcH,GACR,MAAM,QAAQA,CAAK,EACdC,GAAcD,EAAM,IAAI,MAAM,CAAC,EAEpC,OAAOA,GAAU,SACZD,GAAgBC,CAAK,EAEvB,CAAC,CAEZ,EASA,SAASK,GAAiBC,EAAO,CAC/B,OAAKA,EAGEA,EAAM,MAAM,GAAG,EAAE,IAAIC,GAAQ,OAAOA,EAAK,KAAK,CAAC,CAAC,EAAE,OAAOA,GAAQ,OAAO,SAASA,CAAI,CAAC,EAFpF,CAAC,CAGZ,CACA,SAASC,GAAqBC,EAAQ,CACpC,OAAOA,EAAO,KAAK,GAAG,CACxB,CACO,IAAMC,GAAuB,CAClC,cAAeJ,GAASD,GAAiBC,CAAK,EAC9C,YAAaG,GAAUA,EAAO,OAAS,EAAID,GAAqBC,CAAM,EAAI,KAC1E,aAAcH,GACR,MAAM,QAAQA,CAAK,EACdA,EAAM,IAAI,MAAM,EAAE,OAAOC,GAAQ,OAAO,SAASA,CAAI,CAAC,EAE3D,OAAOD,GAAU,UAAY,OAAO,SAASA,CAAK,EAC7C,CAACA,CAAK,EAEX,OAAOA,GAAU,SACZD,GAAiBC,CAAK,EAExB,CAAC,CAEZ,EACA,SAASK,GAAcF,EAAQ,CAC7B,MAAO,CAAC,GAAG,IAAI,IAAIA,EAAO,IAAIF,GAAQA,EAAK,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC,CACrE,CCxDO,IAAMK,EAAmB,mBACnBC,GAAyB,yBACzBC,GAAuB,uBACvBC,GAA6B,6BAC7BC,GAAuB,uBAE7B,IAAMC,EAA+B,sBACtCC,GAAwB,qBACxBC,GAAmC,IAAI,IAAI,CAAC,eAAgB,iBAAkB,wBAAyB,aAAc,gBAAiB,eAAgB,qBAAsB,aAAc,kBAAmB,aAAc,WAAY,mBAAoB,aAAa,CAAC,EAClQC,GAAyB,IAAIC,CAAgB,MAAM,MAAM,KAAKF,EAAiB,EAAE,KAAK,IAAI,CAAC,GAClGG,GAAwB,MAAM,KAAKH,EAAiB,EAAE,KAAK,IAAI,EACrE,SAASI,GAAkBC,EAAM,CAC/B,OAAOA,EAAK,YAAc,gBAAkBA,EAAK,aAAa,UAAU,GAAK,QAAQ,IAAIA,EAAM,UAAU,IAAM,GACjH,CAaO,SAASC,GAAoBC,EAAM,CACxC,OAAOA,EAAK,YAAc,SAAWA,EAAK,YAAc,UAC1D,CACA,SAASC,GAAcD,EAAM,CAC3B,OAAOA,EAAK,YAAc,OAC5B,CACA,SAASE,GAAiBF,EAAM,CAC9B,OAAOA,EAAK,YAAc,UAC5B,CACA,IAAMG,EAAqB,CACzB,KAAMC,GAAQ,CACZ,IAAMC,EAAQ,QAAQ,IAAID,EAAM,OAAO,EACvC,OAAO,OAAOC,GAAU,SAAWA,EAAQD,EAAK,aAAa,OAAO,GAAK,EAC3E,EACA,MAAO,CAACA,EAAMC,IAAU,CACtB,IAAMC,EAAOD,GAAS,KAAO,GAAK,OAAOA,CAAK,EAC9CD,EAAK,aAAa,QAASE,CAAI,EAC3B,UAAWF,GACb,QAAQ,IAAIA,EAAM,QAASE,CAAI,CAEnC,CACF,EACMC,GAAqB,CACzB,KAAMH,GAAQ,CACZ,IAAMC,EAAQ,QAAQ,IAAID,EAAM,OAAO,EACvC,GAAI,OAAOC,GAAU,SACnB,OAAOA,EAET,IAAMG,EAAMJ,EAAK,aAAa,OAAO,EACrC,OAAOI,GAAO,MAAQA,IAAQ,GAAK,GAAK,OAAOA,CAAG,CACpD,EACA,MAAO,CAACJ,EAAMC,IAAU,CACtB,IAAMC,EAAOD,GAAS,KAAO,GAAK,OAAOA,CAAK,EAC9CD,EAAK,aAAa,QAASE,CAAI,EAC3B,UAAWF,GACb,QAAQ,IAAIA,EAAM,QAASC,CAAK,CAEpC,CACF,EACMI,GAAsB,CAC1B,KAAML,GACUA,EAAK,cAAc,wBAAwB,GAC3C,SAAWA,EAAK,aAAa,SAAS,EAEtD,MAAO,CAACA,EAAMC,IAAU,CAClBA,EACFD,EAAK,aAAa,UAAW,EAAE,EAE/BA,EAAK,gBAAgB,SAAS,CAElC,CACF,EACA,SAASM,GAAcN,EAAMO,EAAW,CACtC,IAAMN,EAAQ,QAAQ,IAAID,EAAM,OAAO,EACvC,OAAIC,IAAU,QAAUM,EAAU,aACzBA,EAAU,aAAaN,CAAK,EAEjCM,EAAU,cACLA,EAAU,cAAcP,EAAK,aAAa,OAAO,CAAC,EAEpDC,CACT,CACA,SAASO,GAAeR,EAAMC,EAAO,CACnC,QAAQ,IAAID,EAAM,QAASC,CAAK,CAClC,CACA,IAAMQ,EAA0B,CAC9B,KAAMT,GAAQM,GAAcN,EAAMU,EAAmB,EACrD,MAAOF,EACT,EACMG,GAAqB,CACzB,KAAMX,GAAQM,GAAcN,EAAMY,EAAoB,EACtD,MAAOJ,EACT,EACMK,EAAwC,IAAI,IAAI,CAAC,CAAC,eAAgBR,EAAmB,EAAG,CAAC,aAAcA,EAAmB,EAAG,CAAC,eAAgBI,CAAuB,EAAG,CAAC,iBAAkBV,CAAkB,EAAG,CAAC,wBAAyBA,CAAkB,EAAG,CAAC,aAAcU,CAAuB,EAAG,CAAC,kBAAmBV,CAAkB,EAAG,CAAC,qBAAsBU,CAAuB,EAAG,CAAC,cAAeA,CAAuB,EAAG,CAAC,gBAAiBA,CAAuB,EAAG,CAAC,aAAcE,EAAkB,EAAG,CAAC,WAAYR,EAAkB,EAAG,CAAC,mBAAoBA,EAAkB,CAAC,CAAC,EAC7kB,SAASW,GAAwBC,EAAMC,EAAO,CAC5C,IAAMC,EAAWF,EACXG,EAAyB,IAAI,IAC7BC,EAAYvB,GAAQ,CACpBsB,EAAQ,IAAItB,CAAI,IAGpBsB,EAAQ,IAAItB,CAAI,EAChBoB,EAAMpB,CAAI,EACZ,EACA,GAAI,OAAOqB,EAAS,iBAAoB,WACtC,QAAWrB,KAAQqB,EAAS,gBAAgB,EAC1CE,EAAUvB,CAAI,EAGlB,IAAMwB,EAAaL,EAAK,cAAcM,EAAqB,GAAKN,EAChE,QAAWO,KAAS,MAAM,KAAKF,EAAW,QAAQ,EAChDD,EAAUG,CAAK,EAEjB,QAAW1B,KAAQwB,EAAW,iBAAiB,GAAG,EAChDD,EAAUvB,CAAI,EAEhB,QAAW0B,KAAS,MAAM,KAAKP,EAAK,QAAQ,EAC1CI,EAAUG,CAAK,EAEjB,IAAMC,EAASR,EAAK,WACpB,GAAIQ,EACF,QAAWD,KAAS,MAAM,KAAKC,EAAO,QAAQ,EAC5CJ,EAAUG,CAAK,CAGrB,CAeA,SAASE,GAAwBC,EAAY,CAC3C,IAAMC,EAAqBD,EAAW,OAAOE,GAAa,CAACC,GAAkBD,CAAS,CAAC,EACvF,OAAID,EAAmB,SAAW,EACzB,KAEFA,EAAmB,KAAKC,GAAa,CAACD,EAAmB,KAAKG,GAAYA,IAAaF,GAAaE,EAAS,SAASF,CAAS,CAAC,CAAC,GAAK,IAC/I,CACA,SAASG,GAAqBC,EAAM,CAClC,IAAMN,EAAa,CAAC,EACpB,OAAAO,GAAwBD,EAAME,GAAQ,CAChCA,aAAgB,aAAeA,EAAK,QAAQC,EAAsB,GACpET,EAAW,KAAKQ,CAAI,CAExB,CAAC,EACMR,CACT,CACA,SAASU,GAA8BJ,EAAM,CAC3C,IAAMK,EAAaL,EAAK,cAAcM,EAAqB,EAC3D,OAAMD,aAAsB,YAGrB,MAAM,KAAKA,EAAW,iBAAiBF,EAAsB,CAAC,EAAE,OAAOI,GAAMP,EAAK,SAASO,CAAE,CAAC,EAF5F,CAAC,CAGZ,CACO,SAASC,GAAiBR,EAAM,CACrC,IAAMS,EAAiBhB,GAAwBW,GAA8BJ,CAAI,CAAC,EAClF,OAAIS,GAGGhB,GAAwBM,GAAqBC,CAAI,CAAC,CAC3D,CAYO,SAASU,GAAiBC,EAAS,CACxC,GAAIC,GAAcD,CAAO,EAAG,CAC1B,IAAME,EAAQC,EAAmBH,CAAO,EAClCI,EAAUF,IAAUF,EAAU,OAASK,EAAuB,IAAIH,EAAM,SAAS,EACvF,OAAIE,EACKA,EAAQ,KAAKF,CAAK,EAEvBF,EAAQ,OAAS,WACZA,EAAQ,QAEbA,EAAQ,OAAS,UAAYA,EAAQ,OAAS,QACzCA,EAAQ,QAAU,GAAK,GAAK,OAAOA,EAAQ,KAAK,EAElDA,EAAQ,KACjB,CACA,GAAIM,GAAiBN,CAAO,EAC1B,OAAOA,EAAQ,MAEjB,IAAMO,EAAOJ,EAAmBH,CAAO,EACvC,OAAOK,EAAuB,IAAIE,EAAK,SAAS,GAAG,KAAKA,CAAI,GAAKA,EAAK,aAAa,OAAO,GAAK,EACjG,CACO,SAASC,GAAkBR,EAASS,EAAO,CAChD,GAAIR,GAAcD,CAAO,EAAG,CAC1B,IAAME,EAAQC,EAAmBH,CAAO,EAClCI,EAAUF,IAAUF,EAAU,OAASK,EAAuB,IAAIH,EAAM,SAAS,EACvF,GAAIE,EAAS,CACXA,EAAQ,MAAMF,EAAOO,CAAK,EAC1B,MACF,CACA,GAAIT,EAAQ,OAAS,WAAY,CAC/BA,EAAQ,QAAU,EAAQS,EAC1B,IAAMC,EAAKV,EAAQ,QAAQ,0BAA0B,EACjDU,IACED,EACFC,EAAG,aAAa,UAAW,EAAE,EAE7BA,EAAG,gBAAgB,SAAS,GAGhC,MACF,CACAV,EAAQ,MAAQS,GAAS,KAAO,GAAK,OAAOA,CAAK,EACjD,MACF,CACA,GAAIH,GAAiBN,CAAO,EAAG,CAC7BA,EAAQ,MAAQS,GAAS,KAAO,GAAK,OAAOA,CAAK,EACjD,MACF,CACA,IAAMF,EAAOJ,EAAmBH,CAAO,EACvCK,EAAuB,IAAIE,EAAK,SAAS,GAAG,MAAMA,EAAME,CAAK,CAC/D,CACA,SAASN,EAAmBH,EAAS,CACnC,OAAIA,EAAQ,aAAaW,CAAgB,EAC1BX,EAAQ,QAAQY,EAAqB,GACnCZ,EAEVA,CACT,CCrPA,IAAMa,GAAc,2BACb,SAASC,GAAYC,EAAO,CACjC,OAAOF,GAAY,KAAKE,CAAK,CAC/B,CACA,SAASC,GAAcC,EAAQ,CAC7B,IAAMC,EAAUD,EAAO,KAAK,EAC5B,GAAIH,GAAYI,CAAO,EACrB,OAAOA,EAET,IAAMC,EAAW,OAAOD,CAAO,GAC/B,OAAIA,GAAWJ,GAAYK,CAAQ,EAC1BA,EAEF,KACT,CACO,SAASC,GAASH,EAAQ,CAC/B,IAAMI,EAAQ,OAAO,OAAO,YAAe,WAAa,OAAO,WAAW,EAAE,QAAQ,KAAM,EAAE,EAAI,MAAM,KAAK,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAAGC,GAAQA,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EAC1M,MAAO,GAAGN,GAAcC,CAAM,CAAC,IAAII,CAAK,EAC1C,CNlBA,IAAIE,GAAYC,GAAYC,GAAoBC,GAA0BC,GAAmBC,GAAyBC,GAAoBC,GAA0BC,GAAqBC,GAA2BC,GAAyBC,GAA+BC,GAAgBC,GAAsBC,GAAYC,GAAkBC,GAAsBC,GAA4BC,GAAcC,GAAoBC,GAAcC,GAClb,SAASC,GAAWC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,IAAIC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAAI,OAAO,UAAY,OAAO,IAAI,iBAAiB,EAAGC,GAAI,OAAO,eAAgBC,EAAI,OAAO,OAAQC,GAAI,CAACD,EAAE,IAAI,EAAGA,EAAE,IAAI,CAAC,EAAGE,GAAIhB,EAAE,OAAQ,SAASiB,EAAEjB,EAAGC,EAAGC,EAAG,CAAE,OAAO,SAAUC,EAAGC,EAAG,CAAEH,IAAMG,EAAID,EAAGA,EAAIJ,GAAI,QAASM,EAAI,EAAGA,EAAIL,EAAE,OAAQK,IAAKD,EAAIJ,EAAEK,CAAC,EAAE,MAAMF,EAAGD,EAAI,CAACE,CAAC,EAAI,CAAC,CAAC,EAAG,OAAOF,EAAIE,EAAID,CAAG,CAAG,CAAE,SAASe,EAAEnB,EAAGC,EAAGC,EAAGC,EAAG,CAAE,GAAkB,OAAOH,GAArB,aAA2BG,GAAgBH,IAAX,QAAe,MAAM,IAAI,UAAUC,EAAI,UAAYC,GAAK,MAAQ,eAAiBC,EAAI,GAAK,gBAAgB,EAAG,OAAOH,CAAG,CAAE,SAASoB,GAASpB,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGG,EAAGC,EAAGC,EAAGC,EAAGC,GAAG,CAAE,SAASC,EAAEb,EAAG,CAAE,GAAI,CAACY,GAAEZ,CAAC,EAAG,MAAM,IAAI,UAAU,qDAAqD,CAAG,CAAE,IAAIe,EAAI,CAAC,EAAE,OAAOd,EAAE,CAAC,CAAC,EAAGgB,GAAIhB,EAAE,CAAC,EAAGoB,EAAI,CAACb,EAAGc,EAAUlB,IAAN,EAASmB,GAAUnB,IAAN,EAASoB,GAAUpB,IAAN,EAASqB,EAAUrB,IAAN,EAAS,SAAS,EAAEH,EAAGC,EAAGC,GAAG,CAAE,OAAO,SAAUC,EAAGC,GAAG,CAAE,OAAOH,IAAMG,GAAID,EAAGA,EAAIJ,GAAIG,IAAKA,GAAEC,CAAC,EAAGsB,EAAEzB,CAAC,EAAE,KAAKG,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACgB,EAAG,CAAE,IAAIK,EAAI,CAAC,EAAGC,EAAI,CAAC,EAAGC,EAAIL,GAAI,MAAQC,IAAKF,EAAI,MAAQ,QAAS,GAAIZ,GAAKC,GAAKW,EAAII,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOZ,GAAE,IAAI,CAAG,EAAGd,EAAG,KAAK,EAAG,IAAK,SAAUH,EAAG,CAAEC,EAAE,CAAC,EAAE,KAAMD,CAAC,CAAG,CAAE,EAAI0B,EAAEE,CAAC,EAAIX,GAAGN,GAAKkB,GAAiBH,EAAEE,CAAC,EAAGzB,EAAGsB,EAAI,GAAKG,CAAC,GAAKjB,IAAMe,EAAI,OAAO,yBAAyB1B,EAAGG,CAAC,GAAI,CAACQ,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,GAAE,CAACP,CAAC,EAAEN,CAAC,KAAaI,EAAIH,KAAX,EAAe,MAAM,MAAM,+CAAiDsB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGZ,GAAE,CAACP,CAAC,EAAEN,CAAC,EAAIC,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS0B,EAAI9B,EAAG+B,EAAIhB,EAAE,OAAS,EAAGgB,GAAK,EAAGA,GAAK7B,EAAI,EAAI,EAAG,CAAE,IAAI8B,GAAIb,EAAEJ,EAAEgB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAI/B,EAAIa,EAAEgB,EAAI,CAAC,EAAI,OAAQG,EAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAE/B,CAAC,EAAG,KAAMD,EAAG,SAAUG,EAAG,eAAgB,SAAUN,EAAGC,EAAG,CAAE,GAAID,EAAE,EAAG,MAAM,IAAI,UAAU,gEAAgE,EAAGmB,EAAElB,EAAG,iBAAkB,KAAM,EAAE,EAAGI,EAAE,KAAKJ,CAAC,CAAG,EAAE,KAAK,KAAMiC,CAAC,CAAE,EAAG,GAAIb,EAAGd,EAAIyB,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,EAAE,EAAI,EAAGf,EAAEZ,EAAG,mBAAoB,QAAQ,IAAMuB,EAAIvB,WAAY4B,EAAE,OAAS1B,EAAG0B,EAAE,QAAUzB,EAAGH,EAAI4B,EAAE,OAAS,CAAE,IAAKzB,EAAIE,GAAE,KAAK,EAAI,SAAUZ,EAAG,CAAE,OAAOG,KAAKH,CAAG,CAAE,EAAGwB,KAAMjB,EAAE,IAAMG,EAAIe,EAAI,SAAUzB,EAAG,CAAE,OAAOa,EAAEb,CAAC,EAAG0B,EAAE,KAAO,EAAI,EAAE,MAAO,EAAGb,CAAC,EAAI,SAAUb,EAAG,CAAE,OAAOA,EAAEG,CAAC,CAAG,GAAIsB,GAAKF,KAAMhB,EAAE,IAAMG,EAAI,EAAE,MAAO,EAAGG,CAAC,EAAI,SAAUb,EAAGC,EAAG,CAAED,EAAEG,CAAC,EAAIF,CAAG,GAAI6B,EAAIE,GAAE,KAAKC,GAAGX,EAAI,CAAE,IAAKI,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,EAAE,EAAI,EAAGZ,GAAK,GAAgB,OAAOQ,GAAnB,UAAwBA,GAAIvB,EAAIY,EAAEW,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMnB,IAAKA,EAAIY,EAAEW,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMnB,IAAKA,EAAIY,EAAEW,EAAE,KAAM,eAAe,IAAMH,EAAE,QAAQpB,CAAC,UAAsBuB,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAUX,EAAEW,GAAInB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAIgB,EAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO1B,EAAI,GAAKI,EAAE,KAAKU,EAAES,EAAGlB,EAAG,CAAC,EAAGS,EAAEb,EAAGI,EAAG,CAAC,CAAC,EAAGE,GAAKU,IAAMX,EAAIY,EAAId,EAAE,OAAO,GAAI,EAAG,EAAE,MAAOC,CAAC,EAAG,EAAE,MAAOA,CAAC,CAAC,EAAID,EAAE,KAAKiB,EAAIC,EAAEE,CAAC,EAAIT,EAAE,KAAK,KAAKO,EAAEE,CAAC,CAAC,CAAC,EAAId,GAAEd,EAAGG,EAAGuB,CAAC,GAAII,CAAG,CAAE,SAAST,GAAErB,EAAG,CAAE,OAAOc,GAAEd,EAAGa,GAAG,CAAE,aAAc,GAAI,WAAY,GAAI,MAAOP,CAAE,CAAC,CAAG,CAAE,OAAkBD,IAAX,SAAiBC,EAAID,EAAEQ,EAAC,GAAIP,EAAIS,EAAUT,GAAI,IAAQ,EAAGI,EAAI,CAAC,EAAGC,EAAI,SAAUX,EAAG,CAAEA,GAAKU,EAAE,KAAKQ,EAAElB,CAAC,CAAC,CAAG,EAAGY,EAAI,SAAUX,EAAGE,EAAG,CAAE,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAAK,CAAE,IAAI,EAAIH,EAAEG,CAAC,EAAGE,EAAI,EAAE,CAAC,EAAGI,EAAI,EAAIJ,EAAG,IAAK,EAAIA,IAAMN,GAAK,CAACU,GAAKR,EAAG,CAAE,IAAIS,EAAI,EAAE,CAAC,EAAGC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAGC,EAAI,GAAKP,EAAGa,GAASnB,EAAID,EAAIA,EAAE,UAAW,EAAGc,EAAGD,EAAI,IAAMD,EAAIwB,GAAexB,CAAC,EAAGD,EAAGA,EAAI,EAAI,CAAC,EAAIV,EAAIQ,EAAIA,GAAK,CAAC,EAAID,EAAIA,GAAK,CAAC,EAAGE,EAAG,CAAC,CAACT,EAAGY,EAAGV,EAAGF,GAAKY,EAAI,SAAUZ,EAAG,CAAE,OAAOoC,GAAYpC,CAAC,IAAMD,CAAG,EAAII,CAAC,CAAG,CAAE,CAAE,EAAGQ,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGD,EAAEH,CAAC,EAAGG,EAAEF,CAAC,EAAGF,EAAIG,EAAGO,IAAKI,GAAErB,CAAC,EAAG,CAAE,EAAGO,EAAG,IAAI,GAAI,CAAE,IAAIL,EAAI,CAAC,EAAG,OAAOe,IAAK,CAACI,GAAErB,EAAIoB,GAASpB,EAAG,CAACC,CAAC,EAAGE,EAAGH,EAAE,KAAM,EAAGE,CAAC,CAAC,EAAGgB,EAAEhB,EAAG,CAAC,CAAC,CAAG,CAAE,CAAG,CACn/G,SAASkC,GAAe,EAAG,CAAE,IAAI/B,EAAIiC,GAAa,EAAG,QAAQ,EAAG,OAAmB,OAAOjC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASiC,GAAa,EAAGnC,EAAG,CAAE,GAAgB,OAAO,GAAnB,UAAwB,CAAC,EAAG,OAAO,EAAG,IAAIH,EAAI,EAAE,OAAO,WAAW,EAAG,GAAeA,IAAX,OAAc,CAAE,IAAI,EAAIA,EAAE,KAAK,EAAGG,GAAK,SAAS,EAAG,GAAgB,OAAO,GAAnB,SAAsB,OAAO,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBA,IAAb,SAAiB,OAAS,QAAQ,CAAC,CAAG,CACvT,SAAS0B,GAAiB7B,EAAGC,EAAGC,EAAG,CAAc,OAAOD,GAAnB,WAAyBA,GAAKA,EAAIA,EAAE,aAAe,IAAMA,EAAI,IAAM,IAAK,GAAI,CAAE,OAAO,eAAeD,EAAG,OAAQ,CAAE,aAAc,GAAI,MAAOE,EAAIA,EAAI,IAAMD,EAAIA,CAAE,CAAC,CAAG,MAAY,CAAC,CAAE,OAAOD,CAAG,CAChO,SAASqC,GAAYrC,EAAG,CAAE,GAAI,OAAOA,CAAC,IAAMA,EAAG,MAAM,UAAU,qDAAgEA,IAAT,KAAa,OAAOA,EAAI,OAAO,EAAG,OAAOA,CAAG,CAOlK,IAAMuC,GAAiB,IAAM,CAAC,EACxBC,GAAqB,CACzB,SAAU,IAAMD,GAChB,mBAAoB,IAAM,CAAC,EAC3B,kBAAmB,IAAM,CAAC,EAC1B,gBAAiB,IAAM,CAAC,EACxB,sBAAuB,IAAMA,EAC/B,EACIE,GACEC,GAAN,cAAsBC,EAAe,CACnC,MAAO,EACJ,CACC,EAAG,CAAChE,GAAoBC,GAA0BC,GAAmBC,GAAyBC,GAAoBC,GAA0BC,GAAqBC,GAA2BC,GAAyBC,GAA+BC,GAAgBC,GAAsBC,GAAYC,GAAkBC,GAAsBC,GAA4BC,GAAcC,GAAoBC,GAAcC,GAAoBrB,EAAU,EACxb,EAAG,CAACgE,GAAU/D,EAAU,CAC1B,EAAIqB,GAAW,KAAM,CAAC6C,GAAc,UAAU,CAAC,EAAG,CAAC,CAACC,GAAe,CACjE,QAASC,EACT,aAAc,CACZ,MAAO,GACP,SAAU,EACV,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,QAASN,EACX,CACF,CAAC,EAAG,EAAG,cAAc,EAAG,CAACO,GAAM,CAC7B,KAAM,aACN,QAAS,GACT,SAAU,EACZ,CAAC,EAAG,EAAG,aAAa,EAAG,CAACA,GAAM,CAC5B,KAAM,cACN,QAAS,GACT,SAAU,EACZ,CAAC,EAAG,EAAG,cAAc,EAAG,CAACC,EAAK,CAC5B,KAAM,OACN,aAAc,CAAC,CACjB,CAAC,EAAG,EAAG,eAAe,EAAG,CAACA,EAAK,CAC7B,KAAM,OACN,UAAWC,CACb,CAAC,EAAG,EAAG,mBAAmB,EAAG,CAACD,EAAK,CACjC,KAAM,MACR,CAAC,EAAG,EAAG,UAAU,EAAG,CAACA,EAAK,CACxB,KAAM,OACN,QAAS,GACT,aAAc,UAChB,CAAC,EAAG,EAAG,MAAM,EAAG,CAACA,EAAK,CACpB,KAAM,OACN,QAAS,GACT,UAAW,kBACX,aAAc,UAChB,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,EAAK,CAC9B,KAAM,OACN,QAAS,EACX,CAAC,EAAG,EAAG,QAAQ,EAAG,CAACA,EAAK,CACtB,KAAM,OACN,QAAS,EACX,CAAC,EAAG,EAAG,QAAQ,EAAG,CAACE,GAAU,CAAC,gBAAiB,oBAAqB,OAAQ,gBAAgB,CAAC,EAAG,EAAG,aAAa,EAAG,CAACA,GAAU,CAAC,UAAU,CAAC,EAAG,EAAG,cAAc,EAAG,CAACC,GAAQ,CACxK,SAAU,sBACV,KAAM,OACR,CAAC,EAAG,EAAG,qBAAqB,EAAG,CAACA,GAAQ,CACtC,IAAK,OACL,KAAM,QACR,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,GAAQ,CACjC,IAAK,OACL,KAAM,OACR,CAAC,EAAG,EAAG,eAAe,CAAC,EAAG,EAAG,OAAQR,EAAc,EACrD,CACA,cAAgBlE,GAAW,IAAI,EAAGE,GAAmB,IAAI,GACzD,aAAeC,GAAyB,IAAI,EAAGC,GAAkB,IAAI,GACrE,cAAgBC,GAAwB,IAAI,EAAGC,GAAmB,IAAI,GACtE,eAAiBC,GAAyB,IAAI,EAAGC,GAAoB,IAAI,GACzE,mBAAqBC,GAA0B,IAAI,EAAGC,GAAwB,IAAI,GAClF,UAAYC,GAA8B,IAAI,EAAGC,GAAe,IAAI,GACpE,MAAQC,GAAqB,IAAI,EAAGC,GAAW,IAAI,GACnD,gBAAkBC,GAAiB,IAAI,EAAGC,GAAqB,IAAI,GACnE,QAAUC,GAA2B,IAAI,EAAGC,GAAa,IAAI,GAC7D,QAAUC,GAAmB,IAAI,EAAGC,GAAa,IAAI,GACrD,SAAW,KAAKC,GAAmB,IAAI,EACvC,MACA,iBACA,aAAesD,GAAS,UAAU,EAClC,sBAAwB,GACxB,qBACA,sBAAuC,IAAI,IAC3C,YAAc,CACZ,SAAUC,GAAgB,CAExB,IAAMC,EADQ,KAAK,YAAY,EACN,SAASD,CAAY,EAC9C,YAAK,mBAAmB,CACtB,MAAO,EACT,CAAC,EACM,IAAM,CACXC,EAAW,EACX,KAAK,mBAAmB,CACtB,MAAO,EACT,CAAC,CACH,CACF,EACA,mBAAoB,CAACC,EAAMC,IAAY,CACrC,KAAK,YAAY,EAAE,mBAAmBD,EAAMC,CAAO,CACrD,EACA,kBAAmBD,GAAQ,CACpB,KAAK,YAAY,EAAE,kBAAkBA,CAAI,EAAE,KAAK,IAAM,KAAK,mBAAmB,CACjF,MAAO,EACT,CAAC,CAAC,CACJ,EACA,gBAAiBA,GAAQ,CAClB,KAAK,YAAY,EAAE,gBAAgBA,CAAI,EAAE,KAAK,IAAM,KAAK,mBAAmB,CAC/E,MAAO,EACT,CAAC,CAAC,CACJ,EACA,sBAAuBE,IACrB,KAAK,sBAAsB,IAAIA,CAAQ,EACnC,KAAK,sBACPA,EAAS,KAAK,oBAAoB,EAE7B,IAAM,KAAK,sBAAsB,OAAOA,CAAQ,EAE3D,EACA,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,CACtB,MAAO,EACT,CAAC,CACH,CACA,aAAc,CACZ,KAAK,wBAAwB,CAC/B,CACA,iBAAkB,CAChB,OAAO,KAAK,OAAO,MAAM,CAC3B,CAEA,yBAA0B,CACxB,IAAMC,EAAS,KAAK,gBAAgB,EACpC,GAAKA,EAGL,CAAKA,EAAO,KACVA,EAAO,GAAK,KAAK,cAEnB,QAAWC,KAAO,KAAK,iBAAiB,qBAAqB,EACvDD,EAAO,SAASC,CAAG,GAGvBA,EAAI,aAAa,OAAQD,EAAO,EAAE,EAEtC,CACA,eAAgB,CACA,KAAK,YAAY,EACpB,aAAa,MAAME,GAAU,CAItC,GAHA,KAAK,YAAY,KAAK,CACpB,OAAAA,CACF,CAAC,EACG,OAAO,KAAK,UAAa,WAAY,CACvC,MAAM,KAAK,SAASA,CAAM,EAC1B,MACF,CACI,KAAK,oBAAoB,GAC3B,KAAK,gBAAgB,GAAG,OAAO,CAEnC,EAAGC,GAAU,CACX,KAAK,aAAa,KAAK,CACrB,OAAAA,CACF,CAAC,CACH,CAAC,CACH,CACA,qBAAsB,CACpB,OAAO,OAAO,KAAK,UAAa,aAAe,KAAK,aAAa,QAAQ,IAAM,MAAQ,KAAK,aAAa,QAAQ,IAAM,KACzH,CACA,sBAAuB,CACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAmB,OACxB,MAAM,qBAAqB,CAC7B,CACA,aAAc,CACZ,IAAMC,EAAW,KAAK,aAAa,MAAM,EACzC,OAAIA,IAGG,KAAK,MAAQ,WACtB,CACA,uBAAwB,CACtB,IAAMA,EAAW,KAAK,aAAa,iBAAiB,EACpD,OAAIA,IAGG,KAAK,gBAAkB,WAChC,CACA,sBAAuB,CACrB,GAAI,KAAK,eAAiB,OAAO,KAAK,KAAK,aAAa,EAAE,OAAS,EACjE,OAAO,KAAK,cAEd,IAAMC,EAAM,KAAK,mBAAqB,KAAK,aAAad,CAA4B,EACpF,GAAI,CAACc,EACH,OAAO,KAAK,eAAiB,CAAC,EAEhC,GAAI,CACF,IAAMC,EAAS,KAAK,MAAMD,CAAG,EAC7B,OAAOC,GAAU,OAAOA,GAAW,UAAY,CAAC,MAAM,QAAQA,CAAM,EAAIA,EAAS,CAAC,CACpF,MAAQ,CACN,OAAO,KAAK,eAAiB,CAAC,CAChC,CACF,CACA,aAAc,CACZ,OAAI,KAAK,MACA,KAAK,OAEd,KAAK,MAAQ,IAAIC,EAAU,CACzB,cAAe,KAAK,qBAAqB,EACzC,SAAU,OAAO,KAAK,UAAa,WAAa,KAAK,SAAW,OAChE,KAAM,KAAK,YAAY,EACvB,eAAgB,KAAK,sBAAsB,CAC7C,CAAC,EACD,KAAK,iBAAmB,KAAK,MAAM,UAAU,IAAM,KAAK,mBAAmB,CAAC,EACrE,KAAK,MACd,CACA,wBAAwBC,EAAO,CAC7B,IAAMC,EAAS,CAAC,EAChB,QAAWZ,KAAQW,EAAM,wBAAwB,EAAG,CAClD,IAAME,EAAUF,EAAM,cAAcX,CAAI,EAClCc,EAAOH,EAAM,wBAAwBX,CAAI,EAC/CY,EAAOZ,CAAI,EAAI,CACb,MAAOc,EAAOD,EAAU,OACxB,QAAS,GAAQC,GAAQD,EAC3B,CACF,CACA,OAAOD,CACT,CACA,mBAAmBX,EAAS,CAC1B,IAAMU,EAAQ,KAAK,MACnB,GAAI,CAACA,EACH,OAEF,IAAMI,EAAWJ,EAAM,YAAY,EACnC,GAAI,CAACV,GAAS,OAASc,IAAa,KAAK,sBACvC,OAEF,KAAK,sBAAwBA,EAC7B,IAAMC,EAAc,CAClB,MAAO,GACP,SAAAD,EACA,OAAQ,KAAK,wBAAwBJ,CAAK,EAC1C,OAAQ,CACN,GAAGA,EAAM,MACX,EACA,QAAS,KAAK,WAChB,EACA,KAAK,qBAAuBK,EAC5B,KAAK,aAAa,WAAWA,CAAW,EACxC,QAAWd,KAAY,KAAK,sBAC1BA,EAASc,CAAW,CAExB,CACA,aAAc,CACE,KAAK,YAAY,EACzB,cAAc,CAClB,cAAe,KAAK,qBAAqB,EACzC,KAAM,KAAK,YAAY,EACvB,eAAgB,KAAK,sBAAsB,CAC7C,CAAC,CACH,CACA,cAAe,CACT,OAAO,KAAK,UAAa,YAC3B,KAAK,YAAY,EAAE,cAAc,CAC/B,SAAU,KAAK,QACjB,CAAC,CAEL,CACA,oBAAoBC,EAAQ,CAC1BA,EAAO,eAAe,EACtB,KAAK,cAAc,CACrB,CACA,eAAeA,EAAQ,CACrBA,EAAO,eAAe,EACtB,KAAK,cAAc,CACrB,CACA,eAAgB,CACd,KAAK,OAAO,MAAM,CACpB,CACA,MAAO,CACL9F,GAAW,CACb,CACF,EDnSO,SAAS+F,GAAQ,CACtB,SAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,eAAAC,EACA,SAAAC,EACA,OAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAAG,CACD,OAAsBC,GAAI,WAAY,CACpC,GAAGD,EACH,OAAAF,EACA,OAAAC,EACA,eAAAH,EACA,uBAAwBA,EACxB,qBAAsBH,EACtB,gBAAiBE,EACjB,gBAAiBE,EACjB,KAAM,CACJ,cAAeH,IAAsBD,IAAkB,OAAS,KAAK,UAAUA,CAAa,EAAI,OAClG,EACA,SAAyBQ,GAAI,OAAQ,CACnC,MAAO,WACP,WAAY,OACZ,WAAY,GACZ,OAAAH,EACA,OAAAC,EACA,SAAAP,CACF,CAAC,CACH,CAAC,CACH",
6
- "names": ["jsx", "RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "provideContext", "createContext", "formContext", "resolveRuleMessage", "fallback", "rule", "ruleValue", "validateFieldRules", "_valueName", "value", "rules", "values", "validator", "validateRequired", "validateNumericRange", "validateTextRules", "validateCustomRules", "message", "empty", "numberValue", "text", "validators", "validate", "result", "runRulesResolver", "context", "names", "targetNames", "errors", "name", "createRulesResolver", "options", "normalizeResolver", "resolver", "createRulesResolver", "FormStore", "options", "listener", "registration", "existing", "entry", "name", "field", "next", "value", "values", "errorCount", "message", "result", "trigger", "onValid", "onInvalid", "valid", "nextDefaults", "defaults", "fields", "rules", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "parseNumberArray", "value", "item", "serializeNumberArray", "values", "numberArrayTransform", "uniqueTrimmed", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FORM_DEFAULT_VALUES_ATTR", "FIELD_COLUMN_SELECTOR", "HOST_CONTROL_TAGS", "FIELD_CONTROL_SELECTOR", "RUI_CONTROL_ATTR", "HOST_CONTROL_SELECTOR", "isEmbeddedListbox", "node", "isNativeTextControl", "node", "isNativeInput", "isNativeTextarea", "stringValueAdapter", "host", "value", "next", "numberValueAdapter", "raw", "booleanValueAdapter", "readHostValue", "transform", "writeHostValue", "stringArrayValueAdapter", "multiValueTransform", "sliderValueAdapter", "numberArrayTransform", "CONTROL_VALUE_ADAPTERS", "forEachFieldContentNode", "root", "visit", "slotHost", "visited", "safeVisit", "renderRoot", "FIELD_COLUMN_SELECTOR", "child", "shadow", "pickPrimaryFieldControl", "candidates", "eligibleCandidates", "candidate", "isEmbeddedListbox", "ancestor", "collectFieldControls", "root", "forEachFieldContentNode", "node", "FIELD_CONTROL_SELECTOR", "listFieldControlsInRenderTree", "renderRoot", "FIELD_COLUMN_SELECTOR", "el", "findFieldControl", "fromRenderTree", "readControlValue", "control", "isNativeInput", "host2", "resolveControlHost", "adapter", "CONTROL_VALUE_ADAPTERS", "isNativeTextarea", "host", "writeControlValue", "value", "ce", "RUI_CONTROL_ATTR", "HOST_CONTROL_SELECTOR", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "_initProto", "_initClass", "_init_formProvider", "_init_extra_formProvider", "_init_submitEvent", "_init_extra_submitEvent", "_init_invalidEvent", "_init_extra_invalidEvent", "_init_defaultValues", "_init_extra_defaultValues", "_init_defaultValuesData", "_init_extra_defaultValuesData", "_init_resolver", "_init_extra_resolver", "_init_mode", "_init_extra_mode", "_init_reValidateMode", "_init_extra_reValidateMode", "_init_action", "_init_extra_action", "_init_method", "_init_extra_method", "_applyDecs", "e", "t", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "b", "applyDec", "w", "D", "S", "j", "E", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "noopUnregister", "initialFormActions", "_RuiForm", "RuiForm", "RadiantElement", "customElement", "provideContext", "formContext", "event", "prop", "RUI_FORM_DEFAULT_VALUES_ATTR", "onUpdated", "onEvent", "uniqueId", "registration", "unregister", "name", "options", "listener", "formEl", "btn", "values", "errors", "fromAttr", "raw", "parsed", "FormStore", "store", "fields", "message", "show", "revision", "nextContext", "event2", "RuiForm", "children", "defaultValues", "defaultValuesData", "resolver", "reValidateMode", "onSubmit", "action", "method", "props", "jsx"]
4
+ "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport \"./form.script\";\nexport function RuiForm({\n children,\n defaultValues,\n defaultValuesData,\n resolver,\n reValidateMode,\n onSubmit,\n action,\n method,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-form\", {\n ...props,\n action,\n method,\n reValidateMode,\n \"attr:revalidate-mode\": reValidateMode,\n \"prop:defaultValues\": defaultValues,\n \"prop:resolver\": resolver,\n \"prop:onSubmit\": onSubmit,\n data: {\n defaultValues: defaultValuesData ?? (defaultValues !== void 0 ? JSON.stringify(defaultValues) : void 0)\n },\n children: /* @__PURE__ */jsx(\"form\", {\n class: \"rui-form\",\n \"data-ref\": \"form\",\n noValidate: true,\n action,\n method,\n children\n })\n });\n}", "let _initProto, _initClass, _init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _init_action, _init_extra_action, _init_method, _init_extra_method;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(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; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { provideContext } from \"@ecopages/radiant/context\";\nimport { formContext } from \"./form-context\";\nimport { FormStore } from \"./form-store\";\nimport { RUI_FORM_DEFAULT_VALUES_ATTR } from \"./control-protocol\";\nimport { uniqueId } from \"@/lib/unique-id\";\nconst noopUnregister = () => {};\nconst initialFormActions = {\n register: () => noopUnregister,\n updateFieldOptions: () => {},\n handleFieldChange: () => {},\n handleFieldBlur: () => {},\n subscribePresentation: () => noopUnregister\n};\nlet _RuiForm;\nclass RuiForm extends RadiantElement {\n static {\n ({\n e: [_init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _init_action, _init_extra_action, _init_method, _init_extra_method, _initProto],\n c: [_RuiForm, _initClass]\n } = _applyDecs(this, [customElement(\"rui-form\")], [[provideContext({\n context: formContext,\n initialValue: {\n ready: false,\n store: void 0,\n revision: 0,\n fields: {},\n errors: {},\n actions: initialFormActions\n },\n hydrate: Object,\n serialize: ({\n revision,\n fields,\n errors\n }) => ({\n ready: false,\n revision,\n fields,\n errors\n })\n }), 0, \"formProvider\"], [event({\n name: \"rui-submit\",\n bubbles: true,\n composed: true\n }), 0, \"submitEvent\"], [event({\n name: \"rui-invalid\",\n bubbles: true,\n composed: true\n }), 0, \"invalidEvent\"], [prop({\n type: Object,\n defaultValue: {}\n }), 0, \"defaultValues\"], [prop({\n type: String,\n attribute: RUI_FORM_DEFAULT_VALUES_ATTR\n }), 0, \"defaultValuesData\"], [prop({\n type: Object\n }), 0, \"resolver\"], [prop({\n type: String,\n reflect: true,\n defaultValue: \"onSubmit\"\n }), 0, \"mode\"], [prop({\n type: String,\n reflect: true,\n attribute: \"revalidate-mode\",\n defaultValue: \"onChange\"\n }), 0, \"reValidateMode\"], [prop({\n type: String,\n reflect: true\n }), 0, \"action\"], [prop({\n type: String,\n reflect: true\n }), 0, \"method\"], [onUpdated([\"defaultValues\", \"defaultValuesData\", \"mode\", \"reValidateMode\"]), 2, \"syncOptions\"], [onUpdated([\"resolver\"]), 2, \"syncResolver\"], [onEvent({\n selector: \"button[type=submit]\",\n type: \"click\"\n }), 2, \"onSubmitButtonClick\"], [onEvent({\n ref: \"form\",\n type: \"submit\"\n }), 2, \"onNativeSubmit\"], [onEvent({\n ref: \"form\",\n type: \"reset\"\n }), 2, \"onNativeReset\"]], 0, void 0, RadiantElement));\n }\n formProvider = (_initProto(this), _init_formProvider(this));\n submitEvent = (_init_extra_formProvider(this), _init_submitEvent(this));\n invalidEvent = (_init_extra_submitEvent(this), _init_invalidEvent(this));\n defaultValues = (_init_extra_invalidEvent(this), _init_defaultValues(this));\n defaultValuesData = (_init_extra_defaultValues(this), _init_defaultValuesData(this));\n resolver = (_init_extra_defaultValuesData(this), _init_resolver(this));\n mode = (_init_extra_resolver(this), _init_mode(this));\n reValidateMode = (_init_extra_mode(this), _init_reValidateMode(this));\n action = (_init_extra_reValidateMode(this), _init_action(this));\n method = (_init_extra_action(this), _init_method(this));\n onSubmit = void _init_extra_method(this);\n store;\n unsubscribeStore;\n nativeFormId = uniqueId(\"rui-form\");\n lastPublishedRevision = -1;\n lastPublishedContext;\n presentationListeners = /* @__PURE__ */new Set();\n formActions = {\n register: registration => {\n const store = this.ensureStore();\n const unregister = store.register(registration);\n this.publishFormContext({\n force: true\n });\n return () => {\n unregister();\n this.publishFormContext({\n force: true\n });\n };\n },\n updateFieldOptions: (name, options) => {\n this.ensureStore().updateFieldOptions(name, options);\n },\n handleFieldChange: name => {\n void this.ensureStore().handleFieldChange(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n handleFieldBlur: name => {\n void this.ensureStore().handleFieldBlur(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n subscribePresentation: listener => {\n this.presentationListeners.add(listener);\n if (this.lastPublishedContext) {\n listener(this.lastPublishedContext);\n }\n return () => this.presentationListeners.delete(listener);\n }\n };\n connectedCallback() {\n super.connectedCallback();\n this.ensureStore();\n this.publishFormContext({\n force: true\n });\n }\n onConnected() {\n this.wireOrphanSubmitButtons();\n }\n queryNativeForm() {\n return this.getRef(\"form\");\n }\n /** Link submit buttons left on the host outside the composed native `<form>`. */\n wireOrphanSubmitButtons() {\n const formEl = this.queryNativeForm();\n if (!formEl) {\n return;\n }\n if (!formEl.id) {\n formEl.id = this.nativeFormId;\n }\n for (const btn of this.querySelectorAll(\"button[type=submit]\")) {\n if (formEl.contains(btn)) {\n continue;\n }\n btn.setAttribute(\"form\", formEl.id);\n }\n }\n runFormSubmit() {\n const store = this.ensureStore();\n void store.handleSubmit(async values => {\n this.submitEvent.emit({\n values\n });\n if (typeof this.onSubmit === \"function\") {\n await this.onSubmit(values);\n return;\n }\n if (this.hasNativeSubmission()) {\n this.queryNativeForm()?.submit();\n }\n }, errors => {\n this.invalidEvent.emit({\n errors\n });\n });\n }\n hasNativeSubmission() {\n return typeof this.onSubmit !== \"function\" && (this.getAttribute(\"action\") !== null || this.getAttribute(\"method\") !== null);\n }\n disconnectedCallback() {\n this.unsubscribeStore?.();\n this.unsubscribeStore = void 0;\n super.disconnectedCallback();\n }\n resolveMode() {\n const fromAttr = this.getAttribute(\"mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.mode ?? \"onSubmit\";\n }\n resolveReValidateMode() {\n const fromAttr = this.getAttribute(\"revalidate-mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.reValidateMode ?? \"onChange\";\n }\n resolveDefaultValues() {\n if (this.defaultValues && Object.keys(this.defaultValues).length > 0) {\n return this.defaultValues;\n }\n const raw = this.defaultValuesData ?? this.getAttribute(RUI_FORM_DEFAULT_VALUES_ATTR);\n if (!raw) {\n return this.defaultValues ?? {};\n }\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n } catch {\n return this.defaultValues ?? {};\n }\n }\n ensureStore() {\n if (!this.store) {\n this.store = new FormStore({\n defaultValues: this.resolveDefaultValues(),\n resolver: typeof this.resolver === \"function\" ? this.resolver : void 0,\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n }\n this.unsubscribeStore ??= this.store.subscribe(() => this.publishFormContext());\n return this.store;\n }\n buildFieldPresentations(store) {\n const fields = {};\n for (const name of store.getRegisteredFieldNames()) {\n const message = store.getFieldError(name);\n const show = store.shouldDisplayFieldError(name);\n fields[name] = {\n error: show ? message : void 0,\n invalid: Boolean(show && message)\n };\n }\n return fields;\n }\n publishFormContext(options) {\n const store = this.store;\n if (!store) {\n return;\n }\n const revision = store.getRevision();\n if (!options?.force && revision === this.lastPublishedRevision) {\n return;\n }\n this.lastPublishedRevision = revision;\n const nextContext = {\n ready: true,\n store,\n revision,\n fields: this.buildFieldPresentations(store),\n errors: {\n ...store.errors\n },\n actions: this.formActions\n };\n this.lastPublishedContext = nextContext;\n this.formProvider.setContext(nextContext);\n for (const listener of this.presentationListeners) {\n listener(nextContext);\n }\n }\n syncOptions() {\n const store = this.ensureStore();\n store.updateOptions({\n defaultValues: this.resolveDefaultValues(),\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n }\n syncResolver() {\n if (typeof this.resolver === \"function\") {\n this.ensureStore().updateOptions({\n resolver: this.resolver\n });\n }\n }\n onSubmitButtonClick(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeSubmit(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeReset() {\n this.store?.reset();\n }\n static {\n _initClass();\n }\n}\nexport { _RuiForm as RuiForm };", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "function resolveRuleMessage(fallback, rule) {\n if (rule === void 0 || rule === false) {\n return void 0;\n }\n if (typeof rule === \"string\") {\n return rule;\n }\n if (typeof rule === \"object\" && rule !== null && \"message\" in rule && typeof rule.message === \"string\") {\n return rule.message;\n }\n return fallback;\n}\nfunction ruleValue(rule) {\n if (typeof rule === \"object\" && rule !== null && \"value\" in rule) {\n return rule.value;\n }\n return rule;\n}\nasync function validateFieldRules(_valueName, value, rules, values) {\n if (!rules) return void 0;\n for (const validator of [validateRequired, validateNumericRange, validateTextRules, validateCustomRules]) {\n const message = await validator(value, rules, values);\n if (message) return message;\n }\n return void 0;\n}\nfunction validateRequired(value, rules) {\n const empty = value === void 0 || value === null || value === \"\" || value === false || Array.isArray(value) && value.length === 0;\n return rules.required && empty ? resolveRuleMessage(\"This field is required\", rules.required) ?? \"This field is required\" : void 0;\n}\nfunction validateNumericRange(value, rules) {\n const numberValue = typeof value === \"number\" ? value : typeof value === \"string\" && value !== \"\" ? Number(value) : void 0;\n if (numberValue === void 0 || Number.isNaN(numberValue)) return void 0;\n if (rules.min !== void 0 && numberValue < ruleValue(rules.min)) return resolveRuleMessage(`Minimum value is ${ruleValue(rules.min)}`, rules.min);\n if (rules.max !== void 0 && numberValue > ruleValue(rules.max)) return resolveRuleMessage(`Maximum value is ${ruleValue(rules.max)}`, rules.max);\n return void 0;\n}\nfunction validateTextRules(value, rules) {\n const text = value == null ? \"\" : String(value);\n if (rules.minLength !== void 0 && text.length < ruleValue(rules.minLength)) return resolveRuleMessage(`Minimum length is ${ruleValue(rules.minLength)}`, rules.minLength);\n if (rules.maxLength !== void 0 && text.length > ruleValue(rules.maxLength)) return resolveRuleMessage(`Maximum length is ${ruleValue(rules.maxLength)}`, rules.maxLength);\n if (rules.pattern !== void 0 && !ruleValue(rules.pattern).test(text)) return resolveRuleMessage(\"Invalid format\", rules.pattern) ?? \"Invalid format\";\n return void 0;\n}\nasync function validateCustomRules(value, rules, values) {\n if (!rules.validate) return void 0;\n const validators = typeof rules.validate === \"function\" ? [rules.validate] : Object.values(rules.validate);\n for (const validate of validators) {\n const result = await validate(value, values);\n if (result !== true && result !== void 0) return result === false ? \"Invalid value\" : String(result);\n }\n return void 0;\n}\nexport async function runRulesResolver(values, context, names) {\n const targetNames = names ?? Object.keys(context.fields);\n const errors = {};\n for (const name of targetNames) {\n const rules = context.fields[name]?.rules;\n const message = await validateFieldRules(name, values[name], rules, values);\n if (message) {\n errors[name] = {\n type: \"validation\",\n message\n };\n }\n }\n if (Object.keys(errors).length > 0) {\n return {\n values: {},\n errors\n };\n }\n return {\n values,\n errors: {}\n };\n}\nexport function createRulesResolver() {\n return (values, context, options) => runRulesResolver(values, context, options.names);\n}", "import { createRulesResolver } from \"./resolvers\";\nfunction normalizeResolver(resolver) {\n if (typeof resolver === \"function\") {\n return resolver;\n }\n return createRulesResolver();\n}\nexport class FormStore {\n mode;\n reValidateMode;\n resolver;\n fields = /* @__PURE__ */new Map();\n listeners = /* @__PURE__ */new Set();\n revision = 0;\n defaultValues;\n values;\n errors = {};\n touched = {};\n dirty = {};\n isSubmitting = false;\n isSubmitted = false;\n constructor(options = {}) {\n this.mode = options.mode ?? \"onSubmit\";\n this.reValidateMode = options.reValidateMode ?? \"onChange\";\n this.resolver = normalizeResolver(options.resolver);\n this.defaultValues = {\n ...(options.defaultValues ?? {})\n };\n this.values = {\n ...this.defaultValues,\n ...(options.values ?? {})\n };\n }\n /** Update options without dropping registered fields. */\n updateOptions(options) {\n if (options.mode !== void 0) {\n this.mode = options.mode;\n }\n if (options.reValidateMode !== void 0) {\n this.reValidateMode = options.reValidateMode;\n }\n if (options.resolver !== void 0) {\n this.resolver = normalizeResolver(options.resolver);\n }\n if (options.defaultValues !== void 0) {\n this.defaultValues = {\n ...options.defaultValues\n };\n }\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n notify() {\n this.revision += 1;\n for (const listener of this.listeners) {\n listener();\n }\n }\n getRevision() {\n return this.revision;\n }\n getRegisteredFieldNames() {\n return Array.from(this.fields.keys());\n }\n register(registration) {\n const existing = this.fields.get(registration.name);\n const entry = {\n ...registration,\n rules: registration.rules ?? existing?.rules,\n defaultValue: registration.defaultValue ?? existing?.defaultValue,\n getRules: registration.getRules ?? existing?.getRules\n };\n this.fields.set(registration.name, entry);\n if (this.values[registration.name] === void 0 && entry.defaultValue !== void 0) {\n this.values = {\n ...this.values,\n [registration.name]: entry.defaultValue\n };\n }\n entry.setValue(this.values[registration.name]);\n return () => {\n const current = this.fields.get(registration.name);\n if (current === entry) {\n this.fields.delete(registration.name);\n this.notify();\n }\n };\n }\n updateFieldOptions(name, options) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n if (options.rules !== void 0) {\n field.rules = options.rules;\n }\n if (options.defaultValue !== void 0) {\n field.defaultValue = options.defaultValue;\n }\n }\n getValues() {\n const next = {\n ...this.values\n };\n for (const [name, field] of this.fields) {\n next[name] = field.getValue();\n }\n return next;\n }\n setValue(name, value, options) {\n this.values = {\n ...this.values,\n [name]: value\n };\n const field = this.fields.get(String(name));\n field?.setValue(value);\n if (options?.shouldDirty) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n }\n if (options?.shouldTouch) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n }\n markTouched(name) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n this.notify();\n }\n markDirty(name) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n this.notify();\n }\n clearErrors(name) {\n if (name) {\n const next = {\n ...this.errors\n };\n delete next[name];\n this.errors = next;\n this.notify();\n return;\n }\n this.errors = {};\n this.notify();\n }\n getFieldError(name) {\n return this.errors[name]?.message;\n }\n getState() {\n const values = this.getValues();\n const errorCount = Object.keys(this.errors).length;\n return {\n values,\n errors: this.errors,\n touched: this.touched,\n dirty: this.dirty,\n isSubmitting: this.isSubmitting,\n isSubmitted: this.isSubmitted,\n isValid: errorCount === 0\n };\n }\n async validateField(name) {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {\n names: [name]\n });\n const message = result.errors[name]?.message;\n const next = {\n ...this.errors\n };\n if (message) {\n next[name] = {\n type: \"validation\",\n message\n };\n } else {\n delete next[name];\n }\n this.errors = next;\n this.notify();\n return !message;\n }\n async validateAll() {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {});\n this.errors = result.errors;\n this.notify();\n return Object.keys(this.errors).length === 0;\n }\n shouldValidate(name, trigger) {\n const mode = this.isSubmitted ? this.reValidateMode : this.mode;\n switch (mode) {\n case \"all\":\n return true;\n case \"onChange\":\n return trigger === \"change\";\n case \"onBlur\":\n return trigger === \"blur\";\n case \"onTouched\":\n return trigger === \"blur\" && Boolean(this.touched[name]);\n case \"onSubmit\":\n return false;\n default:\n return false;\n }\n }\n async handleFieldChange(name) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n const value = field.getValue();\n this.values = {\n ...this.values,\n [name]: value\n };\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n if (this.shouldValidate(name, \"change\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n async handleFieldBlur(name) {\n this.markTouched(name);\n if (this.shouldValidate(name, \"blur\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n /** Whether a field's validation message should be shown in the UI (RHF-style). */\n shouldDisplayFieldError(name) {\n const message = this.errors[name]?.message;\n if (!message) {\n return false;\n }\n if (this.isSubmitted) {\n return true;\n }\n switch (this.mode) {\n case \"all\":\n return Boolean(this.dirty[name] || this.touched[name]);\n case \"onChange\":\n return Boolean(this.dirty[name]);\n case \"onBlur\":\n case \"onTouched\":\n return Boolean(this.touched[name]);\n case \"onSubmit\":\n default:\n return false;\n }\n }\n async handleSubmit(onValid, onInvalid) {\n this.isSubmitting = true;\n this.isSubmitted = true;\n for (const name of this.fields.keys()) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n const valid = await this.validateAll();\n this.isSubmitting = false;\n this.notify();\n if (valid) {\n await onValid(this.getValues());\n return;\n }\n onInvalid?.(this.errors);\n }\n reset(values) {\n const nextDefaults = values ?? {\n ...this.defaultValues,\n ...this.collectFieldDefaults()\n };\n this.values = {\n ...nextDefaults\n };\n this.errors = {};\n this.touched = {};\n this.dirty = {};\n this.isSubmitted = false;\n this.isSubmitting = false;\n for (const field of this.fields.values()) {\n field.setValue(this.values[field.name]);\n }\n this.notify();\n }\n collectFieldDefaults() {\n const defaults = {};\n for (const [name, field] of this.fields) {\n if (field.defaultValue !== void 0) {\n defaults[name] = field.defaultValue;\n }\n }\n return defaults;\n }\n buildResolverFields() {\n const fields = {};\n for (const [name, field] of this.fields) {\n const rules = field.getRules?.() ?? field.rules;\n fields[name] = {\n rules\n };\n }\n return fields;\n }\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { multiValueTransform, numberArrayTransform } from \"../shared/multi-value\";\nexport const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst FIELD_COLUMN_SELECTOR = '[data-ref=\"field\"]';\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-date-field\", \"rui-date-range-picker\", \"rui-select\", \"rui-tag-group\", \"rui-checkbox\", \"rui-checkbox-group\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-knob\", \"rui-number-field\", \"rui-listbox\"]);\nexport const FIELD_CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}`;\nconst HOST_CONTROL_SELECTOR = Array.from(HOST_CONTROL_TAGS).join(\", \");\nfunction isEmbeddedListbox(node) {\n return node.localName === \"rui-listbox\" && (node.hasAttribute(\"embedded\") || Reflect.get(node, \"embedded\") === true);\n}\nconst ARIA_TARGET_SELECTORS = {\n \"rui-combobox\": \"[data-combobox-input]\",\n \"rui-date-field\": \"[data-date-field-input]\",\n \"rui-date-range-picker\": \"[data-range-start]\",\n \"rui-select\": \"[data-select-trigger]\",\n \"rui-tag-group\": \"[data-tag-list]\",\n \"rui-number-field\": \"[data-number-field-input], input\",\n \"rui-knob\": \"[data-knob-control]\",\n \"rui-checkbox\": \"input\",\n \"rui-checkbox-group\": \"[data-checkbox-group-root]\",\n \"rui-switch\": \"input\"\n};\nexport function isNativeTextControl(node) {\n return node.localName === \"input\" || node.localName === \"textarea\";\n}\nfunction isNativeInput(node) {\n return node.localName === \"input\";\n}\nfunction isNativeTextarea(node) {\n return node.localName === \"textarea\";\n}\nconst stringValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n return typeof value === \"string\" ? value : host.getAttribute(\"value\") ?? \"\";\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", next);\n }\n }\n};\nconst numberValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n if (typeof value === \"number\") {\n return value;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", value);\n }\n }\n};\nconst booleanValueAdapter = {\n read: host => {\n const input = host.querySelector('input[type=\"checkbox\"]');\n return input?.checked ?? host.hasAttribute(\"checked\");\n },\n write: (host, value) => {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n }\n};\nfunction readHostValue(host, transform) {\n const value = Reflect.get(host, \"value\");\n if (value !== void 0 && transform.fromProperty) {\n return transform.fromProperty(value);\n }\n if (transform.fromAttribute) {\n return transform.fromAttribute(host.getAttribute(\"value\"));\n }\n return value;\n}\nfunction writeHostValue(host, value) {\n Reflect.set(host, \"value\", value);\n}\nconst stringArrayValueAdapter = {\n read: host => readHostValue(host, multiValueTransform),\n write: writeHostValue\n};\nconst sliderValueAdapter = {\n read: host => readHostValue(host, numberArrayTransform),\n write: writeHostValue\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", stringArrayValueAdapter], [\"rui-date-field\", stringValueAdapter], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", stringArrayValueAdapter], [\"rui-radio-group\", stringValueAdapter], [\"rui-checkbox-group\", stringArrayValueAdapter], [\"rui-listbox\", stringArrayValueAdapter], [\"rui-tag-group\", stringArrayValueAdapter], [\"rui-slider\", sliderValueAdapter], [\"rui-knob\", numberValueAdapter], [\"rui-number-field\", numberValueAdapter]]);\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR) ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n const eligibleCandidates = candidates.filter(candidate => !isEmbeddedListbox(candidate));\n if (eligibleCandidates.length === 0) {\n return null;\n }\n return eligibleCandidates.find(candidate => !eligibleCandidates.some(ancestor => ancestor !== candidate && ancestor.contains(candidate))) ?? null;\n}\nfunction collectFieldControls(root) {\n const candidates = [];\n forEachFieldContentNode(root, node => {\n if (node instanceof HTMLElement && node.matches(FIELD_CONTROL_SELECTOR)) {\n candidates.push(node);\n }\n });\n return candidates;\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR);\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(FIELD_CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n return pickPrimaryFieldControl(collectFieldControls(root));\n}\nexport function isPrimaryFieldControlEvent(root, event) {\n const control = findFieldControl(root);\n if (!control || !(event.target instanceof Element)) {\n return false;\n }\n if (event.target !== control && !control.contains(event.target)) {\n return false;\n }\n const nestedHost = event.target.closest(HOST_CONTROL_SELECTOR);\n return nestedHost === control || nestedHost == null;\n}\nexport function readControlValue(control) {\n if (isNativeInput(control)) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n return adapter.read(host2);\n }\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (isNativeTextarea(control)) {\n return control.value;\n }\n const host = resolveControlHost(control);\n return CONTROL_VALUE_ADAPTERS.get(host.localName)?.read(host) ?? host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (isNativeInput(control)) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n adapter.write(host2, value);\n return;\n }\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (isNativeTextarea(control)) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n CONTROL_VALUE_ADAPTERS.get(host.localName)?.write(host, value);\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(HOST_CONTROL_SELECTOR);\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}]`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR);\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget && isNativeTextControl(ariaTarget)) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nfunction isChecked(input) {\n const checked = Reflect.get(input, \"checked\");\n return typeof checked === \"boolean\" ? checked : input.hasAttribute(\"checked\");\n}\nexport function getAriaControlTarget(control) {\n if (isNativeTextControl(control)) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector(\"[data-thumb]:not([hidden])\") ?? control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-radio-group\") {\n return getSelectedRadio(control) ?? control;\n }\n const selector = ARIA_TARGET_SELECTORS[control.localName];\n return selector ? control.querySelector(selector) ?? control : control;\n}\nfunction getSelectedRadio(control) {\n const radios = control.querySelectorAll('input[type=\"radio\"]');\n return Array.from(radios).find(isChecked) ?? radios[0];\n}\nexport function getAriaControlTargets(control) {\n if (control.localName === \"rui-slider\") {\n const thumbs = Array.from(control.querySelectorAll(\"[data-thumb]:not([hidden])\"));\n return thumbs.length > 0 ? thumbs : [control];\n }\n return [getAriaControlTarget(control)];\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "provideContext", "createContext", "formContext", "resolveRuleMessage", "fallback", "rule", "ruleValue", "validateFieldRules", "_valueName", "value", "rules", "values", "validator", "validateRequired", "validateNumericRange", "validateTextRules", "validateCustomRules", "message", "empty", "numberValue", "text", "validators", "validate", "result", "runRulesResolver", "context", "names", "targetNames", "errors", "name", "createRulesResolver", "options", "normalizeResolver", "resolver", "createRulesResolver", "FormStore", "options", "listener", "registration", "existing", "entry", "name", "field", "next", "value", "values", "errorCount", "message", "result", "trigger", "onValid", "onInvalid", "valid", "nextDefaults", "defaults", "fields", "rules", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "parseNumberArray", "value", "item", "serializeNumberArray", "values", "numberArrayTransform", "uniqueTrimmed", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FORM_DEFAULT_VALUES_ATTR", "FIELD_COLUMN_SELECTOR", "HOST_CONTROL_TAGS", "FIELD_CONTROL_SELECTOR", "RUI_CONTROL_ATTR", "HOST_CONTROL_SELECTOR", "isEmbeddedListbox", "node", "isNativeTextControl", "node", "isNativeInput", "isNativeTextarea", "stringValueAdapter", "host", "value", "next", "numberValueAdapter", "raw", "booleanValueAdapter", "readHostValue", "transform", "writeHostValue", "stringArrayValueAdapter", "multiValueTransform", "sliderValueAdapter", "numberArrayTransform", "CONTROL_VALUE_ADAPTERS", "forEachFieldContentNode", "root", "visit", "slotHost", "visited", "safeVisit", "renderRoot", "FIELD_COLUMN_SELECTOR", "child", "shadow", "pickPrimaryFieldControl", "candidates", "eligibleCandidates", "candidate", "isEmbeddedListbox", "ancestor", "collectFieldControls", "root", "forEachFieldContentNode", "node", "FIELD_CONTROL_SELECTOR", "listFieldControlsInRenderTree", "renderRoot", "FIELD_COLUMN_SELECTOR", "el", "findFieldControl", "fromRenderTree", "readControlValue", "control", "isNativeInput", "host2", "resolveControlHost", "adapter", "CONTROL_VALUE_ADAPTERS", "isNativeTextarea", "host", "writeControlValue", "value", "ce", "RUI_CONTROL_ATTR", "HOST_CONTROL_SELECTOR", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "_initProto", "_initClass", "_init_formProvider", "_init_extra_formProvider", "_init_submitEvent", "_init_extra_submitEvent", "_init_invalidEvent", "_init_extra_invalidEvent", "_init_defaultValues", "_init_extra_defaultValues", "_init_defaultValuesData", "_init_extra_defaultValuesData", "_init_resolver", "_init_extra_resolver", "_init_mode", "_init_extra_mode", "_init_reValidateMode", "_init_extra_reValidateMode", "_init_action", "_init_extra_action", "_init_method", "_init_extra_method", "_applyDecs", "e", "t", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "b", "applyDec", "w", "D", "S", "j", "E", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "noopUnregister", "initialFormActions", "_RuiForm", "RuiForm", "RadiantElement", "customElement", "provideContext", "formContext", "revision", "fields", "errors", "event", "prop", "RUI_FORM_DEFAULT_VALUES_ATTR", "onUpdated", "onEvent", "uniqueId", "registration", "unregister", "name", "options", "listener", "formEl", "btn", "values", "fromAttr", "raw", "parsed", "FormStore", "store", "message", "show", "nextContext", "event2", "RuiForm", "children", "defaultValues", "defaultValuesData", "resolver", "reValidateMode", "onSubmit", "action", "method", "props", "jsx"]
7
7
  }