{"version":3,"file":"VFab.mjs","names":["makeVBtnProps","VBtn","makeLayoutItemProps","useLayoutItem","useProxiedModel","useResizeObserver","useToggleScope","makeTransitionProps","MaybeTransition","computed","ref","shallowRef","toRef","watchEffect","genericComponent","omit","propsFactory","useRender","locations","makeVFabProps","app","Boolean","appear","extended","layout","location","type","String","default","offset","modelValue","active","transition","VFab","name","props","emits","value","setup","_ref","slots","model","height","layoutItemStyles","resizeRef","entries","length","target","clientHeight","hasPosition","absolute","position","split","shift","orientation","id","order","parseInt","layoutSize","elementSize","vFabRef","btnProps","filterProps","_createVNode","class","width","undefined","style","_withDirectives","_mergeProps","_vShow"],"sources":["../../../src/components/VFab/VFab.tsx"],"sourcesContent":["// Styles\nimport './VFab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType } from 'vue'\nimport type { Position } from '@/composables/layout'\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVFabProps = propsFactory({\n  app: Boolean,\n  appear: Boolean,\n  extended: Boolean,\n  layout: Boolean,\n  location: {\n    type: String as PropType<typeof locations[number]>,\n    default: 'bottom end',\n  },\n  offset: Boolean,\n  modelValue: {\n    type: Boolean,\n    default: true,\n  },\n\n  ...omit(makeVBtnProps({ active: true }), ['location']),\n  ...makeLayoutItemProps(),\n  ...makeTransitionProps({ transition: 'fab-transition' }),\n}, 'VFab')\n\nexport const VFab = genericComponent()({\n  name: 'VFab',\n\n  props: makeVFabProps(),\n\n  emits: {\n    'update:modelValue': (value: boolean) => true,\n  },\n\n  setup (props, { slots }) {\n    const model = useProxiedModel(props, 'modelValue')\n    const height = shallowRef(56)\n    const layoutItemStyles = ref()\n\n    const { resizeRef } = useResizeObserver(entries => {\n      if (!entries.length) return\n      height.value = entries[0].target.clientHeight\n    })\n\n    const hasPosition = computed(() => props.app || props.absolute)\n\n    const position = computed(() => {\n      if (!hasPosition.value) return false\n\n      return props.location.split(' ').shift()\n    }) as ComputedRef<Position>\n\n    const orientation = computed(() => {\n      if (!hasPosition.value) return false\n\n      return props.location.split(' ')[1] ?? 'end'\n    })\n\n    useToggleScope(() => props.app, () => {\n      const layout = useLayoutItem({\n        id: props.name,\n        order: computed(() => parseInt(props.order, 10)),\n        position,\n        layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n        elementSize: computed(() => height.value + 24),\n        active: computed(() => props.app && model.value),\n        absolute: toRef(props, 'absolute'),\n      })\n\n      watchEffect(() => {\n        layoutItemStyles.value = layout.layoutItemStyles.value\n      })\n    })\n\n    const vFabRef = ref()\n\n    useRender(() => {\n      const btnProps = VBtn.filterProps(props)\n\n      return (\n        <div\n          ref={ vFabRef }\n          class={[\n            'v-fab',\n            {\n              'v-fab--absolute': props.absolute,\n              'v-fab--app': !!props.app,\n              'v-fab--extended': props.extended,\n              'v-fab--offset': props.offset,\n              [`v-fab--${position.value}`]: hasPosition.value,\n              [`v-fab--${orientation.value}`]: hasPosition.value,\n            },\n            props.class,\n          ]}\n          style={[\n            props.app ? {\n              ...layoutItemStyles.value,\n            } : {\n              height: 'inherit',\n              width: undefined,\n            },\n            props.style,\n          ]}\n        >\n          <div class=\"v-fab__container\">\n            <MaybeTransition\n              appear={ props.appear }\n              transition={ props.transition }\n            >\n              <VBtn\n                v-show={ props.active }\n                ref={ resizeRef }\n                { ...btnProps }\n                active={ undefined }\n                location={ undefined }\n                v-slots={ slots }\n              />\n            </MaybeTransition>\n          </div>\n        </div>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VFab = InstanceType<typeof VFab>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,aAAa,EAAEC,IAAI,4BAE5B;AAAA,SACSC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,eAAe;AAAA,SACfC,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,mBAAmB,EAAEC,eAAe,4CAE7C;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC1DC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAExD;AAIA,MAAMC,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU;AAE7E,OAAO,MAAMC,aAAa,GAAGH,YAAY,CAAC;EACxCI,GAAG,EAAEC,OAAO;EACZC,MAAM,EAAED,OAAO;EACfE,QAAQ,EAAEF,OAAO;EACjBG,MAAM,EAAEH,OAAO;EACfI,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAA4C;IAClDC,OAAO,EAAE;EACX,CAAC;EACDC,MAAM,EAAER,OAAO;EACfS,UAAU,EAAE;IACVJ,IAAI,EAAEL,OAAO;IACbO,OAAO,EAAE;EACX,CAAC;EAED,GAAGb,IAAI,CAACf,aAAa,CAAC;IAAE+B,MAAM,EAAE;EAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;EACtD,GAAG7B,mBAAmB,CAAC,CAAC;EACxB,GAAGK,mBAAmB,CAAC;IAAEyB,UAAU,EAAE;EAAiB,CAAC;AACzD,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAMC,IAAI,GAAGnB,gBAAgB,CAAC,CAAC,CAAC;EACrCoB,IAAI,EAAE,MAAM;EAEZC,KAAK,EAAEhB,aAAa,CAAC,CAAC;EAEtBiB,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,GAAGrC,eAAe,CAAC+B,KAAK,EAAE,YAAY,CAAC;IAClD,MAAMO,MAAM,GAAG/B,UAAU,CAAC,EAAE,CAAC;IAC7B,MAAMgC,gBAAgB,GAAGjC,GAAG,CAAC,CAAC;IAE9B,MAAM;MAAEkC;IAAU,CAAC,GAAGvC,iBAAiB,CAACwC,OAAO,IAAI;MACjD,IAAI,CAACA,OAAO,CAACC,MAAM,EAAE;MACrBJ,MAAM,CAACL,KAAK,GAAGQ,OAAO,CAAC,CAAC,CAAC,CAACE,MAAM,CAACC,YAAY;IAC/C,CAAC,CAAC;IAEF,MAAMC,WAAW,GAAGxC,QAAQ,CAAC,MAAM0B,KAAK,CAACf,GAAG,IAAIe,KAAK,CAACe,QAAQ,CAAC;IAE/D,MAAMC,QAAQ,GAAG1C,QAAQ,CAAC,MAAM;MAC9B,IAAI,CAACwC,WAAW,CAACZ,KAAK,EAAE,OAAO,KAAK;MAEpC,OAAOF,KAAK,CAACV,QAAQ,CAAC2B,KAAK,CAAC,GAAG,CAAC,CAACC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAA0B;IAE3B,MAAMC,WAAW,GAAG7C,QAAQ,CAAC,MAAM;MACjC,IAAI,CAACwC,WAAW,CAACZ,KAAK,EAAE,OAAO,KAAK;MAEpC,OAAOF,KAAK,CAACV,QAAQ,CAAC2B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;IAC9C,CAAC,CAAC;IAEF9C,cAAc,CAAC,MAAM6B,KAAK,CAACf,GAAG,EAAE,MAAM;MACpC,MAAMI,MAAM,GAAGrB,aAAa,CAAC;QAC3BoD,EAAE,EAAEpB,KAAK,CAACD,IAAI;QACdsB,KAAK,EAAE/C,QAAQ,CAAC,MAAMgD,QAAQ,CAACtB,KAAK,CAACqB,KAAK,EAAE,EAAE,CAAC,CAAC;QAChDL,QAAQ;QACRO,UAAU,EAAEjD,QAAQ,CAAC,MAAM0B,KAAK,CAACX,MAAM,GAAGkB,MAAM,CAACL,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QAChEsB,WAAW,EAAElD,QAAQ,CAAC,MAAMiC,MAAM,CAACL,KAAK,GAAG,EAAE,CAAC;QAC9CN,MAAM,EAAEtB,QAAQ,CAAC,MAAM0B,KAAK,CAACf,GAAG,IAAIqB,KAAK,CAACJ,KAAK,CAAC;QAChDa,QAAQ,EAAEtC,KAAK,CAACuB,KAAK,EAAE,UAAU;MACnC,CAAC,CAAC;MAEFtB,WAAW,CAAC,MAAM;QAChB8B,gBAAgB,CAACN,KAAK,GAAGb,MAAM,CAACmB,gBAAgB,CAACN,KAAK;MACxD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMuB,OAAO,GAAGlD,GAAG,CAAC,CAAC;IAErBO,SAAS,CAAC,MAAM;MACd,MAAM4C,QAAQ,GAAG5D,IAAI,CAAC6D,WAAW,CAAC3B,KAAK,CAAC;MAExC,OAAA4B,YAAA;QAAA,OAEUH,OAAO;QAAA,SACN,CACL,OAAO,EACP;UACE,iBAAiB,EAAEzB,KAAK,CAACe,QAAQ;UACjC,YAAY,EAAE,CAAC,CAACf,KAAK,CAACf,GAAG;UACzB,iBAAiB,EAAEe,KAAK,CAACZ,QAAQ;UACjC,eAAe,EAAEY,KAAK,CAACN,MAAM;UAC7B,CAAE,UAASsB,QAAQ,CAACd,KAAM,EAAC,GAAGY,WAAW,CAACZ,KAAK;UAC/C,CAAE,UAASiB,WAAW,CAACjB,KAAM,EAAC,GAAGY,WAAW,CAACZ;QAC/C,CAAC,EACDF,KAAK,CAAC6B,KAAK,CACZ;QAAA,SACM,CACL7B,KAAK,CAACf,GAAG,GAAG;UACV,GAAGuB,gBAAgB,CAACN;QACtB,CAAC,GAAG;UACFK,MAAM,EAAE,SAAS;UACjBuB,KAAK,EAAEC;QACT,CAAC,EACD/B,KAAK,CAACgC,KAAK;MACZ,IAAAJ,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAvD,eAAA;QAAA,UAIY2B,KAAK,CAACb,MAAM;QAAA,cACRa,KAAK,CAACH;MAAU;QAAAJ,OAAA,EAAAA,CAAA,MAAAwC,eAAA,CAAAL,YAAA,CAAA9D,IAAA,EAAAoE,WAAA;UAAA,OAIrBzB;QAAS,GACViB,QAAQ;UAAA,UACJK,SAAS;UAAA,YACPA;QAAS,IACV1B,KAAK,KAAA8B,MAAA,EALNnC,KAAK,CAACJ,MAAM;MAAA;IAWjC,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}