{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-column/index.ts"],"sourcesContent":["// @ts-nocheck\r\nimport {\r\n  Fragment,\r\n  computed,\r\n  defineComponent,\r\n  getCurrentInstance,\r\n  h,\r\n  onBeforeMount,\r\n  onBeforeUnmount,\r\n  onMounted,\r\n  ref,\r\n} from 'vue'\r\nimport SgCheckbox from '@sgui-plus/components/checkbox'\r\nimport { isString, isUndefined } from '@sgui-plus/utils'\r\nimport { cellStarts } from '../config'\r\nimport { compose, mergeOptions } from '../util'\r\nimport useWatcher from './watcher-helper'\r\nimport useRender from './render-helper'\r\nimport defaultProps from './defaults'\r\nimport type { TableColumn, TableColumnCtx } from './defaults'\r\n\r\nimport type { DefaultRow } from '../table/defaults'\r\n\r\nlet columnIdSeed = 1\r\n\r\nexport default defineComponent({\r\n  name: 'SgTableColumn',\r\n  components: {\r\n    SgCheckbox,\r\n  },\r\n  props: defaultProps,\r\n  setup(props, { slots }) {\r\n    const instance = getCurrentInstance() as TableColumn<DefaultRow>\r\n    const columnConfig = ref<Partial<TableColumnCtx<DefaultRow>>>({})\r\n    const owner = computed(() => {\r\n      let parent = instance.parent as any\r\n      while (parent && !parent.tableId) {\r\n        parent = parent.parent\r\n      }\r\n      return parent\r\n    })\r\n\r\n    const { registerNormalWatchers, registerComplexWatchers } = useWatcher(\r\n      owner,\r\n      props\r\n    )\r\n    const {\r\n      columnId,\r\n      isSubColumn,\r\n      realHeaderAlign,\r\n      columnOrTableParent,\r\n      setColumnWidth,\r\n      setColumnForcedProps,\r\n      setColumnRenders,\r\n      getPropsData,\r\n      getColumnElIndex,\r\n      realAlign,\r\n      updateColumnOrder,\r\n    } = useRender(props as unknown as TableColumnCtx<unknown>, slots, owner)\r\n\r\n    const parent = columnOrTableParent.value\r\n    columnId.value = `${\r\n      parent.tableId || parent.columnId\r\n    }_column_${columnIdSeed++}`\r\n    onBeforeMount(() => {\r\n      isSubColumn.value = owner.value !== parent\r\n\r\n      const type = props.type || 'default'\r\n      const sortable = props.sortable === '' ? true : props.sortable\r\n      const showOverflowTooltip = isUndefined(props.showOverflowTooltip)\r\n        ? parent.props.showOverflowTooltip\r\n        : props.showOverflowTooltip\r\n      const defaults = {\r\n        ...cellStarts[type],\r\n        id: columnId.value,\r\n        type,\r\n        property: props.prop || props.property,\r\n        align: realAlign,\r\n        headerAlign: realHeaderAlign,\r\n        showOverflowTooltip,\r\n        // filter 相关属性\r\n        filterable: props.filters || props.filterMethod,\r\n        filteredValue: [],\r\n        filterPlacement: '',\r\n        isColumnGroup: false,\r\n        isSubColumn: false,\r\n        filterOpened: false,\r\n        // sort 相关属性\r\n        sortable,\r\n        // index 列\r\n        index: props.index,\r\n        // <sg-table-column key=\"xxx\" />\r\n        rawColumnKey: instance.vnode.key,\r\n      }\r\n\r\n      const basicProps = [\r\n        'columnKey',\r\n        'label',\r\n        'className',\r\n        'labelClassName',\r\n        'type',\r\n        'renderHeader',\r\n        'formatter',\r\n        'fixed',\r\n        'resizable',\r\n      ]\r\n      const sortProps = ['sortMethod', 'sortBy', 'sortOrders']\r\n      const selectProps = ['selectable', 'reserveSelection']\r\n      const filterProps = [\r\n        'filterMethod',\r\n        'filters',\r\n        'filterMultiple',\r\n        'filterOpened',\r\n        'filteredValue',\r\n        'filterPlacement',\r\n      ]\r\n\r\n      let column = getPropsData(basicProps, sortProps, selectProps, filterProps)\r\n\r\n      column = mergeOptions(defaults, column)\r\n      // 注意 compose 中函数执行的顺序是从右到左\r\n      const chains = compose(\r\n        setColumnRenders,\r\n        setColumnWidth,\r\n        setColumnForcedProps\r\n      )\r\n      column = chains(column)\r\n      columnConfig.value = column\r\n\r\n      // 注册 watcher\r\n      registerNormalWatchers()\r\n      registerComplexWatchers()\r\n    })\r\n    onMounted(() => {\r\n      const parent = columnOrTableParent.value\r\n      const children = isSubColumn.value\r\n        ? parent.vnode.el.children\r\n        : parent.refs.hiddenColumns?.children\r\n      const getColumnIndex = () =>\r\n        getColumnElIndex(children || [], instance.vnode.el)\r\n      columnConfig.value.getColumnIndex = getColumnIndex\r\n      const columnIndex = getColumnIndex()\r\n      columnIndex > -1 &&\r\n        owner.value.store.commit(\r\n          'insertColumn',\r\n          columnConfig.value,\r\n          isSubColumn.value ? parent.columnConfig.value : null,\r\n          updateColumnOrder\r\n        )\r\n    })\r\n    onBeforeUnmount(() => {\r\n      owner.value.store.commit(\r\n        'removeColumn',\r\n        columnConfig.value,\r\n        isSubColumn.value ? parent.columnConfig.value : null,\r\n        updateColumnOrder\r\n      )\r\n    })\r\n    instance.columnId = columnId.value\r\n\r\n    instance.columnConfig = columnConfig\r\n    return\r\n  },\r\n  render() {\r\n    try {\r\n      const renderDefault = this.$slots.default?.({\r\n        row: {},\r\n        column: {},\r\n        $index: -1,\r\n      })\r\n      const children = []\r\n      if (Array.isArray(renderDefault)) {\r\n        for (const childNode of renderDefault) {\r\n          if (\r\n            childNode.type?.name === 'SgTableColumn' ||\r\n            childNode.shapeFlag & 2\r\n          ) {\r\n            children.push(childNode)\r\n          } else if (\r\n            childNode.type === Fragment &&\r\n            Array.isArray(childNode.children)\r\n          ) {\r\n            childNode.children.forEach((vnode) => {\r\n              // No rendering when vnode is dynamic slot or text\r\n              if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\r\n                children.push(vnode)\r\n              }\r\n            })\r\n          }\r\n        }\r\n      }\r\n      const vnode = h('div', children)\r\n      return vnode\r\n    } catch {\r\n      return h('div', [])\r\n    }\r\n  },\r\n})\r\n"],"names":[],"mappings":"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"}