ooxml-core 1.22.0 → 1.23.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 (72) hide show
  1. package/README.md +7 -2
  2. package/dist/automation/index.cjs +6 -4
  3. package/dist/automation/index.mjs +6 -4
  4. package/dist/collab/embedding.d.ts +7 -0
  5. package/dist/collab/embedding.d.ts.map +1 -1
  6. package/dist/collab/index.cjs +189 -0
  7. package/dist/collab/index.d.ts +2 -0
  8. package/dist/collab/index.d.ts.map +1 -1
  9. package/dist/collab/index.mjs +186 -1
  10. package/dist/collab/write-back-lifecycle.d.ts +33 -0
  11. package/dist/collab/write-back-lifecycle.d.ts.map +1 -0
  12. package/dist/collab/write-back.d.ts +75 -0
  13. package/dist/collab/write-back.d.ts.map +1 -0
  14. package/dist/visio/collab/baseline.d.ts +36 -0
  15. package/dist/visio/collab/baseline.d.ts.map +1 -0
  16. package/dist/visio/collab/bind.d.ts +20 -2
  17. package/dist/visio/collab/bind.d.ts.map +1 -1
  18. package/dist/visio/collab/compose-lists.d.ts +27 -0
  19. package/dist/visio/collab/compose-lists.d.ts.map +1 -0
  20. package/dist/visio/collab/compose.d.ts +6 -2
  21. package/dist/visio/collab/compose.d.ts.map +1 -1
  22. package/dist/visio/collab/fixups.d.ts +5 -0
  23. package/dist/visio/collab/fixups.d.ts.map +1 -0
  24. package/dist/visio/collab/index.cjs +1499 -362
  25. package/dist/visio/collab/index.d.ts +3 -2
  26. package/dist/visio/collab/index.d.ts.map +1 -1
  27. package/dist/visio/collab/index.mjs +1492 -363
  28. package/dist/visio/collab/keys.d.ts +30 -1
  29. package/dist/visio/collab/keys.d.ts.map +1 -1
  30. package/dist/visio/collab/package.d.ts +22 -1
  31. package/dist/visio/collab/package.d.ts.map +1 -1
  32. package/dist/visio/collab/pieces.d.ts +34 -0
  33. package/dist/visio/collab/pieces.d.ts.map +1 -0
  34. package/dist/visio/collab/read-ids.d.ts +29 -0
  35. package/dist/visio/collab/read-ids.d.ts.map +1 -0
  36. package/dist/visio/collab/read-parts.d.ts +34 -0
  37. package/dist/visio/collab/read-parts.d.ts.map +1 -0
  38. package/dist/visio/collab/read-shapes.d.ts +35 -0
  39. package/dist/visio/collab/read-shapes.d.ts.map +1 -0
  40. package/dist/visio/collab/read-util.d.ts +20 -0
  41. package/dist/visio/collab/read-util.d.ts.map +1 -0
  42. package/dist/visio/collab/read.d.ts +40 -19
  43. package/dist/visio/collab/read.d.ts.map +1 -1
  44. package/dist/visio/collab/schema.d.ts +55 -1
  45. package/dist/visio/collab/schema.d.ts.map +1 -1
  46. package/dist/visio/collab/snapshot-contents.d.ts +9 -0
  47. package/dist/visio/collab/snapshot-contents.d.ts.map +1 -0
  48. package/dist/visio/collab/snapshot-io.d.ts +26 -0
  49. package/dist/visio/collab/snapshot-io.d.ts.map +1 -0
  50. package/dist/visio/collab/snapshot-parts.d.ts +14 -0
  51. package/dist/visio/collab/snapshot-parts.d.ts.map +1 -0
  52. package/dist/visio/collab/snapshot.d.ts +31 -24
  53. package/dist/visio/collab/snapshot.d.ts.map +1 -1
  54. package/dist/visio/collab/write-parts.d.ts +8 -0
  55. package/dist/visio/collab/write-parts.d.ts.map +1 -0
  56. package/dist/visio/collab/write-shapes.d.ts +30 -0
  57. package/dist/visio/collab/write-shapes.d.ts.map +1 -0
  58. package/dist/visio/collab/write.d.ts +4 -16
  59. package/dist/visio/collab/write.d.ts.map +1 -1
  60. package/dist/visio/index.cjs +57 -4
  61. package/dist/visio/index.d.ts +1 -0
  62. package/dist/visio/index.d.ts.map +1 -1
  63. package/dist/visio/index.mjs +56 -5
  64. package/dist/visio/parse-incremental.d.ts +16 -0
  65. package/dist/visio/parse-incremental.d.ts.map +1 -0
  66. package/dist/visio/parser.d.ts +7 -0
  67. package/dist/visio/parser.d.ts.map +1 -1
  68. package/dist/visio/ui/collab-options.d.ts +10 -5
  69. package/dist/visio/ui/collab-options.d.ts.map +1 -1
  70. package/dist/visio/ui/index.cjs +6 -4
  71. package/dist/visio/ui/index.mjs +6 -4
  72. package/package.json +1 -1
@@ -1,10 +1,14 @@
1
- import JSZip from 'jszip';
2
1
  import type { DrawingKeys } from './keys.js';
2
+ import type { Piece } from './pieces.js';
3
3
  import type { ConnectEntry } from './schema.js';
4
+ export { type Layout, type LocalItem, readLayout, readLocalItems, readZip, zipText, } from './snapshot-io.js';
4
5
  export interface ShapeSnapshot {
5
6
  key: string;
6
7
  id: string;
7
- xml: string;
8
+ /** Key of the shape this one is nested in. */
9
+ parent?: string;
10
+ open: string;
11
+ pieces: Piece[];
8
12
  }
9
13
  export interface ConnectSnapshot {
10
14
  key: string;
@@ -18,14 +22,39 @@ export interface PageSnapshot {
18
22
  shell: string;
19
23
  rels?: string;
20
24
  path: string;
25
+ /** Every shape of the page, parents before the shapes nested in them. */
26
+ shapes: ShapeSnapshot[];
27
+ connects: ConnectSnapshot[];
28
+ }
29
+ export interface MasterSnapshot {
30
+ key: string;
31
+ id: string;
32
+ xml: string;
33
+ path: string;
34
+ /** The master part with its shapes and connects replaced by markers. */
35
+ part: Uint8Array;
36
+ rels?: string;
37
+ /** Every shape of the master's content, parents before the shapes nested in them. */
21
38
  shapes: ShapeSnapshot[];
22
39
  connects: ConnectSnapshot[];
23
40
  }
41
+ export interface MediaSnapshot {
42
+ path: string;
43
+ hash: string;
44
+ ct: string;
45
+ d: boolean;
46
+ data: Uint8Array;
47
+ }
24
48
  export interface DrawingSnapshot {
25
49
  pagesPath: string;
26
50
  pagesOpen: string;
27
51
  pagesClose: string;
28
52
  pages: PageSnapshot[];
53
+ mastersPath?: string;
54
+ mastersOpen?: string;
55
+ mastersClose?: string;
56
+ masters: MasterSnapshot[];
57
+ media: MediaSnapshot[];
29
58
  parts: Map<string, Uint8Array>;
30
59
  }
31
60
  export interface SnapshotOptions {
@@ -35,27 +64,5 @@ export interface SnapshotOptions {
35
64
  export declare const DEFAULT_MAX_PART_BYTES: number;
36
65
  /** The ids of a shape element and of every shape nested in it, outermost first. */
37
66
  export declare function shapeIds(xml: string): string[];
38
- export declare const readZip: (bytes: Uint8Array) => Promise<JSZip>;
39
- export declare const zipText: (zip: JSZip, path: string) => Promise<string | undefined>;
40
- export interface Layout {
41
- documentPath: string;
42
- pagesPath: string;
43
- }
44
- /** The document and pages parts of a package, through its relationships. */
45
- export declare function readLayout(zip: JSZip): Promise<Layout | undefined>;
46
- export interface LocalPage {
47
- id: string;
48
- text: string;
49
- path: string;
50
- rel: {
51
- start: number;
52
- end: number;
53
- };
54
- }
55
- /** The `Page` elements of a pages part with the part each one points to. */
56
- export declare function readLocalPages(zip: JSZip, layout: Layout, pagesXml: string): Promise<{
57
- box: import("./scan.js").Container;
58
- pages: LocalPage[];
59
- } | undefined>;
60
67
  export declare function snapshotDrawing(bytes: Uint8Array, keys: DrawingKeys, options?: SnapshotOptions): Promise<DrawingSnapshot>;
61
68
  //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../visio/collab/snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAa1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC5B;AACD,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC/B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAGvD,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9C;AAmBD,eAAO,MAAM,OAAO,UAAW,UAAU,KAAG,OAAO,CAAC,KAAK,CAA2B,CAAC;AACrF,eAAO,MAAM,OAAO,QAAe,KAAK,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CACnD,CAAC;AAEjC,MAAM,WAAW,MAAM;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAWxE;AAED,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED,4EAA4E;AAC5E,wBAAsB,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;eA0BhF;AAED,wBAAsB,eAAe,CACpC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAgF1B"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../visio/collab/snapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAK7C,OAAO,EACN,KAAK,MAAM,EACX,KAAK,SAAS,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,GACP,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;CAChB;AACD,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC5B;AACD,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC5B;AACD,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;CACjB;AACD,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC/B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAGvD,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9C;AAED,wBAAsB,eAAe,CACpC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAkD1B"}
@@ -0,0 +1,8 @@
1
+ import type { DrawingSnapshot } from './snapshot.js';
2
+ import { type WriteContext } from './write-shapes.js';
3
+ export declare const mediaKey: (hash: string, path: string) => string;
4
+ export declare function syncMasters(ctx: WriteContext, snapshot: DrawingSnapshot): void;
5
+ export declare function syncMedia(ctx: WriteContext, snapshot: DrawingSnapshot): void;
6
+ /** Writes every other part whole, last write wins; returns the number of deletions. */
7
+ export declare function syncParts(ctx: WriteContext, snapshot: DrawingSnapshot): number;
8
+ //# sourceMappingURL=write-parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-parts.d.ts","sourceRoot":"","sources":["../../../visio/collab/write-parts.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAuC,MAAM,gBAAgB,CAAC;AAExF,eAAO,MAAM,QAAQ,SAAU,MAAM,QAAQ,MAAM,KAAG,MAA2B,CAAC;AAElF,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAgC9E;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAiB5E;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,CAgB9E"}
@@ -0,0 +1,30 @@
1
+ import * as Y from 'yjs';
2
+ import type { DrawingKeys } from './keys.js';
3
+ import { type SharedDrawing } from './schema.js';
4
+ import type { ConnectSnapshot, ShapeSnapshot } from './snapshot.js';
5
+ export interface WriteContext {
6
+ shared: SharedDrawing;
7
+ keys: DrawingKeys;
8
+ /** Baseline of what is written or kept by this pass. */
9
+ now: Map<string, string>;
10
+ /** Shared by every entry created or rewritten in this pass. */
11
+ batch: string;
12
+ write(map: Y.Map<unknown>, key: string, value: unknown): void;
13
+ }
14
+ /**
15
+ * Writes `local()` when it differs from this peer's baseline (a local edit) or the room has no
16
+ * entry; otherwise keeps the room's value (a collaborator's change not applied here yet), with the
17
+ * local position. `stamp` records the batch on an entry that is written.
18
+ */
19
+ export declare function syncEntry<T extends {
20
+ pos?: number;
21
+ b?: string;
22
+ }>(ctx: WriteContext, map: Y.Map<unknown>, mapKey: string, id: string, content: string, room: T | undefined, roomContent: () => string, local: () => T, stamp?: boolean): void;
23
+ /** Writes the connects of a page or master that the room does not hold (or that are new here). */
24
+ export declare function syncConnects(ctx: WriteContext, connects: readonly ConnectSnapshot[]): void;
25
+ /** Writes the shapes of a page, or of a master's content (`page.key` is then its scope). */
26
+ export declare function syncShapes(ctx: WriteContext, page: {
27
+ key: string;
28
+ shapes: readonly ShapeSnapshot[];
29
+ }): void;
30
+ //# sourceMappingURL=write-shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-shapes.d.ts","sourceRoot":"","sources":["../../../visio/collab/write-shapes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAGN,KAAK,aAAa,EAGlB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,wDAAwD;IACxD,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/D,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EACnB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,GAAG,SAAS,EACnB,WAAW,EAAE,MAAM,MAAM,EACzB,KAAK,EAAE,MAAM,CAAC,EACd,KAAK,UAAQ,GACX,IAAI,CAWN;AAeD,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,CAM1F;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GACrD,IAAI,CAgDN"}
@@ -1,20 +1,8 @@
1
+ import { bodyContent, bodyId, connectId, pageContent, pageId } from './baseline.js';
1
2
  import type { DrawingKeys } from './keys.js';
2
- import type { DrawingSnapshot } from './snapshot.js';
3
3
  import { type SharedDrawing } from './schema.js';
4
- export declare const pageId: (key: string) => string;
5
- export declare const bodyId: (key: string) => string;
6
- export declare const shapeId: (page: string, key: string) => string;
7
- export declare const connectId: (key: string) => string;
8
- /** Baseline text of a page entry (its position excluded) and of a body. */
9
- export declare const pageContent: (e: {
10
- id: string;
11
- back?: string | undefined;
12
- xml: string;
13
- }) => string;
14
- export declare const bodyContent: (e: {
15
- shell: string;
16
- rels?: string | undefined;
17
- }) => string;
18
- /** Writes `snapshot` into `shared`; returns the number of entries changed. */
4
+ import type { DrawingSnapshot } from './snapshot.js';
5
+ export { bodyId, connectId, pageContent, bodyContent, pageId };
6
+ /** Writes `snapshot` into `shared`; returns the number of entries changed. Throws on another schema version. */
19
7
  export declare function writeSharedDrawing(shared: SharedDrawing, snapshot: DrawingSnapshot, keys: DrawingKeys): number;
20
8
  //# sourceMappingURL=write.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../visio/collab/write.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAGN,KAAK,aAAa,EAKlB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAoB,CAAC;AAC1D,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAoB,CAAC;AAC1D,eAAO,MAAM,OAAO,SAAU,MAAM,OAAO,MAAM,KAAG,MAA4B,CAAC;AACjF,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAAoB,CAAC;AAC7D,2EAA2E;AAC3E,eAAO,MAAM,WAAW,MAAO;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAG,MACnC,CAAC;AACtD,eAAO,MAAM,WAAW,MAAO;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAAG,MAC7B,CAAC;AAElD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,WAAW,GACf,MAAM,CAqGR"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../visio/collab/write.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,WAAW,EACX,MAAM,EACN,SAAS,EAGT,WAAW,EACX,MAAM,EACN,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAIN,KAAK,aAAa,EAKlB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAe/D,gHAAgH;AAChH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,WAAW,GACf,MAAM,CA4GR"}
@@ -24216,6 +24216,7 @@ async function parseVsdx(input, options2 = {}) {
24216
24216
  throw new VisioPackageError("INVALID_DOCUMENT", "Missing Visio pages part.");
24217
24217
  const pages = [], pageIds2 = /* @__PURE__ */ new Set();
24218
24218
  const comments = [];
24219
+ const only = options2.pages ? new Set(options2.pages) : void 0;
24219
24220
  const pageNodes = pagesPart ? children2(await visioXml(pkg, pagesPart, "Pages"), "Page") : [];
24220
24221
  const foreground = pageNodes.filter((page) => !yes(attribute2(page, "Background")));
24221
24222
  const fieldProperties = await readVisioFieldProperties(pkg);
@@ -24225,6 +24226,7 @@ async function parseVsdx(input, options2 = {}) {
24225
24226
  if (!id3 || pageIds2.has(id3))
24226
24227
  throw new VisioPackageError("INVALID_PAGE_ID", "Page IDs must be present and unique.");
24227
24228
  pageIds2.add(id3);
24229
+ if (only && !only.has(id3)) continue;
24228
24230
  const part = await indexedPart(pkg, pagesPart, page, "page");
24229
24231
  const root2 = await visioXml(pkg, part, "PageContents");
24230
24232
  const localReport = (code, message, extra) => report(code, message, { part, pageId: id3, ...extra });
@@ -24334,16 +24336,16 @@ async function parseVsdx(input, options2 = {}) {
24334
24336
  });
24335
24337
  }
24336
24338
  checkTime();
24337
- validateBackgrounds(pages, report);
24339
+ if (!only) validateBackgrounds(pages, report);
24338
24340
  try {
24339
- comments.push(...await readVisioComments(pkg, documentPart2, report));
24341
+ if (!only) comments.push(...await readVisioComments(pkg, documentPart2, report));
24340
24342
  } catch (error) {
24341
24343
  if (!(error instanceof VisioPackageError) || error.code === "LIMIT_RUNTIME") throw error;
24342
24344
  report("invalid-comments", "The comments part could not be read; comments are not shown.");
24343
24345
  }
24344
24346
  let dataRecordsets = [];
24345
24347
  try {
24346
- dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
24348
+ if (!only) dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
24347
24349
  } catch (error) {
24348
24350
  if (error instanceof VisioPackageError && error.code === "LIMIT_RUNTIME") throw error;
24349
24351
  report(
@@ -24351,7 +24353,7 @@ async function parseVsdx(input, options2 = {}) {
24351
24353
  `Saved external data could not be read and is preserved unchanged: ${error instanceof Error ? error.message : String(error)}`
24352
24354
  );
24353
24355
  }
24354
- const stencils = await readVisioStencilWindows(pkg, documentPart2);
24356
+ const stencils = only ? [] : await readVisioStencilWindows(pkg, documentPart2);
24355
24357
  report(
24356
24358
  "cached-values-only",
24357
24359
  "ShapeSheet formulas, automatic connector routing, and external data are not evaluated; saved cached values and supported theme records are used.",
@@ -33880,6 +33882,55 @@ async function loadVisio(input, options2 = {}) {
33880
33882
  );
33881
33883
  }
33882
33884
 
33885
+ // visio/parse-incremental.ts
33886
+ var BACKGROUND_CODES = /* @__PURE__ */ new Set(["background-cycle", "missing-background-page"]);
33887
+ var MAX_SPLICED_DIAGNOSTICS = 1e3;
33888
+ var DEFAULT_MAX_SHAPES = 25e3;
33889
+ var countShapes = (shapes) => shapes.reduce((sum, shape) => sum + 1 + countShapes(shape.children), 0);
33890
+ var isPageDiagnostic = (d) => d.pageId !== void 0 && !BACKGROUND_CODES.has(d.code);
33891
+ function mergeVisioPages(previous, partial, pageIds2, options2 = {}) {
33892
+ if (previous.format !== "vsdx" || partial.format !== "vsdx") return void 0;
33893
+ const wanted = new Set(pageIds2);
33894
+ const fresh = new Map(partial.pages.map((page) => [page.id, page]));
33895
+ if (fresh.size !== wanted.size || ![...wanted].every((id3) => fresh.has(id3))) return void 0;
33896
+ const before = new Map(previous.pages.map((page) => [page.id, page]));
33897
+ if (![...wanted].every((id3) => before.has(id3))) return void 0;
33898
+ for (const [id3, page] of fresh)
33899
+ if (before.get(id3).backgroundPageId === void 0) delete page.backgroundPageId;
33900
+ const pages = previous.pages.map((page) => fresh.get(page.id) ?? page);
33901
+ if (pages.reduce((sum, page) => sum + countShapes(page.shapes), 0) > (options2.maxShapes ?? DEFAULT_MAX_SHAPES))
33902
+ return void 0;
33903
+ const diagnostics = spliceDiagnostics(previous.diagnostics, partial.diagnostics, wanted);
33904
+ if (!diagnostics) return void 0;
33905
+ return { ...previous, pages, diagnostics };
33906
+ }
33907
+ function spliceDiagnostics(previous, partial, wanted) {
33908
+ const truncated = (list2) => list2.some((d) => d.code === "diagnostics-truncated");
33909
+ if (truncated(previous) || truncated(partial)) return void 0;
33910
+ const fresh = partial.filter((d) => isPageDiagnostic(d) && wanted.has(d.pageId));
33911
+ if (previous.length + fresh.length > MAX_SPLICED_DIAGNOSTICS) return void 0;
33912
+ let out = [...previous];
33913
+ for (const id3 of wanted) {
33914
+ const next = fresh.filter((d) => d.pageId === id3);
33915
+ const at2 = out.flatMap((d, i) => isPageDiagnostic(d) && d.pageId === id3 ? [i] : []);
33916
+ if (!at2.length) {
33917
+ if (next.length) return void 0;
33918
+ continue;
33919
+ }
33920
+ const first2 = at2[0];
33921
+ const last = at2[at2.length - 1];
33922
+ if (last - first2 + 1 !== at2.length) return void 0;
33923
+ out = [...out.slice(0, first2), ...next, ...out.slice(last + 1)];
33924
+ }
33925
+ return out;
33926
+ }
33927
+ async function parseVsdxPages(input, previous, pageIds2, options2 = {}) {
33928
+ const partial = await parseVsdx(input, { ...options2, pages: pageIds2 });
33929
+ return mergeVisioPages(previous, partial, pageIds2, {
33930
+ ...options2.maxShapes !== void 0 ? { maxShapes: options2.maxShapes } : {}
33931
+ });
33932
+ }
33933
+
33883
33934
  // visio/visibility.ts
33884
33935
  var VISIO_VISIBILITY_LIMITS = Object.freeze({
33885
33936
  maxShapes: 25e3,
@@ -48897,10 +48948,12 @@ exports.isVisioStencilShape = isVisioStencilShape;
48897
48948
  exports.isVisioThemeColorRef = isVisioThemeColorRef;
48898
48949
  exports.layoutVisioFilledArrowLine = layoutVisioFilledArrowLine;
48899
48950
  exports.loadVisio = loadVisio;
48951
+ exports.mergeVisioPages = mergeVisioPages;
48900
48952
  exports.parseLegacyVsd = parseLegacyVsd;
48901
48953
  exports.parseVisioFormula = parseVisioFormula;
48902
48954
  exports.parseVisioThemeColorFormula = parseVisioThemeColorFormula;
48903
48955
  exports.parseVsdx = parseVsdx;
48956
+ exports.parseVsdxPages = parseVsdxPages;
48904
48957
  exports.readVisioStencil = readVisioStencil;
48905
48958
  exports.resolveVisioPageVisibility = resolveVisioPageVisibility;
48906
48959
  exports.resolveVisioThemeColor = resolveVisioThemeColor;
@@ -8,6 +8,7 @@ export { parseVsdx, getVisioPageLayers, type ParseVsdxOptions } from './parser.j
8
8
  export { readVisioStencil, type VisioStencilFile } from './stencil-file.js';
9
9
  export { visioPrintTileCount, VISIO_PRINT_COUNT_LIMITS, type VisioPrintTileCountResult, } from './print-count.js';
10
10
  export { loadVisio } from './load.js';
11
+ export { mergeVisioPages, parseVsdxPages } from './parse-incremental.js';
11
12
  export { parseLegacyVsd, type ParseLegacyVsdOptions } from './legacy.js';
12
13
  export { VisioPackageError, type VisioPackageLimits } from './package.js';
13
14
  export { resolveVisioPageVisibility, VISIO_VISIBILITY_LIMITS, type VisioVisibilityOptions, type VisioResolvedShapeVisibility, } from './visibility.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../visio/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,mBAAmB,SAAS,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EACN,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,aAAa,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACN,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,yBAAyB,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EACN,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,GAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,GACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,sBAAsB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EACN,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACN,UAAU,EACV,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,KAAK,aAAa,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EACN,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,qBAAqB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,kBAAkB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EACN,4BAA4B,EAC5B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACN,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,GAC1B,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,GACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../visio/index.ts"],"names":[],"mappings":"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"}
@@ -24210,6 +24210,7 @@ async function parseVsdx(input, options2 = {}) {
24210
24210
  throw new VisioPackageError("INVALID_DOCUMENT", "Missing Visio pages part.");
24211
24211
  const pages = [], pageIds2 = /* @__PURE__ */ new Set();
24212
24212
  const comments = [];
24213
+ const only = options2.pages ? new Set(options2.pages) : void 0;
24213
24214
  const pageNodes = pagesPart ? children2(await visioXml(pkg, pagesPart, "Pages"), "Page") : [];
24214
24215
  const foreground = pageNodes.filter((page) => !yes(attribute2(page, "Background")));
24215
24216
  const fieldProperties = await readVisioFieldProperties(pkg);
@@ -24219,6 +24220,7 @@ async function parseVsdx(input, options2 = {}) {
24219
24220
  if (!id3 || pageIds2.has(id3))
24220
24221
  throw new VisioPackageError("INVALID_PAGE_ID", "Page IDs must be present and unique.");
24221
24222
  pageIds2.add(id3);
24223
+ if (only && !only.has(id3)) continue;
24222
24224
  const part = await indexedPart(pkg, pagesPart, page, "page");
24223
24225
  const root2 = await visioXml(pkg, part, "PageContents");
24224
24226
  const localReport = (code, message, extra) => report(code, message, { part, pageId: id3, ...extra });
@@ -24328,16 +24330,16 @@ async function parseVsdx(input, options2 = {}) {
24328
24330
  });
24329
24331
  }
24330
24332
  checkTime();
24331
- validateBackgrounds(pages, report);
24333
+ if (!only) validateBackgrounds(pages, report);
24332
24334
  try {
24333
- comments.push(...await readVisioComments(pkg, documentPart2, report));
24335
+ if (!only) comments.push(...await readVisioComments(pkg, documentPart2, report));
24334
24336
  } catch (error) {
24335
24337
  if (!(error instanceof VisioPackageError) || error.code === "LIMIT_RUNTIME") throw error;
24336
24338
  report("invalid-comments", "The comments part could not be read; comments are not shown.");
24337
24339
  }
24338
24340
  let dataRecordsets = [];
24339
24341
  try {
24340
- dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
24342
+ if (!only) dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
24341
24343
  } catch (error) {
24342
24344
  if (error instanceof VisioPackageError && error.code === "LIMIT_RUNTIME") throw error;
24343
24345
  report(
@@ -24345,7 +24347,7 @@ async function parseVsdx(input, options2 = {}) {
24345
24347
  `Saved external data could not be read and is preserved unchanged: ${error instanceof Error ? error.message : String(error)}`
24346
24348
  );
24347
24349
  }
24348
- const stencils = await readVisioStencilWindows(pkg, documentPart2);
24350
+ const stencils = only ? [] : await readVisioStencilWindows(pkg, documentPart2);
24349
24351
  report(
24350
24352
  "cached-values-only",
24351
24353
  "ShapeSheet formulas, automatic connector routing, and external data are not evaluated; saved cached values and supported theme records are used.",
@@ -33874,6 +33876,55 @@ async function loadVisio(input, options2 = {}) {
33874
33876
  );
33875
33877
  }
33876
33878
 
33879
+ // visio/parse-incremental.ts
33880
+ var BACKGROUND_CODES = /* @__PURE__ */ new Set(["background-cycle", "missing-background-page"]);
33881
+ var MAX_SPLICED_DIAGNOSTICS = 1e3;
33882
+ var DEFAULT_MAX_SHAPES = 25e3;
33883
+ var countShapes = (shapes) => shapes.reduce((sum, shape) => sum + 1 + countShapes(shape.children), 0);
33884
+ var isPageDiagnostic = (d) => d.pageId !== void 0 && !BACKGROUND_CODES.has(d.code);
33885
+ function mergeVisioPages(previous, partial, pageIds2, options2 = {}) {
33886
+ if (previous.format !== "vsdx" || partial.format !== "vsdx") return void 0;
33887
+ const wanted = new Set(pageIds2);
33888
+ const fresh = new Map(partial.pages.map((page) => [page.id, page]));
33889
+ if (fresh.size !== wanted.size || ![...wanted].every((id3) => fresh.has(id3))) return void 0;
33890
+ const before = new Map(previous.pages.map((page) => [page.id, page]));
33891
+ if (![...wanted].every((id3) => before.has(id3))) return void 0;
33892
+ for (const [id3, page] of fresh)
33893
+ if (before.get(id3).backgroundPageId === void 0) delete page.backgroundPageId;
33894
+ const pages = previous.pages.map((page) => fresh.get(page.id) ?? page);
33895
+ if (pages.reduce((sum, page) => sum + countShapes(page.shapes), 0) > (options2.maxShapes ?? DEFAULT_MAX_SHAPES))
33896
+ return void 0;
33897
+ const diagnostics = spliceDiagnostics(previous.diagnostics, partial.diagnostics, wanted);
33898
+ if (!diagnostics) return void 0;
33899
+ return { ...previous, pages, diagnostics };
33900
+ }
33901
+ function spliceDiagnostics(previous, partial, wanted) {
33902
+ const truncated = (list2) => list2.some((d) => d.code === "diagnostics-truncated");
33903
+ if (truncated(previous) || truncated(partial)) return void 0;
33904
+ const fresh = partial.filter((d) => isPageDiagnostic(d) && wanted.has(d.pageId));
33905
+ if (previous.length + fresh.length > MAX_SPLICED_DIAGNOSTICS) return void 0;
33906
+ let out = [...previous];
33907
+ for (const id3 of wanted) {
33908
+ const next = fresh.filter((d) => d.pageId === id3);
33909
+ const at2 = out.flatMap((d, i) => isPageDiagnostic(d) && d.pageId === id3 ? [i] : []);
33910
+ if (!at2.length) {
33911
+ if (next.length) return void 0;
33912
+ continue;
33913
+ }
33914
+ const first2 = at2[0];
33915
+ const last = at2[at2.length - 1];
33916
+ if (last - first2 + 1 !== at2.length) return void 0;
33917
+ out = [...out.slice(0, first2), ...next, ...out.slice(last + 1)];
33918
+ }
33919
+ return out;
33920
+ }
33921
+ async function parseVsdxPages(input, previous, pageIds2, options2 = {}) {
33922
+ const partial = await parseVsdx(input, { ...options2, pages: pageIds2 });
33923
+ return mergeVisioPages(previous, partial, pageIds2, {
33924
+ ...options2.maxShapes !== void 0 ? { maxShapes: options2.maxShapes } : {}
33925
+ });
33926
+ }
33927
+
33877
33928
  // visio/visibility.ts
33878
33929
  var VISIO_VISIBILITY_LIMITS = Object.freeze({
33879
33930
  maxShapes: 25e3,
@@ -48802,4 +48853,4 @@ function checkVisioAlternativeText(document) {
48802
48853
  return issues;
48803
48854
  }
48804
48855
 
48805
- export { EmfBitmapError, VISIO_ARROW_SHAPES, VISIO_BACKGROUND_STYLES, VISIO_BASIC_SHAPES, VISIO_BASIC_STENCIL, VISIO_BORDER_STYLES, VISIO_BUILT_IN_STENCILS, VISIO_BUILT_IN_THEMES, VISIO_BUILT_IN_THEME_IDS, VISIO_CALLOUT_STYLES, VISIO_CHART_OBJECT_MAX_BYTES, VISIO_CLIPBOARD_MAGIC, VISIO_CLIPBOARD_MAX_CHARS, VISIO_COMMENT_AUTHOR_LIMIT, VISIO_COMMENT_LIMIT, VISIO_COMMENT_TEXT_LIMIT, VISIO_CONNECTOR_ROUTES, VISIO_CONTAINER_HEADING, VISIO_CONTAINER_MARGIN, VISIO_CONTAINER_STYLES, VISIO_DATA_LIMITS, VISIO_EMF_ADMISSION_LIMITS, VISIO_FIELD_FORMATS, VISIO_FIELD_FUNCTIONS, VISIO_FLOWCHART_SHAPES, VISIO_FOREIGN_VECTOR_LIMITS, VISIO_GLOW_SIZES, VISIO_GLOW_TRANSPARENCY, VISIO_GLUE, VISIO_GRID_DENSITIES, VISIO_LAYER_NAME_LIMIT, VISIO_LINE_JUMP_LIMITS, VISIO_LINE_JUMP_WIDTH, VISIO_MANAGED_BACKGROUND, VISIO_METADATA_TEXT_LIMIT, VISIO_PAGE_LAYOUT_DEFAULTS, VISIO_PATH_SEGMENT_LIMIT, VISIO_PICTURE_MAX_BYTES, VISIO_PRINT_COUNT_LIMITS, VISIO_QUICK_STYLE_COLORS, VISIO_QUICK_STYLE_VARIANT_COLORS, VISIO_RASTER_IMAGE_LIMITS, VISIO_REFLECTION_PRESETS, VISIO_RULER_DENSITIES, VISIO_SCALE_UNITS, VISIO_SHADOW_PRESETS, VISIO_SHAPE_DATA_TYPES, VISIO_SNAP, VISIO_SNAP_GLUE_DEFAULTS, VISIO_SOFT_EDGE_SIZES, VISIO_STENCILS, VISIO_STENCIL_FILES, VISIO_TEXT_CASES, VISIO_TEXT_POSITIONS, VISIO_THEME_COLOR_SLOTS, VISIO_UNTHEMED_COLORS, VISIO_VISIBILITY_LIMITS, VisioForeignVectorError, VisioFormulaError, VisioImageError, VisioPackageError, analyzeVisioFormula, canonicalShapeDataValue, captureVisioClipboard, checkVisioAlternativeText, convertVisioMetafile, createVsdx, deserializeVisioClipboard, designTextMeasurer, editVsdx, encodeBitmapEmf, evaluateVisioFormula, evaluateVisioTextField, formatVisioFieldValue, getVisioPageLayers, inspectVisioEmfAdmission, inspectVisioRasterImage, isVisioBasicShape, isVisioBuiltInThemeId, isVisioChangeShapeTarget, isVisioDiagramPartEdit, isVisioLayerName, isVisioOutlineShape, isVisioQuickStyleColor, isVisioShadowPreset, isVisioStencilShape, isVisioThemeColorRef, layoutVisioFilledArrowLine, loadVisio, parseLegacyVsd, parseVisioFormula, parseVisioThemeColorFormula, parseVsdx, readVisioStencil, resolveVisioPageVisibility, resolveVisioThemeColor, sanitizeVisioForeignVectorTree, serializeVisioClipboard, setVisioTextMeasurer, trimVisioArrowLine, validateVisioForeignVector, visioBackgroundShapes, visioBasicShapeOutline, visioBorderShapes, visioBuiltInMaster, visioBuiltInStencil, visioBuiltInTheme, visioCircleThrough, visioCurvedRoute, visioDecorationName, visioFallbackQuickStyle, visioFilledArrow, visioFitFreeform, visioFitPencil, visioFontAssumed, visioFormulaCachedValue, visioLineJumpPaths, visioLinkedRowNames, visioOpenArrowExtent, visioOpenArrowPath, visioOrthogonalRoute, visioOutlineShape, visioPageLayout, visioPageThemeColors, visioPathBounds, visioPathSamples, visioPrintTileCount, visioQuarterArc, visioShade, visioShadowPresetGeometry, visioShapeDataRowName, visioShapeStructure, visioSimplifyPath, visioSnapGlue, visioStencilMaster, visioStencilShapeOutline, visioTextExtents, visioThemeColorFormula, visioThemeVariantColors, visioThemeXml };
48856
+ export { EmfBitmapError, VISIO_ARROW_SHAPES, VISIO_BACKGROUND_STYLES, VISIO_BASIC_SHAPES, VISIO_BASIC_STENCIL, VISIO_BORDER_STYLES, VISIO_BUILT_IN_STENCILS, VISIO_BUILT_IN_THEMES, VISIO_BUILT_IN_THEME_IDS, VISIO_CALLOUT_STYLES, VISIO_CHART_OBJECT_MAX_BYTES, VISIO_CLIPBOARD_MAGIC, VISIO_CLIPBOARD_MAX_CHARS, VISIO_COMMENT_AUTHOR_LIMIT, VISIO_COMMENT_LIMIT, VISIO_COMMENT_TEXT_LIMIT, VISIO_CONNECTOR_ROUTES, VISIO_CONTAINER_HEADING, VISIO_CONTAINER_MARGIN, VISIO_CONTAINER_STYLES, VISIO_DATA_LIMITS, VISIO_EMF_ADMISSION_LIMITS, VISIO_FIELD_FORMATS, VISIO_FIELD_FUNCTIONS, VISIO_FLOWCHART_SHAPES, VISIO_FOREIGN_VECTOR_LIMITS, VISIO_GLOW_SIZES, VISIO_GLOW_TRANSPARENCY, VISIO_GLUE, VISIO_GRID_DENSITIES, VISIO_LAYER_NAME_LIMIT, VISIO_LINE_JUMP_LIMITS, VISIO_LINE_JUMP_WIDTH, VISIO_MANAGED_BACKGROUND, VISIO_METADATA_TEXT_LIMIT, VISIO_PAGE_LAYOUT_DEFAULTS, VISIO_PATH_SEGMENT_LIMIT, VISIO_PICTURE_MAX_BYTES, VISIO_PRINT_COUNT_LIMITS, VISIO_QUICK_STYLE_COLORS, VISIO_QUICK_STYLE_VARIANT_COLORS, VISIO_RASTER_IMAGE_LIMITS, VISIO_REFLECTION_PRESETS, VISIO_RULER_DENSITIES, VISIO_SCALE_UNITS, VISIO_SHADOW_PRESETS, VISIO_SHAPE_DATA_TYPES, VISIO_SNAP, VISIO_SNAP_GLUE_DEFAULTS, VISIO_SOFT_EDGE_SIZES, VISIO_STENCILS, VISIO_STENCIL_FILES, VISIO_TEXT_CASES, VISIO_TEXT_POSITIONS, VISIO_THEME_COLOR_SLOTS, VISIO_UNTHEMED_COLORS, VISIO_VISIBILITY_LIMITS, VisioForeignVectorError, VisioFormulaError, VisioImageError, VisioPackageError, analyzeVisioFormula, canonicalShapeDataValue, captureVisioClipboard, checkVisioAlternativeText, convertVisioMetafile, createVsdx, deserializeVisioClipboard, designTextMeasurer, editVsdx, encodeBitmapEmf, evaluateVisioFormula, evaluateVisioTextField, formatVisioFieldValue, getVisioPageLayers, inspectVisioEmfAdmission, inspectVisioRasterImage, isVisioBasicShape, isVisioBuiltInThemeId, isVisioChangeShapeTarget, isVisioDiagramPartEdit, isVisioLayerName, isVisioOutlineShape, isVisioQuickStyleColor, isVisioShadowPreset, isVisioStencilShape, isVisioThemeColorRef, layoutVisioFilledArrowLine, loadVisio, mergeVisioPages, parseLegacyVsd, parseVisioFormula, parseVisioThemeColorFormula, parseVsdx, parseVsdxPages, readVisioStencil, resolveVisioPageVisibility, resolveVisioThemeColor, sanitizeVisioForeignVectorTree, serializeVisioClipboard, setVisioTextMeasurer, trimVisioArrowLine, validateVisioForeignVector, visioBackgroundShapes, visioBasicShapeOutline, visioBorderShapes, visioBuiltInMaster, visioBuiltInStencil, visioBuiltInTheme, visioCircleThrough, visioCurvedRoute, visioDecorationName, visioFallbackQuickStyle, visioFilledArrow, visioFitFreeform, visioFitPencil, visioFontAssumed, visioFormulaCachedValue, visioLineJumpPaths, visioLinkedRowNames, visioOpenArrowExtent, visioOpenArrowPath, visioOrthogonalRoute, visioOutlineShape, visioPageLayout, visioPageThemeColors, visioPathBounds, visioPathSamples, visioPrintTileCount, visioQuarterArc, visioShade, visioShadowPresetGeometry, visioShapeDataRowName, visioShapeStructure, visioSimplifyPath, visioSnapGlue, visioStencilMaster, visioStencilShapeOutline, visioTextExtents, visioThemeColorFormula, visioThemeVariantColors, visioThemeXml };
@@ -0,0 +1,16 @@
1
+ import type { VisioDocument } from './model.js';
2
+ import { type ParseVsdxOptions } from './parser.js';
3
+ /**
4
+ * `previous` with the pages of `partial` (read with `pages`) in place of the same pages. Only
5
+ * valid when the pages part, the masters, styles, theme, media and every other part are the ones
6
+ * `previous` was read from. Returns undefined when the merge cannot match a whole read.
7
+ */
8
+ export declare function mergeVisioPages(previous: VisioDocument, partial: VisioDocument, pageIds: readonly string[], options?: {
9
+ maxShapes?: number;
10
+ }): VisioDocument | undefined;
11
+ /**
12
+ * Reads the pages `pageIds` of `input` and merges them into `previous`; undefined means read the
13
+ * whole package. Never throws for a merge that does not apply (a parse error still propagates).
14
+ */
15
+ export declare function parseVsdxPages(input: Uint8Array | ArrayBuffer, previous: VisioDocument, pageIds: readonly string[], options?: ParseVsdxOptions): Promise<VisioDocument | undefined>;
16
+ //# sourceMappingURL=parse-incremental.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-incremental.d.ts","sourceRoot":"","sources":["../../visio/parse-incremental.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAe5D;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,aAAa,GAAG,SAAS,CAoB3B;AA4BD;;;GAGG;AACH,wBAAsB,cAAc,CACnC,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAKpC"}
@@ -24,6 +24,13 @@ export interface ParseVsdxOptions {
24
24
  * packages stay refused.
25
25
  */
26
26
  stencil?: boolean;
27
+ /**
28
+ * Read only the pages with these ids (every other page is skipped after its id is checked).
29
+ * The result lists just those pages and leaves out what is not per page (comments, data
30
+ * recordsets, stencil windows, background validation); {@link mergeVisioPages} splices it into
31
+ * the document read earlier from a package in which only those page parts changed.
32
+ */
33
+ pages?: readonly string[];
27
34
  }
28
35
  /** Read-only VSDX import. This uses cached ShapeSheet values, not a formula engine. */
29
36
  export declare function parseVsdx(input: Uint8Array | ArrayBuffer, options?: ParseVsdxOptions): Promise<VisioDocument>;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../visio/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAGN,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAyBrF,MAAM,WAAW,gBAAgB;IAChC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAYD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA6VxB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAYvF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../visio/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAGN,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAyBrF,MAAM,WAAW,gBAAgB;IAChC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAYD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA+VxB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAYvF"}
@@ -1,16 +1,21 @@
1
- import type { CollabSession, CollaborationOptions } from '../../collab/index.js';
1
+ import type { CollabSession, CollaborationOptions, WriteBackRetry } from '../../collab/index.js';
2
2
  import type { VisioPresence } from './collab-presence.js';
3
3
  /** Write-back settings of {@link VisioCollaborationOptions}. */
4
4
  export interface VisioWriteBackOptions {
5
5
  /**
6
6
  * Called with the saved VSDX bytes, debounced, after local and remote changes, only in the
7
- * window whose `user.role` is `owner`. Returning is not a durable-storage acknowledgement: the
8
- * viewer cannot tell whether the host stored the bytes, and a pending write-back is flushed
9
- * once when the viewer leaves the room, not retried.
7
+ * window whose `user.role` is `owner`. Return a promise to acknowledge durable storage: the
8
+ * viewer then reports `saving`, `saved` or `failed` in `collaborationState.writeBack`, and
9
+ * retries a rejection as `writeBackRetry` says. A plain return counts as acknowledged at once.
10
+ * A pending write-back is flushed when the viewer leaves the room and when the page is hidden
11
+ * or closing; browsers do not wait for asynchronous work then, so a write that needs a network
12
+ * round trip should use `navigator.sendBeacon` or `fetch(url, { keepalive: true })`.
10
13
  */
11
- onWriteBack?: (bytes: Uint8Array) => void;
14
+ onWriteBack?: (bytes: Uint8Array) => void | Promise<void>;
12
15
  /** Quiet time after the last change before `onWriteBack` fires. Default 5000. */
13
16
  writeBackDebounceMs?: number;
17
+ /** Retries of a rejected `onWriteBack` with exponential backoff. Default: none. */
18
+ writeBackRetry?: WriteBackRetry;
14
19
  }
15
20
  /**
16
21
  * The options of `<visio-viewer>.collaboration`. A host-owned `session` should be created with
@@ -1 +1 @@
1
- {"version":3,"file":"collab-options.d.ts","sourceRoot":"","sources":["../../../visio/ui/collab-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,GAC3F,qBAAqB,GAAG;IACvB,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;CACvD,CAAC"}
1
+ {"version":3,"file":"collab-options.d.ts","sourceRoot":"","sources":["../../../visio/ui/collab-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mFAAmF;IACnF,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,GAC3F,qBAAqB,GAAG;IACvB,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;CACvD,CAAC"}
@@ -27157,6 +27157,7 @@ async function parseVsdx(input, options2 = {}) {
27157
27157
  throw new VisioPackageError("INVALID_DOCUMENT", "Missing Visio pages part.");
27158
27158
  const pages = [], pageIds2 = /* @__PURE__ */ new Set();
27159
27159
  const comments = [];
27160
+ const only = options2.pages ? new Set(options2.pages) : void 0;
27160
27161
  const pageNodes = pagesPart ? children2(await visioXml(pkg, pagesPart, "Pages"), "Page") : [];
27161
27162
  const foreground = pageNodes.filter((page) => !yes(attribute2(page, "Background")));
27162
27163
  const fieldProperties = await readVisioFieldProperties(pkg);
@@ -27166,6 +27167,7 @@ async function parseVsdx(input, options2 = {}) {
27166
27167
  if (!id3 || pageIds2.has(id3))
27167
27168
  throw new VisioPackageError("INVALID_PAGE_ID", "Page IDs must be present and unique.");
27168
27169
  pageIds2.add(id3);
27170
+ if (only && !only.has(id3)) continue;
27169
27171
  const part = await indexedPart(pkg, pagesPart, page, "page");
27170
27172
  const root2 = await visioXml(pkg, part, "PageContents");
27171
27173
  const localReport = (code, message, extra) => report(code, message, { part, pageId: id3, ...extra });
@@ -27275,16 +27277,16 @@ async function parseVsdx(input, options2 = {}) {
27275
27277
  });
27276
27278
  }
27277
27279
  checkTime();
27278
- validateBackgrounds(pages, report);
27280
+ if (!only) validateBackgrounds(pages, report);
27279
27281
  try {
27280
- comments.push(...await readVisioComments(pkg, documentPart2, report));
27282
+ if (!only) comments.push(...await readVisioComments(pkg, documentPart2, report));
27281
27283
  } catch (error) {
27282
27284
  if (!(error instanceof VisioPackageError) || error.code === "LIMIT_RUNTIME") throw error;
27283
27285
  report("invalid-comments", "The comments part could not be read; comments are not shown.");
27284
27286
  }
27285
27287
  let dataRecordsets = [];
27286
27288
  try {
27287
- dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
27289
+ if (!only) dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
27288
27290
  } catch (error) {
27289
27291
  if (error instanceof VisioPackageError && error.code === "LIMIT_RUNTIME") throw error;
27290
27292
  report(
@@ -27292,7 +27294,7 @@ async function parseVsdx(input, options2 = {}) {
27292
27294
  `Saved external data could not be read and is preserved unchanged: ${error instanceof Error ? error.message : String(error)}`
27293
27295
  );
27294
27296
  }
27295
- const stencils = await readVisioStencilWindows(pkg, documentPart2);
27297
+ const stencils = only ? [] : await readVisioStencilWindows(pkg, documentPart2);
27296
27298
  report(
27297
27299
  "cached-values-only",
27298
27300
  "ShapeSheet formulas, automatic connector routing, and external data are not evaluated; saved cached values and supported theme records are used.",
@@ -27151,6 +27151,7 @@ async function parseVsdx(input, options2 = {}) {
27151
27151
  throw new VisioPackageError("INVALID_DOCUMENT", "Missing Visio pages part.");
27152
27152
  const pages = [], pageIds2 = /* @__PURE__ */ new Set();
27153
27153
  const comments = [];
27154
+ const only = options2.pages ? new Set(options2.pages) : void 0;
27154
27155
  const pageNodes = pagesPart ? children2(await visioXml(pkg, pagesPart, "Pages"), "Page") : [];
27155
27156
  const foreground = pageNodes.filter((page) => !yes(attribute2(page, "Background")));
27156
27157
  const fieldProperties = await readVisioFieldProperties(pkg);
@@ -27160,6 +27161,7 @@ async function parseVsdx(input, options2 = {}) {
27160
27161
  if (!id3 || pageIds2.has(id3))
27161
27162
  throw new VisioPackageError("INVALID_PAGE_ID", "Page IDs must be present and unique.");
27162
27163
  pageIds2.add(id3);
27164
+ if (only && !only.has(id3)) continue;
27163
27165
  const part = await indexedPart(pkg, pagesPart, page, "page");
27164
27166
  const root2 = await visioXml(pkg, part, "PageContents");
27165
27167
  const localReport = (code, message, extra) => report(code, message, { part, pageId: id3, ...extra });
@@ -27269,16 +27271,16 @@ async function parseVsdx(input, options2 = {}) {
27269
27271
  });
27270
27272
  }
27271
27273
  checkTime();
27272
- validateBackgrounds(pages, report);
27274
+ if (!only) validateBackgrounds(pages, report);
27273
27275
  try {
27274
- comments.push(...await readVisioComments(pkg, documentPart2, report));
27276
+ if (!only) comments.push(...await readVisioComments(pkg, documentPart2, report));
27275
27277
  } catch (error) {
27276
27278
  if (!(error instanceof VisioPackageError) || error.code === "LIMIT_RUNTIME") throw error;
27277
27279
  report("invalid-comments", "The comments part could not be read; comments are not shown.");
27278
27280
  }
27279
27281
  let dataRecordsets = [];
27280
27282
  try {
27281
- dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
27283
+ if (!only) dataRecordsets = await readDataRecordsets(pkg, documentPart2, checkTime);
27282
27284
  } catch (error) {
27283
27285
  if (error instanceof VisioPackageError && error.code === "LIMIT_RUNTIME") throw error;
27284
27286
  report(
@@ -27286,7 +27288,7 @@ async function parseVsdx(input, options2 = {}) {
27286
27288
  `Saved external data could not be read and is preserved unchanged: ${error instanceof Error ? error.message : String(error)}`
27287
27289
  );
27288
27290
  }
27289
- const stencils = await readVisioStencilWindows(pkg, documentPart2);
27291
+ const stencils = only ? [] : await readVisioStencilWindows(pkg, documentPart2);
27290
27292
  report(
27291
27293
  "cached-values-only",
27292
27294
  "ShapeSheet formulas, automatic connector routing, and external data are not evaluated; saved cached values and supported theme records are used.",