@visactor/vtable 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/cjs/ListTable.js +4 -4
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.d.ts +1 -1
  4. package/cjs/PivotChart.js +2 -1
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.js +2 -2
  7. package/cjs/PivotTable.js.map +1 -1
  8. package/cjs/components/axis/axis.js +12 -7
  9. package/cjs/components/axis/axis.js.map +1 -1
  10. package/cjs/core/BaseTable.d.ts +0 -1
  11. package/cjs/core/BaseTable.js +12 -12
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/dataset/dataset.js +43 -42
  14. package/cjs/dataset/dataset.js.map +1 -1
  15. package/cjs/edit/edit-manager.js +8 -8
  16. package/cjs/edit/edit-manager.js.map +1 -1
  17. package/cjs/event/listener/container-dom.js +2 -2
  18. package/cjs/event/listener/container-dom.js.map +1 -1
  19. package/cjs/header-helper/header-helper.js +2 -2
  20. package/cjs/header-helper/header-helper.js.map +1 -1
  21. package/cjs/index.d.ts +1 -1
  22. package/cjs/index.js +1 -1
  23. package/cjs/index.js.map +1 -1
  24. package/cjs/layout/chart-helper/get-axis-config.d.ts +1 -1
  25. package/cjs/layout/pivot-header-layout.d.ts +3 -1
  26. package/cjs/layout/pivot-header-layout.js +55 -38
  27. package/cjs/layout/pivot-header-layout.js.map +1 -1
  28. package/cjs/layout/row-height-map.d.ts +1 -0
  29. package/cjs/layout/row-height-map.js +3 -0
  30. package/cjs/layout/row-height-map.js.map +1 -1
  31. package/cjs/scenegraph/component/custom.js +7 -7
  32. package/cjs/scenegraph/component/custom.js.map +1 -1
  33. package/cjs/scenegraph/graphic/group.d.ts +1 -0
  34. package/cjs/scenegraph/graphic/group.js +10 -0
  35. package/cjs/scenegraph/graphic/group.js.map +1 -1
  36. package/cjs/scenegraph/group-creater/cell-helper.js +6 -1
  37. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  38. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +4 -3
  39. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  40. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +3 -2
  41. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  42. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +3 -2
  43. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  44. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
  45. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  46. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +6 -5
  47. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  48. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +3 -2
  49. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  50. package/cjs/scenegraph/group-creater/progress/proxy.js +7 -3
  51. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  52. package/cjs/scenegraph/icon/icon-update.js +6 -2
  53. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  54. package/cjs/scenegraph/layout/compute-row-height.js +7 -9
  55. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  56. package/cjs/scenegraph/layout/update-height.js +4 -2
  57. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  58. package/cjs/scenegraph/layout/update-width.js +4 -2
  59. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  60. package/cjs/scenegraph/scenegraph.js +2 -1
  61. package/cjs/scenegraph/stick-text/index.js +13 -5
  62. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  63. package/cjs/scenegraph/utils/text-icon-layout.js +3 -2
  64. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  65. package/cjs/state/hover/is-cell-hover.js +8 -4
  66. package/cjs/state/hover/is-cell-hover.js.map +1 -1
  67. package/cjs/state/hover/update-cell.js +8 -4
  68. package/cjs/state/hover/update-cell.js.map +1 -1
  69. package/cjs/state/state.js +1 -2
  70. package/cjs/themes/component.d.ts +5 -5
  71. package/cjs/tools/merge-range.d.ts +8 -0
  72. package/cjs/tools/merge-range.js +19 -0
  73. package/cjs/tools/merge-range.js.map +1 -0
  74. package/cjs/ts-types/component/axis.d.ts +2 -15
  75. package/cjs/ts-types/component/axis.js.map +1 -1
  76. package/cjs/ts-types/customElement.d.ts +1 -0
  77. package/cjs/ts-types/customElement.js.map +1 -1
  78. package/cjs/ts-types/new-data-set.js.map +1 -1
  79. package/cjs/ts-types/table-engine.js.map +1 -1
  80. package/cjs/vrender.js.map +1 -1
  81. package/dist/vtable.js +265 -138
  82. package/dist/vtable.min.js +2 -2
  83. package/es/ListTable.js +4 -4
  84. package/es/ListTable.js.map +1 -1
  85. package/es/PivotChart.d.ts +1 -1
  86. package/es/PivotChart.js +2 -1
  87. package/es/PivotChart.js.map +1 -1
  88. package/es/PivotTable.js +2 -2
  89. package/es/PivotTable.js.map +1 -1
  90. package/es/components/axis/axis.js +12 -7
  91. package/es/components/axis/axis.js.map +1 -1
  92. package/es/core/BaseTable.d.ts +0 -1
  93. package/es/core/BaseTable.js +12 -12
  94. package/es/core/BaseTable.js.map +1 -1
  95. package/es/dataset/dataset.js +43 -42
  96. package/es/dataset/dataset.js.map +1 -1
  97. package/es/edit/edit-manager.js +8 -8
  98. package/es/edit/edit-manager.js.map +1 -1
  99. package/es/event/listener/container-dom.js +2 -2
  100. package/es/event/listener/container-dom.js.map +1 -1
  101. package/es/header-helper/header-helper.js +3 -1
  102. package/es/header-helper/header-helper.js.map +1 -1
  103. package/es/index.d.ts +1 -1
  104. package/es/index.js +1 -1
  105. package/es/index.js.map +1 -1
  106. package/es/layout/chart-helper/get-axis-config.d.ts +1 -1
  107. package/es/layout/pivot-header-layout.d.ts +3 -1
  108. package/es/layout/pivot-header-layout.js +54 -38
  109. package/es/layout/pivot-header-layout.js.map +1 -1
  110. package/es/layout/row-height-map.d.ts +1 -0
  111. package/es/layout/row-height-map.js +3 -0
  112. package/es/layout/row-height-map.js.map +1 -1
  113. package/es/scenegraph/component/custom.js +7 -7
  114. package/es/scenegraph/component/custom.js.map +1 -1
  115. package/es/scenegraph/graphic/group.d.ts +1 -0
  116. package/es/scenegraph/graphic/group.js +10 -0
  117. package/es/scenegraph/graphic/group.js.map +1 -1
  118. package/es/scenegraph/group-creater/cell-helper.js +6 -1
  119. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  120. package/es/scenegraph/group-creater/cell-type/chart-cell.js +4 -3
  121. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  122. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +3 -2
  123. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  124. package/es/scenegraph/group-creater/cell-type/image-cell.js +3 -2
  125. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  126. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
  127. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  128. package/es/scenegraph/group-creater/cell-type/text-cell.js +6 -5
  129. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  130. package/es/scenegraph/group-creater/cell-type/video-cell.js +3 -2
  131. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  132. package/es/scenegraph/group-creater/progress/proxy.js +7 -3
  133. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  134. package/es/scenegraph/icon/icon-update.js +6 -1
  135. package/es/scenegraph/icon/icon-update.js.map +1 -1
  136. package/es/scenegraph/layout/compute-row-height.js +7 -9
  137. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  138. package/es/scenegraph/layout/update-height.js +4 -1
  139. package/es/scenegraph/layout/update-height.js.map +1 -1
  140. package/es/scenegraph/layout/update-width.js +4 -1
  141. package/es/scenegraph/layout/update-width.js.map +1 -1
  142. package/es/scenegraph/scenegraph.js +2 -1
  143. package/es/scenegraph/stick-text/index.js +12 -4
  144. package/es/scenegraph/stick-text/index.js.map +1 -1
  145. package/es/scenegraph/utils/text-icon-layout.js +3 -2
  146. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  147. package/es/state/hover/is-cell-hover.js +8 -3
  148. package/es/state/hover/is-cell-hover.js.map +1 -1
  149. package/es/state/hover/update-cell.js +8 -3
  150. package/es/state/hover/update-cell.js.map +1 -1
  151. package/es/state/state.js +1 -2
  152. package/es/themes/component.d.ts +5 -5
  153. package/es/tools/merge-range.d.ts +8 -0
  154. package/es/tools/merge-range.js +13 -0
  155. package/es/tools/merge-range.js.map +1 -0
  156. package/es/ts-types/component/axis.d.ts +2 -15
  157. package/es/ts-types/component/axis.js.map +1 -1
  158. package/es/ts-types/customElement.d.ts +1 -0
  159. package/es/ts-types/customElement.js.map +1 -1
  160. package/es/ts-types/new-data-set.js.map +1 -1
  161. package/es/ts-types/table-engine.js.map +1 -1
  162. package/es/vrender.js.map +1 -1
  163. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/hover/is-cell-hover.ts"],"names":[],"mappings":"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","file":"is-cell-hover.js","sourcesContent":["import type { StateManager } from '../state';\nimport type { Group } from '../../scenegraph/graphic/group';\nimport { getProp } from '../../scenegraph/utils/get-prop';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { HighlightScope } from '../../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nexport function getCellHoverColor(cellGroup: Group, table: BaseTableAPI): string | undefined {\n let colorKey;\n if (\n cellGroup.role === 'cell' &&\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n for (let col = cellGroup.mergeStartCol; col <= cellGroup.mergeEndCol; col++) {\n for (let row = cellGroup.mergeStartRow; row <= cellGroup.mergeEndRow; row++) {\n const key = isCellHover(table.stateManager, col, row, cellGroup);\n if (key && (!colorKey || key === 'cellBgColor')) {\n colorKey = key;\n }\n }\n }\n } else if (cellGroup.role === 'cell') {\n colorKey = isCellHover(table.stateManager, cellGroup.col, cellGroup.row, cellGroup);\n }\n\n if (!colorKey) {\n return undefined;\n }\n\n let hoverStyle;\n const layout = table.internalProps.layoutMap;\n if (layout.isCornerHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.cornerHeaderStyle?.hover || table.theme.headerStyle?.hover;\n } else if (layout.isColumnHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.headerStyle?.hover;\n } else if (layout.isRowHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.rowHeaderStyle?.hover;\n } else if (layout.isBottomFrozenRow(cellGroup.col, cellGroup.row)) {\n hoverStyle =\n table.theme.bottomFrozenStyle?.hover ||\n (table.isListTable() ? table.theme.bodyStyle?.hover : table.theme.headerStyle?.hover);\n } else if (layout.isRightFrozenColumn(cellGroup.col, cellGroup.row)) {\n hoverStyle =\n table.theme.rightFrozenStyle?.hover ||\n (table.isListTable() ? table.theme.bodyStyle?.hover : table.theme.rowHeaderStyle?.hover);\n } else if (!table.isHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.bodyStyle?.hover;\n }\n const fillColor = getProp(colorKey, hoverStyle, cellGroup.col, cellGroup.row, table);\n return fillColor;\n}\n\nexport function isCellHover(state: StateManager, col: number, row: number, cellGroup: Group): string | undefined {\n const { highlightScope, disableHeader, cellPos } = state.hover;\n const table = state.table;\n\n const isHeader = table.isHeader(col, row);\n if (isHeader && disableHeader) {\n return undefined;\n }\n\n let hoverMode;\n if (highlightScope === HighlightScope.single && cellPos.col === col && cellPos.row === row) {\n hoverMode = 'cellBgColor';\n } else if (highlightScope === HighlightScope.column && cellPos.col === col) {\n hoverMode = 'inlineColumnBgColor';\n } else if (highlightScope === HighlightScope.row && cellPos.row === row) {\n hoverMode = 'inlineRowBgColor';\n } else if (highlightScope === HighlightScope.cross) {\n if (cellPos.col === col && cellPos.row === row) {\n hoverMode = 'cellBgColor';\n } else if (cellPos.col === col) {\n hoverMode = 'inlineColumnBgColor';\n } else if (cellPos.row === row) {\n hoverMode = 'inlineRowBgColor';\n }\n }\n\n if (hoverMode) {\n let cellDisable;\n if (isHeader) {\n const define = table.getHeaderDefine(col, row);\n cellDisable = define?.disableHeaderHover;\n\n if (cellGroup.firstChild && cellGroup.firstChild.name === 'axis' && table.options.hover?.disableAxisHover) {\n cellDisable = true;\n }\n } else {\n const define = table.getBodyColumnDefine(col, row);\n cellDisable = define?.disableHover;\n }\n\n if (cellDisable) {\n hoverMode = undefined;\n }\n }\n\n return hoverMode;\n}\n"]}
1
+ {"version":3,"sources":["../src/state/hover/is-cell-hover.ts"],"names":[],"mappings":"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","file":"is-cell-hover.js","sourcesContent":["import type { StateManager } from '../state';\nimport type { Group } from '../../scenegraph/graphic/group';\nimport { getProp } from '../../scenegraph/utils/get-prop';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { HighlightScope } from '../../ts-types';\nimport { isValid } from '@visactor/vutils';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function getCellHoverColor(cellGroup: Group, table: BaseTableAPI): string | undefined {\n let colorKey;\n if (\n cellGroup.role === 'cell' &&\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const key = isCellHover(table.stateManager, col, row, cellGroup);\n if (key && (!colorKey || key === 'cellBgColor')) {\n colorKey = key;\n }\n }\n }\n } else if (cellGroup.role === 'cell') {\n colorKey = isCellHover(table.stateManager, cellGroup.col, cellGroup.row, cellGroup);\n }\n\n if (!colorKey) {\n return undefined;\n }\n\n let hoverStyle;\n const layout = table.internalProps.layoutMap;\n if (layout.isCornerHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.cornerHeaderStyle?.hover || table.theme.headerStyle?.hover;\n } else if (layout.isColumnHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.headerStyle?.hover;\n } else if (layout.isRowHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.rowHeaderStyle?.hover;\n } else if (layout.isBottomFrozenRow(cellGroup.col, cellGroup.row)) {\n hoverStyle =\n table.theme.bottomFrozenStyle?.hover ||\n (table.isListTable() ? table.theme.bodyStyle?.hover : table.theme.headerStyle?.hover);\n } else if (layout.isRightFrozenColumn(cellGroup.col, cellGroup.row)) {\n hoverStyle =\n table.theme.rightFrozenStyle?.hover ||\n (table.isListTable() ? table.theme.bodyStyle?.hover : table.theme.rowHeaderStyle?.hover);\n } else if (!table.isHeader(cellGroup.col, cellGroup.row)) {\n hoverStyle = table.theme.bodyStyle?.hover;\n }\n const fillColor = getProp(colorKey, hoverStyle, cellGroup.col, cellGroup.row, table);\n return fillColor;\n}\n\nexport function isCellHover(state: StateManager, col: number, row: number, cellGroup: Group): string | undefined {\n const { highlightScope, disableHeader, cellPos } = state.hover;\n const table = state.table;\n\n const isHeader = table.isHeader(col, row);\n if (isHeader && disableHeader) {\n return undefined;\n }\n\n let hoverMode;\n if (highlightScope === HighlightScope.single && cellPos.col === col && cellPos.row === row) {\n hoverMode = 'cellBgColor';\n } else if (highlightScope === HighlightScope.column && cellPos.col === col) {\n hoverMode = 'inlineColumnBgColor';\n } else if (highlightScope === HighlightScope.row && cellPos.row === row) {\n hoverMode = 'inlineRowBgColor';\n } else if (highlightScope === HighlightScope.cross) {\n if (cellPos.col === col && cellPos.row === row) {\n hoverMode = 'cellBgColor';\n } else if (cellPos.col === col) {\n hoverMode = 'inlineColumnBgColor';\n } else if (cellPos.row === row) {\n hoverMode = 'inlineRowBgColor';\n }\n }\n\n if (hoverMode) {\n let cellDisable;\n if (isHeader) {\n const define = table.getHeaderDefine(col, row);\n cellDisable = define?.disableHeaderHover;\n\n if (cellGroup.firstChild && cellGroup.firstChild.name === 'axis' && table.options.hover?.disableAxisHover) {\n cellDisable = true;\n }\n } else {\n const define = table.getBodyColumnDefine(col, row);\n cellDisable = define?.disableHover;\n }\n\n if (cellDisable) {\n hoverMode = undefined;\n }\n }\n\n return hoverMode;\n}\n"]}
@@ -1,9 +1,14 @@
1
1
  import { isValid } from "@visactor/vutils";
2
2
 
3
+ import { getCellMergeRange } from "../../tools/merge-range";
4
+
3
5
  export function updateCell(scenegraph, col, row) {
4
- const cellGroup = scenegraph.getCell(col, row);
5
- if (isValid(cellGroup.mergeStartCol) && isValid(cellGroup.mergeStartRow) && isValid(cellGroup.mergeEndCol) && isValid(cellGroup.mergeEndRow)) for (let col = cellGroup.mergeStartCol; col <= cellGroup.mergeEndCol; col++) for (let row = cellGroup.mergeStartRow; row <= cellGroup.mergeEndRow; row++) {
6
- scenegraph.getCell(col, row).addUpdateBoundTag();
6
+ const cellGroup = scenegraph.highPerformanceGetCell(col, row);
7
+ if (isValid(cellGroup.mergeStartCol) && isValid(cellGroup.mergeStartRow) && isValid(cellGroup.mergeEndCol) && isValid(cellGroup.mergeEndRow)) {
8
+ const {colStart: colStart, colEnd: colEnd, rowStart: rowStart, rowEnd: rowEnd} = getCellMergeRange(cellGroup, scenegraph);
9
+ for (let col = colStart; col <= colEnd; col++) for (let row = rowStart; row <= rowEnd; row++) {
10
+ scenegraph.highPerformanceGetCell(col, row).addUpdateBoundTag();
11
+ }
7
12
  } else cellGroup.addUpdateBoundTag();
8
13
  }
9
14
  //# sourceMappingURL=update-cell.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/hover/update-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,MAAM,UAAU,UAAU,CAAC,UAAsB,EAAE,GAAW,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,IACE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9B;QACA,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;YAC3E,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;gBAC3E,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/C,SAAS,CAAC,iBAAiB,EAAE,CAAC;aAC/B;SACF;KACF;SAAM;QACL,SAAS,CAAC,iBAAiB,EAAE,CAAC;KAC/B;AACH,CAAC","file":"update-cell.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { Scenegraph } from '../../scenegraph/scenegraph';\n\nexport function updateCell(scenegraph: Scenegraph, col: number, row: number) {\n const cellGroup = scenegraph.getCell(col, row);\n if (\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n for (let col = cellGroup.mergeStartCol; col <= cellGroup.mergeEndCol; col++) {\n for (let row = cellGroup.mergeStartRow; row <= cellGroup.mergeEndRow; row++) {\n const mergeCell = scenegraph.getCell(col, row);\n mergeCell.addUpdateBoundTag();\n }\n }\n } else {\n cellGroup.addUpdateBoundTag();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/state/hover/update-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,UAAU,UAAU,CAAC,UAAsB,EAAE,GAAW,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9D,IACE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9B;QACA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxF,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7C,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9D,SAAS,CAAC,iBAAiB,EAAE,CAAC;aAC/B;SACF;KACF;SAAM;QACL,SAAS,CAAC,iBAAiB,EAAE,CAAC;KAC/B;AACH,CAAC","file":"update-cell.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { Scenegraph } from '../../scenegraph/scenegraph';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function updateCell(scenegraph: Scenegraph, col: number, row: number) {\n const cellGroup = scenegraph.highPerformanceGetCell(col, row);\n if (\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const mergeCell = scenegraph.highPerformanceGetCell(col, row);\n mergeCell.addUpdateBoundTag();\n }\n }\n } else {\n cellGroup.addUpdateBoundTag();\n }\n}\n"]}
package/es/state/state.js CHANGED
@@ -576,5 +576,4 @@ export class StateManager {
576
576
  }));
577
577
  }
578
578
  }
579
- }
580
- //# sourceMappingURL=state.js.map
579
+ }
@@ -1,10 +1,10 @@
1
1
  import type { RequiredTableThemeDefine } from '../ts-types';
2
2
  export declare function getAxisStyle(axisStyle: RequiredTableThemeDefine['axisStyle']): {
3
- defaultAxisStyle: Omit<import("../ts-types/component/axis").ICellAxisOption, "type" | "orient" | "range" | "domain" | "__ticksForVTable">;
4
- leftAxisStyle: Omit<import("../ts-types/component/axis").ICellAxisOption, "type" | "orient" | "range" | "domain" | "__ticksForVTable">;
5
- rightAxisStyle: Omit<import("../ts-types/component/axis").ICellAxisOption, "type" | "orient" | "range" | "domain" | "__ticksForVTable">;
6
- topAxisStyle: Omit<import("../ts-types/component/axis").ICellAxisOption, "type" | "orient" | "range" | "domain" | "__ticksForVTable">;
7
- bottomAxisStyle: Omit<import("../ts-types/component/axis").ICellAxisOption, "type" | "orient" | "range" | "domain" | "__ticksForVTable">;
3
+ defaultAxisStyle: Omit<any, "type" | "domain" | "range" | "orient" | "__ticksForVTable">;
4
+ leftAxisStyle: Omit<any, "type" | "domain" | "range" | "orient" | "__ticksForVTable">;
5
+ rightAxisStyle: Omit<any, "type" | "domain" | "range" | "orient" | "__ticksForVTable">;
6
+ topAxisStyle: Omit<any, "type" | "domain" | "range" | "orient" | "__ticksForVTable">;
7
+ bottomAxisStyle: Omit<any, "type" | "domain" | "range" | "orient" | "__ticksForVTable">;
8
8
  };
9
9
  export declare const defalutPoptipStyle: {
10
10
  visible: boolean;
@@ -0,0 +1,8 @@
1
+ import type { Group } from '../scenegraph/graphic/group';
2
+ import type { Scenegraph } from '../scenegraph/scenegraph';
3
+ export declare function getCellMergeRange(cellGroup: Group, scene: Scenegraph): {
4
+ colStart: number;
5
+ colEnd: number;
6
+ rowStart: number;
7
+ rowEnd: number;
8
+ };
@@ -0,0 +1,13 @@
1
+ export function getCellMergeRange(cellGroup, scene) {
2
+ const {mergeStartCol: mergeStartCol, mergeEndCol: mergeEndCol, mergeStartRow: mergeStartRow, mergeEndRow: mergeEndRow, col: col, row: row} = cellGroup, {colStart: colStart, colEnd: colEnd, rowStart: rowStart, rowEnd: rowEnd, bodyLeftCol: bodyLeftCol, bodyRightCol: bodyRightCol, bodyTopRow: bodyTopRow, bodyBottomRow: bodyBottomRow} = scene.proxy;
3
+ let cellRangeColStart = mergeStartCol, cellRangeColEnd = mergeEndCol, cellRangeRowStart = mergeStartRow, cellRangeRowEnd = mergeEndRow;
4
+ return col >= bodyLeftCol && col <= bodyRightCol && (cellRangeColStart = Math.max(cellGroup.mergeStartCol, colStart),
5
+ cellRangeColEnd = Math.min(cellGroup.mergeEndCol, colEnd)), row >= bodyTopRow && row <= bodyBottomRow && (cellRangeRowStart = Math.max(cellGroup.mergeStartRow, rowStart),
6
+ cellRangeRowEnd = Math.min(cellGroup.mergeEndRow, rowEnd)), {
7
+ colStart: cellRangeColStart,
8
+ colEnd: cellRangeColEnd,
9
+ rowStart: cellRangeRowStart,
10
+ rowEnd: cellRangeRowEnd
11
+ };
12
+ }
13
+ //# sourceMappingURL=merge-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/merge-range.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,SAAgB,EAAE,KAAiB;IACnE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IACvF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;IAEjH,IAAI,iBAAiB,GAAG,aAAa,CAAC;IACtC,IAAI,eAAe,GAAG,WAAW,CAAC;IAClC,IAAI,iBAAiB,GAAG,aAAa,CAAC;IACtC,IAAI,eAAe,GAAG,WAAW,CAAC;IAElC,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,IAAI,YAAY,EAAE;QAC7C,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChE,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KAC3D;IAED,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,IAAI,aAAa,EAAE;QAC7C,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChE,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KAC3D;IAED,OAAO;QACL,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,eAAe;KACxB,CAAC;AACJ,CAAC","file":"merge-range.js","sourcesContent":["import type { Group } from '../scenegraph/graphic/group';\nimport type { Scenegraph } from '../scenegraph/scenegraph';\n\nexport function getCellMergeRange(cellGroup: Group, scene: Scenegraph) {\n const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow, col, row } = cellGroup;\n const { colStart, colEnd, rowStart, rowEnd, bodyLeftCol, bodyRightCol, bodyTopRow, bodyBottomRow } = scene.proxy;\n\n let cellRangeColStart = mergeStartCol;\n let cellRangeColEnd = mergeEndCol;\n let cellRangeRowStart = mergeStartRow;\n let cellRangeRowEnd = mergeEndRow;\n\n if (col >= bodyLeftCol && col <= bodyRightCol) {\n cellRangeColStart = Math.max(cellGroup.mergeStartCol, colStart);\n cellRangeColEnd = Math.min(cellGroup.mergeEndCol, colEnd);\n }\n\n if (row >= bodyTopRow && row <= bodyBottomRow) {\n cellRangeRowStart = Math.max(cellGroup.mergeStartRow, rowStart);\n cellRangeRowEnd = Math.min(cellGroup.mergeEndRow, rowEnd);\n }\n\n return {\n colStart: cellRangeColStart,\n colEnd: cellRangeColEnd,\n rowStart: cellRangeRowStart,\n rowEnd: cellRangeRowEnd\n };\n}\n"]}
@@ -1,15 +1,2 @@
1
- import type { ICartesianAxisSpec } from '@visactor/vchart';
2
- export type ICellAxisOption = Omit<ICartesianAxisSpec, 'type'> & ({
3
- type: 'band';
4
- domain: (number | string)[];
5
- __vtableChartTheme?: any;
6
- } | {
7
- type: 'linear' | 'time';
8
- range: {
9
- min: number;
10
- max: number;
11
- };
12
- __ticksForVTable?: number[];
13
- __vtableChartTheme?: any;
14
- });
15
- export type ITableAxisOption = ICartesianAxisSpec;
1
+ export type ICellAxisOption = any;
2
+ export type ITableAxisOption = ICellAxisOption;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/component/axis.ts"],"names":[],"mappings":"","file":"axis.js","sourcesContent":["import type { ICartesianAxisSpec } from '@visactor/vchart';\n\nexport type ICellAxisOption = Omit<ICartesianAxisSpec, 'type'> &\n (\n | {\n type: 'band';\n domain: (number | string)[];\n __vtableChartTheme?: any;\n }\n | {\n type: 'linear' | 'time';\n range: {\n min: number;\n max: number;\n };\n __ticksForVTable?: number[];\n __vtableChartTheme?: any;\n }\n );\n\nexport type ITableAxisOption = ICartesianAxisSpec;\n"]}
1
+ {"version":3,"sources":["../src/ts-types/component/axis.ts"],"names":[],"mappings":"","file":"axis.js","sourcesContent":["// import type { ICartesianAxisSpec } from '@visactor/vchart';\n\n// export type ICellAxisOption = Omit<ICartesianAxisSpec, 'type'> &\n// (\n// | {\n// type: 'band';\n// domain: (number | string)[];\n// __vtableChartTheme?: any;\n// }\n// | {\n// type: 'linear' | 'time';\n// range: {\n// min: number;\n// max: number;\n// };\n// __ticksForVTable?: number[];\n// __vtableChartTheme?: any;\n// }\n// );\nexport type ICellAxisOption = any;\nexport type ITableAxisOption = ICellAxisOption;\n"]}
@@ -18,6 +18,7 @@ interface baseElement {
18
18
  dy?: number;
19
19
  pickable?: boolean;
20
20
  cursor?: string;
21
+ name?: string;
21
22
  }
22
23
  export interface TextElement extends baseElement {
23
24
  type: 'text';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/customElement.ts"],"names":[],"mappings":"","file":"customElement.js","sourcesContent":["import type { FieldData } from './table-engine';\nimport type { RectProps } from './common';\nimport type { BaseTableAPI } from './base-table';\nimport type { TextAlignType, TextBaselineType } from './style-define';\nexport interface CustomRenderFunctionArg {\n row: number;\n col: number;\n table: BaseTableAPI;\n /**format之后的值 */\n value: FieldData;\n /**原始值 */\n dataValue: FieldData;\n rect?: RectProps;\n}\ninterface baseElement {\n elementKey?: string;\n x: number | string | ((value: string) => number | string);\n y: number | string | ((value: string) => number | string);\n dx?: number;\n dy?: number;\n // clickable?: boolean; // @dispose\n pickable?: boolean;\n cursor?: string;\n}\nexport interface TextElement extends baseElement {\n type: 'text';\n text: string | ((value: string) => string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n color?: string | ((value: string) => string);\n lineWidth: number;\n fontSize?: number | ((value: string) => number);\n fontFamily?: string | ((value: string) => string);\n fontWeight?: string | number | ((value: string) => string | number);\n fontVariant?: string;\n fontStyle?: string;\n ellipsis?: boolean | string;\n maxLineWidth?: number;\n textAlign?: TextAlignType;\n textBaseline?: TextBaselineType;\n lineHeight?: number;\n underline?: number;\n lineThrough?: number;\n heightLimit?: number;\n lineClamp?: number;\n width?: number;\n height?: number;\n background?: {\n fill?: string;\n expandY?: number;\n expandX?: number;\n cornerRadius?: number;\n };\n}\nexport interface LineElement extends Omit<baseElement, 'x' | 'y'> {\n type: 'line';\n stroke?: string | ((value: string) => string);\n points: { x: number; y: number }[];\n lineWidth?: number;\n}\n\nexport interface RectElement extends baseElement {\n type: 'rect';\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n radius?: number | string | ((value: string) => number | string);\n}\n\nexport interface CircleElement extends baseElement {\n type: 'circle';\n radius: number | string | ((value: string) => number | string);\n // radian?: number | string | ((value: string) => number | string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n}\nexport interface ArcElement extends baseElement {\n type: 'arc';\n radius: number | string | ((value: string) => number | string);\n startAngle?: number | ((value: string) => number);\n endAngle?: number | ((value: string) => number);\n // clockWise?: boolean;\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n}\nexport interface IconElement extends baseElement {\n type: 'icon';\n svg: string | ((value: string) => string);\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n hover?: {\n x: number | string;\n y: number | string;\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n bgColor: string;\n radius?: number;\n };\n}\nexport interface ImageElement extends baseElement {\n type: 'image';\n src: string | ((value: string) => string);\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n hover?: {\n x: number | string;\n y: number | string;\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n bgColor: string;\n radius?: number;\n };\n shape?: 'circle' | 'square';\n}\nexport type ICustomRenderElement =\n | TextElement\n | RectElement\n | CircleElement\n | IconElement\n | ImageElement\n | ArcElement\n | LineElement;\nexport type ICustomRenderElements = Array<ICustomRenderElement>;\n\nexport type ICustomRenderFuc = (args: CustomRenderFunctionArg) => ICustomRenderObj;\n\nexport type ICustomRenderObj = {\n /** 配置出来的类型集合 */\n elements: ICustomRenderElements;\n /** 期望单元格的高度 */\n expectedHeight: number;\n /** 期望单元格的宽度 */\n expectedWidth: number;\n /**\n * 是否还需要默认渲染内容 只有配置true才绘制 默认 不绘制\n */\n renderDefault?: boolean;\n};\n\nexport type ICustomRender = ICustomRenderFuc | ICustomRenderObj;\n"]}
1
+ {"version":3,"sources":["../src/ts-types/customElement.ts"],"names":[],"mappings":"","file":"customElement.js","sourcesContent":["import type { FieldData } from './table-engine';\nimport type { RectProps } from './common';\nimport type { BaseTableAPI } from './base-table';\nimport type { TextAlignType, TextBaselineType } from './style-define';\nexport interface CustomRenderFunctionArg {\n row: number;\n col: number;\n table: BaseTableAPI;\n /**format之后的值 */\n value: FieldData;\n /**原始值 */\n dataValue: FieldData;\n rect?: RectProps;\n}\ninterface baseElement {\n elementKey?: string;\n x: number | string | ((value: string) => number | string);\n y: number | string | ((value: string) => number | string);\n dx?: number;\n dy?: number;\n // clickable?: boolean; // @dispose\n pickable?: boolean;\n cursor?: string;\n name?: string;\n}\nexport interface TextElement extends baseElement {\n type: 'text';\n text: string | ((value: string) => string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n color?: string | ((value: string) => string);\n lineWidth: number;\n fontSize?: number | ((value: string) => number);\n fontFamily?: string | ((value: string) => string);\n fontWeight?: string | number | ((value: string) => string | number);\n fontVariant?: string;\n fontStyle?: string;\n ellipsis?: boolean | string;\n maxLineWidth?: number;\n textAlign?: TextAlignType;\n textBaseline?: TextBaselineType;\n lineHeight?: number;\n underline?: number;\n lineThrough?: number;\n heightLimit?: number;\n lineClamp?: number;\n width?: number;\n height?: number;\n background?: {\n fill?: string;\n expandY?: number;\n expandX?: number;\n cornerRadius?: number;\n };\n}\nexport interface LineElement extends Omit<baseElement, 'x' | 'y'> {\n type: 'line';\n stroke?: string | ((value: string) => string);\n points: { x: number; y: number }[];\n lineWidth?: number;\n}\n\nexport interface RectElement extends baseElement {\n type: 'rect';\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n radius?: number | string | ((value: string) => number | string);\n}\n\nexport interface CircleElement extends baseElement {\n type: 'circle';\n radius: number | string | ((value: string) => number | string);\n // radian?: number | string | ((value: string) => number | string);\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n}\nexport interface ArcElement extends baseElement {\n type: 'arc';\n radius: number | string | ((value: string) => number | string);\n startAngle?: number | ((value: string) => number);\n endAngle?: number | ((value: string) => number);\n // clockWise?: boolean;\n stroke?: string | ((value: string) => string);\n fill?: string | ((value: string) => string);\n}\nexport interface IconElement extends baseElement {\n type: 'icon';\n svg: string | ((value: string) => string);\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n hover?: {\n x: number | string;\n y: number | string;\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n bgColor: string;\n radius?: number;\n };\n}\nexport interface ImageElement extends baseElement {\n type: 'image';\n src: string | ((value: string) => string);\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n hover?: {\n x: number | string;\n y: number | string;\n width: number | string | ((value: string) => number | string);\n height: number | string | ((value: string) => number | string);\n bgColor: string;\n radius?: number;\n };\n shape?: 'circle' | 'square';\n}\nexport type ICustomRenderElement =\n | TextElement\n | RectElement\n | CircleElement\n | IconElement\n | ImageElement\n | ArcElement\n | LineElement;\nexport type ICustomRenderElements = Array<ICustomRenderElement>;\n\nexport type ICustomRenderFuc = (args: CustomRenderFunctionArg) => ICustomRenderObj;\n\nexport type ICustomRenderObj = {\n /** 配置出来的类型集合 */\n elements: ICustomRenderElements;\n /** 期望单元格的高度 */\n expectedHeight: number;\n /** 期望单元格的宽度 */\n expectedWidth: number;\n /**\n * 是否还需要默认渲染内容 只有配置true才绘制 默认 不绘制\n */\n renderDefault?: boolean;\n};\n\nexport type ICustomRender = ICustomRenderFuc | ICustomRenderObj;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/new-data-set.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,kCAAe,CAAA;AACjB,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B;AACD,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB","file":"new-data-set.js","sourcesContent":["import type { SortOrder } from './common';\n\n//#region 总计小计\nexport interface TotalsStatus {\n isRowTotal: boolean;\n isRowSubTotal: boolean;\n isColTotal: boolean;\n isColSubTotal: boolean;\n}\n\nexport enum AggregationType {\n RECORD = 'RECORD',\n NONE = 'NONE', //不做聚合 只获取其中一条数据作为节点的record 取其field\n SUM = 'SUM',\n MIN = 'MIN',\n MAX = 'MAX',\n AVG = 'AVG',\n COUNT = 'COUNT'\n}\nexport enum SortType {\n ASC = 'ASC',\n DESC = 'DESC'\n}\nexport interface CalcTotals {\n aggregationType?: AggregationType; // 聚合方式\n // calcFunc?: (query: Record<string, any>, arr: Record<string, any>[]) => number;\n}\n\nexport interface Total {\n /** 是否显示总计; */\n showGrandTotals: boolean;\n /** 是否显示小计; */\n showSubTotals: boolean;\n\n // // 计算总计方法\n // calcGrandTotals?: CalcTotals;\n // // 计算小计方法\n // calcSubTotals?: CalcTotals;\n /** 小计汇总维度定义 */\n subTotalsDimensions?: string[];\n /** 汇总节点显示名称 默认'总计' */\n grandTotalLabel?: string;\n /** 汇总节点显示名称 默认'小计' */\n subTotalLabel?: string;\n}\n\nexport interface Totals {\n row?: Total & {\n /** 总计显示在上 默认false */\n showGrandTotalsOnTop?: boolean;\n /** 小计显示在上 默认false */\n showSubTotalsOnTop?: boolean;\n };\n column?: Total & {\n /** 总计显示在左 默认false */\n showGrandTotalsOnLeft?: boolean;\n /** 小计显示在左 默认false */\n showSubTotalsOnLeft?: boolean;\n };\n}\n\n//#endregion 总计小计\n\n//#region 排序规则\n// export interface SortRule {\n// //排序维度\n// sortField: string;\n// //以下均为排序方法\n// //1. 指定排序类型\n// sortType?: SortType;\n// //2. 按维度成员指定排序\n// sortBy?: string[];\n// //3. 按指标值排序\n// sortByIndicator?: string;\n// //如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值\n// query?: string[];\n// //4. 自定义排序方法function\n// sortFunc?: (a: any, b: any) => number;\n// }\n//以下均为排序方法\n//1. 指定排序类型\nexport interface SortTypeRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n}\n//2. 按维度成员指定排序\nexport interface SortByRule {\n /**排序维度 */\n sortField: string;\n /**根据指定具体顺序排序 */\n sortBy?: string[];\n}\n//3. 按指标值排序\nexport interface SortByIndicatorRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n /**排序根据某个指标值 */\n sortByIndicator?: string;\n /**如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值。例如按照办公用品下的纸张 ['办公用品', '纸张'] */\n query?: string[];\n}\n//4. 自定义排序方法function\nexport interface SortFuncRule {\n /**排序维度 */\n sortField: string;\n /**自定义排序函数 */\n sortFunc?: (a: any, b: any) => number;\n}\n//自定义排序方法参数\n// export interface SortFuncParam extends SortRule {\n// data: Array<string | Record<string, any>>;\n// }\nexport type SortRule = SortTypeRule | SortByRule | SortByIndicatorRule | SortFuncRule;\nexport type SortRules = SortRule[];\n//#endregion 排序规则\n\n//#region 过滤规则\nexport interface FilterRule {\n filterKey?: string;\n filteredValues?: unknown[];\n filterFunc?: (row: Record<string, any>) => boolean;\n}\nexport type FilterRules = FilterRule[];\n//#endregion 过滤规则\n\n//#region 聚合规则\nexport interface AggregationRule<T extends AggregationType> {\n /** 区别于field 重新起个key值,供配置indicators使用 */\n indicatorKey: string;\n // 可以收集单个字段的聚合结果,或者收集多个字段的聚合结果\n field: T extends AggregationType.RECORD ? string[] | string : string;\n aggregationType: T;\n /**计算结果格式化 */\n formatFun?: (num: number) => string;\n}\nexport type AggregationRules = AggregationRule<AggregationType>[];\n//#endregion 聚合规则\n\n//#region 映射规则\nexport interface MappingRule {\n label?: LabelMapping;\n symbol?: SymbolMapping;\n bgColor?: MappingFuncRule;\n}\nexport type MappingRules = MappingRule[];\nexport interface LabelMapping {\n text?: MappingFuncRule;\n color?: MappingFuncRule;\n}\nexport interface SymbolMapping {\n shape?: 'circle' | 'rect';\n color?: MappingFuncRule;\n size?: MappingFuncRule;\n}\n\nexport type MappingFuncRule = {\n indicatorKey: string;\n mapping?: (table: any, value: number) => string;\n};\n\n//#endregion 映射规则\nexport interface DerivedFieldRule {\n fieldName?: string;\n derivedFunc?: (record: Record<string, any>) => any;\n}\nexport type DerivedFieldRules = DerivedFieldRule[];\n/**\n * 数据处理配置\n */\nexport interface IDataConfig {\n aggregationRules?: AggregationRules; //按照行列维度聚合值计算规则;\n sortRules?: SortRules; //排序规则;\n filterRules?: FilterRules; //过滤规则;\n totals?: Totals; //小计或总计;\n /**\n * 目前mappding还不太好用 不建议使用 建议先用style\n */\n mappingRules?: MappingRules;\n derivedFieldRules?: DerivedFieldRules;\n\n /**\n * PivotChart专有 请忽略\n */\n collectValuesBy?: Record<string, CollectValueBy>;\n /**\n * PivotChart专有 请忽略\n */\n isPivotChart?: boolean;\n /**\n * PivotChart专有 请忽略\n */\n dimensionSortArray?: string[];\n}\n\n/** 在处理数据的过程中 去额外收集某个维度的维度值范围 可为离散值或者连续值范围 */\nexport type CollectValueBy = {\n /** 要收集的字段按什么进行分组 */\n by: string[];\n /** 是否计算一个range范围 true的话对应的收集数据的结果为{max:number,min:number} */\n range?: boolean;\n /** 收集是按照sumBy字段相同的进行分组聚合 聚合结果求最大最小值;如果不设置该值 则按单条数据求最大最小值 */\n sumBy?: string[];\n /** 帮助计算列宽使用 如果是chart图表 收集的是xFiled的维度值 可以根据维度值的个数乘于图元宽度计算一个最优列宽*/\n type?: 'xField' | 'yField' | undefined;\n /** 如果是收集的离散值,离散值的排序依据 */\n sortBy?: string[];\n};\nexport type CollectedValue = { max?: number; min?: number } | Array<string>;\n"]}
1
+ {"version":3,"sources":["../src/ts-types/new-data-set.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,kCAAe,CAAA;AACjB,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B;AACD,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB","file":"new-data-set.js","sourcesContent":["import type { SortOrder } from './common';\n\n//#region 总计小计\nexport interface TotalsStatus {\n isRowTotal: boolean;\n isRowSubTotal: boolean;\n isColTotal: boolean;\n isColSubTotal: boolean;\n}\n\nexport enum AggregationType {\n RECORD = 'RECORD',\n NONE = 'NONE', //不做聚合 只获取其中一条数据作为节点的record 取其field\n SUM = 'SUM',\n MIN = 'MIN',\n MAX = 'MAX',\n AVG = 'AVG',\n COUNT = 'COUNT'\n}\nexport enum SortType {\n ASC = 'ASC',\n DESC = 'DESC'\n}\nexport interface CalcTotals {\n aggregationType?: AggregationType; // 聚合方式\n // calcFunc?: (query: Record<string, any>, arr: Record<string, any>[]) => number;\n}\n\nexport interface Total {\n /** 是否显示总计; 如果配置了total对象,showGrandTotals默认false */\n showGrandTotals: boolean;\n /** 是否显示小计; 如果配置了total对象,showSubTotals默认为true */\n showSubTotals: boolean;\n\n // // 计算总计方法\n // calcGrandTotals?: CalcTotals;\n // // 计算小计方法\n // calcSubTotals?: CalcTotals;\n /** 小计汇总维度定义 */\n subTotalsDimensions?: string[];\n /** 汇总节点显示名称 默认'总计' */\n grandTotalLabel?: string;\n /** 汇总节点显示名称 默认'小计' */\n subTotalLabel?: string;\n}\n\nexport interface Totals {\n row?: Total & {\n /** 总计显示在上 默认false */\n showGrandTotalsOnTop?: boolean;\n /** 小计显示在上 默认false */\n showSubTotalsOnTop?: boolean;\n };\n column?: Total & {\n /** 总计显示在左 默认false */\n showGrandTotalsOnLeft?: boolean;\n /** 小计显示在左 默认false */\n showSubTotalsOnLeft?: boolean;\n };\n}\n\n//#endregion 总计小计\n\n//#region 排序规则\n// export interface SortRule {\n// //排序维度\n// sortField: string;\n// //以下均为排序方法\n// //1. 指定排序类型\n// sortType?: SortType;\n// //2. 按维度成员指定排序\n// sortBy?: string[];\n// //3. 按指标值排序\n// sortByIndicator?: string;\n// //如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值\n// query?: string[];\n// //4. 自定义排序方法function\n// sortFunc?: (a: any, b: any) => number;\n// }\n//以下均为排序方法\n//1. 指定排序类型\nexport interface SortTypeRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n}\n//2. 按维度成员指定排序\nexport interface SortByRule {\n /**排序维度 */\n sortField: string;\n /**根据指定具体顺序排序 */\n sortBy?: string[];\n}\n//3. 按指标值排序\nexport interface SortByIndicatorRule {\n /**排序维度 */\n sortField: string;\n /**升序降序 ASC or DESC*/\n sortType?: SortType;\n /**排序根据某个指标值 */\n sortByIndicator?: string;\n /**如果按指标值排序,还需要指定另外一个(行或列)方向的底层维度成员具体值。例如按照办公用品下的纸张 ['办公用品', '纸张'] */\n query?: string[];\n}\n//4. 自定义排序方法function\nexport interface SortFuncRule {\n /**排序维度 */\n sortField: string;\n /**自定义排序函数 */\n sortFunc?: (a: any, b: any) => number;\n}\n//自定义排序方法参数\n// export interface SortFuncParam extends SortRule {\n// data: Array<string | Record<string, any>>;\n// }\nexport type SortRule = SortTypeRule | SortByRule | SortByIndicatorRule | SortFuncRule;\nexport type SortRules = SortRule[];\n//#endregion 排序规则\n\n//#region 过滤规则\nexport interface FilterRule {\n filterKey?: string;\n filteredValues?: unknown[];\n filterFunc?: (row: Record<string, any>) => boolean;\n}\nexport type FilterRules = FilterRule[];\n//#endregion 过滤规则\n\n//#region 聚合规则\nexport interface AggregationRule<T extends AggregationType> {\n /** 区别于field 重新起个key值,供配置indicators使用 */\n indicatorKey: string;\n // 可以收集单个字段的聚合结果,或者收集多个字段的聚合结果\n field: T extends AggregationType.RECORD ? string[] | string : string;\n aggregationType: T;\n /**计算结果格式化 */\n formatFun?: (num: number) => string;\n}\nexport type AggregationRules = AggregationRule<AggregationType>[];\n//#endregion 聚合规则\n\n//#region 映射规则\nexport interface MappingRule {\n label?: LabelMapping;\n symbol?: SymbolMapping;\n bgColor?: MappingFuncRule;\n}\nexport type MappingRules = MappingRule[];\nexport interface LabelMapping {\n text?: MappingFuncRule;\n color?: MappingFuncRule;\n}\nexport interface SymbolMapping {\n shape?: 'circle' | 'rect';\n color?: MappingFuncRule;\n size?: MappingFuncRule;\n}\n\nexport type MappingFuncRule = {\n indicatorKey: string;\n mapping?: (table: any, value: number) => string;\n};\n\n//#endregion 映射规则\nexport interface DerivedFieldRule {\n fieldName?: string;\n derivedFunc?: (record: Record<string, any>) => any;\n}\nexport type DerivedFieldRules = DerivedFieldRule[];\n/**\n * 数据处理配置\n */\nexport interface IDataConfig {\n aggregationRules?: AggregationRules; //按照行列维度聚合值计算规则;\n sortRules?: SortRules; //排序规则;\n filterRules?: FilterRules; //过滤规则;\n totals?: Totals; //小计或总计;\n /**\n * 目前mappding还不太好用 不建议使用 建议先用style\n */\n mappingRules?: MappingRules;\n derivedFieldRules?: DerivedFieldRules;\n\n /**\n * PivotChart专有 请忽略\n */\n collectValuesBy?: Record<string, CollectValueBy>;\n /**\n * PivotChart专有 请忽略\n */\n isPivotChart?: boolean;\n /**\n * PivotChart专有 请忽略\n */\n dimensionSortArray?: string[];\n}\n\n/** 在处理数据的过程中 去额外收集某个维度的维度值范围 可为离散值或者连续值范围 */\nexport type CollectValueBy = {\n /** 要收集的字段按什么进行分组 */\n by: string[];\n /** 是否计算一个range范围 true的话对应的收集数据的结果为{max:number,min:number} */\n range?: boolean;\n /** 收集是按照sumBy字段相同的进行分组聚合 聚合结果求最大最小值;如果不设置该值 则按单条数据求最大最小值 */\n sumBy?: string[];\n /** 帮助计算列宽使用 如果是chart图表 收集的是xFiled的维度值 可以根据维度值的个数乘于图元宽度计算一个最优列宽*/\n type?: 'xField' | 'yField' | undefined;\n /** 如果是收集的离散值,离散值的排序依据 */\n sortBy?: string[];\n};\nexport type CollectedValue = { max?: number; min?: number } | Array<string>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/table-engine.ts"],"names":[],"mappings":"AAiZA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder, BaseCellInfo } from './common';\nimport type { SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from './base-table';\nimport type { IDataConfig } from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type {\n IChartIndicator,\n IColumnDimension,\n ICornerDefine,\n IDimension,\n IIndicator,\n IRowDimension,\n ITitleDefine\n} from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\nimport type { ICellAxisOption, ITableAxisOption } from './component/axis';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ITextStyleOption } from '../body-helper/style';\nimport type { DataSource } from '../data';\nimport type { EditManeger } from '../edit/edit-manager';\nimport type { ICustomRender } from './customElement';\nimport type { ICustomLayout } from './customLayout';\n\nexport interface CellAddress {\n col: number;\n row: number;\n}\nexport interface CellAddressWithBound {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any, col?: number, row?: number, table?: BaseTableAPI) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';\nexport type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\n/** 单元格所处表格哪部分 */\nexport type CellLocation = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';\nexport type CellSubLocation =\n | 'body'\n | 'rowHeader'\n | 'columnHeader'\n | 'cornerHeader'\n | 'bottomFrozen'\n | 'rightFrozen'\n | 'rightTopCorner'\n | 'leftBottomCorner'\n | 'rightBottomCorner';\n\nexport interface TableKeyboardOptions {\n /** tab键 默认为true。开启tab键移动选中单元格,如果当前是在编辑单元格 则移动到下一个单元格也是编辑状态 */\n moveFocusCellOnTab?: boolean;\n /** enter键 默认true 如果选中单元格可编辑则进入单元格编辑*/\n editCellOnEnter?: boolean;\n /** 默认不开启即false。开启这个配置的话,如果当前是在编辑单元格方向键可以移动到下个单元格并进入编辑状态,而不是编辑文本内字符串的光标移动。上下左右方向键切换选中单元格不受该配置影响,*/\n moveEditCellOnArrowKeys?: boolean;\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 默认:false*/\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n /** 快捷键粘贴。粘贴内容到指定位置(即需要有选中状态),支持批量粘贴。 默认:false */\n pasteValueToCell?: boolean; //paste是和浏览器的快捷键一致的\n}\nexport interface TableEventOptions {\n /** 是否阻止右键的默认行为, 默认为true。*/\n preventDefaultContextMenu?: boolean;\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F, col: number, row: number, table: BaseTableAPI) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePagination: (pagination: IPagination) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n enableHierarchyState: boolean;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n\n fieldKey?: FieldKeyDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagination {\n /** 数据总条数 透视表中这个数据会自动加上 不需用户传入*/\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 传入用户实例化的数据对象 目前不完善\n */\n dataSource?: DataSource;\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n\n /** 分页配置 */\n pagination?: IPagination;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n /** 全局设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 全局设置编辑器 */\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 编辑触发时机 双击事件 单击事件 api手动开启编辑。默认为双击'doubleclick' */\n editCellTrigger?: 'doubleclick' | 'click' | 'api';\n /** 拖拽表头移动位置 针对冻结部分的规则 默认为fixedFrozenCount\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n editorManager: EditManeger;\n sortState: SortState[] | SortState | null;\n // internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][]) => void;\n getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n //#region 编辑器相关demo\n /** 获取单元格配置的编辑器 */\n getEditor: (col: number, row: number) => IEditor;\n /** 开启单元格编辑 */\n startEditCell: (col?: number, row?: number) => void;\n /** 结束编辑 */\n completeEditCell: () => void;\n //#endregion\n addRecord: (record: any, recordIndex?: number) => void;\n addRecords: (records: any[], recordIndex?: number) => void;\n deleteRecords: (recordIndexs: number[]) => void;\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n dataConfig?: IDataConfig;\n /**\n * 透视表是否开启数据分析 默认false\n * 如果传入数据是明细数据需要聚合分析则开启 赋值为true\n * 如传入数据是经过聚合好的为了提升性能这里设为false即可,同时呢需要传入自己组织好的行头树结构columnTree和rowTree\n */\n enableDataAnalysis?: boolean;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n /** 分页配置 */\n pagination?: IPagination;\n\n extensionRows?: IExtensionRowDefine[];\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\nexport interface PivotChartConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合, 平坦数据集合。另外一种特殊方式是传入分组后的数据,分组依据为指标\n */\n records?: any[] | Record<string, any[]>;\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IChartIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n\n axes?: ITableAxisOption[];\n}\nexport interface PivotTableAPI extends BaseTableAPI {\n records?: any;\n options: PivotTableConstructorOptions;\n editorManager: EditManeger;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][]) => void;\n}\nexport interface PivotChartAPI extends BaseTableAPI {\n records?: any | Record<string, any[]>;\n options: PivotChartConstructorOptions;\n // internalProps: PivotTableProtected;\n isListTable: () => false;\n isPivotTable: () => true;\n}\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n\nexport interface IExtensionRowDefine {\n rows: (IRowDimension | string)[];\n rowTree: IHeaderTreeDefine[] | ((args: { dimensionKey: string | number; value: string }[]) => IHeaderTreeDefine[]);\n}\n\nexport type StickCell = { col: number; row: number; dx: number; dy: number };\n\nexport type CustomMergeCell = (col: number, row: number, table: BaseTableAPI) => undefined | CustomMerge;\nexport type CustomMerge = {\n range: CellRange;\n text?: string;\n style?: ITextStyleOption;\n customLayout?: ICustomLayout;\n customRender?: ICustomRender;\n};\n"]}
1
+ {"version":3,"sources":["../src/ts-types/table-engine.ts"],"names":[],"mappings":"AAiZA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder, BaseCellInfo } from './common';\nimport type { SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions } from './base-table';\nimport type { IDataConfig } from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type {\n IChartIndicator,\n IColumnDimension,\n ICornerDefine,\n IDimension,\n IIndicator,\n IRowDimension,\n ITitleDefine\n} from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\nimport type { ICellAxisOption, ITableAxisOption } from './component/axis';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ITextStyleOption } from '../body-helper/style';\nimport type { DataSource } from '../data';\nimport type { EditManeger } from '../edit/edit-manager';\nimport type { ICustomRender } from './customElement';\nimport type { ICustomLayout } from './customLayout';\n\nexport interface CellAddress {\n col: number;\n row: number;\n}\nexport interface CellAddressWithBound {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any, col?: number, row?: number, table?: BaseTableAPI) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';\nexport type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\n/** 单元格所处表格哪部分 */\nexport type CellLocation = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';\nexport type CellSubLocation =\n | 'body'\n | 'rowHeader'\n | 'columnHeader'\n | 'cornerHeader'\n | 'bottomFrozen'\n | 'rightFrozen'\n | 'rightTopCorner'\n | 'leftBottomCorner'\n | 'rightBottomCorner';\n\nexport interface TableKeyboardOptions {\n /** tab键 默认为true。开启tab键移动选中单元格,如果当前是在编辑单元格 则移动到下一个单元格也是编辑状态 */\n moveFocusCellOnTab?: boolean;\n /** enter键 默认true 如果选中单元格可编辑则进入单元格编辑*/\n editCellOnEnter?: boolean;\n /** 默认不开启即false。开启这个配置的话,如果当前是在编辑中的单元格,方向键可以移动到下个单元格并进入编辑状态,而不是编辑文本内字符串的光标移动。上下左右方向键切换选中单元格不受该配置影响,*/\n moveEditCellOnArrowKeys?: boolean;\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 默认:false*/\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n /** 快捷键粘贴。粘贴内容到指定位置(即需要有选中状态),支持批量粘贴。 默认:false */\n pasteValueToCell?: boolean; //paste是和浏览器的快捷键一致的\n}\nexport interface TableEventOptions {\n /** 是否阻止右键的默认行为, 默认为true。*/\n preventDefaultContextMenu?: boolean;\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F, col: number, row: number, table: BaseTableAPI) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePagination: (pagination: IPagination) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n enableHierarchyState: boolean;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n\n fieldKey?: FieldKeyDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagination {\n /** 数据总条数 透视表中这个数据会自动加上 不需用户传入*/\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 传入用户实例化的数据对象 目前不完善\n */\n dataSource?: DataSource;\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n\n /** 分页配置 */\n pagination?: IPagination;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n /** 全局设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 全局设置编辑器 */\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 编辑触发时机 双击事件 单击事件 api手动开启编辑。默认为双击'doubleclick' */\n editCellTrigger?: 'doubleclick' | 'click' | 'api';\n /** 拖拽表头移动位置 针对冻结部分的规则 默认为fixedFrozenCount\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n editorManager: EditManeger;\n sortState: SortState[] | SortState | null;\n // internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][]) => void;\n getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n //#region 编辑器相关demo\n /** 获取单元格配置的编辑器 */\n getEditor: (col: number, row: number) => IEditor;\n /** 开启单元格编辑 */\n startEditCell: (col?: number, row?: number) => void;\n /** 结束编辑 */\n completeEditCell: () => void;\n //#endregion\n addRecord: (record: any, recordIndex?: number) => void;\n addRecords: (records: any[], recordIndex?: number) => void;\n deleteRecords: (recordIndexs: number[]) => void;\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n dataConfig?: IDataConfig;\n /**\n * 透视表是否开启数据分析 默认false\n * 如果传入数据是明细数据需要聚合分析则开启 赋值为true\n * 如传入数据是经过聚合好的为了提升性能这里设为false即可,同时呢需要传入自己组织好的行头树结构columnTree和rowTree\n */\n enableDataAnalysis?: boolean;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n /** 分页配置 */\n pagination?: IPagination;\n\n extensionRows?: IExtensionRowDefine[];\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\nexport interface PivotChartConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合, 平坦数据集合。另外一种特殊方式是传入分组后的数据,分组依据为指标\n */\n records?: any[] | Record<string, any[]>;\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IChartIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n\n axes?: ITableAxisOption[];\n}\nexport interface PivotTableAPI extends BaseTableAPI {\n records?: any;\n options: PivotTableConstructorOptions;\n editorManager: EditManeger;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][]) => void;\n}\nexport interface PivotChartAPI extends BaseTableAPI {\n records?: any | Record<string, any[]>;\n options: PivotChartConstructorOptions;\n // internalProps: PivotTableProtected;\n isListTable: () => false;\n isPivotTable: () => true;\n}\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n\nexport interface IExtensionRowDefine {\n rows: (IRowDimension | string)[];\n rowTree: IHeaderTreeDefine[] | ((args: { dimensionKey: string | number; value: string }[]) => IHeaderTreeDefine[]);\n}\n\nexport type StickCell = { col: number; row: number; dx: number; dy: number };\n\nexport type CustomMergeCell = (col: number, row: number, table: BaseTableAPI) => undefined | CustomMerge;\nexport type CustomMerge = {\n range: CellRange;\n text?: string;\n style?: ITextStyleOption;\n customLayout?: ICustomLayout;\n customRender?: ICustomRender;\n};\n"]}
package/es/vrender.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,MAAM,UAAU,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,gBAAgB,EAAE,CAAC;IAEnB,IAAI,YAAY,EAAE,EAAE;QAClB,cAAc,CAAC,SAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,SAAS,EAAE,EAAE;QACtB,WAAW,CAAC,SAAS,CAAC,CAAC;KACxB;IACD,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","file":"vrender.js","sourcesContent":["import '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule } from '@visactor/vrender-core';\nimport { loadBrowserEnv, loadNodeEnv } from '@visactor/vrender-kits';\nimport {\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"0.19.0\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n registerArc3d();\n registerArea();\n registerCircle();\n registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n registerPath();\n registerPolygon();\n registerPyramid3d();\n registerRect();\n registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerWrapText();\n}\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\n"]}
1
+ {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,MAAM,UAAU,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,gBAAgB,EAAE,CAAC;IAEnB,IAAI,YAAY,EAAE,EAAE;QAClB,cAAc,CAAC,SAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,SAAS,EAAE,EAAE;QACtB,WAAW,CAAC,SAAS,CAAC,CAAC;KACxB;IACD,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","file":"vrender.js","sourcesContent":["import '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule } from '@visactor/vrender-core';\nimport { loadBrowserEnv, loadNodeEnv } from '@visactor/vrender-kits';\nimport {\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"0.19.1\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n registerArc3d();\n registerArea();\n registerCircle();\n registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n registerPath();\n registerPolygon();\n registerPyramid3d();\n registerRect();\n registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerWrapText();\n}\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vtable",
3
- "version": "0.19.0",
3
+ "version": "0.19.1",
4
4
  "description": "canvas table width high performance",
5
5
  "keywords": [
6
6
  "grid",
@@ -43,11 +43,11 @@
43
43
  "@visactor/vscale": "~0.17.1",
44
44
  "@visactor/vdataset": "~0.17.1",
45
45
  "cssfontparser": "^1.2.1",
46
- "@visactor/vtable-editors": "0.19.0"
46
+ "@visactor/vtable-editors": "0.19.1"
47
47
  },
48
48
  "devDependencies": {
49
49
  "luxon": "*",
50
- "@visactor/vchart": "1.9.0",
50
+ "@visactor/vchart": "1.9.1",
51
51
  "@rushstack/eslint-patch": "~1.1.4",
52
52
  "react": "^18.0.0",
53
53
  "react-dom": "^18.0.0",
@@ -94,8 +94,8 @@
94
94
  "@resvg/resvg-js": "^2.5.0",
95
95
  "pikaday": "1.8.2",
96
96
  "@internal/bundler": "0.0.1",
97
- "@internal/eslint-config": "0.0.1",
98
- "@internal/ts-config": "0.0.1"
97
+ "@internal/ts-config": "0.0.1",
98
+ "@internal/eslint-config": "0.0.1"
99
99
  },
100
100
  "unpkg": "latest",
101
101
  "unpkgFiles": [