@nhtio/lucid-resourceful-vue-components 0.1.0-master-ebe57eab → 0.1.0-master-fd238c08
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-1IMgN2NW.mjs → VChip-BslsWQfv.mjs} +2 -2
- package/{VChip-1IMgN2NW.mjs.map → VChip-BslsWQfv.mjs.map} +1 -1
- package/{VDatePicker-D3Y6VAGq.mjs → VDatePicker-QkOhEsiJ.mjs} +4 -4
- package/{VDatePicker-D3Y6VAGq.mjs.map → VDatePicker-QkOhEsiJ.mjs.map} +1 -1
- package/{VDialog-uKUuB6Ni.mjs → VDialog-CYWIsqyU.mjs} +3 -3
- package/{VDialog-uKUuB6Ni.mjs.map → VDialog-CYWIsqyU.mjs.map} +1 -1
- package/{VEmptyState-B5x_wEth.mjs → VEmptyState-DSkV3rdW.mjs} +2 -2
- package/{VEmptyState-B5x_wEth.mjs.map → VEmptyState-DSkV3rdW.mjs.map} +1 -1
- package/{VHover-DaqmIqJM.mjs → VHover-B2PK8R1R.mjs} +3 -3
- package/{VHover-DaqmIqJM.mjs.map → VHover-B2PK8R1R.mjs.map} +1 -1
- package/{VListItem-TG9oZPkm.mjs → VListItem-B2LElOLe.mjs} +3 -3
- package/{VListItem-TG9oZPkm.mjs.map → VListItem-B2LElOLe.mjs.map} +1 -1
- package/{VMenu-DbIG2Qhi.mjs → VMenu-CahiNXXZ.mjs} +3 -3
- package/{VMenu-DbIG2Qhi.mjs.map → VMenu-CahiNXXZ.mjs.map} +1 -1
- package/{VPicker-kVsex0W4.mjs → VPicker-DC_wz1Zr.mjs} +4 -4
- package/{VPicker-kVsex0W4.mjs.map → VPicker-DC_wz1Zr.mjs.map} +1 -1
- package/{VRadioGroup-DrU5JyGR.mjs → VRadioGroup-DMKik9Cu.mjs} +4 -4
- package/{VRadioGroup-DrU5JyGR.mjs.map → VRadioGroup-DMKik9Cu.mjs.map} +1 -1
- package/{VRow-cmYZqXOu.mjs → VRow-7oNLItQM.mjs} +2 -2
- package/{VRow-cmYZqXOu.mjs.map → VRow-7oNLItQM.mjs.map} +1 -1
- package/{VSheet-D_4R07YK.mjs → VSheet-DqbTSvsm.mjs} +2 -2
- package/{VSheet-D_4R07YK.mjs.map → VSheet-DqbTSvsm.mjs.map} +1 -1
- package/{actions-eZjKpI2f.mjs → actions-nnJGlDWx.mjs} +12 -12
- package/{actions-eZjKpI2f.mjs.map → actions-nnJGlDWx.mjs.map} +1 -1
- package/{alert-X_y7N0k5.mjs → alert-BXbhLNkg.mjs} +11 -11
- package/{alert-X_y7N0k5.mjs.map → alert-BXbhLNkg.mjs.map} +1 -1
- package/{bigint-BMjZO-KA.mjs → bigint-S8oJ2u2Y.mjs} +7 -7
- package/{bigint-BMjZO-KA.mjs.map → bigint-S8oJ2u2Y.mjs.map} +1 -1
- package/{boolean-BxVw3woA.mjs → boolean-BoaSL5pb.mjs} +10 -10
- package/{boolean-BxVw3woA.mjs.map → boolean-BoaSL5pb.mjs.map} +1 -1
- package/{clipboard-DRlt84JQ.mjs → clipboard-B4T3iSwL.mjs} +7 -7
- package/{clipboard-DRlt84JQ.mjs.map → clipboard-B4T3iSwL.mjs.map} +1 -1
- package/{common-Pv2k5d5L.mjs → common-crxptQS0.mjs} +15 -15
- package/{common-Pv2k5d5L.mjs.map → common-crxptQS0.mjs.map} +1 -1
- 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-CorsNQ6V.mjs → custom-1zSxQhfh.mjs} +7 -7
- package/{custom-CorsNQ6V.mjs.map → custom-1zSxQhfh.mjs.map} +1 -1
- package/{date-CUv4AD1k.mjs → date-BaVQ-B5p.mjs} +10 -10
- package/{date-CUv4AD1k.mjs.map → date-BaVQ-B5p.mjs.map} +1 -1
- package/{date_time-DUPA8gK_.mjs → date_time-C2eWcsmU.mjs} +18 -18
- package/{date_time-DUPA8gK_.mjs.map → date_time-C2eWcsmU.mjs.map} +1 -1
- package/{display-DtPqxGxo.mjs → display-2uHLu-iA.mjs} +4 -4
- package/{display-DtPqxGxo.mjs.map → display-2uHLu-iA.mjs.map} +1 -1
- package/{display-CdPzCNpa.mjs → display-D19CpJw_.mjs} +3 -3
- package/{display-CdPzCNpa.mjs.map → display-D19CpJw_.mjs.map} +1 -1
- package/{enum-B2yaUE-A.mjs → enum-BshWH7_8.mjs} +9 -9
- package/{enum-B2yaUE-A.mjs.map → enum-BshWH7_8.mjs.map} +1 -1
- package/{exceptions-BYmapqhE.mjs → exceptions-K8eRFe_u.mjs} +2 -2
- package/{exceptions-BYmapqhE.mjs.map → exceptions-K8eRFe_u.mjs.map} +1 -1
- package/exceptions.mjs +2 -2
- package/factories.d.ts +1 -0
- package/factories.mjs +4 -2
- package/{field_composer-CUv8W3Tg.mjs → field_composer-BZoOWQ1U.mjs} +3 -3
- package/{field_composer-CUv8W3Tg.mjs.map → field_composer-BZoOWQ1U.mjs.map} +1 -1
- package/{form-zBaGUnUi.mjs → form-JY-hIKBm.mjs} +15 -16
- package/form-JY-hIKBm.mjs.map +1 -0
- package/{guards-DaiwJBYO.mjs → guards-DZPvWy_4.mjs} +3 -3
- package/guards-DZPvWy_4.mjs.map +1 -0
- package/guards.mjs +4 -4
- package/helpers.mjs +9 -9
- package/{http-Cxynx5pW.mjs → http-BbIZXN2x.mjs} +2 -2
- package/{http-Cxynx5pW.mjs.map → http-BbIZXN2x.mjs.map} +1 -1
- package/{http-BCXJjieC.mjs → http-pGFfofl9.mjs} +6 -3
- package/http-pGFfofl9.mjs.map +1 -0
- package/http.mjs +1 -1
- package/{index-BobM-vEI.mjs → index-BitVUrFg.mjs} +3 -3
- package/{index-BobM-vEI.mjs.map → index-BitVUrFg.mjs.map} +1 -1
- package/{index-BSGSQUvi.mjs → index-C7w5RPS8.mjs} +6 -6
- package/{index-BSGSQUvi.mjs.map → index-C7w5RPS8.mjs.map} +1 -1
- package/{index-1tiFk-z8.mjs → index-CZJ2FcjP.mjs} +2 -2
- package/{index-1tiFk-z8.mjs.map → index-CZJ2FcjP.mjs.map} +1 -1
- package/{index-Cp6PZ6jr.mjs → index-DHeWMCWw.mjs} +8 -8
- package/{index-Cp6PZ6jr.mjs.map → index-DHeWMCWw.mjs.map} +1 -1
- package/{index-Bux_9EQY.mjs → index-DiBGKnUB.mjs} +8 -8
- package/{index-Bux_9EQY.mjs.map → index-DiBGKnUB.mjs.map} +1 -1
- package/{index-CV-VR5ZN.mjs → index-Dl9jfPgI.mjs} +43 -43
- package/{index-CV-VR5ZN.mjs.map → index-Dl9jfPgI.mjs.map} +1 -1
- package/{index-otVKzohl.mjs → index-Dy1kohCE.mjs} +28 -19
- package/index-Dy1kohCE.mjs.map +1 -0
- package/{index-DGYeadWj.mjs → index-JGVXuda6.mjs} +4 -4
- package/{index-DGYeadWj.mjs.map → index-JGVXuda6.mjs.map} +1 -1
- package/{index-CfWOKNEo.mjs → index-dcZGsFwf.mjs} +3 -3
- package/{index-CfWOKNEo.mjs.map → index-dcZGsFwf.mjs.map} +1 -1
- package/{index-CzhpetTi.mjs → index-lUBFKgIk.mjs} +8 -8
- package/{index-CzhpetTi.mjs.map → index-lUBFKgIk.mjs.map} +1 -1
- package/index.mjs +40 -38
- package/{integer-BWKYSF5I.mjs → integer-DGV22mIh.mjs} +3 -3
- package/{integer-BWKYSF5I.mjs.map → integer-DGV22mIh.mjs.map} +1 -1
- package/{ioc-BRFP3w6U.mjs → ioc-CbjgKkoq.mjs} +2 -2
- package/{ioc-BRFP3w6U.mjs.map → ioc-CbjgKkoq.mjs.map} +1 -1
- package/ioc.mjs +1 -1
- package/{mdi-B06yTfXf.mjs → mdi-Kxmy15-q.mjs} +2 -2
- package/{mdi-B06yTfXf.mjs.map → mdi-Kxmy15-q.mjs.map} +1 -1
- package/{number-CV-ilUSy.mjs → number-ChyJi9k7.mjs} +8 -8
- package/{number-CV-ilUSy.mjs.map → number-ChyJi9k7.mjs.map} +1 -1
- package/package.json +38 -38
- package/private/resourceful-record/index.d.ts +9 -0
- package/private/resourceful-record/props.d.ts +4 -0
- package/private/services/browser.d.ts +2 -0
- package/{props-CWgQDMLq.mjs → props-B2HHemO2.mjs} +4 -4
- package/{props-CWgQDMLq.mjs.map → props-B2HHemO2.mjs.map} +1 -1
- package/{props-BBBc7J1q.mjs → props-BPO1G4n5.mjs} +4 -4
- package/{props-BBBc7J1q.mjs.map → props-BPO1G4n5.mjs.map} +1 -1
- package/{renderers-BD7CrBqo.mjs → renderers-Dowye4Bl.mjs} +14 -14
- package/{renderers-BD7CrBqo.mjs.map → renderers-Dowye4Bl.mjs.map} +1 -1
- package/{string-CcynWgei.mjs → string-DOIj21u5.mjs} +13 -13
- package/{string-CcynWgei.mjs.map → string-DOIj21u5.mjs.map} +1 -1
- package/{unsigned_integer-D0FzKzNU.mjs → unsigned_integer-cQWXKTHG.mjs} +4 -4
- package/{unsigned_integer-D0FzKzNU.mjs.map → unsigned_integer-cQWXKTHG.mjs.map} +1 -1
- package/{utils-C_uOac-v.mjs → utils-Dh8-g-7s.mjs} +2 -2
- package/{utils-C_uOac-v.mjs.map → utils-Dh8-g-7s.mjs.map} +1 -1
- package/{validation-D1FwcMNA.mjs → validation-DBLJZW1_.mjs} +6 -6
- package/{validation-D1FwcMNA.mjs.map → validation-DBLJZW1_.mjs.map} +1 -1
- package/{vendor-nhtio-vuetifiable-Qm2uuc7r.mjs → vendor-nhtio-vuetifiable-CRAkpWr4.mjs} +7 -7
- package/{vendor-nhtio-vuetifiable-Qm2uuc7r.mjs.map → vendor-nhtio-vuetifiable-CRAkpWr4.mjs.map} +1 -1
- package/{vendor-xlsx-BeYuj8cp.mjs → vendor-xlsx-B1NmWxyx.mjs} +2 -2
- package/{vendor-xlsx-BeYuj8cp.mjs.map → vendor-xlsx-B1NmWxyx.mjs.map} +1 -1
- package/form-zBaGUnUi.mjs.map +0 -1
- package/guards-DaiwJBYO.mjs.map +0 -1
- package/http-BCXJjieC.mjs.map +0 -1
- package/index-otVKzohl.mjs.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { a as useI18n } from "./ioc-
|
|
1
|
+
import { a as useI18n } from "./ioc-CbjgKkoq.mjs";
|
|
2
2
|
import { useLocale } from "vuetify";
|
|
3
3
|
import { d as deepmerge } from "./index-B2cQuM3q.mjs";
|
|
4
|
-
import { a as useSlot, s as stripUndefinedValuesFromObject, j as asAbsInt } from "./utils-
|
|
5
|
-
import { C as ControlMenu } from "./index-
|
|
6
|
-
import { u as useScopedDisplay } from "./display-
|
|
7
|
-
import { d as debounce, c as convertToUnit, u as useRender, f as forwardRefs, I as IN_BROWSER } from "./vendor-nhtio-vuetifiable-
|
|
8
|
-
import { c as controlButtonBarEmits, m as makeControlButtonBarProps } from "./props-
|
|
4
|
+
import { a as useSlot, s as stripUndefinedValuesFromObject, j as asAbsInt } from "./utils-Dh8-g-7s.mjs";
|
|
5
|
+
import { C as ControlMenu } from "./index-lUBFKgIk.mjs";
|
|
6
|
+
import { u as useScopedDisplay } from "./display-2uHLu-iA.mjs";
|
|
7
|
+
import { d as debounce, c as convertToUnit, u as useRender, f as forwardRefs, I as IN_BROWSER } from "./vendor-nhtio-vuetifiable-CRAkpWr4.mjs";
|
|
8
|
+
import { c as controlButtonBarEmits, m as makeControlButtonBarProps } from "./props-BPO1G4n5.mjs";
|
|
9
9
|
import { defineComponent, toRefs, computed, ref, cloneVNode, mergeProps, h, onMounted, watch, onUnmounted } from "vue";
|
|
10
|
-
import { V as VListItem } from "./VListItem-
|
|
10
|
+
import { V as VListItem } from "./VListItem-B2LElOLe.mjs";
|
|
11
11
|
const SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && "MutationObserver" in window;
|
|
12
12
|
const cloneForMenu = (vnode) => {
|
|
13
13
|
const updatedProps = stripUndefinedValuesFromObject({
|
|
@@ -347,4 +347,4 @@ const ControlButtonBar = defineComponent({
|
|
|
347
347
|
export {
|
|
348
348
|
ControlButtonBar as C
|
|
349
349
|
};
|
|
350
|
-
//# sourceMappingURL=index-
|
|
350
|
+
//# sourceMappingURL=index-DHeWMCWw.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Cp6PZ6jr.mjs","sources":["../src/private/control-button-bar/index.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Control Button Bar Component\n|--------------------------------------------------------------------------\n|\n| An intelligent, responsive toolbar component that automatically handles\n| button overflow with dropdown menus. Uses container-aware responsive\n| breakpoints to adapt to any layout constraint, providing seamless UX\n| across devices and contexts.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { useLocale } from 'vuetify'\nimport { deepmerge } from 'deepmerge-ts'\nimport { useSlot } from '../common/utils'\nimport { ControlMenu } from '../control-menu'\nimport { useScopedDisplay } from '../ux/display'\nimport { VListItem } from 'vuetify/components/VList'\nimport { debounce } from '@nhtio/vuetifiable/util/helpers'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeControlButtonBarProps, controlButtonBarEmits } from './props'\nimport { stripUndefinedValuesFromObject, asAbsInt } from '../common/utils'\nimport {\n computed,\n ref,\n h,\n defineComponent,\n onMounted,\n onUnmounted,\n toRefs,\n mergeProps,\n cloneVNode,\n watch,\n} from 'vue'\nimport type { WatchStopHandle, SlotsType, VNode } from 'vue'\nimport type { ControlButtonBarOverflowMenuButtonProps } from './props'\n\nexport type { ControlButtonBarProps } from './props'\n\nconst SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && 'MutationObserver' in window\n\nconst cloneForMenu = (vnode: VNode) => {\n const updatedProps = stripUndefinedValuesFromObject({\n ...vnode.props,\n 'id': undefined,\n 'aria-controls': undefined,\n ...mergeProps(\n {\n class: vnode.props?.class ? vnode.props.class : undefined,\n },\n {\n class: ['mx-0'],\n }\n ),\n // we are adding a custom prop to identify that this button is rendered in the menu\n // if the component supports it, it can use this prop to adjust its styling/behavior\n 'inOverflowMenu': true,\n })\n return cloneVNode(vnode, updatedProps)\n}\n\n/**\n * Slot types for the ControlButtonBar component.\n *\n * @public\n */\nexport type ControlButtonBarSlots = {\n /** Content to prepend to the overflow menu */\n 'prepend-menu'?: () => any\n /** Content to append to the overflow menu */\n 'append-menu'?: () => any\n}\n\n/**\n * A responsive toolbar component that automatically handles button overflow with dropdown menus.\n *\n * Features:\n * - Container-aware responsive behavior using useScopedDisplay\n * - Automatic overflow detection with visual jumping reduction\n * - RTL support with intelligent menu positioning\n * - MutationObserver for dynamic content changes\n * - Customizable gap spacing and justification\n * - Performance-optimized with debounced calculations\n *\n * @example\n * ```vue\n * <ControlButtonBar\n * :buttons=\"[\n * h(VBtn, { text: 'Columns' }),\n * h(VBtn, { text: 'Filters' }),\n * h(VBtn, { text: 'Sorting' })\n * ]\"\n * justification=\"center\"\n * :gap=\"2\"\n * />\n * ```\n *\n * @public\n */\nexport const ControlButtonBar = defineComponent({\n name: 'ControlButtonBar',\n inheritAttrs: false,\n props: makeControlButtonBarProps(),\n emits: controlButtonBarEmits,\n slots: Object as SlotsType<ControlButtonBarSlots>,\n setup(props, { attrs, slots }) {\n const t = useI18n()\n const { isRtl } = useLocale()\n const {\n buttons,\n justification,\n gap,\n overflowMenuButtonOptions,\n class: className,\n style,\n } = toRefs(props)\n const prependMenuSlot = useSlot<ControlButtonBarSlots>('prepend-menu', slots)\n const appendMenuSlot = useSlot<ControlButtonBarSlots>('append-menu', slots)\n const normalizedOverflowMenuButtonOptions = computed<ControlButtonBarOverflowMenuButtonProps>(\n () =>\n deepmerge(\n {\n cta: t('general.more'),\n },\n stripUndefinedValuesFromObject({\n cta: overflowMenuButtonOptions.value.cta,\n }),\n {\n activator: stripUndefinedValuesFromObject({\n color: overflowMenuButtonOptions.value.color,\n density: overflowMenuButtonOptions.value.density,\n size: overflowMenuButtonOptions.value.size,\n }),\n }\n )\n )\n const containerRef = ref<HTMLDivElement | null>(null)\n const wrapperRef = ref<HTMLDivElement | null>(null)\n const overflowMenuWrapperRef = ref<HTMLElement | null>(null)\n const overflowMenuButtonRef = ref<ControlMenu | null>(null)\n const overflowMenuButtonIsOpen = computed(() => {\n if (!overflowMenuButtonRef.value) return false\n return overflowMenuButtonRef.value.isOpen\n })\n const usableButtons = computed(() => Array.from(buttons.value).map((btn) => cloneVNode(btn)))\n const clonedButtons = computed(() =>\n !overflowMenuButtonIsOpen.value\n ? []\n : Array.from(buttons.value).map((btn) => cloneForMenu(btn))\n )\n const { width: containerWidth, intersecting, xs } = useScopedDisplay(containerRef)\n const { width: wrapperWidth } = useScopedDisplay(wrapperRef)\n const { width: overflowMenuWrapperWidth, height: overflowMenuWrapperHeight } =\n useScopedDisplay(overflowMenuWrapperRef)\n const containerProps = computed(() =>\n mergeProps(\n {\n class: attrs.class || {},\n style: attrs.style || {},\n },\n {\n class: className.value,\n style: style.value,\n },\n {\n class: ['w-100', 'position-relative', 'r-control-button-bar'],\n role: 'toolbar',\n style: {\n transition: 'opacity 0.2s ease, transform 0.2s ease',\n },\n }\n )\n )\n const overflowedButtonIndexes = ref<number[]>([])\n const lastVisibleButtonEndOffset = ref<number | null>(null)\n const showOverflowMenu = computed(\n () => buttons.value.length > 1 && overflowedButtonIndexes.value.length > 0\n )\n const overflowMenuPosition = computed<'right' | 'left'>(() =>\n isRtl.value\n ? justification.value === 'start'\n ? 'left'\n : 'right'\n : justification.value === 'start'\n ? 'right'\n : 'left'\n )\n const computeOverflowedButtonIndexes = debounce(() => {\n // if there is no container, wrapper, or overflow menu wrapper, we cannot compute overflow\n if (!containerRef.value || !wrapperRef.value || !overflowMenuWrapperRef.value) return\n // if the container is not intersecting (visible), do not compute overflow\n if (!intersecting.value) return\n // if there are less than 2 buttons, then there cannot be any overflow\n if (buttons.value.length < 2) {\n overflowedButtonIndexes.value = []\n return\n }\n // we have 2 values to compare against\n // if none of the buttons extend beyond the wrapper's total width, then there is no overflow\n // otherwise anything that is beyond the wrapper's width minus the overflow button's width\n // is considered overflowed and will be set to 0 opacity + pointer-events: none and then\n // duplicated into the overflow menu\n const wrapperEl = wrapperRef.value\n const buttonWrappers = Array.from(wrapperEl.children) as HTMLDivElement[]\n const currentWrapperWidth = containerWidth.value\n const availableWidthWithOverflowMenu = containerWidth.value - overflowMenuWrapperWidth.value\n\n const buttonWrapperIndexAndOffsets = buttonWrappers.map((wrapper, index) => ({\n index,\n left: wrapper.offsetLeft,\n right: wrapper.offsetLeft + wrapper.offsetWidth,\n }))\n\n // Check if any buttons overflow the wrapper when the menu is visible\n const buttonsOverflowingWrapperIfMenuVisisble = buttonWrapperIndexAndOffsets.filter(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value\n ? left < overflowMenuWrapperWidth.value\n : right > availableWidthWithOverflowMenu\n )\n\n // if no buttons overflow the wrapper when the menu is visible, exit early\n if (buttonsOverflowingWrapperIfMenuVisisble.length === 0) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // check if any of the buttons overflow the wrapper if the menu is not visible\n const someOutsideContainer = buttonsOverflowingWrapperIfMenuVisisble.some(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value ? left < 0 : right > currentWrapperWidth\n )\n // if none of the buttons overflow the wrapper if the menu is not visible, exit early\n if (!someOutsideContainer) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // otherwise, the buttons that overflow the wrapper when the menu is visible are the ones that are overflowed\n overflowedButtonIndexes.value = buttonsOverflowingWrapperIfMenuVisisble.map(\n ({ index }) => index\n )\n\n // in order to make the overflow menu button flow more naturally,\n // we're going to reposition it based on the position of the first hidden button\n const computedHiddenButtons = buttonsOverflowingWrapperIfMenuVisisble.sort((a, b) => {\n if ('left' === overflowMenuPosition.value) {\n return b.right - a.right\n } else {\n return a.left - b.left\n }\n })\n\n const firstHiddenButton = computedHiddenButtons[0]\n if (!firstHiddenButton) {\n lastVisibleButtonEndOffset.value = null\n return\n }\n lastVisibleButtonEndOffset.value =\n 'left' === overflowMenuPosition.value ? firstHiddenButton.right : firstHiddenButton.left\n }, 50)\n const wrapperMutationObserverHandler = (entries: MutationRecord[]) => {\n if (entries.some((e) => e.type === 'childList')) {\n queueMicrotask(() => computeOverflowedButtonIndexes())\n }\n }\n const wrapperObserver = (is: HTMLDivElement | null, was: HTMLDivElement | null | undefined) => {\n if (was && wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n }\n if (is && wrapperMutationObserver) {\n wrapperMutationObserver.observe(is, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n })\n }\n }\n const closeOverflowMenu = () => {\n if (overflowMenuButtonRef.value) {\n overflowMenuButtonRef.value.close()\n }\n }\n const wrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'overflow-x-hidden',\n 'w-100',\n 'r-control-button-bar__wrapper',\n {\n 'justify-start': justification.value === 'start',\n 'justify-end': justification.value === 'end',\n },\n ],\n }))\n const overflowMenuWrapperOffsets = computed(() => {\n if (lastVisibleButtonEndOffset.value === null || xs.value) {\n return stripUndefinedValuesFromObject({\n left: 'left' === overflowMenuPosition.value ? 0 : undefined,\n right: 'right' === overflowMenuPosition.value ? 0 : undefined,\n })\n } else {\n return stripUndefinedValuesFromObject({\n left:\n 'left' === overflowMenuPosition.value\n ? // add 8px to account for the 8px gap on the left side of the button\n convertToUnit(\n lastVisibleButtonEndOffset.value - overflowMenuWrapperWidth.value + 8,\n 'px'\n )\n : // remove 8px to account for the 8px gap on the right side of the button\n convertToUnit(lastVisibleButtonEndOffset.value - 8, 'px'),\n })\n }\n })\n const overflowMenuWrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'align-center',\n 'r-control-button-bar__overflow-menu',\n 'position-absolute',\n {\n [`ps-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`pe-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n ],\n style: {\n ...overflowMenuWrapperOffsets.value,\n ...stripUndefinedValuesFromObject({\n top: `calc(50% - ${convertToUnit(overflowMenuWrapperHeight.value / 2)})`,\n opacity: showOverflowMenu.value ? 1 : 0,\n pointerEvents: showOverflowMenu.value ? undefined : 'none',\n zIndex: showOverflowMenu.value ? 1 : undefined,\n }),\n },\n }))\n const watchStopHandles: WatchStopHandle[] = []\n let wrapperMutationObserver: MutationObserver | undefined\n useRender(() =>\n h(\n 'div',\n {\n ref: containerRef,\n ...containerProps.value,\n },\n [\n h(\n 'div',\n {\n ref: wrapperRef,\n ...wrapperProps.value,\n },\n Array.from(usableButtons.value).map((btnVNode, btnIndex) =>\n h(\n 'div',\n {\n key: `button-wrapper-${btnIndex}`,\n dataBtnIndex: btnIndex,\n class: {\n [`me-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`ms-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n style: stripUndefinedValuesFromObject({\n opacity: overflowedButtonIndexes.value.includes(btnIndex) ? 0 : 1,\n pointerEvents: overflowedButtonIndexes.value.includes(btnIndex)\n ? 'none'\n : undefined,\n }),\n },\n btnVNode\n )\n )\n ),\n h(\n 'div',\n { ref: overflowMenuWrapperRef, ...overflowMenuWrapperProps.value },\n h(\n ControlMenu,\n { ref: overflowMenuButtonRef, ...normalizedOverflowMenuButtonOptions.value },\n () => [\n prependMenuSlot ? prependMenuSlot() : null,\n ...Array.from(overflowedButtonIndexes.value).map((btnIndex) =>\n h(VListItem, { key: `overflowed-button-${btnIndex}` }, () =>\n h(\n 'div',\n { class: ['w-100', 'd-flex', 'justify-center'] },\n clonedButtons.value[btnIndex] || null\n )\n )\n ),\n appendMenuSlot ? appendMenuSlot() : null,\n ]\n )\n ),\n ]\n )\n )\n onMounted(() => {\n watchStopHandles.push(\n watch(containerWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(justification, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(intersecting, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(wrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuWrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuPosition, computeOverflowedButtonIndexes, { immediate: true })\n )\n if (SUPPORTS_MUTATION_OBSERVER) {\n wrapperMutationObserver = new MutationObserver(wrapperMutationObserverHandler)\n }\n watchStopHandles.push(watch(wrapperRef, wrapperObserver, { immediate: true }))\n computeOverflowedButtonIndexes.immediate()\n })\n onUnmounted(() => {\n // close the menu if it is open\n closeOverflowMenu()\n // clear all of the watch stop handles\n watchStopHandles.forEach((stopHandle) => stopHandle())\n watchStopHandles.splice(0, watchStopHandles.length)\n // disconnect & cleanup the mutation observer\n if (wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n wrapperMutationObserver = undefined\n }\n })\n return forwardRefs(\n {\n overflowMenuPosition,\n lastVisibleButtonEndOffset,\n overflowed: showOverflowMenu,\n reflow: computeOverflowedButtonIndexes,\n close: closeOverflowMenu,\n buttons: buttons,\n usableButtons: usableButtons,\n clonedButtons: clonedButtons,\n },\n containerRef,\n wrapperRef,\n overflowMenuWrapperRef\n )\n },\n})\n\n/**\n * Component instance type for ControlButtonBar.\n *\n * @public\n */\nexport type ControlButtonBar = InstanceType<typeof ControlButtonBar>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-DHeWMCWw.mjs","sources":["../src/private/control-button-bar/index.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Control Button Bar Component\n|--------------------------------------------------------------------------\n|\n| An intelligent, responsive toolbar component that automatically handles\n| button overflow with dropdown menus. Uses container-aware responsive\n| breakpoints to adapt to any layout constraint, providing seamless UX\n| across devices and contexts.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { useLocale } from 'vuetify'\nimport { deepmerge } from 'deepmerge-ts'\nimport { useSlot } from '../common/utils'\nimport { ControlMenu } from '../control-menu'\nimport { useScopedDisplay } from '../ux/display'\nimport { VListItem } from 'vuetify/components/VList'\nimport { debounce } from '@nhtio/vuetifiable/util/helpers'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeControlButtonBarProps, controlButtonBarEmits } from './props'\nimport { stripUndefinedValuesFromObject, asAbsInt } from '../common/utils'\nimport {\n computed,\n ref,\n h,\n defineComponent,\n onMounted,\n onUnmounted,\n toRefs,\n mergeProps,\n cloneVNode,\n watch,\n} from 'vue'\nimport type { WatchStopHandle, SlotsType, VNode } from 'vue'\nimport type { ControlButtonBarOverflowMenuButtonProps } from './props'\n\nexport type { ControlButtonBarProps } from './props'\n\nconst SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && 'MutationObserver' in window\n\nconst cloneForMenu = (vnode: VNode) => {\n const updatedProps = stripUndefinedValuesFromObject({\n ...vnode.props,\n 'id': undefined,\n 'aria-controls': undefined,\n ...mergeProps(\n {\n class: vnode.props?.class ? vnode.props.class : undefined,\n },\n {\n class: ['mx-0'],\n }\n ),\n // we are adding a custom prop to identify that this button is rendered in the menu\n // if the component supports it, it can use this prop to adjust its styling/behavior\n 'inOverflowMenu': true,\n })\n return cloneVNode(vnode, updatedProps)\n}\n\n/**\n * Slot types for the ControlButtonBar component.\n *\n * @public\n */\nexport type ControlButtonBarSlots = {\n /** Content to prepend to the overflow menu */\n 'prepend-menu'?: () => any\n /** Content to append to the overflow menu */\n 'append-menu'?: () => any\n}\n\n/**\n * A responsive toolbar component that automatically handles button overflow with dropdown menus.\n *\n * Features:\n * - Container-aware responsive behavior using useScopedDisplay\n * - Automatic overflow detection with visual jumping reduction\n * - RTL support with intelligent menu positioning\n * - MutationObserver for dynamic content changes\n * - Customizable gap spacing and justification\n * - Performance-optimized with debounced calculations\n *\n * @example\n * ```vue\n * <ControlButtonBar\n * :buttons=\"[\n * h(VBtn, { text: 'Columns' }),\n * h(VBtn, { text: 'Filters' }),\n * h(VBtn, { text: 'Sorting' })\n * ]\"\n * justification=\"center\"\n * :gap=\"2\"\n * />\n * ```\n *\n * @public\n */\nexport const ControlButtonBar = defineComponent({\n name: 'ControlButtonBar',\n inheritAttrs: false,\n props: makeControlButtonBarProps(),\n emits: controlButtonBarEmits,\n slots: Object as SlotsType<ControlButtonBarSlots>,\n setup(props, { attrs, slots }) {\n const t = useI18n()\n const { isRtl } = useLocale()\n const {\n buttons,\n justification,\n gap,\n overflowMenuButtonOptions,\n class: className,\n style,\n } = toRefs(props)\n const prependMenuSlot = useSlot<ControlButtonBarSlots>('prepend-menu', slots)\n const appendMenuSlot = useSlot<ControlButtonBarSlots>('append-menu', slots)\n const normalizedOverflowMenuButtonOptions = computed<ControlButtonBarOverflowMenuButtonProps>(\n () =>\n deepmerge(\n {\n cta: t('general.more'),\n },\n stripUndefinedValuesFromObject({\n cta: overflowMenuButtonOptions.value.cta,\n }),\n {\n activator: stripUndefinedValuesFromObject({\n color: overflowMenuButtonOptions.value.color,\n density: overflowMenuButtonOptions.value.density,\n size: overflowMenuButtonOptions.value.size,\n }),\n }\n )\n )\n const containerRef = ref<HTMLDivElement | null>(null)\n const wrapperRef = ref<HTMLDivElement | null>(null)\n const overflowMenuWrapperRef = ref<HTMLElement | null>(null)\n const overflowMenuButtonRef = ref<ControlMenu | null>(null)\n const overflowMenuButtonIsOpen = computed(() => {\n if (!overflowMenuButtonRef.value) return false\n return overflowMenuButtonRef.value.isOpen\n })\n const usableButtons = computed(() => Array.from(buttons.value).map((btn) => cloneVNode(btn)))\n const clonedButtons = computed(() =>\n !overflowMenuButtonIsOpen.value\n ? []\n : Array.from(buttons.value).map((btn) => cloneForMenu(btn))\n )\n const { width: containerWidth, intersecting, xs } = useScopedDisplay(containerRef)\n const { width: wrapperWidth } = useScopedDisplay(wrapperRef)\n const { width: overflowMenuWrapperWidth, height: overflowMenuWrapperHeight } =\n useScopedDisplay(overflowMenuWrapperRef)\n const containerProps = computed(() =>\n mergeProps(\n {\n class: attrs.class || {},\n style: attrs.style || {},\n },\n {\n class: className.value,\n style: style.value,\n },\n {\n class: ['w-100', 'position-relative', 'r-control-button-bar'],\n role: 'toolbar',\n style: {\n transition: 'opacity 0.2s ease, transform 0.2s ease',\n },\n }\n )\n )\n const overflowedButtonIndexes = ref<number[]>([])\n const lastVisibleButtonEndOffset = ref<number | null>(null)\n const showOverflowMenu = computed(\n () => buttons.value.length > 1 && overflowedButtonIndexes.value.length > 0\n )\n const overflowMenuPosition = computed<'right' | 'left'>(() =>\n isRtl.value\n ? justification.value === 'start'\n ? 'left'\n : 'right'\n : justification.value === 'start'\n ? 'right'\n : 'left'\n )\n const computeOverflowedButtonIndexes = debounce(() => {\n // if there is no container, wrapper, or overflow menu wrapper, we cannot compute overflow\n if (!containerRef.value || !wrapperRef.value || !overflowMenuWrapperRef.value) return\n // if the container is not intersecting (visible), do not compute overflow\n if (!intersecting.value) return\n // if there are less than 2 buttons, then there cannot be any overflow\n if (buttons.value.length < 2) {\n overflowedButtonIndexes.value = []\n return\n }\n // we have 2 values to compare against\n // if none of the buttons extend beyond the wrapper's total width, then there is no overflow\n // otherwise anything that is beyond the wrapper's width minus the overflow button's width\n // is considered overflowed and will be set to 0 opacity + pointer-events: none and then\n // duplicated into the overflow menu\n const wrapperEl = wrapperRef.value\n const buttonWrappers = Array.from(wrapperEl.children) as HTMLDivElement[]\n const currentWrapperWidth = containerWidth.value\n const availableWidthWithOverflowMenu = containerWidth.value - overflowMenuWrapperWidth.value\n\n const buttonWrapperIndexAndOffsets = buttonWrappers.map((wrapper, index) => ({\n index,\n left: wrapper.offsetLeft,\n right: wrapper.offsetLeft + wrapper.offsetWidth,\n }))\n\n // Check if any buttons overflow the wrapper when the menu is visible\n const buttonsOverflowingWrapperIfMenuVisisble = buttonWrapperIndexAndOffsets.filter(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value\n ? left < overflowMenuWrapperWidth.value\n : right > availableWidthWithOverflowMenu\n )\n\n // if no buttons overflow the wrapper when the menu is visible, exit early\n if (buttonsOverflowingWrapperIfMenuVisisble.length === 0) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // check if any of the buttons overflow the wrapper if the menu is not visible\n const someOutsideContainer = buttonsOverflowingWrapperIfMenuVisisble.some(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value ? left < 0 : right > currentWrapperWidth\n )\n // if none of the buttons overflow the wrapper if the menu is not visible, exit early\n if (!someOutsideContainer) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // otherwise, the buttons that overflow the wrapper when the menu is visible are the ones that are overflowed\n overflowedButtonIndexes.value = buttonsOverflowingWrapperIfMenuVisisble.map(\n ({ index }) => index\n )\n\n // in order to make the overflow menu button flow more naturally,\n // we're going to reposition it based on the position of the first hidden button\n const computedHiddenButtons = buttonsOverflowingWrapperIfMenuVisisble.sort((a, b) => {\n if ('left' === overflowMenuPosition.value) {\n return b.right - a.right\n } else {\n return a.left - b.left\n }\n })\n\n const firstHiddenButton = computedHiddenButtons[0]\n if (!firstHiddenButton) {\n lastVisibleButtonEndOffset.value = null\n return\n }\n lastVisibleButtonEndOffset.value =\n 'left' === overflowMenuPosition.value ? firstHiddenButton.right : firstHiddenButton.left\n }, 50)\n const wrapperMutationObserverHandler = (entries: MutationRecord[]) => {\n if (entries.some((e) => e.type === 'childList')) {\n queueMicrotask(() => computeOverflowedButtonIndexes())\n }\n }\n const wrapperObserver = (is: HTMLDivElement | null, was: HTMLDivElement | null | undefined) => {\n if (was && wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n }\n if (is && wrapperMutationObserver) {\n wrapperMutationObserver.observe(is, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n })\n }\n }\n const closeOverflowMenu = () => {\n if (overflowMenuButtonRef.value) {\n overflowMenuButtonRef.value.close()\n }\n }\n const wrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'overflow-x-hidden',\n 'w-100',\n 'r-control-button-bar__wrapper',\n {\n 'justify-start': justification.value === 'start',\n 'justify-end': justification.value === 'end',\n },\n ],\n }))\n const overflowMenuWrapperOffsets = computed(() => {\n if (lastVisibleButtonEndOffset.value === null || xs.value) {\n return stripUndefinedValuesFromObject({\n left: 'left' === overflowMenuPosition.value ? 0 : undefined,\n right: 'right' === overflowMenuPosition.value ? 0 : undefined,\n })\n } else {\n return stripUndefinedValuesFromObject({\n left:\n 'left' === overflowMenuPosition.value\n ? // add 8px to account for the 8px gap on the left side of the button\n convertToUnit(\n lastVisibleButtonEndOffset.value - overflowMenuWrapperWidth.value + 8,\n 'px'\n )\n : // remove 8px to account for the 8px gap on the right side of the button\n convertToUnit(lastVisibleButtonEndOffset.value - 8, 'px'),\n })\n }\n })\n const overflowMenuWrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'align-center',\n 'r-control-button-bar__overflow-menu',\n 'position-absolute',\n {\n [`ps-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`pe-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n ],\n style: {\n ...overflowMenuWrapperOffsets.value,\n ...stripUndefinedValuesFromObject({\n top: `calc(50% - ${convertToUnit(overflowMenuWrapperHeight.value / 2)})`,\n opacity: showOverflowMenu.value ? 1 : 0,\n pointerEvents: showOverflowMenu.value ? undefined : 'none',\n zIndex: showOverflowMenu.value ? 1 : undefined,\n }),\n },\n }))\n const watchStopHandles: WatchStopHandle[] = []\n let wrapperMutationObserver: MutationObserver | undefined\n useRender(() =>\n h(\n 'div',\n {\n ref: containerRef,\n ...containerProps.value,\n },\n [\n h(\n 'div',\n {\n ref: wrapperRef,\n ...wrapperProps.value,\n },\n Array.from(usableButtons.value).map((btnVNode, btnIndex) =>\n h(\n 'div',\n {\n key: `button-wrapper-${btnIndex}`,\n dataBtnIndex: btnIndex,\n class: {\n [`me-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`ms-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n style: stripUndefinedValuesFromObject({\n opacity: overflowedButtonIndexes.value.includes(btnIndex) ? 0 : 1,\n pointerEvents: overflowedButtonIndexes.value.includes(btnIndex)\n ? 'none'\n : undefined,\n }),\n },\n btnVNode\n )\n )\n ),\n h(\n 'div',\n { ref: overflowMenuWrapperRef, ...overflowMenuWrapperProps.value },\n h(\n ControlMenu,\n { ref: overflowMenuButtonRef, ...normalizedOverflowMenuButtonOptions.value },\n () => [\n prependMenuSlot ? prependMenuSlot() : null,\n ...Array.from(overflowedButtonIndexes.value).map((btnIndex) =>\n h(VListItem, { key: `overflowed-button-${btnIndex}` }, () =>\n h(\n 'div',\n { class: ['w-100', 'd-flex', 'justify-center'] },\n clonedButtons.value[btnIndex] || null\n )\n )\n ),\n appendMenuSlot ? appendMenuSlot() : null,\n ]\n )\n ),\n ]\n )\n )\n onMounted(() => {\n watchStopHandles.push(\n watch(containerWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(justification, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(intersecting, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(wrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuWrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuPosition, computeOverflowedButtonIndexes, { immediate: true })\n )\n if (SUPPORTS_MUTATION_OBSERVER) {\n wrapperMutationObserver = new MutationObserver(wrapperMutationObserverHandler)\n }\n watchStopHandles.push(watch(wrapperRef, wrapperObserver, { immediate: true }))\n computeOverflowedButtonIndexes.immediate()\n })\n onUnmounted(() => {\n // close the menu if it is open\n closeOverflowMenu()\n // clear all of the watch stop handles\n watchStopHandles.forEach((stopHandle) => stopHandle())\n watchStopHandles.splice(0, watchStopHandles.length)\n // disconnect & cleanup the mutation observer\n if (wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n wrapperMutationObserver = undefined\n }\n })\n return forwardRefs(\n {\n overflowMenuPosition,\n lastVisibleButtonEndOffset,\n overflowed: showOverflowMenu,\n reflow: computeOverflowedButtonIndexes,\n close: closeOverflowMenu,\n buttons: buttons,\n usableButtons: usableButtons,\n clonedButtons: clonedButtons,\n },\n containerRef,\n wrapperRef,\n overflowMenuWrapperRef\n )\n },\n})\n\n/**\n * Component instance type for ControlButtonBar.\n *\n * @public\n */\nexport type ControlButtonBar = InstanceType<typeof ControlButtonBar>\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as useI18n, e as useCron } from "./ioc-
|
|
2
|
-
import { S as SvgIcon } from "./index-
|
|
3
|
-
import { m as mdiRefreshAuto } from "./mdi-
|
|
4
|
-
import { C as ControlMenu } from "./index-
|
|
5
|
-
import { p as printfExports } from "./http-
|
|
6
|
-
import { m as makeControlMenuControlButtonProps } from "./props-
|
|
1
|
+
import { a as useI18n, e as useCron } from "./ioc-CbjgKkoq.mjs";
|
|
2
|
+
import { S as SvgIcon } from "./index-dcZGsFwf.mjs";
|
|
3
|
+
import { m as mdiRefreshAuto } from "./mdi-Kxmy15-q.mjs";
|
|
4
|
+
import { C as ControlMenu } from "./index-lUBFKgIk.mjs";
|
|
5
|
+
import { p as printfExports } from "./http-pGFfofl9.mjs";
|
|
6
|
+
import { m as makeControlMenuControlButtonProps } from "./props-B2HHemO2.mjs";
|
|
7
7
|
import { defineComponent, toRefs, ref, computed, watch, onBeforeUnmount, h } from "vue";
|
|
8
|
-
import { V as VListItem } from "./VListItem-
|
|
8
|
+
import { V as VListItem } from "./VListItem-B2LElOLe.mjs";
|
|
9
9
|
const AutoRefeshController = defineComponent({
|
|
10
10
|
name: "AutoRefeshController",
|
|
11
11
|
props: makeControlMenuControlButtonProps(),
|
|
@@ -85,4 +85,4 @@ const AutoRefeshController = defineComponent({
|
|
|
85
85
|
export {
|
|
86
86
|
AutoRefeshController as A
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=index-
|
|
88
|
+
//# sourceMappingURL=index-DiBGKnUB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DiBGKnUB.mjs","sources":["../src/private/autorefresh-controller/index.ts"],"sourcesContent":["import { useI18n } from '../ioc'\nimport { useCron } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { mdiRefreshAuto } from '@mdi/js'\nimport { ControlMenu } from '../control-menu'\nimport { printf as format } from 'fast-printf'\nimport { VListItem } from 'vuetify/components/VList'\nimport { makeControlMenuControlButtonProps } from '../control-menu/props'\nimport { defineComponent, h, toRefs, ref, watch, computed, onBeforeUnmount } from 'vue'\nimport type { ControlMenuProps } from '../control-menu/props'\n\nexport const AutoRefeshController = defineComponent({\n name: 'AutoRefeshController',\n props: makeControlMenuControlButtonProps(),\n emits: ['triggered'],\n setup(props, { emit }) {\n const { color, density, size } = toRefs(props)\n const t = useI18n()\n const cron = useCron()\n const crontab = ref<string | null>(null)\n const options = [\n { crontab: null, label: t('general.off') },\n { crontab: '*/5 * * * * *', label: format('5%s', t('abbreviations.seconds')) },\n { crontab: '*/10 * * * * *', label: format('10%s', t('abbreviations.seconds')) },\n { crontab: '*/30 * * * * *', label: format('30%s', t('abbreviations.seconds')) },\n { crontab: '* * * * *', label: format('1%s', t('abbreviations.minutes')) },\n { crontab: '*/5 * * * *', label: format('5%s', t('abbreviations.minutes')) },\n { crontab: '*/15 * * * *', label: format('15%s', t('abbreviations.minutes')) },\n { crontab: '*/30 * * * *', label: format('30%s', t('abbreviations.minutes')) },\n { crontab: '0 * * * *', label: format('1%s', t('abbreviations.hours')) },\n { crontab: '0 */2 * * *', label: format('2%s', t('abbreviations.hours')) },\n { crontab: '0 */3 * * *', label: format('3%s', t('abbreviations.hours')) },\n { crontab: '0 */4 * * *', label: format('4%s', t('abbreviations.hours')) },\n { crontab: '0 */6 * * *', label: format('6%s', t('abbreviations.hours')) },\n { crontab: '0 */8 * * *', label: format('8%s', t('abbreviations.hours')) },\n { crontab: '0 */12 * * *', label: format('12%s', t('abbreviations.hours')) },\n ]\n const currentOption = computed(() => {\n return options.find((opt) => opt.crontab === crontab.value) || options[0]\n })\n const doTrigger = () => {\n emit('triggered')\n }\n watch(\n crontab,\n (is, was) => {\n if (cron) {\n if (was) {\n cron.$off(was, doTrigger)\n }\n if (is) {\n cron.$on(is, doTrigger)\n }\n }\n },\n { immediate: true }\n )\n onBeforeUnmount(() => {\n if (cron && crontab.value) {\n cron.$off(crontab.value, doTrigger)\n }\n })\n const controlMenuBindings = computed<ControlMenuProps>(() => ({\n icon: h(SvgIcon, { d: mdiRefreshAuto }),\n cta: currentOption.value.label,\n activator: {\n color: color.value,\n density: density.value,\n size: size.value,\n // dividePrependIcon: true,\n },\n }))\n return () =>\n h(ControlMenu, controlMenuBindings.value, () =>\n options.map((o) =>\n h(VListItem, {\n title: o.label,\n onClick: () => {\n crontab.value = o.crontab\n },\n active: o.crontab === crontab.value,\n })\n )\n )\n },\n})\n"],"names":["format"],"mappings":"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"}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { S as SvgIcon, s as svgPathToIconValue } from "./index-
|
|
2
|
-
import { u as useAlert } from "./alert-
|
|
1
|
+
import { S as SvgIcon, s as svgPathToIconValue } from "./index-dcZGsFwf.mjs";
|
|
2
|
+
import { u as useAlert } from "./alert-BXbhLNkg.mjs";
|
|
3
3
|
import { d as deepmerge } from "./index-B2cQuM3q.mjs";
|
|
4
4
|
import { n as numeral } from "./numeral-DmC5bR5g.mjs";
|
|
5
|
-
import { p as printfExports } from "./http-
|
|
6
|
-
import { u as useScopedDisplay } from "./display-
|
|
7
|
-
import { m as makeControlButtonProps, C as ControlButton, u as useMountedInBrowser } from "./index-
|
|
8
|
-
import { h as getDefaultsForPropFactory, e as emitsFactory, s as stripUndefinedValuesFromObject, p as propsAndEmitsFactory, f as isHTMLElement, q as typeAndFormatToResourcefulFieldType, i as isObject, R as ResourcefulFieldType, t as toUnreactive, j as asAbsInt, k as getOxfordizedListParts } from "./utils-
|
|
9
|
-
import { a as useI18n, k as useBrowser, c as useHttp } from "./ioc-
|
|
5
|
+
import { p as printfExports } from "./http-pGFfofl9.mjs";
|
|
6
|
+
import { u as useScopedDisplay } from "./display-2uHLu-iA.mjs";
|
|
7
|
+
import { m as makeControlButtonProps, C as ControlButton, u as useMountedInBrowser } from "./index-C7w5RPS8.mjs";
|
|
8
|
+
import { h as getDefaultsForPropFactory, e as emitsFactory, s as stripUndefinedValuesFromObject, p as propsAndEmitsFactory, f as isHTMLElement, q as typeAndFormatToResourcefulFieldType, i as isObject, R as ResourcefulFieldType, t as toUnreactive, j as asAbsInt, k as getOxfordizedListParts } from "./utils-Dh8-g-7s.mjs";
|
|
9
|
+
import { a as useI18n, k as useBrowser, c as useHttp } from "./ioc-CbjgKkoq.mjs";
|
|
10
10
|
import { D as DateTime } from "./vendor-nhtio-millicron-BXT4ATVX.mjs";
|
|
11
|
-
import { o as useScopeId, u as useDelay, n as makeDelayProps, C as mdiContentSave, d as mdiClose, a1 as mdiMagnify, a as mdiMenuUp, b as mdiMenuDown, T as mdiEyeOff, a2 as mdiMouseOff, _ as mdiDrag, U as mdiEye, a3 as mdiContentSaveCheck, V as VCard, a4 as mdiFileQuestion, a5 as mdiFileFind, a6 as mdiFileTable, a7 as mdiInformationSlabCircle, J as mdiCheckboxMarked, I as mdiCheckboxBlankOutline, a8 as mdiFileDownload, a9 as mdiFileCancel, aa as mdiFileCheck, H as mdiCheckboxIntermediateVariant, ab as mdiSortAscending, ac as mdiSortDescending, ad as mdiCancel, ae as mdiCloseThick, af as mdiCheckCircle, ag as mdiCloseCircle, ah as mdiHelpCircle, ai as mdiPlaylistPlay, aj as mdiCardPlusOutline, ak as mdiFilterPlus, al as mdiSetNone, am as mdiVectorLink, an as mdiAlertCircle, Z as mdiDelete, ao as mdiNotificationClearAll, ap as mdiUnfoldLessVertical, aq as mdiDotsHorizontal, ar as mdiThumbUp, G as mdiPlus, as as mdiBackupRestore, at as mdiPound, au as mdiPageLast, g as mdiChevronRight, h as mdiChevronLeft, av as mdiPageFirst, aw as mdiEyeOffOutline, ax as mdiSort, ay as mdiCheckboxOutline, az as mdiCheckboxMultipleOutline, aA as mdiCheckboxMultipleBlank, aB as mdiCheckboxMultipleBlankOutline, aC as mdiViewColumnOutline, aD as mdiFilter, aE as mdiPencilBoxMultipleOutline, aF as mdiInformationBox, l as mdiRefresh, aG as mdiDatabase, aH as mdiFormatListBulletedSquare } from "./mdi-
|
|
12
|
-
import { B as Buffer, u as utils, w as writeFileSync } from "./vendor-xlsx-
|
|
13
|
-
import { F as FormWithValidation } from "./validation-
|
|
11
|
+
import { o as useScopeId, u as useDelay, n as makeDelayProps, C as mdiContentSave, d as mdiClose, a1 as mdiMagnify, a as mdiMenuUp, b as mdiMenuDown, T as mdiEyeOff, a2 as mdiMouseOff, _ as mdiDrag, U as mdiEye, a3 as mdiContentSaveCheck, V as VCard, a4 as mdiFileQuestion, a5 as mdiFileFind, a6 as mdiFileTable, a7 as mdiInformationSlabCircle, J as mdiCheckboxMarked, I as mdiCheckboxBlankOutline, a8 as mdiFileDownload, a9 as mdiFileCancel, aa as mdiFileCheck, H as mdiCheckboxIntermediateVariant, ab as mdiSortAscending, ac as mdiSortDescending, ad as mdiCancel, ae as mdiCloseThick, af as mdiCheckCircle, ag as mdiCloseCircle, ah as mdiHelpCircle, ai as mdiPlaylistPlay, aj as mdiCardPlusOutline, ak as mdiFilterPlus, al as mdiSetNone, am as mdiVectorLink, an as mdiAlertCircle, Z as mdiDelete, ao as mdiNotificationClearAll, ap as mdiUnfoldLessVertical, aq as mdiDotsHorizontal, ar as mdiThumbUp, G as mdiPlus, as as mdiBackupRestore, at as mdiPound, au as mdiPageLast, g as mdiChevronRight, h as mdiChevronLeft, av as mdiPageFirst, aw as mdiEyeOffOutline, ax as mdiSort, ay as mdiCheckboxOutline, az as mdiCheckboxMultipleOutline, aA as mdiCheckboxMultipleBlank, aB as mdiCheckboxMultipleBlankOutline, aC as mdiViewColumnOutline, aD as mdiFilter, aE as mdiPencilBoxMultipleOutline, aF as mdiInformationBox, l as mdiRefresh, aG as mdiDatabase, aH as mdiFormatListBulletedSquare } from "./mdi-Kxmy15-q.mjs";
|
|
12
|
+
import { B as Buffer, u as utils, w as writeFileSync } from "./vendor-xlsx-B1NmWxyx.mjs";
|
|
13
|
+
import { F as FormWithValidation } from "./validation-DBLJZW1_.mjs";
|
|
14
14
|
import { g as getDefaultExportFromCjs } from "./_commonjsHelpers-CUmg6egw.mjs";
|
|
15
15
|
import { k as validator, j as encode, V as ValidationError, i as decode, d as decode$1 } from "./vendor-nhtio-lucid-resourceful-Bc8uNS08.mjs";
|
|
16
|
-
import { a as propsFactory$1, b as pick, d as debounce, u as useRender$1, g as makeComponentProps$1, e as IconValue, o as omit$1,
|
|
16
|
+
import { a as propsFactory$1, b as pick, d as debounce, u as useRender$1, g as makeComponentProps$1, e as IconValue, o as omit$1, l as makeVInputProps, D as makeVBtnToggleProps, E as makeVDataTableServerProps$1, q as makeElevationProps$1, r as makeDensityProps$1, F as makeThemeProps$1, i as makeVTextFieldProps, G as makeVariantProps$1, H as makeRoundedProps$1, J as makePositionProps, K as makeDimensionProps, L as makeBorderProps$1, s as makeVCardProps, t as throttle } from "./vendor-nhtio-vuetifiable-CRAkpWr4.mjs";
|
|
17
17
|
import { f as formatBigNumber } from "./big_number_formatter-Dwx4Jjuu.mjs";
|
|
18
18
|
import { shallowRef, computed, onMounted, watch, onBeforeUnmount, watchEffect, onScopeDispose, ref, toRef, nextTick, readonly, createElementVNode, Fragment, createVNode, mergeProps, Transition, h, defineComponent, toRefs, toRaw, warn, provide, normalizeStyle, normalizeClass, withDirectives, vShow, triggerRef, onBeforeUpdate, inject, capitalize, toValue, createTextVNode, withModifiers, toDisplayString, cloneVNode } from "vue";
|
|
19
|
-
import { S as Sortable, o as ordinal } from "./index-
|
|
20
|
-
import { u as useHttpElements, e as extractErrorCode } from "./http-
|
|
21
|
-
import { b as ResourcefulRecordBusEmitter, a as ResourcefulRecordForm } from "./form-
|
|
22
|
-
import { r as renderDefaultResourcefulRecordForm } from "./renderers-
|
|
19
|
+
import { S as Sortable, o as ordinal } from "./index-BitVUrFg.mjs";
|
|
20
|
+
import { u as useHttpElements, e as extractErrorCode } from "./http-BbIZXN2x.mjs";
|
|
21
|
+
import { b as ResourcefulRecordBusEmitter, a as ResourcefulRecordForm } from "./form-JY-hIKBm.mjs";
|
|
22
|
+
import { r as renderDefaultResourcefulRecordForm } from "./renderers-Dowye4Bl.mjs";
|
|
23
23
|
import { ResourcefulRecordScopedDisplaySymbol, ResourcefulRecordScopedBusConsumerSymbol, ResourcefulIndexScopedDisplaySymbol } from "./symbols.mjs";
|
|
24
|
-
import { aZ as isOn, bg as callEvent, Z as convertToUnit, b7 as CircularBuffer, P as useToggleScope, U as clamp, g as genericComponent, p as propsFactory, C as useRtl, j as provideTheme, l as useBorder, k as useBackgroundColor, n as useElevation, Y as useDisplay, r as useRounded, bb as useRouter, u as useProxiedModel, bj as toPhysical, ad as provideDefaults, f as useRender, a as VImg, i as VDefaultsProvider, s as makeThemeProps, t as makeTagProps, v as makeRoundedProps, y as makeElevationProps, ab as makeDisplayProps, A as makeComponentProps, B as makeBorderProps, c as VBtn, d as VIcon, V as VProgressLinear, b as VProgressCircular, a8 as useResizeObserver, as as MaybeTransition, aI as makeTransitionProps, x as makeLocationProps, E as omit, aw as makeVBtnProps, bk as VBtnToggle, T as useLocale$1, at as createRange, S as makeVariantProps, _ as makeSizeProps, an as makeDensityProps, M as IconValue$1, aT as keyValues, N as getCurrentInstance, bl as defineFunctionalComponent, aq as consoleError, ap as wrapInArray, be as isPrimitive, ac as deepEqual, bm as getObjectValueByPath, bn as isEmpty, $ as useLoader, a2 as LoaderSlot, a$ as makeLoaderProps, ao as EventProp, az as pick$1, af as useDensity, bf as getPropertyFromItem } from "./display-
|
|
25
|
-
import { a as useLayoutItem, m as makeLayoutItemProps } from "./clipboard-
|
|
26
|
-
import { x as useSsrBoot, E as VList, b as VToolbar, V as VTextField, d as VToolbarItems, a as VDivider, w as VSelect, l as VLabel, L as VToolbarTitle,
|
|
27
|
-
import { V as VContainer, a as VRow, b as VCol } from "./VRow-
|
|
28
|
-
import { V as VListItem } from "./VListItem-
|
|
29
|
-
import { V as VCheckbox, R as RBooleanField } from "./boolean-
|
|
30
|
-
import { V as VChip } from "./VChip-
|
|
31
|
-
import { V as VEmptyState, s as stringify } from "./VEmptyState-
|
|
24
|
+
import { aZ as isOn, bg as callEvent, Z as convertToUnit, b7 as CircularBuffer, P as useToggleScope, U as clamp, g as genericComponent, p as propsFactory, C as useRtl, j as provideTheme, l as useBorder, k as useBackgroundColor, n as useElevation, Y as useDisplay, r as useRounded, bb as useRouter, u as useProxiedModel, bj as toPhysical, ad as provideDefaults, f as useRender, a as VImg, i as VDefaultsProvider, s as makeThemeProps, t as makeTagProps, v as makeRoundedProps, y as makeElevationProps, ab as makeDisplayProps, A as makeComponentProps, B as makeBorderProps, c as VBtn, d as VIcon, V as VProgressLinear, b as VProgressCircular, a8 as useResizeObserver, as as MaybeTransition, aI as makeTransitionProps, x as makeLocationProps, E as omit, aw as makeVBtnProps, bk as VBtnToggle, T as useLocale$1, at as createRange, S as makeVariantProps, _ as makeSizeProps, an as makeDensityProps, M as IconValue$1, aT as keyValues, N as getCurrentInstance, bl as defineFunctionalComponent, aq as consoleError, ap as wrapInArray, be as isPrimitive, ac as deepEqual, bm as getObjectValueByPath, bn as isEmpty, $ as useLoader, a2 as LoaderSlot, a$ as makeLoaderProps, ao as EventProp, az as pick$1, af as useDensity, bf as getPropertyFromItem } from "./display-D19CpJw_.mjs";
|
|
25
|
+
import { a as useLayoutItem, m as makeLayoutItemProps } from "./clipboard-B4T3iSwL.mjs";
|
|
26
|
+
import { x as useSsrBoot, E as VList, b as VToolbar, V as VTextField, d as VToolbarItems, a as VDivider, w as VSelect, l as VLabel, L as VToolbarTitle, f as VAutocomplete, M as VAlert, g as VInput, D as DevErrorAlert, t as VCheckboxBtn, J as makeFilterProps, A as useFilter, F as VVirtualScroll } from "./common-crxptQS0.mjs";
|
|
27
|
+
import { V as VContainer, a as VRow, b as VCol } from "./VRow-7oNLItQM.mjs";
|
|
28
|
+
import { V as VListItem } from "./VListItem-B2LElOLe.mjs";
|
|
29
|
+
import { V as VCheckbox, R as RBooleanField } from "./boolean-BoaSL5pb.mjs";
|
|
30
|
+
import { V as VChip } from "./VChip-BslsWQfv.mjs";
|
|
31
|
+
import { V as VEmptyState, s as stringify } from "./VEmptyState-DSkV3rdW.mjs";
|
|
32
32
|
import { l } from "./vendor-nhtio-tiny-typed-emitter-COEPsB0Y.mjs";
|
|
33
|
-
import { A as AutoRefeshController } from "./index-
|
|
33
|
+
import { A as AutoRefeshController } from "./index-DiBGKnUB.mjs";
|
|
34
34
|
import { w as warningSvg } from "./warning-CwVFcGgs.mjs";
|
|
35
|
-
import { V as VSheet } from "./VSheet-
|
|
36
|
-
import { V as VBadge, R as RStringField } from "./string-
|
|
37
|
-
import { a as VSpacer } from "./VDatePicker-
|
|
38
|
-
import { V as VDialog } from "./VDialog-
|
|
35
|
+
import { V as VSheet } from "./VSheet-DqbTSvsm.mjs";
|
|
36
|
+
import { V as VBadge, R as RStringField } from "./string-DOIj21u5.mjs";
|
|
37
|
+
import { a as VSpacer } from "./VDatePicker-QkOhEsiJ.mjs";
|
|
38
|
+
import { V as VDialog } from "./VDialog-CYWIsqyU.mjs";
|
|
39
39
|
import { e as errorSvg } from "./question-CpfZrjl2.mjs";
|
|
40
40
|
import { useLocale, useDisplay as useDisplay$1 } from "vuetify";
|
|
41
|
-
import { R as RBigIntField } from "./bigint-
|
|
42
|
-
import { R as RDateTimeField } from "./date_time-
|
|
43
|
-
import { R as RDateField } from "./date-
|
|
44
|
-
import { R as RIntegerField } from "./integer-
|
|
45
|
-
import { R as RNumberField } from "./number-
|
|
46
|
-
import { R as RUnsignedIntegerField } from "./unsigned_integer-
|
|
47
|
-
import "./enum-
|
|
48
|
-
import { V as VMenu, m as makeVMenuProps } from "./VMenu-
|
|
49
|
-
import { C as ControlMenu } from "./index-
|
|
50
|
-
import { m as makeControlMenuControlButtonProps, a as makeControlMenuProps } from "./props-
|
|
51
|
-
import { m as makeResourcefulIndexActionsProps, u as useTableActions, V as VTooltip, b as useBulkActions, a as isResourcefulIndexFunctionAction, c as canPerformBulkActionForRecords, i as isResourcefulIndexUrlAction } from "./actions-
|
|
52
|
-
import { V as VHover } from "./VHover-
|
|
53
|
-
import { C as ControlButtonBar } from "./index-
|
|
54
|
-
import { m as makeControlButtonBarProps, a as defaultControlButtonBarOverflowMenuButtonProps } from "./props-
|
|
41
|
+
import { R as RBigIntField } from "./bigint-S8oJ2u2Y.mjs";
|
|
42
|
+
import { R as RDateTimeField } from "./date_time-C2eWcsmU.mjs";
|
|
43
|
+
import { R as RDateField } from "./date-BaVQ-B5p.mjs";
|
|
44
|
+
import { R as RIntegerField } from "./integer-DGV22mIh.mjs";
|
|
45
|
+
import { R as RNumberField } from "./number-ChyJi9k7.mjs";
|
|
46
|
+
import { R as RUnsignedIntegerField } from "./unsigned_integer-cQWXKTHG.mjs";
|
|
47
|
+
import "./enum-BshWH7_8.mjs";
|
|
48
|
+
import { V as VMenu, m as makeVMenuProps } from "./VMenu-CahiNXXZ.mjs";
|
|
49
|
+
import { C as ControlMenu } from "./index-lUBFKgIk.mjs";
|
|
50
|
+
import { m as makeControlMenuControlButtonProps, a as makeControlMenuProps } from "./props-B2HHemO2.mjs";
|
|
51
|
+
import { m as makeResourcefulIndexActionsProps, u as useTableActions, V as VTooltip, b as useBulkActions, a as isResourcefulIndexFunctionAction, c as canPerformBulkActionForRecords, i as isResourcefulIndexUrlAction } from "./actions-nnJGlDWx.mjs";
|
|
52
|
+
import { V as VHover } from "./VHover-B2PK8R1R.mjs";
|
|
53
|
+
import { C as ControlButtonBar } from "./index-DHeWMCWw.mjs";
|
|
54
|
+
import { m as makeControlButtonBarProps, a as defaultControlButtonBarOverflowMenuButtonProps } from "./props-BPO1G4n5.mjs";
|
|
55
55
|
function getPrefixedEventHandlers(attrs, suffix, getData) {
|
|
56
56
|
return Object.keys(attrs).filter((key) => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {
|
|
57
57
|
acc[key.slice(0, -suffix.length)] = (event) => callEvent(attrs[key], event, getData(event));
|
|
@@ -12890,4 +12890,4 @@ export {
|
|
|
12890
12890
|
ExportFormat as b,
|
|
12891
12891
|
ExportScope as c
|
|
12892
12892
|
};
|
|
12893
|
-
//# sourceMappingURL=index-
|
|
12893
|
+
//# sourceMappingURL=index-Dl9jfPgI.mjs.map
|