@visactor/vtable-sheet 1.20.0-alpha.0

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 (231) hide show
  1. package/cjs/components/vtable-sheet.d.ts +78 -0
  2. package/cjs/components/vtable-sheet.js +474 -0
  3. package/cjs/components/vtable-sheet.js.map +1 -0
  4. package/cjs/core/WorkSheet.d.ts +69 -0
  5. package/cjs/core/WorkSheet.js +298 -0
  6. package/cjs/core/WorkSheet.js.map +1 -0
  7. package/cjs/core/table-plugins.d.ts +3 -0
  8. package/cjs/core/table-plugins.js +171 -0
  9. package/cjs/core/table-plugins.js.map +1 -0
  10. package/cjs/event/event-manager.d.ts +29 -0
  11. package/cjs/event/event-manager.js +71 -0
  12. package/cjs/event/event-manager.js.map +1 -0
  13. package/cjs/event/event-target.d.ts +12 -0
  14. package/cjs/event/event-target.js +50 -0
  15. package/cjs/event/event-target.js.map +1 -0
  16. package/cjs/formula/cell-highlight-manager.d.ts +29 -0
  17. package/cjs/formula/cell-highlight-manager.js +141 -0
  18. package/cjs/formula/cell-highlight-manager.js.map +1 -0
  19. package/cjs/formula/formula-autocomplete.d.ts +39 -0
  20. package/cjs/formula/formula-autocomplete.js +239 -0
  21. package/cjs/formula/formula-autocomplete.js.map +1 -0
  22. package/cjs/formula/formula-editor.d.ts +21 -0
  23. package/cjs/formula/formula-editor.js +162 -0
  24. package/cjs/formula/formula-editor.js.map +1 -0
  25. package/cjs/formula/formula-helper.d.ts +8 -0
  26. package/cjs/formula/formula-helper.js +66 -0
  27. package/cjs/formula/formula-helper.js.map +1 -0
  28. package/cjs/formula/formula-range-selector.d.ts +19 -0
  29. package/cjs/formula/formula-range-selector.js +201 -0
  30. package/cjs/formula/formula-range-selector.js.map +1 -0
  31. package/cjs/formula/formula-throttle.d.ts +10 -0
  32. package/cjs/formula/formula-throttle.js +39 -0
  33. package/cjs/formula/formula-throttle.js.map +1 -0
  34. package/cjs/formula/formula-ui-manager.d.ts +19 -0
  35. package/cjs/formula/formula-ui-manager.js +226 -0
  36. package/cjs/formula/formula-ui-manager.js.map +1 -0
  37. package/cjs/formula/index.d.ts +5 -0
  38. package/cjs/formula/index.js +23 -0
  39. package/cjs/formula/index.js.map +1 -0
  40. package/cjs/index.d.ts +6 -0
  41. package/cjs/index.js +50 -0
  42. package/cjs/index.js.map +1 -0
  43. package/cjs/managers/formula-manager.d.ts +82 -0
  44. package/cjs/managers/formula-manager.js +445 -0
  45. package/cjs/managers/formula-manager.js.map +1 -0
  46. package/cjs/managers/menu-manager.d.ts +12 -0
  47. package/cjs/managers/menu-manager.js +89 -0
  48. package/cjs/managers/menu-manager.js.map +1 -0
  49. package/cjs/managers/sheet-manager.d.ts +21 -0
  50. package/cjs/managers/sheet-manager.js +74 -0
  51. package/cjs/managers/sheet-manager.js.map +1 -0
  52. package/cjs/managers/tab-drag-manager.d.ts +24 -0
  53. package/cjs/managers/tab-drag-manager.js +121 -0
  54. package/cjs/managers/tab-drag-manager.js.map +1 -0
  55. package/cjs/sheet-helper.d.ts +16 -0
  56. package/cjs/sheet-helper.js +64 -0
  57. package/cjs/sheet-helper.js.map +1 -0
  58. package/cjs/styles/common.d.ts +1 -0
  59. package/cjs/styles/common.js +17 -0
  60. package/cjs/styles/common.js.map +1 -0
  61. package/cjs/styles/formula-autocomplete.d.ts +1 -0
  62. package/cjs/styles/formula-autocomplete.js +17 -0
  63. package/cjs/styles/formula-autocomplete.js.map +1 -0
  64. package/cjs/styles/formula-bar.d.ts +1 -0
  65. package/cjs/styles/formula-bar.js +17 -0
  66. package/cjs/styles/formula-bar.js.map +1 -0
  67. package/cjs/styles/menu.d.ts +1 -0
  68. package/cjs/styles/menu.js +17 -0
  69. package/cjs/styles/menu.js.map +1 -0
  70. package/cjs/styles/sheet-tab.d.ts +1 -0
  71. package/cjs/styles/sheet-tab.js +17 -0
  72. package/cjs/styles/sheet-tab.js.map +1 -0
  73. package/cjs/styles/sheet.d.ts +1 -0
  74. package/cjs/styles/sheet.js +17 -0
  75. package/cjs/styles/sheet.js.map +1 -0
  76. package/cjs/styles/style-manager.d.ts +1 -0
  77. package/cjs/styles/style-manager.js +15 -0
  78. package/cjs/styles/style-manager.js.map +1 -0
  79. package/cjs/test/formula-complete.test.d.ts +1 -0
  80. package/cjs/test/formula-complete.test.js +42 -0
  81. package/cjs/test/formula-complete.test.js.map +1 -0
  82. package/cjs/tools/env.d.ts +20 -0
  83. package/cjs/tools/env.js +59 -0
  84. package/cjs/tools/env.js.map +1 -0
  85. package/cjs/tools/index.d.ts +3 -0
  86. package/cjs/tools/index.js +16 -0
  87. package/cjs/tools/index.js.map +1 -0
  88. package/cjs/tools/ui/snackbar.d.ts +1 -0
  89. package/cjs/tools/ui/snackbar.js +20 -0
  90. package/cjs/tools/ui/snackbar.js.map +1 -0
  91. package/cjs/ts-types/base.d.ts +44 -0
  92. package/cjs/ts-types/base.js +14 -0
  93. package/cjs/ts-types/base.js.map +1 -0
  94. package/cjs/ts-types/event.d.ts +79 -0
  95. package/cjs/ts-types/event.js +6 -0
  96. package/cjs/ts-types/event.js.map +1 -0
  97. package/cjs/ts-types/events.d.ts +1 -0
  98. package/cjs/ts-types/events.js +3 -0
  99. package/cjs/ts-types/events.js.map +1 -0
  100. package/cjs/ts-types/filter.d.ts +58 -0
  101. package/cjs/ts-types/filter.js +16 -0
  102. package/cjs/ts-types/filter.js.map +1 -0
  103. package/cjs/ts-types/formula.d.ts +51 -0
  104. package/cjs/ts-types/formula.js +6 -0
  105. package/cjs/ts-types/formula.js.map +1 -0
  106. package/cjs/ts-types/index.d.ts +67 -0
  107. package/cjs/ts-types/index.js +37 -0
  108. package/cjs/ts-types/index.js.map +1 -0
  109. package/cjs/ts-types/sheet.d.ts +45 -0
  110. package/cjs/ts-types/sheet.js +6 -0
  111. package/cjs/ts-types/sheet.js.map +1 -0
  112. package/cjs/vtable.d.ts +1 -0
  113. package/cjs/vtable.js +35 -0
  114. package/cjs/vtable.js.map +1 -0
  115. package/dist/vtable-sheet.js +114494 -0
  116. package/dist/vtable-sheet.min.js +853 -0
  117. package/es/components/vtable-sheet.d.ts +78 -0
  118. package/es/components/vtable-sheet.js +462 -0
  119. package/es/components/vtable-sheet.js.map +1 -0
  120. package/es/core/WorkSheet.d.ts +69 -0
  121. package/es/core/WorkSheet.js +298 -0
  122. package/es/core/WorkSheet.js.map +1 -0
  123. package/es/core/table-plugins.d.ts +3 -0
  124. package/es/core/table-plugins.js +164 -0
  125. package/es/core/table-plugins.js.map +1 -0
  126. package/es/event/event-manager.d.ts +29 -0
  127. package/es/event/event-manager.js +63 -0
  128. package/es/event/event-manager.js.map +1 -0
  129. package/es/event/event-target.d.ts +12 -0
  130. package/es/event/event-target.js +42 -0
  131. package/es/event/event-target.js.map +1 -0
  132. package/es/formula/cell-highlight-manager.d.ts +29 -0
  133. package/es/formula/cell-highlight-manager.js +133 -0
  134. package/es/formula/cell-highlight-manager.js.map +1 -0
  135. package/es/formula/formula-autocomplete.d.ts +39 -0
  136. package/es/formula/formula-autocomplete.js +231 -0
  137. package/es/formula/formula-autocomplete.js.map +1 -0
  138. package/es/formula/formula-editor.d.ts +21 -0
  139. package/es/formula/formula-editor.js +135 -0
  140. package/es/formula/formula-editor.js.map +1 -0
  141. package/es/formula/formula-helper.d.ts +8 -0
  142. package/es/formula/formula-helper.js +60 -0
  143. package/es/formula/formula-helper.js.map +1 -0
  144. package/es/formula/formula-range-selector.d.ts +19 -0
  145. package/es/formula/formula-range-selector.js +195 -0
  146. package/es/formula/formula-range-selector.js.map +1 -0
  147. package/es/formula/formula-throttle.d.ts +10 -0
  148. package/es/formula/formula-throttle.js +31 -0
  149. package/es/formula/formula-throttle.js.map +1 -0
  150. package/es/formula/formula-ui-manager.d.ts +19 -0
  151. package/es/formula/formula-ui-manager.js +218 -0
  152. package/es/formula/formula-ui-manager.js.map +1 -0
  153. package/es/formula/index.d.ts +5 -0
  154. package/es/formula/index.js +10 -0
  155. package/es/formula/index.js.map +1 -0
  156. package/es/index.d.ts +6 -0
  157. package/es/index.js +13 -0
  158. package/es/index.js.map +1 -0
  159. package/es/managers/formula-manager.d.ts +82 -0
  160. package/es/managers/formula-manager.js +441 -0
  161. package/es/managers/formula-manager.js.map +1 -0
  162. package/es/managers/menu-manager.d.ts +12 -0
  163. package/es/managers/menu-manager.js +81 -0
  164. package/es/managers/menu-manager.js.map +1 -0
  165. package/es/managers/sheet-manager.d.ts +21 -0
  166. package/es/managers/sheet-manager.js +66 -0
  167. package/es/managers/sheet-manager.js.map +1 -0
  168. package/es/managers/tab-drag-manager.d.ts +24 -0
  169. package/es/managers/tab-drag-manager.js +113 -0
  170. package/es/managers/tab-drag-manager.js.map +1 -0
  171. package/es/sheet-helper.d.ts +16 -0
  172. package/es/sheet-helper.js +54 -0
  173. package/es/sheet-helper.js.map +1 -0
  174. package/es/styles/common.d.ts +1 -0
  175. package/es/styles/common.js +9 -0
  176. package/es/styles/common.js.map +1 -0
  177. package/es/styles/formula-autocomplete.d.ts +1 -0
  178. package/es/styles/formula-autocomplete.js +9 -0
  179. package/es/styles/formula-autocomplete.js.map +1 -0
  180. package/es/styles/formula-bar.d.ts +1 -0
  181. package/es/styles/formula-bar.js +9 -0
  182. package/es/styles/formula-bar.js.map +1 -0
  183. package/es/styles/menu.d.ts +1 -0
  184. package/es/styles/menu.js +9 -0
  185. package/es/styles/menu.js.map +1 -0
  186. package/es/styles/sheet-tab.d.ts +1 -0
  187. package/es/styles/sheet-tab.js +9 -0
  188. package/es/styles/sheet-tab.js.map +1 -0
  189. package/es/styles/sheet.d.ts +1 -0
  190. package/es/styles/sheet.js +9 -0
  191. package/es/styles/sheet.js.map +1 -0
  192. package/es/styles/style-manager.d.ts +1 -0
  193. package/es/styles/style-manager.js +17 -0
  194. package/es/styles/style-manager.js.map +1 -0
  195. package/es/test/formula-complete.test.d.ts +1 -0
  196. package/es/test/formula-complete.test.js +36 -0
  197. package/es/test/formula-complete.test.js.map +1 -0
  198. package/es/tools/env.d.ts +20 -0
  199. package/es/tools/env.js +53 -0
  200. package/es/tools/env.js.map +1 -0
  201. package/es/tools/index.d.ts +3 -0
  202. package/es/tools/index.js +9 -0
  203. package/es/tools/index.js.map +1 -0
  204. package/es/tools/ui/snackbar.d.ts +1 -0
  205. package/es/tools/ui/snackbar.js +14 -0
  206. package/es/tools/ui/snackbar.js.map +1 -0
  207. package/es/ts-types/base.d.ts +44 -0
  208. package/es/ts-types/base.js +14 -0
  209. package/es/ts-types/base.js.map +1 -0
  210. package/es/ts-types/event.d.ts +79 -0
  211. package/es/ts-types/event.js +2 -0
  212. package/es/ts-types/event.js.map +1 -0
  213. package/es/ts-types/events.d.ts +1 -0
  214. package/es/ts-types/events.js +3 -0
  215. package/es/ts-types/events.js.map +1 -0
  216. package/es/ts-types/filter.d.ts +58 -0
  217. package/es/ts-types/filter.js +16 -0
  218. package/es/ts-types/filter.js.map +1 -0
  219. package/es/ts-types/formula.d.ts +51 -0
  220. package/es/ts-types/formula.js +2 -0
  221. package/es/ts-types/formula.js.map +1 -0
  222. package/es/ts-types/index.d.ts +67 -0
  223. package/es/ts-types/index.js +14 -0
  224. package/es/ts-types/index.js.map +1 -0
  225. package/es/ts-types/sheet.d.ts +45 -0
  226. package/es/ts-types/sheet.js +2 -0
  227. package/es/ts-types/sheet.js.map +1 -0
  228. package/es/vtable.d.ts +1 -0
  229. package/es/vtable.js +2 -0
  230. package/es/vtable.js.map +1 -0
  231. package/package.json +120 -0
@@ -0,0 +1,79 @@
1
+ import type { CellCoord, CellRange, CellValue } from './base';
2
+ export type EventHandler = (...args: any[]) => void;
3
+ export interface IEventMap {
4
+ 'cell:selected': {
5
+ coord: CellCoord;
6
+ };
7
+ 'cell:deselected': {
8
+ coord: CellCoord;
9
+ };
10
+ 'cell:changed': {
11
+ coord: CellCoord;
12
+ oldValue: CellValue;
13
+ newValue: CellValue;
14
+ };
15
+ 'cell:editing': {
16
+ coord: CellCoord;
17
+ };
18
+ 'cell:edited': {
19
+ coord: CellCoord;
20
+ value: CellValue;
21
+ };
22
+ 'selection:changed': {
23
+ range: CellRange;
24
+ };
25
+ 'selection:start': {
26
+ coord: CellCoord;
27
+ };
28
+ 'selection:end': {
29
+ range: CellRange;
30
+ };
31
+ 'sheet:ready': void;
32
+ 'sheet:destroyed': void;
33
+ 'sheet:resized': {
34
+ width: number;
35
+ height: number;
36
+ };
37
+ 'sheet:focused': void;
38
+ 'sheet:blurred': void;
39
+ 'data:changed': {
40
+ changes: Array<{
41
+ coord: CellCoord;
42
+ oldValue: CellValue;
43
+ newValue: CellValue;
44
+ }>;
45
+ };
46
+ 'data:loaded': void;
47
+ 'data:sorted': {
48
+ columnKey: string;
49
+ direction: 'asc' | 'desc';
50
+ };
51
+ 'data:filtered': {
52
+ filters: Array<{
53
+ columnKey: string;
54
+ value: any;
55
+ }>;
56
+ };
57
+ 'toolbar:action': {
58
+ actionId: string;
59
+ };
60
+ 'toolbar:stateChanged': {
61
+ actionId: string;
62
+ enabled: boolean;
63
+ };
64
+ }
65
+ export interface IEventManager {
66
+ on: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;
67
+ off: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;
68
+ emit: <K extends keyof IEventMap>(event: K, payload: IEventMap[K]) => void;
69
+ once: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;
70
+ removeAllListeners: () => void;
71
+ }
72
+ export interface CellValueChangedEvent {
73
+ row: number;
74
+ col: number;
75
+ newValue: CellValue;
76
+ oldValue: CellValue;
77
+ }
78
+ export type CellSelectedEvent = IEventMap['cell:selected'];
79
+ export type SelectionChangedEvent = IEventMap['selection:changed'];
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/event.ts"],"names":[],"mappings":"","file":"event.js","sourcesContent":["import type { CellCoord, CellRange, CellValue } from './base';\n\n/** 事件处理器类型 */\nexport type EventHandler = (...args: any[]) => void;\n\n/** 事件映射表 */\nexport interface IEventMap {\n // 单元格事件\n 'cell:selected': { coord: CellCoord };\n 'cell:deselected': { coord: CellCoord };\n 'cell:changed': { coord: CellCoord; oldValue: CellValue; newValue: CellValue };\n 'cell:editing': { coord: CellCoord };\n 'cell:edited': { coord: CellCoord; value: CellValue };\n\n // 选择事件\n 'selection:changed': { range: CellRange };\n 'selection:start': { coord: CellCoord };\n 'selection:end': { range: CellRange };\n\n // Sheet事件\n 'sheet:ready': void;\n 'sheet:destroyed': void;\n 'sheet:resized': { width: number; height: number };\n 'sheet:focused': void;\n 'sheet:blurred': void;\n\n // 数据事件\n 'data:changed': { changes: Array<{ coord: CellCoord; oldValue: CellValue; newValue: CellValue }> };\n 'data:loaded': void;\n 'data:sorted': { columnKey: string; direction: 'asc' | 'desc' };\n 'data:filtered': { filters: Array<{ columnKey: string; value: any }> };\n\n // 工具栏事件\n 'toolbar:action': { actionId: string };\n 'toolbar:stateChanged': { actionId: string; enabled: boolean };\n}\n\n/** 事件管理器接口 */\nexport interface IEventManager {\n /** 注册事件监听器 */\n on: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;\n\n /** 移除事件监听器 */\n off: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;\n\n /** 触发事件 */\n emit: <K extends keyof IEventMap>(event: K, payload: IEventMap[K]) => void;\n\n /** 一次性事件监听器 */\n once: <K extends keyof IEventMap>(event: K, handler: (payload: IEventMap[K]) => void) => void;\n\n /** 移除所有事件监听器 */\n removeAllListeners: () => void;\n}\n\nexport interface CellValueChangedEvent {\n /** 行索引 */\n row: number;\n /** 列索引 */\n col: number;\n /** 新值 */\n newValue: CellValue;\n /** 旧值 */\n oldValue: CellValue;\n}\n\nexport type CellSelectedEvent = IEventMap['cell:selected'];\nexport type SelectionChangedEvent = IEventMap['selection:changed'];\n"]}
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,3 @@
1
+
2
+
3
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":[""]}
@@ -0,0 +1,58 @@
1
+ export declare enum FilterType {
2
+ VALUE_LIST = "valueList",
3
+ CONDITION = "condition"
4
+ }
5
+ export declare enum FilterOperator {
6
+ EQUALS = "equals",
7
+ NOT_EQUALS = "notEquals",
8
+ GREATER_THAN = "greaterThan",
9
+ GREATER_THAN_OR_EQUAL = "greaterThanOrEqual",
10
+ LESS_THAN = "lessThan",
11
+ LESS_THAN_OR_EQUAL = "lessThanOrEqual",
12
+ CONTAINS = "contains",
13
+ NOT_CONTAINS = "notContains",
14
+ STARTS_WITH = "startsWith",
15
+ ENDS_WITH = "endsWith",
16
+ BETWEEN = "between"
17
+ }
18
+ export interface IValueListFilter {
19
+ type: FilterType.VALUE_LIST;
20
+ values: any[];
21
+ exclude?: boolean;
22
+ }
23
+ export interface IConditionFilter {
24
+ type: FilterType.CONDITION;
25
+ operator: FilterOperator;
26
+ value: any;
27
+ value2?: any;
28
+ }
29
+ export type Filter = IValueListFilter | IConditionFilter;
30
+ export interface IColumnFilter {
31
+ columnKey: string;
32
+ filter: Filter;
33
+ }
34
+ export interface IFilterStateConfig {
35
+ enable: boolean;
36
+ field: string | number;
37
+ type: 'byValue' | 'byCondition';
38
+ values?: any[];
39
+ operator?: string;
40
+ condition?: any;
41
+ }
42
+ export interface IFilterState {
43
+ filters: Record<string | number, IFilterStateConfig>;
44
+ }
45
+ export interface IFilterManager {
46
+ setFilter: (columnKey: string, filter: Filter) => void;
47
+ getFilter: (columnKey: string) => Filter | null;
48
+ removeFilter: (columnKey: string) => void;
49
+ applyFilters: () => void;
50
+ resetFilters: () => void;
51
+ getFilteredData: () => any[][];
52
+ getAllFilters: () => IColumnFilter[];
53
+ getFilterState: () => {
54
+ [columnKey: string]: boolean;
55
+ };
56
+ onFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;
57
+ offFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;
58
+ }
@@ -0,0 +1,16 @@
1
+ export var FilterType;
2
+
3
+ !function(FilterType) {
4
+ FilterType.VALUE_LIST = "valueList", FilterType.CONDITION = "condition";
5
+ }(FilterType || (FilterType = {}));
6
+
7
+ export var FilterOperator;
8
+
9
+ !function(FilterOperator) {
10
+ FilterOperator.EQUALS = "equals", FilterOperator.NOT_EQUALS = "notEquals", FilterOperator.GREATER_THAN = "greaterThan",
11
+ FilterOperator.GREATER_THAN_OR_EQUAL = "greaterThanOrEqual", FilterOperator.LESS_THAN = "lessThan",
12
+ FilterOperator.LESS_THAN_OR_EQUAL = "lessThanOrEqual", FilterOperator.CONTAINS = "contains",
13
+ FilterOperator.NOT_CONTAINS = "notContains", FilterOperator.STARTS_WITH = "startsWith",
14
+ FilterOperator.ENDS_WITH = "endsWith", FilterOperator.BETWEEN = "between";
15
+ }(FilterOperator || (FilterOperator = {}));
16
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/filter.ts"],"names":[],"mappings":"AACA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IAEpB,sCAAwB,CAAA;IAExB,qCAAuB,CAAA;AACzB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAGD,MAAM,CAAN,IAAY,cAYX;AAZD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,0CAAwB,CAAA;IACxB,8CAA4B,CAAA;IAC5B,8DAA4C,CAAA;IAC5C,wCAAsB,CAAA;IACtB,wDAAsC,CAAA;IACtC,uCAAqB,CAAA;IACrB,8CAA4B,CAAA;IAC5B,4CAA0B,CAAA;IAC1B,wCAAsB,CAAA;IACtB,qCAAmB,CAAA;AACrB,CAAC,EAZW,cAAc,KAAd,cAAc,QAYzB","file":"filter.js","sourcesContent":["/** 过滤条件类型 */\nexport enum FilterType {\n /** 值列表过滤 */\n VALUE_LIST = 'valueList',\n /** 条件过滤 */\n CONDITION = 'condition'\n}\n\n/** 过滤条件操作符 */\nexport enum FilterOperator {\n EQUALS = 'equals',\n NOT_EQUALS = 'notEquals',\n GREATER_THAN = 'greaterThan',\n GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual',\n LESS_THAN = 'lessThan',\n LESS_THAN_OR_EQUAL = 'lessThanOrEqual',\n CONTAINS = 'contains',\n NOT_CONTAINS = 'notContains',\n STARTS_WITH = 'startsWith',\n ENDS_WITH = 'endsWith',\n BETWEEN = 'between'\n}\n\n/** 值列表过滤定义 */\nexport interface IValueListFilter {\n /** 类型 */\n type: FilterType.VALUE_LIST;\n /** 值列表 */\n values: any[];\n /** 是否排除 */\n exclude?: boolean;\n}\n\n/** 条件过滤定义 */\nexport interface IConditionFilter {\n type: FilterType.CONDITION;\n operator: FilterOperator;\n value: any;\n value2?: any; // 用于between操作符\n}\n\n/** 过滤定义 */\nexport type Filter = IValueListFilter | IConditionFilter;\n\n/** 列过滤定义 */\nexport interface IColumnFilter {\n columnKey: string;\n filter: Filter;\n}\n\n/** 筛选状态配置 */\nexport interface IFilterStateConfig {\n enable: boolean; // 是否启用筛选\n field: string | number; // 对应表格列,同时作为筛选配置的唯一标识\n type: 'byValue' | 'byCondition'; // 筛选类型\n values?: any[]; // 按值筛选时的值列表\n operator?: string; // 按条件筛选时的操作符\n condition?: any; // 按条件筛选时的具体条件\n}\n\n/** 筛选状态 */\nexport interface IFilterState {\n /** 筛选配置映射,键为列索引或字段名,值为筛选配置 */\n filters: Record<string | number, IFilterStateConfig>;\n}\n\n/** 过滤管理器接口 */\nexport interface IFilterManager {\n /** 设置列过滤器 */\n setFilter: (columnKey: string, filter: Filter) => void;\n\n /** 获取列过滤器 */\n getFilter: (columnKey: string) => Filter | null;\n\n /** 移除列过滤器 */\n removeFilter: (columnKey: string) => void;\n\n /** 应用过滤器 */\n applyFilters: () => void;\n\n /** 重置所有过滤器 */\n resetFilters: () => void;\n\n /** 获取过滤后的数据 */\n getFilteredData: () => any[][];\n\n /** 获取所有过滤器 */\n getAllFilters: () => IColumnFilter[];\n\n /** 获取过滤状态 */\n getFilterState: () => { [columnKey: string]: boolean };\n\n /** 监听过滤变化 */\n onFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;\n\n /** 移除过滤变化监听 */\n offFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;\n}\n"]}
@@ -0,0 +1,51 @@
1
+ import type { CellAddress, CellValue } from './base';
2
+ export interface IFormulaCell {
3
+ sheet: string;
4
+ address: CellAddress;
5
+ formula: string;
6
+ value: CellValue;
7
+ dependencies: CellAddress[];
8
+ error?: string;
9
+ }
10
+ export interface FormulaCell {
11
+ sheet: string;
12
+ row: number;
13
+ col: number;
14
+ }
15
+ export interface IFormulaResult {
16
+ value: CellValue;
17
+ error?: string;
18
+ }
19
+ export interface FormulaResult {
20
+ value: any;
21
+ error?: string | any;
22
+ }
23
+ export interface IFormulaFunction {
24
+ name: string;
25
+ description: string;
26
+ params: Array<{
27
+ name: string;
28
+ description: string;
29
+ optional?: boolean;
30
+ }>;
31
+ execute: (...args: any[]) => CellValue;
32
+ }
33
+ export interface IFormulaManagerOptions {
34
+ enabled: boolean;
35
+ customFunctions?: Record<string, IFormulaFunction>;
36
+ maxRecursionDepth?: number;
37
+ cacheResults?: boolean;
38
+ }
39
+ export interface IFormulaManager {
40
+ registerFormula: (cell: CellAddress, formula: string) => void;
41
+ getFormula: (cell: CellAddress) => IFormulaCell | null;
42
+ evaluateFormula: (formula: string, context?: any) => IFormulaResult;
43
+ updateDependencies: (cell: CellAddress) => void;
44
+ getDependentCells: (cell: CellAddress) => CellAddress[];
45
+ checkCircularDependency: (cell: CellAddress, formula: string) => boolean;
46
+ registerFunction: (func: IFormulaFunction) => void;
47
+ getAllFormulas: () => Record<string, IFormulaCell>;
48
+ clearCache: () => void;
49
+ exportFormulas: () => Record<string, string>;
50
+ importFormulas: (formulas: Record<string, string>) => void;
51
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=formula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/formula.ts"],"names":[],"mappings":"","file":"formula.js","sourcesContent":["import type { CellAddress, CellValue } from './base';\n\n/** 公式单元格 */\nexport interface IFormulaCell {\n /** 所属sheet */\n sheet: string;\n /** 单元格地址 */\n address: CellAddress;\n /** 公式内容 */\n formula: string;\n /** 计算后的值 */\n value: CellValue;\n /** 依赖的单元格 */\n dependencies: CellAddress[];\n /** 错误信息 */\n error?: string;\n}\n\n/** 简化的公式单元格坐标 - 用于FormulaManager */\nexport interface FormulaCell {\n sheet: string;\n row: number;\n col: number;\n}\n\n/** 公式计算结果 */\nexport interface IFormulaResult {\n value: CellValue;\n error?: string;\n}\n\n/** 简化的公式计算结果 - 用于FormulaManager */\nexport interface FormulaResult {\n value: any;\n error?: string | any;\n}\n\n/** 公式函数定义 */\nexport interface IFormulaFunction {\n /** 函数名称 */\n name: string;\n /** 函数描述 */\n description: string;\n /** 参数列表 */\n params: Array<{\n name: string;\n description: string;\n optional?: boolean;\n }>;\n /** 执行函数 */\n execute: (...args: any[]) => CellValue;\n}\n\n/** 公式管理器配置 */\nexport interface IFormulaManagerOptions {\n /** 是否启用公式计算 */\n enabled: boolean;\n /** 自定义公式函数 */\n customFunctions?: Record<string, IFormulaFunction>;\n /** 最大递归深度 */\n maxRecursionDepth?: number;\n /** 是否缓存计算结果 */\n cacheResults?: boolean;\n}\n\n/** 公式管理器接口 */\nexport interface IFormulaManager {\n /** 注册公式 */\n registerFormula: (cell: CellAddress, formula: string) => void;\n\n /** 获取公式 */\n getFormula: (cell: CellAddress) => IFormulaCell | null;\n\n /** 计算公式 */\n evaluateFormula: (formula: string, context?: any) => IFormulaResult;\n\n /** 更新公式依赖单元格的值 */\n updateDependencies: (cell: CellAddress) => void;\n\n /** 获取依赖某个单元格的所有单元格 */\n getDependentCells: (cell: CellAddress) => CellAddress[];\n\n /** 检查循环依赖 */\n checkCircularDependency: (cell: CellAddress, formula: string) => boolean;\n\n /** 注册自定义公式函数 */\n registerFunction: (func: IFormulaFunction) => void;\n\n /** 获取所有公式 */\n getAllFormulas: () => Record<string, IFormulaCell>;\n\n /** 清除公式缓存 */\n clearCache: () => void;\n\n /** 导出公式 */\n exportFormulas: () => Record<string, string>;\n\n /** 导入公式 */\n importFormulas: (formulas: Record<string, string>) => void;\n}\n"]}
@@ -0,0 +1,67 @@
1
+ import type { ColumnDefine } from '@visactor/vtable';
2
+ import { TYPES as VTableTypes, themes as VTableThemes } from '@visactor/vtable';
3
+ import type { CellValue, MainMenuItem } from './base';
4
+ import type { IFilterState } from './filter';
5
+ import type { TableSeriesNumberOptions } from '@visactor/vtable-plugins';
6
+ import type { SortState } from '@visactor/vtable/es/ts-types';
7
+ export { VTableThemes, VTableTypes };
8
+ export interface IFilterConfig {
9
+ filterModes?: ('byValue' | 'byCondition')[];
10
+ }
11
+ export interface IColumnDefine extends Omit<ColumnDefine, 'field'> {
12
+ filter?: boolean;
13
+ }
14
+ export interface ISheetDefine {
15
+ sheetTitle: string;
16
+ sheetKey: string;
17
+ columnCount?: number;
18
+ rowCount?: number;
19
+ columns?: IColumnDefine[];
20
+ data?: (CellValue[] | null)[];
21
+ active?: boolean;
22
+ cellMerge?: VTableTypes.CustomMergeCellArray;
23
+ frozenRowCount?: number;
24
+ frozenColCount?: number;
25
+ showHeader?: boolean;
26
+ firstRowAsHeader?: boolean;
27
+ formulas?: Record<string, string>;
28
+ filter?: boolean | IFilterConfig;
29
+ filterState?: IFilterState;
30
+ sortState?: SortState[] | SortState | null;
31
+ theme?: IThemeDefine;
32
+ }
33
+ export interface IThemeDefine {
34
+ rowSeriesNumberCellStyle?: TableSeriesNumberOptions['rowSeriesNumberCellStyle'];
35
+ colSeriesNumberCellStyle?: TableSeriesNumberOptions['colSeriesNumberCellStyle'];
36
+ menuStyle?: {
37
+ fontFamily?: string;
38
+ fontSize?: number;
39
+ color?: string;
40
+ padding?: number[];
41
+ bgColor?: string;
42
+ };
43
+ tableTheme: VTableThemes.ITableThemeDefine;
44
+ }
45
+ export interface IVTableSheetOptions {
46
+ sheets: ISheetDefine[];
47
+ showToolbar?: boolean;
48
+ showFormulaBar?: boolean;
49
+ showSheetTab?: boolean;
50
+ VTablePluginModules?: {
51
+ module: any;
52
+ moduleOptions?: any;
53
+ disabled?: boolean;
54
+ }[];
55
+ mainMenu?: {
56
+ show?: boolean;
57
+ items?: MainMenuItem[];
58
+ };
59
+ theme?: IThemeDefine;
60
+ defaultRowHeight?: number;
61
+ defaultColWidth?: number;
62
+ }
63
+ export * from './base';
64
+ export * from './event';
65
+ export * from './formula';
66
+ export * from './filter';
67
+ export * from './sheet';
@@ -0,0 +1,14 @@
1
+ import { TYPES as VTableTypes, themes as VTableThemes } from "@visactor/vtable";
2
+
3
+ export { VTableThemes, VTableTypes };
4
+
5
+ export * from "./base";
6
+
7
+ export * from "./event";
8
+
9
+ export * from "./formula";
10
+
11
+ export * from "./filter";
12
+
13
+ export * from "./sheet";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AA8FrC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC","file":"index.js","sourcesContent":["import type { ColumnDefine } from '@visactor/vtable';\nimport { TYPES as VTableTypes, themes as VTableThemes } from '@visactor/vtable';\nimport type { CellValue, IStyle, MainMenuItem } from './base';\nimport type { IFilterState } from './filter';\nimport type { TableSeriesNumberOptions } from '@visactor/vtable-plugins';\nimport type { SortState } from '@visactor/vtable/es/ts-types';\nexport { VTableThemes, VTableTypes };\n/** 筛选配置 */\nexport interface IFilterConfig {\n /** 指定筛选器支持的筛选模式(按值、按条件、或两者) */\n filterModes?: ('byValue' | 'byCondition')[];\n}\n\n/** 扩展的列定义,添加筛选相关配置 */\nexport interface IColumnDefine extends Omit<ColumnDefine, 'field'> {\n /** 是否启用筛选功能 */\n filter?: boolean;\n}\n\n/** Sheet定义 */\nexport interface ISheetDefine {\n /** 标题 */\n sheetTitle: string;\n /** 唯一标识 */\n sheetKey: string;\n /** 列数 */\n columnCount?: number;\n /** 行数 */\n rowCount?: number;\n /** 表头定义 */\n columns?: IColumnDefine[];\n /** 数据 */\n data?: (CellValue[] | null)[];\n /** 是否是当前活动sheet TODO 是不是放到外层更好*/\n active?: boolean;\n cellMerge?: VTableTypes.CustomMergeCellArray;\n /** 冻结行数 */\n frozenRowCount?: number;\n /** 冻结列数 */\n frozenColCount?: number;\n /** 是否显示表头 */\n showHeader?: boolean;\n /** 是否将第一行作为表头 */\n firstRowAsHeader?: boolean;\n /** 公式定义 */\n formulas?: Record<string, string>;\n /** 筛选配置 - 支持简单布尔值或详细配置对象 */\n filter?: boolean | IFilterConfig;\n /** 筛选状态 - 保存当前的筛选条件和状态 */\n filterState?: IFilterState;\n /** 排序状态 */\n sortState?: SortState[] | SortState | null;\n /** 主题 */\n theme?: IThemeDefine;\n}\nexport interface IThemeDefine {\n rowSeriesNumberCellStyle?: TableSeriesNumberOptions['rowSeriesNumberCellStyle'];\n colSeriesNumberCellStyle?: TableSeriesNumberOptions['colSeriesNumberCellStyle'];\n /** TODO 表格以外部分的主题 */\n menuStyle?: {\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n padding?: number[];\n bgColor?: string;\n };\n tableTheme: VTableThemes.ITableThemeDefine;\n}\n/** VTableSheet配置 */\nexport interface IVTableSheetOptions {\n /** Sheet列表 */\n sheets: ISheetDefine[];\n /** 是否显示工具栏 */\n showToolbar?: boolean;\n /** 是否显示公式栏 */\n showFormulaBar?: boolean;\n /** 是否显示sheet切换栏 */\n showSheetTab?: boolean;\n /** 插件 */\n VTablePluginModules?: {\n module: any;\n moduleOptions?: any;\n /** vtable-sheet逻辑中使用到的插件,可以通过这个配置来禁用掉 */\n disabled?: boolean;\n }[];\n\n /** 主菜单 */\n mainMenu?: {\n /** 是否显示 */\n show?: boolean;\n /** 菜单项 */\n items?: MainMenuItem[];\n };\n /** 主题 */\n theme?: IThemeDefine;\n /** 默认行高 */\n defaultRowHeight?: number;\n /** 默认列宽 */\n defaultColWidth?: number;\n}\nexport * from './base';\nexport * from './event';\nexport * from './formula';\nexport * from './filter';\nexport * from './sheet';\n"]}
@@ -0,0 +1,45 @@
1
+ import type { IColumnDefine, ISheetDefine } from './index';
2
+ import type { CellCoord, CellRange, CellValue } from './base';
3
+ import type { ListTableConstructorOptions } from '@visactor/vtable';
4
+ export interface IWorkSheetOptions extends Omit<ListTableConstructorOptions, 'records' | 'columns'> {
5
+ sheetKey: string;
6
+ sheetTitle: string;
7
+ container: HTMLElement;
8
+ data?: any[][];
9
+ showHeader?: boolean;
10
+ firstRowAsHeader?: boolean;
11
+ filter?: boolean;
12
+ columns?: (IColumnDefine & {
13
+ field: string | number;
14
+ })[];
15
+ }
16
+ export interface IWorkSheetAPI {
17
+ getCellValue: (row: number, col: number) => CellValue;
18
+ setCellValue: (row: number, col: number, value: CellValue) => void;
19
+ getCellByAddress: (address: string) => {
20
+ coord: CellCoord;
21
+ value: CellValue;
22
+ };
23
+ addressFromCoord: (coord: CellCoord) => string;
24
+ coordFromAddress: (address: string) => CellCoord;
25
+ getSelection: () => CellRange | null;
26
+ getData: () => CellValue[][];
27
+ setData: (data: CellValue[][]) => void;
28
+ getRowCount: () => number;
29
+ getColumnCount: () => number;
30
+ }
31
+ export interface ISheetManager {
32
+ getActiveSheet: () => ISheetDefine | null;
33
+ setActiveSheet: (sheetKey: string) => void;
34
+ addSheet: (sheet: ISheetDefine) => void;
35
+ removeSheet: (sheetKey: string) => void;
36
+ renameSheet: (sheetKey: string, newTitle: string) => void;
37
+ getAllSheets: () => ISheetDefine[];
38
+ getSheet: (sheetKey: string) => ISheetDefine | null;
39
+ getSheetCount: () => number;
40
+ getSheetAPI: (sheetKey: string) => IWorkSheetAPI | null;
41
+ onSheetChange: (callback: (sheets: ISheetDefine[]) => void) => void;
42
+ offSheetChange: (callback: (sheets: ISheetDefine[]) => void) => void;
43
+ onActiveSheetChange: (callback: (sheet: ISheetDefine) => void) => void;
44
+ offActiveSheetChange: (callback: (sheet: ISheetDefine) => void) => void;
45
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts-types/sheet.ts"],"names":[],"mappings":"","file":"sheet.js","sourcesContent":["import type { IColumnDefine, IFilterConfig, ISheetDefine } from './index';\nimport type { CellCoord, CellRange, CellValue } from './base';\nimport type { ListTableConstructorOptions } from '@visactor/vtable';\n\n/** Sheet构造选项 */\nexport interface IWorkSheetOptions extends Omit<ListTableConstructorOptions, 'records' | 'columns'> {\n /** Sheet的唯一标识 */\n sheetKey: string;\n /** Sheet的标题 */\n sheetTitle: string;\n /** 容器元素 */\n container: HTMLElement;\n /** 数据 */\n data?: any[][];\n /** 是否显示表头 */\n showHeader?: boolean;\n /** 是否将第一行作为表头 */\n firstRowAsHeader?: boolean;\n /** 筛选配置 */\n filter?: boolean;\n /** 列定义 */\n columns?: (IColumnDefine & { field: string | number })[];\n}\n\n/** Sheet API 接口 */\nexport interface IWorkSheetAPI {\n /** 获取单元格值 */\n getCellValue: (row: number, col: number) => CellValue;\n\n /** 设置单元格值 */\n setCellValue: (row: number, col: number, value: CellValue) => void;\n\n /** 根据地址获取单元格 */\n getCellByAddress: (address: string) => { coord: CellCoord; value: CellValue };\n\n /** 根据坐标获取地址 */\n addressFromCoord: (coord: CellCoord) => string;\n\n /** 根据地址获取坐标 */\n coordFromAddress: (address: string) => CellCoord;\n /** 获取当前选择 */\n getSelection: () => CellRange | null;\n\n /** 获取数据 */\n getData: () => CellValue[][];\n\n /** 设置数据 */\n setData: (data: CellValue[][]) => void;\n\n /** 获取行数 */\n getRowCount: () => number;\n\n /** 获取列数 */\n getColumnCount: () => number;\n}\n\n/** Sheet管理器接口 */\nexport interface ISheetManager {\n /** 获取当前活动sheet */\n getActiveSheet: () => ISheetDefine | null;\n\n /** 设置活动sheet */\n setActiveSheet: (sheetKey: string) => void;\n\n /** 添加sheet */\n addSheet: (sheet: ISheetDefine) => void;\n\n /** 移除sheet */\n removeSheet: (sheetKey: string) => void;\n\n /** 重命名sheet */\n renameSheet: (sheetKey: string, newTitle: string) => void;\n\n /** 获取所有sheet */\n getAllSheets: () => ISheetDefine[];\n\n /** 获取指定sheet */\n getSheet: (sheetKey: string) => ISheetDefine | null;\n\n /** 获取sheet数量 */\n getSheetCount: () => number;\n\n /** 获取sheet API */\n getSheetAPI: (sheetKey: string) => IWorkSheetAPI | null;\n\n /** 监听sheet变化 */\n onSheetChange: (callback: (sheets: ISheetDefine[]) => void) => void;\n\n /** 移除sheet变化监听 */\n offSheetChange: (callback: (sheets: ISheetDefine[]) => void) => void;\n\n /** 监听活动sheet变化 */\n onActiveSheetChange: (callback: (sheet: ISheetDefine) => void) => void;\n\n /** 移除活动sheet变化监听 */\n offActiveSheetChange: (callback: (sheet: ISheetDefine) => void) => void;\n}\n"]}
package/es/vtable.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { register, themes, CustomLayout, TYPES, TABLE_EVENT_TYPE } from '@visactor/vtable';
package/es/vtable.js ADDED
@@ -0,0 +1,2 @@
1
+ export { register, themes, CustomLayout, TYPES, TABLE_EVENT_TYPE } from "@visactor/vtable";
2
+ //# sourceMappingURL=vtable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vtable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC","file":"vtable.js","sourcesContent":["export { register, themes, CustomLayout, TYPES, TABLE_EVENT_TYPE } from '@visactor/vtable';\n"]}
package/package.json ADDED
@@ -0,0 +1,120 @@
1
+ {
2
+ "name": "@visactor/vtable-sheet",
3
+ "version": "1.20.0-alpha.0",
4
+ "description": "Lightweight editable spreadsheet component based on VTable",
5
+ "keywords": [
6
+ "vtable-sheet",
7
+ "grid",
8
+ "table",
9
+ "spreadsheet",
10
+ "sheet",
11
+ "excel",
12
+ "visualization",
13
+ "VTable",
14
+ "VisActor",
15
+ "canvas",
16
+ "datagrid",
17
+ "datatable",
18
+ "editor"
19
+ ],
20
+ "author": {
21
+ "name": "VisActor",
22
+ "url": "https://VisActor.io/"
23
+ },
24
+ "license": "MIT",
25
+ "sideEffects": true,
26
+ "main": "cjs/index.js",
27
+ "module": "es/index.js",
28
+ "types": "es/index.d.ts",
29
+ "files": [
30
+ "cjs",
31
+ "es",
32
+ "dist"
33
+ ],
34
+ "exports": {
35
+ ".": {
36
+ "require": "./cjs/index.js",
37
+ "import": "./es/index.js"
38
+ }
39
+ },
40
+ "scripts": {
41
+ "demo": "vite serve examples",
42
+ "compile": "tsc --noEmit",
43
+ "eslint": "eslint --debug --fix src/",
44
+ "build": "bundle --clean",
45
+ "dev": "bundle --clean -f es -w",
46
+ "start": "vite ./vite",
47
+ "test": "jest --silent",
48
+ "test-cov": "jest --coverage",
49
+ "ci": "ts-node --transpileOnly --skipProject ./scripts/trigger-test.ts",
50
+ "build:es": "bundle --clean -f es --ignorePostTasks"
51
+ },
52
+ "dependencies": {
53
+ "@visactor/vtable": "workspace:*",
54
+ "@visactor/vtable-editors": "workspace:*",
55
+ "@visactor/vtable-plugins": "workspace:*",
56
+ "@visactor/vutils": "~0.19.1",
57
+ "@visactor/vscale": "~0.18.1",
58
+ "@visactor/vdataset": "~0.18.1",
59
+ "cssfontparser": "^1.2.1",
60
+ "hyperformula": "^3.0.0"
61
+ },
62
+ "devDependencies": {
63
+ "luxon": "*",
64
+ "@internal/bundler": "workspace:*",
65
+ "@internal/eslint-config": "workspace:*",
66
+ "@internal/ts-config": "workspace:*",
67
+ "@rushstack/eslint-patch": "~1.1.4",
68
+ "react": "^18.0.0",
69
+ "react-dom": "^18.0.0",
70
+ "@types/react": "^18.0.0",
71
+ "@types/react-dom": "^18.0.0",
72
+ "@vitejs/plugin-react": "3.1.0",
73
+ "eslint": "~8.18.0",
74
+ "vite": "3.2.6",
75
+ "typescript": "4.9.5",
76
+ "@babel/core": "7.20.12",
77
+ "@babel/preset-env": "7.20.2",
78
+ "@types/chai": "4.2.22",
79
+ "@types/jest": "^26.0.0",
80
+ "@types/mocha": "9.0.0",
81
+ "@types/node": "*",
82
+ "@types/offscreencanvas": "2019.6.4",
83
+ "chai": "4.3.4",
84
+ "jest": "^26.0.0",
85
+ "jest-electron": "^0.1.12",
86
+ "jest-transform-stub": "^2.0.0",
87
+ "magic-string": "^0.25.7",
88
+ "mocha": "9.1.3",
89
+ "postcss": "8.4.21",
90
+ "rimraf": "3.0.2",
91
+ "sass": "1.43.5",
92
+ "ts-jest": "^26.0.0",
93
+ "ts-loader": "9.2.6",
94
+ "ts-node": "10.9.0",
95
+ "tslib": "2.3.1",
96
+ "ttypescript": "1.5.13",
97
+ "typescript-transform-paths": "3.3.1",
98
+ "json-formatter-js": "^2.3.4",
99
+ "inversify": "6.0.1",
100
+ "vite-plugin-markdown": "^2.1.0",
101
+ "markdown-it": "^13.0.0",
102
+ "node-fetch": "2.6.7",
103
+ "form-data": "~4.0.0",
104
+ "axios": "^1.4.0"
105
+ },
106
+ "unpkg": "latest",
107
+ "unpkgFiles": [
108
+ "dist/vtable-sheet.js"
109
+ ],
110
+ "publishConfig": {
111
+ "access": "public"
112
+ },
113
+ "homepage": "https://visactor.io/vtable",
114
+ "repository": {
115
+ "type": "git",
116
+ "url": "https://github.com/VisActor/VTable.git",
117
+ "directory": "packages/vtable-sheet"
118
+ },
119
+ "packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac"
120
+ }