@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 at}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as it,customElement as At,onEvent as H,onUpdated as se,prop as E,registerSsrPreparationCallback as Ct}from"@ecopages/radiant";import{consumeContext as Ft,onContextUpdate as Rt,provideContext as Tt}from"@ecopages/radiant/context";var k="data-rui-control",Fe="data-rui-field-managed",ut="data-rui-field-label",re="data-rui-field-description",L="data-rui-field-error",ie="data-default-value";var O=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"]),Re=`[${k}], ${Array.from(O).join(", ")}`,st={"rui-combobox":"[data-combobox-input]","rui-date-field":"[data-date-field-input]","rui-date-range-picker":"[data-range-start]","rui-select":"[data-select-trigger]","rui-tag-group":"[data-tag-list]","rui-number-field":"[data-number-field-input], input","rui-knob":"[data-knob-control]","rui-checkbox":"input","rui-checkbox-group":"[data-checkbox-group-root]","rui-switch":"input"};function G(e){return e.localName==="input"||e.localName==="textarea"}function Te(e){return e.localName==="input"}function Ee(e){return e.localName==="textarea"}var A={read:e=>{let t=Reflect.get(e,"value");return typeof t=="string"?t:e.getAttribute("value")??""},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",r)}},B={read:e=>{let t=Reflect.get(e,"value");if(typeof t=="number")return t;let r=e.getAttribute("value");return r==null||r===""?"":Number(r)},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",t)}},_e={read:e=>e.querySelector('input[type="checkbox"]')?.checked??e.hasAttribute("checked"),write:(e,t)=>{t?e.setAttribute("checked",""):e.removeAttribute("checked")}};function Ae(e,t,r){let i=Reflect.get(e,t);if(typeof i=="number"&&Number.isFinite(i))return i;let n=e.getAttribute(r);return n==null||n===""?"":Number(n)}function lt(e){return Reflect.get(e,"variant")==="range"||e.getAttribute("variant")==="range"}var dt={read:e=>lt(e)?[Ae(e,"rangeMin","range-min"),Ae(e,"rangeMax","range-max")]:B.read(e),write:(e,t)=>{if(Array.isArray(t)&&t.length>=2){e.setAttribute("variant","range"),"variant"in e&&Reflect.set(e,"variant","range"),e.setAttribute("range-min",String(t[0])),e.setAttribute("range-max",String(t[1])),"rangeMin"in e&&Reflect.set(e,"rangeMin",t[0]),"rangeMax"in e&&Reflect.set(e,"rangeMax",t[1]);return}B.write(e,t)}},W=new Map([["rui-checkbox",_e],["rui-switch",_e],["rui-combobox",A],["rui-date-field",A],["rui-date-range-picker",A],["rui-select",A],["rui-radio-group",A],["rui-checkbox-group",A],["rui-listbox",A],["rui-tag-group",A],["rui-slider",dt],["rui-knob",B],["rui-number-field",B]]);function Se(e,t){let r=e,i=new Set,n=o=>{i.has(o)||(i.add(o),t(o))};if(typeof r.getSlotElements=="function")for(let o of r.getSlotElements())n(o);let u=e.querySelector(".rui-field")??e;for(let o of Array.from(u.children))n(o);for(let o of u.querySelectorAll("*"))n(o);for(let o of Array.from(e.children))n(o);let a=e.shadowRoot;if(a)for(let o of Array.from(a.children))n(o)}function ne(e,t){let r=null;return Se(e,i=>{if(!(r||!(i instanceof HTMLElement))){if(i.matches(t)){r=i;return}r=i.querySelector(t)}}),r}function ct(e){if(e.length===0)return null;if(e.length===1)return e[0];let t=e.find(a=>O.has(a.localName)),r=e.find(a=>a.hasAttribute(k));if(r)return r;if(t)return t;let i=document.activeElement;if(i instanceof HTMLElement){for(let a of e)if(a===i||a.contains(i))return a}let n=e.filter(a=>a.isConnected&&a.getClientRects().length>0&&!a.closest('[hidden],[aria-hidden="true"]')),u=n.length>0?n:e.filter(a=>a.isConnected);return u[u.length-1]??e[e.length-1]}function ft(e){let t=e.querySelector(".rui-field");return t instanceof HTMLElement?Array.from(t.querySelectorAll(Re)).filter(r=>e.contains(r)):[]}function J(e){let t=ct(ft(e));if(t)return t;let r=null;if(Se(e,n=>{if(r)return;let u=Ce(n);u&&(r=u)}),r)return r;let i=e.querySelector(".rui-field")??e;return Ce(i)}function Ce(e){return e instanceof HTMLElement?e.matches(`[${k}]`)||O.has(e.localName)?e:e.querySelector(Re):null}function Ne(e){if(Te(e)){let r=z(e),i=r===e?void 0:W.get(r.localName);return i?i.read(r):e.type==="checkbox"?e.checked:e.type==="number"||e.type==="range"?e.value===""?"":Number(e.value):e.value}if(Ee(e))return e.value;let t=z(e);return W.get(t.localName)?.read(t)??t.getAttribute("value")??""}function Ie(e,t){if(Te(e)){let i=z(e),n=i===e?void 0:W.get(i.localName);if(n){n.write(i,t);return}if(e.type==="checkbox"){e.checked=!!t;let u=e.closest("rui-checkbox, rui-switch");u&&(t?u.setAttribute("checked",""):u.removeAttribute("checked"));return}e.value=t==null?"":String(t);return}if(Ee(e)){e.value=t==null?"":String(t);return}let r=z(e);W.get(r.localName)?.write(r,t)}function z(e){return e.hasAttribute(k)?e.closest(Array.from(O).join(","))??e:e}function ke(e){return ne(e,`[${ut}], label.rui-label`)}function we(e){return ne(e,`[${re}]`)}function Ve(e){return oe(e)[0]??null}function oe(e){let t=e.querySelector(".rui-field");if(t instanceof HTMLElement){let n=Array.from(t.querySelectorAll(`[${L}]`)),u=n.filter(a=>a.getClientRects().length>0);if(u.length>0)return u;if(n.length>0)return n}let r=Array.from(e.querySelectorAll(`[${L}]`));if(r.length>0)return r;let i=ne(e,`[${L}]`);return i?[i]:[]}function De(e,t,r){r&&(t&&G(t)&&(t.name=r),e&&e!==t&&O.has(e.localName)&&e.setAttribute("name",r))}function ht(e){let t=Reflect.get(e,"checked");return typeof t=="boolean"?t:e.hasAttribute("checked")}function mt(e){if(G(e)||e.hasAttribute(k))return e;if(e.localName==="rui-slider")return e.querySelector("[data-thumb]:not([hidden])")??e;let t=e.querySelector(`[${k}]`);if(t)return t;if(e.localName==="rui-radio-group")return pt(e)??e;let r=st[e.localName];return r?e.querySelector(r)??e:e}function pt(e){let t=e.querySelectorAll('input[type="radio"]');return Array.from(t).find(ht)??t[0]}function Le(e){if(e.localName==="rui-slider"){let t=Array.from(e.querySelectorAll("[data-thumb]:not([hidden])"));return t.length>0?t:[e]}return[mt(e)]}import{createContext as gt}from"@ecopages/radiant/context";var ae=gt(Symbol.for("rui-form-context"));import{createContext as bt}from"@ecopages/radiant/context";var ue=bt(Symbol.for("rui-field-context"));var Oe,Ue,qe,Pe,je,Me,$e,Be,We,ze,Ge,Je,He,Ke,Qe,Xe,Ye,Ze,et,tt;function vt(e,t,r,i,n,u){var a,o,C,S,F,N,R,w=Symbol.metadata||Symbol.for("Symbol.metadata"),U=Object.defineProperty,Q=Object.create,le=[Q(null),Q(null)],de=t.length;function q(s,g,m){return function(l,d){g&&(d=l,l=e);for(var b=0;b<s.length;b++)d=s[b].apply(l,m?[d]:[]);return m?d:l}}function y(s,g,m,l){if(typeof s!="function"&&(l||s!==void 0))throw new TypeError(g+" must "+(m||"be")+" a function"+(l?"":" or undefined"));return s}function ce(s,g,m,l,d,b,T,p,v,x,he){function X(f){if(!he(f))throw new TypeError("Attempted to access private element on non-instance")}var Y=[].concat(g[0]),me=g[3],Z=!T,V=d===1,pe=d===3,ge=d===4,P=d===2;function j(f,I,xe){return function($,ye){return I&&(ye=$,$=s),xe&&xe($),c[f].call($,ye)}}if(!Z){var c={},ee=[],_=pe?"get":ge||V?"set":"value";if(v?(x||V?c={get:rt(function(){return me(this)},l,"get"),set:function(f){g[4](this,f)}}:c[_]=me,x||rt(c[_],l,P?"":_)):x||(c=Object.getOwnPropertyDescriptor(s,l)),!x&&!v){if((o=le[+p][l])&&(o^d)!==7)throw Error("Decorating two elements with the same name ("+c[_].name+") is not supported yet");le[+p][l]=d<3?1:d}}for(var h=s,M=Y.length-1;M>=0;M-=m?2:1){var be=y(Y[M],"A decorator","be",!0),ve=m?Y[M-1]:void 0,te={},D={kind:["field","accessor","method","getter","setter","class"][d],name:l,metadata:a,addInitializer:function(f,I){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");y(I,"An initializer","be",!0),b.push(I)}.bind(null,te)};if(Z)o=be.call(ve,h,D),te.v=1,y(o,"class decorators","return")&&(h=o);else if(D.static=p,D.private=v,o=D.access={has:v?he.bind():function(f){return l in f}},ge||(o.get=v?P?function(f){return X(f),c.value}:j("get",0,X):function(f){return f[l]}),P||pe||(o.set=v?j("set",0,X):function(f,I){f[l]=I}),h=be.call(ve,V?{get:c.get,set:c.set}:c[_],D),te.v=1,V){if(typeof h=="object"&&h)(o=y(h.get,"accessor.get"))&&(c.get=o),(o=y(h.set,"accessor.set"))&&(c.set=o),(o=y(h.init,"accessor.init"))&&ee.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 y(h,(x?"field":"method")+" decorators","return")&&(x?ee.unshift(h):c[_]=h)}return d<2&&T.push(q(ee,p,1),q(b,p,0)),x||Z||(v?V?T.splice(-1,0,j("get",p),j("set",p)):T.push(P?c[_]:y.call.bind(c[_])):U(s,l,c)),h}function fe(s){return U(s,w,{configurable:!0,enumerable:!0,value:a})}return u!==void 0&&(a=u[w]),a=Q(a??null),F=[],N=function(s){s&&F.push(q(s))},R=function(s,g){for(var m=0;m<r.length;m++){var l=r[m],d=l[1],b=7&d;if((8&d)==s&&!b==g){var T=l[2],p=!!l[3],v=16&d;ce(s?e:e.prototype,l,v,p?"#"+T:xt(T),b,b<2?[]:s?S=S||[]:C=C||[],F,!!s,p,g,s&&p?function(x){return _t(x)===e}:n)}}},R(8,0),R(0,0),R(8,1),R(0,1),N(C),N(S),o=F,de||fe(e),{e:o,get c(){var s=[];return de&&[fe(e=ce(e,[t],i,e.name,5,s)),q(s,1)]}}}function xt(e){var t=yt(e,"string");return typeof t=="symbol"?t:t+""}function yt(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function rt(e,t,r){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch{}return e}function _t(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}function Et(e){if(!e)return;let{validate:t,...r}=e;return r}var ot,nt=class extends it{static{({e:[qe,Pe,je,Me,$e,Be,We,ze,Ge,Je,He,Ke,Qe,Xe,Ye,Ze,et,tt,Oe],c:[ot,Ue]}=vt(this,[At("rui-field")],[[E({type:String,reflect:!0,defaultValue:""}),0,"name"],[E({type:Object}),0,"rules"],[E({type:Object}),0,"defaultValue"],[E({type:String,attribute:ie}),0,"defaultValueData"],[E({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[E({type:String,defaultValue:""}),0,"error"],[E({type:Boolean,reflect:!0,defaultValue:!1}),0,"invalid"],[Tt({context:ue,initialValue:{name:"",controlId:"",descriptionId:"",errorId:"",error:void 0,invalid:!1,required:!1},hydrate:Object,serialize:t=>({...t,rules:Et(t.rules)})}),0,"fieldProvider"],[Ft(ae),0,"formContextProvider"],[Rt({context:ae,requestUpdate:!1}),2,"onFormContextChanged"],[se(["name"]),2,"onNameUpdated"],[se(["rules","defaultValue","defaultValueData"]),2,"onRulesUpdated"],[se(["disabled","error","invalid"]),2,"onPresentationUpdated"],[H({selector:"[data-rui-control], 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",type:"rui-change"}),2,"onControlChange"],[H({selector:"[data-rui-control]",type:"input",options:{capture:!0}}),2,"onControlInput"],[H({selector:"[data-rui-control]",type:"change",options:{capture:!0}}),2,"onControlNativeChange"],[H({selector:"[data-rui-control], rui-knob, rui-slider",type:"focusout"}),2,"onControlFocusOut"]],0,void 0,it))}name=(Oe(this),qe(this));rules=(Pe(this),je(this));defaultValue=(Me(this),$e(this));defaultValueData=(Be(this),We(this));disabled=(ze(this),Ge(this));error=(Je(this),He(this));invalid=(Ke(this),Qe(this));fieldProvider=(Xe(this),Ye(this));formContextProvider=(Ze(this),et(this));uid=(tt(this),Math.random().toString(36).slice(2,9));resolveFieldName(){return(this.name||this.getAttribute("name")||"").trim()}unregister;unregisterPresentation;registeredWithForm=!1;constructor(){super(),Ct(this,()=>this.fieldProvider.setContext({rules:this.readFieldRules()}))}onConnected(){this.connectToForm()}disconnectedCallback(){this.unregister?.(),this.unregister=void 0,this.unregisterPresentation?.(),this.unregisterPresentation=void 0,this.registeredWithForm=!1,super.disconnectedCallback()}get currentFormContext(){return this.formContextProvider?.getContext()}parseJsonAttr(t){if(t)try{return JSON.parse(t)}catch{return}}readFieldRules(){let t=this.rules;return t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length>0?t:this.fieldProvider.getContext()?.rules}readDefaultValue(){return this.defaultValue!==void 0?this.defaultValue:this.parseJsonAttr(this.defaultValueData??this.getAttribute(ie))}isRequired(){return!!this.readFieldRules()?.required}resolveErrorMessage(t){if(this.error)return this.error;let r=this.resolveFieldName();return r?(t??this.currentFormContext)?.fields[r]?.error:void 0}resolveInvalid(t){if(this.invalid||this.error)return!0;let r=this.resolveFieldName();return r?(t??this.currentFormContext)?.fields[r]?.invalid??!1:!1}connectToForm(){let t=this.resolveFieldName(),r=this.currentFormContext,i=r?.actions;if(!r?.ready||!i||!t){this.syncField();return}if(!this.registeredWithForm){this.registeredWithForm=!0,this.unregisterPresentation?.(),this.unregisterPresentation=i.subscribePresentation(n=>this.syncField(n)),this.unregister=i.register({name:t,rules:this.readFieldRules(),getRules:()=>this.readFieldRules(),defaultValue:this.readDefaultValue(),getValue:()=>{let n=J(this);return n?Ne(n):void 0},setValue:n=>{let u=J(this);u&&Ie(u,n)}});return}i.updateFieldOptions(t,{rules:this.readFieldRules(),defaultValue:this.readDefaultValue()}),this.syncField()}onFormContextChanged(t){if(!this.registeredWithForm){t.ready?this.connectToForm():this.syncField(t);return}this.syncField(t)}onNameUpdated(){this.unregister?.(),this.unregister=void 0,this.unregisterPresentation?.(),this.unregisterPresentation=void 0,this.registeredWithForm=!1,this.connectToForm()}onRulesUpdated(){this.connectToForm()}onPresentationUpdated(){this.syncField()}onControlChange(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldChange(t)}onControlInput(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldChange(t)}onControlNativeChange(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldChange(t)}onControlFocusOut(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldBlur(t)}syncField(t){let r=J(this),i=r?Le(r):[],n=i[0]??null,u=n?.id||`rui-field-control-${this.uid}`,a=`rui-field-desc-${this.uid}`,o=`rui-field-error-${this.uid}`,C=this.resolveErrorMessage(t),S=this.resolveInvalid(t),F=this.isRequired(),N=this.resolveFieldName();De(r,n,N);let R=this.syncDescriptions(a,o,C);this.syncAriaTargets(i,u,R,S,F);let w=ke(this);w&&n&&(w.htmlFor=n.id),this.syncErrorPresentation(C);let U={name:N,controlId:n?.id??u,descriptionId:a,errorId:o,error:C,invalid:S,required:F};this.publishFieldContext(U)}syncDescriptions(t,r,i){let n=[],u=we(this);u&&(u.id=t,n.push(t));let a=Ve(this);return a&&(a.id=r),a&&i&&n.push(r),n}syncAriaTargets(t,r,i,n,u){for(let[a,o]of t.entries())o.id||(o.id=a===0?r:`${r}-${a}`),o.setAttribute(Fe,""),o.setAttribute("aria-invalid",String(n)),o.toggleAttribute("aria-required",u),u&&o.setAttribute("aria-required","true"),i.length?o.setAttribute("aria-describedby",i.join(" ")):o.removeAttribute("aria-describedby"),this.disabled&&this.disableAriaTarget(o)}disableAriaTarget(t){t.setAttribute("aria-disabled","true"),G(t)&&(t.disabled=!0)}syncErrorPresentation(t){for(let r of oe(this))r.textContent=t??"",r.hidden=!t,t&&r.removeAttribute("hidden")}publishFieldContext(t){let r=this.fieldProvider.getContext();St(r,t)||this.fieldProvider.setContext(t)}static{Ue()}};function St(e,t){return e.name===t.name&&e.controlId===t.controlId&&e.descriptionId===t.descriptionId&&e.errorId===t.errorId&&e.error===t.error&&e.invalid===t.invalid&&e.required===t.required}function Nt({children:e,rules:t,defaultValue:r,defaultValueData:i,...n}){return at("rui-field",{...n,"prop:rules":t,"prop:defaultValue":r,data:{defaultValue:i??(r!==void 0?JSON.stringify(r):void 0)},children:at("div",{class:"rui-field",children:e})})}import{jsx as It}from"@ecopages/jsx/jsx-runtime";function K(...e){return e.filter(Boolean).join(" ")}function kt({children:e,class:t,...r}){return It("p",{...r,[re]:"",class:K("rui-field__description",t),children:e})}import{jsx as wt}from"@ecopages/jsx/jsx-runtime";function Vt({class:e,...t}){return wt("p",{...t,[L]:"",class:K("rui-field__error",e),role:"alert",hidden:!0})}export{Nt as RuiField,kt as RuiFieldDescription,ot as RuiFieldElement,Vt as RuiFieldError,ue as fieldContext};
|
|
1
|
+
import{jsx as xt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as yt,customElement as Mt,onEvent as G,onUpdated as de,prop as E,registerSsrPreparationCallback as Bt}from"@ecopages/radiant";import{consumeContext as zt,onContextUpdate as Gt,provideContext as Jt}from"@ecopages/radiant/context";function Fe(e){return e?Se(e.split(",")):[]}function _t(e){return e.join(",")}var Te={fromAttribute:e=>Fe(e),toAttribute:e=>e.length>0?_t(e):null,fromProperty:e=>Array.isArray(e)?Se(e.map(String)):typeof e=="string"?Fe(e):[]};function Re(e){return e?e.split(",").map(t=>Number(t.trim())).filter(t=>Number.isFinite(t)):[]}function Ct(e){return e.join(",")}var Ee={fromAttribute:e=>Re(e),toAttribute:e=>e.length>0?Ct(e):null,fromProperty:e=>Array.isArray(e)?e.map(Number).filter(t=>Number.isFinite(t)):typeof e=="number"&&Number.isFinite(e)?[e]:typeof e=="string"?Re(e):[]};function Se(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))]}var B="data-rui-control",De="data-rui-field-managed",Ft="data-rui-field-label",ee="data-rui-field-description",L="data-rui-field-error",te="data-default-value";var we="data-rui-aria-target",Le="data-rui-aria-targets",re='[data-ref="field"]';function Pe(){return`[${B}], ${ie()}`}function ie(){return Array.from(T.keys()).join(", ")}function Rt(e){return e.localName==="rui-listbox"&&(e.hasAttribute("embedded")||Reflect.get(e,"embedded")===!0)}var Tt={"rui-combobox":"[data-combobox-input]","rui-select":"[data-select-trigger]","rui-tag-group":"[data-tag-list]","rui-number-field":"[data-number-field-input], input","rui-knob":"[data-knob-control]","rui-checkbox":"input","rui-checkbox-group":"[data-checkbox-group-root]","rui-switch":"input"};function P(e){return e.localName==="input"||e.localName==="textarea"}function Ue(e){return e.localName==="input"}function ke(e){return e.localName==="textarea"}function ne(e){return Reflect.get(e.constructor,"formAssociated")===!0}var M={read:e=>{let t=Reflect.get(e,"value");return typeof t=="string"?t:e.getAttribute("value")??""},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",r)}},Ie={read:e=>{let t=Reflect.get(e,"value");if(typeof t=="number")return t;let r=e.getAttribute("value");return r==null||r===""?"":Number(r)},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",t)}},Ve={read:e=>e.querySelector('input[type="checkbox"]')?.checked??e.hasAttribute("checked"),write:(e,t)=>{t?e.setAttribute("checked",""):e.removeAttribute("checked")}};function qe(e,t){let r=Reflect.get(e,"value");return r!==void 0&&t.fromProperty?t.fromProperty(r):t.fromAttribute?t.fromAttribute(e.getAttribute("value")):r}function Oe(e,t){Reflect.set(e,"value",t)}var w={read:e=>qe(e,Te),write:Oe},Et={read:e=>qe(e,Ee),write:Oe},T=new Map([["rui-checkbox",Ve],["rui-switch",Ve],["rui-combobox",{...w,submission:"none"}],["rui-date-field",M],["rui-date-input",{...M,submission:"host"}],["rui-date-range-picker",M],["rui-select",{...w,submission:"none"}],["rui-radio-group",M],["rui-checkbox-group",w],["rui-listbox",w],["rui-tag-group",w],["rui-slider",{...Et,submission:"host"}],["rui-knob",{...Ie,submission:"host"}],["rui-number-field",{...Ie,submission:"host"}]]);function je(e,t){let r=e,i=new Set,n=o=>{i.has(o)||(i.add(o),t(o))};if(typeof r.getSlotElements=="function")for(let o of r.getSlotElements())n(o);let s=e.querySelector(re)??e;for(let o of Array.from(s.children))n(o);for(let o of s.querySelectorAll("*"))n(o);for(let o of Array.from(e.children))n(o);let l=e.shadowRoot;if(l)for(let o of Array.from(l.children))n(o)}function oe(e,t){let r=null;return je(e,i=>{if(!(r||!(i instanceof HTMLElement))){if(i.matches(t)){r=i;return}r=i.querySelector(t)}}),r}function Ne(e){let t=e.filter(r=>!Rt(r));return t.length===0?null:t.find(r=>!t.some(i=>i!==r&&i.contains(r)))??null}function St(e){let t=[];return je(e,r=>{r instanceof HTMLElement&&r.matches(Pe())&&t.push(r)}),t}function It(e){let t=e.querySelector(re);return t instanceof HTMLElement?Array.from(t.querySelectorAll(Pe())).filter(r=>e.contains(r)):[]}function U(e){let t=Ne(It(e));return t||Ne(St(e))}function $e(e,t){let r=U(e);if(!r||!(t.target instanceof Element)||t.target!==r&&!r.contains(t.target))return!1;let i=t.target.closest(ie());return i===r||i==null}function We(e){if(Ue(e)){let r=z(e),i=r===e?void 0:T.get(r.localName);return i?i.read(r):e.type==="checkbox"?e.checked:e.type==="number"||e.type==="range"?e.value===""?"":Number(e.value):e.value}if(ke(e))return e.value;let t=z(e);return T.get(t.localName)?.read(t)??t.getAttribute("value")??""}function se(e,t){if(Ue(e)){let i=z(e),n=i===e?void 0:T.get(i.localName);if(n){n.write(i,t);return}if(e.type==="checkbox"){e.checked=!!t;let s=e.closest("rui-checkbox, rui-switch");s&&(t?s.setAttribute("checked",""):s.removeAttribute("checked"));return}e.value=t==null?"":String(t);return}if(ke(e)){e.value=t==null?"":String(t);return}let r=z(e);T.get(r.localName)?.write(r,t)}function z(e){return e.hasAttribute(B)?e.closest(ie())??e:e}function Me(e){return oe(e,`[${Ft}]`)}function Be(e){return oe(e,`[${ee}]`)}function ze(e){return ae(e)[0]??null}function ae(e){let t=e.querySelector(re);if(t instanceof HTMLElement){let n=Array.from(t.querySelectorAll(`[${L}]`));if(n.length>0)return n}let r=Array.from(e.querySelectorAll(`[${L}]`));if(r.length>0)return r;let i=oe(e,`[${L}]`);return i?[i]:[]}function Ge(e,t,r){if(t&&P(t)){let i=e&&T.get(e.localName)?.submission;(e==null||e===t||!ne(e)&&i!=="host"&&i!=="none")&&r?t.name=r:t.removeAttribute("name")}e&&T.has(e.localName)&&(Reflect.set(e,"name",r),r?e.setAttribute("name",r):e.removeAttribute("name"))}function Vt(e){let t=Reflect.get(e,"checked");return typeof t=="boolean"?t:e.hasAttribute("checked")}function Nt(e){let t=e.getAttribute(Le);if(t){let i=t.split(",")[0]?.trim();if(i)return e.querySelector(i)}let r=e.getAttribute(we);return r?e.querySelector(r):null}function Dt(e){let t=e.getAttribute(Le);if(t)return t.split(",").map(i=>i.trim()).filter(i=>i!=="").map(i=>e.querySelector(i)).filter(i=>i!=null);let r=e.getAttribute(we);if(r){let i=e.querySelector(r);return i?[i]:[]}return[]}function wt(e){if(P(e))return e;let t=Nt(e);if(t)return t;if(e.hasAttribute(B))return e;if(e.localName==="rui-slider")return Array.from(e.querySelectorAll("[data-thumb]")).find(s=>!s.hasAttribute("hidden"))??e;let r=e.querySelector(`[${B}]`);if(r)return r;if(e.localName==="rui-radio-group")return Lt(e)??e;let i=Tt[e.localName];return i?e.querySelector(i)??e:e}function Lt(e){let t=e.querySelectorAll('input[type="radio"]');return Array.from(t).find(Vt)??t[0]}function Je(e){let t=Dt(e);if(t.length>0)return t;if(e.localName==="rui-slider"){let r=Array.from(e.querySelectorAll("[data-thumb]")).filter(i=>!i.hasAttribute("hidden"));return r.length>0?r:[e]}return[wt(e)]}import{createContext as Pt}from"@ecopages/radiant/context";var ue=Pt(Symbol.for("rui-form-context"));import{createContext as Ut}from"@ecopages/radiant/context";var le=Ut(Symbol.for("rui-field-context"));function Ze(e,t,r){e.id||(e.id=r.labelId),e.htmlFor||(e.htmlFor=r.controlId),t.setAttribute("aria-labelledby",e.id),t.removeAttribute("aria-label")}var kt=/^[A-Za-z][A-Za-z0-9_-]*$/;function Ke(e){return kt.test(e)}function qt(e){let t=e.trim();if(Ke(t))return t;let r=`rui-${t}`;return t&&Ke(r)?r:"rui"}function Qe(e){let t=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${qt(e)}-${t}`}var Xe,Ye,He,et,tt,rt,it,nt,ot,st,at,ut,lt,dt,ct,ft,mt,ht,pt,bt;function Ot(e,t,r,i,n,s){var l,o,c,S,C,I,F,k=Symbol.metadata||Symbol.for("Symbol.metadata"),ce=Object.defineProperty,Z=Object.create,fe=[Z(null),Z(null)],me=t.length;function q(a,g,p){return function(u,d){g&&(d=u,u=e);for(var y=0;y<a.length;y++)d=a[y].apply(u,p?[d]:[]);return p?d:u}}function x(a,g,p,u){if(typeof a!="function"&&(u||a!==void 0))throw new TypeError(g+" must "+(p||"be")+" a function"+(u?"":" or undefined"));return a}function he(a,g,p,u,d,y,R,b,A,v,be){function K(m){if(!be(m))throw new TypeError("Attempted to access private element on non-instance")}var Q=[].concat(g[0]),ge=g[3],X=!R,N=d===1,ye=d===3,Ae=d===4,O=d===2;function j(m,V,_e){return function(W,Ce){return V&&(Ce=W,W=a),_e&&_e(W),f[m].call(W,Ce)}}if(!X){var f={},Y=[],_=ye?"get":Ae||N?"set":"value";if(A?(v||N?f={get:gt(function(){return ge(this)},u,"get"),set:function(m){g[4](this,m)}}:f[_]=ge,v||gt(f[_],u,O?"":_)):v||(f=Object.getOwnPropertyDescriptor(a,u)),!v&&!A){if((o=fe[+b][u])&&(o^d)!==7)throw Error("Decorating two elements with the same name ("+f[_].name+") is not supported yet");fe[+b][u]=d<3?1:d}}for(var h=a,$=Q.length-1;$>=0;$-=p?2:1){var ve=x(Q[$],"A decorator","be",!0),xe=p?Q[$-1]:void 0,H={},D={kind:["field","accessor","method","getter","setter","class"][d],name:u,metadata:l,addInitializer:function(m,V){if(m.v)throw new TypeError("attempted to call addInitializer after decoration was finished");x(V,"An initializer","be",!0),y.push(V)}.bind(null,H)};if(X)o=ve.call(xe,h,D),H.v=1,x(o,"class decorators","return")&&(h=o);else if(D.static=b,D.private=A,o=D.access={has:A?be.bind():function(m){return u in m}},Ae||(o.get=A?O?function(m){return K(m),f.value}:j("get",0,K):function(m){return m[u]}),O||ye||(o.set=A?j("set",0,K):function(m,V){m[u]=V}),h=ve.call(xe,N?{get:f.get,set:f.set}:f[_],D),H.v=1,N){if(typeof h=="object"&&h)(o=x(h.get,"accessor.get"))&&(f.get=o),(o=x(h.set,"accessor.set"))&&(f.set=o),(o=x(h.init,"accessor.init"))&&Y.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 x(h,(v?"field":"method")+" decorators","return")&&(v?Y.unshift(h):f[_]=h)}return d<2&&R.push(q(Y,b,1),q(y,b,0)),v||X||(A?N?R.splice(-1,0,j("get",b),j("set",b)):R.push(O?f[_]:x.call.bind(f[_])):ce(a,u,f)),h}function pe(a){return ce(a,k,{configurable:!0,enumerable:!0,value:l})}return s!==void 0&&(l=s[k]),l=Z(l??null),C=[],I=function(a){a&&C.push(q(a))},F=function(a,g){for(var p=0;p<r.length;p++){var u=r[p],d=u[1],y=7&d;if((8&d)==a&&!y==g){var R=u[2],b=!!u[3],A=16&d;he(a?e:e.prototype,u,A,b?"#"+R:jt(R),y,y<2?[]:a?S=S||[]:c=c||[],C,!!a,b,g,a&&b?function(v){return Wt(v)===e}:n)}}},F(8,0),F(0,0),F(8,1),F(0,1),I(c),I(S),o=C,me||pe(e),{e:o,get c(){var a=[];return me&&[pe(e=he(e,[t],i,e.name,5,a)),q(a,1)]}}}function jt(e){var t=$t(e,"string");return typeof t=="symbol"?t:t+""}function $t(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function gt(e,t,r){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch{}return e}function Wt(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}function Zt(e){if(!e)return;let{validate:t,...r}=e;return r}var vt,At=class extends yt{static{({e:[He,et,tt,rt,it,nt,ot,st,at,ut,lt,dt,ct,ft,mt,ht,pt,bt,Xe],c:[vt,Ye]}=Ot(this,[Mt("rui-field")],[[E({type:String,reflect:!0,defaultValue:""}),0,"name"],[E({type:Object}),0,"rules"],[E({type:Object}),0,"defaultValue"],[E({type:String,attribute:te}),0,"defaultValueData"],[E({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[E({type:String,defaultValue:""}),0,"error"],[E({type:Boolean,reflect:!0,defaultValue:!1}),0,"invalid"],[Jt({context:le,initialValue:{name:"",controlId:"",descriptionId:"",errorId:"",error:void 0,invalid:!1,required:!1},hydrate:Object,serialize:t=>({...t,rules:Zt(t.rules)})}),0,"fieldProvider"],[zt(ue),0,"formContextProvider"],[Gt({context:ue,requestUpdate:!1}),2,"onFormContextChanged"],[de(["name"]),2,"onNameUpdated"],[de(["rules","defaultValue","defaultValueData"]),2,"onRulesUpdated"],[de(["disabled","error","invalid"]),2,"onPresentationUpdated"],[G({selector:"*",type:"rui-change"}),2,"onControlChange"],[G({selector:"[data-rui-control]",type:"input",options:{capture:!0}}),2,"onControlInput"],[G({selector:"[data-rui-control]",type:"change",options:{capture:!0}}),2,"onControlNativeChange"],[G({selector:"[data-rui-control], rui-knob, rui-slider",type:"focusout"}),2,"onControlFocusOut"]],0,void 0,yt))}name=(Xe(this),He(this));rules=(et(this),tt(this));defaultValue=(rt(this),it(this));defaultValueData=(nt(this),ot(this));disabled=(st(this),at(this));error=(ut(this),lt(this));invalid=(dt(this),ct(this));fieldProvider=(ft(this),mt(this));formContextProvider=(ht(this),pt(this));uid=(bt(this),Qe("rui-field"));resolveFieldName(){return(this.name||this.getAttribute("name")||"").trim()}unregister;unregisterPresentation;registeredWithForm=!1;pendingControlWrite;controlObserver;constructor(){super(),Bt(this,()=>this.fieldProvider.setContext({rules:this.readFieldRules()}))}onConnected(){this.connectToForm()}disconnectedCallback(){this.unregister?.(),this.unregister=void 0,this.unregisterPresentation?.(),this.unregisterPresentation=void 0,this.registeredWithForm=!1,this.clearPendingControlWrite(),super.disconnectedCallback()}get currentFormContext(){return this.formContextProvider?.getContext()}parseJsonAttr(t){if(t)try{return JSON.parse(t)}catch{return}}readFieldRules(){let t=this.rules;return t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length>0?t:this.fieldProvider.getContext()?.rules}readDefaultValue(){return this.defaultValue!==void 0?this.defaultValue:this.parseJsonAttr(this.defaultValueData??this.getAttribute(te))}isRequired(){return!!this.readFieldRules()?.required}resolveErrorMessage(t){if(this.error)return this.error;let r=this.resolveFieldName();return r?(t??this.currentFormContext)?.fields[r]?.error:void 0}resolveInvalid(t){if(this.invalid||this.error)return!0;let r=this.resolveFieldName();return r?(t??this.currentFormContext)?.fields[r]?.invalid??!1:!1}connectToForm(){let t=this.resolveFieldName(),r=this.currentFormContext,i=r?.actions;if(!r?.ready||!i||!t){this.syncField();return}if(!this.registeredWithForm){this.registeredWithForm=!0,this.unregisterPresentation?.(),this.unregisterPresentation=i.subscribePresentation(n=>this.syncField(n)),this.unregister=i.register({name:t,rules:this.readFieldRules(),getRules:()=>this.readFieldRules(),defaultValue:this.readDefaultValue(),getValue:()=>{let n=U(this);return n?We(n):void 0},setValue:n=>{let s=U(this);if(s){se(s,n),this.clearPendingControlWrite();return}this.pendingControlWrite={value:n},this.observeControlAppearance()}}),this.syncField();return}i.updateFieldOptions(t,{rules:this.readFieldRules(),defaultValue:this.readDefaultValue()}),this.syncField()}onFormContextChanged(t){if(!this.registeredWithForm){t.ready?this.connectToForm():this.syncField(t);return}this.syncField(t)}onNameUpdated(){this.unregister?.(),this.unregister=void 0,this.unregisterPresentation?.(),this.unregisterPresentation=void 0,this.registeredWithForm=!1,this.clearPendingControlWrite(),this.connectToForm()}onRulesUpdated(){this.connectToForm()}onPresentationUpdated(){this.syncField()}onControlChange(t){$e(this,t)&&this.syncControlToForm()}onControlInput(){this.syncControlToForm()}onControlNativeChange(){this.syncControlToForm()}onControlFocusOut(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldBlur(t)}syncField(t){let r=U(this);r&&this.pendingControlWrite&&(se(r,this.pendingControlWrite.value),this.clearPendingControlWrite());let i=r?Je(r):[],n=i[0]??null,s=n?.id||`${this.uid}-control`,l=`${this.uid}-desc`,o=`${this.uid}-error`,c=this.resolveErrorMessage(t),S=this.resolveInvalid(t),C=this.isRequired(),I=this.resolveFieldName();Ge(r,n,I);let F=this.syncDescriptions(l,o,c);this.syncAriaTargets(r,i,s,F,S,C),this.syncLabel(i,n),this.syncErrorPresentation(c);let k={name:I,controlId:n?.id??s,descriptionId:l,errorId:o,error:c,invalid:S,required:C};this.publishFieldContext(k)}syncControlToForm(){let t=this.resolveFieldName();t&&this.currentFormContext?.actions.handleFieldChange(t)}observeControlAppearance(){this.controlObserver||(this.controlObserver=new MutationObserver(()=>this.syncField()),this.controlObserver.observe(this,{childList:!0,subtree:!0}))}clearPendingControlWrite(){this.pendingControlWrite=void 0,this.controlObserver?.disconnect(),this.controlObserver=void 0}syncDescriptions(t,r,i){let n=[],s=Be(this);s&&(s.id=t,n.push(t));let l=ze(this);return l&&(l.id=r),l&&i&&n.push(r),n}syncLabel(t,r){let i=Me(this);if(!i||!r||(i.htmlFor=r.id,P(r)))return;let n=i.id||`${this.uid}-label`;for(let s of t)Ze(i,s,{controlId:s.id,labelId:n})}syncAriaTargets(t,r,i,n,s,l){for(let[o,c]of r.entries())c.id||(c.id=o===0?i:`${i}-${o}`),c.setAttribute(De,""),c.setAttribute("aria-invalid",String(s)),c.toggleAttribute("aria-required",l),l&&c.setAttribute("aria-required","true"),n.length?c.setAttribute("aria-describedby",n.join(" ")):c.removeAttribute("aria-describedby"),this.disabled&&this.disableAriaTarget(c);this.disabled&&t&&ne(t)&&Reflect.set(t,"disabled",!0)}disableAriaTarget(t){t.setAttribute("aria-disabled","true"),P(t)&&(t.disabled=!0)}syncErrorPresentation(t){for(let r of ae(this))r.textContent=t??"",r.hidden=!t,t&&r.removeAttribute("hidden")}publishFieldContext(t){let r=this.fieldProvider.getContext();Kt(r,t)||this.fieldProvider.setContext(t)}static{Ye()}};function Kt(e,t){return e.name===t.name&&e.controlId===t.controlId&&e.descriptionId===t.descriptionId&&e.errorId===t.errorId&&e.error===t.error&&e.invalid===t.invalid&&e.required===t.required}function Qt({children:e,rules:t,defaultValue:r,defaultValueData:i,...n}){return xt("rui-field",{...n,"prop:rules":t,"prop:defaultValue":r,data:{defaultValue:i??(r!==void 0?JSON.stringify(r):void 0)},children:xt("div",{class:"rui-field","data-ref":"field",children:e})})}import{jsx as Xt}from"@ecopages/jsx/jsx-runtime";function J(...e){return e.filter(Boolean).join(" ")}function Yt({children:e,class:t,...r}){return Xt("p",{...r,[ee]:"",class:J("rui-field__description",t),children:e})}import{jsx as Ht}from"@ecopages/jsx/jsx-runtime";function er({class:e,...t}){return Ht("p",{...t,[L]:"",class:J("rui-field__error",e),role:"alert",hidden:!0})}export{Qt as RuiField,Yt as RuiFieldDescription,vt as RuiFieldElement,er as RuiFieldError,le as fieldContext};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/ui/field/field.tsx", "../../../../src/components/ui/field/field.script.tsx", "../../../../src/components/ui/form/control-protocol.ts", "../../../../src/components/ui/form/form-context.ts", "../../../../src/components/ui/field/field-context.ts", "../../../../src/components/ui/field/field-description.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/field/field-error.tsx"],
|
|
4
|
-
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport \"./field.script\";\nexport function RuiField({\n children,\n rules,\n defaultValue,\n defaultValueData,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-field\", {\n ...props,\n \"prop:rules\": rules,\n \"prop:defaultValue\": defaultValue,\n data: {\n defaultValue: defaultValueData ?? (defaultValue !== void 0 ? JSON.stringify(defaultValue) : void 0)\n },\n children: /* @__PURE__ */jsx(\"div\", {\n class: \"rui-field\",\n children\n })\n });\n}", "let _initProto, _initClass, _init_name, _init_extra_name, _init_rules, _init_extra_rules, _init_defaultValue, _init_extra_defaultValue, _init_defaultValueData, _init_extra_defaultValueData, _init_disabled, _init_extra_disabled, _init_error, _init_extra_error, _init_invalid, _init_extra_invalid, _init_fieldProvider, _init_extra_fieldProvider, _init_formContextProvider, _init_extra_formContextProvider;\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, onEvent, onUpdated, prop, registerSsrPreparationCallback } from \"@ecopages/radiant\";\nimport { consumeContext, onContextUpdate, provideContext } from \"@ecopages/radiant/context\";\nimport { findFieldControl, findFieldDescription, findFieldError, findFieldErrorElements, findFieldLabel, getAriaControlTargets, isNativeTextControl, readControlValue, RUI_FIELD_DEFAULT_VALUE_ATTR, RUI_FIELD_MANAGED_ATTR, writeControlValue, wireFieldControlName } from \"../form/control-protocol\";\nimport { formContext } from \"../form/form-context\";\nimport { fieldContext } from \"./field-context\";\nfunction stripValidate(rules) {\n if (!rules) {\n return void 0;\n }\n const {\n validate: _validate,\n ...serializable\n } = rules;\n return serializable;\n}\nlet _RuiField;\nclass RuiField extends RadiantElement {\n static {\n ({\n e: [_init_name, _init_extra_name, _init_rules, _init_extra_rules, _init_defaultValue, _init_extra_defaultValue, _init_defaultValueData, _init_extra_defaultValueData, _init_disabled, _init_extra_disabled, _init_error, _init_extra_error, _init_invalid, _init_extra_invalid, _init_fieldProvider, _init_extra_fieldProvider, _init_formContextProvider, _init_extra_formContextProvider, _initProto],\n c: [_RuiField, _initClass]\n } = _applyDecs(this, [customElement(\"rui-field\")], [[prop({\n type: String,\n reflect: true,\n defaultValue: \"\"\n }), 0, \"name\"], [prop({\n type: Object\n }), 0, \"rules\"], [prop({\n type: Object\n }), 0, \"defaultValue\"], [prop({\n type: String,\n attribute: RUI_FIELD_DEFAULT_VALUE_ATTR\n }), 0, \"defaultValueData\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"error\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"invalid\"], [provideContext({\n context: fieldContext,\n initialValue: {\n name: \"\",\n controlId: \"\",\n descriptionId: \"\",\n errorId: \"\",\n error: void 0,\n invalid: false,\n required: false\n },\n hydrate: Object,\n serialize: value => ({\n ...value,\n rules: stripValidate(value.rules)\n })\n }), 0, \"fieldProvider\"], [consumeContext(formContext), 0, \"formContextProvider\"], [onContextUpdate({\n context: formContext,\n requestUpdate: false\n }), 2, \"onFormContextChanged\"], [onUpdated([\"name\"]), 2, \"onNameUpdated\"], [onUpdated([\"rules\", \"defaultValue\", \"defaultValueData\"]), 2, \"onRulesUpdated\"], [onUpdated([\"disabled\", \"error\", \"invalid\"]), 2, \"onPresentationUpdated\"], [onEvent({\n selector: \"[data-rui-control], 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\",\n type: \"rui-change\"\n }), 2, \"onControlChange\"], [onEvent({\n selector: \"[data-rui-control]\",\n type: \"input\",\n options: {\n capture: true\n }\n }), 2, \"onControlInput\"], [onEvent({\n selector: \"[data-rui-control]\",\n type: \"change\",\n options: {\n capture: true\n }\n }), 2, \"onControlNativeChange\"], [onEvent({\n selector: \"[data-rui-control], rui-knob, rui-slider\",\n type: \"focusout\"\n }), 2, \"onControlFocusOut\"]], 0, void 0, RadiantElement));\n }\n name = (_initProto(this), _init_name(this));\n rules = (_init_extra_name(this), _init_rules(this));\n defaultValue = (_init_extra_rules(this), _init_defaultValue(this));\n defaultValueData = (_init_extra_defaultValue(this), _init_defaultValueData(this));\n disabled = (_init_extra_defaultValueData(this), _init_disabled(this));\n error = (_init_extra_disabled(this), _init_error(this));\n invalid = (_init_extra_error(this), _init_invalid(this));\n fieldProvider = (_init_extra_invalid(this), _init_fieldProvider(this));\n formContextProvider = (_init_extra_fieldProvider(this), _init_formContextProvider(this));\n uid = (_init_extra_formContextProvider(this), Math.random().toString(36).slice(2, 9));\n /** Resolved field name from property or `name` attribute (Storybook can hydrate props after connect). */\n resolveFieldName() {\n return (this.name || this.getAttribute(\"name\") || \"\").trim();\n }\n unregister;\n unregisterPresentation;\n registeredWithForm = false;\n /**\n * @remarks Registers SSR-prep rules on `fieldProvider` so hydrated fields recover them after a\n * real SSR round-trip (`prop:rules` does not survive that boundary; `connectedCallback` never\n * runs during SSR).\n */\n constructor() {\n super();\n registerSsrPreparationCallback(this, () => this.fieldProvider.setContext({\n rules: this.readFieldRules()\n }));\n }\n onConnected() {\n this.connectToForm();\n }\n disconnectedCallback() {\n this.unregister?.();\n this.unregister = void 0;\n this.unregisterPresentation?.();\n this.unregisterPresentation = void 0;\n this.registeredWithForm = false;\n super.disconnectedCallback();\n }\n get currentFormContext() {\n return this.formContextProvider?.getContext();\n }\n parseJsonAttr(raw) {\n if (!raw) {\n return void 0;\n }\n try {\n return JSON.parse(raw);\n } catch {\n return void 0;\n }\n }\n /**\n * Prefers the live `rules` prop \u2014 it's the only channel that can carry a `validate`\n * function. Falls back to `fieldProvider`'s own context, which only ever holds the\n * JSON-safe subset (see its `serialize` option) \u2014 this is what recovers rules after a\n * real SSR hydrate, since `prop:rules` itself doesn't survive that boundary.\n */\n readFieldRules() {\n const rules = this.rules;\n if (rules && typeof rules === \"object\" && !Array.isArray(rules) && Object.keys(rules).length > 0) {\n return rules;\n }\n return this.fieldProvider.getContext()?.rules;\n }\n readDefaultValue() {\n if (this.defaultValue !== void 0) {\n return this.defaultValue;\n }\n return this.parseJsonAttr(this.defaultValueData ?? this.getAttribute(RUI_FIELD_DEFAULT_VALUE_ATTR));\n }\n isRequired() {\n return Boolean(this.readFieldRules()?.required);\n }\n resolveErrorMessage(formCtx) {\n if (this.error) {\n return this.error;\n }\n const fieldName = this.resolveFieldName();\n if (!fieldName) {\n return void 0;\n }\n const ctx = formCtx ?? this.currentFormContext;\n return ctx?.fields[fieldName]?.error;\n }\n resolveInvalid(formCtx) {\n if (this.invalid) {\n return true;\n }\n if (this.error) {\n return true;\n }\n const fieldName = this.resolveFieldName();\n if (!fieldName) {\n return false;\n }\n const ctx = formCtx ?? this.currentFormContext;\n return ctx?.fields[fieldName]?.invalid ?? false;\n }\n connectToForm() {\n const fieldName = this.resolveFieldName();\n const ctx = this.currentFormContext;\n const actions = ctx?.actions;\n if (!ctx?.ready || !actions || !fieldName) {\n this.syncField();\n return;\n }\n if (!this.registeredWithForm) {\n this.registeredWithForm = true;\n this.unregisterPresentation?.();\n this.unregisterPresentation = actions.subscribePresentation(ctx2 => this.syncField(ctx2));\n this.unregister = actions.register({\n name: fieldName,\n rules: this.readFieldRules(),\n getRules: () => this.readFieldRules(),\n defaultValue: this.readDefaultValue(),\n getValue: () => {\n const control = findFieldControl(this);\n return control ? readControlValue(control) : void 0;\n },\n setValue: value => {\n const control = findFieldControl(this);\n if (control) {\n writeControlValue(control, value);\n }\n }\n });\n return;\n }\n actions.updateFieldOptions(fieldName, {\n rules: this.readFieldRules(),\n defaultValue: this.readDefaultValue()\n });\n this.syncField();\n }\n onFormContextChanged(ctx) {\n if (!this.registeredWithForm) {\n if (ctx.ready) {\n this.connectToForm();\n } else {\n this.syncField(ctx);\n }\n return;\n }\n this.syncField(ctx);\n }\n onNameUpdated() {\n this.unregister?.();\n this.unregister = void 0;\n this.unregisterPresentation?.();\n this.unregisterPresentation = void 0;\n this.registeredWithForm = false;\n this.connectToForm();\n }\n onRulesUpdated() {\n this.connectToForm();\n }\n onPresentationUpdated() {\n this.syncField();\n }\n onControlChange() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldChange(fieldName);\n }\n }\n onControlInput() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldChange(fieldName);\n }\n }\n onControlNativeChange() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldChange(fieldName);\n }\n }\n onControlFocusOut() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldBlur(fieldName);\n }\n }\n syncField(formCtx) {\n const controlHost = findFieldControl(this);\n const ariaTargets = controlHost ? getAriaControlTargets(controlHost) : [];\n const ariaTarget = ariaTargets[0] ?? null;\n const controlId = ariaTarget?.id || `rui-field-control-${this.uid}`;\n const descriptionId = `rui-field-desc-${this.uid}`;\n const errorId = `rui-field-error-${this.uid}`;\n const errorMessage = this.resolveErrorMessage(formCtx);\n const invalid = this.resolveInvalid(formCtx);\n const required = this.isRequired();\n const fieldName = this.resolveFieldName();\n wireFieldControlName(controlHost, ariaTarget, fieldName);\n const describedBy = this.syncDescriptions(descriptionId, errorId, errorMessage);\n this.syncAriaTargets(ariaTargets, controlId, describedBy, invalid, required);\n const label = findFieldLabel(this);\n if (label && ariaTarget) {\n label.htmlFor = ariaTarget.id;\n }\n this.syncErrorPresentation(errorMessage);\n const nextFieldContext = {\n name: fieldName,\n controlId: ariaTarget?.id ?? controlId,\n descriptionId,\n errorId,\n error: errorMessage,\n invalid,\n required\n };\n this.publishFieldContext(nextFieldContext);\n }\n syncDescriptions(descriptionId, errorId, errorMessage) {\n const describedBy = [];\n const description = findFieldDescription(this);\n if (description) {\n description.id = descriptionId;\n describedBy.push(descriptionId);\n }\n const error = findFieldError(this);\n if (error) error.id = errorId;\n if (error && errorMessage) describedBy.push(errorId);\n return describedBy;\n }\n syncAriaTargets(targets, controlId, describedBy, invalid, required) {\n for (const [index, target] of targets.entries()) {\n if (!target.id) target.id = index === 0 ? controlId : `${controlId}-${index}`;\n target.setAttribute(RUI_FIELD_MANAGED_ATTR, \"\");\n target.setAttribute(\"aria-invalid\", String(invalid));\n target.toggleAttribute(\"aria-required\", required);\n if (required) target.setAttribute(\"aria-required\", \"true\");\n if (describedBy.length) target.setAttribute(\"aria-describedby\", describedBy.join(\" \"));else target.removeAttribute(\"aria-describedby\");\n if (this.disabled) this.disableAriaTarget(target);\n }\n }\n disableAriaTarget(target) {\n target.setAttribute(\"aria-disabled\", \"true\");\n if (isNativeTextControl(target)) target.disabled = true;\n }\n syncErrorPresentation(errorMessage) {\n for (const error of findFieldErrorElements(this)) {\n error.textContent = errorMessage ?? \"\";\n error.hidden = !errorMessage;\n if (errorMessage) error.removeAttribute(\"hidden\");\n }\n }\n publishFieldContext(next) {\n const previous = this.fieldProvider.getContext();\n if (isSameFieldContext(previous, next)) return;\n this.fieldProvider.setContext(next);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiField as RuiField };\nfunction isSameFieldContext(previous, next) {\n return previous.name === next.name && previous.controlId === next.controlId && previous.descriptionId === next.descriptionId && previous.errorId === next.errorId && previous.error === next.error && previous.invalid === next.invalid && previous.required === next.required;\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}", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "import { createContext } from \"@ecopages/radiant/context\";\nexport const fieldContext = createContext(/* @__PURE__ */Symbol.for(\"rui-field-context\"));", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_FIELD_DESCRIPTION_ATTR } from \"../form/control-protocol\";\nexport function RuiFieldDescription({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n ...{\n [RUI_FIELD_DESCRIPTION_ATTR]: \"\"\n },\n class: cx(\"rui-field__description\", className),\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_FIELD_ERROR_ATTR } from \"../form/control-protocol\";\nexport function RuiFieldError({\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n ...{\n [RUI_FIELD_ERROR_ATTR]: \"\"\n },\n class: cx(\"rui-field__error\", className),\n role: \"alert\",\n hidden: true\n });\n}"],
|
|
5
|
-
"mappings": "AAAA,OAAS,OAAAA,OAAW,4BCMpB,OAAS,kBAAAC,GAAgB,iBAAAC,GAAe,WAAAC,EAAS,aAAAC,GAAW,QAAAC,EAAM,kCAAAC,OAAsC,oBACxG,OAAS,kBAAAC,GAAgB,mBAAAC,GAAiB,kBAAAC,OAAsB,4BCPzD,IAAMC,EAAmB,mBACnBC,GAAyB,yBACzBC,GAAuB,uBACvBC,GAA6B,6BAC7BC,EAAuB,uBACvBC,GAA+B,qBAE5C,IAAMC,EAAmC,IAAI,IAAI,CAAC,eAAgB,iBAAkB,wBAAyB,aAAc,gBAAiB,eAAgB,qBAAsB,aAAc,kBAAmB,aAAc,WAAY,mBAAoB,aAAa,CAAC,EACzQC,GAAmB,IAAIC,CAAgB,MAAM,MAAM,KAAKF,CAAiB,EAAE,KAAK,IAAI,CAAC,GACrFG,GAAwB,CAC5B,eAAgB,wBAChB,iBAAkB,0BAClB,wBAAyB,qBACzB,aAAc,wBACd,gBAAiB,kBACjB,mBAAoB,mCACpB,WAAY,sBACZ,eAAgB,QAChB,qBAAsB,6BACtB,aAAc,OAChB,EACO,SAASC,EAAoBC,EAAM,CACxC,OAAOA,EAAK,YAAc,SAAWA,EAAK,YAAc,UAC1D,CACA,SAASC,GAAcD,EAAM,CAC3B,OAAOA,EAAK,YAAc,OAC5B,CACA,SAASE,GAAiBF,EAAM,CAC9B,OAAOA,EAAK,YAAc,UAC5B,CACA,IAAMG,EAAqB,CACzB,KAAMC,GAAQ,CACZ,IAAMC,EAAQ,QAAQ,IAAID,EAAM,OAAO,EACvC,OAAO,OAAOC,GAAU,SAAWA,EAAQD,EAAK,aAAa,OAAO,GAAK,EAC3E,EACA,MAAO,CAACA,EAAMC,IAAU,CACtB,IAAMC,EAAOD,GAAS,KAAO,GAAK,OAAOA,CAAK,EAC9CD,EAAK,aAAa,QAASE,CAAI,EAC3B,UAAWF,GACb,QAAQ,IAAIA,EAAM,QAASE,CAAI,CAEnC,CACF,EACMC,EAAqB,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,GAAmBN,EAAMO,EAAUC,EAAW,CACrD,IAAMP,EAAQ,QAAQ,IAAID,EAAMO,CAAQ,EACxC,GAAI,OAAON,GAAU,UAAY,OAAO,SAASA,CAAK,EACpD,OAAOA,EAET,IAAMG,EAAMJ,EAAK,aAAaQ,CAAS,EACvC,OAAOJ,GAAO,MAAQA,IAAQ,GAAK,GAAK,OAAOA,CAAG,CACpD,CACA,SAASK,GAAcT,EAAM,CAE3B,OADgB,QAAQ,IAAIA,EAAM,SAAS,IACxB,SAAWA,EAAK,aAAa,SAAS,IAAM,OACjE,CACA,IAAMU,GAAqB,CACzB,KAAMV,GACAS,GAAcT,CAAI,EACb,CAACM,GAAmBN,EAAM,WAAY,WAAW,EAAGM,GAAmBN,EAAM,WAAY,WAAW,CAAC,EAEvGG,EAAmB,KAAKH,CAAI,EAErC,MAAO,CAACA,EAAMC,IAAU,CACtB,GAAI,MAAM,QAAQA,CAAK,GAAKA,EAAM,QAAU,EAAG,CAC7CD,EAAK,aAAa,UAAW,OAAO,EAChC,YAAaA,GACf,QAAQ,IAAIA,EAAM,UAAW,OAAO,EAEtCA,EAAK,aAAa,YAAa,OAAOC,EAAM,CAAC,CAAC,CAAC,EAC/CD,EAAK,aAAa,YAAa,OAAOC,EAAM,CAAC,CAAC,CAAC,EAC3C,aAAcD,GAChB,QAAQ,IAAIA,EAAM,WAAYC,EAAM,CAAC,CAAC,EAEpC,aAAcD,GAChB,QAAQ,IAAIA,EAAM,WAAYC,EAAM,CAAC,CAAC,EAExC,MACF,CACAE,EAAmB,MAAMH,EAAMC,CAAK,CACtC,CACF,EACMU,EAAwC,IAAI,IAAI,CAAC,CAAC,eAAgBN,EAAmB,EAAG,CAAC,aAAcA,EAAmB,EAAG,CAAC,eAAgBN,CAAkB,EAAG,CAAC,iBAAkBA,CAAkB,EAAG,CAAC,wBAAyBA,CAAkB,EAAG,CAAC,aAAcA,CAAkB,EAAG,CAAC,kBAAmBA,CAAkB,EAAG,CAAC,qBAAsBA,CAAkB,EAAG,CAAC,cAAeA,CAAkB,EAAG,CAAC,gBAAiBA,CAAkB,EAAG,CAAC,aAAcW,EAAkB,EAAG,CAAC,WAAYP,CAAkB,EAAG,CAAC,mBAAoBA,CAAkB,CAAC,CAAC,EACpjB,SAASS,GAAwBC,EAAMC,EAAO,CAC5C,IAAMC,EAAWF,EACXG,EAAyB,IAAI,IAC7BC,EAAYrB,GAAQ,CACpBoB,EAAQ,IAAIpB,CAAI,IAGpBoB,EAAQ,IAAIpB,CAAI,EAChBkB,EAAMlB,CAAI,EACZ,EACA,GAAI,OAAOmB,EAAS,iBAAoB,WACtC,QAAWnB,KAAQmB,EAAS,gBAAgB,EAC1CE,EAAUrB,CAAI,EAGlB,IAAMsB,EAAaL,EAAK,cAAc,YAAY,GAAKA,EACvD,QAAWM,KAAS,MAAM,KAAKD,EAAW,QAAQ,EAChDD,EAAUE,CAAK,EAEjB,QAAWvB,KAAQsB,EAAW,iBAAiB,GAAG,EAChDD,EAAUrB,CAAI,EAEhB,QAAWuB,KAAS,MAAM,KAAKN,EAAK,QAAQ,EAC1CI,EAAUE,CAAK,EAEjB,IAAMC,EAASP,EAAK,WACpB,GAAIO,EACF,QAAWD,KAAS,MAAM,KAAKC,EAAO,QAAQ,EAC5CH,EAAUE,CAAK,CAGrB,CACA,SAASE,GAAkBR,EAAMS,EAAU,CACzC,IAAIC,EAAQ,KACZ,OAAAX,GAAwBC,EAAMjB,GAAQ,CACpC,GAAI,EAAA2B,GAAS,EAAE3B,aAAgB,cAG/B,IAAIA,EAAK,QAAQ0B,CAAQ,EAAG,CAC1BC,EAAQ3B,EACR,MACF,CACA2B,EAAQ3B,EAAK,cAAc0B,CAAQ,EACrC,CAAC,EACMC,CACT,CACA,SAASC,GAAwBC,EAAY,CAC3C,GAAIA,EAAW,SAAW,EACxB,OAAO,KAET,GAAIA,EAAW,SAAW,EACxB,OAAOA,EAAW,CAAC,EAErB,IAAMC,EAAcD,EAAW,KAAKE,GAAapC,EAAkB,IAAIoC,EAAU,SAAS,CAAC,EACrFC,EAAgBH,EAAW,KAAKE,GAAaA,EAAU,aAAalC,CAAgB,CAAC,EAC3F,GAAImC,EACF,OAAOA,EAET,GAAIF,EACF,OAAOA,EAET,IAAMG,EAAS,SAAS,cACxB,GAAIA,aAAkB,aACpB,QAAWF,KAAaF,EACtB,GAAIE,IAAcE,GAAUF,EAAU,SAASE,CAAM,EACnD,OAAOF,EAIb,IAAMG,EAAUL,EAAW,OAAOM,GAAMA,EAAG,aAAeA,EAAG,eAAe,EAAE,OAAS,GAAK,CAACA,EAAG,QAAQ,+BAA+B,CAAC,EAClIC,EAAOF,EAAQ,OAAS,EAAIA,EAAUL,EAAW,OAAOM,GAAMA,EAAG,WAAW,EAClF,OAAOC,EAAKA,EAAK,OAAS,CAAC,GAAKP,EAAWA,EAAW,OAAS,CAAC,CAClE,CACA,SAASQ,GAA8BpB,EAAM,CAC3C,IAAMK,EAAaL,EAAK,cAAc,YAAY,EAClD,OAAMK,aAAsB,YAGrB,MAAM,KAAKA,EAAW,iBAAiB1B,EAAgB,CAAC,EAAE,OAAOuC,GAAMlB,EAAK,SAASkB,CAAE,CAAC,EAFtF,CAAC,CAGZ,CACO,SAASG,EAAiBrB,EAAM,CACrC,IAAMsB,EAAiBX,GAAwBS,GAA8BpB,CAAI,CAAC,EAClF,GAAIsB,EACF,OAAOA,EAET,IAAIZ,EAAQ,KAUZ,GATAX,GAAwBC,EAAMjB,GAAQ,CACpC,GAAI2B,EACF,OAEF,IAAMa,EAAQC,GAAqBzC,CAAI,EACnCwC,IACFb,EAAQa,EAEZ,CAAC,EACGb,EACF,OAAOA,EAET,IAAML,EAAaL,EAAK,cAAc,YAAY,GAAKA,EACvD,OAAOwB,GAAqBnB,CAAU,CACxC,CACA,SAASmB,GAAqBzC,EAAM,CAClC,OAAMA,aAAgB,YAGlBA,EAAK,QAAQ,IAAIH,CAAgB,GAAG,GAAKF,EAAkB,IAAIK,EAAK,SAAS,EACxEA,EAEFA,EAAK,cAAcJ,EAAgB,EALjC,IAMX,CACO,SAAS8C,GAAiBC,EAAS,CACxC,GAAI1C,GAAc0C,CAAO,EAAG,CAC1B,IAAMC,EAAQC,EAAmBF,CAAO,EAClCG,EAAUF,IAAUD,EAAU,OAAS5B,EAAuB,IAAI6B,EAAM,SAAS,EACvF,OAAIE,EACKA,EAAQ,KAAKF,CAAK,EAEvBD,EAAQ,OAAS,WACZA,EAAQ,QAEbA,EAAQ,OAAS,UAAYA,EAAQ,OAAS,QACzCA,EAAQ,QAAU,GAAK,GAAK,OAAOA,EAAQ,KAAK,EAElDA,EAAQ,KACjB,CACA,GAAIzC,GAAiByC,CAAO,EAC1B,OAAOA,EAAQ,MAEjB,IAAMvC,EAAOyC,EAAmBF,CAAO,EACvC,OAAO5B,EAAuB,IAAIX,EAAK,SAAS,GAAG,KAAKA,CAAI,GAAKA,EAAK,aAAa,OAAO,GAAK,EACjG,CACO,SAAS2C,GAAkBJ,EAAStC,EAAO,CAChD,GAAIJ,GAAc0C,CAAO,EAAG,CAC1B,IAAMC,EAAQC,EAAmBF,CAAO,EAClCG,EAAUF,IAAUD,EAAU,OAAS5B,EAAuB,IAAI6B,EAAM,SAAS,EACvF,GAAIE,EAAS,CACXA,EAAQ,MAAMF,EAAOvC,CAAK,EAC1B,MACF,CACA,GAAIsC,EAAQ,OAAS,WAAY,CAC/BA,EAAQ,QAAU,EAAQtC,EAC1B,IAAM2C,EAAKL,EAAQ,QAAQ,0BAA0B,EACjDK,IACE3C,EACF2C,EAAG,aAAa,UAAW,EAAE,EAE7BA,EAAG,gBAAgB,SAAS,GAGhC,MACF,CACAL,EAAQ,MAAQtC,GAAS,KAAO,GAAK,OAAOA,CAAK,EACjD,MACF,CACA,GAAIH,GAAiByC,CAAO,EAAG,CAC7BA,EAAQ,MAAQtC,GAAS,KAAO,GAAK,OAAOA,CAAK,EACjD,MACF,CACA,IAAMD,EAAOyC,EAAmBF,CAAO,EACvC5B,EAAuB,IAAIX,EAAK,SAAS,GAAG,MAAMA,EAAMC,CAAK,CAC/D,CACA,SAASwC,EAAmBF,EAAS,CACnC,OAAIA,EAAQ,aAAa9C,CAAgB,EAC1B8C,EAAQ,QAAQ,MAAM,KAAKhD,CAAiB,EAAE,KAAK,GAAG,CAAC,GACrDgD,EAEVA,CACT,CACO,SAASM,GAAehC,EAAM,CACnC,OAAOQ,GAAkBR,EAAM,IAAIiC,EAAoB,oBAAoB,CAC7E,CACO,SAASC,GAAqBlC,EAAM,CACzC,OAAOQ,GAAkBR,EAAM,IAAImC,EAA0B,GAAG,CAClE,CACO,SAASC,GAAepC,EAAM,CAEnC,OADYqC,GAAuBrC,CAAI,EAC5B,CAAC,GAAK,IACnB,CACO,SAASqC,GAAuBrC,EAAM,CAC3C,IAAMK,EAAaL,EAAK,cAAc,YAAY,EAClD,GAAIK,aAAsB,YAAa,CACrC,IAAMiC,EAAW,MAAM,KAAKjC,EAAW,iBAAiB,IAAIkC,CAAoB,GAAG,CAAC,EAC9EtB,EAAUqB,EAAS,OAAOpB,GAAMA,EAAG,eAAe,EAAE,OAAS,CAAC,EACpE,GAAID,EAAQ,OAAS,EACnB,OAAOA,EAET,GAAIqB,EAAS,OAAS,EACpB,OAAOA,CAEX,CACA,IAAME,EAAU,MAAM,KAAKxC,EAAK,iBAAiB,IAAIuC,CAAoB,GAAG,CAAC,EAC7E,GAAIC,EAAQ,OAAS,EACnB,OAAOA,EAET,IAAMC,EAASjC,GAAkBR,EAAM,IAAIuC,CAAoB,GAAG,EAClE,OAAOE,EAAS,CAACA,CAAM,EAAI,CAAC,CAC9B,CACO,SAASC,GAAqBC,EAAaC,EAAYC,EAAM,CAC7DA,IAGDD,GAAc9D,EAAoB8D,CAAU,IAC9CA,EAAW,KAAOC,GAEfF,GAGDA,IAAgBC,GAGhBlE,EAAkB,IAAIiE,EAAY,SAAS,GAC7CA,EAAY,aAAa,OAAQE,CAAI,EAEzC,CACA,SAASC,GAAUC,EAAO,CACxB,IAAMC,EAAU,QAAQ,IAAID,EAAO,SAAS,EAC5C,OAAO,OAAOC,GAAY,UAAYA,EAAUD,EAAM,aAAa,SAAS,CAC9E,CACO,SAASE,GAAqBvB,EAAS,CAI5C,GAHI5C,EAAoB4C,CAAO,GAG3BA,EAAQ,aAAa9C,CAAgB,EACvC,OAAO8C,EAET,GAAIA,EAAQ,YAAc,aACxB,OAAOA,EAAQ,cAAc,4BAA4B,GAAKA,EAEhE,IAAMwB,EAASxB,EAAQ,cAAc,IAAI9C,CAAgB,GAAG,EAC5D,GAAIsE,EACF,OAAOA,EAET,GAAIxB,EAAQ,YAAc,kBACxB,OAAOyB,GAAiBzB,CAAO,GAAKA,EAEtC,IAAMjB,EAAW5B,GAAsB6C,EAAQ,SAAS,EACxD,OAAOjB,EAAWiB,EAAQ,cAAcjB,CAAQ,GAAKiB,EAAUA,CACjE,CACA,SAASyB,GAAiBzB,EAAS,CACjC,IAAM0B,EAAS1B,EAAQ,iBAAiB,qBAAqB,EAC7D,OAAO,MAAM,KAAK0B,CAAM,EAAE,KAAKN,EAAS,GAAKM,EAAO,CAAC,CACvD,CACO,SAASC,GAAsB3B,EAAS,CAC7C,GAAIA,EAAQ,YAAc,aAAc,CACtC,IAAM4B,EAAS,MAAM,KAAK5B,EAAQ,iBAAiB,4BAA4B,CAAC,EAChF,OAAO4B,EAAO,OAAS,EAAIA,EAAS,CAAC5B,CAAO,CAC9C,CACA,MAAO,CAACuB,GAAqBvB,CAAO,CAAC,CACvC,CCxWA,OAAS,iBAAA6B,OAAqB,4BACvB,IAAMC,GAAcD,GAA6B,OAAO,IAAI,kBAAkB,CAAC,ECDtF,OAAS,iBAAAE,OAAqB,4BACvB,IAAMC,GAAeD,GAA6B,OAAO,IAAI,mBAAmB,CAAC,EHDxF,IAAIE,GAAYC,GAAYC,GAAYC,GAAkBC,GAAaC,GAAmBC,GAAoBC,GAA0BC,GAAwBC,GAA8BC,GAAgBC,GAAsBC,GAAaC,GAAmBC,GAAeC,GAAqBC,GAAqBC,GAA2BC,GAA2BC,GACnX,SAASC,GAAW,EAAG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,IAAI,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAI,OAAO,UAAY,OAAO,IAAI,iBAAiB,EAAGC,EAAI,OAAO,eAAgBC,EAAI,OAAO,OAAQC,GAAI,CAACD,EAAE,IAAI,EAAGA,EAAE,IAAI,CAAC,EAAGE,GAAI,EAAE,OAAQ,SAASC,EAAEC,EAAGhB,EAAGC,EAAG,CAAE,OAAO,SAAUC,EAAGC,EAAG,CAAEH,IAAMG,EAAID,EAAGA,EAAI,GAAI,QAASe,EAAI,EAAGA,EAAID,EAAE,OAAQC,IAAKd,EAAIa,EAAEC,CAAC,EAAE,MAAMf,EAAGD,EAAI,CAACE,CAAC,EAAI,CAAC,CAAC,EAAG,OAAOF,EAAIE,EAAID,CAAG,CAAG,CAAE,SAASgB,EAAEC,EAAGH,EAAGhB,EAAGC,EAAG,CAAE,GAAkB,OAAOkB,GAArB,aAA2BlB,GAAgBkB,IAAX,QAAe,MAAM,IAAI,UAAUH,EAAI,UAAYhB,GAAK,MAAQ,eAAiBC,EAAI,GAAK,gBAAgB,EAAG,OAAOkB,CAAG,CAAE,SAASC,GAASD,EAAGH,EAAGhB,EAAGC,EAAGC,EAAGC,EAAGE,EAAGC,EAAGC,EAAGC,EAAGC,GAAG,CAAE,SAASC,EAAES,EAAG,CAAE,GAAI,CAACV,GAAEU,CAAC,EAAG,MAAM,IAAI,UAAU,qDAAqD,CAAG,CAAE,IAAIP,EAAI,CAAC,EAAE,OAAOI,EAAE,CAAC,CAAC,EAAGF,GAAIE,EAAE,CAAC,EAAGK,EAAI,CAAChB,EAAGiB,EAAUpB,IAAN,EAASqB,GAAUrB,IAAN,EAASsB,GAAUtB,IAAN,EAASuB,EAAUvB,IAAN,EAAS,SAASwB,EAAEV,EAAGhB,EAAGC,GAAG,CAAE,OAAO,SAAUC,EAAGC,GAAG,CAAE,OAAOH,IAAMG,GAAID,EAAGA,EAAIiB,GAAIlB,IAAKA,GAAEC,CAAC,EAAGyB,EAAEX,CAAC,EAAE,KAAKd,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACkB,EAAG,CAAE,IAAIM,EAAI,CAAC,EAAGC,GAAI,CAAC,EAAGC,EAAIN,GAAI,MAAQC,IAAKF,EAAI,MAAQ,QAAS,GAAIf,GAAKC,GAAKc,EAAIK,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOhB,GAAE,IAAI,CAAG,EAAGb,EAAG,KAAK,EAAG,IAAK,SAAUkB,EAAG,CAAEH,EAAE,CAAC,EAAE,KAAMG,CAAC,CAAG,CAAE,EAAIQ,EAAEE,CAAC,EAAIf,GAAGN,GAAKsB,GAAiBH,EAAEE,CAAC,EAAG5B,EAAGwB,EAAI,GAAKI,CAAC,GAAKrB,IAAMmB,EAAI,OAAO,yBAAyBR,EAAGlB,CAAC,GAAI,CAACO,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,GAAE,CAACP,CAAC,EAAEL,CAAC,KAAaG,EAAIF,KAAX,EAAe,MAAM,MAAM,+CAAiDyB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGhB,GAAE,CAACP,CAAC,EAAEL,CAAC,EAAIC,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS6B,EAAIZ,EAAGa,EAAIpB,EAAE,OAAS,EAAGoB,GAAK,EAAGA,GAAKhC,EAAI,EAAI,EAAG,CAAE,IAAIiC,GAAIf,EAAEN,EAAEoB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAIlC,EAAIY,EAAEoB,EAAI,CAAC,EAAI,OAAQG,GAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAElC,CAAC,EAAG,KAAMD,EAAG,SAAU,EAAG,eAAgB,SAAUkB,EAAGH,EAAG,CAAE,GAAIG,EAAE,EAAG,MAAM,IAAI,UAAU,gEAAgE,EAAGD,EAAEF,EAAG,iBAAkB,KAAM,EAAE,EAAGb,EAAE,KAAKa,CAAC,CAAG,EAAE,KAAK,KAAMmB,EAAC,CAAE,EAAG,GAAId,EAAGjB,EAAI6B,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,GAAE,EAAI,EAAGjB,EAAEd,EAAG,mBAAoB,QAAQ,IAAM2B,EAAI3B,WAAYgC,EAAE,OAAS9B,EAAG8B,EAAE,QAAU7B,EAAGH,EAAIgC,EAAE,OAAS,CAAE,IAAK7B,EAAIE,GAAE,KAAK,EAAI,SAAUU,EAAG,CAAE,OAAOlB,KAAKkB,CAAG,CAAE,EAAGK,KAAMpB,EAAE,IAAMG,EAAIkB,EAAI,SAAUN,EAAG,CAAE,OAAOT,EAAES,CAAC,EAAGQ,EAAE,KAAO,EAAID,EAAE,MAAO,EAAGhB,CAAC,EAAI,SAAUS,EAAG,CAAE,OAAOA,EAAElB,CAAC,CAAG,GAAIwB,GAAKF,KAAMnB,EAAE,IAAMG,EAAImB,EAAE,MAAO,EAAGhB,CAAC,EAAI,SAAUS,EAAGH,EAAG,CAAEG,EAAElB,CAAC,EAAIe,CAAG,GAAIe,EAAIE,GAAE,KAAKC,GAAGZ,EAAI,CAAE,IAAKK,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,GAAE,EAAI,EAAGb,GAAK,GAAgB,OAAOS,GAAnB,UAAwBA,GAAI3B,EAAIc,EAAEa,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMvB,IAAKA,EAAIc,EAAEa,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMvB,IAAKA,EAAIc,EAAEa,EAAE,KAAM,eAAe,IAAMH,GAAE,QAAQxB,CAAC,UAAsB2B,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAUb,EAAEa,GAAIvB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAIoB,GAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO7B,EAAI,GAAKG,EAAE,KAAKU,EAAEa,GAAGtB,EAAG,CAAC,EAAGS,EAAEZ,EAAGG,EAAG,CAAC,CAAC,EAAGE,GAAKa,IAAMd,EAAIe,EAAIjB,EAAE,OAAO,GAAI,EAAGqB,EAAE,MAAOpB,CAAC,EAAGoB,EAAE,MAAOpB,CAAC,CAAC,EAAID,EAAE,KAAKoB,EAAIE,EAAEE,CAAC,EAAIX,EAAE,KAAK,KAAKS,EAAEE,CAAC,CAAC,CAAC,EAAIlB,EAAEQ,EAAGlB,EAAG0B,CAAC,GAAII,CAAG,CAAE,SAASV,GAAEF,EAAG,CAAE,OAAOR,EAAEQ,EAAGT,EAAG,CAAE,aAAc,GAAI,WAAY,GAAI,MAAO,CAAE,CAAC,CAAG,CAAE,OAAkBP,IAAX,SAAiB,EAAIA,EAAEO,CAAC,GAAI,EAAIE,EAAU,GAAI,IAAQ,EAAGL,EAAI,CAAC,EAAGC,EAAI,SAAUW,EAAG,CAAEA,GAAKZ,EAAE,KAAKQ,EAAEI,CAAC,CAAC,CAAG,EAAGV,EAAI,SAAUO,EAAGf,EAAG,CAAE,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAAK,CAAE,IAAIc,EAAIjB,EAAEG,CAAC,EAAGC,EAAIa,EAAE,CAAC,EAAGT,EAAI,EAAIJ,EAAG,IAAK,EAAIA,IAAMY,GAAK,CAACR,GAAKP,EAAG,CAAE,IAAIQ,EAAIQ,EAAE,CAAC,EAAGP,EAAI,CAAC,CAACO,EAAE,CAAC,EAAGN,EAAI,GAAKP,EAAGgB,GAASJ,EAAI,EAAI,EAAE,UAAWC,EAAGN,EAAGD,EAAI,IAAMD,EAAI4B,GAAe5B,CAAC,EAAGD,EAAGA,EAAI,EAAI,CAAC,EAAIQ,EAAIV,EAAIA,GAAK,CAAC,EAAID,EAAIA,GAAK,CAAC,EAAGE,EAAG,CAAC,CAACS,EAAGN,EAAGT,EAAGe,GAAKN,EAAI,SAAUM,EAAG,CAAE,OAAOsB,GAAYtB,CAAC,IAAM,CAAG,EAAId,CAAC,CAAG,CAAE,CAAE,EAAGO,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGD,EAAEH,CAAC,EAAGG,EAAEF,CAAC,EAAGF,EAAIG,EAAGO,IAAKO,GAAE,CAAC,EAAG,CAAE,EAAGjB,EAAG,IAAI,GAAI,CAAE,IAAIJ,EAAI,CAAC,EAAG,OAAOc,IAAK,CAACO,GAAE,EAAID,GAAS,EAAG,CAAC,CAAC,EAAGnB,EAAG,EAAE,KAAM,EAAGD,CAAC,CAAC,EAAGe,EAAEf,EAAG,CAAC,CAAC,CAAG,CAAE,CAAG,CACn/G,SAASqC,GAAerB,EAAG,CAAE,IAAIb,EAAIoC,GAAavB,EAAG,QAAQ,EAAG,OAAmB,OAAOb,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASoC,GAAavB,EAAGf,EAAG,CAAE,GAAgB,OAAOe,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIG,EAAIH,EAAE,OAAO,WAAW,EAAG,GAAeG,IAAX,OAAc,CAAE,IAAI,EAAIA,EAAE,KAAKH,EAAGf,GAAK,SAAS,EAAG,GAAgB,OAAO,GAAnB,SAAsB,OAAO,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBA,IAAb,SAAiB,OAAS,QAAQe,CAAC,CAAG,CACvT,SAASc,GAAiB,EAAG,EAAG9B,EAAG,CAAc,OAAO,GAAnB,WAAyB,GAAK,EAAI,EAAE,aAAe,IAAM,EAAI,IAAM,IAAK,GAAI,CAAE,OAAO,eAAe,EAAG,OAAQ,CAAE,aAAc,GAAI,MAAOA,EAAIA,EAAI,IAAM,EAAI,CAAE,CAAC,CAAG,MAAY,CAAC,CAAE,OAAO,CAAG,CAChO,SAASsC,GAAY,EAAG,CAAE,GAAI,OAAO,CAAC,IAAM,EAAG,MAAM,UAAU,qDAAgE,IAAT,KAAa,OAAO,EAAI,OAAO,EAAG,OAAO,CAAG,CAMlK,SAASE,GAAcC,EAAO,CAC5B,GAAI,CAACA,EACH,OAEF,GAAM,CACJ,SAAUC,EACV,GAAGC,CACL,EAAIF,EACJ,OAAOE,CACT,CACA,IAAIC,GACEC,GAAN,cAAuBC,EAAe,CACpC,MAAO,EACJ,CACC,EAAG,CAACjE,GAAYC,GAAkBC,GAAaC,GAAmBC,GAAoBC,GAA0BC,GAAwBC,GAA8BC,GAAgBC,GAAsBC,GAAaC,GAAmBC,GAAeC,GAAqBC,GAAqBC,GAA2BC,GAA2BC,GAAiCnB,EAAU,EACtY,EAAG,CAACiE,GAAWhE,EAAU,CAC3B,EAAImB,GAAW,KAAM,CAACgD,GAAc,WAAW,CAAC,EAAG,CAAC,CAACC,EAAK,CACxD,KAAM,OACN,QAAS,GACT,aAAc,EAChB,CAAC,EAAG,EAAG,MAAM,EAAG,CAACA,EAAK,CACpB,KAAM,MACR,CAAC,EAAG,EAAG,OAAO,EAAG,CAACA,EAAK,CACrB,KAAM,MACR,CAAC,EAAG,EAAG,cAAc,EAAG,CAACA,EAAK,CAC5B,KAAM,OACN,UAAWC,EACb,CAAC,EAAG,EAAG,kBAAkB,EAAG,CAACD,EAAK,CAChC,KAAM,QACN,QAAS,GACT,aAAc,EAChB,CAAC,EAAG,EAAG,UAAU,EAAG,CAACA,EAAK,CACxB,KAAM,OACN,aAAc,EAChB,CAAC,EAAG,EAAG,OAAO,EAAG,CAACA,EAAK,CACrB,KAAM,QACN,QAAS,GACT,aAAc,EAChB,CAAC,EAAG,EAAG,SAAS,EAAG,CAACE,GAAe,CACjC,QAASC,GACT,aAAc,CACZ,KAAM,GACN,UAAW,GACX,cAAe,GACf,QAAS,GACT,MAAO,OACP,QAAS,GACT,SAAU,EACZ,EACA,QAAS,OACT,UAAWC,IAAU,CACnB,GAAGA,EACH,MAAOZ,GAAcY,EAAM,KAAK,CAClC,EACF,CAAC,EAAG,EAAG,eAAe,EAAG,CAACC,GAAeC,EAAW,EAAG,EAAG,qBAAqB,EAAG,CAACC,GAAgB,CACjG,QAASD,GACT,cAAe,EACjB,CAAC,EAAG,EAAG,sBAAsB,EAAG,CAACE,GAAU,CAAC,MAAM,CAAC,EAAG,EAAG,eAAe,EAAG,CAACA,GAAU,CAAC,QAAS,eAAgB,kBAAkB,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,GAAU,CAAC,WAAY,QAAS,SAAS,CAAC,EAAG,EAAG,uBAAuB,EAAG,CAACC,EAAQ,CAC9O,SAAU,yNACV,KAAM,YACR,CAAC,EAAG,EAAG,iBAAiB,EAAG,CAACA,EAAQ,CAClC,SAAU,qBACV,KAAM,QACN,QAAS,CACP,QAAS,EACX,CACF,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,EAAQ,CACjC,SAAU,qBACV,KAAM,SACN,QAAS,CACP,QAAS,EACX,CACF,CAAC,EAAG,EAAG,uBAAuB,EAAG,CAACA,EAAQ,CACxC,SAAU,2CACV,KAAM,UACR,CAAC,EAAG,EAAG,mBAAmB,CAAC,EAAG,EAAG,OAAQX,EAAc,EACzD,CACA,MAAQnE,GAAW,IAAI,EAAGE,GAAW,IAAI,GACzC,OAASC,GAAiB,IAAI,EAAGC,GAAY,IAAI,GACjD,cAAgBC,GAAkB,IAAI,EAAGC,GAAmB,IAAI,GAChE,kBAAoBC,GAAyB,IAAI,EAAGC,GAAuB,IAAI,GAC/E,UAAYC,GAA6B,IAAI,EAAGC,GAAe,IAAI,GACnE,OAASC,GAAqB,IAAI,EAAGC,GAAY,IAAI,GACrD,SAAWC,GAAkB,IAAI,EAAGC,GAAc,IAAI,GACtD,eAAiBC,GAAoB,IAAI,EAAGC,GAAoB,IAAI,GACpE,qBAAuBC,GAA0B,IAAI,EAAGC,GAA0B,IAAI,GACtF,KAAOC,GAAgC,IAAI,EAAG,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAG,CAAC,GAEnF,kBAAmB,CACjB,OAAQ,KAAK,MAAQ,KAAK,aAAa,MAAM,GAAK,IAAI,KAAK,CAC7D,CACA,WACA,uBACA,mBAAqB,GAMrB,aAAc,CACZ,MAAM,EACN4D,GAA+B,KAAM,IAAM,KAAK,cAAc,WAAW,CACvE,MAAO,KAAK,eAAe,CAC7B,CAAC,CAAC,CACJ,CACA,aAAc,CACZ,KAAK,cAAc,CACrB,CACA,sBAAuB,CACrB,KAAK,aAAa,EAClB,KAAK,WAAa,OAClB,KAAK,yBAAyB,EAC9B,KAAK,uBAAyB,OAC9B,KAAK,mBAAqB,GAC1B,MAAM,qBAAqB,CAC7B,CACA,IAAI,oBAAqB,CACvB,OAAO,KAAK,qBAAqB,WAAW,CAC9C,CACA,cAAcC,EAAK,CACjB,GAAKA,EAGL,GAAI,CACF,OAAO,KAAK,MAAMA,CAAG,CACvB,MAAQ,CACN,MACF,CACF,CAOA,gBAAiB,CACf,IAAMlB,EAAQ,KAAK,MACnB,OAAIA,GAAS,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,GAAK,OAAO,KAAKA,CAAK,EAAE,OAAS,EACtFA,EAEF,KAAK,cAAc,WAAW,GAAG,KAC1C,CACA,kBAAmB,CACjB,OAAI,KAAK,eAAiB,OACjB,KAAK,aAEP,KAAK,cAAc,KAAK,kBAAoB,KAAK,aAAaQ,EAA4B,CAAC,CACpG,CACA,YAAa,CACX,MAAO,EAAQ,KAAK,eAAe,GAAG,QACxC,CACA,oBAAoBW,EAAS,CAC3B,GAAI,KAAK,MACP,OAAO,KAAK,MAEd,IAAMC,EAAY,KAAK,iBAAiB,EACxC,OAAKA,GAGOD,GAAW,KAAK,qBAChB,OAAOC,CAAS,GAAG,MAH7B,MAIJ,CACA,eAAeD,EAAS,CAItB,GAHI,KAAK,SAGL,KAAK,MACP,MAAO,GAET,IAAMC,EAAY,KAAK,iBAAiB,EACxC,OAAKA,GAGOD,GAAW,KAAK,qBAChB,OAAOC,CAAS,GAAG,SAAW,GAHjC,EAIX,CACA,eAAgB,CACd,IAAMA,EAAY,KAAK,iBAAiB,EAClCC,EAAM,KAAK,mBACXC,EAAUD,GAAK,QACrB,GAAI,CAACA,GAAK,OAAS,CAACC,GAAW,CAACF,EAAW,CACzC,KAAK,UAAU,EACf,MACF,CACA,GAAI,CAAC,KAAK,mBAAoB,CAC5B,KAAK,mBAAqB,GAC1B,KAAK,yBAAyB,EAC9B,KAAK,uBAAyBE,EAAQ,sBAAsBC,GAAQ,KAAK,UAAUA,CAAI,CAAC,EACxF,KAAK,WAAaD,EAAQ,SAAS,CACjC,KAAMF,EACN,MAAO,KAAK,eAAe,EAC3B,SAAU,IAAM,KAAK,eAAe,EACpC,aAAc,KAAK,iBAAiB,EACpC,SAAU,IAAM,CACd,IAAMI,EAAUC,EAAiB,IAAI,EACrC,OAAOD,EAAUE,GAAiBF,CAAO,EAAI,MAC/C,EACA,SAAUb,GAAS,CACjB,IAAMa,EAAUC,EAAiB,IAAI,EACjCD,GACFG,GAAkBH,EAASb,CAAK,CAEpC,CACF,CAAC,EACD,MACF,CACAW,EAAQ,mBAAmBF,EAAW,CACpC,MAAO,KAAK,eAAe,EAC3B,aAAc,KAAK,iBAAiB,CACtC,CAAC,EACD,KAAK,UAAU,CACjB,CACA,qBAAqBC,EAAK,CACxB,GAAI,CAAC,KAAK,mBAAoB,CACxBA,EAAI,MACN,KAAK,cAAc,EAEnB,KAAK,UAAUA,CAAG,EAEpB,MACF,CACA,KAAK,UAAUA,CAAG,CACpB,CACA,eAAgB,CACd,KAAK,aAAa,EAClB,KAAK,WAAa,OAClB,KAAK,yBAAyB,EAC9B,KAAK,uBAAyB,OAC9B,KAAK,mBAAqB,GAC1B,KAAK,cAAc,CACrB,CACA,gBAAiB,CACf,KAAK,cAAc,CACrB,CACA,uBAAwB,CACtB,KAAK,UAAU,CACjB,CACA,iBAAkB,CAChB,IAAMD,EAAY,KAAK,iBAAiB,EACpCA,GACF,KAAK,oBAAoB,QAAQ,kBAAkBA,CAAS,CAEhE,CACA,gBAAiB,CACf,IAAMA,EAAY,KAAK,iBAAiB,EACpCA,GACF,KAAK,oBAAoB,QAAQ,kBAAkBA,CAAS,CAEhE,CACA,uBAAwB,CACtB,IAAMA,EAAY,KAAK,iBAAiB,EACpCA,GACF,KAAK,oBAAoB,QAAQ,kBAAkBA,CAAS,CAEhE,CACA,mBAAoB,CAClB,IAAMA,EAAY,KAAK,iBAAiB,EACpCA,GACF,KAAK,oBAAoB,QAAQ,gBAAgBA,CAAS,CAE9D,CACA,UAAUD,EAAS,CACjB,IAAMS,EAAcH,EAAiB,IAAI,EACnCI,EAAcD,EAAcE,GAAsBF,CAAW,EAAI,CAAC,EAClEG,EAAaF,EAAY,CAAC,GAAK,KAC/BG,EAAYD,GAAY,IAAM,qBAAqB,KAAK,GAAG,GAC3DE,EAAgB,kBAAkB,KAAK,GAAG,GAC1CC,EAAU,mBAAmB,KAAK,GAAG,GACrCC,EAAe,KAAK,oBAAoBhB,CAAO,EAC/CiB,EAAU,KAAK,eAAejB,CAAO,EACrCkB,EAAW,KAAK,WAAW,EAC3BjB,EAAY,KAAK,iBAAiB,EACxCkB,GAAqBV,EAAaG,EAAYX,CAAS,EACvD,IAAMmB,EAAc,KAAK,iBAAiBN,EAAeC,EAASC,CAAY,EAC9E,KAAK,gBAAgBN,EAAaG,EAAWO,EAAaH,EAASC,CAAQ,EAC3E,IAAMG,EAAQC,GAAe,IAAI,EAC7BD,GAAST,IACXS,EAAM,QAAUT,EAAW,IAE7B,KAAK,sBAAsBI,CAAY,EACvC,IAAMO,EAAmB,CACvB,KAAMtB,EACN,UAAWW,GAAY,IAAMC,EAC7B,cAAAC,EACA,QAAAC,EACA,MAAOC,EACP,QAAAC,EACA,SAAAC,CACF,EACA,KAAK,oBAAoBK,CAAgB,CAC3C,CACA,iBAAiBT,EAAeC,EAASC,EAAc,CACrD,IAAMI,EAAc,CAAC,EACfI,EAAcC,GAAqB,IAAI,EACzCD,IACFA,EAAY,GAAKV,EACjBM,EAAY,KAAKN,CAAa,GAEhC,IAAMY,EAAQC,GAAe,IAAI,EACjC,OAAID,IAAOA,EAAM,GAAKX,GAClBW,GAASV,GAAcI,EAAY,KAAKL,CAAO,EAC5CK,CACT,CACA,gBAAgBQ,EAASf,EAAWO,EAAaH,EAASC,EAAU,CAClE,OAAW,CAACW,EAAOC,CAAM,IAAKF,EAAQ,QAAQ,EACvCE,EAAO,KAAIA,EAAO,GAAKD,IAAU,EAAIhB,EAAY,GAAGA,CAAS,IAAIgB,CAAK,IAC3EC,EAAO,aAAaC,GAAwB,EAAE,EAC9CD,EAAO,aAAa,eAAgB,OAAOb,CAAO,CAAC,EACnDa,EAAO,gBAAgB,gBAAiBZ,CAAQ,EAC5CA,GAAUY,EAAO,aAAa,gBAAiB,MAAM,EACrDV,EAAY,OAAQU,EAAO,aAAa,mBAAoBV,EAAY,KAAK,GAAG,CAAC,EAAOU,EAAO,gBAAgB,kBAAkB,EACjI,KAAK,UAAU,KAAK,kBAAkBA,CAAM,CAEpD,CACA,kBAAkBA,EAAQ,CACxBA,EAAO,aAAa,gBAAiB,MAAM,EACvCE,EAAoBF,CAAM,IAAGA,EAAO,SAAW,GACrD,CACA,sBAAsBd,EAAc,CAClC,QAAWU,KAASO,GAAuB,IAAI,EAC7CP,EAAM,YAAcV,GAAgB,GACpCU,EAAM,OAAS,CAACV,EACZA,GAAcU,EAAM,gBAAgB,QAAQ,CAEpD,CACA,oBAAoBQ,EAAM,CACxB,IAAMC,EAAW,KAAK,cAAc,WAAW,EAC3CC,GAAmBD,EAAUD,CAAI,GACrC,KAAK,cAAc,WAAWA,CAAI,CACpC,CACA,MAAO,CACLlH,GAAW,CACb,CACF,EAEA,SAASqH,GAAmBC,EAAUC,EAAM,CAC1C,OAAOD,EAAS,OAASC,EAAK,MAAQD,EAAS,YAAcC,EAAK,WAAaD,EAAS,gBAAkBC,EAAK,eAAiBD,EAAS,UAAYC,EAAK,SAAWD,EAAS,QAAUC,EAAK,OAASD,EAAS,UAAYC,EAAK,SAAWD,EAAS,WAAaC,EAAK,QACxQ,CD1VO,SAASC,GAAS,CACvB,SAAAC,EACA,MAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,GAAGC,CACL,EAAG,CACD,OAAsBC,GAAI,YAAa,CACrC,GAAGD,EACH,aAAcH,EACd,oBAAqBC,EACrB,KAAM,CACJ,aAAcC,IAAqBD,IAAiB,OAAS,KAAK,UAAUA,CAAY,EAAI,OAC9F,EACA,SAAyBG,GAAI,MAAO,CAClC,MAAO,YACP,SAAAL,CACF,CAAC,CACH,CAAC,CACH,CKrBA,OAAS,OAAAM,OAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CDCO,SAASC,GAAoB,CAClC,SAAAC,EACA,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,GAAI,IAAK,CAC7B,GAAGD,EAED,CAACE,EAA0B,EAAG,GAEhC,MAAOC,EAAG,yBAA0BJ,CAAS,EAC7C,SAAAD,CACF,CAAC,CACH,CEhBA,OAAS,OAAAM,OAAW,4BAGb,SAASC,GAAc,CAC5B,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,GAAI,IAAK,CAC7B,GAAGD,EAED,CAACE,CAAoB,EAAG,GAE1B,MAAOC,EAAG,mBAAoBJ,CAAS,EACvC,KAAM,QACN,OAAQ,EACV,CAAC,CACH",
|
|
6
|
-
"names": ["jsx", "RadiantElement", "customElement", "onEvent", "onUpdated", "prop", "registerSsrPreparationCallback", "consumeContext", "onContextUpdate", "provideContext", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FIELD_DEFAULT_VALUE_ATTR", "
|
|
3
|
+
"sources": ["../../../../src/components/ui/field/field.tsx", "../../../../src/components/ui/field/field.script.tsx", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/form/control-protocol.ts", "../../../../src/components/ui/form/form-context.ts", "../../../../src/components/ui/field/field-context.ts", "../../../../src/components/ui/shared/field-label.ts", "../../../../src/lib/unique-id.ts", "../../../../src/components/ui/field/field-description.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/field/field-error.tsx"],
|
|
4
|
+
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport \"./field.script\";\nexport function RuiField({\n children,\n rules,\n defaultValue,\n defaultValueData,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-field\", {\n ...props,\n \"prop:rules\": rules,\n \"prop:defaultValue\": defaultValue,\n data: {\n defaultValue: defaultValueData ?? (defaultValue !== void 0 ? JSON.stringify(defaultValue) : void 0)\n },\n children: /* @__PURE__ */jsx(\"div\", {\n class: \"rui-field\",\n \"data-ref\": \"field\",\n children\n })\n });\n}", "let _initProto, _initClass, _init_name, _init_extra_name, _init_rules, _init_extra_rules, _init_defaultValue, _init_extra_defaultValue, _init_defaultValueData, _init_extra_defaultValueData, _init_disabled, _init_extra_disabled, _init_error, _init_extra_error, _init_invalid, _init_extra_invalid, _init_fieldProvider, _init_extra_fieldProvider, _init_formContextProvider, _init_extra_formContextProvider;\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, onEvent, onUpdated, prop, registerSsrPreparationCallback } from \"@ecopages/radiant\";\nimport { consumeContext, onContextUpdate, provideContext } from \"@ecopages/radiant/context\";\nimport { findFieldControl, findFieldDescription, findFieldError, findFieldErrorElements, findFieldLabel, getAriaControlTargets, isNativeTextControl, isPrimaryFieldControlEvent, isFormAssociatedHost, readControlValue, RUI_FIELD_DEFAULT_VALUE_ATTR, RUI_FIELD_MANAGED_ATTR, writeControlValue, wireFieldControlName } from \"../form/control-protocol\";\nimport { formContext } from \"../form/form-context\";\nimport { fieldContext } from \"./field-context\";\nimport { bindVisibleLabel } from \"../shared/field-label\";\nimport { uniqueId } from \"@/lib/unique-id\";\nfunction stripValidate(rules) {\n if (!rules) {\n return void 0;\n }\n const {\n validate: _validate,\n ...serializable\n } = rules;\n return serializable;\n}\nlet _RuiField;\nclass RuiField extends RadiantElement {\n static {\n ({\n e: [_init_name, _init_extra_name, _init_rules, _init_extra_rules, _init_defaultValue, _init_extra_defaultValue, _init_defaultValueData, _init_extra_defaultValueData, _init_disabled, _init_extra_disabled, _init_error, _init_extra_error, _init_invalid, _init_extra_invalid, _init_fieldProvider, _init_extra_fieldProvider, _init_formContextProvider, _init_extra_formContextProvider, _initProto],\n c: [_RuiField, _initClass]\n } = _applyDecs(this, [customElement(\"rui-field\")], [[prop({\n type: String,\n reflect: true,\n defaultValue: \"\"\n }), 0, \"name\"], [prop({\n type: Object\n }), 0, \"rules\"], [prop({\n type: Object\n }), 0, \"defaultValue\"], [prop({\n type: String,\n attribute: RUI_FIELD_DEFAULT_VALUE_ATTR\n }), 0, \"defaultValueData\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"error\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"invalid\"], [provideContext({\n context: fieldContext,\n initialValue: {\n name: \"\",\n controlId: \"\",\n descriptionId: \"\",\n errorId: \"\",\n error: void 0,\n invalid: false,\n required: false\n },\n hydrate: Object,\n serialize: value => ({\n ...value,\n rules: stripValidate(value.rules)\n })\n }), 0, \"fieldProvider\"], [consumeContext(formContext), 0, \"formContextProvider\"], [onContextUpdate({\n context: formContext,\n requestUpdate: false\n }), 2, \"onFormContextChanged\"], [onUpdated([\"name\"]), 2, \"onNameUpdated\"], [onUpdated([\"rules\", \"defaultValue\", \"defaultValueData\"]), 2, \"onRulesUpdated\"], [onUpdated([\"disabled\", \"error\", \"invalid\"]), 2, \"onPresentationUpdated\"], [onEvent({\n selector: \"*\",\n type: \"rui-change\"\n }), 2, \"onControlChange\"], [onEvent({\n selector: \"[data-rui-control]\",\n type: \"input\",\n options: {\n capture: true\n }\n }), 2, \"onControlInput\"], [onEvent({\n selector: \"[data-rui-control]\",\n type: \"change\",\n options: {\n capture: true\n }\n }), 2, \"onControlNativeChange\"], [onEvent({\n selector: \"[data-rui-control], rui-knob, rui-slider\",\n type: \"focusout\"\n }), 2, \"onControlFocusOut\"]], 0, void 0, RadiantElement));\n }\n name = (_initProto(this), _init_name(this));\n rules = (_init_extra_name(this), _init_rules(this));\n defaultValue = (_init_extra_rules(this), _init_defaultValue(this));\n defaultValueData = (_init_extra_defaultValue(this), _init_defaultValueData(this));\n disabled = (_init_extra_defaultValueData(this), _init_disabled(this));\n error = (_init_extra_disabled(this), _init_error(this));\n invalid = (_init_extra_error(this), _init_invalid(this));\n fieldProvider = (_init_extra_invalid(this), _init_fieldProvider(this));\n formContextProvider = (_init_extra_fieldProvider(this), _init_formContextProvider(this));\n uid = (_init_extra_formContextProvider(this), uniqueId(\"rui-field\"));\n /** Resolved field name from property or `name` attribute (Storybook can hydrate props after connect). */\n resolveFieldName() {\n return (this.name || this.getAttribute(\"name\") || \"\").trim();\n }\n unregister;\n unregisterPresentation;\n registeredWithForm = false;\n /**\n * Last form write that landed before `findFieldControl` could see a host.\n * JSX can add the control later without reconnecting this field.\n */\n pendingControlWrite;\n controlObserver;\n /**\n * @remarks Registers SSR-prep rules on `fieldProvider` so hydrated fields recover them after a\n * real SSR round-trip (`prop:rules` does not survive that boundary; `connectedCallback` never\n * runs during SSR).\n */\n constructor() {\n super();\n registerSsrPreparationCallback(this, () => this.fieldProvider.setContext({\n rules: this.readFieldRules()\n }));\n }\n onConnected() {\n this.connectToForm();\n }\n disconnectedCallback() {\n this.unregister?.();\n this.unregister = void 0;\n this.unregisterPresentation?.();\n this.unregisterPresentation = void 0;\n this.registeredWithForm = false;\n this.clearPendingControlWrite();\n super.disconnectedCallback();\n }\n get currentFormContext() {\n return this.formContextProvider?.getContext();\n }\n parseJsonAttr(raw) {\n if (!raw) {\n return void 0;\n }\n try {\n return JSON.parse(raw);\n } catch {\n return void 0;\n }\n }\n /**\n * Prefers the live `rules` prop \u2014 it's the only channel that can carry a `validate`\n * function. Falls back to `fieldProvider`'s own context, which only ever holds the\n * JSON-safe subset (see its `serialize` option) \u2014 this is what recovers rules after a\n * real SSR hydrate, since `prop:rules` itself doesn't survive that boundary.\n */\n readFieldRules() {\n const rules = this.rules;\n if (rules && typeof rules === \"object\" && !Array.isArray(rules) && Object.keys(rules).length > 0) {\n return rules;\n }\n return this.fieldProvider.getContext()?.rules;\n }\n readDefaultValue() {\n if (this.defaultValue !== void 0) {\n return this.defaultValue;\n }\n return this.parseJsonAttr(this.defaultValueData ?? this.getAttribute(RUI_FIELD_DEFAULT_VALUE_ATTR));\n }\n isRequired() {\n return Boolean(this.readFieldRules()?.required);\n }\n resolveErrorMessage(formCtx) {\n if (this.error) {\n return this.error;\n }\n const fieldName = this.resolveFieldName();\n if (!fieldName) {\n return void 0;\n }\n const ctx = formCtx ?? this.currentFormContext;\n return ctx?.fields[fieldName]?.error;\n }\n resolveInvalid(formCtx) {\n if (this.invalid) {\n return true;\n }\n if (this.error) {\n return true;\n }\n const fieldName = this.resolveFieldName();\n if (!fieldName) {\n return false;\n }\n const ctx = formCtx ?? this.currentFormContext;\n return ctx?.fields[fieldName]?.invalid ?? false;\n }\n connectToForm() {\n const fieldName = this.resolveFieldName();\n const ctx = this.currentFormContext;\n const actions = ctx?.actions;\n if (!ctx?.ready || !actions || !fieldName) {\n this.syncField();\n return;\n }\n if (!this.registeredWithForm) {\n this.registeredWithForm = true;\n this.unregisterPresentation?.();\n this.unregisterPresentation = actions.subscribePresentation(ctx2 => this.syncField(ctx2));\n this.unregister = actions.register({\n name: fieldName,\n rules: this.readFieldRules(),\n getRules: () => this.readFieldRules(),\n defaultValue: this.readDefaultValue(),\n getValue: () => {\n const control = findFieldControl(this);\n return control ? readControlValue(control) : void 0;\n },\n setValue: value => {\n const control = findFieldControl(this);\n if (control) {\n writeControlValue(control, value);\n this.clearPendingControlWrite();\n return;\n }\n this.pendingControlWrite = {\n value\n };\n this.observeControlAppearance();\n }\n });\n this.syncField();\n return;\n }\n actions.updateFieldOptions(fieldName, {\n rules: this.readFieldRules(),\n defaultValue: this.readDefaultValue()\n });\n this.syncField();\n }\n onFormContextChanged(ctx) {\n if (!this.registeredWithForm) {\n if (ctx.ready) {\n this.connectToForm();\n } else {\n this.syncField(ctx);\n }\n return;\n }\n this.syncField(ctx);\n }\n onNameUpdated() {\n this.unregister?.();\n this.unregister = void 0;\n this.unregisterPresentation?.();\n this.unregisterPresentation = void 0;\n this.registeredWithForm = false;\n this.clearPendingControlWrite();\n this.connectToForm();\n }\n onRulesUpdated() {\n this.connectToForm();\n }\n onPresentationUpdated() {\n this.syncField();\n }\n onControlChange(event) {\n if (!isPrimaryFieldControlEvent(this, event)) {\n return;\n }\n this.syncControlToForm();\n }\n onControlInput() {\n this.syncControlToForm();\n }\n onControlNativeChange() {\n this.syncControlToForm();\n }\n onControlFocusOut() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldBlur(fieldName);\n }\n }\n syncField(formCtx) {\n const controlHost = findFieldControl(this);\n if (controlHost && this.pendingControlWrite) {\n writeControlValue(controlHost, this.pendingControlWrite.value);\n this.clearPendingControlWrite();\n }\n const ariaTargets = controlHost ? getAriaControlTargets(controlHost) : [];\n const ariaTarget = ariaTargets[0] ?? null;\n const controlId = ariaTarget?.id || `${this.uid}-control`;\n const descriptionId = `${this.uid}-desc`;\n const errorId = `${this.uid}-error`;\n const errorMessage = this.resolveErrorMessage(formCtx);\n const invalid = this.resolveInvalid(formCtx);\n const required = this.isRequired();\n const fieldName = this.resolveFieldName();\n wireFieldControlName(controlHost, ariaTarget, fieldName);\n const describedBy = this.syncDescriptions(descriptionId, errorId, errorMessage);\n this.syncAriaTargets(controlHost, ariaTargets, controlId, describedBy, invalid, required);\n this.syncLabel(ariaTargets, ariaTarget);\n this.syncErrorPresentation(errorMessage);\n const nextFieldContext = {\n name: fieldName,\n controlId: ariaTarget?.id ?? controlId,\n descriptionId,\n errorId,\n error: errorMessage,\n invalid,\n required\n };\n this.publishFieldContext(nextFieldContext);\n }\n syncControlToForm() {\n const fieldName = this.resolveFieldName();\n if (fieldName) {\n this.currentFormContext?.actions.handleFieldChange(fieldName);\n }\n }\n /**\n * @remarks JSX can insert the control after `register()` without reconnecting\n * the field. `syncField` applies `pendingControlWrite` once the host exists.\n */\n observeControlAppearance() {\n if (this.controlObserver) {\n return;\n }\n this.controlObserver = new MutationObserver(() => this.syncField());\n this.controlObserver.observe(this, {\n childList: true,\n subtree: true\n });\n }\n clearPendingControlWrite() {\n this.pendingControlWrite = void 0;\n this.controlObserver?.disconnect();\n this.controlObserver = void 0;\n }\n syncDescriptions(descriptionId, errorId, errorMessage) {\n const describedBy = [];\n const description = findFieldDescription(this);\n if (description) {\n description.id = descriptionId;\n describedBy.push(descriptionId);\n }\n const error = findFieldError(this);\n if (error) error.id = errorId;\n if (error && errorMessage) describedBy.push(errorId);\n return describedBy;\n }\n syncLabel(targets, ariaTarget) {\n const label = findFieldLabel(this);\n if (!label || !ariaTarget) {\n return;\n }\n label.htmlFor = ariaTarget.id;\n if (isNativeTextControl(ariaTarget)) {\n return;\n }\n const labelId = label.id || `${this.uid}-label`;\n for (const target of targets) {\n bindVisibleLabel(label, target, {\n controlId: target.id,\n labelId\n });\n }\n }\n syncAriaTargets(controlHost, targets, controlId, describedBy, invalid, required) {\n for (const [index, target] of targets.entries()) {\n if (!target.id) target.id = index === 0 ? controlId : `${controlId}-${index}`;\n target.setAttribute(RUI_FIELD_MANAGED_ATTR, \"\");\n target.setAttribute(\"aria-invalid\", String(invalid));\n target.toggleAttribute(\"aria-required\", required);\n if (required) target.setAttribute(\"aria-required\", \"true\");\n if (describedBy.length) target.setAttribute(\"aria-describedby\", describedBy.join(\" \"));else target.removeAttribute(\"aria-describedby\");\n if (this.disabled) this.disableAriaTarget(target);\n }\n if (this.disabled && controlHost && isFormAssociatedHost(controlHost)) {\n Reflect.set(controlHost, \"disabled\", true);\n }\n }\n disableAriaTarget(target) {\n target.setAttribute(\"aria-disabled\", \"true\");\n if (isNativeTextControl(target)) target.disabled = true;\n }\n syncErrorPresentation(errorMessage) {\n for (const error of findFieldErrorElements(this)) {\n error.textContent = errorMessage ?? \"\";\n error.hidden = !errorMessage;\n if (errorMessage) error.removeAttribute(\"hidden\");\n }\n }\n publishFieldContext(next) {\n const previous = this.fieldProvider.getContext();\n if (isSameFieldContext(previous, next)) return;\n this.fieldProvider.setContext(next);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiField as RuiField };\nfunction isSameFieldContext(previous, next) {\n return previous.name === next.name && previous.controlId === next.controlId && previous.descriptionId === next.descriptionId && previous.errorId === next.errorId && previous.error === next.error && previous.invalid === next.invalid && previous.required === next.required;\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}", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "import { createContext } from \"@ecopages/radiant/context\";\nexport const fieldContext = createContext(/* @__PURE__ */Symbol.for(\"rui-field-context\"));", "export function findAssociatedLabel(owner) {\n const previous = owner.previousElementSibling;\n if (previous?.tagName.toLowerCase() === \"label\") {\n return previous;\n }\n return owner.parentElement?.querySelector(\"[data-rui-field-label]\") ?? null;\n}\nexport function bindVisibleLabel(label, control, options) {\n if (!label.id) {\n label.id = options.labelId;\n }\n if (!label.htmlFor) {\n label.htmlFor = options.controlId;\n }\n control.setAttribute(\"aria-labelledby\", label.id);\n control.removeAttribute(\"aria-label\");\n}\nexport function syncFieldLabel(owner, control, options) {\n if (!control || control.hasAttribute(\"data-rui-field-managed\")) {\n return;\n }\n const labelElement = findAssociatedLabel(owner);\n if (labelElement) {\n bindVisibleLabel(labelElement, control, options);\n return;\n }\n if (options.label) {\n control.setAttribute(\"aria-label\", options.label);\n control.removeAttribute(\"aria-labelledby\");\n return;\n }\n control.removeAttribute(\"aria-label\");\n control.removeAttribute(\"aria-labelledby\");\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}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_FIELD_DESCRIPTION_ATTR } from \"../form/control-protocol\";\nexport function RuiFieldDescription({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n ...{\n [RUI_FIELD_DESCRIPTION_ATTR]: \"\"\n },\n class: cx(\"rui-field__description\", className),\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_FIELD_ERROR_ATTR } from \"../form/control-protocol\";\nexport function RuiFieldError({\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n ...{\n [RUI_FIELD_ERROR_ATTR]: \"\"\n },\n class: cx(\"rui-field__error\", className),\n role: \"alert\",\n hidden: true\n });\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "RadiantElement", "customElement", "onEvent", "onUpdated", "prop", "registerSsrPreparationCallback", "consumeContext", "onContextUpdate", "provideContext", "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_FIELD_DEFAULT_VALUE_ATTR", "RUI_ARIA_TARGET_ATTR", "RUI_ARIA_TARGETS_ATTR", "FIELD_COLUMN_SELECTOR", "fieldControlSelector", "RUI_CONTROL_ATTR", "hostControlSelector", "CONTROL_VALUE_ADAPTERS", "isEmbeddedListbox", "node", "ARIA_TARGET_SELECTORS", "isNativeTextControl", "isNativeInput", "isNativeTextarea", "isFormAssociatedHost", "host", "stringValueAdapter", "value", "next", "numberValueAdapter", "raw", "booleanValueAdapter", "readHostValue", "transform", "writeHostValue", "stringArrayValueAdapter", "multiValueTransform", "sliderValueAdapter", "numberArrayTransform", "forEachFieldContentNode", "root", "visit", "slotHost", "visited", "safeVisit", "renderRoot", "child", "shadow", "queryFieldContent", "selector", "found", "pickPrimaryFieldControl", "candidates", "eligibleCandidates", "candidate", "ancestor", "collectFieldControls", "listFieldControlsInRenderTree", "el", "findFieldControl", "fromRenderTree", "isPrimaryFieldControlEvent", "root", "event", "control", "findFieldControl", "nestedHost", "hostControlSelector", "readControlValue", "isNativeInput", "host2", "resolveControlHost", "adapter", "CONTROL_VALUE_ADAPTERS", "isNativeTextarea", "host", "writeControlValue", "value", "ce", "RUI_CONTROL_ATTR", "findFieldLabel", "queryFieldContent", "RUI_FIELD_LABEL_ATTR", "findFieldDescription", "RUI_FIELD_DESCRIPTION_ATTR", "findFieldError", "findFieldErrorElements", "renderRoot", "FIELD_COLUMN_SELECTOR", "inRender", "RUI_FIELD_ERROR_ATTR", "fromDom", "single", "wireFieldControlName", "controlHost", "ariaTarget", "name", "isNativeTextControl", "submission", "isFormAssociatedHost", "isChecked", "input", "checked", "resolveDeclaredAriaTarget", "multi", "RUI_ARIA_TARGETS_ATTR", "firstSelector", "RUI_ARIA_TARGET_ATTR", "resolveDeclaredAriaTargets", "selector", "node", "target", "getAriaControlTarget", "declared", "marked", "getSelectedRadio", "ARIA_TARGET_SELECTORS", "radios", "getAriaControlTargets", "thumbs", "createContext", "formContext", "createContext", "fieldContext", "bindVisibleLabel", "label", "control", "options", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "_initProto", "_initClass", "_init_name", "_init_extra_name", "_init_rules", "_init_extra_rules", "_init_defaultValue", "_init_extra_defaultValue", "_init_defaultValueData", "_init_extra_defaultValueData", "_init_disabled", "_init_extra_disabled", "_init_error", "_init_extra_error", "_init_invalid", "_init_extra_invalid", "_init_fieldProvider", "_init_extra_fieldProvider", "_init_formContextProvider", "_init_extra_formContextProvider", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "stripValidate", "rules", "_validate", "serializable", "_RuiField", "RuiField", "RadiantElement", "customElement", "prop", "RUI_FIELD_DEFAULT_VALUE_ATTR", "provideContext", "fieldContext", "value", "consumeContext", "formContext", "onContextUpdate", "onUpdated", "onEvent", "uniqueId", "registerSsrPreparationCallback", "raw", "formCtx", "fieldName", "ctx", "actions", "ctx2", "control", "findFieldControl", "readControlValue", "writeControlValue", "event", "isPrimaryFieldControlEvent", "controlHost", "ariaTargets", "getAriaControlTargets", "ariaTarget", "controlId", "descriptionId", "errorId", "errorMessage", "invalid", "required", "wireFieldControlName", "describedBy", "nextFieldContext", "description", "findFieldDescription", "error", "findFieldError", "targets", "label", "findFieldLabel", "isNativeTextControl", "labelId", "target", "bindVisibleLabel", "index", "RUI_FIELD_MANAGED_ATTR", "isFormAssociatedHost", "findFieldErrorElements", "next", "previous", "isSameFieldContext", "isSameFieldContext", "previous", "next", "RuiField", "children", "rules", "defaultValue", "defaultValueData", "props", "jsx", "jsx", "cx", "parts", "RuiFieldDescription", "children", "className", "props", "jsx", "RUI_FIELD_DESCRIPTION_ATTR", "cx", "jsx", "RuiFieldError", "className", "props", "jsx", "RUI_FIELD_ERROR_ATTR", "cx"]
|
|
7
7
|
}
|
|
@@ -5,13 +5,43 @@ export declare const RUI_FIELD_DESCRIPTION_ATTR = "data-rui-field-description";
|
|
|
5
5
|
export declare const RUI_FIELD_ERROR_ATTR = "data-rui-field-error";
|
|
6
6
|
export declare const RUI_FIELD_DEFAULT_VALUE_ATTR = "data-default-value";
|
|
7
7
|
export declare const RUI_FORM_DEFAULT_VALUES_ATTR = "data-default-values";
|
|
8
|
+
export declare const RUI_ARIA_TARGET_ATTR = "data-rui-aria-target";
|
|
9
|
+
export declare const RUI_ARIA_TARGETS_ATTR = "data-rui-aria-targets";
|
|
8
10
|
/**
|
|
9
11
|
* Presentational text controls (`RuiInput` / `RuiTextarea`) are real `<input>` / `<textarea>`
|
|
10
12
|
* nodes marked with `data-rui-control`. Detect by tag name — never `instanceof HTMLInputElement`,
|
|
11
13
|
* which is undefined under Radiant's Node light-DOM SSR shim.
|
|
12
14
|
*/
|
|
13
15
|
export declare function isNativeTextControl(node: Element): node is HTMLInputElement | HTMLTextAreaElement;
|
|
16
|
+
/** True when the constructor opted into the form-associated custom element lifecycle. */
|
|
17
|
+
export declare function isFormAssociatedHost(host: HTMLElement): boolean;
|
|
18
|
+
type ControlValueAdapter = {
|
|
19
|
+
read: (host: HTMLElement) => unknown;
|
|
20
|
+
write: (host: HTMLElement, value: unknown) => void;
|
|
21
|
+
};
|
|
22
|
+
export type FieldControlAdapter = ControlValueAdapter & {
|
|
23
|
+
/** Where a native text target gets its submission name. Defaults to `native`. */
|
|
24
|
+
submission?: 'host' | 'native' | 'none';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The field control is the outermost matching node. An embedded `rui-listbox` is
|
|
28
|
+
* never eligible; a host such as `rui-select` wins over inner `[data-rui-control]`
|
|
29
|
+
* markers and nested hosts.
|
|
30
|
+
*/
|
|
14
31
|
export declare function findFieldControl(root: HTMLElement): HTMLElement | null;
|
|
32
|
+
/**
|
|
33
|
+
* Register a custom host for `RuiField` discovery, value access, and name wiring.
|
|
34
|
+
*
|
|
35
|
+
* @remarks `submission` chooses where a native text target gets its name. A host
|
|
36
|
+
* with `submission: 'host'` must implement FACE itself; registration only connects
|
|
37
|
+
* it to the `RuiForm` store.
|
|
38
|
+
*/
|
|
39
|
+
export declare function registerFieldControl(tagName: string, adapter: FieldControlAdapter): void;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a bubbling `rui-change` belongs to this field's primary control, not a
|
|
42
|
+
* nested host inside it.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isPrimaryFieldControlEvent(root: HTMLElement, event: Event): boolean;
|
|
15
45
|
export declare function readControlValue(control: HTMLElement): unknown;
|
|
16
46
|
export declare function writeControlValue(control: HTMLElement, value: unknown): void;
|
|
17
47
|
export declare function findFieldLabel(root: HTMLElement): HTMLLabelElement | null;
|
|
@@ -19,9 +49,16 @@ export declare function findFieldDescription(root: HTMLElement): HTMLElement | n
|
|
|
19
49
|
export declare function findFieldError(root: HTMLElement): HTMLElement | null;
|
|
20
50
|
/** Every error region in the field (handles duplicate slot-projection copies). */
|
|
21
51
|
export declare function findFieldErrorElements(root: HTMLElement): HTMLElement[];
|
|
22
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Copies `name` onto the listed node.
|
|
54
|
+
*
|
|
55
|
+
* Form-associated hosts submit themselves — inner inputs stay unnamed.
|
|
56
|
+
* Checkbox, switch, and radio groups list through inner natives.
|
|
57
|
+
* Store-only hosts (select, combobox) do not name an inner textbox.
|
|
58
|
+
*/
|
|
23
59
|
export declare function wireFieldControlName(controlHost: HTMLElement | null, ariaTarget: HTMLElement | null, name: string): void;
|
|
24
60
|
/** Element that receives `id`, `aria-invalid`, and `aria-describedby` from Field. */
|
|
25
61
|
export declare function getAriaControlTarget(control: HTMLElement): HTMLElement;
|
|
26
62
|
/** Focusable surfaces that Field should wire `aria-invalid` / `aria-describedby` onto. */
|
|
27
63
|
export declare function getAriaControlTargets(control: HTMLElement): HTMLElement[];
|
|
64
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FormStore } from './form-store';
|
|
1
2
|
import type { FieldError, FieldRegistration, RegisterOptions } from './types';
|
|
2
3
|
/** UI slice for one field, computed by `<rui-form>` from the store. */
|
|
3
4
|
export type FormFieldPresentation = {
|
|
@@ -15,6 +16,8 @@ export type FormContextActions = {
|
|
|
15
16
|
export type FormContextValue = {
|
|
16
17
|
/** False until `<rui-form>` has created its store and bound real actions. */
|
|
17
18
|
ready: boolean;
|
|
19
|
+
/** The live form store, available when ready; never serialized into hydration markup. */
|
|
20
|
+
store: FormStore | undefined;
|
|
18
21
|
/** Bumps when form store state changes. */
|
|
19
22
|
revision: number;
|
|
20
23
|
/** Per-field messages and invalid flags; only the form writes this map. */
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { JsxCustomElementAttributes } from '@ecopages/jsx';
|
|
2
2
|
import type { RuiForm as RuiFormElement, RuiFormProps } from './form.script';
|
|
3
3
|
import './form.script';
|
|
4
|
+
/**
|
|
5
|
+
* Form coordinator view. Stamps `[data-ref="form"]` on the native `<form>` and passes
|
|
6
|
+
* `defaultValues`, `resolver`, and `onSubmit` through property bindings.
|
|
7
|
+
*
|
|
8
|
+
* @cssclass rui-form - Root form surface (`<form noValidate>`).
|
|
9
|
+
*/
|
|
4
10
|
export declare function RuiForm({ children, defaultValues, defaultValuesData, resolver, reValidateMode, onSubmit, action, method, ...props }: JsxCustomElementAttributes<RuiFormElement, RuiFormProps>): import("@ecopages/jsx").JsxRenderable;
|
|
5
11
|
export type { RuiFormSubmitDetail, RuiFormInvalidDetail } from './form.script';
|
|
@@ -28,29 +28,46 @@ export type RuiFormInvalidDetail<T extends FieldValues = FieldValues> = {
|
|
|
28
28
|
/**
|
|
29
29
|
* `<rui-form>` — form coordinator with RHF-like validation and field registration.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* The custom element is a behavior host: it does not render field markup. It owns
|
|
32
|
+
* the {@link FormStore}, publishes field presentation via {@link formContext}, and
|
|
33
|
+
* coordinates `<rui-field>` connectors and a composed native `<form>`.
|
|
34
|
+
*
|
|
35
|
+
* ## Light-DOM contract
|
|
36
|
+
*
|
|
37
|
+
* Required:
|
|
38
|
+
* - `[data-ref="form"]` — native `<form noValidate>`. Host listens
|
|
39
|
+
* for `submit` and `reset` on this node.
|
|
40
|
+
*
|
|
41
|
+
* Optional:
|
|
42
|
+
* - `button[type="submit"]` outside the native form — host sets `form` to associate
|
|
43
|
+
* orphan submit buttons with the inner form.
|
|
44
|
+
* - `rui-field` descendants — register through context; each field owns its control tree.
|
|
45
|
+
*
|
|
46
|
+
* Nested hosts: `rui-field` (and each field's control host). The form does not query
|
|
47
|
+
* control targets directly.
|
|
33
48
|
*
|
|
34
49
|
* @element rui-form
|
|
35
50
|
*
|
|
36
|
-
* @attr {('onSubmit'|'onBlur'|'onChange'|'onTouched'|'all')} mode - When validation
|
|
37
|
-
*
|
|
38
|
-
* @attr {
|
|
39
|
-
* fields re-validate after a failed submit. Reflects to markup. Default: `onChange`.
|
|
40
|
-
* @attr {string} data-default-values - JSON-serialized default values for SSR / JSX
|
|
41
|
-
* attribute channel. Default: `undefined`.
|
|
51
|
+
* @attr {('onSubmit'|'onBlur'|'onChange'|'onTouched'|'all')} mode - When validation runs. Default: `onSubmit`.
|
|
52
|
+
* @attr {('onSubmit'|'onBlur'|'onChange'|'onTouched'|'all')} revalidate-mode - When fields re-validate after a failed submit. Default: `onChange`.
|
|
53
|
+
* @attr {string} data-default-values - JSON-serialized default values for SSR / JSX attribute channel. Default: `undefined`.
|
|
42
54
|
* @attr {string} action - Native form destination when `onSubmit` is not provided.
|
|
43
55
|
* @attr {string} method - Native form HTTP method when `onSubmit` is not provided.
|
|
44
56
|
*
|
|
45
57
|
* @fires rui-submit - Emitted when validation passes; `detail.values` holds field values.
|
|
46
|
-
* @fires rui-invalid - Emitted when validation fails on submit; `detail.errors` maps
|
|
47
|
-
* field names to error messages.
|
|
58
|
+
* @fires rui-invalid - Emitted when validation fails on submit; `detail.errors` maps field names to error messages.
|
|
48
59
|
*
|
|
49
60
|
* @remarks
|
|
50
61
|
* `defaultValues` and `resolver` are object props — they only reach the element via
|
|
51
|
-
* `prop:` bindings from the `RuiForm` view, not plain attributes.
|
|
62
|
+
* `prop:` bindings from the `RuiForm` view, not plain attributes. The host queries
|
|
63
|
+
* `[data-ref="form"]`.
|
|
64
|
+
*
|
|
65
|
+
* Two channels: `onSubmit` / `rui-submit` receive the store; native `FormData` and
|
|
66
|
+
* `action` / `method` navigation receive listed controls only. `onSubmit` skips
|
|
67
|
+
* native navigation.
|
|
52
68
|
*
|
|
53
|
-
*
|
|
69
|
+
* `formContext.store` exposes the live store to scoped consumers once ready.
|
|
70
|
+
* Hydration payloads contain presentation only, never the store or its actions.
|
|
54
71
|
*/
|
|
55
72
|
export declare class RuiForm extends RadiantElement {
|
|
56
73
|
formProvider: ContextProvider<typeof formContext>;
|
|
@@ -4,4 +4,5 @@ export { formContext, type FormContextValue, type FormFieldPresentation, type Fo
|
|
|
4
4
|
export { FormStore } from './form-store';
|
|
5
5
|
export { createRulesResolver, runRulesResolver } from './resolvers';
|
|
6
6
|
export type { FieldRules, FieldValues, Resolver, ValidationMode, FormState, FieldError } from './types';
|
|
7
|
-
export { findFieldControl, isNativeTextControl, readControlValue, writeControlValue, RUI_CONTROL_ATTR, RUI_FIELD_LABEL_ATTR, RUI_FIELD_DESCRIPTION_ATTR, RUI_FIELD_ERROR_ATTR, RUI_FIELD_MANAGED_ATTR, } from './control-protocol';
|
|
7
|
+
export { findFieldControl, isNativeTextControl, readControlValue, registerFieldControl, writeControlValue, RUI_CONTROL_ATTR, RUI_FIELD_LABEL_ATTR, RUI_FIELD_DESCRIPTION_ATTR, RUI_FIELD_ERROR_ATTR, RUI_FIELD_MANAGED_ATTR, } from './control-protocol';
|
|
8
|
+
export type { FieldControlAdapter } from './control-protocol';
|