@ecopages/radiant-ui 0.1.0-rc.7 → 0.1.0
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.
- package/README.md +11 -3
- package/dist/components/ui/alert/alert.d.ts +2 -4
- package/dist/components/ui/alert/alert.script.d.ts +25 -15
- package/dist/components/ui/autocomplete/autocomplete.css +1 -2
- package/dist/components/ui/autocomplete/autocomplete.d.ts +8 -3
- package/dist/components/ui/autocomplete/autocomplete.script.d.ts +29 -4
- package/dist/components/ui/avatar/avatar.css +10 -8
- package/dist/components/ui/avatar/avatar.d.ts +3 -1
- package/dist/components/ui/breadcrumb/breadcrumb.d.ts +11 -11
- package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +10 -10
- package/dist/components/ui/calendar/calendar.css +10 -5
- package/dist/components/ui/calendar/calendar.script.d.ts +24 -21
- package/dist/components/ui/calendar/index.js +1 -1
- package/dist/components/ui/calendar/index.js.map +3 -3
- package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
- package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
- package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
- package/dist/components/ui/carousel/carousel.css +71 -18
- package/dist/components/ui/carousel/carousel.d.ts +8 -4
- package/dist/components/ui/carousel/carousel.script.d.ts +73 -40
- package/dist/components/ui/carousel/index.js +1 -1
- package/dist/components/ui/carousel/index.js.map +4 -4
- package/dist/components/ui/checkbox/checkbox.d.ts +11 -0
- package/dist/components/ui/checkbox/checkbox.script.d.ts +31 -8
- package/dist/components/ui/checkbox/index.js +1 -1
- package/dist/components/ui/checkbox/index.js.map +4 -4
- package/dist/components/ui/checkbox-group/checkbox-group.d.ts +4 -2
- package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +39 -20
- package/dist/components/ui/checkbox-group/index.js +1 -1
- package/dist/components/ui/checkbox-group/index.js.map +4 -4
- package/dist/components/ui/combobox/combobox.css +9 -1
- package/dist/components/ui/combobox/combobox.d.ts +12 -4
- package/dist/components/ui/combobox/combobox.script.d.ts +74 -25
- package/dist/components/ui/combobox/index.d.ts +2 -2
- package/dist/components/ui/combobox/index.js +1 -1
- package/dist/components/ui/combobox/index.js.map +4 -4
- package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +6 -2
- package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +35 -4
- package/dist/components/ui/cycle-toggle/index.js +1 -1
- package/dist/components/ui/cycle-toggle/index.js.map +3 -3
- package/dist/components/ui/date-field/date-field.css +13 -17
- package/dist/components/ui/date-field/date-field.d.ts +10 -8
- package/dist/components/ui/date-field/date-field.script.d.ts +35 -52
- package/dist/components/ui/date-field/index.js +1 -1
- package/dist/components/ui/date-field/index.js.map +4 -4
- package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
- package/dist/components/ui/date-input/date-input.css +50 -0
- package/dist/components/ui/date-input/date-input.d.ts +8 -0
- package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
- package/dist/components/ui/date-input/index.d.ts +2 -0
- package/dist/components/ui/date-input/index.js +2 -0
- package/dist/components/ui/date-input/index.js.map +7 -0
- package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts +11 -9
- package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +42 -51
- package/dist/components/ui/date-range-picker/index.js +1 -1
- package/dist/components/ui/date-range-picker/index.js.map +4 -4
- package/dist/components/ui/dialog/dialog.css +18 -14
- package/dist/components/ui/dialog/dialog.d.ts +6 -0
- package/dist/components/ui/dialog/dialog.script.d.ts +43 -10
- package/dist/components/ui/dialog/index.js +1 -1
- package/dist/components/ui/dialog/index.js.map +4 -4
- package/dist/components/ui/disclosure/disclosure-group.script.d.ts +19 -3
- package/dist/components/ui/disclosure/disclosure.css +3 -6
- package/dist/components/ui/disclosure/disclosure.d.ts +23 -7
- package/dist/components/ui/disclosure/disclosure.script.d.ts +31 -7
- package/dist/components/ui/disclosure/index.d.ts +1 -1
- package/dist/components/ui/disclosure/index.js +1 -1
- package/dist/components/ui/disclosure/index.js.map +4 -4
- package/dist/components/ui/field/field-description.d.ts +1 -0
- package/dist/components/ui/field/field-error.d.ts +2 -2
- package/dist/components/ui/field/field.d.ts +4 -4
- package/dist/components/ui/field/field.script.d.ts +54 -24
- package/dist/components/ui/field/index.js +1 -1
- package/dist/components/ui/field/index.js.map +4 -4
- package/dist/components/ui/form/control-protocol.d.ts +38 -1
- package/dist/components/ui/form/form-context.d.ts +3 -0
- package/dist/components/ui/form/form.d.ts +6 -0
- package/dist/components/ui/form/form.script.d.ts +29 -12
- package/dist/components/ui/form/index.d.ts +2 -1
- package/dist/components/ui/form/index.js +1 -1
- package/dist/components/ui/form/index.js.map +4 -4
- package/dist/components/ui/grid/grid.d.ts +4 -3
- package/dist/components/ui/grid/grid.script.d.ts +19 -11
- package/dist/components/ui/hover-card/hover-card.css +12 -101
- package/dist/components/ui/hover-card/hover-card.d.ts +7 -2
- package/dist/components/ui/hover-card/hover-card.script.d.ts +36 -5
- package/dist/components/ui/hover-card/index.js +1 -1
- package/dist/components/ui/hover-card/index.js.map +4 -4
- package/dist/components/ui/input/index.js +1 -1
- package/dist/components/ui/input/index.js.map +4 -4
- package/dist/components/ui/input/input.css +1 -1
- package/dist/components/ui/knob/index.js +1 -1
- package/dist/components/ui/knob/index.js.map +3 -3
- package/dist/components/ui/knob/knob.css +6 -1
- package/dist/components/ui/knob/knob.d.ts +4 -4
- package/dist/components/ui/knob/knob.script.d.ts +55 -20
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/label/index.js.map +4 -4
- package/dist/components/ui/label/label.d.ts +2 -1
- package/dist/components/ui/listbox/index.d.ts +2 -2
- package/dist/components/ui/listbox/index.js +1 -1
- package/dist/components/ui/listbox/index.js.map +4 -4
- package/dist/components/ui/listbox/listbox.css +14 -0
- package/dist/components/ui/listbox/listbox.d.ts +16 -2
- package/dist/components/ui/listbox/listbox.script.d.ts +55 -12
- package/dist/components/ui/menu-button/index.js +1 -1
- package/dist/components/ui/menu-button/index.js.map +4 -4
- package/dist/components/ui/menu-button/menu-button.d.ts +2 -2
- package/dist/components/ui/menu-button/menu-button.script.d.ts +30 -27
- package/dist/components/ui/menubar/index.js +1 -1
- package/dist/components/ui/menubar/index.js.map +4 -4
- package/dist/components/ui/menubar/menubar.script.d.ts +41 -15
- package/dist/components/ui/meter/index.js +1 -1
- package/dist/components/ui/meter/index.js.map +3 -3
- package/dist/components/ui/meter/meter.css +27 -2
- package/dist/components/ui/meter/meter.script.d.ts +19 -14
- package/dist/components/ui/navigation-menu/index.d.ts +1 -1
- package/dist/components/ui/navigation-menu/index.js +1 -1
- package/dist/components/ui/navigation-menu/index.js.map +4 -4
- package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts +34 -5
- package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +93 -12
- package/dist/components/ui/number-field/index.js +1 -1
- package/dist/components/ui/number-field/index.js.map +4 -4
- package/dist/components/ui/number-field/number-field.css +1 -1
- package/dist/components/ui/number-field/number-field.d.ts +8 -19
- package/dist/components/ui/number-field/number-field.script.d.ts +30 -9
- package/dist/components/ui/pagination/index.d.ts +1 -1
- package/dist/components/ui/pagination/index.js +1 -1
- package/dist/components/ui/pagination/index.js.map +3 -3
- package/dist/components/ui/pagination/pagination.css +50 -13
- package/dist/components/ui/pagination/pagination.d.ts +33 -9
- package/dist/components/ui/pagination/pagination.script.d.ts +29 -9
- package/dist/components/ui/popover/index.js +1 -1
- package/dist/components/ui/popover/index.js.map +4 -4
- package/dist/components/ui/popover/popover.d.ts +17 -1
- package/dist/components/ui/popover/popover.script.d.ts +57 -9
- package/dist/components/ui/radio-group/index.js +1 -1
- package/dist/components/ui/radio-group/index.js.map +4 -4
- package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group/radio-group.script.d.ts +35 -16
- package/dist/components/ui/select/index.d.ts +2 -2
- package/dist/components/ui/select/index.js +1 -1
- package/dist/components/ui/select/index.js.map +4 -4
- package/dist/components/ui/select/select.css +8 -6
- package/dist/components/ui/select/select.d.ts +18 -9
- package/dist/components/ui/select/select.script.d.ts +74 -26
- package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
- package/dist/components/ui/shared/control-toggle.css +8 -4
- package/dist/components/ui/shared/field-label.d.ts +5 -0
- package/dist/components/ui/shared/listbox-host-controller.d.ts +41 -0
- package/dist/components/ui/shared/listbox-option.d.ts +4 -0
- package/dist/components/ui/shared/multi-value.d.ts +23 -1
- package/dist/components/ui/shared/numeric-range.d.ts +8 -0
- package/dist/components/ui/shared/popover.css +10 -99
- package/dist/components/ui/sidebar/index.d.ts +2 -1
- package/dist/components/ui/sidebar/index.js +1 -1
- package/dist/components/ui/sidebar/index.js.map +4 -4
- package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
- package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +52 -31
- package/dist/components/ui/sidebar/sidebar.css +67 -61
- package/dist/components/ui/sidebar/sidebar.d.ts +9 -4
- package/dist/components/ui/sidebar/sidebar.script.d.ts +42 -20
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/slider/index.js.map +4 -4
- package/dist/components/ui/slider/slider.css +5 -5
- package/dist/components/ui/slider/slider.d.ts +20 -10
- package/dist/components/ui/slider/slider.script.d.ts +103 -27
- package/dist/components/ui/switch/index.js +1 -1
- package/dist/components/ui/switch/index.js.map +4 -4
- package/dist/components/ui/switch/switch.css +28 -22
- package/dist/components/ui/switch/switch.d.ts +13 -0
- package/dist/components/ui/switch/switch.script.d.ts +34 -8
- package/dist/components/ui/table/index.js +1 -1
- package/dist/components/ui/table/index.js.map +4 -4
- package/dist/components/ui/table/table.d.ts +9 -7
- package/dist/components/ui/table/table.script.d.ts +55 -12
- package/dist/components/ui/tabs/tabs.css +18 -12
- package/dist/components/ui/tabs/tabs.d.ts +7 -4
- package/dist/components/ui/tabs/tabs.script.d.ts +39 -9
- package/dist/components/ui/tag-group/index.js +1 -1
- package/dist/components/ui/tag-group/index.js.map +4 -4
- package/dist/components/ui/tag-group/tag-group.d.ts +19 -7
- package/dist/components/ui/tag-group/tag-group.script.d.ts +58 -10
- package/dist/components/ui/textarea/index.js +1 -1
- package/dist/components/ui/textarea/index.js.map +4 -4
- package/dist/components/ui/textarea/textarea.css +1 -1
- package/dist/components/ui/toast/index.js +1 -1
- package/dist/components/ui/toast/index.js.map +4 -4
- package/dist/components/ui/toast/toast.css +35 -32
- package/dist/components/ui/toast/toast.script.d.ts +17 -31
- package/dist/components/ui/toast/toaster.script.d.ts +24 -12
- package/dist/components/ui/toc/toc.script.d.ts +19 -8
- package/dist/components/ui/toolbar/toolbar.d.ts +5 -0
- package/dist/components/ui/toolbar/toolbar.script.d.ts +24 -4
- package/dist/components/ui/tooltip/index.js +1 -1
- package/dist/components/ui/tooltip/index.js.map +4 -4
- package/dist/components/ui/tooltip/tooltip.css +14 -94
- package/dist/components/ui/tooltip/tooltip.d.ts +7 -0
- package/dist/components/ui/tooltip/tooltip.script.d.ts +36 -6
- package/dist/components/ui/tree/tree.d.ts +4 -3
- package/dist/components/ui/tree/tree.script.d.ts +28 -15
- package/dist/components/ui/treegrid/treegrid.d.ts +5 -3
- package/dist/components/ui/treegrid/treegrid.script.d.ts +33 -14
- package/dist/components/ui/window-splitter/index.d.ts +1 -1
- package/dist/components/ui/window-splitter/index.js +1 -1
- package/dist/components/ui/window-splitter/index.js.map +3 -3
- package/dist/components/ui/window-splitter/window-splitter.d.ts +10 -1
- package/dist/components/ui/window-splitter/window-splitter.script.d.ts +26 -8
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/icons/check.d.ts +3 -0
- package/dist/lib/icons/chevron-down.d.ts +0 -1
- package/dist/lib/icons/index.d.ts +2 -0
- package/dist/lib/icons/x.d.ts +5 -0
- package/dist/lib/intl-date/index.d.ts +4 -2
- package/dist/lib/intl-date/segment-editing.d.ts +34 -0
- package/dist/lib/intl-date/segments.d.ts +26 -4
- package/dist/lib/non-empty.d.ts +6 -0
- package/dist/lib/unique-id.d.ts +11 -0
- package/dist/lib/viewport/breakpoints.d.ts +6 -0
- package/dist/lib/viewport/mobile-layout.d.ts +15 -0
- package/dist/styles/primitives.css +14 -11
- package/dist/styles/radiant-ui-core.css +10 -0
- package/dist/styles/radiant-ui.css +40 -11
- package/dist/styles/style-dependencies.json +38 -13
- package/dist/styles/styles.css +485 -252
- package/dist/styles/tailwind.css +40 -101
- package/dist/styles/tokens/presets/colors/aurora.css +2 -0
- package/dist/styles/tokens/presets/colors/basalt.css +2 -0
- package/dist/styles/tokens/presets/colors/ember.css +2 -0
- package/dist/styles/tokens/presets/colors/glacier.css +2 -0
- package/dist/styles/tokens/semantic.css +1 -0
- package/dist/styles/tokens/system.css +11 -3
- package/dist/styles/tokens/typography/default.css +8 -0
- package/package.json +27 -13
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as Ze}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Je,customElement as _t,event as Ke,onEvent as te,onUpdated as Qe,prop as V}from"@ecopages/radiant";import{provideContext as At}from"@ecopages/radiant/context";import{createContext as et}from"@ecopages/radiant/context";var Y=et(Symbol.for("rui-form-context"));function C(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 R(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function tt(t,e,i,r){if(i)for(let n of[it,rt,nt,st]){let s=await n(e,i,r);if(s)return s}}function it(t,e){let i=t==null||t===""||t===!1||Array.isArray(t)&&t.length===0;return e.required&&i?C("This field is required",e.required)??"This field is required":void 0}function rt(t,e){let i=typeof t=="number"?t:typeof t=="string"&&t!==""?Number(t):void 0;if(!(i===void 0||Number.isNaN(i))){if(e.min!==void 0&&i<R(e.min))return C(`Minimum value is ${R(e.min)}`,e.min);if(e.max!==void 0&&i>R(e.max))return C(`Maximum value is ${R(e.max)}`,e.max)}}function nt(t,e){let i=t==null?"":String(t);if(e.minLength!==void 0&&i.length<R(e.minLength))return C(`Minimum length is ${R(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&i.length>R(e.maxLength))return C(`Maximum length is ${R(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!R(e.pattern).test(i))return C("Invalid format",e.pattern)??"Invalid format"}async function st(t,e,i){if(!e.validate)return;let r=typeof e.validate=="function"?[e.validate]:Object.values(e.validate);for(let n of r){let s=await n(t,i);if(s!==!0&&s!==void 0)return s===!1?"Invalid value":String(s)}}async function be(t,e,i){let r=i??Object.keys(e.fields),n={};for(let s of r){let u=e.fields[s]?.rules,o=await tt(s,t[s],u,t);o&&(n[s]={type:"validation",message:o})}return Object.keys(n).length>0?{values:{},errors:n}:{values:t,errors:{}}}function Z(){return(t,e,i)=>be(t,e,i.names)}function pe(t){return typeof t=="function"?t:Z()}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=pe(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=pe(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 i=this.fields.get(e.name),r={...e,rules:e.rules??i?.rules,defaultValue:e.defaultValue??i?.defaultValue,getRules:e.getRules??i?.getRules};return this.fields.set(e.name,r),this.values[e.name]===void 0&&r.defaultValue!==void 0&&(this.values={...this.values,[e.name]:r.defaultValue}),r.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===r&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,i){let r=this.fields.get(e);r&&(i.rules!==void 0&&(r.rules=i.rules),i.defaultValue!==void 0&&(r.defaultValue=i.defaultValue))}getValues(){let e={...this.values};for(let[i,r]of this.fields)e[i]=r.getValue();return e}setValue(e,i,r){this.values={...this.values,[e]:i},this.fields.get(String(e))?.setValue(i),r?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),r?.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 i={...this.errors};delete i[e],this.errors=i,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),i=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:i===0}}async validateField(e){let i=this.getValues(),n=(await this.resolver(i,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,s={...this.errors};return n?s[e]={type:"validation",message:n}:delete s[e],this.errors=s,this.notify(),!n}async validateAll(){let e=this.getValues(),i=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=i.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,i){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return i==="change";case"onBlur":return i==="blur";case"onTouched":return i==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let i=this.fields.get(e);if(!i)return;let r=i.getValue();this.values={...this.values,[e]:r},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,i){this.isSubmitting=!0,this.isSubmitted=!0;for(let n of this.fields.keys())this.touched={...this.touched,[n]:!0};this.notify();let r=await this.validateAll();if(this.isSubmitting=!1,this.notify(),r){await e(this.getValues());return}i?.(this.errors)}reset(e){let i=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...i},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let r of this.fields.values())r.setValue(this.values[r.name]);this.notify()}collectFieldDefaults(){let e={};for(let[i,r]of this.fields)r.defaultValue!==void 0&&(e[i]=r.defaultValue);return e}buildResolverFields(){let e={};for(let[i,r]of this.fields){let n=r.getRules?.()??r.rules;e[i]={rules:n}}return e}};var N="data-rui-control",ot="data-rui-field-managed",ut="data-rui-field-label",at="data-rui-field-description",lt="data-rui-field-error";var ee="data-default-values",$=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"]),Se=`[${N}], ${Array.from($).join(", ")}`;function dt(t){return t.localName==="input"||t.localName==="textarea"}function xe(t){return t.localName==="input"}function _e(t){return t.localName==="textarea"}var _={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let i=e==null?"":String(e);t.setAttribute("value",i),"value"in t&&Reflect.set(t,"value",i)}},U={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let i=t.getAttribute("value");return i==null||i===""?"":Number(i)},write:(t,e)=>{let i=e==null?"":String(e);t.setAttribute("value",i),"value"in t&&Reflect.set(t,"value",e)}},ge={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}};function ye(t,e,i){let r=Reflect.get(t,e);if(typeof r=="number"&&Number.isFinite(r))return r;let n=t.getAttribute(i);return n==null||n===""?"":Number(n)}function ft(t){return Reflect.get(t,"variant")==="range"||t.getAttribute("variant")==="range"}var ct={read:t=>ft(t)?[ye(t,"rangeMin","range-min"),ye(t,"rangeMax","range-max")]:U.read(t),write:(t,e)=>{if(Array.isArray(e)&&e.length>=2){t.setAttribute("variant","range"),"variant"in t&&Reflect.set(t,"variant","range"),t.setAttribute("range-min",String(e[0])),t.setAttribute("range-max",String(e[1])),"rangeMin"in t&&Reflect.set(t,"rangeMin",e[0]),"rangeMax"in t&&Reflect.set(t,"rangeMax",e[1]);return}U.write(t,e)}},B=new Map([["rui-checkbox",ge],["rui-switch",ge],["rui-combobox",_],["rui-date-field",_],["rui-date-range-picker",_],["rui-select",_],["rui-radio-group",_],["rui-checkbox-group",_],["rui-listbox",_],["rui-tag-group",_],["rui-slider",ct],["rui-knob",U],["rui-number-field",U]]);function ht(t,e){let i=t,r=new Set,n=o=>{r.has(o)||(r.add(o),e(o))};if(typeof i.getSlotElements=="function")for(let o of i.getSlotElements())n(o);let s=t.querySelector(".rui-field")??t;for(let o of Array.from(s.children))n(o);for(let o of s.querySelectorAll("*"))n(o);for(let o of Array.from(t.children))n(o);let u=t.shadowRoot;if(u)for(let o of Array.from(u.children))n(o)}function mt(t){if(t.length===0)return null;if(t.length===1)return t[0];let e=t.find(u=>$.has(u.localName)),i=t.find(u=>u.hasAttribute(N));if(i)return i;if(e)return e;let r=document.activeElement;if(r instanceof HTMLElement){for(let u of t)if(u===r||u.contains(r))return u}let n=t.filter(u=>u.isConnected&&u.getClientRects().length>0&&!u.closest('[hidden],[aria-hidden="true"]')),s=n.length>0?n:t.filter(u=>u.isConnected);return s[s.length-1]??t[t.length-1]}function vt(t){let e=t.querySelector(".rui-field");return e instanceof HTMLElement?Array.from(e.querySelectorAll(Se)).filter(i=>t.contains(i)):[]}function bt(t){let e=mt(vt(t));if(e)return e;let i=null;if(ht(t,n=>{if(i)return;let s=Re(n);s&&(i=s)}),i)return i;let r=t.querySelector(".rui-field")??t;return Re(r)}function Re(t){return t instanceof HTMLElement?t.matches(`[${N}]`)||$.has(t.localName)?t:t.querySelector(Se):null}function pt(t){if(xe(t)){let i=P(t),r=i===t?void 0:B.get(i.localName);return r?r.read(i):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(_e(t))return t.value;let e=P(t);return B.get(e.localName)?.read(e)??e.getAttribute("value")??""}function gt(t,e){if(xe(t)){let r=P(t),n=r===t?void 0:B.get(r.localName);if(n){n.write(r,e);return}if(t.type==="checkbox"){t.checked=!!e;let s=t.closest("rui-checkbox, rui-switch");s&&(e?s.setAttribute("checked",""):s.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(_e(t)){t.value=e==null?"":String(e);return}let i=P(t);B.get(i.localName)?.write(i,e)}function P(t){return t.hasAttribute(N)?t.closest(Array.from($).join(","))??t:t}var Ae,Ve,Fe,Ce,Ee,Te,we,ke,Le,Ne,Me,Oe,De,Ie,qe,je,Ue,Be,Pe,$e,Ge,ze;function yt(t,e,i,r,n,s){var u,o,E,G,M,z,T,ie=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,H=Object.create,ne=[H(null),H(null)],se=e.length;function O(a,b,m){return function(l,d){b&&(d=l,l=t);for(var p=0;p<a.length;p++)d=a[p].apply(l,m?[d]:[]);return m?d:l}}function S(a,b,m,l){if(typeof a!="function"&&(l||a!==void 0))throw new TypeError(b+" must "+(m||"be")+" a function"+(l?"":" or undefined"));return a}function oe(a,b,m,l,d,p,A,v,g,y,ae){function J(c){if(!ae(c))throw new TypeError("Attempted to access private element on non-instance")}var K=[].concat(b[0]),le=b[3],Q=!A,w=d===1,de=d===3,fe=d===4,D=d===2;function I(c,F,me){return function(j,ve){return F&&(ve=j,j=a),me&&me(j),f[c].call(j,ve)}}if(!Q){var f={},W=[],x=de?"get":fe||w?"set":"value";if(g?(y||w?f={get:He(function(){return le(this)},l,"get"),set:function(c){b[4](this,c)}}:f[x]=le,y||He(f[x],l,D?"":x)):y||(f=Object.getOwnPropertyDescriptor(a,l)),!y&&!g){if((o=ne[+v][l])&&(o^d)!==7)throw Error("Decorating two elements with the same name ("+f[x].name+") is not supported yet");ne[+v][l]=d<3?1:d}}for(var h=a,q=K.length-1;q>=0;q-=m?2:1){var ce=S(K[q],"A decorator","be",!0),he=m?K[q-1]:void 0,X={},k={kind:["field","accessor","method","getter","setter","class"][d],name:l,metadata:u,addInitializer:function(c,F){if(c.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(F,"An initializer","be",!0),p.push(F)}.bind(null,X)};if(Q)o=ce.call(he,h,k),X.v=1,S(o,"class decorators","return")&&(h=o);else if(k.static=v,k.private=g,o=k.access={has:g?ae.bind():function(c){return l in c}},fe||(o.get=g?D?function(c){return J(c),f.value}:I("get",0,J):function(c){return c[l]}),D||de||(o.set=g?I("set",0,J):function(c,F){c[l]=F}),h=ce.call(he,w?{get:f.get,set:f.set}:f[x],k),X.v=1,w){if(typeof h=="object"&&h)(o=S(h.get,"accessor.get"))&&(f.get=o),(o=S(h.set,"accessor.set"))&&(f.set=o),(o=S(h.init,"accessor.init"))&&W.unshift(o);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,(y?"field":"method")+" decorators","return")&&(y?W.unshift(h):f[x]=h)}return d<2&&A.push(O(W,v,1),O(p,v,0)),y||Q||(g?w?A.splice(-1,0,I("get",v),I("set",v)):A.push(D?f[x]:S.call.bind(f[x])):re(a,l,f)),h}function ue(a){return re(a,ie,{configurable:!0,enumerable:!0,value:u})}return s!==void 0&&(u=s[ie]),u=H(u??null),M=[],z=function(a){a&&M.push(O(a))},T=function(a,b){for(var m=0;m<i.length;m++){var l=i[m],d=l[1],p=7&d;if((8&d)==a&&!p==b){var A=l[2],v=!!l[3],g=16&d;oe(a?t:t.prototype,l,g,v?"#"+A:Rt(A),p,p<2?[]:a?G=G||[]:E=E||[],M,!!a,v,b,a&&v?function(y){return xt(y)===t}:n)}}},T(8,0),T(0,0),T(8,1),T(0,1),z(E),z(G),o=M,se||ue(t),{e:o,get c(){var a=[];return se&&[ue(t=oe(t,[e],r,t.name,5,a)),O(a,1)]}}}function Rt(t){var e=St(t,"string");return typeof e=="symbol"?e:e+""}function St(t,e){if(typeof t!="object"||!t)return t;var i=t[Symbol.toPrimitive];if(i!==void 0){var r=i.call(t,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function He(t,e,i){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:i?i+" "+e:e})}catch{}return t}function xt(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 We=()=>{},Vt={register:()=>We,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>We},Ye,Xe=class extends Je{static{({e:[Fe,Ce,Ee,Te,we,ke,Le,Ne,Me,Oe,De,Ie,qe,je,Ue,Be,Pe,$e,Ge,ze,Ae],c:[Ye,Ve]}=yt(this,[_t("rui-form")],[[At({context:Y,initialValue:{ready:!1,revision:0,fields:{},errors:{},actions:Vt}}),0,"formProvider"],[Ke({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[Ke({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[V({type:Object,defaultValue:{}}),0,"defaultValues"],[V({type:String,attribute:ee}),0,"defaultValuesData"],[V({type:Object}),0,"resolver"],[V({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[V({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[V({type:String,reflect:!0}),0,"action"],[V({type:String,reflect:!0}),0,"method"],[Qe(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[Qe(["resolver"]),2,"syncResolver"],[te({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[te({ref:"form",type:"submit"}),2,"onNativeSubmit"],[te({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,Je))}formProvider=(Ae(this),Fe(this));submitEvent=(Ce(this),Ee(this));invalidEvent=(Te(this),we(this));defaultValues=(ke(this),Le(this));defaultValuesData=(Ne(this),Me(this));resolver=(Oe(this),De(this));mode=(Ie(this),qe(this));reValidateMode=(je(this),Ue(this));action=(Be(this),Pe(this));method=($e(this),Ge(this));onSubmit=void ze(this);store;unsubscribeStore;nativeFormId=`rui-form-native-${Math.random().toString(36).slice(2,9)}`;lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let r=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{r(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,i)=>{this.ensureStore().updateFieldOptions(e,i)},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")??this.querySelector("form.rui-form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let i of this.querySelectorAll("button[type=submit]"))e.contains(i)||i.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(async i=>{if(this.submitEvent.emit({values:i}),typeof this.onSubmit=="function"){await this.onSubmit(i);return}this.hasNativeSubmission()&&this.queryNativeForm()?.submit()},i=>{this.invalidEvent.emit({errors:i})})}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(ee);if(!e)return this.defaultValues??{};try{let i=JSON.parse(e);return i&&typeof i=="object"&&!Array.isArray(i)?i:{}}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 i={};for(let r of e.getRegisteredFieldNames()){let n=e.getFieldError(r),s=e.shouldDisplayFieldError(r);i[r]={error:s?n:void 0,invalid:!!(s&&n)}}return i}publishFormContext(e){let i=this.store;if(!i)return;let r=i.getRevision();if(!e?.force&&r===this.lastPublishedRevision)return;this.lastPublishedRevision=r;let n={ready:!0,revision:r,fields:this.buildFieldPresentations(i),errors:{...i.errors},actions:this.formActions};this.lastPublishedContext=n,this.formProvider.setContext(n);for(let s of this.presentationListeners)s(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{Ve()}};function Ft({children:t,defaultValues:e,defaultValuesData:i,resolver:r,reValidateMode:n,onSubmit:s,action:u,method:o,...E}){return Ze("rui-form",{...E,action:u,method:o,reValidateMode:n,"attr:revalidate-mode":n,"prop:defaultValues":e,"prop:resolver":r,"prop:onSubmit":s,data:{defaultValues:i??(e!==void 0?JSON.stringify(e):void 0)},children:Ze("form",{class:"rui-form","data-ref":"form",noValidate:!0,action:u,method:o,children:t})})}export{L as FormStore,N as RUI_CONTROL_ATTR,at as RUI_FIELD_DESCRIPTION_ATTR,lt as RUI_FIELD_ERROR_ATTR,ut as RUI_FIELD_LABEL_ATTR,ot as RUI_FIELD_MANAGED_ATTR,Ft as RuiForm,Ye as RuiFormElement,Z as createRulesResolver,bt as findFieldControl,Y as formContext,dt as isNativeTextControl,pt as readControlValue,be as runRulesResolver,gt as writeControlValue};
|
|
1
|
+
import{jsx as lt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as it,customElement as qt,event as nt,onEvent as ee,onUpdated as st,prop as _}from"@ecopages/radiant";import{provideContext as Ut}from"@ecopages/radiant/context";import{createContext as dt}from"@ecopages/radiant/context";var W=dt(Symbol.for("rui-form-context"));function F(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 A(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,bt]){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?F("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<A(e.min))return F(`Minimum value is ${A(e.min)}`,e.min);if(e.max!==void 0&&r>A(e.max))return F(`Maximum value is ${A(e.max)}`,e.max)}}function mt(t,e){let r=t==null?"":String(t);if(e.minLength!==void 0&&r.length<A(e.minLength))return F(`Minimum length is ${A(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&r.length>A(e.maxLength))return F(`Maximum length is ${A(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!A(e.pattern).test(r))return F("Invalid format",e.pattern)??"Invalid format"}async function bt(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 be(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 X(){return(t,e,r)=>be(t,e,r.names)}function pe(t){return typeof t=="function"?t:X()}var D=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=pe(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=pe(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 pt(t){return t.join(",")}var ge={fromAttribute:t=>ve(t),toAttribute:t=>t.length>0?pt(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 Ae={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 Y="data-rui-control",yt="data-rui-field-managed",gt="data-rui-field-label",At="data-rui-field-description",St="data-rui-field-error";var H="data-default-values";var Ve='[data-ref="field"]';function Fe(){return`[${Y}], ${Ee()}`}function Ee(){return Array.from(E.keys()).join(", ")}function Rt(t){return t.localName==="rui-listbox"&&(t.hasAttribute("embedded")||Reflect.get(t,"embedded")===!0)}function xt(t){return t.localName==="input"||t.localName==="textarea"}function Te(t){return t.localName==="input"}function Ce(t){return t.localName==="textarea"}var j={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)}},Re={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)}},xe={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 Ie(t,e){Reflect.set(t,"value",e)}var N={read:t=>we(t,ge),write:Ie},_t={read:t=>we(t,Ae),write:Ie},E=new Map([["rui-checkbox",xe],["rui-switch",xe],["rui-combobox",{...N,submission:"none"}],["rui-date-field",j],["rui-date-input",{...j,submission:"host"}],["rui-date-range-picker",j],["rui-select",{...N,submission:"none"}],["rui-radio-group",j],["rui-checkbox-group",N],["rui-listbox",N],["rui-tag-group",N],["rui-slider",{..._t,submission:"host"}],["rui-knob",{...Re,submission:"host"}],["rui-number-field",{...Re,submission:"host"}]]);function Vt(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 _e(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 Vt(t,r=>{r instanceof HTMLElement&&r.matches(Fe())&&e.push(r)}),e}function Et(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=_e(Et(t));return e||_e(Ft(t))}function Ct(t,e){let r=t.toLowerCase();E.set(r,e)}function wt(t){if(Te(t)){let r=P(t),i=r===t?void 0:E.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(Ce(t))return t.value;let e=P(t);return E.get(e.localName)?.read(e)??e.getAttribute("value")??""}function It(t,e){if(Te(t)){let i=P(t),n=i===t?void 0:E.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(Ce(t)){t.value=e==null?"":String(e);return}let r=P(t);E.get(r.localName)?.write(r,e)}function P(t){return t.hasAttribute(Y)?t.closest(Ee())??t:t}var Dt=/^[A-Za-z][A-Za-z0-9_-]*$/;function De(t){return Dt.test(t)}function Nt(t){let e=t.trim();if(De(e))return e;let r=`rui-${e}`;return e&&De(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 ke,Le,Oe,Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt;function kt(t,e,r,i,n,o){var c,s,T,B,k,$,C,te=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,z=Object.create,ie=[z(null),z(null)],ne=e.length;function L(u,p,m){return function(a,l){p&&(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,p,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(p+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function se(u,p,m,a,l,v,x,b,y,g,ue){function G(f){if(!ue(f))throw new TypeError("Attempted to access private element on non-instance")}var J=[].concat(p[0]),ae=p[3],Z=!x,w=l===1,le=l===3,de=l===4,O=l===2;function M(f,V,he){return function(U,me){return V&&(me=U,U=u),he&&he(U),d[f].call(U,me)}}if(!Z){var d={},K=[],R=le?"get":de||w?"set":"value";if(y?(g||w?d={get:rt(function(){return ae(this)},a,"get"),set:function(f){p[4](this,f)}}:d[R]=ae,g||rt(d[R],a,O?"":R)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((s=ie[+b][a])&&(s^l)!==7)throw Error("Decorating two elements with the same name ("+d[R].name+") is not supported yet");ie[+b][a]=l<3?1:l}}for(var h=u,q=J.length-1;q>=0;q-=m?2:1){var fe=S(J[q],"A decorator","be",!0),ce=m?J[q-1]:void 0,Q={},I={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,Q)};if(Z)s=fe.call(ce,h,I),Q.v=1,S(s,"class decorators","return")&&(h=s);else if(I.static=b,I.private=y,s=I.access={has:y?ue.bind():function(f){return a in f}},de||(s.get=y?O?function(f){return G(f),d.value}:M("get",0,G):function(f){return f[a]}),O||le||(s.set=y?M("set",0,G):function(f,V){f[a]=V}),h=fe.call(ce,w?{get:d.get,set:d.set}:d[R],I),Q.v=1,w){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"))&&K.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?K.unshift(h):d[R]=h)}return l<2&&x.push(L(K,b,1),L(v,b,0)),g||Z||(y?w?x.splice(-1,0,M("get",b),M("set",b)):x.push(O?d[R]:S.call.bind(d[R])):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=z(c??null),k=[],$=function(u){u&&k.push(L(u))},C=function(u,p){for(var m=0;m<r.length;m++){var a=r[m],l=a[1],v=7&l;if((8&l)==u&&!v==p){var x=a[2],b=!!a[3],y=16&l;se(u?t:t.prototype,a,y,b?"#"+x:Lt(x),v,v<2?[]:u?B=B||[]:T=T||[],k,!!u,b,p,u&&b?function(g){return Mt(g)===t}:n)}}},C(8,0),C(0,0),C(8,1),C(0,1),$(T),$(B),s=k,ne||oe(t),{e:s,get c(){var u=[];return ne&&[oe(t=se(t,[e],i,t.name,5,u)),L(u,1)]}}}function Lt(t){var e=Ot(t,"string");return typeof e=="symbol"?e:e+""}function Ot(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=()=>{},jt={register:()=>ot,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>ot},at,ut=class extends it{static{({e:[Oe,Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt,ke],c:[at,Le]}=kt(this,[qt("rui-form")],[[Ut({context:W,initialValue:{ready:!1,store:void 0,revision:0,fields:{},errors:{},actions:jt},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"],[_({type:Object,defaultValue:{}}),0,"defaultValues"],[_({type:String,attribute:H}),0,"defaultValuesData"],[_({type:Object}),0,"resolver"],[_({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[_({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[_({type:String,reflect:!0}),0,"action"],[_({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=(ke(this),Oe(this));submitEvent=(Me(this),qe(this));invalidEvent=(Ue(this),je(this));defaultValues=(Pe(this),Be(this));defaultValuesData=($e(this),ze(this));resolver=(Ge(this),Je(this));mode=(Ze(this),Ke(this));reValidateMode=(Qe(this),We(this));action=(Xe(this),Ye(this));method=(He(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(H);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 D({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{Le()}};function Pt({children:t,defaultValues:e,defaultValuesData:r,resolver:i,reValidateMode:n,onSubmit:o,action:c,method:s,...T}){return lt("rui-form",{...T,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{D as FormStore,Y as RUI_CONTROL_ATTR,At 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,X as createRulesResolver,Tt as findFieldControl,W as formContext,xt as isNativeTextControl,wt as readControlValue,Ct as registerFieldControl,be as runRulesResolver,It as writeControlValue};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 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/form/control-protocol.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\";\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 = `rui-form-native-${Math.random().toString(36).slice(2, 9)}`;\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\") ?? this.querySelector(\"form.rui-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 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 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\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}`;\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 readNumberProperty(host, property, attribute) {\n const value = Reflect.get(host, property);\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n const raw = host.getAttribute(attribute);\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n}\nfunction isRangeSlider(host) {\n const variant = Reflect.get(host, \"variant\");\n return variant === \"range\" || host.getAttribute(\"variant\") === \"range\";\n}\nconst sliderValueAdapter = {\n read: host => {\n if (isRangeSlider(host)) {\n return [readNumberProperty(host, \"rangeMin\", \"range-min\"), readNumberProperty(host, \"rangeMax\", \"range-max\")];\n }\n return numberValueAdapter.read(host);\n },\n write: (host, value) => {\n if (Array.isArray(value) && value.length >= 2) {\n host.setAttribute(\"variant\", \"range\");\n if (\"variant\" in host) {\n Reflect.set(host, \"variant\", \"range\");\n }\n host.setAttribute(\"range-min\", String(value[0]));\n host.setAttribute(\"range-max\", String(value[1]));\n if (\"rangeMin\" in host) {\n Reflect.set(host, \"rangeMin\", value[0]);\n }\n if (\"rangeMax\" in host) {\n Reflect.set(host, \"rangeMax\", value[1]);\n }\n return;\n }\n numberValueAdapter.write(host, value);\n }\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", stringValueAdapter], [\"rui-date-field\", stringValueAdapter], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", stringValueAdapter], [\"rui-radio-group\", stringValueAdapter], [\"rui-checkbox-group\", stringValueAdapter], [\"rui-listbox\", stringValueAdapter], [\"rui-tag-group\", stringValueAdapter], [\"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(\".rui-field\") ?? 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 if (candidates.length === 0) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const hostControl = candidates.find(candidate => HOST_CONTROL_TAGS.has(candidate.localName));\n const markedControl = candidates.find(candidate => candidate.hasAttribute(RUI_CONTROL_ATTR));\n if (markedControl) {\n return markedControl;\n }\n if (hostControl) {\n return hostControl;\n }\n const active = document.activeElement;\n if (active instanceof HTMLElement) {\n for (const candidate of candidates) {\n if (candidate === active || candidate.contains(active)) {\n return candidate;\n }\n }\n }\n const visible = candidates.filter(el => el.isConnected && el.getClientRects().length > 0 && !el.closest('[hidden],[aria-hidden=\"true\"]'));\n const pool = visible.length > 0 ? visible : candidates.filter(el => el.isConnected);\n return pool[pool.length - 1] ?? candidates[candidates.length - 1];\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(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 let found = null;\n forEachFieldContentNode(root, node => {\n if (found) {\n return;\n }\n const match = findControlInSubtree(node);\n if (match) {\n found = match;\n }\n });\n if (found) {\n return found;\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n return findControlInSubtree(renderRoot);\n}\nfunction findControlInSubtree(node) {\n if (!(node instanceof HTMLElement)) {\n return null;\n }\n if (node.matches(`[${RUI_CONTROL_ATTR}]`) || HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n return node.querySelector(CONTROL_SELECTOR);\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(Array.from(HOST_CONTROL_TAGS).join(\",\"));\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}], label.rui-label`);\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(\".rui-field\");\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}"],
|
|
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", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FORM_DEFAULT_VALUES_ATTR", "
|
|
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 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\";\nexport const RUI_ARIA_TARGET_ATTR = \"data-rui-aria-target\";\nexport const RUI_ARIA_TARGETS_ATTR = \"data-rui-aria-targets\";\nconst FIELD_COLUMN_SELECTOR = '[data-ref=\"field\"]';\nfunction fieldControlSelector() {\n return `[${RUI_CONTROL_ATTR}], ${hostControlSelector()}`;\n}\nfunction hostControlSelector() {\n return Array.from(CONTROL_VALUE_ADAPTERS.keys()).join(\", \");\n}\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-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}\nexport function isFormAssociatedHost(host) {\n return Reflect.get(host.constructor, \"formAssociated\") === true;\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\", {\n ...stringArrayValueAdapter,\n submission: \"none\"\n}], [\"rui-date-field\", stringValueAdapter], [\"rui-date-input\", {\n ...stringValueAdapter,\n submission: \"host\"\n}], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", {\n ...stringArrayValueAdapter,\n submission: \"none\"\n}], [\"rui-radio-group\", stringValueAdapter], [\"rui-checkbox-group\", stringArrayValueAdapter], [\"rui-listbox\", stringArrayValueAdapter], [\"rui-tag-group\", stringArrayValueAdapter], [\"rui-slider\", {\n ...sliderValueAdapter,\n submission: \"host\"\n}], [\"rui-knob\", {\n ...numberValueAdapter,\n submission: \"host\"\n}], [\"rui-number-field\", {\n ...numberValueAdapter,\n submission: \"host\"\n}]]);\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(fieldControlSelector())) {\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(fieldControlSelector())).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 registerFieldControl(tagName, adapter) {\n const tag = tagName.toLowerCase();\n CONTROL_VALUE_ADAPTERS.set(tag, adapter);\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(hostControlSelector());\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(hostControlSelector());\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 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 (ariaTarget && isNativeTextControl(ariaTarget)) {\n const submission = controlHost && CONTROL_VALUE_ADAPTERS.get(controlHost.localName)?.submission;\n const namesInner = controlHost == null || controlHost === ariaTarget || !isFormAssociatedHost(controlHost) && submission !== \"host\" && submission !== \"none\";\n if (namesInner && name) {\n ariaTarget.name = name;\n } else {\n ariaTarget.removeAttribute(\"name\");\n }\n }\n if (controlHost && CONTROL_VALUE_ADAPTERS.has(controlHost.localName)) {\n Reflect.set(controlHost, \"name\", name);\n if (name) controlHost.setAttribute(\"name\", name);else controlHost.removeAttribute(\"name\");\n }\n}\nfunction isChecked(input) {\n const checked = Reflect.get(input, \"checked\");\n return typeof checked === \"boolean\" ? checked : input.hasAttribute(\"checked\");\n}\nfunction resolveDeclaredAriaTarget(control) {\n const multi = control.getAttribute(RUI_ARIA_TARGETS_ATTR);\n if (multi) {\n const firstSelector = multi.split(\",\")[0]?.trim();\n if (firstSelector) {\n return control.querySelector(firstSelector);\n }\n }\n const single = control.getAttribute(RUI_ARIA_TARGET_ATTR);\n if (single) {\n return control.querySelector(single);\n }\n return null;\n}\nfunction resolveDeclaredAriaTargets(control) {\n const multi = control.getAttribute(RUI_ARIA_TARGETS_ATTR);\n if (multi) {\n return multi.split(\",\").map(selector => selector.trim()).filter(selector => selector !== \"\").map(selector => control.querySelector(selector)).filter(node => node != null);\n }\n const single = control.getAttribute(RUI_ARIA_TARGET_ATTR);\n if (single) {\n const target = control.querySelector(single);\n return target ? [target] : [];\n }\n return [];\n}\nexport function getAriaControlTarget(control) {\n if (isNativeTextControl(control)) {\n return control;\n }\n const declared = resolveDeclaredAriaTarget(control);\n if (declared) {\n return declared;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n if (control.localName === \"rui-slider\") {\n const thumb = Array.from(control.querySelectorAll(\"[data-thumb]\")).find(node => !node.hasAttribute(\"hidden\"));\n return thumb ?? 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 const declared = resolveDeclaredAriaTargets(control);\n if (declared.length > 0) {\n return declared;\n }\n if (control.localName === \"rui-slider\") {\n const thumbs = Array.from(control.querySelectorAll(\"[data-thumb]\")).filter(node => !node.hasAttribute(\"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,sBAG5C,IAAMC,GAAwB,qBAC9B,SAASC,IAAuB,CAC9B,MAAO,IAAIC,CAAgB,MAAMC,GAAoB,CAAC,EACxD,CACA,SAASA,IAAsB,CAC7B,OAAO,MAAM,KAAKC,EAAuB,KAAK,CAAC,EAAE,KAAK,IAAI,CAC5D,CACA,SAASC,GAAkBC,EAAM,CAC/B,OAAOA,EAAK,YAAc,gBAAkBA,EAAK,aAAa,UAAU,GAAK,QAAQ,IAAIA,EAAM,UAAU,IAAM,GACjH,CAWO,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,CAIA,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,eAAgB,CAClJ,GAAGI,EACH,WAAY,MACd,CAAC,EAAG,CAAC,iBAAkBV,CAAkB,EAAG,CAAC,iBAAkB,CAC7D,GAAGA,EACH,WAAY,MACd,CAAC,EAAG,CAAC,wBAAyBA,CAAkB,EAAG,CAAC,aAAc,CAChE,GAAGU,EACH,WAAY,MACd,CAAC,EAAG,CAAC,kBAAmBV,CAAkB,EAAG,CAAC,qBAAsBU,CAAuB,EAAG,CAAC,cAAeA,CAAuB,EAAG,CAAC,gBAAiBA,CAAuB,EAAG,CAAC,aAAc,CACjM,GAAGE,GACH,WAAY,MACd,CAAC,EAAG,CAAC,WAAY,CACf,GAAGR,GACH,WAAY,MACd,CAAC,EAAG,CAAC,mBAAoB,CACvB,GAAGA,GACH,WAAY,MACd,CAAC,CAAC,CAAC,EACH,SAASW,GAAwBC,EAAMC,EAAO,CAC5C,IAAMC,EAAWF,EACXG,EAAyB,IAAI,IAC7BC,EAAYC,GAAQ,CACpBF,EAAQ,IAAIE,CAAI,IAGpBF,EAAQ,IAAIE,CAAI,EAChBJ,EAAMI,CAAI,EACZ,EACA,GAAI,OAAOH,EAAS,iBAAoB,WACtC,QAAWG,KAAQH,EAAS,gBAAgB,EAC1CE,EAAUC,CAAI,EAGlB,IAAMC,EAAaN,EAAK,cAAcO,EAAqB,GAAKP,EAChE,QAAWQ,KAAS,MAAM,KAAKF,EAAW,QAAQ,EAChDF,EAAUI,CAAK,EAEjB,QAAWH,KAAQC,EAAW,iBAAiB,GAAG,EAChDF,EAAUC,CAAI,EAEhB,QAAWG,KAAS,MAAM,KAAKR,EAAK,QAAQ,EAC1CI,EAAUI,CAAK,EAEjB,IAAMC,EAAST,EAAK,WACpB,GAAIS,EACF,QAAWD,KAAS,MAAM,KAAKC,EAAO,QAAQ,EAC5CL,EAAUI,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,GAAqB,CAAC,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,GAAqB,CAAC,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,CACO,SAASU,GAAqBC,EAASC,EAAS,CACrD,IAAMC,EAAMF,EAAQ,YAAY,EAChCG,EAAuB,IAAID,EAAKD,CAAO,CACzC,CAYO,SAASG,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,GAAoB,CAAC,GACnCZ,EAEVA,CACT,CCjRA,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,SAASsB,EAAEzB,EAAGC,EAAGC,GAAG,CAAE,OAAO,SAAUC,EAAGC,GAAG,CAAE,OAAOH,IAAMG,GAAID,EAAGA,EAAIJ,GAAIG,IAAKA,GAAEC,CAAC,EAAGuB,EAAE1B,CAAC,EAAE,KAAKG,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACgB,EAAG,CAAE,IAAIM,EAAI,CAAC,EAAGC,EAAI,CAAC,EAAGC,EAAIN,GAAI,MAAQC,IAAKF,EAAI,MAAQ,QAAS,GAAIZ,GAAKC,GAAKW,EAAIK,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOb,GAAE,IAAI,CAAG,EAAGd,EAAG,KAAK,EAAG,IAAK,SAAUH,EAAG,CAAEC,EAAE,CAAC,EAAE,KAAMD,CAAC,CAAG,CAAE,EAAI2B,EAAEE,CAAC,EAAIZ,GAAGN,GAAKmB,GAAiBH,EAAEE,CAAC,EAAG1B,EAAGsB,EAAI,GAAKI,CAAC,GAAKlB,IAAMgB,EAAI,OAAO,yBAAyB3B,EAAGG,CAAC,GAAI,CAACQ,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,GAAE,CAACP,CAAC,EAAEN,CAAC,KAAaI,EAAIH,KAAX,EAAe,MAAM,MAAM,+CAAiDuB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGb,GAAE,CAACP,CAAC,EAAEN,CAAC,EAAIC,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS2B,EAAI/B,EAAGgC,EAAIjB,EAAE,OAAS,EAAGiB,GAAK,EAAGA,GAAK9B,EAAI,EAAI,EAAG,CAAE,IAAI+B,GAAId,EAAEJ,EAAEiB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAIhC,EAAIa,EAAEiB,EAAI,CAAC,EAAI,OAAQG,EAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAEhC,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,KAAMkC,CAAC,CAAE,EAAG,GAAId,EAAGd,EAAI0B,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,EAAE,EAAI,EAAGhB,EAAEZ,EAAG,mBAAoB,QAAQ,IAAMwB,EAAIxB,WAAY6B,EAAE,OAAS3B,EAAG2B,EAAE,QAAU1B,EAAGH,EAAI6B,EAAE,OAAS,CAAE,IAAK1B,EAAIE,GAAE,KAAK,EAAI,SAAUZ,EAAG,CAAE,OAAOG,KAAKH,CAAG,CAAE,EAAGwB,KAAMjB,EAAE,IAAMG,EAAIe,EAAI,SAAUzB,EAAG,CAAE,OAAOa,EAAEb,CAAC,EAAG2B,EAAE,KAAO,EAAID,EAAE,MAAO,EAAGb,CAAC,EAAI,SAAUb,EAAG,CAAE,OAAOA,EAAEG,CAAC,CAAG,GAAIsB,GAAKF,KAAMhB,EAAE,IAAMG,EAAIgB,EAAE,MAAO,EAAGb,CAAC,EAAI,SAAUb,EAAGC,EAAG,CAAED,EAAEG,CAAC,EAAIF,CAAG,GAAI8B,EAAIE,GAAE,KAAKC,GAAGZ,EAAI,CAAE,IAAKK,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,EAAE,EAAI,EAAGb,GAAK,GAAgB,OAAOS,GAAnB,UAAwBA,GAAIxB,EAAIY,EAAEY,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMpB,IAAKA,EAAIY,EAAEY,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMpB,IAAKA,EAAIY,EAAEY,EAAE,KAAM,eAAe,IAAMH,EAAE,QAAQrB,CAAC,UAAsBwB,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAUZ,EAAEY,GAAIpB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAIiB,EAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO3B,EAAI,GAAKI,EAAE,KAAKU,EAAEU,EAAGnB,EAAG,CAAC,EAAGS,EAAEb,EAAGI,EAAG,CAAC,CAAC,EAAGE,GAAKU,IAAMX,EAAIY,EAAId,EAAE,OAAO,GAAI,EAAGkB,EAAE,MAAOjB,CAAC,EAAGiB,EAAE,MAAOjB,CAAC,CAAC,EAAID,EAAE,KAAKiB,EAAIE,EAAEE,CAAC,EAAIV,EAAE,KAAK,KAAKQ,EAAEE,CAAC,CAAC,CAAC,EAAIf,GAAEd,EAAGG,EAAGwB,CAAC,GAAII,CAAG,CAAE,SAASV,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,EAAIyB,GAAezB,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,OAAOqC,GAAYrC,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,SAASmC,GAAe,EAAG,CAAE,IAAIhC,EAAIkC,GAAa,EAAG,QAAQ,EAAG,OAAmB,OAAOlC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASkC,GAAa,EAAGpC,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,SAAS2B,GAAiB9B,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,SAASsC,GAAYtC,EAAG,CAAE,GAAI,OAAOA,CAAC,IAAMA,EAAG,MAAM,UAAU,qDAAgEA,IAAT,KAAa,OAAOA,EAAI,OAAO,EAAG,OAAOA,CAAG,CAOlK,IAAMwC,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,CAACjE,GAAoBC,GAA0BC,GAAmBC,GAAyBC,GAAoBC,GAA0BC,GAAqBC,GAA2BC,GAAyBC,GAA+BC,GAAgBC,GAAsBC,GAAYC,GAAkBC,GAAsBC,GAA4BC,GAAcC,GAAoBC,GAAcC,GAAoBrB,EAAU,EACxb,EAAG,CAACiE,GAAUhE,EAAU,CAC1B,EAAIqB,GAAW,KAAM,CAAC8C,GAAc,UAAU,CAAC,EAAG,CAAC,CAACC,GAAe,CACjE,QAASC,EACT,aAAc,CACZ,MAAO,GACP,MAAO,OACP,SAAU,EACV,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,QAASN,EACX,EACA,QAAS,OACT,UAAW,CAAC,CACV,SAAAO,EACA,OAAAC,EACA,OAAAC,CACF,KAAO,CACL,MAAO,GACP,SAAAF,EACA,OAAAC,EACA,OAAAC,CACF,EACF,CAAC,EAAG,EAAG,cAAc,EAAG,CAACC,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,OAAQX,EAAc,EACrD,CACA,cAAgBnE,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,aAAe0D,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,EAAGd,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,IAAMe,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,aAAab,CAA4B,EACpF,GAAI,CAACa,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,OAAK,KAAK,QACR,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,GAEH,KAAK,mBAAqB,KAAK,MAAM,UAAU,IAAM,KAAK,mBAAmB,CAAC,EACvE,KAAK,KACd,CACA,wBAAwBC,EAAO,CAC7B,IAAMpB,EAAS,CAAC,EAChB,QAAWU,KAAQU,EAAM,wBAAwB,EAAG,CAClD,IAAMC,EAAUD,EAAM,cAAcV,CAAI,EAClCY,EAAOF,EAAM,wBAAwBV,CAAI,EAC/CV,EAAOU,CAAI,EAAI,CACb,MAAOY,EAAOD,EAAU,OACxB,QAAS,GAAQC,GAAQD,EAC3B,CACF,CACA,OAAOrB,CACT,CACA,mBAAmBW,EAAS,CAC1B,IAAMS,EAAQ,KAAK,MACnB,GAAI,CAACA,EACH,OAEF,IAAMrB,EAAWqB,EAAM,YAAY,EACnC,GAAI,CAACT,GAAS,OAASZ,IAAa,KAAK,sBACvC,OAEF,KAAK,sBAAwBA,EAC7B,IAAMwB,EAAc,CAClB,MAAO,GACP,MAAAH,EACA,SAAArB,EACA,OAAQ,KAAK,wBAAwBqB,CAAK,EAC1C,OAAQ,CACN,GAAGA,EAAM,MACX,EACA,QAAS,KAAK,WAChB,EACA,KAAK,qBAAuBG,EAC5B,KAAK,aAAa,WAAWA,CAAW,EACxC,QAAWX,KAAY,KAAK,sBAC1BA,EAASW,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,CACL/F,GAAW,CACb,CACF,ED/SO,SAASgG,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", "fieldControlSelector", "RUI_CONTROL_ATTR", "hostControlSelector", "CONTROL_VALUE_ADAPTERS", "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", "node", "renderRoot", "FIELD_COLUMN_SELECTOR", "child", "shadow", "pickPrimaryFieldControl", "candidates", "eligibleCandidates", "candidate", "isEmbeddedListbox", "ancestor", "collectFieldControls", "root", "forEachFieldContentNode", "node", "fieldControlSelector", "listFieldControlsInRenderTree", "renderRoot", "FIELD_COLUMN_SELECTOR", "el", "findFieldControl", "fromRenderTree", "registerFieldControl", "tagName", "adapter", "tag", "CONTROL_VALUE_ADAPTERS", "readControlValue", "control", "isNativeInput", "host2", "resolveControlHost", "adapter", "CONTROL_VALUE_ADAPTERS", "isNativeTextarea", "host", "writeControlValue", "value", "ce", "RUI_CONTROL_ATTR", "hostControlSelector", "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", "I", "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
|
}
|
|
@@ -2,13 +2,14 @@ import type { JsxCustomElementAttributes, JsxRenderable } from '@ecopages/jsx';
|
|
|
2
2
|
import type { RuiGrid as RuiGridElement, RuiGridProps } from './grid.script';
|
|
3
3
|
import './grid.script';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Grid view. Pass `rows` for a 2-D data grid, or `children` inside the stamped root surface.
|
|
6
6
|
*
|
|
7
|
+
* @cssclass rui-grid - Root surface (`role="grid"`).
|
|
7
8
|
* @cssclass rui-grid__row - Table row (`role="row"`).
|
|
8
9
|
* @cssclass rui-grid__cell - Table cell (`role="gridcell"`).
|
|
9
10
|
*
|
|
10
|
-
* @remarks
|
|
11
|
-
* row
|
|
11
|
+
* @remarks Stamps `[role="grid"]` with `data-ref="root"`. `rows` render
|
|
12
|
+
* `[role="row"]` > `[role="gridcell"]` per cell.
|
|
12
13
|
*/
|
|
13
14
|
export declare function RuiGrid({ rows, label, children, ...props }: JsxCustomElementAttributes<RuiGridElement, RuiGridProps & {
|
|
14
15
|
rows?: JsxRenderable[][];
|
|
@@ -3,25 +3,33 @@ export type RuiGridProps = {
|
|
|
3
3
|
label?: string;
|
|
4
4
|
};
|
|
5
5
|
/**
|
|
6
|
-
* `<rui-grid>` —
|
|
6
|
+
* `<rui-grid>` — keyboard-navigable grid without selection.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* The custom element is a behavior host: it does not render cells. Import the
|
|
9
|
+
* script and place light-DOM children that match the contract below, or use
|
|
10
|
+
* `RuiGrid` with a `rows` array or authored children inside the root surface.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Row length is taken from the authored markup — do not pass a separate column count.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
14
|
+
* ## Light-DOM contract
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* Required:
|
|
17
|
+
* - `[role="grid"]` — root surface. The view sets `aria-label`.
|
|
18
|
+
* - `[role="row"]` — row container (direct parent of cells for navigation).
|
|
19
|
+
* - `[role="gridcell"]` — one cell. Host sets roving `tabIndex`.
|
|
17
20
|
*
|
|
18
|
-
*
|
|
21
|
+
* Do not set `tabIndex` on gridcells — the host owns roving focus. Selection is
|
|
22
|
+
* not modeled.
|
|
23
|
+
*
|
|
24
|
+
* Nested hosts: none.
|
|
19
25
|
*
|
|
20
|
-
* @
|
|
26
|
+
* @see https://www.w3.org/WAI/ARIA/apg/patterns/grid/
|
|
27
|
+
* @element rui-grid
|
|
28
|
+
* @attr {string} label - Accessible name announced when focus enters the grid.
|
|
21
29
|
*
|
|
22
30
|
* @remarks
|
|
23
|
-
*
|
|
24
|
-
*
|
|
31
|
+
* Minimum tree: `[role="grid"]` > `[role="row"]` > `[role="gridcell"]`.
|
|
32
|
+
* BEM classes live on the `RuiGrid` view; the host never queries them.
|
|
25
33
|
*/
|
|
26
34
|
export declare class RuiGrid extends RadiantElement {
|
|
27
35
|
label: string;
|