{"version":3,"file":"table-v2.mjs","sources":["../../../../../../packages/components/table-v2/src/table-v2.tsx"],"sourcesContent":["// @ts-nocheck\nimport { defineComponent, provide, unref } from 'vue'\nimport { useNamespace } from '@hongluan-ui/hooks'\nimport { useTable } from './use-table'\nimport { TableV2InjectionKey } from './tokens'\nimport { tableV2Props } from './table'\n// renderers\nimport MainTable from './renderers/main-table'\nimport LeftTable from './renderers/left-table'\nimport RightTable from './renderers/right-table'\nimport Row from './renderers/row'\nimport Cell from './renderers/cell'\nimport Header from './renderers/header'\nimport HeaderCell from './renderers/header-cell'\nimport Footer from './renderers/footer'\nimport Empty from './renderers/empty'\nimport Overlay from './renderers/overlay'\n\nimport type { TableGridRowSlotParams } from './table-grid'\nimport type { ScrollStrategy } from './composables/use-scrollbar'\nimport type {\n  TableV2HeaderRendererParams,\n  TableV2HeaderRowCellRendererParams,\n  TableV2RowCellRenderParam,\n} from './components'\n\nconst COMPONENT_NAME = 'TableV2'\n\nconst TableV2 = defineComponent({\n  name: COMPONENT_NAME,\n  props: tableV2Props,\n  setup(props, { slots, expose }) {\n    const { namespace } = useNamespace('table-v2')\n\n    const {\n      columnsStyles,\n      fixedColumnsOnLeft,\n      fixedColumnsOnRight,\n      mainColumns,\n      mainTableHeight,\n      fixedTableHeight,\n      leftTableWidth,\n      rightTableWidth,\n      data,\n      depthMap,\n      expandedRowKeys,\n      hasFixedColumns,\n      mainTableRef,\n      leftTableRef,\n      rightTableRef,\n      isDynamic,\n      isResetting,\n      isScrolling,\n\n      bodyWidth,\n      emptyStyle,\n      rootStyle,\n      headerWidth,\n      footerHeight,\n\n      showEmpty,\n\n      // exposes\n      scrollTo,\n      scrollToLeft,\n      scrollToTop,\n      scrollToRow,\n\n      getRowHeight,\n      onColumnSorted,\n      onRowHeightChange,\n      onRowHovered,\n      onRowExpanded,\n      onRowsRendered,\n      onScroll,\n      onVerticalScroll,\n    } = useTable(props)\n\n    expose({\n      /**\n       * @description scroll to a given position\n       * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n       */\n      scrollTo,\n      /**\n       * @description scroll to a given position horizontally\n       * @params scrollLeft {Number} where to scroll to.\n       */\n      scrollToLeft,\n      /**\n       * @description scroll to a given position vertically\n       * @params scrollTop { Number } where to scroll to.\n       */\n      scrollToTop,\n      /**\n       * @description scroll to a given row\n       * @params row {Number} which row to scroll to\n       * @params @optional strategy {ScrollStrategy} use what strategy to scroll to\n       */\n      scrollToRow,\n    })\n\n    provide(TableV2InjectionKey, {\n      isResetting,\n      isScrolling,\n    })\n\n    return () => {\n      const {\n        cache,\n        cellProps,\n        estimatedRowHeight,\n        expandColumnKey,\n        fixedData,\n        headerHeight,\n        headerClass,\n        headerProps,\n        headerCellProps,\n        sortBy,\n        sortState,\n        rowHeight,\n        rowClass,\n        rowEventHandlers,\n        rowKey,\n        rowProps,\n        scrollbarAlwaysOn,\n        indentSize,\n        iconSize,\n        useIsScrolling,\n        vScrollbarSize,\n        width,\n      } = props\n\n      const _data = unref(data)\n\n      const mainTableProps = {\n        cache,\n        class: 'table-v2-main',\n        columns: unref(mainColumns),\n        data: _data,\n        fixedData,\n        estimatedRowHeight,\n        bodyWidth: unref(bodyWidth) + vScrollbarSize,\n        headerHeight,\n        headerWidth: unref(headerWidth),\n        height: unref(mainTableHeight),\n        mainTableRef,\n        rowKey,\n        rowHeight,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        useIsScrolling,\n        width,\n        getRowHeight,\n        onRowsRendered,\n        onScroll,\n      }\n\n      const leftColumnsWidth = unref(leftTableWidth)\n      const _fixedTableHeight = unref(fixedTableHeight)\n\n      const leftTableProps = {\n        cache,\n        class: 'table-v2-left',\n        columns: unref(fixedColumnsOnLeft),\n        data: _data,\n        estimatedRowHeight,\n        leftTableRef,\n        rowHeight,\n        bodyWidth: leftColumnsWidth,\n        headerWidth: leftColumnsWidth,\n        headerHeight,\n        height: _fixedTableHeight,\n        rowKey,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        useIsScrolling,\n        width: leftColumnsWidth,\n        getRowHeight,\n        onScroll: onVerticalScroll,\n      }\n\n      const rightColumnsWidth = unref(rightTableWidth)\n      const rightColumnsWidthWithScrollbar = rightColumnsWidth + vScrollbarSize\n\n      const rightTableProps = {\n        cache,\n        class: 'table-v2-right',\n        columns: unref(fixedColumnsOnRight),\n        data: _data,\n        estimatedRowHeight,\n        rightTableRef,\n        rowHeight,\n        bodyWidth: rightColumnsWidthWithScrollbar,\n        headerWidth: rightColumnsWidthWithScrollbar,\n        headerHeight,\n        height: _fixedTableHeight,\n        rowKey,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        width: rightColumnsWidthWithScrollbar,\n        style: `--table-scrollbar-size: ${vScrollbarSize}px`,\n        useIsScrolling,\n        getRowHeight,\n        onScroll: onVerticalScroll,\n      }\n      const _columnsStyles = unref(columnsStyles)\n\n      const tableRowProps = {\n        depthMap: unref(depthMap),\n        columnsStyles: _columnsStyles,\n        expandColumnKey,\n        expandedRowKeys: unref(expandedRowKeys),\n        estimatedRowHeight,\n        hasFixedColumns: unref(hasFixedColumns),\n        rowProps,\n        rowClass,\n        rowKey,\n        rowEventHandlers,\n        onRowHovered,\n        onRowExpanded,\n        onRowHeightChange,\n      }\n\n      const tableCellProps = {\n        cellProps,\n        expandColumnKey,\n        indentSize,\n        iconSize,\n        rowKey,\n        expandedRowKeys: unref(expandedRowKeys),\n      }\n\n      const tableHeaderProps = {\n        headerClass,\n        headerProps,\n        columnsStyles: _columnsStyles,\n      }\n\n      const tableHeaderCellProps = {\n\n        sortBy,\n        sortState,\n        headerCellProps,\n        onColumnSorted,\n      }\n\n      const tableSlots = {\n        row: (props: TableGridRowSlotParams) => (\n          <Row {...props} {...tableRowProps}>\n            {{\n              row: slots.row,\n              cell: (props: TableV2RowCellRenderParam) =>\n                slots.cell ? (\n                  <Cell\n                    {...props}\n                    {...tableCellProps}\n                    style={_columnsStyles[props.column.key]}\n                  >\n                    {slots.cell(props)}\n                  </Cell>\n                ) : (\n                  <Cell\n                    {...props}\n                    {...tableCellProps}\n                    style={_columnsStyles[props.column.key]}\n                  />\n                ),\n            }}\n          </Row>\n        ),\n        header: (props: TableV2HeaderRendererParams) => (\n          <Header {...props} {...tableHeaderProps}>\n            {{\n              header: slots.header,\n              cell: (props: TableV2HeaderRowCellRendererParams) =>\n                slots['header-cell'] ? (\n                  <HeaderCell\n                    {...props}\n                    {...tableHeaderCellProps}\n                    style={_columnsStyles[props.column.key]}\n                  >\n                    {slots['header-cell'](props)}\n                  </HeaderCell>\n                ) : (\n                  <HeaderCell\n                    {...props}\n                    {...tableHeaderCellProps}\n                    style={_columnsStyles[props.column.key]}\n                  />\n                ),\n            }}\n          </Header>\n        ),\n      }\n\n      const rootKls = [\n        props.class,\n        namespace.value,\n        'table-v2-root',\n        {\n          'is-dynamic': unref(isDynamic),\n        },\n      ]\n\n      const footerProps = {\n        class: 'table-v2-footer',\n        style: unref(footerHeight),\n      }\n\n      return (\n        <div class={rootKls} style={unref(rootStyle)}>\n          <MainTable {...mainTableProps}>{tableSlots}</MainTable>\n          <LeftTable {...leftTableProps}>{tableSlots}</LeftTable>\n          <RightTable {...rightTableProps}>{tableSlots}</RightTable>\n          {slots.footer && (\n            <Footer {...footerProps}>{{ default: slots.footer }}</Footer>\n          )}\n          {unref(showEmpty) && (\n            <Empty class={'table-v2-empty'} style={unref(emptyStyle)}>\n              {{ default: slots.empty }}\n            </Empty>\n          )}\n          {slots.overlay && (\n            <Overlay class={'table-v2-overlay'}>\n              {{ default: slots.overlay }}\n            </Overlay>\n          )}\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableV2\n\nexport type TableV2Instance = InstanceType<typeof TableV2> & {\n  /**\n   * @description scroll to a given position\n   * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n   */\n  scrollTo: (param: { scrollLeft?: number; scrollTop?: number; }) => void\n  /**\n   * @description scroll to a given position horizontally\n   * @params scrollLeft {Number} where to scroll to.\n   */\n  scrollToLeft: (scrollLeft: number) => void\n  /**\n   * @description scroll to a given position vertically\n   * @params scrollTop { Number } where to scroll to.\n   */\n  scrollToTop: (scrollTop: number) => void\n  /**\n   * @description scroll to a given row\n   * @params row {Number} which row to scroll to\n   * @params strategy {ScrollStrategy} use what strategy to scroll to\n   */\n  scrollToRow(row: number, strategy?: ScrollStrategy): void\n}\n"],"names":["name","props","setup","slots","expose","namespace","columnsStyles","fixedColumnsOnLeft","fixedColumnsOnRight","mainColumns","mainTableHeight","fixedTableHeight","leftTableWidth","rightTableWidth","data","depthMap","expandedRowKeys","hasFixedColumns","mainTableRef","leftTableRef","rightTableRef","isDynamic","isResetting","isScrolling","bodyWidth","emptyStyle","rootStyle","headerWidth","footerHeight","showEmpty","scrollTo","scrollToLeft","scrollToTop","scrollToRow","getRowHeight","onColumnSorted","onRowHeightChange","onRowHovered","onRowExpanded","onRowsRendered","onScroll","onVerticalScroll","provide","cache","cellProps","estimatedRowHeight","expandColumnKey","fixedData","headerHeight","headerClass","headerProps","headerCellProps","sortBy","sortState","rowHeight","rowClass","rowEventHandlers","rowKey","rowProps","scrollbarAlwaysOn","indentSize","iconSize","useIsScrolling","vScrollbarSize","width","class","columns","height","scrollbarStartGap","scrollbarEndGap","_data","style","row","cell","_columnsStyles","header"],"mappings":"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"}