@ecopages/radiant-ui 0.2.4 → 0.3.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.
Files changed (189) hide show
  1. package/README.md +2 -0
  2. package/dist/components/ui/alert/alert.d.ts +1 -3
  3. package/dist/components/ui/alert/alert.script.d.ts +7 -0
  4. package/dist/components/ui/alert/index.js +1 -1
  5. package/dist/components/ui/alert/index.js.map +3 -3
  6. package/dist/components/ui/autocomplete/autocomplete.d.ts +1 -2
  7. package/dist/components/ui/autocomplete/autocomplete.script.d.ts +7 -0
  8. package/dist/components/ui/autocomplete/index.js +1 -1
  9. package/dist/components/ui/autocomplete/index.js.map +3 -3
  10. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +1 -2
  11. package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +7 -0
  12. package/dist/components/ui/breadcrumb/index.js +1 -1
  13. package/dist/components/ui/breadcrumb/index.js.map +3 -3
  14. package/dist/components/ui/calendar/calendar.script.d.ts +8 -0
  15. package/dist/components/ui/calendar/index.d.ts +1 -2
  16. package/dist/components/ui/calendar/index.js +1 -1
  17. package/dist/components/ui/calendar/index.js.map +4 -4
  18. package/dist/components/ui/carousel/carousel.d.ts +1 -2
  19. package/dist/components/ui/carousel/carousel.script.d.ts +7 -0
  20. package/dist/components/ui/carousel/index.js +1 -1
  21. package/dist/components/ui/carousel/index.js.map +3 -3
  22. package/dist/components/ui/checkbox/checkbox.d.ts +1 -2
  23. package/dist/components/ui/checkbox/checkbox.script.d.ts +7 -0
  24. package/dist/components/ui/checkbox/index.js +1 -1
  25. package/dist/components/ui/checkbox/index.js.map +3 -3
  26. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +1 -2
  27. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +7 -0
  28. package/dist/components/ui/checkbox-group/index.js +1 -1
  29. package/dist/components/ui/checkbox-group/index.js.map +3 -3
  30. package/dist/components/ui/combobox/combobox.d.ts +1 -2
  31. package/dist/components/ui/combobox/combobox.script.d.ts +7 -0
  32. package/dist/components/ui/combobox/index.js +1 -1
  33. package/dist/components/ui/combobox/index.js.map +3 -3
  34. package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +1 -2
  35. package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +7 -0
  36. package/dist/components/ui/cycle-toggle/index.js +1 -1
  37. package/dist/components/ui/cycle-toggle/index.js.map +3 -3
  38. package/dist/components/ui/date-field/date-field.d.ts +4 -5
  39. package/dist/components/ui/date-field/date-field.script.d.ts +7 -0
  40. package/dist/components/ui/date-field/index.js +1 -1
  41. package/dist/components/ui/date-field/index.js.map +4 -4
  42. package/dist/components/ui/date-input/date-input.d.ts +4 -4
  43. package/dist/components/ui/date-input/date-input.script.d.ts +8 -0
  44. package/dist/components/ui/date-input/index.js +1 -1
  45. package/dist/components/ui/date-input/index.js.map +3 -3
  46. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +5 -6
  47. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +7 -0
  48. package/dist/components/ui/date-range-picker/index.js +1 -1
  49. package/dist/components/ui/date-range-picker/index.js.map +4 -4
  50. package/dist/components/ui/dialog/dialog-registry.d.ts +0 -1
  51. package/dist/components/ui/dialog/dialog.d.ts +1 -2
  52. package/dist/components/ui/dialog/dialog.script.d.ts +7 -0
  53. package/dist/components/ui/dialog/index.js +1 -1
  54. package/dist/components/ui/dialog/index.js.map +3 -3
  55. package/dist/components/ui/disclosure/disclosure-group.script.d.ts +7 -0
  56. package/dist/components/ui/disclosure/disclosure.d.ts +2 -4
  57. package/dist/components/ui/disclosure/disclosure.script.d.ts +7 -0
  58. package/dist/components/ui/disclosure/index.js +1 -1
  59. package/dist/components/ui/disclosure/index.js.map +3 -3
  60. package/dist/components/ui/field/field.d.ts +1 -2
  61. package/dist/components/ui/field/field.script.d.ts +7 -0
  62. package/dist/components/ui/field/index.js +1 -1
  63. package/dist/components/ui/field/index.js.map +3 -3
  64. package/dist/components/ui/form/form.d.ts +1 -2
  65. package/dist/components/ui/form/form.script.d.ts +7 -0
  66. package/dist/components/ui/form/index.js +1 -1
  67. package/dist/components/ui/form/index.js.map +3 -3
  68. package/dist/components/ui/grid/grid.d.ts +1 -2
  69. package/dist/components/ui/grid/grid.script.d.ts +7 -0
  70. package/dist/components/ui/grid/index.js +1 -1
  71. package/dist/components/ui/grid/index.js.map +3 -3
  72. package/dist/components/ui/hover-card/hover-card.d.ts +1 -2
  73. package/dist/components/ui/hover-card/hover-card.script.d.ts +7 -0
  74. package/dist/components/ui/hover-card/index.js +1 -1
  75. package/dist/components/ui/hover-card/index.js.map +3 -3
  76. package/dist/components/ui/knob/index.js +1 -1
  77. package/dist/components/ui/knob/index.js.map +3 -3
  78. package/dist/components/ui/knob/knob.d.ts +1 -2
  79. package/dist/components/ui/knob/knob.script.d.ts +7 -0
  80. package/dist/components/ui/listbox/index.js +1 -1
  81. package/dist/components/ui/listbox/index.js.map +3 -3
  82. package/dist/components/ui/listbox/listbox.d.ts +1 -2
  83. package/dist/components/ui/listbox/listbox.script.d.ts +7 -0
  84. package/dist/components/ui/menu-button/index.js +1 -1
  85. package/dist/components/ui/menu-button/index.js.map +3 -3
  86. package/dist/components/ui/menu-button/menu-button.d.ts +1 -2
  87. package/dist/components/ui/menu-button/menu-button.script.d.ts +7 -0
  88. package/dist/components/ui/menubar/index.js +1 -1
  89. package/dist/components/ui/menubar/index.js.map +3 -3
  90. package/dist/components/ui/menubar/menubar.d.ts +1 -2
  91. package/dist/components/ui/menubar/menubar.script.d.ts +7 -0
  92. package/dist/components/ui/meter/index.d.ts +1 -2
  93. package/dist/components/ui/meter/index.js +1 -1
  94. package/dist/components/ui/meter/index.js.map +4 -4
  95. package/dist/components/ui/meter/meter.script.d.ts +8 -0
  96. package/dist/components/ui/navigation-menu/index.js +1 -1
  97. package/dist/components/ui/navigation-menu/index.js.map +3 -3
  98. package/dist/components/ui/navigation-menu/navigation-menu.css +2 -1
  99. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +1 -2
  100. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +7 -0
  101. package/dist/components/ui/number-field/index.js +1 -1
  102. package/dist/components/ui/number-field/index.js.map +3 -3
  103. package/dist/components/ui/number-field/number-field.d.ts +1 -2
  104. package/dist/components/ui/number-field/number-field.script.d.ts +7 -0
  105. package/dist/components/ui/pagination/index.js +1 -1
  106. package/dist/components/ui/pagination/index.js.map +3 -3
  107. package/dist/components/ui/pagination/pagination.d.ts +1 -2
  108. package/dist/components/ui/pagination/pagination.script.d.ts +7 -0
  109. package/dist/components/ui/popover/index.js +1 -1
  110. package/dist/components/ui/popover/index.js.map +3 -3
  111. package/dist/components/ui/popover/popover.d.ts +1 -2
  112. package/dist/components/ui/popover/popover.script.d.ts +9 -0
  113. package/dist/components/ui/radio-group/index.js +1 -1
  114. package/dist/components/ui/radio-group/index.js.map +3 -3
  115. package/dist/components/ui/radio-group/radio-group.d.ts +1 -2
  116. package/dist/components/ui/radio-group/radio-group.script.d.ts +7 -0
  117. package/dist/components/ui/select/index.js +1 -1
  118. package/dist/components/ui/select/index.js.map +3 -3
  119. package/dist/components/ui/select/select.d.ts +1 -2
  120. package/dist/components/ui/select/select.script.d.ts +7 -0
  121. package/dist/components/ui/separator/separator.d.ts +2 -1
  122. package/dist/components/ui/sidebar/index.js +1 -1
  123. package/dist/components/ui/sidebar/index.js.map +3 -3
  124. package/dist/components/ui/sidebar/sidebar-trigger.d.ts +1 -2
  125. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +7 -0
  126. package/dist/components/ui/sidebar/sidebar.d.ts +1 -3
  127. package/dist/components/ui/sidebar/sidebar.script.d.ts +7 -0
  128. package/dist/components/ui/slider/index.js +1 -1
  129. package/dist/components/ui/slider/index.js.map +3 -3
  130. package/dist/components/ui/slider/slider.d.ts +1 -2
  131. package/dist/components/ui/slider/slider.script.d.ts +7 -0
  132. package/dist/components/ui/switch/index.js +1 -1
  133. package/dist/components/ui/switch/index.js.map +3 -3
  134. package/dist/components/ui/switch/switch.d.ts +1 -2
  135. package/dist/components/ui/switch/switch.script.d.ts +7 -0
  136. package/dist/components/ui/table/index.js +1 -1
  137. package/dist/components/ui/table/index.js.map +3 -3
  138. package/dist/components/ui/table/table.d.ts +1 -2
  139. package/dist/components/ui/table/table.script.d.ts +7 -0
  140. package/dist/components/ui/tabs/index.d.ts +2 -2
  141. package/dist/components/ui/tabs/index.js +1 -1
  142. package/dist/components/ui/tabs/index.js.map +3 -3
  143. package/dist/components/ui/tabs/tabs.d.ts +1 -4
  144. package/dist/components/ui/tabs/tabs.script.d.ts +7 -0
  145. package/dist/components/ui/tag-group/index.js +1 -1
  146. package/dist/components/ui/tag-group/index.js.map +3 -3
  147. package/dist/components/ui/tag-group/tag-group.d.ts +1 -2
  148. package/dist/components/ui/tag-group/tag-group.script.d.ts +7 -0
  149. package/dist/components/ui/toast/index.d.ts +2 -2
  150. package/dist/components/ui/toast/index.js +1 -1
  151. package/dist/components/ui/toast/index.js.map +3 -3
  152. package/dist/components/ui/toast/toast.d.ts +6 -10
  153. package/dist/components/ui/toast/toast.script.d.ts +8 -0
  154. package/dist/components/ui/toast/toaster.script.d.ts +8 -1
  155. package/dist/components/ui/toc/index.d.ts +6 -2
  156. package/dist/components/ui/toc/index.js +1 -1
  157. package/dist/components/ui/toc/index.js.map +4 -4
  158. package/dist/components/ui/toc/toc.script.d.ts +8 -0
  159. package/dist/components/ui/toolbar/index.js +1 -1
  160. package/dist/components/ui/toolbar/index.js.map +3 -3
  161. package/dist/components/ui/toolbar/toolbar.d.ts +1 -2
  162. package/dist/components/ui/toolbar/toolbar.script.d.ts +7 -0
  163. package/dist/components/ui/tooltip/index.js +1 -1
  164. package/dist/components/ui/tooltip/index.js.map +3 -3
  165. package/dist/components/ui/tooltip/tooltip.d.ts +1 -2
  166. package/dist/components/ui/tooltip/tooltip.script.d.ts +14 -14
  167. package/dist/components/ui/tree/index.js +1 -1
  168. package/dist/components/ui/tree/index.js.map +3 -3
  169. package/dist/components/ui/tree/tree.d.ts +1 -2
  170. package/dist/components/ui/tree/tree.script.d.ts +7 -0
  171. package/dist/components/ui/treegrid/index.js +1 -1
  172. package/dist/components/ui/treegrid/index.js.map +3 -3
  173. package/dist/components/ui/treegrid/treegrid.d.ts +1 -2
  174. package/dist/components/ui/treegrid/treegrid.script.d.ts +7 -0
  175. package/dist/components/ui/window-splitter/index.js +1 -1
  176. package/dist/components/ui/window-splitter/index.js.map +3 -3
  177. package/dist/components/ui/window-splitter/window-splitter.d.ts +1 -2
  178. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +7 -0
  179. package/dist/index.js +1 -1
  180. package/dist/index.js.map +4 -4
  181. package/dist/lib/without-children.d.ts +10 -0
  182. package/dist/styles/radiant-ui-core.css +3 -0
  183. package/dist/styles/radiant-ui.css +3 -0
  184. package/dist/styles/styles.css +1 -1
  185. package/dist/styles/tailwind.css +3 -0
  186. package/package.json +10 -10
  187. package/dist/components/ui/calendar/calendar.d.ts +0 -4
  188. package/dist/components/ui/meter/meter.d.ts +0 -8
  189. package/dist/components/ui/toc/toc.d.ts +0 -5
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
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"]
4
+ "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { RuiField as RuiFieldElement } from \"./field.script\";\nexport function RuiField({\n children,\n rules,\n defaultValue,\n defaultValueData,\n ...props\n}) {\n return /* @__PURE__ */jsx(RuiFieldElement, {\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", "_RuiField", "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
  }
@@ -1,6 +1,5 @@
1
1
  import type { JsxCustomElementAttributes } from '@ecopages/jsx';
2
- import type { RuiForm as RuiFormElement, RuiFormProps } from './form.script';
3
- import './form.script';
2
+ import { RuiForm as RuiFormElement, type RuiFormProps } from './form.script';
4
3
  /**
5
4
  * Form coordinator view. Stamps `[data-ref="form"]` on the native `<form>` and passes
6
5
  * `defaultValues`, `resolver`, and `onSubmit` through property bindings.
@@ -1,3 +1,4 @@
1
+ import type { JSX_PROPS } from '@ecopages/jsx';
1
2
  import { RadiantElement } from '@ecopages/radiant';
2
3
  import type { ContextProvider } from '@ecopages/radiant/context';
3
4
  import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
@@ -70,6 +71,7 @@ export type RuiFormInvalidDetail<T extends FieldValues = FieldValues> = {
70
71
  * Hydration payloads contain presentation only, never the store or its actions.
71
72
  */
72
73
  export declare class RuiForm extends RadiantElement {
74
+ readonly [JSX_PROPS]?: RuiFormProps;
73
75
  formProvider: ContextProvider<typeof formContext>;
74
76
  submitEvent: EventEmitter<RuiFormSubmitDetail>;
75
77
  invalidEvent: EventEmitter<RuiFormInvalidDetail>;
@@ -109,3 +111,8 @@ export declare class RuiForm extends RadiantElement {
109
111
  onNativeSubmit(event: SubmitEvent): void;
110
112
  onNativeReset(): void;
111
113
  }
114
+ declare global {
115
+ interface HTMLElementTagNameMap {
116
+ 'rui-form': RuiForm;
117
+ }
118
+ }
@@ -1,2 +1,2 @@
1
- import{jsx as lt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as it,customElement as qt,event as nt,onEvent as ee,onUpdated as st,prop as _}from"@ecopages/radiant";import{provideContext as Ut}from"@ecopages/radiant/context";import{createContext as dt}from"@ecopages/radiant/context";var W=dt(Symbol.for("rui-form-context"));function F(t,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:t}function A(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function ft(t,e,r,i){if(r)for(let n of[ct,ht,mt,bt]){let o=await n(e,r,i);if(o)return o}}function ct(t,e){let r=t==null||t===""||t===!1||Array.isArray(t)&&t.length===0;return e.required&&r?F("This field is required",e.required)??"This field is required":void 0}function ht(t,e){let r=typeof t=="number"?t:typeof t=="string"&&t!==""?Number(t):void 0;if(!(r===void 0||Number.isNaN(r))){if(e.min!==void 0&&r<A(e.min))return F(`Minimum value is ${A(e.min)}`,e.min);if(e.max!==void 0&&r>A(e.max))return F(`Maximum value is ${A(e.max)}`,e.max)}}function mt(t,e){let r=t==null?"":String(t);if(e.minLength!==void 0&&r.length<A(e.minLength))return F(`Minimum length is ${A(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&r.length>A(e.maxLength))return F(`Maximum length is ${A(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!A(e.pattern).test(r))return F("Invalid format",e.pattern)??"Invalid format"}async function bt(t,e,r){if(!e.validate)return;let i=typeof e.validate=="function"?[e.validate]:Object.values(e.validate);for(let n of i){let o=await n(t,r);if(o!==!0&&o!==void 0)return o===!1?"Invalid value":String(o)}}async function be(t,e,r){let i=r??Object.keys(e.fields),n={};for(let o of i){let c=e.fields[o]?.rules,s=await ft(o,t[o],c,t);s&&(n[o]={type:"validation",message:s})}return Object.keys(n).length>0?{values:{},errors:n}:{values:t,errors:{}}}function X(){return(t,e,r)=>be(t,e,r.names)}function pe(t){return typeof t=="function"?t:X()}var D=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=pe(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=pe(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let r=this.fields.get(e.name),i={...e,rules:e.rules??r?.rules,defaultValue:e.defaultValue??r?.defaultValue,getRules:e.getRules??r?.getRules};return this.fields.set(e.name,i),this.values[e.name]===void 0&&i.defaultValue!==void 0&&(this.values={...this.values,[e.name]:i.defaultValue}),i.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===i&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,r){let i=this.fields.get(e);i&&(r.rules!==void 0&&(i.rules=r.rules),r.defaultValue!==void 0&&(i.defaultValue=r.defaultValue))}getValues(){let e={...this.values};for(let[r,i]of this.fields)e[r]=i.getValue();return e}setValue(e,r,i){this.values={...this.values,[e]:r},this.fields.get(String(e))?.setValue(r),i?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),i?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let r={...this.errors};delete r[e],this.errors=r,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),r=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:r===0}}async validateField(e){let r=this.getValues(),n=(await this.resolver(r,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,o={...this.errors};return n?o[e]={type:"validation",message:n}:delete o[e],this.errors=o,this.notify(),!n}async validateAll(){let e=this.getValues(),r=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=r.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,r){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return r==="change";case"onBlur":return r==="blur";case"onTouched":return r==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let r=this.fields.get(e);if(!r)return;let i=r.getValue();this.values={...this.values,[e]:i},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,r){this.isSubmitting=!0,this.isSubmitted=!0;for(let n of this.fields.keys())this.touched={...this.touched,[n]:!0};this.notify();let i=await this.validateAll();if(this.isSubmitting=!1,this.notify(),i){await e(this.getValues());return}r?.(this.errors)}reset(e){let r=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...r},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let i of this.fields.values())i.setValue(this.values[i.name]);this.notify()}collectFieldDefaults(){let e={};for(let[r,i]of this.fields)i.defaultValue!==void 0&&(e[r]=i.defaultValue);return e}buildResolverFields(){let e={};for(let[r,i]of this.fields){let n=i.getRules?.()??i.rules;e[r]={rules:n}}return e}};function ve(t){return t?Se(t.split(",")):[]}function pt(t){return t.join(",")}var ge={fromAttribute:t=>ve(t),toAttribute:t=>t.length>0?pt(t):null,fromProperty:t=>Array.isArray(t)?Se(t.map(String)):typeof t=="string"?ve(t):[]};function ye(t){return t?t.split(",").map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function vt(t){return t.join(",")}var Ae={fromAttribute:t=>ye(t),toAttribute:t=>t.length>0?vt(t):null,fromProperty:t=>Array.isArray(t)?t.map(Number).filter(e=>Number.isFinite(e)):typeof t=="number"&&Number.isFinite(t)?[t]:typeof t=="string"?ye(t):[]};function Se(t){return[...new Set(t.map(e=>e.trim()).filter(Boolean))]}var Y="data-rui-control",yt="data-rui-field-managed",gt="data-rui-field-label",At="data-rui-field-description",St="data-rui-field-error";var H="data-default-values";var Ve='[data-ref="field"]';function Fe(){return`[${Y}], ${Ee()}`}function Ee(){return Array.from(E.keys()).join(", ")}function Rt(t){return t.localName==="rui-listbox"&&(t.hasAttribute("embedded")||Reflect.get(t,"embedded")===!0)}function xt(t){return t.localName==="input"||t.localName==="textarea"}function Te(t){return t.localName==="input"}function Ce(t){return t.localName==="textarea"}var j={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",r)}},Re={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let r=t.getAttribute("value");return r==null||r===""?"":Number(r)},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",e)}},xe={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}};function we(t,e){let r=Reflect.get(t,"value");return r!==void 0&&e.fromProperty?e.fromProperty(r):e.fromAttribute?e.fromAttribute(t.getAttribute("value")):r}function Ie(t,e){Reflect.set(t,"value",e)}var N={read:t=>we(t,ge),write:Ie},_t={read:t=>we(t,Ae),write:Ie},E=new Map([["rui-checkbox",xe],["rui-switch",xe],["rui-combobox",{...N,submission:"none"}],["rui-date-field",j],["rui-date-input",{...j,submission:"host"}],["rui-date-range-picker",j],["rui-select",{...N,submission:"none"}],["rui-radio-group",j],["rui-checkbox-group",N],["rui-listbox",N],["rui-tag-group",N],["rui-slider",{..._t,submission:"host"}],["rui-knob",{...Re,submission:"host"}],["rui-number-field",{...Re,submission:"host"}]]);function Vt(t,e){let r=t,i=new Set,n=s=>{i.has(s)||(i.add(s),e(s))};if(typeof r.getSlotElements=="function")for(let s of r.getSlotElements())n(s);let o=t.querySelector(Ve)??t;for(let s of Array.from(o.children))n(s);for(let s of o.querySelectorAll("*"))n(s);for(let s of Array.from(t.children))n(s);let c=t.shadowRoot;if(c)for(let s of Array.from(c.children))n(s)}function _e(t){let e=t.filter(r=>!Rt(r));return e.length===0?null:e.find(r=>!e.some(i=>i!==r&&i.contains(r)))??null}function Ft(t){let e=[];return Vt(t,r=>{r instanceof HTMLElement&&r.matches(Fe())&&e.push(r)}),e}function Et(t){let e=t.querySelector(Ve);return e instanceof HTMLElement?Array.from(e.querySelectorAll(Fe())).filter(r=>t.contains(r)):[]}function Tt(t){let e=_e(Et(t));return e||_e(Ft(t))}function Ct(t,e){let r=t.toLowerCase();E.set(r,e)}function wt(t){if(Te(t)){let r=P(t),i=r===t?void 0:E.get(r.localName);return i?i.read(r):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(Ce(t))return t.value;let e=P(t);return E.get(e.localName)?.read(e)??e.getAttribute("value")??""}function It(t,e){if(Te(t)){let i=P(t),n=i===t?void 0:E.get(i.localName);if(n){n.write(i,e);return}if(t.type==="checkbox"){t.checked=!!e;let o=t.closest("rui-checkbox, rui-switch");o&&(e?o.setAttribute("checked",""):o.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(Ce(t)){t.value=e==null?"":String(e);return}let r=P(t);E.get(r.localName)?.write(r,e)}function P(t){return t.hasAttribute(Y)?t.closest(Ee())??t:t}var Dt=/^[A-Za-z][A-Za-z0-9_-]*$/;function De(t){return Dt.test(t)}function Nt(t){let e=t.trim();if(De(e))return e;let r=`rui-${e}`;return e&&De(r)?r:"rui"}function Ne(t){let e=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${Nt(t)}-${e}`}var ke,Le,Oe,Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt;function kt(t,e,r,i,n,o){var c,s,T,B,k,$,C,te=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,z=Object.create,ie=[z(null),z(null)],ne=e.length;function L(u,p,m){return function(a,l){p&&(l=a,a=t);for(var v=0;v<u.length;v++)l=u[v].apply(a,m?[l]:[]);return m?l:a}}function S(u,p,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(p+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function se(u,p,m,a,l,v,x,b,y,g,ue){function G(f){if(!ue(f))throw new TypeError("Attempted to access private element on non-instance")}var J=[].concat(p[0]),ae=p[3],Z=!x,w=l===1,le=l===3,de=l===4,O=l===2;function M(f,V,he){return function(U,me){return V&&(me=U,U=u),he&&he(U),d[f].call(U,me)}}if(!Z){var d={},K=[],R=le?"get":de||w?"set":"value";if(y?(g||w?d={get:rt(function(){return ae(this)},a,"get"),set:function(f){p[4](this,f)}}:d[R]=ae,g||rt(d[R],a,O?"":R)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((s=ie[+b][a])&&(s^l)!==7)throw Error("Decorating two elements with the same name ("+d[R].name+") is not supported yet");ie[+b][a]=l<3?1:l}}for(var h=u,q=J.length-1;q>=0;q-=m?2:1){var fe=S(J[q],"A decorator","be",!0),ce=m?J[q-1]:void 0,Q={},I={kind:["field","accessor","method","getter","setter","class"][l],name:a,metadata:c,addInitializer:function(f,V){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(V,"An initializer","be",!0),v.push(V)}.bind(null,Q)};if(Z)s=fe.call(ce,h,I),Q.v=1,S(s,"class decorators","return")&&(h=s);else if(I.static=b,I.private=y,s=I.access={has:y?ue.bind():function(f){return a in f}},de||(s.get=y?O?function(f){return G(f),d.value}:M("get",0,G):function(f){return f[a]}),O||le||(s.set=y?M("set",0,G):function(f,V){f[a]=V}),h=fe.call(ce,w?{get:d.get,set:d.set}:d[R],I),Q.v=1,w){if(typeof h=="object"&&h)(s=S(h.get,"accessor.get"))&&(d.get=s),(s=S(h.set,"accessor.set"))&&(d.set=s),(s=S(h.init,"accessor.init"))&&K.unshift(s);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(h,(g?"field":"method")+" decorators","return")&&(g?K.unshift(h):d[R]=h)}return l<2&&x.push(L(K,b,1),L(v,b,0)),g||Z||(y?w?x.splice(-1,0,M("get",b),M("set",b)):x.push(O?d[R]:S.call.bind(d[R])):re(u,a,d)),h}function oe(u){return re(u,te,{configurable:!0,enumerable:!0,value:c})}return o!==void 0&&(c=o[te]),c=z(c??null),k=[],$=function(u){u&&k.push(L(u))},C=function(u,p){for(var m=0;m<r.length;m++){var a=r[m],l=a[1],v=7&l;if((8&l)==u&&!v==p){var x=a[2],b=!!a[3],y=16&l;se(u?t:t.prototype,a,y,b?"#"+x:Lt(x),v,v<2?[]:u?B=B||[]:T=T||[],k,!!u,b,p,u&&b?function(g){return Mt(g)===t}:n)}}},C(8,0),C(0,0),C(8,1),C(0,1),$(T),$(B),s=k,ne||oe(t),{e:s,get c(){var u=[];return ne&&[oe(t=se(t,[e],i,t.name,5,u)),L(u,1)]}}}function Lt(t){var e=Ot(t,"string");return typeof e=="symbol"?e:e+""}function Ot(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var i=r.call(t,e||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function rt(t,e,r){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:r?r+" "+e:e})}catch{}return t}function Mt(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var ot=()=>{},jt={register:()=>ot,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>ot},at,ut=class extends it{static{({e:[Oe,Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt,ke],c:[at,Le]}=kt(this,[qt("rui-form")],[[Ut({context:W,initialValue:{ready:!1,store:void 0,revision:0,fields:{},errors:{},actions:jt},hydrate:Object,serialize:({revision:e,fields:r,errors:i})=>({ready:!1,revision:e,fields:r,errors:i})}),0,"formProvider"],[nt({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[nt({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[_({type:Object,defaultValue:{}}),0,"defaultValues"],[_({type:String,attribute:H}),0,"defaultValuesData"],[_({type:Object}),0,"resolver"],[_({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[_({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[_({type:String,reflect:!0}),0,"action"],[_({type:String,reflect:!0}),0,"method"],[st(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[st(["resolver"]),2,"syncResolver"],[ee({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[ee({ref:"form",type:"submit"}),2,"onNativeSubmit"],[ee({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,it))}formProvider=(ke(this),Oe(this));submitEvent=(Me(this),qe(this));invalidEvent=(Ue(this),je(this));defaultValues=(Pe(this),Be(this));defaultValuesData=($e(this),ze(this));resolver=(Ge(this),Je(this));mode=(Ze(this),Ke(this));reValidateMode=(Qe(this),We(this));action=(Xe(this),Ye(this));method=(He(this),et(this));onSubmit=void tt(this);store;unsubscribeStore;nativeFormId=Ne("rui-form");lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let i=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{i(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,r)=>{this.ensureStore().updateFieldOptions(e,r)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0})}onConnected(){this.wireOrphanSubmitButtons()}queryNativeForm(){return this.getRef("form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let r of this.querySelectorAll("button[type=submit]"))e.contains(r)||r.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(async r=>{if(this.submitEvent.emit({values:r}),typeof this.onSubmit=="function"){await this.onSubmit(r);return}this.hasNativeSubmission()&&this.queryNativeForm()?.submit()},r=>{this.invalidEvent.emit({errors:r})})}hasNativeSubmission(){return typeof this.onSubmit!="function"&&(this.getAttribute("action")!==null||this.getAttribute("method")!==null)}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(H);if(!e)return this.defaultValues??{};try{let r=JSON.parse(e);return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store||(this.store=new D({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})),this.unsubscribeStore??=this.store.subscribe(()=>this.publishFormContext()),this.store}buildFieldPresentations(e){let r={};for(let i of e.getRegisteredFieldNames()){let n=e.getFieldError(i),o=e.shouldDisplayFieldError(i);r[i]={error:o?n:void 0,invalid:!!(o&&n)}}return r}publishFormContext(e){let r=this.store;if(!r)return;let i=r.getRevision();if(!e?.force&&i===this.lastPublishedRevision)return;this.lastPublishedRevision=i;let n={ready:!0,store:r,revision:i,fields:this.buildFieldPresentations(r),errors:{...r.errors},actions:this.formActions};this.lastPublishedContext=n,this.formProvider.setContext(n);for(let o of this.presentationListeners)o(n)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}static{Le()}};function Pt({children:t,defaultValues:e,defaultValuesData:r,resolver:i,reValidateMode:n,onSubmit:o,action:c,method:s,...T}){return lt("rui-form",{...T,action:c,method:s,reValidateMode:n,"attr:revalidate-mode":n,"prop:defaultValues":e,"prop:resolver":i,"prop:onSubmit":o,data:{defaultValues:r??(e!==void 0?JSON.stringify(e):void 0)},children:lt("form",{class:"rui-form","data-ref":"form",noValidate:!0,action:c,method:s,children:t})})}export{D as FormStore,Y as RUI_CONTROL_ATTR,At as RUI_FIELD_DESCRIPTION_ATTR,St as RUI_FIELD_ERROR_ATTR,gt as RUI_FIELD_LABEL_ATTR,yt as RUI_FIELD_MANAGED_ATTR,Pt as RuiForm,at as RuiFormElement,X as createRulesResolver,Tt as findFieldControl,W as formContext,xt as isNativeTextControl,wt as readControlValue,Ct as registerFieldControl,be as runRulesResolver,It as writeControlValue};
1
+ import{jsx as lt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as nt,customElement as qt,event as st,onEvent as te,onUpdated as ot,prop as _}from"@ecopages/radiant";import{provideContext as Ut}from"@ecopages/radiant/context";import{createContext as dt}from"@ecopages/radiant/context";var X=dt(Symbol.for("rui-form-context"));function F(t,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:t}function A(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function ft(t,e,r,i){if(r)for(let n of[ct,ht,mt,bt]){let o=await n(e,r,i);if(o)return o}}function ct(t,e){let r=t==null||t===""||t===!1||Array.isArray(t)&&t.length===0;return e.required&&r?F("This field is required",e.required)??"This field is required":void 0}function ht(t,e){let r=typeof t=="number"?t:typeof t=="string"&&t!==""?Number(t):void 0;if(!(r===void 0||Number.isNaN(r))){if(e.min!==void 0&&r<A(e.min))return F(`Minimum value is ${A(e.min)}`,e.min);if(e.max!==void 0&&r>A(e.max))return F(`Maximum value is ${A(e.max)}`,e.max)}}function mt(t,e){let r=t==null?"":String(t);if(e.minLength!==void 0&&r.length<A(e.minLength))return F(`Minimum length is ${A(e.minLength)}`,e.minLength);if(e.maxLength!==void 0&&r.length>A(e.maxLength))return F(`Maximum length is ${A(e.maxLength)}`,e.maxLength);if(e.pattern!==void 0&&!A(e.pattern).test(r))return F("Invalid format",e.pattern)??"Invalid format"}async function bt(t,e,r){if(!e.validate)return;let i=typeof e.validate=="function"?[e.validate]:Object.values(e.validate);for(let n of i){let o=await n(t,r);if(o!==!0&&o!==void 0)return o===!1?"Invalid value":String(o)}}async function pe(t,e,r){let i=r??Object.keys(e.fields),n={};for(let o of i){let c=e.fields[o]?.rules,s=await ft(o,t[o],c,t);s&&(n[o]={type:"validation",message:s})}return Object.keys(n).length>0?{values:{},errors:n}:{values:t,errors:{}}}function Y(){return(t,e,r)=>pe(t,e,r.names)}function ve(t){return typeof t=="function"?t:Y()}var D=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=ve(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=ve(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let r=this.fields.get(e.name),i={...e,rules:e.rules??r?.rules,defaultValue:e.defaultValue??r?.defaultValue,getRules:e.getRules??r?.getRules};return this.fields.set(e.name,i),this.values[e.name]===void 0&&i.defaultValue!==void 0&&(this.values={...this.values,[e.name]:i.defaultValue}),i.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===i&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,r){let i=this.fields.get(e);i&&(r.rules!==void 0&&(i.rules=r.rules),r.defaultValue!==void 0&&(i.defaultValue=r.defaultValue))}getValues(){let e={...this.values};for(let[r,i]of this.fields)e[r]=i.getValue();return e}setValue(e,r,i){this.values={...this.values,[e]:r},this.fields.get(String(e))?.setValue(r),i?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),i?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let r={...this.errors};delete r[e],this.errors=r,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),r=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:r===0}}async validateField(e){let r=this.getValues(),n=(await this.resolver(r,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,o={...this.errors};return n?o[e]={type:"validation",message:n}:delete o[e],this.errors=o,this.notify(),!n}async validateAll(){let e=this.getValues(),r=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=r.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,r){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return r==="change";case"onBlur":return r==="blur";case"onTouched":return r==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let r=this.fields.get(e);if(!r)return;let i=r.getValue();this.values={...this.values,[e]:i},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,r){this.isSubmitting=!0,this.isSubmitted=!0;for(let n of this.fields.keys())this.touched={...this.touched,[n]:!0};this.notify();let i=await this.validateAll();if(this.isSubmitting=!1,this.notify(),i){await e(this.getValues());return}r?.(this.errors)}reset(e){let r=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...r},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let i of this.fields.values())i.setValue(this.values[i.name]);this.notify()}collectFieldDefaults(){let e={};for(let[r,i]of this.fields)i.defaultValue!==void 0&&(e[r]=i.defaultValue);return e}buildResolverFields(){let e={};for(let[r,i]of this.fields){let n=i.getRules?.()??i.rules;e[r]={rules:n}}return e}};function ye(t){return t?Se(t.split(",")):[]}function pt(t){return t.join(",")}var Ae={fromAttribute:t=>ye(t),toAttribute:t=>t.length>0?pt(t):null,fromProperty:t=>Array.isArray(t)?Se(t.map(String)):typeof t=="string"?ye(t):[]};function ge(t){return t?t.split(",").map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function vt(t){return t.join(",")}var Re={fromAttribute:t=>ge(t),toAttribute:t=>t.length>0?vt(t):null,fromProperty:t=>Array.isArray(t)?t.map(Number).filter(e=>Number.isFinite(e)):typeof t=="number"&&Number.isFinite(t)?[t]:typeof t=="string"?ge(t):[]};function Se(t){return[...new Set(t.map(e=>e.trim()).filter(Boolean))]}var H="data-rui-control",yt="data-rui-field-managed",gt="data-rui-field-label",At="data-rui-field-description",Rt="data-rui-field-error";var ee="data-default-values";var Fe='[data-ref="field"]';function Ee(){return`[${H}], ${Te()}`}function Te(){return Array.from(E.keys()).join(", ")}function St(t){return t.localName==="rui-listbox"&&(t.hasAttribute("embedded")||Reflect.get(t,"embedded")===!0)}function xt(t){return t.localName==="input"||t.localName==="textarea"}function Ce(t){return t.localName==="input"}function we(t){return t.localName==="textarea"}var j={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",r)}},xe={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let r=t.getAttribute("value");return r==null||r===""?"":Number(r)},write:(t,e)=>{let r=e==null?"":String(e);t.setAttribute("value",r),"value"in t&&Reflect.set(t,"value",e)}},_e={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}};function Ie(t,e){let r=Reflect.get(t,"value");return r!==void 0&&e.fromProperty?e.fromProperty(r):e.fromAttribute?e.fromAttribute(t.getAttribute("value")):r}function De(t,e){Reflect.set(t,"value",e)}var N={read:t=>Ie(t,Ae),write:De},_t={read:t=>Ie(t,Re),write:De},E=new Map([["rui-checkbox",_e],["rui-switch",_e],["rui-combobox",{...N,submission:"none"}],["rui-date-field",j],["rui-date-input",{...j,submission:"host"}],["rui-date-range-picker",j],["rui-select",{...N,submission:"none"}],["rui-radio-group",j],["rui-checkbox-group",N],["rui-listbox",N],["rui-tag-group",N],["rui-slider",{..._t,submission:"host"}],["rui-knob",{...xe,submission:"host"}],["rui-number-field",{...xe,submission:"host"}]]);function Vt(t,e){let r=t,i=new Set,n=s=>{i.has(s)||(i.add(s),e(s))};if(typeof r.getSlotElements=="function")for(let s of r.getSlotElements())n(s);let o=t.querySelector(Fe)??t;for(let s of Array.from(o.children))n(s);for(let s of o.querySelectorAll("*"))n(s);for(let s of Array.from(t.children))n(s);let c=t.shadowRoot;if(c)for(let s of Array.from(c.children))n(s)}function Ve(t){let e=t.filter(r=>!St(r));return e.length===0?null:e.find(r=>!e.some(i=>i!==r&&i.contains(r)))??null}function Ft(t){let e=[];return Vt(t,r=>{r instanceof HTMLElement&&r.matches(Ee())&&e.push(r)}),e}function Et(t){let e=t.querySelector(Fe);return e instanceof HTMLElement?Array.from(e.querySelectorAll(Ee())).filter(r=>t.contains(r)):[]}function Tt(t){let e=Ve(Et(t));return e||Ve(Ft(t))}function Ct(t,e){let r=t.toLowerCase();E.set(r,e)}function wt(t){if(Ce(t)){let r=P(t),i=r===t?void 0:E.get(r.localName);return i?i.read(r):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(we(t))return t.value;let e=P(t);return E.get(e.localName)?.read(e)??e.getAttribute("value")??""}function It(t,e){if(Ce(t)){let i=P(t),n=i===t?void 0:E.get(i.localName);if(n){n.write(i,e);return}if(t.type==="checkbox"){t.checked=!!e;let o=t.closest("rui-checkbox, rui-switch");o&&(e?o.setAttribute("checked",""):o.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(we(t)){t.value=e==null?"":String(e);return}let r=P(t);E.get(r.localName)?.write(r,e)}function P(t){return t.hasAttribute(H)?t.closest(Te())??t:t}var Dt=/^[A-Za-z][A-Za-z0-9_-]*$/;function Ne(t){return Dt.test(t)}function Nt(t){let e=t.trim();if(Ne(e))return e;let r=`rui-${e}`;return e&&Ne(r)?r:"rui"}function ke(t){let e=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${Nt(t)}-${e}`}var Le,Oe,Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt,rt;function kt(t,e,r,i,n,o){var c,s,T,$,k,z,C,re=Symbol.metadata||Symbol.for("Symbol.metadata"),ie=Object.defineProperty,G=Object.create,ne=[G(null),G(null)],se=e.length;function L(u,p,m){return function(a,l){p&&(l=a,a=t);for(var v=0;v<u.length;v++)l=u[v].apply(a,m?[l]:[]);return m?l:a}}function R(u,p,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(p+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function oe(u,p,m,a,l,v,x,b,y,g,ae){function J(f){if(!ae(f))throw new TypeError("Attempted to access private element on non-instance")}var Z=[].concat(p[0]),le=p[3],K=!x,w=l===1,de=l===3,fe=l===4,O=l===2;function M(f,V,me){return function(U,be){return V&&(be=U,U=u),me&&me(U),d[f].call(U,be)}}if(!K){var d={},Q=[],S=de?"get":fe||w?"set":"value";if(y?(g||w?d={get:it(function(){return le(this)},a,"get"),set:function(f){p[4](this,f)}}:d[S]=le,g||it(d[S],a,O?"":S)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((s=ne[+b][a])&&(s^l)!==7)throw Error("Decorating two elements with the same name ("+d[S].name+") is not supported yet");ne[+b][a]=l<3?1:l}}for(var h=u,q=Z.length-1;q>=0;q-=m?2:1){var ce=R(Z[q],"A decorator","be",!0),he=m?Z[q-1]:void 0,W={},I={kind:["field","accessor","method","getter","setter","class"][l],name:a,metadata:c,addInitializer:function(f,V){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");R(V,"An initializer","be",!0),v.push(V)}.bind(null,W)};if(K)s=ce.call(he,h,I),W.v=1,R(s,"class decorators","return")&&(h=s);else if(I.static=b,I.private=y,s=I.access={has:y?ae.bind():function(f){return a in f}},fe||(s.get=y?O?function(f){return J(f),d.value}:M("get",0,J):function(f){return f[a]}),O||de||(s.set=y?M("set",0,J):function(f,V){f[a]=V}),h=ce.call(he,w?{get:d.get,set:d.set}:d[S],I),W.v=1,w){if(typeof h=="object"&&h)(s=R(h.get,"accessor.get"))&&(d.get=s),(s=R(h.set,"accessor.set"))&&(d.set=s),(s=R(h.init,"accessor.init"))&&Q.unshift(s);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else R(h,(g?"field":"method")+" decorators","return")&&(g?Q.unshift(h):d[S]=h)}return l<2&&x.push(L(Q,b,1),L(v,b,0)),g||K||(y?w?x.splice(-1,0,M("get",b),M("set",b)):x.push(O?d[S]:R.call.bind(d[S])):ie(u,a,d)),h}function ue(u){return ie(u,re,{configurable:!0,enumerable:!0,value:c})}return o!==void 0&&(c=o[re]),c=G(c??null),k=[],z=function(u){u&&k.push(L(u))},C=function(u,p){for(var m=0;m<r.length;m++){var a=r[m],l=a[1],v=7&l;if((8&l)==u&&!v==p){var x=a[2],b=!!a[3],y=16&l;oe(u?t:t.prototype,a,y,b?"#"+x:Lt(x),v,v<2?[]:u?$=$||[]:T=T||[],k,!!u,b,p,u&&b?function(g){return Mt(g)===t}:n)}}},C(8,0),C(0,0),C(8,1),C(0,1),z(T),z($),s=k,se||ue(t),{e:s,get c(){var u=[];return se&&[ue(t=oe(t,[e],i,t.name,5,u)),L(u,1)]}}}function Lt(t){var e=Ot(t,"string");return typeof e=="symbol"?e:e+""}function Ot(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var i=r.call(t,e||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function it(t,e,r){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:r?r+" "+e:e})}catch{}return t}function Mt(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var ut=()=>{},jt={register:()=>ut,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>ut},B,at=class extends nt{static{({e:[Me,qe,Ue,je,Pe,Be,$e,ze,Ge,Je,Ze,Ke,Qe,We,Xe,Ye,He,et,tt,rt,Le],c:[B,Oe]}=kt(this,[qt("rui-form")],[[Ut({context:X,initialValue:{ready:!1,store:void 0,revision:0,fields:{},errors:{},actions:jt},hydrate:Object,serialize:({revision:e,fields:r,errors:i})=>({ready:!1,revision:e,fields:r,errors:i})}),0,"formProvider"],[st({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[st({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[_({type:Object,defaultValue:{}}),0,"defaultValues"],[_({type:String,attribute:ee}),0,"defaultValuesData"],[_({type:Object}),0,"resolver"],[_({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[_({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[_({type:String,reflect:!0}),0,"action"],[_({type:String,reflect:!0}),0,"method"],[ot(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[ot(["resolver"]),2,"syncResolver"],[te({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[te({ref:"form",type:"submit"}),2,"onNativeSubmit"],[te({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,nt))}formProvider=(Le(this),Me(this));submitEvent=(qe(this),Ue(this));invalidEvent=(je(this),Pe(this));defaultValues=(Be(this),$e(this));defaultValuesData=(ze(this),Ge(this));resolver=(Je(this),Ze(this));mode=(Ke(this),Qe(this));reValidateMode=(We(this),Xe(this));action=(Ye(this),He(this));method=(et(this),tt(this));onSubmit=void rt(this);store;unsubscribeStore;nativeFormId=ke("rui-form");lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let i=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{i(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,r)=>{this.ensureStore().updateFieldOptions(e,r)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0})}onConnected(){this.wireOrphanSubmitButtons()}queryNativeForm(){return this.getRef("form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let r of this.querySelectorAll("button[type=submit]"))e.contains(r)||r.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(async r=>{if(this.submitEvent.emit({values:r}),typeof this.onSubmit=="function"){await this.onSubmit(r);return}this.hasNativeSubmission()&&this.queryNativeForm()?.submit()},r=>{this.invalidEvent.emit({errors:r})})}hasNativeSubmission(){return typeof this.onSubmit!="function"&&(this.getAttribute("action")!==null||this.getAttribute("method")!==null)}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(ee);if(!e)return this.defaultValues??{};try{let r=JSON.parse(e);return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store||(this.store=new D({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})),this.unsubscribeStore??=this.store.subscribe(()=>this.publishFormContext()),this.store}buildFieldPresentations(e){let r={};for(let i of e.getRegisteredFieldNames()){let n=e.getFieldError(i),o=e.shouldDisplayFieldError(i);r[i]={error:o?n:void 0,invalid:!!(o&&n)}}return r}publishFormContext(e){let r=this.store;if(!r)return;let i=r.getRevision();if(!e?.force&&i===this.lastPublishedRevision)return;this.lastPublishedRevision=i;let n={ready:!0,store:r,revision:i,fields:this.buildFieldPresentations(r),errors:{...r.errors},actions:this.formActions};this.lastPublishedContext=n,this.formProvider.setContext(n);for(let o of this.presentationListeners)o(n)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}static{Oe()}};function Pt({children:t,defaultValues:e,defaultValuesData:r,resolver:i,reValidateMode:n,onSubmit:o,action:c,method:s,...T}){return lt(B,{...T,action:c,method:s,reValidateMode:n,"attr:revalidate-mode":n,"prop:defaultValues":e,"prop:resolver":i,"prop:onSubmit":o,data:{defaultValues:r??(e!==void 0?JSON.stringify(e):void 0)},children:lt("form",{class:"rui-form","data-ref":"form",noValidate:!0,action:c,method:s,children:t})})}export{D as FormStore,H as RUI_CONTROL_ATTR,At as RUI_FIELD_DESCRIPTION_ATTR,Rt as RUI_FIELD_ERROR_ATTR,gt as RUI_FIELD_LABEL_ATTR,yt as RUI_FIELD_MANAGED_ATTR,Pt as RuiForm,B as RuiFormElement,Y as createRulesResolver,Tt as findFieldControl,X as formContext,xt as isNativeTextControl,wt as readControlValue,Ct as registerFieldControl,pe as runRulesResolver,It as writeControlValue};
2
2
  //# sourceMappingURL=index.js.map