ooxml-excel-editor 1.3.3 → 1.7.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 (42) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +27 -8
  3. package/dist/chunks/index-BNQIWClg.js +12532 -0
  4. package/dist/chunks/{index.es-D9BGYyEt.js → index.es-BVXJfTmn.js} +1 -1
  5. package/dist/chunks/{index.es-n6H_ncuE.js → index.es-gb2_kTSZ.js} +1 -1
  6. package/dist/chunks/{jspdf.es.min-Dbn0akWf.js → jspdf.es.min-C7JL2eZm.js} +2 -2
  7. package/dist/chunks/{jspdf.es.min-B6-ocR7J.js → jspdf.es.min-CBWDsR7H.js} +2 -2
  8. package/dist/chunks/plugin-overlay-C_qauTcv.js +11057 -0
  9. package/dist/chunks/{toolbar-icons-fOm95ASq.js → toolbar-icons-CD7G5Aof.js} +62 -71
  10. package/dist/components/ExcelViewer.vue.d.ts +29 -1
  11. package/dist/core/edit/clipboard-html.d.ts +12 -0
  12. package/dist/core/edit/clipboard-snapshot.d.ts +76 -0
  13. package/dist/core/edit/context-menu.d.ts +14 -1
  14. package/dist/core/edit/edit-controller.d.ts +22 -1
  15. package/dist/core/edit/paste-behavior.d.ts +33 -0
  16. package/dist/core/edit/types.d.ts +20 -0
  17. package/dist/core/export/exporter.d.ts +2 -0
  18. package/dist/core/export/pivot-tables.d.ts +17 -0
  19. package/dist/core/export/xlsx-writer.d.ts +6 -0
  20. package/dist/core/index.d.ts +4 -2
  21. package/dist/core/model/mutations.d.ts +2 -0
  22. package/dist/core/model/types.d.ts +61 -0
  23. package/dist/core/parser/pivot-parser.d.ts +3 -0
  24. package/dist/core/plugin.d.ts +47 -5
  25. package/dist/core/render/canvas-renderer.d.ts +12 -0
  26. package/dist/core/render/pivot-toggle.d.ts +13 -0
  27. package/dist/core/viewer/controller.d.ts +82 -6
  28. package/dist/core/viewer/overlay-manager.d.ts +1 -0
  29. package/dist/core/viewer/paste-config-host.d.ts +12 -0
  30. package/dist/core/viewer/pivot-dialog-host.d.ts +48 -0
  31. package/dist/core/viewer/readonly-prompt-host.d.ts +23 -0
  32. package/dist/core.js +67 -64
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.js +948 -873
  35. package/dist/react/ExcelViewer.d.ts +25 -4
  36. package/dist/react.js +621 -535
  37. package/dist/style.css +1 -1
  38. package/dist/vue2.css +1 -1
  39. package/dist/vue2.js +1 -1
  40. package/package.json +1 -1
  41. package/dist/chunks/index-6q8kSGQg.js +0 -10575
  42. package/dist/chunks/plugin-overlay-BUrPrpT2.js +0 -9146
@@ -1,6 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { CellModel, CellStyleFn, CellStyleOverride, ImageAnchor, MergeRange, TransformModelFn, WorkbookModel } from '../core/model/types';
3
3
  import { EditableTarget } from '../core/edit/types';
4
+ import { PasteBehavior } from '../core/edit/paste-behavior';
4
5
  import { FormulaEngineFactory } from '../core/formula/engine';
5
6
  import { CellChangePayload, DimChangePayload, DirtyChangePayload, ImageChangePayload, StructChangePayload } from '../core/edit/edit-controller';
6
7
  import { CellSnapshot } from '../core/model/snapshot';
@@ -14,7 +15,7 @@ import { ExcelSource } from '../core/loader';
14
15
  import { ImageExportOptions, PdfExportOptions, PrintOptions } from '../core/export';
15
16
  import { XlsxExportOptions } from '../core/export/xlsx-writer';
16
17
  import { Cell } from '../core/viewer/controller';
17
- import { ContextMenuBeforePayload, ContextMenuShowPayload, ContextMenuTransform, ExcelPlugin, MenuItem, PermissionDeniedPayload } from '../core/plugin';
18
+ import { ContextMenuBeforePayload, ContextMenuShowPayload, ContextMenuTransform, ExcelPlugin, MenuItem, PermissionDeniedPayload, ViewerApi } from '../core/plugin';
18
19
  export interface ExcelViewerProps {
19
20
  src?: ExcelSource;
20
21
  /**
@@ -72,6 +73,12 @@ export interface ExcelViewerProps {
72
73
  plugins?: ExcelPlugin[];
73
74
  /** 编辑总开关:默认 false = 只读(行为不变)。开启后才能进入编辑(E0:闸门) */
74
75
  editable?: boolean;
76
+ /**
77
+ * 透视表功能开关:默认 false = 关闭。开启后(还需 `editable`)工具栏 `pivot-table` 入口可见、
78
+ * `createPivotTable`/`openPivotTableDialog` 等 API 生效、导出 .xlsx 回注真实 OOXML 透视表零件
79
+ * (overlay 模式同时保留原文件透视表)。
80
+ */
81
+ pivotTable?: boolean;
75
82
  /** 按格只读判定:返回 true = 只读(cell 为空格时传 null) */
76
83
  cellReadOnly?: (cell: CellModel | null, pos: {
77
84
  row: number;
@@ -102,12 +109,16 @@ export interface ExcelViewerProps {
102
109
  recalc?: boolean;
103
110
  /** 自定义/自研公式引擎工厂(可换引擎);不给则用默认 HyperFormula(需 npm i hyperformula) */
104
111
  formulaEngine?: FormulaEngineFactory;
112
+ /** 粘贴行为(默认 = 覆盖式 1:1)。控制 Ctrl+V / 右键粘贴时源各方面如何落目标;也可 viewer.setPasteBehavior 运行时改 */
113
+ pasteBehavior?: Partial<PasteBehavior>;
114
+ /** 粘贴撞只读格的内置提醒:'dialog'(默认,弹窗列出哪些格只读)/ 'toast'(气泡)/ 'none'(只发事件) */
115
+ readOnlyPrompt?: 'dialog' | 'toast' | 'none';
105
116
  /**
106
117
  * 操作工具栏配置 (跟 Vue 3/Vue 2 同 API):
107
- * - `true`/不传(默认): 显示默认两项 ['find', 'filter']
118
+ * - `true`/不传(默认): 显示默认三项 ['find', 'filter', 'sort']
108
119
  * - `false`: 隐藏整条工具栏
109
120
  * - 数组: 显式控制项与顺序 (内置 id 或自定义 ToolbarItem)
110
- * - 内置 id: find / filter / clear-filter / copy / wrap-text / template / image-tools /
121
+ * - 内置 id: find / filter / sort / clear-filter / copy / wrap-text / template / image-tools /
111
122
  * freeze / export / zoom / 'separator' (或 '|')
112
123
  */
113
124
  toolbar?: boolean | Array<string | import('../core/plugin').ToolbarItem>;
@@ -160,6 +171,9 @@ export interface ExcelViewerHandle {
160
171
  setActiveSheet: (i: number) => void;
161
172
  getSelection: () => MergeRange | null;
162
173
  setSelection: (range: MergeRange) => void;
174
+ scrollToCell: (row: number, col: number, opts?: {
175
+ select?: boolean;
176
+ }) => boolean;
163
177
  rectOf: (row: number, col: number) => {
164
178
  x: number;
165
179
  y: number;
@@ -176,6 +190,10 @@ export interface ExcelViewerHandle {
176
190
  isCellEditable: (row: number, col: number) => boolean;
177
191
  setEditableTargets: (targets: EditableTarget | EditableTarget[] | undefined) => void;
178
192
  getEditableTargets: () => EditableTarget | EditableTarget[] | undefined;
193
+ sortActiveColumn: (dir: 'asc' | 'desc') => boolean;
194
+ createPivotTable: ViewerApi['createPivotTable'];
195
+ createPivotTableFromSelection: ViewerApi['createPivotTableFromSelection'];
196
+ openPivotTableDialog: ViewerApi['openPivotTableDialog'];
179
197
  editCell: (row: number, col: number, value: CellValue) => boolean;
180
198
  editRange: (range: MergeRange, values: CellValue[][]) => boolean;
181
199
  clearRange: (range: MergeRange) => boolean;
@@ -195,7 +213,10 @@ export interface ExcelViewerHandle {
195
213
  pasteRichHtml: (html: string, at?: {
196
214
  row: number;
197
215
  col: number;
198
- }) => boolean;
216
+ }, behaviorOverride?: Partial<PasteBehavior> | null) => boolean;
217
+ getPasteBehavior: () => PasteBehavior;
218
+ setPasteBehavior: (cfg: Partial<PasteBehavior> | null) => void;
219
+ openPasteConfigDialog: () => boolean;
199
220
  pasteImageBlob: (blob: Blob, at?: {
200
221
  row: number;
201
222
  col: number;