@atscript/vue-form 0.1.103 → 0.1.104

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 (185) hide show
  1. package/dist/{as-action-lLooKipk.cjs → as-action-B712j9xf.cjs} +4 -0
  2. package/dist/{as-action-BoZtbaXt.mjs → as-action-CCjN5EFP.mjs} +4 -0
  3. package/dist/as-action.cjs +1 -1
  4. package/dist/as-action.d.cts +1 -1
  5. package/dist/as-action.d.mts +1 -1
  6. package/dist/as-action.mjs +1 -1
  7. package/dist/{as-action.vue-BCbopk0S.d.cts → as-action.vue-BL8_a0fE.d.cts} +1 -1
  8. package/dist/{as-action.vue-BtQX09n-.d.mts → as-action.vue-CcOPK2qI.d.mts} +1 -1
  9. package/dist/{as-array-4rQYVD9_.mjs → as-array-BGG38Y1L.mjs} +5 -1
  10. package/dist/{as-array-C6tCzZir.cjs → as-array-DVc9_ood.cjs} +5 -1
  11. package/dist/as-array.cjs +1 -1
  12. package/dist/as-array.d.cts +1 -1
  13. package/dist/as-array.d.mts +1 -1
  14. package/dist/as-array.mjs +1 -1
  15. package/dist/{as-array.vue-Ci4xO292.d.cts → as-array.vue-Be1tDTdH.d.cts} +1 -1
  16. package/dist/{as-array.vue-I42wuF6e.d.mts → as-array.vue-CtBBY2gF.d.mts} +1 -1
  17. package/dist/{as-checkbox-C3i6ZmRk.mjs → as-checkbox-DwLRHmXj.mjs} +5 -1
  18. package/dist/{as-checkbox-oxG8_Isu.cjs → as-checkbox-sgF16SuJ.cjs} +5 -1
  19. package/dist/as-checkbox.cjs +1 -1
  20. package/dist/as-checkbox.d.cts +1 -1
  21. package/dist/as-checkbox.d.mts +1 -1
  22. package/dist/as-checkbox.mjs +1 -1
  23. package/dist/{as-checkbox.vue-BoY72SV8.d.mts → as-checkbox.vue-B6zk5IbU.d.cts} +1 -1
  24. package/dist/{as-checkbox.vue-DqIm0ms2.d.cts → as-checkbox.vue-CXpsn_WG.d.mts} +1 -1
  25. package/dist/as-collapsible.d.cts +1 -18
  26. package/dist/as-collapsible.d.mts +1 -19
  27. package/dist/as-collapsible.vue-34S3TEq5.d.cts +20 -0
  28. package/dist/as-collapsible.vue-CIfMlTQ6.d.mts +20 -0
  29. package/dist/{as-date-BfISLr-e.mjs → as-date-CfCa2Kp1.mjs} +6 -2
  30. package/dist/{as-date-C7pJIpe-.cjs → as-date-hCCTd52o.cjs} +6 -2
  31. package/dist/as-date.cjs +1 -1
  32. package/dist/as-date.d.cts +1 -1
  33. package/dist/as-date.d.mts +1 -1
  34. package/dist/as-date.mjs +1 -1
  35. package/dist/{as-date.vue-BfSVrED7.d.mts → as-date.vue-BZiy1s5s.d.cts} +1 -1
  36. package/dist/{as-date.vue-SdlJH5fn.d.cts → as-date.vue-DWWoojir.d.mts} +1 -1
  37. package/dist/{as-datetime-F3In2A6l.mjs → as-datetime-B1I_zREk.mjs} +6 -2
  38. package/dist/{as-datetime-DFTI8Wcr.cjs → as-datetime-DDlWca2Q.cjs} +6 -2
  39. package/dist/as-datetime.cjs +1 -1
  40. package/dist/as-datetime.d.cts +1 -1
  41. package/dist/as-datetime.d.mts +1 -1
  42. package/dist/as-datetime.mjs +1 -1
  43. package/dist/{as-datetime.vue-B47V1siL.d.mts → as-datetime.vue-DYEHokj_.d.cts} +1 -1
  44. package/dist/{as-datetime.vue-DUp_TDOW.d.cts → as-datetime.vue-NblA-SVE.d.mts} +1 -1
  45. package/dist/{as-decimal-DIO8bD2Y.mjs → as-decimal-CQM5OfqB.mjs} +5 -1
  46. package/dist/{as-decimal-CJAHWYjW.cjs → as-decimal-DM10ycwv.cjs} +5 -1
  47. package/dist/as-decimal.cjs +1 -1
  48. package/dist/as-decimal.d.cts +1 -1
  49. package/dist/as-decimal.d.mts +1 -1
  50. package/dist/as-decimal.mjs +1 -1
  51. package/dist/{as-decimal.vue-Bhq4C1Ix.d.cts → as-decimal.vue-BoNNIhbL.d.mts} +1 -1
  52. package/dist/{as-decimal.vue-DitPZpS_.d.mts → as-decimal.vue-D3eGMvC0.d.cts} +1 -1
  53. package/dist/{as-field-DLW-csEu.mjs → as-field-5rz47opo.mjs} +10 -4
  54. package/dist/{as-field-shell-CW3DDHnq.cjs → as-field-shell-C4epFfvE.cjs} +29 -23
  55. package/dist/{as-field-shell-BHYEjGcn.mjs → as-field-shell-DLvPV8WS.mjs} +29 -23
  56. package/dist/as-field-shell.cjs +1 -1
  57. package/dist/as-field-shell.d.cts +1 -1
  58. package/dist/as-field-shell.d.mts +1 -1
  59. package/dist/as-field-shell.mjs +1 -1
  60. package/dist/{as-field-shell.vue-Ct1ixFqc.d.cts → as-field-shell.vue-CLDHaWN0.d.cts} +1 -1
  61. package/dist/{as-field-shell.vue-K4Flr3gw.d.mts → as-field-shell.vue-DssDDSal.d.mts} +1 -1
  62. package/dist/{as-field-BKa4D63r.cjs → as-field-vktmRs-V.cjs} +9 -3
  63. package/dist/as-field.cjs +1 -1
  64. package/dist/as-field.d.cts +1 -24
  65. package/dist/as-field.d.mts +1 -25
  66. package/dist/as-field.mjs +1 -1
  67. package/dist/as-field.vue-A2cJj-Ih.d.cts +26 -0
  68. package/dist/as-field.vue-CmjIDgQ5.d.mts +26 -0
  69. package/dist/{as-form-CrMA0HdQ.cjs → as-form-B4DKpAVk.cjs} +75 -37
  70. package/dist/{as-form-OsyP7m-A.mjs → as-form-me0zA-52.mjs} +77 -39
  71. package/dist/as-form.cjs +1 -1
  72. package/dist/as-form.d.cts +1 -1
  73. package/dist/as-form.d.mts +1 -1
  74. package/dist/as-form.mjs +1 -1
  75. package/dist/as-form.vue-D5d1Y2ff.d.cts +1425 -0
  76. package/dist/as-form.vue-DH3phgWP.d.mts +1425 -0
  77. package/dist/{as-input-CqxNYh5q.cjs → as-input-Bp1Ltp15.cjs} +6 -2
  78. package/dist/{as-input-D7aA22Yx.mjs → as-input-DF--i7kY.mjs} +6 -2
  79. package/dist/{as-input-control-BYo_dfQA.cjs → as-input-control-B7F2q99A.cjs} +4 -0
  80. package/dist/{as-input-control-Bx-isLZN.mjs → as-input-control-BofS4mCo.mjs} +4 -0
  81. package/dist/as-input.cjs +1 -1
  82. package/dist/as-input.d.cts +1 -1
  83. package/dist/as-input.d.mts +1 -1
  84. package/dist/as-input.mjs +1 -1
  85. package/dist/{as-input.vue-BHsVVncq.d.cts → as-input.vue-CCAEWqK8.d.mts} +1 -1
  86. package/dist/{as-input.vue-DgZrW4pc.d.mts → as-input.vue-Nc9Q3RPh.d.cts} +1 -1
  87. package/dist/{as-iterator-DsDKfpTh.cjs → as-iterator-Bd-bKTMY.cjs} +1 -1
  88. package/dist/{as-iterator-DW7giLlz.mjs → as-iterator-BjIF-O-J.mjs} +1 -1
  89. package/dist/as-iterator.cjs +1 -1
  90. package/dist/as-iterator.d.cts +1 -20
  91. package/dist/as-iterator.d.mts +1 -21
  92. package/dist/as-iterator.mjs +1 -1
  93. package/dist/as-iterator.vue-BZeozFr-.d.cts +22 -0
  94. package/dist/as-iterator.vue-C8HW6n25.d.mts +22 -0
  95. package/dist/{as-multi-select-DQUInqwY.cjs → as-multi-select-b1l34vP5.cjs} +5 -1
  96. package/dist/{as-multi-select-Bsf4Y_mv.mjs → as-multi-select-mp-aM3LV.mjs} +5 -1
  97. package/dist/as-multi-select.cjs +1 -1
  98. package/dist/as-multi-select.d.cts +1 -1
  99. package/dist/as-multi-select.d.mts +1 -1
  100. package/dist/as-multi-select.mjs +1 -1
  101. package/dist/{as-multi-select.vue--bavpcN-.d.cts → as-multi-select.vue-D9mseRFm.d.cts} +1 -1
  102. package/dist/{as-multi-select.vue-rsDUkzxa.d.mts → as-multi-select.vue-DKpOsOmM.d.mts} +1 -1
  103. package/dist/{as-number-B8MCg-ph.mjs → as-number-De9zTltV.mjs} +6 -2
  104. package/dist/{as-number-CFdK5xjM.cjs → as-number-joydTMcJ.cjs} +6 -2
  105. package/dist/as-number.cjs +1 -1
  106. package/dist/as-number.d.cts +1 -1
  107. package/dist/as-number.d.mts +1 -1
  108. package/dist/as-number.mjs +1 -1
  109. package/dist/{as-number.vue-D2DrbnQu.d.cts → as-number.vue-CZC0-zs8.d.cts} +1 -1
  110. package/dist/{as-number.vue-Oml2y6Nt.d.mts → as-number.vue-DrvjSOdq.d.mts} +1 -1
  111. package/dist/{as-object-CN3KZFXO.mjs → as-object-CQMTYtcY.mjs} +5 -1
  112. package/dist/{as-object-B4sF9sIh.cjs → as-object-DgeItRdH.cjs} +5 -1
  113. package/dist/as-object.cjs +1 -1
  114. package/dist/as-object.d.cts +1 -1
  115. package/dist/as-object.d.mts +1 -1
  116. package/dist/as-object.mjs +1 -1
  117. package/dist/{as-object.vue-BljKYrMo.d.cts → as-object.vue-BItO19fw.d.mts} +1 -1
  118. package/dist/{as-object.vue-DAq7Kha3.d.mts → as-object.vue-DbHog5M-.d.cts} +1 -1
  119. package/dist/{as-paragraph-GIGj6UgL.mjs → as-paragraph-BP3-0EY4.mjs} +4 -0
  120. package/dist/{as-paragraph-BA-c863H.cjs → as-paragraph-CPhDTH_V.cjs} +4 -0
  121. package/dist/as-paragraph.cjs +1 -1
  122. package/dist/as-paragraph.d.cts +1 -1
  123. package/dist/as-paragraph.d.mts +1 -1
  124. package/dist/as-paragraph.mjs +1 -1
  125. package/dist/{as-paragraph.vue-CBU_olev.d.mts → as-paragraph.vue-BGDpjceO.d.mts} +1 -1
  126. package/dist/{as-paragraph.vue-LxXA7VPD.d.cts → as-paragraph.vue-D36pdOoc.d.cts} +1 -1
  127. package/dist/{as-radio-BeOQdoeq.cjs → as-radio-Dlmxk1vr.cjs} +5 -1
  128. package/dist/{as-radio-CFaDbRPe.mjs → as-radio-SwpgM1xP.mjs} +5 -1
  129. package/dist/as-radio.cjs +1 -1
  130. package/dist/as-radio.d.cts +1 -1
  131. package/dist/as-radio.d.mts +1 -1
  132. package/dist/as-radio.mjs +1 -1
  133. package/dist/{as-radio.vue-Dk4nlz-d.d.cts → as-radio.vue-EfrhKcBF.d.cts} +1 -1
  134. package/dist/{as-radio.vue-TVMliE1e.d.mts → as-radio.vue-WywkI-zY.d.mts} +1 -1
  135. package/dist/{as-ref-CNQgr6zE.mjs → as-ref-8JnEuan0.mjs} +5 -1
  136. package/dist/{as-ref-RawBvR6v.cjs → as-ref-BCpvUq8E.cjs} +5 -1
  137. package/dist/as-ref.cjs +1 -1
  138. package/dist/as-ref.d.cts +1 -1
  139. package/dist/as-ref.d.mts +1 -1
  140. package/dist/as-ref.mjs +1 -1
  141. package/dist/{as-ref.vue-CUxxGqyg.d.mts → as-ref.vue-BD_vsu7I.d.mts} +1 -1
  142. package/dist/{as-ref.vue-CnzqRblA.d.cts → as-ref.vue-Cxg-A5QR.d.cts} +1 -1
  143. package/dist/{as-select-Cr00CPKf.mjs → as-select-C3ukCyGQ.mjs} +5 -1
  144. package/dist/{as-select-LJIvBPiv.cjs → as-select-CtSNZXtC.cjs} +5 -1
  145. package/dist/as-select.cjs +1 -1
  146. package/dist/as-select.d.cts +1 -1
  147. package/dist/as-select.d.mts +1 -1
  148. package/dist/as-select.mjs +1 -1
  149. package/dist/{as-select.vue-CKjAg-Y2.d.mts → as-select.vue-DoAG5njV.d.mts} +1 -1
  150. package/dist/{as-select.vue-ZZtjsmcO.d.cts → as-select.vue-hd94jaH_.d.cts} +1 -1
  151. package/dist/{as-time-CE2FaqZ3.mjs → as-time-QJ9YiVj9.mjs} +6 -2
  152. package/dist/{as-time-CqCF0pKQ.cjs → as-time-nAPtGL3t.cjs} +6 -2
  153. package/dist/as-time.cjs +1 -1
  154. package/dist/as-time.d.cts +1 -1
  155. package/dist/as-time.d.mts +1 -1
  156. package/dist/as-time.mjs +1 -1
  157. package/dist/{as-time.vue-BCEE4uCV.d.mts → as-time.vue-DMy_Au0C.d.cts} +1 -1
  158. package/dist/{as-time.vue-BUAvE5m3.d.cts → as-time.vue-DgW7qSAM.d.mts} +1 -1
  159. package/dist/{as-tuple-B3ysbvxB.cjs → as-tuple-CFn7aZYt.cjs} +5 -1
  160. package/dist/{as-tuple-CeJWgP6l.mjs → as-tuple-CJXpGGKj.mjs} +5 -1
  161. package/dist/as-tuple.cjs +1 -1
  162. package/dist/as-tuple.d.cts +1 -1
  163. package/dist/as-tuple.d.mts +1 -1
  164. package/dist/as-tuple.mjs +1 -1
  165. package/dist/{as-tuple.vue-WN7k43tv.d.mts → as-tuple.vue-BDwz5FeN.d.mts} +1 -1
  166. package/dist/{as-tuple.vue-cy0ThAGl.d.cts → as-tuple.vue-DZ2Soqyw.d.cts} +1 -1
  167. package/dist/{as-union-Djhjo69H.cjs → as-union-BDRNBacb.cjs} +4 -0
  168. package/dist/{as-union-BPlYyGVk.mjs → as-union-DZWgGqqM.mjs} +4 -0
  169. package/dist/as-union.cjs +1 -1
  170. package/dist/as-union.d.cts +1 -1
  171. package/dist/as-union.d.mts +1 -1
  172. package/dist/as-union.mjs +1 -1
  173. package/dist/{as-union.vue-AqH35ozq.d.cts → as-union.vue-D9Mh0M3_.d.mts} +1 -1
  174. package/dist/{as-union.vue-Ew3Bany8.d.mts → as-union.vue-DQKWNuhd.d.cts} +1 -1
  175. package/dist/index.cjs +22 -22
  176. package/dist/index.d.cts +24 -1081
  177. package/dist/index.d.mts +24 -1081
  178. package/dist/index.mjs +22 -22
  179. package/dist/{types-BYfe1QEF.d.cts → types-B8aPXWL5.d.cts} +13 -0
  180. package/dist/{types-CV9ss4UN.d.mts → types-nuUi10Kl.d.mts} +13 -0
  181. package/dist/{use-as-date-XLE8HBbo.mjs → use-as-date-B6RGkjjB.mjs} +4 -0
  182. package/dist/{use-as-date-DY8b1_V4.cjs → use-as-date-CslHBPmQ.cjs} +4 -0
  183. package/package.json +6 -6
  184. package/dist/as-form.vue-2NZSk1F9.d.mts +0 -285
  185. package/dist/as-form.vue-Dg_5GYWG.d.cts +0 -285
@@ -42,34 +42,35 @@ var as_no_data_default = /* @__PURE__ */ (0, vue.defineComponent)({
42
42
  });
43
43
  //#endregion
44
44
  //#region src/components/defaults/as-field-shell.vue?vue&type=script&setup=true&lang.ts
45
- const _hoisted_1 = {
45
+ const _hoisted_1 = ["data-dirty"];
46
+ const _hoisted_2 = {
46
47
  key: 0,
47
48
  class: "as-field-header-row"
48
49
  };
49
- const _hoisted_2 = { class: "as-field-header-content" };
50
- const _hoisted_3 = ["for"];
51
- const _hoisted_4 = {
50
+ const _hoisted_3 = { class: "as-field-header-content" };
51
+ const _hoisted_4 = ["for"];
52
+ const _hoisted_5 = {
52
53
  key: 0,
53
54
  class: "as-field-label-index"
54
55
  };
55
- const _hoisted_5 = {
56
+ const _hoisted_6 = {
56
57
  key: 0,
57
58
  class: "as-field-header-actions"
58
59
  };
59
- const _hoisted_6 = ["disabled"];
60
- const _hoisted_7 = ["id"];
61
- const _hoisted_8 = { class: "as-field-input-row" };
62
- const _hoisted_9 = {
60
+ const _hoisted_7 = ["disabled"];
61
+ const _hoisted_8 = ["id"];
62
+ const _hoisted_9 = { class: "as-field-input-row" };
63
+ const _hoisted_10 = {
63
64
  key: 0,
64
65
  class: "as-field-footer-row"
65
66
  };
66
- const _hoisted_10 = ["id", "role"];
67
- const _hoisted_11 = {
67
+ const _hoisted_11 = ["id", "role"];
68
+ const _hoisted_12 = {
68
69
  key: 1,
69
70
  class: "as-error-slot",
70
71
  "aria-hidden": "true"
71
72
  };
72
- const _hoisted_12 = ["disabled"];
73
+ const _hoisted_13 = ["disabled"];
73
74
  //#endregion
74
75
  //#region src/components/defaults/as-field-shell.vue
75
76
  var as_field_shell_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -250,6 +251,10 @@ var as_field_shell_default = /* @__PURE__ */ (0, vue.defineComponent)({
250
251
  type: Boolean,
251
252
  required: false
252
253
  },
254
+ isDirty: {
255
+ type: Boolean,
256
+ required: false
257
+ },
253
258
  disabled: {
254
259
  type: Boolean,
255
260
  required: false
@@ -287,10 +292,11 @@ var as_field_shell_default = /* @__PURE__ */ (0, vue.defineComponent)({
287
292
  ref_key: "rootRef",
288
293
  ref: rootRef,
289
294
  class: (0, vue.normalizeClass)(["as-default-field", [__props.fieldClass, _ctx.$props.class]]),
290
- style: (0, vue.normalizeStyle)(_ctx.$props.style)
295
+ style: (0, vue.normalizeStyle)(_ctx.$props.style),
296
+ "data-dirty": __props.isDirty ? "" : void 0
291
297
  }, [
292
298
  (0, vue.createCommentVNode)(" Header row: label/header on left, action buttons on right "),
293
- _ctx.$slots.header || labelParts.value && !__props.chromeless || __props.onRemove || showOptionalClear.value || (0, vue.unref)(hasVariantPicker) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1, [(0, vue.createElementVNode)("div", _hoisted_2, [
299
+ _ctx.$slots.header || labelParts.value && !__props.chromeless || __props.onRemove || showOptionalClear.value || (0, vue.unref)(hasVariantPicker) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2, [(0, vue.createElementVNode)("div", _hoisted_3, [
294
300
  _ctx.$slots.header ? (0, vue.renderSlot)(_ctx.$slots, "header", {
295
301
  key: 0,
296
302
  inputId: __props.inputId,
@@ -300,14 +306,14 @@ var as_field_shell_default = /* @__PURE__ */ (0, vue.defineComponent)({
300
306
  key: 0,
301
307
  for: __props.inputId,
302
308
  class: "as-field-label"
303
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelParts.value.base), 1), labelParts.value.suffix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4, "\xA0" + (0, vue.toDisplayString)(labelParts.value.suffix), 1)) : (0, vue.createCommentVNode)("v-if", true)], 8, _hoisted_3)) : (0, vue.createCommentVNode)("v-if", true)], 64)) : (0, vue.createCommentVNode)("v-if", true),
309
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelParts.value.base), 1), labelParts.value.suffix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5, "\xA0" + (0, vue.toDisplayString)(labelParts.value.suffix), 1)) : (0, vue.createCommentVNode)("v-if", true)], 8, _hoisted_4)) : (0, vue.createCommentVNode)("v-if", true)], 64)) : (0, vue.createCommentVNode)("v-if", true),
304
310
  (0, vue.createCommentVNode)(" Union variant picker — inline next to label "),
305
311
  (0, vue.unref)(hasVariantPicker) ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_as_variant_picker.as_variant_picker_default, {
306
312
  key: 2,
307
313
  "union-context": (0, vue.unref)(unionCtx),
308
314
  disabled: __props.disabled
309
315
  }, null, 8, ["union-context", "disabled"])) : (0, vue.createCommentVNode)("v-if", true)
310
- ]), showOptionalClear.value || __props.onRemove ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5, [showOptionalClear.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_as_variant_picker.as_optional_clear_default, {
316
+ ]), showOptionalClear.value || __props.onRemove ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_6, [showOptionalClear.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_as_variant_picker.as_optional_clear_default, {
311
317
  key: 0,
312
318
  onClear: _cache[0] || (_cache[0] = ($event) => __props.onToggleOptional?.(false))
313
319
  })) : __props.onRemove ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
@@ -321,37 +327,37 @@ var as_field_shell_default = /* @__PURE__ */ (0, vue.defineComponent)({
321
327
  }, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("span", {
322
328
  class: "as-field-remove-btn-icon",
323
329
  "aria-hidden": "true"
324
- }, null, -1)])], 8, _hoisted_6)) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true),
330
+ }, null, -1)])], 8, _hoisted_7)) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true),
325
331
  __props.description && !__props.chromeless ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
326
332
  key: 1,
327
333
  id: __props.descId,
328
334
  class: "as-field-description"
329
- }, (0, vue.toDisplayString)(__props.description), 9, _hoisted_7)) : (0, vue.createCommentVNode)("v-if", true),
335
+ }, (0, vue.toDisplayString)(__props.description), 9, _hoisted_8)) : (0, vue.createCommentVNode)("v-if", true),
330
336
  showEmptyPlaceholder.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(as_no_data_default, {
331
337
  key: 2,
332
338
  kind: __props.type === "textarea" ? "textarea" : "input",
333
339
  "on-edit": (0, vue.unref)(enableOptional)
334
340
  }, null, 8, ["kind", "on-edit"])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [
335
- (0, vue.createElementVNode)("div", _hoisted_8, [(0, vue.renderSlot)(_ctx.$slots, "default", {
341
+ (0, vue.createElementVNode)("div", _hoisted_9, [(0, vue.renderSlot)(_ctx.$slots, "default", {
336
342
  inputId: __props.inputId,
337
343
  errorId: __props.errorId,
338
344
  descId: __props.descId
339
345
  })]),
340
346
  (0, vue.renderSlot)(_ctx.$slots, "after-input", { descId: __props.descId }),
341
- __props.error || __props.hint || __props.formAction ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_9, [__props.error || __props.hint ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
347
+ __props.error || __props.hint || __props.formAction ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_10, [__props.error || __props.hint ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
342
348
  key: 0,
343
349
  id: __props.errorId,
344
350
  class: "as-error-slot",
345
351
  role: __props.error ? "alert" : void 0
346
- }, (0, vue.toDisplayString)(__props.error || __props.hint), 9, _hoisted_10)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_11)), __props.formAction ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
352
+ }, (0, vue.toDisplayString)(__props.error || __props.hint), 9, _hoisted_11)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_12)), __props.formAction ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
347
353
  key: 2,
348
354
  type: "button",
349
355
  class: "as-field-action-link",
350
356
  disabled: __props.disabled,
351
357
  onClick: _cache[2] || (_cache[2] = ($event) => emit("action", __props.formAction.id))
352
- }, (0, vue.toDisplayString)(__props.formAction.label), 9, _hoisted_12)) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)
358
+ }, (0, vue.toDisplayString)(__props.formAction.label), 9, _hoisted_13)) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)
353
359
  ], 64))
354
- ], 6)), [[vue.vShow, !__props.hidden]]);
360
+ ], 14, _hoisted_1)), [[vue.vShow, !__props.hidden]]);
355
361
  };
356
362
  }
357
363
  });
@@ -42,34 +42,35 @@ var as_no_data_default = /* @__PURE__ */ defineComponent({
42
42
  });
43
43
  //#endregion
44
44
  //#region src/components/defaults/as-field-shell.vue?vue&type=script&setup=true&lang.ts
45
- const _hoisted_1 = {
45
+ const _hoisted_1 = ["data-dirty"];
46
+ const _hoisted_2 = {
46
47
  key: 0,
47
48
  class: "as-field-header-row"
48
49
  };
49
- const _hoisted_2 = { class: "as-field-header-content" };
50
- const _hoisted_3 = ["for"];
51
- const _hoisted_4 = {
50
+ const _hoisted_3 = { class: "as-field-header-content" };
51
+ const _hoisted_4 = ["for"];
52
+ const _hoisted_5 = {
52
53
  key: 0,
53
54
  class: "as-field-label-index"
54
55
  };
55
- const _hoisted_5 = {
56
+ const _hoisted_6 = {
56
57
  key: 0,
57
58
  class: "as-field-header-actions"
58
59
  };
59
- const _hoisted_6 = ["disabled"];
60
- const _hoisted_7 = ["id"];
61
- const _hoisted_8 = { class: "as-field-input-row" };
62
- const _hoisted_9 = {
60
+ const _hoisted_7 = ["disabled"];
61
+ const _hoisted_8 = ["id"];
62
+ const _hoisted_9 = { class: "as-field-input-row" };
63
+ const _hoisted_10 = {
63
64
  key: 0,
64
65
  class: "as-field-footer-row"
65
66
  };
66
- const _hoisted_10 = ["id", "role"];
67
- const _hoisted_11 = {
67
+ const _hoisted_11 = ["id", "role"];
68
+ const _hoisted_12 = {
68
69
  key: 1,
69
70
  class: "as-error-slot",
70
71
  "aria-hidden": "true"
71
72
  };
72
- const _hoisted_12 = ["disabled"];
73
+ const _hoisted_13 = ["disabled"];
73
74
  //#endregion
74
75
  //#region src/components/defaults/as-field-shell.vue
75
76
  var as_field_shell_default = /* @__PURE__ */ defineComponent({
@@ -250,6 +251,10 @@ var as_field_shell_default = /* @__PURE__ */ defineComponent({
250
251
  type: Boolean,
251
252
  required: false
252
253
  },
254
+ isDirty: {
255
+ type: Boolean,
256
+ required: false
257
+ },
253
258
  disabled: {
254
259
  type: Boolean,
255
260
  required: false
@@ -287,10 +292,11 @@ var as_field_shell_default = /* @__PURE__ */ defineComponent({
287
292
  ref_key: "rootRef",
288
293
  ref: rootRef,
289
294
  class: normalizeClass(["as-default-field", [__props.fieldClass, _ctx.$props.class]]),
290
- style: normalizeStyle(_ctx.$props.style)
295
+ style: normalizeStyle(_ctx.$props.style),
296
+ "data-dirty": __props.isDirty ? "" : void 0
291
297
  }, [
292
298
  createCommentVNode(" Header row: label/header on left, action buttons on right "),
293
- _ctx.$slots.header || labelParts.value && !__props.chromeless || __props.onRemove || showOptionalClear.value || unref(hasVariantPicker) ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
299
+ _ctx.$slots.header || labelParts.value && !__props.chromeless || __props.onRemove || showOptionalClear.value || unref(hasVariantPicker) ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [
294
300
  _ctx.$slots.header ? renderSlot(_ctx.$slots, "header", {
295
301
  key: 0,
296
302
  inputId: __props.inputId,
@@ -300,14 +306,14 @@ var as_field_shell_default = /* @__PURE__ */ defineComponent({
300
306
  key: 0,
301
307
  for: __props.inputId,
302
308
  class: "as-field-label"
303
- }, [createTextVNode(toDisplayString(labelParts.value.base), 1), labelParts.value.suffix ? (openBlock(), createElementBlock("span", _hoisted_4, "\xA0" + toDisplayString(labelParts.value.suffix), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_3)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true),
309
+ }, [createTextVNode(toDisplayString(labelParts.value.base), 1), labelParts.value.suffix ? (openBlock(), createElementBlock("span", _hoisted_5, "\xA0" + toDisplayString(labelParts.value.suffix), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_4)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true),
304
310
  createCommentVNode(" Union variant picker — inline next to label "),
305
311
  unref(hasVariantPicker) ? (openBlock(), createBlock(as_variant_picker_default, {
306
312
  key: 2,
307
313
  "union-context": unref(unionCtx),
308
314
  disabled: __props.disabled
309
315
  }, null, 8, ["union-context", "disabled"])) : createCommentVNode("v-if", true)
310
- ]), showOptionalClear.value || __props.onRemove ? (openBlock(), createElementBlock("div", _hoisted_5, [showOptionalClear.value ? (openBlock(), createBlock(as_optional_clear_default, {
316
+ ]), showOptionalClear.value || __props.onRemove ? (openBlock(), createElementBlock("div", _hoisted_6, [showOptionalClear.value ? (openBlock(), createBlock(as_optional_clear_default, {
311
317
  key: 0,
312
318
  onClear: _cache[0] || (_cache[0] = ($event) => __props.onToggleOptional?.(false))
313
319
  })) : __props.onRemove ? (openBlock(), createElementBlock("button", {
@@ -321,37 +327,37 @@ var as_field_shell_default = /* @__PURE__ */ defineComponent({
321
327
  }, [..._cache[3] || (_cache[3] = [createElementVNode("span", {
322
328
  class: "as-field-remove-btn-icon",
323
329
  "aria-hidden": "true"
324
- }, null, -1)])], 8, _hoisted_6)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
330
+ }, null, -1)])], 8, _hoisted_7)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
325
331
  __props.description && !__props.chromeless ? (openBlock(), createElementBlock("div", {
326
332
  key: 1,
327
333
  id: __props.descId,
328
334
  class: "as-field-description"
329
- }, toDisplayString(__props.description), 9, _hoisted_7)) : createCommentVNode("v-if", true),
335
+ }, toDisplayString(__props.description), 9, _hoisted_8)) : createCommentVNode("v-if", true),
330
336
  showEmptyPlaceholder.value ? (openBlock(), createBlock(as_no_data_default, {
331
337
  key: 2,
332
338
  kind: __props.type === "textarea" ? "textarea" : "input",
333
339
  "on-edit": unref(enableOptional)
334
340
  }, null, 8, ["kind", "on-edit"])) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
335
- createElementVNode("div", _hoisted_8, [renderSlot(_ctx.$slots, "default", {
341
+ createElementVNode("div", _hoisted_9, [renderSlot(_ctx.$slots, "default", {
336
342
  inputId: __props.inputId,
337
343
  errorId: __props.errorId,
338
344
  descId: __props.descId
339
345
  })]),
340
346
  renderSlot(_ctx.$slots, "after-input", { descId: __props.descId }),
341
- __props.error || __props.hint || __props.formAction ? (openBlock(), createElementBlock("div", _hoisted_9, [__props.error || __props.hint ? (openBlock(), createElementBlock("div", {
347
+ __props.error || __props.hint || __props.formAction ? (openBlock(), createElementBlock("div", _hoisted_10, [__props.error || __props.hint ? (openBlock(), createElementBlock("div", {
342
348
  key: 0,
343
349
  id: __props.errorId,
344
350
  class: "as-error-slot",
345
351
  role: __props.error ? "alert" : void 0
346
- }, toDisplayString(__props.error || __props.hint), 9, _hoisted_10)) : (openBlock(), createElementBlock("span", _hoisted_11)), __props.formAction ? (openBlock(), createElementBlock("button", {
352
+ }, toDisplayString(__props.error || __props.hint), 9, _hoisted_11)) : (openBlock(), createElementBlock("span", _hoisted_12)), __props.formAction ? (openBlock(), createElementBlock("button", {
347
353
  key: 2,
348
354
  type: "button",
349
355
  class: "as-field-action-link",
350
356
  disabled: __props.disabled,
351
357
  onClick: _cache[2] || (_cache[2] = ($event) => emit("action", __props.formAction.id))
352
- }, toDisplayString(__props.formAction.label), 9, _hoisted_12)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)
358
+ }, toDisplayString(__props.formAction.label), 9, _hoisted_13)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)
353
359
  ], 64))
354
- ], 6)), [[vShow, !__props.hidden]]);
360
+ ], 14, _hoisted_1)), [[vShow, !__props.hidden]]);
355
361
  };
356
362
  }
357
363
  });
@@ -1,2 +1,2 @@
1
- const require_as_field_shell = require("./as-field-shell-CW3DDHnq.cjs");
1
+ const require_as_field_shell = require("./as-field-shell-C4epFfvE.cjs");
2
2
  module.exports = require_as_field_shell.as_field_shell_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-field-shell.vue-Ct1ixFqc.cjs";
1
+ import { t as _default } from "./as-field-shell.vue-CLDHaWN0.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-field-shell.vue-K4Flr3gw.mjs";
1
+ import { t as _default } from "./as-field-shell.vue-DssDDSal.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_field_shell_default } from "./as-field-shell-BHYEjGcn.mjs";
1
+ import { t as as_field_shell_default } from "./as-field-shell-DLvPV8WS.mjs";
2
2
  export { as_field_shell_default as default };
@@ -1,4 +1,4 @@
1
- import { o as TAsComponentProps } from "./types-BYfe1QEF.cjs";
1
+ import { o as TAsComponentProps } from "./types-B8aPXWL5.cjs";
2
2
  import * as vue from "vue";
3
3
 
4
4
  //#region src/components/defaults/as-field-shell.vue.d.ts
@@ -1,4 +1,4 @@
1
- import { o as TAsComponentProps } from "./types-CV9ss4UN.mjs";
1
+ import { o as TAsComponentProps } from "./types-nuUi10Kl.mjs";
2
2
  import * as vue from "vue";
3
3
 
4
4
  //#region src/components/defaults/as-field-shell.vue.d.ts
@@ -8,6 +8,7 @@ function useAsField(opts) {
8
8
  const formState = (0, vue.inject)(require_use_form_context.FORM_STATE_KEY);
9
9
  const formData = (0, vue.inject)(require_use_form_context.FORM_DATA_KEY);
10
10
  const formContext = (0, vue.inject)(require_use_form_context.FORM_CONTEXT_KEY);
11
+ const patch = (0, vue.inject)(require_use_form_context.FORM_PATCH_KEY, void 0);
11
12
  const id = Symbol("form-field");
12
13
  const submitError = (0, vue.ref)();
13
14
  const externalError = (0, vue.ref)();
@@ -17,6 +18,7 @@ function useAsField(opts) {
17
18
  get: opts.getValue,
18
19
  set: opts.setValue
19
20
  });
21
+ const isDirty = (0, vue.computed)(() => patch ? patch.isDirtyPath(opts.path()) : false);
20
22
  (0, vue.watch)(model, () => {
21
23
  submitError.value = void 0;
22
24
  externalError.value = void 0;
@@ -76,7 +78,8 @@ function useAsField(opts) {
76
78
  return {
77
79
  model,
78
80
  error,
79
- onBlur
81
+ onBlur,
82
+ isDirty
80
83
  };
81
84
  }
82
85
  //#endregion
@@ -381,7 +384,7 @@ var as_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
381
384
  context: formContext.value
382
385
  });
383
386
  }
384
- const { model, error: formError, onBlur: _onBlur } = useAsField({
387
+ const { model, error: formError, onBlur: _onBlur, isDirty } = useAsField({
385
388
  getValue: getModel,
386
389
  setValue: setModel,
387
390
  rules: [formRule],
@@ -479,7 +482,10 @@ var as_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
479
482
  };
480
483
  });
481
484
  return (_ctx, _cache) => {
482
- return resolvedComponent.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(resolvedComponent.value), (0, vue.mergeProps)({ key: 0 }, componentProps.value, { onAction: (0, vue.unref)(handleAction) }), null, 16, ["onAction"])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1, " [" + (0, vue.toDisplayString)(unwrap((0, vue.unref)(label))) + "] No component for type \"" + (0, vue.toDisplayString)(__props.field.customType ?? __props.field.type) + "\"" + (0, vue.toDisplayString)((0, vue.unref)(componentName) ? ` (component "${(0, vue.unref)(componentName)}" not supplied)` : ""), 1));
485
+ return resolvedComponent.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(resolvedComponent.value), (0, vue.mergeProps)({ key: 0 }, componentProps.value, {
486
+ "is-dirty": (0, vue.unref)(isDirty),
487
+ onAction: (0, vue.unref)(handleAction)
488
+ }), null, 16, ["is-dirty", "onAction"])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1, " [" + (0, vue.toDisplayString)(unwrap((0, vue.unref)(label))) + "] No component for type \"" + (0, vue.toDisplayString)(__props.field.customType ?? __props.field.type) + "\"" + (0, vue.toDisplayString)((0, vue.unref)(componentName) ? ` (component "${(0, vue.unref)(componentName)}" not supplied)` : ""), 1));
483
489
  };
484
490
  }
485
491
  });
package/dist/as-field.cjs CHANGED
@@ -1,2 +1,2 @@
1
- const require_as_field = require("./as-field-BKa4D63r.cjs");
1
+ const require_as_field = require("./as-field-vktmRs-V.cjs");
2
2
  module.exports = require_as_field.as_field_default;
@@ -1,25 +1,2 @@
1
- import * as vue from "vue";
2
- import { FormFieldDef } from "@atscript/ui";
3
-
4
- //#region src/components/as-field.vue.d.ts
5
- declare const _default: typeof __VLS_export;
6
- declare const __VLS_export: <TFormData = any, TFormContext = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
7
- props: vue.PublicProps & __VLS_PrettifyLocal<{
8
- field: FormFieldDef;
9
- error?: string;
10
- onRemove?: () => void;
11
- canRemove?: boolean;
12
- removeLabel?: string;
13
- arrayIndex?: number;
14
- }> & (typeof globalThis extends {
15
- __VLS_PROPS_FALLBACK: infer P;
16
- } ? P : {});
17
- expose: (exposed: {}) => void;
18
- attrs: any;
19
- slots: {};
20
- emit: {};
21
- }>) => vue.VNode & {
22
- __ctx?: Awaited<typeof __VLS_setup>;
23
- };
24
- type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
1
+ import { t as _default } from "./as-field.vue-A2cJj-Ih.cjs";
25
2
  export = _default;
@@ -1,26 +1,2 @@
1
- import * as vue from "vue";
2
- import { FormFieldDef } from "@atscript/ui";
3
-
4
- //#region src/components/as-field.vue.d.ts
5
- declare const _default: typeof __VLS_export;
6
- declare const __VLS_export: <TFormData = any, TFormContext = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
7
- props: vue.PublicProps & __VLS_PrettifyLocal<{
8
- field: FormFieldDef;
9
- error?: string;
10
- onRemove?: () => void;
11
- canRemove?: boolean;
12
- removeLabel?: string;
13
- arrayIndex?: number;
14
- }> & (typeof globalThis extends {
15
- __VLS_PROPS_FALLBACK: infer P;
16
- } ? P : {});
17
- expose: (exposed: {}) => void;
18
- attrs: any;
19
- slots: {};
20
- emit: {};
21
- }>) => vue.VNode & {
22
- __ctx?: Awaited<typeof __VLS_setup>;
23
- };
24
- type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
25
- //#endregion
1
+ import { t as _default } from "./as-field.vue-CmjIDgQ5.mjs";
26
2
  export { _default as default };
package/dist/as-field.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as as_field_default } from "./as-field-DLW-csEu.mjs";
1
+ import { t as as_field_default } from "./as-field-5rz47opo.mjs";
2
2
  export { as_field_default as default };
@@ -0,0 +1,26 @@
1
+ import * as vue from "vue";
2
+ import { FormFieldDef } from "@atscript/ui";
3
+
4
+ //#region src/components/as-field.vue.d.ts
5
+ declare const _default: typeof __VLS_export;
6
+ declare const __VLS_export: <TFormData = any, TFormContext = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
7
+ props: vue.PublicProps & __VLS_PrettifyLocal<{
8
+ field: FormFieldDef;
9
+ error?: string;
10
+ onRemove?: () => void;
11
+ canRemove?: boolean;
12
+ removeLabel?: string;
13
+ arrayIndex?: number;
14
+ }> & (typeof globalThis extends {
15
+ __VLS_PROPS_FALLBACK: infer P;
16
+ } ? P : {});
17
+ expose: (exposed: {}) => void;
18
+ attrs: any;
19
+ slots: {};
20
+ emit: {};
21
+ }>) => vue.VNode & {
22
+ __ctx?: Awaited<typeof __VLS_setup>;
23
+ };
24
+ type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
25
+ //#endregion
26
+ export { _default as t };
@@ -0,0 +1,26 @@
1
+ import * as vue from "vue";
2
+ import { FormFieldDef } from "@atscript/ui";
3
+
4
+ //#region src/components/as-field.vue.d.ts
5
+ declare const _default: typeof __VLS_export;
6
+ declare const __VLS_export: <TFormData = any, TFormContext = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
7
+ props: vue.PublicProps & __VLS_PrettifyLocal<{
8
+ field: FormFieldDef;
9
+ error?: string;
10
+ onRemove?: () => void;
11
+ canRemove?: boolean;
12
+ removeLabel?: string;
13
+ arrayIndex?: number;
14
+ }> & (typeof globalThis extends {
15
+ __VLS_PROPS_FALLBACK: infer P;
16
+ } ? P : {});
17
+ expose: (exposed: {}) => void;
18
+ attrs: any;
19
+ slots: {};
20
+ emit: {};
21
+ }>) => vue.VNode & {
22
+ __ctx?: Awaited<typeof __VLS_setup>;
23
+ };
24
+ type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
25
+ //#endregion
26
+ export { _default as t };