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

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 (181) hide show
  1. package/{VBtn-DhfYEt9V.mjs → VBtn-C4WCntKg.mjs} +8 -8
  2. package/{VBtn-DhfYEt9V.mjs.map → VBtn-C4WCntKg.mjs.map} +1 -1
  3. package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-DOCNk-HL.mjs} +166 -166
  4. package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-DOCNk-HL.mjs.map} +1 -1
  5. package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CfouFZTg.mjs} +41 -41
  6. package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CfouFZTg.mjs.map} +1 -1
  7. package/{VHover-DLvOmsjv.mjs → VHover-DvUhdfsL.mjs} +3 -3
  8. package/{VHover-DLvOmsjv.mjs.map → VHover-DvUhdfsL.mjs.map} +1 -1
  9. package/{VListItem-LNaoM8S4.mjs → VListItem-BT-NXJyi.mjs} +56 -56
  10. package/{VListItem-LNaoM8S4.mjs.map → VListItem-BT-NXJyi.mjs.map} +1 -1
  11. package/{VMenu-9rTbTKtH.mjs → VMenu-Bk2NN8qb.mjs} +28 -28
  12. package/{VMenu-9rTbTKtH.mjs.map → VMenu-Bk2NN8qb.mjs.map} +1 -1
  13. package/{VPicker-BGuRD0KW.mjs → VPicker-DmY6CdER.mjs} +5 -5
  14. package/{VPicker-BGuRD0KW.mjs.map → VPicker-DmY6CdER.mjs.map} +1 -1
  15. package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-BO7XdtLS.mjs} +21 -21
  16. package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-BO7XdtLS.mjs.map} +1 -1
  17. package/{VRow-DaLdbIGw.mjs → VRow-BhNJcY5-.mjs} +17 -17
  18. package/{VRow-DaLdbIGw.mjs.map → VRow-BhNJcY5-.mjs.map} +1 -1
  19. package/{VSheet-DnIfs-1c.mjs → VSheet-Bkr-m6FE.mjs} +14 -14
  20. package/{VSheet-DnIfs-1c.mjs.map → VSheet-Bkr-m6FE.mjs.map} +1 -1
  21. package/{actions-8bWGsB-p.mjs → actions-ORUmfJR5.mjs} +15 -15
  22. package/{actions-8bWGsB-p.mjs.map → actions-ORUmfJR5.mjs.map} +1 -1
  23. package/{alert-IW1AIWZw.mjs → alert-pFT7pWTZ.mjs} +97 -94
  24. package/alert-pFT7pWTZ.mjs.map +1 -0
  25. package/{bigint-Jmfa2L4S.mjs → bigint-CCM0aPaS.mjs} +6 -6
  26. package/{bigint-Jmfa2L4S.mjs.map → bigint-CCM0aPaS.mjs.map} +1 -1
  27. package/{boolean-BEY7eBxf.mjs → boolean-1-MOJPSu.mjs} +40 -40
  28. package/{boolean-BEY7eBxf.mjs.map → boolean-1-MOJPSu.mjs.map} +1 -1
  29. package/{clipboard-BoKd7mFG.mjs → clipboard-CdGABqm1.mjs} +51 -51
  30. package/{clipboard-BoKd7mFG.mjs.map → clipboard-CdGABqm1.mjs.map} +1 -1
  31. package/{colorUtils-DmtKYNgW.mjs → colorUtils-BdpqbLZS.mjs} +3 -3
  32. package/{colorUtils-DmtKYNgW.mjs.map → colorUtils-BdpqbLZS.mjs.map} +1 -1
  33. package/{common-BeDAn4wu.mjs → common-Bi5RUD-n.mjs} +8881 -8880
  34. package/common-Bi5RUD-n.mjs.map +1 -0
  35. package/{component-CjPpW_A2.mjs → component-DhEJuSE6.mjs} +2 -2
  36. package/{component-CjPpW_A2.mjs.map → component-DhEJuSE6.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 +8 -8
  64. package/{console-CRXioSFP.mjs → console-Dgoi3FwV.mjs} +2 -2
  65. package/{console-CRXioSFP.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
  66. package/{custom-Y1WJVKP9.mjs → custom-DQmbYYPh.mjs} +17 -17
  67. package/{custom-Y1WJVKP9.mjs.map → custom-DQmbYYPh.mjs.map} +1 -1
  68. package/{date-BxEeCNWD.mjs → date-E_8RP3gK.mjs} +21 -21
  69. package/{date-BxEeCNWD.mjs.map → date-E_8RP3gK.mjs.map} +1 -1
  70. package/{date_time-6kpv7eDF.mjs → date_time-BmYl2TFi.mjs} +300 -300
  71. package/{date_time-6kpv7eDF.mjs.map → date_time-BmYl2TFi.mjs.map} +1 -1
  72. package/{display-kAyhIPBH.mjs → display-B089h_sz.mjs} +30 -28
  73. package/display-B089h_sz.mjs.map +1 -0
  74. package/{display-CO0pTIEs.mjs → display-dv4cOwRN.mjs} +42 -42
  75. package/{display-CO0pTIEs.mjs.map → display-dv4cOwRN.mjs.map} +1 -1
  76. package/{display-DvzWa1QO.mjs → display-fXo4JeIS.mjs} +41 -41
  77. package/{display-DvzWa1QO.mjs.map → display-fXo4JeIS.mjs.map} +1 -1
  78. package/{elevation-CMzO50xm.mjs → elevation-YNOj0hSa.mjs} +82 -82
  79. package/{elevation-CMzO50xm.mjs.map → elevation-YNOj0hSa.mjs.map} +1 -1
  80. package/{enum-noYU2Cqh.mjs → enum-8itqseZa.mjs} +22 -22
  81. package/{enum-noYU2Cqh.mjs.map → enum-8itqseZa.mjs.map} +1 -1
  82. package/factories.mjs +1 -1
  83. package/{field_composer-DpJx0Oz1.mjs → field_composer-ugYyDQNY.mjs} +7 -7
  84. package/{field_composer-DpJx0Oz1.mjs.map → field_composer-ugYyDQNY.mjs.map} +1 -1
  85. package/{form-CDLcDPyU.mjs → form-BtDnRXYm.mjs} +45 -45
  86. package/{form-CDLcDPyU.mjs.map → form-BtDnRXYm.mjs.map} +1 -1
  87. package/{guards-B99p3BPj.mjs → guards-Cby4QwzY.mjs} +2 -2
  88. package/{guards-B99p3BPj.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
  89. package/guards.mjs +4 -4
  90. package/helpers.mjs +6 -6
  91. package/{index-C9UuBVyI.mjs → index-3XRUa28C.mjs} +12 -12
  92. package/{index-C9UuBVyI.mjs.map → index-3XRUa28C.mjs.map} +1 -1
  93. package/{index-CzI9mHIx.mjs → index-BCQmj6cf.mjs} +13 -13
  94. package/{index-CzI9mHIx.mjs.map → index-BCQmj6cf.mjs.map} +1 -1
  95. package/{index-bXmNb9jX.mjs → index-BgevbZTt.mjs} +10 -10
  96. package/{index-bXmNb9jX.mjs.map → index-BgevbZTt.mjs.map} +1 -1
  97. package/{index-BaWthszI.mjs → index-C-PCfO1S.mjs} +2 -2
  98. package/{index-BaWthszI.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
  99. package/{index-Bi050X9r.mjs → index-CSyOYGEi.mjs} +8 -8
  100. package/{index-Bi050X9r.mjs.map → index-CSyOYGEi.mjs.map} +1 -1
  101. package/{index-CIvylvfa.mjs → index-D9i1PRci.mjs} +5701 -5698
  102. package/{index-CIvylvfa.mjs.map → index-D9i1PRci.mjs.map} +1 -1
  103. package/{index-B2rKM3mR.mjs → index-DWv9iKZs.mjs} +21 -21
  104. package/{index-B2rKM3mR.mjs.map → index-DWv9iKZs.mjs.map} +1 -1
  105. package/{index-slHxe6b-.mjs → index-VpcXNOpn.mjs} +2 -2
  106. package/{index-slHxe6b-.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
  107. package/{index-BUpccfIz.mjs → index-fiZltUBs.mjs} +3 -3
  108. package/{index-BUpccfIz.mjs.map → index-fiZltUBs.mjs.map} +1 -1
  109. package/index.mjs +31 -31
  110. package/{integer-BIJ4_I8y.mjs → integer-W2_SlKV1.mjs} +5 -5
  111. package/{integer-BIJ4_I8y.mjs.map → integer-W2_SlKV1.mjs.map} +1 -1
  112. package/{mdi-CqMJqgQi.mjs → mdi-DC1jeTJJ.mjs} +55 -55
  113. package/{mdi-CqMJqgQi.mjs.map → mdi-DC1jeTJJ.mjs.map} +1 -1
  114. package/{number-z_LAINPM.mjs → number-DgwZBxOw.mjs} +101 -101
  115. package/{number-z_LAINPM.mjs.map → number-DgwZBxOw.mjs.map} +1 -1
  116. package/package.json +31 -31
  117. package/{position-Ai5XksAO.mjs → position-B9VPkbhU.mjs} +2 -2
  118. package/{position-Ai5XksAO.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
  119. package/private/control-button-bar/props.d.ts +10 -10
  120. package/private/fields/bigint.d.ts +128 -128
  121. package/private/fields/boolean.d.ts +68 -68
  122. package/private/fields/common.d.ts +16 -16
  123. package/private/fields/custom.d.ts +2 -2
  124. package/private/fields/date.d.ts +24 -24
  125. package/private/fields/date_time.d.ts +24 -24
  126. package/private/fields/enum.d.ts +68 -68
  127. package/private/fields/integer.d.ts +107 -107
  128. package/private/fields/multiple.d.ts +17 -17
  129. package/private/fields/number.d.ts +46 -46
  130. package/private/fields/read_mode_renderer.d.ts +17 -17
  131. package/private/fields/string.d.ts +24 -24
  132. package/private/fields/unsigned_integer.d.ts +107 -107
  133. package/private/filtration/filter_group_condition_element.d.ts +36 -36
  134. package/private/resourceful-index/index.d.ts +17 -17
  135. package/private/resourceful-index/partials/_controls.d.ts +1 -1
  136. package/private/resourceful-index/partials/_per_page_selector.d.ts +1 -1
  137. package/private/resourceful-index/props.d.ts +34 -34
  138. package/private/resourceful-record/form.d.ts +12 -12
  139. package/private/resourceful-record/index.d.ts +13 -13
  140. package/private/resourceful-record/props.d.ts +20 -20
  141. package/private/sortable/index.d.ts +1 -1
  142. package/{props-p4f5Pa5h.mjs → props-COvhL78L.mjs} +4 -4
  143. package/{props-p4f5Pa5h.mjs.map → props-COvhL78L.mjs.map} +1 -1
  144. package/{props-BYX22zcE.mjs → props-GYFmAF5-.mjs} +6 -6
  145. package/{props-BYX22zcE.mjs.map → props-GYFmAF5-.mjs.map} +1 -1
  146. package/{renderers-BKUvrrVm.mjs → renderers-BP4li2WT.mjs} +13 -13
  147. package/{renderers-BKUvrrVm.mjs.map → renderers-BP4li2WT.mjs.map} +1 -1
  148. package/{string-Dmr8SRMf.mjs → string-RfpfCwEn.mjs} +137 -137
  149. package/{string-Dmr8SRMf.mjs.map → string-RfpfCwEn.mjs.map} +1 -1
  150. package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-Cg6tbRJj.mjs} +4 -4
  151. package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-Cg6tbRJj.mjs.map} +1 -1
  152. package/useRender-CfNJA_8a.mjs +9 -0
  153. package/{useRender-BD1xw5zG.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
  154. package/{utils-DqXWb-4f.mjs → utils-D3ZGaTyv.mjs} +48 -48
  155. package/{utils-DqXWb-4f.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
  156. package/{validation-DS3tTSk5.mjs → validation-BF_JkNWB.mjs} +4 -4
  157. package/{validation-DS3tTSk5.mjs.map → validation-BF_JkNWB.mjs.map} +1 -1
  158. package/VBtn.css +0 -1
  159. package/VDatePicker.css +0 -1
  160. package/VEmptyState.css +0 -1
  161. package/VListItem.css +0 -1
  162. package/VMenu.css +0 -1
  163. package/VPicker.css +0 -1
  164. package/VRadioGroup.css +0 -1
  165. package/VSheet.css +0 -1
  166. package/actions.css +0 -1
  167. package/alert-IW1AIWZw.mjs.map +0 -1
  168. package/boolean.css +0 -1
  169. package/clipboard.css +0 -1
  170. package/common-BeDAn4wu.mjs.map +0 -1
  171. package/common.css +0 -1
  172. package/date_time.css +0 -1
  173. package/display-kAyhIPBH.mjs.map +0 -1
  174. package/display.css +0 -1
  175. package/display2.css +0 -1
  176. package/elevation.css +0 -1
  177. package/index.css +0 -1
  178. package/mdi.css +0 -1
  179. package/number.css +0 -1
  180. package/string.css +0 -1
  181. package/useRender-BD1xw5zG.mjs +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"form-CDLcDPyU.mjs","sources":["../src/private/resourceful-record/types.ts","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardActions.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardSubtitle.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardTitle.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardItem.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardText.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCard.mjs","../src/private/resourceful-record/props.ts","../node_modules/.pnpm/@nhtio+hooks@1.20251013.0/node_modules/@nhtio/hooks/index.mjs","../src/private/resourceful-record/utils.ts","../src/private/resourceful-record/form.ts"],"sourcesContent":["import { joi } from '@nhtio/lucid-resourceful/joi'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport type { SlotsType } from 'vue'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { OpenAPIV3 } from 'openapi-types'\nimport type { NextFn } from '@nhtio/middleware'\nimport type { Schema } from '@nhtio/lucid-resourceful/joi'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ResourcefulRecordHookableEvents } from './props'\nimport type { ResourcefulHttpResponse } from '../services/http'\nimport type { EventMap, Key, Listener } from '@nhtio/tiny-typed-emitter'\nimport type { Hooks, HookHandler, HookHandlerProvider } from '@nhtio/hooks'\nimport type {\n FormWithValidationDefaultSlotProps,\n ScopedDisplayProps,\n ValidationProps,\n} from '../ux/validation'\nimport type {\n ResourcefulModelFieldRelationshipMeta,\n ResourcefulEnumObject,\n} from '@nhtio/lucid-resourceful/types'\n\nexport type ResourceResourcefulRecordResponse = Record<string, any>\n\nexport type ResourcefulRecordEvents = ResourcefulRecordHookableEvents\n\nexport type ResourcefulRecordHooks = Hooks<ResourcefulRecordEvents>\n\nexport type ResourcefulRecordHookHandler<Event extends keyof ResourcefulRecordEvents> =\n | HookHandler<ResourcefulRecordEvents[Event][0], ResourcefulRecordEvents[Event][1]>\n | HookHandlerProvider<ResourcefulRecordEvents[Event][0], ResourcefulRecordEvents[Event][1]>\n\nexport type ResourcefulRecordPreventedHookHandler = ResourcefulRecordHookHandler<'prevented'>\n\nexport type ResourcefulRecordSubmittedHookHandler = ResourcefulRecordHookHandler<'submitted'>\n\nexport type ResourcefulRecordProcessingHookHandler = ResourcefulRecordHookHandler<'processing'>\n\nexport type ResourcefulRecordSuccessHookHandler = ResourcefulRecordHookHandler<'success'>\n\nexport type ResourcefulRecordFailureHookHandler = ResourcefulRecordHookHandler<'failure'>\n\n/**\n * NOTE: Exception hooks are specifically for errors that occur during the processing\n * of the submission middleware chain, whereas general 'error' hooks handle caught errors\n * throughout the component lifecycle.\n */\nexport type ResourcefulRecordExceptionHookHandler = ResourcefulRecordHookHandler<'exception'>\n\nexport type ResourcefulRecordChangeStateSubmittingHookHandler =\n ResourcefulRecordHookHandler<'state:submitting'>\nexport type ResourcefulRecordChangeStateValidatingHookHandler =\n ResourcefulRecordHookHandler<'state:validating'>\nexport type ResourcefulRecordChangeStateTouchedHookHandler =\n ResourcefulRecordHookHandler<'state:touched'>\nexport type ResourcefulRecordChangeStateDirtyHookHandler =\n ResourcefulRecordHookHandler<'state:dirty'>\nexport type ResourcefulRecordChangeStateValidHookHandler =\n ResourcefulRecordHookHandler<'state:valid'>\nexport type ResourcefulRecordChangeStatePendingHookHandler =\n ResourcefulRecordHookHandler<'state:pending'>\nexport type ResourcefulRecordChangeStateErrorsHookHandler =\n ResourcefulRecordHookHandler<'state:errors'>\nexport type ResourcefulRecordChangeStateErrorBagHookHandler =\n ResourcefulRecordHookHandler<'state:errorBag'>\nexport type ResourcefulRecordChangeStateSubmitCountHookHandler =\n ResourcefulRecordHookHandler<'state:submitCount'>\n\nexport const ResourcefulRecordViewMode = ['read', 'create', 'update'] as const\nexport type ResourcefulRecordViewMode = (typeof ResourcefulRecordViewMode)[number]\n\nexport type ResourcefulRecordSlots = {\n 'error-media': () => any\n 'loading-media': (props: { percent: number }) => any\n 'form': ResourcefulRecordFormSlots['default']\n}\n\nexport type ResourcefulRecordComponentSlots = SlotsType<ResourcefulRecordSlots>\n\nexport type ResourcefulRecordFormWithValidationDefaultSlotProps = Omit<\n FormWithValidationDefaultSlotProps,\n 'forceUpdateSchema' | 'forceUpdateInitialValues'\n> & {\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>>\n}\n\nexport type ResourcefulRecordFormSlots = {\n default: <TSchema extends Schema>(\n props: ResourcefulRecordFormWithValidationDefaultSlotProps,\n display: ScopedDisplayProps,\n model: ResourcefulRecordModelSchema,\n schema: TSchema,\n mode: ResourcefulRecordViewMode,\n fire: FireAlertFn,\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>>\n ) => any\n}\n\nexport type ResourcefulRecordFormDefaultSlotArgs = Parameters<ResourcefulRecordFormSlots['default']>\n\nexport type ResourcefulRecordFormComponentSlots = SlotsType<ResourcefulRecordFormSlots>\n\nexport type ResourcefulSubmissionHandler = (\n values: any,\n onSuccess: (\n response: ResourceResourcefulRecordResponse,\n values: Record<string, any>\n ) => void | Promise<void>,\n onFailure: (\n response: ResourcefulHttpResponse,\n values: Record<string, any>\n ) => void | Promise<void>\n) => void | Promise<void>\n\nexport type ResourcefulRecordBusEventMap = EventMap<{\n doFormSubmit: Parameters<ValidationProps['doFormSubmit']>\n doResetForm: Parameters<ValidationProps['doResetForm']>\n setFieldValue: Parameters<ValidationProps['setFieldValue']>\n setValues: Parameters<ValidationProps['setValues']>\n setFieldTouched: Parameters<ValidationProps['setFieldTouched']>\n setTouched: Parameters<ValidationProps['setTouched']>\n validate: Parameters<ValidationProps['validate']>\n validateField: Parameters<ValidationProps['validateField']>\n forceUpdateSchema: Parameters<ValidationProps['forceUpdateSchema']>\n forceUpdateInitialValues: Parameters<ValidationProps['forceUpdateInitialValues']>\n}>\n\nclass ResourcefulRecordBusConsumer {\n readonly #emitter: ResourcefulRecordBusEmitter\n\n constructor(emitter: ResourcefulRecordBusEmitter) {\n this.#emitter = emitter\n }\n\n on<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>,\n ctx?: any\n ): this {\n this.#emitter.on(event, listener, ctx)\n return this\n }\n\n once<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>,\n ctx?: any\n ): this {\n this.#emitter.once(event, listener, ctx)\n return this\n }\n\n off<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>\n ): this {\n this.#emitter.off(event, listener)\n return this\n }\n}\n\nexport type { ResourcefulRecordBusConsumer }\n\nexport const isResourcefulRecordBusConsumer = (\n value: unknown\n): value is ResourcefulRecordBusConsumer => {\n return value instanceof ResourcefulRecordBusConsumer\n}\n\nexport class ResourcefulRecordBusEmitter extends TypedEventEmitter<ResourcefulRecordBusEventMap> {\n spawn(): ResourcefulRecordBusConsumer {\n return new ResourcefulRecordBusConsumer(this)\n }\n}\n\nexport type ActionIsActionableValidator = (record: ResourceResourcefulRecordResponse) => boolean\n\nexport type TernaryOperator = boolean | null\n\nexport type ActionCallback = (\n record: ResourceResourcefulRecordResponse\n) => TernaryOperator | Promise<TernaryOperator> | PromiseLike<TernaryOperator>\n\nexport interface ResourcefulRecordAction {\n icon: IconValue\n cta: string\n actionable?: boolean | ActionIsActionableValidator | undefined\n}\n\nexport interface ResourcefulRecordUrlAction extends ResourcefulRecordAction {\n url: string | ((record: ResourceResourcefulRecordResponse) => string | null | undefined)\n target?: '_self' | '_blank' | '_parent' | '_top' | string | undefined\n}\n\nexport type SuccessCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type UndeterminedCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type FailureCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type CompleteCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type DispositionCallback = (\n record: ResourceResourcefulRecordResponse,\n result: TernaryOperator\n) => void\n\nexport type ExceptionCallback = (\n record: ResourceResourcefulRecordResponse,\n error: unknown,\n onComplete?: CompleteCallback | undefined\n) => void\n\nexport interface ResourcefulRecordFunctionAction extends ResourcefulRecordAction {\n action: ActionCallback\n onSuccess?: SuccessCallback | undefined\n onUndetermined?: UndeterminedCallback | undefined\n onFailure?: FailureCallback | undefined\n onComplete?: CompleteCallback | undefined\n onException?: ExceptionCallback | undefined\n}\n\nconst resourcefulRecordActionCommonSchema = {\n icon: joi\n .alternatives()\n .try(joi.string(), joi.object().unknown(true), joi.array(), joi.function())\n .required(),\n cta: joi.string().required(),\n actionable: joi.alternatives().try(joi.boolean(), joi.function()).optional(),\n} satisfies Record<keyof ResourcefulRecordAction, Schema>\n\nconst resourcefulRecordUrlActionSchema = joi.object<ResourcefulRecordUrlAction>({\n ...resourcefulRecordActionCommonSchema,\n url: joi.alternatives().try(joi.string(), joi.function()).required(),\n target: joi.string().optional(),\n})\n\nconst resourcefulRecordFunctionActionSchema = joi.object<ResourcefulRecordFunctionAction>({\n ...resourcefulRecordActionCommonSchema,\n action: joi.function().required(),\n onSuccess: joi.function().optional(),\n onUndetermined: joi.function().optional(),\n onFailure: joi.function().optional(),\n onComplete: joi.function().optional(),\n onException: joi.function().optional(),\n})\n\nexport const isResourcefulRecordUrlAction = (\n value: unknown\n): value is ResourcefulRecordUrlAction => {\n const { error } = resourcefulRecordUrlActionSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const isResourcefulRecordFunctionAction = (\n value: unknown\n): value is ResourcefulRecordFunctionAction => {\n const { error } = resourcefulRecordFunctionActionSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nconst resourcefulRecordActionArraySchema = joi\n .array<Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>>()\n .items(\n joi.alternatives().try(resourcefulRecordUrlActionSchema, resourcefulRecordFunctionActionSchema)\n )\n\nexport const isResourcefulRecordActionArray = (\n value: unknown\n): value is Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction> => {\n const { error } = resourcefulRecordActionArraySchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport type ResourcefulRecordCrudActionCallback = () => void | Promise<void>\n\nexport type ResourcefulRecordCrudInstanceActionCallback = (uid: string) => void | Promise<void>\n\nexport type ResourcefulRecordSubmissionMiddlewareFn = (\n values: any,\n next: NextFn\n) => void | Promise<void>\n\nexport type ResourcefulRecordModelSchemaMandatoryProps = Extract<\n keyof OpenAPIV3.NonArraySchemaObject,\n 'type' | 'title' | 'nullable' | 'readOnly' | 'writeOnly'\n>\n\nexport type ResourcefulRecordModelPropertySchema = Pick<\n Required<OpenAPIV3.NonArraySchemaObject>,\n ResourcefulRecordModelSchemaMandatoryProps\n> &\n Omit<NonNullable<OpenAPIV3.NonArraySchemaObject>, ResourcefulRecordModelSchemaMandatoryProps> & {\n 'x-resourceful-autocreated': boolean\n 'x-resourceful-autoupdated': boolean\n 'x-resourceful-immutable': boolean\n 'x-resourceful-primary-key': boolean\n 'x-resourceful-relationship': ResourcefulModelFieldRelationshipMeta\n 'x-resourceful-choices'?: ResourcefulEnumObject<any>[]\n }\n\nexport type ResourcefulRecordModelSchema = {\n [name: string]: ResourcefulRecordModelPropertySchema\n}\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst VCardActions = genericComponent()({\n name: \"VCardActions\",\n props: makeComponentProps(),\n setup(props, {\n slots\n }) {\n provideDefaults({\n VBtn: {\n slim: true,\n variant: \"text\"\n }\n });\n useRender(() => {\n var _a;\n return createVNode(\"div\", {\n \"class\": [\"v-card-actions\", props.class],\n \"style\": props.style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n });\n return {};\n }\n});\nexport {\n VCardActions\n};\n//# sourceMappingURL=VCardActions.mjs.map\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, \"VCardSubtitle\");\nconst VCardSubtitle = genericComponent()({\n name: \"VCardSubtitle\",\n props: makeVCardSubtitleProps(),\n setup(props, {\n slots\n }) {\n useRender(() => createVNode(props.tag, {\n \"class\": [\"v-card-subtitle\", props.class],\n \"style\": [{\n \"--v-card-subtitle-opacity\": props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\nexport {\n VCardSubtitle,\n makeVCardSubtitleProps\n};\n//# sourceMappingURL=VCardSubtitle.mjs.map\n","import \"../../util/helpers.mjs\";\nimport \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { createSimpleFunctional } from \"../../util/createSimpleFunctional.mjs\";\nconst VCardTitle = createSimpleFunctional(\"v-card-title\");\nexport {\n VCardTitle\n};\n//# sourceMappingURL=VCardTitle.mjs.map\n","import { q as createVNode, F as Fragment, x as toDisplayString } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { VCardSubtitle } from \"./VCardSubtitle.mjs\";\nimport { VCardTitle } from \"./VCardTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/VAvatar.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VIcon } from \"../VIcon/VIcon.mjs\";\nimport { I as IconValue } from \"../../mdi-CVSg0Nll.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: {\n type: [String, Number, Boolean],\n default: void 0\n },\n title: {\n type: [String, Number, Boolean],\n default: void 0\n },\n ...makeComponentProps(),\n ...makeDensityProps()\n}, \"VCardItem\");\nconst VCardItem = genericComponent()({\n name: \"VCardItem\",\n props: makeCardItemProps(),\n setup(props, {\n slots\n }) {\n useRender(() => {\n var _a;\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n return createVNode(\"div\", {\n \"class\": [\"v-card-item\", props.class],\n \"style\": props.style\n }, [hasPrepend && createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-card-item__prepend\"\n }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), createVNode(\"div\", {\n \"class\": \"v-card-item__content\"\n }, [hasTitle && createVNode(VCardTitle, {\n \"key\": \"title\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.title) == null ? void 0 : _a2.call(slots)) ?? toDisplayString(props.title)];\n }\n }), hasSubtitle && createVNode(VCardSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.subtitle) == null ? void 0 : _a2.call(slots)) ?? toDisplayString(props.subtitle)];\n }\n }), (_a = slots.default) == null ? void 0 : _a.call(slots)]), hasAppend && createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-card-item__append\"\n }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n }\n }\n }, slots.append)])]);\n });\n return {};\n }\n});\nexport {\n VCardItem,\n makeCardItemProps\n};\n//# sourceMappingURL=VCardItem.mjs.map\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, \"VCardText\");\nconst VCardText = genericComponent()({\n name: \"VCardText\",\n props: makeVCardTextProps(),\n setup(props, {\n slots\n }) {\n useRender(() => createVNode(props.tag, {\n \"class\": [\"v-card-text\", props.class],\n \"style\": [{\n \"--v-card-text-opacity\": props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\nexport {\n VCardText,\n makeVCardTextProps\n};\n//# sourceMappingURL=VCardText.mjs.map\n","import { y as withDirectives, z as resolveDirective, q as createVNode, v as mergeProps } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { VCardActions } from \"./VCardActions.mjs\";\nimport { VCardItem } from \"./VCardItem.mjs\";\nimport { VCardText } from \"./VCardText.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VImg } from \"../VImg/VImg.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { I as IconValue } from \"../../mdi-CVSg0Nll.mjs\";\nimport { makeLoaderProps, useLoader, LoaderSlot } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps, useVariant, genOverlays } from \"../../composables/variant.mjs\";\nimport { Ripple } from \"../../directives/ripple.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nimport \"./VCardSubtitle.mjs\";\nimport \"./VCardTitle.mjs\";\nconst makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: void 0\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n subtitle: {\n type: [String, Number, Boolean],\n default: void 0\n },\n text: {\n type: [String, Number, Boolean],\n default: void 0\n },\n title: {\n type: [String, Number, Boolean],\n default: void 0\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: \"elevated\"\n })\n}, \"VCard\");\nconst VCard = genericComponent()({\n name: \"VCard\",\n directives: {\n vRipple: Ripple\n },\n props: makeVCardProps(),\n setup(props, {\n attrs,\n slots\n }) {\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const link = useLink(props, attrs);\n useRender(() => {\n const isLink = props.link !== false && link.isLink.value;\n const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);\n const Tag = isLink ? \"a\" : props.tag;\n const hasTitle = !!(slots.title || props.title != null);\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null);\n const hasHeader = hasTitle || hasSubtitle;\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);\n const hasImage = !!(slots.image || props.image);\n const hasCardItem = hasHeader || hasPrepend || hasAppend;\n const hasText = !!(slots.text || props.text != null);\n return withDirectives(createVNode(Tag, mergeProps({\n \"class\": [\"v-card\", {\n \"v-card--disabled\": props.disabled,\n \"v-card--flat\": props.flat,\n \"v-card--hover\": props.hover && !(props.disabled || props.flat),\n \"v-card--link\": isClickable\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"onClick\": isClickable && link.navigate,\n \"tabindex\": props.disabled ? -1 : void 0\n }, link.linkProps), {\n default: () => {\n var _a;\n return [hasImage && createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-card__image\"\n }, [!slots.image ? createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), createVNode(LoaderSlot, {\n \"name\": \"v-card\",\n \"active\": !!props.loading,\n \"color\": typeof props.loading === \"boolean\" ? void 0 : props.loading\n }, {\n default: slots.loader\n }), hasCardItem && createVNode(VCardItem, {\n \"key\": \"item\",\n \"prependAvatar\": props.prependAvatar,\n \"prependIcon\": props.prependIcon,\n \"title\": props.title,\n \"subtitle\": props.subtitle,\n \"appendAvatar\": props.appendAvatar,\n \"appendIcon\": props.appendIcon\n }, {\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append\n }), hasText && createVNode(VCardText, {\n \"key\": \"text\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.text) == null ? void 0 : _a2.call(slots)) ?? props.text];\n }\n }), (_a = slots.default) == null ? void 0 : _a.call(slots), slots.actions && createVNode(VCardActions, null, {\n default: slots.actions\n }), genOverlays(isClickable, \"v-card\")];\n }\n }), [[resolveDirective(\"ripple\"), isClickable && props.ripple]]);\n });\n return {};\n }\n});\nexport {\n VCard,\n makeVCardProps\n};\n//# sourceMappingURL=VCard.mjs.map\n","import { FireAlertFn } from '../ux/alert'\nimport { isObject } from '../common/guards'\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { isResourcefulRecordActionArray } from './types'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { makeCommonResourcefulFieldProps } from '../fields/common'\nimport { makeVCardProps } from '@nhtio/vuetifiable/components/VCard/VCard'\nimport { defaultControlButtonBarOptionsProps } from '../control-button-bar/props'\nimport { propsAndEmitsFactory, propsAndDefaultsFactory } from '../common/factories'\nimport {\n defaultControlButtonProps,\n defaultControlButtonOverrideProps,\n} from '../control-button/props'\nimport {\n isResourcefulRecordPreventedEvent,\n isResourcefulRecordSubmittedEvent,\n isResourcefulRecordProcessingEvent,\n isResourcefulRecordSuccessEvent,\n isResourcefulRecordFailureEvent,\n} from './guards'\nimport type { PropFactory } from '../common/factories'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type { AsyncValidationOptions } from '@nhtio/lucid-resourceful/joi'\nimport type { PropType, ExtractPublicPropTypes, ExtractPropTypes } from 'vue'\nimport type { ValidationMessageKey, JoiSchemaPropType } from '../ux/validation'\nimport type { ControlButtonBarOptionsProps } from '../control-button-bar/props'\nimport type { ResourcefulHttpResponse, ResourcefulHttpProgress } from '../services/http'\nimport type { ExtractPublicPropTypesFromFactory, HookableEvents } from '../common/factories'\nimport type { RouteLocationAsRelativeGeneric, RouteLocationAsPathGeneric } from 'vue-router'\nimport type { ControlButtonProps, ControlButtonOverrideProps } from '../control-button/props'\nimport type {\n ResourcefulRecordModelSchema,\n ResourcefulRecordPreventedHookHandler,\n ResourcefulRecordSubmittedHookHandler,\n ResourcefulRecordProcessingHookHandler,\n ResourcefulRecordSuccessHookHandler,\n ResourcefulRecordFailureHookHandler,\n ResourcefulRecordExceptionHookHandler,\n ResourcefulRecordChangeStateSubmittingHookHandler,\n ResourcefulRecordChangeStateValidatingHookHandler,\n ResourcefulRecordChangeStateTouchedHookHandler,\n ResourcefulRecordChangeStateDirtyHookHandler,\n ResourcefulRecordChangeStateValidHookHandler,\n ResourcefulRecordChangeStatePendingHookHandler,\n ResourcefulRecordChangeStateErrorsHookHandler,\n ResourcefulRecordChangeStateErrorBagHookHandler,\n ResourcefulRecordChangeStateSubmitCountHookHandler,\n ResourceResourcefulRecordResponse,\n ResourcefulRecordViewMode,\n ResourcefulSubmissionHandler,\n ResourcefulRecordBusConsumer,\n ResourcefulRecordUrlAction,\n ResourcefulRecordFunctionAction,\n ActionIsActionableValidator,\n ResourcefulRecordCrudActionCallback,\n ResourcefulRecordCrudInstanceActionCallback,\n ResourcefulRecordSubmissionMiddlewareFn,\n} from './types'\n\nexport const {\n factory: makeResourcefulRecordAdvancedOptions,\n defaults: resourcefulRecordAdvancedOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n uidForCreate: {\n type: String as PropType<string>,\n default: 'new',\n },\n debug: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n 'ResourcefulRecordAdvancedOptions'\n)\n\nexport type ResourcefulRecordAdvancedOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordAdvancedOptions\n>\n\nexport const {\n factory: makeResourcefulRecordRouteOptions,\n defaults: resourcefulRecordRouteOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n name: {\n type: String as PropType<string>,\n required: true,\n },\n paramForUid: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n queryPropForUid: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n },\n 'ResourcefulRecordRouteOptions'\n)\n\nexport type ResourcefulRecordRouteOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordRouteOptions\n>\n\nexport const {\n factory: makeResourcefulRecordCommonFieldProps,\n defaults: resourcefulRecordCommonFieldPropsDefaults,\n} = propsAndDefaultsFactory(\n {\n ...pick(makeCommonResourcefulFieldProps(), [\n 'density',\n 'class',\n 'style',\n 'menuIcon',\n 'theme',\n 'variant',\n 'persistentPlaceholder',\n ]),\n },\n 'ResourcefulRecordCommonFieldProps'\n)\n\nexport type ResourcefulRecordCommonFieldProps = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordCommonFieldProps\n>\n\nexport type ResourcefulRecordFieldSpecificProps = {\n [prop: string]: ResourcefulRecordCommonFieldProps\n}\n\nconst resourcefulRecordRouteOptionsSchema = joi\n .object({\n name: joi.string().required(),\n paramForUid: joi.string().optional(),\n queryPropForUid: joi.string().optional(),\n })\n .xor('paramForUid', 'queryPropForUid')\n\nexport const resourcefulRecordRouteOptionsValidator = (\n value: unknown\n): value is ResourcefulRecordRouteOptions => {\n const { error } = resourcefulRecordRouteOptionsSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const {\n factory: makeResourcefulRecordNavOptions,\n defaults: resourcefulRecordNavOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n name: {\n type: String as PropType<RouteLocationAsRelativeGeneric['name'] | undefined>,\n default: undefined,\n },\n params: {\n type: Object as PropType<RouteLocationAsRelativeGeneric['params'] | undefined>,\n default: undefined,\n },\n path: {\n type: String as PropType<RouteLocationAsPathGeneric['path'] | undefined>,\n default: undefined,\n },\n query: {\n type: Object as PropType<\n RouteLocationAsRelativeGeneric['query'] | RouteLocationAsPathGeneric['query'] | undefined\n >,\n default: undefined,\n },\n hash: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n replace: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n force: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n },\n 'ResourcefulRecordNavOptions'\n)\n\nexport type ResourcefulRecordNavOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordNavOptions\n>\n\nconst routeLocationAsRelativeGenericSchema = joi.object<RouteLocationAsRelativeGeneric>({\n name: joi.string().optional(),\n params: joi.object().pattern(joi.string(), joi.any()).optional(),\n query: joi.object().pattern(joi.string(), joi.any()).optional(),\n path: joi.forbidden(),\n hash: joi.string().optional(),\n replace: joi.boolean().optional(),\n force: joi.boolean().optional(),\n})\nconst routeLocationAsPathGenericSchema = joi.object<RouteLocationAsPathGeneric>({\n path: joi.string().required(),\n query: joi.object().pattern(joi.string(), joi.any()).optional(),\n hash: joi.string().optional(),\n replace: joi.boolean().optional(),\n force: joi.boolean().optional(),\n})\nconst resourcefulRecordNavOptionsSchema = joi.alternatives<\n RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric\n>(routeLocationAsRelativeGenericSchema, routeLocationAsPathGenericSchema)\n\nexport const resourcefulRecordNavOptionsValidator = (\n value: unknown\n): value is RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric => {\n const { error } = resourcefulRecordNavOptionsSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const rawResourcefulEmits = {\n 'state': (state: string | null | undefined) =>\n 'string' === typeof state || null === state || 'undefined' === typeof state,\n 'update:state': (state: string | null | undefined) =>\n 'string' === typeof state || null === state || 'undefined' === typeof state,\n // NOTE: 'error' is a general error handler for caught errors throughout the component lifecycle\n 'error': (error: unknown) => error instanceof Error || true,\n 'prevented': (values: Record<string, any>, error: ValidationError) =>\n isResourcefulRecordPreventedEvent(values, error),\n 'submitted': (values: Record<string, any>) => isResourcefulRecordSubmittedEvent(values),\n 'success': (response: ResourceResourcefulRecordResponse, values: Record<string, any>) =>\n isResourcefulRecordSuccessEvent(response, values),\n 'failure': (response: ResourcefulHttpResponse, values: Record<string, any>) =>\n isResourcefulRecordFailureEvent(response, values),\n // NOTE: 'exception' is specifically for errors during submission middleware chain processing\n 'exception': (exception: unknown) => exception instanceof Error || true,\n 'state:submitting': (is: boolean) => 'boolean' === typeof is,\n 'state:validating': (is: boolean) => 'boolean' === typeof is,\n 'state:touched': (is: boolean) => 'boolean' === typeof is,\n 'state:dirty': (is: boolean) => 'boolean' === typeof is,\n 'state:valid': (is: boolean) => 'boolean' === typeof is,\n 'state:pending': (is: boolean) => 'boolean' === typeof is,\n 'state:errors': (errors: Record<string, string | undefined>) =>\n isObject(errors) &&\n Object.keys(errors).every((k) => 'string' === typeof k) &&\n Object.values(errors).every((v) => 'string' === typeof v || undefined === v),\n 'state:errorBag': (errors: Partial<Record<string, string[]>>) =>\n isObject(errors) &&\n Object.keys(errors).every((k) => 'string' === typeof k) &&\n Object.values(errors).every(\n (v) => Array.isArray(v) && v.every((item) => 'string' === typeof item)\n ),\n 'state:submitCount': (count: number) => 'number' === typeof count,\n}\n\nexport const { makeProps: makeBaseResourcefulRecordProps, emits: baseResourcefulEmits } =\n propsAndEmitsFactory(\n {\n state: {\n type: String as PropType<string | undefined | null>,\n default: undefined,\n },\n mode: {\n type: String as PropType<ResourcefulRecordViewMode>,\n default: 'read',\n validator: (v: string) => ['read', 'create', 'update'].includes(v),\n },\n initialValues: {\n type: Object as PropType<Record<string, any> | undefined | null>,\n default: undefined,\n },\n additionalMessages: {\n type: Object as PropType<Record<Exclude<string, ValidationMessageKey>, string>>,\n default: () => ({}),\n },\n overrideMessages: {\n type: Object as PropType<Partial<Record<ValidationMessageKey, string>>>,\n default: () => ({}),\n },\n callOnPrevented: {\n type: Array as PropType<Array<ResourcefulRecordPreventedHookHandler>>,\n default: () => [],\n },\n callOnSubmitted: {\n type: Array as PropType<Array<ResourcefulRecordSubmittedHookHandler>>,\n default: () => [],\n },\n callOnSuccess: {\n type: Array as PropType<Array<ResourcefulRecordSuccessHookHandler>>,\n default: () => [],\n },\n callOnFailure: {\n type: Array as PropType<Array<ResourcefulRecordFailureHookHandler>>,\n default: () => [],\n },\n callOnException: {\n type: Array as PropType<Array<ResourcefulRecordExceptionHookHandler>>,\n default: () => [],\n },\n callOnSubmittingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateSubmittingHookHandler>>,\n default: () => [],\n },\n callOnValidatingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateValidatingHookHandler>>,\n default: () => [],\n },\n callOnTouchedStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateTouchedHookHandler>>,\n default: () => [],\n },\n callOnDirtyStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateDirtyHookHandler>>,\n default: () => [],\n },\n callOnValidStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateValidHookHandler>>,\n default: () => [],\n },\n callOnPendingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStatePendingHookHandler>>,\n default: () => [],\n },\n callOnErrorsStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateErrorsHookHandler>>,\n default: () => [],\n },\n callOnErrorBagStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateErrorBagHookHandler>>,\n default: () => [],\n },\n callOnSubmitCountStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateSubmitCountHookHandler>>,\n default: () => [],\n },\n fieldLabels: {\n type: Object as PropType<Record<string, string>>,\n default: () => ({}),\n },\n advanced: {\n type: Object as PropType<ResourcefulRecordAdvancedOptions>,\n default: () => resourcefulRecordAdvancedOptionsDefaults,\n },\n commonFieldOptions: {\n type: Object as PropType<ResourcefulRecordCommonFieldProps>,\n default: () => resourcefulRecordCommonFieldPropsDefaults,\n },\n specificFieldOptions: {\n type: Object as PropType<ResourcefulRecordFieldSpecificProps>,\n default: () => ({}),\n },\n bus: {\n type: Object as PropType<ResourcefulRecordBusConsumer>,\n required: true,\n },\n model: {\n type: Object as PropType<ResourcefulRecordModelSchema>,\n required: true,\n },\n schema: {\n type: Object as JoiSchemaPropType<any>,\n required: true,\n },\n submissionPayloadModifiers: {\n type: Array as PropType<Array<ResourcefulRecordSubmissionMiddlewareFn>>,\n default: () => [],\n },\n submissionHandler: {\n type: Function as PropType<ResourcefulSubmissionHandler>,\n required: true,\n },\n validationOptions: {\n type: Object as PropType<AsyncValidationOptions>,\n default: () => ({ abortEarly: false }),\n },\n fireAlertFn: {\n type: [Function, Object] as unknown as PropType<FireAlertFn | undefined>,\n default: undefined,\n },\n doRefreshChoices: {\n type: Object as PropType<Record<string, () => Promise<REnumFieldLoadedChoice[]>>>,\n default: () => ({}),\n },\n },\n rawResourcefulEmits,\n 'ResourcefulRecordBase'\n )\n\nexport type BaseResourcefulRecordProps = ExtractPublicPropTypesFromFactory<\n typeof makeBaseResourcefulRecordProps\n>\n\nexport type BaseResourcefulRecordInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeBaseResourcefulRecordProps>\n>\n\nexport type ResourcefulRecordInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeResourcefulRecordProps>\n>\n\nconst vCardDefaults = getDefaultsForPropFactory(makeVCardProps as PropFactory<any>)\nexport type VCardPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVCardProps>>\n\nexport type ResourcefulRecordVCardProps = Omit<\n VCardPublicProps,\n 'tag' | 'action' | 'method' | 'onSubmit'\n>\n\nconst rawResourcefulRecordEmits = {\n ...rawResourcefulEmits,\n processing: (progress: ResourcefulHttpProgress, values: Record<string, any>) =>\n isResourcefulRecordProcessingEvent(progress, values),\n}\n\nexport const { makeProps: makeResourcefulRecordProps, emits: resourcefulRecordEmits } =\n propsAndEmitsFactory(\n {\n baseUrl: {\n type: String as PropType<string>,\n required: true,\n },\n metaProgressColor: {\n type: String as PropType<string>,\n default: 'success',\n },\n uid: {\n type: String as PropType<string | undefined | null>,\n default: undefined,\n },\n container: {\n type: Object as PropType<ResourcefulRecordVCardProps>,\n default: () => ({\n ...vCardDefaults,\n width: '100%',\n }),\n },\n controlButtonOptions: {\n type: Object as PropType<ControlButtonProps>,\n default: () => defaultControlButtonProps,\n },\n controlButtonBarOptions: {\n type: Object as PropType<ControlButtonBarOptionsProps>,\n default: () => ({\n ...defaultControlButtonBarOptionsProps,\n gap: 3,\n }),\n },\n routeToIndex: {\n type: Object as PropType<ResourcefulRecordNavOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordNavOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToIndex: {\n type: Function as PropType<ResourcefulRecordCrudActionCallback | undefined>,\n default: undefined,\n },\n indexButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canIndex: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToCreate: {\n type: Object as PropType<ResourcefulRecordNavOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordNavOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToCreate: {\n type: Function as PropType<ResourcefulRecordCrudActionCallback | undefined>,\n default: undefined,\n },\n createButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canCreate: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToRead: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToRead: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n readButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canRead: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToUpdate: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToUpdate: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n updateButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canUpdate: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToDelete: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToDelete: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n deleteButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canDelete: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n actions: {\n type: Array as PropType<\n Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>\n >,\n default: () => [],\n validator: (v: unknown) => isResourcefulRecordActionArray(v),\n },\n ...omit(makeBaseResourcefulRecordProps(), [\n 'bus',\n 'schema',\n 'model',\n 'submissionPayloadModifiers',\n 'submissionHandler',\n 'validationOptions',\n 'fireAlertFn',\n 'doRefreshChoices',\n ]),\n callOnProcessing: {\n type: Array as PropType<Array<ResourcefulRecordProcessingHookHandler>>,\n default: () => [],\n },\n commitButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n resetButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n refreshButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n bus: {\n type: Object as PropType<ResourcefulRecordBusConsumer | undefined>,\n default: undefined,\n },\n },\n rawResourcefulRecordEmits,\n 'ResourcefulRecord'\n )\n\nexport type ResourcefulRecordProps = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordProps\n>\n\nexport type ResourcefulRecordEmits = typeof rawResourcefulRecordEmits\n\nexport type ResourcefulRecordHookableEvents = HookableEvents<ResourcefulRecordEmits>\n\nexport type ResourcefulRecordFormEmits = typeof rawResourcefulEmits\n\nexport type ResourcefulRecordFormHookableEvents = HookableEvents<ResourcefulRecordEmits>\n","var m = (s) => {\n throw TypeError(s);\n};\nvar w = (s, e, t) => e.has(s) || m(\"Cannot \" + t);\nvar n = (s, e, t) => (w(s, e, \"read from private field\"), t ? t.call(s) : e.get(s)), a = (s, e, t) => e.has(s) ? m(\"Cannot add the same private member more than once\") : e instanceof WeakSet ? e.add(s) : e.set(s, t), h = (s, e, t, r) => (w(s, e, \"write to private field\"), r ? r.call(s, t) : e.set(s, t), t), g = (s, e, t) => (w(s, e, \"access private method\"), t);\nvar f, u, l, p, d, o, H, y;\nclass _ {\n /**\n * Create a new Runner instance\n *\n * @param action - The name of the event/action this runner handles\n * @param hookHandlers - Optional set of hook handlers to initialize with\n *\n * @example\n * ```ts\n * const runner = new Runner('saving', new Set([handler1, handler2]))\n * ```\n */\n constructor(e, t) {\n a(this, o);\n /**\n * A collection of registered hook handlers for this runner's event.\n *\n * Contains both function handlers and handler provider objects.\n */\n a(this, f);\n /**\n * An array of cleanup handlers collected from hook executions.\n *\n * Cleanup handlers are stored in an array (not a Set) because it's valid\n * for multiple hooks to return the same cleanup function, and we need to\n * execute it once for each hook that returned it.\n */\n a(this, u, []);\n /**\n * Current state of the runner's cleanup lifecycle.\n *\n * State transitions:\n * - `idle`: Initial state, no hooks have been run\n * - `cleanup_pending`: Hooks have been executed, cleanup can be performed\n * - `cleanup_initiated`: Cleanup has started\n * - `cleanup_completed`: Cleanup has finished\n */\n a(this, l, \"idle\");\n /**\n * A list of handler names to exclude from execution.\n *\n * Populated by the `without()` method to selectively skip certain handlers.\n */\n a(this, p, []);\n /**\n * Whether to skip all hooks during execution.\n *\n * Set to `true` when `without()` is called without arguments.\n */\n a(this, d, !1);\n this.action = e, h(this, f, t || /* @__PURE__ */ new Set());\n }\n /**\n * Check if cleanup operations are pending.\n *\n * Returns `true` when hooks have been executed but cleanup has not yet been performed.\n * This is useful to determine if `cleanup()` should be called.\n *\n * @returns `true` if cleanup is pending, `false` otherwise\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n * await runner.run(user)\n *\n * if (runner.isCleanupPending) {\n * await runner.cleanup(null, user)\n * }\n * ```\n */\n get isCleanupPending() {\n return n(this, l) === \"cleanup_pending\";\n }\n /**\n * Exclude specific hook handlers from execution.\n *\n * This method allows you to selectively skip certain handlers when running hooks.\n * Calling this method multiple times will overwrite the previous ignore list.\n *\n * @param handlersToIgnore - Array of handler names to ignore. If undefined, all hooks will be skipped.\n * @returns The runner instance for method chaining\n *\n * @example\n * ```ts\n * // Skip specific handlers by name\n * await hooks.runner('saving')\n * .without(['hashPassword', 'generateDefaultAvatar'])\n * .run(user)\n *\n * // Skip all handlers\n * await hooks.runner('saving').without().run(user)\n *\n * // Skip all handlers\n * runner.without().run()\n * ```\n */\n without(e) {\n return e ? (h(this, d, !1), h(this, p, e)) : h(this, d, !0), this;\n }\n /**\n * Execute hook handlers in the order they were registered.\n *\n * Runs all hook handlers for the event, passing the provided arguments to each handler.\n * Any cleanup handlers returned by hooks are collected for later execution.\n *\n * @param data - Arguments to pass to the hook handlers\n * @returns A promise that resolves when all handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n * await runner.run(user, transaction)\n * ```\n */\n async run(...e) {\n return g(this, o, y).call(this, !1, e);\n }\n /**\n * Execute hook handlers in reverse order (last registered handler runs first).\n *\n * This is useful when you want to execute cleanup operations or perform actions\n * in the opposite order of registration.\n *\n * @param data - Arguments to pass to the hook handlers\n * @returns A promise that resolves when all handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('deleting')\n * await runner.runReverse(user)\n * ```\n */\n async runReverse(...e) {\n return g(this, o, y).call(this, !0, e);\n }\n /**\n * Execute all collected cleanup handlers in reverse order.\n *\n * Cleanup handlers are executed in reverse order (last collected runs first) to ensure\n * proper cleanup sequencing. This method is idempotent - it can be called multiple times\n * but will only execute the cleanup handlers once.\n *\n * @param data - Arguments to pass to the cleanup handlers (typically includes error and context)\n * @returns A promise that resolves when all cleanup handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n *\n * try {\n * await runner.run(user)\n * await saveToDatabase(user)\n * await runner.cleanup(null, user) // Success cleanup\n * } catch (error) {\n * await runner.cleanup(error, user) // Error cleanup\n * throw error\n * }\n * ```\n */\n async cleanup(...e) {\n if (!this.isCleanupPending)\n return;\n h(this, l, \"cleanup_initiated\");\n let t = n(this, u).length;\n for (; t--; )\n await n(this, u)[t](...e);\n h(this, l, \"cleanup_completed\"), h(this, u, []);\n }\n}\nf = new WeakMap(), u = new WeakMap(), l = new WeakMap(), p = new WeakMap(), d = new WeakMap(), o = new WeakSet(), /**\n * Check if a handler should be executed based on the ignore list.\n *\n * @param handlerName - The name of the handler to check\n * @returns `true` if the handler should be executed, `false` if it should be skipped\n */\nH = function(e) {\n return !n(this, p).includes(e);\n}, y = async function(e, t) {\n if (n(this, l) !== \"idle\" || (h(this, l, \"cleanup_pending\"), n(this, d)))\n return;\n const r = e ? Array.from(n(this, f)).reverse() : n(this, f);\n for (let c of r)\n if (g(this, o, H).call(this, c.name)) {\n const k = await (typeof c == \"function\" ? c(...t) : c.handle(this.action, ...t));\n typeof k == \"function\" && n(this, u).push(k);\n }\n};\nvar i;\nclass A {\n constructor() {\n /**\n * A collection of registered hooks organized by event name.\n *\n * Each event maps to a Set of handlers (either functions or handler providers).\n * Sets are used to automatically prevent duplicate handler registration.\n */\n a(this, i, /* @__PURE__ */ new Map());\n }\n /**\n * Get access to all the registered hooks. The return value is\n * a map of the event name and a set of handlers.\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n * const allHooks = hooks.all()\n * console.log(allHooks.size) // Number of events with handlers\n * ```\n */\n all() {\n return n(this, i);\n }\n /**\n * Find if a handler for a given event exists.\n *\n * @param event - The event name to check\n * @param handler - Optional specific handler to check for\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Check if any handlers exist for an event\n * if (hooks.has('saving')) {\n * console.log('Saving hooks are registered')\n * }\n *\n * // Check if specific handler exists\n * if (hooks.has('saving', hashPasswordHandler)) {\n * console.log('Hash password handler is registered')\n * }\n * ```\n */\n has(e, t) {\n const r = n(this, i).get(e);\n return r ? t ? r.has(t) : !0 : !1;\n }\n /**\n * Add a hook handler for a given event. Adding the same handler twice will\n * result in a noop.\n *\n * @param event - The event name to add the handler for\n * @param handler - The hook handler function or handler provider\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Add a function handler\n * hooks.add('saving', function hashPassword(user) {\n * user.password = hash(user.password)\n * })\n *\n * // Add a handler provider\n * hooks.add('saving', {\n * name: 'EmailValidator',\n * handle(event, user) {\n * validateEmail(user.email)\n * }\n * })\n * ```\n */\n add(e, t) {\n return n(this, i).get(e) || n(this, i).set(e, /* @__PURE__ */ new Set()), n(this, i).get(e).add(t), this;\n }\n /**\n * Remove hook handler for a given event.\n *\n * @param event - The event name to remove the handler from\n * @param handler - The hook handler to remove\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n * const handler = function hashPassword(user) {}\n *\n * hooks.add('saving', handler)\n *\n * // Later, remove the handler\n * const removed = hooks.remove('saving', handler)\n * console.log(removed) // true if handler was found and removed\n * ```\n */\n remove(e, t) {\n const r = n(this, i).get(e);\n return r ? r.delete(t) : !1;\n }\n /**\n * Clear all the hooks for a specific event or all the\n * events.\n *\n * @param event - Optional event name to clear hooks for. If not provided, clears all hooks.\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Clear hooks for specific event\n * hooks.clear('saving')\n *\n * // Clear all hooks\n * hooks.clear()\n * ```\n */\n clear(e) {\n if (!e) {\n n(this, i).clear();\n return;\n }\n n(this, i).delete(e);\n }\n /**\n * Merge hooks from an existing hooks instance.\n *\n * @param hooks - The hooks instance to merge from\n *\n * @example\n * ```ts\n * const hooks1 = new Hooks()\n * const hooks2 = new Hooks()\n *\n * hooks2.add('saving', handler1)\n * hooks2.add('deleting', handler2)\n *\n * // Merge hooks2 into hooks1\n * hooks1.merge(hooks2)\n * ```\n */\n merge(e) {\n e.all().forEach((t, r) => {\n t.forEach((c) => {\n this.add(r, c);\n });\n });\n }\n /**\n * Returns an instance of the runner to run hooks\n *\n * @param action - The event name to create a runner for\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * hooks.add('saving', function hashPassword(user) {\n * user.password = hash(user.password)\n * })\n *\n * // Get a runner and execute hooks\n * const runner = hooks.runner('saving')\n * await runner.run(user)\n * ```\n */\n runner(e) {\n return new _(e, n(this, i).get(e));\n }\n}\ni = new WeakMap();\nconst C = \"1.20251013.0\";\nexport {\n A as Hooks,\n _ as Runner,\n C as version\n};\n//# sourceMappingURL=index.mjs.map\n","import { useI18n } from '../ioc'\nimport { Hooks } from '@nhtio/hooks'\nimport { SvgIcon } from '../svg-icon'\nimport { diff } from 'deep-object-diff'\nimport { isObject } from '../common/guards'\nimport { Middleware } from '@nhtio/middleware'\nimport { baseResourcefulEmits } from './props'\nimport { default as dotCtor } from 'dot-object'\nimport { ControlButton } from '../control-button'\nimport { ResourcefulRecordViewMode } from './types'\nimport { validator } from '@nhtio/lucid-resourceful/joi'\nimport { mdiRefresh, mdiFileUndo, mdiContentSave } from '@mdi/js'\nimport { encode, decode } from '@nhtio/lucid-resourceful/encoding'\nimport { debounce, throttle } from '@nhtio/vuetifiable/util/helpers'\nimport { getCamelAndMaybeKebabPropKeysFor } from '../common/factories'\nimport { isResourcefulRecordUrlAction, isResourcefulRecordFunctionAction } from './types'\nimport { computed, h, shallowRef, triggerRef, watch, warn, toValue, nextTick } from 'vue'\nimport {\n stripUndefinedValuesFromObject,\n typeAndFormatToResourcefulFieldType,\n} from '../common/utils'\nimport {\n E_DECODED_STATE_MODEL_INCOMPATIBLE,\n E_FAILED_TO_DECODE_STATE_MODEL,\n E_FAILED_TO_COMPARE_STATE_MODEL_VALUES,\n} from './exceptions'\nimport type { Ref, ComputedRef, VNode, MaybeRef } from 'vue'\nimport type { ResourcefulHttpResponse } from '../services/http'\nimport type { ObjectSchema, Schema, ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type { ControlButtonProps, ControlButtonOverrideProps } from '../control-button/props'\nimport type {\n ControlButtonBarProps,\n ControlButtonBarOptionsProps,\n} from '../control-button-bar/props'\nimport type {\n // BaseResourcefulRecordProps,\n ResourcefulRecordNavOptions,\n ResourcefulRecordRouteOptions,\n ResourcefulRecordEmits,\n ResourcefulRecordFormEmits,\n ResourcefulRecordFormHookableEvents,\n BaseResourcefulRecordInstanceProps,\n ResourcefulRecordInstanceProps,\n} from './props'\nimport type {\n ActionCallback,\n SuccessCallback,\n UndeterminedCallback,\n FailureCallback,\n CompleteCallback,\n ExceptionCallback,\n ResourcefulRecordUrlAction,\n ResourcefulRecordFunctionAction,\n ActionIsActionableValidator,\n ResourceResourcefulRecordResponse,\n ResourcefulRecordCrudActionCallback,\n ResourcefulRecordCrudInstanceActionCallback,\n ResourcefulRecordPreventedHookHandler,\n ResourcefulRecordSubmittedHookHandler,\n ResourcefulRecordSuccessHookHandler,\n ResourcefulRecordFailureHookHandler,\n ResourcefulRecordExceptionHookHandler,\n ResourcefulRecordChangeStateSubmittingHookHandler,\n ResourcefulRecordChangeStateValidatingHookHandler,\n ResourcefulRecordChangeStateTouchedHookHandler,\n ResourcefulRecordChangeStateDirtyHookHandler,\n ResourcefulRecordChangeStateValidHookHandler,\n ResourcefulRecordChangeStatePendingHookHandler,\n ResourcefulRecordChangeStateErrorsHookHandler,\n ResourcefulRecordChangeStateErrorBagHookHandler,\n ResourcefulRecordChangeStateSubmitCountHookHandler,\n ResourcefulSubmissionHandler,\n ResourcefulRecordSubmissionMiddlewareFn,\n ResourcefulRecordModelSchema,\n ResourcefulRecordModelPropertySchema,\n ResourcefulRecordHookHandler,\n} from './types'\n\nconst dot = Object.create(dotCtor)\ndot.keepArray = true\n\nexport const useControlButtonBaseBindings = (\n controlButtonBarOptions: Ref<ControlButtonBarOptionsProps>,\n controlButtonOptions: Ref<ControlButtonProps>,\n isUnactionable: ComputedRef<boolean>\n): ComputedRef<ControlButtonProps> => {\n return computed(\n () =>\n ({\n ...stripUndefinedValuesFromObject({\n color: controlButtonBarOptions.value.overflowMenuButtonOptions?.color,\n density: controlButtonBarOptions.value.overflowMenuButtonOptions?.density,\n size: controlButtonBarOptions.value.overflowMenuButtonOptions?.size,\n }),\n ...stripUndefinedValuesFromObject({\n ...controlButtonOptions.value,\n }),\n ...stripUndefinedValuesFromObject(\n isUnactionable.value\n ? {\n state: {\n disabled: isUnactionable.value,\n },\n }\n : {}\n ),\n inOverflowMenu: true,\n }) satisfies ControlButtonProps\n )\n}\n\nconst evaluateActionIsActionable = (\n mode: ResourcefulRecordViewMode,\n record: ResourceResourcefulRecordResponse | Record<string, any>,\n can: boolean | ActionIsActionableValidator\n): boolean =>\n useEvaluateActionIsActionable(\n computed(() => mode),\n computed(() => record),\n computed(() => can)\n ).value\n\nexport const useEvaluateActionIsActionable = (\n mode: Ref<ResourcefulRecordViewMode>,\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n can: Ref<boolean | ActionIsActionableValidator>\n): ComputedRef<boolean> =>\n computed(() => {\n if (typeof can.value === 'boolean') {\n if (!can.value) return false\n } else if (typeof can.value === 'function') {\n if ('create' === mode.value && !can.value({} as any)) {\n return false\n } else if (!can.value(record.value)) {\n return false\n }\n }\n return true\n })\n\nexport const useCrudActionButtonBindings = (\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n mode: Ref<ResourcefulRecordViewMode>,\n route:\n | Ref<ResourcefulRecordNavOptions | undefined>\n | Ref<ResourcefulRecordRouteOptions | undefined>,\n callback:\n | Ref<ResourcefulRecordCrudActionCallback | undefined>\n | Ref<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n can: Ref<boolean | ActionIsActionableValidator>,\n controlButtonDefaults: Partial<ControlButtonOverrideProps>,\n controlButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>\n): ComputedRef<ControlButtonProps | undefined> => {\n return computed(() => {\n if (!route.value && !callback.value) return undefined\n const isActionable = useEvaluateActionIsActionable(mode, record, can)\n if (!isActionable.value) return undefined\n const ret: ControlButtonProps = {\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject(controlButtonDefaults),\n ...controlButtonOverrides.value,\n ...(route.value ? { to: route.value } : callback.value ? { onClick: callback.value } : {}),\n }\n return ret\n })\n}\n\nconst processActionForRecord = async (\n record: ResourceResourcefulRecordResponse,\n action: ActionCallback,\n onSuccess: SuccessCallback = () => {},\n onUndetermined: UndeterminedCallback = () => {},\n onFailure: FailureCallback = () => {},\n onComplete: CompleteCallback = () => {},\n onException: ExceptionCallback = () => {}\n): Promise<void> => {\n try {\n const result = await action(record)\n if (result === true) {\n onSuccess(record)\n } else if (result === false) {\n onFailure(record)\n } else {\n onUndetermined(record)\n }\n onComplete(record)\n } catch (e) {\n if ('function' === typeof onException) {\n onException(record, e, onComplete)\n }\n }\n}\n\nexport const useAdditionalActionButtonBindings = (\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n mode: Ref<ResourcefulRecordViewMode>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>,\n actions: Ref<Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>>\n): ComputedRef<ControlButtonProps[]> => {\n return computed(\n () =>\n Array.from(actions.value)\n .map((action) => {\n const isActionable = evaluateActionIsActionable(\n mode.value,\n record.value,\n action.actionable ?? true\n )\n if (!isActionable) return undefined\n if (isResourcefulRecordUrlAction(action)) {\n return {\n ...controlButtonBaseBindings.value,\n prependIcon: action.icon,\n cta: action.cta,\n to: 'function' === typeof action.url ? action.url(record.value) : action.url,\n target: action.target,\n } satisfies ControlButtonProps\n } else if (isResourcefulRecordFunctionAction(action)) {\n return {\n ...controlButtonBaseBindings.value,\n prependIcon: action.icon,\n cta: action.cta,\n onClick: () =>\n processActionForRecord(\n record.value as ResourceResourcefulRecordResponse,\n action.action,\n action.onSuccess,\n action.onUndetermined,\n action.onFailure,\n action.onComplete,\n action.onException\n ),\n } satisfies ControlButtonProps & { onClick: () => Promise<void> }\n } else {\n return undefined\n }\n })\n .filter((v) => v !== undefined) satisfies ControlButtonProps[]\n )\n}\n\nexport const useControlBarButtonBindings = (\n indexButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n createButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n readButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n updateButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n deleteButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n additionalButtonBindings: ComputedRef<ControlButtonProps[]>\n): ComputedRef<VNode[]> =>\n computed<VNode[]>(() =>\n [\n indexButtonBindings.value,\n createButtonBindings.value,\n readButtonBindings.value,\n updateButtonBindings.value,\n deleteButtonBindings.value,\n ...additionalButtonBindings.value,\n ]\n .filter((b): b is ControlButtonProps => b !== undefined)\n .map((bindings) => h(ControlButton, bindings))\n )\n\nexport const useControlBarBaseBindings = (\n controlButtonBarOptions: Ref<ControlButtonBarOptionsProps>,\n controlButtonOptions: Ref<ControlButtonProps>\n): ComputedRef<Omit<ControlButtonBarProps, 'buttons'>> =>\n computed(\n () =>\n ({\n ...controlButtonBarOptions.value,\n overflowMenuButtonOptions: stripUndefinedValuesFromObject({\n ...stripUndefinedValuesFromObject({\n color: controlButtonOptions.value.color,\n density: controlButtonOptions.value.density,\n size: controlButtonOptions.value.size,\n }),\n ...stripUndefinedValuesFromObject(\n controlButtonBarOptions.value.overflowMenuButtonOptions ?? {}\n ),\n }),\n }) satisfies Omit<ControlButtonBarProps, 'buttons'>\n )\n\nexport const useResourcefulRecordFloatingControls = (\n mode: Ref<ResourcefulRecordViewMode>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>,\n commitButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n refreshButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n resetButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n metaLoading: ComputedRef<boolean>,\n recordLoading: ComputedRef<boolean>,\n commitLoading: ComputedRef<boolean>,\n inErrorState: ComputedRef<boolean>,\n doFormReset: () => void | Promise<void>,\n doRecordRefresh: () => void | Promise<void>,\n doFormSubmit: () => void | Promise<void>\n): ComputedRef<VNode[]> => {\n const t = useI18n()\n const commitButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.save'),\n prependIcon: () => h(SvgIcon, { d: mdiContentSave }),\n }),\n ...commitButtonOverrides.value,\n state: {\n loading: commitLoading.value,\n disabled: metaLoading.value || recordLoading.value,\n },\n onClick: doFormSubmit,\n }))\n const refreshButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.refresh'),\n prependIcon: () => h(SvgIcon, { d: mdiRefresh }),\n }),\n ...refreshButtonOverrides.value,\n state: {\n loading: recordLoading.value,\n disabled: metaLoading.value || commitLoading.value,\n },\n onClick: doRecordRefresh,\n }))\n const resetButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.reset'),\n prependIcon: () => h(SvgIcon, { d: mdiFileUndo }),\n }),\n ...resetButtonOverrides.value,\n state: {\n loading: recordLoading.value,\n disabled: metaLoading.value || commitLoading.value,\n },\n onClick: doFormReset,\n }))\n return computed<VNode[]>(() =>\n mode.value === 'read' || inErrorState.value\n ? [h(ControlButton, refreshButtonBindings.value)]\n : [\n h(ControlButton, resetButtonBindings.value),\n h(ControlButton, {\n ...commitButtonBindings.value,\n class: ['ms-2'],\n }),\n ]\n )\n}\n\nexport type UseResourcefulPassthroughHookOptions<P extends any[]> = {\n // the hook to run if nothing is set to run for the event\n fallback?: (...args: P) => void | Promise<void>\n // if debounceMs is set, the hook will be debounced by the given milliseconds\n debounceMs?: number\n // if throttleMs is set, the hook will be throttled by the given milliseconds\n throttleMs?: number\n // if immediate is not set, the hook will be run using Vue's `nextTick`\n // if immediate is false, the hook will be run in the current tick\n // if immediate is true, the hook will be run using queueMicrotask\n immediate?: boolean\n}\n\nexport const useResourcefulPassthroughHook = <\n E extends Extract<keyof ResourcefulRecordEmits, string>,\n P extends any[] = Parameters<ResourcefulRecordEmits[E]>,\n>(\n event: E,\n callOnKey: Extract<keyof ResourcefulRecordInstanceProps, `callOn${string}`>,\n emit: (...args: any[]) => void,\n props: ResourcefulRecordInstanceProps,\n attrs: Record<string, unknown>,\n options: UseResourcefulPassthroughHookOptions<P> = {}\n) => {\n if (\n 'number' === typeof options.debounceMs &&\n 'number' === typeof options.throttleMs &&\n options.debounceMs > 0 &&\n options.throttleMs > 0\n ) {\n warn('useResourcefulPassthroughHook: debounceMs and throttleMs are both set.')\n }\n const { camel, kebab } = getCamelAndMaybeKebabPropKeysFor(event) as {\n camel: keyof ResourcefulRecordInstanceProps\n kebab: keyof ResourcefulRecordInstanceProps\n }\n const doHook = async (...args: P) => {\n // if the `on${event}` props are set to functions, emit as normal\n if (\n 'function' === typeof props[camel] ||\n 'function' === typeof props[kebab] ||\n 'function' === typeof attrs[camel] ||\n 'function' === typeof attrs[kebab]\n ) {\n emit(event, ...args)\n return\n }\n // if there are `callOn${event}` hooks, do not run the fallback\n const callOns: ResourcefulRecordHookHandler<E> = props[callOnKey] as any\n if (Array.isArray(callOns) && callOns.length > 0) {\n return\n }\n const fallback = options.fallback ?? (() => {})\n await fallback(...args)\n }\n let callHook = doHook\n if ('number' === typeof options.debounceMs && options.debounceMs > 0) {\n callHook = debounce(callHook, options.debounceMs) as unknown as typeof doHook\n }\n if ('number' === typeof options.throttleMs && options.throttleMs > 0) {\n callHook = throttle(callHook, options.throttleMs) as unknown as typeof doHook\n }\n switch (true) {\n case 'undefined' === typeof options.immediate:\n callHook = async (...args: P) => {\n await nextTick()\n return await doHook(...args)\n }\n break\n\n case options.immediate:\n callHook = async (...args: P) => {\n return await new Promise<void>((rslv) => {\n queueMicrotask(() => doHook(...args).then(rslv))\n })\n }\n break\n }\n return callHook\n}\n\nconst stateToFormStateModelValue = (\n state: string | undefined | null,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n): Record<string, any> | undefined | null => {\n if (state === undefined || state === null) {\n return state\n }\n try {\n const decoded = decode(state)\n if (!isObject(decoded)) {\n warn(`ResourcefulRecordForm: Decoded form state model value is not an object.`, decoded)\n onError(new E_DECODED_STATE_MODEL_INCOMPATIBLE())\n return undefined\n }\n return decoded as Record<string, any>\n } catch (e) {\n warn(\n `ResourcefulRecordForm: Failed to decode form state model value from state string \"${state}\".`,\n e\n )\n onError(\n new E_FAILED_TO_DECODE_STATE_MODEL([state], { cause: e instanceof Error ? e : undefined })\n )\n return undefined\n }\n}\n\nconst getFormValueUpdates = (\n formStateModelValue: Record<string, any> | undefined | null,\n currentFormValues: Record<string, any> | undefined | null\n) => {\n const is = isObject(formStateModelValue) ? formStateModelValue : {}\n const was = isObject(currentFormValues) ? currentFormValues : {}\n const differences = diff(was, is)\n return dot.dot(differences)\n}\n\nconst isSame = (\n a: any,\n b: any,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n): boolean => {\n try {\n return encode(a) === encode(b)\n } catch (e) {\n warn('ResourcefulRecordForm: Failed to compare form state model values.', e)\n onError(\n new E_FAILED_TO_COMPARE_STATE_MODEL_VALUES(undefined, {\n cause: e instanceof Error ? e : undefined,\n })\n )\n return true\n }\n}\n\nexport const useResourcefulRecordFormState = (\n state: Ref<string | undefined | null>,\n onState: (formState: string | null | undefined) => Promise<void>,\n onUpdateState: (formState: string | null | undefined) => Promise<void>,\n formValues: Ref<Record<string, any> | undefined | null>,\n setValues: (values: any, shouldValidate?: boolean) => void,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n) => {\n // the form state model value should start as the decoded state value\n const formStateModelValue = shallowRef<Record<string, any> | undefined | null>(\n stateToFormStateModelValue(state.value, onError)\n )\n const onChangeToState = debounce(\n (is: string | undefined | null, was: string | undefined | null) => {\n if (isSame(is, was, onError)) return\n formStateModelValue.value = stateToFormStateModelValue(is, onError)\n triggerRef(formStateModelValue)\n const toUpdate = getFormValueUpdates(formStateModelValue.value, formValues.value)\n if (Object.keys(toUpdate).length > 0) {\n setValues(toUpdate, false)\n }\n },\n 100\n )\n const onChangeToFormValues = debounce(\n (is: Record<string, any> | undefined | null, was: Record<string, any> | undefined | null) => {\n if (isSame(is, was, onError)) return\n formStateModelValue.value = is\n triggerRef(formStateModelValue)\n const encoded: string | null | undefined = isObject(is)\n ? (encode(is as any) as string)\n : (is as undefined | null)\n onState(encoded)\n onUpdateState(encoded)\n },\n 100\n )\n watch(state, onChangeToState, { immediate: true })\n watch(formValues, onChangeToFormValues, { immediate: true, deep: true })\n}\n\nexport const useResourcefulRecordFormHooks = (\n _props: BaseResourcefulRecordInstanceProps,\n emit: (event: keyof ResourcefulRecordEmits, ...args: any[]) => void,\n callOnPrevented: Ref<Array<ResourcefulRecordPreventedHookHandler>>,\n callOnSubmitted: Ref<Array<ResourcefulRecordSubmittedHookHandler>>,\n callOnSuccess: Ref<Array<ResourcefulRecordSuccessHookHandler>>,\n callOnFailure: Ref<Array<ResourcefulRecordFailureHookHandler>>,\n callOnException: Ref<Array<ResourcefulRecordExceptionHookHandler>>,\n callOnSubmittingStateChange: Ref<Array<ResourcefulRecordChangeStateSubmittingHookHandler>>,\n callOnValidatingStateChange: Ref<Array<ResourcefulRecordChangeStateValidatingHookHandler>>,\n callOnTouchedStateChange: Ref<Array<ResourcefulRecordChangeStateTouchedHookHandler>>,\n callOnDirtyStateChange: Ref<Array<ResourcefulRecordChangeStateDirtyHookHandler>>,\n callOnValidStateChange: Ref<Array<ResourcefulRecordChangeStateValidHookHandler>>,\n callOnPendingStateChange: Ref<Array<ResourcefulRecordChangeStatePendingHookHandler>>,\n callOnErrorsStateChange: Ref<Array<ResourcefulRecordChangeStateErrorsHookHandler>>,\n callOnErrorBagStateChange: Ref<Array<ResourcefulRecordChangeStateErrorBagHookHandler>>,\n callOnSubmitCountStateChange: Ref<Array<ResourcefulRecordChangeStateSubmitCountHookHandler>>\n) => {\n const hooks = new Hooks<ResourcefulRecordFormHookableEvents>()\n Object.entries(baseResourcefulEmits).forEach(([event]) => {\n const e: keyof ResourcefulRecordFormEmits = event as keyof ResourcefulRecordFormEmits\n function doEmit(...args: any[]) {\n emit(e, ...args)\n }\n hooks.add(e, doEmit)\n })\n watch(\n callOnPrevented,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('prevented', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('prevented', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmitted,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('submitted', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('submitted', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSuccess,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('success', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('success', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnFailure,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('failure', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('failure', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnException,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('exception', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('exception', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmittingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:submitting', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:submitting', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnValidatingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:validating', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:validating', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnTouchedStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:touched', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:touched', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnDirtyStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:dirty', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:dirty', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnValidStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:valid', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:valid', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnPendingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:pending', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:pending', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnErrorsStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:errors', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:errors', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnErrorBagStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:errorBag', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:errorBag', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmitCountStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:submitCount', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:submitCount', tuple)\n })\n }\n },\n { immediate: true }\n )\n const onState = async (formState: string | null | undefined) => {\n const runner = hooks.runner('state')\n try {\n await runner.run(formState)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, formState)\n }\n }\n const onUpdateState = async (formState: string | null | undefined) => {\n const runner = hooks.runner('update:state')\n try {\n await runner.run(formState)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, formState)\n }\n }\n const onError = async (error: unknown) => {\n const runner = hooks.runner('error')\n try {\n await runner.run(error)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, error)\n }\n }\n const onPrevented = async (values: Record<string, any>, error: ValidationError) => {\n const runner = hooks.runner('prevented')\n try {\n await runner.run(values, error)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, values, error)\n }\n }\n const onSubmitted = async (values: Record<string, any>) => {\n const runner = hooks.runner('submitted')\n try {\n await runner.run(values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, values)\n }\n }\n const onSuccess = async (\n response: ResourceResourcefulRecordResponse,\n values: Record<string, any>\n ) => {\n const runner = hooks.runner('success')\n try {\n await runner.run(response, values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, response, values)\n }\n }\n const onFailure = async (response: ResourcefulHttpResponse, values: Record<string, any>) => {\n const runner = hooks.runner('failure')\n try {\n await runner.run(response, values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, response, values)\n }\n }\n const onException = async (exception: unknown) => {\n const runner = hooks.runner('exception')\n try {\n await runner.run(exception)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, exception)\n }\n }\n const onStateSubmitting = async (is: boolean) => {\n const runner = hooks.runner('state:submitting')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateValidating = async (is: boolean) => {\n const runner = hooks.runner('state:validating')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateTouched = async (is: boolean) => {\n const runner = hooks.runner('state:touched')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateDirty = async (is: boolean) => {\n const runner = hooks.runner('state:dirty')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateValid = async (is: boolean) => {\n const runner = hooks.runner('state:valid')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStatePending = async (is: boolean) => {\n const runner = hooks.runner('state:pending')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateErrors = async (errors: Record<string, string | undefined>) => {\n const runner = hooks.runner('state:errors')\n try {\n await runner.run(errors)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, errors)\n }\n }\n const onStateErrorBag = async (errors: Partial<Record<string, string[]>>) => {\n const runner = hooks.runner('state:errorBag')\n try {\n await runner.run(errors)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, errors)\n }\n }\n const onStateSubmitCount = async (count: number) => {\n const runner = hooks.runner('state:submitCount')\n try {\n await runner.run(count)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, count)\n }\n }\n return {\n onState,\n onUpdateState,\n onError,\n onPrevented,\n onSubmitted,\n onSuccess,\n onFailure,\n onException,\n onStateSubmitting,\n onStateValidating,\n onStateTouched,\n onStateDirty,\n onStateValid,\n onStatePending,\n onStateErrors,\n onStateErrorBag,\n onStateSubmitCount,\n }\n}\n\nexport type ResourcefulRecordHooks = ReturnType<typeof useResourcefulRecordFormHooks>\n\nexport const useResourcefulRecordSubmitHandler = (\n submissionPayloadModifiers: Ref<Array<ResourcefulRecordSubmissionMiddlewareFn>>,\n submissionHandler: Ref<ResourcefulSubmissionHandler>,\n onSuccess: ResourcefulRecordHooks['onSuccess'],\n onFailure: ResourcefulRecordHooks['onFailure'],\n onException: ResourcefulRecordHooks['onException'],\n onSubmitted: ResourcefulRecordHooks['onSubmitted']\n) => {\n const middleware = new Middleware<ResourcefulRecordSubmissionMiddlewareFn>()\n watch(\n submissionPayloadModifiers,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((mw) => {\n middleware.remove(mw)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((mw) => {\n middleware.add(mw)\n })\n }\n },\n { immediate: true }\n )\n const handleSubmit = async (values: any) => {\n const ret = await middleware\n .runner()\n .errorHandler((err: unknown) => onException(err))\n .finalHandler(async () => submissionHandler.value(values, onSuccess, onFailure))\n .run(async (fn, next) => fn(values, next))\n onSubmitted(values)\n return ret\n }\n return handleSubmit\n}\n\nconst resourcefulRecordModelPropertySchemaDefaultValue = (\n schema: ResourcefulRecordModelPropertySchema\n) => {\n if ('default' in schema) {\n return schema.default\n }\n const fieldType = typeAndFormatToResourcefulFieldType(schema.type, schema.format)\n switch (fieldType) {\n case 'string':\n return ''\n case 'date':\n case 'dateTime':\n case 'binary':\n case 'number':\n case 'integer':\n case 'bigint':\n case 'unsignedInteger':\n case 'boolean':\n return null\n default:\n return undefined\n }\n}\n\nexport const useResourcefulRecordModelSchemaDefaultInitialValues = (\n model: MaybeRef<ResourcefulRecordModelSchema>\n) => {\n const resolvedModelRef = computed(() => toValue(model))\n return computed(() =>\n Object.assign(\n {},\n ...Object.entries(resolvedModelRef.value).map(([key, schema]) => ({\n [key]: resourcefulRecordModelPropertySchemaDefaultValue(schema),\n }))\n )\n )\n}\n\nexport const fixFormSchemaForEnums = (\n initial: Ref<ObjectSchema>,\n model: Ref<ResourcefulRecordModelSchema>\n): ObjectSchema => {\n const needsFix = Object.values(model.value).some((schema) => {\n return (\n ('x-resourceful-relationship' in schema && schema['x-resourceful-relationship']) ||\n ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices']))\n )\n })\n if (!needsFix) {\n return initial.value\n }\n const keys =\n initial.value &&\n '$_terms' in initial.value &&\n initial.value.$_terms.keys &&\n Array.isArray(initial.value.$_terms.keys)\n ? initial.value.$_terms.keys.map(({ key }: { key: string; schema: Schema }) => key)\n : []\n return validator.object(\n Object.fromEntries(\n keys.map((key) => {\n const extracted = initial.value.extract(key)\n if (!extracted) {\n return [key, validator.any()]\n }\n const schema = model.value[key]\n if (!schema) {\n return [key, extracted]\n }\n if (schema['x-resourceful-relationship']) {\n if (Array.isArray(schema['x-resourceful-relationship'].choices)) {\n const opts = [...schema['x-resourceful-relationship'].choices.map((c) => c.value)]\n if (schema.nullable === true) {\n opts.unshift(null)\n }\n return [\n key,\n validator\n .any()\n .valid(...opts)\n .label(schema['x-resourceful-relationship'].title || key)\n .presence(schema.nullable === true ? 'optional' : 'required'),\n ]\n } else {\n if (schema.nullable !== true) {\n return [\n key,\n validator\n .any()\n .invalid(null, '')\n .label(schema['x-resourceful-relationship'].title || key)\n .required(),\n ]\n }\n return [\n key,\n validator\n .any()\n .label(schema['x-resourceful-relationship'].title || key)\n .presence(schema.nullable === true ? 'optional' : 'required'),\n ]\n }\n }\n if ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])) {\n const opts = [...schema['x-resourceful-choices'].map((c) => c.value)]\n if (schema.nullable === true) {\n opts.unshift(null)\n }\n return [key, validator.any().valid(...opts)]\n }\n return [key, extracted]\n })\n )\n )\n}\n\nexport const fixFieldLabelsForEnums = (\n initial: Ref<Record<string, string>>,\n model: Ref<ResourcefulRecordModelSchema>\n): Record<string, string> => {\n return stripUndefinedValuesFromObject(\n Object.fromEntries(\n Object.entries(model.value).map(([key, schema]) => {\n if (initial.value[key]) {\n return [key, initial.value[key]]\n }\n if ('x-resourceful-relationship' in schema && schema['x-resourceful-relationship']) {\n return [key, schema['x-resourceful-relationship'].title || key]\n }\n return [key, undefined]\n })\n )\n ) as Record<string, string>\n}\n","import { useDefaults } from 'vuetify'\nimport { DevErrorAlert } from '../fields/common'\nimport { useScopedDisplay } from '../ux/display'\nimport { useValidation } from '../ux/validation'\nimport { E_FORM_NOT_RENDERED } from './exceptions'\nimport { VSheet } from 'vuetify/components/VSheet'\nimport { isResourcefulRecordBusConsumer } from './types'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { makeBaseResourcefulRecordProps, baseResourcefulEmits } from './props'\nimport { getCurrentInstanceName } from '@nhtio/vuetifiable/util/getCurrentInstance'\nimport { defineComponent, h, toRefs, computed, ref, watch, provide, inject, nextTick } from 'vue'\nimport {\n ResourcefulRecordScopedDisplaySymbol,\n ResourcefulRecordFormScopedDisplaySymbol,\n} from '../symbols'\nimport {\n fixFormSchemaForEnums,\n fixFieldLabelsForEnums,\n useResourcefulRecordFormState,\n useResourcefulRecordFormHooks,\n useResourcefulRecordSubmitHandler,\n useResourcefulRecordModelSchemaDefaultInitialValues,\n} from './utils'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulRecordFormComponentSlots,\n ResourcefulRecordFormWithValidationDefaultSlotProps,\n} from './types'\n\nexport const ResourcefulRecordForm = defineComponent({\n name: 'ResourcefulRecordForm',\n props: makeBaseResourcefulRecordProps(),\n emits: baseResourcefulEmits,\n slots: Object as ResourcefulRecordFormComponentSlots,\n setup(props, { slots, emit }) {\n const formRef = ref<VSheet | null>(null)\n const scopedDisplay = inject(ResourcefulRecordScopedDisplaySymbol) || useScopedDisplay(formRef)\n provide(ResourcefulRecordFormScopedDisplaySymbol, scopedDisplay)\n const {\n state,\n mode,\n initialValues,\n additionalMessages,\n overrideMessages,\n callOnPrevented,\n callOnSubmitted,\n callOnSuccess,\n callOnFailure,\n callOnException,\n callOnSubmittingStateChange,\n callOnValidatingStateChange,\n callOnTouchedStateChange,\n callOnDirtyStateChange,\n callOnValidStateChange,\n callOnPendingStateChange,\n callOnErrorsStateChange,\n callOnErrorBagStateChange,\n callOnSubmitCountStateChange,\n fieldLabels: initialFieldLabels,\n advanced,\n specificFieldOptions,\n bus,\n schema: initialSchema,\n model,\n submissionPayloadModifiers,\n submissionHandler,\n validationOptions,\n fireAlertFn,\n doRefreshChoices,\n } = toRefs(props)\n const schema = computed(() => fixFormSchemaForEnums(initialSchema, model))\n const fieldLabels = computed(() => fixFieldLabelsForEnums(initialFieldLabels, model))\n const defaultCommonFieldOptions = useDefaults(\n props.commonFieldOptions,\n 'ResourcefulRecordFormField'\n )\n const commonFieldOptions = computed(() => ({\n ...defaultCommonFieldOptions,\n density: scopedDisplay.xs\n ? ('compact' as const)\n : scopedDisplay.lgAndUp\n ? ('default' as const)\n : ('comfortable' as const),\n }))\n const fire: FireAlertFn = (...args) =>\n fireAlertFn.value\n ? fireAlertFn.value(...args)\n : Promise.resolve({\n isConfirmed: false,\n isDenied: false,\n isCanceled: true,\n value: null,\n })\n const debug = computed(() => advanced.value?.debug || false)\n const {\n onState,\n onUpdateState,\n onError,\n onPrevented,\n onSubmitted,\n onSuccess,\n onFailure,\n // NOTE: onException specifically handles errors during submission middleware chain processing\n onException,\n onStateSubmitting,\n onStateValidating,\n onStateTouched,\n onStateDirty,\n onStateValid,\n onStatePending,\n onStateErrors,\n onStateErrorBag,\n onStateSubmitCount,\n } = useResourcefulRecordFormHooks(\n props,\n emit as any,\n callOnPrevented,\n callOnSubmitted,\n callOnSuccess,\n callOnFailure,\n callOnException,\n callOnSubmittingStateChange,\n callOnValidatingStateChange,\n callOnTouchedStateChange,\n callOnDirtyStateChange,\n callOnValidStateChange,\n callOnPendingStateChange,\n callOnErrorsStateChange,\n callOnErrorBagStateChange,\n callOnSubmitCountStateChange\n )\n const handleSubmit = useResourcefulRecordSubmitHandler(\n submissionPayloadModifiers,\n submissionHandler,\n onSuccess,\n onFailure,\n onException,\n onSubmitted\n )\n const defaultInitialValuesFromModel = useResourcefulRecordModelSchemaDefaultInitialValues(model)\n const computedInitialValues = computed(() =>\n Object.fromEntries(\n Object.entries({\n ...defaultInitialValuesFromModel.value,\n ...(initialValues.value || {}),\n }).filter(([prop]) => {\n const propSchema = model.value[prop]\n if (!propSchema) return false\n switch (mode.value) {\n case 'create':\n return (\n !propSchema['x-resourceful-autocreated'] && !propSchema['x-resourceful-primary-key']\n )\n\n case 'update':\n return (\n !propSchema['x-resourceful-autoupdated'] && !propSchema['x-resourceful-immutable']\n )\n default:\n return true\n }\n })\n )\n )\n const {\n validationSchema,\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n formValues,\n doFormSubmit,\n doResetForm: originalDoResetForm,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n formFieldBindings,\n formBindings,\n useField,\n forceUpdateSchema,\n forceUpdateInitialValues,\n } = useValidation(\n schema,\n computedInitialValues,\n handleSubmit,\n additionalMessages,\n overrideMessages,\n validationOptions,\n getCurrentInstanceName() || 'ResourcefulRecordForm',\n debug,\n onPrevented as (values: unknown, error: ValidationError) => void | Promise<void>,\n fieldLabels,\n commonFieldOptions,\n specificFieldOptions\n )\n const doResetForm = () => {\n originalDoResetForm(\n {\n errors: {},\n touched: Object.fromEntries(\n Object.keys(computedInitialValues.value).map((key) => [key, false])\n ),\n submitCount: 0,\n },\n { force: true }\n )\n nextTick(() => setTouched(false))\n }\n const slotPropBindings = computed<ResourcefulRecordFormWithValidationDefaultSlotProps>(\n () =>\n ({\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n doResetForm,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n formFieldBindings,\n useField,\n formValues,\n doRefreshChoices: doRefreshChoices.value,\n }) satisfies ResourcefulRecordFormWithValidationDefaultSlotProps\n )\n useResourcefulRecordFormState(state, onState, onUpdateState, formValues, setValues)\n watch(\n bus,\n (is: unknown, was: unknown) => {\n if (isResourcefulRecordBusConsumer(was)) {\n was.off('doFormSubmit', doFormSubmit)\n was.off('doResetForm', doResetForm)\n was.off('setFieldValue', setFieldValue)\n was.off('setValues', setValues)\n was.off('setFieldTouched', setFieldTouched)\n was.off('setTouched', setTouched)\n was.off('validate', validate)\n was.off('validateField', validateField)\n was.off('forceUpdateSchema', forceUpdateSchema)\n was.off('forceUpdateInitialValues', forceUpdateInitialValues)\n }\n if (isResourcefulRecordBusConsumer(is)) {\n is.on('doFormSubmit', doFormSubmit)\n is.on('doResetForm', doResetForm)\n is.on('setFieldValue', setFieldValue)\n is.on('setValues', setValues)\n is.on('setFieldTouched', setFieldTouched)\n is.on('setTouched', setTouched)\n is.on('validate', validate)\n is.on('validateField', validateField)\n is.on('forceUpdateSchema', forceUpdateSchema)\n is.on('forceUpdateInitialValues', forceUpdateInitialValues)\n }\n },\n { immediate: true }\n )\n const doIfFormReady = (callback: (component: VSheet, form: HTMLFormElement) => void) => {\n if (formRef.value && formRef.value.$el) {\n const el = formRef.value.$el as HTMLFormElement\n callback(formRef.value, el)\n } else {\n onError(new E_FORM_NOT_RENDERED())\n }\n }\n useRender(() =>\n h(VSheet, { ref: formRef, tag: 'form', color: 'transparent', ...formBindings.value }, () => [\n h('input', {\n 'style': { display: 'none' },\n 'type': 'submit',\n 'aria-hidden': 'true',\n 'tabindex': -1,\n }),\n slots.default\n ? slots.default(\n slotPropBindings.value,\n scopedDisplay,\n model.value,\n schema.value,\n mode.value,\n fire,\n doRefreshChoices.value\n )\n : h(DevErrorAlert),\n ])\n )\n const submit = () => {\n doIfFormReady((_, form) => {\n form.requestSubmit()\n })\n }\n const reset = () => {\n doIfFormReady((_, form) => {\n form.reset()\n })\n }\n watch(formErrors, onStateErrors)\n watch(formErrorBag, onStateErrorBag)\n watch(formIsSubmitting, onStateSubmitting)\n watch(formIsValidating, onStateValidating)\n watch(formIsTouched, onStateTouched)\n watch(formIsDirty, onStateDirty)\n watch(formIsValid, onStateValid)\n watch(formIsPending, onStatePending)\n watch(formSubmitCount, onStateSubmitCount)\n return {\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n formValues,\n submit,\n reset,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n validationSchema,\n }\n },\n})\n\nexport type ResourcefulRecordForm = InstanceType<typeof ResourcefulRecordForm> &\n ComponentPublicInstance\n"],"names":["ResourcefulRecordViewMode","ResourcefulRecordBusConsumer","#emitter","emitter","event","listener","ctx","isResourcefulRecordBusConsumer","value","ResourcefulRecordBusEmitter","TypedEventEmitter","resourcefulRecordActionCommonSchema","joi","resourcefulRecordUrlActionSchema","resourcefulRecordFunctionActionSchema","isResourcefulRecordUrlAction","error","isResourcefulRecordFunctionAction","resourcefulRecordActionArraySchema","isResourcefulRecordActionArray","VCardActions","genericComponent","makeComponentProps","props","slots","provideDefaults","useRender","_a","createVNode","makeVCardSubtitleProps","propsFactory","makeTagProps","VCardSubtitle","VCardTitle","createSimpleFunctional","makeCardItemProps","IconValue","makeDensityProps","VCardItem","hasPrependMedia","hasPrepend","hasAppendMedia","hasAppend","hasTitle","hasSubtitle","VDefaultsProvider","Fragment","VAvatar","VIcon","_a2","toDisplayString","makeVCardTextProps","VCardText","makeVCardProps","makeBorderProps","makeDimensionProps","makeElevationProps","makeLoaderProps","makeLocationProps","makePositionProps","makeRoundedProps","makeRouterProps","makeThemeProps","makeVariantProps","Ripple","attrs","themeClasses","provideTheme","borderClasses","useBorder","colorClasses","colorStyles","variantClasses","useVariant","densityClasses","useDensity","dimensionStyles","useDimension","elevationClasses","useElevation","loaderClasses","useLoader","locationStyles","useLocation","positionClasses","usePosition","roundedClasses","useRounded","link","useLink","isLink","isClickable","Tag","hasHeader","hasImage","hasCardItem","hasText","withDirectives","mergeProps","VImg","LoaderSlot","genOverlays","resolveDirective","makeResourcefulRecordAdvancedOptions","resourcefulRecordAdvancedOptionsDefaults","propsAndDefaultsFactory","makeResourcefulRecordRouteOptions","resourcefulRecordRouteOptionsDefaults","makeResourcefulRecordCommonFieldProps","resourcefulRecordCommonFieldPropsDefaults","pick","makeCommonResourcefulFieldProps","resourcefulRecordRouteOptionsSchema","resourcefulRecordRouteOptionsValidator","makeResourcefulRecordNavOptions","resourcefulRecordNavOptionsDefaults","routeLocationAsRelativeGenericSchema","routeLocationAsPathGenericSchema","resourcefulRecordNavOptionsSchema","resourcefulRecordNavOptionsValidator","rawResourcefulEmits","state","values","isResourcefulRecordPreventedEvent","isResourcefulRecordSubmittedEvent","response","isResourcefulRecordSuccessEvent","isResourcefulRecordFailureEvent","exception","is","errors","isObject","k","v","item","count","makeBaseResourcefulRecordProps","baseResourcefulEmits","propsAndEmitsFactory","vCardDefaults","getDefaultsForPropFactory","rawResourcefulRecordEmits","progress","isResourcefulRecordProcessingEvent","makeResourcefulRecordProps","resourcefulRecordEmits","defaultControlButtonProps","defaultControlButtonBarOptionsProps","defaultControlButtonOverrideProps","omit","m","s","w","e","t","n","a","h","r","g","f","u","l","p","d","o","H","y","_","c","i","A","dot","dotCtor","useControlButtonBaseBindings","controlButtonBarOptions","controlButtonOptions","isUnactionable","computed","stripUndefinedValuesFromObject","evaluateActionIsActionable","mode","record","can","useEvaluateActionIsActionable","useCrudActionButtonBindings","route","callback","controlButtonDefaults","controlButtonOverrides","controlButtonBaseBindings","processActionForRecord","action","onSuccess","onUndetermined","onFailure","onComplete","onException","result","useAdditionalActionButtonBindings","actions","useControlBarButtonBindings","indexButtonBindings","createButtonBindings","readButtonBindings","updateButtonBindings","deleteButtonBindings","additionalButtonBindings","b","bindings","ControlButton","useControlBarBaseBindings","useResourcefulRecordFloatingControls","commitButtonOverrides","refreshButtonOverrides","resetButtonOverrides","metaLoading","recordLoading","commitLoading","inErrorState","doFormReset","doRecordRefresh","doFormSubmit","useI18n","commitButtonBindings","SvgIcon","mdiContentSave","refreshButtonBindings","mdiRefresh","resetButtonBindings","mdiFileUndo","useResourcefulPassthroughHook","callOnKey","emit","options","warn","camel","kebab","getCamelAndMaybeKebabPropKeysFor","doHook","args","callOns","callHook","debounce","throttle","nextTick","rslv","stateToFormStateModelValue","onError","decoded","decode","E_DECODED_STATE_MODEL_INCOMPATIBLE","E_FAILED_TO_DECODE_STATE_MODEL","getFormValueUpdates","formStateModelValue","currentFormValues","was","differences","diff","isSame","encode","E_FAILED_TO_COMPARE_STATE_MODEL_VALUES","useResourcefulRecordFormState","onState","onUpdateState","formValues","setValues","shallowRef","onChangeToState","triggerRef","toUpdate","onChangeToFormValues","encoded","watch","useResourcefulRecordFormHooks","_props","callOnPrevented","callOnSubmitted","callOnSuccess","callOnFailure","callOnException","callOnSubmittingStateChange","callOnValidatingStateChange","callOnTouchedStateChange","callOnDirtyStateChange","callOnValidStateChange","callOnPendingStateChange","callOnErrorsStateChange","callOnErrorBagStateChange","callOnSubmitCountStateChange","hooks","Hooks","doEmit","tuple","formState","runner","err","useResourcefulRecordSubmitHandler","submissionPayloadModifiers","submissionHandler","onSubmitted","middleware","Middleware","mw","ret","fn","next","resourcefulRecordModelPropertySchemaDefaultValue","schema","typeAndFormatToResourcefulFieldType","useResourcefulRecordModelSchemaDefaultInitialValues","model","resolvedModelRef","toValue","key","fixFormSchemaForEnums","initial","keys","validator","extracted","opts","fixFieldLabelsForEnums","ResourcefulRecordForm","defineComponent","formRef","ref","scopedDisplay","inject","ResourcefulRecordScopedDisplaySymbol","useScopedDisplay","provide","ResourcefulRecordFormScopedDisplaySymbol","initialValues","additionalMessages","overrideMessages","initialFieldLabels","advanced","specificFieldOptions","bus","initialSchema","validationOptions","fireAlertFn","doRefreshChoices","toRefs","fieldLabels","defaultCommonFieldOptions","useDefaults","commonFieldOptions","fire","debug","onPrevented","onStateSubmitting","onStateValidating","onStateTouched","onStateDirty","onStateValid","onStatePending","onStateErrors","onStateErrorBag","onStateSubmitCount","handleSubmit","defaultInitialValuesFromModel","computedInitialValues","prop","propSchema","validationSchema","formErrors","formErrorBag","formIsSubmitting","formIsValidating","formIsTouched","formIsDirty","formIsValid","formIsPending","formSubmitCount","originalDoResetForm","setFieldValue","setFieldTouched","setTouched","validate","validateField","formFieldBindings","formBindings","useField","forceUpdateSchema","forceUpdateInitialValues","useValidation","getCurrentInstanceName","doResetForm","slotPropBindings","doIfFormReady","el","E_FORM_NOT_RENDERED","VSheet","DevErrorAlert","submit","form","reset"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,8]}
1
+ {"version":3,"file":"form-BtDnRXYm.mjs","sources":["../src/private/resourceful-record/types.ts","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardActions.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardSubtitle.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardTitle.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardItem.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCardText.mjs","../node_modules/.pnpm/@nhtio+vuetifiable@1.20250907.1/node_modules/@nhtio/vuetifiable/components/VCard/VCard.mjs","../src/private/resourceful-record/props.ts","../node_modules/.pnpm/@nhtio+hooks@1.20251013.0/node_modules/@nhtio/hooks/index.mjs","../src/private/resourceful-record/utils.ts","../src/private/resourceful-record/form.ts"],"sourcesContent":["import { joi } from '@nhtio/lucid-resourceful/joi'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport type { SlotsType } from 'vue'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { OpenAPIV3 } from 'openapi-types'\nimport type { NextFn } from '@nhtio/middleware'\nimport type { Schema } from '@nhtio/lucid-resourceful/joi'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ResourcefulRecordHookableEvents } from './props'\nimport type { ResourcefulHttpResponse } from '../services/http'\nimport type { EventMap, Key, Listener } from '@nhtio/tiny-typed-emitter'\nimport type { Hooks, HookHandler, HookHandlerProvider } from '@nhtio/hooks'\nimport type {\n FormWithValidationDefaultSlotProps,\n ScopedDisplayProps,\n ValidationProps,\n} from '../ux/validation'\nimport type {\n ResourcefulModelFieldRelationshipMeta,\n ResourcefulEnumObject,\n} from '@nhtio/lucid-resourceful/types'\n\nexport type ResourceResourcefulRecordResponse = Record<string, any>\n\nexport type ResourcefulRecordEvents = ResourcefulRecordHookableEvents\n\nexport type ResourcefulRecordHooks = Hooks<ResourcefulRecordEvents>\n\nexport type ResourcefulRecordHookHandler<Event extends keyof ResourcefulRecordEvents> =\n | HookHandler<ResourcefulRecordEvents[Event][0], ResourcefulRecordEvents[Event][1]>\n | HookHandlerProvider<ResourcefulRecordEvents[Event][0], ResourcefulRecordEvents[Event][1]>\n\nexport type ResourcefulRecordPreventedHookHandler = ResourcefulRecordHookHandler<'prevented'>\n\nexport type ResourcefulRecordSubmittedHookHandler = ResourcefulRecordHookHandler<'submitted'>\n\nexport type ResourcefulRecordProcessingHookHandler = ResourcefulRecordHookHandler<'processing'>\n\nexport type ResourcefulRecordSuccessHookHandler = ResourcefulRecordHookHandler<'success'>\n\nexport type ResourcefulRecordFailureHookHandler = ResourcefulRecordHookHandler<'failure'>\n\n/**\n * NOTE: Exception hooks are specifically for errors that occur during the processing\n * of the submission middleware chain, whereas general 'error' hooks handle caught errors\n * throughout the component lifecycle.\n */\nexport type ResourcefulRecordExceptionHookHandler = ResourcefulRecordHookHandler<'exception'>\n\nexport type ResourcefulRecordChangeStateSubmittingHookHandler =\n ResourcefulRecordHookHandler<'state:submitting'>\nexport type ResourcefulRecordChangeStateValidatingHookHandler =\n ResourcefulRecordHookHandler<'state:validating'>\nexport type ResourcefulRecordChangeStateTouchedHookHandler =\n ResourcefulRecordHookHandler<'state:touched'>\nexport type ResourcefulRecordChangeStateDirtyHookHandler =\n ResourcefulRecordHookHandler<'state:dirty'>\nexport type ResourcefulRecordChangeStateValidHookHandler =\n ResourcefulRecordHookHandler<'state:valid'>\nexport type ResourcefulRecordChangeStatePendingHookHandler =\n ResourcefulRecordHookHandler<'state:pending'>\nexport type ResourcefulRecordChangeStateErrorsHookHandler =\n ResourcefulRecordHookHandler<'state:errors'>\nexport type ResourcefulRecordChangeStateErrorBagHookHandler =\n ResourcefulRecordHookHandler<'state:errorBag'>\nexport type ResourcefulRecordChangeStateSubmitCountHookHandler =\n ResourcefulRecordHookHandler<'state:submitCount'>\n\nexport const ResourcefulRecordViewMode = ['read', 'create', 'update'] as const\nexport type ResourcefulRecordViewMode = (typeof ResourcefulRecordViewMode)[number]\n\nexport type ResourcefulRecordSlots = {\n 'error-media': () => any\n 'loading-media': (props: { percent: number }) => any\n 'form': ResourcefulRecordFormSlots['default']\n}\n\nexport type ResourcefulRecordComponentSlots = SlotsType<ResourcefulRecordSlots>\n\nexport type ResourcefulRecordFormWithValidationDefaultSlotProps = Omit<\n FormWithValidationDefaultSlotProps,\n 'forceUpdateSchema' | 'forceUpdateInitialValues'\n> & {\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>>\n}\n\nexport type ResourcefulRecordFormSlots = {\n default: <TSchema extends Schema>(\n props: ResourcefulRecordFormWithValidationDefaultSlotProps,\n display: ScopedDisplayProps,\n model: ResourcefulRecordModelSchema,\n schema: TSchema,\n mode: ResourcefulRecordViewMode,\n fire: FireAlertFn,\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>>\n ) => any\n}\n\nexport type ResourcefulRecordFormDefaultSlotArgs = Parameters<ResourcefulRecordFormSlots['default']>\n\nexport type ResourcefulRecordFormComponentSlots = SlotsType<ResourcefulRecordFormSlots>\n\nexport type ResourcefulSubmissionHandler = (\n values: any,\n onSuccess: (\n response: ResourceResourcefulRecordResponse,\n values: Record<string, any>\n ) => void | Promise<void>,\n onFailure: (\n response: ResourcefulHttpResponse,\n values: Record<string, any>\n ) => void | Promise<void>\n) => void | Promise<void>\n\nexport type ResourcefulRecordBusEventMap = EventMap<{\n doFormSubmit: Parameters<ValidationProps['doFormSubmit']>\n doResetForm: Parameters<ValidationProps['doResetForm']>\n setFieldValue: Parameters<ValidationProps['setFieldValue']>\n setValues: Parameters<ValidationProps['setValues']>\n setFieldTouched: Parameters<ValidationProps['setFieldTouched']>\n setTouched: Parameters<ValidationProps['setTouched']>\n validate: Parameters<ValidationProps['validate']>\n validateField: Parameters<ValidationProps['validateField']>\n forceUpdateSchema: Parameters<ValidationProps['forceUpdateSchema']>\n forceUpdateInitialValues: Parameters<ValidationProps['forceUpdateInitialValues']>\n}>\n\nclass ResourcefulRecordBusConsumer {\n readonly #emitter: ResourcefulRecordBusEmitter\n\n constructor(emitter: ResourcefulRecordBusEmitter) {\n this.#emitter = emitter\n }\n\n on<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>,\n ctx?: any\n ): this {\n this.#emitter.on(event, listener, ctx)\n return this\n }\n\n once<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>,\n ctx?: any\n ): this {\n this.#emitter.once(event, listener, ctx)\n return this\n }\n\n off<K>(\n event: Key<K, ResourcefulRecordBusEventMap>,\n listener: Listener<K, ResourcefulRecordBusEventMap>\n ): this {\n this.#emitter.off(event, listener)\n return this\n }\n}\n\nexport type { ResourcefulRecordBusConsumer }\n\nexport const isResourcefulRecordBusConsumer = (\n value: unknown\n): value is ResourcefulRecordBusConsumer => {\n return value instanceof ResourcefulRecordBusConsumer\n}\n\nexport class ResourcefulRecordBusEmitter extends TypedEventEmitter<ResourcefulRecordBusEventMap> {\n spawn(): ResourcefulRecordBusConsumer {\n return new ResourcefulRecordBusConsumer(this)\n }\n}\n\nexport type ActionIsActionableValidator = (record: ResourceResourcefulRecordResponse) => boolean\n\nexport type TernaryOperator = boolean | null\n\nexport type ActionCallback = (\n record: ResourceResourcefulRecordResponse\n) => TernaryOperator | Promise<TernaryOperator> | PromiseLike<TernaryOperator>\n\nexport interface ResourcefulRecordAction {\n icon: IconValue\n cta: string\n actionable?: boolean | ActionIsActionableValidator | undefined\n}\n\nexport interface ResourcefulRecordUrlAction extends ResourcefulRecordAction {\n url: string | ((record: ResourceResourcefulRecordResponse) => string | null | undefined)\n target?: '_self' | '_blank' | '_parent' | '_top' | string | undefined\n}\n\nexport type SuccessCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type UndeterminedCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type FailureCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type CompleteCallback = (record: ResourceResourcefulRecordResponse) => void\n\nexport type DispositionCallback = (\n record: ResourceResourcefulRecordResponse,\n result: TernaryOperator\n) => void\n\nexport type ExceptionCallback = (\n record: ResourceResourcefulRecordResponse,\n error: unknown,\n onComplete?: CompleteCallback | undefined\n) => void\n\nexport interface ResourcefulRecordFunctionAction extends ResourcefulRecordAction {\n action: ActionCallback\n onSuccess?: SuccessCallback | undefined\n onUndetermined?: UndeterminedCallback | undefined\n onFailure?: FailureCallback | undefined\n onComplete?: CompleteCallback | undefined\n onException?: ExceptionCallback | undefined\n}\n\nconst resourcefulRecordActionCommonSchema = {\n icon: joi\n .alternatives()\n .try(joi.string(), joi.object().unknown(true), joi.array(), joi.function())\n .required(),\n cta: joi.string().required(),\n actionable: joi.alternatives().try(joi.boolean(), joi.function()).optional(),\n} satisfies Record<keyof ResourcefulRecordAction, Schema>\n\nconst resourcefulRecordUrlActionSchema = joi.object<ResourcefulRecordUrlAction>({\n ...resourcefulRecordActionCommonSchema,\n url: joi.alternatives().try(joi.string(), joi.function()).required(),\n target: joi.string().optional(),\n})\n\nconst resourcefulRecordFunctionActionSchema = joi.object<ResourcefulRecordFunctionAction>({\n ...resourcefulRecordActionCommonSchema,\n action: joi.function().required(),\n onSuccess: joi.function().optional(),\n onUndetermined: joi.function().optional(),\n onFailure: joi.function().optional(),\n onComplete: joi.function().optional(),\n onException: joi.function().optional(),\n})\n\nexport const isResourcefulRecordUrlAction = (\n value: unknown\n): value is ResourcefulRecordUrlAction => {\n const { error } = resourcefulRecordUrlActionSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const isResourcefulRecordFunctionAction = (\n value: unknown\n): value is ResourcefulRecordFunctionAction => {\n const { error } = resourcefulRecordFunctionActionSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nconst resourcefulRecordActionArraySchema = joi\n .array<Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>>()\n .items(\n joi.alternatives().try(resourcefulRecordUrlActionSchema, resourcefulRecordFunctionActionSchema)\n )\n\nexport const isResourcefulRecordActionArray = (\n value: unknown\n): value is Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction> => {\n const { error } = resourcefulRecordActionArraySchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport type ResourcefulRecordCrudActionCallback = () => void | Promise<void>\n\nexport type ResourcefulRecordCrudInstanceActionCallback = (uid: string) => void | Promise<void>\n\nexport type ResourcefulRecordSubmissionMiddlewareFn = (\n values: any,\n next: NextFn\n) => void | Promise<void>\n\nexport type ResourcefulRecordModelSchemaMandatoryProps = Extract<\n keyof OpenAPIV3.NonArraySchemaObject,\n 'type' | 'title' | 'nullable' | 'readOnly' | 'writeOnly'\n>\n\nexport type ResourcefulRecordModelPropertySchema = Pick<\n Required<OpenAPIV3.NonArraySchemaObject>,\n ResourcefulRecordModelSchemaMandatoryProps\n> &\n Omit<NonNullable<OpenAPIV3.NonArraySchemaObject>, ResourcefulRecordModelSchemaMandatoryProps> & {\n 'x-resourceful-autocreated': boolean\n 'x-resourceful-autoupdated': boolean\n 'x-resourceful-immutable': boolean\n 'x-resourceful-primary-key': boolean\n 'x-resourceful-relationship': ResourcefulModelFieldRelationshipMeta\n 'x-resourceful-choices'?: ResourcefulEnumObject<any>[]\n }\n\nexport type ResourcefulRecordModelSchema = {\n [name: string]: ResourcefulRecordModelPropertySchema\n}\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst VCardActions = genericComponent()({\n name: \"VCardActions\",\n props: makeComponentProps(),\n setup(props, {\n slots\n }) {\n provideDefaults({\n VBtn: {\n slim: true,\n variant: \"text\"\n }\n });\n useRender(() => {\n var _a;\n return createVNode(\"div\", {\n \"class\": [\"v-card-actions\", props.class],\n \"style\": props.style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n });\n return {};\n }\n});\nexport {\n VCardActions\n};\n//# sourceMappingURL=VCardActions.mjs.map\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, \"VCardSubtitle\");\nconst VCardSubtitle = genericComponent()({\n name: \"VCardSubtitle\",\n props: makeVCardSubtitleProps(),\n setup(props, {\n slots\n }) {\n useRender(() => createVNode(props.tag, {\n \"class\": [\"v-card-subtitle\", props.class],\n \"style\": [{\n \"--v-card-subtitle-opacity\": props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\nexport {\n VCardSubtitle,\n makeVCardSubtitleProps\n};\n//# sourceMappingURL=VCardSubtitle.mjs.map\n","import \"../../util/helpers.mjs\";\nimport \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { createSimpleFunctional } from \"../../util/createSimpleFunctional.mjs\";\nconst VCardTitle = createSimpleFunctional(\"v-card-title\");\nexport {\n VCardTitle\n};\n//# sourceMappingURL=VCardTitle.mjs.map\n","import { q as createVNode, F as Fragment, x as toDisplayString } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { VCardSubtitle } from \"./VCardSubtitle.mjs\";\nimport { VCardTitle } from \"./VCardTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/VAvatar.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VIcon } from \"../VIcon/VIcon.mjs\";\nimport { I as IconValue } from \"../../mdi-CVSg0Nll.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: {\n type: [String, Number, Boolean],\n default: void 0\n },\n title: {\n type: [String, Number, Boolean],\n default: void 0\n },\n ...makeComponentProps(),\n ...makeDensityProps()\n}, \"VCardItem\");\nconst VCardItem = genericComponent()({\n name: \"VCardItem\",\n props: makeCardItemProps(),\n setup(props, {\n slots\n }) {\n useRender(() => {\n var _a;\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n return createVNode(\"div\", {\n \"class\": [\"v-card-item\", props.class],\n \"style\": props.style\n }, [hasPrepend && createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-card-item__prepend\"\n }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), createVNode(\"div\", {\n \"class\": \"v-card-item__content\"\n }, [hasTitle && createVNode(VCardTitle, {\n \"key\": \"title\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.title) == null ? void 0 : _a2.call(slots)) ?? toDisplayString(props.title)];\n }\n }), hasSubtitle && createVNode(VCardSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.subtitle) == null ? void 0 : _a2.call(slots)) ?? toDisplayString(props.subtitle)];\n }\n }), (_a = slots.default) == null ? void 0 : _a.call(slots)]), hasAppend && createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-card-item__append\"\n }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n }\n }\n }, slots.append)])]);\n });\n return {};\n }\n});\nexport {\n VCardItem,\n makeCardItemProps\n};\n//# sourceMappingURL=VCardItem.mjs.map\n","import { q as createVNode } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nconst makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, \"VCardText\");\nconst VCardText = genericComponent()({\n name: \"VCardText\",\n props: makeVCardTextProps(),\n setup(props, {\n slots\n }) {\n useRender(() => createVNode(props.tag, {\n \"class\": [\"v-card-text\", props.class],\n \"style\": [{\n \"--v-card-text-opacity\": props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\nexport {\n VCardText,\n makeVCardTextProps\n};\n//# sourceMappingURL=VCardText.mjs.map\n","import { y as withDirectives, z as resolveDirective, q as createVNode, v as mergeProps } from \"../../vue.runtime.esm-bundler-BRffRTPw.mjs\";\nimport { VCardActions } from \"./VCardActions.mjs\";\nimport { VCardItem } from \"./VCardItem.mjs\";\nimport { VCardText } from \"./VCardText.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VImg } from \"../VImg/VImg.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { I as IconValue } from \"../../mdi-CVSg0Nll.mjs\";\nimport { makeLoaderProps, useLoader, LoaderSlot } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps, useVariant, genOverlays } from \"../../composables/variant.mjs\";\nimport { Ripple } from \"../../directives/ripple.mjs\";\nimport \"../../util/helpers.mjs\";\nimport { genericComponent } from \"../../util/defineComponent.mjs\";\nimport { propsFactory } from \"../../util/propsFactory.mjs\";\nimport { useRender } from \"../../util/useRender.mjs\";\nimport \"./VCardSubtitle.mjs\";\nimport \"./VCardTitle.mjs\";\nconst makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: void 0\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n subtitle: {\n type: [String, Number, Boolean],\n default: void 0\n },\n text: {\n type: [String, Number, Boolean],\n default: void 0\n },\n title: {\n type: [String, Number, Boolean],\n default: void 0\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: \"elevated\"\n })\n}, \"VCard\");\nconst VCard = genericComponent()({\n name: \"VCard\",\n directives: {\n vRipple: Ripple\n },\n props: makeVCardProps(),\n setup(props, {\n attrs,\n slots\n }) {\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const link = useLink(props, attrs);\n useRender(() => {\n const isLink = props.link !== false && link.isLink.value;\n const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);\n const Tag = isLink ? \"a\" : props.tag;\n const hasTitle = !!(slots.title || props.title != null);\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null);\n const hasHeader = hasTitle || hasSubtitle;\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);\n const hasImage = !!(slots.image || props.image);\n const hasCardItem = hasHeader || hasPrepend || hasAppend;\n const hasText = !!(slots.text || props.text != null);\n return withDirectives(createVNode(Tag, mergeProps({\n \"class\": [\"v-card\", {\n \"v-card--disabled\": props.disabled,\n \"v-card--flat\": props.flat,\n \"v-card--hover\": props.hover && !(props.disabled || props.flat),\n \"v-card--link\": isClickable\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"onClick\": isClickable && link.navigate,\n \"tabindex\": props.disabled ? -1 : void 0\n }, link.linkProps), {\n default: () => {\n var _a;\n return [hasImage && createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-card__image\"\n }, [!slots.image ? createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), createVNode(LoaderSlot, {\n \"name\": \"v-card\",\n \"active\": !!props.loading,\n \"color\": typeof props.loading === \"boolean\" ? void 0 : props.loading\n }, {\n default: slots.loader\n }), hasCardItem && createVNode(VCardItem, {\n \"key\": \"item\",\n \"prependAvatar\": props.prependAvatar,\n \"prependIcon\": props.prependIcon,\n \"title\": props.title,\n \"subtitle\": props.subtitle,\n \"appendAvatar\": props.appendAvatar,\n \"appendIcon\": props.appendIcon\n }, {\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append\n }), hasText && createVNode(VCardText, {\n \"key\": \"text\"\n }, {\n default: () => {\n var _a2;\n return [((_a2 = slots.text) == null ? void 0 : _a2.call(slots)) ?? props.text];\n }\n }), (_a = slots.default) == null ? void 0 : _a.call(slots), slots.actions && createVNode(VCardActions, null, {\n default: slots.actions\n }), genOverlays(isClickable, \"v-card\")];\n }\n }), [[resolveDirective(\"ripple\"), isClickable && props.ripple]]);\n });\n return {};\n }\n});\nexport {\n VCard,\n makeVCardProps\n};\n//# sourceMappingURL=VCard.mjs.map\n","import { FireAlertFn } from '../ux/alert'\nimport { isObject } from '../common/guards'\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { isResourcefulRecordActionArray } from './types'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { makeCommonResourcefulFieldProps } from '../fields/common'\nimport { makeVCardProps } from '@nhtio/vuetifiable/components/VCard/VCard'\nimport { defaultControlButtonBarOptionsProps } from '../control-button-bar/props'\nimport { propsAndEmitsFactory, propsAndDefaultsFactory } from '../common/factories'\nimport {\n defaultControlButtonProps,\n defaultControlButtonOverrideProps,\n} from '../control-button/props'\nimport {\n isResourcefulRecordPreventedEvent,\n isResourcefulRecordSubmittedEvent,\n isResourcefulRecordProcessingEvent,\n isResourcefulRecordSuccessEvent,\n isResourcefulRecordFailureEvent,\n} from './guards'\nimport type { PropFactory } from '../common/factories'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type { AsyncValidationOptions } from '@nhtio/lucid-resourceful/joi'\nimport type { PropType, ExtractPublicPropTypes, ExtractPropTypes } from 'vue'\nimport type { ValidationMessageKey, JoiSchemaPropType } from '../ux/validation'\nimport type { ControlButtonBarOptionsProps } from '../control-button-bar/props'\nimport type { ResourcefulHttpResponse, ResourcefulHttpProgress } from '../services/http'\nimport type { ExtractPublicPropTypesFromFactory, HookableEvents } from '../common/factories'\nimport type { RouteLocationAsRelativeGeneric, RouteLocationAsPathGeneric } from 'vue-router'\nimport type { ControlButtonProps, ControlButtonOverrideProps } from '../control-button/props'\nimport type {\n ResourcefulRecordModelSchema,\n ResourcefulRecordPreventedHookHandler,\n ResourcefulRecordSubmittedHookHandler,\n ResourcefulRecordProcessingHookHandler,\n ResourcefulRecordSuccessHookHandler,\n ResourcefulRecordFailureHookHandler,\n ResourcefulRecordExceptionHookHandler,\n ResourcefulRecordChangeStateSubmittingHookHandler,\n ResourcefulRecordChangeStateValidatingHookHandler,\n ResourcefulRecordChangeStateTouchedHookHandler,\n ResourcefulRecordChangeStateDirtyHookHandler,\n ResourcefulRecordChangeStateValidHookHandler,\n ResourcefulRecordChangeStatePendingHookHandler,\n ResourcefulRecordChangeStateErrorsHookHandler,\n ResourcefulRecordChangeStateErrorBagHookHandler,\n ResourcefulRecordChangeStateSubmitCountHookHandler,\n ResourceResourcefulRecordResponse,\n ResourcefulRecordViewMode,\n ResourcefulSubmissionHandler,\n ResourcefulRecordBusConsumer,\n ResourcefulRecordUrlAction,\n ResourcefulRecordFunctionAction,\n ActionIsActionableValidator,\n ResourcefulRecordCrudActionCallback,\n ResourcefulRecordCrudInstanceActionCallback,\n ResourcefulRecordSubmissionMiddlewareFn,\n} from './types'\n\nexport const {\n factory: makeResourcefulRecordAdvancedOptions,\n defaults: resourcefulRecordAdvancedOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n uidForCreate: {\n type: String as PropType<string>,\n default: 'new',\n },\n debug: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n 'ResourcefulRecordAdvancedOptions'\n)\n\nexport type ResourcefulRecordAdvancedOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordAdvancedOptions\n>\n\nexport const {\n factory: makeResourcefulRecordRouteOptions,\n defaults: resourcefulRecordRouteOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n name: {\n type: String as PropType<string>,\n required: true,\n },\n paramForUid: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n queryPropForUid: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n },\n 'ResourcefulRecordRouteOptions'\n)\n\nexport type ResourcefulRecordRouteOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordRouteOptions\n>\n\nexport const {\n factory: makeResourcefulRecordCommonFieldProps,\n defaults: resourcefulRecordCommonFieldPropsDefaults,\n} = propsAndDefaultsFactory(\n {\n ...pick(makeCommonResourcefulFieldProps(), [\n 'density',\n 'class',\n 'style',\n 'menuIcon',\n 'theme',\n 'variant',\n 'persistentPlaceholder',\n ]),\n },\n 'ResourcefulRecordCommonFieldProps'\n)\n\nexport type ResourcefulRecordCommonFieldProps = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordCommonFieldProps\n>\n\nexport type ResourcefulRecordFieldSpecificProps = {\n [prop: string]: ResourcefulRecordCommonFieldProps\n}\n\nconst resourcefulRecordRouteOptionsSchema = joi\n .object({\n name: joi.string().required(),\n paramForUid: joi.string().optional(),\n queryPropForUid: joi.string().optional(),\n })\n .xor('paramForUid', 'queryPropForUid')\n\nexport const resourcefulRecordRouteOptionsValidator = (\n value: unknown\n): value is ResourcefulRecordRouteOptions => {\n const { error } = resourcefulRecordRouteOptionsSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const {\n factory: makeResourcefulRecordNavOptions,\n defaults: resourcefulRecordNavOptionsDefaults,\n} = propsAndDefaultsFactory(\n {\n name: {\n type: String as PropType<RouteLocationAsRelativeGeneric['name'] | undefined>,\n default: undefined,\n },\n params: {\n type: Object as PropType<RouteLocationAsRelativeGeneric['params'] | undefined>,\n default: undefined,\n },\n path: {\n type: String as PropType<RouteLocationAsPathGeneric['path'] | undefined>,\n default: undefined,\n },\n query: {\n type: Object as PropType<\n RouteLocationAsRelativeGeneric['query'] | RouteLocationAsPathGeneric['query'] | undefined\n >,\n default: undefined,\n },\n hash: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n replace: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n force: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n },\n 'ResourcefulRecordNavOptions'\n)\n\nexport type ResourcefulRecordNavOptions = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordNavOptions\n>\n\nconst routeLocationAsRelativeGenericSchema = joi.object<RouteLocationAsRelativeGeneric>({\n name: joi.string().optional(),\n params: joi.object().pattern(joi.string(), joi.any()).optional(),\n query: joi.object().pattern(joi.string(), joi.any()).optional(),\n path: joi.forbidden(),\n hash: joi.string().optional(),\n replace: joi.boolean().optional(),\n force: joi.boolean().optional(),\n})\nconst routeLocationAsPathGenericSchema = joi.object<RouteLocationAsPathGeneric>({\n path: joi.string().required(),\n query: joi.object().pattern(joi.string(), joi.any()).optional(),\n hash: joi.string().optional(),\n replace: joi.boolean().optional(),\n force: joi.boolean().optional(),\n})\nconst resourcefulRecordNavOptionsSchema = joi.alternatives<\n RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric\n>(routeLocationAsRelativeGenericSchema, routeLocationAsPathGenericSchema)\n\nexport const resourcefulRecordNavOptionsValidator = (\n value: unknown\n): value is RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric => {\n const { error } = resourcefulRecordNavOptionsSchema.validate(value, { abortEarly: true })\n return !error\n}\n\nexport const rawResourcefulEmits = {\n 'state': (state: string | null | undefined) =>\n 'string' === typeof state || null === state || 'undefined' === typeof state,\n 'update:state': (state: string | null | undefined) =>\n 'string' === typeof state || null === state || 'undefined' === typeof state,\n // NOTE: 'error' is a general error handler for caught errors throughout the component lifecycle\n 'error': (error: unknown) => error instanceof Error || true,\n 'prevented': (values: Record<string, any>, error: ValidationError) =>\n isResourcefulRecordPreventedEvent(values, error),\n 'submitted': (values: Record<string, any>) => isResourcefulRecordSubmittedEvent(values),\n 'success': (response: ResourceResourcefulRecordResponse, values: Record<string, any>) =>\n isResourcefulRecordSuccessEvent(response, values),\n 'failure': (response: ResourcefulHttpResponse, values: Record<string, any>) =>\n isResourcefulRecordFailureEvent(response, values),\n // NOTE: 'exception' is specifically for errors during submission middleware chain processing\n 'exception': (exception: unknown) => exception instanceof Error || true,\n 'state:submitting': (is: boolean) => 'boolean' === typeof is,\n 'state:validating': (is: boolean) => 'boolean' === typeof is,\n 'state:touched': (is: boolean) => 'boolean' === typeof is,\n 'state:dirty': (is: boolean) => 'boolean' === typeof is,\n 'state:valid': (is: boolean) => 'boolean' === typeof is,\n 'state:pending': (is: boolean) => 'boolean' === typeof is,\n 'state:errors': (errors: Record<string, string | undefined>) =>\n isObject(errors) &&\n Object.keys(errors).every((k) => 'string' === typeof k) &&\n Object.values(errors).every((v) => 'string' === typeof v || undefined === v),\n 'state:errorBag': (errors: Partial<Record<string, string[]>>) =>\n isObject(errors) &&\n Object.keys(errors).every((k) => 'string' === typeof k) &&\n Object.values(errors).every(\n (v) => Array.isArray(v) && v.every((item) => 'string' === typeof item)\n ),\n 'state:submitCount': (count: number) => 'number' === typeof count,\n}\n\nexport const { makeProps: makeBaseResourcefulRecordProps, emits: baseResourcefulEmits } =\n propsAndEmitsFactory(\n {\n state: {\n type: String as PropType<string | undefined | null>,\n default: undefined,\n },\n mode: {\n type: String as PropType<ResourcefulRecordViewMode>,\n default: 'read',\n validator: (v: string) => ['read', 'create', 'update'].includes(v),\n },\n initialValues: {\n type: Object as PropType<Record<string, any> | undefined | null>,\n default: undefined,\n },\n additionalMessages: {\n type: Object as PropType<Record<Exclude<string, ValidationMessageKey>, string>>,\n default: () => ({}),\n },\n overrideMessages: {\n type: Object as PropType<Partial<Record<ValidationMessageKey, string>>>,\n default: () => ({}),\n },\n callOnPrevented: {\n type: Array as PropType<Array<ResourcefulRecordPreventedHookHandler>>,\n default: () => [],\n },\n callOnSubmitted: {\n type: Array as PropType<Array<ResourcefulRecordSubmittedHookHandler>>,\n default: () => [],\n },\n callOnSuccess: {\n type: Array as PropType<Array<ResourcefulRecordSuccessHookHandler>>,\n default: () => [],\n },\n callOnFailure: {\n type: Array as PropType<Array<ResourcefulRecordFailureHookHandler>>,\n default: () => [],\n },\n callOnException: {\n type: Array as PropType<Array<ResourcefulRecordExceptionHookHandler>>,\n default: () => [],\n },\n callOnSubmittingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateSubmittingHookHandler>>,\n default: () => [],\n },\n callOnValidatingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateValidatingHookHandler>>,\n default: () => [],\n },\n callOnTouchedStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateTouchedHookHandler>>,\n default: () => [],\n },\n callOnDirtyStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateDirtyHookHandler>>,\n default: () => [],\n },\n callOnValidStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateValidHookHandler>>,\n default: () => [],\n },\n callOnPendingStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStatePendingHookHandler>>,\n default: () => [],\n },\n callOnErrorsStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateErrorsHookHandler>>,\n default: () => [],\n },\n callOnErrorBagStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateErrorBagHookHandler>>,\n default: () => [],\n },\n callOnSubmitCountStateChange: {\n type: Array as PropType<Array<ResourcefulRecordChangeStateSubmitCountHookHandler>>,\n default: () => [],\n },\n fieldLabels: {\n type: Object as PropType<Record<string, string>>,\n default: () => ({}),\n },\n advanced: {\n type: Object as PropType<ResourcefulRecordAdvancedOptions>,\n default: () => resourcefulRecordAdvancedOptionsDefaults,\n },\n commonFieldOptions: {\n type: Object as PropType<ResourcefulRecordCommonFieldProps>,\n default: () => resourcefulRecordCommonFieldPropsDefaults,\n },\n specificFieldOptions: {\n type: Object as PropType<ResourcefulRecordFieldSpecificProps>,\n default: () => ({}),\n },\n bus: {\n type: Object as PropType<ResourcefulRecordBusConsumer>,\n required: true,\n },\n model: {\n type: Object as PropType<ResourcefulRecordModelSchema>,\n required: true,\n },\n schema: {\n type: Object as JoiSchemaPropType<any>,\n required: true,\n },\n submissionPayloadModifiers: {\n type: Array as PropType<Array<ResourcefulRecordSubmissionMiddlewareFn>>,\n default: () => [],\n },\n submissionHandler: {\n type: Function as PropType<ResourcefulSubmissionHandler>,\n required: true,\n },\n validationOptions: {\n type: Object as PropType<AsyncValidationOptions>,\n default: () => ({ abortEarly: false }),\n },\n fireAlertFn: {\n type: [Function, Object] as unknown as PropType<FireAlertFn | undefined>,\n default: undefined,\n },\n doRefreshChoices: {\n type: Object as PropType<Record<string, () => Promise<REnumFieldLoadedChoice[]>>>,\n default: () => ({}),\n },\n },\n rawResourcefulEmits,\n 'ResourcefulRecordBase'\n )\n\nexport type BaseResourcefulRecordProps = ExtractPublicPropTypesFromFactory<\n typeof makeBaseResourcefulRecordProps\n>\n\nexport type BaseResourcefulRecordInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeBaseResourcefulRecordProps>\n>\n\nexport type ResourcefulRecordInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeResourcefulRecordProps>\n>\n\nconst vCardDefaults = getDefaultsForPropFactory(makeVCardProps as PropFactory<any>)\nexport type VCardPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVCardProps>>\n\nexport type ResourcefulRecordVCardProps = Omit<\n VCardPublicProps,\n 'tag' | 'action' | 'method' | 'onSubmit'\n>\n\nconst rawResourcefulRecordEmits = {\n ...rawResourcefulEmits,\n processing: (progress: ResourcefulHttpProgress, values: Record<string, any>) =>\n isResourcefulRecordProcessingEvent(progress, values),\n}\n\nexport const { makeProps: makeResourcefulRecordProps, emits: resourcefulRecordEmits } =\n propsAndEmitsFactory(\n {\n baseUrl: {\n type: String as PropType<string>,\n required: true,\n },\n metaProgressColor: {\n type: String as PropType<string>,\n default: 'success',\n },\n uid: {\n type: String as PropType<string | undefined | null>,\n default: undefined,\n },\n container: {\n type: Object as PropType<ResourcefulRecordVCardProps>,\n default: () => ({\n ...vCardDefaults,\n width: '100%',\n }),\n },\n controlButtonOptions: {\n type: Object as PropType<ControlButtonProps>,\n default: () => defaultControlButtonProps,\n },\n controlButtonBarOptions: {\n type: Object as PropType<ControlButtonBarOptionsProps>,\n default: () => ({\n ...defaultControlButtonBarOptionsProps,\n gap: 3,\n }),\n },\n routeToIndex: {\n type: Object as PropType<ResourcefulRecordNavOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordNavOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToIndex: {\n type: Function as PropType<ResourcefulRecordCrudActionCallback | undefined>,\n default: undefined,\n },\n indexButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canIndex: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToCreate: {\n type: Object as PropType<ResourcefulRecordNavOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordNavOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToCreate: {\n type: Function as PropType<ResourcefulRecordCrudActionCallback | undefined>,\n default: undefined,\n },\n createButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canCreate: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToRead: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToRead: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n readButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canRead: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToUpdate: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToUpdate: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n updateButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canUpdate: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n routeToDelete: {\n type: Object as PropType<ResourcefulRecordRouteOptions | undefined>,\n default: undefined,\n validator: (v: unknown) => undefined === v || resourcefulRecordRouteOptionsValidator(v),\n },\n // If both route and callback are provided, route is given priority\n callbackToDelete: {\n type: Function as PropType<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n default: undefined,\n },\n deleteButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n // while the default is `true`, the button will not show if no route and no callback are defined\n canDelete: {\n type: [Boolean, Function] as PropType<boolean | ActionIsActionableValidator>,\n default: true,\n },\n actions: {\n type: Array as PropType<\n Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>\n >,\n default: () => [],\n validator: (v: unknown) => isResourcefulRecordActionArray(v),\n },\n ...omit(makeBaseResourcefulRecordProps(), [\n 'bus',\n 'schema',\n 'model',\n 'submissionPayloadModifiers',\n 'submissionHandler',\n 'validationOptions',\n 'fireAlertFn',\n 'doRefreshChoices',\n ]),\n callOnProcessing: {\n type: Array as PropType<Array<ResourcefulRecordProcessingHookHandler>>,\n default: () => [],\n },\n commitButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n resetButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n refreshButtonOverrides: {\n type: Object as PropType<Partial<ControlButtonOverrideProps>>,\n default: () => ({\n ...defaultControlButtonOverrideProps,\n }),\n },\n bus: {\n type: Object as PropType<ResourcefulRecordBusConsumer | undefined>,\n default: undefined,\n },\n },\n rawResourcefulRecordEmits,\n 'ResourcefulRecord'\n )\n\nexport type ResourcefulRecordProps = ExtractPublicPropTypesFromFactory<\n typeof makeResourcefulRecordProps\n>\n\nexport type ResourcefulRecordEmits = typeof rawResourcefulRecordEmits\n\nexport type ResourcefulRecordHookableEvents = HookableEvents<ResourcefulRecordEmits>\n\nexport type ResourcefulRecordFormEmits = typeof rawResourcefulEmits\n\nexport type ResourcefulRecordFormHookableEvents = HookableEvents<ResourcefulRecordEmits>\n","var m = (s) => {\n throw TypeError(s);\n};\nvar w = (s, e, t) => e.has(s) || m(\"Cannot \" + t);\nvar n = (s, e, t) => (w(s, e, \"read from private field\"), t ? t.call(s) : e.get(s)), a = (s, e, t) => e.has(s) ? m(\"Cannot add the same private member more than once\") : e instanceof WeakSet ? e.add(s) : e.set(s, t), h = (s, e, t, r) => (w(s, e, \"write to private field\"), r ? r.call(s, t) : e.set(s, t), t), g = (s, e, t) => (w(s, e, \"access private method\"), t);\nvar f, u, l, p, d, o, H, y;\nclass _ {\n /**\n * Create a new Runner instance\n *\n * @param action - The name of the event/action this runner handles\n * @param hookHandlers - Optional set of hook handlers to initialize with\n *\n * @example\n * ```ts\n * const runner = new Runner('saving', new Set([handler1, handler2]))\n * ```\n */\n constructor(e, t) {\n a(this, o);\n /**\n * A collection of registered hook handlers for this runner's event.\n *\n * Contains both function handlers and handler provider objects.\n */\n a(this, f);\n /**\n * An array of cleanup handlers collected from hook executions.\n *\n * Cleanup handlers are stored in an array (not a Set) because it's valid\n * for multiple hooks to return the same cleanup function, and we need to\n * execute it once for each hook that returned it.\n */\n a(this, u, []);\n /**\n * Current state of the runner's cleanup lifecycle.\n *\n * State transitions:\n * - `idle`: Initial state, no hooks have been run\n * - `cleanup_pending`: Hooks have been executed, cleanup can be performed\n * - `cleanup_initiated`: Cleanup has started\n * - `cleanup_completed`: Cleanup has finished\n */\n a(this, l, \"idle\");\n /**\n * A list of handler names to exclude from execution.\n *\n * Populated by the `without()` method to selectively skip certain handlers.\n */\n a(this, p, []);\n /**\n * Whether to skip all hooks during execution.\n *\n * Set to `true` when `without()` is called without arguments.\n */\n a(this, d, !1);\n this.action = e, h(this, f, t || /* @__PURE__ */ new Set());\n }\n /**\n * Check if cleanup operations are pending.\n *\n * Returns `true` when hooks have been executed but cleanup has not yet been performed.\n * This is useful to determine if `cleanup()` should be called.\n *\n * @returns `true` if cleanup is pending, `false` otherwise\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n * await runner.run(user)\n *\n * if (runner.isCleanupPending) {\n * await runner.cleanup(null, user)\n * }\n * ```\n */\n get isCleanupPending() {\n return n(this, l) === \"cleanup_pending\";\n }\n /**\n * Exclude specific hook handlers from execution.\n *\n * This method allows you to selectively skip certain handlers when running hooks.\n * Calling this method multiple times will overwrite the previous ignore list.\n *\n * @param handlersToIgnore - Array of handler names to ignore. If undefined, all hooks will be skipped.\n * @returns The runner instance for method chaining\n *\n * @example\n * ```ts\n * // Skip specific handlers by name\n * await hooks.runner('saving')\n * .without(['hashPassword', 'generateDefaultAvatar'])\n * .run(user)\n *\n * // Skip all handlers\n * await hooks.runner('saving').without().run(user)\n *\n * // Skip all handlers\n * runner.without().run()\n * ```\n */\n without(e) {\n return e ? (h(this, d, !1), h(this, p, e)) : h(this, d, !0), this;\n }\n /**\n * Execute hook handlers in the order they were registered.\n *\n * Runs all hook handlers for the event, passing the provided arguments to each handler.\n * Any cleanup handlers returned by hooks are collected for later execution.\n *\n * @param data - Arguments to pass to the hook handlers\n * @returns A promise that resolves when all handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n * await runner.run(user, transaction)\n * ```\n */\n async run(...e) {\n return g(this, o, y).call(this, !1, e);\n }\n /**\n * Execute hook handlers in reverse order (last registered handler runs first).\n *\n * This is useful when you want to execute cleanup operations or perform actions\n * in the opposite order of registration.\n *\n * @param data - Arguments to pass to the hook handlers\n * @returns A promise that resolves when all handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('deleting')\n * await runner.runReverse(user)\n * ```\n */\n async runReverse(...e) {\n return g(this, o, y).call(this, !0, e);\n }\n /**\n * Execute all collected cleanup handlers in reverse order.\n *\n * Cleanup handlers are executed in reverse order (last collected runs first) to ensure\n * proper cleanup sequencing. This method is idempotent - it can be called multiple times\n * but will only execute the cleanup handlers once.\n *\n * @param data - Arguments to pass to the cleanup handlers (typically includes error and context)\n * @returns A promise that resolves when all cleanup handlers have been executed\n *\n * @example\n * ```ts\n * const runner = hooks.runner('saving')\n *\n * try {\n * await runner.run(user)\n * await saveToDatabase(user)\n * await runner.cleanup(null, user) // Success cleanup\n * } catch (error) {\n * await runner.cleanup(error, user) // Error cleanup\n * throw error\n * }\n * ```\n */\n async cleanup(...e) {\n if (!this.isCleanupPending)\n return;\n h(this, l, \"cleanup_initiated\");\n let t = n(this, u).length;\n for (; t--; )\n await n(this, u)[t](...e);\n h(this, l, \"cleanup_completed\"), h(this, u, []);\n }\n}\nf = new WeakMap(), u = new WeakMap(), l = new WeakMap(), p = new WeakMap(), d = new WeakMap(), o = new WeakSet(), /**\n * Check if a handler should be executed based on the ignore list.\n *\n * @param handlerName - The name of the handler to check\n * @returns `true` if the handler should be executed, `false` if it should be skipped\n */\nH = function(e) {\n return !n(this, p).includes(e);\n}, y = async function(e, t) {\n if (n(this, l) !== \"idle\" || (h(this, l, \"cleanup_pending\"), n(this, d)))\n return;\n const r = e ? Array.from(n(this, f)).reverse() : n(this, f);\n for (let c of r)\n if (g(this, o, H).call(this, c.name)) {\n const k = await (typeof c == \"function\" ? c(...t) : c.handle(this.action, ...t));\n typeof k == \"function\" && n(this, u).push(k);\n }\n};\nvar i;\nclass A {\n constructor() {\n /**\n * A collection of registered hooks organized by event name.\n *\n * Each event maps to a Set of handlers (either functions or handler providers).\n * Sets are used to automatically prevent duplicate handler registration.\n */\n a(this, i, /* @__PURE__ */ new Map());\n }\n /**\n * Get access to all the registered hooks. The return value is\n * a map of the event name and a set of handlers.\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n * const allHooks = hooks.all()\n * console.log(allHooks.size) // Number of events with handlers\n * ```\n */\n all() {\n return n(this, i);\n }\n /**\n * Find if a handler for a given event exists.\n *\n * @param event - The event name to check\n * @param handler - Optional specific handler to check for\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Check if any handlers exist for an event\n * if (hooks.has('saving')) {\n * console.log('Saving hooks are registered')\n * }\n *\n * // Check if specific handler exists\n * if (hooks.has('saving', hashPasswordHandler)) {\n * console.log('Hash password handler is registered')\n * }\n * ```\n */\n has(e, t) {\n const r = n(this, i).get(e);\n return r ? t ? r.has(t) : !0 : !1;\n }\n /**\n * Add a hook handler for a given event. Adding the same handler twice will\n * result in a noop.\n *\n * @param event - The event name to add the handler for\n * @param handler - The hook handler function or handler provider\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Add a function handler\n * hooks.add('saving', function hashPassword(user) {\n * user.password = hash(user.password)\n * })\n *\n * // Add a handler provider\n * hooks.add('saving', {\n * name: 'EmailValidator',\n * handle(event, user) {\n * validateEmail(user.email)\n * }\n * })\n * ```\n */\n add(e, t) {\n return n(this, i).get(e) || n(this, i).set(e, /* @__PURE__ */ new Set()), n(this, i).get(e).add(t), this;\n }\n /**\n * Remove hook handler for a given event.\n *\n * @param event - The event name to remove the handler from\n * @param handler - The hook handler to remove\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n * const handler = function hashPassword(user) {}\n *\n * hooks.add('saving', handler)\n *\n * // Later, remove the handler\n * const removed = hooks.remove('saving', handler)\n * console.log(removed) // true if handler was found and removed\n * ```\n */\n remove(e, t) {\n const r = n(this, i).get(e);\n return r ? r.delete(t) : !1;\n }\n /**\n * Clear all the hooks for a specific event or all the\n * events.\n *\n * @param event - Optional event name to clear hooks for. If not provided, clears all hooks.\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * // Clear hooks for specific event\n * hooks.clear('saving')\n *\n * // Clear all hooks\n * hooks.clear()\n * ```\n */\n clear(e) {\n if (!e) {\n n(this, i).clear();\n return;\n }\n n(this, i).delete(e);\n }\n /**\n * Merge hooks from an existing hooks instance.\n *\n * @param hooks - The hooks instance to merge from\n *\n * @example\n * ```ts\n * const hooks1 = new Hooks()\n * const hooks2 = new Hooks()\n *\n * hooks2.add('saving', handler1)\n * hooks2.add('deleting', handler2)\n *\n * // Merge hooks2 into hooks1\n * hooks1.merge(hooks2)\n * ```\n */\n merge(e) {\n e.all().forEach((t, r) => {\n t.forEach((c) => {\n this.add(r, c);\n });\n });\n }\n /**\n * Returns an instance of the runner to run hooks\n *\n * @param action - The event name to create a runner for\n *\n * @example\n * ```ts\n * const hooks = new Hooks()\n *\n * hooks.add('saving', function hashPassword(user) {\n * user.password = hash(user.password)\n * })\n *\n * // Get a runner and execute hooks\n * const runner = hooks.runner('saving')\n * await runner.run(user)\n * ```\n */\n runner(e) {\n return new _(e, n(this, i).get(e));\n }\n}\ni = new WeakMap();\nconst C = \"1.20251013.0\";\nexport {\n A as Hooks,\n _ as Runner,\n C as version\n};\n//# sourceMappingURL=index.mjs.map\n","import { useI18n } from '../ioc'\nimport { Hooks } from '@nhtio/hooks'\nimport { SvgIcon } from '../svg-icon'\nimport { diff } from 'deep-object-diff'\nimport { isObject } from '../common/guards'\nimport { Middleware } from '@nhtio/middleware'\nimport { baseResourcefulEmits } from './props'\nimport { default as dotCtor } from 'dot-object'\nimport { ControlButton } from '../control-button'\nimport { ResourcefulRecordViewMode } from './types'\nimport { validator } from '@nhtio/lucid-resourceful/joi'\nimport { mdiRefresh, mdiFileUndo, mdiContentSave } from '@mdi/js'\nimport { encode, decode } from '@nhtio/lucid-resourceful/encoding'\nimport { debounce, throttle } from '@nhtio/vuetifiable/util/helpers'\nimport { getCamelAndMaybeKebabPropKeysFor } from '../common/factories'\nimport { isResourcefulRecordUrlAction, isResourcefulRecordFunctionAction } from './types'\nimport { computed, h, shallowRef, triggerRef, watch, warn, toValue, nextTick } from 'vue'\nimport {\n stripUndefinedValuesFromObject,\n typeAndFormatToResourcefulFieldType,\n} from '../common/utils'\nimport {\n E_DECODED_STATE_MODEL_INCOMPATIBLE,\n E_FAILED_TO_DECODE_STATE_MODEL,\n E_FAILED_TO_COMPARE_STATE_MODEL_VALUES,\n} from './exceptions'\nimport type { Ref, ComputedRef, VNode, MaybeRef } from 'vue'\nimport type { ResourcefulHttpResponse } from '../services/http'\nimport type { ObjectSchema, Schema, ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type { ControlButtonProps, ControlButtonOverrideProps } from '../control-button/props'\nimport type {\n ControlButtonBarProps,\n ControlButtonBarOptionsProps,\n} from '../control-button-bar/props'\nimport type {\n // BaseResourcefulRecordProps,\n ResourcefulRecordNavOptions,\n ResourcefulRecordRouteOptions,\n ResourcefulRecordEmits,\n ResourcefulRecordFormEmits,\n ResourcefulRecordFormHookableEvents,\n BaseResourcefulRecordInstanceProps,\n ResourcefulRecordInstanceProps,\n} from './props'\nimport type {\n ActionCallback,\n SuccessCallback,\n UndeterminedCallback,\n FailureCallback,\n CompleteCallback,\n ExceptionCallback,\n ResourcefulRecordUrlAction,\n ResourcefulRecordFunctionAction,\n ActionIsActionableValidator,\n ResourceResourcefulRecordResponse,\n ResourcefulRecordCrudActionCallback,\n ResourcefulRecordCrudInstanceActionCallback,\n ResourcefulRecordPreventedHookHandler,\n ResourcefulRecordSubmittedHookHandler,\n ResourcefulRecordSuccessHookHandler,\n ResourcefulRecordFailureHookHandler,\n ResourcefulRecordExceptionHookHandler,\n ResourcefulRecordChangeStateSubmittingHookHandler,\n ResourcefulRecordChangeStateValidatingHookHandler,\n ResourcefulRecordChangeStateTouchedHookHandler,\n ResourcefulRecordChangeStateDirtyHookHandler,\n ResourcefulRecordChangeStateValidHookHandler,\n ResourcefulRecordChangeStatePendingHookHandler,\n ResourcefulRecordChangeStateErrorsHookHandler,\n ResourcefulRecordChangeStateErrorBagHookHandler,\n ResourcefulRecordChangeStateSubmitCountHookHandler,\n ResourcefulSubmissionHandler,\n ResourcefulRecordSubmissionMiddlewareFn,\n ResourcefulRecordModelSchema,\n ResourcefulRecordModelPropertySchema,\n ResourcefulRecordHookHandler,\n} from './types'\n\nconst dot = Object.create(dotCtor)\ndot.keepArray = true\n\nexport const useControlButtonBaseBindings = (\n controlButtonBarOptions: Ref<ControlButtonBarOptionsProps>,\n controlButtonOptions: Ref<ControlButtonProps>,\n isUnactionable: ComputedRef<boolean>\n): ComputedRef<ControlButtonProps> => {\n return computed(\n () =>\n ({\n ...stripUndefinedValuesFromObject({\n color: controlButtonBarOptions.value.overflowMenuButtonOptions?.color,\n density: controlButtonBarOptions.value.overflowMenuButtonOptions?.density,\n size: controlButtonBarOptions.value.overflowMenuButtonOptions?.size,\n }),\n ...stripUndefinedValuesFromObject({\n ...controlButtonOptions.value,\n }),\n ...stripUndefinedValuesFromObject(\n isUnactionable.value\n ? {\n state: {\n disabled: isUnactionable.value,\n },\n }\n : {}\n ),\n inOverflowMenu: true,\n }) satisfies ControlButtonProps\n )\n}\n\nconst evaluateActionIsActionable = (\n mode: ResourcefulRecordViewMode,\n record: ResourceResourcefulRecordResponse | Record<string, any>,\n can: boolean | ActionIsActionableValidator\n): boolean =>\n useEvaluateActionIsActionable(\n computed(() => mode),\n computed(() => record),\n computed(() => can)\n ).value\n\nexport const useEvaluateActionIsActionable = (\n mode: Ref<ResourcefulRecordViewMode>,\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n can: Ref<boolean | ActionIsActionableValidator>\n): ComputedRef<boolean> =>\n computed(() => {\n if (typeof can.value === 'boolean') {\n if (!can.value) return false\n } else if (typeof can.value === 'function') {\n if ('create' === mode.value && !can.value({} as any)) {\n return false\n } else if (!can.value(record.value)) {\n return false\n }\n }\n return true\n })\n\nexport const useCrudActionButtonBindings = (\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n mode: Ref<ResourcefulRecordViewMode>,\n route:\n | Ref<ResourcefulRecordNavOptions | undefined>\n | Ref<ResourcefulRecordRouteOptions | undefined>,\n callback:\n | Ref<ResourcefulRecordCrudActionCallback | undefined>\n | Ref<ResourcefulRecordCrudInstanceActionCallback | undefined>,\n can: Ref<boolean | ActionIsActionableValidator>,\n controlButtonDefaults: Partial<ControlButtonOverrideProps>,\n controlButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>\n): ComputedRef<ControlButtonProps | undefined> => {\n return computed(() => {\n if (!route.value && !callback.value) return undefined\n const isActionable = useEvaluateActionIsActionable(mode, record, can)\n if (!isActionable.value) return undefined\n const ret: ControlButtonProps = {\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject(controlButtonDefaults),\n ...controlButtonOverrides.value,\n ...(route.value ? { to: route.value } : callback.value ? { onClick: callback.value } : {}),\n }\n return ret\n })\n}\n\nconst processActionForRecord = async (\n record: ResourceResourcefulRecordResponse,\n action: ActionCallback,\n onSuccess: SuccessCallback = () => {},\n onUndetermined: UndeterminedCallback = () => {},\n onFailure: FailureCallback = () => {},\n onComplete: CompleteCallback = () => {},\n onException: ExceptionCallback = () => {}\n): Promise<void> => {\n try {\n const result = await action(record)\n if (result === true) {\n onSuccess(record)\n } else if (result === false) {\n onFailure(record)\n } else {\n onUndetermined(record)\n }\n onComplete(record)\n } catch (e) {\n if ('function' === typeof onException) {\n onException(record, e, onComplete)\n }\n }\n}\n\nexport const useAdditionalActionButtonBindings = (\n record: Ref<ResourceResourcefulRecordResponse | Record<string, any>>,\n mode: Ref<ResourcefulRecordViewMode>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>,\n actions: Ref<Array<ResourcefulRecordUrlAction | ResourcefulRecordFunctionAction>>\n): ComputedRef<ControlButtonProps[]> => {\n return computed(\n () =>\n Array.from(actions.value)\n .map((action) => {\n const isActionable = evaluateActionIsActionable(\n mode.value,\n record.value,\n action.actionable ?? true\n )\n if (!isActionable) return undefined\n if (isResourcefulRecordUrlAction(action)) {\n return {\n ...controlButtonBaseBindings.value,\n prependIcon: action.icon,\n cta: action.cta,\n to: 'function' === typeof action.url ? action.url(record.value) : action.url,\n target: action.target,\n } satisfies ControlButtonProps\n } else if (isResourcefulRecordFunctionAction(action)) {\n return {\n ...controlButtonBaseBindings.value,\n prependIcon: action.icon,\n cta: action.cta,\n onClick: () =>\n processActionForRecord(\n record.value as ResourceResourcefulRecordResponse,\n action.action,\n action.onSuccess,\n action.onUndetermined,\n action.onFailure,\n action.onComplete,\n action.onException\n ),\n } satisfies ControlButtonProps & { onClick: () => Promise<void> }\n } else {\n return undefined\n }\n })\n .filter((v) => v !== undefined) satisfies ControlButtonProps[]\n )\n}\n\nexport const useControlBarButtonBindings = (\n indexButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n createButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n readButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n updateButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n deleteButtonBindings: ComputedRef<ControlButtonProps | undefined>,\n additionalButtonBindings: ComputedRef<ControlButtonProps[]>\n): ComputedRef<VNode[]> =>\n computed<VNode[]>(() =>\n [\n indexButtonBindings.value,\n createButtonBindings.value,\n readButtonBindings.value,\n updateButtonBindings.value,\n deleteButtonBindings.value,\n ...additionalButtonBindings.value,\n ]\n .filter((b): b is ControlButtonProps => b !== undefined)\n .map((bindings) => h(ControlButton, bindings))\n )\n\nexport const useControlBarBaseBindings = (\n controlButtonBarOptions: Ref<ControlButtonBarOptionsProps>,\n controlButtonOptions: Ref<ControlButtonProps>\n): ComputedRef<Omit<ControlButtonBarProps, 'buttons'>> =>\n computed(\n () =>\n ({\n ...controlButtonBarOptions.value,\n overflowMenuButtonOptions: stripUndefinedValuesFromObject({\n ...stripUndefinedValuesFromObject({\n color: controlButtonOptions.value.color,\n density: controlButtonOptions.value.density,\n size: controlButtonOptions.value.size,\n }),\n ...stripUndefinedValuesFromObject(\n controlButtonBarOptions.value.overflowMenuButtonOptions ?? {}\n ),\n }),\n }) satisfies Omit<ControlButtonBarProps, 'buttons'>\n )\n\nexport const useResourcefulRecordFloatingControls = (\n mode: Ref<ResourcefulRecordViewMode>,\n controlButtonBaseBindings: ComputedRef<ControlButtonProps>,\n commitButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n refreshButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n resetButtonOverrides: Ref<Partial<ControlButtonOverrideProps>>,\n metaLoading: ComputedRef<boolean>,\n recordLoading: ComputedRef<boolean>,\n commitLoading: ComputedRef<boolean>,\n inErrorState: ComputedRef<boolean>,\n doFormReset: () => void | Promise<void>,\n doRecordRefresh: () => void | Promise<void>,\n doFormSubmit: () => void | Promise<void>\n): ComputedRef<VNode[]> => {\n const t = useI18n()\n const commitButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.save'),\n prependIcon: () => h(SvgIcon, { d: mdiContentSave }),\n }),\n ...commitButtonOverrides.value,\n state: {\n loading: commitLoading.value,\n disabled: metaLoading.value || recordLoading.value,\n },\n onClick: doFormSubmit,\n }))\n const refreshButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.refresh'),\n prependIcon: () => h(SvgIcon, { d: mdiRefresh }),\n }),\n ...refreshButtonOverrides.value,\n state: {\n loading: recordLoading.value,\n disabled: metaLoading.value || commitLoading.value,\n },\n onClick: doRecordRefresh,\n }))\n const resetButtonBindings = computed<\n ControlButtonProps & { onClick: () => void | Promise<void> }\n >(() => ({\n ...controlButtonBaseBindings.value,\n ...stripUndefinedValuesFromObject({\n cta: t('general.reset'),\n prependIcon: () => h(SvgIcon, { d: mdiFileUndo }),\n }),\n ...resetButtonOverrides.value,\n state: {\n loading: recordLoading.value,\n disabled: metaLoading.value || commitLoading.value,\n },\n onClick: doFormReset,\n }))\n return computed<VNode[]>(() =>\n mode.value === 'read' || inErrorState.value\n ? [h(ControlButton, refreshButtonBindings.value)]\n : [\n h(ControlButton, resetButtonBindings.value),\n h(ControlButton, {\n ...commitButtonBindings.value,\n class: ['ms-2'],\n }),\n ]\n )\n}\n\nexport type UseResourcefulPassthroughHookOptions<P extends any[]> = {\n // the hook to run if nothing is set to run for the event\n fallback?: (...args: P) => void | Promise<void>\n // if debounceMs is set, the hook will be debounced by the given milliseconds\n debounceMs?: number\n // if throttleMs is set, the hook will be throttled by the given milliseconds\n throttleMs?: number\n // if immediate is not set, the hook will be run using Vue's `nextTick`\n // if immediate is false, the hook will be run in the current tick\n // if immediate is true, the hook will be run using queueMicrotask\n immediate?: boolean\n}\n\nexport const useResourcefulPassthroughHook = <\n E extends Extract<keyof ResourcefulRecordEmits, string>,\n P extends any[] = Parameters<ResourcefulRecordEmits[E]>,\n>(\n event: E,\n callOnKey: Extract<keyof ResourcefulRecordInstanceProps, `callOn${string}`>,\n emit: (...args: any[]) => void,\n props: ResourcefulRecordInstanceProps,\n attrs: Record<string, unknown>,\n options: UseResourcefulPassthroughHookOptions<P> = {}\n) => {\n if (\n 'number' === typeof options.debounceMs &&\n 'number' === typeof options.throttleMs &&\n options.debounceMs > 0 &&\n options.throttleMs > 0\n ) {\n warn('useResourcefulPassthroughHook: debounceMs and throttleMs are both set.')\n }\n const { camel, kebab } = getCamelAndMaybeKebabPropKeysFor(event) as {\n camel: keyof ResourcefulRecordInstanceProps\n kebab: keyof ResourcefulRecordInstanceProps\n }\n const doHook = async (...args: P) => {\n // if the `on${event}` props are set to functions, emit as normal\n if (\n 'function' === typeof props[camel] ||\n 'function' === typeof props[kebab] ||\n 'function' === typeof attrs[camel] ||\n 'function' === typeof attrs[kebab]\n ) {\n emit(event, ...args)\n return\n }\n // if there are `callOn${event}` hooks, do not run the fallback\n const callOns: ResourcefulRecordHookHandler<E> = props[callOnKey] as any\n if (Array.isArray(callOns) && callOns.length > 0) {\n return\n }\n const fallback = options.fallback ?? (() => {})\n await fallback(...args)\n }\n let callHook = doHook\n if ('number' === typeof options.debounceMs && options.debounceMs > 0) {\n callHook = debounce(callHook, options.debounceMs) as unknown as typeof doHook\n }\n if ('number' === typeof options.throttleMs && options.throttleMs > 0) {\n callHook = throttle(callHook, options.throttleMs) as unknown as typeof doHook\n }\n switch (true) {\n case 'undefined' === typeof options.immediate:\n callHook = async (...args: P) => {\n await nextTick()\n return await doHook(...args)\n }\n break\n\n case options.immediate:\n callHook = async (...args: P) => {\n return await new Promise<void>((rslv) => {\n queueMicrotask(() => doHook(...args).then(rslv))\n })\n }\n break\n }\n return callHook\n}\n\nconst stateToFormStateModelValue = (\n state: string | undefined | null,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n): Record<string, any> | undefined | null => {\n if (state === undefined || state === null) {\n return state\n }\n try {\n const decoded = decode(state)\n if (!isObject(decoded)) {\n warn(`ResourcefulRecordForm: Decoded form state model value is not an object.`, decoded)\n onError(new E_DECODED_STATE_MODEL_INCOMPATIBLE())\n return undefined\n }\n return decoded as Record<string, any>\n } catch (e) {\n warn(\n `ResourcefulRecordForm: Failed to decode form state model value from state string \"${state}\".`,\n e\n )\n onError(\n new E_FAILED_TO_DECODE_STATE_MODEL([state], { cause: e instanceof Error ? e : undefined })\n )\n return undefined\n }\n}\n\nconst getFormValueUpdates = (\n formStateModelValue: Record<string, any> | undefined | null,\n currentFormValues: Record<string, any> | undefined | null\n) => {\n const is = isObject(formStateModelValue) ? formStateModelValue : {}\n const was = isObject(currentFormValues) ? currentFormValues : {}\n const differences = diff(was, is)\n return dot.dot(differences)\n}\n\nconst isSame = (\n a: any,\n b: any,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n): boolean => {\n try {\n return encode(a) === encode(b)\n } catch (e) {\n warn('ResourcefulRecordForm: Failed to compare form state model values.', e)\n onError(\n new E_FAILED_TO_COMPARE_STATE_MODEL_VALUES(undefined, {\n cause: e instanceof Error ? e : undefined,\n })\n )\n return true\n }\n}\n\nexport const useResourcefulRecordFormState = (\n state: Ref<string | undefined | null>,\n onState: (formState: string | null | undefined) => Promise<void>,\n onUpdateState: (formState: string | null | undefined) => Promise<void>,\n formValues: Ref<Record<string, any> | undefined | null>,\n setValues: (values: any, shouldValidate?: boolean) => void,\n onError: ResourcefulRecordHooks['onError'] = async () => {}\n) => {\n // the form state model value should start as the decoded state value\n const formStateModelValue = shallowRef<Record<string, any> | undefined | null>(\n stateToFormStateModelValue(state.value, onError)\n )\n const onChangeToState = debounce(\n (is: string | undefined | null, was: string | undefined | null) => {\n if (isSame(is, was, onError)) return\n formStateModelValue.value = stateToFormStateModelValue(is, onError)\n triggerRef(formStateModelValue)\n const toUpdate = getFormValueUpdates(formStateModelValue.value, formValues.value)\n if (Object.keys(toUpdate).length > 0) {\n setValues(toUpdate, false)\n }\n },\n 100\n )\n const onChangeToFormValues = debounce(\n (is: Record<string, any> | undefined | null, was: Record<string, any> | undefined | null) => {\n if (isSame(is, was, onError)) return\n formStateModelValue.value = is\n triggerRef(formStateModelValue)\n const encoded: string | null | undefined = isObject(is)\n ? (encode(is as any) as string)\n : (is as undefined | null)\n onState(encoded)\n onUpdateState(encoded)\n },\n 100\n )\n watch(state, onChangeToState, { immediate: true })\n watch(formValues, onChangeToFormValues, { immediate: true, deep: true })\n}\n\nexport const useResourcefulRecordFormHooks = (\n _props: BaseResourcefulRecordInstanceProps,\n emit: (event: keyof ResourcefulRecordEmits, ...args: any[]) => void,\n callOnPrevented: Ref<Array<ResourcefulRecordPreventedHookHandler>>,\n callOnSubmitted: Ref<Array<ResourcefulRecordSubmittedHookHandler>>,\n callOnSuccess: Ref<Array<ResourcefulRecordSuccessHookHandler>>,\n callOnFailure: Ref<Array<ResourcefulRecordFailureHookHandler>>,\n callOnException: Ref<Array<ResourcefulRecordExceptionHookHandler>>,\n callOnSubmittingStateChange: Ref<Array<ResourcefulRecordChangeStateSubmittingHookHandler>>,\n callOnValidatingStateChange: Ref<Array<ResourcefulRecordChangeStateValidatingHookHandler>>,\n callOnTouchedStateChange: Ref<Array<ResourcefulRecordChangeStateTouchedHookHandler>>,\n callOnDirtyStateChange: Ref<Array<ResourcefulRecordChangeStateDirtyHookHandler>>,\n callOnValidStateChange: Ref<Array<ResourcefulRecordChangeStateValidHookHandler>>,\n callOnPendingStateChange: Ref<Array<ResourcefulRecordChangeStatePendingHookHandler>>,\n callOnErrorsStateChange: Ref<Array<ResourcefulRecordChangeStateErrorsHookHandler>>,\n callOnErrorBagStateChange: Ref<Array<ResourcefulRecordChangeStateErrorBagHookHandler>>,\n callOnSubmitCountStateChange: Ref<Array<ResourcefulRecordChangeStateSubmitCountHookHandler>>\n) => {\n const hooks = new Hooks<ResourcefulRecordFormHookableEvents>()\n Object.entries(baseResourcefulEmits).forEach(([event]) => {\n const e: keyof ResourcefulRecordFormEmits = event as keyof ResourcefulRecordFormEmits\n function doEmit(...args: any[]) {\n emit(e, ...args)\n }\n hooks.add(e, doEmit)\n })\n watch(\n callOnPrevented,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('prevented', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('prevented', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmitted,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('submitted', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('submitted', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSuccess,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('success', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('success', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnFailure,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('failure', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('failure', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnException,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('exception', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('exception', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmittingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:submitting', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:submitting', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnValidatingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:validating', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:validating', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnTouchedStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:touched', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:touched', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnDirtyStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:dirty', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:dirty', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnValidStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:valid', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:valid', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnPendingStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:pending', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:pending', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnErrorsStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:errors', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:errors', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnErrorBagStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:errorBag', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:errorBag', tuple)\n })\n }\n },\n { immediate: true }\n )\n watch(\n callOnSubmitCountStateChange,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((tuple) => {\n hooks.remove('state:submitCount', tuple)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((tuple) => {\n hooks.add('state:submitCount', tuple)\n })\n }\n },\n { immediate: true }\n )\n const onState = async (formState: string | null | undefined) => {\n const runner = hooks.runner('state')\n try {\n await runner.run(formState)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, formState)\n }\n }\n const onUpdateState = async (formState: string | null | undefined) => {\n const runner = hooks.runner('update:state')\n try {\n await runner.run(formState)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, formState)\n }\n }\n const onError = async (error: unknown) => {\n const runner = hooks.runner('error')\n try {\n await runner.run(error)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, error)\n }\n }\n const onPrevented = async (values: Record<string, any>, error: ValidationError) => {\n const runner = hooks.runner('prevented')\n try {\n await runner.run(values, error)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, values, error)\n }\n }\n const onSubmitted = async (values: Record<string, any>) => {\n const runner = hooks.runner('submitted')\n try {\n await runner.run(values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, values)\n }\n }\n const onSuccess = async (\n response: ResourceResourcefulRecordResponse,\n values: Record<string, any>\n ) => {\n const runner = hooks.runner('success')\n try {\n await runner.run(response, values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, response, values)\n }\n }\n const onFailure = async (response: ResourcefulHttpResponse, values: Record<string, any>) => {\n const runner = hooks.runner('failure')\n try {\n await runner.run(response, values)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, response, values)\n }\n }\n const onException = async (exception: unknown) => {\n const runner = hooks.runner('exception')\n try {\n await runner.run(exception)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, exception)\n }\n }\n const onStateSubmitting = async (is: boolean) => {\n const runner = hooks.runner('state:submitting')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateValidating = async (is: boolean) => {\n const runner = hooks.runner('state:validating')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateTouched = async (is: boolean) => {\n const runner = hooks.runner('state:touched')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateDirty = async (is: boolean) => {\n const runner = hooks.runner('state:dirty')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateValid = async (is: boolean) => {\n const runner = hooks.runner('state:valid')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStatePending = async (is: boolean) => {\n const runner = hooks.runner('state:pending')\n try {\n await runner.run(is)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, is)\n }\n }\n const onStateErrors = async (errors: Record<string, string | undefined>) => {\n const runner = hooks.runner('state:errors')\n try {\n await runner.run(errors)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, errors)\n }\n }\n const onStateErrorBag = async (errors: Partial<Record<string, string[]>>) => {\n const runner = hooks.runner('state:errorBag')\n try {\n await runner.run(errors)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, errors)\n }\n }\n const onStateSubmitCount = async (count: number) => {\n const runner = hooks.runner('state:submitCount')\n try {\n await runner.run(count)\n } catch (e) {\n const err = e instanceof Error ? e : null\n await runner.cleanup(err, count)\n }\n }\n return {\n onState,\n onUpdateState,\n onError,\n onPrevented,\n onSubmitted,\n onSuccess,\n onFailure,\n onException,\n onStateSubmitting,\n onStateValidating,\n onStateTouched,\n onStateDirty,\n onStateValid,\n onStatePending,\n onStateErrors,\n onStateErrorBag,\n onStateSubmitCount,\n }\n}\n\nexport type ResourcefulRecordHooks = ReturnType<typeof useResourcefulRecordFormHooks>\n\nexport const useResourcefulRecordSubmitHandler = (\n submissionPayloadModifiers: Ref<Array<ResourcefulRecordSubmissionMiddlewareFn>>,\n submissionHandler: Ref<ResourcefulSubmissionHandler>,\n onSuccess: ResourcefulRecordHooks['onSuccess'],\n onFailure: ResourcefulRecordHooks['onFailure'],\n onException: ResourcefulRecordHooks['onException'],\n onSubmitted: ResourcefulRecordHooks['onSubmitted']\n) => {\n const middleware = new Middleware<ResourcefulRecordSubmissionMiddlewareFn>()\n watch(\n submissionPayloadModifiers,\n (is, was) => {\n if (Array.isArray(was)) {\n was.forEach((mw) => {\n middleware.remove(mw)\n })\n }\n if (Array.isArray(is)) {\n is.forEach((mw) => {\n middleware.add(mw)\n })\n }\n },\n { immediate: true }\n )\n const handleSubmit = async (values: any) => {\n const ret = await middleware\n .runner()\n .errorHandler((err: unknown) => onException(err))\n .finalHandler(async () => submissionHandler.value(values, onSuccess, onFailure))\n .run(async (fn, next) => fn(values, next))\n onSubmitted(values)\n return ret\n }\n return handleSubmit\n}\n\nconst resourcefulRecordModelPropertySchemaDefaultValue = (\n schema: ResourcefulRecordModelPropertySchema\n) => {\n if ('default' in schema) {\n return schema.default\n }\n const fieldType = typeAndFormatToResourcefulFieldType(schema.type, schema.format)\n switch (fieldType) {\n case 'string':\n return ''\n case 'date':\n case 'dateTime':\n case 'binary':\n case 'number':\n case 'integer':\n case 'bigint':\n case 'unsignedInteger':\n case 'boolean':\n return null\n default:\n return undefined\n }\n}\n\nexport const useResourcefulRecordModelSchemaDefaultInitialValues = (\n model: MaybeRef<ResourcefulRecordModelSchema>\n) => {\n const resolvedModelRef = computed(() => toValue(model))\n return computed(() =>\n Object.assign(\n {},\n ...Object.entries(resolvedModelRef.value).map(([key, schema]) => ({\n [key]: resourcefulRecordModelPropertySchemaDefaultValue(schema),\n }))\n )\n )\n}\n\nexport const fixFormSchemaForEnums = (\n initial: Ref<ObjectSchema>,\n model: Ref<ResourcefulRecordModelSchema>\n): ObjectSchema => {\n const needsFix = Object.values(model.value).some((schema) => {\n return (\n ('x-resourceful-relationship' in schema && schema['x-resourceful-relationship']) ||\n ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices']))\n )\n })\n if (!needsFix) {\n return initial.value\n }\n const keys =\n initial.value &&\n '$_terms' in initial.value &&\n initial.value.$_terms.keys &&\n Array.isArray(initial.value.$_terms.keys)\n ? initial.value.$_terms.keys.map(({ key }: { key: string; schema: Schema }) => key)\n : []\n return validator.object(\n Object.fromEntries(\n keys.map((key) => {\n const extracted = initial.value.extract(key)\n if (!extracted) {\n return [key, validator.any()]\n }\n const schema = model.value[key]\n if (!schema) {\n return [key, extracted]\n }\n if (schema['x-resourceful-relationship']) {\n if (Array.isArray(schema['x-resourceful-relationship'].choices)) {\n const opts = [...schema['x-resourceful-relationship'].choices.map((c) => c.value)]\n if (schema.nullable === true) {\n opts.unshift(null)\n }\n return [\n key,\n validator\n .any()\n .valid(...opts)\n .label(schema['x-resourceful-relationship'].title || key)\n .presence(schema.nullable === true ? 'optional' : 'required'),\n ]\n } else {\n if (schema.nullable !== true) {\n return [\n key,\n validator\n .any()\n .invalid(null, '')\n .label(schema['x-resourceful-relationship'].title || key)\n .required(),\n ]\n }\n return [\n key,\n validator\n .any()\n .label(schema['x-resourceful-relationship'].title || key)\n .presence(schema.nullable === true ? 'optional' : 'required'),\n ]\n }\n }\n if ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])) {\n const opts = [...schema['x-resourceful-choices'].map((c) => c.value)]\n if (schema.nullable === true) {\n opts.unshift(null)\n }\n return [key, validator.any().valid(...opts)]\n }\n return [key, extracted]\n })\n )\n )\n}\n\nexport const fixFieldLabelsForEnums = (\n initial: Ref<Record<string, string>>,\n model: Ref<ResourcefulRecordModelSchema>\n): Record<string, string> => {\n return stripUndefinedValuesFromObject(\n Object.fromEntries(\n Object.entries(model.value).map(([key, schema]) => {\n if (initial.value[key]) {\n return [key, initial.value[key]]\n }\n if ('x-resourceful-relationship' in schema && schema['x-resourceful-relationship']) {\n return [key, schema['x-resourceful-relationship'].title || key]\n }\n return [key, undefined]\n })\n )\n ) as Record<string, string>\n}\n","import { useDefaults } from 'vuetify'\nimport { DevErrorAlert } from '../fields/common'\nimport { useScopedDisplay } from '../ux/display'\nimport { useValidation } from '../ux/validation'\nimport { E_FORM_NOT_RENDERED } from './exceptions'\nimport { VSheet } from 'vuetify/components/VSheet'\nimport { isResourcefulRecordBusConsumer } from './types'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { makeBaseResourcefulRecordProps, baseResourcefulEmits } from './props'\nimport { getCurrentInstanceName } from '@nhtio/vuetifiable/util/getCurrentInstance'\nimport { defineComponent, h, toRefs, computed, ref, watch, provide, inject, nextTick } from 'vue'\nimport {\n ResourcefulRecordScopedDisplaySymbol,\n ResourcefulRecordFormScopedDisplaySymbol,\n} from '../symbols'\nimport {\n fixFormSchemaForEnums,\n fixFieldLabelsForEnums,\n useResourcefulRecordFormState,\n useResourcefulRecordFormHooks,\n useResourcefulRecordSubmitHandler,\n useResourcefulRecordModelSchemaDefaultInitialValues,\n} from './utils'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ValidationError } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulRecordFormComponentSlots,\n ResourcefulRecordFormWithValidationDefaultSlotProps,\n} from './types'\n\nexport const ResourcefulRecordForm = defineComponent({\n name: 'ResourcefulRecordForm',\n props: makeBaseResourcefulRecordProps(),\n emits: baseResourcefulEmits,\n slots: Object as ResourcefulRecordFormComponentSlots,\n setup(props, { slots, emit }) {\n const formRef = ref<VSheet | null>(null)\n const scopedDisplay = inject(ResourcefulRecordScopedDisplaySymbol) || useScopedDisplay(formRef)\n provide(ResourcefulRecordFormScopedDisplaySymbol, scopedDisplay)\n const {\n state,\n mode,\n initialValues,\n additionalMessages,\n overrideMessages,\n callOnPrevented,\n callOnSubmitted,\n callOnSuccess,\n callOnFailure,\n callOnException,\n callOnSubmittingStateChange,\n callOnValidatingStateChange,\n callOnTouchedStateChange,\n callOnDirtyStateChange,\n callOnValidStateChange,\n callOnPendingStateChange,\n callOnErrorsStateChange,\n callOnErrorBagStateChange,\n callOnSubmitCountStateChange,\n fieldLabels: initialFieldLabels,\n advanced,\n specificFieldOptions,\n bus,\n schema: initialSchema,\n model,\n submissionPayloadModifiers,\n submissionHandler,\n validationOptions,\n fireAlertFn,\n doRefreshChoices,\n } = toRefs(props)\n const schema = computed(() => fixFormSchemaForEnums(initialSchema, model))\n const fieldLabels = computed(() => fixFieldLabelsForEnums(initialFieldLabels, model))\n const defaultCommonFieldOptions = useDefaults(\n props.commonFieldOptions,\n 'ResourcefulRecordFormField'\n )\n const commonFieldOptions = computed(() => ({\n ...defaultCommonFieldOptions,\n density: scopedDisplay.xs\n ? ('compact' as const)\n : scopedDisplay.lgAndUp\n ? ('default' as const)\n : ('comfortable' as const),\n }))\n const fire: FireAlertFn = (...args) =>\n fireAlertFn.value\n ? fireAlertFn.value(...args)\n : Promise.resolve({\n isConfirmed: false,\n isDenied: false,\n isCanceled: true,\n value: null,\n })\n const debug = computed(() => advanced.value?.debug || false)\n const {\n onState,\n onUpdateState,\n onError,\n onPrevented,\n onSubmitted,\n onSuccess,\n onFailure,\n // NOTE: onException specifically handles errors during submission middleware chain processing\n onException,\n onStateSubmitting,\n onStateValidating,\n onStateTouched,\n onStateDirty,\n onStateValid,\n onStatePending,\n onStateErrors,\n onStateErrorBag,\n onStateSubmitCount,\n } = useResourcefulRecordFormHooks(\n props,\n emit as any,\n callOnPrevented,\n callOnSubmitted,\n callOnSuccess,\n callOnFailure,\n callOnException,\n callOnSubmittingStateChange,\n callOnValidatingStateChange,\n callOnTouchedStateChange,\n callOnDirtyStateChange,\n callOnValidStateChange,\n callOnPendingStateChange,\n callOnErrorsStateChange,\n callOnErrorBagStateChange,\n callOnSubmitCountStateChange\n )\n const handleSubmit = useResourcefulRecordSubmitHandler(\n submissionPayloadModifiers,\n submissionHandler,\n onSuccess,\n onFailure,\n onException,\n onSubmitted\n )\n const defaultInitialValuesFromModel = useResourcefulRecordModelSchemaDefaultInitialValues(model)\n const computedInitialValues = computed(() =>\n Object.fromEntries(\n Object.entries({\n ...defaultInitialValuesFromModel.value,\n ...(initialValues.value || {}),\n }).filter(([prop]) => {\n const propSchema = model.value[prop]\n if (!propSchema) return false\n switch (mode.value) {\n case 'create':\n return (\n !propSchema['x-resourceful-autocreated'] && !propSchema['x-resourceful-primary-key']\n )\n\n case 'update':\n return (\n !propSchema['x-resourceful-autoupdated'] && !propSchema['x-resourceful-immutable']\n )\n default:\n return true\n }\n })\n )\n )\n const {\n validationSchema,\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n formValues,\n doFormSubmit,\n doResetForm: originalDoResetForm,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n formFieldBindings,\n formBindings,\n useField,\n forceUpdateSchema,\n forceUpdateInitialValues,\n } = useValidation(\n schema,\n computedInitialValues,\n handleSubmit,\n additionalMessages,\n overrideMessages,\n validationOptions,\n getCurrentInstanceName() || 'ResourcefulRecordForm',\n debug,\n onPrevented as (values: unknown, error: ValidationError) => void | Promise<void>,\n fieldLabels,\n commonFieldOptions,\n specificFieldOptions\n )\n const doResetForm = () => {\n originalDoResetForm(\n {\n errors: {},\n touched: Object.fromEntries(\n Object.keys(computedInitialValues.value).map((key) => [key, false])\n ),\n submitCount: 0,\n },\n { force: true }\n )\n nextTick(() => setTouched(false))\n }\n const slotPropBindings = computed<ResourcefulRecordFormWithValidationDefaultSlotProps>(\n () =>\n ({\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n doResetForm,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n formFieldBindings,\n useField,\n formValues,\n doRefreshChoices: doRefreshChoices.value,\n }) satisfies ResourcefulRecordFormWithValidationDefaultSlotProps\n )\n useResourcefulRecordFormState(state, onState, onUpdateState, formValues, setValues)\n watch(\n bus,\n (is: unknown, was: unknown) => {\n if (isResourcefulRecordBusConsumer(was)) {\n was.off('doFormSubmit', doFormSubmit)\n was.off('doResetForm', doResetForm)\n was.off('setFieldValue', setFieldValue)\n was.off('setValues', setValues)\n was.off('setFieldTouched', setFieldTouched)\n was.off('setTouched', setTouched)\n was.off('validate', validate)\n was.off('validateField', validateField)\n was.off('forceUpdateSchema', forceUpdateSchema)\n was.off('forceUpdateInitialValues', forceUpdateInitialValues)\n }\n if (isResourcefulRecordBusConsumer(is)) {\n is.on('doFormSubmit', doFormSubmit)\n is.on('doResetForm', doResetForm)\n is.on('setFieldValue', setFieldValue)\n is.on('setValues', setValues)\n is.on('setFieldTouched', setFieldTouched)\n is.on('setTouched', setTouched)\n is.on('validate', validate)\n is.on('validateField', validateField)\n is.on('forceUpdateSchema', forceUpdateSchema)\n is.on('forceUpdateInitialValues', forceUpdateInitialValues)\n }\n },\n { immediate: true }\n )\n const doIfFormReady = (callback: (component: VSheet, form: HTMLFormElement) => void) => {\n if (formRef.value && formRef.value.$el) {\n const el = formRef.value.$el as HTMLFormElement\n callback(formRef.value, el)\n } else {\n onError(new E_FORM_NOT_RENDERED())\n }\n }\n useRender(() =>\n h(VSheet, { ref: formRef, tag: 'form', color: 'transparent', ...formBindings.value }, () => [\n h('input', {\n 'style': { display: 'none' },\n 'type': 'submit',\n 'aria-hidden': 'true',\n 'tabindex': -1,\n }),\n slots.default\n ? slots.default(\n slotPropBindings.value,\n scopedDisplay,\n model.value,\n schema.value,\n mode.value,\n fire,\n doRefreshChoices.value\n )\n : h(DevErrorAlert),\n ])\n )\n const submit = () => {\n doIfFormReady((_, form) => {\n form.requestSubmit()\n })\n }\n const reset = () => {\n doIfFormReady((_, form) => {\n form.reset()\n })\n }\n watch(formErrors, onStateErrors)\n watch(formErrorBag, onStateErrorBag)\n watch(formIsSubmitting, onStateSubmitting)\n watch(formIsValidating, onStateValidating)\n watch(formIsTouched, onStateTouched)\n watch(formIsDirty, onStateDirty)\n watch(formIsValid, onStateValid)\n watch(formIsPending, onStatePending)\n watch(formSubmitCount, onStateSubmitCount)\n return {\n formErrors,\n formErrorBag,\n formIsSubmitting,\n formIsValidating,\n formIsTouched,\n formIsDirty,\n formIsValid,\n formIsPending,\n formSubmitCount,\n formValues,\n submit,\n reset,\n setFieldValue,\n setValues,\n setFieldTouched,\n setTouched,\n validate,\n validateField,\n validationSchema,\n }\n },\n})\n\nexport type ResourcefulRecordForm = InstanceType<typeof ResourcefulRecordForm> &\n ComponentPublicInstance\n"],"names":["ResourcefulRecordViewMode","ResourcefulRecordBusConsumer","#emitter","emitter","event","listener","ctx","isResourcefulRecordBusConsumer","value","ResourcefulRecordBusEmitter","TypedEventEmitter","resourcefulRecordActionCommonSchema","joi","resourcefulRecordUrlActionSchema","resourcefulRecordFunctionActionSchema","isResourcefulRecordUrlAction","error","isResourcefulRecordFunctionAction","resourcefulRecordActionArraySchema","isResourcefulRecordActionArray","VCardActions","genericComponent","makeComponentProps","props","slots","provideDefaults","useRender","_a","createVNode","makeVCardSubtitleProps","propsFactory","makeTagProps","VCardSubtitle","VCardTitle","createSimpleFunctional","makeCardItemProps","IconValue","makeDensityProps","VCardItem","hasPrependMedia","hasPrepend","hasAppendMedia","hasAppend","hasTitle","hasSubtitle","VDefaultsProvider","Fragment","VAvatar","VIcon","_a2","toDisplayString","makeVCardTextProps","VCardText","makeVCardProps","makeBorderProps","makeDimensionProps","makeElevationProps","makeLoaderProps","makeLocationProps","makePositionProps","makeRoundedProps","makeRouterProps","makeThemeProps","makeVariantProps","Ripple","attrs","themeClasses","provideTheme","borderClasses","useBorder","colorClasses","colorStyles","variantClasses","useVariant","densityClasses","useDensity","dimensionStyles","useDimension","elevationClasses","useElevation","loaderClasses","useLoader","locationStyles","useLocation","positionClasses","usePosition","roundedClasses","useRounded","link","useLink","isLink","isClickable","Tag","hasHeader","hasImage","hasCardItem","hasText","withDirectives","mergeProps","VImg","LoaderSlot","genOverlays","resolveDirective","makeResourcefulRecordAdvancedOptions","resourcefulRecordAdvancedOptionsDefaults","propsAndDefaultsFactory","makeResourcefulRecordRouteOptions","resourcefulRecordRouteOptionsDefaults","makeResourcefulRecordCommonFieldProps","resourcefulRecordCommonFieldPropsDefaults","pick","makeCommonResourcefulFieldProps","resourcefulRecordRouteOptionsSchema","resourcefulRecordRouteOptionsValidator","makeResourcefulRecordNavOptions","resourcefulRecordNavOptionsDefaults","routeLocationAsRelativeGenericSchema","routeLocationAsPathGenericSchema","resourcefulRecordNavOptionsSchema","resourcefulRecordNavOptionsValidator","rawResourcefulEmits","state","values","isResourcefulRecordPreventedEvent","isResourcefulRecordSubmittedEvent","response","isResourcefulRecordSuccessEvent","isResourcefulRecordFailureEvent","exception","is","errors","isObject","k","v","item","count","makeBaseResourcefulRecordProps","baseResourcefulEmits","propsAndEmitsFactory","vCardDefaults","getDefaultsForPropFactory","rawResourcefulRecordEmits","progress","isResourcefulRecordProcessingEvent","makeResourcefulRecordProps","resourcefulRecordEmits","defaultControlButtonProps","defaultControlButtonBarOptionsProps","defaultControlButtonOverrideProps","omit","m","s","w","e","t","n","a","h","r","g","f","u","l","p","d","o","H","y","_","c","i","A","dot","dotCtor","useControlButtonBaseBindings","controlButtonBarOptions","controlButtonOptions","isUnactionable","computed","stripUndefinedValuesFromObject","evaluateActionIsActionable","mode","record","can","useEvaluateActionIsActionable","useCrudActionButtonBindings","route","callback","controlButtonDefaults","controlButtonOverrides","controlButtonBaseBindings","processActionForRecord","action","onSuccess","onUndetermined","onFailure","onComplete","onException","result","useAdditionalActionButtonBindings","actions","useControlBarButtonBindings","indexButtonBindings","createButtonBindings","readButtonBindings","updateButtonBindings","deleteButtonBindings","additionalButtonBindings","b","bindings","ControlButton","useControlBarBaseBindings","useResourcefulRecordFloatingControls","commitButtonOverrides","refreshButtonOverrides","resetButtonOverrides","metaLoading","recordLoading","commitLoading","inErrorState","doFormReset","doRecordRefresh","doFormSubmit","useI18n","commitButtonBindings","SvgIcon","mdiContentSave","refreshButtonBindings","mdiRefresh","resetButtonBindings","mdiFileUndo","useResourcefulPassthroughHook","callOnKey","emit","options","warn","camel","kebab","getCamelAndMaybeKebabPropKeysFor","doHook","args","callOns","callHook","debounce","throttle","nextTick","rslv","stateToFormStateModelValue","onError","decoded","decode","E_DECODED_STATE_MODEL_INCOMPATIBLE","E_FAILED_TO_DECODE_STATE_MODEL","getFormValueUpdates","formStateModelValue","currentFormValues","was","differences","diff","isSame","encode","E_FAILED_TO_COMPARE_STATE_MODEL_VALUES","useResourcefulRecordFormState","onState","onUpdateState","formValues","setValues","shallowRef","onChangeToState","triggerRef","toUpdate","onChangeToFormValues","encoded","watch","useResourcefulRecordFormHooks","_props","callOnPrevented","callOnSubmitted","callOnSuccess","callOnFailure","callOnException","callOnSubmittingStateChange","callOnValidatingStateChange","callOnTouchedStateChange","callOnDirtyStateChange","callOnValidStateChange","callOnPendingStateChange","callOnErrorsStateChange","callOnErrorBagStateChange","callOnSubmitCountStateChange","hooks","Hooks","doEmit","tuple","formState","runner","err","useResourcefulRecordSubmitHandler","submissionPayloadModifiers","submissionHandler","onSubmitted","middleware","Middleware","mw","ret","fn","next","resourcefulRecordModelPropertySchemaDefaultValue","schema","typeAndFormatToResourcefulFieldType","useResourcefulRecordModelSchemaDefaultInitialValues","model","resolvedModelRef","toValue","key","fixFormSchemaForEnums","initial","keys","validator","extracted","opts","fixFieldLabelsForEnums","ResourcefulRecordForm","defineComponent","formRef","ref","scopedDisplay","inject","ResourcefulRecordScopedDisplaySymbol","useScopedDisplay","provide","ResourcefulRecordFormScopedDisplaySymbol","initialValues","additionalMessages","overrideMessages","initialFieldLabels","advanced","specificFieldOptions","bus","initialSchema","validationOptions","fireAlertFn","doRefreshChoices","toRefs","fieldLabels","defaultCommonFieldOptions","useDefaults","commonFieldOptions","fire","debug","onPrevented","onStateSubmitting","onStateValidating","onStateTouched","onStateDirty","onStateValid","onStatePending","onStateErrors","onStateErrorBag","onStateSubmitCount","handleSubmit","defaultInitialValuesFromModel","computedInitialValues","prop","propSchema","validationSchema","formErrors","formErrorBag","formIsSubmitting","formIsValidating","formIsTouched","formIsDirty","formIsValid","formIsPending","formSubmitCount","originalDoResetForm","setFieldValue","setFieldTouched","setTouched","validate","validateField","formFieldBindings","formBindings","useField","forceUpdateSchema","forceUpdateInitialValues","useValidation","getCurrentInstanceName","doResetForm","slotPropBindings","doIfFormReady","el","E_FORM_NOT_RENDERED","VSheet","DevErrorAlert","submit","form","reset"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,8]}