{"version":3,"file":"render-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-column/render-helper.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n  Comment,\n  computed,\n  getCurrentInstance,\n  h,\n  ref,\n  unref,\n  watchEffect,\n} from 'vue'\nimport { debugWarn } from '@bigin/utils'\nimport { useNamespace } from '@bigin/hooks'\nimport BTooltip from '@bigin/components/tooltip'\nimport {\n  cellForced,\n  defaultRenderCell,\n  getDefaultClassName,\n  treeCellPrefix,\n} from '../config'\nimport { parseMinWidth, parseWidth } from '../util'\nimport type { ComputedRef } from 'vue'\nimport type { TableColumn, TableColumnCtx } from './defaults'\n\nfunction useRender<T>(\n  props: TableColumnCtx<T>,\n  slots,\n  owner: ComputedRef<any>\n) {\n  const instance = getCurrentInstance() as TableColumn<T>\n  const columnId = ref('')\n  const isSubColumn = ref(false)\n  const realAlign = ref<string>()\n  const realHeaderAlign = ref<string>()\n  const ns = useNamespace('table')\n  watchEffect(() => {\n    realAlign.value = props.align ? `is-${props.align}` : null\n    // nextline help render\n    realAlign.value\n  })\n  watchEffect(() => {\n    realHeaderAlign.value = props.headerAlign\n      ? `is-${props.headerAlign}`\n      : realAlign.value\n    // nextline help render\n    realHeaderAlign.value\n  })\n  const columnOrTableParent = computed(() => {\n    let parent: any = instance.vnode.vParent || instance.parent\n    while (parent && !parent.tableId && !parent.columnId) {\n      parent = parent.vnode.vParent || parent.parent\n    }\n    return parent\n  })\n  const hasTreeColumn = computed<boolean>(() => {\n    const { store } = instance.parent\n    if (!store) return false\n    const { treeData } = store.states\n    const treeDataValue = treeData.value\n    return treeDataValue && Object.keys(treeDataValue).length > 0\n  })\n\n  const realWidth = ref(parseWidth(props.width))\n  const realMinWidth = ref(parseMinWidth(props.minWidth))\n  const setColumnWidth = (column: TableColumnCtx<T>) => {\n    if (realWidth.value) column.width = realWidth.value\n    if (realMinWidth.value) {\n      column.minWidth = realMinWidth.value\n    }\n    if (!realWidth.value && realMinWidth.value) {\n      column.width = undefined\n    }\n    if (!column.minWidth) {\n      column.minWidth = 80\n    }\n    column.realWidth = Number(\n      column.width === undefined ? column.minWidth : column.width\n    )\n    return column\n  }\n  const setColumnForcedProps = (column: TableColumnCtx<T>) => {\n    const type = column.type\n    const source = cellForced[type] || {}\n    Object.keys(source).forEach((prop) => {\n      const value = source[prop]\n      if (prop !== 'className' && value !== undefined) {\n        column[prop] = value\n      }\n    })\n    const className = getDefaultClassName(type)\n    if (className) {\n      const forceClass = `${unref(ns.namespace)}-${className}`\n      column.className = column.className\n        ? `${column.className} ${forceClass}`\n        : forceClass\n    }\n    return column\n  }\n\n  const checkSubColumn = (children: TableColumn<T> | TableColumn<T>[]) => {\n    if (Array.isArray(children)) {\n      children.forEach((child) => check(child))\n    } else {\n      check(children)\n    }\n    function check(item: TableColumn<T>) {\n      if (item?.type?.name === 'BTableColumn') {\n        item.vParent = instance\n      }\n    }\n  }\n  const setColumnRenders = (column: TableColumnCtx<T>) => {\n    if (props.renderHeader) {\n      debugWarn(\n        'TableColumn',\n        'Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.'\n      )\n    } else if (column.type !== 'selection') {\n      column.renderHeader = (scope) => {\n        // help render\n        instance.columnConfig.value['label']\n        const renderHeader = slots.header\n        return renderHeader ? renderHeader(scope) : column.label\n      }\n    }\n\n    let originRenderCell = column.renderCell\n    const hasTreeColumnValue = hasTreeColumn.value\n    if (column.type === 'expand') {\n      column.renderCell = (data) =>\n        h(\n          'div',\n          {\n            class: 'cell',\n          },\n          [originRenderCell(data)]\n        )\n      owner.value.renderExpanded = (data) => {\n        return slots.default ? slots.default(data) : slots.default\n      }\n    } else {\n      originRenderCell = originRenderCell || defaultRenderCell\n      column.renderCell = (data) => {\n        let children = null\n        if (slots.default) {\n          const vnodes = slots.default(data)\n          children = vnodes.some((v) => v.type !== Comment)\n            ? vnodes\n            : originRenderCell(data)\n        } else {\n          children = originRenderCell(data)\n        }\n        const shouldCreatePlaceholder =\n          hasTreeColumn.value &&\n          data.cellIndex === 0 &&\n          data.column.type !== 'selection'\n        const prefix = treeCellPrefix(data, shouldCreatePlaceholder)\n        const props = {\n          class: 'cell',\n          style: {},\n          // title: '',\n        }\n        if (column.showOverflowTooltip) {\n          props.class = `${props.class} is-overflow`\n\n          return h('div', props, [\n            prefix,\n            h(\n              BTooltip,\n              { placement: 'top', showAfter: 300 },\n              {\n                default: () => [h('span', null, children)],\n                content: () => [h('span', null, children)],\n              }\n            ),\n          ])\n        }\n        checkSubColumn(children)\n        return h('div', props, [prefix, children])\n      }\n    }\n    return column\n  }\n  const getPropsData = (...propsKey: unknown[]) => {\n    return propsKey.reduce((prev, cur) => {\n      if (Array.isArray(cur)) {\n        cur.forEach((key) => {\n          prev[key] = props[key]\n        })\n      }\n      return prev\n    }, {})\n  }\n  const getColumnElIndex = (children, child) => {\n    return Array.prototype.indexOf.call(children, child)\n  }\n\n  return {\n    columnId,\n    realAlign,\n    isSubColumn,\n    realHeaderAlign,\n    columnOrTableParent,\n    setColumnWidth,\n    setColumnForcedProps,\n    setColumnRenders,\n    getPropsData,\n    getColumnElIndex,\n  }\n}\n\nexport default useRender\n"],"names":["props"],"mappings":"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"}