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