@p10node/office-engine 0.0.0 → 0.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.
- package/LICENSE +21 -0
- package/README.md +64 -1
- package/dist/DocViewer-Cv4LaMB_.js +9342 -0
- package/dist/DocViewer-Cv4LaMB_.js.map +1 -0
- package/dist/THIRD_PARTY_LICENSES.txt +79 -0
- package/dist/assets/worker-CJfZ05I7.js.map +1 -0
- package/dist/collab-BzN1ZI-z.js +1984 -0
- package/dist/collab-BzN1ZI-z.js.map +1 -0
- package/dist/collab.js +2 -0
- package/dist/core.js +2 -0
- package/dist/default-worker-B5CGBnic.js +9193 -0
- package/dist/default-worker-B5CGBnic.js.map +1 -0
- package/dist/embed.js +83 -0
- package/dist/embed.js.map +1 -0
- package/dist/index.js +5 -0
- package/dist/office-engine.embed.js +33 -0
- package/dist/office-engine.worker.js +9092 -0
- package/dist/types/collab/codec.d.ts +3 -0
- package/dist/types/collab/docx.d.ts +166 -0
- package/dist/types/collab/hosts.d.ts +24 -0
- package/dist/types/collab/hub.d.ts +41 -0
- package/dist/types/collab/index.d.ts +43 -0
- package/dist/types/collab/pptx-ops.d.ts +60 -0
- package/dist/types/collab/pptx-worker.d.ts +35 -0
- package/dist/types/collab/pptx.d.ts +47 -0
- package/dist/types/collab/protocol.d.ts +76 -0
- package/dist/types/collab/react.d.ts +23 -0
- package/dist/types/collab/session.d.ts +115 -0
- package/dist/types/collab/transport.d.ts +47 -0
- package/dist/types/collab/xlsx-ops.d.ts +72 -0
- package/dist/types/collab/xlsx-worker.d.ts +29 -0
- package/dist/types/collab/xlsx.d.ts +51 -0
- package/dist/types/core/color.d.ts +25 -0
- package/dist/types/core/default-worker.d.ts +1 -0
- package/dist/types/core/docx/numbering.d.ts +33 -0
- package/dist/types/core/docx/parser.d.ts +126 -0
- package/dist/types/core/docx/spec.d.ts +4 -0
- package/dist/types/core/docx/styles.d.ts +63 -0
- package/dist/types/core/docx/types.d.ts +325 -0
- package/dist/types/core/docx/writer.d.ts +35 -0
- package/dist/types/core/fonts.d.ts +1 -0
- package/dist/types/core/index.d.ts +15 -0
- package/dist/types/core/opc.d.ts +56 -0
- package/dist/types/core/pptx/edit.d.ts +10 -0
- package/dist/types/core/pptx/parser.d.ts +52 -0
- package/dist/types/core/pptx/types.d.ts +238 -0
- package/dist/types/core/raw.d.ts +40 -0
- package/dist/types/core/source.d.ts +65 -0
- package/dist/types/core/theme.d.ts +11 -0
- package/dist/types/core/units.d.ts +7 -0
- package/dist/types/core/worker/client.d.ts +48 -0
- package/dist/types/core/worker/engine.d.ts +27 -0
- package/dist/types/core/worker/protocol.d.ts +112 -0
- package/dist/types/core/worker/worker.d.ts +1 -0
- package/dist/types/core/xlsx/calc.d.ts +31 -0
- package/dist/types/core/xlsx/editor.d.ts +95 -0
- package/dist/types/core/xlsx/formula/assist.d.ts +35 -0
- package/dist/types/core/xlsx/formula/catalog.d.ts +14 -0
- package/dist/types/core/xlsx/formula/dates.d.ts +23 -0
- package/dist/types/core/xlsx/formula/evaluate.d.ts +33 -0
- package/dist/types/core/xlsx/formula/fn-date.d.ts +2 -0
- package/dist/types/core/xlsx/formula/fn-logic.d.ts +3 -0
- package/dist/types/core/xlsx/formula/fn-lookup.d.ts +3 -0
- package/dist/types/core/xlsx/formula/fn-math.d.ts +3 -0
- package/dist/types/core/xlsx/formula/fn-stats.d.ts +3 -0
- package/dist/types/core/xlsx/formula/fn-text.d.ts +3 -0
- package/dist/types/core/xlsx/formula/fn.d.ts +64 -0
- package/dist/types/core/xlsx/formula/format.d.ts +5 -0
- package/dist/types/core/xlsx/formula/functions.d.ts +4 -0
- package/dist/types/core/xlsx/formula/index.d.ts +17 -0
- package/dist/types/core/xlsx/formula/lexer.d.ts +54 -0
- package/dist/types/core/xlsx/formula/parser.d.ts +53 -0
- package/dist/types/core/xlsx/formula/refs.d.ts +23 -0
- package/dist/types/core/xlsx/formula/transform.d.ts +21 -0
- package/dist/types/core/xlsx/formula/types.d.ts +59 -0
- package/dist/types/core/xlsx/formula/values.d.ts +49 -0
- package/dist/types/core/xlsx/numfmt.d.ts +11 -0
- package/dist/types/core/xlsx/structure.d.ts +31 -0
- package/dist/types/core/xlsx/styles.d.ts +17 -0
- package/dist/types/core/xlsx/types.d.ts +193 -0
- package/dist/types/core/xlsx/workbook.d.ts +94 -0
- package/dist/types/core/xml.d.ts +80 -0
- package/dist/types/core/zip.d.ts +35 -0
- package/dist/types/core/zipwrite.d.ts +9 -0
- package/dist/types/embed.d.ts +30 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/react/DocViewer.d.ts +43 -0
- package/dist/types/react/common/ContextMenu.d.ts +21 -0
- package/dist/types/react/common/Dialog.d.ts +27 -0
- package/dist/types/react/common/Slots.d.ts +18 -0
- package/dist/types/react/common/Status.d.ts +6 -0
- package/dist/types/react/common/ZoomControl.d.ts +6 -0
- package/dist/types/react/common/hooks.d.ts +20 -0
- package/dist/types/react/docx/DocxEditor.d.ts +172 -0
- package/dist/types/react/docx/DocxToolbar.d.ts +18 -0
- package/dist/types/react/docx/DocxView.d.ts +8 -0
- package/dist/types/react/docx/FindBar.d.ts +22 -0
- package/dist/types/react/docx/html.d.ts +8 -0
- package/dist/types/react/docx/render.d.ts +24 -0
- package/dist/types/react/docx/tables.d.ts +20 -0
- package/dist/types/react/edit/Toolbar.d.ts +130 -0
- package/dist/types/react/edit/input.d.ts +81 -0
- package/dist/types/react/edit/rich.d.ts +40 -0
- package/dist/types/react/injectStyles.d.ts +4 -0
- package/dist/types/react/pptx/PptxEditor.d.ts +95 -0
- package/dist/types/react/pptx/PptxToolbar.d.ts +36 -0
- package/dist/types/react/pptx/PptxView.d.ts +24 -0
- package/dist/types/react/pptx/Presenter.d.ts +9 -0
- package/dist/types/react/pptx/Slide.d.ts +28 -0
- package/dist/types/react/pptx/geometry.d.ts +5 -0
- package/dist/types/react/useDocument.d.ts +11 -0
- package/dist/types/react/xlsx/XlsxToolbar.d.ts +27 -0
- package/dist/types/react/xlsx/XlsxView.d.ts +16 -0
- package/dist/types/react/xlsx/axis.d.ts +19 -0
- package/dist/xlsx-ops-CsjNpMI0.js +244 -0
- package/dist/xlsx-ops-CsjNpMI0.js.map +1 -0
- package/package.json +74 -2
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { PresentationMeta, SlideModel } from '../../core/pptx/types';
|
|
3
|
+
import type { DocumentClient } from '../../core/worker/client';
|
|
4
|
+
import { type Zoom } from '../common/ZoomControl';
|
|
5
|
+
import { type SlideEditing } from './Slide';
|
|
6
|
+
export declare function useSlide(client: DocumentClient, index: number): SlideModel | {
|
|
7
|
+
error: string;
|
|
8
|
+
} | undefined;
|
|
9
|
+
export declare function SlideSlot(props: {
|
|
10
|
+
client: DocumentClient;
|
|
11
|
+
index: number;
|
|
12
|
+
meta: PresentationMeta;
|
|
13
|
+
scale: number;
|
|
14
|
+
live: boolean;
|
|
15
|
+
editing?: SlideEditing;
|
|
16
|
+
overlay?: ReactNode;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
export interface PptxViewProps {
|
|
19
|
+
client: DocumentClient;
|
|
20
|
+
onStatus?: (s: string) => void;
|
|
21
|
+
initialZoom?: Zoom;
|
|
22
|
+
thumbnails?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function PptxView({ client, onStatus, initialZoom, thumbnails }: PptxViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PresentationMeta } from '../../core/pptx/types';
|
|
2
|
+
import type { DocumentClient } from '../../core/worker/client';
|
|
3
|
+
/** Full-screen slideshow: ←/→/Space/PageUp/PageDown/Home/End, click = next, Esc = exit. */
|
|
4
|
+
export declare function Presenter({ client, meta, start, onClose }: {
|
|
5
|
+
client: DocumentClient;
|
|
6
|
+
meta: PresentationMeta;
|
|
7
|
+
start: number;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { SlideModel, TextBody } from '../../core/pptx/types';
|
|
3
|
+
import type { DocumentClient } from '../../core/worker/client';
|
|
4
|
+
export interface TextEdit {
|
|
5
|
+
/** contentEditable root callback */
|
|
6
|
+
root: (el: HTMLDivElement | null) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function TextView({ text, flow, edit }: {
|
|
9
|
+
text: TextBody;
|
|
10
|
+
flow?: boolean;
|
|
11
|
+
edit?: TextEdit;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
export interface SlideEditing {
|
|
14
|
+
sid: number;
|
|
15
|
+
text: TextBody;
|
|
16
|
+
edit: TextEdit;
|
|
17
|
+
}
|
|
18
|
+
export interface SlideViewProps {
|
|
19
|
+
model: SlideModel;
|
|
20
|
+
client: DocumentClient;
|
|
21
|
+
scale: number;
|
|
22
|
+
/** load media (false for far-away thumbnails) */
|
|
23
|
+
live?: boolean;
|
|
24
|
+
editing?: SlideEditing;
|
|
25
|
+
/** extra layer drawn in slide coordinates (selection handles) */
|
|
26
|
+
overlay?: ReactNode;
|
|
27
|
+
}
|
|
28
|
+
export declare const SlideView: import("react").MemoExoticComponent<({ model, client, scale, live, editing, overlay }: SlideViewProps) => import("react").JSX.Element>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** SVG paths for common DrawingML preset geometries (box-local px). Unknown presets fall back to a rectangle. */
|
|
2
|
+
type Adj = Record<string, number> | undefined;
|
|
3
|
+
export declare const LINE_GEOMS: Set<string>;
|
|
4
|
+
export declare function geomPath(geom: string, w: number, h: number, adj: Adj): string;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DocSource } from '../core/source';
|
|
2
|
+
import { DocumentClient, type OpenOptions } from '../core/worker/client';
|
|
3
|
+
import type { Events } from '../core/worker/protocol';
|
|
4
|
+
export interface DocumentState {
|
|
5
|
+
client: DocumentClient | null;
|
|
6
|
+
error: Error | null;
|
|
7
|
+
loading: boolean;
|
|
8
|
+
progress: Events['progress'] | null;
|
|
9
|
+
}
|
|
10
|
+
/** Opens a document in a worker and closes it on unmount / source change. */
|
|
11
|
+
export declare function useDocument(src: DocSource | null | undefined, options?: OpenOptions): DocumentState;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { FmtPatch } from '../../core/xlsx/types';
|
|
2
|
+
export type MergeMode = 'all' | 'across' | 'down' | 'unmerge';
|
|
3
|
+
export declare function XlsxToolbar(props: {
|
|
4
|
+
css: Record<string, string | number>;
|
|
5
|
+
/** workbook default font (cells without an explicit font) */
|
|
6
|
+
base: {
|
|
7
|
+
fontFamily?: string;
|
|
8
|
+
fontSize?: string | number;
|
|
9
|
+
};
|
|
10
|
+
format: string;
|
|
11
|
+
merged: boolean;
|
|
12
|
+
frozen: boolean;
|
|
13
|
+
gridlines: boolean;
|
|
14
|
+
painter: boolean;
|
|
15
|
+
onToggle: (k: 'b' | 'i' | 'u' | 'strike') => void;
|
|
16
|
+
onFormat: (p: FmtPatch) => void;
|
|
17
|
+
onUndo: () => void;
|
|
18
|
+
onRedo: () => void;
|
|
19
|
+
onPaint: () => void;
|
|
20
|
+
onMerge: (mode: MergeMode) => void;
|
|
21
|
+
onFreeze: (k: 'none' | 'row' | 'col' | 'sel') => void;
|
|
22
|
+
onGridlines: () => void;
|
|
23
|
+
onFunc: (fn: string | null) => void;
|
|
24
|
+
onSort: (desc: boolean) => void;
|
|
25
|
+
onRows: (k: 'rowAbove' | 'rowBelow' | 'colLeft' | 'colRight' | 'delRow' | 'delCol' | 'hideRows' | 'hideCols' | 'unhideRows' | 'unhideCols') => void;
|
|
26
|
+
onFind: () => void;
|
|
27
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Range } from '../../core/xlsx/types';
|
|
2
|
+
import type { DocumentClient } from '../../core/worker/client';
|
|
3
|
+
export interface XlsxViewProps {
|
|
4
|
+
client: DocumentClient;
|
|
5
|
+
onStatus?: (s: string) => void;
|
|
6
|
+
initialSheet?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function XlsxView({ client, onStatus, initialSheet }: XlsxViewProps): import("react").JSX.Element;
|
|
9
|
+
export { ContextMenu, type MenuItem } from '../common/ContextMenu';
|
|
10
|
+
interface Selection {
|
|
11
|
+
ar: number;
|
|
12
|
+
ac: number;
|
|
13
|
+
fr: number;
|
|
14
|
+
fc: number;
|
|
15
|
+
}
|
|
16
|
+
export declare const rectOf: (s: Selection) => Range;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Variable-size axis (rows or columns): default size + sparse overrides, O(log n) lookups. */
|
|
2
|
+
export declare class Axis {
|
|
3
|
+
def: number;
|
|
4
|
+
count: number;
|
|
5
|
+
private custom;
|
|
6
|
+
private keys;
|
|
7
|
+
private cum;
|
|
8
|
+
private dirty;
|
|
9
|
+
constructor(def: number);
|
|
10
|
+
set(i: number, size: number): void;
|
|
11
|
+
setRange(min: number, max: number, size: number): void;
|
|
12
|
+
private build;
|
|
13
|
+
size(i: number): number;
|
|
14
|
+
/** Start offset of index i. */
|
|
15
|
+
pos(i: number): number;
|
|
16
|
+
total(): number;
|
|
17
|
+
/** Index containing offset px (clamped to [0, count-1]). */
|
|
18
|
+
index(px: number): number;
|
|
19
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
|
|
2
|
+
// src/collab/xlsx-ops.ts
|
|
3
|
+
var e = /* @__PURE__ */ new Set([
|
|
4
|
+
"insertRows",
|
|
5
|
+
"deleteRows",
|
|
6
|
+
"insertCols",
|
|
7
|
+
"deleteCols"
|
|
8
|
+
]), t = (t) => t.t === "book" || t.t === "sheet" && e.has(t.op.op);
|
|
9
|
+
function n(e, t, n) {
|
|
10
|
+
if (n >= 0) return e >= t ? e + n : e;
|
|
11
|
+
let r = -n;
|
|
12
|
+
return e < t ? e : e < t + r ? null : e - r;
|
|
13
|
+
}
|
|
14
|
+
function r(e, t, n, r) {
|
|
15
|
+
if (r >= 0) return [e >= n ? e + r : e, t >= n ? t + r : t];
|
|
16
|
+
let i = -r;
|
|
17
|
+
if (t < n) return [e, t];
|
|
18
|
+
if (e >= n + i) return [e - i, t - i];
|
|
19
|
+
let a = e < n ? e : n, o = t < n + i ? n - 1 : t - i;
|
|
20
|
+
return o < a ? null : [a, o];
|
|
21
|
+
}
|
|
22
|
+
function i(e, t, n, i) {
|
|
23
|
+
let a = t === "row" ? r(e.r0, e.r1, n, i) : r(e.c0, e.c1, n, i);
|
|
24
|
+
return a ? t === "row" ? {
|
|
25
|
+
...e,
|
|
26
|
+
r0: a[0],
|
|
27
|
+
r1: a[1]
|
|
28
|
+
} : {
|
|
29
|
+
...e,
|
|
30
|
+
c0: a[0],
|
|
31
|
+
c1: a[1]
|
|
32
|
+
} : null;
|
|
33
|
+
}
|
|
34
|
+
function a(e, t, a, o) {
|
|
35
|
+
let s = (e, n, i) => i === t ? r(e, n, a, o) : [e, n];
|
|
36
|
+
switch (e.op) {
|
|
37
|
+
case "insertRows":
|
|
38
|
+
case "insertCols": {
|
|
39
|
+
if (e.op === "insertRows" != (t === "row")) return e;
|
|
40
|
+
let n = o >= 0 ? e.at >= a ? e.at + o : e.at : e.at < a ? e.at : e.at < a - o ? a : e.at + o;
|
|
41
|
+
return n === e.at ? e : {
|
|
42
|
+
...e,
|
|
43
|
+
at: n
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
case "deleteRows":
|
|
47
|
+
case "deleteCols": {
|
|
48
|
+
if (e.op === "deleteRows" != (t === "row")) return e;
|
|
49
|
+
let n = r(e.at, e.at + e.n - 1, a, o);
|
|
50
|
+
return n ? {
|
|
51
|
+
...e,
|
|
52
|
+
at: n[0],
|
|
53
|
+
n: n[1] - n[0] + 1
|
|
54
|
+
} : null;
|
|
55
|
+
}
|
|
56
|
+
case "merge":
|
|
57
|
+
case "unmerge":
|
|
58
|
+
case "fill": {
|
|
59
|
+
let n = i(e.range, t, a, o);
|
|
60
|
+
return n ? {
|
|
61
|
+
...e,
|
|
62
|
+
range: n
|
|
63
|
+
} : null;
|
|
64
|
+
}
|
|
65
|
+
case "sort": {
|
|
66
|
+
let r = i(e.range, t, a, o);
|
|
67
|
+
if (!r) return null;
|
|
68
|
+
let s = t === "col" ? n(e.col, a, o) : e.col;
|
|
69
|
+
return s === null ? null : {
|
|
70
|
+
...e,
|
|
71
|
+
range: r,
|
|
72
|
+
col: s
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
case "hideRows":
|
|
76
|
+
case "hideCols": {
|
|
77
|
+
let t = s(e.a, e.b, e.op === "hideRows" ? "row" : "col");
|
|
78
|
+
return t ? {
|
|
79
|
+
...e,
|
|
80
|
+
a: t[0],
|
|
81
|
+
b: t[1]
|
|
82
|
+
} : null;
|
|
83
|
+
}
|
|
84
|
+
case "colWidth": {
|
|
85
|
+
let t = s(e.c0, e.c1, "col");
|
|
86
|
+
return t ? {
|
|
87
|
+
...e,
|
|
88
|
+
c0: t[0],
|
|
89
|
+
c1: t[1]
|
|
90
|
+
} : null;
|
|
91
|
+
}
|
|
92
|
+
case "rowHeight": {
|
|
93
|
+
let t = s(e.r0, e.r1, "row");
|
|
94
|
+
return t ? {
|
|
95
|
+
...e,
|
|
96
|
+
r0: t[0],
|
|
97
|
+
r1: t[1]
|
|
98
|
+
} : null;
|
|
99
|
+
}
|
|
100
|
+
default: return e;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function o(t, r) {
|
|
104
|
+
if (r.t === "book") return r.op.op === "delete" && "sheet" in t && t.sheet === r.op.path ? null : t;
|
|
105
|
+
if (r.t !== "sheet" || !e.has(r.op.op) || !("sheet" in t) || t.sheet !== r.sheet) return t;
|
|
106
|
+
let o = r.op, s = o.op.endsWith("Rows") ? "row" : "col", c = o.op.startsWith("insert") ? o.n : -o.n;
|
|
107
|
+
switch (t.t) {
|
|
108
|
+
case "set": {
|
|
109
|
+
let e = [];
|
|
110
|
+
for (let r of t.cells) {
|
|
111
|
+
let t = n(s === "row" ? r.r : r.c, o.at, c);
|
|
112
|
+
t !== null && e.push(s === "row" ? {
|
|
113
|
+
...r,
|
|
114
|
+
r: t
|
|
115
|
+
} : {
|
|
116
|
+
...r,
|
|
117
|
+
c: t
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return e.length ? {
|
|
121
|
+
...t,
|
|
122
|
+
cells: e
|
|
123
|
+
} : null;
|
|
124
|
+
}
|
|
125
|
+
case "fmt": {
|
|
126
|
+
let e = i(t.range, s, o.at, c);
|
|
127
|
+
return e ? {
|
|
128
|
+
...t,
|
|
129
|
+
range: e
|
|
130
|
+
} : null;
|
|
131
|
+
}
|
|
132
|
+
case "sheet": {
|
|
133
|
+
let e = a(t.op, s, o.at, c);
|
|
134
|
+
return e === t.op ? t : e ? {
|
|
135
|
+
...t,
|
|
136
|
+
op: e
|
|
137
|
+
} : null;
|
|
138
|
+
}
|
|
139
|
+
case "replace": {
|
|
140
|
+
if (!t.at) return t;
|
|
141
|
+
let e = n(s === "row" ? t.at.r : t.at.c, o.at, c);
|
|
142
|
+
return e === null ? null : {
|
|
143
|
+
...t,
|
|
144
|
+
at: s === "row" ? {
|
|
145
|
+
...t.at,
|
|
146
|
+
r: e
|
|
147
|
+
} : {
|
|
148
|
+
...t.at,
|
|
149
|
+
c: e
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return t;
|
|
155
|
+
}
|
|
156
|
+
var s = {
|
|
157
|
+
r0: 0,
|
|
158
|
+
c0: 0,
|
|
159
|
+
r1: 2 ** 53 - 1,
|
|
160
|
+
c1: 2 ** 53 - 1
|
|
161
|
+
};
|
|
162
|
+
function c(e) {
|
|
163
|
+
switch (e.t) {
|
|
164
|
+
case "set": {
|
|
165
|
+
let t = Infinity, n = Infinity, r = -1, i = -1;
|
|
166
|
+
for (let a of e.cells) t = Math.min(t, a.r), n = Math.min(n, a.c), r = Math.max(r, a.r), i = Math.max(i, a.c);
|
|
167
|
+
return {
|
|
168
|
+
sheet: e.sheet,
|
|
169
|
+
range: {
|
|
170
|
+
r0: t,
|
|
171
|
+
c0: n,
|
|
172
|
+
r1: r,
|
|
173
|
+
c1: i
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
case "fmt": return {
|
|
178
|
+
sheet: e.sheet,
|
|
179
|
+
range: e.range
|
|
180
|
+
};
|
|
181
|
+
case "replace": return {
|
|
182
|
+
sheet: e.sheet,
|
|
183
|
+
range: e.at ? {
|
|
184
|
+
r0: e.at.r,
|
|
185
|
+
c0: e.at.c,
|
|
186
|
+
r1: e.at.r,
|
|
187
|
+
c1: e.at.c
|
|
188
|
+
} : s
|
|
189
|
+
};
|
|
190
|
+
case "sheet": {
|
|
191
|
+
let t = e.op;
|
|
192
|
+
return "range" in t ? {
|
|
193
|
+
sheet: e.sheet,
|
|
194
|
+
range: t.range
|
|
195
|
+
} : t.op === "hideRows" ? {
|
|
196
|
+
sheet: e.sheet,
|
|
197
|
+
range: {
|
|
198
|
+
...s,
|
|
199
|
+
r0: t.a,
|
|
200
|
+
r1: t.b
|
|
201
|
+
}
|
|
202
|
+
} : t.op === "hideCols" ? {
|
|
203
|
+
sheet: e.sheet,
|
|
204
|
+
range: {
|
|
205
|
+
...s,
|
|
206
|
+
c0: t.a,
|
|
207
|
+
c1: t.b
|
|
208
|
+
}
|
|
209
|
+
} : t.op === "colWidth" ? {
|
|
210
|
+
sheet: e.sheet,
|
|
211
|
+
range: {
|
|
212
|
+
...s,
|
|
213
|
+
c0: t.c0,
|
|
214
|
+
c1: t.c1
|
|
215
|
+
}
|
|
216
|
+
} : t.op === "rowHeight" ? {
|
|
217
|
+
sheet: e.sheet,
|
|
218
|
+
range: {
|
|
219
|
+
...s,
|
|
220
|
+
r0: t.r0,
|
|
221
|
+
r1: t.r1
|
|
222
|
+
}
|
|
223
|
+
} : {
|
|
224
|
+
sheet: e.sheet,
|
|
225
|
+
range: s
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
default: return null;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
var l = (e, t) => e.r0 <= t.r1 && t.r0 <= e.r1 && e.c0 <= t.c1 && t.c0 <= e.c1;
|
|
232
|
+
function u(e, n) {
|
|
233
|
+
if (n.some((e) => t(e) || e.t === "revert") || e.some((e) => e.t === "revert" || t(e))) return !0;
|
|
234
|
+
let r = (e) => e.t === "fmt" && e.patch.xf === void 0 && !e.patch.clear;
|
|
235
|
+
if (e.some(r) && n.some(r)) return !0;
|
|
236
|
+
let i = n.map(c);
|
|
237
|
+
return e.some((e) => {
|
|
238
|
+
let t = c(e);
|
|
239
|
+
return !!t && i.some((e) => !!e && e.sheet === t.sheet && l(t.range, e.range));
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
export { o as i, u as n, t as r, e as t };
|
|
243
|
+
|
|
244
|
+
//# sourceMappingURL=xlsx-ops-CsjNpMI0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx-ops-CsjNpMI0.js","names":["STRUCTURAL","isStructural","o","shiftIdx","x","at","d","shiftSpan","n","a","b","na","nb","shiftRange","s","axis","r","shiftSheetOp","span","ax","op","range","col","transformX","prior","p","cells","c","next","ALL","footprint","r0","c0","r1","c1","overlap","conflictsX","remote","pending","styles","fp"],"sources":["../src/collab/xlsx-ops.ts"],"sourcesContent":["/** XLSX collaboration operations (shared by the main-thread adapter and the worker) + their transforms. */\nimport type { CellInput, FindOptions, FmtPatch, Range, SheetOp } from '../core/xlsx/types'\n\n/** sheets are addressed by part path: indexes move when sheets are added / reordered */\nexport type PBookOp =\n | { op: 'add'; name?: string; after?: string }\n | { op: 'rename'; path: string; name: string }\n | { op: 'delete'; path: string }\n | { op: 'move'; path: string; to: number }\n\nexport type XOp =\n | { t: 'set'; id: string; sheet: string; cells: CellInput[] }\n | { t: 'fmt'; id: string; sheet: string; range: Range; patch: FmtPatch }\n | { t: 'sheet'; id: string; sheet: string; op: SheetOp }\n | { t: 'replace'; id: string; sheet: string; query: string; by: string; opts?: FindOptions; at?: { r: number; c: number } }\n | { t: 'book'; id: string; op: PBookOp }\n /** sets the cells changed by op `target` back to their state before (`prev`) or after (`next`) it */\n | { t: 'revert'; id: string; target: string; which: 'prev' | 'next' }\n\nexport const STRUCTURAL = new Set<SheetOp['op']>(['insertRows', 'deleteRows', 'insertCols', 'deleteCols'])\n\nexport const isStructural = (o: XOp) => o.t === 'book' || (o.t === 'sheet' && STRUCTURAL.has(o.op.op))\n\n// ---------------------------------------------------------------- index shifting\n\n/** index after `n` items were inserted (n > 0) or deleted (n < 0) at `at`; null when deleted */\nexport function shiftIdx(x: number, at: number, n: number): number | null {\n if (n >= 0) return x >= at ? x + n : x\n const d = -n\n return x < at ? x : x < at + d ? null : x - d\n}\n\n/** inclusive span [a, b] after an insert / delete; null when entirely deleted */\nexport function shiftSpan(a: number, b: number, at: number, n: number): [number, number] | null {\n if (n >= 0) return [a >= at ? a + n : a, b >= at ? b + n : b]\n const d = -n\n if (b < at) return [a, b]\n if (a >= at + d) return [a - d, b - d]\n const na = a < at ? a : at\n const nb = b < at + d ? at - 1 : b - d\n return nb < na ? null : [na, nb]\n}\n\nfunction shiftRange(r: Range, axis: 'row' | 'col', at: number, n: number): Range | null {\n const s = axis === 'row' ? shiftSpan(r.r0, r.r1, at, n) : shiftSpan(r.c0, r.c1, at, n)\n if (!s) return null\n return axis === 'row' ? { ...r, r0: s[0], r1: s[1] } : { ...r, c0: s[0], c1: s[1] }\n}\n\nfunction shiftSheetOp(op: SheetOp, axis: 'row' | 'col', at: number, n: number): SheetOp | null {\n const span = (a: number, b: number, ax: 'row' | 'col') => (ax === axis ? shiftSpan(a, b, at, n) : ([a, b] as [number, number]))\n switch (op.op) {\n case 'insertRows':\n case 'insertCols': {\n if ((op.op === 'insertRows') !== (axis === 'row')) return op\n // concurrent insert at the same place: the one sequenced first stays first\n const x = n >= 0 ? (op.at >= at ? op.at + n : op.at) : op.at < at ? op.at : op.at < at - n ? at : op.at + n\n return x === op.at ? op : { ...op, at: x }\n }\n case 'deleteRows':\n case 'deleteCols': {\n if ((op.op === 'deleteRows') !== (axis === 'row')) return op\n const s = shiftSpan(op.at, op.at + op.n - 1, at, n)\n return s ? { ...op, at: s[0], n: s[1] - s[0] + 1 } : null\n }\n case 'merge':\n case 'unmerge':\n case 'fill': {\n const range = shiftRange(op.range, axis, at, n)\n return range ? { ...op, range } : null\n }\n case 'sort': {\n const range = shiftRange(op.range, axis, at, n)\n if (!range) return null\n const col = axis === 'col' ? shiftIdx(op.col, at, n) : op.col\n return col === null ? null : { ...op, range, col }\n }\n case 'hideRows':\n case 'hideCols': {\n const s = span(op.a, op.b, op.op === 'hideRows' ? 'row' : 'col')\n return s ? { ...op, a: s[0], b: s[1] } : null\n }\n case 'colWidth': {\n const s = span(op.c0, op.c1, 'col')\n return s ? { ...op, c0: s[0], c1: s[1] } : null\n }\n case 'rowHeight': {\n const s = span(op.r0, op.r1, 'row')\n return s ? { ...op, r0: s[0], r1: s[1] } : null\n }\n default:\n return op\n }\n}\n\n/** `op` adjusted to apply after `prior` (deterministic) */\nexport function transformX(op: XOp, prior: XOp): XOp | null {\n if (prior.t === 'book') {\n if (prior.op.op === 'delete' && 'sheet' in op && op.sheet === prior.op.path) return null\n return op\n }\n if (prior.t !== 'sheet' || !STRUCTURAL.has(prior.op.op) || !('sheet' in op) || op.sheet !== prior.sheet) return op\n const p = prior.op as { op: string; at: number; n: number }\n const axis = p.op.endsWith('Rows') ? 'row' : 'col'\n const n = p.op.startsWith('insert') ? p.n : -p.n\n switch (op.t) {\n case 'set': {\n const cells: CellInput[] = []\n for (const c of op.cells) {\n const x = shiftIdx(axis === 'row' ? c.r : c.c, p.at, n)\n if (x !== null) cells.push(axis === 'row' ? { ...c, r: x } : { ...c, c: x })\n }\n return cells.length ? { ...op, cells } : null\n }\n case 'fmt': {\n const range = shiftRange(op.range, axis, p.at, n)\n return range ? { ...op, range } : null\n }\n case 'sheet': {\n const next = shiftSheetOp(op.op, axis, p.at, n)\n return next === op.op ? op : next ? { ...op, op: next } : null\n }\n case 'replace': {\n if (!op.at) return op\n const x = shiftIdx(axis === 'row' ? op.at.r : op.at.c, p.at, n)\n return x === null ? null : { ...op, at: axis === 'row' ? { ...op.at, r: x } : { ...op.at, c: x } }\n }\n }\n return op\n}\n\n// ---------------------------------------------------------------- footprint (for conflict detection)\n\nconst ALL: Range = { r0: 0, c0: 0, r1: Number.MAX_SAFE_INTEGER, c1: Number.MAX_SAFE_INTEGER }\n\nexport function footprint(op: XOp): { sheet: string; range: Range } | null {\n switch (op.t) {\n case 'set': {\n let r0 = Infinity\n let c0 = Infinity\n let r1 = -1\n let c1 = -1\n for (const c of op.cells) {\n r0 = Math.min(r0, c.r)\n c0 = Math.min(c0, c.c)\n r1 = Math.max(r1, c.r)\n c1 = Math.max(c1, c.c)\n }\n return { sheet: op.sheet, range: { r0, c0, r1, c1 } }\n }\n case 'fmt':\n return { sheet: op.sheet, range: op.range }\n case 'replace':\n return { sheet: op.sheet, range: op.at ? { r0: op.at.r, c0: op.at.c, r1: op.at.r, c1: op.at.c } : ALL }\n case 'sheet': {\n const o = op.op\n if ('range' in o) return { sheet: op.sheet, range: o.range }\n if (o.op === 'hideRows') return { sheet: op.sheet, range: { ...ALL, r0: o.a, r1: o.b } }\n if (o.op === 'hideCols') return { sheet: op.sheet, range: { ...ALL, c0: o.a, c1: o.b } }\n if (o.op === 'colWidth') return { sheet: op.sheet, range: { ...ALL, c0: o.c0, c1: o.c1 } }\n if (o.op === 'rowHeight') return { sheet: op.sheet, range: { ...ALL, r0: o.r0, r1: o.r1 } }\n return { sheet: op.sheet, range: ALL }\n }\n default:\n return null\n }\n}\n\nconst overlap = (a: Range, b: Range) => a.r0 <= b.r1 && b.r0 <= a.r1 && a.c0 <= b.c1 && b.c0 <= a.c1\n\n/** whether remote ops interact with pending local ones (→ rebase) */\nexport function conflictsX(pending: XOp[], remote: XOp[]): boolean {\n if (remote.some((o) => isStructural(o) || o.t === 'revert')) return true\n if (pending.some((o) => o.t === 'revert' || isStructural(o))) return true\n // derived styles are appended to one table: keep its order identical everywhere\n const styles = (o: XOp) => o.t === 'fmt' && o.patch.xf === undefined && !o.patch.clear\n if (pending.some(styles) && remote.some(styles)) return true\n const fp = remote.map(footprint)\n return pending.some((p) => {\n const a = footprint(p)\n return !!a && fp.some((b) => !!b && b.sheet === a.sheet && overlap(a.range, b.range))\n })\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,80 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@p10node/office-engine",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Browser engine to view DOCX, XLSX, PPTX progressively (worker-based, range-loading, virtualized React views)",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"module": "./dist/index.js",
|
|
12
|
+
"types": "./dist/types/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/types/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./core": {
|
|
19
|
+
"types": "./dist/types/core/index.d.ts",
|
|
20
|
+
"import": "./dist/core.js"
|
|
21
|
+
},
|
|
22
|
+
"./embed": {
|
|
23
|
+
"types": "./dist/types/embed.d.ts",
|
|
24
|
+
"import": "./dist/embed.js"
|
|
25
|
+
},
|
|
26
|
+
"./worker": "./dist/office-engine.worker.js",
|
|
27
|
+
"./embed.js": "./dist/office-engine.embed.js",
|
|
28
|
+
"./collab": {
|
|
29
|
+
"types": "./dist/types/collab/index.d.ts",
|
|
30
|
+
"import": "./dist/collab.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"sideEffects": [
|
|
34
|
+
"./src/core/default-worker.ts",
|
|
35
|
+
"./src/embed.ts",
|
|
36
|
+
"./dist/index.js",
|
|
37
|
+
"./dist/core.js",
|
|
38
|
+
"./dist/embed.js",
|
|
39
|
+
"./dist/office-engine.embed.js",
|
|
40
|
+
"**/*.css"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"dev": "vite --config vite.playground.config.ts",
|
|
44
|
+
"build": "bun run clean && bun run build:lib && bun run build:embed && bun run build:worker && bun run build:types",
|
|
45
|
+
"build:lib": "vite build",
|
|
46
|
+
"build:embed": "vite build --config vite.embed.config.ts",
|
|
47
|
+
"build:types": "tsc -p tsconfig.build.json",
|
|
48
|
+
"build:playground": "vite build --config vite.playground.config.ts",
|
|
49
|
+
"typecheck": "tsc --noEmit",
|
|
50
|
+
"test": "bun test",
|
|
51
|
+
"fixtures": "bun scripts/gen-fixtures.ts",
|
|
52
|
+
"build:worker": "vite build --config vite.worker.config.ts",
|
|
53
|
+
"collab": "bun scripts/collab-server.ts",
|
|
54
|
+
"clean": "rm -rf dist",
|
|
55
|
+
"screenshots": "bun scripts/screenshots.ts",
|
|
56
|
+
"build:site": "bun scripts/build-site.ts"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"react": ">=18",
|
|
60
|
+
"react-dom": ">=18"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@types/bun": "^1.4.4",
|
|
64
|
+
"@types/react": "^19.3.0",
|
|
65
|
+
"@types/react-dom": "^19.3.0",
|
|
66
|
+
"@vitejs/plugin-react": "^6.1.2",
|
|
67
|
+
"fflate": "^0.8.3",
|
|
68
|
+
"playwright-core": "^1.64.1",
|
|
69
|
+
"react": "^19.3.1",
|
|
70
|
+
"react-dom": "^19.3.1",
|
|
71
|
+
"typescript": "^7.0.2",
|
|
72
|
+
"vite": "^8.3.5"
|
|
73
|
+
},
|
|
74
|
+
"publishConfig": {
|
|
75
|
+
"access": "public"
|
|
76
|
+
},
|
|
77
|
+
"homepage": "https://p10node.github.io/office-engine/",
|
|
6
78
|
"repository": {
|
|
7
79
|
"type": "git",
|
|
8
80
|
"url": "git+https://github.com/p10node/office-engine.git"
|