{"version":3,"file":"table-column-group.mjs","sources":["../../../components/table/table-column-group.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  inject,\n  onBeforeUnmount,\n  provide,\n  reactive,\n  renderSlot,\n  watch\n} from 'vue'\n\nimport TableColumn from './table-column'\nimport { useProps } from '@vexip-ui/config'\nimport { tableColumnGroupProps } from './props'\nimport { COLUMN_GROUP_ACTIONS, TABLE_ACTIONS } from './symbol'\n\nimport type { ColumnGroupWithKey, TableColumnOptions } from './symbol'\n\ntype GroupPropKey = keyof typeof tableColumnGroupProps\n\nconst propKeys = Object.keys(tableColumnGroupProps) as GroupPropKey[]\nconst ignoredProps: GroupPropKey[] = ['renderer', 'children']\nconst triggerProps: GroupPropKey[] = ['fixed', 'order']\n\nconst TableColumnGroup = defineComponent({\n  name: 'TableColumnGroup',\n  inheritAttrs: false,\n  props: tableColumnGroupProps,\n  setup(_props, { slots }) {\n    const props = useProps('tableColumn', _props, {\n      name: {\n        default: '',\n        static: true\n      },\n      fixed: {\n        default: false,\n        static: true\n      },\n      order: {\n        default: 0,\n        static: true\n      },\n      ellipsis: null,\n      textAlign: 'center',\n      renderer: {\n        default: null,\n        isFunc: true,\n        static: true\n      },\n      children: {\n        default: () => [],\n        static: true\n      }\n    })\n    const tableAction = inject(TABLE_ACTIONS, null)\n    const parentActions = inject(COLUMN_GROUP_ACTIONS, null)\n\n    const columns = reactive(new Set<TableColumnOptions>())\n    const children = computed(() => [...columns])\n    const options = reactive({ children }) as ColumnGroupWithKey\n\n    options.key = Symbol('TableColumnGroup')\n\n    for (const key of propKeys) {\n      if (ignoredProps.includes(key)) continue\n      ;(options[key as keyof ColumnGroupWithKey] as any) = props[key]\n\n      const trigger = triggerProps.includes(key)\n\n      watch(\n        () => props[key],\n        value => {\n          ;(options[key as keyof ColumnGroupWithKey] as any) = value\n          trigger\n            ? tableAction?.updateColumns()\n            : tableAction?.setColumnProp(options.key, key, value)\n        }\n      )\n    }\n\n    watch(() => props.renderer, setRenderer, { immediate: true })\n\n    provide(COLUMN_GROUP_ACTIONS, {\n      increaseColumn,\n      decreaseColumn\n    })\n\n    if (parentActions) {\n      parentActions.increaseColumn(options)\n\n      onBeforeUnmount(() => {\n        parentActions.decreaseColumn(options)\n      })\n    } else {\n      tableAction?.increaseColumn(options)\n\n      onBeforeUnmount(() => {\n        tableAction?.decreaseColumn(options)\n      })\n    }\n\n    function increaseColumn(column: TableColumnOptions) {\n      columns.add(column)\n    }\n\n    function decreaseColumn(column: TableColumnOptions) {\n      columns.delete(column)\n    }\n\n    function setRenderer() {\n      options.renderer = () => {\n        if (typeof slots.head === 'function') {\n          return renderSlot(slots, 'head')\n        }\n\n        if (typeof props.renderer === 'function') {\n          return props.renderer()\n        }\n\n        return props.name\n      }\n    }\n\n    function renderChildren() {\n      return props.children.map(child => {\n        if ('children' in child) {\n          return <TableColumnGroup {...child}></TableColumnGroup>\n        }\n\n        const { key, ...others } = child\n\n        return <TableColumn {...others} id-key={key}></TableColumn>\n      })\n    }\n\n    return () => [renderSlot(slots, 'default'), ...renderChildren()]\n  }\n})\n\n// eslint-disable-next-line vue/require-direct-export\nexport default TableColumnGroup\n"],"names":["propKeys","Object","keys","tableColumnGroupProps","ignoredProps","triggerProps","TableColumnGroup","defineComponent","name","inheritAttrs","props","setup","_props","slots","useProps","default","static","fixed","order","ellipsis","textAlign","renderer","isFunc","children","tableAction","inject","TABLE_ACTIONS","parentActions","COLUMN_GROUP_ACTIONS","columns","reactive","Set","computed","options","key","Symbol","includes","trigger","watch","value","updateColumns","setColumnProp","setRenderer","immediate","provide","increaseColumn","decreaseColumn","onBeforeUnmount","column","add","delete","head","renderSlot","renderChildren","map","child","_createVNode","others","TableColumn","_mergeProps"],"mappings":"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"}