{"version":3,"file":"table.vue2.cjs","sources":["../../../components/table/table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { NativeScroll } from '@/components/native-scroll'\nimport { Renderer } from '@/components/renderer'\nimport { Scrollbar } from '@/components/scrollbar'\n\nimport {\n  computed,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  renderSlot,\n  toRef,\n  watch,\n} from 'vue'\n\nimport TableColumn from './table-column'\nimport TableColumnGroup from './table-column-group'\nimport TableSummary from './table-summary'\nimport TableHead from './table-head.vue'\nimport TableBody from './table-body.vue'\nimport TableFoot from './table-foot.vue'\nimport { emitEvent, useLocale, useNameHelper, useProps } from '@vexip-ui/config'\nimport {\n  debounce,\n  debounceMinor,\n  getLast,\n  isDefined,\n  isValidNumber,\n  listToMap,\n  nextFrameOnce,\n  noop,\n  removeArrayItem,\n  toNumber,\n} from '@vexip-ui/utils'\nimport { useSetTimeout } from '@vexip-ui/hooks'\nimport { tableProps } from './props'\nimport { useStore } from './store'\nimport { DropType, TABLE_ACTIONS, TABLE_SLOTS, TABLE_STORE } from './symbol'\n\nimport type { Slots } from 'vue'\nimport type { StyleType } from '@vexip-ui/config'\nimport type { NativeScrollExposed, NativeScrollPayload } from '@/components/native-scroll'\nimport type { ScrollbarExposed } from '@/components/scrollbar'\nimport type {\n  Key,\n  MouseEventType,\n  MoveEventType,\n  StoreOptions,\n  TableCellPayload,\n  TableColResizePayload,\n  TableColumnGroupOptions,\n  TableColumnOptions,\n  TableFootPayload,\n  TableHeadPayload,\n  TableKeyConfig,\n  TableRowInstance,\n  TableRowPayload,\n  TableRowState,\n  TableSlots,\n  TableSummaryOptions,\n} from './symbol'\n\nconst defaultKeyConfig: Required<TableKeyConfig> = {\n  id: 'id',\n  children: 'children',\n  checked: 'checked',\n  height: 'height',\n  expanded: 'expanded',\n  treeExpanded: 'treeExpanded',\n}\n\ndefineOptions({ name: 'Table' })\n\nconst _props = defineProps(tableProps)\nconst props = useProps('table', _props, {\n  locale: null,\n  columns: {\n    default: () => [],\n    static: true,\n  },\n  summaries: {\n    default: () => [],\n    static: true,\n  },\n  data: {\n    default: () => [],\n    static: true,\n  },\n  width: null,\n  height: null,\n  minHeight: null,\n  rowClass: null,\n  rowStyle: null,\n  rowAttrs: null,\n  stripe: false,\n  border: false,\n  highlight: false,\n  useXBar: false,\n  useYBar: false,\n  barFade: 1500,\n  rowDraggable: false,\n  rowHeight: {\n    default: null,\n    validator: value => value > 0,\n  },\n  rowMinHeight: {\n    default: 36,\n    validator: value => value > 0,\n  },\n  virtual: false,\n  bufferCount: {\n    default: 5,\n    validator: value => value >= 0,\n  },\n  scrollClass: () => ({}),\n  expandRenderer: {\n    default: null,\n    isFunc: true,\n  },\n  currentPage: {\n    default: 1,\n    validator: value => value > 0,\n    static: true,\n  },\n  pageSize: 0,\n  transparent: false,\n  tooltipTheme: {\n    default: 'dark',\n    validator: value => ['light', 'dark'].includes(value),\n  },\n  tooltipWidth: 500,\n  singleSorter: false,\n  singleFilter: false,\n  cellClass: null,\n  cellStyle: null,\n  cellAttrs: null,\n  headClass: null,\n  headStyle: null,\n  headAttrs: null,\n  footClass: null,\n  footStyle: null,\n  footAttrs: null,\n  customSorter: false,\n  customFilter: false,\n  keyConfig: () => ({}),\n  disabledTree: false,\n  rowIndent: '16px',\n  noCascaded: false,\n  colResizable: false,\n  cellSpan: {\n    default: null,\n    isFunc: true,\n  },\n  sidePadding: 0,\n  icons: () => ({}),\n  borderWidth: 1,\n  dataFilter: {\n    default: null,\n    isFunc: true,\n  },\n  noTransition: false,\n  ellipsis: false,\n  slots: () => ({}),\n})\n\n// only for dnd end payload\nconst emit = defineEmits(['update:data'])\n\nconst slots = defineSlots<TableSlots>()\n\nconst nh = useNameHelper('table')\nconst { timer } = useSetTimeout()\n\nconst bodyHeight = ref<number | undefined>(props.height)\nconst bodyMinHeight = ref(props.height || 0)\nconst xScrollEnabled = ref(false)\nconst yScrollEnabled = ref(false)\nconst xScrollPercent = ref(0)\nconst yScrollPercent = ref(0)\nconst headHeight = ref(0)\nconst footHeight = ref(0)\nconst indicatorShow = ref(false)\nconst indicatorType = ref(DropType.BEFORE)\nconst tempColumns = reactive(new Set<TableColumnGroupOptions | TableColumnOptions>())\nconst tempSummaries = reactive(new Set<TableSummaryOptions>())\nconst tableWidth = ref<number | string>()\nconst hasDragColumn = ref(false)\nconst bodyWidth = ref(0)\n\nconst wrapper = ref<HTMLElement>()\nconst mainScroll = ref<NativeScrollExposed>()\nconst xHeadScroll = ref<NativeScrollExposed>()\nconst xAboveScroll = ref<NativeScrollExposed>()\nconst xBelowScroll = ref<NativeScrollExposed>()\nconst thead = ref<HTMLElement>()\nconst aboveTfoot = ref<HTMLElement>()\nconst belowTfoot = ref<HTMLElement>()\nconst indicator = ref<HTMLElement>()\nconst xScrollbar = ref<ScrollbarExposed>()\nconst yScrollbar = ref<ScrollbarExposed>()\n\nlet isMounted = false\n\nconst locale = useLocale('table', toRef(props, 'locale'))\nconst keyConfig = computed(() => ({ ...defaultKeyConfig, ...props.keyConfig }))\nconst allColumns = computed(() => Array.from(tempColumns))\nconst allSummaries = computed(() => Array.from(tempSummaries))\n\nconst syncToStoreProps = [\n  'rowClass',\n  'rowStyle',\n  'rowAttrs',\n  'cellClass',\n  'cellStyle',\n  'cellAttrs',\n  'headClass',\n  'headStyle',\n  'headAttrs',\n  'footClass',\n  'footStyle',\n  'footAttrs',\n  'border',\n  'stripe',\n  'highlight',\n  'currentPage',\n  'pageSize',\n  'rowHeight',\n  'rowMinHeight',\n  'rowDraggable',\n  'tooltipTheme',\n  'tooltipWidth',\n  'singleSorter',\n  'singleFilter',\n  'customSorter',\n  'customFilter',\n  'noCascaded',\n  'colResizable',\n  'expandRenderer',\n  'cellSpan',\n  'sidePadding',\n  'borderWidth',\n  'dataFilter',\n  'ellipsis',\n] as const\n\nconst store = useStore({\n  ...(syncToStoreProps.reduce(\n    (prev, current) => ((prev[current] = props[current]), prev),\n    {} as any,\n  ) as StoreOptions),\n  columns: allColumns.value,\n  summaries: allSummaries.value,\n  data: props.data,\n  dataKey: keyConfig.value.id,\n  virtual: props.virtual,\n  locale: locale.value,\n  keyConfig: keyConfig.value,\n  disabledTree: props.disabledTree,\n  colResizable: props.colResizable === true ? 'lazy' : props.colResizable,\n  sidePadding: Array.isArray(props.sidePadding)\n    ? props.sidePadding\n    : [props.sidePadding, props.sidePadding],\n})\n\nprovide(TABLE_STORE, store)\nprovide(TABLE_ACTIONS, {\n  increaseColumn,\n  decreaseColumn,\n  increaseSummary,\n  decreaseSummary,\n  getTableElement,\n  refreshXScroll,\n  emitRowCheck,\n  emitAllRowCheck,\n  emitRowExpand,\n  emitRowTreeExpand,\n  emitRowFilter,\n  emitRowSort,\n  handleRowDragStart,\n  handleRowDragOver,\n  handleRowDrop,\n  handleRowDragEnd,\n  emitRowEvent,\n  emitCellEvent,\n  emitHeadEvent,\n  emitColResize,\n  emitFootEvent,\n  hasIcon: name => !!props.icons[name],\n  getIcon: name => props.icons[name],\n  renderTableSlot,\n  runInLocked,\n  updateColumns: () => debounceMinor(updateColumns),\n  setColumnProp,\n  updateSummaries: () => debounceMinor(updateSummaries),\n  setSummaryProp,\n})\nprovide(TABLE_SLOTS, slots as Slots)\n\nconst { state, getters, mutations } = store\n\nconst mergedLocked = computed(() => props.noTransition || state.locked || state.barScrolling)\nconst className = computed(() => {\n  return {\n    [nh.b()]: true,\n    [nh.bs('vars')]: true,\n    [nh.bm('inherit')]: props.inherit,\n    [nh.bm('stripe')]: props.stripe,\n    [nh.bm('border')]: props.border,\n    [nh.bm('highlight')]: props.highlight,\n    [nh.bm('use-y-bar')]: props.useYBar,\n    [nh.bm('transparent')]: props.transparent,\n    [nh.bm('virtual')]: props.virtual,\n    [nh.bm('col-resizable')]: props.colResizable,\n    [nh.bm('col-resizing')]: state.colResizing,\n    [nh.bm('locked')]: mergedLocked.value,\n    [nh.bm('above-foot')]: state.aboveSummaries.length,\n    [nh.bm('below-foot')]: state.belowSummaries.length,\n    [nh.bm('using-bar')]: state.barScrolling,\n  }\n})\nconst style = computed(() => {\n  const width = tableWidth.value ?? props.width\n  const [padLeft, padRight] = state.sidePadding\n\n  const style: StyleType = {\n    [nh.cv('row-indent-width')]:\n      typeof props.rowIndent === 'number' ? `${props.rowIndent}px` : props.rowIndent,\n    [nh.cv('b-width')]: `${props.borderWidth}px`,\n    [nh.cv('expanded-width')]: `${bodyWidth.value}px`,\n  }\n\n  if (padLeft) {\n    style[nh.cv('side-pad-left')] = `${padLeft}px`\n  }\n\n  if (padRight) {\n    style[nh.cv('side-pad-right')] = `${padRight}px`\n  }\n\n  if (isDefined(width)) {\n    if (typeof width === 'number' || isValidNumber(width, true)) {\n      style.width = `${width}px`\n      style.minWidth = `${width}px`\n    } else {\n      style.width = width\n    }\n  }\n\n  return style\n})\nconst useXScroll = computed(() => {\n  return !!(\n    isDefined(props.width) ||\n    state.leftFixedColumns.length ||\n    state.rightFixedColumns.length\n  )\n})\nconst bodyScrollHeight = computed(() => {\n  const { totalHeight } = state\n\n  return bodyHeight.value ? Math.min(bodyHeight.value, totalHeight) : undefined\n})\nconst xBarLength = computed(() => mainScroll.value?.xBarLength || 35)\nconst yBarLength = computed(() => {\n  const { totalHeight } = state\n\n  if (bodyScrollHeight.value && totalHeight) {\n    return Math.max(Math.min((bodyScrollHeight.value / totalHeight) * 100, 99), 5) || 35\n  }\n\n  return 35\n})\nconst totalWidths = computed(() => {\n  return (\n    (getLast(getters.totalWidths) || 0) + (state.sidePadding[0] || 0) + (state.sidePadding[1] || 0)\n  )\n})\nconst leftFixedActive = computed(() => xScrollEnabled.value && xScrollPercent.value > 0)\nconst rightFixedActive = computed(() => xScrollEnabled.value && xScrollPercent.value < 100)\n\nconst {\n  setColumns,\n  setSummaries,\n  setData,\n  setDataKey,\n  setTableWidth,\n  setBodyYScroll,\n  setBodyXScroll,\n  setRenderRows,\n  setVirtual,\n  setLocale,\n  setDragging,\n  setKeyConfig,\n  setDisabledTree,\n  setLocked,\n  setBarScrolling,\n  clearSort,\n  clearFilter,\n  refreshRowIndex,\n  clearCheckAll,\n  getParentRow,\n  getCurrentData,\n  flatTreeRows,\n  refreshRowDepth,\n  queryRow,\n  handleCheck,\n  setTreeExpanded,\n} = mutations\n\nwatch(allColumns, updateColumns)\nwatch(allSummaries, updateSummaries)\nwatch(() => keyConfig.value.id, setDataKey)\nwatch(() => props.data, forceRefreshData, { deep: true })\nwatch(() => props.width, computeTableWidth)\nwatch([() => props.height, () => props.borderWidth], () => {\n  nextTick(computeBodyHeight)\n})\nwatch(locale, setLocale, { deep: true })\nwatch(\n  () => props.virtual,\n  value => {\n    setVirtual(value)\n    setData(props.data)\n    refreshPercentScroll()\n  },\n)\nwatch(\n  keyConfig,\n  config => {\n    setKeyConfig(config)\n    setData(props.data)\n  },\n  { deep: true },\n)\nwatch(\n  () => props.disabledTree,\n  value => {\n    setDisabledTree(value)\n    setData(props.data)\n  },\n)\nwatch([() => props.rowHeight, () => props.rowMinHeight], () => {\n  refresh()\n})\n\nfor (const prop of syncToStoreProps) {\n  const watchCallback =\n    mutations[\n      `set${prop.charAt(0).toLocaleUpperCase()}${prop.slice(1)}` as `set${Capitalize<typeof prop>}`\n    ]\n\n  watch(() => props[prop], watchCallback as any)\n}\n\nfunction syncBarScroll() {\n  xScrollbar.value?.handleScroll(xScrollPercent.value)\n  yScrollbar.value?.handleScroll(yScrollPercent.value)\n}\n\nconst handlerResize = debounce(refresh)\n\nonMounted(() => {\n  isMounted = true\n\n  watch(bodyScrollHeight, refreshPercentScroll)\n  refresh()\n  window.addEventListener('resize', handlerResize)\n  nextTick(() => {\n    hasDragColumn.value = getters.hasDragColumn\n  })\n\n  if (mainScroll.value) {\n    xScrollEnabled.value = mainScroll.value.enableXScroll\n    yScrollEnabled.value = mainScroll.value.enableYScroll\n  }\n})\n\nonBeforeUnmount(() => {\n  isMounted = false\n\n  window.removeEventListener('resize', handlerResize)\n})\n\ndefineExpose({\n  bodyHeight,\n  xScrollEnabled,\n  yScrollEnabled,\n  xScrollPercent,\n  yScrollPercent,\n  headHeight,\n  footHeight,\n  indicatorShow,\n  bodyScrollHeight,\n  totalWidths,\n  totalHeight: computed(() => state.totalHeight),\n  locked: mergedLocked,\n\n  store,\n\n  wrapper,\n  mainScroll,\n  xHeadScroll,\n  xAboveScroll,\n  xBelowScroll,\n  thead,\n  aboveTfoot,\n  belowTfoot,\n  indicator,\n  xScrollbar,\n  yScrollbar,\n\n  clearSort,\n  clearFilter,\n  clearSelected: clearCheckAll,\n  refresh,\n  refreshData: forceRefreshData,\n  getSelected,\n  getData: getCurrentData,\n  selectRow: setRowChecked,\n  treeExpandRow: setRowTreeExpanded,\n})\n\nfunction forceRefreshData(data = props.data) {\n  return runInLocked(() => {\n    setData(data)\n    nextTick(() => computeRenderRows(true))\n    refreshPercentScroll()\n  })\n}\n\nfunction computeTableWidth() {\n  const width = props.width\n\n  if (isDefined(width)) {\n    if (typeof width === 'string' && parseFloat(width).toString() !== width) {\n      tableWidth.value = width\n    } else {\n      tableWidth.value = `${toNumber(width)}px`\n    }\n  }\n\n  nextTick(() => {\n    mainScroll.value?.content && setTableWidth(mainScroll.value.content.offsetWidth)\n    refreshXScroll()\n  })\n}\n\nfunction computeBodyHeight() {\n  const height = props.height\n  const minHeight = props.minHeight\n  const borderWidth = props.borderWidth\n\n  let fixedHeight = 0\n\n  if (thead.value || aboveTfoot.value || belowTfoot.value) {\n    if (thead.value) {\n      fixedHeight = thead.value.offsetHeight\n    }\n\n    if (aboveTfoot.value) {\n      fixedHeight += aboveTfoot.value.offsetHeight\n    }\n\n    if (belowTfoot.value) {\n      fixedHeight = belowTfoot.value.offsetHeight\n    }\n  } else {\n    // one row as head placeholder\n    fixedHeight = props.rowHeight || props.rowMinHeight\n  }\n\n  fixedHeight += 2 * borderWidth\n\n  if (isDefined(height)) {\n    bodyHeight.value = height - fixedHeight\n  } else {\n    bodyHeight.value = undefined\n  }\n\n  if (isDefined(minHeight)) {\n    bodyMinHeight.value = Math.min(minHeight, height ?? Infinity) - fixedHeight\n  } else {\n    bodyMinHeight.value = 0\n  }\n}\n\nfunction handleMainScroll(payload: NativeScrollPayload) {\n  if (state.barScrolling) return\n\n  if (payload.type !== 'vertical') {\n    handleXScroll(payload)\n  }\n\n  if (payload.type !== 'horizontal') {\n    handleYScroll(payload)\n  }\n}\n\nfunction handleXScroll({ clientX, percentX }: { clientX: number, percentX: number }) {\n  if (state.barScrolling) return\n\n  xScrollPercent.value = percentX\n  setBodyXScroll(clientX)\n  syncBarScroll()\n  emitEvent(props.onScroll, {\n    type: 'horizontal',\n    client: clientX,\n    percent: percentX,\n  })\n}\n\nfunction handleYScroll({ clientY, percentY }: { clientY: number, percentY: number }) {\n  if (state.barScrolling) return\n\n  yScrollPercent.value = percentY\n  setBodyYScroll(clientY)\n  syncBarScroll()\n  emitYScroll(clientY, percentY)\n}\n\nfunction handleXBarScroll(percent: number) {\n  if (!mainScroll.value) return\n\n  const client = (mainScroll.value.xScrollLimit * percent) / 100\n\n  xScrollPercent.value = percent\n  setBodyXScroll(client)\n  emitEvent(props.onScroll, { type: 'horizontal', client, percent })\n}\n\nfunction handleYBarScroll(percent: number) {\n  const { totalHeight } = state\n  const client = (percent * (totalHeight - (bodyScrollHeight.value ?? 0))) / 100\n\n  yScrollPercent.value = percent\n  setBodyYScroll(client)\n  emitYScroll(client, percent)\n}\n\nfunction emitYScroll(client: number, percent: number) {\n  runInLocked()\n  nextFrameOnce(computeRenderRows)\n  emitEvent(props.onScroll, { type: 'vertical', client, percent })\n}\n\nfunction handleResize() {\n  if (mainScroll.value?.content) {\n    bodyWidth.value = mainScroll.value.content.offsetWidth\n  }\n\n  isMounted && refresh()\n}\n\nfunction increaseColumn(column: TableColumnOptions) {\n  tempColumns.add(column)\n}\n\nfunction decreaseColumn(column: TableColumnOptions) {\n  tempColumns.delete(column)\n}\n\nfunction increaseSummary(summary: TableSummaryOptions) {\n  tempSummaries.add(summary)\n}\n\nfunction decreaseSummary(summary: TableSummaryOptions) {\n  tempSummaries.delete(summary)\n}\n\nfunction updateColumns() {\n  runInLocked(() => {\n    setColumns(allColumns.value)\n    isMounted && computeTableWidth()\n    nextTick(() => {\n      hasDragColumn.value = getters.hasDragColumn\n    })\n  })\n}\n\nfunction setColumnProp(key: Key, prop: string, value: any) {\n  mutations.setColumnProp(key, prop, value)\n}\n\nfunction updateSummaries() {\n  runInLocked(() => {\n    setSummaries(allSummaries.value)\n  })\n}\n\nfunction setSummaryProp(key: Key, prop: string, value: any) {\n  mutations.setSummaryProp(key, prop, value)\n}\n\nfunction getTableElement() {\n  return wrapper.value\n}\n\nfunction refreshXScroll() {\n  mainScroll.value?.refresh()\n  xHeadScroll.value?.refresh()\n  xAboveScroll.value?.refresh()\n  xBelowScroll.value?.refresh()\n}\n\nfunction emitRowCheck(payload: TableRowPayload & { checked: boolean }) {\n  emitEvent(props.onRowCheck, payload)\n}\n\nfunction emitAllRowCheck(checked: boolean, partial: boolean) {\n  emitEvent(props.onRowCheckAll, checked, partial)\n}\n\nfunction emitRowExpand(payload: TableRowPayload & { expanded: boolean }) {\n  emitEvent(props.onRowExpand, payload)\n}\n\nfunction emitRowTreeExpand(payload: TableRowPayload & { expanded: boolean }) {\n  emitEvent(props.onRowTreeExpand, payload)\n}\n\nfunction emitRowFilter() {\n  const { columns, filters } = state\n  const columnMap = listToMap(columns, 'key')\n  const profiles = Array.from(filters.keys())\n    .filter(key => filters.get(key)!.active)\n    .map(key => {\n      const column = columnMap[key as string]\n\n      return {\n        name: column.name,\n        key: column.key,\n        meta: column.meta!,\n        active: filters.get(key)!.active!,\n      }\n    })\n\n  computeRenderRows(true)\n  emitEvent(\n    props.onRowFilter,\n    profiles,\n    getters.filteredData.map(row => row.data),\n  )\n}\n\nfunction emitRowSort() {\n  const { columns, sorters } = state\n  const columnMap = listToMap(columns, 'key')\n  const profiles = Array.from(sorters.keys())\n    .filter(key => sorters.get(key)!.type)\n    .map(key => {\n      const column = columnMap[key as string]\n      const sorter = sorters.get(key)!\n\n      return {\n        name: column.name,\n        key: column.key,\n        meta: column.meta!,\n        type: sorter.type!,\n        order: sorter.order,\n      }\n    })\n\n  computeRenderRows(true)\n  emitEvent(\n    props.onRowSort,\n    profiles,\n    getters.sortedData.map(row => row.data),\n  )\n}\n\nlet dragState: {\n  draggingRow: TableRowState,\n  tableRect: DOMRect,\n  willDropRow: TableRowState | null,\n  dropType: DropType,\n  dropped: boolean\n} | null\n\nfunction handleRowDragStart(rowInstance: TableRowInstance, event: DragEvent) {\n  dragState = {\n    draggingRow: rowInstance.row,\n    tableRect: wrapper.value!.getBoundingClientRect(),\n    willDropRow: null,\n    dropType: DropType.BEFORE,\n    dropped: false,\n  }\n\n  setDragging(true)\n  emitEvent(props.onRowDragStart, rowInstance.row.data, event)\n}\n\nfunction handleRowDragOver(rowInstance: TableRowInstance, event: DragEvent) {\n  if (!dragState || !rowInstance.el) return\n\n  const dropRowRect = rowInstance.el.getBoundingClientRect()\n  const tableRect = dragState.tableRect\n  const prevPercent = state.disabledTree ? 0.5 : 0.25\n  const nextPercent = state.disabledTree ? 0.5 : 0.75\n  const distance = event.clientY - dropRowRect.top\n  const dropRowHeight = dropRowRect.height\n\n  let dropType: DropType\n  let indicatorTop = -9999\n  let isIndicatorShow = true\n\n  if (distance < dropRowHeight * prevPercent) {\n    dropType = DropType.BEFORE\n    indicatorTop = dropRowRect.top - tableRect.top\n  } else if (distance >= dropRowHeight * nextPercent) {\n    dropType = DropType.AFTER\n    indicatorTop = dropRowRect.bottom - tableRect.top\n  } else {\n    dropType = DropType.INNER\n    isIndicatorShow = false\n  }\n\n  if (indicator.value) {\n    indicator.value.style.top = `${indicatorTop - 2}px`\n  }\n\n  dragState.willDropRow = rowInstance.row\n  dragState.dropType = dropType\n\n  indicatorShow.value = isIndicatorShow\n  indicatorType.value = dropType\n\n  emitEvent(props.onRowDragOver, rowInstance.row.data, event)\n}\n\nfunction isLeftInsideRight(left: TableRowState, right: TableRowState) {\n  if (!left || !right) return true\n\n  while (left) {\n    if (left === right || left.key === right.key) {\n      return true\n    }\n\n    left = getParentRow(left.key)!\n  }\n\n  return false\n}\n\nfunction handleRowDrop(rowInstance: TableRowInstance, event: DragEvent) {\n  if (!dragState) return\n\n  const { draggingRow, willDropRow, dropType } = dragState\n\n  if (!willDropRow || isLeftInsideRight(willDropRow, draggingRow)) return\n\n  let currentKey: Key\n  let parent: TableRowState | null\n\n  if (draggingRow) {\n    parent = getParentRow(draggingRow.key)\n\n    if (!parent) {\n      parent = {\n        children: state.treeRowData,\n      } as TableRowState\n    }\n\n    currentKey = draggingRow.key\n    removeArrayItem(parent.children, item => item.key === currentKey)\n\n    if (!parent.children?.length) {\n      parent.treeExpanded = false\n    }\n  }\n\n  if (dropType === DropType.INNER) {\n    if (!Array.isArray(willDropRow.children)) {\n      willDropRow.children = []\n    }\n\n    const children = Array.from(willDropRow.children)\n\n    children.push(draggingRow)\n\n    willDropRow.children = children\n    willDropRow.treeExpanded = true\n    draggingRow.parent = willDropRow.key\n  } else {\n    currentKey = willDropRow.key\n    parent = getParentRow(willDropRow.key)\n\n    if (!parent) {\n      parent = {\n        children: state.treeRowData,\n      } as TableRowState\n    }\n\n    const index = parent.children.findIndex(row => row.key === currentKey)\n\n    if (~index) {\n      parent.children.splice(+(dropType === DropType.AFTER) + index, 0, draggingRow)\n\n      draggingRow.parent = parent.key\n    }\n  }\n\n  dragState.dropped = true\n\n  refreshRowDepth()\n  flatTreeRows()\n  refreshRowIndex()\n  emitEvent(props.onRowDrop, rowInstance.row.data, dropType!, event)\n}\n\nfunction handleRowDragEnd(event: DragEvent) {\n  if (!dragState) return\n\n  const { draggingRow, dropped } = dragState\n\n  dragState = null\n  indicatorShow.value = false\n\n  nextTick(() => {\n    const allDataPayload = dropped ? getCurrentData() : state.data\n\n    setDragging(false)\n    dropped && emit('update:data', allDataPayload)\n    emitEvent(props.onRowDragEnd, draggingRow.data, allDataPayload, event)\n  })\n}\n\nfunction emitRowEvent(type: MouseEventType, payload: TableRowPayload) {\n  emitEvent(props[`onRow${type}`], payload)\n}\n\nfunction emitCellEvent(type: MouseEventType, payload: TableCellPayload) {\n  emitEvent(props[`onCell${type}`], payload)\n}\n\nfunction emitHeadEvent(type: MouseEventType, payload: TableHeadPayload) {\n  emitEvent(props[`onHead${type}`], payload)\n}\n\nfunction emitColResize(type: MoveEventType, payload: TableColResizePayload) {\n  emitEvent(props[`onColResize${type}`], payload)\n}\n\nfunction emitFootEvent(type: MouseEventType, payload: TableFootPayload) {\n  emitEvent(props[`onFoot${type}`], payload)\n}\n\nfunction computeRenderRows(force = false) {\n  const { totalHeight, bodyYScroll, heightBITree } = state\n  const { processedData } = getters\n  const rowCount = processedData.length\n\n  if (!props.virtual) {\n    setRenderRows(0, rowCount, force)\n\n    return\n  }\n\n  const viewHeight = Math.max(\n    Math.min(bodyHeight.value || 0, bodyScrollHeight.value || 0),\n    bodyMinHeight.value,\n  )\n\n  if (!viewHeight) {\n    setRenderRows(0, 0, force)\n  }\n\n  let viewStart = bodyYScroll\n  let viewEnd = bodyYScroll + viewHeight\n\n  if (viewEnd > totalHeight) {\n    viewEnd = totalHeight\n    viewStart = viewEnd - viewHeight\n  }\n\n  const start = heightBITree.boundIndex(viewStart)\n  const end = heightBITree.boundIndex(viewEnd)\n  const renderStart = Math.max(start - props.bufferCount, 0)\n  const renderEnd = Math.min(end + props.bufferCount + 1, rowCount)\n\n  setRenderRows(renderStart, renderEnd, force)\n}\n\nfunction refresh() {\n  return runInLocked(() => {\n    nextTick(computeTableWidth)\n    setTimeout(() => {\n      computeBodyHeight()\n      refreshPercentScroll()\n      nextFrameOnce(computeRenderRows)\n    }, 0)\n  })\n}\n\nasync function runInLocked(handler = noop, delay = 250) {\n  clearTimeout(timer.locked)\n\n  setLocked(true)\n  await handler()\n\n  return new Promise<void>(resolve => {\n    timer.locked = setTimeout(() => {\n      setLocked(false)\n      resolve()\n    }, delay)\n  })\n}\n\nfunction refreshPercentScroll() {\n  clearTimeout(timer.scroll)\n\n  timer.scroll = setTimeout(() => {\n    const { totalHeight, bodyYScroll } = state\n\n    yScrollPercent.value = Math.max(\n      Math.min((bodyYScroll / (totalHeight - (bodyScrollHeight.value ?? 0) || 1)) * 100, 100),\n      0,\n    )\n    syncBarScroll()\n    nextTick(() => {\n      computeBodyHeight()\n    })\n    runInLocked()\n    nextFrameOnce(computeRenderRows)\n  }, 10)\n}\n\nfunction getSelected() {\n  const data = state.rowData\n  const selectedData = []\n\n  for (let i = 0, len = data.length; i < len; ++i) {\n    const row = data[i]\n\n    if (row.checked) {\n      selectedData.push(row.data)\n    }\n  }\n\n  return selectedData\n}\n\nfunction setRowChecked(keyOrData: Key | Record<any, any>, checked?: boolean) {\n  const row = queryRow(keyOrData)\n\n  if (!row || getters.disableCheckRows.has(row.key)) return\n\n  handleCheck(row.key, checked ?? !row.checked)\n}\n\nfunction setRowTreeExpanded(keyOrData: Key | Record<any, any>, expanded?: boolean) {\n  const row = queryRow(keyOrData)\n\n  if (!row) return\n\n  runInLocked()\n  setTreeExpanded(row.key, expanded ?? !row.treeExpanded)\n}\n\nfunction renderTableSlot({ name }: { name: string }) {\n  return renderSlot(slots as Slots, name)\n}\n</script>\n\n<template>\n  <div\n    ref=\"wrapper\"\n    :class=\"className\"\n    role=\"table\"\n    :style=\"style\"\n    :aria-rowcount=\"props.data.length\"\n  >\n    <div v-show=\"false\" role=\"none\" aria-hidden>\n      <slot></slot>\n      <template\n        v-for=\"(column, index) in props.columns\"\n        :key=\"(column as TableColumnOptions).key ?? `__inner-column-${index}`\"\n      >\n        <TableColumnGroup v-if=\"'children' in column\" v-bind=\"column\"></TableColumnGroup>\n        <TableColumn v-else v-bind=\"column\" :id-key=\"column.key\"></TableColumn>\n      </template>\n      <TableSummary\n        v-for=\"({ key, ...others }, index) in props.summaries\"\n        v-bind=\"others\"\n        :key=\"`__inner-summary-${index}`\"\n        :id-key=\"key\"\n      ></TableSummary>\n    </div>\n    <div ref=\"thead\" :class=\"nh.be('head-wrapper')\">\n      <NativeScroll\n        ref=\"xHeadScroll\"\n        inherit\n        mode=\"horizontal\"\n        scroll-only\n        :class=\"[nh.be('wrapper'), props.scrollClass.horizontal]\"\n        :scroll-x=\"state.bodyXScroll\"\n        @scroll=\"handleXScroll\"\n      >\n        <div\n          v-if=\"state.leftFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'left')]: true,\n            [nh.bem('fixed', 'active')]: leftFixedActive\n          }\"\n        >\n          <TableHead fixed=\"left\"></TableHead>\n        </div>\n        <TableHead></TableHead>\n        <div\n          v-if=\"state.rightFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'right')]: true,\n            [nh.bem('fixed', 'active')]: rightFixedActive\n          }\"\n        >\n          <TableHead fixed=\"right\"></TableHead>\n        </div>\n      </NativeScroll>\n    </div>\n    <div\n      v-if=\"state.aboveSummaries.length\"\n      ref=\"aboveTfoot\"\n      :class=\"[nh.be('foot-wrapper'), nh.bem('foot-wrapper', 'above')]\"\n    >\n      <NativeScroll\n        ref=\"xAboveScroll\"\n        inherit\n        mode=\"horizontal\"\n        scroll-only\n        :class=\"[nh.be('wrapper'), props.scrollClass.horizontal]\"\n        :scroll-x=\"state.bodyXScroll\"\n        @scroll=\"handleXScroll\"\n      >\n        <div\n          v-if=\"state.leftFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'left')]: true,\n            [nh.bem('fixed', 'active')]: leftFixedActive\n          }\"\n        >\n          <TableFoot fixed=\"left\" above></TableFoot>\n        </div>\n        <TableFoot above></TableFoot>\n        <div\n          v-if=\"state.rightFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'right')]: true,\n            [nh.bem('fixed', 'active')]: rightFixedActive\n          }\"\n        >\n          <TableFoot fixed=\"right\" above></TableFoot>\n        </div>\n      </NativeScroll>\n    </div>\n    <div\n      :class=\"[\n        nh.be('body-wrapper'),\n        state.totalHeight >= bodyMinHeight && nh.bem('body-wrapper', 'scrolled')\n      ]\"\n      :style=\"{\n        ...(!bodyScrollHeight && state.totalHeight\n          ? {\n            height: `${state.totalHeight}px`,\n            transition:\n              props.noTransition || state.locked\n                ? undefined\n                : `height ${nh.gnv('transition-base')}`\n          }\n          : undefined),\n        minHeight: `${bodyMinHeight}px`\n      }\"\n    >\n      <NativeScroll\n        ref=\"mainScroll\"\n        inherit\n        mode=\"both\"\n        scroll-only\n        observe-deep\n        :class=\"[nh.be('wrapper'), props.scrollClass.major]\"\n        :bar-class=\"nh.bem('bar', 'horizontal')\"\n        :height=\"bodyScrollHeight\"\n        :scroll-x=\"state.bodyXScroll\"\n        :scroll-y=\"state.bodyYScroll\"\n        @scroll=\"handleMainScroll\"\n        @x-enabled-change=\"xScrollEnabled = $event\"\n        @y-enabled-change=\"yScrollEnabled = $event\"\n        @resize=\"handleResize\"\n      >\n        <div\n          v-if=\"state.leftFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'left')]: true,\n            [nh.bem('fixed', 'active')]: leftFixedActive\n          }\"\n          :style=\"{ minHeight: `${state.totalHeight}px` }\"\n        >\n          <TableBody fixed=\"left\">\n            <template v-if=\"slots.empty || props.slots.empty\" #empty=\"{ isFixed }\">\n              <slot name=\"empty\" :is-fixed=\"isFixed\">\n                <Renderer :renderer=\"props.slots.empty\" :data=\"{ isFixed }\"></Renderer>\n              </slot>\n            </template>\n          </TableBody>\n        </div>\n        <TableBody>\n          <template v-if=\"slots.empty || props.slots.empty\" #empty=\"{ isFixed }\">\n            <slot name=\"empty\" :is-fixed=\"isFixed\">\n              <Renderer :renderer=\"props.slots.empty\" :data=\"{ isFixed }\"></Renderer>\n            </slot>\n          </template>\n        </TableBody>\n        <div\n          v-if=\"state.rightFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'right')]: true,\n            [nh.bem('fixed', 'active')]: rightFixedActive\n          }\"\n          :style=\"{ minHeight: `${state.totalHeight}px` }\"\n        >\n          <TableBody fixed=\"right\">\n            <template v-if=\"slots.empty || props.slots.empty\" #empty=\"{ isFixed }\">\n              <slot name=\"empty\" :is-fixed=\"isFixed\">\n                <Renderer :renderer=\"props.slots.empty\" :data=\"{ isFixed }\"></Renderer>\n              </slot>\n            </template>\n          </TableBody>\n        </div>\n      </NativeScroll>\n    </div>\n    <div\n      v-if=\"state.belowSummaries.length\"\n      ref=\"belowTfoot\"\n      :class=\"[nh.be('foot-wrapper'), nh.bem('foot-wrapper', 'below')]\"\n    >\n      <NativeScroll\n        ref=\"xBelowScroll\"\n        inherit\n        mode=\"horizontal\"\n        scroll-only\n        :class=\"[nh.be('wrapper'), props.scrollClass.horizontal]\"\n        :bar-class=\"nh.bem('bar', 'horizontal')\"\n        :bar-fade=\"props.barFade\"\n        :scroll-x=\"state.bodyXScroll\"\n        @scroll=\"handleXScroll\"\n      >\n        <div\n          v-if=\"state.leftFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'left')]: true,\n            [nh.bem('fixed', 'active')]: leftFixedActive\n          }\"\n        >\n          <TableFoot fixed=\"left\"></TableFoot>\n        </div>\n        <TableFoot></TableFoot>\n        <div\n          v-if=\"state.rightFixedColumns.length\"\n          :class=\"{\n            [nh.bem('fixed', 'right')]: true,\n            [nh.bem('fixed', 'active')]: rightFixedActive\n          }\"\n        >\n          <TableFoot fixed=\"right\"></TableFoot>\n        </div>\n      </NativeScroll>\n    </div>\n    <Scrollbar\n      v-if=\"props.useXBar && useXScroll\"\n      ref=\"xScrollbar\"\n      inherit\n      placement=\"bottom\"\n      :class=\"nh.bem('bar', 'horizontal')\"\n      :fade=\"props.barFade\"\n      :disabled=\"!xScrollEnabled\"\n      :bar-length=\"xBarLength\"\n      :style=\"{ bottom: `${footHeight}px` }\"\n      @scroll-start=\"setBarScrolling(true)\"\n      @scroll=\"handleXBarScroll\"\n      @scroll-end=\"setBarScrolling(false)\"\n    ></Scrollbar>\n    <Scrollbar\n      v-if=\"props.useYBar && bodyScrollHeight\"\n      ref=\"yScrollbar\"\n      inherit\n      placement=\"right\"\n      :class=\"nh.bem('bar', 'vertical')\"\n      :fade=\"props.barFade\"\n      :disabled=\"!yScrollEnabled\"\n      :bar-length=\"yBarLength\"\n      :style=\"{ top: `${headHeight}px`, bottom: `${footHeight}px` }\"\n      @scroll-start=\"setBarScrolling(true)\"\n      @scroll=\"handleYBarScroll\"\n      @scroll-end=\"setBarScrolling(false)\"\n    ></Scrollbar>\n    <div\n      v-if=\"props.rowDraggable || hasDragColumn\"\n      v-show=\"indicatorShow\"\n      ref=\"indicator\"\n      :class=\"[\n        nh.be('indicator'),\n        indicatorType === 'before' && nh.bem('indicator', 'before'),\n        indicatorType === 'after' && nh.bem('indicator', 'after')\n      ]\"\n    ></div>\n    <div\n      v-if=\"state.colResizable === 'lazy'\"\n      v-show=\"state.colResizing\"\n      :class=\"nh.be('resize-indicator')\"\n      :style=\"{ left: `${state.resizeLeft}px` }\"\n    ></div>\n  </div>\n</template>\n"],"names":["defaultKeyConfig","_props","__props","props","useProps","value","emit","__emit","slots","_useSlots","nh","useNameHelper","timer","useSetTimeout","bodyHeight","ref","bodyMinHeight","xScrollEnabled","yScrollEnabled","xScrollPercent","yScrollPercent","headHeight","footHeight","indicatorShow","indicatorType","DropType","tempColumns","reactive","tempSummaries","tableWidth","hasDragColumn","bodyWidth","wrapper","mainScroll","xHeadScroll","xAboveScroll","xBelowScroll","thead","aboveTfoot","belowTfoot","indicator","xScrollbar","yScrollbar","isMounted","locale","useLocale","toRef","keyConfig","computed","allColumns","allSummaries","syncToStoreProps","store","useStore","prev","current","provide","TABLE_STORE","TABLE_ACTIONS","increaseColumn","decreaseColumn","increaseSummary","decreaseSummary","getTableElement","refreshXScroll","emitRowCheck","emitAllRowCheck","emitRowExpand","emitRowTreeExpand","emitRowFilter","emitRowSort","handleRowDragStart","handleRowDragOver","handleRowDrop","handleRowDragEnd","emitRowEvent","emitCellEvent","emitHeadEvent","emitColResize","emitFootEvent","name","renderTableSlot","runInLocked","debounceMinor","updateColumns","setColumnProp","updateSummaries","setSummaryProp","TABLE_SLOTS","state","getters","mutations","mergedLocked","className","style","width","padLeft","padRight","isDefined","isValidNumber","useXScroll","bodyScrollHeight","totalHeight","xBarLength","_a","yBarLength","totalWidths","getLast","leftFixedActive","rightFixedActive","setColumns","setSummaries","setData","setDataKey","setTableWidth","setBodyYScroll","setBodyXScroll","setRenderRows","setVirtual","setLocale","setDragging","setKeyConfig","setDisabledTree","setLocked","setBarScrolling","clearSort","clearFilter","refreshRowIndex","clearCheckAll","getParentRow","getCurrentData","flatTreeRows","refreshRowDepth","queryRow","handleCheck","setTreeExpanded","watch","forceRefreshData","computeTableWidth","nextTick","computeBodyHeight","refreshPercentScroll","config","refresh","prop","watchCallback","syncBarScroll","_b","handlerResize","debounce","onMounted","onBeforeUnmount","__expose","getSelected","setRowChecked","setRowTreeExpanded","data","computeRenderRows","toNumber","height","minHeight","borderWidth","fixedHeight","handleMainScroll","payload","handleXScroll","handleYScroll","clientX","percentX","emitEvent","clientY","percentY","emitYScroll","handleXBarScroll","percent","client","handleYBarScroll","nextFrameOnce","handleResize","column","summary","key","_c","_d","checked","partial","columns","filters","columnMap","listToMap","profiles","row","sorters","sorter","dragState","rowInstance","event","dropRowRect","tableRect","prevPercent","nextPercent","distance","dropRowHeight","dropType","indicatorTop","isIndicatorShow","isLeftInsideRight","left","right","draggingRow","willDropRow","currentKey","parent","removeArrayItem","item","children","index","dropped","allDataPayload","type","force","bodyYScroll","heightBITree","processedData","rowCount","viewHeight","viewStart","viewEnd","start","end","renderStart","renderEnd","handler","noop","delay","resolve","selectedData","i","len","keyOrData","expanded","renderSlot","_createElementBlock","_unref","_withDirectives","_createElementVNode","_hoisted_2","_renderSlot","_ctx","_openBlock","_Fragment","_createBlock","_mergeProps","_renderList","others","TableSummary","_normalizeClass","_createVNode","NativeScroll","TableHead","TableFoot","_normalizeStyle","_cache","$event","TableBody","_createSlots","_withCtx","isFixed","Renderer","Scrollbar","_vShow"],"mappings":"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"}