ooxml-core 0.2.0 → 0.3.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 (115) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/dist/pptx/cli/index.cjs +0 -0
  4. package/dist/pptx/cli/index.mjs +0 -0
  5. package/dist/visio/complex-geometry.d.ts +4 -0
  6. package/dist/visio/complex-geometry.d.ts.map +1 -0
  7. package/dist/visio/convert-metafile.d.ts +28 -0
  8. package/dist/visio/convert-metafile.d.ts.map +1 -0
  9. package/dist/visio/diagnostics.d.ts +8 -0
  10. package/dist/visio/diagnostics.d.ts.map +1 -0
  11. package/dist/visio/edit-package.d.ts +10 -0
  12. package/dist/visio/edit-package.d.ts.map +1 -0
  13. package/dist/visio/edit-text.d.ts +7 -0
  14. package/dist/visio/edit-text.d.ts.map +1 -0
  15. package/dist/visio/edit.d.ts +26 -0
  16. package/dist/visio/edit.d.ts.map +1 -0
  17. package/dist/visio/emf-admission-comment.d.ts +7 -0
  18. package/dist/visio/emf-admission-comment.d.ts.map +1 -0
  19. package/dist/visio/emf-admission-context.d.ts +59 -0
  20. package/dist/visio/emf-admission-context.d.ts.map +1 -0
  21. package/dist/visio/emf-admission-geometry.d.ts +3 -0
  22. package/dist/visio/emf-admission-geometry.d.ts.map +1 -0
  23. package/dist/visio/emf-admission-input.d.ts +8 -0
  24. package/dist/visio/emf-admission-input.d.ts.map +1 -0
  25. package/dist/visio/emf-admission-records.d.ts +6 -0
  26. package/dist/visio/emf-admission-records.d.ts.map +1 -0
  27. package/dist/visio/emf-admission-types.d.ts +80 -0
  28. package/dist/visio/emf-admission-types.d.ts.map +1 -0
  29. package/dist/visio/emf-admission.d.ts +9 -0
  30. package/dist/visio/emf-admission.d.ts.map +1 -0
  31. package/dist/visio/foreign-vector-graph.d.ts +4 -0
  32. package/dist/visio/foreign-vector-graph.d.ts.map +1 -0
  33. package/dist/visio/foreign-vector-path.d.ts +12 -0
  34. package/dist/visio/foreign-vector-path.d.ts.map +1 -0
  35. package/dist/visio/foreign-vector-types.d.ts +81 -0
  36. package/dist/visio/foreign-vector-types.d.ts.map +1 -0
  37. package/dist/visio/foreign-vector-validation.d.ts +4 -0
  38. package/dist/visio/foreign-vector-validation.d.ts.map +1 -0
  39. package/dist/visio/foreign-vector-values.d.ts +14 -0
  40. package/dist/visio/foreign-vector-values.d.ts.map +1 -0
  41. package/dist/visio/foreign-vector.d.ts +13 -0
  42. package/dist/visio/foreign-vector.d.ts.map +1 -0
  43. package/dist/visio/geometry.d.ts +8 -0
  44. package/dist/visio/geometry.d.ts.map +1 -0
  45. package/dist/visio/index.cjs +5462 -0
  46. package/dist/visio/index.d.ts +12 -0
  47. package/dist/visio/index.d.ts.map +1 -0
  48. package/dist/visio/index.mjs +5441 -0
  49. package/dist/visio/layers.d.ts +19 -0
  50. package/dist/visio/layers.d.ts.map +1 -0
  51. package/dist/visio/line-pattern.d.ts +5 -0
  52. package/dist/visio/line-pattern.d.ts.map +1 -0
  53. package/dist/visio/line-style.d.ts +12 -0
  54. package/dist/visio/line-style.d.ts.map +1 -0
  55. package/dist/visio/media.d.ts +36 -0
  56. package/dist/visio/media.d.ts.map +1 -0
  57. package/dist/visio/metadata.d.ts +4 -0
  58. package/dist/visio/metadata.d.ts.map +1 -0
  59. package/dist/visio/model.d.ts +203 -0
  60. package/dist/visio/model.d.ts.map +1 -0
  61. package/dist/visio/nurbs-flatten.d.ts +5 -0
  62. package/dist/visio/nurbs-flatten.d.ts.map +1 -0
  63. package/dist/visio/nurbs.d.ts +11 -0
  64. package/dist/visio/nurbs.d.ts.map +1 -0
  65. package/dist/visio/package-common.d.ts +39 -0
  66. package/dist/visio/package-common.d.ts.map +1 -0
  67. package/dist/visio/package.d.ts +30 -0
  68. package/dist/visio/package.d.ts.map +1 -0
  69. package/dist/visio/paragraphs.d.ts +10 -0
  70. package/dist/visio/paragraphs.d.ts.map +1 -0
  71. package/dist/visio/parser.d.ts +26 -0
  72. package/dist/visio/parser.d.ts.map +1 -0
  73. package/dist/visio/parts.d.ts +9 -0
  74. package/dist/visio/parts.d.ts.map +1 -0
  75. package/dist/visio/prepare-images.d.ts +7 -0
  76. package/dist/visio/prepare-images.d.ts.map +1 -0
  77. package/dist/visio/prepare-metafiles.d.ts +17 -0
  78. package/dist/visio/prepare-metafiles.d.ts.map +1 -0
  79. package/dist/visio/rounded-geometry.d.ts +8 -0
  80. package/dist/visio/rounded-geometry.d.ts.map +1 -0
  81. package/dist/visio/saved-fill-gradient.d.ts +13 -0
  82. package/dist/visio/saved-fill-gradient.d.ts.map +1 -0
  83. package/dist/visio/shape-metadata.d.ts +65 -0
  84. package/dist/visio/shape-metadata.d.ts.map +1 -0
  85. package/dist/visio/shapes.d.ts +24 -0
  86. package/dist/visio/shapes.d.ts.map +1 -0
  87. package/dist/visio/sheet.d.ts +57 -0
  88. package/dist/visio/sheet.d.ts.map +1 -0
  89. package/dist/visio/spline-geometry.d.ts +8 -0
  90. package/dist/visio/spline-geometry.d.ts.map +1 -0
  91. package/dist/visio/style-inheritance.d.ts +13 -0
  92. package/dist/visio/style-inheritance.d.ts.map +1 -0
  93. package/dist/visio/style.d.ts +11 -0
  94. package/dist/visio/style.d.ts.map +1 -0
  95. package/dist/visio/text-background.d.ts +10 -0
  96. package/dist/visio/text-background.d.ts.map +1 -0
  97. package/dist/visio/theme-color.d.ts +15 -0
  98. package/dist/visio/theme-color.d.ts.map +1 -0
  99. package/dist/visio/theme-gradient.d.ts +15 -0
  100. package/dist/visio/theme-gradient.d.ts.map +1 -0
  101. package/dist/visio/theme-line.d.ts +15 -0
  102. package/dist/visio/theme-line.d.ts.map +1 -0
  103. package/dist/visio/theme-resolve.d.ts +29 -0
  104. package/dist/visio/theme-resolve.d.ts.map +1 -0
  105. package/dist/visio/theme-root.d.ts +16 -0
  106. package/dist/visio/theme-root.d.ts.map +1 -0
  107. package/dist/visio/theme.d.ts +27 -0
  108. package/dist/visio/theme.d.ts.map +1 -0
  109. package/dist/visio/visibility.d.ts +42 -0
  110. package/dist/visio/visibility.d.ts.map +1 -0
  111. package/dist/visio/xml-validation.d.ts +5 -0
  112. package/dist/visio/xml-validation.d.ts.map +1 -0
  113. package/dist/visio/zip-validation.d.ts +4 -0
  114. package/dist/visio/zip-validation.d.ts.map +1 -0
  115. package/package.json +10 -4
@@ -0,0 +1,19 @@
1
+ import type { VisioLayer, VisioLayerPrintSummary } from './model.js';
2
+ import { type Report, type Sheet } from './sheet.js';
3
+ import { type Resources } from './style.js';
4
+ export interface LayerBudget {
5
+ consumeCharacters(count: number): void;
6
+ consumeMemberships(count: number): void;
7
+ }
8
+ /** Share across pages and inherited instances to bound normalization work and arrays. */
9
+ export declare function createLayerBudget(): LayerBudget;
10
+ /** Construct once per page; preserve the first matching row's existing semantics. */
11
+ export declare function indexLayers(layers: readonly VisioLayer[]): ReadonlyMap<string, VisioLayer>;
12
+ /** PageSheet Layer row indices are the stable layer IDs used by LayerMember. */
13
+ export declare function pageLayers(sheet: Sheet, resources: Resources, report: Report): VisioLayer[];
14
+ export declare function shapeLayers(sheet: Sheet, layers: ReadonlyMap<string, VisioLayer>, report: Report, budget?: LayerBudget): {
15
+ layerIds: string[];
16
+ hidden: boolean;
17
+ printSummary: VisioLayerPrintSummary;
18
+ };
19
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/visio/layers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGrE,OAAO,EAAuB,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC3B,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AACD,yFAAyF;AACzF,wBAAgB,iBAAiB,IAAI,WAAW,CAkB/C;AACD,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAI1F;AACD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAqB3F;AACD,wBAAgB,WAAW,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,WAAiC,GACvC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,sBAAsB,CAAA;CAAE,CA2D/E"}
@@ -0,0 +1,5 @@
1
+ import type { VisioStyle } from './model.js';
2
+ import { type Cells, type Report } from './sheet.js';
3
+ /** Cached values win over formulas and themes; formulas are never evaluated. */
4
+ export declare function linePattern(cells: Cells, report: Report): Pick<VisioStyle, 'linePattern' | 'lineDash'>;
5
+ //# sourceMappingURL=line-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-pattern.d.ts","sourceRoot":"","sources":["../../src/visio/line-pattern.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAU,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AA+B7D,gFAAgF;AAChF,wBAAgB,WAAW,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACZ,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,UAAU,CAAC,CAmC9C"}
@@ -0,0 +1,12 @@
1
+ import type { VisioStyle } from './model.js';
2
+ import { type Cells, type Report } from './sheet.js';
3
+ import { type ThemeResources } from './theme-resolve.js';
4
+ /**
5
+ * MS-VSDX 2.4.4.170 names cached cap 0 Rounded, 1 Square, and 2 Extended:
6
+ * https://learn.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-vsdx/b08a8361-c0c1-4d5f-8915-6810bcedfbc3
7
+ * DrawingML cap tokens have an unambiguous normalized meaning. Office's omitted
8
+ * cap default is flat (MS-OI29500 2.1.1212), despite the ECMA prose saying square:
9
+ * https://learn.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/5564035f-88ff-4ab8-bbfb-d2998a83324d
10
+ */
11
+ export declare function lineCap(cells: Cells, resources: ThemeResources, report: Report): VisioStyle['lineCap'];
12
+ //# sourceMappingURL=line-style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-style.d.ts","sourceRoot":"","sources":["../../src/visio/line-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAU,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,OAAO,CACtB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,MAAM,GACZ,UAAU,CAAC,SAAS,CAAC,CAmCvB"}
@@ -0,0 +1,36 @@
1
+ import { VisioPackage } from './package.js';
2
+ import { type Report } from './sheet.js';
3
+ export interface VisioImageOptions {
4
+ maxImageBytes?: number;
5
+ maxPixels?: number;
6
+ maxDimension?: number;
7
+ }
8
+ export interface VisioRasterImageInfo {
9
+ mimeType: 'image/png' | 'image/jpeg' | 'image/gif';
10
+ pixelWidth: number;
11
+ pixelHeight: number;
12
+ }
13
+ export interface VisioRasterImage extends VisioRasterImageInfo {
14
+ /** Shared package-owned bytes. Consumers must not modify them. */
15
+ bytes: Uint8Array;
16
+ }
17
+ type ImageLimits = Required<VisioImageOptions>;
18
+ /** Defaults and hard ceilings for inspecting caller-owned raster bytes. */
19
+ export declare const VISIO_RASTER_IMAGE_LIMITS: Readonly<ImageLimits>;
20
+ export type VisioImageErrorCode = 'invalid-image' | 'unsupported-image' | 'image-limit' | 'invalid-limit';
21
+ export declare class VisioImageError extends Error {
22
+ readonly code: VisioImageErrorCode;
23
+ constructor(code: VisioImageErrorCode, message: string);
24
+ }
25
+ /**
26
+ * Inspect PNG, JPEG, or GIF structure and intrinsic dimensions without trusting declared metadata.
27
+ * Checks PNG chunk checksums, but does not decode pixel/entropy data or prove browser decodability.
28
+ * Limits are positive safe integers and may only lower VISIO_RASTER_IMAGE_LIMITS. Throws
29
+ * VisioImageError on invalid limits, unsupported/malformed input, or an exceeded limit.
30
+ * Reads only the supplied view and does not cache, copy, or retain mutable caller-owned bytes.
31
+ */
32
+ export declare function inspectVisioRasterImage(bytes: Uint8Array, options?: VisioImageOptions): VisioRasterImageInfo;
33
+ /** Read only authenticated internal raster parts; no URLs or active media are returned. */
34
+ export declare function readVisioImage(pkg: VisioPackage, sourcePart: string, foreignData: Element, report: Report, options?: VisioImageOptions): Promise<VisioRasterImage | undefined>;
35
+ export {};
36
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/visio/media.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC7D,kEAAkE;IAClE,KAAK,EAAE,UAAU,CAAC;CAClB;AACD,KAAK,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC/C,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAI1D,CAAC;AACH,MAAM,MAAM,mBAAmB,GAC5B,eAAe,GACf,mBAAmB,GACnB,aAAa,GACb,eAAe,CAAC;AACnB,qBAAa,eAAgB,SAAQ,KAAK;aAExB,IAAI,EAAE,mBAAmB;gBAAzB,IAAI,EAAE,mBAAmB,EACzC,OAAO,EAAE,MAAM;CAKhB;AA0KD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,iBAAsB,GAC7B,oBAAoB,CAatB;AAED,2FAA2F;AAC3F,wBAAsB,cAAc,CACnC,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAkDvC"}
@@ -0,0 +1,4 @@
1
+ /** Metadata has separate limits from document text and geometry formula content. */
2
+ export declare function metadata(value: string, max: number, label: string): string;
3
+ export declare function metadataAttributes(node: Element): Map<string, string>;
4
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/visio/metadata.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE"}
@@ -0,0 +1,203 @@
1
+ import type { VisioForeignVector } from './foreign-vector.js';
2
+ import type { VisioHyperlink, VisioShapeData } from './shape-metadata.js';
3
+ /** Visio's internal distance unit is the inch; angles are radians. */
4
+ export type VisioMatrix = readonly [number, number, number, number, number, number];
5
+ export interface VisioDiagnostic {
6
+ code: string;
7
+ severity: 'info' | 'warning';
8
+ message: string;
9
+ part?: string;
10
+ pageId?: string;
11
+ shapeId?: string;
12
+ }
13
+ export interface VisioGeometry {
14
+ /** SVG path data in local, y-up, inch coordinates. No untrusted markup. */
15
+ path: string;
16
+ fill: boolean;
17
+ stroke: boolean;
18
+ }
19
+ export interface VisioLinearGradient {
20
+ type: 'linear';
21
+ /** Gradient endpoints in local y-up inches, for SVG userSpaceOnUse. */
22
+ start: readonly [number, number];
23
+ end: readonly [number, number];
24
+ stops: {
25
+ offset: number;
26
+ color: string;
27
+ opacity: number;
28
+ }[];
29
+ }
30
+ export interface VisioStyle {
31
+ fill: string;
32
+ /** Supported normalized gradient; fill remains the solid fallback color. */
33
+ fillGradient?: VisioLinearGradient;
34
+ lineColor: string;
35
+ lineWidth: number;
36
+ /** Normalized SVG-compatible cap; absent means the effective cap is unresolved. */
37
+ lineCap?: 'round' | 'butt' | 'square';
38
+ /** Effective ShapeSheet line pattern; 0 is no line, 1 is solid (also invalid-cache fallback). */
39
+ linePattern: number;
40
+ /** Alternating dash/gap lengths in stroke-width multiples, not inches.
41
+ * Cached built-ins 2-23 use inferred compatibility spacing (2-6 entries, each 0-27).
42
+ * Absent for solid, invisible or unresolved patterns. Consumers scale by lineWidth.
43
+ */
44
+ lineDash?: readonly number[];
45
+ fillOpacity: number;
46
+ lineOpacity: number;
47
+ /** Visio arrowhead codes. Consumers must report unsupported arrow variants. */
48
+ startArrow: number;
49
+ endArrow: number;
50
+ startArrowSize?: number;
51
+ endArrowSize?: number;
52
+ }
53
+ export interface VisioTextRun {
54
+ text: string;
55
+ fontFamily: string;
56
+ fontSize: number;
57
+ color: string;
58
+ bold: boolean;
59
+ italic: boolean;
60
+ underline: boolean;
61
+ }
62
+ export interface VisioParagraph {
63
+ /** UTF-16 offsets into plainText. End excludes the paragraph's newline. */
64
+ start: number;
65
+ end: number;
66
+ horizontalAlign: 'left' | 'center' | 'right' | 'justify' | 'distributed';
67
+ indentLeft: number;
68
+ indentRight: number;
69
+ indentFirst: number;
70
+ spaceBefore: number;
71
+ spaceAfter: number;
72
+ /** Exact values are inches; multiples scale the largest font size on the line. */
73
+ lineSpacing: {
74
+ kind: 'multiple' | 'exact';
75
+ value: number;
76
+ };
77
+ direction: 'ltr' | 'rtl';
78
+ bullet?: {
79
+ text: string;
80
+ fontFamily: string;
81
+ fontSize: number;
82
+ offset: number;
83
+ };
84
+ }
85
+ export interface VisioText {
86
+ plainText: string;
87
+ /** Optional backdrop behind laid-out text, not the complete shape rectangle. */
88
+ backgroundColor?: string;
89
+ backgroundOpacity?: number;
90
+ runs: VisioTextRun[];
91
+ paragraphs?: VisioParagraph[];
92
+ fontFamily: string;
93
+ fontSize: number;
94
+ color: string;
95
+ horizontalAlign: 'left' | 'center' | 'right';
96
+ verticalAlign: 'top' | 'middle' | 'bottom';
97
+ /** Local text box transform (y-up), dimensions and margins in inches. */
98
+ transform: VisioMatrix;
99
+ width: number;
100
+ height: number;
101
+ margins: {
102
+ left: number;
103
+ right: number;
104
+ top: number;
105
+ bottom: number;
106
+ };
107
+ }
108
+ export interface VisioPlacedForeignVector {
109
+ vector: VisioForeignVector;
110
+ x: number;
111
+ y: number;
112
+ width: number;
113
+ height: number;
114
+ opacity: number;
115
+ }
116
+ export interface VisioImage {
117
+ mimeType: 'image/png' | 'image/jpeg' | 'image/gif';
118
+ /** Validated embedded raster bytes shared between instances. Consumers must not modify them. */
119
+ bytes: Uint8Array;
120
+ pixelWidth: number;
121
+ pixelHeight: number;
122
+ opacity?: number;
123
+ /** Optional placement in local y-up inches, defaulting to the shape bounds. */
124
+ x?: number;
125
+ y?: number;
126
+ width?: number;
127
+ height?: number;
128
+ }
129
+ export interface VisioLayer {
130
+ id: string;
131
+ name: string;
132
+ visible: boolean;
133
+ printable: boolean;
134
+ locked: boolean;
135
+ color?: string;
136
+ colorOpacity?: number;
137
+ }
138
+ /** Summary of normalized layer Print flags, not a shape printing decision or mixed-layer policy. */
139
+ export type VisioLayerPrintSummary = 'unlayered' | 'all-enabled' | 'all-disabled' | 'mixed' | 'unknown';
140
+ /** Saved reasons retained independently so display overrides cannot reveal intrinsic hiding. */
141
+ export interface VisioShapeVisibility {
142
+ layerHidden: boolean;
143
+ /** Guides are hidden by this renderer, but can be printable in Visio. */
144
+ guide: boolean;
145
+ /** Legacy shape-level NoShow compatibility flag, not Geometry.NoShow. Missing means unknown. */
146
+ noShow?: boolean;
147
+ layerPrintSummary: VisioLayerPrintSummary;
148
+ /**
149
+ * Cached NonPrinting only. Missing or unusable caches remain unknown.
150
+ * https://learn.microsoft.com/en-us/office/client-developer/visio/nonprinting-cell-miscellaneous-section
151
+ */
152
+ nonPrinting?: boolean;
153
+ }
154
+ export interface VisioShape {
155
+ id: string;
156
+ name: string;
157
+ kind: 'shape' | 'group' | 'connector' | 'foreign';
158
+ /** Cached group data ordering: 0 hides own data, 1 behind members, 2 in front. */
159
+ groupDisplayMode?: 0 | 1 | 2;
160
+ width: number;
161
+ height: number;
162
+ /** Local y-up coordinates to parent y-up coordinates. */
163
+ transform: VisioMatrix;
164
+ geometry: VisioGeometry[];
165
+ style: VisioStyle;
166
+ text: VisioText;
167
+ /** Saved display suppression of this shape and its subtree; retained for existing consumers. */
168
+ hidden: boolean;
169
+ /** Additive metadata. Older or manually constructed scenes may omit it. */
170
+ visibility?: VisioShapeVisibility;
171
+ children: VisioShape[];
172
+ masterId?: string;
173
+ layerIds?: string[];
174
+ image?: VisioImage;
175
+ foreignVector?: VisioPlacedForeignVector;
176
+ shapeData?: VisioShapeData[];
177
+ hyperlinks?: VisioHyperlink[];
178
+ }
179
+ export interface VisioConnection {
180
+ fromShapeId: string;
181
+ toShapeId: string;
182
+ fromCell: string;
183
+ toCell: string;
184
+ fromPart?: number;
185
+ toPart?: number;
186
+ }
187
+ export interface VisioPage {
188
+ id: string;
189
+ name: string;
190
+ width: number;
191
+ height: number;
192
+ isBackground: boolean;
193
+ backgroundPageId?: string;
194
+ shapes: VisioShape[];
195
+ connectors: VisioConnection[];
196
+ layers?: VisioLayer[];
197
+ }
198
+ export interface VisioDocument {
199
+ format: 'vsdx';
200
+ pages: VisioPage[];
201
+ diagnostics: VisioDiagnostic[];
202
+ }
203
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/visio/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1E,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpF,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,aAAa;IAC7B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CAChB;AACD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,uEAAuE;IACvE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D;AACD,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtC,iGAAiG;IACjG,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC9B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,WAAW,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AACD,MAAM,WAAW,SAAS;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,yEAAyE;IACzE,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AACD,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IACnD,gGAAgG;IAChG,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,oGAAoG;AACpG,MAAM,MAAM,sBAAsB,GAC/B,WAAW,GACX,aAAa,GACb,cAAc,GACd,OAAO,GACP,SAAS,CAAC;AACb,gGAAgG;AAChG,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;IACf,gGAAgG;IAChG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAClD,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AACD,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,EAAE,CAAC;CAC/B"}
@@ -0,0 +1,5 @@
1
+ import type { NurbsControl, NurbsPoint } from './nurbs.js';
2
+ export declare const CURVE_TOLERANCE = 0.0001;
3
+ /** Private numeric kernel. Inputs must already satisfy normalizedNurbs validation. */
4
+ export declare function flattenNurbs(controls: readonly NurbsControl[], sourceKnots: readonly number[], degree: number, consume: () => void, consumeWork: (units: number) => void): NurbsPoint[] | undefined;
5
+ //# sourceMappingURL=nurbs-flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nurbs-flatten.d.ts","sourceRoot":"","sources":["../../src/visio/nurbs-flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ3D,eAAO,MAAM,eAAe,SAAS,CAAC;AAiBtC,sFAAsF;AACtF,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,IAAI,EACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAClC,UAAU,EAAE,GAAG,SAAS,CAmF1B"}
@@ -0,0 +1,11 @@
1
+ import type { Report } from './sheet.js';
2
+ export type NurbsPoint = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export type NurbsControl = NurbsPoint & {
7
+ weight: number;
8
+ };
9
+ /** Validate and expand Visio's compact n+1 knot sequence before shared bounded sampling. */
10
+ export declare function normalizedNurbs(controls: NurbsControl[], compactKnots: number[], degree: number, report: Report, consume: () => void, kind?: string, consumeWork?: (units: number) => void): string | undefined;
11
+ //# sourceMappingURL=nurbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nurbs.d.ts","sourceRoot":"","sources":["../../src/visio/nurbs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAI3D,4FAA4F;AAC5F,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,YAAY,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,IAAI,EACnB,IAAI,SAAY,EAChB,WAAW,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAe,GAC7C,MAAM,GAAG,SAAS,CAwDpB"}
@@ -0,0 +1,39 @@
1
+ /** Limits apply to declared ZIP sizes and actual streamed output, independently. */
2
+ export interface VisioPackageLimits {
3
+ maxInputBytes: number;
4
+ maxEntries: number;
5
+ maxEntryBytes: number;
6
+ maxTotalBytes: number;
7
+ maxCompressionRatio: number;
8
+ maxXmlChars: number;
9
+ maxXmlDepth: number;
10
+ maxXmlNodes: number;
11
+ maxTotalXmlNodes: number;
12
+ /** Elapsed time from open(), including all subsequent reads. */
13
+ maxRuntimeMs: number;
14
+ }
15
+ export declare class VisioPackageError extends Error {
16
+ readonly code: string;
17
+ constructor(code: string, message: string);
18
+ }
19
+ export interface VisioPackageRelationship {
20
+ id: string;
21
+ type: string;
22
+ target: string;
23
+ mode: 'Internal' | 'External';
24
+ }
25
+ export declare const DEFAULTS: VisioPackageLimits;
26
+ export declare function fail(code: string, message: string): never;
27
+ export declare const utf8: TextDecoder;
28
+ export declare function crc32(bytes: Uint8Array, crc?: number): number;
29
+ export declare function decodePath(path: string): string;
30
+ /** Do not let ZIP name normalization or URI decoding turn an unsafe name into a safe one. */
31
+ export declare function safePath(path: string, directory?: boolean): string;
32
+ export interface Entry {
33
+ name: string;
34
+ compressed: number;
35
+ size: number;
36
+ crc: number;
37
+ directory: boolean;
38
+ }
39
+ //# sourceMappingURL=package-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-common.d.ts","sourceRoot":"","sources":["../../src/visio/package-common.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aAE1B,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKhB;AAED,MAAM,WAAW,wBAAwB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CAC9B;AAED,eAAO,MAAM,QAAQ,EAAE,kBAWtB,CAAC;AACF,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAEzD;AACD,eAAO,MAAM,IAAI,aAA4C,CAAC;AAK9D,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,SAAa,GAAG,MAAM,CAGjE;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AACD,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAWhE;AACD,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,30 @@
1
+ import { type VisioPackageLimits, type VisioPackageRelationship } from './package-common.js';
2
+ export { VisioPackageError, type VisioPackageLimits, type VisioPackageRelationship, } from './package-common.js';
3
+ /** Read-only, bounded OPC access. External relationship targets are never fetched. */
4
+ export declare class VisioPackage {
5
+ private readonly zip;
6
+ private readonly entries;
7
+ private readonly limits;
8
+ private readonly deadline;
9
+ private readonly cache;
10
+ private readonly relationshipCache;
11
+ private readonly byteCache;
12
+ private readonly decodedNames;
13
+ private totalOutput;
14
+ private totalXmlNodes;
15
+ private constructor();
16
+ private check;
17
+ static open(input: Uint8Array | ArrayBuffer, options?: Partial<VisioPackageLimits>): Promise<VisioPackage>;
18
+ has(path: string): boolean;
19
+ paths(): string[];
20
+ readXml(path: string, expectedRoot?: string): Promise<Element>;
21
+ /** Validated declared size, so resource-specific limits can reject before inflation. */
22
+ getPartByteLength(path: string): number;
23
+ /** Shared package-owned bytes. Treat the returned buffer as immutable. */
24
+ readBytes(path: string): Promise<Uint8Array>;
25
+ private loadBytes;
26
+ private loadXml;
27
+ relationships(sourcePart: string): Promise<Map<string, VisioPackageRelationship>>;
28
+ private loadRelationships;
29
+ }
30
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/visio/package.ts"],"names":[],"mappings":"AAEA,OAAO,EAQN,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACN,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC7B,MAAM,qBAAqB,CAAC;AAiB7B,sFAAsF;AACtF,qBAAa,YAAY;IAWvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAb1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO;IASP,OAAO,CAAC,KAAK,CAGX;WAEW,IAAI,CAChB,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACvC,OAAO,CAAC,YAAY,CAAC;IAiCxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAG1B,KAAK,IAAI,MAAM,EAAE;IAMX,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAepE,wFAAwF;IACxF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOvC,0EAA0E;IACpE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAapC,SAAS;YA8ET,OAAO;IA0Bf,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YASzE,iBAAiB;CAoC/B"}
@@ -0,0 +1,10 @@
1
+ import type { VisioParagraph, VisioTextRun } from './model.js';
2
+ import { type Report, type Sheet } from './sheet.js';
3
+ import type { Resources } from './style.js';
4
+ export interface ParagraphMarker {
5
+ offset: number;
6
+ index: string;
7
+ }
8
+ /** Keep paragraph offsets separate from runs so formatting markers never become displayed text. */
9
+ export declare function textParagraphs(text: string, markers: ParagraphMarker[], sheet: Sheet, fontFamily: string, fontSize: number, resources: Resources, report: Report, runs?: VisioTextRun[], consume?: () => void): VisioParagraph[];
10
+ //# sourceMappingURL=paragraphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paragraphs.d.ts","sourceRoot":"","sources":["../../src/visio/paragraphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAmC,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACd;AAoDD,mGAAmG;AACnG,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,YAAY,EAAO,EACzB,OAAO,GAAE,MAAM,IAAe,GAC5B,cAAc,EAAE,CAsClB"}
@@ -0,0 +1,26 @@
1
+ import type { VisioMetafileTreeConverter } from './convert-metafile.js';
2
+ import type { VisioImageOptions } from './media.js';
3
+ import type { VisioDocument, VisioPage } from './model.js';
4
+ import { type VisioMetadataOptions } from './shape-metadata.js';
5
+ import { type VisioPackageLimits } from './package.js';
6
+ export interface ParseVsdxOptions {
7
+ /** Trusted converter package injection. Only supply inside a disposable, externally timed worker. */
8
+ metafileConverter?: VisioMetafileTreeConverter;
9
+ limits?: Partial<VisioPackageLimits>;
10
+ images?: VisioImageOptions;
11
+ metadata?: VisioMetadataOptions;
12
+ maxShapes?: number;
13
+ maxShapeDepth?: number;
14
+ /** Aggregate weighted knot-refinement and curve subdivision work. */
15
+ maxCurveWork?: number;
16
+ maxGeometryCommands?: number;
17
+ maxTextCharacters?: number;
18
+ maxTextRuns?: number;
19
+ maxParagraphs?: number;
20
+ maxDiagnostics?: number;
21
+ }
22
+ /** Read-only VSDX import. This uses cached ShapeSheet values, not a formula engine. */
23
+ export declare function parseVsdx(input: Uint8Array | ArrayBuffer, options?: ParseVsdxOptions): Promise<VisioDocument>;
24
+ /** Backgrounds first, selected page last. Missing pages and cycles are safe. */
25
+ export declare function getVisioPageLayers(document: VisioDocument, pageId: string): VisioPage[];
26
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/visio/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKpD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAgBxF,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;CACxB;AAOD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA8OxB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAYvF"}
@@ -0,0 +1,9 @@
1
+ import type { VisioConnection, VisioPage } from './model.js';
2
+ import { VisioPackage } from './package.js';
3
+ import { type Report } from './sheet.js';
4
+ export declare function visioXml(pkg: VisioPackage, path: string, rootName: string): Promise<Element>;
5
+ export declare function related(pkg: VisioPackage, source: string, type: string, required?: boolean): Promise<string | undefined>;
6
+ export declare function indexedPart(pkg: VisioPackage, source: string, node: Element, type: string): Promise<string>;
7
+ export declare function connections(root: Element, report: Report): VisioConnection[];
8
+ export declare function validateBackgrounds(pages: VisioPage[], report: Report): void;
9
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/visio/parts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEhG,wBAAsB,QAAQ,CAC7B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAKlB;AACD,wBAAsB,OAAO,CAC5B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc7B;AACD,wBAAsB,WAAW,CAChC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAUjB;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAqB5E;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAyB5E"}
@@ -0,0 +1,7 @@
1
+ import type { VisioMetafileTreeConverter } from './convert-metafile.js';
2
+ import { type VisioImageOptions } from './media.js';
3
+ import type { VisioPackage } from './package.js';
4
+ import type { RawShape, Report } from './sheet.js';
5
+ /** Resolve assets before master expansion, so all instances share one validated byte array. */
6
+ export declare function prepareImages(shapes: RawShape[], pkg: VisioPackage, sourcePart: string, report: Report, options?: VisioImageOptions, converter?: VisioMetafileTreeConverter): Promise<void>;
7
+ //# sourceMappingURL=prepare-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-images.d.ts","sourceRoot":"","sources":["../../src/visio/prepare-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEnD,+FAA+F;AAC/F,wBAAsB,aAAa,CAClC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,EAC3B,SAAS,CAAC,EAAE,0BAA0B,GACpC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -0,0 +1,17 @@
1
+ import { type VisioMetafileTreeConverter } from './convert-metafile.js';
2
+ import type { VisioForeignVector } from './foreign-vector.js';
3
+ import type { VisioPackage } from './package.js';
4
+ import { type Report } from './sheet.js';
5
+ /** Inspection budgets across unique internal media parts, independently of ZIP/XML limits. */
6
+ export declare const VISIO_METAFILE_INSPECTION_LIMITS: Readonly<{
7
+ maxAssets: 32;
8
+ maxTotalBytes: number;
9
+ maxTotalRecords: 100000;
10
+ }>;
11
+ export declare const VISIO_METAFILE_CONVERSION_LIMITS: Readonly<{
12
+ maxAssets: 8;
13
+ maxTotalBytes: number;
14
+ }>;
15
+ /** Conversion is opt-in and must be hosted in a disposable worker with a parent-owned deadline. */
16
+ export declare function inspectEmbeddedVisioMetafile(pkg: VisioPackage, sourcePart: string, foreignData: Element, report: Report, converter?: VisioMetafileTreeConverter): Promise<VisioForeignVector | undefined>;
17
+ //# sourceMappingURL=prepare-metafiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-metafiles.d.ts","sourceRoot":"","sources":["../../src/visio/prepare-metafiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEnD,8FAA8F;AAC9F,eAAO,MAAM,gCAAgC;;;;EAI3C,CAAC;AACH,eAAO,MAAM,gCAAgC;;;EAG3C,CAAC;AAYH,mGAAmG;AACnG,wBAAsB,4BAA4B,CACjD,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,0BAA0B,GACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAkDzC"}
@@ -0,0 +1,8 @@
1
+ export type RectanglePoint = readonly [number, number];
2
+ /**
3
+ * Rounding is the arc radius at contiguous path segments, in internal inches.
4
+ * This deliberately accepts only one explicitly closed, axis-aligned rectangle.
5
+ * https://learn.microsoft.com/en-us/office/client-developer/visio/rounding-cell-line-format-section
6
+ */
7
+ export declare function roundedRectanglePath(points: readonly RectanglePoint[] | undefined, rounding: number, point: (x: number, y: number) => string): string | undefined;
8
+ //# sourceMappingURL=rounded-geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rounded-geometry.d.ts","sourceRoot":"","sources":["../../src/visio/rounded-geometry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,EAC7C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GACrC,MAAM,GAAG,SAAS,CAuDpB"}
@@ -0,0 +1,13 @@
1
+ import type { VisioLinearGradient } from './model.js';
2
+ import { type Cells, type Report, type Sheet } from './sheet.js';
3
+ /**
4
+ * Saved ShapeSheet gradients use radians and normalized [0,1] stop values.
5
+ * Only complete local, shape-rotating linear caches are accepted. Theme and
6
+ * root-style substitution happen before this function; missing caches are not
7
+ * inferred from formulas, legacy pattern numbers, or an unrelated theme.
8
+ * https://learn.microsoft.com/en-us/office/client-developer/visio/fill-gradient-section
9
+ * https://learn.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-vsdx/e19c498a-5277-4add-9953-8b85cb2af250
10
+ * https://learn.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-vsdx/64030657-ec1c-4bcd-adbb-701bb24004fa
11
+ */
12
+ export declare function savedFillGradient(sheet: Sheet, width: number, height: number, resolveColor: (cells: Cells) => string, report: Report): VisioLinearGradient | undefined;
13
+ //# sourceMappingURL=saved-fill-gradient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-fill-gradient.d.ts","sourceRoot":"","sources":["../../src/visio/saved-fill-gradient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAuB,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAGtF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,EACtC,MAAM,EAAE,MAAM,GACZ,mBAAmB,GAAG,SAAS,CAgEjC"}
@@ -0,0 +1,65 @@
1
+ import type { Report, Sheet } from './sheet.js';
2
+ export interface VisioShapeData {
3
+ id: string;
4
+ name: string;
5
+ label?: string;
6
+ /** ShapeSheet Type code 0..7; -1 denotes a missing/invalid cached Type. */
7
+ type: number;
8
+ rawType?: string;
9
+ valueKind: 'string' | 'fixed-list' | 'number' | 'boolean' | 'variable-list' | 'date' | 'duration' | 'currency' | 'unparsed';
10
+ /** Exact cached V text, not a formula or a formatted display value. */
11
+ rawValue?: string;
12
+ /** Dates are serial days from 1899-12-30; durations are days. Format is not applied. */
13
+ value?: string | number | boolean;
14
+ unit?: string;
15
+ error?: string;
16
+ format?: string;
17
+ prompt?: string;
18
+ invisible?: boolean;
19
+ sortKey?: string;
20
+ }
21
+ export interface VisioHyperlink {
22
+ id: string;
23
+ name: string;
24
+ description?: string;
25
+ /** Untrusted original cached text. Never use this field directly as a navigation target. */
26
+ address?: string;
27
+ /** Unresolved page/shape/anchor text. No guessed page or shape identifiers. */
28
+ subAddress?: string;
29
+ default?: boolean;
30
+ newWindow?: boolean;
31
+ invisible?: boolean;
32
+ sortKey?: string;
33
+ /** Inert data only. Even validated external addresses require explicit host/user action. */
34
+ target: {
35
+ kind: 'external';
36
+ href: string;
37
+ } | {
38
+ kind: 'internal';
39
+ subAddress: string;
40
+ } | {
41
+ kind: 'unresolved';
42
+ reason: string;
43
+ };
44
+ }
45
+ export interface VisioMetadataOptions {
46
+ maxRows?: number;
47
+ maxCharacters?: number;
48
+ }
49
+ export interface VisioMetadataBudget {
50
+ consumeRow(): void;
51
+ retain(value: string): string;
52
+ }
53
+ /** Share one budget across every page and inherited shape in a document. */
54
+ export declare function createMetadataBudget(options?: VisioMetadataOptions): VisioMetadataBudget;
55
+ /**
56
+ * Read resolved master/local sheets. Formatting style sections do not supply shape data.
57
+ * Microsoft reference: /office/client-developer/visio/type-cell-shape-data-section,
58
+ * cell-element-shape-data-sectionvisio-xml and cell-element-hyperlink-rowvisio-xml.
59
+ * Only cached V values are interpreted. Formulas, links and external data are never run.
60
+ */
61
+ export declare function shapeMetadata(sheet: Sheet, report: Report, budget?: VisioMetadataBudget): {
62
+ shapeData: VisioShapeData[];
63
+ hyperlinks: VisioHyperlink[];
64
+ };
65
+ //# sourceMappingURL=shape-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape-metadata.d.ts","sourceRoot":"","sources":["../../src/visio/shape-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,MAAM,EAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EACN,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,eAAe,GACf,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,MAAM,EACH;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAClC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACxC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AACD,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,mBAAmB;IACnC,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AACD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAoB5F;AAoMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,sBAAyB,GAC7B;IAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CAgB/D"}