{"version":3,"file":"table-td.mjs","sources":["../../../../../../../packages/components/table/src/layout/table-td.tsx"],"sourcesContent":["import type { PropType } from 'vue'\nimport { computed, createVNode, defineComponent, inject, toRefs } from 'vue'\nimport { getNamespace } from '../../../../utils/global-config'\nimport { getProp } from '../../../../shared/utils'\n\nimport type { TableDataWithRaw, TableColumnData } from '../types'\nimport { tableColumnTypes } from '../types'\nimport { isFunction, isNull } from '../../../../utils/is'\nimport type { TableContext } from '../context'\nimport { tableInjectionKey } from '../context'\n\nimport Checkbox from '../../../checkbox/src/checkbox.vue'\n\nimport { useColumnFixed } from '../hooks/use-column-fixed'\n\nexport default defineComponent({\n  name: 'Td',\n  props: {\n    rowIndex: {\n      type: Number,\n      default: 0\n    },\n    record: {\n      type: Object as PropType<TableDataWithRaw>,\n      default: () => ({})\n    },\n    column: {\n      type: Object as PropType<TableColumnData>,\n      default: () => ({})\n    },\n    dataColumns: {\n      type: Array as PropType<TableColumnData[]>,\n      default: () => []\n    },\n    colSpan: {\n      type: Number,\n      default: 1\n    },\n    rowSpan: {\n      type: Number,\n      default: 1\n    },\n    showExpandBtn: {\n      type: Boolean,\n      default: false\n    },\n    indentSize: {\n      type: Number,\n      default: 0\n    },\n    empty: {\n      type: Boolean,\n      default: false\n    },\n    // 默认空值填充\n    defaultEmptyFill: {\n      type: String,\n      default: ''\n    }\n  },\n  setup(props, { slots }) {\n    const ns = getNamespace('td')\n    const { dataColumns, column } = toRefs(props)\n    const { fixedStyle, isLeftFixedLast, isRightFixedFirst } = useColumnFixed(dataColumns, column)\n    const tableContext = inject<TableContext>(tableInjectionKey)\n\n    // 当前的prop是否在resizing\n    const propHasResizing = computed(\n      () => tableContext?.resizeStore?.prop === props.column.prop && props.column.prop\n    )\n    // 表格水平滚动位置。左 中 右\n    const horScrollPosition = computed(() => tableContext?.scroll?.horScrollPosition)\n\n    const cls = computed(() => [\n      ns,\n      !props.empty && `is-align-${props.column.align || 'left'}`,\n      props.column.fixed && `is-fixed-${props.column.fixed}`,\n      isLeftFixedLast.value && `is-fixed-left-last`,\n      isRightFixedFirst.value && `is-fixed-right-first`,\n      horScrollPosition.value && `is-scroll-position-${horScrollPosition.value}`,\n      propHasResizing.value && 'is-resize'\n    ])\n\n    const isOpsType = computed(() => tableColumnTypes.includes(props.column.type!))\n\n    // 优先级 renderCell > slotName >  getProp\n    const renderContent = () => {\n      let content: any = getProp(props.record?.raw, props.column.prop) ?? ''\n      const tableCellSlot = tableContext?.slots?.[props.column.slotName!]\n      if (tableCellSlot) {\n        content = tableCellSlot({\n          row: props.record?.raw,\n          column: props.column,\n          rowIndex: props.rowIndex as number\n        })\n      }\n\n      if (isFunction(props.column.renderCell)) {\n        content = props.column.renderCell({\n          row: props.record.raw!,\n          column: props.column,\n          rowIndex: props.rowIndex as number\n        })\n      }\n      // 默认空值填充\n      if (isNull(content) || content === '') {\n        return props.defaultEmptyFill\n      }\n\n      return content\n    }\n\n    // Checkbox选项列表，列表内的Checkbox\n    const renderOpsMap: Record<string, any> = {\n      checkbox() {\n        if (props.record.isLeaf) {\n          return (\n            <>\n              <Checkbox\n                modelValue={\n                  props.record.raw?.key &&\n                  tableContext?.opsStore?.selectionRowKeys?.includes(props.record.raw?.key)\n                }\n                onChange={(checked: boolean) =>\n                  tableContext?.opsStore?.toggleSelect!(props.record.raw!, checked)\n                }\n                disabled={Boolean(props.record.disabled)}\n                validateEvent={false}\n                // @ts-ignore: click\n                onClick={(ev: Event) => ev.stopPropagation()}\n              />\n            </>\n          )\n        }\n        // 有children TODO\n      },\n      index() {\n        return props.column.renderIndex\n          ? props.column.renderIndex({ column: props.column, index: props.rowIndex! })\n          : props.rowIndex! + 1\n      }\n    }\n\n    const renderOps = () => {\n      return renderOpsMap[props.column.type!]()\n    }\n\n    const renderCell = () => {\n      if (slots.default) {\n        return slots.default()\n      }\n      return (\n        <span class={['bn-table__cell']}>{isOpsType.value ? renderOps() : renderContent()}</span>\n      )\n    }\n\n    return () => {\n      return createVNode(\n        'td',\n        {\n          class: cls.value,\n          style: {\n            ...fixedStyle.value\n          },\n          colspan: props.colSpan > 1 ? props.colSpan : undefined\n        },\n        {\n          default: () => [renderCell()]\n        }\n      )\n    }\n  }\n})\n"],"names":["name","props","rowIndex","type","Number","default","record","Object","column","dataColumns","Array","colSpan","rowSpan","showExpandBtn","Boolean","indentSize","empty","defaultEmptyFill","String","setup","slots","ns","getNamespace","toRefs","fixedStyle","isLeftFixedLast","isRightFixedFirst","useColumnFixed","tableContext","inject","tableInjectionKey","propHasResizing","computed","resizeStore","prop","horScrollPosition","scroll","cls","align","fixed","value","isOpsType","tableColumnTypes","includes","renderContent","content","getProp","raw","tableCellSlot","slotName","row","isFunction","renderCell","isNull","renderOpsMap","checkbox","isLeaf","_createVNode","_Fragment","Checkbox","key","opsStore","selectionRowKeys","checked","_a","toggleSelect","disabled","ev","stopPropagation","index","renderIndex","renderOps","createVNode","class","style","colspan","undefined"],"mappings":"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"}