{"version":3,"file":"table-cell.vue2.mjs","sources":["../../../components/table/table-cell.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Checkbox } from '@/components/checkbox'\r\nimport { Ellipsis } from '@/components/ellipsis'\r\nimport { Radio } from '@/components/radio'\r\nimport { Renderer } from '@/components/renderer'\r\nimport { ResizeObserver } from '@/components/resize-observer'\r\n\r\nimport { computed, inject, nextTick, ref, watchEffect } from 'vue'\r\n\r\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\r\nimport TableIcon from './table-icon.vue'\r\nimport { useRtl } from '@vexip-ui/hooks'\r\nimport { getLast, isFunction } from '@vexip-ui/utils'\r\nimport { TABLE_ACTIONS, TABLE_STORE, columnTypes, noopFormatter } from './symbol'\r\n\r\nimport type { PropType } from 'vue'\r\nimport type {\r\n  ColumnWithKey,\r\n  TableDragColumn,\r\n  TableExpandColumn,\r\n  TableOrderColumn,\r\n  TableRowState,\r\n  TableSelectionColumn,\r\n  TableTypeColumn,\r\n} from './symbol'\r\n\r\ndefineOptions({ name: 'TableCell' })\r\n\r\nconst props = defineProps({\r\n  row: {\r\n    type: Object as PropType<TableRowState>,\r\n    default: () => ({}),\r\n  },\r\n  rowIndex: {\r\n    type: Number,\r\n    default: -1,\r\n  },\r\n  column: {\r\n    type: Object as PropType<ColumnWithKey>,\r\n    default: () => ({}),\r\n  },\r\n  colIndex: {\r\n    type: Number,\r\n    default: -1,\r\n  },\r\n  fixed: {\r\n    type: String as PropType<'left' | 'right' | undefined>,\r\n    default: null,\r\n  },\r\n})\r\n\r\nconst { state, getters, mutations } = inject(TABLE_STORE)!\r\nconst tableActions = inject(TABLE_ACTIONS)!\r\n\r\nconst nh = useNameHelper('table')\r\nconst icons = useIcons()\r\nconst { isRtl } = useRtl()\r\n\r\nconst contentHeight = ref(0)\r\n\r\nconst wrapper = ref<HTMLElement>()\r\n\r\nconst inLast = computed(() => {\r\n  return props.column.index + cellSpan.value.colSpan >= state.columns.length\r\n})\r\nconst className = computed(() => {\r\n  let customClass = null\r\n\r\n  if (typeof state.cellClass === 'function') {\r\n    customClass = state.cellClass({\r\n      row: props.row.data,\r\n      rowIndex: props.rowIndex,\r\n      column: props.column,\r\n      columnIndex: props.column.index,\r\n    })\r\n  } else {\r\n    customClass = state.cellClass\r\n  }\r\n\r\n  const typed = columnTypes.includes((props.column as TableTypeColumn).type)\r\n\r\n  return [\r\n    nh.be('cell'),\r\n    {\r\n      [nh.bem('cell', 'typed')]: typed,\r\n      [nh.bem('cell', 'center')]: typed || props.column.textAlign === 'center',\r\n      [nh.bem('cell', 'right')]: props.column.textAlign === 'right',\r\n      [nh.bem('cell', 'last')]: inLast.value,\r\n    },\r\n    props.column.class,\r\n    customClass,\r\n  ]\r\n})\r\nconst columns = computed(() => {\r\n  return props.fixed === 'left'\r\n    ? state.leftFixedColumns\r\n    : props.fixed === 'right'\r\n      ? state.rightFixedColumns\r\n      : state.normalColumns\r\n})\r\nconst cellSpan = computed(() => {\r\n  return (\r\n    state.cellSpanMap\r\n      .get(props.fixed || 'default')!\r\n      .get(`${props.row.index},${props.column.index}`) || { colSpan: 1, rowSpan: 1 }\r\n  )\r\n})\r\nconst customStyle = computed(() => {\r\n  if (typeof state.cellStyle === 'function') {\r\n    return state.cellStyle({\r\n      row: props.row.data,\r\n      rowIndex: props.rowIndex,\r\n      column: props.column,\r\n      columnIndex: props.column.index,\r\n    })\r\n  }\r\n\r\n  return state.cellStyle\r\n})\r\nconst style = computed(() => {\r\n  const totalWidths =\r\n    props.fixed === 'left'\r\n      ? getters.leftFixedWidths\r\n      : props.fixed === 'right'\r\n        ? getters.rightFixedWidths\r\n        : getters.normalWidths\r\n  const { colSpan, rowSpan } = cellSpan.value\r\n  const noFixed = !getters.hasFixedColumn\r\n  const padLeft = noFixed || columns.value[0]?.fixed === 'left' ? state.sidePadding[0] || 0 : 0\r\n  const padRight =\r\n    noFixed || getLast(columns.value)?.fixed === 'right' ? state.sidePadding[1] || 0 : 0\r\n  const width = totalWidths[props.colIndex + colSpan] - totalWidths[props.colIndex]\r\n\r\n  let height: number | undefined\r\n\r\n  if (rowSpan > 1 && state.heightBITree) {\r\n    height =\r\n      state.heightBITree.sum(props.row.listIndex + rowSpan) -\r\n      state.heightBITree.sum(props.row.listIndex)\r\n  }\r\n\r\n  return [\r\n    props.column.style || '',\r\n    customStyle.value,\r\n    {\r\n      display: !colSpan || !rowSpan ? 'none' : undefined,\r\n      width: `${(props.column.index ? 0 : padLeft) + (inLast.value ? padRight : 0) + width}px`,\r\n      height: height ? `${height}px` : undefined,\r\n      visibility: props.column.fixed && !props.fixed ? 'hidden' : undefined,\r\n      borderRightWidth:\r\n        !state.border && colSpan > 1 && props.colIndex + colSpan >= totalWidths.length - 1\r\n          ? 0\r\n          : undefined,\r\n      borderBottomWidth:\r\n        rowSpan > 1 && props.rowIndex + rowSpan >= getters.processedData.length ? 0 : undefined,\r\n      transform: `translate3d(${isRtl.value ? '-' : ''}${\r\n        (props.column.index ? padLeft : 0) + totalWidths[props.colIndex]\r\n      }px, 0, 0)`,\r\n    },\r\n  ]\r\n})\r\nconst attrs = computed(() => {\r\n  let customAttrs: Record<string, any>\r\n\r\n  if (typeof state.cellAttrs === 'function') {\r\n    customAttrs = state.cellAttrs({\r\n      row: props.row.data,\r\n      rowIndex: props.rowIndex,\r\n      column: props.column,\r\n      columnIndex: props.colIndex,\r\n    })\r\n  } else {\r\n    customAttrs = state.cellAttrs\r\n  }\r\n\r\n  return { ...(props.column.attrs || {}), ...(customAttrs || {}) }\r\n})\r\nconst formatter = computed(() => {\r\n  return isFunction(props.column.formatter) ? props.column.formatter : noopFormatter\r\n})\r\nconst isTreeColumn = computed(() => {\r\n  return (\r\n    getters.usingTree &&\r\n    (getters.indentedColumn ? props.column.key === getters.indentedColumn.key : props.column.first)\r\n  )\r\n})\r\n\r\nwatchEffect(() => {\r\n  if (isTypeColumn(props.column)) return\r\n\r\n  mutations.setCellHeight(props.row.key, props.column.key, contentHeight.value)\r\n})\r\n\r\nfunction isSelectionColumn(column: unknown): column is TableSelectionColumn {\r\n  return (column as TableTypeColumn).type === 'selection'\r\n}\r\n\r\nfunction isOrderColumn(column: unknown): column is TableOrderColumn {\r\n  return (column as TableTypeColumn).type === 'order'\r\n}\r\n\r\nfunction isExpandColumn(column: unknown): column is TableExpandColumn {\r\n  return (column as TableTypeColumn).type === 'expand'\r\n}\r\n\r\nfunction isDragColumn(column: unknown): column is TableDragColumn {\r\n  return (column as TableTypeColumn).type === 'drag'\r\n}\r\n\r\nfunction isTypeColumn(column: unknown): column is TableTypeColumn {\r\n  return (\r\n    isSelectionColumn(column) ||\r\n    isOrderColumn(column) ||\r\n    isExpandColumn(column) ||\r\n    isDragColumn(column)\r\n  )\r\n}\r\n\r\nfunction buildEventPayload(event: Event) {\r\n  return {\r\n    row: props.row.data,\r\n    key: props.row.key,\r\n    rowIndex: props.rowIndex,\r\n    column: props.column,\r\n    columnIndex: props.colIndex,\r\n    event,\r\n  }\r\n}\r\n\r\nfunction handleMouseEnter(event: MouseEvent) {\r\n  tableActions?.emitCellEvent('Enter', buildEventPayload(event))\r\n}\r\n\r\nfunction handleMouseLeave(event: MouseEvent) {\r\n  tableActions?.emitCellEvent('Leave', buildEventPayload(event))\r\n}\r\n\r\nfunction handleClick(event: MouseEvent) {\r\n  tableActions?.emitCellEvent('Click', buildEventPayload(event))\r\n}\r\n\r\nfunction handleDblclick(event: MouseEvent) {\r\n  tableActions?.emitCellEvent('Dblclick', buildEventPayload(event))\r\n}\r\n\r\nfunction handleContextmenu(event: MouseEvent) {\r\n  tableActions?.emitCellEvent('Contextmenu', buildEventPayload(event))\r\n}\r\n\r\nfunction handleCheckRow(row: TableRowState, event: MouseEvent, single = false) {\r\n  if (!getters.disableCheckRows.has(row.key)) {\r\n    const checked = !row.checked\r\n    const { data, key, index } = row\r\n\r\n    mutations.handleCheck(key, checked, single)\r\n    tableActions.emitRowCheck({ row: data, key, index, event, checked })\r\n  }\r\n}\r\n\r\nfunction handleExpandRow(row: TableRowState, event: MouseEvent) {\r\n  if (!getters.disableExpandRows.has(row.key)) {\r\n    const expanded = !row.expanded\r\n    const { data, key, index } = row\r\n\r\n    mutations.setRowProp(key, 'expandAnimate', true)\r\n    nextTick(() => {\r\n      mutations.handleExpand(key, expanded)\r\n      tableActions.emitRowExpand({ row: data, key, index, event, expanded })\r\n    })\r\n  }\r\n}\r\n\r\nfunction handleDragRow(row: TableRowState) {\r\n  if (!getters.disableDragRows.has(row.key)) {\r\n    mutations.handleDrag(row.key, true)\r\n  }\r\n}\r\n\r\nfunction handleExpandTree(row: TableRowState, event: MouseEvent) {\r\n  if (!row.children?.length) return\r\n\r\n  const expanded = !row.treeExpanded\r\n  const { data, key, index } = row\r\n\r\n  tableActions.runInLocked()\r\n  mutations.setTreeExpanded(row.key, expanded)\r\n  tableActions.emitRowExpand({ row: data, key, index, event, expanded })\r\n}\r\n\r\nfunction handleCellResize(entry: ResizeObserverEntry) {\r\n  contentHeight.value =\r\n    (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height) + state.borderWidth\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    v-bind=\"attrs\"\r\n    ref=\"wrapper\"\r\n    :class=\"className\"\r\n    role=\"cell\"\r\n    :scope=\"column.first ? 'row' : undefined\"\r\n    :colspan=\"cellSpan.colSpan !== 1 ? cellSpan.colSpan : undefined\"\r\n    :rowspan=\"cellSpan.rowSpan !== 1 ? cellSpan.rowSpan : undefined\"\r\n    :style=\"style\"\r\n    @mouseenter=\"handleMouseEnter\"\r\n    @mouseleave=\"handleMouseLeave\"\r\n    @click=\"handleClick\"\r\n    @dblclick=\"handleDblclick\"\r\n    @contextmenu=\"handleContextmenu\"\r\n  >\r\n    <div\r\n      v-if=\"column.index === 0\"\r\n      :class=\"nh.be('side-pad')\"\r\n      role=\"none\"\r\n      aria-hidden\r\n    ></div>\r\n    <div v-if=\"isTypeColumn(column)\" :class=\"nh.be('content')\">\r\n      <template v-if=\"isSelectionColumn(column)\">\r\n        <Radio\r\n          v-if=\"column.singleSelect\"\r\n          inherit\r\n          :label=\"row.key\"\r\n          :value=\"row.checked ? row.key : null\"\r\n          :class=\"nh.be('selection')\"\r\n          :size=\"column.selectionSize || 'default'\"\r\n          :disabled=\"getters.disableCheckRows.has(row.key)\"\r\n          @click.prevent.stop=\"handleCheckRow(row, $event, true)\"\r\n        ></Radio>\r\n        <Checkbox\r\n          v-else\r\n          inherit\r\n          :class=\"nh.be('selection')\"\r\n          :checked=\"row.checked\"\r\n          :size=\"column.selectionSize || 'default'\"\r\n          :disabled=\"getters.disableCheckRows.has(row.key)\"\r\n          :partial=\"row.partial\"\r\n          :control=\"!!row.children?.length\"\r\n          @click.prevent.stop=\"handleCheckRow(row, $event)\"\r\n        ></Checkbox>\r\n      </template>\r\n      <span v-else-if=\"isOrderColumn(column)\" :class=\"nh.be('order')\">\r\n        {{ column.orderLabel && column.orderLabel(column.truthIndex ? row.index : rowIndex) }}\r\n      </span>\r\n      <template v-else-if=\"isExpandColumn(column)\">\r\n        <button\r\n          v-if=\"!getters.disableExpandRows.has(row.key)\"\r\n          type=\"button\"\r\n          :class=\"{\r\n            [nh.be('expand')]: true,\r\n            [nh.bem('expand', 'active')]: row.expanded\r\n          }\"\r\n          @click.stop=\"handleExpandRow(row, $event)\"\r\n        >\r\n          <TableIcon name=\"expand\" :origin=\"icons.angleRight\"></TableIcon>\r\n        </button>\r\n      </template>\r\n      <template v-else-if=\"isDragColumn(column)\">\r\n        <button\r\n          v-if=\"!getters.disableDragRows.has(row.key)\"\r\n          type=\"button\"\r\n          :class=\"nh.be('dragger')\"\r\n          @mousedown=\"handleDragRow(row)\"\r\n        >\r\n          <TableIcon name=\"dragger\" :origin=\"icons.dragger\"></TableIcon>\r\n        </button>\r\n      </template>\r\n    </div>\r\n    <ResizeObserver v-else :on-resize=\"handleCellResize\">\r\n      <span :class=\"nh.be('content')\">\r\n        <div v-if=\"isTreeColumn\" :class=\"nh.be('tree-append')\">\r\n          <span\r\n            :class=\"nh.be('pad')\"\r\n            :style=\"{\r\n              [nh.cv('row-depth')]: row.depth\r\n            }\"\r\n          ></span>\r\n          <button\r\n            type=\"button\"\r\n            :class=\"[\r\n              nh.be('tree-expand'),\r\n              !row.children?.length && nh.bem('tree-expand', 'hidden')\r\n            ]\"\r\n            @click=\"handleExpandTree(row, $event)\"\r\n          >\r\n            <TableIcon v-if=\"row.treeExpanded\" name=\"minus\" :origin=\"icons.minusSquare\"></TableIcon>\r\n            <TableIcon v-else name=\"plus\" :origin=\"icons.plusSquare\"></TableIcon>\r\n          </button>\r\n        </div>\r\n        <Ellipsis\r\n          v-if=\"column.ellipsis ?? state.ellipsis\"\r\n          inherit\r\n          :class=\"nh.be('ellipsis')\"\r\n          :tip-disabled=\"state.barScrolling\"\r\n          :tooltip-theme=\"state.tooltipTheme\"\r\n          :tip-max-width=\"state.tooltipWidth\"\r\n        >\r\n          <Renderer\r\n            v-if=\"isFunction(column.renderer)\"\r\n            :renderer=\"column.renderer\"\r\n            :data=\"{ row: row.data, rowIndex, column, columnIndex: column.index }\"\r\n          ></Renderer>\r\n          <template v-else-if=\"isFunction(column.accessor)\">\r\n            {{ formatter(column.accessor(row.data, rowIndex)) }}\r\n          </template>\r\n          <template v-else>\r\n            {{ formatter(row.data[column.key]) }}\r\n          </template>\r\n        </Ellipsis>\r\n        <template v-else>\r\n          <Renderer\r\n            v-if=\"isFunction(column.renderer)\"\r\n            :renderer=\"column.renderer\"\r\n            :data=\"{ row: row.data, rowIndex, column, columnIndex: column.index }\"\r\n          ></Renderer>\r\n          <template v-else-if=\"isFunction(column.accessor)\">\r\n            {{ formatter(column.accessor(row.data, rowIndex)) }}\r\n          </template>\r\n          <template v-else>\r\n            {{ formatter(row.data[column.key]) }}\r\n          </template>\r\n        </template>\r\n      </span>\r\n    </ResizeObserver>\r\n    <div\r\n      v-if=\"inLast\"\r\n      :class=\"[nh.be('side-pad'), nh.bem('side-pad', 'right')]\"\r\n      role=\"none\"\r\n      aria-hidden\r\n    ></div>\r\n  </div>\r\n</template>\r\n"],"names":["props","__props","state","getters","mutations","inject","TABLE_STORE","tableActions","TABLE_ACTIONS","nh","useNameHelper","icons","useIcons","isRtl","useRtl","contentHeight","ref","wrapper","inLast","computed","cellSpan","className","customClass","typed","columnTypes","columns","customStyle","style","totalWidths","colSpan","rowSpan","noFixed","padLeft","_a","padRight","_b","getLast","width","height","attrs","customAttrs","formatter","isFunction","noopFormatter","isTreeColumn","watchEffect","isTypeColumn","isSelectionColumn","column","isOrderColumn","isExpandColumn","isDragColumn","buildEventPayload","event","handleMouseEnter","handleMouseLeave","handleClick","handleDblclick","handleContextmenu","handleCheckRow","row","single","checked","data","key","index","handleExpandRow","expanded","nextTick","handleDragRow","handleExpandTree","handleCellResize","entry","_createElementBlock","_mergeProps","_normalizeClass","_unref","_Fragment","_createBlock","Radio","_cache","_withModifiers","$event","Checkbox","_toDisplayString","_createVNode","TableIcon","ResizeObserver","_createElementVNode","_normalizeStyle","Ellipsis","Renderer","_createTextVNode"],"mappings":"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"}