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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/{VBtn-DhfYEt9V.mjs → VBtn-C_58hP1L.mjs} +7 -7
  2. package/{VBtn-DhfYEt9V.mjs.map → VBtn-C_58hP1L.mjs.map} +1 -1
  3. package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-CKxKmuCC.mjs} +165 -165
  4. package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-CKxKmuCC.mjs.map} +1 -1
  5. package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CjqRy_Xt.mjs} +40 -40
  6. package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CjqRy_Xt.mjs.map} +1 -1
  7. package/{VHover-DLvOmsjv.mjs → VHover-D-sydp3P.mjs} +3 -3
  8. package/{VHover-DLvOmsjv.mjs.map → VHover-D-sydp3P.mjs.map} +1 -1
  9. package/{VListItem-LNaoM8S4.mjs → VListItem-DNNkp2dc.mjs} +55 -55
  10. package/{VListItem-LNaoM8S4.mjs.map → VListItem-DNNkp2dc.mjs.map} +1 -1
  11. package/{VMenu-9rTbTKtH.mjs → VMenu-oGwvgLV1.mjs} +28 -28
  12. package/{VMenu-9rTbTKtH.mjs.map → VMenu-oGwvgLV1.mjs.map} +1 -1
  13. package/{VPicker-BGuRD0KW.mjs → VPicker-EfRj-X6U.mjs} +4 -4
  14. package/{VPicker-BGuRD0KW.mjs.map → VPicker-EfRj-X6U.mjs.map} +1 -1
  15. package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-CDf6CGwX.mjs} +21 -21
  16. package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-CDf6CGwX.mjs.map} +1 -1
  17. package/{VRow-DaLdbIGw.mjs → VRow-Da2fdUPu.mjs} +17 -17
  18. package/{VRow-DaLdbIGw.mjs.map → VRow-Da2fdUPu.mjs.map} +1 -1
  19. package/{VSheet-DnIfs-1c.mjs → VSheet-DdygPJlo.mjs} +13 -13
  20. package/{VSheet-DnIfs-1c.mjs.map → VSheet-DdygPJlo.mjs.map} +1 -1
  21. package/{actions-8bWGsB-p.mjs → actions-5gxlWcWt.mjs} +14 -14
  22. package/{actions-8bWGsB-p.mjs.map → actions-5gxlWcWt.mjs.map} +1 -1
  23. package/{alert-IW1AIWZw.mjs → alert-C6Dxm9jn.mjs} +13 -13
  24. package/{alert-IW1AIWZw.mjs.map → alert-C6Dxm9jn.mjs.map} +1 -1
  25. package/{bigint-Jmfa2L4S.mjs → bigint-CqXe_geE.mjs} +6 -6
  26. package/{bigint-Jmfa2L4S.mjs.map → bigint-CqXe_geE.mjs.map} +1 -1
  27. package/{boolean-BEY7eBxf.mjs → boolean-BaevWx3k.mjs} +39 -39
  28. package/{boolean-BEY7eBxf.mjs.map → boolean-BaevWx3k.mjs.map} +1 -1
  29. package/{clipboard-BoKd7mFG.mjs → clipboard-CGd9vMCV.mjs} +51 -51
  30. package/{clipboard-BoKd7mFG.mjs.map → clipboard-CGd9vMCV.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-DrsZRUoj.mjs} +8881 -8880
  34. package/common-DrsZRUoj.mjs.map +1 -0
  35. package/common.css +1 -1
  36. package/{component-CjPpW_A2.mjs → component-DhEJuSE6.mjs} +2 -2
  37. package/{component-CjPpW_A2.mjs.map → component-DhEJuSE6.mjs.map} +1 -1
  38. package/components/autorefresh_controller.mjs +1 -1
  39. package/components/control_button.mjs +1 -1
  40. package/components/control_button_bar.mjs +2 -2
  41. package/components/control_menu.mjs +1 -1
  42. package/components/custom_field.mjs +1 -1
  43. package/components/exporter.mjs +1 -1
  44. package/components/fields/bigint.mjs +1 -1
  45. package/components/fields/boolean.mjs +1 -1
  46. package/components/fields/date.mjs +1 -1
  47. package/components/fields/date_time.mjs +1 -1
  48. package/components/fields/enum.mjs +1 -1
  49. package/components/fields/integer.mjs +1 -1
  50. package/components/fields/number.mjs +1 -1
  51. package/components/fields/string.mjs +1 -1
  52. package/components/fields/unsigned_integer.mjs +1 -1
  53. package/components/fields.mjs +9 -9
  54. package/components/form_with_validation.mjs +1 -1
  55. package/components/resourceful_alerter.mjs +1 -1
  56. package/components/resourceful_index.mjs +1 -1
  57. package/components/resourceful_record.mjs +2 -2
  58. package/components/resourceful_record_default_form.mjs +1 -1
  59. package/components/resourceful_record_form.mjs +1 -1
  60. package/components/sortable.mjs +1 -1
  61. package/components/svg_icon.mjs +1 -1
  62. package/components/timezone_picker.mjs +1 -1
  63. package/components.mjs +23 -23
  64. package/composables.mjs +8 -8
  65. package/{console-CRXioSFP.mjs → console-Dgoi3FwV.mjs} +2 -2
  66. package/{console-CRXioSFP.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
  67. package/{custom-Y1WJVKP9.mjs → custom-CXFDPB_N.mjs} +17 -17
  68. package/{custom-Y1WJVKP9.mjs.map → custom-CXFDPB_N.mjs.map} +1 -1
  69. package/{date-BxEeCNWD.mjs → date-BXNqToRH.mjs} +21 -21
  70. package/{date-BxEeCNWD.mjs.map → date-BXNqToRH.mjs.map} +1 -1
  71. package/{date_time-6kpv7eDF.mjs → date_time-DuRO8DS4.mjs} +299 -299
  72. package/{date_time-6kpv7eDF.mjs.map → date_time-DuRO8DS4.mjs.map} +1 -1
  73. package/{display-CO0pTIEs.mjs → display-BL-pquAI.mjs} +41 -41
  74. package/{display-CO0pTIEs.mjs.map → display-BL-pquAI.mjs.map} +1 -1
  75. package/{display-kAyhIPBH.mjs → display-DCHGPqrW.mjs} +7 -7
  76. package/{display-kAyhIPBH.mjs.map → display-DCHGPqrW.mjs.map} +1 -1
  77. package/{display-DvzWa1QO.mjs → display-TF26EjNQ.mjs} +40 -40
  78. package/{display-DvzWa1QO.mjs.map → display-TF26EjNQ.mjs.map} +1 -1
  79. package/{elevation-CMzO50xm.mjs → elevation-j7bb-vGU.mjs} +81 -81
  80. package/{elevation-CMzO50xm.mjs.map → elevation-j7bb-vGU.mjs.map} +1 -1
  81. package/{enum-noYU2Cqh.mjs → enum-CRgh6TfR.mjs} +22 -22
  82. package/{enum-noYU2Cqh.mjs.map → enum-CRgh6TfR.mjs.map} +1 -1
  83. package/factories.mjs +1 -1
  84. package/{field_composer-DpJx0Oz1.mjs → field_composer-CjKCvP50.mjs} +7 -7
  85. package/{field_composer-DpJx0Oz1.mjs.map → field_composer-CjKCvP50.mjs.map} +1 -1
  86. package/{form-CDLcDPyU.mjs → form-CFjPqvRf.mjs} +45 -45
  87. package/{form-CDLcDPyU.mjs.map → form-CFjPqvRf.mjs.map} +1 -1
  88. package/{guards-B99p3BPj.mjs → guards-Cby4QwzY.mjs} +2 -2
  89. package/{guards-B99p3BPj.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
  90. package/guards.mjs +4 -4
  91. package/helpers.mjs +6 -6
  92. package/{index-bXmNb9jX.mjs → index-B8OnsqN1.mjs} +10 -10
  93. package/{index-bXmNb9jX.mjs.map → index-B8OnsqN1.mjs.map} +1 -1
  94. package/{index-BaWthszI.mjs → index-C-PCfO1S.mjs} +2 -2
  95. package/{index-BaWthszI.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
  96. package/{index-C9UuBVyI.mjs → index-CZg-HOo9.mjs} +12 -12
  97. package/{index-C9UuBVyI.mjs.map → index-CZg-HOo9.mjs.map} +1 -1
  98. package/{index-B2rKM3mR.mjs → index-ChVCZ8iE.mjs} +21 -21
  99. package/{index-B2rKM3mR.mjs.map → index-ChVCZ8iE.mjs.map} +1 -1
  100. package/{index-CzI9mHIx.mjs → index-Cou5qTHe.mjs} +13 -13
  101. package/{index-CzI9mHIx.mjs.map → index-Cou5qTHe.mjs.map} +1 -1
  102. package/{index-Bi050X9r.mjs → index-DM8E6faO.mjs} +8 -8
  103. package/{index-Bi050X9r.mjs.map → index-DM8E6faO.mjs.map} +1 -1
  104. package/{index-CIvylvfa.mjs → index-DSLt7-cJ.mjs} +43 -43
  105. package/{index-CIvylvfa.mjs.map → index-DSLt7-cJ.mjs.map} +1 -1
  106. package/{index-slHxe6b-.mjs → index-VpcXNOpn.mjs} +2 -2
  107. package/{index-slHxe6b-.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
  108. package/{index-BUpccfIz.mjs → index-fiZltUBs.mjs} +3 -3
  109. package/{index-BUpccfIz.mjs.map → index-fiZltUBs.mjs.map} +1 -1
  110. package/index.mjs +31 -31
  111. package/{integer-BIJ4_I8y.mjs → integer-Dy0xpFif.mjs} +5 -5
  112. package/{integer-BIJ4_I8y.mjs.map → integer-Dy0xpFif.mjs.map} +1 -1
  113. package/{mdi-CqMJqgQi.mjs → mdi-BQSh-ess.mjs} +54 -54
  114. package/{mdi-CqMJqgQi.mjs.map → mdi-BQSh-ess.mjs.map} +1 -1
  115. package/{number-z_LAINPM.mjs → number-DWCew87L.mjs} +101 -101
  116. package/{number-z_LAINPM.mjs.map → number-DWCew87L.mjs.map} +1 -1
  117. package/package.json +38 -38
  118. package/{position-Ai5XksAO.mjs → position-B9VPkbhU.mjs} +2 -2
  119. package/{position-Ai5XksAO.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
  120. package/{props-p4f5Pa5h.mjs → props-Cjpc9pre.mjs} +4 -4
  121. package/{props-p4f5Pa5h.mjs.map → props-Cjpc9pre.mjs.map} +1 -1
  122. package/{props-BYX22zcE.mjs → props-DQlQ6VDP.mjs} +6 -6
  123. package/{props-BYX22zcE.mjs.map → props-DQlQ6VDP.mjs.map} +1 -1
  124. package/{renderers-BKUvrrVm.mjs → renderers-hznWrh2D.mjs} +13 -13
  125. package/{renderers-BKUvrrVm.mjs.map → renderers-hznWrh2D.mjs.map} +1 -1
  126. package/{string-Dmr8SRMf.mjs → string-BTd_Gwx-.mjs} +136 -136
  127. package/{string-Dmr8SRMf.mjs.map → string-BTd_Gwx-.mjs.map} +1 -1
  128. package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-CfxxFKrO.mjs} +4 -4
  129. package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-CfxxFKrO.mjs.map} +1 -1
  130. package/useRender-CfNJA_8a.mjs +9 -0
  131. package/{useRender-BD1xw5zG.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
  132. package/{utils-DqXWb-4f.mjs → utils-D3ZGaTyv.mjs} +48 -48
  133. package/{utils-DqXWb-4f.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
  134. package/{validation-DS3tTSk5.mjs → validation-BobMyGeq.mjs} +4 -4
  135. package/{validation-DS3tTSk5.mjs.map → validation-BobMyGeq.mjs.map} +1 -1
  136. package/common-BeDAn4wu.mjs.map +0 -1
  137. package/useRender-BD1xw5zG.mjs +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"date_time-6kpv7eDF.mjs","sources":["../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/shared.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTab.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/directives/touch/index.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VWindow/VWindow.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabsWindow.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VWindow/VWindowItem.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabsWindowItem.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabs.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VCombobox/VCombobox.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/util.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePickerClock.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePickerControls.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePicker.js","../src/private/fields/date_time.ts"],"sourcesContent":["// Types\n\nexport const VTabsSymbol = Symbol.for('vuetify:v-tabs');\n//# sourceMappingURL=shared.js.map","import { Fragment as _Fragment, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.js\"; // Composables\nimport { useTextColor } from \"../../composables/color.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { VTabsSymbol } from \"./shared.js\";\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n sliderColor: String,\n hideSlider: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text'\n }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])\n}, 'VTab');\nexport const VTab = genericComponent()({\n name: 'VTab',\n props: makeVTabProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles\n } = useTextColor(() => props.sliderColor);\n const rootEl = ref();\n const sliderEl = ref();\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);\n function updateSlider(_ref2) {\n let {\n value\n } = _ref2;\n if (value) {\n const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');\n const nextEl = sliderEl.value;\n if (!prevEl || !nextEl) return;\n const color = getComputedStyle(prevEl).color;\n const prevBox = prevEl.getBoundingClientRect();\n const nextBox = nextEl.getBoundingClientRect();\n const xy = isHorizontal.value ? 'x' : 'y';\n const XY = isHorizontal.value ? 'X' : 'Y';\n const rightBottom = isHorizontal.value ? 'right' : 'bottom';\n const widthHeight = isHorizontal.value ? 'width' : 'height';\n const prevPos = prevBox[xy];\n const nextPos = nextBox[xy];\n const delta = prevPos > nextPos ? prevBox[rightBottom] - nextBox[rightBottom] : prevBox[xy] - nextBox[xy];\n const origin = Math.sign(delta) > 0 ? isHorizontal.value ? 'right' : 'bottom' : Math.sign(delta) < 0 ? isHorizontal.value ? 'left' : 'top' : 'center';\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight]);\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0;\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0;\n const sigma = 1.5;\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [`translate${XY}(${delta}px) scale${XY}(${initialScale})`, `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`, 'none'],\n transformOrigin: Array(3).fill(origin)\n }, {\n duration: 225,\n easing: standardEasing\n });\n }\n }\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(VBtn, _mergeProps({\n \"symbol\": VTabsSymbol,\n \"ref\": rootEl,\n \"class\": ['v-tab', props.class],\n \"style\": props.style,\n \"tabindex\": isSelected.value ? 0 : -1,\n \"role\": \"tab\",\n \"aria-selected\": String(isSelected.value),\n \"active\": false\n }, btnProps, attrs, {\n \"block\": props.fixed,\n \"maxWidth\": props.fixed ? 300 : undefined,\n \"onGroup:selected\": updateSlider\n }), {\n ...slots,\n default: () => _createElementVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createElementVNode(\"div\", {\n \"ref\": sliderEl,\n \"class\": _normalizeClass(['v-tab__slider', sliderColorClasses.value]),\n \"style\": _normalizeStyle(sliderColorStyles.value)\n }, null)])\n });\n });\n return forwardRefs({}, rootEl);\n }\n});\n//# sourceMappingURL=VTab.js.map","// Utilities\nimport { keys } from \"../../util/index.js\"; // Types\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end?.({\n originalEvent: event,\n ...wrapper\n });\n handleGesture(wrapper);\n}\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction createHandlers() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\nfunction mounted(el, binding) {\n const value = binding.value;\n const target = value?.parent ? el.parentElement : el;\n const options = value?.options ?? {\n passive: true\n };\n const uid = binding.instance?.$.uid; // TODO: use custom uid generator\n\n if (!target || uid === undefined) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = target._touchHandlers ?? Object.create(null);\n target._touchHandlers[uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unmounted(el, binding) {\n const target = binding.value?.parent ? el.parentElement : el;\n const uid = binding.instance?.$.uid;\n if (!target?._touchHandlers || uid === undefined) return;\n const handlers = target._touchHandlers[uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[uid];\n}\nexport const Touch = {\n mounted,\n unmounted\n};\nexport default Touch;\n//# sourceMappingURL=index.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VWindow.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.js\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { useGroup } from \"../../composables/group.js\";\nimport { useLocale, useRtl } from \"../../composables/locale.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Directives\nimport vTouch from \"../../directives/touch/index.js\"; // Utilities\nimport { computed, nextTick, provide, ref, shallowRef, toRef, watch } from 'vue';\nimport { convertToUnit, genericComponent, IN_BROWSER, PREFERS_REDUCED_MOTION, propsFactory, useRender } from \"../../util/index.js\";\nimport { getScrollParent } from \"../../util/getScrollParent.js\"; // Types\nexport const VWindowSymbol = Symbol.for('vuetify:v-window');\nexport const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object],\n default: '$next'\n },\n prevIcon: {\n type: [Boolean, String, Function, Object],\n default: '$prev'\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || v === 'hover'\n },\n verticalArrows: [Boolean, String],\n touch: {\n type: [Object, Boolean],\n default: undefined\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active'\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String],\n default: 'force'\n },\n crossfade: Boolean,\n transitionDuration: Number,\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VWindow');\nexport const VWindow = genericComponent()({\n name: 'VWindow',\n directives: {\n vTouch\n },\n props: makeVWindowProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isRtl\n } = useRtl();\n const {\n t\n } = useLocale();\n const group = useGroup(props, VWindowGroupSymbol);\n const rootRef = ref();\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);\n const isReversed = shallowRef(false);\n const transition = computed(() => {\n if (props.crossfade) {\n return 'v-window-crossfade-transition';\n }\n const axis = props.direction === 'vertical' ? 'y' : 'x';\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;\n const direction = reverse ? '-reverse' : '';\n return `v-window-${axis}${direction}-transition`;\n });\n const transitionCount = shallowRef(0);\n const transitionHeight = ref(undefined);\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id));\n });\n\n // Fix for https://github.com/vuetifyjs/vuetify/issues/18447\n watch(activeIndex, (newVal, oldVal) => {\n let scrollableParent;\n const savedScrollPosition = {\n left: 0,\n top: 0\n };\n if (IN_BROWSER && oldVal >= 0) {\n scrollableParent = getScrollParent(rootRef.value);\n savedScrollPosition.left = scrollableParent?.scrollLeft;\n savedScrollPosition.top = scrollableParent?.scrollTop;\n }\n const itemsLength = group.items.value.length;\n const lastIndex = itemsLength - 1;\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal;\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true;\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false;\n } else {\n isReversed.value = newVal < oldVal;\n }\n nextTick(() => {\n if (!IN_BROWSER || !scrollableParent) return;\n const currentScrollY = scrollableParent.scrollTop;\n if (currentScrollY !== savedScrollPosition.top) {\n scrollableParent.scrollTo({\n ...savedScrollPosition,\n behavior: 'instant'\n });\n }\n requestAnimationFrame(() => {\n if (!scrollableParent) return;\n const rafScrollY = scrollableParent.scrollTop;\n if (rafScrollY !== savedScrollPosition.top) {\n scrollableParent.scrollTo({\n ...savedScrollPosition,\n behavior: 'instant'\n });\n }\n });\n });\n }, {\n flush: 'sync'\n }); // Run synchronously before DOM updates\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef\n });\n const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0);\n const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);\n function prev() {\n canMoveBack.value && group.prev();\n }\n function next() {\n canMoveForward.value && group.next();\n }\n const arrows = computed(() => {\n const arrows = [];\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev')\n };\n arrows.push(canMoveBack.value ? slots.prev ? slots.prev({\n props: prevProps\n }) : _createVNode(VBtn, prevProps, null) : _createElementVNode(\"div\", null, null));\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next')\n };\n arrows.push(canMoveForward.value ? slots.next ? slots.next({\n props: nextProps\n }) : _createVNode(VBtn, nextProps, null) : _createElementVNode(\"div\", null, null));\n return arrows;\n });\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch;\n const options = {\n left: () => {\n isRtlReverse.value ? prev() : next();\n },\n right: () => {\n isRtlReverse.value ? next() : prev();\n },\n start: _ref2 => {\n let {\n originalEvent\n } = _ref2;\n originalEvent.stopPropagation();\n }\n };\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch)\n };\n });\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"ref\": rootRef,\n \"class\": _normalizeClass(['v-window', {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n 'v-window--vertical-arrows': !!props.verticalArrows,\n 'v-window--crossfade': !!props.crossfade\n }, themeClasses.value, props.class]),\n \"style\": _normalizeStyle([props.style, props.transitionDuration && !PREFERS_REDUCED_MOTION ? {\n '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms')\n } : undefined])\n }, {\n default: () => [_createElementVNode(\"div\", {\n \"class\": \"v-window__container\",\n \"style\": {\n height: transitionHeight.value\n }\n }, [slots.default?.({\n group\n }), props.showArrows !== false && _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-window__controls', {\n 'v-window__controls--left': props.verticalArrows === 'left' || props.verticalArrows === true\n }, {\n 'v-window__controls--right': props.verticalArrows === 'right'\n }])\n }, [arrows.value])]), slots.additional?.({\n group\n })]\n }), [[vTouch, touchOptions.value]]));\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VWindow.js.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.js\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nimport { VTabsSymbol } from \"./shared.js\";\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VTabsWindow');\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n props: makeVTabsWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VTabsSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VTabsWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindow.js.map","import { vShow as _vShow, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.js\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.js\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.js\";\nimport { MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vTouch from \"../../directives/touch/index.js\"; // Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nimport { VWindowGroupSymbol, VWindowSymbol } from \"./VWindow.js\";\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps()\n}, 'VWindowItem');\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n directives: {\n vTouch\n },\n props: makeVWindowItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const window = inject(VWindowSymbol);\n const groupItem = useGroupItem(props, VWindowGroupSymbol);\n const {\n isBooted\n } = useSsrBoot();\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');\n const isTransitioning = shallowRef(false);\n const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));\n function onAfterTransition() {\n if (!isTransitioning.value || !window) {\n return;\n }\n\n // Finalize transition state.\n isTransitioning.value = false;\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1;\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined;\n }\n }\n }\n function onBeforeTransition() {\n if (isTransitioning.value || !window) {\n return;\n }\n\n // Initialize transition state here.\n isTransitioning.value = true;\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);\n }\n window.transitionCount.value += 1;\n }\n function onTransitionCancelled() {\n onAfterTransition(); // This should have the same path as normal transition end.\n }\n function onEnterTransition(el) {\n if (!isTransitioning.value) {\n return;\n }\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return;\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight);\n });\n }\n const transition = computed(() => {\n const name = window.isReversed.value ? props.reverseTransition : props.transition;\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition\n };\n });\n const {\n hasContent\n } = useLazy(props, groupItem.isSelected);\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": transition.value,\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-window-item', groupItem.selectedClass.value, props.class]),\n \"style\": _normalizeStyle(props.style)\n }, [hasContent.value && slots.default?.()]), [[_vShow, groupItem.isSelected.value]])]\n }));\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VWindowItem.js.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VTabsWindowItem');\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n props: makeVTabsWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VTabsWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-tabs-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindowItem.js.map","import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTabs.css\";\n\n// Components\nimport { makeVTabProps, VTab } from \"./VTab.js\";\nimport { VTabsWindow } from \"./VTabsWindow.js\";\nimport { VTabsWindowItem } from \"./VTabsWindowItem.js\";\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.js\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { provideDefaults } from \"../../composables/defaults.js\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { makeTagProps } from \"../../composables/tag.js\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { VTabsSymbol } from \"./shared.js\";\nimport { convertToUnit, genericComponent, isObject, pick, propsFactory, useRender } from \"../../util/index.js\"; // Types\nfunction parseItems(items) {\n if (!items) return [];\n return items.map(item => {\n if (!isObject(item)) return {\n text: item,\n value: item\n };\n return item;\n });\n}\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String,\n default: 'start'\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined\n },\n hideSlider: Boolean,\n sliderColor: String,\n ...pick(makeVTabProps(), ['spaced']),\n ...makeVSlideGroupProps({\n mandatory: 'force',\n selectedClass: 'v-tab-item--selected'\n }),\n ...makeDensityProps(),\n ...makeTagProps()\n}, 'VTabs');\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n props: makeVTabsProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const items = computed(() => parseItems(props.items));\n const {\n densityClasses\n } = useDensity(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.bgColor);\n const {\n scopeId\n } = useScopeId();\n provideDefaults({\n VTab: {\n color: toRef(() => props.color),\n direction: toRef(() => props.direction),\n stacked: toRef(() => props.stacked),\n fixed: toRef(() => props.fixedTabs),\n sliderColor: toRef(() => props.sliderColor),\n hideSlider: toRef(() => props.hideSlider)\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n const hasWindow = !!(slots.window || props.items.length > 0);\n return _createElementVNode(_Fragment, null, [_createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked\n }, densityClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [{\n '--v-tabs-height': convertToUnit(props.height)\n }, backgroundColorStyles.value, props.style],\n \"role\": \"tablist\",\n \"symbol\": VTabsSymbol\n }, scopeId, attrs), {\n default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({\n item\n }) ?? _createVNode(VTab, _mergeProps(item, {\n \"key\": item.text,\n \"value\": item.value,\n \"spaced\": props.spaced\n }), {\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({\n item\n }) : undefined\n }))]\n }), hasWindow && _createVNode(VTabsWindow, _mergeProps({\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"key\": \"tabs-window\"\n }, scopeId), {\n default: () => [items.value.map(item => slots.item?.({\n item\n }) ?? _createVNode(VTabsWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.({\n item\n })\n })), slots.window?.()]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabs.js.map","import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\n// Styles\nimport \"./VCombobox.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.js\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.js\";\nimport { VChip } from \"../VChip/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VDivider } from \"../VDivider/index.js\";\nimport { VIcon } from \"../VIcon/index.js\";\nimport { VList, VListItem, VListSubheader } from \"../VList/index.js\";\nimport { VMenu } from \"../VMenu/index.js\";\nimport { makeSelectProps } from \"../VSelect/VSelect.js\";\nimport { VTextField } from \"../VTextField/index.js\";\nimport { makeVTextFieldProps } from \"../VTextField/VTextField.js\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.js\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.js\";\nimport { useTextColor } from \"../../composables/color.js\";\nimport { highlightResult, makeFilterProps, useFilter } from \"../../composables/filter.js\";\nimport { useForm } from \"../../composables/form.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { transformItem, useItems } from \"../../composables/list-items.js\";\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useMenuActivator } from \"../../composables/menuActivator.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, deepEqual, ensureValidVNode, escapeForRegex, genericComponent, IN_BROWSER, isComposingIgnoreKey, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.js\"; // Types\nexport const makeVComboboxProps = propsFactory({\n alwaysFilter: Boolean,\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n delimiters: Array,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps({\n hideNoData: true,\n returnObject: true\n }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon'])\n}, 'VCombobox');\nexport const VCombobox = genericComponent()({\n name: 'VCombobox',\n props: makeVComboboxProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:search': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const selectionIndex = shallowRef(-1);\n let cleared = false;\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(() => vTextFieldRef.value?.color);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const form = useForm(props);\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');\n const _searchLock = shallowRef(null);\n const search = computed({\n get: () => {\n return _search.value;\n },\n set: async val => {\n _search.value = val ?? '';\n if (val === null || val === '' && !props.multiple && !hasSelectionSlot.value) {\n model.value = [];\n } else if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)];\n nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));\n }\n if (val && props.multiple && props.delimiters?.length) {\n const signsToMatch = props.delimiters.map(escapeForRegex).join('|');\n const values = val.split(new RegExp(`(?:${signsToMatch})+`));\n if (values.length > 1) {\n for (let v of values) {\n v = v.trim();\n if (v) {\n select(transformItem(props, v));\n await nextTick();\n }\n }\n _search.value = '';\n }\n }\n if (!val) selectionIndex.value = -1;\n isPristine.value = !val;\n }\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;\n });\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => _searchLock.value ?? (props.alwaysFilter || !isPristine.value ? search.value : ''));\n const displayItems = computed(() => {\n if (props.hideSelected && _searchLock.value === null) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n if (v && menuDisabled.value) return;\n _menu.value = v;\n }\n });\n const {\n menuId,\n ariaExpanded,\n ariaControls,\n ariaLabel\n } = useMenuActivator(props, menu);\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => cleared = false);\n } else if (isFocused.value && !menu.value) {\n menu.value = true;\n }\n emit('update:search', value);\n });\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? '';\n }\n });\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n cleared = true;\n nextTick(() => cleared = false);\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e) || e.key === 'Backspace') {\n vTextFieldRef.value?.focus();\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown(e) {\n if (isComposingIgnoreKey(e) || form.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value?.selectionStart;\n const length = model.value.length;\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(filteredItems.value[0]);\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value), true, true);\n if (hasSelectionSlot.value) _search.value = '';\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n e.preventDefault();\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n return;\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value?.setSelectionRange(search.value.length, search.value.length);\n }\n } else if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value?.setSelectionRange(0, 0);\n }\n } else if (~selectionIndex.value && checkPrintable(e)) {\n selectionIndex.value = -1;\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n vTextFieldRef.value?.focus();\n }\n isPristine.value = true;\n _searchLock.value = null;\n }\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let keepMenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n if ((!isPristine.value || props.alwaysFilter) && _search.value) {\n _searchLock.value = _search.value;\n }\n _search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = keepMenu;\n isPristine.value = true;\n });\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return;\n selectionIndex.value = -1;\n menu.value = false;\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value));\n return;\n }\n if (!hasSelectionSlot.value) return;\n if (model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) {\n _search.value = '';\n } else {\n select(transformItem(props, search.value));\n }\n }\n });\n watch(menu, val => {\n if (!props.hideSelected && val && model.value.length && isPristine.value) {\n const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n if (val) _searchLock.value = null;\n });\n watch(items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": $event => search.value = $event,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-combobox', {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!hasSelectionSlot.value,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true\n }, props.class],\n \"style\": props.style,\n \"readonly\": form.isReadonly.value,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown,\n \"aria-expanded\": ariaExpanded.value,\n \"aria-controls\": ariaControls.value\n }), {\n ...slots,\n default: () => _createElementVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"id\": menuId.value,\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-combobox__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"filterable\": true,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"selectable\": true,\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"key\": \"no-data\",\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value,\n \"itemKey\": \"value\"\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: item.value,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n if (item.type === 'divider') {\n return slots.divider?.({\n props: item.raw,\n index\n }) ?? _createVNode(VDivider, _mergeProps(item.props, {\n \"key\": `divider-${index}`\n }), null);\n }\n if (item.type === 'subheader') {\n return slots.subheader?.({\n props: item.raw,\n index\n }) ?? _createVNode(VListSubheader, _mergeProps(item.props, {\n \"key\": `subheader-${index}`\n }), null);\n }\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createElementVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\",\n \"onClick\": event => event.preventDefault()\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult('v-combobox', item.title, getMatches(item)?.title);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createElementVNode(\"div\", {\n \"key\": item.value,\n \"class\": _normalizeClass(['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]]),\n \"style\": _normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createElementVNode(\"span\", {\n \"class\": \"v-combobox__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createElementVNode(\"span\", {\n \"class\": \"v-combobox__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-combobox__menu-icon\",\n \"color\": vTextFieldRef.value?.fieldIconColor,\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": ariaLabel.value,\n \"title\": ariaLabel.value,\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VCombobox.js.map","export function pad(n) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n return String(n).padStart(length, '0');\n}\n//# sourceMappingURL=util.js.map","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerClock.css\";\n\n// Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.js\"; // Utilities\nimport { computed, ref, watch } from 'vue';\nimport { debounce, genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerClockProps = propsFactory({\n allowedValues: Function,\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n displayedValue: null,\n double: Boolean,\n format: {\n type: Function,\n default: val => val\n },\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0\n },\n step: {\n type: Number,\n default: 1\n },\n modelValue: {\n type: Number\n }\n}, 'VTimePickerClock');\nexport const VTimePickerClock = genericComponent()({\n name: 'VTimePickerClock',\n props: makeVTimePickerClockProps(),\n emits: {\n change: val => true,\n input: val => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const clockRef = ref(null);\n const innerClockRef = ref(null);\n const inputValue = ref(undefined);\n const isDragging = ref(false);\n const valueOnMouseDown = ref(null);\n const valueOnMouseUp = ref(null);\n const emitChangeDebounced = debounce(value => emit('change', value), 750);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(() => props.color);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const count = computed(() => props.max - props.min + 1);\n const roundCount = computed(() => props.double ? count.value / 2 : count.value);\n const degreesPerUnit = computed(() => 360 / roundCount.value);\n const degrees = computed(() => degreesPerUnit.value * Math.PI / 180);\n const displayedValue = computed(() => props.modelValue == null ? props.min : props.modelValue);\n const innerRadiusScale = computed(() => 0.62);\n const genChildren = computed(() => {\n const children = [];\n for (let value = props.min; value <= props.max; value = value + props.step) {\n children.push(value);\n }\n return children;\n });\n watch(() => props.modelValue, val => {\n inputValue.value = val;\n });\n function update(value) {\n if (inputValue.value !== value) {\n inputValue.value = value;\n }\n emit('input', value);\n }\n function isAllowed(value) {\n return !props.allowedValues || props.allowedValues(value);\n }\n function wheel(e) {\n if (!props.scrollable || props.disabled) return;\n e.preventDefault();\n const delta = Math.sign(-e.deltaY || 1);\n let value = displayedValue.value;\n do {\n value = value + delta;\n value = (value - props.min + count.value) % count.value + props.min;\n } while (!isAllowed(value) && value !== displayedValue.value);\n if (value !== props.displayedValue) {\n update(value);\n }\n emitChangeDebounced(value);\n }\n function isInner(value) {\n return props.double && value - props.min >= roundCount.value;\n }\n function handScale(value) {\n return isInner(value) ? innerRadiusScale.value : 1;\n }\n function getPosition(value) {\n const rotateRadians = props.rotate * Math.PI / 180;\n return {\n x: Math.sin((value - props.min) * degrees.value + rotateRadians) * handScale(value),\n y: -Math.cos((value - props.min) * degrees.value + rotateRadians) * handScale(value)\n };\n }\n function angleToValue(angle, insideClick) {\n const value = (Math.round(angle / degreesPerUnit.value) + (insideClick ? roundCount.value : 0)) % count.value + props.min;\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < 360 - degreesPerUnit.value / 2) return value;\n return insideClick ? props.max - roundCount.value + 1 : props.min;\n }\n function getTransform(i) {\n const {\n x,\n y\n } = getPosition(i);\n return {\n left: `${Math.round(50 + x * 50)}%`,\n top: `${Math.round(50 + y * 50)}%`\n };\n }\n function euclidean(p0, p1) {\n const dx = p1.x - p0.x;\n const dy = p1.y - p0.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n function angle(center, p1) {\n const value = 2 * Math.atan2(p1.y - center.y - euclidean(center, p1), p1.x - center.x);\n return Math.abs(value * 180 / Math.PI);\n }\n function setMouseDownValue(value) {\n if (valueOnMouseDown.value === null) {\n valueOnMouseDown.value = value;\n }\n valueOnMouseUp.value = value;\n update(value);\n }\n function onDragMove(e) {\n e.preventDefault();\n if (!isDragging.value && e.type !== 'click' || !clockRef.value) return;\n const {\n width,\n top,\n left\n } = clockRef.value?.getBoundingClientRect();\n const {\n width: innerWidth\n } = innerClockRef.value?.getBoundingClientRect() ?? {\n width: 0\n };\n const {\n clientX,\n clientY\n } = 'touches' in e ? e.touches[0] : e;\n const center = {\n x: width / 2,\n y: -width / 2\n };\n const coords = {\n x: clientX - left,\n y: top - clientY\n };\n const handAngle = Math.round(angle(center, coords) - props.rotate + 360) % 360;\n const insideClick = props.double && euclidean(center, coords) < (innerWidth + innerWidth * innerRadiusScale.value) / 4;\n const checksCount = Math.ceil(15 / degreesPerUnit.value);\n let value;\n for (let i = 0; i < checksCount; i++) {\n value = angleToValue(handAngle + i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n value = angleToValue(handAngle - i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n }\n }\n function onMouseDown(e) {\n if (props.disabled) return;\n e.preventDefault();\n window.addEventListener('mousemove', onDragMove);\n window.addEventListener('touchmove', onDragMove);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('touchend', onMouseUp);\n valueOnMouseDown.value = null;\n valueOnMouseUp.value = null;\n isDragging.value = true;\n onDragMove(e);\n }\n function onMouseUp(e) {\n e.stopPropagation();\n window.removeEventListener('mousemove', onDragMove);\n window.removeEventListener('touchmove', onDragMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n isDragging.value = false;\n if (valueOnMouseUp.value !== null && isAllowed(valueOnMouseUp.value)) {\n emit('change', valueOnMouseUp.value);\n }\n }\n useRender(() => {\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock': true,\n 'v-time-picker-clock--indeterminate': props.modelValue == null,\n 'v-time-picker-clock--readonly': props.readonly\n }]),\n \"onMousedown\": onMouseDown,\n \"onTouchstart\": onMouseDown,\n \"onWheel\": wheel,\n \"ref\": clockRef\n }, [_createElementVNode(\"div\", {\n \"class\": \"v-time-picker-clock__inner\",\n \"ref\": innerClockRef\n }, [_createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock__hand': true,\n 'v-time-picker-clock__hand--inner': isInner(props.modelValue)\n }, textColorClasses.value]),\n \"style\": _normalizeStyle([{\n transform: `rotate(${props.rotate + degreesPerUnit.value * (displayedValue.value - props.min)}deg) scaleY(${handScale(displayedValue.value)})`\n }, textColorStyles.value])\n }, null), genChildren.value.map(value => {\n const isActive = value === displayedValue.value;\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock__item': true,\n 'v-time-picker-clock__item--active': isActive,\n 'v-time-picker-clock__item--disabled': props.disabled || !isAllowed(value)\n }, isActive && backgroundColorClasses.value]),\n \"style\": _normalizeStyle([getTransform(value), isActive && backgroundColorStyles.value])\n }, [_createElementVNode(\"span\", null, [props.format(value)])]);\n })])]);\n });\n }\n});\n//# sourceMappingURL=VTimePickerClock.js.map","import { normalizeClass as _normalizeClass, createVNode as _createVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerControls.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VBtn } from \"../VBtn/index.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerControlsProps = propsFactory({\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: String,\n readonly: Boolean,\n useSeconds: Boolean,\n value: Number,\n viewMode: String\n}, 'VTimePickerControls');\nexport const VTimePickerControls = genericComponent()({\n name: 'VTimePickerControls',\n props: makeVTimePickerControlsProps(),\n emits: {\n 'update:period': data => true,\n 'update:viewMode': data => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n useRender(() => {\n let hour = props.hour;\n if (props.ampm) {\n hour = hour ? (hour - 1) % 12 + 1 : 12;\n }\n return _createElementVNode(\"div\", {\n \"class\": \"v-time-picker-controls\"\n }, [_createElementVNode(\"div\", {\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time': true,\n 'v-time-picker-controls__time--with-seconds': props.useSeconds\n })\n }, [_createVNode(VBtn, {\n \"active\": props.viewMode === 'hour',\n \"color\": props.viewMode === 'hour' ? props.color : undefined,\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"text\": props.hour == null ? '--' : pad(`${hour}`),\n \"onClick\": () => emit('update:viewMode', 'hour')\n }, null), _createElementVNode(\"span\", {\n \"class\": _normalizeClass(['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }])\n }, [_createTextVNode(\":\")]), _createVNode(VBtn, {\n \"active\": props.viewMode === 'minute',\n \"color\": props.viewMode === 'minute' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"text\": props.minute == null ? '--' : pad(props.minute),\n \"onClick\": () => emit('update:viewMode', 'minute')\n }, null), props.useSeconds && _createElementVNode(\"span\", {\n \"class\": _normalizeClass(['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }]),\n \"key\": \"secondsDivider\"\n }, [_createTextVNode(\":\")]), props.useSeconds && _createVNode(VBtn, {\n \"key\": \"secondsVal\",\n \"active\": props.viewMode === 'second',\n \"color\": props.viewMode === 'second' ? props.color : undefined,\n \"variant\": \"tonal\",\n \"onClick\": () => emit('update:viewMode', 'second'),\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'second',\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"disabled\": props.disabled,\n \"text\": props.second == null ? '--' : pad(props.second)\n }, null), props.ampm && _createElementVNode(\"div\", {\n \"class\": \"v-time-picker-controls__ampm\"\n }, [_createVNode(VBtn, {\n \"active\": props.period === 'am',\n \"color\": props.period === 'am' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__ampm__am': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'am'\n }),\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.am'),\n \"variant\": props.disabled && props.period === 'am' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'am' ? emit('update:period', 'am') : null\n }, null), _createVNode(VBtn, {\n \"active\": props.period === 'pm',\n \"color\": props.period === 'pm' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__ampm__pm': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'pm'\n }),\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.pm'),\n \"variant\": props.disabled && props.period === 'pm' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'pm' ? emit('update:period', 'pm') : null\n }, null)])])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTimePickerControls.js.map","import { createElementVNode as _createElementVNode, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTimePicker.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VTimePickerClock } from \"./VTimePickerClock.js\";\nimport { VTimePickerControls } from \"./VTimePickerControls.js\";\nimport { makeVPickerProps, VPicker } from \"../../labs/VPicker/VPicker.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { createRange, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nconst rangeHours24 = createRange(24);\nconst rangeHours12am = createRange(12);\nconst rangeHours12pm = rangeHours12am.map(v => v + 12);\nconst range60 = createRange(60);\nexport const makeVTimePickerProps = propsFactory({\n allowedHours: [Function, Array],\n allowedMinutes: [Function, Array],\n allowedSeconds: [Function, Array],\n disabled: Boolean,\n format: {\n type: String,\n default: 'ampm'\n },\n max: String,\n min: String,\n viewMode: {\n type: String,\n default: 'hour'\n },\n period: {\n type: String,\n default: 'am',\n validator: v => ['am', 'pm'].includes(v)\n },\n modelValue: null,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n ...omit(makeVPickerProps({\n title: '$vuetify.timePicker.title'\n }), ['landscape'])\n}, 'VTimePicker');\nexport const VTimePicker = genericComponent()({\n name: 'VTimePicker',\n props: makeVTimePickerProps(),\n emits: {\n 'update:hour': val => true,\n 'update:minute': val => true,\n 'update:period': val => true,\n 'update:second': val => true,\n 'update:modelValue': val => true,\n 'update:viewMode': val => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const inputHour = ref(null);\n const inputMinute = ref(null);\n const inputSecond = ref(null);\n const lazyInputHour = ref(null);\n const lazyInputMinute = ref(null);\n const lazyInputSecond = ref(null);\n const period = useProxiedModel(props, 'period', 'am');\n const viewMode = useProxiedModel(props, 'viewMode', 'hour');\n const controlsRef = ref(null);\n const clockRef = ref(null);\n const isAllowedHourCb = computed(() => {\n let cb;\n if (props.allowedHours instanceof Array) {\n cb = val => props.allowedHours.includes(val);\n } else {\n cb = props.allowedHours;\n }\n if (!props.min && !props.max) return cb;\n const minHour = props.min ? Number(props.min.split(':')[0]) : 0;\n const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;\n return val => {\n return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));\n };\n });\n const isAllowedMinuteCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n if (props.allowedMinutes instanceof Array) {\n cb = val => props.allowedMinutes.includes(val);\n } else {\n cb = props.allowedMinutes;\n }\n if (!props.min && !props.max) {\n return isHourAllowed ? cb : () => false;\n }\n const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];\n const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];\n const minTime = minHour * 60 + Number(minMinute);\n const maxTime = maxHour * 60 + Number(maxMinute);\n return val => {\n const time = 60 * inputHour.value + val;\n return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));\n };\n });\n const isAllowedSecondCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n const isMinuteAllowed = isHourAllowed && (!isAllowedMinuteCb.value || inputMinute.value === null || isAllowedMinuteCb.value(inputMinute.value));\n if (props.allowedSeconds instanceof Array) {\n cb = val => props.allowedSeconds.includes(val);\n } else {\n cb = props.allowedSeconds;\n }\n if (!props.min && !props.max) {\n return isMinuteAllowed ? cb : () => false;\n }\n const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];\n const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];\n const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);\n const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);\n return val => {\n const time = 3600 * inputHour.value + 60 * inputMinute.value + val;\n return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));\n };\n });\n const isAmPm = computed(() => {\n return props.format === 'ampm';\n });\n watch(() => props.period, val => setPeriod(val));\n watch(() => props.modelValue, val => setInputData(val));\n onMounted(() => {\n setInputData(props.modelValue);\n });\n function genValue() {\n if (inputHour.value != null && inputMinute.value != null && (!props.useSeconds || inputSecond.value != null)) {\n return `${pad(inputHour.value)}:${pad(inputMinute.value)}` + (props.useSeconds ? `:${pad(inputSecond.value)}` : '');\n }\n return null;\n }\n function emitValue() {\n const value = genValue();\n if (value !== null) emit('update:modelValue', value);\n }\n function convert24to12(hour) {\n return hour ? (hour - 1) % 12 + 1 : 12;\n }\n function convert12to24(hour, period) {\n return hour % 12 + (period === 'pm' ? 12 : 0);\n }\n function setInputData(value) {\n if (value == null || value === '') {\n inputHour.value = null;\n inputMinute.value = null;\n inputSecond.value = null;\n } else if (value instanceof Date) {\n inputHour.value = value.getHours();\n inputMinute.value = value.getMinutes();\n inputSecond.value = value.getSeconds();\n } else {\n const [hour,, minute,, second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6);\n inputHour.value = period ? convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n inputMinute.value = parseInt(minute, 10);\n inputSecond.value = parseInt(second || 0, 10);\n }\n period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';\n }\n function firstAllowed(type, value) {\n const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;\n if (!allowedFn) return value;\n\n // TODO: clean up (Note from V2 code)\n const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n const first = range.find(v => allowedFn((v + value) % range.length + range[0]));\n return ((first || 0) + value) % range.length + range[0];\n }\n function setPeriod(val) {\n period.value = val;\n if (inputHour.value != null) {\n const newHour = inputHour.value + (period.value === 'am' ? -12 : 12);\n inputHour.value = firstAllowed('hour', newHour);\n }\n emit('update:period', val);\n emitValue();\n return true;\n }\n function onInput(value) {\n if (viewMode.value === 'hour') {\n inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;\n } else if (viewMode.value === 'minute') {\n inputMinute.value = value;\n } else {\n inputSecond.value = value;\n }\n }\n function onChange(value) {\n switch (viewMode.value || 'hour') {\n case 'hour':\n emit('update:hour', value);\n break;\n case 'minute':\n emit('update:minute', value);\n break;\n case 'second':\n emit('update:second', value);\n break;\n default:\n break;\n }\n const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);\n if (viewMode.value === 'hour') {\n viewMode.value = 'minute';\n } else if (props.useSeconds && viewMode.value === 'minute') {\n viewMode.value = 'second';\n }\n if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;\n const time = genValue();\n if (time === null) return;\n lazyInputHour.value = inputHour.value;\n lazyInputMinute.value = inputMinute.value;\n props.useSeconds && (lazyInputSecond.value = inputSecond.value);\n emitChange && emitValue();\n }\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const timePickerControlsProps = VTimePickerControls.filterProps(props);\n const timePickerClockProps = VTimePickerClock.filterProps(omit(props, ['format', 'modelValue', 'min', 'max']));\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"color\": undefined,\n \"class\": ['v-time-picker', props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createElementVNode(\"div\", {\n \"class\": \"v-time-picker__title\"\n }, [t(props.title)]),\n header: () => _createVNode(VTimePickerControls, _mergeProps(timePickerControlsProps, {\n \"ampm\": isAmPm.value,\n \"hour\": inputHour.value,\n \"minute\": inputMinute.value,\n \"period\": period.value,\n \"second\": inputSecond.value,\n \"viewMode\": viewMode.value,\n \"onUpdate:period\": val => setPeriod(val),\n \"onUpdate:viewMode\": value => viewMode.value = value,\n \"ref\": controlsRef\n }), null),\n default: () => _createVNode(VTimePickerClock, _mergeProps(timePickerClockProps, {\n \"allowedValues\": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,\n \"double\": viewMode.value === 'hour' && !isAmPm.value,\n \"format\": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),\n \"max\": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,\n \"min\": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,\n \"size\": 20,\n \"step\": viewMode.value === 'hour' ? 1 : 5,\n \"modelValue\": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,\n \"onChange\": onChange,\n \"onInput\": onInput,\n \"ref\": clockRef\n }), null),\n actions: slots.actions\n });\n });\n }\n});\n//# sourceMappingURL=VTimePicker.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Date Time Field\n|--------------------------------------------------------------------------\n|\n| A sophisticated field component for handling ISO 8601 datetime values with\n| full timezone support. This component provides a comprehensive datetime input\n| solution combining VTextField base functionality with integrated VDatePicker,\n| VTimePicker, and custom TimezonePicker components, optimized for both desktop\n| and mobile experiences.\n|\n| ## Core Features\n|\n| - **ISO 8601 Storage**: All datetimes stored as standard ISO strings with timezone\n| - **Luxon Integration**: Robust datetime parsing, formatting, and timezone handling\n| - **Triple Input Interface**: Date picker + time picker + timezone map selector\n| - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop with tabbed UI\n| - **Browser UI Suppression**: Disables native datetime pickers while preserving HTML5 benefits\n| - **Multiple Mode**: Chip-based interface for datetime arrays with unified picker\n| - **Timezone Intelligence**: Visual map selection with autocomplete fallback\n| - **Smart Constraints**: Min/max datetime validation with timezone awareness\n|\n| ## Technical Implementation\n|\n| The component uses a sophisticated three-layer picker architecture:\n|\n| ### Date Layer (VDatePicker)\n| - Visual calendar navigation with month/year selection\n| - Configurable date constraints (min, max, firstDayOfWeek)\n| - Integration with Luxon for robust date validation\n|\n| ### Time Layer (VTimePicker)\n| - 12/24 hour format support with seconds precision\n| - Smart time constraints based on selected date and datetime bounds\n| - Mobile-optimized touch interface\n|\n| ### Timezone Layer (Custom TimezonePicker)\n| - Interactive world map with IANA timezone selection\n| - Autocomplete search with timezone name and offset display\n| - Real-time timezone preview and validation\n| - Integration with system timezone detection\n|\n| Mobile devices receive special treatment:\n| - Input becomes readonly to prevent keyboard conflicts\n| - onClick:control handler directly opens VBottomSheet picker\n| - Tabbed interface (Date/Time/Timezone) for optimal touch navigation\n| - VBottomSheet prevents viewport jumping and focus issues\n|\n| ## Display Formats (Luxon-based)\n|\n| - **short**: \"9/11/2001, 8:46 AM\" (DateTime.DATETIME_SHORT)\n| - **shortWithSeconds**: \"9/11/2001, 8:46:40 AM\" (DateTime.DATETIME_SHORT_WITH_SECONDS)\n| - **med**: \"Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED)\n| - **medWithSeconds**: \"Sep 11, 2001, 8:46:40 AM\" (DateTime.DATETIME_MED_WITH_SECONDS)\n| - **medWithWeekday**: \"Tue, Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED_WITH_WEEKDAY)\n| - **full**: \"September 11, 2001 at 8:46 AM EDT\" (DateTime.DATETIME_FULL)\n| - **fullWithSeconds**: \"September 11, 2001 at 8:46:40 AM EDT\" (DateTime.DATETIME_FULL_WITH_SECONDS)\n| - **huge**: \"Tuesday, September 11, 2001 at 8:46 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE)\n| - **hugeWithSeconds**: \"Tuesday, September 11, 2001 at 8:46:40 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE_WITH_SECONDS)\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Basic datetime field -->\n| <RDateTimeField\n| v-model=\"appointmentTime\"\n| label=\"Appointment Time\"\n| displayFormat=\"med\"\n| />\n|\n| <!-- Multiple datetimes with constraints -->\n| <RDateTimeField\n| v-model=\"eventTimes\"\n| multiple\n| label=\"Event Schedule\"\n| :min=\"new Date().toISOString()\"\n| :max=\"futureDateTime\"\n| displayFormat=\"fullWithSeconds\"\n| />\n|\n| <!-- Custom picker options -->\n| <RDateTimeField\n| v-model=\"meetingTime\"\n| label=\"Meeting Time\"\n| timePickerFormat=\"24hr\"\n| :firstDayOfWeek=\"1\"\n| :showWeek=\"true\"\n| displayFormat=\"huge\"\n| />\n|\n| <!-- Read-only display -->\n| <RDateTimeField\n| v-model=\"historicalEvents\"\n| multiple\n| render-mode=\"read\"\n| displayFormat=\"fullWithSeconds\"\n| />\n| ```\n|\n| ## Timezone Handling\n|\n| All datetime values include full timezone information:\n| - IANA timezone names (e.g., \"America/New_York\")\n| - Fixed offset handling (e.g., \"+05:00\")\n| - DST transition awareness\n| - Proper ISO 8601 serialization with timezone extensions\n|\n| ## Validation\n|\n| All datetime values are validated to ensure:\n| - Valid ISO 8601 datetime format with timezone\n| - Proper Luxon DateTime parsing\n| - Timezone validity through IANA database\n| - Min/max constraint compliance across timezone boundaries\n|\n| ## Browser Compatibility\n|\n| Injected CSS suppresses native datetime picker indicators across:\n| - WebKit browsers (Safari, Chrome, Edge)\n| - Mozilla Firefox \n| - Microsoft browsers (legacy Edge, IE)\n| \n| This ensures consistent custom UI while preserving HTML5 input benefits.\n*/\n\nimport { useDisplay } from 'vuetify'\nimport { SvgIcon } from '../svg-icon'\nimport { RCustomField } from './custom'\nimport { deepmerge } from 'deepmerge-ts'\nimport { isObject } from '../common/guards'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VImg } from 'vuetify/components/VImg'\nimport { VCard } from 'vuetify/components/VCard'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VTabs } from 'vuetify/components/VTabs'\nimport { DateTime, FixedOffsetZone } from 'luxon'\nimport { VSheet } from 'vuetify/components/VSheet'\nimport { useFieldComposer } from './field_composer'\nimport { TimezonePicker } from '../timezone_picker'\nimport { VDialog } from 'vuetify/components/VDialog'\nimport { VDivider } from 'vuetify/components/VDivider'\nimport { VCombobox } from 'vuetify/components/VCombobox'\nimport { VTextField } from 'vuetify/components/VTextField'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VDatePicker } from 'vuetify/components/VDatePicker'\nimport { VTimePicker } from 'vuetify/components/VTimePicker'\nimport { VBottomSheet } from 'vuetify/components/VBottomSheet'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { default as warningSvg } from '../icons/warning.svg?url'\nimport { VToolbar, VToolbarItems } from 'vuetify/components/VToolbar'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport { useTimezoneOptions, useTimezoneZones, useCurrentTimezone, useI18n } from '../ioc'\nimport { makeVDatePickerProps } from '@nhtio/vuetifiable/components/VDatePicker/VDatePicker'\nimport { h, defineComponent, toRefs, computed, ref, onMounted, onUnmounted, watch } from 'vue'\nimport {\n toUnreactive,\n useSlot,\n mergeClasses,\n stripUndefinedValuesFromObject,\n} from '../common/utils'\nimport {\n mdiClose,\n mdiCalendar,\n mdiClock,\n mdiChevronLeft,\n mdiChevronRight,\n mdiMapClock,\n mdiChevronDown,\n mdiMenuDown,\n} from '@mdi/js'\nimport type { Zone } from 'luxon'\nimport type { SharedUnionFields } from 'type-fest'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ResourcefulTimezone } from '../services/timezones'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { RCustomFieldInputSlotArg, ExtractedRCustomFieldSlots } from './custom'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type { makeVDialogProps } from '@nhtio/vuetifiable/components/VDialog/VDialog'\nimport type { makeVBottomSheetProps } from '@nhtio/vuetifiable/components/VBottomSheet/VBottomSheet'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n VNode,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VDialogPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVDialogProps>>\ntype VBottomSheetPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBottomSheetProps>>\ntype CommonDialogPublicProps = SharedUnionFields<VDialogPublicProps | VBottomSheetPublicProps>\ntype VTextFieldSlots = ExtractSlotDefinitions<typeof VTextField.slots>\n\n/**\n * Available display format options for RDateTimeField.\n *\n * These formats correspond to Luxon's built-in DateTime locale string constants,\n * providing consistent, internationalized datetime formatting across different locales.\n * Each format includes both date and time components with varying levels of detail.\n *\n * @example\n * ```typescript\n * const formats: RDateTimeFieldDisplayFormat[] = ['short', 'med', 'fullWithSeconds']\n * // Results in: [\"9/11/2001, 8:46 AM\", \"Sep 11, 2001, 8:46 AM\", \"September 11, 2001 at 8:46:40 AM EDT\"]\n * ```\n */\nexport const RDateTimeFieldDisplayFormat = [\n 'short',\n 'shortWithSeconds',\n 'med',\n 'medWithSeconds',\n 'medWithWeekday',\n 'full',\n 'fullWithSeconds',\n 'huge',\n 'hugeWithSeconds',\n] as const\n\n/**\n * Type representing the available display format options for datetime rendering.\n *\n * Maps to Luxon DateTime constants with timezone-aware formatting:\n * - `short`: \"9/11/2001, 8:46 AM\" (DateTime.DATETIME_SHORT)\n * - `shortWithSeconds`: \"9/11/2001, 8:46:40 AM\" (DateTime.DATETIME_SHORT_WITH_SECONDS)\n * - `med`: \"Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED)\n * - `medWithSeconds`: \"Sep 11, 2001, 8:46:40 AM\" (DateTime.DATETIME_MED_WITH_SECONDS)\n * - `medWithWeekday`: \"Tue, Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED_WITH_WEEKDAY)\n * - `full`: \"September 11, 2001 at 8:46 AM EDT\" (DateTime.DATETIME_FULL)\n * - `fullWithSeconds`: \"September 11, 2001 at 8:46:40 AM EDT\" (DateTime.DATETIME_FULL_WITH_SECONDS)\n * - `huge`: \"Tuesday, September 11, 2001 at 8:46 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE)\n * - `hugeWithSeconds`: \"Tuesday, September 11, 2001 at 8:46:40 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE_WITH_SECONDS)\n *\n * @example\n * ```typescript\n * const format: RDateTimeFieldDisplayFormat = 'medWithWeekday'\n * // Displays as: \"Tue, Sep 11, 2001, 8:46 AM\"\n * ```\n */\nexport type RDateTimeFieldDisplayFormat = (typeof RDateTimeFieldDisplayFormat)[number]\n\nconst isValidRDateTimeFieldSingleValue = (value: unknown): boolean => {\n if ('string' !== typeof value) return false\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) return false\n return true\n}\n\nconst isValidRDateTimeFieldValue = (value: string | string[] | null | undefined): boolean => {\n if (null === value || 'undefined' === typeof value) return true\n if (Array.isArray(value)) return value.every((v) => isValidRDateTimeFieldSingleValue(v))\n return isValidRDateTimeFieldSingleValue(value)\n}\n\nconst { makeProps: makeRDateTimeFieldProps, emits: rDateTimeFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeVTextFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'appendIcon',\n 'appendInnerIcon',\n 'centerAffix',\n 'counter',\n 'counterValue',\n 'hideSpinButtons',\n 'modelModifiers',\n 'modelValue',\n 'persistentCounter',\n 'prependIcon',\n 'prependInnerIcon',\n 'rules',\n 'type',\n 'validationValue',\n 'onClick:append',\n 'onClick:appendInner',\n 'onClick:clear',\n 'onClick:prepend',\n 'onClick:prependInner',\n ]\n ),\n modelValue: {\n type: [String, Array, Object] as PropType<string | string[] | null | undefined>,\n default: undefined,\n },\n displayFormat: {\n type: String as PropType<RDateTimeFieldDisplayFormat>,\n default: 'short',\n },\n displayLocale: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n displayTimezone: {\n type: String as PropType<string | Zone | undefined>,\n default: undefined,\n },\n datePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCalendar }),\n },\n dateTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n timePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiClock }),\n },\n timeTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n timezonePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMapClock }),\n },\n timePickerFormat: {\n type: String as PropType<'24hr' | 'ampm'>,\n default: 'ampm',\n },\n timezoneTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n min: {\n type: [String, Object, Date, DateTime] as PropType<\n string | Date | DateTime | null | undefined\n >,\n default: undefined,\n },\n max: {\n type: [String, Object, Date, DateTime] as PropType<\n string | Date | DateTime | null | undefined\n >,\n default: undefined,\n },\n ...pick(\n makeVDatePickerProps({\n prevIcon: () => h(SvgIcon, { d: mdiChevronLeft }),\n nextIcon: () => h(SvgIcon, { d: mdiChevronRight }),\n modeIcon: () => h(SvgIcon, { d: mdiChevronDown }),\n }),\n ['firstDayOfWeek', 'showWeek', 'prevIcon', 'nextIcon', 'modeIcon']\n ),\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: string | string[] | null | undefined) =>\n isValidRDateTimeFieldValue(value),\n 'update:model-value': (value: string | string[] | null | undefined) =>\n isValidRDateTimeFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RDateTimeField'\n)\n\n/**\n * Props factory function for RDateTimeField component.\n *\n * Creates a comprehensive props configuration that combines VTextField properties\n * with VDatePicker, VTimePicker properties and custom datetime-specific options.\n * The factory excludes incompatible VTextField props and adds datetime-specific\n * functionality including timezone selection and format options.\n *\n * @returns Props factory function for RDateTimeField component\n *\n * @example\n * ```typescript\n * const props = makeRDateTimeFieldProps()\n * // Includes: displayFormat, datePickerIcon, timePickerIcon, timezonePickerIcon,\n * // min, max, timePickerFormat, firstDayOfWeek, etc.\n * ```\n */\nexport { makeRDateTimeFieldProps }\n\n/**\n * Type definition for RDateTimeField component props.\n *\n * Extracted from the props factory to provide type safety for component usage.\n * Includes all VTextField props (except incompatible ones), VDatePicker/VTimePicker options,\n * and custom datetime formatting/display properties with full timezone support.\n *\n * Key prop categories:\n * - **VTextField Props**: Standard text field properties (label, variant, etc.)\n * - **VDatePicker Props**: Calendar-specific options (min, max, firstDayOfWeek, etc.)\n * - **VTimePicker Props**: Time selection options (format, useSeconds, etc.)\n * - **Timezone Props**: TimezonePicker integration and timezone selection\n * - **Display Options**: displayFormat for Luxon-based datetime formatting\n * - **Common Field Props**: Shared resourceful field properties (multiple, renderMode, etc.)\n *\n * @example\n * ```typescript\n * const props: RDateTimeFieldProps = {\n * modelValue: \"2024-01-15T10:30:00-05:00[America/New_York]\",\n * label: \"Meeting Time\",\n * displayFormat: \"fullWithSeconds\",\n * timePickerFormat: \"24hr\",\n * min: \"2024-01-01T00:00:00Z\",\n * max: \"2024-12-31T23:59:59Z\",\n * showWeek: true\n * }\n * ```\n */\nexport type RDateTimeFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRDateTimeFieldProps>>\ntype VTextFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTextFieldProps>>\n\nconst enforceRDateTimeFieldStyles = () => {\n const styleId = 'resourceful-field-datetime-style'\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style')\n style.id = styleId\n style.textContent = `.resourceful__field__datetime input[type=date]::-webkit-calendar-picker-indicator,.resourceful__field__datetime input[type=date]::-webkit-inner-spin-button,.resourceful__field__datetime input[type=date]::-webkit-clear-button,.resourceful__field__datetime input[type=time]::-webkit-calendar-picker-indicator,.resourceful__field__datetime input[type=time]::-webkit-inner-spin-button,.resourceful__field__datetime input[type=time]::-webkit-clear-button{display:none !important;-webkit-appearance:none !important}.resourceful__field__datetime input[type=date]::-moz-calendar-picker-indicator,.resourceful__field__datetime input[type=time]::-moz-calendar-picker-indicator{display:none !important}.resourceful__field__datetime input[type=date]::-ms-clear,.resourceful__field__datetime input[type=date]::-ms-reveal,.resourceful__field__datetime input[type=time]::-ms-clear,.resourceful__field__datetime input[type=time]::-ms-reveal{display:none !important}`\n document.head.appendChild(style)\n }\n}\n\nconst getAsNormalizedDateTime = (\n value: string | Date | DateTime | null | undefined\n): DateTime | undefined => {\n if (null === value || 'undefined' === typeof value) return undefined\n if ((isObject(value) && DateTime.isDateTime(value)) || value instanceof DateTime) {\n return value\n }\n if (value instanceof Date) {\n return DateTime.fromJSDate(value)\n }\n if ('string' === typeof value) {\n const dt = DateTime.fromISO(value, { setZone: true })\n if (dt.isValid) return dt\n }\n return undefined\n}\n\n/**\n * RDateTimeField - A sophisticated Vue component for ISO 8601 datetime input with full timezone support.\n *\n * This component provides the most comprehensive datetime input solution available,\n * combining the accessibility and validation benefits of HTML5 datetime inputs with\n * a completely custom visual interface. It features a triple-layer picker system\n * (date, time, timezone) with intelligent mobile optimization and robust timezone handling.\n *\n * ## Key Features\n *\n * - **Triple Input Interface**: Integrated VDatePicker + VTimePicker + TimezonePicker\n * - **Mobile Optimized**: VBottomSheet with tabs on mobile, VDialog on desktop\n * - **ISO 8601 Standard**: All datetimes stored as ISO strings with full timezone information\n * - **Luxon Integration**: Advanced datetime parsing, formatting, and timezone manipulation\n * - **Browser UI Suppression**: Custom pickers while preserving HTML5 benefits\n * - **Multiple Values**: Chip-based interface for datetime arrays\n * - **Smart Constraints**: Min/max datetime validation with timezone boundary awareness\n * - **Visual Timezone Selection**: Interactive world map with autocomplete fallback\n * - **Intelligent Readonly**: Mobile inputs become readonly to prevent keyboard conflicts\n * - **Advanced Validation**: Ensures valid ISO datetimes with timezone compliance\n *\n * ## Technical Architecture\n *\n * The component uses a sophisticated multi-layer picker approach:\n *\n * ### Base Layer (RCustomField)\n * - Built on the refactored RCustomField for consistent behavior\n * - HTML5 date/time input types for validation and mobile optimization\n * - Injected CSS suppresses all native browser datetime picker UI\n * - Maintains accessibility and semantic benefits\n *\n * ### Date Layer (VDatePicker)\n * - Full calendar navigation with month/year/decade selection\n * - Configurable constraints with timezone-aware min/max validation\n * - Visual indication of constraint violations through tab styling\n *\n * ### Time Layer (VTimePicker)\n * - 12/24 hour format support with optional seconds precision\n * - Smart time constraints based on selected date and global bounds\n * - Analog and digital time input methods\n *\n * ### Timezone Layer (Custom TimezonePicker)\n * - Interactive SVG world map with IANA timezone regions\n * - Autocomplete VCombobox for quick timezone search\n * - Real-time preview of selected timezone with offset display\n * - Integration with system timezone detection and browser APIs\n *\n * ### Mobile Layer (Touch Optimization)\n * - Input becomes readonly on mobile to prevent keyboard conflicts\n * - onClick:control handler analyzes click position for smart focusing\n * - VBottomSheet with tabbed interface for optimal touch navigation\n * - Tab indicators show which sections need completion (date/time/timezone)\n *\n * ### Validation Layer\n * - Ensures ISO 8601 compliance with timezone extensions\n * - Validates timezone names against IANA database\n * - Luxon-based parsing for robust datetime validation\n * - Cross-timezone constraint validation for min/max bounds\n *\n * ## Data Flow\n *\n * 1. **Input**: User interacts with date picker, time picker, or timezone map\n * 2. **Local State**: Individual components (date, time, timezone) update local reactive state\n * 3. **Combination**: Computed property combines parts using Luxon DateTime.fromSQL()\n * 4. **Validation**: Luxon validates combined datetime and timezone\n * 5. **Serialization**: Valid datetime converted to ISO 8601 with timezone extension\n * 6. **Storage**: ISO string stored in modelValue with proper timezone information\n * 7. **Display**: Luxon formats for presentation using displayFormat and locale\n * 8. **Emission**: Validated ISO string emitted to parent component\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Basic datetime selection -->\n * <RDateTimeField\n * v-model=\"selectedDateTime\"\n * label=\"Select Date & Time\"\n * displayFormat=\"med\"\n * />\n *\n * <!-- Advanced configuration -->\n * <RDateTimeField\n * v-model=\"meetingTime\"\n * label=\"Meeting Time\"\n * displayFormat=\"fullWithSeconds\"\n * timePickerFormat=\"24hr\"\n * :min=\"DateTime.now().toISO()\"\n * :max=\"DateTime.now().plus({ months: 6 }).toISO()\"\n * :firstDayOfWeek=\"1\"\n * :showWeek=\"true\"\n * />\n *\n * <!-- Multiple datetimes -->\n * <RDateTimeField\n * v-model=\"eventSchedule\"\n * multiple\n * label=\"Event Schedule\"\n * displayFormat=\"medWithWeekday\"\n * :min=\"todayISO\"\n * timePickerFormat=\"24hr\"\n * />\n *\n * <!-- Read-only display -->\n * <RDateTimeField\n * v-model=\"historicalEvents\"\n * multiple\n * render-mode=\"read\"\n * displayFormat=\"huge\"\n * />\n *\n * <!-- Custom terminology -->\n * <RDateTimeField\n * v-model=\"appointmentTime\"\n * label=\"Appointment\"\n * dateTerm=\"Date\"\n * timeTerm=\"Time\"\n * timezoneTerm=\"Location\"\n * displayFormat=\"full\"\n * />\n * </template>\n * ```\n *\n * ## Timezone Intelligence\n *\n * The component provides sophisticated timezone handling:\n * - **IANA Support**: Full IANA timezone database integration\n * - **DST Awareness**: Automatic daylight saving time transitions\n * - **Fixed Offsets**: Support for non-IANA fixed offset timezones\n * - **Visual Selection**: Interactive world map for intuitive timezone picking\n * - **Search Interface**: Autocomplete for quick timezone lookup\n * - **System Integration**: Automatic detection of user's system timezone\n * - **Smart Input Handling**: Handles both object and string values from combobox selection\n *\n * ## Constraint Validation\n *\n * Advanced min/max constraint system:\n * - **Cross-timezone**: Constraints work across different timezone selections\n * - **Smart Time Limits**: Time picker adapts based on selected date and constraints\n * - **Visual Feedback**: Tab indicators show constraint violations\n * - **Impossible States**: Clever use of impossible time ranges for invalid date selections\n *\n * ## Performance Characteristics\n *\n * - **Computed Properties**: Efficient reactive updates using Vue 3's computed system\n * - **Luxon Caching**: Leverages Luxon's internal caching for datetime operations\n * - **Lazy Rendering**: Picker components only render when dialog is open\n * - **Memory Management**: Proper cleanup of event listeners and reactive state\n *\n * ## Browser Compatibility\n *\n * Automatic CSS injection handles native picker suppression across:\n * - WebKit: Safari, Chrome, Edge (webkit-calendar-picker-indicator)\n * - Mozilla: Firefox (moz-calendar-picker-indicator)\n * - Microsoft: Legacy Edge, IE (ms-clear, ms-reveal)\n *\n * This ensures consistent custom UI while preserving HTML5 input benefits\n * like validation, accessibility, and mobile keyboard optimization.\n */\nexport const RDateTimeField = defineComponent({\n name: 'RDateTimeField',\n props: makeRDateTimeFieldProps(),\n emits: rDateTimeFieldEmits,\n slots: Object as SlotsType<VTextFieldSlots>,\n setup(props, { emit, slots }) {\n const t = useI18n()\n const { mobile } = useDisplay()\n const {\n modelValue,\n theme,\n rounded,\n tile,\n loading,\n class: className,\n style,\n bgColor,\n clearable,\n clearIcon,\n active,\n color,\n baseColor,\n dirty,\n disabled,\n glow,\n error,\n flat,\n iconColor,\n label,\n persistentClear,\n reverse,\n singleLine,\n variant,\n focused,\n errorMessages,\n maxErrors,\n name,\n readonly,\n validateOn,\n width,\n minWidth,\n maxWidth,\n density,\n id,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n autofocus,\n prefix,\n placeholder,\n persistentPlaceholder,\n suffix,\n role,\n displayFormat,\n displayLocale,\n displayTimezone,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n noValuesText,\n datePickerIcon,\n timePickerIcon,\n firstDayOfWeek,\n max,\n min,\n showWeek,\n prevIcon,\n nextIcon,\n modeIcon,\n dateTerm,\n timeTerm,\n timezonePickerIcon,\n timezoneTerm,\n timePickerFormat,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const normalizedClassName = computed(() =>\n mergeClasses(className.value, ['resourceful__field__datetime'])\n )\n const normalizedDateTerm = computed(() => dateTerm.value || t('general.date'))\n const normalizedTimeTerm = computed(() => timeTerm.value || t('general.time'))\n const normalizedTimezoneTerm = computed(() => timezoneTerm.value || t('general.timezone'))\n const normalizedMin = computed<DateTime | undefined>(() => getAsNormalizedDateTime(min.value))\n const normalizedMax = computed<DateTime | undefined>(() => getAsNormalizedDateTime(max.value))\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n theme,\n disabled,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n focused,\n noValuesText,\n 'class': normalizedClassName,\n 'onUpdate:focused': toRefs(props)['onUpdate:focused'],\n 'onClick:append': toRefs(props)['onClick:append'],\n 'onClick:appendInner': toRefs(props)['onClick:appendInner'],\n 'onClick:clear': toRefs(props)['onClick:clear'],\n 'onClick:prependInner': toRefs(props)['onClick:prependInner'],\n 'onClick:prepend': toRefs(props)['onClick:prepend'],\n 'onMousedown:control': toRefs(props)['onMousedown:control'],\n 'onClick:control': toRefs(props)['onClick:control'],\n error,\n errorMessages,\n dirty,\n onBlur,\n onChange,\n onInput,\n }\n const stringifier = computed<RFieldStringifier<string>>(\n () => (value: string | null | undefined) => {\n if ('undefined' === typeof value || null === value) return ''\n let dt = DateTime.fromISO(value, { setZone: true })\n if ('string' === typeof displayLocale.value && '' !== displayLocale.value && dt.isValid) {\n const changed = dt.setLocale(displayLocale.value)\n if (changed.isValid) {\n dt = changed\n }\n }\n if (\n 'string' === typeof displayTimezone.value &&\n '' !== displayTimezone.value &&\n dt.isValid\n ) {\n let changed: DateTime = dt\n if ('UTC' === displayTimezone.value) {\n changed = changed.setZone('utc')\n } else {\n changed = changed.setZone(displayTimezone.value)\n }\n if (changed.isValid) {\n dt = changed\n }\n }\n if (!dt.isValid) return ''\n switch (displayFormat.value) {\n case 'hugeWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_HUGE_WITH_SECONDS)\n case 'huge':\n return dt.toLocaleString(DateTime.DATETIME_HUGE)\n case 'fullWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_FULL_WITH_SECONDS)\n case 'full':\n return dt.toLocaleString(DateTime.DATETIME_FULL)\n case 'medWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS)\n case 'medWithWeekday':\n return dt.toLocaleString(DateTime.DATETIME_MED_WITH_WEEKDAY)\n case 'med':\n return dt.toLocaleString(DateTime.DATETIME_MED)\n case 'shortWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)\n default:\n return dt.toLocaleString(DateTime.DATETIME_SHORT)\n }\n }\n )\n const vTextFieldBindings = computed<VTextFieldPublicProps & Record<string, any>>(\n () =>\n ({\n theme: theme.value,\n rounded: rounded.value,\n tile: tile.value,\n loading: loading.value,\n class: normalizedClassName.value,\n style: style.value,\n bgColor: bgColor.value,\n clearable: clearable.value,\n clearIcon: clearIcon.value,\n active: active.value,\n color: color.value,\n baseColor: baseColor.value,\n dirty: dirty.value,\n disabled: disabled.value,\n glow: glow.value,\n error: error.value,\n flat: flat.value,\n iconColor: iconColor.value,\n label: label.value,\n persistentClear: persistentClear.value,\n reverse: reverse.value,\n singleLine: singleLine.value,\n variant: variant.value,\n focused: focused.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n width: width.value,\n minWidth: minWidth.value,\n maxWidth: maxWidth.value,\n density: density.value,\n id: id.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n autofocus: autofocus.value,\n prefix: prefix.value,\n placeholder: placeholder.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n type: 'date',\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }) satisfies VTextFieldPublicProps & Record<string, any>\n )\n const dateInputRef = ref<HTMLInputElement>()\n const datePickerBtnRef = ref<VBtn>()\n const timeInputRef = ref<HTMLInputElement>()\n const timePickerBtnRef = ref<VBtn>()\n const timezonePickerBtnRef = ref<VBtn>()\n const timezoneOptions = useTimezoneOptions()\n const timezoneZones = useTimezoneZones()\n const currentTz = useCurrentTimezone()\n const localDateValue = ref<string | null | undefined>(undefined)\n const localTimeValue = ref<string | null | undefined>(undefined)\n const localTimezoneValue = ref<string | null | undefined>(undefined)\n const dialogTab = ref<'date' | 'time' | 'timezone' | null>(null)\n const RCustomFieldRef = ref<RCustomField>()\n const renderedFieldWidth = ref(0)\n const useSmallWidthVariant = computed(\n () => mobile.value || (renderedFieldWidth.value !== 0 && renderedFieldWidth.value < 420)\n )\n let resizeObserver: ResizeObserver | undefined\n const onResizeOberserverTriggered = (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.contentBoxSize) {\n const contentBoxSize = Array.isArray(entry.contentBoxSize)\n ? entry.contentBoxSize[0]\n : entry.contentBoxSize\n renderedFieldWidth.value = contentBoxSize.inlineSize\n } else {\n renderedFieldWidth.value = entry.contentRect.width\n }\n }\n }\n const isFocused = (e: MouseEvent) => {\n const vInputEl = RCustomFieldRef.value ? RCustomFieldRef.value.$el || null : null\n return (\n (vInputEl && e.target && vInputEl.contains(e.target as Node)) || dialogTab.value !== null\n )\n }\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n add,\n isMultiAdd,\n }) => {\n const normalizedLocalTimeValue = computed<string | null | undefined>(() => {\n if ('string' !== typeof localTimeValue.value) return localTimeValue.value\n if ('' === localTimeValue.value) return localTimeValue.value\n const split = localTimeValue.value.split(':')\n if (split.length === 2) {\n split.push('00')\n }\n return split.join(':')\n })\n const combineDateTimeParts = (\n datePart: string | null | undefined,\n timePart: string | null | undefined,\n zonePart: string | null | undefined\n ): DateTime | null | undefined => {\n const parts = [datePart, timePart]\n if (parts.some((p) => 'undefined' === typeof p)) return undefined\n if (parts.some((p) => null === p || '' === p)) return null\n const resourcefulTimezone: ResourcefulTimezone | undefined = timezoneZones.find(\n (z) => z.name === zonePart\n )\n const zone = resourcefulTimezone?.iana ?? currentTz?.name ?? 'UTC'\n const dt = DateTime.fromSQL(parts.join(' '), {\n zone: zone,\n setZone: true,\n })\n if (!dt.isValid) return undefined\n return dt\n }\n const computedModelValue = computed({\n get: () => {\n const dt = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if ('undefined' === typeof dt || null === dt) return dt\n return dt.toISO({\n suppressMilliseconds: true,\n extendedZone: dt.year > 1970 && !(dt.zone instanceof FixedOffsetZone),\n precision: 'seconds',\n })\n },\n set: (value: string | null | undefined) => {\n if ('undefined' === typeof value) {\n localDateValue.value = undefined\n localTimeValue.value = undefined\n localTimezoneValue.value = undefined\n return\n }\n if (null === value) {\n localDateValue.value = null\n localTimeValue.value = null\n localTimezoneValue.value = null\n return\n }\n const dt = DateTime.fromISO(value, {\n setZone: true,\n })\n if (!dt.isValid) {\n localDateValue.value = undefined\n localTimeValue.value = undefined\n localTimezoneValue.value = undefined\n return\n }\n const asSqlDate = dt.toSQLDate()\n const asSqlTime = dt.toFormat('HH:mm:ss')\n const asTimezone = dt.zone instanceof FixedOffsetZone ? `Etc/${dt.zoneName}` : dt.zoneName\n localDateValue.value = asSqlDate\n localTimeValue.value = asSqlTime\n localTimezoneValue.value = asTimezone\n },\n })\n const computedMinDate = computed<string | undefined>(() =>\n normalizedMin.value ? (normalizedMin.value.toISODate() ?? undefined) : undefined\n )\n const computedMaxDate = computed<string | undefined>(() =>\n normalizedMax.value ? (normalizedMax.value.toISODate() ?? undefined) : undefined\n )\n const computedMinTime = computed<string | undefined>(() => {\n if (!normalizedMin.value) return undefined\n const currentDto = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if (!currentDto) return '23:59:59'\n if (normalizedMin.value.hasSame(currentDto, 'day')) {\n return normalizedMin.value.toFormat('HH:mm:ss')\n } else if (currentDto < normalizedMin.value.startOf('day')) {\n return '23:59:59'\n }\n return undefined\n })\n const computedMaxTime = computed<string | undefined>(() => {\n if (!normalizedMax.value) return undefined\n const currentDto = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if (!currentDto) return '00:00:00'\n if (normalizedMax.value.hasSame(currentDto, 'day')) {\n return normalizedMax.value.toFormat('HH:mm:ss')\n } else if (currentDto > normalizedMax.value.endOf('day')) {\n return '00:00:00'\n }\n return undefined\n })\n const currentTimezoneLabel = computed(() => {\n const current = localTimezoneValue.value || currentTz?.name || 'UTC'\n const option = timezoneOptions.find((o) => o.value === current)\n return option ? option.label : current\n })\n watch(computedModelValue, (is, was) => {\n if (is === was) return\n fieldBindings['onUpdate:modelValue'](is)\n fieldBindings['onUpdate:model-value'](is)\n })\n if (isObject(fieldBindings)) {\n computedModelValue.value = fieldBindings.modelValue\n }\n const datePickerOpen = computed({\n get: () => 'string' === typeof dialogTab.value,\n set: (isOpen: boolean) => {\n dialogTab.value = isOpen ? dialogTab.value || 'date' : null\n },\n })\n const commonDialogBindings = computed<CommonDialogPublicProps>(() =>\n deepmerge(\n {\n modelValue: datePickerOpen.value,\n retainFocus: true,\n theme: toUnreactive(theme),\n },\n {\n 'onUpdate:modelValue': (is: boolean) => {\n datePickerOpen.value = is\n },\n }\n )\n )\n const dialogWindowBindings = computed<VDialogPublicProps>(() =>\n deepmerge(commonDialogBindings.value, {\n maxWidth: 500,\n maxHeight: 600,\n } satisfies VDialogPublicProps)\n )\n const dialogBottomSheetBindings = computed<VBottomSheetPublicProps>(() =>\n deepmerge(commonDialogBindings.value, {} satisfies VBottomSheetPublicProps)\n )\n const onDatePickerUpdateModelValue = (value: unknown) => {\n let emitable: string | null = null\n if (value instanceof Date) {\n emitable = DateTime.fromJSDate(value).toLocal().toISODate()\n } else if ('string' === typeof value) {\n emitable = value\n } else if (null === value) {\n emitable = null\n }\n localDateValue.value = emitable\n if (!localTimeValue.value && datePickerOpen.value) {\n dialogTab.value = 'time'\n }\n }\n const alertIcon = () => h(VImg, { src: warningSvg })\n const datetimePicker = computed<VNode>(() =>\n h(VCard, { class: ['d-flex', 'flex-column'] }, () => [\n h(\n VToolbar,\n {\n color: 'transparent',\n flat: true,\n class: ['flex-grow-0'],\n density: 'compact',\n },\n () => [\n h(VTabs, {\n grow: true,\n showArrows: true,\n items: [\n {\n value: 'date',\n text: normalizedDateTerm.value,\n prependIcon: datePickerIcon.value,\n appendIcon: 'string' !== typeof localDateValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localDateValue.value ? 'warning' : undefined,\n },\n {\n value: 'time',\n text: normalizedTimeTerm.value,\n prependIcon: timePickerIcon.value,\n appendIcon: 'string' !== typeof localTimeValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localTimeValue.value ? 'warning' : undefined,\n },\n {\n value: 'timezone',\n text: normalizedTimezoneTerm.value,\n prependIcon: timezonePickerIcon.value,\n appendIcon:\n 'string' !== typeof localTimezoneValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localTimezoneValue.value ? 'warning' : undefined,\n },\n ],\n mandatory: true,\n modelValue: dialogTab.value,\n nextIcon: nextIcon.value,\n prevIcon: prevIcon.value,\n ...{\n 'onUpdate:modelValue': (val: unknown) => {\n if ('string' === typeof val && ['date', 'time', 'timezone'].includes(val)) {\n dialogTab.value = val as 'date' | 'time' | 'timezone'\n }\n },\n },\n }),\n h(VToolbarItems, {}, () => [\n h(\n VBtn,\n {\n icon: true,\n onClick: () => {\n datePickerOpen.value = false\n },\n },\n () => [\n h(VIcon, {\n icon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ]\n ),\n ]),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0'] }),\n 'date' !== dialogTab.value\n ? null\n : h(VDatePicker, {\n bgColor: 'transparent',\n disabled: disabled.value,\n divided: false,\n elevation: 0,\n firstDayOfWeek: firstDayOfWeek.value,\n showAdjacentMonths: true,\n showWeek: showWeek.value,\n width: '100%',\n hideHeader: false,\n prevIcon: prevIcon.value,\n nextIcon: nextIcon.value,\n modeIcon: modeIcon.value,\n modelValue: localDateValue.value,\n min: computedMinDate.value,\n max: computedMaxDate.value,\n ...{\n 'onUpdate:model-value': (v: unknown) => onDatePickerUpdateModelValue(v),\n 'onUpdate:modelValue': (v: unknown) => onDatePickerUpdateModelValue(v),\n },\n }),\n 'time' !== dialogTab.value\n ? null\n : h(VTimePicker, {\n bgColor: 'transparent',\n disabled: disabled.value,\n divided: false,\n elevation: 0,\n width: '100%',\n hideHeader: false,\n useSeconds: true,\n prevIcon: prevIcon.value,\n nextIcon: nextIcon.value,\n modelValue: localTimeValue.value,\n format: timePickerFormat.value,\n min: computedMinTime.value,\n max: computedMaxTime.value,\n ...{\n 'onUpdate:model-value': (v: unknown) => {\n localTimeValue.value = v as string | null | undefined\n },\n 'onUpdate:modelValue': (v: unknown) => {\n localTimeValue.value = v as string | null | undefined\n },\n },\n }),\n 'timezone' !== dialogTab.value\n ? null\n : h(\n VSheet,\n {\n bgColor: 'transparent',\n divided: false,\n elevation: 0,\n width: '100%',\n class: ['d-flex', 'flex-column', 'pa-4'],\n },\n () => [\n h(\n VToolbar,\n {\n flat: true,\n color: 'transparent',\n density: 'compact',\n class: ['flex-grow-0'],\n },\n () => [\n h(\n 'div',\n { class: ['py-1', 'w-100'] },\n h(VCombobox, {\n hideDetails: true,\n variant: 'outlined',\n density: 'compact',\n disabled: disabled.value,\n clearable: !disabled.value,\n clearIcon: clearIcon.value,\n menuIcon: () => h(SvgIcon, { d: mdiMenuDown }),\n label: normalizedTimezoneTerm.value,\n items: timezoneOptions,\n itemTitle: 'label',\n itemValue: 'value',\n modelValue: localTimezoneValue.value ?? null,\n ...{\n 'onUpdate:modelValue': (\n v: { value: string } | string | null | undefined\n ) => {\n if (isObject(v) && 'value' in v) {\n localTimezoneValue.value = v.value\n } else {\n localTimezoneValue.value = v as string | null | undefined\n }\n },\n },\n })\n ),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0', 'my-2'] }),\n h(TimezonePicker, {\n class: ['flex-grow-1'],\n modelValue: localTimezoneValue.value ?? null,\n disabled: disabled.value,\n bgColor: 'surface-light',\n ...{\n 'onUpdate:modelValue': (v: string | null | undefined) => {\n localTimezoneValue.value = v\n },\n },\n }),\n ]\n ),\n ])\n )\n const appendInnerSlot = useSlot<VTextFieldSlots>('append-inner', slots)\n return h(\n RCustomField,\n {\n ref: RCustomFieldRef,\n ...vTextFieldBindings.value,\n ...stripUndefinedValuesFromObject({\n ...fieldBindings,\n 'modelValue': undefined,\n 'onUpdate:model-value': undefined,\n 'onUpdate:modelValue': undefined,\n }),\n modelValue: computedModelValue.value,\n active: true,\n hideDetails: isMultiAdd ? true : hideDetails.value,\n readonly: isMultiAdd ? false : mobile.value ? true : readonly.value || false,\n class: isMultiAdd ? ['resourceful__field__datetime'] : normalizedClassName.value,\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n isFocused,\n ...{\n 'onClick:control': (e: MouseEvent) => {\n if (!e) return\n const { clientX: x, clientY: y } = e\n const rCustomFieldEl = RCustomFieldRef.value?.$el || null\n if (!rCustomFieldEl) return\n const rCustomFieldElRect = rCustomFieldEl.getBoundingClientRect()\n if (\n x < rCustomFieldElRect.left ||\n x > rCustomFieldElRect.right ||\n y < rCustomFieldElRect.top ||\n y > rCustomFieldElRect.bottom\n )\n return\n const refs = [dateInputRef.value, timeInputRef.value]\n for (const inputRef of refs) {\n if (!inputRef) continue\n const refRect = inputRef.getBoundingClientRect()\n if (\n x >= refRect.left &&\n x <= refRect.right &&\n y >= refRect.top &&\n y <= refRect.bottom\n ) {\n inputRef.focus()\n return\n }\n }\n if (dateInputRef.value) {\n dateInputRef.value.focus()\n return\n }\n },\n 'onClick:clear': () => {\n localDateValue.value = null\n localTimeValue.value = null\n localTimezoneValue.value = null\n },\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: ({ props: defaultSlotProps, focus, blur }: RCustomFieldInputSlotArg) => {\n const inputProps = stripUndefinedValuesFromObject({\n ...defaultSlotProps,\n 'modelValue': undefined,\n 'onUpdate:model-value': undefined,\n 'onUpdate:modelValue': undefined,\n })\n const inputReadonly = isMultiAdd\n ? false\n : useSmallWidthVariant.value\n ? true\n : readonly.value || false\n const disabledOrReadonly =\n readonly.value || disabled.value || inputProps.disabled || false\n return h(\n 'div',\n {\n class: [\n 'w-100',\n 'align-center',\n 'flex-nowrap',\n 'd-flex',\n 'resourceful__field__datetime',\n ],\n id: defaultSlotProps.id,\n },\n [\n h(\n 'div',\n {\n class: [\n 'flex-grow-1',\n 'text-truncate',\n {\n 'd-none': !useSmallWidthVariant.value,\n },\n ],\n style: {\n paddingInline: 'var(--v-field-padding-start) var(--v-field-padding-end)',\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n onClick: (e: MouseEvent) => {\n focus()\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'date'\n },\n onFocus: focus,\n onBlur: blur,\n },\n 'string' === typeof computedModelValue.value\n ? stringifier.value(computedModelValue.value)\n : '\\u200C'\n ),\n h('input', {\n ref: dateInputRef,\n class: mergeClasses(defaultSlotProps.class, [\n 'flex-grow-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ]),\n type: 'date',\n value: localDateValue.value,\n onInput: (e: Event) => {\n const el = e.target as HTMLInputElement\n localDateValue.value = el.value\n },\n onFocus: focus,\n onBlur: blur,\n ...stripUndefinedValuesFromObject({\n ...inputProps,\n class: undefined,\n id: defaultSlotProps.id ? [defaultSlotProps.id, 'date'].join('-') : undefined,\n type: undefined,\n value: undefined,\n onInput: undefined,\n persistentPlaceholder: undefined,\n readonly: inputReadonly,\n }),\n size: 1,\n min: computedMinDate.value,\n max: computedMaxDate.value,\n }),\n h(\n 'div',\n {\n class: ['flex-grow-0'],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: datePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: 1,\n icon: true,\n size: 'small',\n variant: 'text',\n density: toUnreactive(density),\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'date'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () =>\n h(VIcon, {\n icon:\n 'string' !== typeof localDateValue.value\n ? alertIcon\n : datePickerIcon.value,\n size: 'small',\n })\n )\n ),\n h('input', {\n ref: timeInputRef,\n class: mergeClasses(defaultSlotProps.class, [\n 'flex-grow-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ]),\n type: 'time',\n value: localTimeValue.value,\n onInput: (e: Event) => {\n const el = e.target as HTMLInputElement\n localTimeValue.value = el.value\n },\n onFocus: focus,\n onBlur: blur,\n ...stripUndefinedValuesFromObject({\n ...inputProps,\n autofocus: undefined,\n class: undefined,\n id: defaultSlotProps.id ? [defaultSlotProps.id, 'time'].join('-') : undefined,\n type: undefined,\n value: undefined,\n onInput: undefined,\n persistentPlaceholder: undefined,\n readonly: inputReadonly,\n }),\n size: 1,\n min: computedMinTime.value,\n max: computedMaxTime.value,\n }),\n h(\n 'div',\n {\n class: [\n 'flex-grow-0',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: timePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: 1,\n icon: true,\n size: 'small',\n variant: 'text',\n density: toUnreactive(density),\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'time'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () =>\n h(VIcon, {\n icon:\n 'string' !== typeof localTimeValue.value\n ? alertIcon\n : timePickerIcon.value,\n size: 'small',\n })\n )\n ),\n h(\n 'div',\n {\n class: [\n 'flex-grow-0',\n 'ms-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: timezonePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: false,\n tile: true,\n variant: 'text',\n size: 'small',\n density: 'default',\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'timezone'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () => [\n currentTimezoneLabel.value,\n h(VIcon, {\n icon:\n 'string' !== typeof localTimezoneValue.value\n ? alertIcon\n : timezonePickerIcon.value,\n size: 'small',\n class: ['ms-2'],\n }),\n ]\n )\n ),\n ]\n )\n },\n ...{\n 'append-inner': (\n ...args: NamedSlotParameters<ExtractedRCustomFieldSlots, 'append-inner'>\n ) => [\n mobile.value\n ? h(VBottomSheet, dialogBottomSheetBindings.value, () => datetimePicker.value)\n : h(VDialog, dialogWindowBindings.value, () => datetimePicker.value),\n // @ts-expect-error\n appendInnerSlot ? appendInnerSlot(...args) : null,\n ],\n },\n }\n )\n }\n const { composed } = useFieldComposer(\n commonProps,\n stringifier,\n singleFieldRenderer,\n emit,\n props['onUpdate:modelValue'],\n props['onUpdate:model-value'],\n modelValue,\n props.modelValue\n )\n onMounted(() => enforceRDateTimeFieldStyles())\n onMounted(() => {\n if (RCustomFieldRef.value && RCustomFieldRef.value.$el) {\n renderedFieldWidth.value = RCustomFieldRef.value.$el.clientWidth\n resizeObserver = new ResizeObserver(onResizeOberserverTriggered)\n resizeObserver.observe(RCustomFieldRef.value.$el)\n }\n })\n onUnmounted(() => {\n if (resizeObserver) {\n resizeObserver.disconnect()\n resizeObserver = undefined\n }\n })\n return composed\n },\n})\n\n/**\n * Type definition for the RDateTimeField component constructor.\n *\n * This type represents the component constructor itself, useful for:\n * - Component type annotations in parent components\n * - Ref type definitions when accessing component instances\n * - Generic component composition and higher-order component patterns\n * - TypeScript integration in component libraries and frameworks\n *\n * @example\n * ```typescript\n * // Component ref typing\n * const dateTimeFieldRef = ref<InstanceType<RDateTimeField>>()\n *\n * // Component prop type in parent\n * interface ParentProps {\n * dateTimeFieldComponent: RDateTimeField\n * }\n *\n * // Generic component usage\n * const MyWrapper = <T extends RDateTimeField>(component: T) => {\n * // Use component with full type safety\n * }\n * ```\n */\nexport type RDateTimeField = typeof RDateTimeField & ComponentPublicInstance\n"],"names":["VTabsSymbol","makeVTabProps","propsFactory","omit","makeVBtnProps","VTab","genericComponent","props","_ref","slots","attrs","sliderColorClasses","sliderColorStyles","useTextColor","rootEl","ref","sliderEl","isHorizontal","computed","isSelected","updateSlider","_ref2","value","prevEl","nextEl","color","prevBox","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","scale","initialScale","sigma","animate","standardEasing","useRender","btnProps","VBtn","_createVNode","_mergeProps","_createElementVNode","_Fragment","_normalizeClass","_normalizeStyle","forwardRefs","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","touchstart","event","touch","touchend","touchmove","createHandlers","e","mounted","el","binding","target","options","uid","handlers","keys","eventName","unmounted","Touch","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","v","makeComponentProps","makeTagProps","makeThemeProps","VWindow","vTouch","themeClasses","provideTheme","isRtl","useRtl","t","useLocale","group","useGroup","rootRef","isRtlReverse","isReversed","shallowRef","transition","axis","direction","transitionCount","transitionHeight","activeIndex","item","watch","newVal","oldVal","scrollableParent","savedScrollPosition","IN_BROWSER","getScrollParent","itemsLength","lastIndex","nextTick","provide","canMoveBack","toRef","canMoveForward","prev","next","arrows","prevProps","nextProps","touchOptions","originalEvent","_withDirectives","PREFERS_REDUCED_MOTION","convertToUnit","makeVTabsWindowProps","VTabsWindow","inject","_model","useProxiedModel","model","val","windowProps","$event","makeVWindowItemProps","makeGroupItemProps","makeLazyProps","VWindowItem","window","groupItem","useGroupItem","isBooted","useSsrBoot","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","name","hasContent","useLazy","MaybeTransition","_vShow","makeVTabsWindowItemProps","VTabsWindowItem","windowItemProps","parseItems","items","isObject","makeVTabsProps","pick","makeVSlideGroupProps","makeDensityProps","VTabs","densityClasses","useDensity","backgroundColorClasses","backgroundColorStyles","useBackgroundColor","scopeId","useScopeId","provideDefaults","slideGroupProps","VSlideGroup","hasWindow","makeVComboboxProps","makeFilterProps","makeSelectProps","makeVTextFieldProps","VCombobox","focused","emit","vTextFieldRef","isFocused","isPristine","listHasFocus","vMenuRef","vVirtualScrollRef","selectionIndex","cleared","transformIn","transformOut","useItems","textColorClasses","textColorStyles","wrapInArray","transformed","form","useForm","hasChips","hasSelectionSlot","_search","_searchLock","search","transformItem","signsToMatch","escapeForRegex","values","select","counterValue","filteredItems","getMatches","useFilter","displayItems","filteredItem","s","menuDisabled","_menu","menu","menuId","ariaExpanded","ariaControls","ariaLabel","useMenuActivator","selectedValues","selection","highlightFirst","listRef","listEvents","useScrolling","onClear","onMousedownControl","onMousedownMenuIcon","onListKeydown","checkPrintable","onKeydown","isComposingIgnoreKey","selectionStart","length","originalSelectionIndex","onAfterEnter","onAfterLeave","set","keepMenu","index","deepEqual","add","onFocusin","onFocusout","_ref3","title","hasList","isDirty","textFieldProps","VTextField","VMenu","VList","VListItem","VVirtualScroll","_ref4","itemRef","itemProps","mergeProps","VDivider","VListSubheader","_ref5","VCheckboxBtn","VAvatar","VIcon","highlightResult","onChipClose","slotProps","hasSlot","slotContent","ensureValidVNode","VDefaultsProvider","VChip","_createTextVNode","_len","args","_key","noop","pad","n","makeVTimePickerClockProps","VTimePickerClock","clockRef","innerClockRef","inputValue","isDragging","valueOnMouseDown","valueOnMouseUp","emitChangeDebounced","debounce","count","roundCount","degreesPerUnit","degrees","displayedValue","innerRadiusScale","genChildren","children","update","isAllowed","wheel","isInner","handScale","getPosition","rotateRadians","angleToValue","angle","insideClick","getTransform","i","x","y","euclidean","p0","p1","dx","dy","center","setMouseDownValue","onDragMove","width","top","left","innerWidth","clientX","clientY","coords","handAngle","checksCount","onMouseDown","onMouseUp","isActive","makeVTimePickerControlsProps","VTimePickerControls","data","hour","rangeHours24","createRange","rangeHours12am","rangeHours12pm","makeVTimePickerProps","makeVPickerProps","VTimePicker","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","period","viewMode","controlsRef","isAllowedHourCb","cb","minHour","maxHour","isAllowedMinuteCb","isHourAllowed","minMinute","maxMinute","minTime","maxTime","time","isAllowedSecondCb","isMinuteAllowed","minSecond","maxSecond","isAmPm","setPeriod","setInputData","onMounted","genValue","emitValue","convert24to12","convert12to24","minute","second","firstAllowed","type","allowedFn","range","newHour","onInput","onChange","emitChange","pickerProps","VPicker","timePickerControlsProps","timePickerClockProps","RDateTimeFieldDisplayFormat","isValidRDateTimeFieldSingleValue","DateTime","isValidRDateTimeFieldValue","makeRDateTimeFieldProps","rDateTimeFieldEmits","propsAndEmitsFactory","h","SvgIcon","mdiClose","IconValue","mdiCalendar","mdiClock","mdiMapClock","makeVDatePickerProps","mdiChevronLeft","mdiChevronRight","mdiChevronDown","makeCommonResourcefulFieldProps","commonEmitsValidators","enforceRDateTimeFieldStyles","styleId","style","getAsNormalizedDateTime","dt","RDateTimeField","defineComponent","useI18n","mobile","useDisplay","modelValue","theme","rounded","tile","loading","className","bgColor","clearable","clearIcon","active","baseColor","dirty","disabled","glow","error","flat","iconColor","label","persistentClear","reverse","singleLine","variant","errorMessages","maxErrors","readonly","validateOn","minWidth","maxWidth","density","id","hideDetails","hint","persistentHint","messages","autofocus","prefix","placeholder","persistentPlaceholder","suffix","role","displayFormat","displayLocale","displayTimezone","renderMode","multiple","choices","allowUnspecifiedChoices","to","href","menuIcon","noValuesText","datePickerIcon","timePickerIcon","firstDayOfWeek","max","min","showWeek","prevIcon","nextIcon","modeIcon","dateTerm","timeTerm","timezonePickerIcon","timezoneTerm","timePickerFormat","onBlur","toRefs","normalizedClassName","mergeClasses","normalizedDateTerm","normalizedTimeTerm","normalizedTimezoneTerm","normalizedMin","normalizedMax","commonProps","stringifier","changed","vTextFieldBindings","dateInputRef","datePickerBtnRef","timeInputRef","timePickerBtnRef","timezonePickerBtnRef","timezoneOptions","useTimezoneOptions","timezoneZones","useTimezoneZones","currentTz","useCurrentTimezone","localDateValue","localTimeValue","localTimezoneValue","dialogTab","RCustomFieldRef","renderedFieldWidth","useSmallWidthVariant","resizeObserver","onResizeOberserverTriggered","entries","entry","contentBoxSize","vInputEl","singleFieldRenderer","fieldBindings","isMultiAdd","normalizedLocalTimeValue","split","combineDateTimeParts","datePart","timePart","zonePart","parts","p","zone","z","computedModelValue","FixedOffsetZone","asSqlDate","asSqlTime","asTimezone","computedMinDate","computedMaxDate","computedMinTime","currentDto","computedMaxTime","currentTimezoneLabel","current","option","o","is","was","datePickerOpen","isOpen","commonDialogBindings","deepmerge","toUnreactive","dialogWindowBindings","dialogBottomSheetBindings","onDatePickerUpdateModelValue","emitable","alertIcon","VImg","warningSvg","datetimePicker","VCard","VToolbar","VToolbarItems","VDatePicker","VSheet","mdiMenuDown","TimezonePicker","appendInnerSlot","useSlot","RCustomField","stripUndefinedValuesFromObject","rCustomFieldEl","rCustomFieldElRect","refs","inputRef","refRect","defaultSlotProps","focus","blur","inputProps","inputReadonly","disabledOrReadonly","VBottomSheet","VDialog","composed","useFieldComposer","onUnmounted"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}
1
+ {"version":3,"file":"date_time-DuRO8DS4.mjs","sources":["../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/shared.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTab.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/directives/touch/index.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VWindow/VWindow.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabsWindow.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VWindow/VWindowItem.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabsWindowItem.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTabs/VTabs.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VCombobox/VCombobox.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/util.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePickerClock.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePickerControls.js","../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTimePicker/VTimePicker.js","../src/private/fields/date_time.ts"],"sourcesContent":["// Types\n\nexport const VTabsSymbol = Symbol.for('vuetify:v-tabs');\n//# sourceMappingURL=shared.js.map","import { Fragment as _Fragment, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.js\"; // Composables\nimport { useTextColor } from \"../../composables/color.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { VTabsSymbol } from \"./shared.js\";\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n sliderColor: String,\n hideSlider: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text'\n }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])\n}, 'VTab');\nexport const VTab = genericComponent()({\n name: 'VTab',\n props: makeVTabProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles\n } = useTextColor(() => props.sliderColor);\n const rootEl = ref();\n const sliderEl = ref();\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);\n function updateSlider(_ref2) {\n let {\n value\n } = _ref2;\n if (value) {\n const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');\n const nextEl = sliderEl.value;\n if (!prevEl || !nextEl) return;\n const color = getComputedStyle(prevEl).color;\n const prevBox = prevEl.getBoundingClientRect();\n const nextBox = nextEl.getBoundingClientRect();\n const xy = isHorizontal.value ? 'x' : 'y';\n const XY = isHorizontal.value ? 'X' : 'Y';\n const rightBottom = isHorizontal.value ? 'right' : 'bottom';\n const widthHeight = isHorizontal.value ? 'width' : 'height';\n const prevPos = prevBox[xy];\n const nextPos = nextBox[xy];\n const delta = prevPos > nextPos ? prevBox[rightBottom] - nextBox[rightBottom] : prevBox[xy] - nextBox[xy];\n const origin = Math.sign(delta) > 0 ? isHorizontal.value ? 'right' : 'bottom' : Math.sign(delta) < 0 ? isHorizontal.value ? 'left' : 'top' : 'center';\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight]);\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0;\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0;\n const sigma = 1.5;\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [`translate${XY}(${delta}px) scale${XY}(${initialScale})`, `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`, 'none'],\n transformOrigin: Array(3).fill(origin)\n }, {\n duration: 225,\n easing: standardEasing\n });\n }\n }\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(VBtn, _mergeProps({\n \"symbol\": VTabsSymbol,\n \"ref\": rootEl,\n \"class\": ['v-tab', props.class],\n \"style\": props.style,\n \"tabindex\": isSelected.value ? 0 : -1,\n \"role\": \"tab\",\n \"aria-selected\": String(isSelected.value),\n \"active\": false\n }, btnProps, attrs, {\n \"block\": props.fixed,\n \"maxWidth\": props.fixed ? 300 : undefined,\n \"onGroup:selected\": updateSlider\n }), {\n ...slots,\n default: () => _createElementVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createElementVNode(\"div\", {\n \"ref\": sliderEl,\n \"class\": _normalizeClass(['v-tab__slider', sliderColorClasses.value]),\n \"style\": _normalizeStyle(sliderColorStyles.value)\n }, null)])\n });\n });\n return forwardRefs({}, rootEl);\n }\n});\n//# sourceMappingURL=VTab.js.map","// Utilities\nimport { keys } from \"../../util/index.js\"; // Types\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end?.({\n originalEvent: event,\n ...wrapper\n });\n handleGesture(wrapper);\n}\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction createHandlers() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\nfunction mounted(el, binding) {\n const value = binding.value;\n const target = value?.parent ? el.parentElement : el;\n const options = value?.options ?? {\n passive: true\n };\n const uid = binding.instance?.$.uid; // TODO: use custom uid generator\n\n if (!target || uid === undefined) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = target._touchHandlers ?? Object.create(null);\n target._touchHandlers[uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unmounted(el, binding) {\n const target = binding.value?.parent ? el.parentElement : el;\n const uid = binding.instance?.$.uid;\n if (!target?._touchHandlers || uid === undefined) return;\n const handlers = target._touchHandlers[uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[uid];\n}\nexport const Touch = {\n mounted,\n unmounted\n};\nexport default Touch;\n//# sourceMappingURL=index.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VWindow.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.js\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { useGroup } from \"../../composables/group.js\";\nimport { useLocale, useRtl } from \"../../composables/locale.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Directives\nimport vTouch from \"../../directives/touch/index.js\"; // Utilities\nimport { computed, nextTick, provide, ref, shallowRef, toRef, watch } from 'vue';\nimport { convertToUnit, genericComponent, IN_BROWSER, PREFERS_REDUCED_MOTION, propsFactory, useRender } from \"../../util/index.js\";\nimport { getScrollParent } from \"../../util/getScrollParent.js\"; // Types\nexport const VWindowSymbol = Symbol.for('vuetify:v-window');\nexport const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object],\n default: '$next'\n },\n prevIcon: {\n type: [Boolean, String, Function, Object],\n default: '$prev'\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || v === 'hover'\n },\n verticalArrows: [Boolean, String],\n touch: {\n type: [Object, Boolean],\n default: undefined\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active'\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String],\n default: 'force'\n },\n crossfade: Boolean,\n transitionDuration: Number,\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VWindow');\nexport const VWindow = genericComponent()({\n name: 'VWindow',\n directives: {\n vTouch\n },\n props: makeVWindowProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isRtl\n } = useRtl();\n const {\n t\n } = useLocale();\n const group = useGroup(props, VWindowGroupSymbol);\n const rootRef = ref();\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);\n const isReversed = shallowRef(false);\n const transition = computed(() => {\n if (props.crossfade) {\n return 'v-window-crossfade-transition';\n }\n const axis = props.direction === 'vertical' ? 'y' : 'x';\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;\n const direction = reverse ? '-reverse' : '';\n return `v-window-${axis}${direction}-transition`;\n });\n const transitionCount = shallowRef(0);\n const transitionHeight = ref(undefined);\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id));\n });\n\n // Fix for https://github.com/vuetifyjs/vuetify/issues/18447\n watch(activeIndex, (newVal, oldVal) => {\n let scrollableParent;\n const savedScrollPosition = {\n left: 0,\n top: 0\n };\n if (IN_BROWSER && oldVal >= 0) {\n scrollableParent = getScrollParent(rootRef.value);\n savedScrollPosition.left = scrollableParent?.scrollLeft;\n savedScrollPosition.top = scrollableParent?.scrollTop;\n }\n const itemsLength = group.items.value.length;\n const lastIndex = itemsLength - 1;\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal;\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true;\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false;\n } else {\n isReversed.value = newVal < oldVal;\n }\n nextTick(() => {\n if (!IN_BROWSER || !scrollableParent) return;\n const currentScrollY = scrollableParent.scrollTop;\n if (currentScrollY !== savedScrollPosition.top) {\n scrollableParent.scrollTo({\n ...savedScrollPosition,\n behavior: 'instant'\n });\n }\n requestAnimationFrame(() => {\n if (!scrollableParent) return;\n const rafScrollY = scrollableParent.scrollTop;\n if (rafScrollY !== savedScrollPosition.top) {\n scrollableParent.scrollTo({\n ...savedScrollPosition,\n behavior: 'instant'\n });\n }\n });\n });\n }, {\n flush: 'sync'\n }); // Run synchronously before DOM updates\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef\n });\n const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0);\n const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);\n function prev() {\n canMoveBack.value && group.prev();\n }\n function next() {\n canMoveForward.value && group.next();\n }\n const arrows = computed(() => {\n const arrows = [];\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev')\n };\n arrows.push(canMoveBack.value ? slots.prev ? slots.prev({\n props: prevProps\n }) : _createVNode(VBtn, prevProps, null) : _createElementVNode(\"div\", null, null));\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next')\n };\n arrows.push(canMoveForward.value ? slots.next ? slots.next({\n props: nextProps\n }) : _createVNode(VBtn, nextProps, null) : _createElementVNode(\"div\", null, null));\n return arrows;\n });\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch;\n const options = {\n left: () => {\n isRtlReverse.value ? prev() : next();\n },\n right: () => {\n isRtlReverse.value ? next() : prev();\n },\n start: _ref2 => {\n let {\n originalEvent\n } = _ref2;\n originalEvent.stopPropagation();\n }\n };\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch)\n };\n });\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"ref\": rootRef,\n \"class\": _normalizeClass(['v-window', {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n 'v-window--vertical-arrows': !!props.verticalArrows,\n 'v-window--crossfade': !!props.crossfade\n }, themeClasses.value, props.class]),\n \"style\": _normalizeStyle([props.style, props.transitionDuration && !PREFERS_REDUCED_MOTION ? {\n '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms')\n } : undefined])\n }, {\n default: () => [_createElementVNode(\"div\", {\n \"class\": \"v-window__container\",\n \"style\": {\n height: transitionHeight.value\n }\n }, [slots.default?.({\n group\n }), props.showArrows !== false && _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-window__controls', {\n 'v-window__controls--left': props.verticalArrows === 'left' || props.verticalArrows === true\n }, {\n 'v-window__controls--right': props.verticalArrows === 'right'\n }])\n }, [arrows.value])]), slots.additional?.({\n group\n })]\n }), [[vTouch, touchOptions.value]]));\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VWindow.js.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.js\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nimport { VTabsSymbol } from \"./shared.js\";\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VTabsWindow');\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n props: makeVTabsWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VTabsSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VTabsWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindow.js.map","import { vShow as _vShow, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.js\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.js\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.js\";\nimport { MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vTouch from \"../../directives/touch/index.js\"; // Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nimport { VWindowGroupSymbol, VWindowSymbol } from \"./VWindow.js\";\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps()\n}, 'VWindowItem');\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n directives: {\n vTouch\n },\n props: makeVWindowItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const window = inject(VWindowSymbol);\n const groupItem = useGroupItem(props, VWindowGroupSymbol);\n const {\n isBooted\n } = useSsrBoot();\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');\n const isTransitioning = shallowRef(false);\n const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));\n function onAfterTransition() {\n if (!isTransitioning.value || !window) {\n return;\n }\n\n // Finalize transition state.\n isTransitioning.value = false;\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1;\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined;\n }\n }\n }\n function onBeforeTransition() {\n if (isTransitioning.value || !window) {\n return;\n }\n\n // Initialize transition state here.\n isTransitioning.value = true;\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);\n }\n window.transitionCount.value += 1;\n }\n function onTransitionCancelled() {\n onAfterTransition(); // This should have the same path as normal transition end.\n }\n function onEnterTransition(el) {\n if (!isTransitioning.value) {\n return;\n }\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return;\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight);\n });\n }\n const transition = computed(() => {\n const name = window.isReversed.value ? props.reverseTransition : props.transition;\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition\n };\n });\n const {\n hasContent\n } = useLazy(props, groupItem.isSelected);\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": transition.value,\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-window-item', groupItem.selectedClass.value, props.class]),\n \"style\": _normalizeStyle(props.style)\n }, [hasContent.value && slots.default?.()]), [[_vShow, groupItem.isSelected.value]])]\n }));\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VWindowItem.js.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VTabsWindowItem');\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n props: makeVTabsWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VTabsWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-tabs-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindowItem.js.map","import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTabs.css\";\n\n// Components\nimport { makeVTabProps, VTab } from \"./VTab.js\";\nimport { VTabsWindow } from \"./VTabsWindow.js\";\nimport { VTabsWindowItem } from \"./VTabsWindowItem.js\";\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.js\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { provideDefaults } from \"../../composables/defaults.js\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { makeTagProps } from \"../../composables/tag.js\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { VTabsSymbol } from \"./shared.js\";\nimport { convertToUnit, genericComponent, isObject, pick, propsFactory, useRender } from \"../../util/index.js\"; // Types\nfunction parseItems(items) {\n if (!items) return [];\n return items.map(item => {\n if (!isObject(item)) return {\n text: item,\n value: item\n };\n return item;\n });\n}\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String,\n default: 'start'\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined\n },\n hideSlider: Boolean,\n sliderColor: String,\n ...pick(makeVTabProps(), ['spaced']),\n ...makeVSlideGroupProps({\n mandatory: 'force',\n selectedClass: 'v-tab-item--selected'\n }),\n ...makeDensityProps(),\n ...makeTagProps()\n}, 'VTabs');\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n props: makeVTabsProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const items = computed(() => parseItems(props.items));\n const {\n densityClasses\n } = useDensity(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.bgColor);\n const {\n scopeId\n } = useScopeId();\n provideDefaults({\n VTab: {\n color: toRef(() => props.color),\n direction: toRef(() => props.direction),\n stacked: toRef(() => props.stacked),\n fixed: toRef(() => props.fixedTabs),\n sliderColor: toRef(() => props.sliderColor),\n hideSlider: toRef(() => props.hideSlider)\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n const hasWindow = !!(slots.window || props.items.length > 0);\n return _createElementVNode(_Fragment, null, [_createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked\n }, densityClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [{\n '--v-tabs-height': convertToUnit(props.height)\n }, backgroundColorStyles.value, props.style],\n \"role\": \"tablist\",\n \"symbol\": VTabsSymbol\n }, scopeId, attrs), {\n default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({\n item\n }) ?? _createVNode(VTab, _mergeProps(item, {\n \"key\": item.text,\n \"value\": item.value,\n \"spaced\": props.spaced\n }), {\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({\n item\n }) : undefined\n }))]\n }), hasWindow && _createVNode(VTabsWindow, _mergeProps({\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"key\": \"tabs-window\"\n }, scopeId), {\n default: () => [items.value.map(item => slots.item?.({\n item\n }) ?? _createVNode(VTabsWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.({\n item\n })\n })), slots.window?.()]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabs.js.map","import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\n// Styles\nimport \"./VCombobox.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.js\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.js\";\nimport { VChip } from \"../VChip/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VDivider } from \"../VDivider/index.js\";\nimport { VIcon } from \"../VIcon/index.js\";\nimport { VList, VListItem, VListSubheader } from \"../VList/index.js\";\nimport { VMenu } from \"../VMenu/index.js\";\nimport { makeSelectProps } from \"../VSelect/VSelect.js\";\nimport { VTextField } from \"../VTextField/index.js\";\nimport { makeVTextFieldProps } from \"../VTextField/VTextField.js\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.js\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.js\";\nimport { useTextColor } from \"../../composables/color.js\";\nimport { highlightResult, makeFilterProps, useFilter } from \"../../composables/filter.js\";\nimport { useForm } from \"../../composables/form.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { transformItem, useItems } from \"../../composables/list-items.js\";\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useMenuActivator } from \"../../composables/menuActivator.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, deepEqual, ensureValidVNode, escapeForRegex, genericComponent, IN_BROWSER, isComposingIgnoreKey, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.js\"; // Types\nexport const makeVComboboxProps = propsFactory({\n alwaysFilter: Boolean,\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n delimiters: Array,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps({\n hideNoData: true,\n returnObject: true\n }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon'])\n}, 'VCombobox');\nexport const VCombobox = genericComponent()({\n name: 'VCombobox',\n props: makeVComboboxProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:search': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const selectionIndex = shallowRef(-1);\n let cleared = false;\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(() => vTextFieldRef.value?.color);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const form = useForm(props);\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');\n const _searchLock = shallowRef(null);\n const search = computed({\n get: () => {\n return _search.value;\n },\n set: async val => {\n _search.value = val ?? '';\n if (val === null || val === '' && !props.multiple && !hasSelectionSlot.value) {\n model.value = [];\n } else if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)];\n nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));\n }\n if (val && props.multiple && props.delimiters?.length) {\n const signsToMatch = props.delimiters.map(escapeForRegex).join('|');\n const values = val.split(new RegExp(`(?:${signsToMatch})+`));\n if (values.length > 1) {\n for (let v of values) {\n v = v.trim();\n if (v) {\n select(transformItem(props, v));\n await nextTick();\n }\n }\n _search.value = '';\n }\n }\n if (!val) selectionIndex.value = -1;\n isPristine.value = !val;\n }\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;\n });\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => _searchLock.value ?? (props.alwaysFilter || !isPristine.value ? search.value : ''));\n const displayItems = computed(() => {\n if (props.hideSelected && _searchLock.value === null) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n if (v && menuDisabled.value) return;\n _menu.value = v;\n }\n });\n const {\n menuId,\n ariaExpanded,\n ariaControls,\n ariaLabel\n } = useMenuActivator(props, menu);\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => cleared = false);\n } else if (isFocused.value && !menu.value) {\n menu.value = true;\n }\n emit('update:search', value);\n });\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? '';\n }\n });\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n cleared = true;\n nextTick(() => cleared = false);\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e) || e.key === 'Backspace') {\n vTextFieldRef.value?.focus();\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown(e) {\n if (isComposingIgnoreKey(e) || form.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value?.selectionStart;\n const length = model.value.length;\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(filteredItems.value[0]);\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value), true, true);\n if (hasSelectionSlot.value) _search.value = '';\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n e.preventDefault();\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n return;\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value?.setSelectionRange(search.value.length, search.value.length);\n }\n } else if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value?.setSelectionRange(0, 0);\n }\n } else if (~selectionIndex.value && checkPrintable(e)) {\n selectionIndex.value = -1;\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n vTextFieldRef.value?.focus();\n }\n isPristine.value = true;\n _searchLock.value = null;\n }\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let keepMenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n if ((!isPristine.value || props.alwaysFilter) && _search.value) {\n _searchLock.value = _search.value;\n }\n _search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = keepMenu;\n isPristine.value = true;\n });\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return;\n selectionIndex.value = -1;\n menu.value = false;\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value));\n return;\n }\n if (!hasSelectionSlot.value) return;\n if (model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) {\n _search.value = '';\n } else {\n select(transformItem(props, search.value));\n }\n }\n });\n watch(menu, val => {\n if (!props.hideSelected && val && model.value.length && isPristine.value) {\n const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n if (val) _searchLock.value = null;\n });\n watch(items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": $event => search.value = $event,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-combobox', {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!hasSelectionSlot.value,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true\n }, props.class],\n \"style\": props.style,\n \"readonly\": form.isReadonly.value,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown,\n \"aria-expanded\": ariaExpanded.value,\n \"aria-controls\": ariaControls.value\n }), {\n ...slots,\n default: () => _createElementVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"id\": menuId.value,\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-combobox__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"filterable\": true,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"selectable\": true,\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"key\": \"no-data\",\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value,\n \"itemKey\": \"value\"\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: item.value,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n if (item.type === 'divider') {\n return slots.divider?.({\n props: item.raw,\n index\n }) ?? _createVNode(VDivider, _mergeProps(item.props, {\n \"key\": `divider-${index}`\n }), null);\n }\n if (item.type === 'subheader') {\n return slots.subheader?.({\n props: item.raw,\n index\n }) ?? _createVNode(VListSubheader, _mergeProps(item.props, {\n \"key\": `subheader-${index}`\n }), null);\n }\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createElementVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\",\n \"onClick\": event => event.preventDefault()\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult('v-combobox', item.title, getMatches(item)?.title);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createElementVNode(\"div\", {\n \"key\": item.value,\n \"class\": _normalizeClass(['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]]),\n \"style\": _normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createElementVNode(\"span\", {\n \"class\": \"v-combobox__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createElementVNode(\"span\", {\n \"class\": \"v-combobox__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-combobox__menu-icon\",\n \"color\": vTextFieldRef.value?.fieldIconColor,\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": ariaLabel.value,\n \"title\": ariaLabel.value,\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VCombobox.js.map","export function pad(n) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n return String(n).padStart(length, '0');\n}\n//# sourceMappingURL=util.js.map","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerClock.css\";\n\n// Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.js\"; // Utilities\nimport { computed, ref, watch } from 'vue';\nimport { debounce, genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerClockProps = propsFactory({\n allowedValues: Function,\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n displayedValue: null,\n double: Boolean,\n format: {\n type: Function,\n default: val => val\n },\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0\n },\n step: {\n type: Number,\n default: 1\n },\n modelValue: {\n type: Number\n }\n}, 'VTimePickerClock');\nexport const VTimePickerClock = genericComponent()({\n name: 'VTimePickerClock',\n props: makeVTimePickerClockProps(),\n emits: {\n change: val => true,\n input: val => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const clockRef = ref(null);\n const innerClockRef = ref(null);\n const inputValue = ref(undefined);\n const isDragging = ref(false);\n const valueOnMouseDown = ref(null);\n const valueOnMouseUp = ref(null);\n const emitChangeDebounced = debounce(value => emit('change', value), 750);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(() => props.color);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const count = computed(() => props.max - props.min + 1);\n const roundCount = computed(() => props.double ? count.value / 2 : count.value);\n const degreesPerUnit = computed(() => 360 / roundCount.value);\n const degrees = computed(() => degreesPerUnit.value * Math.PI / 180);\n const displayedValue = computed(() => props.modelValue == null ? props.min : props.modelValue);\n const innerRadiusScale = computed(() => 0.62);\n const genChildren = computed(() => {\n const children = [];\n for (let value = props.min; value <= props.max; value = value + props.step) {\n children.push(value);\n }\n return children;\n });\n watch(() => props.modelValue, val => {\n inputValue.value = val;\n });\n function update(value) {\n if (inputValue.value !== value) {\n inputValue.value = value;\n }\n emit('input', value);\n }\n function isAllowed(value) {\n return !props.allowedValues || props.allowedValues(value);\n }\n function wheel(e) {\n if (!props.scrollable || props.disabled) return;\n e.preventDefault();\n const delta = Math.sign(-e.deltaY || 1);\n let value = displayedValue.value;\n do {\n value = value + delta;\n value = (value - props.min + count.value) % count.value + props.min;\n } while (!isAllowed(value) && value !== displayedValue.value);\n if (value !== props.displayedValue) {\n update(value);\n }\n emitChangeDebounced(value);\n }\n function isInner(value) {\n return props.double && value - props.min >= roundCount.value;\n }\n function handScale(value) {\n return isInner(value) ? innerRadiusScale.value : 1;\n }\n function getPosition(value) {\n const rotateRadians = props.rotate * Math.PI / 180;\n return {\n x: Math.sin((value - props.min) * degrees.value + rotateRadians) * handScale(value),\n y: -Math.cos((value - props.min) * degrees.value + rotateRadians) * handScale(value)\n };\n }\n function angleToValue(angle, insideClick) {\n const value = (Math.round(angle / degreesPerUnit.value) + (insideClick ? roundCount.value : 0)) % count.value + props.min;\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < 360 - degreesPerUnit.value / 2) return value;\n return insideClick ? props.max - roundCount.value + 1 : props.min;\n }\n function getTransform(i) {\n const {\n x,\n y\n } = getPosition(i);\n return {\n left: `${Math.round(50 + x * 50)}%`,\n top: `${Math.round(50 + y * 50)}%`\n };\n }\n function euclidean(p0, p1) {\n const dx = p1.x - p0.x;\n const dy = p1.y - p0.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n function angle(center, p1) {\n const value = 2 * Math.atan2(p1.y - center.y - euclidean(center, p1), p1.x - center.x);\n return Math.abs(value * 180 / Math.PI);\n }\n function setMouseDownValue(value) {\n if (valueOnMouseDown.value === null) {\n valueOnMouseDown.value = value;\n }\n valueOnMouseUp.value = value;\n update(value);\n }\n function onDragMove(e) {\n e.preventDefault();\n if (!isDragging.value && e.type !== 'click' || !clockRef.value) return;\n const {\n width,\n top,\n left\n } = clockRef.value?.getBoundingClientRect();\n const {\n width: innerWidth\n } = innerClockRef.value?.getBoundingClientRect() ?? {\n width: 0\n };\n const {\n clientX,\n clientY\n } = 'touches' in e ? e.touches[0] : e;\n const center = {\n x: width / 2,\n y: -width / 2\n };\n const coords = {\n x: clientX - left,\n y: top - clientY\n };\n const handAngle = Math.round(angle(center, coords) - props.rotate + 360) % 360;\n const insideClick = props.double && euclidean(center, coords) < (innerWidth + innerWidth * innerRadiusScale.value) / 4;\n const checksCount = Math.ceil(15 / degreesPerUnit.value);\n let value;\n for (let i = 0; i < checksCount; i++) {\n value = angleToValue(handAngle + i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n value = angleToValue(handAngle - i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n }\n }\n function onMouseDown(e) {\n if (props.disabled) return;\n e.preventDefault();\n window.addEventListener('mousemove', onDragMove);\n window.addEventListener('touchmove', onDragMove);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('touchend', onMouseUp);\n valueOnMouseDown.value = null;\n valueOnMouseUp.value = null;\n isDragging.value = true;\n onDragMove(e);\n }\n function onMouseUp(e) {\n e.stopPropagation();\n window.removeEventListener('mousemove', onDragMove);\n window.removeEventListener('touchmove', onDragMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n isDragging.value = false;\n if (valueOnMouseUp.value !== null && isAllowed(valueOnMouseUp.value)) {\n emit('change', valueOnMouseUp.value);\n }\n }\n useRender(() => {\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock': true,\n 'v-time-picker-clock--indeterminate': props.modelValue == null,\n 'v-time-picker-clock--readonly': props.readonly\n }]),\n \"onMousedown\": onMouseDown,\n \"onTouchstart\": onMouseDown,\n \"onWheel\": wheel,\n \"ref\": clockRef\n }, [_createElementVNode(\"div\", {\n \"class\": \"v-time-picker-clock__inner\",\n \"ref\": innerClockRef\n }, [_createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock__hand': true,\n 'v-time-picker-clock__hand--inner': isInner(props.modelValue)\n }, textColorClasses.value]),\n \"style\": _normalizeStyle([{\n transform: `rotate(${props.rotate + degreesPerUnit.value * (displayedValue.value - props.min)}deg) scaleY(${handScale(displayedValue.value)})`\n }, textColorStyles.value])\n }, null), genChildren.value.map(value => {\n const isActive = value === displayedValue.value;\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass([{\n 'v-time-picker-clock__item': true,\n 'v-time-picker-clock__item--active': isActive,\n 'v-time-picker-clock__item--disabled': props.disabled || !isAllowed(value)\n }, isActive && backgroundColorClasses.value]),\n \"style\": _normalizeStyle([getTransform(value), isActive && backgroundColorStyles.value])\n }, [_createElementVNode(\"span\", null, [props.format(value)])]);\n })])]);\n });\n }\n});\n//# sourceMappingURL=VTimePickerClock.js.map","import { normalizeClass as _normalizeClass, createVNode as _createVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerControls.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VBtn } from \"../VBtn/index.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerControlsProps = propsFactory({\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: String,\n readonly: Boolean,\n useSeconds: Boolean,\n value: Number,\n viewMode: String\n}, 'VTimePickerControls');\nexport const VTimePickerControls = genericComponent()({\n name: 'VTimePickerControls',\n props: makeVTimePickerControlsProps(),\n emits: {\n 'update:period': data => true,\n 'update:viewMode': data => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n useRender(() => {\n let hour = props.hour;\n if (props.ampm) {\n hour = hour ? (hour - 1) % 12 + 1 : 12;\n }\n return _createElementVNode(\"div\", {\n \"class\": \"v-time-picker-controls\"\n }, [_createElementVNode(\"div\", {\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time': true,\n 'v-time-picker-controls__time--with-seconds': props.useSeconds\n })\n }, [_createVNode(VBtn, {\n \"active\": props.viewMode === 'hour',\n \"color\": props.viewMode === 'hour' ? props.color : undefined,\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"text\": props.hour == null ? '--' : pad(`${hour}`),\n \"onClick\": () => emit('update:viewMode', 'hour')\n }, null), _createElementVNode(\"span\", {\n \"class\": _normalizeClass(['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }])\n }, [_createTextVNode(\":\")]), _createVNode(VBtn, {\n \"active\": props.viewMode === 'minute',\n \"color\": props.viewMode === 'minute' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"text\": props.minute == null ? '--' : pad(props.minute),\n \"onClick\": () => emit('update:viewMode', 'minute')\n }, null), props.useSeconds && _createElementVNode(\"span\", {\n \"class\": _normalizeClass(['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }]),\n \"key\": \"secondsDivider\"\n }, [_createTextVNode(\":\")]), props.useSeconds && _createVNode(VBtn, {\n \"key\": \"secondsVal\",\n \"active\": props.viewMode === 'second',\n \"color\": props.viewMode === 'second' ? props.color : undefined,\n \"variant\": \"tonal\",\n \"onClick\": () => emit('update:viewMode', 'second'),\n \"class\": _normalizeClass({\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'second',\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n }),\n \"disabled\": props.disabled,\n \"text\": props.second == null ? '--' : pad(props.second)\n }, null), props.ampm && _createElementVNode(\"div\", {\n \"class\": \"v-time-picker-controls__ampm\"\n }, [_createVNode(VBtn, {\n \"active\": props.period === 'am',\n \"color\": props.period === 'am' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__ampm__am': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'am'\n }),\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.am'),\n \"variant\": props.disabled && props.period === 'am' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'am' ? emit('update:period', 'am') : null\n }, null), _createVNode(VBtn, {\n \"active\": props.period === 'pm',\n \"color\": props.period === 'pm' ? props.color : undefined,\n \"class\": _normalizeClass({\n 'v-time-picker-controls__ampm__pm': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'pm'\n }),\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.pm'),\n \"variant\": props.disabled && props.period === 'pm' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'pm' ? emit('update:period', 'pm') : null\n }, null)])])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTimePickerControls.js.map","import { createElementVNode as _createElementVNode, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTimePicker.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VTimePickerClock } from \"./VTimePickerClock.js\";\nimport { VTimePickerControls } from \"./VTimePickerControls.js\";\nimport { makeVPickerProps, VPicker } from \"../../labs/VPicker/VPicker.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { createRange, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nconst rangeHours24 = createRange(24);\nconst rangeHours12am = createRange(12);\nconst rangeHours12pm = rangeHours12am.map(v => v + 12);\nconst range60 = createRange(60);\nexport const makeVTimePickerProps = propsFactory({\n allowedHours: [Function, Array],\n allowedMinutes: [Function, Array],\n allowedSeconds: [Function, Array],\n disabled: Boolean,\n format: {\n type: String,\n default: 'ampm'\n },\n max: String,\n min: String,\n viewMode: {\n type: String,\n default: 'hour'\n },\n period: {\n type: String,\n default: 'am',\n validator: v => ['am', 'pm'].includes(v)\n },\n modelValue: null,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n ...omit(makeVPickerProps({\n title: '$vuetify.timePicker.title'\n }), ['landscape'])\n}, 'VTimePicker');\nexport const VTimePicker = genericComponent()({\n name: 'VTimePicker',\n props: makeVTimePickerProps(),\n emits: {\n 'update:hour': val => true,\n 'update:minute': val => true,\n 'update:period': val => true,\n 'update:second': val => true,\n 'update:modelValue': val => true,\n 'update:viewMode': val => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const inputHour = ref(null);\n const inputMinute = ref(null);\n const inputSecond = ref(null);\n const lazyInputHour = ref(null);\n const lazyInputMinute = ref(null);\n const lazyInputSecond = ref(null);\n const period = useProxiedModel(props, 'period', 'am');\n const viewMode = useProxiedModel(props, 'viewMode', 'hour');\n const controlsRef = ref(null);\n const clockRef = ref(null);\n const isAllowedHourCb = computed(() => {\n let cb;\n if (props.allowedHours instanceof Array) {\n cb = val => props.allowedHours.includes(val);\n } else {\n cb = props.allowedHours;\n }\n if (!props.min && !props.max) return cb;\n const minHour = props.min ? Number(props.min.split(':')[0]) : 0;\n const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;\n return val => {\n return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));\n };\n });\n const isAllowedMinuteCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n if (props.allowedMinutes instanceof Array) {\n cb = val => props.allowedMinutes.includes(val);\n } else {\n cb = props.allowedMinutes;\n }\n if (!props.min && !props.max) {\n return isHourAllowed ? cb : () => false;\n }\n const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];\n const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];\n const minTime = minHour * 60 + Number(minMinute);\n const maxTime = maxHour * 60 + Number(maxMinute);\n return val => {\n const time = 60 * inputHour.value + val;\n return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));\n };\n });\n const isAllowedSecondCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n const isMinuteAllowed = isHourAllowed && (!isAllowedMinuteCb.value || inputMinute.value === null || isAllowedMinuteCb.value(inputMinute.value));\n if (props.allowedSeconds instanceof Array) {\n cb = val => props.allowedSeconds.includes(val);\n } else {\n cb = props.allowedSeconds;\n }\n if (!props.min && !props.max) {\n return isMinuteAllowed ? cb : () => false;\n }\n const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];\n const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];\n const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);\n const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);\n return val => {\n const time = 3600 * inputHour.value + 60 * inputMinute.value + val;\n return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));\n };\n });\n const isAmPm = computed(() => {\n return props.format === 'ampm';\n });\n watch(() => props.period, val => setPeriod(val));\n watch(() => props.modelValue, val => setInputData(val));\n onMounted(() => {\n setInputData(props.modelValue);\n });\n function genValue() {\n if (inputHour.value != null && inputMinute.value != null && (!props.useSeconds || inputSecond.value != null)) {\n return `${pad(inputHour.value)}:${pad(inputMinute.value)}` + (props.useSeconds ? `:${pad(inputSecond.value)}` : '');\n }\n return null;\n }\n function emitValue() {\n const value = genValue();\n if (value !== null) emit('update:modelValue', value);\n }\n function convert24to12(hour) {\n return hour ? (hour - 1) % 12 + 1 : 12;\n }\n function convert12to24(hour, period) {\n return hour % 12 + (period === 'pm' ? 12 : 0);\n }\n function setInputData(value) {\n if (value == null || value === '') {\n inputHour.value = null;\n inputMinute.value = null;\n inputSecond.value = null;\n } else if (value instanceof Date) {\n inputHour.value = value.getHours();\n inputMinute.value = value.getMinutes();\n inputSecond.value = value.getSeconds();\n } else {\n const [hour,, minute,, second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6);\n inputHour.value = period ? convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n inputMinute.value = parseInt(minute, 10);\n inputSecond.value = parseInt(second || 0, 10);\n }\n period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';\n }\n function firstAllowed(type, value) {\n const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;\n if (!allowedFn) return value;\n\n // TODO: clean up (Note from V2 code)\n const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n const first = range.find(v => allowedFn((v + value) % range.length + range[0]));\n return ((first || 0) + value) % range.length + range[0];\n }\n function setPeriod(val) {\n period.value = val;\n if (inputHour.value != null) {\n const newHour = inputHour.value + (period.value === 'am' ? -12 : 12);\n inputHour.value = firstAllowed('hour', newHour);\n }\n emit('update:period', val);\n emitValue();\n return true;\n }\n function onInput(value) {\n if (viewMode.value === 'hour') {\n inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;\n } else if (viewMode.value === 'minute') {\n inputMinute.value = value;\n } else {\n inputSecond.value = value;\n }\n }\n function onChange(value) {\n switch (viewMode.value || 'hour') {\n case 'hour':\n emit('update:hour', value);\n break;\n case 'minute':\n emit('update:minute', value);\n break;\n case 'second':\n emit('update:second', value);\n break;\n default:\n break;\n }\n const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);\n if (viewMode.value === 'hour') {\n viewMode.value = 'minute';\n } else if (props.useSeconds && viewMode.value === 'minute') {\n viewMode.value = 'second';\n }\n if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;\n const time = genValue();\n if (time === null) return;\n lazyInputHour.value = inputHour.value;\n lazyInputMinute.value = inputMinute.value;\n props.useSeconds && (lazyInputSecond.value = inputSecond.value);\n emitChange && emitValue();\n }\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const timePickerControlsProps = VTimePickerControls.filterProps(props);\n const timePickerClockProps = VTimePickerClock.filterProps(omit(props, ['format', 'modelValue', 'min', 'max']));\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"color\": undefined,\n \"class\": ['v-time-picker', props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createElementVNode(\"div\", {\n \"class\": \"v-time-picker__title\"\n }, [t(props.title)]),\n header: () => _createVNode(VTimePickerControls, _mergeProps(timePickerControlsProps, {\n \"ampm\": isAmPm.value,\n \"hour\": inputHour.value,\n \"minute\": inputMinute.value,\n \"period\": period.value,\n \"second\": inputSecond.value,\n \"viewMode\": viewMode.value,\n \"onUpdate:period\": val => setPeriod(val),\n \"onUpdate:viewMode\": value => viewMode.value = value,\n \"ref\": controlsRef\n }), null),\n default: () => _createVNode(VTimePickerClock, _mergeProps(timePickerClockProps, {\n \"allowedValues\": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,\n \"double\": viewMode.value === 'hour' && !isAmPm.value,\n \"format\": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),\n \"max\": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,\n \"min\": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,\n \"size\": 20,\n \"step\": viewMode.value === 'hour' ? 1 : 5,\n \"modelValue\": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,\n \"onChange\": onChange,\n \"onInput\": onInput,\n \"ref\": clockRef\n }), null),\n actions: slots.actions\n });\n });\n }\n});\n//# sourceMappingURL=VTimePicker.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Date Time Field\n|--------------------------------------------------------------------------\n|\n| A sophisticated field component for handling ISO 8601 datetime values with\n| full timezone support. This component provides a comprehensive datetime input\n| solution combining VTextField base functionality with integrated VDatePicker,\n| VTimePicker, and custom TimezonePicker components, optimized for both desktop\n| and mobile experiences.\n|\n| ## Core Features\n|\n| - **ISO 8601 Storage**: All datetimes stored as standard ISO strings with timezone\n| - **Luxon Integration**: Robust datetime parsing, formatting, and timezone handling\n| - **Triple Input Interface**: Date picker + time picker + timezone map selector\n| - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop with tabbed UI\n| - **Browser UI Suppression**: Disables native datetime pickers while preserving HTML5 benefits\n| - **Multiple Mode**: Chip-based interface for datetime arrays with unified picker\n| - **Timezone Intelligence**: Visual map selection with autocomplete fallback\n| - **Smart Constraints**: Min/max datetime validation with timezone awareness\n|\n| ## Technical Implementation\n|\n| The component uses a sophisticated three-layer picker architecture:\n|\n| ### Date Layer (VDatePicker)\n| - Visual calendar navigation with month/year selection\n| - Configurable date constraints (min, max, firstDayOfWeek)\n| - Integration with Luxon for robust date validation\n|\n| ### Time Layer (VTimePicker)\n| - 12/24 hour format support with seconds precision\n| - Smart time constraints based on selected date and datetime bounds\n| - Mobile-optimized touch interface\n|\n| ### Timezone Layer (Custom TimezonePicker)\n| - Interactive world map with IANA timezone selection\n| - Autocomplete search with timezone name and offset display\n| - Real-time timezone preview and validation\n| - Integration with system timezone detection\n|\n| Mobile devices receive special treatment:\n| - Input becomes readonly to prevent keyboard conflicts\n| - onClick:control handler directly opens VBottomSheet picker\n| - Tabbed interface (Date/Time/Timezone) for optimal touch navigation\n| - VBottomSheet prevents viewport jumping and focus issues\n|\n| ## Display Formats (Luxon-based)\n|\n| - **short**: \"9/11/2001, 8:46 AM\" (DateTime.DATETIME_SHORT)\n| - **shortWithSeconds**: \"9/11/2001, 8:46:40 AM\" (DateTime.DATETIME_SHORT_WITH_SECONDS)\n| - **med**: \"Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED)\n| - **medWithSeconds**: \"Sep 11, 2001, 8:46:40 AM\" (DateTime.DATETIME_MED_WITH_SECONDS)\n| - **medWithWeekday**: \"Tue, Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED_WITH_WEEKDAY)\n| - **full**: \"September 11, 2001 at 8:46 AM EDT\" (DateTime.DATETIME_FULL)\n| - **fullWithSeconds**: \"September 11, 2001 at 8:46:40 AM EDT\" (DateTime.DATETIME_FULL_WITH_SECONDS)\n| - **huge**: \"Tuesday, September 11, 2001 at 8:46 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE)\n| - **hugeWithSeconds**: \"Tuesday, September 11, 2001 at 8:46:40 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE_WITH_SECONDS)\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Basic datetime field -->\n| <RDateTimeField\n| v-model=\"appointmentTime\"\n| label=\"Appointment Time\"\n| displayFormat=\"med\"\n| />\n|\n| <!-- Multiple datetimes with constraints -->\n| <RDateTimeField\n| v-model=\"eventTimes\"\n| multiple\n| label=\"Event Schedule\"\n| :min=\"new Date().toISOString()\"\n| :max=\"futureDateTime\"\n| displayFormat=\"fullWithSeconds\"\n| />\n|\n| <!-- Custom picker options -->\n| <RDateTimeField\n| v-model=\"meetingTime\"\n| label=\"Meeting Time\"\n| timePickerFormat=\"24hr\"\n| :firstDayOfWeek=\"1\"\n| :showWeek=\"true\"\n| displayFormat=\"huge\"\n| />\n|\n| <!-- Read-only display -->\n| <RDateTimeField\n| v-model=\"historicalEvents\"\n| multiple\n| render-mode=\"read\"\n| displayFormat=\"fullWithSeconds\"\n| />\n| ```\n|\n| ## Timezone Handling\n|\n| All datetime values include full timezone information:\n| - IANA timezone names (e.g., \"America/New_York\")\n| - Fixed offset handling (e.g., \"+05:00\")\n| - DST transition awareness\n| - Proper ISO 8601 serialization with timezone extensions\n|\n| ## Validation\n|\n| All datetime values are validated to ensure:\n| - Valid ISO 8601 datetime format with timezone\n| - Proper Luxon DateTime parsing\n| - Timezone validity through IANA database\n| - Min/max constraint compliance across timezone boundaries\n|\n| ## Browser Compatibility\n|\n| Injected CSS suppresses native datetime picker indicators across:\n| - WebKit browsers (Safari, Chrome, Edge)\n| - Mozilla Firefox \n| - Microsoft browsers (legacy Edge, IE)\n| \n| This ensures consistent custom UI while preserving HTML5 input benefits.\n*/\n\nimport { useDisplay } from 'vuetify'\nimport { SvgIcon } from '../svg-icon'\nimport { RCustomField } from './custom'\nimport { deepmerge } from 'deepmerge-ts'\nimport { isObject } from '../common/guards'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VImg } from 'vuetify/components/VImg'\nimport { VCard } from 'vuetify/components/VCard'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VTabs } from 'vuetify/components/VTabs'\nimport { DateTime, FixedOffsetZone } from 'luxon'\nimport { VSheet } from 'vuetify/components/VSheet'\nimport { useFieldComposer } from './field_composer'\nimport { TimezonePicker } from '../timezone_picker'\nimport { VDialog } from 'vuetify/components/VDialog'\nimport { VDivider } from 'vuetify/components/VDivider'\nimport { VCombobox } from 'vuetify/components/VCombobox'\nimport { VTextField } from 'vuetify/components/VTextField'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VDatePicker } from 'vuetify/components/VDatePicker'\nimport { VTimePicker } from 'vuetify/components/VTimePicker'\nimport { VBottomSheet } from 'vuetify/components/VBottomSheet'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { default as warningSvg } from '../icons/warning.svg?url'\nimport { VToolbar, VToolbarItems } from 'vuetify/components/VToolbar'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport { useTimezoneOptions, useTimezoneZones, useCurrentTimezone, useI18n } from '../ioc'\nimport { makeVDatePickerProps } from '@nhtio/vuetifiable/components/VDatePicker/VDatePicker'\nimport { h, defineComponent, toRefs, computed, ref, onMounted, onUnmounted, watch } from 'vue'\nimport {\n toUnreactive,\n useSlot,\n mergeClasses,\n stripUndefinedValuesFromObject,\n} from '../common/utils'\nimport {\n mdiClose,\n mdiCalendar,\n mdiClock,\n mdiChevronLeft,\n mdiChevronRight,\n mdiMapClock,\n mdiChevronDown,\n mdiMenuDown,\n} from '@mdi/js'\nimport type { Zone } from 'luxon'\nimport type { SharedUnionFields } from 'type-fest'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ResourcefulTimezone } from '../services/timezones'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { RCustomFieldInputSlotArg, ExtractedRCustomFieldSlots } from './custom'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type { makeVDialogProps } from '@nhtio/vuetifiable/components/VDialog/VDialog'\nimport type { makeVBottomSheetProps } from '@nhtio/vuetifiable/components/VBottomSheet/VBottomSheet'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n VNode,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VDialogPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVDialogProps>>\ntype VBottomSheetPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBottomSheetProps>>\ntype CommonDialogPublicProps = SharedUnionFields<VDialogPublicProps | VBottomSheetPublicProps>\ntype VTextFieldSlots = ExtractSlotDefinitions<typeof VTextField.slots>\n\n/**\n * Available display format options for RDateTimeField.\n *\n * These formats correspond to Luxon's built-in DateTime locale string constants,\n * providing consistent, internationalized datetime formatting across different locales.\n * Each format includes both date and time components with varying levels of detail.\n *\n * @example\n * ```typescript\n * const formats: RDateTimeFieldDisplayFormat[] = ['short', 'med', 'fullWithSeconds']\n * // Results in: [\"9/11/2001, 8:46 AM\", \"Sep 11, 2001, 8:46 AM\", \"September 11, 2001 at 8:46:40 AM EDT\"]\n * ```\n */\nexport const RDateTimeFieldDisplayFormat = [\n 'short',\n 'shortWithSeconds',\n 'med',\n 'medWithSeconds',\n 'medWithWeekday',\n 'full',\n 'fullWithSeconds',\n 'huge',\n 'hugeWithSeconds',\n] as const\n\n/**\n * Type representing the available display format options for datetime rendering.\n *\n * Maps to Luxon DateTime constants with timezone-aware formatting:\n * - `short`: \"9/11/2001, 8:46 AM\" (DateTime.DATETIME_SHORT)\n * - `shortWithSeconds`: \"9/11/2001, 8:46:40 AM\" (DateTime.DATETIME_SHORT_WITH_SECONDS)\n * - `med`: \"Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED)\n * - `medWithSeconds`: \"Sep 11, 2001, 8:46:40 AM\" (DateTime.DATETIME_MED_WITH_SECONDS)\n * - `medWithWeekday`: \"Tue, Sep 11, 2001, 8:46 AM\" (DateTime.DATETIME_MED_WITH_WEEKDAY)\n * - `full`: \"September 11, 2001 at 8:46 AM EDT\" (DateTime.DATETIME_FULL)\n * - `fullWithSeconds`: \"September 11, 2001 at 8:46:40 AM EDT\" (DateTime.DATETIME_FULL_WITH_SECONDS)\n * - `huge`: \"Tuesday, September 11, 2001 at 8:46 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE)\n * - `hugeWithSeconds`: \"Tuesday, September 11, 2001 at 8:46:40 AM Eastern Daylight Time\" (DateTime.DATETIME_HUGE_WITH_SECONDS)\n *\n * @example\n * ```typescript\n * const format: RDateTimeFieldDisplayFormat = 'medWithWeekday'\n * // Displays as: \"Tue, Sep 11, 2001, 8:46 AM\"\n * ```\n */\nexport type RDateTimeFieldDisplayFormat = (typeof RDateTimeFieldDisplayFormat)[number]\n\nconst isValidRDateTimeFieldSingleValue = (value: unknown): boolean => {\n if ('string' !== typeof value) return false\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) return false\n return true\n}\n\nconst isValidRDateTimeFieldValue = (value: string | string[] | null | undefined): boolean => {\n if (null === value || 'undefined' === typeof value) return true\n if (Array.isArray(value)) return value.every((v) => isValidRDateTimeFieldSingleValue(v))\n return isValidRDateTimeFieldSingleValue(value)\n}\n\nconst { makeProps: makeRDateTimeFieldProps, emits: rDateTimeFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeVTextFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'appendIcon',\n 'appendInnerIcon',\n 'centerAffix',\n 'counter',\n 'counterValue',\n 'hideSpinButtons',\n 'modelModifiers',\n 'modelValue',\n 'persistentCounter',\n 'prependIcon',\n 'prependInnerIcon',\n 'rules',\n 'type',\n 'validationValue',\n 'onClick:append',\n 'onClick:appendInner',\n 'onClick:clear',\n 'onClick:prepend',\n 'onClick:prependInner',\n ]\n ),\n modelValue: {\n type: [String, Array, Object] as PropType<string | string[] | null | undefined>,\n default: undefined,\n },\n displayFormat: {\n type: String as PropType<RDateTimeFieldDisplayFormat>,\n default: 'short',\n },\n displayLocale: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n displayTimezone: {\n type: String as PropType<string | Zone | undefined>,\n default: undefined,\n },\n datePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCalendar }),\n },\n dateTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n timePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiClock }),\n },\n timeTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n timezonePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMapClock }),\n },\n timePickerFormat: {\n type: String as PropType<'24hr' | 'ampm'>,\n default: 'ampm',\n },\n timezoneTerm: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n min: {\n type: [String, Object, Date, DateTime] as PropType<\n string | Date | DateTime | null | undefined\n >,\n default: undefined,\n },\n max: {\n type: [String, Object, Date, DateTime] as PropType<\n string | Date | DateTime | null | undefined\n >,\n default: undefined,\n },\n ...pick(\n makeVDatePickerProps({\n prevIcon: () => h(SvgIcon, { d: mdiChevronLeft }),\n nextIcon: () => h(SvgIcon, { d: mdiChevronRight }),\n modeIcon: () => h(SvgIcon, { d: mdiChevronDown }),\n }),\n ['firstDayOfWeek', 'showWeek', 'prevIcon', 'nextIcon', 'modeIcon']\n ),\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: string | string[] | null | undefined) =>\n isValidRDateTimeFieldValue(value),\n 'update:model-value': (value: string | string[] | null | undefined) =>\n isValidRDateTimeFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RDateTimeField'\n)\n\n/**\n * Props factory function for RDateTimeField component.\n *\n * Creates a comprehensive props configuration that combines VTextField properties\n * with VDatePicker, VTimePicker properties and custom datetime-specific options.\n * The factory excludes incompatible VTextField props and adds datetime-specific\n * functionality including timezone selection and format options.\n *\n * @returns Props factory function for RDateTimeField component\n *\n * @example\n * ```typescript\n * const props = makeRDateTimeFieldProps()\n * // Includes: displayFormat, datePickerIcon, timePickerIcon, timezonePickerIcon,\n * // min, max, timePickerFormat, firstDayOfWeek, etc.\n * ```\n */\nexport { makeRDateTimeFieldProps }\n\n/**\n * Type definition for RDateTimeField component props.\n *\n * Extracted from the props factory to provide type safety for component usage.\n * Includes all VTextField props (except incompatible ones), VDatePicker/VTimePicker options,\n * and custom datetime formatting/display properties with full timezone support.\n *\n * Key prop categories:\n * - **VTextField Props**: Standard text field properties (label, variant, etc.)\n * - **VDatePicker Props**: Calendar-specific options (min, max, firstDayOfWeek, etc.)\n * - **VTimePicker Props**: Time selection options (format, useSeconds, etc.)\n * - **Timezone Props**: TimezonePicker integration and timezone selection\n * - **Display Options**: displayFormat for Luxon-based datetime formatting\n * - **Common Field Props**: Shared resourceful field properties (multiple, renderMode, etc.)\n *\n * @example\n * ```typescript\n * const props: RDateTimeFieldProps = {\n * modelValue: \"2024-01-15T10:30:00-05:00[America/New_York]\",\n * label: \"Meeting Time\",\n * displayFormat: \"fullWithSeconds\",\n * timePickerFormat: \"24hr\",\n * min: \"2024-01-01T00:00:00Z\",\n * max: \"2024-12-31T23:59:59Z\",\n * showWeek: true\n * }\n * ```\n */\nexport type RDateTimeFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRDateTimeFieldProps>>\ntype VTextFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTextFieldProps>>\n\nconst enforceRDateTimeFieldStyles = () => {\n const styleId = 'resourceful-field-datetime-style'\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style')\n style.id = styleId\n style.textContent = `.resourceful__field__datetime input[type=date]::-webkit-calendar-picker-indicator,.resourceful__field__datetime input[type=date]::-webkit-inner-spin-button,.resourceful__field__datetime input[type=date]::-webkit-clear-button,.resourceful__field__datetime input[type=time]::-webkit-calendar-picker-indicator,.resourceful__field__datetime input[type=time]::-webkit-inner-spin-button,.resourceful__field__datetime input[type=time]::-webkit-clear-button{display:none !important;-webkit-appearance:none !important}.resourceful__field__datetime input[type=date]::-moz-calendar-picker-indicator,.resourceful__field__datetime input[type=time]::-moz-calendar-picker-indicator{display:none !important}.resourceful__field__datetime input[type=date]::-ms-clear,.resourceful__field__datetime input[type=date]::-ms-reveal,.resourceful__field__datetime input[type=time]::-ms-clear,.resourceful__field__datetime input[type=time]::-ms-reveal{display:none !important}`\n document.head.appendChild(style)\n }\n}\n\nconst getAsNormalizedDateTime = (\n value: string | Date | DateTime | null | undefined\n): DateTime | undefined => {\n if (null === value || 'undefined' === typeof value) return undefined\n if ((isObject(value) && DateTime.isDateTime(value)) || value instanceof DateTime) {\n return value\n }\n if (value instanceof Date) {\n return DateTime.fromJSDate(value)\n }\n if ('string' === typeof value) {\n const dt = DateTime.fromISO(value, { setZone: true })\n if (dt.isValid) return dt\n }\n return undefined\n}\n\n/**\n * RDateTimeField - A sophisticated Vue component for ISO 8601 datetime input with full timezone support.\n *\n * This component provides the most comprehensive datetime input solution available,\n * combining the accessibility and validation benefits of HTML5 datetime inputs with\n * a completely custom visual interface. It features a triple-layer picker system\n * (date, time, timezone) with intelligent mobile optimization and robust timezone handling.\n *\n * ## Key Features\n *\n * - **Triple Input Interface**: Integrated VDatePicker + VTimePicker + TimezonePicker\n * - **Mobile Optimized**: VBottomSheet with tabs on mobile, VDialog on desktop\n * - **ISO 8601 Standard**: All datetimes stored as ISO strings with full timezone information\n * - **Luxon Integration**: Advanced datetime parsing, formatting, and timezone manipulation\n * - **Browser UI Suppression**: Custom pickers while preserving HTML5 benefits\n * - **Multiple Values**: Chip-based interface for datetime arrays\n * - **Smart Constraints**: Min/max datetime validation with timezone boundary awareness\n * - **Visual Timezone Selection**: Interactive world map with autocomplete fallback\n * - **Intelligent Readonly**: Mobile inputs become readonly to prevent keyboard conflicts\n * - **Advanced Validation**: Ensures valid ISO datetimes with timezone compliance\n *\n * ## Technical Architecture\n *\n * The component uses a sophisticated multi-layer picker approach:\n *\n * ### Base Layer (RCustomField)\n * - Built on the refactored RCustomField for consistent behavior\n * - HTML5 date/time input types for validation and mobile optimization\n * - Injected CSS suppresses all native browser datetime picker UI\n * - Maintains accessibility and semantic benefits\n *\n * ### Date Layer (VDatePicker)\n * - Full calendar navigation with month/year/decade selection\n * - Configurable constraints with timezone-aware min/max validation\n * - Visual indication of constraint violations through tab styling\n *\n * ### Time Layer (VTimePicker)\n * - 12/24 hour format support with optional seconds precision\n * - Smart time constraints based on selected date and global bounds\n * - Analog and digital time input methods\n *\n * ### Timezone Layer (Custom TimezonePicker)\n * - Interactive SVG world map with IANA timezone regions\n * - Autocomplete VCombobox for quick timezone search\n * - Real-time preview of selected timezone with offset display\n * - Integration with system timezone detection and browser APIs\n *\n * ### Mobile Layer (Touch Optimization)\n * - Input becomes readonly on mobile to prevent keyboard conflicts\n * - onClick:control handler analyzes click position for smart focusing\n * - VBottomSheet with tabbed interface for optimal touch navigation\n * - Tab indicators show which sections need completion (date/time/timezone)\n *\n * ### Validation Layer\n * - Ensures ISO 8601 compliance with timezone extensions\n * - Validates timezone names against IANA database\n * - Luxon-based parsing for robust datetime validation\n * - Cross-timezone constraint validation for min/max bounds\n *\n * ## Data Flow\n *\n * 1. **Input**: User interacts with date picker, time picker, or timezone map\n * 2. **Local State**: Individual components (date, time, timezone) update local reactive state\n * 3. **Combination**: Computed property combines parts using Luxon DateTime.fromSQL()\n * 4. **Validation**: Luxon validates combined datetime and timezone\n * 5. **Serialization**: Valid datetime converted to ISO 8601 with timezone extension\n * 6. **Storage**: ISO string stored in modelValue with proper timezone information\n * 7. **Display**: Luxon formats for presentation using displayFormat and locale\n * 8. **Emission**: Validated ISO string emitted to parent component\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Basic datetime selection -->\n * <RDateTimeField\n * v-model=\"selectedDateTime\"\n * label=\"Select Date & Time\"\n * displayFormat=\"med\"\n * />\n *\n * <!-- Advanced configuration -->\n * <RDateTimeField\n * v-model=\"meetingTime\"\n * label=\"Meeting Time\"\n * displayFormat=\"fullWithSeconds\"\n * timePickerFormat=\"24hr\"\n * :min=\"DateTime.now().toISO()\"\n * :max=\"DateTime.now().plus({ months: 6 }).toISO()\"\n * :firstDayOfWeek=\"1\"\n * :showWeek=\"true\"\n * />\n *\n * <!-- Multiple datetimes -->\n * <RDateTimeField\n * v-model=\"eventSchedule\"\n * multiple\n * label=\"Event Schedule\"\n * displayFormat=\"medWithWeekday\"\n * :min=\"todayISO\"\n * timePickerFormat=\"24hr\"\n * />\n *\n * <!-- Read-only display -->\n * <RDateTimeField\n * v-model=\"historicalEvents\"\n * multiple\n * render-mode=\"read\"\n * displayFormat=\"huge\"\n * />\n *\n * <!-- Custom terminology -->\n * <RDateTimeField\n * v-model=\"appointmentTime\"\n * label=\"Appointment\"\n * dateTerm=\"Date\"\n * timeTerm=\"Time\"\n * timezoneTerm=\"Location\"\n * displayFormat=\"full\"\n * />\n * </template>\n * ```\n *\n * ## Timezone Intelligence\n *\n * The component provides sophisticated timezone handling:\n * - **IANA Support**: Full IANA timezone database integration\n * - **DST Awareness**: Automatic daylight saving time transitions\n * - **Fixed Offsets**: Support for non-IANA fixed offset timezones\n * - **Visual Selection**: Interactive world map for intuitive timezone picking\n * - **Search Interface**: Autocomplete for quick timezone lookup\n * - **System Integration**: Automatic detection of user's system timezone\n * - **Smart Input Handling**: Handles both object and string values from combobox selection\n *\n * ## Constraint Validation\n *\n * Advanced min/max constraint system:\n * - **Cross-timezone**: Constraints work across different timezone selections\n * - **Smart Time Limits**: Time picker adapts based on selected date and constraints\n * - **Visual Feedback**: Tab indicators show constraint violations\n * - **Impossible States**: Clever use of impossible time ranges for invalid date selections\n *\n * ## Performance Characteristics\n *\n * - **Computed Properties**: Efficient reactive updates using Vue 3's computed system\n * - **Luxon Caching**: Leverages Luxon's internal caching for datetime operations\n * - **Lazy Rendering**: Picker components only render when dialog is open\n * - **Memory Management**: Proper cleanup of event listeners and reactive state\n *\n * ## Browser Compatibility\n *\n * Automatic CSS injection handles native picker suppression across:\n * - WebKit: Safari, Chrome, Edge (webkit-calendar-picker-indicator)\n * - Mozilla: Firefox (moz-calendar-picker-indicator)\n * - Microsoft: Legacy Edge, IE (ms-clear, ms-reveal)\n *\n * This ensures consistent custom UI while preserving HTML5 input benefits\n * like validation, accessibility, and mobile keyboard optimization.\n */\nexport const RDateTimeField = defineComponent({\n name: 'RDateTimeField',\n props: makeRDateTimeFieldProps(),\n emits: rDateTimeFieldEmits,\n slots: Object as SlotsType<VTextFieldSlots>,\n setup(props, { emit, slots }) {\n const t = useI18n()\n const { mobile } = useDisplay()\n const {\n modelValue,\n theme,\n rounded,\n tile,\n loading,\n class: className,\n style,\n bgColor,\n clearable,\n clearIcon,\n active,\n color,\n baseColor,\n dirty,\n disabled,\n glow,\n error,\n flat,\n iconColor,\n label,\n persistentClear,\n reverse,\n singleLine,\n variant,\n focused,\n errorMessages,\n maxErrors,\n name,\n readonly,\n validateOn,\n width,\n minWidth,\n maxWidth,\n density,\n id,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n autofocus,\n prefix,\n placeholder,\n persistentPlaceholder,\n suffix,\n role,\n displayFormat,\n displayLocale,\n displayTimezone,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n noValuesText,\n datePickerIcon,\n timePickerIcon,\n firstDayOfWeek,\n max,\n min,\n showWeek,\n prevIcon,\n nextIcon,\n modeIcon,\n dateTerm,\n timeTerm,\n timezonePickerIcon,\n timezoneTerm,\n timePickerFormat,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const normalizedClassName = computed(() =>\n mergeClasses(className.value, ['resourceful__field__datetime'])\n )\n const normalizedDateTerm = computed(() => dateTerm.value || t('general.date'))\n const normalizedTimeTerm = computed(() => timeTerm.value || t('general.time'))\n const normalizedTimezoneTerm = computed(() => timezoneTerm.value || t('general.timezone'))\n const normalizedMin = computed<DateTime | undefined>(() => getAsNormalizedDateTime(min.value))\n const normalizedMax = computed<DateTime | undefined>(() => getAsNormalizedDateTime(max.value))\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n theme,\n disabled,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n focused,\n noValuesText,\n 'class': normalizedClassName,\n 'onUpdate:focused': toRefs(props)['onUpdate:focused'],\n 'onClick:append': toRefs(props)['onClick:append'],\n 'onClick:appendInner': toRefs(props)['onClick:appendInner'],\n 'onClick:clear': toRefs(props)['onClick:clear'],\n 'onClick:prependInner': toRefs(props)['onClick:prependInner'],\n 'onClick:prepend': toRefs(props)['onClick:prepend'],\n 'onMousedown:control': toRefs(props)['onMousedown:control'],\n 'onClick:control': toRefs(props)['onClick:control'],\n error,\n errorMessages,\n dirty,\n onBlur,\n onChange,\n onInput,\n }\n const stringifier = computed<RFieldStringifier<string>>(\n () => (value: string | null | undefined) => {\n if ('undefined' === typeof value || null === value) return ''\n let dt = DateTime.fromISO(value, { setZone: true })\n if ('string' === typeof displayLocale.value && '' !== displayLocale.value && dt.isValid) {\n const changed = dt.setLocale(displayLocale.value)\n if (changed.isValid) {\n dt = changed\n }\n }\n if (\n 'string' === typeof displayTimezone.value &&\n '' !== displayTimezone.value &&\n dt.isValid\n ) {\n let changed: DateTime = dt\n if ('UTC' === displayTimezone.value) {\n changed = changed.setZone('utc')\n } else {\n changed = changed.setZone(displayTimezone.value)\n }\n if (changed.isValid) {\n dt = changed\n }\n }\n if (!dt.isValid) return ''\n switch (displayFormat.value) {\n case 'hugeWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_HUGE_WITH_SECONDS)\n case 'huge':\n return dt.toLocaleString(DateTime.DATETIME_HUGE)\n case 'fullWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_FULL_WITH_SECONDS)\n case 'full':\n return dt.toLocaleString(DateTime.DATETIME_FULL)\n case 'medWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS)\n case 'medWithWeekday':\n return dt.toLocaleString(DateTime.DATETIME_MED_WITH_WEEKDAY)\n case 'med':\n return dt.toLocaleString(DateTime.DATETIME_MED)\n case 'shortWithSeconds':\n return dt.toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)\n default:\n return dt.toLocaleString(DateTime.DATETIME_SHORT)\n }\n }\n )\n const vTextFieldBindings = computed<VTextFieldPublicProps & Record<string, any>>(\n () =>\n ({\n theme: theme.value,\n rounded: rounded.value,\n tile: tile.value,\n loading: loading.value,\n class: normalizedClassName.value,\n style: style.value,\n bgColor: bgColor.value,\n clearable: clearable.value,\n clearIcon: clearIcon.value,\n active: active.value,\n color: color.value,\n baseColor: baseColor.value,\n dirty: dirty.value,\n disabled: disabled.value,\n glow: glow.value,\n error: error.value,\n flat: flat.value,\n iconColor: iconColor.value,\n label: label.value,\n persistentClear: persistentClear.value,\n reverse: reverse.value,\n singleLine: singleLine.value,\n variant: variant.value,\n focused: focused.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n width: width.value,\n minWidth: minWidth.value,\n maxWidth: maxWidth.value,\n density: density.value,\n id: id.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n autofocus: autofocus.value,\n prefix: prefix.value,\n placeholder: placeholder.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n type: 'date',\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }) satisfies VTextFieldPublicProps & Record<string, any>\n )\n const dateInputRef = ref<HTMLInputElement>()\n const datePickerBtnRef = ref<VBtn>()\n const timeInputRef = ref<HTMLInputElement>()\n const timePickerBtnRef = ref<VBtn>()\n const timezonePickerBtnRef = ref<VBtn>()\n const timezoneOptions = useTimezoneOptions()\n const timezoneZones = useTimezoneZones()\n const currentTz = useCurrentTimezone()\n const localDateValue = ref<string | null | undefined>(undefined)\n const localTimeValue = ref<string | null | undefined>(undefined)\n const localTimezoneValue = ref<string | null | undefined>(undefined)\n const dialogTab = ref<'date' | 'time' | 'timezone' | null>(null)\n const RCustomFieldRef = ref<RCustomField>()\n const renderedFieldWidth = ref(0)\n const useSmallWidthVariant = computed(\n () => mobile.value || (renderedFieldWidth.value !== 0 && renderedFieldWidth.value < 420)\n )\n let resizeObserver: ResizeObserver | undefined\n const onResizeOberserverTriggered = (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.contentBoxSize) {\n const contentBoxSize = Array.isArray(entry.contentBoxSize)\n ? entry.contentBoxSize[0]\n : entry.contentBoxSize\n renderedFieldWidth.value = contentBoxSize.inlineSize\n } else {\n renderedFieldWidth.value = entry.contentRect.width\n }\n }\n }\n const isFocused = (e: MouseEvent) => {\n const vInputEl = RCustomFieldRef.value ? RCustomFieldRef.value.$el || null : null\n return (\n (vInputEl && e.target && vInputEl.contains(e.target as Node)) || dialogTab.value !== null\n )\n }\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n add,\n isMultiAdd,\n }) => {\n const normalizedLocalTimeValue = computed<string | null | undefined>(() => {\n if ('string' !== typeof localTimeValue.value) return localTimeValue.value\n if ('' === localTimeValue.value) return localTimeValue.value\n const split = localTimeValue.value.split(':')\n if (split.length === 2) {\n split.push('00')\n }\n return split.join(':')\n })\n const combineDateTimeParts = (\n datePart: string | null | undefined,\n timePart: string | null | undefined,\n zonePart: string | null | undefined\n ): DateTime | null | undefined => {\n const parts = [datePart, timePart]\n if (parts.some((p) => 'undefined' === typeof p)) return undefined\n if (parts.some((p) => null === p || '' === p)) return null\n const resourcefulTimezone: ResourcefulTimezone | undefined = timezoneZones.find(\n (z) => z.name === zonePart\n )\n const zone = resourcefulTimezone?.iana ?? currentTz?.name ?? 'UTC'\n const dt = DateTime.fromSQL(parts.join(' '), {\n zone: zone,\n setZone: true,\n })\n if (!dt.isValid) return undefined\n return dt\n }\n const computedModelValue = computed({\n get: () => {\n const dt = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if ('undefined' === typeof dt || null === dt) return dt\n return dt.toISO({\n suppressMilliseconds: true,\n extendedZone: dt.year > 1970 && !(dt.zone instanceof FixedOffsetZone),\n precision: 'seconds',\n })\n },\n set: (value: string | null | undefined) => {\n if ('undefined' === typeof value) {\n localDateValue.value = undefined\n localTimeValue.value = undefined\n localTimezoneValue.value = undefined\n return\n }\n if (null === value) {\n localDateValue.value = null\n localTimeValue.value = null\n localTimezoneValue.value = null\n return\n }\n const dt = DateTime.fromISO(value, {\n setZone: true,\n })\n if (!dt.isValid) {\n localDateValue.value = undefined\n localTimeValue.value = undefined\n localTimezoneValue.value = undefined\n return\n }\n const asSqlDate = dt.toSQLDate()\n const asSqlTime = dt.toFormat('HH:mm:ss')\n const asTimezone = dt.zone instanceof FixedOffsetZone ? `Etc/${dt.zoneName}` : dt.zoneName\n localDateValue.value = asSqlDate\n localTimeValue.value = asSqlTime\n localTimezoneValue.value = asTimezone\n },\n })\n const computedMinDate = computed<string | undefined>(() =>\n normalizedMin.value ? (normalizedMin.value.toISODate() ?? undefined) : undefined\n )\n const computedMaxDate = computed<string | undefined>(() =>\n normalizedMax.value ? (normalizedMax.value.toISODate() ?? undefined) : undefined\n )\n const computedMinTime = computed<string | undefined>(() => {\n if (!normalizedMin.value) return undefined\n const currentDto = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if (!currentDto) return '23:59:59'\n if (normalizedMin.value.hasSame(currentDto, 'day')) {\n return normalizedMin.value.toFormat('HH:mm:ss')\n } else if (currentDto < normalizedMin.value.startOf('day')) {\n return '23:59:59'\n }\n return undefined\n })\n const computedMaxTime = computed<string | undefined>(() => {\n if (!normalizedMax.value) return undefined\n const currentDto = combineDateTimeParts(\n localDateValue.value,\n normalizedLocalTimeValue.value,\n localTimezoneValue.value\n )\n if (!currentDto) return '00:00:00'\n if (normalizedMax.value.hasSame(currentDto, 'day')) {\n return normalizedMax.value.toFormat('HH:mm:ss')\n } else if (currentDto > normalizedMax.value.endOf('day')) {\n return '00:00:00'\n }\n return undefined\n })\n const currentTimezoneLabel = computed(() => {\n const current = localTimezoneValue.value || currentTz?.name || 'UTC'\n const option = timezoneOptions.find((o) => o.value === current)\n return option ? option.label : current\n })\n watch(computedModelValue, (is, was) => {\n if (is === was) return\n fieldBindings['onUpdate:modelValue'](is)\n fieldBindings['onUpdate:model-value'](is)\n })\n if (isObject(fieldBindings)) {\n computedModelValue.value = fieldBindings.modelValue\n }\n const datePickerOpen = computed({\n get: () => 'string' === typeof dialogTab.value,\n set: (isOpen: boolean) => {\n dialogTab.value = isOpen ? dialogTab.value || 'date' : null\n },\n })\n const commonDialogBindings = computed<CommonDialogPublicProps>(() =>\n deepmerge(\n {\n modelValue: datePickerOpen.value,\n retainFocus: true,\n theme: toUnreactive(theme),\n },\n {\n 'onUpdate:modelValue': (is: boolean) => {\n datePickerOpen.value = is\n },\n }\n )\n )\n const dialogWindowBindings = computed<VDialogPublicProps>(() =>\n deepmerge(commonDialogBindings.value, {\n maxWidth: 500,\n maxHeight: 600,\n } satisfies VDialogPublicProps)\n )\n const dialogBottomSheetBindings = computed<VBottomSheetPublicProps>(() =>\n deepmerge(commonDialogBindings.value, {} satisfies VBottomSheetPublicProps)\n )\n const onDatePickerUpdateModelValue = (value: unknown) => {\n let emitable: string | null = null\n if (value instanceof Date) {\n emitable = DateTime.fromJSDate(value).toLocal().toISODate()\n } else if ('string' === typeof value) {\n emitable = value\n } else if (null === value) {\n emitable = null\n }\n localDateValue.value = emitable\n if (!localTimeValue.value && datePickerOpen.value) {\n dialogTab.value = 'time'\n }\n }\n const alertIcon = () => h(VImg, { src: warningSvg })\n const datetimePicker = computed<VNode>(() =>\n h(VCard, { class: ['d-flex', 'flex-column'] }, () => [\n h(\n VToolbar,\n {\n color: 'transparent',\n flat: true,\n class: ['flex-grow-0'],\n density: 'compact',\n },\n () => [\n h(VTabs, {\n grow: true,\n showArrows: true,\n items: [\n {\n value: 'date',\n text: normalizedDateTerm.value,\n prependIcon: datePickerIcon.value,\n appendIcon: 'string' !== typeof localDateValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localDateValue.value ? 'warning' : undefined,\n },\n {\n value: 'time',\n text: normalizedTimeTerm.value,\n prependIcon: timePickerIcon.value,\n appendIcon: 'string' !== typeof localTimeValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localTimeValue.value ? 'warning' : undefined,\n },\n {\n value: 'timezone',\n text: normalizedTimezoneTerm.value,\n prependIcon: timezonePickerIcon.value,\n appendIcon:\n 'string' !== typeof localTimezoneValue.value ? alertIcon : undefined,\n color: 'string' !== typeof localTimezoneValue.value ? 'warning' : undefined,\n },\n ],\n mandatory: true,\n modelValue: dialogTab.value,\n nextIcon: nextIcon.value,\n prevIcon: prevIcon.value,\n ...{\n 'onUpdate:modelValue': (val: unknown) => {\n if ('string' === typeof val && ['date', 'time', 'timezone'].includes(val)) {\n dialogTab.value = val as 'date' | 'time' | 'timezone'\n }\n },\n },\n }),\n h(VToolbarItems, {}, () => [\n h(\n VBtn,\n {\n icon: true,\n onClick: () => {\n datePickerOpen.value = false\n },\n },\n () => [\n h(VIcon, {\n icon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ]\n ),\n ]),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0'] }),\n 'date' !== dialogTab.value\n ? null\n : h(VDatePicker, {\n bgColor: 'transparent',\n disabled: disabled.value,\n divided: false,\n elevation: 0,\n firstDayOfWeek: firstDayOfWeek.value,\n showAdjacentMonths: true,\n showWeek: showWeek.value,\n width: '100%',\n hideHeader: false,\n prevIcon: prevIcon.value,\n nextIcon: nextIcon.value,\n modeIcon: modeIcon.value,\n modelValue: localDateValue.value,\n min: computedMinDate.value,\n max: computedMaxDate.value,\n ...{\n 'onUpdate:model-value': (v: unknown) => onDatePickerUpdateModelValue(v),\n 'onUpdate:modelValue': (v: unknown) => onDatePickerUpdateModelValue(v),\n },\n }),\n 'time' !== dialogTab.value\n ? null\n : h(VTimePicker, {\n bgColor: 'transparent',\n disabled: disabled.value,\n divided: false,\n elevation: 0,\n width: '100%',\n hideHeader: false,\n useSeconds: true,\n prevIcon: prevIcon.value,\n nextIcon: nextIcon.value,\n modelValue: localTimeValue.value,\n format: timePickerFormat.value,\n min: computedMinTime.value,\n max: computedMaxTime.value,\n ...{\n 'onUpdate:model-value': (v: unknown) => {\n localTimeValue.value = v as string | null | undefined\n },\n 'onUpdate:modelValue': (v: unknown) => {\n localTimeValue.value = v as string | null | undefined\n },\n },\n }),\n 'timezone' !== dialogTab.value\n ? null\n : h(\n VSheet,\n {\n bgColor: 'transparent',\n divided: false,\n elevation: 0,\n width: '100%',\n class: ['d-flex', 'flex-column', 'pa-4'],\n },\n () => [\n h(\n VToolbar,\n {\n flat: true,\n color: 'transparent',\n density: 'compact',\n class: ['flex-grow-0'],\n },\n () => [\n h(\n 'div',\n { class: ['py-1', 'w-100'] },\n h(VCombobox, {\n hideDetails: true,\n variant: 'outlined',\n density: 'compact',\n disabled: disabled.value,\n clearable: !disabled.value,\n clearIcon: clearIcon.value,\n menuIcon: () => h(SvgIcon, { d: mdiMenuDown }),\n label: normalizedTimezoneTerm.value,\n items: timezoneOptions,\n itemTitle: 'label',\n itemValue: 'value',\n modelValue: localTimezoneValue.value ?? null,\n ...{\n 'onUpdate:modelValue': (\n v: { value: string } | string | null | undefined\n ) => {\n if (isObject(v) && 'value' in v) {\n localTimezoneValue.value = v.value\n } else {\n localTimezoneValue.value = v as string | null | undefined\n }\n },\n },\n })\n ),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0', 'my-2'] }),\n h(TimezonePicker, {\n class: ['flex-grow-1'],\n modelValue: localTimezoneValue.value ?? null,\n disabled: disabled.value,\n bgColor: 'surface-light',\n ...{\n 'onUpdate:modelValue': (v: string | null | undefined) => {\n localTimezoneValue.value = v\n },\n },\n }),\n ]\n ),\n ])\n )\n const appendInnerSlot = useSlot<VTextFieldSlots>('append-inner', slots)\n return h(\n RCustomField,\n {\n ref: RCustomFieldRef,\n ...vTextFieldBindings.value,\n ...stripUndefinedValuesFromObject({\n ...fieldBindings,\n 'modelValue': undefined,\n 'onUpdate:model-value': undefined,\n 'onUpdate:modelValue': undefined,\n }),\n modelValue: computedModelValue.value,\n active: true,\n hideDetails: isMultiAdd ? true : hideDetails.value,\n readonly: isMultiAdd ? false : mobile.value ? true : readonly.value || false,\n class: isMultiAdd ? ['resourceful__field__datetime'] : normalizedClassName.value,\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n isFocused,\n ...{\n 'onClick:control': (e: MouseEvent) => {\n if (!e) return\n const { clientX: x, clientY: y } = e\n const rCustomFieldEl = RCustomFieldRef.value?.$el || null\n if (!rCustomFieldEl) return\n const rCustomFieldElRect = rCustomFieldEl.getBoundingClientRect()\n if (\n x < rCustomFieldElRect.left ||\n x > rCustomFieldElRect.right ||\n y < rCustomFieldElRect.top ||\n y > rCustomFieldElRect.bottom\n )\n return\n const refs = [dateInputRef.value, timeInputRef.value]\n for (const inputRef of refs) {\n if (!inputRef) continue\n const refRect = inputRef.getBoundingClientRect()\n if (\n x >= refRect.left &&\n x <= refRect.right &&\n y >= refRect.top &&\n y <= refRect.bottom\n ) {\n inputRef.focus()\n return\n }\n }\n if (dateInputRef.value) {\n dateInputRef.value.focus()\n return\n }\n },\n 'onClick:clear': () => {\n localDateValue.value = null\n localTimeValue.value = null\n localTimezoneValue.value = null\n },\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n default: ({ props: defaultSlotProps, focus, blur }: RCustomFieldInputSlotArg) => {\n const inputProps = stripUndefinedValuesFromObject({\n ...defaultSlotProps,\n 'modelValue': undefined,\n 'onUpdate:model-value': undefined,\n 'onUpdate:modelValue': undefined,\n })\n const inputReadonly = isMultiAdd\n ? false\n : useSmallWidthVariant.value\n ? true\n : readonly.value || false\n const disabledOrReadonly =\n readonly.value || disabled.value || inputProps.disabled || false\n return h(\n 'div',\n {\n class: [\n 'w-100',\n 'align-center',\n 'flex-nowrap',\n 'd-flex',\n 'resourceful__field__datetime',\n ],\n id: defaultSlotProps.id,\n },\n [\n h(\n 'div',\n {\n class: [\n 'flex-grow-1',\n 'text-truncate',\n {\n 'd-none': !useSmallWidthVariant.value,\n },\n ],\n style: {\n paddingInline: 'var(--v-field-padding-start) var(--v-field-padding-end)',\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n onClick: (e: MouseEvent) => {\n focus()\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'date'\n },\n onFocus: focus,\n onBlur: blur,\n },\n 'string' === typeof computedModelValue.value\n ? stringifier.value(computedModelValue.value)\n : '\\u200C'\n ),\n h('input', {\n ref: dateInputRef,\n class: mergeClasses(defaultSlotProps.class, [\n 'flex-grow-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ]),\n type: 'date',\n value: localDateValue.value,\n onInput: (e: Event) => {\n const el = e.target as HTMLInputElement\n localDateValue.value = el.value\n },\n onFocus: focus,\n onBlur: blur,\n ...stripUndefinedValuesFromObject({\n ...inputProps,\n class: undefined,\n id: defaultSlotProps.id ? [defaultSlotProps.id, 'date'].join('-') : undefined,\n type: undefined,\n value: undefined,\n onInput: undefined,\n persistentPlaceholder: undefined,\n readonly: inputReadonly,\n }),\n size: 1,\n min: computedMinDate.value,\n max: computedMaxDate.value,\n }),\n h(\n 'div',\n {\n class: ['flex-grow-0'],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: datePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: 1,\n icon: true,\n size: 'small',\n variant: 'text',\n density: toUnreactive(density),\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'date'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () =>\n h(VIcon, {\n icon:\n 'string' !== typeof localDateValue.value\n ? alertIcon\n : datePickerIcon.value,\n size: 'small',\n })\n )\n ),\n h('input', {\n ref: timeInputRef,\n class: mergeClasses(defaultSlotProps.class, [\n 'flex-grow-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ]),\n type: 'time',\n value: localTimeValue.value,\n onInput: (e: Event) => {\n const el = e.target as HTMLInputElement\n localTimeValue.value = el.value\n },\n onFocus: focus,\n onBlur: blur,\n ...stripUndefinedValuesFromObject({\n ...inputProps,\n autofocus: undefined,\n class: undefined,\n id: defaultSlotProps.id ? [defaultSlotProps.id, 'time'].join('-') : undefined,\n type: undefined,\n value: undefined,\n onInput: undefined,\n persistentPlaceholder: undefined,\n readonly: inputReadonly,\n }),\n size: 1,\n min: computedMinTime.value,\n max: computedMaxTime.value,\n }),\n h(\n 'div',\n {\n class: [\n 'flex-grow-0',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: timePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: 1,\n icon: true,\n size: 'small',\n variant: 'text',\n density: toUnreactive(density),\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'time'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () =>\n h(VIcon, {\n icon:\n 'string' !== typeof localTimeValue.value\n ? alertIcon\n : timePickerIcon.value,\n size: 'small',\n })\n )\n ),\n h(\n 'div',\n {\n class: [\n 'flex-grow-0',\n 'ms-1',\n {\n 'd-none': useSmallWidthVariant.value,\n },\n ],\n style: {\n minHeight:\n 'max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom))',\n paddingTop: 'var(--v-field-input-padding-top)',\n paddingBottom: 'var(--v-field-input-padding-bottom)',\n },\n },\n h(\n VBtn,\n {\n ref: timezonePickerBtnRef,\n ariaHidden: true,\n disabled: disabledOrReadonly,\n flat: true,\n rounded: false,\n tile: true,\n variant: 'text',\n size: 'small',\n density: 'default',\n modelValue: datePickerOpen.value,\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n dialogTab.value = 'timezone'\n },\n onFocus: focus,\n onBlur: blur,\n },\n () => [\n currentTimezoneLabel.value,\n h(VIcon, {\n icon:\n 'string' !== typeof localTimezoneValue.value\n ? alertIcon\n : timezonePickerIcon.value,\n size: 'small',\n class: ['ms-2'],\n }),\n ]\n )\n ),\n ]\n )\n },\n ...{\n 'append-inner': (\n ...args: NamedSlotParameters<ExtractedRCustomFieldSlots, 'append-inner'>\n ) => [\n mobile.value\n ? h(VBottomSheet, dialogBottomSheetBindings.value, () => datetimePicker.value)\n : h(VDialog, dialogWindowBindings.value, () => datetimePicker.value),\n // @ts-expect-error\n appendInnerSlot ? appendInnerSlot(...args) : null,\n ],\n },\n }\n )\n }\n const { composed } = useFieldComposer(\n commonProps,\n stringifier,\n singleFieldRenderer,\n emit,\n props['onUpdate:modelValue'],\n props['onUpdate:model-value'],\n modelValue,\n props.modelValue\n )\n onMounted(() => enforceRDateTimeFieldStyles())\n onMounted(() => {\n if (RCustomFieldRef.value && RCustomFieldRef.value.$el) {\n renderedFieldWidth.value = RCustomFieldRef.value.$el.clientWidth\n resizeObserver = new ResizeObserver(onResizeOberserverTriggered)\n resizeObserver.observe(RCustomFieldRef.value.$el)\n }\n })\n onUnmounted(() => {\n if (resizeObserver) {\n resizeObserver.disconnect()\n resizeObserver = undefined\n }\n })\n return composed\n },\n})\n\n/**\n * Type definition for the RDateTimeField component constructor.\n *\n * This type represents the component constructor itself, useful for:\n * - Component type annotations in parent components\n * - Ref type definitions when accessing component instances\n * - Generic component composition and higher-order component patterns\n * - TypeScript integration in component libraries and frameworks\n *\n * @example\n * ```typescript\n * // Component ref typing\n * const dateTimeFieldRef = ref<InstanceType<RDateTimeField>>()\n *\n * // Component prop type in parent\n * interface ParentProps {\n * dateTimeFieldComponent: RDateTimeField\n * }\n *\n * // Generic component usage\n * const MyWrapper = <T extends RDateTimeField>(component: T) => {\n * // Use component with full type safety\n * }\n * ```\n */\nexport type RDateTimeField = typeof RDateTimeField & ComponentPublicInstance\n"],"names":["VTabsSymbol","makeVTabProps","propsFactory","omit","makeVBtnProps","VTab","genericComponent","props","_ref","slots","attrs","sliderColorClasses","sliderColorStyles","useTextColor","rootEl","ref","sliderEl","isHorizontal","computed","isSelected","updateSlider","_ref2","value","prevEl","nextEl","color","prevBox","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","scale","initialScale","sigma","animate","standardEasing","useRender","btnProps","VBtn","_createVNode","_mergeProps","_createElementVNode","_Fragment","_normalizeClass","_normalizeStyle","forwardRefs","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","touchstart","event","touch","touchend","touchmove","createHandlers","e","mounted","el","binding","target","options","uid","handlers","keys","eventName","unmounted","Touch","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","v","makeComponentProps","makeTagProps","makeThemeProps","VWindow","vTouch","themeClasses","provideTheme","isRtl","useRtl","t","useLocale","group","useGroup","rootRef","isRtlReverse","isReversed","shallowRef","transition","axis","direction","transitionCount","transitionHeight","activeIndex","item","watch","newVal","oldVal","scrollableParent","savedScrollPosition","IN_BROWSER","getScrollParent","itemsLength","lastIndex","nextTick","provide","canMoveBack","toRef","canMoveForward","prev","next","arrows","prevProps","nextProps","touchOptions","originalEvent","_withDirectives","PREFERS_REDUCED_MOTION","convertToUnit","makeVTabsWindowProps","VTabsWindow","inject","_model","useProxiedModel","model","val","windowProps","$event","makeVWindowItemProps","makeGroupItemProps","makeLazyProps","VWindowItem","window","groupItem","useGroupItem","isBooted","useSsrBoot","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","name","hasContent","useLazy","MaybeTransition","_vShow","makeVTabsWindowItemProps","VTabsWindowItem","windowItemProps","parseItems","items","isObject","makeVTabsProps","pick","makeVSlideGroupProps","makeDensityProps","VTabs","densityClasses","useDensity","backgroundColorClasses","backgroundColorStyles","useBackgroundColor","scopeId","useScopeId","provideDefaults","slideGroupProps","VSlideGroup","hasWindow","makeVComboboxProps","makeFilterProps","makeSelectProps","makeVTextFieldProps","VCombobox","focused","emit","vTextFieldRef","isFocused","isPristine","listHasFocus","vMenuRef","vVirtualScrollRef","selectionIndex","cleared","transformIn","transformOut","useItems","textColorClasses","textColorStyles","wrapInArray","transformed","form","useForm","hasChips","hasSelectionSlot","_search","_searchLock","search","transformItem","signsToMatch","escapeForRegex","values","select","counterValue","filteredItems","getMatches","useFilter","displayItems","filteredItem","s","menuDisabled","_menu","menu","menuId","ariaExpanded","ariaControls","ariaLabel","useMenuActivator","selectedValues","selection","highlightFirst","listRef","listEvents","useScrolling","onClear","onMousedownControl","onMousedownMenuIcon","onListKeydown","checkPrintable","onKeydown","isComposingIgnoreKey","selectionStart","length","originalSelectionIndex","onAfterEnter","onAfterLeave","set","keepMenu","index","deepEqual","add","onFocusin","onFocusout","_ref3","title","hasList","isDirty","textFieldProps","VTextField","VMenu","VList","VListItem","VVirtualScroll","_ref4","itemRef","itemProps","mergeProps","VDivider","VListSubheader","_ref5","VCheckboxBtn","VAvatar","VIcon","highlightResult","onChipClose","slotProps","hasSlot","slotContent","ensureValidVNode","VDefaultsProvider","VChip","_createTextVNode","_len","args","_key","noop","pad","n","makeVTimePickerClockProps","VTimePickerClock","clockRef","innerClockRef","inputValue","isDragging","valueOnMouseDown","valueOnMouseUp","emitChangeDebounced","debounce","count","roundCount","degreesPerUnit","degrees","displayedValue","innerRadiusScale","genChildren","children","update","isAllowed","wheel","isInner","handScale","getPosition","rotateRadians","angleToValue","angle","insideClick","getTransform","i","x","y","euclidean","p0","p1","dx","dy","center","setMouseDownValue","onDragMove","width","top","left","innerWidth","clientX","clientY","coords","handAngle","checksCount","onMouseDown","onMouseUp","isActive","makeVTimePickerControlsProps","VTimePickerControls","data","hour","rangeHours24","createRange","rangeHours12am","rangeHours12pm","makeVTimePickerProps","makeVPickerProps","VTimePicker","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","period","viewMode","controlsRef","isAllowedHourCb","cb","minHour","maxHour","isAllowedMinuteCb","isHourAllowed","minMinute","maxMinute","minTime","maxTime","time","isAllowedSecondCb","isMinuteAllowed","minSecond","maxSecond","isAmPm","setPeriod","setInputData","onMounted","genValue","emitValue","convert24to12","convert12to24","minute","second","firstAllowed","type","allowedFn","range","newHour","onInput","onChange","emitChange","pickerProps","VPicker","timePickerControlsProps","timePickerClockProps","RDateTimeFieldDisplayFormat","isValidRDateTimeFieldSingleValue","DateTime","isValidRDateTimeFieldValue","makeRDateTimeFieldProps","rDateTimeFieldEmits","propsAndEmitsFactory","h","SvgIcon","mdiClose","IconValue","mdiCalendar","mdiClock","mdiMapClock","makeVDatePickerProps","mdiChevronLeft","mdiChevronRight","mdiChevronDown","makeCommonResourcefulFieldProps","commonEmitsValidators","enforceRDateTimeFieldStyles","styleId","style","getAsNormalizedDateTime","dt","RDateTimeField","defineComponent","useI18n","mobile","useDisplay","modelValue","theme","rounded","tile","loading","className","bgColor","clearable","clearIcon","active","baseColor","dirty","disabled","glow","error","flat","iconColor","label","persistentClear","reverse","singleLine","variant","errorMessages","maxErrors","readonly","validateOn","minWidth","maxWidth","density","id","hideDetails","hint","persistentHint","messages","autofocus","prefix","placeholder","persistentPlaceholder","suffix","role","displayFormat","displayLocale","displayTimezone","renderMode","multiple","choices","allowUnspecifiedChoices","to","href","menuIcon","noValuesText","datePickerIcon","timePickerIcon","firstDayOfWeek","max","min","showWeek","prevIcon","nextIcon","modeIcon","dateTerm","timeTerm","timezonePickerIcon","timezoneTerm","timePickerFormat","onBlur","toRefs","normalizedClassName","mergeClasses","normalizedDateTerm","normalizedTimeTerm","normalizedTimezoneTerm","normalizedMin","normalizedMax","commonProps","stringifier","changed","vTextFieldBindings","dateInputRef","datePickerBtnRef","timeInputRef","timePickerBtnRef","timezonePickerBtnRef","timezoneOptions","useTimezoneOptions","timezoneZones","useTimezoneZones","currentTz","useCurrentTimezone","localDateValue","localTimeValue","localTimezoneValue","dialogTab","RCustomFieldRef","renderedFieldWidth","useSmallWidthVariant","resizeObserver","onResizeOberserverTriggered","entries","entry","contentBoxSize","vInputEl","singleFieldRenderer","fieldBindings","isMultiAdd","normalizedLocalTimeValue","split","combineDateTimeParts","datePart","timePart","zonePart","parts","p","zone","z","computedModelValue","FixedOffsetZone","asSqlDate","asSqlTime","asTimezone","computedMinDate","computedMaxDate","computedMinTime","currentDto","computedMaxTime","currentTimezoneLabel","current","option","o","is","was","datePickerOpen","isOpen","commonDialogBindings","deepmerge","toUnreactive","dialogWindowBindings","dialogBottomSheetBindings","onDatePickerUpdateModelValue","emitable","alertIcon","VImg","warningSvg","datetimePicker","VCard","VToolbar","VToolbarItems","VDatePicker","VSheet","mdiMenuDown","TimezonePicker","appendInnerSlot","useSlot","RCustomField","stripUndefinedValuesFromObject","rCustomFieldEl","rCustomFieldElRect","refs","inputRef","refRect","defaultSlotProps","focus","blur","inputProps","inputReadonly","disabledOrReadonly","VBottomSheet","VDialog","composed","useFieldComposer","onUnmounted"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}