@nhtio/lucid-resourceful-vue-components 1.20260107.0 → 1.20260108.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.
- package/{VChip-DWwcL8cL.mjs → VChip-DakTCdq2.mjs} +2 -2
- package/{VChip-DWwcL8cL.mjs.map → VChip-DakTCdq2.mjs.map} +1 -1
- package/{VDatePicker-C7_ULYfO.mjs → VDatePicker-DlZlcF2O.mjs} +4 -4
- package/{VDatePicker-C7_ULYfO.mjs.map → VDatePicker-DlZlcF2O.mjs.map} +1 -1
- package/{VDialog-BVRDhoD7.mjs → VDialog-BljV_Pfu.mjs} +3 -3
- package/{VDialog-BVRDhoD7.mjs.map → VDialog-BljV_Pfu.mjs.map} +1 -1
- package/{VEmptyState-C2B0Znk9.mjs → VEmptyState-BubXzExt.mjs} +2 -2
- package/{VEmptyState-C2B0Znk9.mjs.map → VEmptyState-BubXzExt.mjs.map} +1 -1
- package/{VHover-DnB1GlWG.mjs → VHover-DYt7f7-R.mjs} +3 -3
- package/{VHover-DnB1GlWG.mjs.map → VHover-DYt7f7-R.mjs.map} +1 -1
- package/{VListItem-DojRgtpe.mjs → VListItem-CHkJtaF9.mjs} +4 -4
- package/{VListItem-DojRgtpe.mjs.map → VListItem-CHkJtaF9.mjs.map} +1 -1
- package/{VMenu-D2biKkpd.mjs → VMenu-Xveh72QZ.mjs} +3 -3
- package/{VMenu-D2biKkpd.mjs.map → VMenu-Xveh72QZ.mjs.map} +1 -1
- package/{VPicker-dxKS1KK4.mjs → VPicker-D9TBI61U.mjs} +4 -4
- package/{VPicker-dxKS1KK4.mjs.map → VPicker-D9TBI61U.mjs.map} +1 -1
- package/{VRadioGroup-lC_c6Ath.mjs → VRadioGroup-CFazRh5q.mjs} +4 -4
- package/{VRadioGroup-lC_c6Ath.mjs.map → VRadioGroup-CFazRh5q.mjs.map} +1 -1
- package/{VRow-BBY2gEjT.mjs → VRow-Db84ydOG.mjs} +2 -2
- package/{VRow-BBY2gEjT.mjs.map → VRow-Db84ydOG.mjs.map} +1 -1
- package/{VSheet-B4SA9_dv.mjs → VSheet-CX-0tYk0.mjs} +2 -2
- package/{VSheet-B4SA9_dv.mjs.map → VSheet-CX-0tYk0.mjs.map} +1 -1
- package/{actions-CXhEUJp6.mjs → actions-CAGyXfrI.mjs} +12 -12
- package/{actions-CXhEUJp6.mjs.map → actions-CAGyXfrI.mjs.map} +1 -1
- package/{alert-B0j6GH3V.mjs → alert-D4Zq_X5a.mjs} +11 -11
- package/{alert-B0j6GH3V.mjs.map → alert-D4Zq_X5a.mjs.map} +1 -1
- package/{bigint-DXS_rVbG.mjs → bigint-MqcXh7nS.mjs} +7 -7
- package/{bigint-DXS_rVbG.mjs.map → bigint-MqcXh7nS.mjs.map} +1 -1
- package/{boolean-BTu-4Ihs.mjs → boolean-h31TIpoH.mjs} +10 -10
- package/{boolean-BTu-4Ihs.mjs.map → boolean-h31TIpoH.mjs.map} +1 -1
- package/{clipboard-C6YTX8YB.mjs → clipboard-jPiC4eq0.mjs} +7 -7
- package/{clipboard-C6YTX8YB.mjs.map → clipboard-jPiC4eq0.mjs.map} +1 -1
- package/{common-a_cd4SQg.mjs → common-CRFL2oQX.mjs} +1362 -1362
- package/common-CRFL2oQX.mjs.map +1 -0
- package/components/autorefresh_controller.mjs +1 -1
- package/components/control_button.mjs +1 -1
- package/components/control_button_bar.mjs +2 -2
- package/components/control_menu.mjs +1 -1
- package/components/custom_field.mjs +1 -1
- package/components/exporter.mjs +1 -1
- package/components/fields/bigint.mjs +1 -1
- package/components/fields/boolean.mjs +1 -1
- package/components/fields/date.mjs +1 -1
- package/components/fields/date_time.mjs +1 -1
- package/components/fields/enum.mjs +1 -1
- package/components/fields/integer.mjs +1 -1
- package/components/fields/number.mjs +1 -1
- package/components/fields/string.mjs +1 -1
- package/components/fields/unsigned_integer.mjs +1 -1
- package/components/fields.mjs +9 -9
- package/components/form_with_validation.mjs +1 -1
- package/components/resourceful_alerter.mjs +1 -1
- package/components/resourceful_index.mjs +1 -1
- package/components/resourceful_record.mjs +2 -2
- package/components/resourceful_record_default_form.mjs +1 -1
- package/components/resourceful_record_form.mjs +1 -1
- package/components/sortable.mjs +1 -1
- package/components/svg_icon.mjs +1 -1
- package/components/timezone_picker.mjs +1 -1
- package/components.mjs +23 -23
- package/composables.mjs +11 -11
- package/{custom-CgyU3A_B.mjs → custom-Dj2ib6qT.mjs} +7 -7
- package/{custom-CgyU3A_B.mjs.map → custom-Dj2ib6qT.mjs.map} +1 -1
- package/{date-B8edF8kU.mjs → date-fxb-e0m9.mjs} +10 -10
- package/{date-B8edF8kU.mjs.map → date-fxb-e0m9.mjs.map} +1 -1
- package/{date_time-BNsYnH-e.mjs → date_time-n4zJtaSr.mjs} +18 -18
- package/{date_time-BNsYnH-e.mjs.map → date_time-n4zJtaSr.mjs.map} +1 -1
- package/{display-CHspVOz6.mjs → display-DNgEbAdH.mjs} +38 -38
- package/{display-CHspVOz6.mjs.map → display-DNgEbAdH.mjs.map} +1 -1
- package/{display-pfXaBUr6.mjs → display-DxJktZAm.mjs} +4 -4
- package/{display-pfXaBUr6.mjs.map → display-DxJktZAm.mjs.map} +1 -1
- package/{enum-DoxJn16e.mjs → enum-CjkTx4L6.mjs} +9 -9
- package/{enum-DoxJn16e.mjs.map → enum-CjkTx4L6.mjs.map} +1 -1
- package/{exceptions-BeFuVcrH.mjs → exceptions-lwCt3BKI.mjs} +2 -2
- package/{exceptions-BeFuVcrH.mjs.map → exceptions-lwCt3BKI.mjs.map} +1 -1
- package/exceptions.mjs +2 -2
- package/factories.mjs +2 -2
- package/{field_composer-CPqM1aSV.mjs → field_composer-B_4w9YL9.mjs} +3 -3
- package/{field_composer-CPqM1aSV.mjs.map → field_composer-B_4w9YL9.mjs.map} +1 -1
- package/{form-BkQlevYR.mjs → form-B7uOzLn2.mjs} +15 -15
- package/{form-BkQlevYR.mjs.map → form-B7uOzLn2.mjs.map} +1 -1
- package/{guards-D0G8CU2m.mjs → guards-BI3Zu4tN.mjs} +2 -2
- package/{guards-D0G8CU2m.mjs.map → guards-BI3Zu4tN.mjs.map} +1 -1
- package/guards.mjs +4 -4
- package/helpers.mjs +12 -12
- package/{http-ChBUYgv8.mjs → http-B7MNWS03.mjs} +2 -2
- package/{http-ChBUYgv8.mjs.map → http-B7MNWS03.mjs.map} +1 -1
- package/{http-C15bx-Gn.mjs → http-C2_4xIMQ.mjs} +9 -6
- package/{http-C15bx-Gn.mjs.map → http-C2_4xIMQ.mjs.map} +1 -1
- package/http.mjs +1 -1
- package/{index-DHoLuRuJ.mjs → index-3roRSYqk.mjs} +6 -6
- package/{index-DHoLuRuJ.mjs.map → index-3roRSYqk.mjs.map} +1 -1
- package/{index-CvhhGjZn.mjs → index-B-PEjqXn.mjs} +3 -3
- package/{index-CvhhGjZn.mjs.map → index-B-PEjqXn.mjs.map} +1 -1
- package/{index-CdaTAyzs.mjs → index-BC-vhUQX.mjs} +15 -15
- package/{index-CdaTAyzs.mjs.map → index-BC-vhUQX.mjs.map} +1 -1
- package/{index-CduefDwU.mjs → index-BJmmZly3.mjs} +3 -3
- package/{index-CduefDwU.mjs.map → index-BJmmZly3.mjs.map} +1 -1
- package/{index-DLzoBhUb.mjs → index-BawSct2l.mjs} +4 -4
- package/{index-DLzoBhUb.mjs.map → index-BawSct2l.mjs.map} +1 -1
- package/{index-Cb3Fmo7E.mjs → index-DDsxXe9z.mjs} +43 -43
- package/{index-Cb3Fmo7E.mjs.map → index-DDsxXe9z.mjs.map} +1 -1
- package/{index-BcDX9w4T.mjs → index-DLXKobUt.mjs} +8 -8
- package/{index-BcDX9w4T.mjs.map → index-DLXKobUt.mjs.map} +1 -1
- package/{index-CHELe70a.mjs → index-DWI2DYc2.mjs} +8 -8
- package/{index-CHELe70a.mjs.map → index-DWI2DYc2.mjs.map} +1 -1
- package/{index-De0W4KPF.mjs → index-Dh9Wblnw.mjs} +8 -8
- package/{index-De0W4KPF.mjs.map → index-Dh9Wblnw.mjs.map} +1 -1
- package/index.mjs +37 -37
- package/{integer-BWdmDp7S.mjs → integer-BYichJsH.mjs} +3 -3
- package/{integer-BWdmDp7S.mjs.map → integer-BYichJsH.mjs.map} +1 -1
- package/{ioc-Q-KAX6x1.mjs → ioc-DOAKMPdw.mjs} +2 -2
- package/{ioc-Q-KAX6x1.mjs.map → ioc-DOAKMPdw.mjs.map} +1 -1
- package/ioc.mjs +1 -1
- package/lucid-resourceful-vue-components.css +828 -828
- package/{mdi-jw9Ee7p6.mjs → mdi-VGx06N8O.mjs} +9 -9
- package/{mdi-jw9Ee7p6.mjs.map → mdi-VGx06N8O.mjs.map} +1 -1
- package/{number-Chf-qQs7.mjs → number-B5AryNzI.mjs} +8 -8
- package/{number-Chf-qQs7.mjs.map → number-B5AryNzI.mjs.map} +1 -1
- package/package.json +5 -5
- package/{props-eYGYq1uo.mjs → props-BZryUy0q.mjs} +4 -4
- package/{props-eYGYq1uo.mjs.map → props-BZryUy0q.mjs.map} +1 -1
- package/{props-fFnbtBgH.mjs → props-Dcuv5Iv7.mjs} +4 -4
- package/{props-fFnbtBgH.mjs.map → props-Dcuv5Iv7.mjs.map} +1 -1
- package/{renderers-DLsO8zG-.mjs → renderers-C7XOwFHb.mjs} +14 -14
- package/{renderers-DLsO8zG-.mjs.map → renderers-C7XOwFHb.mjs.map} +1 -1
- package/{string-D-UsgMTx.mjs → string-CJvxnWzd.mjs} +13 -13
- package/{string-D-UsgMTx.mjs.map → string-CJvxnWzd.mjs.map} +1 -1
- package/{unsigned_integer-7R2vw_Qn.mjs → unsigned_integer-CRQsMWxW.mjs} +4 -4
- package/{unsigned_integer-7R2vw_Qn.mjs.map → unsigned_integer-CRQsMWxW.mjs.map} +1 -1
- package/{utils-DehfJ8pT.mjs → utils-BBXjywEs.mjs} +2 -2
- package/{utils-DehfJ8pT.mjs.map → utils-BBXjywEs.mjs.map} +1 -1
- package/{validation-41gHTtyY.mjs → validation-NVIikb_s.mjs} +5 -5
- package/{validation-41gHTtyY.mjs.map → validation-NVIikb_s.mjs.map} +1 -1
- package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs} +7 -7
- package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs.map → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs.map} +1 -1
- package/common-a_cd4SQg.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-BTu-4Ihs.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VSwitch/VSwitch.js","../src/private/fields/boolean.ts"],"sourcesContent":["import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VCheckbox.css\";\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from \"./VCheckboxBtn.js\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.js\"; // Composables\nimport { useFocus } from \"../../composables/focus.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { ref, useId } from 'vue';\nimport { filterInputAttrs, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline'])\n}, 'VCheckbox');\nexport const VCheckbox = genericComponent()({\n name: 'VCheckbox',\n inheritAttrs: false,\n props: makeVCheckboxProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:focused': focused => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const inputRef = ref();\n const uid = useId();\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const checkboxProps = VCheckboxBtn.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": inputRef,\n \"class\": ['v-checkbox', props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": props.id || `checkbox-${uid}`,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VCheckboxBtn, _mergeProps(checkboxProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value\n }, controlAttrs, {\n \"error\": isValid.value === false,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"onFocus\": focus,\n \"onBlur\": blur\n }), slots);\n }\n });\n });\n return forwardRefs({}, inputRef);\n }\n});\n//# sourceMappingURL=VCheckbox.js.map","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSwitch.css\";\n\n// Components\nimport { VScaleTransition } from \"../transitions/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.js\";\nimport { VIcon } from \"../VIcon/index.js\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.js\";\nimport { VProgressCircular } from \"../VProgressCircular/index.js\";\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.js\"; // Composables\nimport { useFocus } from \"../../composables/focus.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { LoaderSlot, useLoader } from \"../../composables/loader.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { ref, toRef, useId } from 'vue';\nimport { filterInputAttrs, genericComponent, propsFactory, SUPPORTS_MATCH_MEDIA, useRender } from \"../../util/index.js\"; // Types\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n ...makeVInputProps(),\n ...makeVSelectionControlProps()\n}, 'VSwitch');\nexport const VSwitch = genericComponent()({\n name: 'VSwitch',\n inheritAttrs: false,\n props: makeVSwitchProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n const {\n loaderClasses\n } = useLoader(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const control = ref();\n const inputRef = ref();\n const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;\n const loaderColor = toRef(() => {\n return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;\n });\n const uid = useId();\n const id = toRef(() => props.id || `switch-${uid}`);\n function onChange() {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n function onTrackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n control.value?.input?.click();\n }\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": inputRef,\n \"class\": ['v-switch', {\n 'v-switch--flat': props.flat\n }, {\n 'v-switch--inset': props.inset\n }, {\n 'v-switch--indeterminate': indeterminate.value\n }, loaderClasses.value, props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n const slotProps = {\n model,\n isValid\n };\n return _createVNode(VSelectionControl, _mergeProps({\n \"ref\": control\n }, controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"type\": \"checkbox\",\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, controlAttrs), {\n ...slots,\n default: _ref3 => {\n let {\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref3;\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),\n \"style\": _normalizeStyle(backgroundColorStyles.value),\n \"onClick\": onTrackClick\n }, [slots['track-true'] && _createElementVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-switch__track-true\"\n }, [slots['track-true'](slotProps)]), slots['track-false'] && _createElementVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-switch__track-false\"\n }, [slots['track-false'](slotProps)])]);\n },\n input: _ref4 => {\n let {\n inputNode,\n icon,\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref4;\n return _createElementVNode(_Fragment, null, [inputNode, _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-switch__thumb', {\n 'v-switch__thumb--filled': icon || props.loading\n }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value]),\n \"style\": _normalizeStyle(props.inset ? undefined : backgroundColorStyles.value)\n }, [slots.thumb ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon,\n size: 'x-small'\n }\n }\n }, {\n default: () => [slots.thumb({\n ...slotProps,\n icon\n })]\n }) : _createVNode(VScaleTransition, null, {\n default: () => [!props.loading ? icon && _createVNode(VIcon, {\n \"key\": String(icon),\n \"icon\": icon,\n \"size\": \"x-small\"\n }, null) : _createVNode(LoaderSlot, {\n \"name\": \"v-switch\",\n \"active\": true,\n \"color\": isValid.value === false ? undefined : loaderColor.value\n }, {\n default: slotProps => slots.loader ? slots.loader(slotProps) : _createVNode(VProgressCircular, {\n \"active\": slotProps.isActive,\n \"color\": slotProps.color,\n \"indeterminate\": true,\n \"size\": \"16\",\n \"width\": \"2\"\n }, null)\n })]\n })])]);\n }\n });\n }\n });\n });\n return forwardRefs({}, inputRef);\n }\n});\n//# sourceMappingURL=VSwitch.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Boolean Field\n|--------------------------------------------------------------------------\n|\n| A comprehensive field component for boolean values with optional ternary logic support\n| and professional UX features. Automatically adapts between single field editing,\n| multiple selection management, and read-only display through the unified field\n| composer architecture.\n|\n| ## Supported Values:\n| - true: Checked/Yes/On state with configurable text and icons\n| - false: Unchecked/No/Off state with configurable text and icons \n| - null: Indeterminate/Unknown/Mixed state with proper visual feedback (ternary mode)\n|\n| ## Rendering Variants (renderAs):\n| - select: Default dropdown with ternary options (perfect for multiple mode)\n| - toggle: VSwitch with indeterminate state support\n| - checkbox: VCheckbox with indeterminate dash display\n| - radio: VRadioGroup with configurable options for explicit choice\n|\n| ## Boolean vs Ternary Logic:\n|\n| ### Boolean Mode (choices: [true, false])\n| - Classic binary true/false logic without null values\n| - Perfect for settings, toggles, and yes/no questions\n| - Clear binary state with no indeterminate option\n| - Clearable integration disabled when null is not allowed\n|\n| ### Ternary Mode (choices: [true, false, null]) \n| - Extended logic with indeterminate/unknown/mixed state\n| - Visual feedback: Toggle shows mixed state, checkbox shows dash\n| - Smart defaults: Automatically includes all three states unless restricted\n| - Clearable integration: Field is clearable when null is a valid choice\n|\n| ### Internationalization\n| - Configurable text for all states (true/false/undetermined)\n| - Fallback to i18n keys: boolean.true, boolean.false, boolean.undetermined\n| - Icon customization for all states and render variants\n| - Consistent display across all operational modes\n|\n| ### Icon System\n| - Complete icon set for all states and render variants\n| - Material Design defaults with customization support\n| - Proper indeterminate icons for checkboxes and mixed states\n| - Radio button icons for selected/unselected states\n|\n| ## Operational Modes:\n|\n| ### Single Mode (multiple: false, renderMode: 'edit')\n| Direct boolean/ternary control with chosen render variant (toggle, checkbox, radio, select)\n| and proper visual feedback for indeterminate states when in ternary mode\n|\n| ### Multiple Mode (multiple: true, renderMode: 'edit') \n| RMultipleField with sophisticated chip management showing \"Yes\"/\"No\"/\"Undetermined\"\n| chips, full dialog interface for boolean/ternary array management\n|\n| ### Read Mode (renderMode: 'read')\n| Clean text presentation with Oxford comma formatting for arrays, showing\n| localized text for each boolean/ternary state\n|\n| ## Real-World Use Cases:\n| - Boolean: Settings toggles (enabled/disabled), survey responses (yes/no)\n| - Ternary: Permissions management (granted/denied/inherited), feature flags (on/off/auto)\n| - Bulk operations (all selected/none selected/partial selection)\n| - Configuration states (enabled/disabled/default)\n|\n| ## Smart Choice Management:\n| Automatically includes all three states (ternary mode) unless explicitly restricted\n| via choices prop, enabling flexible ternary logic or strict boolean choices\n| as needed for each use case.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { VRadio } from 'vuetify/components/VRadio'\nimport { useFieldComposer } from './field_composer'\nimport { VSwitch } from 'vuetify/components/VSwitch'\nimport { VSelect } from 'vuetify/components/VSelect'\nimport { VCheckbox } from 'vuetify/components/VCheckbox'\nimport { VInputPublicProps } from '../filtration/common'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VRadioGroup } from 'vuetify/components/VRadioGroup'\nimport { h, defineComponent, toRefs, computed, ref } from 'vue'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeVSelectProps } from '@nhtio/vuetifiable/components/VSelect/VSelect'\nimport { makeVSwitchProps } from '@nhtio/vuetifiable/components/VSwitch/VSwitch'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVCheckboxProps } from '@nhtio/vuetifiable/components/VCheckbox/VCheckbox'\nimport { makeVRadioGroupProps } from '@nhtio/vuetifiable/components/VRadioGroup/VRadioGroup'\nimport {\n mdiClose,\n mdiMenuDown,\n mdiCheckboxMarked,\n mdiCheckboxIntermediateVariant,\n mdiCheckboxBlankOutline,\n mdiCircleSlice8,\n mdiCheckboxBlankCircleOutline,\n} from '@mdi/js'\nimport type { VInput } from 'vuetify/components/VInput'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ExtractSlotDefinitions } from '../common/types'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VInputSlots = ExtractSlotDefinitions<typeof VInput.slots>\ntype VSelectPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSelectProps>>\ntype VSwitchPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSwitchProps>>\ntype VCheckboxPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVCheckboxProps>>\ntype VRadioGroupPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVRadioGroupProps>>\n\n/**\n * Supported boolean field values representing ternary logic when null is included.\n * Includes true/false for standard boolean states plus optional null for\n * indeterminate/unknown/mixed state. Can be configured as strict boolean field\n * (true/false only) or ternary field (true/false/null) depending on use case.\n *\n * @example\n * ```typescript\n * // Ternary logic with all three states\n * const ternaryChoices: RBooleanFieldValue[] = [true, false, null]\n *\n * // Boolean logic only (no indeterminate)\n * const booleanChoices: RBooleanFieldValue[] = [true, false]\n *\n * // Permission states (ternary example)\n * const permission: RBooleanFieldValue = null // \"Inherited\"\n *\n * // Setting state (boolean example)\n * const darkMode: RBooleanFieldValue = true // \"Enabled\"\n * ```\n */\nexport const RBooleanFieldValue = [true, false, null] as const\n\n/**\n * Union type of all supported boolean/ternary field values. Use this type for\n * props, function parameters, or conditional logic based on boolean or ternary state.\n *\n * @example\n * ```typescript\n * const handleStateChange = (state: RBooleanFieldValue) => {\n * switch (state) {\n * case true:\n * // Handle enabled/yes/checked state\n * break\n * case false:\n * // Handle disabled/no/unchecked state\n * break\n * case null:\n * // Handle indeterminate/unknown/inherited state (ternary mode)\n * break\n * }\n * }\n * ```\n */\nexport type RBooleanFieldValue = (typeof RBooleanFieldValue)[number]\n\n/**\n * Rendering variants for boolean/ternary fields that determine the UI control type.\n * Each variant provides different user interaction patterns while maintaining\n * consistent boolean or ternary logic support based on configured choices.\n *\n * - `select`: Default dropdown perfect for multiple mode and explicit choice\n * - `toggle`: VSwitch with optional indeterminate state support (ternary mode)\n * - `checkbox`: VCheckbox with optional indeterminate dash display (ternary mode)\n * - `radio`: VRadioGroup for explicit choice scenarios\n *\n * @example\n * ```typescript\n * // Boolean settings toggle\n * <RBooleanField renderAs=\"toggle\" v-model=\"darkMode\" :choices=\"[true, false]\" />\n *\n * // Ternary permission checkbox\n * <RBooleanField renderAs=\"checkbox\" v-model=\"canEdit\" />\n *\n * // Boolean survey question\n * <RBooleanField renderAs=\"radio\" v-model=\"satisfied\" :choices=\"[true, false]\" />\n *\n * // Multiple selection (default select works best)\n * <RBooleanField multiple v-model=\"permissions\" />\n * ```\n */\nexport const RBooleanFieldRenderable = ['select', 'toggle', 'checkbox', 'radio'] as const\n\n/**\n * Union type for boolean field rendering variants. Used for the renderAs prop\n * to specify which UI control should be used for boolean or ternary value interaction.\n */\nexport type RBooleanFieldRenderable = (typeof RBooleanFieldRenderable)[number]\n\nconst isValidRBooleanFieldValue = (\n value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined\n): boolean => {\n if ('undefined' === typeof value || (!Array.isArray(value) && RBooleanFieldValue.includes(value)))\n return true\n if (Array.isArray(value)) {\n return value.every((v) => RBooleanFieldValue.includes(v))\n }\n return false\n}\n\nconst { makeProps: makeRBooleanFieldProps, emits: rBooleanFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(makeVInputProps(), [\n 'focused',\n 'disabled',\n 'error',\n 'errorMessages',\n 'maxErrors',\n 'name',\n 'label',\n 'readonly',\n 'validateOn',\n 'theme',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'density',\n 'class',\n 'style',\n 'id',\n 'baseColor',\n 'color',\n 'glow',\n 'iconColor',\n 'hideDetails',\n 'hint',\n 'persistentHint',\n 'messages',\n 'direction',\n ]),\n ...pick(\n makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ['variant', 'clearIcon']\n ),\n modelValue: {\n type: [Boolean, Array, Object] as PropType<\n RBooleanFieldValue | RBooleanFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n renderAs: {\n type: String as PropType<RBooleanFieldRenderable>,\n default: 'select',\n },\n textForTrue: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForTrue: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxMarked }),\n },\n textForFalse: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForFalse: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankOutline }),\n },\n textForUndetermined: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForUndetermined: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxIntermediateVariant }),\n },\n iconForSelectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCircleSlice8 }),\n },\n iconForUnselectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankCircleOutline }),\n },\n selectMenuIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMenuDown }),\n },\n ripple: {\n type: Boolean,\n default: false,\n },\n ...omit(\n makeCommonResourcefulFieldProps({\n choices: RBooleanFieldValue,\n }),\n ['variant']\n ),\n },\n {\n 'update:modelValue': (value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined) =>\n isValidRBooleanFieldValue(value),\n 'update:model-value': (value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined) =>\n isValidRBooleanFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RBooleanField'\n)\n\n/**\n * Factory function that creates comprehensive props for the RBooleanField component.\n * Combines VInput props with boolean/ternary-specific options for configurable logic,\n * rendering variants, icon customization, text localization, and unified field\n * architecture integration.\n *\n * @returns Props definition object for use with defineComponent\n *\n * @example\n * ```typescript\n * // Basic boolean field props\n * const props = makeRBooleanFieldProps()\n *\n * // Access specific prop configurations\n * console.log(props.renderAs) // Rendering variant prop\n * console.log(props.textForTrue) // True state text prop\n * console.log(props.multiple) // Multiple selection mode prop\n * ```\n */\nexport { makeRBooleanFieldProps }\n\n/**\n * Public props interface for the RBooleanField component. Includes all VInput\n * props plus boolean/ternary field-specific options for configurable logic,\n * rendering variants, icon customization, and unified field architecture features.\n *\n * @example\n * ```typescript\n * // Component props typing\n * interface MyComponentProps {\n * booleanFieldProps: RBooleanFieldProps\n * }\n *\n * // Programmatic prop construction\n * const fieldProps: RBooleanFieldProps = {\n * renderAs: 'toggle',\n * textForTrue: 'Enabled',\n * textForFalse: 'Disabled',\n * choices: [true, false], // Boolean mode\n * multiple: false,\n * label: 'Feature Toggle',\n * // ... other VInput props\n * }\n * ```\n */\nexport type RBooleanFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRBooleanFieldProps>>\n\n/**\n * Comprehensive boolean/ternary field component with configurable logic support and\n * multiple rendering variants. Can operate as either a strict boolean field (true/false)\n * or ternary field (true/false/null) based on choices configuration. Automatically\n * adapts between single field editing, multiple selection management, and read-only\n * display through the unified field composer architecture.\n *\n * Supports configurable rendering as toggle, checkbox, radio group, or select dropdown.\n * Each rendering variant maintains consistent boolean or ternary logic and provides\n * appropriate visual feedback for indeterminate states when in ternary mode.\n *\n * @example\n * ```vue\n * <!-- Boolean toggle (strict true/false) -->\n * <RBooleanField\n * v-model=\"enabled\"\n * renderAs=\"toggle\"\n * :choices=\"[true, false]\"\n * label=\"Enable Feature\"\n * />\n *\n * <!-- Ternary checkbox with custom text -->\n * <RBooleanField\n * v-model=\"permission\"\n * renderAs=\"checkbox\"\n * label=\"Edit Permission\"\n * text-for-true=\"Granted\"\n * text-for-false=\"Denied\"\n * text-for-undetermined=\"Inherited\"\n * />\n *\n * <!-- Boolean radio group for explicit choice -->\n * <RBooleanField\n * v-model=\"satisfied\"\n * renderAs=\"radio\"\n * label=\"Are you satisfied?\"\n * :choices=\"[true, false]\"\n * />\n *\n * <!-- Multiple boolean states -->\n * <RBooleanField\n * v-model=\"settings\"\n * multiple\n * :choices=\"[true, false]\"\n * label=\"Feature Settings\"\n * />\n *\n * <!-- Ternary mode (default - includes null) -->\n * <RBooleanField\n * v-model=\"inheritedSetting\"\n * renderAs=\"checkbox\"\n * label=\"Use Custom Setting\"\n * />\n * ```\n */\nexport const RBooleanField = defineComponent({\n name: 'RBooleanField',\n props: makeRBooleanFieldProps(),\n emits: rBooleanFieldEmits,\n slots: Object as SlotsType<VInputSlots>,\n setup(props, { emit, slots }) {\n const t = useI18n()\n const {\n focused,\n disabled,\n error,\n errorMessages,\n maxErrors,\n name,\n label,\n readonly,\n validateOn,\n theme,\n width,\n maxWidth,\n minWidth,\n density,\n class: className,\n style,\n id,\n baseColor,\n color,\n glow,\n iconColor,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n modelValue,\n renderAs,\n textForTrue,\n textForFalse,\n textForUndetermined,\n iconForTrue,\n iconForFalse,\n iconForUndetermined,\n renderMode,\n multiple,\n choices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n selectMenuIcon,\n ripple,\n iconForSelectedRadio,\n iconForUnselectedRadio,\n dirty,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const computedChoices = computed(() => {\n const ret: any[] = []\n if (!choices.value) {\n ret.push(...RBooleanFieldValue)\n } else {\n if (choices.value.includes(true)) ret.push(true)\n if (choices.value.includes(false)) ret.push(false)\n if (choices.value.includes(null)) ret.push(null)\n }\n return ret\n })\n const normalizedTextForTrue = computed(() =>\n 'string' === typeof textForTrue.value ? textForTrue.value : t('boolean.true')\n )\n const normalizedTextForFalse = computed(() =>\n 'string' === typeof textForFalse.value ? textForFalse.value : t('boolean.false')\n )\n const normalizedTextForUndetermined = computed(() =>\n 'string' === typeof textForUndetermined.value\n ? textForUndetermined.value\n : t('boolean.undetermined')\n )\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\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 'allowUnspecifiedChoices': ref(false),\n 'choices': computedChoices,\n 'class': className,\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<RBooleanFieldValue>>(() => {\n return (val: RBooleanFieldValue) => {\n switch (val) {\n case true:\n return normalizedTextForTrue.value\n case false:\n return normalizedTextForFalse.value\n default:\n return normalizedTextForUndetermined.value\n }\n }\n })\n const items = computed<{ value: RBooleanFieldValue; label: string }[]>(() =>\n RBooleanFieldValue.map((v) => ({\n value: v,\n label: stringifier.value(v) as string,\n })).filter((item) => computedChoices.value.includes(item.value))\n )\n const commonFieldBindings = computed<VInputPublicProps>(() => ({\n focused: focused.value,\n disabled: disabled.value,\n error: error.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n label: label.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n theme: theme.value,\n width: width.value,\n maxWidth: maxWidth.value,\n minWidth: minWidth.value,\n density: density.value,\n class: className.value,\n style: style.value,\n id: id.value,\n baseColor: baseColor.value,\n color: color.value,\n glow: glow.value,\n iconColor: iconColor.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }))\n const vSelectFieldBindings = computed<VSelectPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n active: active.value,\n disabled: commonFieldBindings.value.disabled || undefined,\n items: items.value,\n clearable: computedChoices.value.includes(null),\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n density: density.value,\n itemTitle: 'label',\n itemValue: 'value',\n variant: variant.value,\n menuIcon: selectMenuIcon.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n }) satisfies VSelectPublicProps\n )\n const vSwitchFieldBindings = computed<VSwitchPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseValue: false,\n ripple: ripple.value,\n trueValue: true,\n }) satisfies VSwitchPublicProps\n )\n const vCheckboxFieldBindings = computed<VCheckboxPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForFalse.value,\n falseValue: false,\n ripple: ripple.value,\n indeterminateIcon: iconForUndetermined.value,\n trueIcon: iconForTrue.value,\n trueValue: true,\n }) satisfies VCheckboxPublicProps\n )\n const vRadioGroupFieldBindings = computed<VRadioGroupPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForUnselectedRadio.value,\n trueIcon: iconForSelectedRadio.value,\n ripple: ripple.value,\n }) satisfies VRadioGroupPublicProps\n )\n const singleFieldRenderer: SingleFieldRenderer = ({ props: fieldBindings, isMultiAdd }) => {\n const renderableVSelectFieldBindings = {\n ...vSelectFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vSelectFieldBindings.value.class,\n }\n const renderableVSwitchFieldBindings = {\n ...vSwitchFieldBindings.value,\n ...fieldBindings,\n indeterminate: fieldBindings.modelValue === null || fieldBindings.modelValue === undefined,\n class: isMultiAdd ? [] : vSwitchFieldBindings.value.class,\n }\n const renderableVCheckboxFieldBindings = {\n ...vCheckboxFieldBindings.value,\n ...fieldBindings,\n indeterminate: fieldBindings.modelValue === null || fieldBindings.modelValue === undefined,\n class: isMultiAdd ? [] : vCheckboxFieldBindings.value.class,\n }\n const renderableVRadioGroupFieldBindings = {\n ...vRadioGroupFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vRadioGroupFieldBindings.value.class,\n }\n switch (renderAs.value) {\n case 'toggle':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VSwitch, renderableVSwitchFieldBindings, {\n ...slots,\n })\n\n case 'checkbox':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VCheckbox, renderableVCheckboxFieldBindings, {\n ...slots,\n })\n case 'radio':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VRadioGroup, renderableVRadioGroupFieldBindings, {\n ...slots,\n default: () =>\n Array.from(items.value).map((i) =>\n h(\n VRadio,\n {\n value: i.value,\n },\n {\n label: () => i.label,\n }\n )\n ),\n })\n default:\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VSelect, renderableVSelectFieldBindings, {\n ...slots,\n })\n }\n }\n const undeterminedAreValues = computed(\n () => !Array.isArray(computedChoices.value) || computedChoices.value.includes(null)\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 undeterminedAreValues,\n undeterminedAreValues\n )\n return composed\n },\n})\n\n/**\n * Component type for the RBooleanField. Represents the complete boolean/ternary field\n * component with configurable logic support, multiple rendering variants, and unified\n * field architecture integration. Use this type for component references, template refs,\n * and programmatic component manipulation.\n *\n * @example\n * ```typescript\n * // Template ref typing\n * const booleanFieldRef = ref<RBooleanField>()\n *\n * // Component type checking\n * const isBooleanField = (component: unknown): component is RBooleanField => {\n * return component?.name === 'RBooleanField'\n * }\n *\n * // Programmatic component usage\n * const createBooleanField = (): RBooleanField => {\n * return RBooleanField\n * }\n * ```\n */\nexport type RBooleanField = typeof RBooleanField & ComponentPublicInstance\n"],"names":["_createVNode","_mergeProps","id","_createElementVNode","_normalizeClass","_normalizeStyle","_Fragment","slotProps","makeVInputProps","omit"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"boolean-h31TIpoH.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VSwitch/VSwitch.js","../src/private/fields/boolean.ts"],"sourcesContent":["import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VCheckbox.css\";\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from \"./VCheckboxBtn.js\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.js\"; // Composables\nimport { useFocus } from \"../../composables/focus.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { ref, useId } from 'vue';\nimport { filterInputAttrs, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline'])\n}, 'VCheckbox');\nexport const VCheckbox = genericComponent()({\n name: 'VCheckbox',\n inheritAttrs: false,\n props: makeVCheckboxProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:focused': focused => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const inputRef = ref();\n const uid = useId();\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const checkboxProps = VCheckboxBtn.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": inputRef,\n \"class\": ['v-checkbox', props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": props.id || `checkbox-${uid}`,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VCheckboxBtn, _mergeProps(checkboxProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value\n }, controlAttrs, {\n \"error\": isValid.value === false,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"onFocus\": focus,\n \"onBlur\": blur\n }), slots);\n }\n });\n });\n return forwardRefs({}, inputRef);\n }\n});\n//# sourceMappingURL=VCheckbox.js.map","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSwitch.css\";\n\n// Components\nimport { VScaleTransition } from \"../transitions/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.js\";\nimport { VIcon } from \"../VIcon/index.js\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.js\";\nimport { VProgressCircular } from \"../VProgressCircular/index.js\";\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.js\"; // Composables\nimport { useFocus } from \"../../composables/focus.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { LoaderSlot, useLoader } from \"../../composables/loader.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { ref, toRef, useId } from 'vue';\nimport { filterInputAttrs, genericComponent, propsFactory, SUPPORTS_MATCH_MEDIA, useRender } from \"../../util/index.js\"; // Types\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n ...makeVInputProps(),\n ...makeVSelectionControlProps()\n}, 'VSwitch');\nexport const VSwitch = genericComponent()({\n name: 'VSwitch',\n inheritAttrs: false,\n props: makeVSwitchProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n const {\n loaderClasses\n } = useLoader(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const control = ref();\n const inputRef = ref();\n const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;\n const loaderColor = toRef(() => {\n return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;\n });\n const uid = useId();\n const id = toRef(() => props.id || `switch-${uid}`);\n function onChange() {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n function onTrackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n control.value?.input?.click();\n }\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": inputRef,\n \"class\": ['v-switch', {\n 'v-switch--flat': props.flat\n }, {\n 'v-switch--inset': props.inset\n }, {\n 'v-switch--indeterminate': indeterminate.value\n }, loaderClasses.value, props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n const slotProps = {\n model,\n isValid\n };\n return _createVNode(VSelectionControl, _mergeProps({\n \"ref\": control\n }, controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"type\": \"checkbox\",\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, controlAttrs), {\n ...slots,\n default: _ref3 => {\n let {\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref3;\n return _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),\n \"style\": _normalizeStyle(backgroundColorStyles.value),\n \"onClick\": onTrackClick\n }, [slots['track-true'] && _createElementVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-switch__track-true\"\n }, [slots['track-true'](slotProps)]), slots['track-false'] && _createElementVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-switch__track-false\"\n }, [slots['track-false'](slotProps)])]);\n },\n input: _ref4 => {\n let {\n inputNode,\n icon,\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref4;\n return _createElementVNode(_Fragment, null, [inputNode, _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-switch__thumb', {\n 'v-switch__thumb--filled': icon || props.loading\n }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value]),\n \"style\": _normalizeStyle(props.inset ? undefined : backgroundColorStyles.value)\n }, [slots.thumb ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon,\n size: 'x-small'\n }\n }\n }, {\n default: () => [slots.thumb({\n ...slotProps,\n icon\n })]\n }) : _createVNode(VScaleTransition, null, {\n default: () => [!props.loading ? icon && _createVNode(VIcon, {\n \"key\": String(icon),\n \"icon\": icon,\n \"size\": \"x-small\"\n }, null) : _createVNode(LoaderSlot, {\n \"name\": \"v-switch\",\n \"active\": true,\n \"color\": isValid.value === false ? undefined : loaderColor.value\n }, {\n default: slotProps => slots.loader ? slots.loader(slotProps) : _createVNode(VProgressCircular, {\n \"active\": slotProps.isActive,\n \"color\": slotProps.color,\n \"indeterminate\": true,\n \"size\": \"16\",\n \"width\": \"2\"\n }, null)\n })]\n })])]);\n }\n });\n }\n });\n });\n return forwardRefs({}, inputRef);\n }\n});\n//# sourceMappingURL=VSwitch.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Boolean Field\n|--------------------------------------------------------------------------\n|\n| A comprehensive field component for boolean values with optional ternary logic support\n| and professional UX features. Automatically adapts between single field editing,\n| multiple selection management, and read-only display through the unified field\n| composer architecture.\n|\n| ## Supported Values:\n| - true: Checked/Yes/On state with configurable text and icons\n| - false: Unchecked/No/Off state with configurable text and icons \n| - null: Indeterminate/Unknown/Mixed state with proper visual feedback (ternary mode)\n|\n| ## Rendering Variants (renderAs):\n| - select: Default dropdown with ternary options (perfect for multiple mode)\n| - toggle: VSwitch with indeterminate state support\n| - checkbox: VCheckbox with indeterminate dash display\n| - radio: VRadioGroup with configurable options for explicit choice\n|\n| ## Boolean vs Ternary Logic:\n|\n| ### Boolean Mode (choices: [true, false])\n| - Classic binary true/false logic without null values\n| - Perfect for settings, toggles, and yes/no questions\n| - Clear binary state with no indeterminate option\n| - Clearable integration disabled when null is not allowed\n|\n| ### Ternary Mode (choices: [true, false, null]) \n| - Extended logic with indeterminate/unknown/mixed state\n| - Visual feedback: Toggle shows mixed state, checkbox shows dash\n| - Smart defaults: Automatically includes all three states unless restricted\n| - Clearable integration: Field is clearable when null is a valid choice\n|\n| ### Internationalization\n| - Configurable text for all states (true/false/undetermined)\n| - Fallback to i18n keys: boolean.true, boolean.false, boolean.undetermined\n| - Icon customization for all states and render variants\n| - Consistent display across all operational modes\n|\n| ### Icon System\n| - Complete icon set for all states and render variants\n| - Material Design defaults with customization support\n| - Proper indeterminate icons for checkboxes and mixed states\n| - Radio button icons for selected/unselected states\n|\n| ## Operational Modes:\n|\n| ### Single Mode (multiple: false, renderMode: 'edit')\n| Direct boolean/ternary control with chosen render variant (toggle, checkbox, radio, select)\n| and proper visual feedback for indeterminate states when in ternary mode\n|\n| ### Multiple Mode (multiple: true, renderMode: 'edit') \n| RMultipleField with sophisticated chip management showing \"Yes\"/\"No\"/\"Undetermined\"\n| chips, full dialog interface for boolean/ternary array management\n|\n| ### Read Mode (renderMode: 'read')\n| Clean text presentation with Oxford comma formatting for arrays, showing\n| localized text for each boolean/ternary state\n|\n| ## Real-World Use Cases:\n| - Boolean: Settings toggles (enabled/disabled), survey responses (yes/no)\n| - Ternary: Permissions management (granted/denied/inherited), feature flags (on/off/auto)\n| - Bulk operations (all selected/none selected/partial selection)\n| - Configuration states (enabled/disabled/default)\n|\n| ## Smart Choice Management:\n| Automatically includes all three states (ternary mode) unless explicitly restricted\n| via choices prop, enabling flexible ternary logic or strict boolean choices\n| as needed for each use case.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { VRadio } from 'vuetify/components/VRadio'\nimport { useFieldComposer } from './field_composer'\nimport { VSwitch } from 'vuetify/components/VSwitch'\nimport { VSelect } from 'vuetify/components/VSelect'\nimport { VCheckbox } from 'vuetify/components/VCheckbox'\nimport { VInputPublicProps } from '../filtration/common'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VRadioGroup } from 'vuetify/components/VRadioGroup'\nimport { h, defineComponent, toRefs, computed, ref } from 'vue'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeVSelectProps } from '@nhtio/vuetifiable/components/VSelect/VSelect'\nimport { makeVSwitchProps } from '@nhtio/vuetifiable/components/VSwitch/VSwitch'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVCheckboxProps } from '@nhtio/vuetifiable/components/VCheckbox/VCheckbox'\nimport { makeVRadioGroupProps } from '@nhtio/vuetifiable/components/VRadioGroup/VRadioGroup'\nimport {\n mdiClose,\n mdiMenuDown,\n mdiCheckboxMarked,\n mdiCheckboxIntermediateVariant,\n mdiCheckboxBlankOutline,\n mdiCircleSlice8,\n mdiCheckboxBlankCircleOutline,\n} from '@mdi/js'\nimport type { VInput } from 'vuetify/components/VInput'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ExtractSlotDefinitions } from '../common/types'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VInputSlots = ExtractSlotDefinitions<typeof VInput.slots>\ntype VSelectPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSelectProps>>\ntype VSwitchPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSwitchProps>>\ntype VCheckboxPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVCheckboxProps>>\ntype VRadioGroupPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVRadioGroupProps>>\n\n/**\n * Supported boolean field values representing ternary logic when null is included.\n * Includes true/false for standard boolean states plus optional null for\n * indeterminate/unknown/mixed state. Can be configured as strict boolean field\n * (true/false only) or ternary field (true/false/null) depending on use case.\n *\n * @example\n * ```typescript\n * // Ternary logic with all three states\n * const ternaryChoices: RBooleanFieldValue[] = [true, false, null]\n *\n * // Boolean logic only (no indeterminate)\n * const booleanChoices: RBooleanFieldValue[] = [true, false]\n *\n * // Permission states (ternary example)\n * const permission: RBooleanFieldValue = null // \"Inherited\"\n *\n * // Setting state (boolean example)\n * const darkMode: RBooleanFieldValue = true // \"Enabled\"\n * ```\n */\nexport const RBooleanFieldValue = [true, false, null] as const\n\n/**\n * Union type of all supported boolean/ternary field values. Use this type for\n * props, function parameters, or conditional logic based on boolean or ternary state.\n *\n * @example\n * ```typescript\n * const handleStateChange = (state: RBooleanFieldValue) => {\n * switch (state) {\n * case true:\n * // Handle enabled/yes/checked state\n * break\n * case false:\n * // Handle disabled/no/unchecked state\n * break\n * case null:\n * // Handle indeterminate/unknown/inherited state (ternary mode)\n * break\n * }\n * }\n * ```\n */\nexport type RBooleanFieldValue = (typeof RBooleanFieldValue)[number]\n\n/**\n * Rendering variants for boolean/ternary fields that determine the UI control type.\n * Each variant provides different user interaction patterns while maintaining\n * consistent boolean or ternary logic support based on configured choices.\n *\n * - `select`: Default dropdown perfect for multiple mode and explicit choice\n * - `toggle`: VSwitch with optional indeterminate state support (ternary mode)\n * - `checkbox`: VCheckbox with optional indeterminate dash display (ternary mode)\n * - `radio`: VRadioGroup for explicit choice scenarios\n *\n * @example\n * ```typescript\n * // Boolean settings toggle\n * <RBooleanField renderAs=\"toggle\" v-model=\"darkMode\" :choices=\"[true, false]\" />\n *\n * // Ternary permission checkbox\n * <RBooleanField renderAs=\"checkbox\" v-model=\"canEdit\" />\n *\n * // Boolean survey question\n * <RBooleanField renderAs=\"radio\" v-model=\"satisfied\" :choices=\"[true, false]\" />\n *\n * // Multiple selection (default select works best)\n * <RBooleanField multiple v-model=\"permissions\" />\n * ```\n */\nexport const RBooleanFieldRenderable = ['select', 'toggle', 'checkbox', 'radio'] as const\n\n/**\n * Union type for boolean field rendering variants. Used for the renderAs prop\n * to specify which UI control should be used for boolean or ternary value interaction.\n */\nexport type RBooleanFieldRenderable = (typeof RBooleanFieldRenderable)[number]\n\nconst isValidRBooleanFieldValue = (\n value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined\n): boolean => {\n if ('undefined' === typeof value || (!Array.isArray(value) && RBooleanFieldValue.includes(value)))\n return true\n if (Array.isArray(value)) {\n return value.every((v) => RBooleanFieldValue.includes(v))\n }\n return false\n}\n\nconst { makeProps: makeRBooleanFieldProps, emits: rBooleanFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(makeVInputProps(), [\n 'focused',\n 'disabled',\n 'error',\n 'errorMessages',\n 'maxErrors',\n 'name',\n 'label',\n 'readonly',\n 'validateOn',\n 'theme',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'density',\n 'class',\n 'style',\n 'id',\n 'baseColor',\n 'color',\n 'glow',\n 'iconColor',\n 'hideDetails',\n 'hint',\n 'persistentHint',\n 'messages',\n 'direction',\n ]),\n ...pick(\n makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ['variant', 'clearIcon']\n ),\n modelValue: {\n type: [Boolean, Array, Object] as PropType<\n RBooleanFieldValue | RBooleanFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n renderAs: {\n type: String as PropType<RBooleanFieldRenderable>,\n default: 'select',\n },\n textForTrue: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForTrue: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxMarked }),\n },\n textForFalse: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForFalse: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankOutline }),\n },\n textForUndetermined: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n iconForUndetermined: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxIntermediateVariant }),\n },\n iconForSelectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCircleSlice8 }),\n },\n iconForUnselectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankCircleOutline }),\n },\n selectMenuIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMenuDown }),\n },\n ripple: {\n type: Boolean,\n default: false,\n },\n ...omit(\n makeCommonResourcefulFieldProps({\n choices: RBooleanFieldValue,\n }),\n ['variant']\n ),\n },\n {\n 'update:modelValue': (value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined) =>\n isValidRBooleanFieldValue(value),\n 'update:model-value': (value: RBooleanFieldValue | RBooleanFieldValue[] | null | undefined) =>\n isValidRBooleanFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RBooleanField'\n)\n\n/**\n * Factory function that creates comprehensive props for the RBooleanField component.\n * Combines VInput props with boolean/ternary-specific options for configurable logic,\n * rendering variants, icon customization, text localization, and unified field\n * architecture integration.\n *\n * @returns Props definition object for use with defineComponent\n *\n * @example\n * ```typescript\n * // Basic boolean field props\n * const props = makeRBooleanFieldProps()\n *\n * // Access specific prop configurations\n * console.log(props.renderAs) // Rendering variant prop\n * console.log(props.textForTrue) // True state text prop\n * console.log(props.multiple) // Multiple selection mode prop\n * ```\n */\nexport { makeRBooleanFieldProps }\n\n/**\n * Public props interface for the RBooleanField component. Includes all VInput\n * props plus boolean/ternary field-specific options for configurable logic,\n * rendering variants, icon customization, and unified field architecture features.\n *\n * @example\n * ```typescript\n * // Component props typing\n * interface MyComponentProps {\n * booleanFieldProps: RBooleanFieldProps\n * }\n *\n * // Programmatic prop construction\n * const fieldProps: RBooleanFieldProps = {\n * renderAs: 'toggle',\n * textForTrue: 'Enabled',\n * textForFalse: 'Disabled',\n * choices: [true, false], // Boolean mode\n * multiple: false,\n * label: 'Feature Toggle',\n * // ... other VInput props\n * }\n * ```\n */\nexport type RBooleanFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRBooleanFieldProps>>\n\n/**\n * Comprehensive boolean/ternary field component with configurable logic support and\n * multiple rendering variants. Can operate as either a strict boolean field (true/false)\n * or ternary field (true/false/null) based on choices configuration. Automatically\n * adapts between single field editing, multiple selection management, and read-only\n * display through the unified field composer architecture.\n *\n * Supports configurable rendering as toggle, checkbox, radio group, or select dropdown.\n * Each rendering variant maintains consistent boolean or ternary logic and provides\n * appropriate visual feedback for indeterminate states when in ternary mode.\n *\n * @example\n * ```vue\n * <!-- Boolean toggle (strict true/false) -->\n * <RBooleanField\n * v-model=\"enabled\"\n * renderAs=\"toggle\"\n * :choices=\"[true, false]\"\n * label=\"Enable Feature\"\n * />\n *\n * <!-- Ternary checkbox with custom text -->\n * <RBooleanField\n * v-model=\"permission\"\n * renderAs=\"checkbox\"\n * label=\"Edit Permission\"\n * text-for-true=\"Granted\"\n * text-for-false=\"Denied\"\n * text-for-undetermined=\"Inherited\"\n * />\n *\n * <!-- Boolean radio group for explicit choice -->\n * <RBooleanField\n * v-model=\"satisfied\"\n * renderAs=\"radio\"\n * label=\"Are you satisfied?\"\n * :choices=\"[true, false]\"\n * />\n *\n * <!-- Multiple boolean states -->\n * <RBooleanField\n * v-model=\"settings\"\n * multiple\n * :choices=\"[true, false]\"\n * label=\"Feature Settings\"\n * />\n *\n * <!-- Ternary mode (default - includes null) -->\n * <RBooleanField\n * v-model=\"inheritedSetting\"\n * renderAs=\"checkbox\"\n * label=\"Use Custom Setting\"\n * />\n * ```\n */\nexport const RBooleanField = defineComponent({\n name: 'RBooleanField',\n props: makeRBooleanFieldProps(),\n emits: rBooleanFieldEmits,\n slots: Object as SlotsType<VInputSlots>,\n setup(props, { emit, slots }) {\n const t = useI18n()\n const {\n focused,\n disabled,\n error,\n errorMessages,\n maxErrors,\n name,\n label,\n readonly,\n validateOn,\n theme,\n width,\n maxWidth,\n minWidth,\n density,\n class: className,\n style,\n id,\n baseColor,\n color,\n glow,\n iconColor,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n modelValue,\n renderAs,\n textForTrue,\n textForFalse,\n textForUndetermined,\n iconForTrue,\n iconForFalse,\n iconForUndetermined,\n renderMode,\n multiple,\n choices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n selectMenuIcon,\n ripple,\n iconForSelectedRadio,\n iconForUnselectedRadio,\n dirty,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const computedChoices = computed(() => {\n const ret: any[] = []\n if (!choices.value) {\n ret.push(...RBooleanFieldValue)\n } else {\n if (choices.value.includes(true)) ret.push(true)\n if (choices.value.includes(false)) ret.push(false)\n if (choices.value.includes(null)) ret.push(null)\n }\n return ret\n })\n const normalizedTextForTrue = computed(() =>\n 'string' === typeof textForTrue.value ? textForTrue.value : t('boolean.true')\n )\n const normalizedTextForFalse = computed(() =>\n 'string' === typeof textForFalse.value ? textForFalse.value : t('boolean.false')\n )\n const normalizedTextForUndetermined = computed(() =>\n 'string' === typeof textForUndetermined.value\n ? textForUndetermined.value\n : t('boolean.undetermined')\n )\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\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 'allowUnspecifiedChoices': ref(false),\n 'choices': computedChoices,\n 'class': className,\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<RBooleanFieldValue>>(() => {\n return (val: RBooleanFieldValue) => {\n switch (val) {\n case true:\n return normalizedTextForTrue.value\n case false:\n return normalizedTextForFalse.value\n default:\n return normalizedTextForUndetermined.value\n }\n }\n })\n const items = computed<{ value: RBooleanFieldValue; label: string }[]>(() =>\n RBooleanFieldValue.map((v) => ({\n value: v,\n label: stringifier.value(v) as string,\n })).filter((item) => computedChoices.value.includes(item.value))\n )\n const commonFieldBindings = computed<VInputPublicProps>(() => ({\n focused: focused.value,\n disabled: disabled.value,\n error: error.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n label: label.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n theme: theme.value,\n width: width.value,\n maxWidth: maxWidth.value,\n minWidth: minWidth.value,\n density: density.value,\n class: className.value,\n style: style.value,\n id: id.value,\n baseColor: baseColor.value,\n color: color.value,\n glow: glow.value,\n iconColor: iconColor.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }))\n const vSelectFieldBindings = computed<VSelectPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n active: active.value,\n disabled: commonFieldBindings.value.disabled || undefined,\n items: items.value,\n clearable: computedChoices.value.includes(null),\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n density: density.value,\n itemTitle: 'label',\n itemValue: 'value',\n variant: variant.value,\n menuIcon: selectMenuIcon.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n }) satisfies VSelectPublicProps\n )\n const vSwitchFieldBindings = computed<VSwitchPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseValue: false,\n ripple: ripple.value,\n trueValue: true,\n }) satisfies VSwitchPublicProps\n )\n const vCheckboxFieldBindings = computed<VCheckboxPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForFalse.value,\n falseValue: false,\n ripple: ripple.value,\n indeterminateIcon: iconForUndetermined.value,\n trueIcon: iconForTrue.value,\n trueValue: true,\n }) satisfies VCheckboxPublicProps\n )\n const vRadioGroupFieldBindings = computed<VRadioGroupPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForUnselectedRadio.value,\n trueIcon: iconForSelectedRadio.value,\n ripple: ripple.value,\n }) satisfies VRadioGroupPublicProps\n )\n const singleFieldRenderer: SingleFieldRenderer = ({ props: fieldBindings, isMultiAdd }) => {\n const renderableVSelectFieldBindings = {\n ...vSelectFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vSelectFieldBindings.value.class,\n }\n const renderableVSwitchFieldBindings = {\n ...vSwitchFieldBindings.value,\n ...fieldBindings,\n indeterminate: fieldBindings.modelValue === null || fieldBindings.modelValue === undefined,\n class: isMultiAdd ? [] : vSwitchFieldBindings.value.class,\n }\n const renderableVCheckboxFieldBindings = {\n ...vCheckboxFieldBindings.value,\n ...fieldBindings,\n indeterminate: fieldBindings.modelValue === null || fieldBindings.modelValue === undefined,\n class: isMultiAdd ? [] : vCheckboxFieldBindings.value.class,\n }\n const renderableVRadioGroupFieldBindings = {\n ...vRadioGroupFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vRadioGroupFieldBindings.value.class,\n }\n switch (renderAs.value) {\n case 'toggle':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VSwitch, renderableVSwitchFieldBindings, {\n ...slots,\n })\n\n case 'checkbox':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VCheckbox, renderableVCheckboxFieldBindings, {\n ...slots,\n })\n case 'radio':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VRadioGroup, renderableVRadioGroupFieldBindings, {\n ...slots,\n default: () =>\n Array.from(items.value).map((i) =>\n h(\n VRadio,\n {\n value: i.value,\n },\n {\n label: () => i.label,\n }\n )\n ),\n })\n default:\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VSelect, renderableVSelectFieldBindings, {\n ...slots,\n })\n }\n }\n const undeterminedAreValues = computed(\n () => !Array.isArray(computedChoices.value) || computedChoices.value.includes(null)\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 undeterminedAreValues,\n undeterminedAreValues\n )\n return composed\n },\n})\n\n/**\n * Component type for the RBooleanField. Represents the complete boolean/ternary field\n * component with configurable logic support, multiple rendering variants, and unified\n * field architecture integration. Use this type for component references, template refs,\n * and programmatic component manipulation.\n *\n * @example\n * ```typescript\n * // Template ref typing\n * const booleanFieldRef = ref<RBooleanField>()\n *\n * // Component type checking\n * const isBooleanField = (component: unknown): component is RBooleanField => {\n * return component?.name === 'RBooleanField'\n * }\n *\n * // Programmatic component usage\n * const createBooleanField = (): RBooleanField => {\n * return RBooleanField\n * }\n * ```\n */\nexport type RBooleanField = typeof RBooleanField & ComponentPublicInstance\n"],"names":["_createVNode","_mergeProps","id","_createElementVNode","_normalizeClass","_normalizeStyle","_Fragment","slotProps","makeVInputProps","omit"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { inject, useId, provide, shallowRef, onDeactivated, onActivated, computed, onBeforeUnmount, ref, watchEffect, watch, onMounted, createVNode, mergeProps, createElementVNode, onScopeDispose, nextTick, h } from "vue";
|
|
2
|
-
import { a as useI18n } from "./ioc-
|
|
3
|
-
import { S as SvgIcon } from "./index-
|
|
4
|
-
import { t as toUnreactive } from "./utils-
|
|
5
|
-
import { I as IN_BROWSER } from "./vendor-nhtio-vuetifiable-
|
|
6
|
-
import { o as useScopeId, s as VOverlay, p as forwardRefs, q as makeVOverlayProps,
|
|
7
|
-
import { p as propsFactory,
|
|
2
|
+
import { a as useI18n } from "./ioc-DOAKMPdw.mjs";
|
|
3
|
+
import { S as SvgIcon } from "./index-BJmmZly3.mjs";
|
|
4
|
+
import { t as toUnreactive } from "./utils-BBXjywEs.mjs";
|
|
5
|
+
import { I as IN_BROWSER } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
|
|
6
|
+
import { o as useScopeId, s as VOverlay, p as forwardRefs, q as makeVOverlayProps, z as mdiCheckboxMarkedCircleOutline, A as mdiAlert } from "./mdi-VGx06N8O.mjs";
|
|
7
|
+
import { p as propsFactory, P as getCurrentInstance, g as genericComponent, u as useProxiedModel, C as usePosition, m as provideTheme, Q as useVariant, D as useRounded, R as useToggleScope, S as refElement, e as useRender, T as genOverlays, V as VProgressLinear, f as VDefaultsProvider, o as omit, t as makeThemeProps, U as makeVariantProps, F as makeRoundedProps, G as makePositionProps, H as makeLocationProps, d as VIcon } from "./display-DNgEbAdH.mjs";
|
|
8
8
|
const VuetifyLayoutKey = /* @__PURE__ */ Symbol.for("vuetify:layout");
|
|
9
9
|
const VuetifyLayoutItemKey = /* @__PURE__ */ Symbol.for("vuetify:layout-item");
|
|
10
10
|
const makeLayoutItemProps = propsFactory({
|
|
@@ -383,4 +383,4 @@ export {
|
|
|
383
383
|
makeLayoutItemProps as m,
|
|
384
384
|
useClipboard as u
|
|
385
385
|
};
|
|
386
|
-
//# sourceMappingURL=clipboard-
|
|
386
|
+
//# sourceMappingURL=clipboard-jPiC4eq0.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard-C6YTX8YB.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/composables/layout.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VSnackbar/VSnackbar.js","../src/private/ux/clipboard.ts"],"sourcesContent":["// Composables\nimport { useResizeObserver } from \"./resizeObserver.js\"; // Utilities\nimport { computed, inject, onActivated, onBeforeUnmount, onDeactivated, onMounted, provide, reactive, ref, shallowRef, toRef, useId } from 'vue';\nimport { consoleWarn, convertToUnit, findChildrenWithProvide, getCurrentInstance, propsFactory } from \"../util/index.js\"; // Types\nexport const VuetifyLayoutKey = Symbol.for('vuetify:layout');\nexport const VuetifyLayoutItemKey = Symbol.for('vuetify:layout-item');\nconst ROOT_ZINDEX = 1000;\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => []\n },\n fullHeight: Boolean\n}, 'layout');\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String\n },\n order: {\n type: [Number, String],\n default: 0\n },\n absolute: Boolean\n}, 'layout-item');\nexport function useLayout() {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles\n };\n}\nexport function useLayoutItem(options) {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n const id = options.id ?? `layout-item-${useId()}`;\n const vm = getCurrentInstance('useLayoutItem');\n provide(VuetifyLayoutItemKey, {\n id\n });\n const isKeptAlive = shallowRef(false);\n onDeactivated(() => isKeptAlive.value = true);\n onActivated(() => isKeptAlive.value = false);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id\n });\n onBeforeUnmount(() => layout.unregister(id));\n return {\n layoutItemStyles,\n layoutRect: layout.layoutRect,\n layoutItemScrimStyles\n };\n}\nconst generateLayers = (layout, positions, layoutSizes, activeItems) => {\n let previousLayer = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n };\n const layers = [{\n id: '',\n layer: {\n ...previousLayer\n }\n }];\n for (const id of layout) {\n const position = positions.get(id);\n const amount = layoutSizes.get(id);\n const active = activeItems.get(id);\n if (!position || !amount || !active) continue;\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0)\n };\n layers.push({\n id,\n layer\n });\n previousLayer = layer;\n }\n return layers;\n};\nexport function createLayout(props) {\n const parentLayout = inject(VuetifyLayoutKey, null);\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);\n const registered = ref([]);\n const positions = reactive(new Map());\n const layoutSizes = reactive(new Map());\n const priorities = reactive(new Map());\n const activeItems = reactive(new Map());\n const disabledTransitions = reactive(new Map());\n const {\n resizeRef,\n contentRect: layoutRect\n } = useResizeObserver();\n const computedOverlaps = computed(() => {\n const map = new Map();\n const overlaps = props.overlaps ?? [];\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':');\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;\n const topPosition = positions.get(top);\n const bottomPosition = positions.get(bottom);\n const topAmount = layoutSizes.get(top);\n const bottomAmount = layoutSizes.get(bottom);\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;\n map.set(bottom, {\n position: topPosition.value,\n amount: parseInt(topAmount.value, 10)\n });\n map.set(top, {\n position: bottomPosition.value,\n amount: -parseInt(bottomAmount.value, 10)\n });\n }\n return map;\n });\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);\n const layout = [];\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p);\n layout.push(...items);\n }\n return generateLayers(layout, positions, layoutSizes, activeItems);\n });\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value);\n });\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer;\n });\n const mainStyles = toRef(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n });\n const items = computed(() => {\n return layers.value.slice(1).map((_ref, index) => {\n let {\n id\n } = _ref;\n const {\n layer\n } = layers.value[index];\n const size = layoutSizes.get(id);\n const position = positions.get(id);\n return {\n id,\n ...layer,\n size: Number(size.value),\n position: position.value\n };\n });\n });\n const getLayoutItem = id => {\n return items.value.find(item => item.id === id);\n };\n const rootVm = getCurrentInstance('createLayout');\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n provide(VuetifyLayoutKey, {\n register: (vm, _ref2) => {\n let {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute\n } = _ref2;\n priorities.set(id, order);\n positions.set(id, position);\n layoutSizes.set(id, layoutSize);\n activeItems.set(id, active);\n disableTransitions && disabledTransitions.set(id, disableTransitions);\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode);\n const instanceIndex = instances.indexOf(vm);\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id);else registered.value.push(id);\n const index = computed(() => items.value.findIndex(i => i.id === id));\n const zIndex = computed(() => rootZIndex.value + layers.value.length * 2 - index.value * 2);\n const layoutItemStyles = computed(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right';\n const isOppositeHorizontal = position.value === 'right';\n const isOppositeVertical = position.value === 'bottom';\n const size = elementSize.value ?? layoutSize.value;\n const unit = size === 0 ? '%' : 'px';\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n if (!isMounted.value) return styles;\n const item = items.value[index.value];\n if (!item) consoleWarn(`[Vuetify] Could not find layout item \"${id}\"`);\n const overlap = computedOverlaps.value.get(id);\n if (overlap) {\n item[overlap.position] += overlap.amount;\n }\n return {\n ...styles,\n height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : elementSize.value ? `${elementSize.value}px` : undefined\n };\n });\n const layoutItemScrimStyles = computed(() => ({\n zIndex: zIndex.value - 1\n }));\n return {\n layoutItemStyles,\n layoutItemScrimStyles,\n zIndex\n };\n },\n unregister: id => {\n priorities.delete(id);\n positions.delete(id);\n layoutSizes.delete(id);\n activeItems.delete(id);\n disabledTransitions.delete(id);\n registered.value = registered.value.filter(v => v !== id);\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex\n });\n const layoutClasses = toRef(() => ['v-layout', {\n 'v-layout--full-height': props.fullHeight\n }]);\n const layoutStyles = toRef(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' : undefined,\n overflow: parentLayout ? 'hidden' : undefined\n }));\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef\n };\n}\n//# sourceMappingURL=layout.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSnackbar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VOverlay } from \"../VOverlay/index.js\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.js\";\nimport { VProgressLinear } from \"../VProgressLinear/index.js\"; // Composables\nimport { useLayout } from \"../../composables/index.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { VuetifyLayoutKey } from \"../../composables/layout.js\";\nimport { makeLocationProps } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { useToggleScope } from \"../../composables/toggleScope.js\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.js\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, refElement, useRender } from \"../../util/index.js\"; // Types\nfunction useCountdown(milliseconds) {\n const time = shallowRef(milliseconds());\n let timer = -1;\n function clear() {\n clearInterval(timer);\n }\n function reset() {\n clear();\n nextTick(() => time.value = milliseconds());\n }\n function start(el) {\n const style = el ? getComputedStyle(el) : {\n transitionDuration: 0.2\n };\n const interval = parseFloat(style.transitionDuration) * 1000 || 200;\n clear();\n if (time.value <= 0) return;\n const startTime = performance.now();\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval;\n time.value = Math.max(milliseconds() - elapsed, 0);\n if (time.value <= 0) clear();\n }, interval);\n }\n onScopeDispose(clear);\n return {\n clear,\n time,\n start,\n reset\n };\n}\nexport const makeVSnackbarProps = propsFactory({\n /* @deprecated */\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000\n },\n vertical: Boolean,\n ...makeLocationProps({\n location: 'bottom'\n }),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition'\n }), ['persistent', 'noClickAnimation', 'retainFocus', 'captureFocus', 'disableInitialFocus', 'scrim', 'scrollStrategy', 'stickToTarget', 'viewportMargin'])\n}, 'VSnackbar');\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n props: makeVSnackbarProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n positionClasses\n } = usePosition(props);\n const {\n scopeId\n } = useScopeId();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n roundedClasses\n } = useRounded(props);\n const countdown = useCountdown(() => Number(props.timeout));\n const overlay = ref();\n const timerRef = ref();\n const isHovering = shallowRef(false);\n const startY = shallowRef(0);\n const mainStyles = ref();\n const hasLayout = inject(VuetifyLayoutKey, undefined);\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout();\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value;\n });\n });\n watch(isActive, startTimeout);\n watch(() => props.timeout, startTimeout);\n onMounted(() => {\n if (isActive.value) startTimeout();\n });\n let activeTimeout = -1;\n function startTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n const timeout = Number(props.timeout);\n if (!isActive.value || timeout === -1) return;\n const element = refElement(timerRef.value);\n countdown.start(element);\n activeTimeout = window.setTimeout(() => {\n isActive.value = false;\n }, timeout);\n }\n function clearTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n }\n function onPointerenter() {\n isHovering.value = true;\n clearTimeout();\n }\n function onPointerleave() {\n isHovering.value = false;\n startTimeout();\n }\n function onTouchstart(event) {\n startY.value = event.touches[0].clientY;\n }\n function onTouchend(event) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false;\n }\n }\n function onAfterLeave() {\n if (isHovering.value) onPointerleave();\n }\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true;\n return acc;\n }, {});\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const hasContent = !!(slots.default || slots.text || props.text);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-snackbar', {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical\n }, locationClasses.value, positionClasses.value, props.class],\n \"style\": [mainStyles.value, props.style]\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"contentProps\": mergeProps({\n class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],\n style: [colorStyles.value],\n onPointerenter,\n onPointerleave\n }, overlayProps.contentProps),\n \"persistent\": true,\n \"noClickAnimation\": true,\n \"scrim\": false,\n \"scrollStrategy\": \"none\",\n \"_disableGlobalStack\": true,\n \"onTouchstartPassive\": onTouchstart,\n \"onTouchend\": onTouchend,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && _createElementVNode(\"div\", {\n \"key\": \"timer\",\n \"class\": \"v-snackbar__timer\"\n }, [_createVNode(VProgressLinear, {\n \"ref\": timerRef,\n \"color\": typeof props.timer === 'string' ? props.timer : 'info',\n \"max\": props.timeout,\n \"modelValue\": countdown.time.value\n }, null)]), hasContent && _createElementVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-snackbar__content\",\n \"role\": \"status\",\n \"aria-live\": \"polite\"\n }, [slots.text?.() ?? props.text, slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true\n }\n }\n }, {\n default: () => [_createElementVNode(\"div\", {\n \"class\": \"v-snackbar__actions\"\n }, [slots.actions({\n isActive\n })])]\n })],\n activator: slots.activator\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VSnackbar.js.map","import { ref, h } from 'vue'\nimport { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { toUnreactive } from '../common/utils'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VSnackbar } from 'vuetify/components/VSnackbar'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { mdiCheckboxMarkedCircleOutline, mdiAlert } from '@mdi/js'\nimport { makeVSnackbarProps } from '@nhtio/vuetifiable/components/VSnackbar/VSnackbar'\nimport type { MaybeRef, ExtractPublicPropTypes } from 'vue'\n\n/**\n * Copies text to the system clipboard using multiple fallback strategies for maximum compatibility.\n *\n * This function implements a progressive enhancement approach with three fallback methods:\n * 1. Modern Clipboard API (preferred) - Most secure, requires HTTPS/localhost\n * 2. Document.execCommand('copy') - Legacy browser support\n * 3. Manual prompt fallback - Ultimate compatibility when all else fails\n *\n * @param text - The text content to copy to clipboard\n * @param onSuccess - Optional callback executed when copy operation succeeds\n * @param onFailure - Optional callback executed when copy operation fails, receives error details\n *\n * @example\n * ```typescript\n * // Basic usage\n * copyToClipboard('Hello World!')\n *\n * // With callbacks\n * copyToClipboard(\n * 'Important data',\n * () => console.log('Copied successfully!'),\n * (error) => console.error('Copy failed:', error.message)\n * )\n *\n * // In Vue component with user feedback\n * const handleCopy = (text: string) => {\n * copyToClipboard(\n * text,\n * () => showNotification('Copied to clipboard!'),\n * (error) => showNotification(`Copy failed: ${error.message}`)\n * )\n * }\n * ```\n *\n * @remarks\n * - Clipboard API requires secure context (HTTPS or localhost)\n * - execCommand fallback works in older browsers but is deprecated\n * - Manual prompt ensures functionality even in restricted environments\n * - SSR-safe with proper browser environment detection\n *\n * @public\n */\nexport const copyToClipboard = (\n text: string,\n onSuccess?: () => void,\n onFailure?: (error: Error) => void\n): void => {\n // If not in a browser environment, we cannot access the clipboard\n if (!IN_BROWSER) {\n onFailure?.(new Error('Not in a browser environment'))\n return\n }\n\n // Method 1: Modern Clipboard API (most secure and reliable)\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n onSuccess?.()\n })\n .catch((err) => {\n onFailure?.(new Error(`Clipboard API failed: ${err.message}`))\n })\n return\n }\n\n // Method 2: execCommand fallback (for older browsers)\n const textArea = document.createElement('textarea')\n textArea.value = text\n\n // Make the textarea invisible but still selectable\n textArea.style.position = 'fixed'\n textArea.style.top = '0'\n textArea.style.left = '0'\n textArea.style.width = '2em'\n textArea.style.height = '2em'\n textArea.style.padding = '0'\n textArea.style.border = 'none'\n textArea.style.outline = 'none'\n textArea.style.boxShadow = 'none'\n textArea.style.background = 'transparent'\n\n document.body.appendChild(textArea)\n textArea.focus()\n textArea.select()\n\n try {\n const successful = document.execCommand('copy')\n document.body.removeChild(textArea)\n\n if (successful) {\n onSuccess?.()\n } else {\n onFailure?.(new Error('execCommand copy failed'))\n }\n } catch (err) {\n document.body.removeChild(textArea)\n\n // Method 3: Prompt user to copy manually (ultimate fallback)\n try {\n prompt('Copy to clipboard: Ctrl+C / Cmd+C, Enter', text)\n // We can't know if the user actually copied, so we call success optimistically\n onSuccess?.()\n } catch (promptErr) {\n onFailure?.(new Error(`All copy methods failed: ${err}`))\n }\n }\n}\n\nexport type VSnackbarPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSnackbarProps>>\n\nexport type ClipboardComposableOptions = Pick<\n VSnackbarPublicProps,\n 'timeout' | 'timer' | 'variant' | 'location' | 'tile' | 'variant'\n>\n\nconst successIcon = h(SvgIcon, { d: mdiCheckboxMarkedCircleOutline })\nconst failureIcon = h(SvgIcon, { d: mdiAlert })\n\n/**\n * Vue composable for clipboard operations with integrated visual feedback via Vuetify snackbars.\n *\n * This composable provides a complete clipboard solution that combines the robust `copyToClipboard`\n * utility with automatic user feedback through customizable success/error snackbars. It uses Vue's\n * render functions to provide maximum flexibility in how and where feedback is displayed.\n *\n * @param options - Configuration options extending VSnackbar props (reactive or static)\n * @returns Object containing copy function and render function for feedback UI\n *\n * @example\n * Basic usage with default styling:\n * ```vue\n * <template>\n * <v-btn @click=\"copy('Hello World!')\">Copy Text</v-btn>\n * <component :is=\"renderClipboardFeedback()\" />\n * </template>\n *\n * <script setup>\n * const { copy, renderClipboardFeedback } = useClipboard()\n * </script>\n * ```\n *\n * @example\n * With custom snackbar configuration:\n * ```vue\n * <template>\n * <v-btn @click=\"copy(selectedText)\">Copy Selection</v-btn>\n * <component :is=\"renderClipboardFeedback()\" />\n * </template>\n *\n * <script setup>\n * const { copy, renderClipboardFeedback } = useClipboard({\n * timeout: 8000,\n * location: 'top',\n * variant: 'outlined'\n * })\n * </script>\n * ```\n *\n * @example\n * Reactive configuration with computed options:\n * ```vue\n * <script setup>\n * const isDarkMode = ref(true)\n * const snackbarOptions = computed(() => ({\n * timeout: isDarkMode.value ? 6000 : 4000,\n * variant: isDarkMode.value ? 'outlined' : 'elevated'\n * }))\n *\n * const { copy, renderClipboardFeedback } = useClipboard(snackbarOptions)\n * </script>\n * ```\n *\n * @remarks\n * - Automatically validates timeout values to ensure good UX (4-10 second range)\n * - Provides mutual exclusion between success and error snackbars\n * - Uses headless UI pattern allowing flexible integration into any component hierarchy\n * - Supports all VSnackbar props for complete customization control\n * - Integrates with i18n system for internationalized feedback messages\n * - Built on the robust `copyToClipboard` utility with comprehensive browser fallbacks\n *\n * @public\n */\nexport const useClipboard = (options: MaybeRef<ClipboardComposableOptions> = {}) => {\n const t = useI18n()\n const showingSuccessSnackbar = ref(false)\n const getFixedOptions = () => {\n const opts = toUnreactive(options)\n if ('timeout' in opts && 'undefined' !== typeof opts.timeout && opts.timeout !== null) {\n const numericTimeout = Number.parseInt(opts.timeout.toString())\n if (Number.isNaN(numericTimeout) || numericTimeout < 4000 || numericTimeout > 10000) {\n opts.timeout = 5000\n }\n } else {\n opts.timeout = 5000\n }\n return opts\n }\n const renderSuccessSnackbar = () =>\n h(\n VSnackbar,\n {\n modelValue: showingSuccessSnackbar.value,\n color: 'success',\n ...getFixedOptions(),\n ...{\n 'onUpdate:modelValue': (value: boolean) => (showingSuccessSnackbar.value = value),\n },\n },\n () =>\n h('div', { class: ['d-flex', 'align-center', 'justify-start'] }, [\n h(VIcon, { class: ['me-2', 'flex-grow-0'], icon: () => successIcon }),\n h(\n 'span',\n { class: ['flex-grow-1', 'text-center'] },\n t('resourceful.clipboard.copiedToClipboard')\n ),\n ])\n )\n const showingFailureSnackbar = ref(false)\n const renderFailureSnackbar = () =>\n h(\n VSnackbar,\n {\n modelValue: showingFailureSnackbar.value,\n color: 'error',\n ...getFixedOptions(),\n ...{\n 'onUpdate:modelValue': (value: boolean) => (showingFailureSnackbar.value = value),\n },\n },\n () =>\n h('div', { class: ['d-flex', 'align-center', 'justify-start'] }, [\n h(VIcon, { class: ['me-2', 'flex-grow-0'], icon: () => failureIcon }),\n h(\n 'span',\n { class: ['flex-grow-1', 'text-center'] },\n t('resourceful.clipboard.copyFailed')\n ),\n ])\n )\n const renderClipboardFeedback = () =>\n showingSuccessSnackbar.value\n ? renderSuccessSnackbar()\n : showingFailureSnackbar.value\n ? renderFailureSnackbar()\n : null\n const copyWithFeedback = (text: string) => {\n copyToClipboard(\n text,\n () => {\n showingSuccessSnackbar.value = true\n showingFailureSnackbar.value = false\n },\n () => {\n showingFailureSnackbar.value = true\n showingSuccessSnackbar.value = false\n }\n )\n }\n return {\n copy: copyWithFeedback,\n renderClipboardFeedback,\n }\n}\n"],"names":["_createVNode","_mergeProps","_createElementVNode"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"clipboard-jPiC4eq0.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/composables/layout.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VSnackbar/VSnackbar.js","../src/private/ux/clipboard.ts"],"sourcesContent":["// Composables\nimport { useResizeObserver } from \"./resizeObserver.js\"; // Utilities\nimport { computed, inject, onActivated, onBeforeUnmount, onDeactivated, onMounted, provide, reactive, ref, shallowRef, toRef, useId } from 'vue';\nimport { consoleWarn, convertToUnit, findChildrenWithProvide, getCurrentInstance, propsFactory } from \"../util/index.js\"; // Types\nexport const VuetifyLayoutKey = Symbol.for('vuetify:layout');\nexport const VuetifyLayoutItemKey = Symbol.for('vuetify:layout-item');\nconst ROOT_ZINDEX = 1000;\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => []\n },\n fullHeight: Boolean\n}, 'layout');\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String\n },\n order: {\n type: [Number, String],\n default: 0\n },\n absolute: Boolean\n}, 'layout-item');\nexport function useLayout() {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles\n };\n}\nexport function useLayoutItem(options) {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n const id = options.id ?? `layout-item-${useId()}`;\n const vm = getCurrentInstance('useLayoutItem');\n provide(VuetifyLayoutItemKey, {\n id\n });\n const isKeptAlive = shallowRef(false);\n onDeactivated(() => isKeptAlive.value = true);\n onActivated(() => isKeptAlive.value = false);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id\n });\n onBeforeUnmount(() => layout.unregister(id));\n return {\n layoutItemStyles,\n layoutRect: layout.layoutRect,\n layoutItemScrimStyles\n };\n}\nconst generateLayers = (layout, positions, layoutSizes, activeItems) => {\n let previousLayer = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n };\n const layers = [{\n id: '',\n layer: {\n ...previousLayer\n }\n }];\n for (const id of layout) {\n const position = positions.get(id);\n const amount = layoutSizes.get(id);\n const active = activeItems.get(id);\n if (!position || !amount || !active) continue;\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0)\n };\n layers.push({\n id,\n layer\n });\n previousLayer = layer;\n }\n return layers;\n};\nexport function createLayout(props) {\n const parentLayout = inject(VuetifyLayoutKey, null);\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);\n const registered = ref([]);\n const positions = reactive(new Map());\n const layoutSizes = reactive(new Map());\n const priorities = reactive(new Map());\n const activeItems = reactive(new Map());\n const disabledTransitions = reactive(new Map());\n const {\n resizeRef,\n contentRect: layoutRect\n } = useResizeObserver();\n const computedOverlaps = computed(() => {\n const map = new Map();\n const overlaps = props.overlaps ?? [];\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':');\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;\n const topPosition = positions.get(top);\n const bottomPosition = positions.get(bottom);\n const topAmount = layoutSizes.get(top);\n const bottomAmount = layoutSizes.get(bottom);\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;\n map.set(bottom, {\n position: topPosition.value,\n amount: parseInt(topAmount.value, 10)\n });\n map.set(top, {\n position: bottomPosition.value,\n amount: -parseInt(bottomAmount.value, 10)\n });\n }\n return map;\n });\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);\n const layout = [];\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p);\n layout.push(...items);\n }\n return generateLayers(layout, positions, layoutSizes, activeItems);\n });\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value);\n });\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer;\n });\n const mainStyles = toRef(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n });\n const items = computed(() => {\n return layers.value.slice(1).map((_ref, index) => {\n let {\n id\n } = _ref;\n const {\n layer\n } = layers.value[index];\n const size = layoutSizes.get(id);\n const position = positions.get(id);\n return {\n id,\n ...layer,\n size: Number(size.value),\n position: position.value\n };\n });\n });\n const getLayoutItem = id => {\n return items.value.find(item => item.id === id);\n };\n const rootVm = getCurrentInstance('createLayout');\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n provide(VuetifyLayoutKey, {\n register: (vm, _ref2) => {\n let {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute\n } = _ref2;\n priorities.set(id, order);\n positions.set(id, position);\n layoutSizes.set(id, layoutSize);\n activeItems.set(id, active);\n disableTransitions && disabledTransitions.set(id, disableTransitions);\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode);\n const instanceIndex = instances.indexOf(vm);\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id);else registered.value.push(id);\n const index = computed(() => items.value.findIndex(i => i.id === id));\n const zIndex = computed(() => rootZIndex.value + layers.value.length * 2 - index.value * 2);\n const layoutItemStyles = computed(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right';\n const isOppositeHorizontal = position.value === 'right';\n const isOppositeVertical = position.value === 'bottom';\n const size = elementSize.value ?? layoutSize.value;\n const unit = size === 0 ? '%' : 'px';\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n if (!isMounted.value) return styles;\n const item = items.value[index.value];\n if (!item) consoleWarn(`[Vuetify] Could not find layout item \"${id}\"`);\n const overlap = computedOverlaps.value.get(id);\n if (overlap) {\n item[overlap.position] += overlap.amount;\n }\n return {\n ...styles,\n height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : elementSize.value ? `${elementSize.value}px` : undefined\n };\n });\n const layoutItemScrimStyles = computed(() => ({\n zIndex: zIndex.value - 1\n }));\n return {\n layoutItemStyles,\n layoutItemScrimStyles,\n zIndex\n };\n },\n unregister: id => {\n priorities.delete(id);\n positions.delete(id);\n layoutSizes.delete(id);\n activeItems.delete(id);\n disabledTransitions.delete(id);\n registered.value = registered.value.filter(v => v !== id);\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex\n });\n const layoutClasses = toRef(() => ['v-layout', {\n 'v-layout--full-height': props.fullHeight\n }]);\n const layoutStyles = toRef(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' : undefined,\n overflow: parentLayout ? 'hidden' : undefined\n }));\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef\n };\n}\n//# sourceMappingURL=layout.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSnackbar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VOverlay } from \"../VOverlay/index.js\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.js\";\nimport { VProgressLinear } from \"../VProgressLinear/index.js\"; // Composables\nimport { useLayout } from \"../../composables/index.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { VuetifyLayoutKey } from \"../../composables/layout.js\";\nimport { makeLocationProps } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { useToggleScope } from \"../../composables/toggleScope.js\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.js\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, refElement, useRender } from \"../../util/index.js\"; // Types\nfunction useCountdown(milliseconds) {\n const time = shallowRef(milliseconds());\n let timer = -1;\n function clear() {\n clearInterval(timer);\n }\n function reset() {\n clear();\n nextTick(() => time.value = milliseconds());\n }\n function start(el) {\n const style = el ? getComputedStyle(el) : {\n transitionDuration: 0.2\n };\n const interval = parseFloat(style.transitionDuration) * 1000 || 200;\n clear();\n if (time.value <= 0) return;\n const startTime = performance.now();\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval;\n time.value = Math.max(milliseconds() - elapsed, 0);\n if (time.value <= 0) clear();\n }, interval);\n }\n onScopeDispose(clear);\n return {\n clear,\n time,\n start,\n reset\n };\n}\nexport const makeVSnackbarProps = propsFactory({\n /* @deprecated */\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000\n },\n vertical: Boolean,\n ...makeLocationProps({\n location: 'bottom'\n }),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition'\n }), ['persistent', 'noClickAnimation', 'retainFocus', 'captureFocus', 'disableInitialFocus', 'scrim', 'scrollStrategy', 'stickToTarget', 'viewportMargin'])\n}, 'VSnackbar');\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n props: makeVSnackbarProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n positionClasses\n } = usePosition(props);\n const {\n scopeId\n } = useScopeId();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n roundedClasses\n } = useRounded(props);\n const countdown = useCountdown(() => Number(props.timeout));\n const overlay = ref();\n const timerRef = ref();\n const isHovering = shallowRef(false);\n const startY = shallowRef(0);\n const mainStyles = ref();\n const hasLayout = inject(VuetifyLayoutKey, undefined);\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout();\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value;\n });\n });\n watch(isActive, startTimeout);\n watch(() => props.timeout, startTimeout);\n onMounted(() => {\n if (isActive.value) startTimeout();\n });\n let activeTimeout = -1;\n function startTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n const timeout = Number(props.timeout);\n if (!isActive.value || timeout === -1) return;\n const element = refElement(timerRef.value);\n countdown.start(element);\n activeTimeout = window.setTimeout(() => {\n isActive.value = false;\n }, timeout);\n }\n function clearTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n }\n function onPointerenter() {\n isHovering.value = true;\n clearTimeout();\n }\n function onPointerleave() {\n isHovering.value = false;\n startTimeout();\n }\n function onTouchstart(event) {\n startY.value = event.touches[0].clientY;\n }\n function onTouchend(event) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false;\n }\n }\n function onAfterLeave() {\n if (isHovering.value) onPointerleave();\n }\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true;\n return acc;\n }, {});\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const hasContent = !!(slots.default || slots.text || props.text);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-snackbar', {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical\n }, locationClasses.value, positionClasses.value, props.class],\n \"style\": [mainStyles.value, props.style]\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"contentProps\": mergeProps({\n class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],\n style: [colorStyles.value],\n onPointerenter,\n onPointerleave\n }, overlayProps.contentProps),\n \"persistent\": true,\n \"noClickAnimation\": true,\n \"scrim\": false,\n \"scrollStrategy\": \"none\",\n \"_disableGlobalStack\": true,\n \"onTouchstartPassive\": onTouchstart,\n \"onTouchend\": onTouchend,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && _createElementVNode(\"div\", {\n \"key\": \"timer\",\n \"class\": \"v-snackbar__timer\"\n }, [_createVNode(VProgressLinear, {\n \"ref\": timerRef,\n \"color\": typeof props.timer === 'string' ? props.timer : 'info',\n \"max\": props.timeout,\n \"modelValue\": countdown.time.value\n }, null)]), hasContent && _createElementVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-snackbar__content\",\n \"role\": \"status\",\n \"aria-live\": \"polite\"\n }, [slots.text?.() ?? props.text, slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true\n }\n }\n }, {\n default: () => [_createElementVNode(\"div\", {\n \"class\": \"v-snackbar__actions\"\n }, [slots.actions({\n isActive\n })])]\n })],\n activator: slots.activator\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VSnackbar.js.map","import { ref, h } from 'vue'\nimport { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { toUnreactive } from '../common/utils'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VSnackbar } from 'vuetify/components/VSnackbar'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { mdiCheckboxMarkedCircleOutline, mdiAlert } from '@mdi/js'\nimport { makeVSnackbarProps } from '@nhtio/vuetifiable/components/VSnackbar/VSnackbar'\nimport type { MaybeRef, ExtractPublicPropTypes } from 'vue'\n\n/**\n * Copies text to the system clipboard using multiple fallback strategies for maximum compatibility.\n *\n * This function implements a progressive enhancement approach with three fallback methods:\n * 1. Modern Clipboard API (preferred) - Most secure, requires HTTPS/localhost\n * 2. Document.execCommand('copy') - Legacy browser support\n * 3. Manual prompt fallback - Ultimate compatibility when all else fails\n *\n * @param text - The text content to copy to clipboard\n * @param onSuccess - Optional callback executed when copy operation succeeds\n * @param onFailure - Optional callback executed when copy operation fails, receives error details\n *\n * @example\n * ```typescript\n * // Basic usage\n * copyToClipboard('Hello World!')\n *\n * // With callbacks\n * copyToClipboard(\n * 'Important data',\n * () => console.log('Copied successfully!'),\n * (error) => console.error('Copy failed:', error.message)\n * )\n *\n * // In Vue component with user feedback\n * const handleCopy = (text: string) => {\n * copyToClipboard(\n * text,\n * () => showNotification('Copied to clipboard!'),\n * (error) => showNotification(`Copy failed: ${error.message}`)\n * )\n * }\n * ```\n *\n * @remarks\n * - Clipboard API requires secure context (HTTPS or localhost)\n * - execCommand fallback works in older browsers but is deprecated\n * - Manual prompt ensures functionality even in restricted environments\n * - SSR-safe with proper browser environment detection\n *\n * @public\n */\nexport const copyToClipboard = (\n text: string,\n onSuccess?: () => void,\n onFailure?: (error: Error) => void\n): void => {\n // If not in a browser environment, we cannot access the clipboard\n if (!IN_BROWSER) {\n onFailure?.(new Error('Not in a browser environment'))\n return\n }\n\n // Method 1: Modern Clipboard API (most secure and reliable)\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n onSuccess?.()\n })\n .catch((err) => {\n onFailure?.(new Error(`Clipboard API failed: ${err.message}`))\n })\n return\n }\n\n // Method 2: execCommand fallback (for older browsers)\n const textArea = document.createElement('textarea')\n textArea.value = text\n\n // Make the textarea invisible but still selectable\n textArea.style.position = 'fixed'\n textArea.style.top = '0'\n textArea.style.left = '0'\n textArea.style.width = '2em'\n textArea.style.height = '2em'\n textArea.style.padding = '0'\n textArea.style.border = 'none'\n textArea.style.outline = 'none'\n textArea.style.boxShadow = 'none'\n textArea.style.background = 'transparent'\n\n document.body.appendChild(textArea)\n textArea.focus()\n textArea.select()\n\n try {\n const successful = document.execCommand('copy')\n document.body.removeChild(textArea)\n\n if (successful) {\n onSuccess?.()\n } else {\n onFailure?.(new Error('execCommand copy failed'))\n }\n } catch (err) {\n document.body.removeChild(textArea)\n\n // Method 3: Prompt user to copy manually (ultimate fallback)\n try {\n prompt('Copy to clipboard: Ctrl+C / Cmd+C, Enter', text)\n // We can't know if the user actually copied, so we call success optimistically\n onSuccess?.()\n } catch (promptErr) {\n onFailure?.(new Error(`All copy methods failed: ${err}`))\n }\n }\n}\n\nexport type VSnackbarPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVSnackbarProps>>\n\nexport type ClipboardComposableOptions = Pick<\n VSnackbarPublicProps,\n 'timeout' | 'timer' | 'variant' | 'location' | 'tile' | 'variant'\n>\n\nconst successIcon = h(SvgIcon, { d: mdiCheckboxMarkedCircleOutline })\nconst failureIcon = h(SvgIcon, { d: mdiAlert })\n\n/**\n * Vue composable for clipboard operations with integrated visual feedback via Vuetify snackbars.\n *\n * This composable provides a complete clipboard solution that combines the robust `copyToClipboard`\n * utility with automatic user feedback through customizable success/error snackbars. It uses Vue's\n * render functions to provide maximum flexibility in how and where feedback is displayed.\n *\n * @param options - Configuration options extending VSnackbar props (reactive or static)\n * @returns Object containing copy function and render function for feedback UI\n *\n * @example\n * Basic usage with default styling:\n * ```vue\n * <template>\n * <v-btn @click=\"copy('Hello World!')\">Copy Text</v-btn>\n * <component :is=\"renderClipboardFeedback()\" />\n * </template>\n *\n * <script setup>\n * const { copy, renderClipboardFeedback } = useClipboard()\n * </script>\n * ```\n *\n * @example\n * With custom snackbar configuration:\n * ```vue\n * <template>\n * <v-btn @click=\"copy(selectedText)\">Copy Selection</v-btn>\n * <component :is=\"renderClipboardFeedback()\" />\n * </template>\n *\n * <script setup>\n * const { copy, renderClipboardFeedback } = useClipboard({\n * timeout: 8000,\n * location: 'top',\n * variant: 'outlined'\n * })\n * </script>\n * ```\n *\n * @example\n * Reactive configuration with computed options:\n * ```vue\n * <script setup>\n * const isDarkMode = ref(true)\n * const snackbarOptions = computed(() => ({\n * timeout: isDarkMode.value ? 6000 : 4000,\n * variant: isDarkMode.value ? 'outlined' : 'elevated'\n * }))\n *\n * const { copy, renderClipboardFeedback } = useClipboard(snackbarOptions)\n * </script>\n * ```\n *\n * @remarks\n * - Automatically validates timeout values to ensure good UX (4-10 second range)\n * - Provides mutual exclusion between success and error snackbars\n * - Uses headless UI pattern allowing flexible integration into any component hierarchy\n * - Supports all VSnackbar props for complete customization control\n * - Integrates with i18n system for internationalized feedback messages\n * - Built on the robust `copyToClipboard` utility with comprehensive browser fallbacks\n *\n * @public\n */\nexport const useClipboard = (options: MaybeRef<ClipboardComposableOptions> = {}) => {\n const t = useI18n()\n const showingSuccessSnackbar = ref(false)\n const getFixedOptions = () => {\n const opts = toUnreactive(options)\n if ('timeout' in opts && 'undefined' !== typeof opts.timeout && opts.timeout !== null) {\n const numericTimeout = Number.parseInt(opts.timeout.toString())\n if (Number.isNaN(numericTimeout) || numericTimeout < 4000 || numericTimeout > 10000) {\n opts.timeout = 5000\n }\n } else {\n opts.timeout = 5000\n }\n return opts\n }\n const renderSuccessSnackbar = () =>\n h(\n VSnackbar,\n {\n modelValue: showingSuccessSnackbar.value,\n color: 'success',\n ...getFixedOptions(),\n ...{\n 'onUpdate:modelValue': (value: boolean) => (showingSuccessSnackbar.value = value),\n },\n },\n () =>\n h('div', { class: ['d-flex', 'align-center', 'justify-start'] }, [\n h(VIcon, { class: ['me-2', 'flex-grow-0'], icon: () => successIcon }),\n h(\n 'span',\n { class: ['flex-grow-1', 'text-center'] },\n t('resourceful.clipboard.copiedToClipboard')\n ),\n ])\n )\n const showingFailureSnackbar = ref(false)\n const renderFailureSnackbar = () =>\n h(\n VSnackbar,\n {\n modelValue: showingFailureSnackbar.value,\n color: 'error',\n ...getFixedOptions(),\n ...{\n 'onUpdate:modelValue': (value: boolean) => (showingFailureSnackbar.value = value),\n },\n },\n () =>\n h('div', { class: ['d-flex', 'align-center', 'justify-start'] }, [\n h(VIcon, { class: ['me-2', 'flex-grow-0'], icon: () => failureIcon }),\n h(\n 'span',\n { class: ['flex-grow-1', 'text-center'] },\n t('resourceful.clipboard.copyFailed')\n ),\n ])\n )\n const renderClipboardFeedback = () =>\n showingSuccessSnackbar.value\n ? renderSuccessSnackbar()\n : showingFailureSnackbar.value\n ? renderFailureSnackbar()\n : null\n const copyWithFeedback = (text: string) => {\n copyToClipboard(\n text,\n () => {\n showingSuccessSnackbar.value = true\n showingFailureSnackbar.value = false\n },\n () => {\n showingFailureSnackbar.value = true\n showingSuccessSnackbar.value = false\n }\n )\n }\n return {\n copy: copyWithFeedback,\n renderClipboardFeedback,\n }\n}\n"],"names":["_createVNode","_mergeProps","_createElementVNode"],"mappings":"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","x_google_ignoreList":[0,1]}
|