{"version":3,"file":"Collapse.mjs","sources":["../../../../../../packages/components/collapse/src/Collapse.tsx"],"sourcesContent":["import type { CustomSlotsType, Key } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type { CollapsibleType } from './interface';\nimport type { CollapsePanelProps } from './props';\nimport { RightOutlined } from '@ant-design/icons-vue';\nimport {\n  classNames,\n  cloneElement,\n  firstNotUndefined,\n  flattenChildren,\n  getDataAndAriaProps,\n  initDefaultProps,\n  isEmptyElement,\n  isValidElement,\n} from '@antdv/utils';\nimport { collapseMotion } from '@antdv/vue-components';\nimport { computed, defineComponent, ref, watch } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport useStyle from '../style';\nimport { collapseProps } from './props';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACollapse',\n  inheritAttrs: false,\n  props: initDefaultProps(collapseProps(), {\n    accordion: false,\n    destroyInactivePanel: false,\n    bordered: true,\n    expandIconPosition: 'start',\n  }),\n  slots: Object as CustomSlotsType<{\n    default?: any\n    expandIcon?: CollapsePanelProps\n  }>,\n  setup(props, { attrs, slots, emit }) {\n    function getActiveKeysArray(activeKey: Key | Key[]) {\n      let currentActiveKey = activeKey;\n      if (!Array.isArray(currentActiveKey)) {\n        const activeKeyType = typeof currentActiveKey;\n        currentActiveKey\n          = activeKeyType === 'number' || activeKeyType === 'string' ? [currentActiveKey] : [];\n      }\n      return currentActiveKey.map(key => String(key));\n    }\n\n    const stateActiveKey = ref<Key[]>(\n      getActiveKeysArray(firstNotUndefined([props.activeKey, props.defaultActiveKey])),\n    );\n\n    watch(\n      () => props.activeKey,\n      () => {\n        stateActiveKey.value = getActiveKeysArray(props.activeKey);\n      },\n      { deep: true },\n    );\n    const { prefixCls, direction, rootPrefixCls } = useConfigInject('collapse', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const iconPosition = computed(() => {\n      const { expandIconPosition } = props;\n      if (expandIconPosition !== undefined)\n        return expandIconPosition;\n\n      return direction.value === 'rtl' ? 'end' : 'start';\n    });\n\n    const setActiveKey = (activeKey: Key[]) => {\n      if (props.activeKey === undefined)\n        stateActiveKey.value = activeKey;\n\n      const newKey = props.accordion ? activeKey[0] : activeKey;\n      emit('update:activeKey', newKey);\n      emit('change', newKey);\n    };\n\n    const onClickItem = (key: Key) => {\n      let activeKey = stateActiveKey.value;\n      if (props.accordion) {\n        activeKey = activeKey[0] === key ? [] : [key];\n      } else {\n        activeKey = [...activeKey];\n        const index = activeKey.indexOf(key);\n        const isActive = index > -1;\n        if (isActive) {\n          // remove active state\n          activeKey.splice(index, 1);\n        } else {\n          activeKey.push(key);\n        }\n      }\n      setActiveKey(activeKey);\n    };\n    const renderExpandIcon = (panelProps: CollapsePanelProps) => {\n      const { expandIcon = slots.expandIcon } = props;\n      const icon = expandIcon\n        ? (\n            expandIcon(panelProps)\n          )\n        : (\n            <RightOutlined rotate={panelProps.isActive ? 90 : undefined} />\n          );\n\n      return (\n        <div\n          class={[`${prefixCls.value}-expand-icon`, hashId.value]}\n          onClick={() =>\n            ['header', 'icon'].includes(props.collapsible) && onClickItem(panelProps.panelKey)}\n        >\n          {isValidElement(Array.isArray(expandIcon) ? icon[0] : icon)\n            ? cloneElement(\n                icon,\n                {\n                  class: `${prefixCls.value}-arrow`,\n                },\n                false,\n              )\n            : icon}\n        </div>\n      );\n    };\n\n    const getNewChild = (child, index) => {\n      if (isEmptyElement(child)) return;\n      const activeKey = stateActiveKey.value;\n      const { accordion, destroyInactivePanel, collapsible, openAnimation } = props;\n      const animation = openAnimation || collapseMotion(`${rootPrefixCls.value}-motion-collapse`);\n\n      // If there is no key provide, use the panel order as default key\n      const key = String(child.key ?? index);\n      const {\n        header = child.children?.header?.(),\n        headerClass,\n        collapsible: childCollapsible,\n        disabled,\n      } = child.props || {};\n      let isActive = false;\n\n      if (accordion)\n        isActive = activeKey[0] === key;\n      else\n        isActive = activeKey.includes(key);\n\n      let mergeCollapsible: CollapsibleType = childCollapsible ?? collapsible;\n      // legacy 2.x\n      if (disabled || disabled === '')\n        mergeCollapsible = 'disabled';\n\n      const newProps = {\n        key,\n        panelKey: key,\n        header,\n        headerClass,\n        isActive,\n        prefixCls: prefixCls.value,\n        destroyInactivePanel,\n        openAnimation: animation,\n        accordion,\n        onItemClick: mergeCollapsible === 'disabled' ? null : onClickItem,\n        expandIcon: renderExpandIcon,\n        collapsible: mergeCollapsible,\n      };\n\n      return cloneElement(child, newProps);\n    };\n\n    const getItems = () => {\n      return flattenChildren(slots.default?.()).map(getNewChild);\n    };\n\n    return () => {\n      const { accordion, bordered, ghost } = props;\n      const collapseClassName = classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-borderless`]: !bordered,\n          [`${prefixCls.value}-icon-position-${iconPosition.value}`]: true,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-ghost`]: !!ghost,\n          [attrs.class as string]: !!attrs.class,\n        },\n        hashId.value,\n      );\n      return wrapSSR(\n        <div\n          class={collapseClassName}\n          {...getDataAndAriaProps(attrs)}\n          style={attrs.style as CSSProperties}\n          role={accordion ? 'tablist' : null}\n        >\n          {getItems()}\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","collapseProps","accordion","destroyInactivePanel","bordered","expandIconPosition","slots","Object","setup","attrs","emit","getActiveKeysArray","activeKey","currentActiveKey","Array","isArray","activeKeyType","map","key","String","stateActiveKey","ref","firstNotUndefined","defaultActiveKey","watch","value","deep","prefixCls","direction","rootPrefixCls","useConfigInject","wrapSSR","hashId","useStyle","iconPosition","computed","undefined","setActiveKey","newKey","onClickItem","index","indexOf","isActive","splice","push","renderExpandIcon","panelProps","expandIcon","icon","_createVNode","RightOutlined","onClick","includes","collapsible","panelKey","isValidElement","cloneElement","class","getNewChild","child","isEmptyElement","openAnimation","animation","collapseMotion","header","children","headerClass","childCollapsible","disabled","mergeCollapsible","newProps","onItemClick","getItems","flattenChildren","default","ghost","collapseClassName","classNames","getDataAndAriaProps","style"],"mappings":"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"}