{"version":3,"file":"action-group.vue2.mjs","sources":["../../../../../packages/components/action/src/action-group.vue"],"sourcesContent":["<script lang=\"tsx\">\nimport {\n  defineComponent,\n  type VNode,\n  isVNode,\n  type VNodeNormalizedChildren,\n  shallowRef,\n  provide,\n  nextTick\n} from 'vue'\nimport { actionGroupProps } from './type'\nimport { actionGroupToken } from './token'\nimport ElTooltip from '@element-ultra/components/tooltip'\nimport ElButton from '@element-ultra/components/button'\nimport ElIcon from '@element-ultra/components/icon'\nimport { ArrowDown } from 'icon-ultra'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { isFragment, isTemplate } from '@element-ultra/utils'\n\nexport default defineComponent({\n  name: 'ElActionGroup',\n  props: actionGroupProps,\n\n  components: { ElTooltip, ElButton },\n\n  inheritAttrs: false,\n\n  setup(props, { slots, expose }) {\n    const ns = useNamespace('action-group')\n\n    const getActions = (\n      children: VNodeNormalizedChildren,\n      result: VNode[] = []\n    ) => {\n      if (!Array.isArray(children)) {\n        return result\n      }\n      children.forEach(child => {\n        if (!isVNode(child)) return\n\n        if (\n          typeof child.type === 'object' &&\n          (child.type as any).name === 'ElAction'\n        ) {\n          return result.push(child)\n        }\n\n        if (isFragment(child) || isTemplate(child)) {\n          getActions(child.children, result)\n        }\n      })\n      return result\n    }\n\n    const getChildren = () => {\n      const children = getActions(slots.default?.() || [])\n      const { max } = props\n      const normalChildren =\n        max >= children.length ? children : children.slice(0, max - 1)\n\n\n      const restChildren = (\n        max >= children.length ? [] : children.slice(max - 1)\n      ).map(node => {\n        if (node.props) {\n          node.props.isDrop = true\n        } else {\n          node.props =  { isDrop: true }\n        }\n        return node\n      })\n\n      const dropdownChildren = restChildren.length ? (\n        <ElTooltip\n          effect='light'\n          popperClass={ns.e('dropdown')}\n          visible={dropdownVisible.value}\n          placement='auto'\n          v-slots={{\n            content: () => <ul>{restChildren}</ul>,\n            default: () => (\n              <ElButton link type=\"primary\">\n                更多\n                <ElIcon class='el-icon--right'>\n                  <ArrowDown />\n                </ElIcon>\n              </ElButton>\n            )\n          }}\n        />\n      ) : null\n      return {\n        normalChildren,\n        dropdownChildren\n      }\n    }\n\n    let dropdownVisible = shallowRef<boolean | undefined>(undefined)\n\n    const setDropdownVisible = (visible: boolean) => {\n      if (visible) {\n        dropdownVisible.value = true\n      } else {\n        dropdownVisible.value = false\n        nextTick(() => {\n          dropdownVisible.value = undefined\n        })\n      }\n    }\n\n    provide(actionGroupToken, {\n      setDropdownVisible,\n      groupProps: props\n    })\n\n    return () => {\n      const { normalChildren, dropdownChildren } = getChildren()\n      return (\n        <>\n          {normalChildren}\n          {dropdownChildren}\n        </>\n      )\n    }\n  }\n})\n</script>\n"],"names":["name","props","actionGroupProps","components","ElTooltip","ElButton","inheritAttrs","setup","slots","expose","ns","useNamespace","getActions","children","result","Array","isArray","forEach","child","isVNode","type","push","isFragment","isTemplate","getChildren","default","max","normalChildren","length","slice","restChildren","map","node","isDrop","dropdownChildren","e","dropdownVisible","value","content","_createVNode","_createTextVNode","ElIcon","ArrowDown","shallowRef","undefined","setDropdownVisible","visible","nextTick","provide","actionGroupToken","groupProps","_Fragment"],"mappings":"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"}