{"version":3,"file":"VSpeedDial.mjs","names":["VDefaultsProvider","makeVMenuProps","VMenu","makeComponentProps","useProxiedModel","MaybeTransition","computed","ref","genericComponent","propsFactory","useRender","makeVSpeedDialProps","offset","minWidth","openDelay","closeDelay","location","transition","VSpeedDial","name","props","emits","value","setup","_ref","slots","model","menuRef","y","x","split","locationClasses","replace","menuProps","filterProps","_createVNode","_mergeProps","$event","class","style","contentClass","default","slotProps","VBtn","size"],"sources":["../../../src/components/VSpeedDial/VSpeedDial.tsx"],"sourcesContent":["// Styles\nimport './VSpeedDial.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVMenuProps, VMenu } from '@/components/VMenu/VMenu'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\nimport type { Anchor } from '@/util'\n\nexport const makeVSpeedDialProps = propsFactory({\n  ...makeComponentProps(),\n  ...makeVMenuProps({\n    offset: 8,\n    minWidth: 0,\n    openDelay: 0,\n    closeDelay: 100,\n    location: 'top center' as const,\n    transition: 'scale-transition',\n  }),\n}, 'VSpeedDial')\n\nexport const VSpeedDial = genericComponent<OverlaySlots>()({\n  name: 'VSpeedDial',\n\n  props: makeVSpeedDialProps(),\n\n  emits: {\n    'update:modelValue': (value: boolean) => true,\n  },\n\n  setup (props, { slots }) {\n    const model = useProxiedModel(props, 'modelValue')\n\n    const menuRef = ref<VMenu>()\n\n    const location = computed<Anchor>(() => {\n      const [y, x = 'center'] = props.location?.split(' ') ?? []\n\n      return `${y} ${x}` as Anchor\n    })\n\n    const locationClasses = computed(() => ({\n      [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true,\n    }))\n\n    useRender(() => {\n      const menuProps = VMenu.filterProps(props)\n\n      return (\n        <VMenu\n          { ...menuProps }\n          v-model={ model.value }\n          class={ props.class }\n          style={ props.style }\n          contentClass={[\n            'v-speed-dial__content',\n            locationClasses.value,\n            props.contentClass,\n          ]}\n          location={ location.value }\n          ref={ menuRef }\n          transition=\"fade-transition\"\n        >\n          {{\n            ...slots,\n            default: slotProps => (\n              <VDefaultsProvider\n                defaults={{\n                  VBtn: {\n                    size: 'small',\n                  },\n                }}\n              >\n                <MaybeTransition\n                  appear\n                  group\n                  transition={ props.transition }\n                >\n                  { slots.default?.(slotProps) }\n                </MaybeTransition>\n              </VDefaultsProvider>\n            ),\n          }}\n        </VMenu>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VSpeedDial = InstanceType<typeof VSpeedDial>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc,EAAEC,KAAK,8BAE9B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,eAAe,4CAExB;AACA,SAASC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAC1BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9C,GAAGN,kBAAkB,CAAC,CAAC;EACvB,GAAGF,cAAc,CAAC;IAChBW,MAAM,EAAE,CAAC;IACTC,QAAQ,EAAE,CAAC;IACXC,SAAS,EAAE,CAAC;IACZC,UAAU,EAAE,GAAG;IACfC,QAAQ,EAAE,YAAqB;IAC/BC,UAAU,EAAE;EACd,CAAC;AACH,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAGV,gBAAgB,CAAe,CAAC,CAAC;EACzDW,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAET,mBAAmB,CAAC,CAAC;EAE5BU,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK;EAC3C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,KAAK,GAAGtB,eAAe,CAACgB,KAAK,EAAE,YAAY,CAAC;IAElD,MAAMO,OAAO,GAAGpB,GAAG,CAAQ,CAAC;IAE5B,MAAMS,QAAQ,GAAGV,QAAQ,CAAS,MAAM;MACtC,MAAM,CAACsB,CAAC,EAAEC,CAAC,GAAG,QAAQ,CAAC,GAAGT,KAAK,CAACJ,QAAQ,EAAEc,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;MAE1D,OAAO,GAAGF,CAAC,IAAIC,CAAC,EAAE;IACpB,CAAC,CAAC;IAEF,MAAME,eAAe,GAAGzB,QAAQ,CAAC,OAAO;MACtC,CAAC,0BAA0BU,QAAQ,CAACM,KAAK,CAACU,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG;IAClE,CAAC,CAAC,CAAC;IAEHtB,SAAS,CAAC,MAAM;MACd,MAAMuB,SAAS,GAAG/B,KAAK,CAACgC,WAAW,CAACd,KAAK,CAAC;MAE1C,OAAAe,YAAA,CAAAjC,KAAA,EAAAkC,WAAA,CAESH,SAAS;QAAA,cACJP,KAAK,CAACJ,KAAK;QAAA,uBAAAe,MAAA,IAAXX,KAAK,CAACJ,KAAK,GAAAe,MAAA;QAAA,SACbjB,KAAK,CAACkB,KAAK;QAAA,SACXlB,KAAK,CAACmB,KAAK;QAAA,gBACL,CACZ,uBAAuB,EACvBR,eAAe,CAACT,KAAK,EACrBF,KAAK,CAACoB,YAAY,CACnB;QAAA,YACUxB,QAAQ,CAACM,KAAK;QAAA,OACnBK,OAAO;QAAA;MAAA;QAIX,GAAGF,KAAK;QACRgB,OAAO,EAAEC,SAAS,IAAAP,YAAA,CAAAnC,iBAAA;UAAA,YAEJ;YACR2C,IAAI,EAAE;cACJC,IAAI,EAAE;YACR;UACF;QAAC;UAAAH,OAAA,EAAAA,CAAA,MAAAN,YAAA,CAAA9B,eAAA;YAAA;YAAA;YAAA,cAKce,KAAK,CAACH;UAAU;YAAAwB,OAAA,EAAAA,CAAA,MAE3BhB,KAAK,CAACgB,OAAO,GAAGC,SAAS,CAAC;UAAA;QAAA;MAGjC;IAIT,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}