@nhtio/lucid-resourceful-vue-components 0.1.0-master-e14740ea → 0.1.0-master-dc6af70b

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 (156) hide show
  1. package/{VBtn-DhfYEt9V.mjs → VBtn-CEYzcx0y.mjs} +8 -8
  2. package/{VBtn-DhfYEt9V.mjs.map → VBtn-CEYzcx0y.mjs.map} +1 -1
  3. package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-BHcvHHhM.mjs} +133 -133
  4. package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-BHcvHHhM.mjs.map} +1 -1
  5. package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CkYtN0q5.mjs} +84 -84
  6. package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CkYtN0q5.mjs.map} +1 -1
  7. package/{VHover-DLvOmsjv.mjs → VHover-Bj6QrQff.mjs} +3 -3
  8. package/{VHover-DLvOmsjv.mjs.map → VHover-Bj6QrQff.mjs.map} +1 -1
  9. package/{VListItem-LNaoM8S4.mjs → VListItem-BnxAmKd_.mjs} +55 -55
  10. package/{VListItem-LNaoM8S4.mjs.map → VListItem-BnxAmKd_.mjs.map} +1 -1
  11. package/{VMenu-9rTbTKtH.mjs → VMenu-BSB7YSpb.mjs} +28 -28
  12. package/{VMenu-9rTbTKtH.mjs.map → VMenu-BSB7YSpb.mjs.map} +1 -1
  13. package/{VPicker-BGuRD0KW.mjs → VPicker-DMOVvCIE.mjs} +5 -5
  14. package/{VPicker-BGuRD0KW.mjs.map → VPicker-DMOVvCIE.mjs.map} +1 -1
  15. package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-ByydeX8x.mjs} +21 -21
  16. package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-ByydeX8x.mjs.map} +1 -1
  17. package/{VRow-DaLdbIGw.mjs → VRow-Dmn82Xaa.mjs} +18 -18
  18. package/{VRow-DaLdbIGw.mjs.map → VRow-Dmn82Xaa.mjs.map} +1 -1
  19. package/{VSheet-DnIfs-1c.mjs → VSheet-B9ALb0PQ.mjs} +14 -14
  20. package/{VSheet-DnIfs-1c.mjs.map → VSheet-B9ALb0PQ.mjs.map} +1 -1
  21. package/{actions-8bWGsB-p.mjs → actions-BEmdy8bu.mjs} +11 -11
  22. package/{actions-8bWGsB-p.mjs.map → actions-BEmdy8bu.mjs.map} +1 -1
  23. package/{alert-IW1AIWZw.mjs → alert-DftADRGk.mjs} +13 -13
  24. package/{alert-IW1AIWZw.mjs.map → alert-DftADRGk.mjs.map} +1 -1
  25. package/{bigint-Jmfa2L4S.mjs → bigint-DiC37zMo.mjs} +6 -6
  26. package/{bigint-Jmfa2L4S.mjs.map → bigint-DiC37zMo.mjs.map} +1 -1
  27. package/{boolean-BEY7eBxf.mjs → boolean-DZDryWHA.mjs} +74 -74
  28. package/{boolean-BEY7eBxf.mjs.map → boolean-DZDryWHA.mjs.map} +1 -1
  29. package/{clipboard-BoKd7mFG.mjs → clipboard--JAZokR3.mjs} +14 -14
  30. package/{clipboard-BoKd7mFG.mjs.map → clipboard--JAZokR3.mjs.map} +1 -1
  31. package/{colorUtils-DmtKYNgW.mjs → colorUtils-I1lKouL3.mjs} +3 -3
  32. package/{colorUtils-DmtKYNgW.mjs.map → colorUtils-I1lKouL3.mjs.map} +1 -1
  33. package/{common-BeDAn4wu.mjs → common-BDwb9uGU.mjs} +8881 -8880
  34. package/common-BDwb9uGU.mjs.map +1 -0
  35. package/{component-CjPpW_A2.mjs → component-C-qp70Rp.mjs} +2 -2
  36. package/{component-CjPpW_A2.mjs.map → component-C-qp70Rp.mjs.map} +1 -1
  37. package/components/autorefresh_controller.mjs +1 -1
  38. package/components/control_button.mjs +1 -1
  39. package/components/control_button_bar.mjs +2 -2
  40. package/components/control_menu.mjs +1 -1
  41. package/components/custom_field.mjs +1 -1
  42. package/components/exporter.mjs +1 -1
  43. package/components/fields/bigint.mjs +1 -1
  44. package/components/fields/boolean.mjs +1 -1
  45. package/components/fields/date.mjs +1 -1
  46. package/components/fields/date_time.mjs +1 -1
  47. package/components/fields/enum.mjs +1 -1
  48. package/components/fields/integer.mjs +1 -1
  49. package/components/fields/number.mjs +1 -1
  50. package/components/fields/string.mjs +1 -1
  51. package/components/fields/unsigned_integer.mjs +1 -1
  52. package/components/fields.mjs +9 -9
  53. package/components/form_with_validation.mjs +1 -1
  54. package/components/resourceful_alerter.mjs +1 -1
  55. package/components/resourceful_index.mjs +1 -1
  56. package/components/resourceful_record.mjs +2 -2
  57. package/components/resourceful_record_default_form.mjs +1 -1
  58. package/components/resourceful_record_form.mjs +1 -1
  59. package/components/sortable.mjs +1 -1
  60. package/components/svg_icon.mjs +1 -1
  61. package/components/timezone_picker.mjs +1 -1
  62. package/components.mjs +23 -23
  63. package/composables.mjs +11 -11
  64. package/{console-CRXioSFP.mjs → console-CAez8ceh.mjs} +2 -2
  65. package/{console-CRXioSFP.mjs.map → console-CAez8ceh.mjs.map} +1 -1
  66. package/{custom-Y1WJVKP9.mjs → custom-Tm6_792A.mjs} +12 -12
  67. package/{custom-Y1WJVKP9.mjs.map → custom-Tm6_792A.mjs.map} +1 -1
  68. package/{date-BxEeCNWD.mjs → date-CxaBVvlO.mjs} +10 -10
  69. package/{date-BxEeCNWD.mjs.map → date-CxaBVvlO.mjs.map} +1 -1
  70. package/{date_time-6kpv7eDF.mjs → date_time-DhABUkGT.mjs} +169 -169
  71. package/{date_time-6kpv7eDF.mjs.map → date_time-DhABUkGT.mjs.map} +1 -1
  72. package/{display-DvzWa1QO.mjs → display-BdjbLG1_.mjs} +32 -32
  73. package/{display-DvzWa1QO.mjs.map → display-BdjbLG1_.mjs.map} +1 -1
  74. package/{display-CO0pTIEs.mjs → display-DPktlWOz.mjs} +42 -42
  75. package/{display-CO0pTIEs.mjs.map → display-DPktlWOz.mjs.map} +1 -1
  76. package/{display-kAyhIPBH.mjs → display-DazBkrbZ.mjs} +7 -7
  77. package/{display-kAyhIPBH.mjs.map → display-DazBkrbZ.mjs.map} +1 -1
  78. package/{elevation-CMzO50xm.mjs → elevation-DFBVIqom.mjs} +56 -56
  79. package/{elevation-CMzO50xm.mjs.map → elevation-DFBVIqom.mjs.map} +1 -1
  80. package/{enum-noYU2Cqh.mjs → enum-KB4xPkOL.mjs} +9 -9
  81. package/{enum-noYU2Cqh.mjs.map → enum-KB4xPkOL.mjs.map} +1 -1
  82. package/factories.mjs +1 -1
  83. package/{field_composer-DpJx0Oz1.mjs → field_composer-CLJuJevf.mjs} +7 -7
  84. package/{field_composer-DpJx0Oz1.mjs.map → field_composer-CLJuJevf.mjs.map} +1 -1
  85. package/{form-CDLcDPyU.mjs → form-9YRVcrxM.mjs} +17 -17
  86. package/{form-CDLcDPyU.mjs.map → form-9YRVcrxM.mjs.map} +1 -1
  87. package/{guards-B99p3BPj.mjs → guards-BrpRx6ly.mjs} +2 -2
  88. package/{guards-B99p3BPj.mjs.map → guards-BrpRx6ly.mjs.map} +1 -1
  89. package/guards.mjs +4 -4
  90. package/helpers.mjs +6 -6
  91. package/{index-B2rKM3mR.mjs → index-BaOM0Cyz.mjs} +8 -8
  92. package/{index-B2rKM3mR.mjs.map → index-BaOM0Cyz.mjs.map} +1 -1
  93. package/{index-C9UuBVyI.mjs → index-BkjiQEyJ.mjs} +12 -12
  94. package/{index-C9UuBVyI.mjs.map → index-BkjiQEyJ.mjs.map} +1 -1
  95. package/{index-slHxe6b-.mjs → index-Bs4A8qUO.mjs} +2 -2
  96. package/{index-slHxe6b-.mjs.map → index-Bs4A8qUO.mjs.map} +1 -1
  97. package/{index-BUpccfIz.mjs → index-BsazeUn6.mjs} +3 -3
  98. package/{index-BUpccfIz.mjs.map → index-BsazeUn6.mjs.map} +1 -1
  99. package/{index-BaWthszI.mjs → index-CWwCXXNl.mjs} +2 -2
  100. package/{index-BaWthszI.mjs.map → index-CWwCXXNl.mjs.map} +1 -1
  101. package/{index-Bi050X9r.mjs → index-DBXOwXpe.mjs} +6 -6
  102. package/{index-Bi050X9r.mjs.map → index-DBXOwXpe.mjs.map} +1 -1
  103. package/{index-CzI9mHIx.mjs → index-DDobJ49b.mjs} +7 -7
  104. package/{index-CzI9mHIx.mjs.map → index-DDobJ49b.mjs.map} +1 -1
  105. package/{index-CIvylvfa.mjs → index-DwOjHbRP.mjs} +44 -44
  106. package/{index-CIvylvfa.mjs.map → index-DwOjHbRP.mjs.map} +1 -1
  107. package/{index-bXmNb9jX.mjs → index-UxsEIZVi.mjs} +4 -4
  108. package/{index-bXmNb9jX.mjs.map → index-UxsEIZVi.mjs.map} +1 -1
  109. package/index.mjs +47 -47
  110. package/{integer-BIJ4_I8y.mjs → integer-uzh0nwpb.mjs} +3 -3
  111. package/{integer-BIJ4_I8y.mjs.map → integer-uzh0nwpb.mjs.map} +1 -1
  112. package/{mdi-CqMJqgQi.mjs → mdi-C9DbASEx.mjs} +40 -40
  113. package/{mdi-CqMJqgQi.mjs.map → mdi-C9DbASEx.mjs.map} +1 -1
  114. package/{number-z_LAINPM.mjs → number-CfHLDQFY.mjs} +28 -28
  115. package/{number-z_LAINPM.mjs.map → number-CfHLDQFY.mjs.map} +1 -1
  116. package/package.json +46 -46
  117. package/{position-Ai5XksAO.mjs → position-CPuNp03H.mjs} +2 -2
  118. package/{position-Ai5XksAO.mjs.map → position-CPuNp03H.mjs.map} +1 -1
  119. package/{props-BYX22zcE.mjs → props-Cq9daNwa.mjs} +4 -4
  120. package/{props-BYX22zcE.mjs.map → props-Cq9daNwa.mjs.map} +1 -1
  121. package/{props-p4f5Pa5h.mjs → props-KPFuptNy.mjs} +8 -8
  122. package/{props-p4f5Pa5h.mjs.map → props-KPFuptNy.mjs.map} +1 -1
  123. package/{renderers-BKUvrrVm.mjs → renderers-COT3aAu3.mjs} +13 -13
  124. package/{renderers-BKUvrrVm.mjs.map → renderers-COT3aAu3.mjs.map} +1 -1
  125. package/{string-Dmr8SRMf.mjs → string-DvwPf_Ob.mjs} +61 -61
  126. package/{string-Dmr8SRMf.mjs.map → string-DvwPf_Ob.mjs.map} +1 -1
  127. package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-C9nrNAn_.mjs} +4 -4
  128. package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-C9nrNAn_.mjs.map} +1 -1
  129. package/useRender-Dpj9Jrbr.mjs +9 -0
  130. package/{useRender-BD1xw5zG.mjs.map → useRender-Dpj9Jrbr.mjs.map} +1 -1
  131. package/{utils-DqXWb-4f.mjs → utils-DxV2ZNaE.mjs} +10 -10
  132. package/{utils-DqXWb-4f.mjs.map → utils-DxV2ZNaE.mjs.map} +1 -1
  133. package/{validation-DS3tTSk5.mjs → validation-CZ6xx4aX.mjs} +4 -4
  134. package/{validation-DS3tTSk5.mjs.map → validation-CZ6xx4aX.mjs.map} +1 -1
  135. package/VBtn.css +0 -1
  136. package/VDatePicker.css +0 -1
  137. package/VEmptyState.css +0 -1
  138. package/VListItem.css +0 -1
  139. package/VMenu.css +0 -1
  140. package/VPicker.css +0 -1
  141. package/VRadioGroup.css +0 -1
  142. package/VSheet.css +0 -1
  143. package/actions.css +0 -1
  144. package/boolean.css +0 -1
  145. package/clipboard.css +0 -1
  146. package/common-BeDAn4wu.mjs.map +0 -1
  147. package/common.css +0 -1
  148. package/date_time.css +0 -1
  149. package/display.css +0 -1
  150. package/display2.css +0 -1
  151. package/elevation.css +0 -1
  152. package/index.css +0 -1
  153. package/mdi.css +0 -1
  154. package/number.css +0 -1
  155. package/string.css +0 -1
  156. package/useRender-BD1xw5zG.mjs +0 -9
@@ -1,7 +1,7 @@
1
- import { p as I, h as P, x as D, w as A, s as M } from "./utils-DqXWb-4f.mjs";
2
- import { m as N, a as U, I as C, V as E } from "./elevation-CMzO50xm.mjs";
1
+ import { p as I, h as P, x as D, w as A, s as M } from "./utils-DxV2ZNaE.mjs";
2
+ import { m as N, a as U, I as C, V as E } from "./elevation-DFBVIqom.mjs";
3
3
  import { defineComponent as R, toRefs as T, computed as d, h as u } from "vue";
4
- import { a as k, V as s, e as q } from "./display-DvzWa1QO.mjs";
4
+ import { a as k, V as s, e as q } from "./display-BdjbLG1_.mjs";
5
5
  const m = I(
6
6
  {
7
7
  cta: {
@@ -228,4 +228,4 @@ export {
228
228
  X as d,
229
229
  m
230
230
  };
231
- //# sourceMappingURL=index-bXmNb9jX.mjs.map
231
+ //# sourceMappingURL=index-UxsEIZVi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-bXmNb9jX.mjs","sources":["../src/private/control-button/props.ts","../src/private/control-button/index.ts"],"sourcesContent":["import { pick } from '@nhtio/vuetifiable/util/helpers'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { makeDensityProps } from '@nhtio/vuetifiable/composables/density'\nimport { makeElevationProps } from '@nhtio/vuetifiable/composables/elevation'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { PropType, ExtractPublicPropTypes } from 'vue'\nimport type { JSXComponent } from '@nhtio/vuetifiable/util/defineComponent'\nimport type { makeVBtnGroupProps } from '@nhtio/vuetifiable/components/VBtnGroup/VBtnGroup'\n\nexport interface ControlButtonState {\n disabled?: boolean | undefined\n loading?: boolean | undefined\n}\n\nexport interface ControlButtonBadgeProps {\n content?: string | undefined | null | JSXComponent\n color?: string | undefined\n}\n\nexport const makeControlButtonProps = propsFactory(\n {\n cta: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n color: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n prependIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n appendIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n dividePrependIcon: {\n type: Boolean,\n default: false,\n },\n divideAppendIcon: {\n type: Boolean,\n default: false,\n },\n state: {\n type: Object as PropType<ControlButtonState>,\n default: () => ({}),\n },\n badge: {\n type: Object as PropType<ControlButtonBadgeProps>,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'button',\n },\n to: {\n type: Object as PropType<RouteLocationRaw | null | undefined>,\n default: null,\n },\n target: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n size: {\n type: String as PropType<'x-small' | 'small' | 'medium' | 'large' | 'x-large'>,\n default: 'x-small',\n },\n height: {\n type: [String, Number] as PropType<string | number | null>,\n default: '24',\n },\n ...makeDensityProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n inOverflowMenu: {\n type: Boolean,\n default: false,\n },\n },\n 'ControlButton'\n)\n\nexport const defaultControlButtonProps = {\n ...getDefaultsForPropFactory(makeControlButtonProps),\n color: 'surface-light',\n}\n\nexport type ControlButtonProps = ExtractPublicPropTypes<ReturnType<typeof makeControlButtonProps>>\n\nexport type VBtnGroupProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnGroupProps>>\n\nexport const makeControlButtonOverrideProps = propsFactory(\n {\n ...pick(makeControlButtonProps(), ['cta', 'color', 'prependIcon', 'appendIcon', 'to']),\n },\n 'ControlButtonOverrideProps'\n)\n\nexport const defaultControlButtonOverrideProps = getDefaultsForPropFactory(\n makeControlButtonOverrideProps\n)\nexport type ControlButtonOverrideProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonOverrideProps>\n>\n","import { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VChip } from 'vuetify/components/VChip'\nimport { makeControlButtonProps } from './props'\nimport { VBtnGroup } from 'vuetify/components/VBtnGroup'\nimport { defineComponent, h, computed, toRefs } from 'vue'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { StyleValue } from 'vue'\nimport type { VBtnGroupProps } from './props'\n\nexport const ControlButton = defineComponent({\n name: 'ControlButton',\n props: makeControlButtonProps(),\n emits: ['click'],\n setup(props, { emit, slots }) {\n const {\n cta,\n color,\n prependIcon,\n dividePrependIcon,\n appendIcon,\n divideAppendIcon,\n state,\n badge,\n type,\n to,\n target,\n size,\n height,\n density,\n elevation,\n inOverflowMenu,\n } = toRefs(props)\n const vBtnGroupStyleBindings = computed<StyleValue | undefined>(() => {\n if (height.value) {\n return {\n height: convertToUnit(height.value),\n }\n }\n return undefined\n })\n const vBtnGroupBindings = computed<VBtnGroupProps>(() => ({\n divided: true,\n color: color.value,\n density: density.value,\n style: vBtnGroupStyleBindings.value,\n elevation: elevation.value,\n ...stripUndefinedValuesFromObject({\n class: inOverflowMenu.value ? ['w-100'] : undefined,\n }),\n }))\n const vBtnChildren = computed(() => {\n const ret: any[] = []\n if (prependIcon.value && !dividePrependIcon.value) {\n ret.push(\n h(VIcon, {\n icon: prependIcon.value,\n class: [\n {\n 'me-2': cta.value || slots.cta,\n },\n ],\n })\n )\n } else if (slots.prepend && !dividePrependIcon.value) {\n ret.push(slots.prepend(state.value))\n }\n if (slots.cta) {\n ret.push(slots.cta(state.value))\n } else if (cta.value) {\n ret.push(h('span', {}, cta.value))\n }\n if ('undefined' !== typeof badge.value.content && null !== badge.value.content) {\n ret.push(\n h(\n VChip,\n {\n size: size.value,\n color: badge.value.color,\n class: ['ms-2'],\n variant: 'elevated' as const,\n density: 'comfortable' as const,\n },\n () => badge.value.content\n )\n )\n }\n if (appendIcon.value && !divideAppendIcon.value) {\n ret.push(\n h(VIcon, {\n icon: appendIcon.value,\n class: ['ms-2'],\n })\n )\n } else if (slots.append && !divideAppendIcon.value) {\n ret.push(slots.append(state.value))\n }\n return ret\n })\n const isNavigable = computed(() => 'object' === typeof to.value && to.value !== null)\n const onOriginalClick = (e?: Event) => {\n if (e && !['submit', 'reset'].includes(type.value) && !isNavigable.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (\n !state.value.disabled &&\n !state.value.loading &&\n !['submit', 'reset'].includes(type.value) &&\n !isNavigable.value\n ) {\n emit('click', e)\n }\n }\n const vBtnGroupChildren = computed(() => {\n const ret = []\n if (prependIcon.value && dividePrependIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: prependIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.prepend && dividePrependIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.prepend!(state.value)\n )\n )\n }\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n class: [\n 'cta-main-btn',\n {\n 'flex-grow-1': inOverflowMenu.value,\n },\n ],\n },\n () => vBtnChildren.value\n )\n )\n if (appendIcon.value && divideAppendIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: appendIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.append && divideAppendIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.append!(state.value)\n )\n )\n }\n return ret\n })\n return () => h(VBtnGroup, vBtnGroupBindings.value, () => vBtnGroupChildren.value)\n },\n})\n\nexport type ControlButton = InstanceType<typeof ControlButton>\n"],"names":["makeControlButtonProps","propsFactory","IconValue","makeDensityProps","makeElevationProps","defaultControlButtonProps","getDefaultsForPropFactory","makeControlButtonOverrideProps","pick","defaultControlButtonOverrideProps","ControlButton","defineComponent","props","emit","slots","cta","color","prependIcon","dividePrependIcon","appendIcon","divideAppendIcon","state","badge","type","to","target","size","height","density","elevation","inOverflowMenu","toRefs","vBtnGroupStyleBindings","computed","convertToUnit","vBtnGroupBindings","stripUndefinedValuesFromObject","vBtnChildren","ret","h","VIcon","VChip","isNavigable","onOriginalClick","vBtnGroupChildren","VBtn","VBtnGroup"],"mappings":"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"}
1
+ {"version":3,"file":"index-UxsEIZVi.mjs","sources":["../src/private/control-button/props.ts","../src/private/control-button/index.ts"],"sourcesContent":["import { pick } from '@nhtio/vuetifiable/util/helpers'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { makeDensityProps } from '@nhtio/vuetifiable/composables/density'\nimport { makeElevationProps } from '@nhtio/vuetifiable/composables/elevation'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { PropType, ExtractPublicPropTypes } from 'vue'\nimport type { JSXComponent } from '@nhtio/vuetifiable/util/defineComponent'\nimport type { makeVBtnGroupProps } from '@nhtio/vuetifiable/components/VBtnGroup/VBtnGroup'\n\nexport interface ControlButtonState {\n disabled?: boolean | undefined\n loading?: boolean | undefined\n}\n\nexport interface ControlButtonBadgeProps {\n content?: string | undefined | null | JSXComponent\n color?: string | undefined\n}\n\nexport const makeControlButtonProps = propsFactory(\n {\n cta: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n color: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n prependIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n appendIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n dividePrependIcon: {\n type: Boolean,\n default: false,\n },\n divideAppendIcon: {\n type: Boolean,\n default: false,\n },\n state: {\n type: Object as PropType<ControlButtonState>,\n default: () => ({}),\n },\n badge: {\n type: Object as PropType<ControlButtonBadgeProps>,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'button',\n },\n to: {\n type: Object as PropType<RouteLocationRaw | null | undefined>,\n default: null,\n },\n target: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n size: {\n type: String as PropType<'x-small' | 'small' | 'medium' | 'large' | 'x-large'>,\n default: 'x-small',\n },\n height: {\n type: [String, Number] as PropType<string | number | null>,\n default: '24',\n },\n ...makeDensityProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n inOverflowMenu: {\n type: Boolean,\n default: false,\n },\n },\n 'ControlButton'\n)\n\nexport const defaultControlButtonProps = {\n ...getDefaultsForPropFactory(makeControlButtonProps),\n color: 'surface-light',\n}\n\nexport type ControlButtonProps = ExtractPublicPropTypes<ReturnType<typeof makeControlButtonProps>>\n\nexport type VBtnGroupProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnGroupProps>>\n\nexport const makeControlButtonOverrideProps = propsFactory(\n {\n ...pick(makeControlButtonProps(), ['cta', 'color', 'prependIcon', 'appendIcon', 'to']),\n },\n 'ControlButtonOverrideProps'\n)\n\nexport const defaultControlButtonOverrideProps = getDefaultsForPropFactory(\n makeControlButtonOverrideProps\n)\nexport type ControlButtonOverrideProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonOverrideProps>\n>\n","import { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VChip } from 'vuetify/components/VChip'\nimport { makeControlButtonProps } from './props'\nimport { VBtnGroup } from 'vuetify/components/VBtnGroup'\nimport { defineComponent, h, computed, toRefs } from 'vue'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { StyleValue } from 'vue'\nimport type { VBtnGroupProps } from './props'\n\nexport const ControlButton = defineComponent({\n name: 'ControlButton',\n props: makeControlButtonProps(),\n emits: ['click'],\n setup(props, { emit, slots }) {\n const {\n cta,\n color,\n prependIcon,\n dividePrependIcon,\n appendIcon,\n divideAppendIcon,\n state,\n badge,\n type,\n to,\n target,\n size,\n height,\n density,\n elevation,\n inOverflowMenu,\n } = toRefs(props)\n const vBtnGroupStyleBindings = computed<StyleValue | undefined>(() => {\n if (height.value) {\n return {\n height: convertToUnit(height.value),\n }\n }\n return undefined\n })\n const vBtnGroupBindings = computed<VBtnGroupProps>(() => ({\n divided: true,\n color: color.value,\n density: density.value,\n style: vBtnGroupStyleBindings.value,\n elevation: elevation.value,\n ...stripUndefinedValuesFromObject({\n class: inOverflowMenu.value ? ['w-100'] : undefined,\n }),\n }))\n const vBtnChildren = computed(() => {\n const ret: any[] = []\n if (prependIcon.value && !dividePrependIcon.value) {\n ret.push(\n h(VIcon, {\n icon: prependIcon.value,\n class: [\n {\n 'me-2': cta.value || slots.cta,\n },\n ],\n })\n )\n } else if (slots.prepend && !dividePrependIcon.value) {\n ret.push(slots.prepend(state.value))\n }\n if (slots.cta) {\n ret.push(slots.cta(state.value))\n } else if (cta.value) {\n ret.push(h('span', {}, cta.value))\n }\n if ('undefined' !== typeof badge.value.content && null !== badge.value.content) {\n ret.push(\n h(\n VChip,\n {\n size: size.value,\n color: badge.value.color,\n class: ['ms-2'],\n variant: 'elevated' as const,\n density: 'comfortable' as const,\n },\n () => badge.value.content\n )\n )\n }\n if (appendIcon.value && !divideAppendIcon.value) {\n ret.push(\n h(VIcon, {\n icon: appendIcon.value,\n class: ['ms-2'],\n })\n )\n } else if (slots.append && !divideAppendIcon.value) {\n ret.push(slots.append(state.value))\n }\n return ret\n })\n const isNavigable = computed(() => 'object' === typeof to.value && to.value !== null)\n const onOriginalClick = (e?: Event) => {\n if (e && !['submit', 'reset'].includes(type.value) && !isNavigable.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (\n !state.value.disabled &&\n !state.value.loading &&\n !['submit', 'reset'].includes(type.value) &&\n !isNavigable.value\n ) {\n emit('click', e)\n }\n }\n const vBtnGroupChildren = computed(() => {\n const ret = []\n if (prependIcon.value && dividePrependIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: prependIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.prepend && dividePrependIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.prepend!(state.value)\n )\n )\n }\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n class: [\n 'cta-main-btn',\n {\n 'flex-grow-1': inOverflowMenu.value,\n },\n ],\n },\n () => vBtnChildren.value\n )\n )\n if (appendIcon.value && divideAppendIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: appendIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.append && divideAppendIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.append!(state.value)\n )\n )\n }\n return ret\n })\n return () => h(VBtnGroup, vBtnGroupBindings.value, () => vBtnGroupChildren.value)\n },\n})\n\nexport type ControlButton = InstanceType<typeof ControlButton>\n"],"names":["makeControlButtonProps","propsFactory","IconValue","makeDensityProps","makeElevationProps","defaultControlButtonProps","getDefaultsForPropFactory","makeControlButtonOverrideProps","pick","defaultControlButtonOverrideProps","ControlButton","defineComponent","props","emit","slots","cta","color","prependIcon","dividePrependIcon","appendIcon","divideAppendIcon","state","badge","type","to","target","size","height","density","elevation","inOverflowMenu","toRefs","vBtnGroupStyleBindings","computed","convertToUnit","vBtnGroupBindings","stripUndefinedValuesFromObject","vBtnChildren","ret","h","VIcon","VChip","isNavigable","onOriginalClick","vBtnGroupChildren","VBtn","VBtnGroup"],"mappings":"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"}
package/index.mjs CHANGED
@@ -1,44 +1,44 @@
1
- import { R as r, u as a } from "./alert-IW1AIWZw.mjs";
2
- import { F as u, i as l, u as i } from "./validation-DS3tTSk5.mjs";
3
- import { T as R, g as n, a as d, u as m, b as p, c as f } from "./index-BUpccfIz.mjs";
4
- import { S as x, s as S } from "./index-BaWthszI.mjs";
5
- import { S as I, u as C } from "./index-slHxe6b-.mjs";
6
- import { b as g, c as b, E as O, a as T, R as A } from "./index-CIvylvfa.mjs";
7
- import { R as N } from "./index-C9UuBVyI.mjs";
8
- import { a as B, R as P } from "./form-CDLcDPyU.mjs";
9
- import { R as U, r as L, a as M } from "./renderers-BKUvrrVm.mjs";
10
- import { R as h } from "./bigint-Jmfa2L4S.mjs";
11
- import { R as w, b as H, a as k } from "./boolean-BEY7eBxf.mjs";
12
- import { R as q, a as W } from "./date_time-6kpv7eDF.mjs";
13
- import { R as Z } from "./date-BxEeCNWD.mjs";
14
- import { R as G, a as Q } from "./enum-noYU2Cqh.mjs";
15
- import { R as Y } from "./integer-BIJ4_I8y.mjs";
16
- import { R as ee } from "./number-z_LAINPM.mjs";
17
- import { b as se, R as re, a as ae } from "./string-Dmr8SRMf.mjs";
18
- import { R as ue } from "./unsigned_integer-BliPiCXO.mjs";
19
- import { R as ie } from "./custom-Y1WJVKP9.mjs";
20
- import { C as Re } from "./index-B2rKM3mR.mjs";
21
- import { C as de } from "./index-CzI9mHIx.mjs";
22
- import { C as pe } from "./props-p4f5Pa5h.mjs";
23
- import { C as Ee } from "./index-bXmNb9jX.mjs";
24
- import { c as Se, u as Fe } from "./clipboard-BoKd7mFG.mjs";
25
- import { S as Ce, a as _e, u as ge } from "./display-kAyhIPBH.mjs";
1
+ import { R as r, u as a } from "./alert-DftADRGk.mjs";
2
+ import { F as u, i as l, u as c } from "./validation-CZ6xx4aX.mjs";
3
+ import { T as R, g as n, a as d, u as m, b as p, c as f } from "./index-BsazeUn6.mjs";
4
+ import { S as x, s as S } from "./index-CWwCXXNl.mjs";
5
+ import { S as I, u as C } from "./index-Bs4A8qUO.mjs";
6
+ import { b, c as g, E as O, a as T, R as A } from "./index-DwOjHbRP.mjs";
7
+ import { R as N } from "./index-BkjiQEyJ.mjs";
8
+ import { a as B, R as P } from "./form-9YRVcrxM.mjs";
9
+ import { R as U, r as L, a as M } from "./renderers-COT3aAu3.mjs";
10
+ import { R as h } from "./bigint-DiC37zMo.mjs";
11
+ import { R as w, b as H, a as k } from "./boolean-DZDryWHA.mjs";
12
+ import { R as q, a as W } from "./date_time-DhABUkGT.mjs";
13
+ import { R as Z } from "./date-CxaBVvlO.mjs";
14
+ import { R as G, a as Q } from "./enum-KB4xPkOL.mjs";
15
+ import { R as Y } from "./integer-uzh0nwpb.mjs";
16
+ import { R as ee } from "./number-CfHLDQFY.mjs";
17
+ import { b as se, R as re, a as ae } from "./string-DvwPf_Ob.mjs";
18
+ import { R as ue } from "./unsigned_integer-C9nrNAn_.mjs";
19
+ import { R as ce } from "./custom-Tm6_792A.mjs";
20
+ import { C as Re } from "./index-BaOM0Cyz.mjs";
21
+ import { C as de } from "./index-DDobJ49b.mjs";
22
+ import { C as pe } from "./props-KPFuptNy.mjs";
23
+ import { C as Ee } from "./index-UxsEIZVi.mjs";
24
+ import { c as Se, u as Fe } from "./clipboard--JAZokR3.mjs";
25
+ import { S as Ce, a as _e, u as be } from "./display-DazBkrbZ.mjs";
26
26
  import { e as Oe, u as Te } from "./http-BBfnr2c-.mjs";
27
27
  import { f as De, u as Ne } from "./big_number_formatter-BGfIwlog.mjs";
28
- import { R as Be, j as Pe, r as Ve, e as Ue, g as Le, h as Me, k as ve, n as he, l as ze, i as we, m as He, o as ke, f as je, d as qe, p as We, s as Ke, v as Ze, t as Je, q as Ge, u as Qe, c as Xe, b as Ye, a as $e } from "./utils-DqXWb-4f.mjs";
29
- import { u as oo } from "./field_composer-DpJx0Oz1.mjs";
30
- import { u as ro } from "./common-BeDAn4wu.mjs";
31
- import { I as to, s as uo, k as lo, d as io, e as co, f as Ro, i as no, c as mo, a as po, u as fo, j as Eo, h as xo, g as So, b as Fo } from "./ioc-Du_Tgg-1.mjs";
32
- import { B as Co, E as _o, R as go, a as bo, b as Oo, c as To } from "./http-Crw0XAYj.mjs";
28
+ import { R as Be, j as Pe, r as Ve, e as Ue, g as Le, h as Me, k as ve, n as he, l as ze, i as we, m as He, o as ke, b as je, a as qe, p as We, s as Ke, v as Ze, t as Je, q as Ge, u as Qe, f as Xe, d as Ye, c as $e } from "./utils-DxV2ZNaE.mjs";
29
+ import { u as oo } from "./field_composer-CLJuJevf.mjs";
30
+ import { u as ro } from "./common-BDwb9uGU.mjs";
31
+ import { I as to, s as uo, k as lo, d as co, e as io, f as Ro, i as no, c as mo, a as po, u as fo, j as Eo, h as xo, g as So, b as Fo } from "./ioc-Du_Tgg-1.mjs";
32
+ import { B as Co, E as _o, R as bo, a as go, b as Oo, c as To } from "./http-Crw0XAYj.mjs";
33
33
  import { a as Do, c as No, b as yo, E as Bo } from "./exceptions-Bzt_Bw5_.mjs";
34
- import { a as Vo, c as Uo, b as Lo, h as Mo, d as vo, f as ho, e as zo, g as wo, i as Ho } from "./guards-B99p3BPj.mjs";
35
- import { a as jo, i as qo } from "./actions-8bWGsB-p.mjs";
34
+ import { a as Vo, c as Uo, b as Lo, h as Mo, d as vo, f as ho, e as zo, g as wo, i as Ho } from "./guards-BrpRx6ly.mjs";
35
+ import { a as jo, i as qo } from "./actions-BEmdy8bu.mjs";
36
36
  import { E as Ko, a as Zo, b as Jo, c as Go, f as Qo, g as Xo, I as Yo, S as $o, h as es, d as os, i as ss, e as rs } from "./encoding-C1W2Cp3X-DzgQRCVx.mjs";
37
- import { IoCSymbol as ts, ResourcefulIndexScopedDisplaySymbol as us, ResourcefulRecordFormScopedBusConsumerSymbol as ls, ResourcefulRecordFormScopedDisplaySymbol as is, ResourcefulRecordScopedBusConsumerSymbol as cs, ResourcefulRecordScopedDisplaySymbol as Rs } from "./symbols.mjs";
37
+ import { IoCSymbol as ts, ResourcefulIndexScopedDisplaySymbol as us, ResourcefulRecordFormScopedBusConsumerSymbol as ls, ResourcefulRecordFormScopedDisplaySymbol as cs, ResourcefulRecordScopedBusConsumerSymbol as is, ResourcefulRecordScopedDisplaySymbol as Rs } from "./symbols.mjs";
38
38
  import { e as ds, i as ms, q as ps, s as fs } from "./question-BZ_Klr0o.mjs";
39
39
  import { errorIconRaw as xs, infoIconRaw as Ss, questionIconRaw as Fs, successIconRaw as Is, warningIconRaw as Cs } from "./icons.mjs";
40
- import { w as gs } from "./warning-D1tzZbaa.mjs";
41
- const e = "0.1.0-master-e14740ea";
40
+ import { w as bs } from "./warning-D1tzZbaa.mjs";
41
+ const e = "0.1.0-master-dc6af70b";
42
42
  export {
43
43
  Co as BaseException,
44
44
  Ee as ControlButton,
@@ -56,8 +56,8 @@ export {
56
56
  _o as E_UNDECODABLE_RESPONSE,
57
57
  Qo as E_UNDECODABLE_VALUE,
58
58
  Xo as E_UNENCODABLE_VALUE,
59
- g as ExportFormat,
60
- b as ExportScope,
59
+ b as ExportFormat,
60
+ g as ExportScope,
61
61
  O as Exporter,
62
62
  u as FormWithValidation,
63
63
  Yo as IN_BROWSER,
@@ -67,7 +67,7 @@ export {
67
67
  w as RBooleanField,
68
68
  H as RBooleanFieldRenderable,
69
69
  k as RBooleanFieldValue,
70
- ie as RCustomField,
70
+ ce as RCustomField,
71
71
  Z as RDateField,
72
72
  q as RDateTimeField,
73
73
  W as RDateTimeFieldDisplayFormat,
@@ -81,8 +81,8 @@ export {
81
81
  ue as RUnsignedIntegerField,
82
82
  T as ResourcefulAggregateMethods,
83
83
  r as ResourcefulAlerter,
84
- go as ResourcefulAxiosHttpService,
85
- bo as ResourcefulFetchHttpService,
84
+ bo as ResourcefulAxiosHttpService,
85
+ go as ResourcefulFetchHttpService,
86
86
  Be as ResourcefulFieldType,
87
87
  Oo as ResourcefulHttpMethod,
88
88
  A as ResourcefulIndex,
@@ -91,8 +91,8 @@ export {
91
91
  U as ResourcefulRecordDefaultForm,
92
92
  B as ResourcefulRecordForm,
93
93
  ls as ResourcefulRecordFormScopedBusConsumerSymbol,
94
- is as ResourcefulRecordFormScopedDisplaySymbol,
95
- cs as ResourcefulRecordScopedBusConsumerSymbol,
94
+ cs as ResourcefulRecordFormScopedDisplaySymbol,
95
+ is as ResourcefulRecordScopedBusConsumerSymbol,
96
96
  Rs as ResourcefulRecordScopedDisplaySymbol,
97
97
  P as ResourcefulRecordViewMode,
98
98
  $o as SUPPORTS_INTERSECTION,
@@ -156,9 +156,9 @@ export {
156
156
  a as useAlert,
157
157
  Ne as useBigNumberFormatter,
158
158
  lo as useBrowser,
159
- io as useCache,
159
+ co as useCache,
160
160
  Fe as useClipboard,
161
- co as useCron,
161
+ io as useCron,
162
162
  Ro as useCronTab,
163
163
  no as useCurrentTimezone,
164
164
  oo as useFieldComposer,
@@ -173,16 +173,16 @@ export {
173
173
  f as useNormalizedOpacities,
174
174
  Xe as usePassthroughHook,
175
175
  Ye as useProxiedModel,
176
- ge as useScopedDisplay,
176
+ be as useScopedDisplay,
177
177
  $e as useSlot,
178
178
  C as useSortableProps,
179
179
  Eo as useTimezoneOptions,
180
180
  xo as useTimezoneZones,
181
181
  So as useTimezones,
182
- i as useValidation,
182
+ c as useValidation,
183
183
  Fo as useValidator,
184
184
  e as version,
185
185
  Cs as warningIconRaw,
186
- gs as warningIconUrl
186
+ bs as warningIconUrl
187
187
  };
188
188
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
- import { p as u, y as d } from "./utils-DqXWb-4f.mjs";
1
+ import { p as u, y as d } from "./utils-DxV2ZNaE.mjs";
2
2
  import { defineComponent as b, toRefs as F, computed as s, camelize as R, h as g } from "vue";
3
- import { a as v, r, R as f } from "./number-z_LAINPM.mjs";
3
+ import { a as v, r, R as f } from "./number-CfHLDQFY.mjs";
4
4
  const j = u(
5
5
  {
6
6
  ...d(v(), ["precision"])
@@ -35,4 +35,4 @@ export {
35
35
  N as R,
36
36
  j as m
37
37
  };
38
- //# sourceMappingURL=integer-BIJ4_I8y.mjs.map
38
+ //# sourceMappingURL=integer-uzh0nwpb.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"integer-BIJ4_I8y.mjs","sources":["../src/private/fields/integer.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Integer Field\n|--------------------------------------------------------------------------\n|\n| A specialized integer input field component that wraps RNumberField with\n| integer-specific constraints and optimizations for whole number values.\n|\n| **Key Features:**\n| - **Integer-Only Input**: Forces precision: 0 and step: 1 for whole numbers\n| - **RNumberField Foundation**: Inherits all advanced features (controls, formatting, validation)\n| - **Clean API**: Removes inappropriate props (precision, step) from public interface\n| - **Perfect Wrapper**: Zero code duplication while providing integer-specific behavior\n| - **Multiple Mode**: Chip-based interface for integer arrays with formatted display\n| - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n| - **Advanced Controls**: Custom increment/decrement buttons with smart icon adaptation\n| - **Numeral.js Integration**: Professional formatting (thousands separators, custom patterns)\n|\n| **Inherited Features from RNumberField:**\n| - Custom control variants (default, stacked, split, hidden)\n| - Icon customization (increment, decrement, collapse, expand)\n| - Min/max validation with visual feedback\n| - Advanced accessibility (keyboard navigation, ARIA support)\n| - Mobile-optimized touch controls\n| - Theme integration and zero custom CSS\n|\n| **Usage Examples:**\n| ```vue\n| <!-- Single integer input -->\n| <RIntegerField\n| v-model=\"quantity\"\n| label=\"Quantity\"\n| format=\"0,0\"\n| :min=\"1\"\n| :max=\"999999\"\n| control-variant=\"split\"\n| />\n|\n| <!-- Multiple integers with formatting -->\n| <RIntegerField\n| v-model=\"scores\"\n| multiple\n| label=\"Test Scores\"\n| format=\"0,0\"\n| :min=\"0\"\n| :max=\"100\"\n| />\n|\n| <!-- Read-only display -->\n| <RIntegerField\n| v-model=\"results\"\n| multiple\n| label=\"Results\"\n| format=\"0,0\"\n| render-mode=\"read\"\n| />\n| ```\n|\n| The component automatically enforces integer constraints while providing\n| the full power and flexibility of the underlying RNumberField implementation.\n*/\n\nimport { omit } from '@nhtio/vuetifiable/util/helpers'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { defineComponent, toRefs, computed, camelize, h } from 'vue'\nimport {\n RNumberField,\n makeRNumberFieldProps,\n rNumberFieldEmits as rIntegerFieldEmits,\n} from './number'\nimport type { VNumberInputSlots, RNumberFieldProps } from './number'\nimport type { ExtractPublicPropTypes, SlotsType, ComponentPublicInstance } from 'vue'\n\n/**\n * Factory function to create props for RIntegerField components.\n *\n * Creates a specialized prop set based on RNumberField props with integer-specific\n * constraints. Removes inappropriate props (precision, step) while preserving all\n * other RNumberField capabilities including formatting, validation, and controls.\n *\n * **Omitted Props:**\n * - `precision`: Forced to 0 for integer-only input\n * - `step`: Forced to 1 for whole number increments\n *\n * **Included Props:**\n * - **Core props**: min, max, format, controlVariant\n * - **Icon props**: incrementIcon, decrementIcon, collapseIcon, expandIcon\n * - **Common field props**: multiple, renderMode, choices, validation\n * - **Vuetify props**: variant, density, color, theme, etc.\n *\n * @example\n * ```typescript\n * const MyIntegerField = defineComponent({\n * props: makeRIntegerFieldProps(),\n * // ... component implementation\n * })\n * ```\n *\n * @returns Props factory for RIntegerField components\n * @public\n */\nexport const makeRIntegerFieldProps = propsFactory(\n {\n ...omit(makeRNumberFieldProps(), ['precision']),\n },\n 'RIntegerField'\n)\n\n/**\n * Event emitters for RIntegerField components.\n *\n * Inherits all event signatures from RNumberField to ensure perfect compatibility\n * and consistent behavior across numeric field variants. All events maintain\n * the same parameter types and validation patterns.\n *\n * **Available Events:**\n * - `update:modelValue`: Emitted when integer value(s) change\n * - `update:model-value`: Kebab-case variant of modelValue update\n * - `update:focused`: Emitted when focus state changes\n * - `click:append`: Emitted when append slot is clicked\n * - `click:appendInner`: Emitted when append-inner slot is clicked\n * - `click:clear`: Emitted when clear action is triggered\n * - `click:prependInner`: Emitted when prepend-inner slot is clicked\n * - `click:prepend`: Emitted when prepend slot is clicked\n * - `mousedown:control`: Emitted when control area receives mousedown\n * - `click:control`: Emitted when control area is clicked\n *\n * @example\n * ```vue\n * <RIntegerField\n * v-model=\"count\"\n * @update:modelValue=\"handleValueChange\"\n * @click:clear=\"handleClear\"\n * />\n * ```\n *\n * @public\n */\nexport { rIntegerFieldEmits }\n\n/**\n * Public props interface for RIntegerField components.\n *\n * Provides type-safe access to all available props with integer-specific constraints.\n * Based on RNumberField props but excludes precision and step for cleaner integer API.\n *\n * **Key Props:**\n * - `modelValue`: The current integer value(s) - number | number[] | null | undefined\n * - `multiple`: Enable array input mode with chips\n * - `format`: Numeral.js format string (e.g., \"0,0\", \"#,##0\")\n * - `min`/`max`: Integer range validation\n * - `controlVariant`: Control button layout style\n * - `renderMode`: Display mode (\"edit\" | \"read\")\n *\n * **Automatic Constraints:**\n * - `precision`: Always 0 (no decimals)\n * - `step`: Always 1 (whole number increments)\n *\n * @example\n * ```typescript\n * const props: RIntegerFieldProps = {\n * modelValue: 42,\n * format: \"0,0\",\n * min: 1,\n * max: 999999,\n * controlVariant: \"split\"\n * }\n * ```\n *\n * @public\n */\nexport type RIntegerFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRIntegerFieldProps>>\n\n/**\n * Specialized integer input field component with advanced formatting and validation.\n *\n * A professional integer field that wraps RNumberField with integer-specific constraints,\n * providing a clean API for whole number input while inheriting all advanced features\n * like custom controls, numeral.js formatting, and unified field composer architecture.\n *\n * **Core Features:**\n * - **Integer-Only Input**: Automatically enforces precision: 0 and step: 1\n * - **RNumberField Foundation**: Inherits all advanced capabilities without code duplication\n * - **Clean API Design**: Removes inappropriate props (precision, step) from public interface\n * - **Advanced Formatting**: Numeral.js integration for thousands separators and custom patterns\n * - **Custom Controls**: Fully customizable increment/decrement buttons with smart icons\n * - **Multiple Mode**: Chip-based interface for integer arrays with formatted display\n * - **Read Mode**: Professional display with Oxford comma lists for multiple values\n * - **Smart Validation**: Min/max boundary checking with visual feedback\n * - **Perfect Accessibility**: Full keyboard navigation and screen reader support\n *\n * **Inherited from RNumberField:**\n * - **Control Variants**: default, stacked, split, hidden with adaptive icons\n * - **Icon Customization**: increment, decrement, collapse, expand icons\n * - **Advanced Validation**: Boundary checking with disabled state management\n * - **Mobile Optimization**: Touch-friendly controls with proper sizing\n * - **Theme Integration**: Pure Vuetify styling with zero custom CSS\n * - **Event System**: Complete event forwarding with type safety\n * - **Slot System**: Full slot inheritance for maximum customization\n *\n * **Integer-Specific Behavior:**\n * - Forces `precision: 0` to prevent decimal input\n * - Forces `step: 1` for whole number increments\n * - Optimized default format `\"0,0\"` for integer display\n * - Removes confusing decimal-related props from API\n *\n * **Formatting Examples:**\n * - Basic: `format=\"0,0\"` → `1,234,567`\n * - No separators: `format=\"0\"` → `1234567`\n * - Ordinals: `format=\"0o\"` → `1st, 2nd, 3rd`\n * - Bytes: `format=\"0b\"` → `1KB, 2MB, 3GB`\n *\n * @example\n * ```vue\n * <!-- Single integer input -->\n * <RIntegerField\n * v-model=\"quantity\"\n * label=\"Quantity\"\n * format=\"0,0\"\n * :min=\"1\"\n * :max=\"999999\"\n * control-variant=\"split\"\n * />\n *\n * <!-- Multiple integers -->\n * <RIntegerField\n * v-model=\"scores\"\n * multiple\n * label=\"Test Scores\"\n * format=\"0,0\"\n * :min=\"0\"\n * :max=\"100\"\n * />\n *\n * <!-- Read-only display -->\n * <RIntegerField\n * v-model=\"results\"\n * multiple\n * label=\"Results\"\n * format=\"0,0\"\n * render-mode=\"read\"\n * />\n *\n * <!-- Custom icons and controls -->\n * <RIntegerField\n * v-model=\"count\"\n * label=\"Item Count\"\n * control-variant=\"stacked\"\n * :increment-icon=\"customPlusIcon\"\n * :decrement-icon=\"customMinusIcon\"\n * />\n * ```\n *\n * **Architecture Benefits:**\n * - **Zero Code Duplication**: Leverages RNumberField's complex implementation\n * - **Perfect Type Safety**: Full TypeScript support with proper prop extraction\n * - **Consistent UX**: Identical behavior across all numeric field variants\n * - **Easy Maintenance**: Bug fixes in RNumberField automatically benefit integer field\n * - **Clean Separation**: Integer-specific logic isolated in wrapper component\n *\n * **Performance:**\n * - Minimal overhead through efficient prop binding and event forwarding\n * - Optimal re-rendering through computed prop aggregation\n * - Lazy evaluation of event handlers for better memory usage\n *\n * @public\n */\nexport const RIntegerField = defineComponent({\n name: 'RIntegerField',\n props: makeRIntegerFieldProps(),\n emits: rIntegerFieldEmits,\n slots: Object as SlotsType<VNumberInputSlots>,\n setup(props, { emit, slots }) {\n const all = toRefs(props)\n const computedProps = computed(() =>\n Object.assign({}, ...Object.entries(all).map(([k, v]) => ({ [k]: v.value })))\n )\n const computedEventForwarders = computed(() =>\n Object.assign(\n {},\n ...Object.keys(rIntegerFieldEmits).map((k) => {\n const onKey = camelize(`on-${k}`)\n const boundEmit = emit.bind(null, k as any)\n return { [onKey]: boundEmit }\n })\n )\n )\n const rNumberFieldBindings = computed<RNumberFieldProps>(() => ({\n ...computedProps.value,\n precision: 0,\n step: Math.abs(Math.round(all.step?.value ?? 1)) || 1,\n ...computedEventForwarders.value,\n }))\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return () => h(RNumberField, rNumberFieldBindings.value, slots)\n },\n})\n\n/**\n * Type definition for the RIntegerField component instance.\n *\n * Provides type-safe access to the component's public interface, including\n * all props, slots, emits, and exposed methods. Useful for programmatic\n * component creation and advanced TypeScript integration.\n *\n * @example\n * ```typescript\n * import type { RIntegerField } from './integer'\n *\n * // Component reference typing\n * const integerFieldRef = ref<InstanceType<RIntegerField>>()\n *\n * // Programmatic component creation\n * const IntegerFieldComponent: RIntegerField = defineComponent({\n * // ... implementation\n * })\n * ```\n *\n * @public\n */\nexport type RIntegerField = typeof RIntegerField & ComponentPublicInstance\n"],"names":["makeRIntegerFieldProps","propsFactory","omit","makeRNumberFieldProps","RIntegerField","defineComponent","rIntegerFieldEmits","props","emit","slots","all","toRefs","computedProps","computed","k","v","computedEventForwarders","onKey","camelize","boundEmit","rNumberFieldBindings","h","RNumberField"],"mappings":";;;AAqGO,MAAMA,IAAyBC;AAAA,EACpC;AAAA,IACE,GAAGC,EAAKC,KAAyB,CAAC,WAAW,CAAC;AAAA,EAAA;AAAA,EAEhD;AACF,GAiKaC,IAAgBC,EAAgB;AAAA,EAC3C,MAAM;AAAA,EACN,OAAOL,EAAA;AAAA,EACP,OAAOM;AAAAA,EACP,OAAO;AAAA,EACP,MAAMC,GAAO,EAAE,MAAAC,GAAM,OAAAC,KAAS;AAC5B,UAAMC,IAAMC,EAAOJ,CAAK,GAClBK,IAAgBC;AAAA,MAAS,MAC7B,OAAO,OAAO,CAAA,GAAI,GAAG,OAAO,QAAQH,CAAG,EAAE,IAAI,CAAC,CAACI,GAAGC,CAAC,OAAO,EAAE,CAACD,CAAC,GAAGC,EAAE,MAAA,EAAQ,CAAC;AAAA,IAAA,GAExEC,IAA0BH;AAAA,MAAS,MACvC,OAAO;AAAA,QACL,CAAA;AAAA,QACA,GAAG,OAAO,KAAKP,CAAkB,EAAE,IAAI,CAACQ,MAAM;AAC5C,gBAAMG,IAAQC,EAAS,MAAMJ,CAAC,EAAE,GAC1BK,IAAYX,EAAK,KAAK,MAAMM,CAAQ;AAC1C,iBAAO,EAAE,CAACG,CAAK,GAAGE,EAAA;AAAA,QACpB,CAAC;AAAA,MAAA;AAAA,IACH,GAEIC,IAAuBP,EAA4B,OAAO;AAAA,MAC9D,GAAGD,EAAc;AAAA,MACjB,WAAW;AAAA,MACX,MAAM,KAAK,IAAI,KAAK,MAAMF,EAAI,MAAM,SAAS,CAAC,CAAC,KAAK;AAAA,MACpD,GAAGM,EAAwB;AAAA,IAAA,EAC3B;AAEF,WAAO,MAAMK,EAAEC,GAAcF,EAAqB,OAAOX,CAAK;AAAA,EAChE;AACF,CAAC;"}
1
+ {"version":3,"file":"integer-uzh0nwpb.mjs","sources":["../src/private/fields/integer.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Integer Field\n|--------------------------------------------------------------------------\n|\n| A specialized integer input field component that wraps RNumberField with\n| integer-specific constraints and optimizations for whole number values.\n|\n| **Key Features:**\n| - **Integer-Only Input**: Forces precision: 0 and step: 1 for whole numbers\n| - **RNumberField Foundation**: Inherits all advanced features (controls, formatting, validation)\n| - **Clean API**: Removes inappropriate props (precision, step) from public interface\n| - **Perfect Wrapper**: Zero code duplication while providing integer-specific behavior\n| - **Multiple Mode**: Chip-based interface for integer arrays with formatted display\n| - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n| - **Advanced Controls**: Custom increment/decrement buttons with smart icon adaptation\n| - **Numeral.js Integration**: Professional formatting (thousands separators, custom patterns)\n|\n| **Inherited Features from RNumberField:**\n| - Custom control variants (default, stacked, split, hidden)\n| - Icon customization (increment, decrement, collapse, expand)\n| - Min/max validation with visual feedback\n| - Advanced accessibility (keyboard navigation, ARIA support)\n| - Mobile-optimized touch controls\n| - Theme integration and zero custom CSS\n|\n| **Usage Examples:**\n| ```vue\n| <!-- Single integer input -->\n| <RIntegerField\n| v-model=\"quantity\"\n| label=\"Quantity\"\n| format=\"0,0\"\n| :min=\"1\"\n| :max=\"999999\"\n| control-variant=\"split\"\n| />\n|\n| <!-- Multiple integers with formatting -->\n| <RIntegerField\n| v-model=\"scores\"\n| multiple\n| label=\"Test Scores\"\n| format=\"0,0\"\n| :min=\"0\"\n| :max=\"100\"\n| />\n|\n| <!-- Read-only display -->\n| <RIntegerField\n| v-model=\"results\"\n| multiple\n| label=\"Results\"\n| format=\"0,0\"\n| render-mode=\"read\"\n| />\n| ```\n|\n| The component automatically enforces integer constraints while providing\n| the full power and flexibility of the underlying RNumberField implementation.\n*/\n\nimport { omit } from '@nhtio/vuetifiable/util/helpers'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { defineComponent, toRefs, computed, camelize, h } from 'vue'\nimport {\n RNumberField,\n makeRNumberFieldProps,\n rNumberFieldEmits as rIntegerFieldEmits,\n} from './number'\nimport type { VNumberInputSlots, RNumberFieldProps } from './number'\nimport type { ExtractPublicPropTypes, SlotsType, ComponentPublicInstance } from 'vue'\n\n/**\n * Factory function to create props for RIntegerField components.\n *\n * Creates a specialized prop set based on RNumberField props with integer-specific\n * constraints. Removes inappropriate props (precision, step) while preserving all\n * other RNumberField capabilities including formatting, validation, and controls.\n *\n * **Omitted Props:**\n * - `precision`: Forced to 0 for integer-only input\n * - `step`: Forced to 1 for whole number increments\n *\n * **Included Props:**\n * - **Core props**: min, max, format, controlVariant\n * - **Icon props**: incrementIcon, decrementIcon, collapseIcon, expandIcon\n * - **Common field props**: multiple, renderMode, choices, validation\n * - **Vuetify props**: variant, density, color, theme, etc.\n *\n * @example\n * ```typescript\n * const MyIntegerField = defineComponent({\n * props: makeRIntegerFieldProps(),\n * // ... component implementation\n * })\n * ```\n *\n * @returns Props factory for RIntegerField components\n * @public\n */\nexport const makeRIntegerFieldProps = propsFactory(\n {\n ...omit(makeRNumberFieldProps(), ['precision']),\n },\n 'RIntegerField'\n)\n\n/**\n * Event emitters for RIntegerField components.\n *\n * Inherits all event signatures from RNumberField to ensure perfect compatibility\n * and consistent behavior across numeric field variants. All events maintain\n * the same parameter types and validation patterns.\n *\n * **Available Events:**\n * - `update:modelValue`: Emitted when integer value(s) change\n * - `update:model-value`: Kebab-case variant of modelValue update\n * - `update:focused`: Emitted when focus state changes\n * - `click:append`: Emitted when append slot is clicked\n * - `click:appendInner`: Emitted when append-inner slot is clicked\n * - `click:clear`: Emitted when clear action is triggered\n * - `click:prependInner`: Emitted when prepend-inner slot is clicked\n * - `click:prepend`: Emitted when prepend slot is clicked\n * - `mousedown:control`: Emitted when control area receives mousedown\n * - `click:control`: Emitted when control area is clicked\n *\n * @example\n * ```vue\n * <RIntegerField\n * v-model=\"count\"\n * @update:modelValue=\"handleValueChange\"\n * @click:clear=\"handleClear\"\n * />\n * ```\n *\n * @public\n */\nexport { rIntegerFieldEmits }\n\n/**\n * Public props interface for RIntegerField components.\n *\n * Provides type-safe access to all available props with integer-specific constraints.\n * Based on RNumberField props but excludes precision and step for cleaner integer API.\n *\n * **Key Props:**\n * - `modelValue`: The current integer value(s) - number | number[] | null | undefined\n * - `multiple`: Enable array input mode with chips\n * - `format`: Numeral.js format string (e.g., \"0,0\", \"#,##0\")\n * - `min`/`max`: Integer range validation\n * - `controlVariant`: Control button layout style\n * - `renderMode`: Display mode (\"edit\" | \"read\")\n *\n * **Automatic Constraints:**\n * - `precision`: Always 0 (no decimals)\n * - `step`: Always 1 (whole number increments)\n *\n * @example\n * ```typescript\n * const props: RIntegerFieldProps = {\n * modelValue: 42,\n * format: \"0,0\",\n * min: 1,\n * max: 999999,\n * controlVariant: \"split\"\n * }\n * ```\n *\n * @public\n */\nexport type RIntegerFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRIntegerFieldProps>>\n\n/**\n * Specialized integer input field component with advanced formatting and validation.\n *\n * A professional integer field that wraps RNumberField with integer-specific constraints,\n * providing a clean API for whole number input while inheriting all advanced features\n * like custom controls, numeral.js formatting, and unified field composer architecture.\n *\n * **Core Features:**\n * - **Integer-Only Input**: Automatically enforces precision: 0 and step: 1\n * - **RNumberField Foundation**: Inherits all advanced capabilities without code duplication\n * - **Clean API Design**: Removes inappropriate props (precision, step) from public interface\n * - **Advanced Formatting**: Numeral.js integration for thousands separators and custom patterns\n * - **Custom Controls**: Fully customizable increment/decrement buttons with smart icons\n * - **Multiple Mode**: Chip-based interface for integer arrays with formatted display\n * - **Read Mode**: Professional display with Oxford comma lists for multiple values\n * - **Smart Validation**: Min/max boundary checking with visual feedback\n * - **Perfect Accessibility**: Full keyboard navigation and screen reader support\n *\n * **Inherited from RNumberField:**\n * - **Control Variants**: default, stacked, split, hidden with adaptive icons\n * - **Icon Customization**: increment, decrement, collapse, expand icons\n * - **Advanced Validation**: Boundary checking with disabled state management\n * - **Mobile Optimization**: Touch-friendly controls with proper sizing\n * - **Theme Integration**: Pure Vuetify styling with zero custom CSS\n * - **Event System**: Complete event forwarding with type safety\n * - **Slot System**: Full slot inheritance for maximum customization\n *\n * **Integer-Specific Behavior:**\n * - Forces `precision: 0` to prevent decimal input\n * - Forces `step: 1` for whole number increments\n * - Optimized default format `\"0,0\"` for integer display\n * - Removes confusing decimal-related props from API\n *\n * **Formatting Examples:**\n * - Basic: `format=\"0,0\"` → `1,234,567`\n * - No separators: `format=\"0\"` → `1234567`\n * - Ordinals: `format=\"0o\"` → `1st, 2nd, 3rd`\n * - Bytes: `format=\"0b\"` → `1KB, 2MB, 3GB`\n *\n * @example\n * ```vue\n * <!-- Single integer input -->\n * <RIntegerField\n * v-model=\"quantity\"\n * label=\"Quantity\"\n * format=\"0,0\"\n * :min=\"1\"\n * :max=\"999999\"\n * control-variant=\"split\"\n * />\n *\n * <!-- Multiple integers -->\n * <RIntegerField\n * v-model=\"scores\"\n * multiple\n * label=\"Test Scores\"\n * format=\"0,0\"\n * :min=\"0\"\n * :max=\"100\"\n * />\n *\n * <!-- Read-only display -->\n * <RIntegerField\n * v-model=\"results\"\n * multiple\n * label=\"Results\"\n * format=\"0,0\"\n * render-mode=\"read\"\n * />\n *\n * <!-- Custom icons and controls -->\n * <RIntegerField\n * v-model=\"count\"\n * label=\"Item Count\"\n * control-variant=\"stacked\"\n * :increment-icon=\"customPlusIcon\"\n * :decrement-icon=\"customMinusIcon\"\n * />\n * ```\n *\n * **Architecture Benefits:**\n * - **Zero Code Duplication**: Leverages RNumberField's complex implementation\n * - **Perfect Type Safety**: Full TypeScript support with proper prop extraction\n * - **Consistent UX**: Identical behavior across all numeric field variants\n * - **Easy Maintenance**: Bug fixes in RNumberField automatically benefit integer field\n * - **Clean Separation**: Integer-specific logic isolated in wrapper component\n *\n * **Performance:**\n * - Minimal overhead through efficient prop binding and event forwarding\n * - Optimal re-rendering through computed prop aggregation\n * - Lazy evaluation of event handlers for better memory usage\n *\n * @public\n */\nexport const RIntegerField = defineComponent({\n name: 'RIntegerField',\n props: makeRIntegerFieldProps(),\n emits: rIntegerFieldEmits,\n slots: Object as SlotsType<VNumberInputSlots>,\n setup(props, { emit, slots }) {\n const all = toRefs(props)\n const computedProps = computed(() =>\n Object.assign({}, ...Object.entries(all).map(([k, v]) => ({ [k]: v.value })))\n )\n const computedEventForwarders = computed(() =>\n Object.assign(\n {},\n ...Object.keys(rIntegerFieldEmits).map((k) => {\n const onKey = camelize(`on-${k}`)\n const boundEmit = emit.bind(null, k as any)\n return { [onKey]: boundEmit }\n })\n )\n )\n const rNumberFieldBindings = computed<RNumberFieldProps>(() => ({\n ...computedProps.value,\n precision: 0,\n step: Math.abs(Math.round(all.step?.value ?? 1)) || 1,\n ...computedEventForwarders.value,\n }))\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return () => h(RNumberField, rNumberFieldBindings.value, slots)\n },\n})\n\n/**\n * Type definition for the RIntegerField component instance.\n *\n * Provides type-safe access to the component's public interface, including\n * all props, slots, emits, and exposed methods. Useful for programmatic\n * component creation and advanced TypeScript integration.\n *\n * @example\n * ```typescript\n * import type { RIntegerField } from './integer'\n *\n * // Component reference typing\n * const integerFieldRef = ref<InstanceType<RIntegerField>>()\n *\n * // Programmatic component creation\n * const IntegerFieldComponent: RIntegerField = defineComponent({\n * // ... implementation\n * })\n * ```\n *\n * @public\n */\nexport type RIntegerField = typeof RIntegerField & ComponentPublicInstance\n"],"names":["makeRIntegerFieldProps","propsFactory","omit","makeRNumberFieldProps","RIntegerField","defineComponent","rIntegerFieldEmits","props","emit","slots","all","toRefs","computedProps","computed","k","v","computedEventForwarders","onKey","camelize","boundEmit","rNumberFieldBindings","h","RNumberField"],"mappings":";;;AAqGO,MAAMA,IAAyBC;AAAA,EACpC;AAAA,IACE,GAAGC,EAAKC,KAAyB,CAAC,WAAW,CAAC;AAAA,EAAA;AAAA,EAEhD;AACF,GAiKaC,IAAgBC,EAAgB;AAAA,EAC3C,MAAM;AAAA,EACN,OAAOL,EAAA;AAAA,EACP,OAAOM;AAAAA,EACP,OAAO;AAAA,EACP,MAAMC,GAAO,EAAE,MAAAC,GAAM,OAAAC,KAAS;AAC5B,UAAMC,IAAMC,EAAOJ,CAAK,GAClBK,IAAgBC;AAAA,MAAS,MAC7B,OAAO,OAAO,CAAA,GAAI,GAAG,OAAO,QAAQH,CAAG,EAAE,IAAI,CAAC,CAACI,GAAGC,CAAC,OAAO,EAAE,CAACD,CAAC,GAAGC,EAAE,MAAA,EAAQ,CAAC;AAAA,IAAA,GAExEC,IAA0BH;AAAA,MAAS,MACvC,OAAO;AAAA,QACL,CAAA;AAAA,QACA,GAAG,OAAO,KAAKP,CAAkB,EAAE,IAAI,CAACQ,MAAM;AAC5C,gBAAMG,IAAQC,EAAS,MAAMJ,CAAC,EAAE,GAC1BK,IAAYX,EAAK,KAAK,MAAMM,CAAQ;AAC1C,iBAAO,EAAE,CAACG,CAAK,GAAGE,EAAA;AAAA,QACpB,CAAC;AAAA,MAAA;AAAA,IACH,GAEIC,IAAuBP,EAA4B,OAAO;AAAA,MAC9D,GAAGD,EAAc;AAAA,MACjB,WAAW;AAAA,MACX,MAAM,KAAK,IAAI,KAAK,MAAMF,EAAI,MAAM,SAAS,CAAC,CAAC,KAAK;AAAA,MACpD,GAAGM,EAAwB;AAAA,IAAA,EAC3B;AAEF,WAAO,MAAMK,EAAEC,GAAcF,EAAqB,OAAOX,CAAK;AAAA,EAChE;AACF,CAAC;"}