{"version":3,"file":"table-column-group.cjs","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":"qJAoBMA,EAAWC,OAAOC,KAAKC,uBAAqB,EAC5CC,EAA+B,CAAC,WAAY,UAAU,EACtDC,EAA+B,CAAC,QAAS,OAAO,EAEhDC,EAAmBC,EAAAA,gBAAgB,CACvCC,KAAM,mBACNC,aAAc,GACdC,MAAOP,EAAqB,sBAC5BQ,MAAMC,EAAQ,CAAEC,MAAAA,CAAM,EAAG,CACvB,MAAMH,EAAQI,EAAAA,SAAS,cAAeF,EAAQ,CAC5CJ,KAAM,CACJO,QAAS,GACTC,OAAQ,EACT,EACDC,MAAO,CACLF,QAAS,GACTC,OAAQ,EACT,EACDE,MAAO,CACLH,QAAS,EACTC,OAAQ,EACT,EACDG,SAAU,KACVC,UAAW,SACXC,SAAU,CACRN,QAAS,KACTO,OAAQ,GACRN,OAAQ,EACT,EACDO,SAAU,CACRR,QAASA,IAAM,CAAE,EACjBC,OAAQ,EACV,CACF,CAAC,EACKQ,EAAcC,EAAAA,OAAOC,EAAa,cAAE,IAAI,EACxCC,EAAgBF,EAAAA,OAAOG,EAAoB,qBAAE,IAAI,EAEjDC,EAAUC,EAAAA,SAAS,IAAIC,GAAyB,EAChDR,EAAWS,EAAQ,SAAC,IAAM,CAAC,GAAGH,CAAO,CAAC,EACtCI,EAAUH,EAAAA,SAAS,CAAEP,SAAAA,CAAS,CAAC,EAErCU,EAAQC,IAAMC,OAAO,kBAAkB,EAEvC,UAAWD,KAAOlC,EAAU,CAC1B,GAAII,EAAagC,SAASF,CAAG,EAAG,SAC9BD,EAAQC,CAAG,EAAwCxB,EAAMwB,CAAG,EAE9D,MAAMG,EAAUhC,EAAa+B,SAASF,CAAG,EAEzCI,EAAAA,MACE,IAAM5B,EAAMwB,CAAG,EACfK,GAAS,CACLN,EAAQC,CAAG,EAAwCK,EACrDF,EACIb,GAAAA,MAAAA,EAAagB,gBACbhB,GAAAA,MAAAA,EAAaiB,cAAcR,EAAQC,IAAKA,EAAKK,EACnD,CACF,CACF,CAEAD,EAAAA,MAAM,IAAM5B,EAAMW,SAAUqB,EAAa,CAAEC,UAAW,EAAK,CAAC,EAE5DC,EAAAA,QAAQhB,EAAAA,qBAAsB,CAC5BiB,eAAAA,EACAC,eAAAA,CACF,CAAC,EAEGnB,GACFA,EAAckB,eAAeZ,CAAO,EAEpCc,EAAAA,gBAAgB,IAAM,CACpBpB,EAAcmB,eAAeb,CAAO,CACtC,CAAC,IAEDT,GAAAA,MAAAA,EAAaqB,eAAeZ,GAE5Bc,EAAAA,gBAAgB,IAAM,CACpBvB,GAAAA,MAAAA,EAAasB,eAAeb,EAC9B,CAAC,GAGH,SAASY,EAAeG,EAA4B,CAClDnB,EAAQoB,IAAID,CAAM,CACpB,CAEA,SAASF,EAAeE,EAA4B,CAClDnB,EAAQqB,OAAOF,CAAM,CACvB,CAEA,SAASN,GAAc,CACrBT,EAAQZ,SAAW,IACb,OAAOR,EAAMsC,MAAS,WACjBC,EAAU,WAACvC,EAAO,MAAM,EAG7B,OAAOH,EAAMW,UAAa,WACrBX,EAAMW,SAAU,EAGlBX,EAAMF,IAEjB,CAEA,SAAS6C,GAAiB,CACxB,OAAO3C,EAAMa,SAAS+B,IAAIC,GAAS,CACjC,GAAI,aAAcA,EAChB,OAAAC,cAAAlD,EAA6BiD,EAAK,IAAA,EAGpC,KAAM,CAAErB,IAAAA,EAAK,GAAGuB,CAAO,EAAIF,EAE3B,OAAAC,cAAAE,EAAAC,EAAA,WAAwBF,EAAM,CAAA,SAAUvB,CAAG,CAAA,EAAA,IAAA,CAC7C,CAAC,CACH,CAEA,MAAO,IAAM,CAACkB,EAAAA,WAAWvC,EAAO,SAAS,EAAG,GAAGwC,GAAgB,CACjE,CACF,CAAC"}