{"version":3,"file":"symbol.mjs","sources":["../../../components/table/symbol.ts"],"sourcesContent":["import type { InjectionKey, Slots } from 'vue'\nimport type { ClassType, ComponentSize, LocaleConfig, StyleType } from '@vexip-ui/config'\nimport type { BITree } from '@vexip-ui/utils'\nimport type { TooltipTheme } from '@/components/tooltip'\nimport type { TableStore } from './store'\n\nexport type Key = string | number | symbol\nexport type Data = any\n\nexport type MouseEventType = 'Enter' | 'Leave' | 'Click' | 'Dblclick' | 'Contextmenu'\nexport type MoveEventType = 'Start' | 'Move' | 'End'\n\nexport type TableIconName = 'filter' | 'asc' | 'desc' | 'dragger' | 'expand' | 'plus' | 'minus'\nexport type TableRowPropFn<P = any> = (data: Data, index: number) => P\nexport type TableRowDropType = 'before' | 'after' | 'inner'\nexport type TableTextAlign = 'left' | 'center' | 'right'\nexport type TableColumnType = 'order' | 'selection' | 'expand' | 'drag'\nexport type TableColResizeType = 'lazy' | 'responsive'\n\nexport type TableIcons = Partial<Record<TableIconName, Record<string, any> | (() => any)>>\n\nexport const enum DropType {\n  BEFORE = 'before',\n  INNER = 'inner',\n  AFTER = 'after'\n}\n\nexport interface CellSpanResult {\n  colSpan?: number,\n  rowSpan?: number\n}\n\nexport interface TableKeyConfig {\n  id?: string,\n  children?: string,\n  checked?: string,\n  height?: string,\n  expanded?: string,\n  treeExpanded?: string\n}\n\nexport interface TableSlots {\n  /**\n   * @internal\n   */\n  default?: () => any,\n  empty?: (params: { isFixed: boolean }) => any\n}\n\nexport type Accessor<D = Data, Val extends string | number = string | number> = (\n  data: D,\n  index: number\n) => Val\nexport type ExpandRenderFn<D = Data> = (data: {\n  /** @deprecated */\n  leftFixed: number,\n  /** @deprecated */\n  rightFixed: number,\n  row: D,\n  rowIndex: number\n}) => any\nexport type ColumnCellSpanFn<D = Data> = (data: {\n  row: D,\n  index: number,\n  fixed?: 'left' | 'right'\n}) => CellSpanResult | void\nexport type SummaryCellSpanFn<D = Data, Val extends string | number = string | number> = (data: {\n  column: TableColumnOptions<D, Val>,\n  index: number,\n  fixed?: 'left' | 'right'\n}) => CellSpanResult | void\n\nexport type TableFilterOptions<D = Data, Val extends string | number = string | number> =\n  | {\n    able?: boolean,\n    custom?: false,\n    options?: (string | { value: Val, label?: string, active?: boolean })[],\n    multiple?: false,\n    active?: null | Val,\n    method?: null | ((active: Val, data: D) => boolean),\n    meta?: any\n  }\n  | {\n    able?: boolean,\n    custom?: false,\n    options?: (string | { value: Val, label?: string, active?: boolean })[],\n    multiple: true,\n    active?: null | Val[],\n    method?: null | ((active: Val[], data: D) => boolean),\n    meta?: any\n  }\n  | {\n    able?: boolean,\n    custom: true,\n    options?: never,\n    multiple?: false,\n    active?: null | Val | Val[],\n    method?: null | ((active: any, data: D) => boolean),\n    meta?: any\n  }\n\nexport interface ParsedFilterOptions extends Omit<Required<TableFilterOptions>, 'options'> {\n  options: { value: string | number, label: string, active: boolean }[]\n}\n\nexport interface TableSorterOptions<D = Data> {\n  able?: boolean,\n  type?: null | 'asc' | 'desc',\n  order?: number, // 优先级\n  method?: null | ((prev: D, next: D) => number)\n}\n\nexport type ParsedTableSorterOptions = Required<TableSorterOptions>\n\nexport interface TableSummaryData {\n  sum: number,\n  min: number,\n  max: number\n}\n\nexport type SummaryRenderFn<D = Data, Val extends string | number = string | number> = (data: {\n  column: TableColumnOptions<D, Val>,\n  index: number,\n  rows: D[],\n  meta: TableSummaryData\n}) => any\n\nexport type ColumnSummaryRenderFn<\n  D = Data,\n  Val extends string | number = string | number\n> = (data: {\n  column: TableColumnOptions<D, Val>,\n  index: number,\n  rows: D[],\n  meta: TableSummaryData,\n  summary: TableSummaryOptions<D, Val>\n}) => any\n\nexport interface TableBaseColumn<D = Data, Val extends string | number = string | number> {\n  key: keyof D,\n  name?: string,\n  type?: never,\n  meta?: any,\n  fixed?: boolean | 'left' | 'right',\n  class?: ClassType,\n  style?: StyleType,\n  attrs?: Record<string, any>,\n  width?: number,\n  filter?: TableFilterOptions<D, Val>,\n  sorter?: boolean | TableSorterOptions<D>,\n  order?: number,\n  ellipsis?: boolean | null,\n  textAlign?: TableTextAlign,\n  headSpan?: number,\n  noSummary?: boolean,\n  indented?: boolean,\n  accessor?: Accessor<D, Val>,\n  formatter?: (value: Val) => unknown,\n  cellSpan?: ColumnCellSpanFn<D>,\n  renderer?: ColumnRenderFn<D, Val>,\n  headRenderer?: HeadRenderFn,\n  filterRenderer?: FilterRenderFn,\n  summaryRenderer?: ColumnSummaryRenderFn<D, Val>\n}\n\nexport interface TableOrderColumn<D = Data, Val extends string | number = string | number>\n  extends Omit<TableBaseColumn<D, Val>, 'key' | 'type' | 'renderer'> {\n  key?: keyof D,\n  type: 'order',\n  truthIndex?: boolean,\n  orderLabel?: (index: number) => string | number\n}\n\nexport interface TableSelectionColumn<D = Data, Val extends string | number = string | number>\n  extends Omit<TableBaseColumn<D, Val>, 'key' | 'type' | 'renderer' | 'headRenderer'> {\n  key?: keyof D,\n  type: 'selection',\n  /**\n   * @deprecated Use `selectionSize` instead.\n   */\n  checkboxSize?: ComponentSize,\n  selectionSize?: ComponentSize,\n  singleSelect?: boolean,\n  disableRow?: (data: Data) => boolean\n}\n\nexport interface TableExpandColumn<D = Data, Val extends string | number = string | number>\n  extends Omit<TableBaseColumn<D, Val>, 'key' | 'type' | 'renderer'> {\n  key?: keyof D,\n  type: 'expand',\n  disableRow?: (data: Data) => boolean,\n  renderer?: ExpandRenderFn<D>\n}\n\nexport interface TableDragColumn<D = Data, Val extends string | number = string | number>\n  extends Omit<TableBaseColumn<D, Val>, 'key' | 'type' | 'renderer'> {\n  key?: keyof D,\n  type: 'drag',\n  disableRow?: (data: Data) => boolean\n}\n\nexport type TableTypeColumn<D = Data, Val extends string | number = string | number> =\n  | TableOrderColumn<D, Val>\n  | TableSelectionColumn<D, Val>\n  | TableExpandColumn<D, Val>\n  | TableDragColumn<D, Val>\nexport type TableColumnOptions<D = Data, Val extends string | number = string | number> =\n  | TableBaseColumn<D, Val>\n  | TableTypeColumn<D, Val>\n\nexport type ColumnWithKey<\n  D = Data,\n  Val extends string | number = string | number\n> = TableColumnOptions<D, Val> & {\n  key: Key,\n  rowSpan: number,\n  /** @internal */\n  index: number,\n  /** @internal */\n  colIndex: number,\n  /** @internal */\n  first?: boolean,\n  /** @internal */\n  last?: boolean\n}\n\nexport interface TableColumnGroupOptions {\n  name?: string,\n  fixed?: boolean | 'left' | 'right',\n  order?: number,\n  ellipsis?: boolean,\n  textAlign?: TableTextAlign,\n  renderer?: () => any,\n  children: TableColumnOptions<any, any>[]\n}\nexport interface ColumnGroupWithKey extends TableColumnGroupOptions {\n  key: Key,\n  headSpan: number,\n  rowSpan: number,\n  /** @internal */\n  colIndex: number,\n  /** @internal */\n  last?: boolean\n}\n\nexport type ColumnRenderFn<D = Data, Val extends string | number = string | number> = (data: {\n  row: D,\n  rowIndex: number,\n  column: TableBaseColumn<D, Val>,\n  columnIndex: number\n}) => any\nexport type HeadRenderFn<D = Data, Val extends string | number = string | number> = (data: {\n  column: TableColumnOptions<D, Val>,\n  index: number\n}) => any\nexport type FilterRenderFn<D = Data, Val extends string | number = string | number> = (data: {\n  column: TableColumnOptions<D, Val>,\n  index: number,\n  filter: Required<TableFilterOptions<D, Val>>,\n  handleFilter: (active: any) => void\n}) => any\n\nexport type TableCellSpanFn<D = Data, Val extends string | number = string | number> = (data: {\n  row: D,\n  rowIndex: number,\n  column: TableColumnOptions<D, Val>,\n  columnIndex: number,\n  fixed?: 'left' | 'right'\n}) => CellSpanResult | undefined\n\nexport type TableCellPropFn<D = Data, P = any> = (data: {\n  row: D,\n  rowIndex: number,\n  column: ColumnWithKey,\n  columnIndex: number\n}) => P\nexport type TableHeadPropFn<P = any> = (data: {\n  column: ColumnWithKey,\n  index: number,\n  rowIndex: number\n}) => P\nexport type TableFootPropFn<P = any> = (data: {\n  column: ColumnWithKey,\n  columnIndex: number,\n  summary: SummaryWithKey,\n  summaryIndex: number\n}) => P\n\nexport type ColumnProfile<D = Data, Val extends string | number = string | number> = Pick<\n  ColumnWithKey<D, Val>,\n  'name' | 'key' | 'meta'\n>\nexport type TableFilterProfile<\n  D = Data,\n  Val extends string | number = string | number\n> = ColumnProfile<D, Val> & {\n  active: Val | Val[]\n}\nexport type TableSorterProfile<\n  D = Data,\n  Val extends string | number = string | number\n> = ColumnProfile<D, Val> & {\n  type: 'asc' | 'desc',\n  order: number\n}\n\nexport interface TableSummaryOptions<D = Data, Val extends string | number = string | number> {\n  name: string,\n  key: keyof D,\n  class?: ClassType,\n  style?: StyleType,\n  attrs?: Record<string, any>,\n  order?: number,\n  above?: boolean,\n  meta?: Record<any, any>,\n  cellSpan?: SummaryCellSpanFn<D, Val>,\n  renderer?: SummaryRenderFn<D, Val>\n}\n\nexport type SummaryWithKey<\n  D = Data,\n  Val extends string | number = string | number\n> = TableSummaryOptions<D, Val> & { key: Key }\n\n/** @internal */\nexport interface TableRowState {\n  key: Key,\n  index: number,\n  hidden: boolean,\n  hover: boolean,\n  checked: boolean,\n  height: number,\n  // borderHeight: number,\n  expanded: boolean,\n  expandHeight: number,\n  parent?: Key,\n  children: TableRowState[],\n  depth: number,\n  treeExpanded: boolean,\n  partial: boolean,\n  dragging: boolean,\n  listIndex: number,\n  cellHeights: Record<Key, number>,\n  last: boolean,\n  expandAnimate: boolean,\n  data: Data\n}\n\nexport interface StoreOptions {\n  columns: TableColumnRawOptions[],\n  summaries: TableSummaryOptions[],\n  data: Data[],\n  dataKey: string,\n  rowClass: ClassType | TableRowPropFn<ClassType>,\n  rowStyle: StyleType | TableRowPropFn<StyleType>,\n  rowAttrs: Record<string, any> | TableRowPropFn<Record<string, any>>,\n  cellClass: ClassType | TableCellPropFn<ClassType>,\n  cellStyle: StyleType | TableCellPropFn<StyleType>,\n  cellAttrs: Record<string, any> | TableCellPropFn<Record<string, any>>,\n  headClass: ClassType | TableHeadPropFn<ClassType>,\n  headStyle: StyleType | TableHeadPropFn<StyleType>,\n  headAttrs: Record<string, any> | TableHeadPropFn<Record<string, any>>,\n  footClass: ClassType | TableFootPropFn<ClassType>,\n  footStyle: StyleType | TableFootPropFn<StyleType>,\n  footAttrs: Record<string, any> | TableFootPropFn<Record<string, any>>,\n  border: boolean,\n  stripe: boolean,\n  highlight: boolean,\n  currentPage: number,\n  pageSize: number,\n  rowHeight: number,\n  rowMinHeight: number,\n  virtual: boolean,\n  rowDraggable: boolean,\n  locale: LocaleConfig['table'],\n  tooltipTheme: TooltipTheme,\n  tooltipWidth: number | string,\n  singleSorter: boolean,\n  singleFilter: boolean,\n  customSorter: boolean,\n  customFilter: boolean,\n  keyConfig: Required<TableKeyConfig>,\n  disabledTree: boolean,\n  noCascaded: boolean,\n  colResizable: false | TableColResizeType,\n  expandRenderer: ExpandRenderFn | null,\n  cellSpan: TableCellSpanFn | null,\n  sidePadding: number[],\n  borderWidth: number,\n  dataFilter: (data: Data) => boolean,\n  ellipsis: boolean\n}\n\nexport type TableColumnRawOptions = TableColumnOptions<any, any> | TableColumnGroupOptions\nexport type ColumnRawWithKey = ColumnGroupWithKey | ColumnWithKey\n\nexport interface StoreState extends StoreOptions {\n  columns: ColumnWithKey[],\n  normalColumns: ColumnWithKey[],\n  allColumns: ColumnRawWithKey[][],\n  summaries: SummaryWithKey[],\n  rowData: TableRowState[],\n  treeRowData: TableRowState[],\n  width: number,\n  rightFixedColumns: ColumnWithKey[],\n  leftFixedColumns: ColumnWithKey[],\n  aboveSummaries: SummaryWithKey[],\n  belowSummaries: SummaryWithKey[],\n  columnMap: Map<Key, ColumnRawWithKey>,\n  rowMap: Map<Key, TableRowState>,\n  summaryMap: Map<Key, SummaryWithKey>,\n  idMaps: WeakMap<Data, Key>,\n  checkedAll: boolean,\n  partial: boolean,\n  widths: Map<Key, number>,\n  sorters: Map<Key, ParsedTableSorterOptions>,\n  filters: Map<Key, ParsedFilterOptions>,\n  resized: Set<Key>,\n  bodyYScroll: number,\n  bodyXScroll: number,\n  padTop: number,\n  startRow: number,\n  endRow: number,\n  dragging: boolean,\n  heightBITree: BITree,\n  virtualData: TableRowState[],\n  totalHeight: number,\n  colResizing: boolean,\n  resizeLeft: number,\n  cellSpanMap: Map<'left' | 'default' | 'right', Map<string, Required<CellSpanResult>>>,\n  collapseMap: Map<'left' | 'default' | 'right', Map<string, Set<string>>>,\n  locked: boolean,\n  barScrolling: boolean,\n  heightTrigger: number\n}\n\nexport interface TableRowInstance {\n  el?: HTMLElement | null,\n  row: TableRowState\n}\n\nexport interface TableRowPayload {\n  row: Data,\n  key: Key,\n  index: number,\n  event: Event,\n  checked?: boolean,\n  expanded?: boolean\n}\n\nexport interface TableCellPayload {\n  row: Data,\n  key: Key,\n  rowIndex: number,\n  column: TableColumnOptions,\n  columnIndex: number,\n  event: Event\n}\n\nexport interface TableHeadPayload {\n  column: TableColumnOptions,\n  index: number,\n  event: Event\n}\n\nexport interface TableColResizePayload extends TableHeadPayload {\n  width: number\n}\n\nexport interface TableFootPayload {\n  column: TableColumnOptions,\n  columnIndex: number,\n  summary: TableSummaryOptions,\n  summaryIndex: number,\n  event: Event\n}\n\nexport interface TableActions {\n  increaseColumn(column: TableColumnRawOptions): void,\n  decreaseColumn(column: TableColumnRawOptions): void,\n  increaseSummary(column: TableSummaryOptions): void,\n  decreaseSummary(column: TableSummaryOptions): void,\n  getTableElement(): HTMLElement | undefined,\n  refreshXScroll(): void,\n  emitRowCheck(payload: TableRowPayload & { checked: boolean }): void,\n  emitAllRowCheck(checked: boolean, partial: boolean): void,\n  emitRowExpand(payload: TableRowPayload & { expanded: boolean }): void,\n  emitRowTreeExpand(payload: TableRowPayload & { expanded: boolean }): void,\n  emitRowFilter(): void,\n  emitRowSort(): void,\n  handleRowDragStart(rowInstance: TableRowInstance, event: DragEvent): void,\n  handleRowDragOver(rowInstance: TableRowInstance, event: DragEvent): void,\n  handleRowDrop(rowInstance: TableRowInstance, event: DragEvent): void,\n  handleRowDragEnd(event: DragEvent): void,\n  emitRowEvent(type: MouseEventType, payload: TableRowPayload): void,\n  emitCellEvent(type: MouseEventType, payload: TableCellPayload): void,\n  emitHeadEvent(type: MouseEventType, payload: TableHeadPayload): void,\n  emitFootEvent(type: MouseEventType, payload: TableFootPayload): void,\n  emitColResize(type: MoveEventType, payload: TableColResizePayload): void,\n  hasIcon(name: TableIconName): boolean,\n  getIcon(name: TableIconName): TableIcons[TableIconName],\n  renderTableSlot(payload: { name: string }): any,\n  runInLocked(handler?: (...args: any[]) => any, delay?: number): Promise<void>,\n  updateColumns(): void,\n  setColumnProp(key: Key, prop: string, value: any): void,\n  updateSummaries(): void,\n  setSummaryProp(key: Key, prop: string, value: any): void\n}\n\nexport interface ColumnGroupActions {\n  increaseColumn(column: TableColumnRawOptions): void,\n  decreaseColumn(column: TableColumnRawOptions): void\n}\n\nexport const DEFAULT_KEY_FIELD = 'id'\n/**\n * 表格状态管理\n */\nexport const TABLE_STORE = '__VXP_TABLE_STORE' as unknown as InjectionKey<TableStore>\n/**\n * 表格组件的顶层 Api\n */\nexport const TABLE_ACTIONS = '__VXP_TABLE_ACTIONS' as unknown as InjectionKey<TableActions>\nexport const TABLE_SLOTS = '__VXP_TABLE_SLOTS' as unknown as InjectionKey<Slots>\nexport const TABLE_HEAD_PREFIX = '__vxp-table-head-'\nexport const TABLE_FOOT_PREFIX = '__vxp-table-foot-'\n\nexport const COLUMN_GROUP_ACTIONS =\n  '__VXP_TABLE_COLUMN_GROUP_ACTIONS' as unknown as InjectionKey<ColumnGroupActions>\n\nexport const columnTypes: TableColumnType[] = ['order', 'selection', 'expand', 'drag']\n\nexport const noopFormatter = (v: any) => v\n"],"names":["DropType","DEFAULT_KEY_FIELD","TABLE_STORE","TABLE_ACTIONS","TABLE_SLOTS","TABLE_HEAD_PREFIX","TABLE_FOOT_PREFIX","COLUMN_GROUP_ACTIONS","columnTypes","noopFormatter","v"],"mappings":"AAqBkB,IAAAA,sBAAAA,OAChBA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SAHQA,IAAAA,KAAA,CAAA,CAAA;AA6eX,MAAMC,IAAoB,MAIpBC,IAAc,qBAIdC,IAAgB,uBAChBC,IAAc,qBACdC,IAAoB,qBACpBC,IAAoB,qBAEpBC,IACX,oCAEWC,IAAiC,CAAC,SAAS,aAAa,UAAU,MAAM,GAExEC,IAAgB,CAACC,MAAWA;"}