@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,4 +1,4 @@
1
- import { p as t } from "./utils-DqXWb-4f.mjs";
1
+ import { p as t } from "./utils-DxV2ZNaE.mjs";
2
2
  const o = t(
3
3
  {
4
4
  class: [String, Array, Object],
@@ -12,4 +12,4 @@ const o = t(
12
12
  export {
13
13
  o as m
14
14
  };
15
- //# sourceMappingURL=component-CjPpW_A2.mjs.map
15
+ //# sourceMappingURL=component-C-qp70Rp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-CjPpW_A2.mjs","sources":["../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/composables/component.mjs"],"sourcesContent":["import { propsFactory } from \"../util/propsFactory.mjs\";\nconst makeComponentProps = propsFactory(\n {\n class: [String, Array, Object],\n style: {\n type: [String, Array, Object],\n default: null\n }\n },\n \"component\"\n);\nexport {\n makeComponentProps\n};\n//# sourceMappingURL=component.mjs.map\n"],"names":["makeComponentProps","propsFactory"],"mappings":";AACK,MAACA,IAAqBC;AAAA,EACzB;AAAA,IACE,OAAO,CAAC,QAAQ,OAAO,MAAM;AAAA,IAC7B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACf;AAAA,EACA;AAAA,EACE;AACF;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"component-C-qp70Rp.mjs","sources":["../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/composables/component.mjs"],"sourcesContent":["import { propsFactory } from \"../util/propsFactory.mjs\";\nconst makeComponentProps = propsFactory(\n {\n class: [String, Array, Object],\n style: {\n type: [String, Array, Object],\n default: null\n }\n },\n \"component\"\n);\nexport {\n makeComponentProps\n};\n//# sourceMappingURL=component.mjs.map\n"],"names":["makeComponentProps","propsFactory"],"mappings":";AACK,MAACA,IAAqBC;AAAA,EACzB;AAAA,IACE,OAAO,CAAC,QAAQ,OAAO,MAAM;AAAA,IAC7B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACf;AAAA,EACA;AAAA,EACE;AACF;","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { A as r } from "../index-Bi050X9r.mjs";
1
+ import { A as r } from "../index-DBXOwXpe.mjs";
2
2
  export {
3
3
  r as AutoRefeshController
4
4
  };
@@ -1,4 +1,4 @@
1
- import { C as r } from "../index-bXmNb9jX.mjs";
1
+ import { C as r } from "../index-UxsEIZVi.mjs";
2
2
  export {
3
3
  r as ControlButton
4
4
  };
@@ -1,5 +1,5 @@
1
- import { C as r } from "../index-CzI9mHIx.mjs";
2
- import { C as n } from "../props-p4f5Pa5h.mjs";
1
+ import { C as r } from "../index-DDobJ49b.mjs";
2
+ import { C as n } from "../props-KPFuptNy.mjs";
3
3
  export {
4
4
  r as ControlButtonBar,
5
5
  n as ControllerButtonBarJustification
@@ -1,4 +1,4 @@
1
- import { C as e } from "../index-B2rKM3mR.mjs";
1
+ import { C as e } from "../index-BaOM0Cyz.mjs";
2
2
  export {
3
3
  e as ControlMenu
4
4
  };
@@ -1,4 +1,4 @@
1
- import { R as m } from "../custom-Y1WJVKP9.mjs";
1
+ import { R as m } from "../custom-Tm6_792A.mjs";
2
2
  export {
3
3
  m as RCustomField
4
4
  };
@@ -1,4 +1,4 @@
1
- import { b as p, c as t, E as a } from "../index-CIvylvfa.mjs";
1
+ import { b as p, c as t, E as a } from "../index-DwOjHbRP.mjs";
2
2
  export {
3
3
  p as ExportFormat,
4
4
  t as ExportScope,
@@ -1,4 +1,4 @@
1
- import { R as o } from "../../bigint-Jmfa2L4S.mjs";
1
+ import { R as o } from "../../bigint-DiC37zMo.mjs";
2
2
  export {
3
3
  o as RBigIntField
4
4
  };
@@ -1,4 +1,4 @@
1
- import { R as l, b as o, a as R } from "../../boolean-BEY7eBxf.mjs";
1
+ import { R as l, b as o, a as R } from "../../boolean-DZDryWHA.mjs";
2
2
  export {
3
3
  l as RBooleanField,
4
4
  o as RBooleanFieldRenderable,
@@ -1,4 +1,4 @@
1
- import { R as o } from "../../date-BxEeCNWD.mjs";
1
+ import { R as o } from "../../date-CxaBVvlO.mjs";
2
2
  export {
3
3
  o as RDateField
4
4
  };
@@ -1,4 +1,4 @@
1
- import { R as i, a as m } from "../../date_time-6kpv7eDF.mjs";
1
+ import { R as i, a as m } from "../../date_time-DhABUkGT.mjs";
2
2
  export {
3
3
  i as RDateTimeField,
4
4
  m as RDateTimeFieldDisplayFormat
@@ -1,4 +1,4 @@
1
- import { R, a as d } from "../../enum-noYU2Cqh.mjs";
1
+ import { R, a as d } from "../../enum-KB4xPkOL.mjs";
2
2
  export {
3
3
  R as REnumField,
4
4
  d as REnumFieldRenderable
@@ -1,4 +1,4 @@
1
- import { R as o } from "../../integer-BIJ4_I8y.mjs";
1
+ import { R as o } from "../../integer-uzh0nwpb.mjs";
2
2
  export {
3
3
  o as RIntegerField
4
4
  };
@@ -1,4 +1,4 @@
1
- import { R as m } from "../../number-z_LAINPM.mjs";
1
+ import { R as m } from "../../number-CfHLDQFY.mjs";
2
2
  export {
3
3
  m as RNumberField
4
4
  };
@@ -1,4 +1,4 @@
1
- import { b as o, R as a, a as e } from "../../string-Dmr8SRMf.mjs";
1
+ import { b as o, R as a, a as e } from "../../string-DvwPf_Ob.mjs";
2
2
  export {
3
3
  o as RStringColorFieldMode,
4
4
  a as RStringField,
@@ -1,4 +1,4 @@
1
- import { R as r } from "../../unsigned_integer-BliPiCXO.mjs";
1
+ import { R as r } from "../../unsigned_integer-C9nrNAn_.mjs";
2
2
  export {
3
3
  r as RUnsignedIntegerField
4
4
  };
@@ -1,12 +1,12 @@
1
- import { R as o } from "../bigint-Jmfa2L4S.mjs";
2
- import { R, b as i, a as l } from "../boolean-BEY7eBxf.mjs";
3
- import { R as d, a as s } from "../date_time-6kpv7eDF.mjs";
4
- import { R as m } from "../date-BxEeCNWD.mjs";
5
- import { R as p, a as f } from "../enum-noYU2Cqh.mjs";
6
- import { R as g } from "../integer-BIJ4_I8y.mjs";
7
- import { R as u } from "../number-z_LAINPM.mjs";
8
- import { b as D, R as I, a as S } from "../string-Dmr8SRMf.mjs";
9
- import { R as T } from "../unsigned_integer-BliPiCXO.mjs";
1
+ import { R as o } from "../bigint-DiC37zMo.mjs";
2
+ import { R, b as i, a as l } from "../boolean-DZDryWHA.mjs";
3
+ import { R as d, a as s } from "../date_time-DhABUkGT.mjs";
4
+ import { R as m } from "../date-CxaBVvlO.mjs";
5
+ import { R as p, a as f } from "../enum-KB4xPkOL.mjs";
6
+ import { R as g } from "../integer-uzh0nwpb.mjs";
7
+ import { R as u } from "../number-CfHLDQFY.mjs";
8
+ import { b as D, R as I, a as S } from "../string-DvwPf_Ob.mjs";
9
+ import { R as T } from "../unsigned_integer-C9nrNAn_.mjs";
10
10
  export {
11
11
  o as RBigIntField,
12
12
  R as RBooleanField,
@@ -1,4 +1,4 @@
1
- import { F as i } from "../validation-DS3tTSk5.mjs";
1
+ import { F as i } from "../validation-CZ6xx4aX.mjs";
2
2
  export {
3
3
  i as FormWithValidation
4
4
  };
@@ -1,4 +1,4 @@
1
- import { R as o } from "../alert-IW1AIWZw.mjs";
1
+ import { R as o } from "../alert-DftADRGk.mjs";
2
2
  export {
3
3
  o as ResourcefulAlerter
4
4
  };
@@ -1,4 +1,4 @@
1
- import { a as r, R as s } from "../index-CIvylvfa.mjs";
1
+ import { a as r, R as s } from "../index-DwOjHbRP.mjs";
2
2
  export {
3
3
  r as ResourcefulAggregateMethods,
4
4
  s as ResourcefulIndex
@@ -1,5 +1,5 @@
1
- import { R as r } from "../index-C9UuBVyI.mjs";
2
- import { R as c } from "../form-CDLcDPyU.mjs";
1
+ import { R as r } from "../index-BkjiQEyJ.mjs";
2
+ import { R as c } from "../form-9YRVcrxM.mjs";
3
3
  export {
4
4
  r as ResourcefulRecord,
5
5
  c as ResourcefulRecordViewMode
@@ -1,4 +1,4 @@
1
- import { R as r } from "../renderers-BKUvrrVm.mjs";
1
+ import { R as r } from "../renderers-COT3aAu3.mjs";
2
2
  export {
3
3
  r as ResourcefulRecordDefaultForm
4
4
  };
@@ -1,4 +1,4 @@
1
- import { a as e } from "../form-CDLcDPyU.mjs";
1
+ import { a as e } from "../form-9YRVcrxM.mjs";
2
2
  export {
3
3
  e as ResourcefulRecordForm
4
4
  };
@@ -1,4 +1,4 @@
1
- import { S as a } from "../index-slHxe6b-.mjs";
1
+ import { S as a } from "../index-Bs4A8qUO.mjs";
2
2
  export {
3
3
  a as Sortable
4
4
  };
@@ -1,4 +1,4 @@
1
- import { S as s, s as c } from "../index-BaWthszI.mjs";
1
+ import { S as s, s as c } from "../index-CWwCXXNl.mjs";
2
2
  export {
3
3
  s as SvgIcon,
4
4
  c as svgPathToIconValue
@@ -1,4 +1,4 @@
1
- import { T as r } from "../index-BUpccfIz.mjs";
1
+ import { T as r } from "../index-BsazeUn6.mjs";
2
2
  export {
3
3
  r as TimezonePicker
4
4
  };
package/components.mjs CHANGED
@@ -1,26 +1,26 @@
1
- import { R as r } from "./alert-IW1AIWZw.mjs";
2
- import { F as t } from "./validation-DS3tTSk5.mjs";
3
- import { T as R } from "./index-BUpccfIz.mjs";
4
- import { S as m, s as i } from "./index-BaWthszI.mjs";
5
- import { S as n } from "./index-slHxe6b-.mjs";
6
- import { b as p, c as x, E as u, a as F, R as c } from "./index-CIvylvfa.mjs";
7
- import { R as C } from "./index-C9UuBVyI.mjs";
8
- import { a as S, R as b } from "./form-CDLcDPyU.mjs";
9
- import { R as I } from "./renderers-BKUvrrVm.mjs";
10
- import { R as T } from "./bigint-Jmfa2L4S.mjs";
11
- import { R as V, b as h, a as v } from "./boolean-BEY7eBxf.mjs";
12
- import { R as P, a as k } from "./date_time-6kpv7eDF.mjs";
13
- import { R as y } from "./date-BxEeCNWD.mjs";
14
- import { R as J, a as N } from "./enum-noYU2Cqh.mjs";
15
- import { R as W } from "./integer-BIJ4_I8y.mjs";
16
- import { R as q } from "./number-z_LAINPM.mjs";
17
- import { b as H, R as K, a as L } from "./string-Dmr8SRMf.mjs";
18
- import { R as Q } from "./unsigned_integer-BliPiCXO.mjs";
19
- import { R as Y } from "./custom-Y1WJVKP9.mjs";
20
- import { C as _ } from "./index-B2rKM3mR.mjs";
21
- import { C as ee } from "./index-CzI9mHIx.mjs";
22
- import { C as re } from "./props-p4f5Pa5h.mjs";
23
- import { C as te } from "./index-bXmNb9jX.mjs";
1
+ import { R as r } from "./alert-DftADRGk.mjs";
2
+ import { F as t } from "./validation-CZ6xx4aX.mjs";
3
+ import { T as R } from "./index-BsazeUn6.mjs";
4
+ import { S as m, s as i } from "./index-CWwCXXNl.mjs";
5
+ import { S as n } from "./index-Bs4A8qUO.mjs";
6
+ import { b as p, c as x, E as u, a as F, R as c } from "./index-DwOjHbRP.mjs";
7
+ import { R as C } from "./index-BkjiQEyJ.mjs";
8
+ import { a as S, R as b } from "./form-9YRVcrxM.mjs";
9
+ import { R as I } from "./renderers-COT3aAu3.mjs";
10
+ import { R as T } from "./bigint-DiC37zMo.mjs";
11
+ import { R as V, b as h, a as v } from "./boolean-DZDryWHA.mjs";
12
+ import { R as P, a as k } from "./date_time-DhABUkGT.mjs";
13
+ import { R as y } from "./date-CxaBVvlO.mjs";
14
+ import { R as J, a as N } from "./enum-KB4xPkOL.mjs";
15
+ import { R as W } from "./integer-uzh0nwpb.mjs";
16
+ import { R as q } from "./number-CfHLDQFY.mjs";
17
+ import { b as H, R as K, a as L } from "./string-DvwPf_Ob.mjs";
18
+ import { R as Q } from "./unsigned_integer-C9nrNAn_.mjs";
19
+ import { R as Y } from "./custom-Tm6_792A.mjs";
20
+ import { C as _ } from "./index-BaOM0Cyz.mjs";
21
+ import { C as ee } from "./index-DDobJ49b.mjs";
22
+ import { C as re } from "./props-KPFuptNy.mjs";
23
+ import { C as te } from "./index-UxsEIZVi.mjs";
24
24
  export {
25
25
  te as ControlButton,
26
26
  ee as ControlButtonBar,
package/composables.mjs CHANGED
@@ -1,20 +1,20 @@
1
- import { u as o } from "./alert-IW1AIWZw.mjs";
2
- import { u } from "./clipboard-BoKd7mFG.mjs";
3
- import { u as t } from "./display-kAyhIPBH.mjs";
1
+ import { u as o } from "./alert-DftADRGk.mjs";
2
+ import { u as a } from "./clipboard--JAZokR3.mjs";
3
+ import { u as t } from "./display-DazBkrbZ.mjs";
4
4
  import { u as p } from "./http-BBfnr2c-.mjs";
5
- import { u as f } from "./validation-DS3tTSk5.mjs";
5
+ import { u as f } from "./validation-CZ6xx4aX.mjs";
6
6
  import { u as x } from "./big_number_formatter-BGfIwlog.mjs";
7
- import { u as d, c as C, b, a as c } from "./utils-DqXWb-4f.mjs";
8
- import { u as h } from "./field_composer-DpJx0Oz1.mjs";
9
- import { u as S } from "./common-BeDAn4wu.mjs";
10
- import { u as F } from "./index-slHxe6b-.mjs";
7
+ import { u as d, f as C, d as c, c as b } from "./utils-DxV2ZNaE.mjs";
8
+ import { u as h } from "./field_composer-CLJuJevf.mjs";
9
+ import { u as S } from "./common-BDwb9uGU.mjs";
10
+ import { u as F } from "./index-Bs4A8qUO.mjs";
11
11
  import { k as P, d as k, e as B, f as I, i as V, c as j, a as w, u as y, j as A, h as D, g as E, b as L } from "./ioc-Du_Tgg-1.mjs";
12
12
  export {
13
13
  o as useAlert,
14
14
  x as useBigNumberFormatter,
15
15
  P as useBrowser,
16
16
  k as useCache,
17
- u as useClipboard,
17
+ a as useClipboard,
18
18
  B as useCron,
19
19
  I as useCronTab,
20
20
  V as useCurrentTimezone,
@@ -26,9 +26,9 @@ export {
26
26
  y as useIoC,
27
27
  S as useLocalState,
28
28
  C as usePassthroughHook,
29
- b as useProxiedModel,
29
+ c as useProxiedModel,
30
30
  t as useScopedDisplay,
31
- c as useSlot,
31
+ b as useSlot,
32
32
  F as useSortableProps,
33
33
  A as useTimezoneOptions,
34
34
  D as useTimezoneZones,
@@ -1,4 +1,4 @@
1
- import { D as i } from "./utils-DqXWb-4f.mjs";
1
+ import { D as i } from "./utils-DxV2ZNaE.mjs";
2
2
  function f(r) {
3
3
  i(`Vuetify: ${r}`);
4
4
  }
@@ -15,4 +15,4 @@ export {
15
15
  f as c,
16
16
  t as d
17
17
  };
18
- //# sourceMappingURL=console-CRXioSFP.mjs.map
18
+ //# sourceMappingURL=console-CAez8ceh.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"console-CRXioSFP.mjs","sources":["../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/util/console.mjs"],"sourcesContent":["import { E as warn } from \"../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nfunction consoleWarn(message) {\n warn(`Vuetify: ${message}`);\n}\nfunction consoleError(message) {\n warn(`Vuetify error: ${message}`);\n}\nfunction deprecate(original, replacement) {\n replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map((s) => `'${s}'`).join(\", \") + ` or '${replacement.at(-1)}'` : `'${replacement}'`;\n warn(\n `[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`\n );\n}\nfunction breaking(original, replacement) {\n}\nfunction removed(original) {\n}\nexport {\n breaking,\n consoleError,\n consoleWarn,\n deprecate,\n removed\n};\n//# sourceMappingURL=console.mjs.map\n"],"names":["consoleWarn","message","warn","consoleError","deprecate","original","replacement"],"mappings":";AACA,SAASA,EAAYC,GAAS;AAC5B,EAAAC,EAAK,YAAYD,CAAO,EAAE;AAC5B;AACA,SAASE,EAAaF,GAAS;AAC7B,EAAAC,EAAK,kBAAkBD,CAAO,EAAE;AAClC;AACA,SAASG,EAAUC,GAAUC,GAAa;AACxC,EAAAA,IAAc,MAAM,QAAQA,CAAW,IAAIA,EAAY,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,QAAQA,EAAY,GAAG,EAAE,CAAC,MAAM,IAAIA,CAAW,KACrJJ;AAAA,IACE,sBAAsBG,CAAQ,wBAAwBC,CAAW;AAAA,EACrE;AACA;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"console-CAez8ceh.mjs","sources":["../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/util/console.mjs"],"sourcesContent":["import { E as warn } from \"../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nfunction consoleWarn(message) {\n warn(`Vuetify: ${message}`);\n}\nfunction consoleError(message) {\n warn(`Vuetify error: ${message}`);\n}\nfunction deprecate(original, replacement) {\n replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map((s) => `'${s}'`).join(\", \") + ` or '${replacement.at(-1)}'` : `'${replacement}'`;\n warn(\n `[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`\n );\n}\nfunction breaking(original, replacement) {\n}\nfunction removed(original) {\n}\nexport {\n breaking,\n consoleError,\n consoleWarn,\n deprecate,\n removed\n};\n//# sourceMappingURL=console.mjs.map\n"],"names":["consoleWarn","message","warn","consoleError","deprecate","original","replacement"],"mappings":";AACA,SAASA,EAAYC,GAAS;AAC5B,EAAAC,EAAK,YAAYD,CAAO,EAAE;AAC5B;AACA,SAASE,EAAaF,GAAS;AAC7B,EAAAC,EAAK,kBAAkBD,CAAO,EAAE;AAClC;AACA,SAASG,EAAUC,GAAUC,GAAa;AACxC,EAAAA,IAAc,MAAM,QAAQA,CAAW,IAAIA,EAAY,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,QAAQA,EAAY,GAAG,EAAE,CAAC,MAAM,IAAIA,CAAW,KACrJJ;AAAA,IACE,sBAAsBG,CAAQ,wBAAwBC,CAAW;AAAA,EACrE;AACA;","x_google_ignoreList":[0]}
@@ -1,10 +1,10 @@
1
- import { g as q } from "./mdi-CqMJqgQi.mjs";
2
- import { S as z } from "./index-BaWthszI.mjs";
1
+ import { g as $ } from "./mdi-C9DbASEx.mjs";
2
+ import { S as q } from "./index-CWwCXXNl.mjs";
3
3
  import { d as w } from "./index-DXdh_Con.mjs";
4
- import { g as G, h as H, i as D, j as E, D as J } from "./common-BeDAn4wu.mjs";
5
- import { d as Q, i as f, b as W, u as X, A as B, s as m, t as b, g as Y } from "./utils-DqXWb-4f.mjs";
6
- import { I as Z } from "./display-DvzWa1QO.mjs";
7
- import { u as ee } from "./useRender-BD1xw5zG.mjs";
4
+ import { g as G, h as H, j as D, k as E, D as J } from "./common-BDwb9uGU.mjs";
5
+ import { a as Q, i as f, d as W, u as X, z as B, s as m, t as b, g as Y } from "./utils-DxV2ZNaE.mjs";
6
+ import { I as Z } from "./display-BdjbLG1_.mjs";
7
+ import { u as ee } from "./useRender-Dpj9Jrbr.mjs";
8
8
  import { l as te } from "./index-CFtnmFDF.mjs";
9
9
  import { f as oe } from "./forwardRefs-Cf4c0t-9.mjs";
10
10
  import { h as i, defineComponent as ne, computed as v, ref as S, withDirectives as le, onMounted as ie, onBeforeUnmount as ue, nextTick as se } from "vue";
@@ -28,7 +28,7 @@ const { makeProps: re, emits: ae } = Q(
28
28
  },
29
29
  ...H(),
30
30
  ...G({
31
- clearIcon: () => i(z, { d: q })
31
+ clearIcon: () => i(q, { d: $ })
32
32
  }),
33
33
  isFocused: {
34
34
  type: Function,
@@ -110,7 +110,7 @@ const ye = ne({
110
110
  b(R).inputAttrs
111
111
  )
112
112
  )
113
- ), T = v(
113
+ ), z = v(
114
114
  () => w(
115
115
  m({
116
116
  role: e.role
@@ -120,7 +120,7 @@ const ye = ne({
120
120
  "onClick:appendInner": (t) => s("click:appendInner", t)
121
121
  }
122
122
  )
123
- ), $ = (t, o, n, l) => {
123
+ ), T = (t, o, n, l) => {
124
124
  if (!x.value || !a.value || !t) return [];
125
125
  const {
126
126
  props: { class: k, ...C }
@@ -189,7 +189,7 @@ const ye = ne({
189
189
  E,
190
190
  {
191
191
  ref: x,
192
- ...b(T),
192
+ ...b(z),
193
193
  onMousedown: O,
194
194
  onClick: K,
195
195
  ...m({
@@ -207,7 +207,7 @@ const ye = ne({
207
207
  // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components
208
208
  {
209
209
  ...p,
210
- default: (I) => $(I, t, C, l)
210
+ default: (I) => T(I, t, C, l)
211
211
  }
212
212
  )
213
213
  ]
@@ -235,4 +235,4 @@ const ye = ne({
235
235
  export {
236
236
  ye as R
237
237
  };
238
- //# sourceMappingURL=custom-Y1WJVKP9.mjs.map
238
+ //# sourceMappingURL=custom-Tm6_792A.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-Y1WJVKP9.mjs","sources":["../src/private/fields/custom.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Custom Field Wrapper\n|--------------------------------------------------------------------------\n|\n| A sophisticated field wrapper component that provides a flexible foundation\n| for building custom field implementations with complete Vuetify integration.\n| This component reverse-engineers and abstracts Vuetify's internal VTextField\n| composition pattern, making it accessible for custom field development.\n|\n| ## Core Architecture\n|\n| The component follows Vuetify's exact internal pattern:\n| VInput (validation, messages) → VField (visual styling) → Custom Content\n|\n| This three-layer composition ensures perfect integration with Vuetify's\n| theming, validation, accessibility, and animation systems while providing\n| complete flexibility for custom input implementations.\n|\n| ## Key Features\n|\n| - **Perfect Vuetify Integration**: Uses VInput + VField composition like native components\n| - **Rich Slot Props**: Provides comprehensive props, state, and event handlers to custom implementations\n| - **Event Bus System**: Typed event emitter for custom field communication\n| - **Dual Emit Strategy**: Supports both Vue emits and prop-based event handlers\n| - **Intersection Observer**: Built-in viewport detection for autofocus and lazy loading\n| - **Proper Attribute Distribution**: Intelligently routes attributes to appropriate layers\n| - **TypeScript Excellence**: Full type safety with complex slot and event typing\n|\n| ## Event Bus Architecture\n|\n| Custom implementations get access to a typed event bus for advanced communication:\n| - `intersecting`: Viewport intersection events for lazy loading/autofocus\n| - `focus`: Focus events triggered by wrapper interactions\n|\n| ## Slot Props Interface\n|\n| Custom implementations receive comprehensive slot props:\n| - **props**: Complete set of input props (modelValue, handlers, validation state)\n| - **bus**: Typed event emitter for custom communication\n| - **state**: Reactive state refs (isActive, isFocused, controlRef)\n| - **handlers**: Focus/blur methods and intersection observer callback\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Rich text editor field -->\n| <RCustomField v-model=\"content\" label=\"Rich Content\">\n| <template #default=\"{ props, bus, focus, blur, isActive }\">\n| <QuillEditor\n| v-bind=\"props\"\n| :class=\"{ 'editor--active': isActive }\"\n| @text-change=\"props['onUpdate:modelValue']\"\n| @focus=\"focus\"\n| @blur=\"blur\"\n| />\n| </template>\n| </RCustomField>\n|\n| <!-- Custom date picker -->\n| <RCustomField v-model=\"date\" label=\"Date Selection\">\n| <template #default=\"{ props, bus }\">\n| <CustomDatePicker\n| v-bind=\"props\"\n| @date-selected=\"props['onUpdate:modelValue']\"\n| @picker-opened=\"() => bus.emit('focus')\"\n| />\n| </template>\n| </RCustomField>\n|\n| <!-- Complex multi-input field -->\n| <RCustomField v-model=\"coordinates\" label=\"GPS Coordinates\">\n| <template #default=\"{ props, isActive, controlRef }\">\n| <div class=\"coordinate-inputs\" :class=\"{ active: isActive }\">\n| <input\n| :value=\"props.modelValue?.lat\"\n| @input=\"updateLat\"\n| placeholder=\"Latitude\"\n| />\n| <input\n| :value=\"props.modelValue?.lng\"\n| @input=\"updateLng\"\n| placeholder=\"Longitude\"\n| />\n| </div>\n| </template>\n| </RCustomField>\n| ```\n|\n| ## Integration Benefits\n|\n| Custom fields built with this wrapper automatically inherit:\n| - **Material Design theming** (colors, variants, density)\n| - **Validation integration** (error states, messages, validation timing)\n| - **Accessibility features** (ARIA attributes, keyboard navigation, screen readers)\n| - **Animation consistency** (focus transitions, error state animations)\n| - **Form integration** (VForm validation, submit handling)\n|\n| ## Advanced Features\n|\n| ### Prefix/Suffix Support\n| Built-in text prefix and suffix rendering without requiring custom implementations\n| to handle layout complexity.\n|\n| ### Intersection Observer Integration\n| Automatic viewport detection enables sophisticated behaviors like autofocus\n| on scroll-into-view and lazy loading of expensive custom inputs.\n|\n| ### Dual Event Handling\n| Supports both Vue's emit system and prop-based event handlers, enabling\n| flexible integration patterns and backwards compatibility.\n|\n| ## Browser Compatibility\n|\n| Inherits Vuetify's browser support matrix while adding Intersection Observer\n| functionality (with graceful degradation for older browsers).\n*/\n\nimport { mdiClose } from '@mdi/js'\nimport { SvgIcon } from '../svg-icon'\nimport { deepmerge } from 'deepmerge-ts'\nimport { DevErrorAlert } from './common'\nimport { isObject } from '../common/guards'\nimport { VField } from 'vuetify/components/VField'\nimport { VInput } from 'vuetify/components/VInput'\nimport { Intersect } from 'vuetify/directives/intersect'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { filterInputAttrs } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { propsAndEmitsFactory, getCamelAndMaybeKebabPropKeysFor } from '../common/factories'\nimport {\n stripUndefinedValuesFromObject,\n useFocus,\n toUnreactive,\n useProxiedModel,\n} from '../common/utils'\nimport {\n computed,\n nextTick,\n ref,\n h,\n withDirectives,\n defineComponent,\n onMounted,\n onBeforeUnmount,\n} from 'vue'\nimport type { EventMap } from '@nhtio/tiny-typed-emitter'\nimport type { VInputSlots } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport type { EmitHandlerProps, CastToEmitValidators } from '../common/factories'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { VFieldSlots, VFieldSlot } from '@nhtio/vuetifiable/components/VField/VField'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n Ref,\n ComputedRef,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype ExtractedVFieldSlots = ExtractSlotDefinitions<typeof VField.slots>\n\ntype VInputSlotProps = {\n id: ComputedRef<string | null | undefined>\n messagesId: ComputedRef<string | null | undefined>\n isDirty: ComputedRef<boolean | undefined>\n isDisabled: ComputedRef<boolean | undefined>\n isReadonly: ComputedRef<boolean | undefined>\n isPristine: ComputedRef<boolean | undefined>\n isValid: ComputedRef<boolean | undefined>\n isValidating: ComputedRef<boolean | undefined>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\n/**\n * Creates the props and emits configuration for RCustomField component.\n *\n * Combines VInput and VField props with custom field-specific properties,\n * providing the complete prop interface needed for flexible custom field\n * implementations. The emits configuration supports both Vue emit patterns\n * and prop-based event handlers.\n *\n * @returns Object containing makeProps function and emits configuration\n *\n * @example\n * ```typescript\n * const { makeProps, emits } = propsAndEmitsFactory(...)\n * // Used in component definition\n * export const MyCustomField = defineComponent({\n * props: makeProps(),\n * emits: emits,\n * // ...\n * })\n * ```\n */\nexport const { makeProps: makeRCustomFieldProps, emits: rCustomFieldEmits } = propsAndEmitsFactory(\n {\n autofocus: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n prefix: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n suffix: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n role: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n ...makeVInputProps(),\n ...makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n isFocused: {\n type: Function as PropType<((e: MouseEvent) => boolean) | undefined>,\n default: undefined,\n },\n },\n {\n 'click:clear': (e: MouseEvent) => isObject(e),\n 'click:appendInner': (e: MouseEvent) => isObject(e),\n 'click:prependInner': (e: MouseEvent) => isObject(e),\n 'click:control': (e: MouseEvent) => isObject(e),\n 'mousedown:control': (e: MouseEvent) => isObject(e),\n 'update:focused': (focused: boolean) => typeof focused === 'boolean',\n // basically, allow anything\n 'update:modelValue': (val: any) => typeof val !== 'undefined' || val === undefined,\n 'update:model-value': (val: any) => typeof val !== 'undefined' || val === undefined,\n },\n 'RCustomField'\n)\n\n/**\n * Type definition for RCustomField component props.\n *\n * Combines all VInput and VField props with custom field-specific properties\n * and emit handler props. This comprehensive type ensures full type safety\n * for both component usage and custom field implementations.\n *\n * @example\n * ```typescript\n * const props: RCustomFieldProps = {\n * modelValue: \"custom value\",\n * label: \"Custom Field\",\n * variant: \"outlined\",\n * autofocus: true,\n * prefix: \"$\",\n * suffix: \".00\"\n * }\n * ```\n */\nexport type RCustomFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRCustomFieldProps>> &\n EmitHandlerProps<CastToEmitValidators<typeof rCustomFieldEmits>>\n\ntype VInputPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVInputProps>>\ntype VFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVFieldProps>> & {\n 'id'?: string | null | undefined\n 'role'?: string | null | undefined\n 'focused'?: boolean | undefined\n 'onMousedown'?: ((event: MouseEvent) => void) | undefined\n 'onClick'?: ((event: MouseEvent) => void) | undefined\n 'onClick:prependInner'?: ((event: MouseEvent) => void) | undefined\n 'onClick:appendInner'?: ((event: MouseEvent) => void) | undefined\n}\n\n/**\n * Event map type for the RCustomField event bus system.\n *\n * Defines the typed events that can be emitted and listened to via the\n * event bus provided to custom field implementations. This enables\n * sophisticated communication between the wrapper and custom components.\n *\n * Events:\n * - `intersecting`: Fired when viewport intersection changes (for autofocus/lazy loading)\n * - `focus`: Fired when the wrapper detects focus should be triggered\n *\n * @example\n * ```typescript\n * // In custom field implementation\n * setup({ bus }) {\n * bus.on('focus', () => {\n * // Handle focus from wrapper\n * })\n * bus.on('intersecting', (entries) => {\n * // Handle viewport intersection\n * })\n * }\n * ```\n */\nexport type RCustomFieldBusEventMap = EventMap<{\n intersecting: [entries: IntersectionObserverEntry[]]\n focus: []\n blur: []\n}>\n\n/**\n * Typed event emitter class for RCustomField component communication.\n *\n * Extends TypedEventEmitter with the custom field event map, providing\n * type-safe event emission and listening for custom field implementations.\n * Each RCustomField instance creates its own bus for isolated communication.\n */\nclass RCustomFieldBus extends TypedEventEmitter<RCustomFieldBusEventMap> {}\n\n/**\n * Props object passed to custom field implementations via the default slot.\n *\n * Contains the essential props that custom field implementations need to\n * integrate properly with the wrapper's state management and event system.\n * Includes model value handling, validation state, and core input properties.\n *\n * Key properties:\n * - `modelValue`: Current field value\n * - `onUpdate:modelValue` / `onUpdate:model-value`: Value update handlers\n * - `autofocus`, `readonly`, `disabled`: State flags\n * - `name`: Input name attribute\n * - Additional props spread from VField/VInput processing\n *\n * @example\n * ```typescript\n * // In custom field slot\n * <template #default=\"{ props }\">\n * <input\n * :value=\"props.modelValue\"\n * @input=\"props['onUpdate:modelValue']($event.target.value)\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * </template>\n * ```\n */\nexport type RCustomFieldDefaultSlotProps = Pick<\n RCustomFieldProps,\n 'modelValue' | 'onUpdate:modelValue' | 'onUpdate:model-value'\n> & {\n autofocus: boolean\n readonly: boolean\n disabled: boolean\n name: string | undefined\n} & {\n [x: string]: any\n} & Partial<Record<string, unknown>>\n\n/**\n * Complete argument object passed to the default slot of RCustomField.\n *\n * Extends VFieldSlot with custom field-specific properties, providing\n * everything custom implementations need for sophisticated field behavior.\n * Includes props, event bus, state refs, handlers, and utilities.\n *\n * Key properties:\n * - `props`: Input props for binding to custom components\n * - `bus`: Typed event emitter for wrapper communication\n * - `isActive`, `isFocused`: Reactive state computed refs\n * - `controlRef`: Reference to the VField component\n * - `focus`, `blur`: Focus management methods\n * - `onIntersect`: Intersection observer callback\n *\n * @example\n * ```typescript\n * // Complete slot usage\n * <template #default=\"{ props, bus, isActive, focus, blur, onIntersect }\">\n * <CustomInput\n * v-bind=\"props\"\n * :class=\"{ active: isActive }\"\n * @focus=\"focus\"\n * @blur=\"blur\"\n * @custom-event=\"() => bus.emit('focus')\"\n * />\n * </template>\n * ```\n */\nexport type RCustomFieldInputSlotArg = Omit<VFieldSlot, 'props' | 'controlRef'> & {\n props: RCustomFieldDefaultSlotProps\n bus: RCustomFieldBus\n}\n\n/**\n * Slot definitions for RCustomField component.\n *\n * Combines VInput and VField slots while replacing the default slot with\n * a custom field-specific slot that provides rich props and utilities.\n * Maintains compatibility with all Vuetify field slots (prepend, append, etc.)\n * while enabling sophisticated custom implementations.\n *\n * The default slot receives comprehensive props for building custom inputs\n * that integrate seamlessly with Vuetify's field architecture.\n *\n * @example\n * ```vue\n * <RCustomField>\n * <!-- Custom default slot with rich props -->\n * <template #default=\"{ props, bus, isActive }\">\n * <MyCustomInput v-bind=\"props\" />\n * </template>\n *\n * <!-- Standard Vuetify slots work as expected -->\n * <template #prepend>\n * <VIcon>mdi-calendar</VIcon>\n * </template>\n *\n * <template #append-inner>\n * <VBtn icon size=\"small\">\n * <VIcon>mdi-close</VIcon>\n * </VBtn>\n * </template>\n * </RCustomField>\n * ```\n */\nexport type RCustomFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: RCustomFieldInputSlotArg\n}\n\nexport type ExtractedRCustomFieldSlots = ExtractSlotDefinitions<RCustomFieldSlots>\n\n/**\n * RCustomField - A sophisticated wrapper component for building custom field implementations.\n *\n * This component provides a complete foundation for creating custom field components\n * that integrate seamlessly with Vuetify's field architecture. It reverse-engineers\n * Vuetify's internal VTextField composition pattern (VInput → VField → content)\n * and makes it accessible for custom implementations.\n *\n * ## Architecture Foundation\n *\n * RCustomField follows Vuetify's exact three-layer composition:\n * 1. **VInput Layer**: Handles validation, messages, form integration\n * 2. **VField Layer**: Manages visual styling, focus states, interactions\n * 3. **Custom Content Layer**: Your custom implementation via default slot\n *\n * This architecture ensures custom fields inherit all Vuetify benefits:\n * - Material Design theming and variants\n * - Complete accessibility support\n * - Form validation integration\n * - Consistent animations and transitions\n * - Proper keyboard navigation\n *\n * ## Key Features\n *\n * ### Rich Slot Props\n * Custom implementations receive comprehensive props including model value\n * handlers, validation state, focus methods, and a typed event bus.\n *\n * ### Event Bus System\n * A TypedEventEmitter instance enables sophisticated communication between\n * the wrapper and custom implementations without tight coupling.\n *\n * ### Dual Event Handling\n * Supports both Vue's emit system and prop-based event handlers for\n * maximum flexibility and backwards compatibility.\n *\n * ### Intersection Observer Integration\n * Built-in viewport detection enables autofocus on scroll and lazy loading\n * of expensive custom input components.\n *\n * ### Intelligent Attribute Distribution\n * Automatically routes attributes to appropriate layers (VInput vs custom content)\n * ensuring proper behavior without manual attribute management.\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Rich text editor field -->\n * <RCustomField\n * v-model=\"content\"\n * label=\"Article Content\"\n * variant=\"outlined\"\n * :rules=\"[required, minLength(100)]\"\n * >\n * <template #default=\"{ props, bus, isActive, focus, blur }\">\n * <QuillEditor\n * v-bind=\"props\"\n * :class=\"{ 'editor--active': isActive }\"\n * @text-change=\"props['onUpdate:modelValue']\"\n * @selection-change=\"focus\"\n * @blur=\"blur\"\n * @toolbar-click=\"() => bus.emit('focus')\"\n * />\n * </template>\n * </RCustomField>\n *\n * <!-- Multi-input coordinate field -->\n * <RCustomField\n * v-model=\"coordinates\"\n * label=\"GPS Coordinates\"\n * prefix=\"📍\"\n * >\n * <template #default=\"{ props, isActive }\">\n * <div :class=\"['coordinate-inputs', { active: isActive }]\">\n * <input\n * :value=\"props.modelValue?.lat\"\n * @input=\"updateLatitude\"\n * placeholder=\"Latitude\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * <input\n * :value=\"props.modelValue?.lng\"\n * @input=\"updateLongitude\"\n * placeholder=\"Longitude\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * </div>\n * </template>\n * </RCustomField>\n *\n * <!-- Custom date/time picker -->\n * <RCustomField\n * v-model=\"appointment\"\n * label=\"Appointment Time\"\n * autofocus\n * >\n * <template #default=\"{ props, bus, onIntersect }\">\n * <CustomDateTimePicker\n * v-bind=\"props\"\n * @picker-opened=\"() => bus.emit('focus')\"\n * @date-selected=\"props['onUpdate:modelValue']\"\n * v-intersect=\"onIntersect\"\n * />\n * </template>\n *\n * <template #append-inner>\n * <VBtn icon size=\"small\" @click=\"clearDate\">\n * <VIcon>mdi-close</VIcon>\n * </VBtn>\n * </template>\n * </RCustomField>\n * </template>\n * ```\n *\n * ## Advanced Integration\n *\n * ### Event Bus Communication\n * ```typescript\n * // In custom component setup\n * setup(props, { emit }) {\n * const { bus } = props\n *\n * // Listen for wrapper events\n * bus.on('focus', () => {\n * // Handle focus from wrapper interactions\n * })\n *\n * bus.on('intersecting', (entries) => {\n * // Handle viewport intersection for lazy loading\n * })\n *\n * // Trigger wrapper focus when needed\n * const onCustomEvent = () => {\n * bus.emit('focus')\n * }\n * }\n * ```\n *\n * ### State Management Integration\n * ```vue\n * <template #default=\"{ props, isActive, isFocused, controlRef }\">\n * <CustomInput\n * :ref=\"(el) => linkInputToField(el, controlRef)\"\n * :value=\"props.modelValue\"\n * :class=\"{\n * 'custom--active': isActive,\n * 'custom--focused': isFocused\n * }\"\n * @input=\"props['onUpdate:modelValue']\"\n * />\n * </template>\n * ```\n *\n * ## TypeScript Integration\n *\n * RCustomField provides comprehensive TypeScript support with:\n * - Fully typed slot props interface\n * - Generic component pattern for slot type safety\n * - Typed event bus for custom communication\n * - Complete prop type definitions\n *\n * Custom implementations automatically inherit type safety from the wrapper\n * while maintaining flexibility for any custom input component architecture.\n *\n * ## Performance Considerations\n *\n * - Event bus instances are created per component for isolation\n * - Intersection Observer is only attached when autofocus is enabled\n * - Attribute filtering happens once during render for optimal performance\n * - Ref forwarding enables direct access to underlying Vuetify components\n *\n * This component enables building production-ready custom fields that are\n * indistinguishable from native Vuetify components in terms of behavior,\n * theming, accessibility, and integration capabilities.\n */\nexport const RCustomField = defineComponent({\n name: 'RCustomField',\n inheritAttrs: false,\n props: makeRCustomFieldProps(),\n emits: rCustomFieldEmits,\n slots: Object as SlotsType<RCustomFieldSlots>,\n setup(props, { attrs, emit, slots }) {\n const doEmit = <E extends keyof typeof rCustomFieldEmits>(\n event: E,\n ...args: Parameters<(typeof rCustomFieldEmits)[E]>\n ) => {\n // @ts-ignore\n emit(event, ...args)\n const { camel, kebab } = getCamelAndMaybeKebabPropKeysFor(event)\n // @ts-ignore\n if (props[camel]) {\n // @ts-ignore\n props[camel](...args)\n }\n // @ts-ignore\n if (camel !== kebab && props[kebab]) {\n // @ts-ignore\n props[kebab](...args)\n }\n }\n const doEmitIfArgsDefined = <E extends keyof typeof rCustomFieldEmits>(\n event: E,\n ...args: Parameters<(typeof rCustomFieldEmits)[E]>\n ) => {\n const argsDefined = args.every((a) => 'undefined' !== typeof a)\n if (argsDefined) {\n // @ts-ignore\n doEmit(event, ...args)\n }\n }\n const bus = new RCustomFieldBus()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const onIntersect = (isIntersecting: boolean, entries: IntersectionObserverEntry[]) => {\n if (!props.autofocus || !isIntersecting) return\n bus.emit('intersecting', entries)\n }\n const isActive = computed(() => isFocused.value || props.active)\n const onFocus = () => {\n bus.emit('focus')\n if (!isFocused.value) {\n focus()\n }\n }\n const onDocumentClick = (e: MouseEvent) => {\n if (!isFocused.value) return\n let shouldNotBlur = false\n if ('function' === typeof props.isFocused) {\n shouldNotBlur = props.isFocused(e)\n } else {\n const vInputEl = vInputRef.value ? vInputRef.value.$el || null : null\n if (vInputEl && e.target && vInputEl.contains(e.target as Node)) {\n shouldNotBlur = true\n }\n }\n if (shouldNotBlur) return\n bus.emit('blur')\n blur()\n }\n const onControlMousedown = (e: MouseEvent) => {\n doEmitIfArgsDefined('mousedown:control', e)\n onFocus()\n if (e) {\n e.preventDefault()\n }\n }\n const onControlClick = (e: MouseEvent) => {\n onFocus()\n doEmitIfArgsDefined('click:control', e)\n }\n const onClear = (e: MouseEvent, reset: () => void) => {\n if (e) {\n e.stopPropagation()\n }\n onFocus()\n nextTick(() => {\n model.value = null\n reset()\n doEmitIfArgsDefined('click:clear', e)\n })\n }\n const rootAndInputAttrs = computed<{\n rootAttrs: Record<string, any>\n inputAttrs: Record<string, any>\n }>(\n () =>\n filterInputAttrs(attrs) as unknown as {\n rootAttrs: Record<string, any>\n inputAttrs: Record<string, any>\n }\n )\n const vInputBindings = computed<VInputPublicProps>(() =>\n stripUndefinedValuesFromObject(\n deepmerge(\n { modelValue: model.value },\n stripUndefinedValuesFromObject(VInput.filterProps(props)),\n stripUndefinedValuesFromObject({\n class: [\n 'resourceful__field',\n {\n 'resourceful__field--prefixed': props.prefix,\n 'resourceful__field--suffixed': props.suffix,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ],\n style: props.style,\n centerAffix: !isPlainOrUnderlined.value,\n focused: isFocused.value,\n }),\n toUnreactive(rootAndInputAttrs).rootAttrs,\n toUnreactive(rootAndInputAttrs).inputAttrs\n )\n )\n )\n const vFieldBindings = computed<VFieldPublicProps>(() =>\n deepmerge(\n stripUndefinedValuesFromObject({\n role: props.role,\n } satisfies Partial<VFieldPublicProps>),\n {\n 'onClick:prependInner': (e: MouseEvent) => doEmitIfArgsDefined('click:prependInner', e),\n 'onClick:appendInner': (e: MouseEvent) => doEmitIfArgsDefined('click:appendInner', e),\n } satisfies Partial<VFieldPublicProps>\n )\n )\n const renderVFieldDefaultSlot = (\n arg: NamedSlotParameters<ExtractedVFieldSlots, 'default'>[0],\n slottedInputAttrs: any,\n isReadonly: Ref<boolean | undefined>,\n isDisabled: Ref<boolean | undefined>\n ) => {\n if (!vFieldRef.value || !vInputRef.value || !arg) return []\n const {\n props: { class: fieldClass, ...slotProps },\n } = arg\n const rCustomFieldDefaultSlotProps: RCustomFieldDefaultSlotProps = {\n modelValue: model.value,\n autofocus: props.autofocus,\n readonly: isReadonly.value,\n disabled: isDisabled.value,\n name: props.name,\n onFocus,\n onBlur: () => blur(),\n class: fieldClass,\n ...slotProps,\n ...slottedInputAttrs,\n ...{\n 'onUpdate:model-value': (value: any) => {\n model.value = value\n },\n 'onUpdate:modelValue': (value: any) => {\n model.value = value\n },\n },\n }\n return [\n props.prefix\n ? h(\n 'span',\n { class: ['resourceful__field__prefix'] },\n h('span', { class: ['resourceful__field__prefix__text'] }, props.prefix)\n )\n : null,\n slots.default\n ? h(\n 'div',\n { 'class': ['w-100'], 'data-no-activate': true },\n slots.default({\n props: rCustomFieldDefaultSlotProps,\n bus,\n isActive,\n isFocused,\n focus: () => onFocus(),\n blur: () => blur(),\n })\n )\n : h(DevErrorAlert),\n props.suffix\n ? h(\n 'span',\n { class: ['resourceful__field__suffix'] },\n h('span', { class: ['resourceful__field__suffix__text'] }, props.suffix)\n )\n : null,\n ]\n }\n useRender(() => {\n const [inputAttrs] = filterInputAttrs(attrs)\n const vNode = h(\n VInput,\n {\n ref: vInputRef,\n ...vInputBindings.value,\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: ({\n id: slotId,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n reset,\n }: VInputSlotProps) => [\n h(\n VField,\n {\n ref: vFieldRef,\n ...toUnreactive(vFieldBindings),\n ...({\n onMousedown: onControlMousedown,\n onClick: onControlClick,\n } satisfies Partial<VFieldPublicProps>),\n ...stripUndefinedValuesFromObject({\n ...VField.filterProps(props),\n 'onClick:clear': undefined,\n }),\n ...{\n 'onClick:clear': (e: MouseEvent) => onClear(e, reset),\n },\n id: slotId.value || undefined,\n active: isActive.value || isDirty.value,\n dirty: isDirty.value || props.dirty,\n disabled: isDisabled.value,\n focused: isFocused.value,\n error: isValid.value === false,\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: (slotArg: NamedSlotParameters<ExtractedVFieldSlots, 'default'>[0]) =>\n renderVFieldDefaultSlot(slotArg, inputAttrs, isReadonly, isDisabled),\n }\n ),\n ],\n }\n )\n return withDirectives(vNode, [\n [\n Intersect,\n {\n handler: onIntersect,\n },\n '',\n {\n once: true,\n },\n ],\n ])\n })\n onMounted(() => {\n if ('undefined' !== typeof document) {\n document.addEventListener('click', onDocumentClick)\n }\n })\n onBeforeUnmount(() => {\n if ('undefined' !== typeof document) {\n document.removeEventListener('click', onDocumentClick)\n }\n })\n return forwardRefs({}, vInputRef, vFieldRef)\n },\n})\n\n/**\n * Type definition for the RCustomField component constructor.\n *\n * This type represents the component constructor itself, useful for:\n * - Component type annotations in parent components\n * - Ref type definitions when accessing component instances\n * - Generic component composition and higher-order component patterns\n * - TypeScript integration in component libraries and frameworks\n *\n * @example\n * ```typescript\n * // Component ref typing\n * const customFieldRef = ref<InstanceType<RCustomField>>()\n *\n * // Component prop type in parent\n * interface ParentProps {\n * customFieldComponent: RCustomField\n * }\n *\n * // Generic component usage\n * const MyWrapper = <T extends RCustomField>(component: T) => {\n * // Use component with full type safety\n * }\n * ```\n */\nexport type RCustomField = typeof RCustomField & ComponentPublicInstance\n"],"names":["makeRCustomFieldProps","rCustomFieldEmits","propsAndEmitsFactory","makeVInputProps","makeVFieldProps","h","SvgIcon","mdiClose","isObject","focused","val","RCustomFieldBus","TypedEventEmitter","RCustomField","defineComponent","props","attrs","emit","slots","doEmit","event","args","camel","kebab","getCamelAndMaybeKebabPropKeysFor","doEmitIfArgsDefined","a","bus","model","useProxiedModel","isFocused","focus","blur","useFocus","isPlainOrUnderlined","computed","vInputRef","ref","vFieldRef","onIntersect","isIntersecting","entries","isActive","onFocus","onDocumentClick","e","shouldNotBlur","vInputEl","onControlMousedown","onControlClick","onClear","reset","nextTick","rootAndInputAttrs","filterInputAttrs","vInputBindings","stripUndefinedValuesFromObject","deepmerge","VInput","toUnreactive","vFieldBindings","renderVFieldDefaultSlot","arg","slottedInputAttrs","isReadonly","isDisabled","fieldClass","slotProps","rCustomFieldDefaultSlotProps","value","DevErrorAlert","useRender","inputAttrs","vNode","slotId","isDirty","isValid","VField","slotArg","withDirectives","Intersect","onMounted","onBeforeUnmount","forwardRefs"],"mappings":"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"}
1
+ {"version":3,"file":"custom-Tm6_792A.mjs","sources":["../src/private/fields/custom.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Custom Field Wrapper\n|--------------------------------------------------------------------------\n|\n| A sophisticated field wrapper component that provides a flexible foundation\n| for building custom field implementations with complete Vuetify integration.\n| This component reverse-engineers and abstracts Vuetify's internal VTextField\n| composition pattern, making it accessible for custom field development.\n|\n| ## Core Architecture\n|\n| The component follows Vuetify's exact internal pattern:\n| VInput (validation, messages) → VField (visual styling) → Custom Content\n|\n| This three-layer composition ensures perfect integration with Vuetify's\n| theming, validation, accessibility, and animation systems while providing\n| complete flexibility for custom input implementations.\n|\n| ## Key Features\n|\n| - **Perfect Vuetify Integration**: Uses VInput + VField composition like native components\n| - **Rich Slot Props**: Provides comprehensive props, state, and event handlers to custom implementations\n| - **Event Bus System**: Typed event emitter for custom field communication\n| - **Dual Emit Strategy**: Supports both Vue emits and prop-based event handlers\n| - **Intersection Observer**: Built-in viewport detection for autofocus and lazy loading\n| - **Proper Attribute Distribution**: Intelligently routes attributes to appropriate layers\n| - **TypeScript Excellence**: Full type safety with complex slot and event typing\n|\n| ## Event Bus Architecture\n|\n| Custom implementations get access to a typed event bus for advanced communication:\n| - `intersecting`: Viewport intersection events for lazy loading/autofocus\n| - `focus`: Focus events triggered by wrapper interactions\n|\n| ## Slot Props Interface\n|\n| Custom implementations receive comprehensive slot props:\n| - **props**: Complete set of input props (modelValue, handlers, validation state)\n| - **bus**: Typed event emitter for custom communication\n| - **state**: Reactive state refs (isActive, isFocused, controlRef)\n| - **handlers**: Focus/blur methods and intersection observer callback\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Rich text editor field -->\n| <RCustomField v-model=\"content\" label=\"Rich Content\">\n| <template #default=\"{ props, bus, focus, blur, isActive }\">\n| <QuillEditor\n| v-bind=\"props\"\n| :class=\"{ 'editor--active': isActive }\"\n| @text-change=\"props['onUpdate:modelValue']\"\n| @focus=\"focus\"\n| @blur=\"blur\"\n| />\n| </template>\n| </RCustomField>\n|\n| <!-- Custom date picker -->\n| <RCustomField v-model=\"date\" label=\"Date Selection\">\n| <template #default=\"{ props, bus }\">\n| <CustomDatePicker\n| v-bind=\"props\"\n| @date-selected=\"props['onUpdate:modelValue']\"\n| @picker-opened=\"() => bus.emit('focus')\"\n| />\n| </template>\n| </RCustomField>\n|\n| <!-- Complex multi-input field -->\n| <RCustomField v-model=\"coordinates\" label=\"GPS Coordinates\">\n| <template #default=\"{ props, isActive, controlRef }\">\n| <div class=\"coordinate-inputs\" :class=\"{ active: isActive }\">\n| <input\n| :value=\"props.modelValue?.lat\"\n| @input=\"updateLat\"\n| placeholder=\"Latitude\"\n| />\n| <input\n| :value=\"props.modelValue?.lng\"\n| @input=\"updateLng\"\n| placeholder=\"Longitude\"\n| />\n| </div>\n| </template>\n| </RCustomField>\n| ```\n|\n| ## Integration Benefits\n|\n| Custom fields built with this wrapper automatically inherit:\n| - **Material Design theming** (colors, variants, density)\n| - **Validation integration** (error states, messages, validation timing)\n| - **Accessibility features** (ARIA attributes, keyboard navigation, screen readers)\n| - **Animation consistency** (focus transitions, error state animations)\n| - **Form integration** (VForm validation, submit handling)\n|\n| ## Advanced Features\n|\n| ### Prefix/Suffix Support\n| Built-in text prefix and suffix rendering without requiring custom implementations\n| to handle layout complexity.\n|\n| ### Intersection Observer Integration\n| Automatic viewport detection enables sophisticated behaviors like autofocus\n| on scroll-into-view and lazy loading of expensive custom inputs.\n|\n| ### Dual Event Handling\n| Supports both Vue's emit system and prop-based event handlers, enabling\n| flexible integration patterns and backwards compatibility.\n|\n| ## Browser Compatibility\n|\n| Inherits Vuetify's browser support matrix while adding Intersection Observer\n| functionality (with graceful degradation for older browsers).\n*/\n\nimport { mdiClose } from '@mdi/js'\nimport { SvgIcon } from '../svg-icon'\nimport { deepmerge } from 'deepmerge-ts'\nimport { DevErrorAlert } from './common'\nimport { isObject } from '../common/guards'\nimport { VField } from 'vuetify/components/VField'\nimport { VInput } from 'vuetify/components/VInput'\nimport { Intersect } from 'vuetify/directives/intersect'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { filterInputAttrs } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { propsAndEmitsFactory, getCamelAndMaybeKebabPropKeysFor } from '../common/factories'\nimport {\n stripUndefinedValuesFromObject,\n useFocus,\n toUnreactive,\n useProxiedModel,\n} from '../common/utils'\nimport {\n computed,\n nextTick,\n ref,\n h,\n withDirectives,\n defineComponent,\n onMounted,\n onBeforeUnmount,\n} from 'vue'\nimport type { EventMap } from '@nhtio/tiny-typed-emitter'\nimport type { VInputSlots } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport type { EmitHandlerProps, CastToEmitValidators } from '../common/factories'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { VFieldSlots, VFieldSlot } from '@nhtio/vuetifiable/components/VField/VField'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n Ref,\n ComputedRef,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype ExtractedVFieldSlots = ExtractSlotDefinitions<typeof VField.slots>\n\ntype VInputSlotProps = {\n id: ComputedRef<string | null | undefined>\n messagesId: ComputedRef<string | null | undefined>\n isDirty: ComputedRef<boolean | undefined>\n isDisabled: ComputedRef<boolean | undefined>\n isReadonly: ComputedRef<boolean | undefined>\n isPristine: ComputedRef<boolean | undefined>\n isValid: ComputedRef<boolean | undefined>\n isValidating: ComputedRef<boolean | undefined>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\n/**\n * Creates the props and emits configuration for RCustomField component.\n *\n * Combines VInput and VField props with custom field-specific properties,\n * providing the complete prop interface needed for flexible custom field\n * implementations. The emits configuration supports both Vue emit patterns\n * and prop-based event handlers.\n *\n * @returns Object containing makeProps function and emits configuration\n *\n * @example\n * ```typescript\n * const { makeProps, emits } = propsAndEmitsFactory(...)\n * // Used in component definition\n * export const MyCustomField = defineComponent({\n * props: makeProps(),\n * emits: emits,\n * // ...\n * })\n * ```\n */\nexport const { makeProps: makeRCustomFieldProps, emits: rCustomFieldEmits } = propsAndEmitsFactory(\n {\n autofocus: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n prefix: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n suffix: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n role: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n ...makeVInputProps(),\n ...makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n isFocused: {\n type: Function as PropType<((e: MouseEvent) => boolean) | undefined>,\n default: undefined,\n },\n },\n {\n 'click:clear': (e: MouseEvent) => isObject(e),\n 'click:appendInner': (e: MouseEvent) => isObject(e),\n 'click:prependInner': (e: MouseEvent) => isObject(e),\n 'click:control': (e: MouseEvent) => isObject(e),\n 'mousedown:control': (e: MouseEvent) => isObject(e),\n 'update:focused': (focused: boolean) => typeof focused === 'boolean',\n // basically, allow anything\n 'update:modelValue': (val: any) => typeof val !== 'undefined' || val === undefined,\n 'update:model-value': (val: any) => typeof val !== 'undefined' || val === undefined,\n },\n 'RCustomField'\n)\n\n/**\n * Type definition for RCustomField component props.\n *\n * Combines all VInput and VField props with custom field-specific properties\n * and emit handler props. This comprehensive type ensures full type safety\n * for both component usage and custom field implementations.\n *\n * @example\n * ```typescript\n * const props: RCustomFieldProps = {\n * modelValue: \"custom value\",\n * label: \"Custom Field\",\n * variant: \"outlined\",\n * autofocus: true,\n * prefix: \"$\",\n * suffix: \".00\"\n * }\n * ```\n */\nexport type RCustomFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRCustomFieldProps>> &\n EmitHandlerProps<CastToEmitValidators<typeof rCustomFieldEmits>>\n\ntype VInputPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVInputProps>>\ntype VFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVFieldProps>> & {\n 'id'?: string | null | undefined\n 'role'?: string | null | undefined\n 'focused'?: boolean | undefined\n 'onMousedown'?: ((event: MouseEvent) => void) | undefined\n 'onClick'?: ((event: MouseEvent) => void) | undefined\n 'onClick:prependInner'?: ((event: MouseEvent) => void) | undefined\n 'onClick:appendInner'?: ((event: MouseEvent) => void) | undefined\n}\n\n/**\n * Event map type for the RCustomField event bus system.\n *\n * Defines the typed events that can be emitted and listened to via the\n * event bus provided to custom field implementations. This enables\n * sophisticated communication between the wrapper and custom components.\n *\n * Events:\n * - `intersecting`: Fired when viewport intersection changes (for autofocus/lazy loading)\n * - `focus`: Fired when the wrapper detects focus should be triggered\n *\n * @example\n * ```typescript\n * // In custom field implementation\n * setup({ bus }) {\n * bus.on('focus', () => {\n * // Handle focus from wrapper\n * })\n * bus.on('intersecting', (entries) => {\n * // Handle viewport intersection\n * })\n * }\n * ```\n */\nexport type RCustomFieldBusEventMap = EventMap<{\n intersecting: [entries: IntersectionObserverEntry[]]\n focus: []\n blur: []\n}>\n\n/**\n * Typed event emitter class for RCustomField component communication.\n *\n * Extends TypedEventEmitter with the custom field event map, providing\n * type-safe event emission and listening for custom field implementations.\n * Each RCustomField instance creates its own bus for isolated communication.\n */\nclass RCustomFieldBus extends TypedEventEmitter<RCustomFieldBusEventMap> {}\n\n/**\n * Props object passed to custom field implementations via the default slot.\n *\n * Contains the essential props that custom field implementations need to\n * integrate properly with the wrapper's state management and event system.\n * Includes model value handling, validation state, and core input properties.\n *\n * Key properties:\n * - `modelValue`: Current field value\n * - `onUpdate:modelValue` / `onUpdate:model-value`: Value update handlers\n * - `autofocus`, `readonly`, `disabled`: State flags\n * - `name`: Input name attribute\n * - Additional props spread from VField/VInput processing\n *\n * @example\n * ```typescript\n * // In custom field slot\n * <template #default=\"{ props }\">\n * <input\n * :value=\"props.modelValue\"\n * @input=\"props['onUpdate:modelValue']($event.target.value)\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * </template>\n * ```\n */\nexport type RCustomFieldDefaultSlotProps = Pick<\n RCustomFieldProps,\n 'modelValue' | 'onUpdate:modelValue' | 'onUpdate:model-value'\n> & {\n autofocus: boolean\n readonly: boolean\n disabled: boolean\n name: string | undefined\n} & {\n [x: string]: any\n} & Partial<Record<string, unknown>>\n\n/**\n * Complete argument object passed to the default slot of RCustomField.\n *\n * Extends VFieldSlot with custom field-specific properties, providing\n * everything custom implementations need for sophisticated field behavior.\n * Includes props, event bus, state refs, handlers, and utilities.\n *\n * Key properties:\n * - `props`: Input props for binding to custom components\n * - `bus`: Typed event emitter for wrapper communication\n * - `isActive`, `isFocused`: Reactive state computed refs\n * - `controlRef`: Reference to the VField component\n * - `focus`, `blur`: Focus management methods\n * - `onIntersect`: Intersection observer callback\n *\n * @example\n * ```typescript\n * // Complete slot usage\n * <template #default=\"{ props, bus, isActive, focus, blur, onIntersect }\">\n * <CustomInput\n * v-bind=\"props\"\n * :class=\"{ active: isActive }\"\n * @focus=\"focus\"\n * @blur=\"blur\"\n * @custom-event=\"() => bus.emit('focus')\"\n * />\n * </template>\n * ```\n */\nexport type RCustomFieldInputSlotArg = Omit<VFieldSlot, 'props' | 'controlRef'> & {\n props: RCustomFieldDefaultSlotProps\n bus: RCustomFieldBus\n}\n\n/**\n * Slot definitions for RCustomField component.\n *\n * Combines VInput and VField slots while replacing the default slot with\n * a custom field-specific slot that provides rich props and utilities.\n * Maintains compatibility with all Vuetify field slots (prepend, append, etc.)\n * while enabling sophisticated custom implementations.\n *\n * The default slot receives comprehensive props for building custom inputs\n * that integrate seamlessly with Vuetify's field architecture.\n *\n * @example\n * ```vue\n * <RCustomField>\n * <!-- Custom default slot with rich props -->\n * <template #default=\"{ props, bus, isActive }\">\n * <MyCustomInput v-bind=\"props\" />\n * </template>\n *\n * <!-- Standard Vuetify slots work as expected -->\n * <template #prepend>\n * <VIcon>mdi-calendar</VIcon>\n * </template>\n *\n * <template #append-inner>\n * <VBtn icon size=\"small\">\n * <VIcon>mdi-close</VIcon>\n * </VBtn>\n * </template>\n * </RCustomField>\n * ```\n */\nexport type RCustomFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: RCustomFieldInputSlotArg\n}\n\nexport type ExtractedRCustomFieldSlots = ExtractSlotDefinitions<RCustomFieldSlots>\n\n/**\n * RCustomField - A sophisticated wrapper component for building custom field implementations.\n *\n * This component provides a complete foundation for creating custom field components\n * that integrate seamlessly with Vuetify's field architecture. It reverse-engineers\n * Vuetify's internal VTextField composition pattern (VInput → VField → content)\n * and makes it accessible for custom implementations.\n *\n * ## Architecture Foundation\n *\n * RCustomField follows Vuetify's exact three-layer composition:\n * 1. **VInput Layer**: Handles validation, messages, form integration\n * 2. **VField Layer**: Manages visual styling, focus states, interactions\n * 3. **Custom Content Layer**: Your custom implementation via default slot\n *\n * This architecture ensures custom fields inherit all Vuetify benefits:\n * - Material Design theming and variants\n * - Complete accessibility support\n * - Form validation integration\n * - Consistent animations and transitions\n * - Proper keyboard navigation\n *\n * ## Key Features\n *\n * ### Rich Slot Props\n * Custom implementations receive comprehensive props including model value\n * handlers, validation state, focus methods, and a typed event bus.\n *\n * ### Event Bus System\n * A TypedEventEmitter instance enables sophisticated communication between\n * the wrapper and custom implementations without tight coupling.\n *\n * ### Dual Event Handling\n * Supports both Vue's emit system and prop-based event handlers for\n * maximum flexibility and backwards compatibility.\n *\n * ### Intersection Observer Integration\n * Built-in viewport detection enables autofocus on scroll and lazy loading\n * of expensive custom input components.\n *\n * ### Intelligent Attribute Distribution\n * Automatically routes attributes to appropriate layers (VInput vs custom content)\n * ensuring proper behavior without manual attribute management.\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Rich text editor field -->\n * <RCustomField\n * v-model=\"content\"\n * label=\"Article Content\"\n * variant=\"outlined\"\n * :rules=\"[required, minLength(100)]\"\n * >\n * <template #default=\"{ props, bus, isActive, focus, blur }\">\n * <QuillEditor\n * v-bind=\"props\"\n * :class=\"{ 'editor--active': isActive }\"\n * @text-change=\"props['onUpdate:modelValue']\"\n * @selection-change=\"focus\"\n * @blur=\"blur\"\n * @toolbar-click=\"() => bus.emit('focus')\"\n * />\n * </template>\n * </RCustomField>\n *\n * <!-- Multi-input coordinate field -->\n * <RCustomField\n * v-model=\"coordinates\"\n * label=\"GPS Coordinates\"\n * prefix=\"📍\"\n * >\n * <template #default=\"{ props, isActive }\">\n * <div :class=\"['coordinate-inputs', { active: isActive }]\">\n * <input\n * :value=\"props.modelValue?.lat\"\n * @input=\"updateLatitude\"\n * placeholder=\"Latitude\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * <input\n * :value=\"props.modelValue?.lng\"\n * @input=\"updateLongitude\"\n * placeholder=\"Longitude\"\n * :readonly=\"props.readonly\"\n * :disabled=\"props.disabled\"\n * />\n * </div>\n * </template>\n * </RCustomField>\n *\n * <!-- Custom date/time picker -->\n * <RCustomField\n * v-model=\"appointment\"\n * label=\"Appointment Time\"\n * autofocus\n * >\n * <template #default=\"{ props, bus, onIntersect }\">\n * <CustomDateTimePicker\n * v-bind=\"props\"\n * @picker-opened=\"() => bus.emit('focus')\"\n * @date-selected=\"props['onUpdate:modelValue']\"\n * v-intersect=\"onIntersect\"\n * />\n * </template>\n *\n * <template #append-inner>\n * <VBtn icon size=\"small\" @click=\"clearDate\">\n * <VIcon>mdi-close</VIcon>\n * </VBtn>\n * </template>\n * </RCustomField>\n * </template>\n * ```\n *\n * ## Advanced Integration\n *\n * ### Event Bus Communication\n * ```typescript\n * // In custom component setup\n * setup(props, { emit }) {\n * const { bus } = props\n *\n * // Listen for wrapper events\n * bus.on('focus', () => {\n * // Handle focus from wrapper interactions\n * })\n *\n * bus.on('intersecting', (entries) => {\n * // Handle viewport intersection for lazy loading\n * })\n *\n * // Trigger wrapper focus when needed\n * const onCustomEvent = () => {\n * bus.emit('focus')\n * }\n * }\n * ```\n *\n * ### State Management Integration\n * ```vue\n * <template #default=\"{ props, isActive, isFocused, controlRef }\">\n * <CustomInput\n * :ref=\"(el) => linkInputToField(el, controlRef)\"\n * :value=\"props.modelValue\"\n * :class=\"{\n * 'custom--active': isActive,\n * 'custom--focused': isFocused\n * }\"\n * @input=\"props['onUpdate:modelValue']\"\n * />\n * </template>\n * ```\n *\n * ## TypeScript Integration\n *\n * RCustomField provides comprehensive TypeScript support with:\n * - Fully typed slot props interface\n * - Generic component pattern for slot type safety\n * - Typed event bus for custom communication\n * - Complete prop type definitions\n *\n * Custom implementations automatically inherit type safety from the wrapper\n * while maintaining flexibility for any custom input component architecture.\n *\n * ## Performance Considerations\n *\n * - Event bus instances are created per component for isolation\n * - Intersection Observer is only attached when autofocus is enabled\n * - Attribute filtering happens once during render for optimal performance\n * - Ref forwarding enables direct access to underlying Vuetify components\n *\n * This component enables building production-ready custom fields that are\n * indistinguishable from native Vuetify components in terms of behavior,\n * theming, accessibility, and integration capabilities.\n */\nexport const RCustomField = defineComponent({\n name: 'RCustomField',\n inheritAttrs: false,\n props: makeRCustomFieldProps(),\n emits: rCustomFieldEmits,\n slots: Object as SlotsType<RCustomFieldSlots>,\n setup(props, { attrs, emit, slots }) {\n const doEmit = <E extends keyof typeof rCustomFieldEmits>(\n event: E,\n ...args: Parameters<(typeof rCustomFieldEmits)[E]>\n ) => {\n // @ts-ignore\n emit(event, ...args)\n const { camel, kebab } = getCamelAndMaybeKebabPropKeysFor(event)\n // @ts-ignore\n if (props[camel]) {\n // @ts-ignore\n props[camel](...args)\n }\n // @ts-ignore\n if (camel !== kebab && props[kebab]) {\n // @ts-ignore\n props[kebab](...args)\n }\n }\n const doEmitIfArgsDefined = <E extends keyof typeof rCustomFieldEmits>(\n event: E,\n ...args: Parameters<(typeof rCustomFieldEmits)[E]>\n ) => {\n const argsDefined = args.every((a) => 'undefined' !== typeof a)\n if (argsDefined) {\n // @ts-ignore\n doEmit(event, ...args)\n }\n }\n const bus = new RCustomFieldBus()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const onIntersect = (isIntersecting: boolean, entries: IntersectionObserverEntry[]) => {\n if (!props.autofocus || !isIntersecting) return\n bus.emit('intersecting', entries)\n }\n const isActive = computed(() => isFocused.value || props.active)\n const onFocus = () => {\n bus.emit('focus')\n if (!isFocused.value) {\n focus()\n }\n }\n const onDocumentClick = (e: MouseEvent) => {\n if (!isFocused.value) return\n let shouldNotBlur = false\n if ('function' === typeof props.isFocused) {\n shouldNotBlur = props.isFocused(e)\n } else {\n const vInputEl = vInputRef.value ? vInputRef.value.$el || null : null\n if (vInputEl && e.target && vInputEl.contains(e.target as Node)) {\n shouldNotBlur = true\n }\n }\n if (shouldNotBlur) return\n bus.emit('blur')\n blur()\n }\n const onControlMousedown = (e: MouseEvent) => {\n doEmitIfArgsDefined('mousedown:control', e)\n onFocus()\n if (e) {\n e.preventDefault()\n }\n }\n const onControlClick = (e: MouseEvent) => {\n onFocus()\n doEmitIfArgsDefined('click:control', e)\n }\n const onClear = (e: MouseEvent, reset: () => void) => {\n if (e) {\n e.stopPropagation()\n }\n onFocus()\n nextTick(() => {\n model.value = null\n reset()\n doEmitIfArgsDefined('click:clear', e)\n })\n }\n const rootAndInputAttrs = computed<{\n rootAttrs: Record<string, any>\n inputAttrs: Record<string, any>\n }>(\n () =>\n filterInputAttrs(attrs) as unknown as {\n rootAttrs: Record<string, any>\n inputAttrs: Record<string, any>\n }\n )\n const vInputBindings = computed<VInputPublicProps>(() =>\n stripUndefinedValuesFromObject(\n deepmerge(\n { modelValue: model.value },\n stripUndefinedValuesFromObject(VInput.filterProps(props)),\n stripUndefinedValuesFromObject({\n class: [\n 'resourceful__field',\n {\n 'resourceful__field--prefixed': props.prefix,\n 'resourceful__field--suffixed': props.suffix,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ],\n style: props.style,\n centerAffix: !isPlainOrUnderlined.value,\n focused: isFocused.value,\n }),\n toUnreactive(rootAndInputAttrs).rootAttrs,\n toUnreactive(rootAndInputAttrs).inputAttrs\n )\n )\n )\n const vFieldBindings = computed<VFieldPublicProps>(() =>\n deepmerge(\n stripUndefinedValuesFromObject({\n role: props.role,\n } satisfies Partial<VFieldPublicProps>),\n {\n 'onClick:prependInner': (e: MouseEvent) => doEmitIfArgsDefined('click:prependInner', e),\n 'onClick:appendInner': (e: MouseEvent) => doEmitIfArgsDefined('click:appendInner', e),\n } satisfies Partial<VFieldPublicProps>\n )\n )\n const renderVFieldDefaultSlot = (\n arg: NamedSlotParameters<ExtractedVFieldSlots, 'default'>[0],\n slottedInputAttrs: any,\n isReadonly: Ref<boolean | undefined>,\n isDisabled: Ref<boolean | undefined>\n ) => {\n if (!vFieldRef.value || !vInputRef.value || !arg) return []\n const {\n props: { class: fieldClass, ...slotProps },\n } = arg\n const rCustomFieldDefaultSlotProps: RCustomFieldDefaultSlotProps = {\n modelValue: model.value,\n autofocus: props.autofocus,\n readonly: isReadonly.value,\n disabled: isDisabled.value,\n name: props.name,\n onFocus,\n onBlur: () => blur(),\n class: fieldClass,\n ...slotProps,\n ...slottedInputAttrs,\n ...{\n 'onUpdate:model-value': (value: any) => {\n model.value = value\n },\n 'onUpdate:modelValue': (value: any) => {\n model.value = value\n },\n },\n }\n return [\n props.prefix\n ? h(\n 'span',\n { class: ['resourceful__field__prefix'] },\n h('span', { class: ['resourceful__field__prefix__text'] }, props.prefix)\n )\n : null,\n slots.default\n ? h(\n 'div',\n { 'class': ['w-100'], 'data-no-activate': true },\n slots.default({\n props: rCustomFieldDefaultSlotProps,\n bus,\n isActive,\n isFocused,\n focus: () => onFocus(),\n blur: () => blur(),\n })\n )\n : h(DevErrorAlert),\n props.suffix\n ? h(\n 'span',\n { class: ['resourceful__field__suffix'] },\n h('span', { class: ['resourceful__field__suffix__text'] }, props.suffix)\n )\n : null,\n ]\n }\n useRender(() => {\n const [inputAttrs] = filterInputAttrs(attrs)\n const vNode = h(\n VInput,\n {\n ref: vInputRef,\n ...vInputBindings.value,\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: ({\n id: slotId,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n reset,\n }: VInputSlotProps) => [\n h(\n VField,\n {\n ref: vFieldRef,\n ...toUnreactive(vFieldBindings),\n ...({\n onMousedown: onControlMousedown,\n onClick: onControlClick,\n } satisfies Partial<VFieldPublicProps>),\n ...stripUndefinedValuesFromObject({\n ...VField.filterProps(props),\n 'onClick:clear': undefined,\n }),\n ...{\n 'onClick:clear': (e: MouseEvent) => onClear(e, reset),\n },\n id: slotId.value || undefined,\n active: isActive.value || isDirty.value,\n dirty: isDirty.value || props.dirty,\n disabled: isDisabled.value,\n focused: isFocused.value,\n error: isValid.value === false,\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: (slotArg: NamedSlotParameters<ExtractedVFieldSlots, 'default'>[0]) =>\n renderVFieldDefaultSlot(slotArg, inputAttrs, isReadonly, isDisabled),\n }\n ),\n ],\n }\n )\n return withDirectives(vNode, [\n [\n Intersect,\n {\n handler: onIntersect,\n },\n '',\n {\n once: true,\n },\n ],\n ])\n })\n onMounted(() => {\n if ('undefined' !== typeof document) {\n document.addEventListener('click', onDocumentClick)\n }\n })\n onBeforeUnmount(() => {\n if ('undefined' !== typeof document) {\n document.removeEventListener('click', onDocumentClick)\n }\n })\n return forwardRefs({}, vInputRef, vFieldRef)\n },\n})\n\n/**\n * Type definition for the RCustomField component constructor.\n *\n * This type represents the component constructor itself, useful for:\n * - Component type annotations in parent components\n * - Ref type definitions when accessing component instances\n * - Generic component composition and higher-order component patterns\n * - TypeScript integration in component libraries and frameworks\n *\n * @example\n * ```typescript\n * // Component ref typing\n * const customFieldRef = ref<InstanceType<RCustomField>>()\n *\n * // Component prop type in parent\n * interface ParentProps {\n * customFieldComponent: RCustomField\n * }\n *\n * // Generic component usage\n * const MyWrapper = <T extends RCustomField>(component: T) => {\n * // Use component with full type safety\n * }\n * ```\n */\nexport type RCustomField = typeof RCustomField & ComponentPublicInstance\n"],"names":["makeRCustomFieldProps","rCustomFieldEmits","propsAndEmitsFactory","makeVInputProps","makeVFieldProps","h","SvgIcon","mdiClose","isObject","focused","val","RCustomFieldBus","TypedEventEmitter","RCustomField","defineComponent","props","attrs","emit","slots","doEmit","event","args","camel","kebab","getCamelAndMaybeKebabPropKeysFor","doEmitIfArgsDefined","a","bus","model","useProxiedModel","isFocused","focus","blur","useFocus","isPlainOrUnderlined","computed","vInputRef","ref","vFieldRef","onIntersect","isIntersecting","entries","isActive","onFocus","onDocumentClick","e","shouldNotBlur","vInputEl","onControlMousedown","onControlClick","onClear","reset","nextTick","rootAndInputAttrs","filterInputAttrs","vInputBindings","stripUndefinedValuesFromObject","deepmerge","VInput","toUnreactive","vFieldBindings","renderVFieldDefaultSlot","arg","slottedInputAttrs","isReadonly","isDisabled","fieldClass","slotProps","rCustomFieldDefaultSlotProps","value","DevErrorAlert","useRender","inputAttrs","vNode","slotId","isDirty","isValid","VField","slotArg","withDirectives","Intersect","onMounted","onBeforeUnmount","forwardRefs"],"mappings":"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"}