{"version":3,"file":"FloatButtonGroup.mjs","sources":["../../../../../../packages/components/float-button/src/FloatButtonGroup.tsx"],"sourcesContent":["import type { FloatButtonGroupProps } from './props';\nimport { CloseOutlined, FileTextOutlined } from '@ant-design/icons-vue';\nimport { useMergedState } from '@antdv/hooks';\nimport { canUseDom, classNames, findDOMNode, initDefaultProps } from '@antdv/utils';\nimport { getTransitionProps } from '@antdv/vue-components';\nimport {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  ref,\n  Transition,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport useStyle from '../style';\nimport { floatButtonPrefixCls } from './constants';\nimport { useProvideFloatButtonGroupContext } from './context';\nimport FloatButton from './FloatButton';\nimport { floatButtonGroupProps } from './props';\n\n// CSSINJS\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFloatButtonGroup',\n  inheritAttrs: false,\n  props: initDefaultProps(floatButtonGroupProps(), {\n    type: 'default',\n    shape: 'circle',\n  } as FloatButtonGroupProps),\n  setup(props, { attrs, slots, emit }) {\n    const { prefixCls, direction } = useConfigInject(floatButtonPrefixCls, props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const [open, setOpen] = useMergedState(false, { value: computed(() => props.open) });\n\n    const floatButtonGroupRef = ref<HTMLDivElement>(null);\n    const floatButtonRef = ref<HTMLButtonElement | HTMLAnchorElement>(null);\n\n    useProvideFloatButtonGroupContext({\n      shape: computed(() => props.shape),\n    });\n    const hoverTypeAction = {\n      onMouseenter() {\n        setOpen(true);\n        emit('update:open', true);\n        props.onOpenChange?.(true);\n      },\n      onMouseleave() {\n        setOpen(false);\n        emit('update:open', false);\n        props.onOpenChange?.(false);\n      },\n    };\n    const hoverAction = computed(() => {\n      return props.trigger === 'hover' ? hoverTypeAction : {};\n    });\n\n    const handleOpenChange = () => {\n      const nextOpen = !open.value;\n      emit('update:open', nextOpen);\n      props.onOpenChange?.(nextOpen);\n      setOpen(nextOpen);\n    };\n\n    const onClick = (e: MouseEvent) => {\n      if (floatButtonGroupRef.value?.contains(e.target as Node)) {\n        if (findDOMNode(floatButtonRef.value)?.contains(e.target as Node))\n          handleOpenChange();\n\n        return;\n      }\n      setOpen(false);\n      emit('update:open', false);\n      props.onOpenChange?.(false);\n    };\n\n    watch(\n      computed(() => props.trigger),\n      (value) => {\n        if (!canUseDom())\n          return;\n\n        document.removeEventListener('click', onClick);\n        if (value === 'click')\n          document.addEventListener('click', onClick);\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      document.removeEventListener('click', onClick);\n    });\n\n    return () => {\n      const { shape = 'circle', type = 'default', tooltip, description, trigger } = props;\n\n      const groupPrefixCls = `${prefixCls.value}-group`;\n\n      const groupCls = classNames(groupPrefixCls, hashId.value, attrs.class, {\n        [`${groupPrefixCls}-rtl`]: direction.value === 'rtl',\n        [`${groupPrefixCls}-${shape}`]: shape,\n        [`${groupPrefixCls}-${shape}-shadow`]: !trigger,\n      });\n\n      const wrapperCls = classNames(hashId.value, `${groupPrefixCls}-wrap`);\n\n      const transitionProps = getTransitionProps(`${groupPrefixCls}-wrap`);\n\n      return wrapSSR(\n        <div ref={floatButtonGroupRef} {...attrs} class={groupCls} {...hoverAction.value}>\n          {trigger && ['click', 'hover'].includes(trigger)\n            ? (\n                <>\n                  <Transition {...transitionProps}>\n                    <div v-show={open.value} class={wrapperCls}>\n                      {slots.default && slots.default()}\n                    </div>\n                  </Transition>\n                  <FloatButton\n                    ref={floatButtonRef}\n                    type={type}\n                    shape={shape}\n                    tooltip={tooltip}\n                    description={description}\n                    v-slots={{\n                      icon: () =>\n                        open.value\n                          ? slots.closeIcon?.() || <CloseOutlined />\n                          : slots.icon?.() || <FileTextOutlined />,\n                      tooltip: slots.tooltip,\n                      description: slots.description,\n                    }}\n                  >\n                  </FloatButton>\n                </>\n              )\n            : (\n                slots.default?.()\n              )}\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","floatButtonGroupProps","type","shape","setup","attrs","slots","emit","prefixCls","direction","useConfigInject","floatButtonPrefixCls","wrapSSR","hashId","useStyle","open","setOpen","useMergedState","value","computed","floatButtonGroupRef","ref","floatButtonRef","useProvideFloatButtonGroupContext","hoverTypeAction","onMouseenter","onOpenChange","onMouseleave","hoverAction","trigger","handleOpenChange","nextOpen","onClick","e","contains","target","findDOMNode","watch","canUseDom","document","removeEventListener","addEventListener","immediate","onBeforeUnmount","tooltip","description","groupPrefixCls","groupCls","classNames","class","wrapperCls","transitionProps","getTransitionProps","_createVNode","includes","_Fragment","Transition","default","_withDirectives","_vShow","FloatButton","icon","closeIcon","CloseOutlined","FileTextOutlined"],"mappings":"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"}