@bilig/excel-import 0.14.14

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 (198) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +165 -0
  3. package/dist/index.d.ts +31 -0
  4. package/dist/index.js +748 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/workbook-import-content-types.d.ts +10 -0
  7. package/dist/workbook-import-content-types.js +30 -0
  8. package/dist/workbook-import-content-types.js.map +1 -0
  9. package/dist/workbook-import-helpers.d.ts +21 -0
  10. package/dist/workbook-import-helpers.js +77 -0
  11. package/dist/workbook-import-helpers.js.map +1 -0
  12. package/dist/workbook-import-preview.d.ts +19 -0
  13. package/dist/workbook-import-preview.js +12 -0
  14. package/dist/workbook-import-preview.js.map +1 -0
  15. package/dist/xlsx-array-formulas.d.ts +6 -0
  16. package/dist/xlsx-array-formulas.js +186 -0
  17. package/dist/xlsx-array-formulas.js.map +1 -0
  18. package/dist/xlsx-axis-entries.d.ts +3 -0
  19. package/dist/xlsx-axis-entries.js +90 -0
  20. package/dist/xlsx-axis-entries.js.map +1 -0
  21. package/dist/xlsx-calculation-settings.d.ts +9 -0
  22. package/dist/xlsx-calculation-settings.js +198 -0
  23. package/dist/xlsx-calculation-settings.js.map +1 -0
  24. package/dist/xlsx-cell-insertion.d.ts +11 -0
  25. package/dist/xlsx-cell-insertion.js +164 -0
  26. package/dist/xlsx-cell-insertion.js.map +1 -0
  27. package/dist/xlsx-cell-metadata.d.ts +15 -0
  28. package/dist/xlsx-cell-metadata.js +380 -0
  29. package/dist/xlsx-cell-metadata.js.map +1 -0
  30. package/dist/xlsx-chart-artifacts.d.ts +7 -0
  31. package/dist/xlsx-chart-artifacts.js +327 -0
  32. package/dist/xlsx-chart-artifacts.js.map +1 -0
  33. package/dist/xlsx-charts.d.ts +4 -0
  34. package/dist/xlsx-charts.js +671 -0
  35. package/dist/xlsx-charts.js.map +1 -0
  36. package/dist/xlsx-comment-vml.d.ts +11 -0
  37. package/dist/xlsx-comment-vml.js +292 -0
  38. package/dist/xlsx-comment-vml.js.map +1 -0
  39. package/dist/xlsx-comments.d.ts +7 -0
  40. package/dist/xlsx-comments.js +120 -0
  41. package/dist/xlsx-comments.js.map +1 -0
  42. package/dist/xlsx-conditional-formats.d.ts +5 -0
  43. package/dist/xlsx-conditional-formats.js +513 -0
  44. package/dist/xlsx-conditional-formats.js.map +1 -0
  45. package/dist/xlsx-control-artifacts.d.ts +7 -0
  46. package/dist/xlsx-control-artifacts.js +404 -0
  47. package/dist/xlsx-control-artifacts.js.map +1 -0
  48. package/dist/xlsx-data-model-artifacts.d.ts +4 -0
  49. package/dist/xlsx-data-model-artifacts.js +240 -0
  50. package/dist/xlsx-data-model-artifacts.js.map +1 -0
  51. package/dist/xlsx-data-table-formulas.d.ts +4 -0
  52. package/dist/xlsx-data-table-formulas.js +138 -0
  53. package/dist/xlsx-data-table-formulas.js.map +1 -0
  54. package/dist/xlsx-defined-names.d.ts +7 -0
  55. package/dist/xlsx-defined-names.js +292 -0
  56. package/dist/xlsx-defined-names.js.map +1 -0
  57. package/dist/xlsx-dimensions.d.ts +4 -0
  58. package/dist/xlsx-dimensions.js +495 -0
  59. package/dist/xlsx-dimensions.js.map +1 -0
  60. package/dist/xlsx-drawing-artifacts.d.ts +7 -0
  61. package/dist/xlsx-drawing-artifacts.js +477 -0
  62. package/dist/xlsx-drawing-artifacts.js.map +1 -0
  63. package/dist/xlsx-escaped-text.d.ts +2 -0
  64. package/dist/xlsx-escaped-text.js +22 -0
  65. package/dist/xlsx-escaped-text.js.map +1 -0
  66. package/dist/xlsx-export-xml.d.ts +8 -0
  67. package/dist/xlsx-export-xml.js +99 -0
  68. package/dist/xlsx-export-xml.js.map +1 -0
  69. package/dist/xlsx-export.d.ts +2 -0
  70. package/dist/xlsx-export.js +800 -0
  71. package/dist/xlsx-export.js.map +1 -0
  72. package/dist/xlsx-external-link-artifacts.d.ts +4 -0
  73. package/dist/xlsx-external-link-artifacts.js +317 -0
  74. package/dist/xlsx-external-link-artifacts.js.map +1 -0
  75. package/dist/xlsx-external-references.d.ts +29 -0
  76. package/dist/xlsx-external-references.js +356 -0
  77. package/dist/xlsx-external-references.js.map +1 -0
  78. package/dist/xlsx-filters.d.ts +4 -0
  79. package/dist/xlsx-filters.js +273 -0
  80. package/dist/xlsx-filters.js.map +1 -0
  81. package/dist/xlsx-formula-translation.d.ts +10 -0
  82. package/dist/xlsx-formula-translation.js +391 -0
  83. package/dist/xlsx-formula-translation.js.map +1 -0
  84. package/dist/xlsx-formulas.d.ts +2 -0
  85. package/dist/xlsx-formulas.js +136 -0
  86. package/dist/xlsx-formulas.js.map +1 -0
  87. package/dist/xlsx-freeze-panes.d.ts +4 -0
  88. package/dist/xlsx-freeze-panes.js +206 -0
  89. package/dist/xlsx-freeze-panes.js.map +1 -0
  90. package/dist/xlsx-hyperlinks.d.ts +5 -0
  91. package/dist/xlsx-hyperlinks.js +64 -0
  92. package/dist/xlsx-hyperlinks.js.map +1 -0
  93. package/dist/xlsx-ignored-errors.d.ts +4 -0
  94. package/dist/xlsx-ignored-errors.js +106 -0
  95. package/dist/xlsx-ignored-errors.js.map +1 -0
  96. package/dist/xlsx-import-cell-styles.d.ts +8 -0
  97. package/dist/xlsx-import-cell-styles.js +255 -0
  98. package/dist/xlsx-import-cell-styles.js.map +1 -0
  99. package/dist/xlsx-import-sheet-metadata.d.ts +40 -0
  100. package/dist/xlsx-import-sheet-metadata.js +41 -0
  101. package/dist/xlsx-import-sheet-metadata.js.map +1 -0
  102. package/dist/xlsx-import-warnings.d.ts +8 -0
  103. package/dist/xlsx-import-warnings.js +44 -0
  104. package/dist/xlsx-import-warnings.js.map +1 -0
  105. package/dist/xlsx-import-workbook-metadata.d.ts +28 -0
  106. package/dist/xlsx-import-workbook-metadata.js +29 -0
  107. package/dist/xlsx-import-workbook-metadata.js.map +1 -0
  108. package/dist/xlsx-macros.d.ts +10 -0
  109. package/dist/xlsx-macros.js +63 -0
  110. package/dist/xlsx-macros.js.map +1 -0
  111. package/dist/xlsx-merge-entries.d.ts +3 -0
  112. package/dist/xlsx-merge-entries.js +17 -0
  113. package/dist/xlsx-merge-entries.js.map +1 -0
  114. package/dist/xlsx-number-formats.d.ts +7 -0
  115. package/dist/xlsx-number-formats.js +222 -0
  116. package/dist/xlsx-number-formats.js.map +1 -0
  117. package/dist/xlsx-pivot-artifacts.d.ts +29 -0
  118. package/dist/xlsx-pivot-artifacts.js +292 -0
  119. package/dist/xlsx-pivot-artifacts.js.map +1 -0
  120. package/dist/xlsx-pivots.d.ts +10 -0
  121. package/dist/xlsx-pivots.js +589 -0
  122. package/dist/xlsx-pivots.js.map +1 -0
  123. package/dist/xlsx-print-page-setup.d.ts +6 -0
  124. package/dist/xlsx-print-page-setup.js +224 -0
  125. package/dist/xlsx-print-page-setup.js.map +1 -0
  126. package/dist/xlsx-printer-settings.d.ts +4 -0
  127. package/dist/xlsx-printer-settings.js +279 -0
  128. package/dist/xlsx-printer-settings.js.map +1 -0
  129. package/dist/xlsx-protected-ranges.d.ts +4 -0
  130. package/dist/xlsx-protected-ranges.js +183 -0
  131. package/dist/xlsx-protected-ranges.js.map +1 -0
  132. package/dist/xlsx-rich-text-artifacts.d.ts +4 -0
  133. package/dist/xlsx-rich-text-artifacts.js +303 -0
  134. package/dist/xlsx-rich-text-artifacts.js.map +1 -0
  135. package/dist/xlsx-sheet-properties.d.ts +4 -0
  136. package/dist/xlsx-sheet-properties.js +89 -0
  137. package/dist/xlsx-sheet-properties.js.map +1 -0
  138. package/dist/xlsx-sheet-protection.d.ts +4 -0
  139. package/dist/xlsx-sheet-protection.js +153 -0
  140. package/dist/xlsx-sheet-protection.js.map +1 -0
  141. package/dist/xlsx-sheet-visibility.d.ts +4 -0
  142. package/dist/xlsx-sheet-visibility.js +53 -0
  143. package/dist/xlsx-sheet-visibility.js.map +1 -0
  144. package/dist/xlsx-slicer-connection-artifacts.d.ts +4 -0
  145. package/dist/xlsx-slicer-connection-artifacts.js +426 -0
  146. package/dist/xlsx-slicer-connection-artifacts.js.map +1 -0
  147. package/dist/xlsx-sorts.d.ts +5 -0
  148. package/dist/xlsx-sorts.js +216 -0
  149. package/dist/xlsx-sorts.js.map +1 -0
  150. package/dist/xlsx-sparklines.d.ts +4 -0
  151. package/dist/xlsx-sparklines.js +115 -0
  152. package/dist/xlsx-sparklines.js.map +1 -0
  153. package/dist/xlsx-style-only-blank-cells.d.ts +3 -0
  154. package/dist/xlsx-style-only-blank-cells.js +96 -0
  155. package/dist/xlsx-style-only-blank-cells.js.map +1 -0
  156. package/dist/xlsx-style-runs.d.ts +12 -0
  157. package/dist/xlsx-style-runs.js +35 -0
  158. package/dist/xlsx-style-runs.js.map +1 -0
  159. package/dist/xlsx-styles.d.ts +25 -0
  160. package/dist/xlsx-styles.js +857 -0
  161. package/dist/xlsx-styles.js.map +1 -0
  162. package/dist/xlsx-tab-colors.d.ts +4 -0
  163. package/dist/xlsx-tab-colors.js +166 -0
  164. package/dist/xlsx-tab-colors.js.map +1 -0
  165. package/dist/xlsx-tables.d.ts +4 -0
  166. package/dist/xlsx-tables.js +371 -0
  167. package/dist/xlsx-tables.js.map +1 -0
  168. package/dist/xlsx-theme-artifacts.d.ts +6 -0
  169. package/dist/xlsx-theme-artifacts.js +126 -0
  170. package/dist/xlsx-theme-artifacts.js.map +1 -0
  171. package/dist/xlsx-threaded-comment-artifacts.d.ts +8 -0
  172. package/dist/xlsx-threaded-comment-artifacts.js +329 -0
  173. package/dist/xlsx-threaded-comment-artifacts.js.map +1 -0
  174. package/dist/xlsx-validations.d.ts +4 -0
  175. package/dist/xlsx-validations.js +542 -0
  176. package/dist/xlsx-validations.js.map +1 -0
  177. package/dist/xlsx-view-state.d.ts +8 -0
  178. package/dist/xlsx-view-state.js +144 -0
  179. package/dist/xlsx-view-state.js.map +1 -0
  180. package/dist/xlsx-workbook-properties.d.ts +5 -0
  181. package/dist/xlsx-workbook-properties.js +388 -0
  182. package/dist/xlsx-workbook-properties.js.map +1 -0
  183. package/dist/xlsx-workbook-protection.d.ts +4 -0
  184. package/dist/xlsx-workbook-protection.js +147 -0
  185. package/dist/xlsx-workbook-protection.js.map +1 -0
  186. package/dist/xlsx-workbook-sheet-paths.d.ts +4 -0
  187. package/dist/xlsx-workbook-sheet-paths.js +96 -0
  188. package/dist/xlsx-workbook-sheet-paths.js.map +1 -0
  189. package/dist/xlsx-worksheet-cells.d.ts +16 -0
  190. package/dist/xlsx-worksheet-cells.js +104 -0
  191. package/dist/xlsx-worksheet-cells.js.map +1 -0
  192. package/dist/xlsx-worksheet-text-values.d.ts +2 -0
  193. package/dist/xlsx-worksheet-text-values.js +136 -0
  194. package/dist/xlsx-worksheet-text-values.js.map +1 -0
  195. package/dist/xlsx-zip.d.ts +6 -0
  196. package/dist/xlsx-zip.js +12 -0
  197. package/dist/xlsx-zip.js.map +1 -0
  198. package/package.json +56 -0
@@ -0,0 +1,477 @@
1
+ import { strFromU8, unzipSync, zipSync } from 'fflate';
2
+ import { getZipText, normalizeZipPath, readXlsxZipEntries } from './xlsx-zip.js';
3
+ import { addContentTypeOverride, buildRelationshipsXml, ensureRelationshipNamespace, nextRelationshipId, parseRelationships, resolveTargetPath, setZipText, } from './xlsx-pivot-artifacts.js';
4
+ const binaryChunkSize = 0x8000;
5
+ const worksheetDrawingRelationshipType = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing';
6
+ const chartRelationshipType = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart';
7
+ const drawingContentType = 'application/vnd.openxmlformats-officedocument.drawing+xml';
8
+ const drawingRootOpenTagPattern = /<(?<tag>(?:[A-Za-z_][\w.-]*:)?wsDr)\b[^>]*>/u;
9
+ const drawingAnchorElementPattern = /<(?<tag>(?:[A-Za-z_][\w.-]*:)?(?:twoCellAnchor|oneCellAnchor|absoluteAnchor))\b[^>]*(?:\/>|>[\s\S]*?<\/\k<tag>>)/gu;
10
+ const namespaceDeclarationPattern = /\s(xmlns(?::[A-Za-z_][\w.-]*)?)=("|')([\s\S]*?)\2/gu;
11
+ const nonVisualPropertyIdPattern = /(<(?:[A-Za-z_][\w.-]*:)?cNvPr\b[^>]*\bid=")([0-9]+)(")/u;
12
+ const drawingRelationshipAttributePattern = /\b(?:r:(?:id|embed|link)|id)=("|')([\s\S]*?)\1/gu;
13
+ function encodeBinaryString(bytes) {
14
+ let binary = '';
15
+ for (let offset = 0; offset < bytes.length; offset += binaryChunkSize) {
16
+ binary += String.fromCharCode(...bytes.subarray(offset, offset + binaryChunkSize));
17
+ }
18
+ return binary;
19
+ }
20
+ function decodeBinaryString(binary) {
21
+ const bytes = new Uint8Array(binary.length);
22
+ for (let index = 0; index < binary.length; index += 1) {
23
+ bytes[index] = binary.charCodeAt(index);
24
+ }
25
+ return bytes;
26
+ }
27
+ function encodeBase64(bytes) {
28
+ const btoa = globalThis.btoa;
29
+ if (typeof btoa === 'function') {
30
+ return btoa(encodeBinaryString(bytes));
31
+ }
32
+ return Buffer.from(bytes).toString('base64');
33
+ }
34
+ function decodeBase64(dataBase64) {
35
+ const atob = globalThis.atob;
36
+ if (typeof atob === 'function') {
37
+ return decodeBinaryString(atob(dataBase64));
38
+ }
39
+ return new Uint8Array(Buffer.from(dataBase64, 'base64'));
40
+ }
41
+ function escapeXml(value) {
42
+ return value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll("'", '&apos;');
43
+ }
44
+ function escapeRegExp(value) {
45
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
46
+ }
47
+ function readAttribute(xml, attributeName) {
48
+ const match = new RegExp(`\\s${attributeName}=("|')([\\s\\S]*?)\\1`, 'u').exec(xml);
49
+ return match?.[2] ?? null;
50
+ }
51
+ function drawingRelationshipsPath(partPath) {
52
+ const normalizedPath = normalizeZipPath(partPath);
53
+ const directory = normalizedPath.slice(0, normalizedPath.lastIndexOf('/'));
54
+ const fileName = normalizedPath.slice(normalizedPath.lastIndexOf('/') + 1);
55
+ return `${directory}/_rels/${fileName}.rels`;
56
+ }
57
+ function readWorksheetDrawingRelationshipId(sheetXml) {
58
+ const drawingTag = /<drawing\b[^>]*(?:\/?>|>[\s\S]*?<\/drawing>)/u.exec(sheetXml ?? '')?.[0];
59
+ return drawingTag ? (readAttribute(drawingTag, 'r:id') ?? readAttribute(drawingTag, 'id')) : null;
60
+ }
61
+ function drawingRootOpenTag(drawingXml) {
62
+ return drawingRootOpenTagPattern.exec(drawingXml)?.[0] ?? null;
63
+ }
64
+ function drawingRootTagName(openTag) {
65
+ return /<([^\s>]+)/u.exec(openTag)?.[1] ?? 'xdr:wsDr';
66
+ }
67
+ function drawingXmlDeclaration(xml) {
68
+ return /^\s*<\?xml[\s\S]*?\?>/u.exec(xml)?.[0];
69
+ }
70
+ function drawingAnchors(drawingXml) {
71
+ drawingAnchorElementPattern.lastIndex = 0;
72
+ return [...drawingXml.matchAll(drawingAnchorElementPattern)].map((match) => match[0]);
73
+ }
74
+ function anchorContainsChart(anchorXml) {
75
+ return /<(?:[A-Za-z_][\w.-]*:)?chart\b/u.test(anchorXml);
76
+ }
77
+ function mergeNamespaceDeclarations(targetRootOpenTag, sourceRootOpenTag) {
78
+ if (!sourceRootOpenTag) {
79
+ return targetRootOpenTag;
80
+ }
81
+ let output = targetRootOpenTag;
82
+ namespaceDeclarationPattern.lastIndex = 0;
83
+ for (const match of sourceRootOpenTag.matchAll(namespaceDeclarationPattern)) {
84
+ const declarationName = match[1];
85
+ const quote = match[2];
86
+ const declarationValue = match[3];
87
+ if (!declarationName || !quote || declarationValue === undefined) {
88
+ continue;
89
+ }
90
+ if (new RegExp(`\\s${escapeRegExp(declarationName)}=("|')`, 'u').test(output)) {
91
+ continue;
92
+ }
93
+ output = output.replace(/>$/u, ` ${declarationName}=${quote}${escapeXml(declarationValue)}${quote}>`);
94
+ }
95
+ return output;
96
+ }
97
+ function replaceRelationshipIds(xml, relationshipIds) {
98
+ if (relationshipIds.size === 0) {
99
+ return xml;
100
+ }
101
+ return xml.replace(drawingRelationshipAttributePattern, (match, quote, id) => {
102
+ const nextId = relationshipIds.get(id);
103
+ return nextId ? match.replace(`${quote}${id}${quote}`, `${quote}${nextId}${quote}`) : match;
104
+ });
105
+ }
106
+ function drawingMaxNonVisualPropertyId(drawingXml) {
107
+ if (!drawingXml) {
108
+ return 1;
109
+ }
110
+ return Math.max(1, ...[...drawingXml.matchAll(/<(?:[A-Za-z_][\w.-]*:)?cNvPr\b[^>]*\bid="([0-9]+)"/gu)]
111
+ .map((match) => Number(match[1]))
112
+ .filter(Number.isSafeInteger));
113
+ }
114
+ function replaceAnchorNonVisualPropertyId(anchorXml, nextId) {
115
+ return anchorXml.replace(nonVisualPropertyIdPattern, `$1${String(nextId)}$3`);
116
+ }
117
+ function extensionFromPath(path) {
118
+ const fileName = normalizeZipPath(path).slice(normalizeZipPath(path).lastIndexOf('/') + 1);
119
+ const extensionIndex = fileName.lastIndexOf('.');
120
+ return extensionIndex >= 0 && extensionIndex < fileName.length - 1 ? fileName.slice(extensionIndex + 1).toLowerCase() : null;
121
+ }
122
+ function readContentTypeDefaults(contentTypesXml, partPaths) {
123
+ const neededExtensions = new Set(partPaths.map(extensionFromPath).filter((extension) => Boolean(extension)));
124
+ const defaultsByExtension = new Map();
125
+ for (const match of contentTypesXml.matchAll(/<Default\b([^>]*)\/?>/gu)) {
126
+ const attributes = match[1] ?? '';
127
+ const extension = readAttribute(attributes, 'Extension')?.toLowerCase();
128
+ const contentType = readAttribute(attributes, 'ContentType');
129
+ if (!extension || !contentType || !neededExtensions.has(extension)) {
130
+ continue;
131
+ }
132
+ defaultsByExtension.set(extension, { extension, contentType });
133
+ }
134
+ return [...defaultsByExtension.values()].toSorted((left, right) => left.extension.localeCompare(right.extension));
135
+ }
136
+ function readContentTypeOverrides(contentTypesXml, partPaths) {
137
+ const neededPartNames = new Set(partPaths.map((path) => `/${normalizeZipPath(path)}`));
138
+ const overridesByPartName = new Map();
139
+ for (const match of contentTypesXml.matchAll(/<Override\b([^>]*)\/?>/gu)) {
140
+ const attributes = match[1] ?? '';
141
+ const partName = readAttribute(attributes, 'PartName');
142
+ const contentType = readAttribute(attributes, 'ContentType');
143
+ if (!partName || !contentType || !neededPartNames.has(partName)) {
144
+ continue;
145
+ }
146
+ overridesByPartName.set(partName, { partName, contentType });
147
+ }
148
+ return [...overridesByPartName.values()].toSorted((left, right) => left.partName.localeCompare(right.partName));
149
+ }
150
+ function addContentTypeDefault(contentTypesXml, extension, contentType) {
151
+ const existingDefaultPattern = new RegExp(`<Default\\b[^>]*\\bExtension=("|')${escapeRegExp(extension)}\\1`, 'u');
152
+ if (existingDefaultPattern.test(contentTypesXml) || !contentTypesXml.includes('</Types>')) {
153
+ return contentTypesXml;
154
+ }
155
+ return contentTypesXml.replace('</Types>', `<Default Extension="${escapeXml(extension)}" ContentType="${escapeXml(contentType)}"/></Types>`);
156
+ }
157
+ function addWorksheetDrawing(sheetXml, relationshipId) {
158
+ const withNamespace = ensureRelationshipNamespace(sheetXml);
159
+ if (/<drawing\b/u.test(withNamespace)) {
160
+ return withNamespace.replace(/<drawing\b[^>]*(?:\/?>|>[\s\S]*?<\/drawing>)/u, `<drawing r:id="${relationshipId}"/>`);
161
+ }
162
+ return withNamespace.replace('</worksheet>', `<drawing r:id="${relationshipId}"/></worksheet>`);
163
+ }
164
+ function collectDrawingDependencyPaths(input) {
165
+ const collectedPaths = new Set();
166
+ const pending = input.drawingRelationships
167
+ .filter((relationship) => relationship.type !== chartRelationshipType && relationship.targetMode !== 'External')
168
+ .map((relationship) => normalizeZipPath(resolveTargetPath(input.drawingPath, relationship.target)));
169
+ collectedPaths.add(normalizeZipPath(input.drawingPath));
170
+ const drawingRelsPath = drawingRelationshipsPath(input.drawingPath);
171
+ if (input.zip[drawingRelsPath]) {
172
+ collectedPaths.add(drawingRelsPath);
173
+ }
174
+ while (pending.length > 0) {
175
+ const nextPartPath = pending.pop();
176
+ if (!nextPartPath || collectedPaths.has(nextPartPath) || !input.zip[nextPartPath]) {
177
+ continue;
178
+ }
179
+ collectedPaths.add(nextPartPath);
180
+ const relsPath = drawingRelationshipsPath(nextPartPath);
181
+ const relsXml = getZipText(input.zip, relsPath);
182
+ if (!relsXml) {
183
+ continue;
184
+ }
185
+ collectedPaths.add(relsPath);
186
+ parseRelationships(relsXml).forEach((relationship) => {
187
+ if (relationship.targetMode === 'External') {
188
+ return;
189
+ }
190
+ pending.push(normalizeZipPath(resolveTargetPath(nextPartPath, relationship.target)));
191
+ });
192
+ }
193
+ return collectedPaths;
194
+ }
195
+ function encodedPartSnapshot(path, bytes) {
196
+ return {
197
+ path,
198
+ storage: 'base64',
199
+ dataBase64: encodeBase64(bytes),
200
+ byteLength: bytes.byteLength,
201
+ };
202
+ }
203
+ function decodedPartBytes(part) {
204
+ if (part.storage !== 'base64') {
205
+ return undefined;
206
+ }
207
+ const bytes = decodeBase64(part.dataBase64);
208
+ return bytes.byteLength === part.byteLength ? bytes : undefined;
209
+ }
210
+ function preservedPartsByPath(parts) {
211
+ const output = new Map();
212
+ parts.forEach((part) => {
213
+ const bytes = decodedPartBytes(part);
214
+ if (bytes) {
215
+ output.set(normalizeZipPath(part.path), bytes);
216
+ }
217
+ });
218
+ return output;
219
+ }
220
+ function preservedPartText(partsByPath, path) {
221
+ const bytes = partsByPath.get(normalizeZipPath(path));
222
+ return bytes ? strFromU8(bytes) : null;
223
+ }
224
+ function worksheetDrawingTarget(drawingIndex) {
225
+ return `../drawings/drawing${String(drawingIndex)}.xml`;
226
+ }
227
+ function nextAvailableWorksheetDrawingTarget(input) {
228
+ for (let drawingIndex = 1; drawingIndex < Number.MAX_SAFE_INTEGER; drawingIndex += 1) {
229
+ const target = worksheetDrawingTarget(drawingIndex);
230
+ const drawingPath = normalizeZipPath(`xl/drawings/drawing${String(drawingIndex)}.xml`);
231
+ if (!input.zip[drawingPath] && !input.usedDrawingPaths.has(drawingPath) && !input.reservedDrawingPaths.has(drawingPath)) {
232
+ return target;
233
+ }
234
+ }
235
+ throw new Error('Unable to allocate XLSX drawing part');
236
+ }
237
+ function worksheetDrawingPaths(zip, sheets) {
238
+ const paths = new Set();
239
+ sheets
240
+ .toSorted((left, right) => left.order - right.order)
241
+ .forEach((_sheet, sheetIndex) => {
242
+ const sheetPath = `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`;
243
+ const sheetRelationships = parseRelationships(getZipText(zip, `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`));
244
+ const drawingRelationship = sheetRelationships.find((relationship) => relationship.type === worksheetDrawingRelationshipType);
245
+ if (drawingRelationship) {
246
+ paths.add(normalizeZipPath(resolveTargetPath(sheetPath, drawingRelationship.target)));
247
+ }
248
+ });
249
+ return paths;
250
+ }
251
+ function reservedDrawingArtifactPaths(sheets) {
252
+ const paths = new Set();
253
+ for (const sheet of sheets) {
254
+ const relationshipTarget = sheet.metadata?.drawingArtifacts?.relationshipTarget;
255
+ if (relationshipTarget) {
256
+ paths.add(normalizeZipPath(resolveTargetPath('xl/worksheets/sheet1.xml', relationshipTarget)));
257
+ }
258
+ }
259
+ return paths;
260
+ }
261
+ function mergedDrawingResult(input) {
262
+ const currentAnchors = input.currentDrawingXml ? drawingAnchors(input.currentDrawingXml) : [];
263
+ const preservedNonChartRelationships = input.preservedRelationships.filter((relationship) => relationship.type !== chartRelationshipType);
264
+ const preservedNonChartAnchors = drawingAnchors(input.preservedDrawingXml).filter((anchor) => !anchorContainsChart(anchor));
265
+ const relationships = [...input.currentRelationships];
266
+ const relationshipIds = new Map();
267
+ preservedNonChartRelationships.forEach((relationship) => {
268
+ const nextId = nextRelationshipId(relationships);
269
+ relationships.push({ ...relationship, id: nextId });
270
+ relationshipIds.set(relationship.id, nextId);
271
+ });
272
+ let nextNonVisualPropertyId = drawingMaxNonVisualPropertyId(input.currentDrawingXml) + 1;
273
+ const rewrittenAnchors = preservedNonChartAnchors.map((anchor) => {
274
+ const withRelationshipIds = replaceRelationshipIds(anchor, relationshipIds);
275
+ const withObjectId = replaceAnchorNonVisualPropertyId(withRelationshipIds, nextNonVisualPropertyId);
276
+ nextNonVisualPropertyId += 1;
277
+ return withObjectId;
278
+ });
279
+ const baseDrawingXml = input.currentDrawingXml ?? input.preservedDrawingXml;
280
+ const currentRootOpenTag = drawingRootOpenTag(baseDrawingXml);
281
+ const preservedRootOpenTag = drawingRootOpenTag(input.preservedDrawingXml);
282
+ if (!currentRootOpenTag) {
283
+ return {
284
+ drawingXml: baseDrawingXml,
285
+ relationships,
286
+ };
287
+ }
288
+ const drawingXml = `${drawingXmlDeclaration(baseDrawingXml) ?? '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'}${mergeNamespaceDeclarations(currentRootOpenTag, preservedRootOpenTag)}${[...currentAnchors, ...rewrittenAnchors].join('')}</${drawingRootTagName(currentRootOpenTag)}>`;
289
+ return {
290
+ drawingXml,
291
+ relationships,
292
+ };
293
+ }
294
+ export function readImportedWorkbookDrawingArtifacts(source, sheetNames) {
295
+ const zip = readXlsxZipEntries(source);
296
+ const sheetArtifactsByName = new Map();
297
+ const partPaths = new Set();
298
+ sheetNames.forEach((sheetName, sheetIndex) => {
299
+ const sheetPath = `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`;
300
+ const relationshipId = readWorksheetDrawingRelationshipId(getZipText(zip, sheetPath));
301
+ if (!relationshipId) {
302
+ return;
303
+ }
304
+ const sheetRelationships = parseRelationships(getZipText(zip, `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`));
305
+ const drawingRelationship = sheetRelationships.find((relationship) => relationship.id === relationshipId && relationship.type === worksheetDrawingRelationshipType);
306
+ if (!drawingRelationship) {
307
+ return;
308
+ }
309
+ const drawingPath = normalizeZipPath(resolveTargetPath(sheetPath, drawingRelationship.target));
310
+ const drawingXml = getZipText(zip, drawingPath);
311
+ if (!drawingXml) {
312
+ return;
313
+ }
314
+ const drawingRelationships = parseRelationships(getZipText(zip, drawingRelationshipsPath(drawingPath)));
315
+ const hasNonChartAnchors = drawingAnchors(drawingXml).some((anchor) => !anchorContainsChart(anchor));
316
+ const hasNonChartRelationships = drawingRelationships.some((relationship) => relationship.type !== chartRelationshipType);
317
+ if (!hasNonChartAnchors && !hasNonChartRelationships) {
318
+ return;
319
+ }
320
+ sheetArtifactsByName.set(sheetName, {
321
+ relationshipTarget: drawingRelationship.target,
322
+ });
323
+ collectDrawingDependencyPaths({ zip, drawingPath, drawingRelationships }).forEach((path) => {
324
+ partPaths.add(path);
325
+ });
326
+ });
327
+ if (partPaths.size === 0) {
328
+ return {
329
+ artifacts: undefined,
330
+ sheetArtifactsByName,
331
+ };
332
+ }
333
+ const contentTypePartPaths = [...partPaths].filter((path) => !path.endsWith('.rels'));
334
+ const contentTypesXml = getZipText(zip, '[Content_Types].xml') ?? '';
335
+ const parts = [...partPaths].toSorted().flatMap((path) => {
336
+ const bytes = zip[path];
337
+ return bytes ? [encodedPartSnapshot(path, bytes)] : [];
338
+ });
339
+ return {
340
+ artifacts: {
341
+ parts,
342
+ ...(contentTypesXml
343
+ ? {
344
+ ...(readContentTypeDefaults(contentTypesXml, contentTypePartPaths).length > 0
345
+ ? { contentTypeDefaults: readContentTypeDefaults(contentTypesXml, contentTypePartPaths) }
346
+ : {}),
347
+ ...(readContentTypeOverrides(contentTypesXml, contentTypePartPaths).length > 0
348
+ ? { contentTypeOverrides: readContentTypeOverrides(contentTypesXml, contentTypePartPaths) }
349
+ : {}),
350
+ }
351
+ : {}),
352
+ },
353
+ sheetArtifactsByName,
354
+ };
355
+ }
356
+ export function addExportDrawingArtifactsToXlsxBytes(bytes, snapshot) {
357
+ const workbookArtifacts = snapshot.workbook.metadata?.drawingArtifacts;
358
+ const sheetsWithDrawingArtifacts = snapshot.sheets.filter((sheet) => sheet.metadata?.drawingArtifacts);
359
+ if (!workbookArtifacts || sheetsWithDrawingArtifacts.length === 0) {
360
+ return bytes;
361
+ }
362
+ const zip = unzipSync(bytes);
363
+ const partsByPath = preservedPartsByPath(workbookArtifacts.parts);
364
+ const preservedDrawingPartPaths = new Set();
365
+ const copiedPartPaths = new Set();
366
+ const reservedDrawingPaths = reservedDrawingArtifactPaths(sheetsWithDrawingArtifacts);
367
+ const usedDrawingPaths = worksheetDrawingPaths(zip, snapshot.sheets);
368
+ let changed = false;
369
+ snapshot.sheets
370
+ .toSorted((left, right) => left.order - right.order)
371
+ .forEach((sheet, sheetIndex) => {
372
+ const sheetDrawingArtifacts = sheet.metadata?.drawingArtifacts;
373
+ if (!sheetDrawingArtifacts) {
374
+ return;
375
+ }
376
+ const sheetPath = `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`;
377
+ const sheetXml = getZipText(zip, sheetPath);
378
+ if (!sheetXml) {
379
+ return;
380
+ }
381
+ const preservedDrawingPath = normalizeZipPath(resolveTargetPath(sheetPath, sheetDrawingArtifacts.relationshipTarget));
382
+ const preservedDrawingXml = preservedPartText(partsByPath, preservedDrawingPath);
383
+ if (!preservedDrawingXml) {
384
+ return;
385
+ }
386
+ const preservedDrawingRelationshipsPath = drawingRelationshipsPath(preservedDrawingPath);
387
+ const preservedDrawingRelationships = parseRelationships(preservedPartText(partsByPath, preservedDrawingRelationshipsPath));
388
+ preservedDrawingPartPaths.add(preservedDrawingPath);
389
+ preservedDrawingPartPaths.add(preservedDrawingRelationshipsPath);
390
+ const sheetRelsPath = `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`;
391
+ const sheetRelationships = parseRelationships(getZipText(zip, sheetRelsPath));
392
+ let drawingRelationship = sheetRelationships.find((relationship) => relationship.type === worksheetDrawingRelationshipType);
393
+ let relationshipsChanged = false;
394
+ let nextSheetXml = sheetXml;
395
+ if (!drawingRelationship) {
396
+ const drawingTarget = zip[preservedDrawingPath] || usedDrawingPaths.has(preservedDrawingPath)
397
+ ? nextAvailableWorksheetDrawingTarget({ zip, usedDrawingPaths, reservedDrawingPaths })
398
+ : sheetDrawingArtifacts.relationshipTarget;
399
+ drawingRelationship = {
400
+ id: nextRelationshipId(sheetRelationships),
401
+ type: worksheetDrawingRelationshipType,
402
+ target: drawingTarget,
403
+ };
404
+ sheetRelationships.push(drawingRelationship);
405
+ relationshipsChanged = true;
406
+ nextSheetXml = addWorksheetDrawing(nextSheetXml, drawingRelationship.id);
407
+ }
408
+ const drawingPath = normalizeZipPath(resolveTargetPath(sheetPath, drawingRelationship.target));
409
+ usedDrawingPaths.add(drawingPath);
410
+ const currentDrawingRelationshipsPath = drawingRelationshipsPath(drawingPath);
411
+ const currentDrawingXml = getZipText(zip, drawingPath);
412
+ const currentDrawingRelationships = parseRelationships(getZipText(zip, currentDrawingRelationshipsPath));
413
+ const mergedDrawing = mergedDrawingResult({
414
+ currentDrawingXml,
415
+ preservedDrawingXml,
416
+ currentRelationships: currentDrawingRelationships,
417
+ preservedRelationships: preservedDrawingRelationships,
418
+ });
419
+ setZipText(zip, drawingPath, mergedDrawing.drawingXml);
420
+ copiedPartPaths.add(drawingPath);
421
+ changed = true;
422
+ if (mergedDrawing.relationships.length > 0 || currentDrawingXml) {
423
+ setZipText(zip, currentDrawingRelationshipsPath, buildRelationshipsXml(mergedDrawing.relationships));
424
+ copiedPartPaths.add(currentDrawingRelationshipsPath);
425
+ changed = true;
426
+ }
427
+ if (relationshipsChanged) {
428
+ setZipText(zip, sheetRelsPath, buildRelationshipsXml(sheetRelationships));
429
+ }
430
+ if (nextSheetXml !== sheetXml) {
431
+ setZipText(zip, sheetPath, nextSheetXml);
432
+ }
433
+ });
434
+ partsByPath.forEach((partBytes, path) => {
435
+ if (preservedDrawingPartPaths.has(path)) {
436
+ return;
437
+ }
438
+ zip[path] = partBytes;
439
+ copiedPartPaths.add(path);
440
+ changed = true;
441
+ });
442
+ let contentTypesXml = getZipText(zip, '[Content_Types].xml') ?? '';
443
+ const copiedExtensions = new Set([...copiedPartPaths].map(extensionFromPath).filter((extension) => Boolean(extension)));
444
+ for (const defaultEntry of workbookArtifacts.contentTypeDefaults ?? []) {
445
+ if (!copiedExtensions.has(defaultEntry.extension)) {
446
+ continue;
447
+ }
448
+ contentTypesXml = addContentTypeDefault(contentTypesXml, defaultEntry.extension, defaultEntry.contentType);
449
+ }
450
+ for (const overrideEntry of workbookArtifacts.contentTypeOverrides ?? []) {
451
+ if (!copiedPartPaths.has(normalizeZipPath(overrideEntry.partName))) {
452
+ continue;
453
+ }
454
+ contentTypesXml = addContentTypeOverride(contentTypesXml, overrideEntry.partName, overrideEntry.contentType);
455
+ }
456
+ snapshot.sheets
457
+ .toSorted((left, right) => left.order - right.order)
458
+ .forEach((sheet, sheetIndex) => {
459
+ const sheetDrawingArtifacts = sheet.metadata?.drawingArtifacts;
460
+ if (!sheetDrawingArtifacts) {
461
+ return;
462
+ }
463
+ const sheetPath = `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`;
464
+ const sheetRelationships = parseRelationships(getZipText(zip, `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`));
465
+ const drawingRelationship = sheetRelationships.find((relationship) => relationship.type === worksheetDrawingRelationshipType);
466
+ if (!drawingRelationship) {
467
+ return;
468
+ }
469
+ const drawingPath = normalizeZipPath(resolveTargetPath(sheetPath, drawingRelationship.target));
470
+ contentTypesXml = addContentTypeOverride(contentTypesXml, `/${drawingPath}`, drawingContentType);
471
+ });
472
+ if (contentTypesXml.length > 0) {
473
+ setZipText(zip, '[Content_Types].xml', contentTypesXml);
474
+ }
475
+ return changed ? zipSync(zip) : bytes;
476
+ }
477
+ //# sourceMappingURL=xlsx-drawing-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx-drawing-artifacts.js","sourceRoot":"","sources":["../src/xlsx-drawing-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function decodeExcelEscapedText(value: string): string;
2
+ export declare function encodeExcelEscapedText(value: string): string;
@@ -0,0 +1,22 @@
1
+ function isValidXmlCodePoint(value) {
2
+ return Number.isInteger(value) && value >= 0 && value <= 0x10ffff;
3
+ }
4
+ export function decodeExcelEscapedText(value) {
5
+ const escapedUnderscore = '\uE000';
6
+ return value
7
+ .replace(/_x005F_/giu, escapedUnderscore)
8
+ .replace(/_x([0-9a-fA-F]{4})_/gu, (_match, code) => {
9
+ const codePoint = Number.parseInt(code, 16);
10
+ return isValidXmlCodePoint(codePoint) ? String.fromCodePoint(codePoint) : '';
11
+ })
12
+ .replaceAll(escapedUnderscore, '_');
13
+ }
14
+ export function encodeExcelEscapedText(value) {
15
+ let output = '';
16
+ for (const character of value.replace(/_x[0-9a-fA-F]{4}_/gu, (match) => `_x005F${match.slice(1)}`)) {
17
+ const codePoint = character.codePointAt(0);
18
+ output += codePoint <= 0x1f ? `_x${codePoint.toString(16).padStart(4, '0')}_` : character;
19
+ }
20
+ return output;
21
+ }
22
+ //# sourceMappingURL=xlsx-escaped-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx-escaped-text.js","sourceRoot":"","sources":["../src/xlsx-escaped-text.ts"],"names":[],"mappings":"AAAA,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,iBAAiB,GAAG,QAAQ,CAAA;IAClC,OAAO,KAAK;SACT,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC;SACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC3C,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,CAAC,CAAC;SACD,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACnG,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;QAC3C,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3F,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const customNumberFormatStartId = 164;
2
+ export declare function escapeXmlAttribute(value: string): string;
3
+ export declare function addCustomNumberFormatsToStylesXml(stylesXml: string, formatIdsByCode: ReadonlyMap<string, number>): string;
4
+ export declare function repairLeadingZeroNumberFormatIds(bytes: Uint8Array): Uint8Array;
5
+ export declare function getZipText(zip: Record<string, Uint8Array>, path: string): string | null;
6
+ export declare function setZipText(zip: Record<string, Uint8Array>, path: string, text: string): void;
7
+ export declare function setXmlAttribute(tag: string, name: string, value: string): string;
8
+ export declare function readXmlNumberAttribute(tag: string, name: string): number | null;