ooxml-excel-editor 1.1.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 (96) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/LICENSE +21 -0
  3. package/README.md +516 -0
  4. package/dist/chunks/plugin-overlay-Cfnn9EOi.js +7144 -0
  5. package/dist/chunks/worker-client.stub-BQVZfaLd.js +7 -0
  6. package/dist/components/ActionToolbar.vue.d.ts +9 -0
  7. package/dist/components/ExcelViewer.vue.d.ts +283 -0
  8. package/dist/components/ExportDialog.vue.d.ts +14 -0
  9. package/dist/components/FilterPopup.vue.d.ts +21 -0
  10. package/dist/components/FindBar.vue.d.ts +27 -0
  11. package/dist/components/SheetTabs.vue.d.ts +11 -0
  12. package/dist/components/ToolbarMenu.vue.d.ts +10 -0
  13. package/dist/components/ViewerToolbar.vue.d.ts +21 -0
  14. package/dist/components/export-types.d.ts +14 -0
  15. package/dist/components/toolbar-icons.d.ts +7 -0
  16. package/dist/components/toolbar-types.d.ts +18 -0
  17. package/dist/composables/useExcelDocument.d.ts +17 -0
  18. package/dist/composables/worker-client.d.ts +3 -0
  19. package/dist/composables/worker-client.stub.d.ts +3 -0
  20. package/dist/core/edit/commands.d.ts +94 -0
  21. package/dist/core/edit/default-editor.d.ts +2 -0
  22. package/dist/core/edit/edit-controller.d.ts +137 -0
  23. package/dist/core/edit/editor-context.d.ts +40 -0
  24. package/dist/core/edit/editor-host.d.ts +22 -0
  25. package/dist/core/edit/permissions.d.ts +3 -0
  26. package/dist/core/edit/types.d.ts +23 -0
  27. package/dist/core/export/composite.d.ts +18 -0
  28. package/dist/core/export/data-export.d.ts +9 -0
  29. package/dist/core/export/exporter.d.ts +64 -0
  30. package/dist/core/export/index.d.ts +9 -0
  31. package/dist/core/export/paginate.d.ts +36 -0
  32. package/dist/core/export/pdf.d.ts +28 -0
  33. package/dist/core/export/print.d.ts +3 -0
  34. package/dist/core/export/raster.d.ts +13 -0
  35. package/dist/core/export/types.d.ts +92 -0
  36. package/dist/core/export/vector-pdf.d.ts +42 -0
  37. package/dist/core/export/xlsx-writer.d.ts +15 -0
  38. package/dist/core/finalize.d.ts +10 -0
  39. package/dist/core/format/builtin-formats.d.ts +7 -0
  40. package/dist/core/format/color.d.ts +11 -0
  41. package/dist/core/format/date-serial.d.ts +16 -0
  42. package/dist/core/format/number-format.d.ts +5 -0
  43. package/dist/core/formula/engine.d.ts +27 -0
  44. package/dist/core/formula/hyperformula-adapter.d.ts +3 -0
  45. package/dist/core/formula/recalc.d.ts +9 -0
  46. package/dist/core/formula/refs.d.ts +21 -0
  47. package/dist/core/index.d.ts +52 -0
  48. package/dist/core/layout/autofit.d.ts +2 -0
  49. package/dist/core/layout/freeze.d.ts +11 -0
  50. package/dist/core/layout/grid-metrics.d.ts +37 -0
  51. package/dist/core/layout/merges.d.ts +14 -0
  52. package/dist/core/layout/units.d.ts +20 -0
  53. package/dist/core/layout/viewport.d.ts +29 -0
  54. package/dist/core/loader.d.ts +5 -0
  55. package/dist/core/model/clone.d.ts +9 -0
  56. package/dist/core/model/data-access.d.ts +30 -0
  57. package/dist/core/model/mutations.d.ts +46 -0
  58. package/dist/core/model/snapshot.d.ts +14 -0
  59. package/dist/core/model/structure.d.ts +26 -0
  60. package/dist/core/model/types.d.ts +289 -0
  61. package/dist/core/overlay/anchor.d.ts +9 -0
  62. package/dist/core/overlay/chart-mapper.d.ts +3 -0
  63. package/dist/core/overlay/echarts-loader.d.ts +3 -0
  64. package/dist/core/parse.worker.d.ts +14 -0
  65. package/dist/core/parser/chart-parser.d.ts +3 -0
  66. package/dist/core/parser/drawing-parser.d.ts +3 -0
  67. package/dist/core/parser/exceljs-adapter.d.ts +8 -0
  68. package/dist/core/parser/index.d.ts +3 -0
  69. package/dist/core/parser/page-break-parser.d.ts +3 -0
  70. package/dist/core/parser/raw-xml.d.ts +15 -0
  71. package/dist/core/parser/sparkline-parser.d.ts +3 -0
  72. package/dist/core/parser/theme.d.ts +3 -0
  73. package/dist/core/plugin.d.ts +180 -0
  74. package/dist/core/progress.d.ts +7 -0
  75. package/dist/core/render/autofilter.d.ts +14 -0
  76. package/dist/core/render/borders.d.ts +13 -0
  77. package/dist/core/render/canvas-renderer.d.ts +225 -0
  78. package/dist/core/render/conditional.d.ts +25 -0
  79. package/dist/core/render/fills.d.ts +2 -0
  80. package/dist/core/render/text.d.ts +20 -0
  81. package/dist/core/render/theme.d.ts +19 -0
  82. package/dist/core/viewer/controller.d.ts +339 -0
  83. package/dist/core/viewer/overlay-manager.d.ts +27 -0
  84. package/dist/core/viewer/plugin-overlay.d.ts +8 -0
  85. package/dist/core.d.ts +2 -0
  86. package/dist/core.js +74 -0
  87. package/dist/demo-shared/demo-editor.d.ts +2 -0
  88. package/dist/index.d.ts +19 -0
  89. package/dist/index.js +1493 -0
  90. package/dist/react/ExcelViewer.d.ts +153 -0
  91. package/dist/react/index.d.ts +11 -0
  92. package/dist/react/use-excel-document.d.ts +17 -0
  93. package/dist/react.d.ts +2 -0
  94. package/dist/react.js +838 -0
  95. package/dist/style.css +1 -0
  96. package/package.json +117 -0
@@ -0,0 +1,153 @@
1
+ import { CSSProperties } from 'react';
2
+ import { CellModel, CellStyleFn, CellStyleOverride, ImageAnchor, MergeRange, TransformModelFn, WorkbookModel } from '../core/model/types';
3
+ import { FormulaEngineFactory } from '../core/formula/engine';
4
+ import { CellChangePayload, DimChangePayload, DirtyChangePayload, ImageChangePayload, StructChangePayload } from '../core/edit/edit-controller';
5
+ import { CellSnapshot } from '../core/model/snapshot';
6
+ import { CellValue, getCellValue, getSheetData, getRangeData, sheetToJSON, ReadOptions, SheetToJSONOptions } from '../core/model/data-access';
7
+ import { EditorResolver } from '../core/edit/editor-context';
8
+ import { ViewerTheme } from '../core/render/theme';
9
+ import { ExcelSource } from '../core/loader';
10
+ import { ImageExportOptions, PdfExportOptions, PrintOptions } from '../core/export';
11
+ import { XlsxExportOptions } from '../core/export/xlsx-writer';
12
+ import { Cell } from '../core/viewer/controller';
13
+ import { ExcelPlugin } from '../core/plugin';
14
+ export interface ExcelViewerProps {
15
+ src?: ExcelSource;
16
+ fileName?: string;
17
+ theme?: Partial<ViewerTheme>;
18
+ /** 单击超链接是否自动打开(默认 true) */
19
+ openLinks?: boolean;
20
+ transformModel?: TransformModelFn;
21
+ cellStyle?: CellStyleFn;
22
+ /** 插件(与 Vue 通用):theme/transformModel/cellStyle/events/overlay/setup 全跨框架可用 */
23
+ plugins?: ExcelPlugin[];
24
+ /** 编辑总开关:默认 false = 只读(行为不变)。开启后才能进入编辑(E0:闸门) */
25
+ editable?: boolean;
26
+ /** 按格只读判定:返回 true = 只读(cell 为空格时传 null) */
27
+ cellReadOnly?: (cell: CellModel | null, pos: {
28
+ row: number;
29
+ col: number;
30
+ }) => boolean | void;
31
+ /** 只读区域(0-based 闭区间);命中即只读 */
32
+ readOnlyRanges?: MergeRange[];
33
+ /** 自定义单元格编辑器(按格返回工厂;覆盖插件 editor)。需 editable 开启 */
34
+ editor?: EditorResolver;
35
+ /** 公式重算(E4):默认 false 沿用缓存值。开启后编辑公式/被引用格 → 依赖格自动重算。需 editable */
36
+ recalc?: boolean;
37
+ /** 自定义/自研公式引擎工厂(可换引擎);不给则用默认 HyperFormula(需 npm i hyperformula) */
38
+ formulaEngine?: FormulaEngineFactory;
39
+ className?: string;
40
+ style?: CSSProperties;
41
+ onRendered?: (wb: WorkbookModel) => void;
42
+ onError?: (msg: string) => void;
43
+ onCellClick?: (p: {
44
+ row: number;
45
+ col: number;
46
+ text: string;
47
+ }) => void;
48
+ onCellDblClick?: (p: {
49
+ row: number;
50
+ col: number;
51
+ text: string;
52
+ }) => void;
53
+ onSelectionChange?: (p: {
54
+ range: MergeRange;
55
+ active: Cell;
56
+ }) => void;
57
+ onHyperlinkClick?: (p: {
58
+ url: string;
59
+ cell: Cell;
60
+ }) => void;
61
+ onSheetChange?: (p: {
62
+ index: number;
63
+ name: string;
64
+ }) => void;
65
+ /** 单元格变更(编辑/撤销/重做;含前后完整快照) */
66
+ onCellChange?: (p: CellChangePayload) => void;
67
+ onEditStart?: (p: unknown) => void;
68
+ onEditCommit?: (p: unknown) => void;
69
+ /** 列宽/行高变更(拖拽/autofit/API/撤销重做;前后 px 尺寸) */
70
+ onDimChange?: (p: DimChangePayload) => void;
71
+ /** 脏状态变更(有/无未保存修改) */
72
+ onDirtyChange?: (p: DirtyChangePayload) => void;
73
+ /** 图片增删移改(前后 ImageAnchor) */
74
+ onImageChange?: (p: ImageChangePayload) => void;
75
+ /** 行列结构变更(增删行列) */
76
+ onStructChange?: (p: StructChangePayload) => void;
77
+ }
78
+ /** 命令式句柄(与 Vue ref / ViewerApi 对齐) */
79
+ export interface ExcelViewerHandle {
80
+ load: (src: ExcelSource) => void;
81
+ getWorkbook: () => WorkbookModel | null;
82
+ getActiveSheet: () => number;
83
+ setActiveSheet: (i: number) => void;
84
+ getSelection: () => MergeRange | null;
85
+ setSelection: (range: MergeRange) => void;
86
+ rectOf: (row: number, col: number) => {
87
+ x: number;
88
+ y: number;
89
+ w: number;
90
+ h: number;
91
+ } | null;
92
+ rectOfRange: (range: MergeRange) => {
93
+ x: number;
94
+ y: number;
95
+ w: number;
96
+ h: number;
97
+ } | null;
98
+ redraw: () => void;
99
+ isCellEditable: (row: number, col: number) => boolean;
100
+ editCell: (row: number, col: number, value: CellValue) => boolean;
101
+ editRange: (range: MergeRange, values: CellValue[][]) => boolean;
102
+ clearRange: (range: MergeRange) => boolean;
103
+ setStyle: (range: MergeRange, patch: CellStyleOverride) => boolean;
104
+ getImages: () => ImageAnchor[];
105
+ addImage: (anchor: ImageAnchor) => number;
106
+ removeImage: (index: number) => boolean;
107
+ moveImage: (index: number, dxPx: number, dyPx: number) => boolean;
108
+ resizeImage: (index: number, widthPx: number, heightPx: number) => boolean;
109
+ insertRows: (at: number, count?: number) => boolean;
110
+ deleteRows: (at: number, count?: number) => boolean;
111
+ insertCols: (at: number, count?: number) => boolean;
112
+ deleteCols: (at: number, count?: number) => boolean;
113
+ undo: () => void;
114
+ redo: () => void;
115
+ canUndo: () => boolean;
116
+ canRedo: () => boolean;
117
+ getEditingCell: () => {
118
+ row: number;
119
+ col: number;
120
+ } | null;
121
+ getCellSnapshot: (row: number, col: number) => CellSnapshot | null;
122
+ beginEdit: (row: number, col: number) => boolean;
123
+ cancelEdit: () => void;
124
+ isEditing: () => boolean;
125
+ setColumnWidth: (col: number, width: number) => boolean;
126
+ setRowHeight: (row: number, height: number) => boolean;
127
+ isRecalcReady: () => boolean;
128
+ isDirty: () => boolean;
129
+ resetToOriginal: () => boolean;
130
+ exportImage: (opts?: ImageExportOptions) => Promise<Blob>;
131
+ downloadImage: (opts?: ImageExportOptions) => Promise<void>;
132
+ exportPdf: (opts?: PdfExportOptions) => Promise<Blob>;
133
+ downloadPdf: (opts?: PdfExportOptions) => Promise<void>;
134
+ print: (opts?: PrintOptions) => Promise<void>;
135
+ exportXlsx: (opts?: XlsxExportOptions) => Promise<Blob>;
136
+ downloadXlsx: (opts?: XlsxExportOptions) => Promise<void>;
137
+ exportJson: (opts?: SheetToJSONOptions) => string;
138
+ downloadJson: (opts?: SheetToJSONOptions) => void;
139
+ exportCsv: (opts?: {
140
+ target?: number;
141
+ format?: boolean;
142
+ }) => string;
143
+ downloadCsv: (opts?: {
144
+ target?: number;
145
+ format?: boolean;
146
+ }) => void;
147
+ getCellValue: (row: number, col: number, sheet?: number) => ReturnType<typeof getCellValue>;
148
+ getCellText: (row: number, col: number, sheet?: number) => string;
149
+ getSheetData: (opts?: ReadOptions, sheet?: number) => ReturnType<typeof getSheetData>;
150
+ getSheetJSON: (opts?: Parameters<typeof sheetToJSON>[1], sheet?: number) => ReturnType<typeof sheetToJSON>;
151
+ getRangeData: (range: MergeRange, opts?: ReadOptions, sheet?: number) => ReturnType<typeof getRangeData>;
152
+ }
153
+ export declare const ExcelViewer: import('react').ForwardRefExoticComponent<ExcelViewerProps & import('react').RefAttributes<ExcelViewerHandle>>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * React 入口。其它 React 项目这样用:
3
+ * import { ExcelViewer } from 'ooxml-excel-editor/react'
4
+ * import 'ooxml-excel-editor/react/style.css' // (打包后)
5
+ *
6
+ * 与 Vue 版共用同一套 core 引擎(ViewerController + 解析/渲染/导出)。
7
+ */
8
+ export { ExcelViewer } from './ExcelViewer';
9
+ export type { ExcelViewerProps, ExcelViewerHandle } from './ExcelViewer';
10
+ export { useExcelDocument } from './use-excel-document';
11
+ export type { ExcelDocument } from './use-excel-document';
@@ -0,0 +1,17 @@
1
+ import { TransformModelFn, WorkbookModel } from '../core/model/types';
2
+ import { ParseProgress } from '../core/progress';
3
+ import { ExcelSource } from '../core/loader';
4
+ export interface ExcelDocument {
5
+ loading: boolean;
6
+ error: string | null;
7
+ workbook: WorkbookModel | null;
8
+ progress: ParseProgress | null;
9
+ load: (src: ExcelSource, transform?: TransformModelFn) => Promise<void>;
10
+ /** 原始字节(高保真 overlay 导出用) */
11
+ sourceBuffer: ArrayBuffer | null;
12
+ }
13
+ /**
14
+ * React 版文档加载 hook —— 与 Vue 的 useExcelDocument 同逻辑(共用 core 的 loader/finalize/worker)。
15
+ * 解析走 worker(大文件不卡),按文件头给友好错误,完成后 finalizeImages 落 blob url。
16
+ */
17
+ export declare function useExcelDocument(): ExcelDocument;
@@ -0,0 +1,2 @@
1
+ export * from './react/index'
2
+ export {}