@pixerate/editor 0.23.0 → 0.25.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 (187) hide show
  1. package/README.md +167 -2
  2. package/THIRD_PARTY_NOTICES.md +80 -0
  3. package/dist/agent/index.cjs +10 -8
  4. package/dist/agent/index.cjs.map +1 -1
  5. package/dist/agent/index.d.cts +4 -3
  6. package/dist/agent/index.d.ts +4 -3
  7. package/dist/agent/index.js +4 -2
  8. package/dist/agent/index.js.map +1 -1
  9. package/dist/canvas/index.cjs +4437 -411
  10. package/dist/canvas/index.cjs.map +1 -1
  11. package/dist/canvas/index.d.cts +934 -4
  12. package/dist/canvas/index.d.ts +934 -4
  13. package/dist/canvas/index.js +4309 -283
  14. package/dist/canvas/index.js.map +1 -1
  15. package/dist/chunk-4BVP64JJ.cjs +1406 -0
  16. package/dist/chunk-4BVP64JJ.cjs.map +1 -0
  17. package/dist/chunk-664LQYFJ.js +115 -0
  18. package/dist/chunk-664LQYFJ.js.map +1 -0
  19. package/dist/chunk-7WISYZFO.cjs +740 -0
  20. package/dist/chunk-7WISYZFO.cjs.map +1 -0
  21. package/dist/chunk-AL6JMGWW.cjs +783 -0
  22. package/dist/chunk-AL6JMGWW.cjs.map +1 -0
  23. package/dist/chunk-BVP3TSLH.cjs +69 -0
  24. package/dist/chunk-BVP3TSLH.cjs.map +1 -0
  25. package/dist/{chunk-RIKBJLS2.cjs → chunk-C7P22VIP.cjs} +2001 -279
  26. package/dist/chunk-C7P22VIP.cjs.map +1 -0
  27. package/dist/chunk-D6FH2YAX.cjs +131 -0
  28. package/dist/chunk-D6FH2YAX.cjs.map +1 -0
  29. package/dist/chunk-ECCCYKGL.js +740 -0
  30. package/dist/chunk-ECCCYKGL.js.map +1 -0
  31. package/dist/{chunk-4SUNJZWB.cjs → chunk-FD4LPFAE.cjs} +48 -200
  32. package/dist/chunk-FD4LPFAE.cjs.map +1 -0
  33. package/dist/{chunk-QBJ22YZR.js → chunk-FH6F67DN.js} +1999 -277
  34. package/dist/chunk-FH6F67DN.js.map +1 -0
  35. package/dist/{chunk-OYXSKQFR.js → chunk-FPENXAEJ.js} +35 -187
  36. package/dist/chunk-FPENXAEJ.js.map +1 -0
  37. package/dist/chunk-HLIMTC6N.js +1 -0
  38. package/dist/chunk-HLIMTC6N.js.map +1 -0
  39. package/dist/chunk-HRMEDT2L.js +1406 -0
  40. package/dist/chunk-HRMEDT2L.js.map +1 -0
  41. package/dist/{chunk-QGHGJ56O.js → chunk-IXHSYOVY.js} +2518 -122
  42. package/dist/chunk-IXHSYOVY.js.map +1 -0
  43. package/dist/chunk-MKA3AHLV.cjs +256 -0
  44. package/dist/chunk-MKA3AHLV.cjs.map +1 -0
  45. package/dist/chunk-NAXVVS5I.js +783 -0
  46. package/dist/chunk-NAXVVS5I.js.map +1 -0
  47. package/dist/chunk-O5RYH2PG.js +69 -0
  48. package/dist/chunk-O5RYH2PG.js.map +1 -0
  49. package/dist/chunk-OXSV64JX.js +689 -0
  50. package/dist/chunk-OXSV64JX.js.map +1 -0
  51. package/dist/chunk-P3RQ5UJE.cjs +689 -0
  52. package/dist/chunk-P3RQ5UJE.cjs.map +1 -0
  53. package/dist/chunk-P6ODPZ4W.js +256 -0
  54. package/dist/chunk-P6ODPZ4W.js.map +1 -0
  55. package/dist/chunk-PL4JB3BF.cjs +1 -0
  56. package/dist/chunk-PL4JB3BF.cjs.map +1 -0
  57. package/dist/{chunk-GVSMRPHB.cjs → chunk-PO6A6QQH.cjs} +2607 -211
  58. package/dist/chunk-PO6A6QQH.cjs.map +1 -0
  59. package/dist/{chunk-JJDLPEWL.js → chunk-QGYDWPRM.js} +2 -2
  60. package/dist/chunk-RR7F5GUM.js +5726 -0
  61. package/dist/chunk-RR7F5GUM.js.map +1 -0
  62. package/dist/chunk-TNNJXF46.cjs +115 -0
  63. package/dist/chunk-TNNJXF46.cjs.map +1 -0
  64. package/dist/chunk-U5HZSFCS.js +131 -0
  65. package/dist/chunk-U5HZSFCS.js.map +1 -0
  66. package/dist/{chunk-MJZBNWG7.js → chunk-UAKDG62Z.js} +309 -581
  67. package/dist/chunk-UAKDG62Z.js.map +1 -0
  68. package/dist/{chunk-CL37JGFW.cjs → chunk-V3CHHWOE.cjs} +4 -4
  69. package/dist/{chunk-CL37JGFW.cjs.map → chunk-V3CHHWOE.cjs.map} +1 -1
  70. package/dist/chunk-WSQKHXW7.cjs +5726 -0
  71. package/dist/chunk-WSQKHXW7.cjs.map +1 -0
  72. package/dist/{chunk-AA4ZEVCC.cjs → chunk-X4N4WUKB.cjs} +336 -608
  73. package/dist/chunk-X4N4WUKB.cjs.map +1 -0
  74. package/dist/commands/index.cjs +74 -1
  75. package/dist/commands/index.cjs.map +1 -1
  76. package/dist/commands/index.d.cts +38 -353
  77. package/dist/commands/index.d.ts +38 -353
  78. package/dist/commands/index.js +73 -0
  79. package/dist/commands/index.js.map +1 -1
  80. package/dist/comment-store-BEMgVlAA.d.cts +135 -0
  81. package/dist/comment-store-BEMgVlAA.d.ts +135 -0
  82. package/dist/compare/index.cjs +15 -0
  83. package/dist/compare/index.cjs.map +1 -0
  84. package/dist/compare/index.d.cts +58 -0
  85. package/dist/compare/index.d.ts +58 -0
  86. package/dist/compare/index.js +15 -0
  87. package/dist/compare/index.js.map +1 -0
  88. package/dist/controller-BIJiNoVs.d.cts +1842 -0
  89. package/dist/controller-BIJiNoVs.d.ts +1842 -0
  90. package/dist/documents-CHT1U5Vs.d.ts +86 -0
  91. package/dist/documents-Gp7wb0Me.d.cts +86 -0
  92. package/dist/extensions/index.cjs +100 -5
  93. package/dist/extensions/index.cjs.map +1 -1
  94. package/dist/extensions/index.d.cts +16 -4
  95. package/dist/extensions/index.d.ts +16 -4
  96. package/dist/extensions/index.js +100 -5
  97. package/dist/generation/index.cjs +2317 -0
  98. package/dist/generation/index.cjs.map +1 -0
  99. package/dist/generation/index.d.cts +1015 -0
  100. package/dist/generation/index.d.ts +1015 -0
  101. package/dist/generation/index.js +2317 -0
  102. package/dist/generation/index.js.map +1 -0
  103. package/dist/grammar/index.cjs +48 -3
  104. package/dist/grammar/index.cjs.map +1 -1
  105. package/dist/grammar/index.d.cts +322 -100
  106. package/dist/grammar/index.d.ts +322 -100
  107. package/dist/grammar/index.js +54 -9
  108. package/dist/image-editor/index.cjs +4392 -481
  109. package/dist/image-editor/index.cjs.map +1 -1
  110. package/dist/image-editor/index.d.cts +1249 -97
  111. package/dist/image-editor/index.d.ts +1249 -97
  112. package/dist/image-editor/index.js +4281 -370
  113. package/dist/image-editor/index.js.map +1 -1
  114. package/dist/index-7a6bHTLy.d.ts +1754 -0
  115. package/dist/index-Csd5qI8u.d.cts +1754 -0
  116. package/dist/index.cjs +1682 -99
  117. package/dist/index.cjs.map +1 -1
  118. package/dist/index.d.cts +118 -21
  119. package/dist/index.d.ts +118 -21
  120. package/dist/index.js +1630 -47
  121. package/dist/index.js.map +1 -1
  122. package/dist/mention-text-CDnCFd3c.d.cts +53 -0
  123. package/dist/mention-text-CDnCFd3c.d.ts +53 -0
  124. package/dist/migrate-iTlm3a8h.d.cts +112 -0
  125. package/dist/migrate-iTlm3a8h.d.ts +112 -0
  126. package/dist/model-C1zApQM8.d.cts +219 -0
  127. package/dist/model-C1zApQM8.d.ts +219 -0
  128. package/dist/persistence/index.cjs +676 -0
  129. package/dist/persistence/index.cjs.map +1 -0
  130. package/dist/persistence/index.d.cts +230 -0
  131. package/dist/persistence/index.d.ts +230 -0
  132. package/dist/persistence/index.js +676 -0
  133. package/dist/persistence/index.js.map +1 -0
  134. package/dist/{registry-D5-R90p0.d.cts → registry-BDe-vlv3.d.ts} +2 -40
  135. package/dist/{registry-GJI4gToU.d.ts → registry-CEgwXED1.d.cts} +12 -1
  136. package/dist/{registry-GJI4gToU.d.cts → registry-CEgwXED1.d.ts} +12 -1
  137. package/dist/registry-D32LpIc4.d.cts +354 -0
  138. package/dist/{registry-D5-R90p0.d.ts → registry-DnzpgY27.d.cts} +2 -40
  139. package/dist/registry-evKTP4ls.d.ts +354 -0
  140. package/dist/schema-DYDGdYL9.d.cts +41 -0
  141. package/dist/schema-DYDGdYL9.d.ts +41 -0
  142. package/dist/serializers/index.cjs +12 -3
  143. package/dist/serializers/index.cjs.map +1 -1
  144. package/dist/serializers/index.d.cts +40 -12
  145. package/dist/serializers/index.d.ts +40 -12
  146. package/dist/serializers/index.js +12 -3
  147. package/dist/sourcemap-C8AH3MBQ.d.cts +91 -0
  148. package/dist/sourcemap-DA1Evhrv.d.ts +91 -0
  149. package/dist/spreadsheet/index.cjs +161 -3
  150. package/dist/spreadsheet/index.cjs.map +1 -1
  151. package/dist/spreadsheet/index.d.cts +611 -20
  152. package/dist/spreadsheet/index.d.ts +611 -20
  153. package/dist/spreadsheet/index.js +168 -10
  154. package/dist/storage-BpFfspHm.d.cts +120 -0
  155. package/dist/storage-BpFfspHm.d.ts +120 -0
  156. package/dist/tokens/index.cjs +115 -0
  157. package/dist/tokens/index.cjs.map +1 -0
  158. package/dist/tokens/index.d.cts +212 -0
  159. package/dist/tokens/index.d.ts +212 -0
  160. package/dist/tokens/index.js +115 -0
  161. package/dist/tokens/index.js.map +1 -0
  162. package/dist/{tokens-CyLZmIei.d.cts → tokens-D7yXvUU6.d.cts} +15 -2
  163. package/dist/{tokens-CyLZmIei.d.ts → tokens-D7yXvUU6.d.ts} +15 -2
  164. package/dist/{track-changes-BSF58RK0.d.cts → track-changes-D_VAPELi.d.cts} +110 -144
  165. package/dist/{track-changes-BSF58RK0.d.ts → track-changes-Db_fGEvx.d.ts} +110 -144
  166. package/package.json +21 -1
  167. package/dist/chunk-4SUNJZWB.cjs.map +0 -1
  168. package/dist/chunk-AA4ZEVCC.cjs.map +0 -1
  169. package/dist/chunk-AXV2ZW34.cjs +0 -118
  170. package/dist/chunk-AXV2ZW34.cjs.map +0 -1
  171. package/dist/chunk-B2ZRLN4S.js +0 -118
  172. package/dist/chunk-B2ZRLN4S.js.map +0 -1
  173. package/dist/chunk-GVSMRPHB.cjs.map +0 -1
  174. package/dist/chunk-K3R5NG2D.js +0 -3100
  175. package/dist/chunk-K3R5NG2D.js.map +0 -1
  176. package/dist/chunk-MJZBNWG7.js.map +0 -1
  177. package/dist/chunk-OYXSKQFR.js.map +0 -1
  178. package/dist/chunk-QBJ22YZR.js.map +0 -1
  179. package/dist/chunk-QGHGJ56O.js.map +0 -1
  180. package/dist/chunk-RIKBJLS2.cjs.map +0 -1
  181. package/dist/chunk-XDMXXC4Z.cjs +0 -3100
  182. package/dist/chunk-XDMXXC4Z.cjs.map +0 -1
  183. package/dist/controller-pePCJLT1.d.cts +0 -959
  184. package/dist/controller-pePCJLT1.d.ts +0 -959
  185. package/dist/index-CCr_z9kF.d.cts +0 -899
  186. package/dist/index-Ck6ajwXh.d.ts +0 -899
  187. /package/dist/{chunk-JJDLPEWL.js.map → chunk-QGYDWPRM.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;require('./chunk-PL4JB3BF.cjs');
2
2
 
3
3
 
4
4
 
@@ -19,12 +19,12 @@
19
19
 
20
20
 
21
21
 
22
- var _chunk4SUNJZWBcjs = require('./chunk-4SUNJZWB.cjs');
23
22
 
24
23
 
25
24
 
26
25
 
27
26
 
27
+ var _chunkP3RQ5UJEcjs = require('./chunk-P3RQ5UJE.cjs');
28
28
 
29
29
 
30
30
 
@@ -35,6 +35,7 @@ var _chunk4SUNJZWBcjs = require('./chunk-4SUNJZWB.cjs');
35
35
 
36
36
 
37
37
 
38
+ var _chunkFD4LPFAEcjs = require('./chunk-FD4LPFAE.cjs');
38
39
 
39
40
 
40
41
 
@@ -121,7 +122,6 @@ var _chunk4SUNJZWBcjs = require('./chunk-4SUNJZWB.cjs');
121
122
 
122
123
 
123
124
 
124
- var _chunkGVSMRPHBcjs = require('./chunk-GVSMRPHB.cjs');
125
125
 
126
126
 
127
127
 
@@ -136,7 +136,78 @@ var _chunkGVSMRPHBcjs = require('./chunk-GVSMRPHB.cjs');
136
136
 
137
137
 
138
138
 
139
- var _chunkAXV2ZW34cjs = require('./chunk-AXV2ZW34.cjs');
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ var _chunkPO6A6QQHcjs = require('./chunk-PO6A6QQH.cjs');
182
+
183
+
184
+
185
+
186
+
187
+ var _chunkAL6JMGWWcjs = require('./chunk-AL6JMGWW.cjs');
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+ var _chunkMKA3AHLVcjs = require('./chunk-MKA3AHLV.cjs');
140
211
  require('./chunk-JACER6TE.cjs');
141
212
 
142
213
 
@@ -148,7 +219,66 @@ require('./chunk-JACER6TE.cjs');
148
219
 
149
220
 
150
221
 
151
- var _chunkCL37JGFWcjs = require('./chunk-CL37JGFW.cjs');
222
+ var _chunkV3CHHWOEcjs = require('./chunk-V3CHHWOE.cjs');
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
152
282
 
153
283
 
154
284
 
@@ -203,7 +333,17 @@ var _chunkCL37JGFWcjs = require('./chunk-CL37JGFW.cjs');
203
333
 
204
334
 
205
335
 
206
- var _chunkXDMXXC4Zcjs = require('./chunk-XDMXXC4Z.cjs');
336
+
337
+
338
+
339
+ var _chunkWSQKHXW7cjs = require('./chunk-WSQKHXW7.cjs');
340
+
341
+
342
+
343
+
344
+
345
+
346
+ var _chunkTNNJXF46cjs = require('./chunk-TNNJXF46.cjs');
207
347
 
208
348
 
209
349
 
@@ -229,6 +369,15 @@ var _chunkG2I4QJOTcjs = require('./chunk-G2I4QJOT.cjs');
229
369
 
230
370
 
231
371
 
372
+ var _chunk7WISYZFOcjs = require('./chunk-7WISYZFO.cjs');
373
+
374
+
375
+
376
+
377
+
378
+ var _chunkBVP3TSLHcjs = require('./chunk-BVP3TSLH.cjs');
379
+
380
+
232
381
 
233
382
 
234
383
 
@@ -252,10 +401,10 @@ var _chunkG2I4QJOTcjs = require('./chunk-G2I4QJOT.cjs');
252
401
 
253
402
 
254
403
 
255
- var _chunkAA4ZEVCCcjs = require('./chunk-AA4ZEVCC.cjs');
256
404
 
257
405
 
258
406
 
407
+ var _chunkX4N4WUKBcjs = require('./chunk-X4N4WUKB.cjs');
259
408
 
260
409
 
261
410
 
@@ -287,7 +436,21 @@ var _chunkAA4ZEVCCcjs = require('./chunk-AA4ZEVCC.cjs');
287
436
 
288
437
 
289
438
 
290
- var _chunkRIKBJLS2cjs = require('./chunk-RIKBJLS2.cjs');
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+ var _chunkC7P22VIPcjs = require('./chunk-C7P22VIP.cjs');
291
454
 
292
455
  // src/controller.ts
293
456
  var _core = require('@tiptap/core');
@@ -320,18 +483,18 @@ var EditorController = class {
320
483
  this.onMarkdownChange = onMarkdownChange;
321
484
  this.onTokensChange = onTokensChange;
322
485
  this.onSelectionChange = onSelectionChange;
323
- const initialContent = plainTextMode && typeof content === "string" ? _chunkAA4ZEVCCcjs.plainTextToTipTapHtml.call(void 0, content) : markdownMode && typeof content === "string" ? _chunkAA4ZEVCCcjs.markdownToTipTapHtml.call(void 0, content) : content;
486
+ const initialContent = plainTextMode && typeof content === "string" ? _chunk7WISYZFOcjs.plainTextToTipTapHtml.call(void 0, content) : markdownMode && typeof content === "string" ? _chunk7WISYZFOcjs.markdownToTipTapHtml.call(void 0, content) : content;
324
487
  this.editor = new (0, _core.Editor)({
325
488
  element: element || void 0,
326
489
  content: initialContent,
327
490
  extensions,
328
491
  ...editorOptions,
329
492
  onUpdate: (props) => {
330
- _optionalChain([editorOptions, 'access', _ => _.onUpdate, 'optionalCall', _2 => _2(props)]);
493
+ _optionalChain([editorOptions, 'access', _2 => _2.onUpdate, 'optionalCall', _3 => _3(props)]);
331
494
  this.handleUpdate();
332
495
  },
333
496
  onSelectionUpdate: (props) => {
334
- _optionalChain([editorOptions, 'access', _3 => _3.onSelectionUpdate, 'optionalCall', _4 => _4(props)]);
497
+ _optionalChain([editorOptions, 'access', _4 => _4.onSelectionUpdate, 'optionalCall', _5 => _5(props)]);
335
498
  this.handleSelectionUpdate();
336
499
  }
337
500
  });
@@ -341,9 +504,9 @@ var EditorController = class {
341
504
  this.baselineContent = this.getCurrentContentString();
342
505
  }
343
506
  enforcePlainTextClipboard() {
344
- const richClipboard = _optionalChain([this, 'access', _5 => _5.editor, 'access', _6 => _6.storage, 'optionalAccess', _7 => _7.richClipboard]);
507
+ const richClipboard = _optionalChain([this, 'access', _6 => _6.editor, 'access', _7 => _7.storage, 'optionalAccess', _8 => _8.richClipboard]);
345
508
  if (richClipboard) richClipboard.plainTextMode = true;
346
- const fileImport = _optionalChain([this, 'access', _8 => _8.editor, 'access', _9 => _9.extensionManager, 'optionalAccess', _10 => _10.extensions, 'access', _11 => _11.find, 'call', _12 => _12(
509
+ const fileImport = _optionalChain([this, 'access', _9 => _9.editor, 'access', _10 => _10.extensionManager, 'optionalAccess', _11 => _11.extensions, 'access', _12 => _12.find, 'call', _13 => _13(
347
510
  (ext) => ext.name === "fileImport"
348
511
  )]);
349
512
  if (fileImport) fileImport.options.asPlainText = true;
@@ -351,9 +514,9 @@ var EditorController = class {
351
514
  editorProps: {
352
515
  ...this.editor.options.editorProps,
353
516
  clipboardTextParser: (text, context, _plain, view) => {
354
- const schema = _optionalChain([context, 'optionalAccess', _13 => _13.doc, 'optionalAccess', _14 => _14.type, 'optionalAccess', _15 => _15.schema]) || _optionalChain([context, 'optionalAccess', _16 => _16.schema]) || _optionalChain([view, 'optionalAccess', _17 => _17.state, 'optionalAccess', _18 => _18.schema]) || this.editor.schema;
517
+ const schema = _optionalChain([context, 'optionalAccess', _14 => _14.doc, 'optionalAccess', _15 => _15.type, 'optionalAccess', _16 => _16.schema]) || _optionalChain([context, 'optionalAccess', _17 => _17.schema]) || _optionalChain([view, 'optionalAccess', _18 => _18.state, 'optionalAccess', _19 => _19.schema]) || this.editor.schema;
355
518
  if (!schema) return _model.Slice.empty;
356
- return _chunkAA4ZEVCCcjs.plainTextToSlice.call(void 0, text, schema);
519
+ return _chunk7WISYZFOcjs.plainTextToSlice.call(void 0, text, schema);
357
520
  }
358
521
  }
359
522
  });
@@ -361,15 +524,15 @@ var EditorController = class {
361
524
  handleUpdate() {
362
525
  if (this.plainTextMode || this.onPlainTextChange || this.onTokensChange) {
363
526
  const text = this.getPlainText();
364
- _optionalChain([this, 'access', _19 => _19.onPlainTextChange, 'optionalCall', _20 => _20(text)]);
527
+ _optionalChain([this, 'access', _20 => _20.onPlainTextChange, 'optionalCall', _21 => _21(text)]);
365
528
  if (this.onTokensChange) {
366
- const tokens = _chunk4SUNJZWBcjs.tokenizePrompt.call(void 0, text);
529
+ const tokens = _chunkFD4LPFAEcjs.tokenizePrompt.call(void 0, text);
367
530
  this.onTokensChange(tokens);
368
531
  }
369
532
  }
370
533
  if (this.markdownMode || this.onMarkdownChange) {
371
534
  const markdown = this.getMarkdown();
372
- _optionalChain([this, 'access', _21 => _21.onMarkdownChange, 'optionalCall', _22 => _22(markdown)]);
535
+ _optionalChain([this, 'access', _22 => _22.onMarkdownChange, 'optionalCall', _23 => _23(markdown)]);
373
536
  }
374
537
  }
375
538
  handleSelectionUpdate() {
@@ -379,20 +542,20 @@ var EditorController = class {
379
542
  }
380
543
  }
381
544
  getPlainText() {
382
- return _chunkAA4ZEVCCcjs.getEditorText.call(void 0, this.editor);
545
+ return _chunk7WISYZFOcjs.getEditorText.call(void 0, this.editor);
383
546
  }
384
547
  setPlainText(text, emitUpdate = true) {
385
- const html = _chunkAA4ZEVCCcjs.plainTextToTipTapHtml.call(void 0, text);
548
+ const html = _chunk7WISYZFOcjs.plainTextToTipTapHtml.call(void 0, text);
386
549
  this.editor.commands.setContent(html, emitUpdate);
387
550
  }
388
551
  getMarkdown() {
389
- return _chunkAA4ZEVCCcjs.getEditorMarkdown.call(void 0, this.editor);
552
+ return _chunk7WISYZFOcjs.getEditorMarkdown.call(void 0, this.editor);
390
553
  }
391
554
  setMarkdown(markdown, emitUpdate = true) {
392
- if (_optionalChain([this, 'access', _23 => _23.editor, 'access', _24 => _24.storage, 'optionalAccess', _25 => _25.markdown, 'optionalAccess', _26 => _26.parser])) {
555
+ if (_optionalChain([this, 'access', _24 => _24.editor, 'access', _25 => _25.storage, 'optionalAccess', _26 => _26.markdown, 'optionalAccess', _27 => _27.parser])) {
393
556
  this.editor.commands.setContent(markdown, emitUpdate);
394
557
  } else {
395
- const html = _chunkAA4ZEVCCcjs.markdownToTipTapHtml.call(void 0, markdown);
558
+ const html = _chunk7WISYZFOcjs.markdownToTipTapHtml.call(void 0, markdown);
396
559
  this.editor.commands.setContent(html, emitUpdate);
397
560
  }
398
561
  }
@@ -402,7 +565,7 @@ var EditorController = class {
402
565
  */
403
566
  insertPlainText(from, to, text) {
404
567
  const { state, view } = this.editor;
405
- const tr = text.includes("\n") || text.includes("\r") ? state.tr.replace(from, to, _chunkAA4ZEVCCcjs.plainTextToSlice.call(void 0, text, state.schema)) : text ? state.tr.insertText(text, from, to) : state.tr.delete(from, to);
568
+ const tr = text.includes("\n") || text.includes("\r") ? state.tr.replace(from, to, _chunk7WISYZFOcjs.plainTextToSlice.call(void 0, text, state.schema)) : text ? state.tr.insertText(text, from, to) : state.tr.delete(from, to);
406
569
  view.dispatch(tr.scrollIntoView());
407
570
  }
408
571
  /** Inserts text literally at the selection; HTML in `text` is not parsed. */
@@ -451,7 +614,7 @@ function pickImportFiles(options = {}) {
451
614
  return new Promise((resolve) => {
452
615
  const input = document.createElement("input");
453
616
  input.type = "file";
454
- input.accept = _nullishCoalesce(options.accept, () => ( _chunkGVSMRPHBcjs.defaultImportRegistry.accept("document")));
617
+ input.accept = _nullishCoalesce(options.accept, () => ( _chunkPO6A6QQHcjs.defaultImportRegistry.accept("document")));
455
618
  input.multiple = _nullishCoalesce(options.multiple, () => ( true));
456
619
  input.style.display = "none";
457
620
  const finish = (files) => {
@@ -479,7 +642,7 @@ var FileImportController = (_class = class {
479
642
  }
480
643
  /** `accept` attribute value for document imports. */
481
644
  get accept() {
482
- return (_nullishCoalesce(this.options.registry, () => ( _chunkGVSMRPHBcjs.defaultImportRegistry))).accept("document");
645
+ return (_nullishCoalesce(this.options.registry, () => ( _chunkPO6A6QQHcjs.defaultImportRegistry))).accept("document");
483
646
  }
484
647
  __init4() {this.getState = () => this.state}
485
648
  __init5() {this.subscribe = (listener) => {
@@ -501,12 +664,12 @@ var FileImportController = (_class = class {
501
664
  this.setState({ isImporting: true, error: null });
502
665
  let error = null;
503
666
  try {
504
- const outcomes = await _chunkGVSMRPHBcjs.importFilesIntoEditor.call(void 0, target, list, {
667
+ const outcomes = await _chunkPO6A6QQHcjs.importFilesIntoEditor.call(void 0, target, list, {
505
668
  ...this.options,
506
669
  at,
507
670
  onError: (err, file) => {
508
671
  error = err;
509
- _optionalChain([this, 'access', _30 => _30.options, 'access', _31 => _31.onError, 'optionalCall', _32 => _32(err, file)]);
672
+ _optionalChain([this, 'access', _31 => _31.options, 'access', _32 => _32.onError, 'optionalCall', _33 => _33(err, file)]);
510
673
  }
511
674
  });
512
675
  this.pending--;
@@ -527,103 +690,1366 @@ var FileImportController = (_class = class {
527
690
  function createFileImportController(getTarget, options) {
528
691
  return new FileImportController(getTarget, options);
529
692
  }
693
+ function summarizeImportStructure(outcomes) {
694
+ const reports = outcomes.map((outcome) => _optionalChain([outcome, 'access', _34 => _34.result, 'optionalAccess', _35 => _35.structure])).filter((report) => !!report);
695
+ if (!reports.length) return null;
696
+ const modes = new Set(reports.map((report) => report.mode));
697
+ const sum = (pick) => reports.reduce((total, report) => total + pick(report), 0);
698
+ return {
699
+ files: reports.length,
700
+ mode: modes.size > 1 ? "mixed" : reports[0].mode,
701
+ headings: sum((r) => r.counts.headings),
702
+ lists: sum((r) => r.counts.lists),
703
+ tables: sum((r) => r.counts.tables),
704
+ paragraphs: sum((r) => r.counts.paragraphs),
705
+ multiColumnPages: sum((r) => r.multiColumnPages),
706
+ confidence: Math.round(sum((r) => r.confidence) / reports.length * 100) / 100
707
+ };
708
+ }
530
709
 
531
- // src/import/pdf.ts
532
- var isTextItem = (item) => typeof item.str === "string";
710
+ // src/import/pdf-layout.ts
711
+ var MAX_COLS = 63;
712
+ var MAX_TABLE_ROWS = 2e3;
713
+ var MAX_RULES = 2e3;
714
+ var MAX_DEPTH = 4;
715
+ var BULLET_GLYPH_RE = /^[•◦▪▫●○■□‣⁃∙·➢►▶✓✔❖]\s*/;
716
+ var BULLET_DASH_RE = /^[-–—*]\s+/;
717
+ var ORDERED_RE = /^(?:\((\d{1,3}|[a-zA-Z]|[ivxlcIVXLC]{1,6})\)|(\d{1,3}|[a-zA-Z]|[ivxlcIVXLC]{1,6})[.)])\s+/;
718
+ var MARKER_ONLY_RE = /^(?:[•◦▪▫●○■□‣⁃∙·➢►▶✓✔❖]|\(?(?:\d{1,3}|[a-zA-Z]|[ivxlcIVXLC]{1,6})[.)])$/;
719
+ var PAGE_NUMBER_RE = /^(?:page\s+)?(?:\d{1,4}|[ivxlcdm]{1,7})(?:\s*(?:of|\/)\s*\d{1,4})?$/i;
720
+ var DASHED_PAGE_NUMBER_RE = /^[-–—]\s*\d{1,4}\s*[-–—]$/;
721
+ var SENTENCE_END_RE = /[.!?:;]["'”’)\]]?$/;
722
+ var BOLD_FONT_RE = /bold|black|heavy|semibold|demi/i;
723
+ var ITALIC_FONT_RE = /italic|oblique/i;
724
+ function minOf(list, fn) {
725
+ let min = Infinity;
726
+ for (const item of list) min = Math.min(min, fn(item));
727
+ return min;
728
+ }
729
+ function maxOf(list, fn) {
730
+ let max = -Infinity;
731
+ for (const item of list) max = Math.max(max, fn(item));
732
+ return max;
733
+ }
734
+ function lowerBound(values, target) {
735
+ let lo = 0;
736
+ let hi = values.length;
737
+ while (lo < hi) {
738
+ const mid = lo + hi >> 1;
739
+ if (values[mid] < target) lo = mid + 1;
740
+ else hi = mid;
741
+ }
742
+ return lo;
743
+ }
533
744
  function median(values) {
534
745
  if (!values.length) return 0;
535
746
  const sorted = [...values].sort((a, b) => a - b);
536
747
  const mid = sorted.length >> 1;
537
748
  return sorted.length % 2 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;
538
749
  }
539
- function groupLines(items) {
540
- const lines = [];
541
- let current = null;
542
- let breakNext = false;
543
- for (const item of items) {
544
- if (!isTextItem(item)) continue;
545
- const x = _nullishCoalesce(_optionalChain([item, 'access', _33 => _33.transform, 'optionalAccess', _34 => _34[4]]), () => ( 0));
546
- const y = _nullishCoalesce(_optionalChain([item, 'access', _35 => _35.transform, 'optionalAccess', _36 => _36[5]]), () => ( (_nullishCoalesce(_optionalChain([current, 'optionalAccess', _37 => _37.y]), () => ( 0)))));
547
- const height = item.height || Math.abs(_nullishCoalesce(_optionalChain([item, 'access', _38 => _38.transform, 'optionalAccess', _39 => _39[3]]), () => ( 0))) || _optionalChain([current, 'optionalAccess', _40 => _40.height]) || 10;
548
- const tolerance = Math.max(1, height * 0.5);
549
- if (!item.str) {
550
- if (item.hasEOL) {
551
- if (breakNext && current) current.blankAfter = true;
552
- breakNext = true;
750
+ var countWords = (text) => {
751
+ let words = 0;
752
+ let inWord = false;
753
+ for (let i = 0; i < text.length; i++) {
754
+ const space = text.charCodeAt(i) <= 32;
755
+ if (!space && !inWord) words++;
756
+ inWord = !space;
757
+ }
758
+ return words;
759
+ };
760
+ var collapse = (text) => text.replace(/\s+/g, " ").trim();
761
+ function runSize(run) {
762
+ if (run.fontSize && run.fontSize > 0) return run.fontSize;
763
+ if (run.height && run.height > 0) return run.height;
764
+ return 10;
765
+ }
766
+ function buildFragments(runs) {
767
+ const items = runs.filter((run) => typeof run.text === "string" && run.text.trim() !== "" && Number.isFinite(run.x) && Number.isFinite(run.y)).map((run) => {
768
+ const size = runSize(run);
769
+ const width = run.width !== void 0 && run.width >= 0 ? run.width : run.text.length * size * 0.5;
770
+ return {
771
+ text: run.text,
772
+ x0: run.x,
773
+ x1: run.x + width,
774
+ y: run.y,
775
+ size,
776
+ bold: _nullishCoalesce(run.bold, () => ( BOLD_FONT_RE.test(_nullishCoalesce(run.fontName, () => ( ""))))),
777
+ italic: _nullishCoalesce(run.italic, () => ( ITALIC_FONT_RE.test(_nullishCoalesce(run.fontName, () => ( "")))))
778
+ };
779
+ });
780
+ items.sort((a, b) => b.y - a.y || a.x0 - b.x0);
781
+ const frags = [];
782
+ let i = 0;
783
+ while (i < items.length) {
784
+ const anchor = items[i];
785
+ let j = i + 1;
786
+ while (j < items.length && anchor.y - items[j].y <= Math.max(1, Math.min(anchor.size, items[j].size) * 0.5)) j++;
787
+ const row = items.slice(i, j).sort((a, b) => a.x0 - b.x0);
788
+ i = j;
789
+ let current = null;
790
+ const finish = () => {
791
+ if (!current) return;
792
+ let best = "";
793
+ let bestChars = -1;
794
+ current.styleChars.forEach((chars, key) => {
795
+ if (chars > bestChars) {
796
+ best = key;
797
+ bestChars = chars;
798
+ }
799
+ });
800
+ const [size, bold, italic] = best.split("|");
801
+ current.size = Number(size);
802
+ current.bold = bold === "1";
803
+ current.italic = italic === "1";
804
+ current.text = collapse(current.text);
805
+ current.words = countWords(current.text);
806
+ current.top = current.y + current.size * 0.8;
807
+ current.bottom = current.y - current.size * 0.2;
808
+ if (current.text) frags.push(current);
809
+ current = null;
810
+ };
811
+ for (const item of row) {
812
+ if (current) {
813
+ const gap = item.x0 - current.x1;
814
+ const em = Math.max(current.size, item.size);
815
+ const markerOnly = MARKER_ONLY_RE.test(collapse(current.text));
816
+ if (gap > em * (markerOnly ? 6 : 1)) finish();
553
817
  }
554
- continue;
818
+ if (!current) {
819
+ current = {
820
+ text: item.text,
821
+ x0: item.x0,
822
+ x1: item.x1,
823
+ y: item.y,
824
+ top: 0,
825
+ bottom: 0,
826
+ size: item.size,
827
+ bold: item.bold,
828
+ italic: item.italic,
829
+ words: 0,
830
+ styleChars: /* @__PURE__ */ new Map()
831
+ };
832
+ } else {
833
+ const gap = item.x0 - current.x1;
834
+ if (gap > Math.max(current.size, item.size) * 0.15 && !/\s$/.test(current.text) && !/^\s/.test(item.text)) {
835
+ current.text += " ";
836
+ }
837
+ current.text += item.text;
838
+ current.x1 = Math.max(current.x1, item.x1);
839
+ }
840
+ const key = `${Math.round(item.size * 2) / 2}|${item.bold ? 1 : 0}|${item.italic ? 1 : 0}`;
841
+ current.styleChars.set(key, (_nullishCoalesce(current.styleChars.get(key), () => ( 0))) + item.text.trim().length);
555
842
  }
556
- if (!current || breakNext || Math.abs(y - current.y) > tolerance) {
557
- current = { text: "", y, height, blankAfter: false };
558
- lines.push(current);
559
- } else if (current.endX !== void 0 && x - current.endX > height * 0.15) {
560
- if (!/\s$/.test(current.text) && !/^\s/.test(item.str)) current.text += " ";
843
+ finish();
844
+ }
845
+ return frags;
846
+ }
847
+ function baselineRows(frags) {
848
+ const rows = [];
849
+ for (const frag of frags) {
850
+ const row = rows[rows.length - 1];
851
+ if (row && Math.abs(row[0].y - frag.y) <= Math.max(1, Math.min(row[0].size, frag.size) * 0.5)) row.push(frag);
852
+ else rows.push([frag]);
853
+ }
854
+ return rows;
855
+ }
856
+ var edgeKey = (row) => collapse(row.map((f) => f.text).join(" ")).toLowerCase().replace(/\d+/g, "#");
857
+ function removeHeadersAndFooters(pages) {
858
+ const removed = { headers: 0, footers: 0, pageNumbers: 0 };
859
+ const pageRows = pages.map((frags) => baselineRows([...frags].sort((a, b) => b.y - a.y || a.x0 - b.x0)));
860
+ const counts = /* @__PURE__ */ new Map();
861
+ const candidates = [];
862
+ pageRows.forEach((rows, page) => {
863
+ const n = rows.length;
864
+ const picks = [];
865
+ for (let k = 0; k < Math.min(2, n); k++) picks.push([k, "top"]);
866
+ for (let k = Math.max(Math.min(2, n), n - 2); k < n; k++) picks.push([k, "bottom"]);
867
+ for (const [index, edge] of picks) {
868
+ const row = rows[index];
869
+ const extreme = edge === "top" ? index === 0 : index === n - 1;
870
+ const neighbour = edge === "top" ? rows[index + 1] : rows[index - 1];
871
+ const gap = neighbour ? Math.abs(row[0].y - neighbour[0].y) / row[0].size : Infinity;
872
+ candidates.push({ page, row, edge, extreme, gap });
873
+ const key = `${edge}:${edgeKey(row)}`;
874
+ if (!counts.has(key)) counts.set(key, /* @__PURE__ */ new Set());
875
+ counts.get(key).add(page);
561
876
  }
562
- current.text += item.str;
563
- current.height = Math.max(current.height, height);
564
- current.endX = item.width !== void 0 ? x + item.width : void 0;
565
- breakNext = !!item.hasEOL;
877
+ });
878
+ const minPages = Math.max(2, Math.ceil(pages.length * 0.5));
879
+ const drop = /* @__PURE__ */ new Set();
880
+ for (const candidate of candidates) {
881
+ const text = collapse(candidate.row.map((f) => f.text).join(" "));
882
+ const isPageNumber = candidate.extreme && (PAGE_NUMBER_RE.test(text) || DASHED_PAGE_NUMBER_RE.test(text));
883
+ const repeated = (_nullishCoalesce(_optionalChain([counts, 'access', _36 => _36.get, 'call', _37 => _37(`${candidate.edge}:${edgeKey(candidate.row)}`), 'optionalAccess', _38 => _38.size]), () => ( 0))) >= minPages;
884
+ let kind = null;
885
+ if (isPageNumber && (pages.length > 1 || candidate.gap > 2.5)) kind = "pageNumbers";
886
+ else if (repeated && pages.length > 1) kind = candidate.edge === "top" ? "headers" : "footers";
887
+ if (!kind || candidate.row.some((f) => drop.has(f))) continue;
888
+ candidate.row.forEach((f) => drop.add(f));
889
+ removed[kind]++;
566
890
  }
567
- return lines;
891
+ if (drop.size) {
892
+ pages.forEach((frags, index) => {
893
+ pages[index] = frags.filter((f) => !drop.has(f));
894
+ });
895
+ }
896
+ return removed;
568
897
  }
569
- function pdfTextItemsToParagraphs(items, options = {}) {
570
- const lines = groupLines(items).filter((line) => line.text.trim() || line.blankAfter);
571
- const gaps = [];
572
- for (let i = 1; i < lines.length; i++) {
573
- const gap = lines[i - 1].y - lines[i].y;
574
- if (gap > 0) gaps.push(gap);
898
+ function splitRules(rules) {
899
+ const h = [];
900
+ const v = [];
901
+ for (const rule of rules.slice(0, MAX_RULES)) {
902
+ const { x1, y1, x2, y2 } = rule;
903
+ if (![x1, y1, x2, y2].every(Number.isFinite)) continue;
904
+ const dx = Math.abs(x2 - x1);
905
+ const dy = Math.abs(y2 - y1);
906
+ if (dy <= 1.5 && dx >= 6) h.push({ y: (y1 + y2) / 2, x0: Math.min(x1, x2), x1: Math.max(x1, x2) });
907
+ else if (dx <= 1.5 && dy >= 6) v.push({ x: (x1 + x2) / 2, y0: Math.min(y1, y2), y1: Math.max(y1, y2) });
575
908
  }
576
- const typical = median(gaps);
577
- const factor = _nullishCoalesce(options.paragraphGap, () => ( 1.4));
578
- const paragraphs = [];
579
- let current = [];
580
- const flush = () => {
581
- const text = current.join(" ").replace(/\s+/g, " ").trim();
582
- if (text) paragraphs.push(text);
583
- current = [];
909
+ return { h, v };
910
+ }
911
+ function clusterValues(values, tol) {
912
+ const sorted = [...values].sort((a, b) => a - b);
913
+ const out = [];
914
+ for (const value of sorted) {
915
+ const cluster = out[out.length - 1];
916
+ if (cluster && value - cluster.last <= tol) {
917
+ cluster.sum += value;
918
+ cluster.n++;
919
+ cluster.last = value;
920
+ } else out.push({ sum: value, n: 1, last: value });
921
+ }
922
+ return out.map((c) => c.sum / c.n);
923
+ }
924
+ function find(parent, i) {
925
+ while (parent[i] !== i) {
926
+ parent[i] = parent[parent[i]];
927
+ i = parent[i];
928
+ }
929
+ return i;
930
+ }
931
+ var cellText = (frags, dehyphenate, stats) => {
932
+ const sorted = [...frags].sort((a, b) => b.y - a.y || a.x0 - b.x0);
933
+ let text = "";
934
+ let lastY = Infinity;
935
+ for (const frag of sorted) {
936
+ if (!text) text = frag.text;
937
+ else if (Math.abs(lastY - frag.y) > frag.size * 0.5) text = joinLines(text, frag.text, dehyphenate, stats);
938
+ else text += ` ${frag.text}`;
939
+ lastY = frag.y;
940
+ }
941
+ return collapse(text);
942
+ };
943
+ var NUMERIC_RE = /^[-+−(]?[$€£¥]?\s?\d[\d,.\s]*%?\)?$/;
944
+ function headerRowCount(rowFrags) {
945
+ if (rowFrags.length < 2) return 0;
946
+ const cells = (row) => row.filter((cell) => cell.length > 0);
947
+ const first = cells(rowFrags[0]);
948
+ if (!first.length) return 0;
949
+ const rest = rowFrags.slice(1).flatMap(cells);
950
+ const allBold = (list) => list.length > 0 && list.every((cell) => cell.every((f) => f.bold));
951
+ if (allBold(first) && !allBold(rest)) return 1;
952
+ const numeric = (cell) => NUMERIC_RE.test(collapse(cell.map((f) => f.text).join(" ")));
953
+ if (first.every((cell) => !numeric(cell))) {
954
+ const columns = rowFrags[0].length;
955
+ for (let c = 0; c < columns; c++) {
956
+ const body = rowFrags.slice(1).map((row) => row[c]).filter((cell) => cell && cell.length > 0);
957
+ if (rowFrags[0][c].length && body.length >= 2 && body.every(numeric)) return 1;
958
+ }
959
+ }
960
+ const firstSize = maxOf(first.flat(), (f) => f.size);
961
+ const restSize = median(rest.flat().map((f) => f.size));
962
+ if (restSize > 0 && firstSize >= restSize * 1.1) return 1;
963
+ return 0;
964
+ }
965
+ function ruledTables(frags, rules, page, dehyphenate, stats) {
966
+ const consumed = /* @__PURE__ */ new Set();
967
+ const atoms = [];
968
+ const { h, v } = splitRules(rules);
969
+ if (h.length < 2) return { atoms, consumed };
970
+ const n = h.length + v.length;
971
+ const parent = Array.from({ length: n }, (_, i) => i);
972
+ const union = (a, b) => {
973
+ const ra = find(parent, a);
974
+ const rb = find(parent, b);
975
+ if (ra !== rb) parent[ra] = rb;
584
976
  };
585
- lines.forEach((line, i) => {
586
- if (i > 0) {
587
- const prev = lines[i - 1];
588
- const gap = prev.y - line.y;
589
- const bigGap = typical > 0 ? gap > typical * factor : gap > prev.height * 1.8;
590
- if (prev.blankAfter || bigGap || gap < -prev.height * 0.5) flush();
977
+ const tol = 2;
978
+ const vOrder = v.map((_, i) => i).sort((a, b) => v[a].x - v[b].x);
979
+ const vxs = vOrder.map((i) => v[i].x);
980
+ h.forEach((seg, hi) => {
981
+ let lo = 0;
982
+ let hiIdx = vxs.length;
983
+ while (lo < hiIdx) {
984
+ const mid = lo + hiIdx >> 1;
985
+ if (vxs[mid] < seg.x0 - tol) lo = mid + 1;
986
+ else hiIdx = mid;
591
987
  }
592
- const text = line.text.trim();
593
- if (!text) return;
594
- if (current.length && /\w-$/.test(current[current.length - 1]) && /^[a-z]/.test(text)) {
595
- current[current.length - 1] = current[current.length - 1].slice(0, -1) + text;
596
- } else {
597
- current.push(text);
988
+ for (let k = lo; k < vxs.length && vxs[k] <= seg.x1 + tol; k++) {
989
+ const vs = v[vOrder[k]];
990
+ if (seg.y >= vs.y0 - tol && seg.y <= vs.y1 + tol) union(hi, h.length + vOrder[k]);
598
991
  }
599
992
  });
600
- flush();
601
- return paragraphs;
993
+ const hOrder = h.map((_, i) => i).sort((a, b) => h[a].x0 - h[b].x0 || h[a].x1 - h[b].x1 || h[b].y - h[a].y);
994
+ for (let k = 1; k < hOrder.length; k++) {
995
+ const a = h[hOrder[k - 1]];
996
+ const b = h[hOrder[k]];
997
+ if (Math.abs(a.x0 - b.x0) <= 4 && Math.abs(a.x1 - b.x1) <= 4) union(hOrder[k - 1], hOrder[k]);
998
+ }
999
+ const groups = /* @__PURE__ */ new Map();
1000
+ h.forEach((seg, i) => {
1001
+ const root = find(parent, i);
1002
+ if (!groups.has(root)) groups.set(root, { h: [], v: [] });
1003
+ groups.get(root).h.push(seg);
1004
+ });
1005
+ v.forEach((seg, i) => {
1006
+ const root = find(parent, h.length + i);
1007
+ _optionalChain([groups, 'access', _39 => _39.get, 'call', _40 => _40(root), 'optionalAccess', _41 => _41.v, 'access', _42 => _42.push, 'call', _43 => _43(seg)]);
1008
+ });
1009
+ const byY = [...frags].sort((a, b) => a.y - b.y);
1010
+ const ys = byY.map((f) => f.y);
1011
+ const inRange = (y0, y1) => {
1012
+ let lo = 0;
1013
+ let hi = ys.length;
1014
+ while (lo < hi) {
1015
+ const mid = lo + hi >> 1;
1016
+ if (ys[mid] < y0) lo = mid + 1;
1017
+ else hi = mid;
1018
+ }
1019
+ const out = [];
1020
+ for (let k = lo; k < ys.length && ys[k] <= y1; k++) out.push(byY[k]);
1021
+ return out;
1022
+ };
1023
+ groups.forEach((group) => {
1024
+ const hys = clusterValues(group.h.map((s) => s.y), 1.5).sort((a, b) => b - a);
1025
+ if (hys.length < 2) return;
1026
+ const x0 = Math.min(...group.h.map((s) => s.x0), ...group.v.map((s) => s.x));
1027
+ const x1 = Math.max(...group.h.map((s) => s.x1), ...group.v.map((s) => s.x));
1028
+ const top = Math.max(hys[0], ...group.v.map((s) => s.y1));
1029
+ const bottom = Math.min(hys[hys.length - 1], ...group.v.map((s) => s.y0));
1030
+ const inside = inRange(bottom, top).filter((f) => {
1031
+ if (consumed.has(f)) return false;
1032
+ const cx = (f.x0 + f.x1) / 2;
1033
+ return cx >= x0 - 1 && cx <= x1 + 1;
1034
+ });
1035
+ if (inside.length < 2) return;
1036
+ const vxsGroup = clusterValues(group.v.map((s) => s.x), 1.5);
1037
+ let table = null;
1038
+ if (vxsGroup.length >= 3 || vxsGroup.length >= 2 && hys.length >= 3 && vxsGroup.some((x) => x > x0 + 4 && x < x1 - 4)) {
1039
+ table = gridTable(inside, group, hys, vxsGroup, x0, x1, top, bottom, page, dehyphenate, stats);
1040
+ }
1041
+ if (!table) {
1042
+ const result = alignedTable(inside, page, 2, dehyphenate, stats, hys.length >= 3 ? hys[1] : void 0);
1043
+ if (result && !result.leftover.length && !result.before.length) table = { ...result.table, ruled: true, confidence: 0.85 };
1044
+ }
1045
+ if (!table) return;
1046
+ inside.forEach((f) => consumed.add(f));
1047
+ atoms.push({
1048
+ text: "",
1049
+ x0,
1050
+ x1,
1051
+ y: bottom,
1052
+ top,
1053
+ bottom,
1054
+ size: median(inside.map((f) => f.size)),
1055
+ bold: false,
1056
+ italic: false,
1057
+ words: 0,
1058
+ table
1059
+ });
1060
+ });
1061
+ return { atoms, consumed };
602
1062
  }
603
- function createPdfImportAdapter(pdfjs, options = {}) {
604
- return {
1063
+ function gridTable(inside, group, hys, vxsIn, x0, x1, top, bottom, page, dehyphenate, stats) {
1064
+ const xs = [...vxsIn];
1065
+ if (xs[0] > x0 + 4) xs.unshift(x0);
1066
+ if (xs[xs.length - 1] < x1 - 4) xs.push(x1);
1067
+ const rowsY = [...hys];
1068
+ if (rowsY[0] < top - 4) rowsY.unshift(top);
1069
+ if (rowsY[rowsY.length - 1] > bottom + 4) rowsY.push(bottom);
1070
+ const cols = xs.length - 1;
1071
+ const rows = rowsY.length - 1;
1072
+ if (cols < 2 || rows < 1 || cols > MAX_COLS || rows > MAX_TABLE_ROWS) return null;
1073
+ const grid = Array.from({ length: rows }, () => Array.from({ length: cols }, () => []));
1074
+ const ascRows = [...rowsY].reverse();
1075
+ for (const frag of inside) {
1076
+ const x = frag.x0 + Math.min(2, (frag.x1 - frag.x0) / 2);
1077
+ const c = lowerBound(xs, x + 1e-9) - 1;
1078
+ const yProbe = frag.y + frag.size * 0.3;
1079
+ const r = rows - (lowerBound(ascRows, yProbe + 1e-9) - 1) - 1;
1080
+ if (c >= 0 && c < cols && r >= 0 && r < rows) grid[r][c].push(frag);
1081
+ }
1082
+ const filled = grid.flat().filter((cell) => cell.length).length;
1083
+ if (filled < 2 || rows < 2 && cols < 2) return null;
1084
+ const vAt = xs.map(() => []);
1085
+ for (const seg of group.v) {
1086
+ const k = lowerBound(xs, seg.x - 2);
1087
+ if (k < xs.length && Math.abs(xs[k] - seg.x) <= 2) vAt[k].push(seg);
1088
+ }
1089
+ const hAt = rowsY.map(() => []);
1090
+ for (const seg of group.h) {
1091
+ const k = rows - lowerBound(ascRows, seg.y - 2);
1092
+ if (k >= 0 && k <= rows && Math.abs(rowsY[k] - seg.y) <= 2) hAt[k].push(seg);
1093
+ }
1094
+ const hasV = (k, y) => vAt[k].some((s) => y >= s.y0 - 2 && y <= s.y1 + 2);
1095
+ const hasH = (k, x) => hAt[k].some((s) => x >= s.x0 - 2 && x <= s.x1 + 2);
1096
+ const covered = grid.map((row) => row.map(() => false));
1097
+ const header = headerRowCount(grid);
1098
+ const out = [];
1099
+ for (let r = 0; r < rows; r++) {
1100
+ const midY = (rowsY[r] + rowsY[r + 1]) / 2;
1101
+ const row = [];
1102
+ for (let c = 0; c < cols; c++) {
1103
+ if (covered[r][c]) continue;
1104
+ let colSpan = 1;
1105
+ while (c + colSpan < cols && !hasV(c + colSpan, midY) && !grid[r][c + colSpan].length && !covered[r][c + colSpan]) colSpan++;
1106
+ let rowSpan = 1;
1107
+ const midX = (xs[c] + xs[c + colSpan]) / 2;
1108
+ while (r + rowSpan < rows && !hasH(r + rowSpan, midX) && !covered[r + rowSpan].slice(c, c + colSpan).some(Boolean) && grid[r + rowSpan].slice(c, c + colSpan).every((cell) => !cell.length)) {
1109
+ rowSpan++;
1110
+ }
1111
+ for (let rr = r; rr < r + rowSpan; rr++) for (let cc = c; cc < c + colSpan; cc++) covered[rr][cc] = true;
1112
+ row.push({ text: cellText(grid[r][c], dehyphenate, stats), colSpan, rowSpan, header: r < header });
1113
+ }
1114
+ out.push(row);
1115
+ }
1116
+ return { type: "table", page, confidence: 0.95, ruled: true, rows: out, columns: cols, headerRows: header };
1117
+ }
1118
+ function alignedTable(frags, page, minRows, dehyphenate, stats, headerRuleY) {
1119
+ const sorted = [...frags].sort((a, b) => b.y - a.y || a.x0 - b.x0);
1120
+ let rows = baselineRows(sorted).map((row) => row.sort((a, b) => a.x0 - b.x0));
1121
+ if (rows.length < minRows) return null;
1122
+ const multi = rows.filter((row) => row.length >= 2);
1123
+ if (multi.length < Math.min(minRows, 2)) return null;
1124
+ const spans = multi.flat().map((f) => [f.x0, f.x1]).sort((a, b) => a[0] - b[0]);
1125
+ const merged = [];
1126
+ for (const [a, b] of spans) {
1127
+ const last = merged[merged.length - 1];
1128
+ if (last && a <= last[1] + 1) last[1] = Math.max(last[1], b);
1129
+ else merged.push([a, b]);
1130
+ }
1131
+ if (merged.length < 2 || merged.length > MAX_COLS) return null;
1132
+ const edges = merged.map((m) => m[0]);
1133
+ const cols = merged.length;
1134
+ const colOf = (x) => {
1135
+ let c = 0;
1136
+ while (c + 1 < cols && x >= merged[c + 1][0] - 1) c++;
1137
+ return c;
1138
+ };
1139
+ const spanOf = (f, c) => {
1140
+ let span = 1;
1141
+ while (c + span < cols && f.x1 > merged[c + span][0] + 2) span++;
1142
+ return span;
1143
+ };
1144
+ const rowIsCells = (row) => {
1145
+ if (row.length >= 2) return true;
1146
+ const f = row[0];
1147
+ const c = colOf(f.x0);
1148
+ return spanOf(f, c) >= 2 && f.words <= 8 && Math.abs(f.x0 - edges[c]) <= Math.max(4, f.size * 0.6);
1149
+ };
1150
+ const before = [];
1151
+ const leftover = [];
1152
+ let first = 0;
1153
+ let end = rows.length;
1154
+ while (first < end && !rowIsCells(rows[first])) first++;
1155
+ while (end > first && !rowIsCells(rows[end - 1])) end--;
1156
+ rows.slice(0, first).forEach((row) => before.push(...row));
1157
+ rows.slice(end).forEach((row) => leftover.push(...row));
1158
+ rows = rows.slice(first, end);
1159
+ if (rows.length < minRows || rows.length > MAX_TABLE_ROWS) return null;
1160
+ const grid = [];
1161
+ const spansGrid = [];
1162
+ let prevRow = null;
1163
+ for (const row of rows) {
1164
+ const cells = Array.from({ length: cols }, () => []);
1165
+ const spanRow = Array.from({ length: cols }, () => 1);
1166
+ for (const f of row) {
1167
+ const c = colOf(f.x0);
1168
+ cells[c].push(f);
1169
+ spanRow[c] = Math.max(spanRow[c], row.length === 1 ? spanOf(f, c) : 1);
1170
+ }
1171
+ const continuation = prevRow !== null && grid.length > 0 && cells[0].length === 0 && grid[grid.length - 1][0].length > 0 && cells.every((cell, c) => !cell.length || grid[grid.length - 1][c].length > 0) && minOf(prevRow, (f) => f.bottom) - maxOf(row, (f) => f.top) < row[0].size * 0.5;
1172
+ if (continuation) {
1173
+ cells.forEach((cell, c) => grid[grid.length - 1][c].push(...cell));
1174
+ } else {
1175
+ grid.push(cells);
1176
+ spansGrid.push(spanRow);
1177
+ }
1178
+ prevRow = row;
1179
+ }
1180
+ if (grid.length < minRows) return null;
1181
+ const full = grid.filter((cells) => cells.filter((c) => c.length).length >= 2).length;
1182
+ if (full / grid.length < 0.6) return null;
1183
+ const cellsWithText = grid.flat().filter((c) => c.length);
1184
+ const meanWords = cellsWithText.reduce((sum, cell) => sum + cell.reduce((s, f) => s + f.words, 0), 0) / cellsWithText.length;
1185
+ if (meanWords > 12) return null;
1186
+ let header = headerRowCount(grid);
1187
+ if (headerRuleY !== void 0) {
1188
+ const above = rows.filter((row) => row[0].y > headerRuleY).length;
1189
+ if (above > 0 && above < grid.length) header = Math.max(header, Math.min(above, grid.length - 1));
1190
+ }
1191
+ const out = grid.map((cells, r) => {
1192
+ const row = [];
1193
+ for (let c = 0; c < cols; ) {
1194
+ const span = Math.min(spansGrid[r][c], cols - c);
1195
+ row.push({ text: cellText(cells[c], dehyphenate, stats), colSpan: span, rowSpan: 1, header: r < header });
1196
+ c += span;
1197
+ }
1198
+ return row;
1199
+ });
1200
+ const confidence = Math.min(
1201
+ 0.9,
1202
+ 0.5 + (grid.length >= 5 ? 0.1 : 0) + (cols >= 3 ? 0.1 : 0) + 0.2 * (full / grid.length) - (cols === 2 ? 0.05 : 0)
1203
+ );
1204
+ return {
1205
+ table: { type: "table", page, confidence, ruled: false, rows: out, columns: cols, headerRows: header },
1206
+ leftover,
1207
+ before
1208
+ };
1209
+ }
1210
+ function readingOrder(items, body, detectColumns, depth, columnPages) {
1211
+ const byTop = [...items].sort((a, b) => b.top - a.top || a.x0 - b.x0);
1212
+ if (!detectColumns || items.length < 2 || depth > MAX_DEPTH) return [{ kind: "flow", items: byTop }];
1213
+ const left = minOf(items, (f) => f.x0);
1214
+ const right = maxOf(items, (f) => f.x1);
1215
+ const width = right - left;
1216
+ const isNarrow = (f) => f.x1 - f.x0 < width * 0.55;
1217
+ const narrow = items.filter(isNarrow);
1218
+ const minGutter = Math.max(body * 0.9, 6);
1219
+ const allowed = Math.max(1, Math.floor(narrow.length * 0.08));
1220
+ const events = [];
1221
+ for (const f of narrow) events.push([f.x0, 1], [f.x1, -1]);
1222
+ events.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
1223
+ const candidates = [];
1224
+ let depthNow = 0;
1225
+ let seenContent = false;
1226
+ let start = null;
1227
+ for (const [x, delta] of events) {
1228
+ depthNow += delta;
1229
+ if (depthNow > allowed) {
1230
+ if (start !== null && seenContent && x - start >= minGutter) candidates.push([start, x]);
1231
+ start = null;
1232
+ seenContent = true;
1233
+ } else if (start === null) start = x;
1234
+ }
1235
+ const ends = narrow.map((f) => f.x1).sort((a, b) => a - b);
1236
+ const starts = narrow.map((f) => f.x0).sort((a, b) => a - b);
1237
+ const gutters = [];
1238
+ for (const [a, b] of candidates) {
1239
+ const endBelow = lowerBound(ends, b) - 1;
1240
+ const left2 = endBelow >= 0 && ends[endBelow] > a ? ends[endBelow] : a;
1241
+ const startAbove = lowerBound(starts, a + 1e-9);
1242
+ const right2 = startAbove < starts.length && starts[startAbove] < b ? starts[startAbove] : b;
1243
+ if (right2 - left2 < minGutter) continue;
1244
+ const onLeft = lowerBound(ends, left2 + 1e-6);
1245
+ const onRight = starts.length - lowerBound(starts, right2 - 1e-6);
1246
+ const strays = narrow.length - onLeft - onRight;
1247
+ if (strays < Math.min(onLeft, onRight)) gutters.push([left2, right2]);
1248
+ }
1249
+ if (!gutters.length) return [{ kind: "flow", items: byTop }];
1250
+ const gutterEnds = gutters.map((g) => g[1]);
1251
+ const crosses = (f) => {
1252
+ const k = lowerBound(gutterEnds, f.x0 + 1 + 1e-9);
1253
+ return k < gutters.length && f.x1 > gutters[k][0] + 1 && f.x0 < gutters[k][1] - 1;
1254
+ };
1255
+ const columnOf = (f) => lowerBound(gutterEnds, f.x0 + 1 + 1e-9);
1256
+ const bands = [];
1257
+ for (const f of byTop) {
1258
+ const spanning = crosses(f);
1259
+ const band = bands[bands.length - 1];
1260
+ if (band && band.spanning === spanning) band.items.push(f);
1261
+ else bands.push({ spanning, items: [f] });
1262
+ }
1263
+ const segments = [];
1264
+ let sealed = false;
1265
+ const pushFlow = (list) => {
1266
+ if (!list.length) return;
1267
+ const last = segments[segments.length - 1];
1268
+ if (last && last.kind === "flow" && !sealed) last.items.push(...list);
1269
+ else segments.push({ kind: "flow", items: list });
1270
+ sealed = false;
1271
+ };
1272
+ let multiColumn = false;
1273
+ const isShortSpan = (f) => !f.table && isNarrow(f) && f.words <= 8;
1274
+ for (const band of bands) {
1275
+ const last = segments[segments.length - 1];
1276
+ if (band.spanning) {
1277
+ const lead = band.items[0];
1278
+ if (last && last.kind === "grid" && isShortSpan(lead) && minOf(last.items, (f) => f.bottom) - lead.top <= lead.size * 2) {
1279
+ last.items.push(lead);
1280
+ pushFlow(band.items.slice(1));
1281
+ } else pushFlow(band.items);
1282
+ continue;
1283
+ }
1284
+ const columns = Array.from({ length: gutters.length + 1 }, () => []);
1285
+ band.items.forEach((f) => columns[columnOf(f)].push(f));
1286
+ const used = columns.filter((c) => c.length);
1287
+ if (used.length < 2) {
1288
+ pushFlow(band.items);
1289
+ continue;
1290
+ }
1291
+ const prose = used.every((col) => {
1292
+ const text = col.filter((f) => !f.table);
1293
+ if (text.length < 2) return text.length === 0;
1294
+ const colLeft = minOf(text, (f) => f.x0);
1295
+ const colRight = maxOf(text, (f) => f.x1);
1296
+ const fill = text.reduce((sum, f) => sum + (f.x1 - f.x0), 0) / text.length / Math.max(1, colRight - colLeft);
1297
+ const words = text.reduce((sum, f) => sum + f.words, 0) / text.length;
1298
+ return fill >= 0.55 && words >= 3;
1299
+ });
1300
+ const tops = used.map((col) => [minOf(col, (f) => f.bottom), maxOf(col, (f) => f.top)]);
1301
+ const overlapping = tops.every(([b, t], i) => i === 0 || Math.min(t, tops[0][1]) - Math.max(b, tops[0][0]) > 0);
1302
+ if (prose && overlapping) {
1303
+ multiColumn = true;
1304
+ for (const col of used) segments.push(...readingOrder(col, body, detectColumns, depth + 1, columnPages));
1305
+ sealed = true;
1306
+ continue;
1307
+ }
1308
+ const pulled = [];
1309
+ if (last && last.kind === "flow" && !sealed) {
1310
+ const tail = last.items[last.items.length - 1];
1311
+ if (isShortSpan(tail) && tail.bottom - maxOf(band.items, (f) => f.top) <= tail.size * 2) {
1312
+ pulled.push(last.items.pop());
1313
+ if (!last.items.length) segments.pop();
1314
+ }
1315
+ }
1316
+ const prevSegment = segments[segments.length - 1];
1317
+ if (prevSegment && prevSegment.kind === "grid" && (pulled.length || prevSegment === last)) {
1318
+ prevSegment.items.push(...pulled, ...band.items);
1319
+ } else segments.push({ kind: "grid", items: [...pulled, ...band.items] });
1320
+ sealed = false;
1321
+ }
1322
+ if (multiColumn && depth === 0) columnPages.count++;
1323
+ return segments;
1324
+ }
1325
+ function flowLines(items, page) {
1326
+ const lines = [];
1327
+ const sorted = [...items].sort((a, b) => b.top - a.top || a.x0 - b.x0);
1328
+ for (const f of sorted) {
1329
+ if (f.table) {
1330
+ lines.push({ text: "", x0: f.x0, x1: f.x1, y: f.y, top: f.top, size: f.size, bold: false, page, table: f.table });
1331
+ continue;
1332
+ }
1333
+ const last = lines[lines.length - 1];
1334
+ if (last && !last.table && Math.abs(last.y - f.y) <= Math.min(last.size, f.size) * 0.5) {
1335
+ last.text = `${last.text} ${f.text}`;
1336
+ last.x0 = Math.min(last.x0, f.x0);
1337
+ last.x1 = Math.max(last.x1, f.x1);
1338
+ } else {
1339
+ lines.push({ text: f.text, x0: f.x0, x1: f.x1, y: f.y, top: f.top, size: f.size, bold: f.bold, page });
1340
+ }
1341
+ }
1342
+ return lines;
1343
+ }
1344
+ function joinLines(prev, next, dehyphenate, stats) {
1345
+ if (prev.endsWith("\xAD")) {
1346
+ stats.dehyphenated++;
1347
+ return prev.slice(0, -1) + next;
1348
+ }
1349
+ if (dehyphenate && /[A-Za-zÀ-ɏ]-$/.test(prev) && /^[a-zß-ɏ]/.test(next)) {
1350
+ stats.dehyphenated++;
1351
+ return prev.slice(0, -1) + next;
1352
+ }
1353
+ return `${prev} ${next}`;
1354
+ }
1355
+ function listMarker(text) {
1356
+ const glyph = BULLET_GLYPH_RE.exec(text);
1357
+ if (glyph) return { kind: "glyph", rest: text.slice(glyph[0].length), ordered: false };
1358
+ const dash = BULLET_DASH_RE.exec(text);
1359
+ if (dash) return { kind: "dash", rest: text.slice(dash[0].length), ordered: false };
1360
+ const ordered = ORDERED_RE.exec(text);
1361
+ if (ordered) {
1362
+ const token = _nullishCoalesce(ordered[1], () => ( ordered[2]));
1363
+ const kind = /^\d+$/.test(token) ? "num" : /^[ivxlc]{2,}$/i.test(token) || /^i$/i.test(token) ? "roman" : "alpha";
1364
+ return { kind, rest: text.slice(ordered[0].length), ordered: true, value: kind === "num" ? Number(token) : void 0 };
1365
+ }
1366
+ return null;
1367
+ }
1368
+ function headingStyle(line, next, segRight, ctx) {
1369
+ if (!ctx.options.detectHeadings || line.table) return null;
1370
+ const text = line.text;
1371
+ const words = countWords(text);
1372
+ if (text.length > 200 || words > 25 || !/\p{L}/u.test(text)) return null;
1373
+ if (words > 15 && SENTENCE_END_RE.test(text)) return null;
1374
+ const ratio = line.size / ctx.body;
1375
+ if (ratio >= 1.15) {
1376
+ const confidence = Math.min(0.95, 0.6 + (ratio - 1.15) * 0.8 + (line.bold ? 0.1 : 0));
1377
+ return { key: Math.round(line.size * 2) / 2 + (line.bold ? 0.25 : 0), confidence, boldOnly: false };
1378
+ }
1379
+ const runsOn = !!next && !next.table && next.bold && Math.abs(next.size - line.size) < 0.5 && line.x1 >= segRight - 2 * line.size;
1380
+ if (line.bold && !ctx.boldBody && !runsOn && ratio >= 0.95 && text.length <= 100 && !/[.,;]$/.test(text)) {
1381
+ return { key: Math.round(line.size * 2) / 2 + 0.25, confidence: 0.6, boldOnly: true };
1382
+ }
1383
+ return null;
1384
+ }
1385
+ function buildBlocks(lines, ctx) {
1386
+ const textLines = lines.filter((l) => !l.table);
1387
+ const segLeft = textLines.length ? minOf(textLines, (l) => l.x0) : 0;
1388
+ const segRight = textLines.length ? maxOf(textLines, (l) => l.x1) : 0;
1389
+ const kindCounts = /* @__PURE__ */ new Map();
1390
+ const markers = lines.map((line) => {
1391
+ if (!ctx.options.detectLists || line.table) return null;
1392
+ const marker = listMarker(line.text);
1393
+ if (marker) kindCounts.set(marker.kind, (_nullishCoalesce(kindCounts.get(marker.kind), () => ( 0))) + 1);
1394
+ return marker;
1395
+ });
1396
+ let list = null;
1397
+ let listStack = [];
1398
+ let lastItemLine = null;
1399
+ let para = null;
1400
+ let heading = null;
1401
+ const closeAll = () => {
1402
+ if (para) {
1403
+ const last = para.lines[para.lines.length - 1];
1404
+ const ended = SENTENCE_END_RE.test(last.text) || last.x1 < segRight - 3 * last.size;
1405
+ ctx.open = ended ? null : { block: para.block, size: last.size, lastText: para.block.text };
1406
+ } else ctx.open = null;
1407
+ para = null;
1408
+ list = null;
1409
+ listStack = [];
1410
+ lastItemLine = null;
1411
+ heading = null;
1412
+ };
1413
+ lines.forEach((line, index) => {
1414
+ const prev = index > 0 ? lines[index - 1] : null;
1415
+ if (line.table) {
1416
+ closeAll();
1417
+ ctx.open = null;
1418
+ ctx.blocks.push(line.table);
1419
+ return;
1420
+ }
1421
+ const style = headingStyle(line, lines[index + 1], segRight, ctx);
1422
+ if (style) {
1423
+ if (heading && heading.key === style.key && heading.lines < 3 && prev === heading.line && prev.y - line.y <= line.size * 1.6) {
1424
+ heading.block.text = joinLines(heading.block.text, line.text, ctx.options.dehyphenate, ctx.stats);
1425
+ heading.line = line;
1426
+ heading.lines++;
1427
+ return;
1428
+ }
1429
+ closeAll();
1430
+ ctx.open = null;
1431
+ const block2 = { type: "heading", level: 1, text: line.text, page: line.page, confidence: style.confidence };
1432
+ ctx.blocks.push(block2);
1433
+ ctx.headings.push({ block: block2, key: style.key, boldOnly: style.boldOnly });
1434
+ heading = { block: block2, line, key: style.key, lines: 1 };
1435
+ return;
1436
+ }
1437
+ heading = null;
1438
+ const marker = markers[index];
1439
+ const validMarker = marker && (marker.kind === "glyph" || (_nullishCoalesce(kindCounts.get(marker.kind), () => ( 0))) >= 2) && marker.rest.trim() !== "";
1440
+ if (validMarker) {
1441
+ const gapOk = lastItemLine && lastItemLine.y - line.y <= Math.max(ctx.pitch(line.size) * 2.2, line.size * 2.4);
1442
+ if (!list || !gapOk) {
1443
+ closeAll();
1444
+ ctx.open = null;
1445
+ list = { type: "list", page: line.page, confidence: 0.6, items: [] };
1446
+ ctx.blocks.push(list);
1447
+ listStack = [line.x0];
1448
+ }
1449
+ const tol = line.size * 0.5;
1450
+ while (listStack.length > 1 && line.x0 < listStack[listStack.length - 1] - tol) listStack.pop();
1451
+ if (line.x0 > listStack[listStack.length - 1] + tol) listStack.push(line.x0);
1452
+ else listStack[listStack.length - 1] = Math.min(listStack[listStack.length - 1], line.x0);
1453
+ const prevDepth = list.items.length ? list.items[list.items.length - 1].depth : -1;
1454
+ const depth = Math.min(listStack.length - 1, prevDepth + 1);
1455
+ const item = {
1456
+ text: collapse(marker.rest),
1457
+ depth,
1458
+ ordered: marker.ordered
1459
+ };
1460
+ if (marker.value !== void 0) item.start = marker.value;
1461
+ list.items.push(item);
1462
+ list.confidence = Math.min(0.95, (marker.kind === "glyph" ? 0.75 : 0.6) + 0.05 * list.items.length);
1463
+ lastItemLine = line;
1464
+ para = null;
1465
+ return;
1466
+ }
1467
+ if (list && lastItemLine && prev) {
1468
+ const markerX = listStack[listStack.length - 1];
1469
+ const continues = line.x0 > markerX + line.size * 0.3 && line.x0 <= markerX + line.size * 5 && prev.y - line.y <= ctx.pitch(line.size) * ctx.options.paragraphGap;
1470
+ if (continues) {
1471
+ const item = list.items[list.items.length - 1];
1472
+ item.text = joinLines(item.text, line.text, ctx.options.dehyphenate, ctx.stats);
1473
+ lastItemLine = line;
1474
+ return;
1475
+ }
1476
+ closeAll();
1477
+ }
1478
+ if (!para && ctx.open && index === 0 && /^[a-z]/.test(line.text) && Math.abs(ctx.open.size - line.size) <= line.size * 0.12) {
1479
+ ctx.open.block.text = joinLines(ctx.open.block.text, line.text, ctx.options.dehyphenate, ctx.stats);
1480
+ para = { block: ctx.open.block, lines: [line] };
1481
+ ctx.open = null;
1482
+ return;
1483
+ }
1484
+ if (para && prev && !prev.table) {
1485
+ const last = para.lines[para.lines.length - 1];
1486
+ const gap = last.y - line.y;
1487
+ const sameSize = Math.abs(last.size - line.size) <= last.size * 0.12;
1488
+ const closeEnough = gap > 0 && gap <= ctx.pitch(line.size) * ctx.options.paragraphGap;
1489
+ const indentEm = line.size * 0.8;
1490
+ const indented = line.x0 - segLeft >= indentEm && last.x0 - segLeft < indentEm && line.x0 - segLeft < line.size * 8;
1491
+ const shortEnded = last.x1 < segRight - 3 * last.size && SENTENCE_END_RE.test(last.text);
1492
+ if (sameSize && closeEnough && !indented && !shortEnded) {
1493
+ para.block.text = joinLines(para.block.text, line.text, ctx.options.dehyphenate, ctx.stats);
1494
+ para.lines.push(line);
1495
+ return;
1496
+ }
1497
+ }
1498
+ closeAll();
1499
+ ctx.open = null;
1500
+ const block = { type: "paragraph", text: line.text, page: line.page };
1501
+ ctx.blocks.push(block);
1502
+ para = { block, lines: [line] };
1503
+ });
1504
+ closeAll();
1505
+ }
1506
+ function assignHeadingLevels(headings) {
1507
+ const keys = Array.from(new Set(headings.map((h) => h.key))).sort((a, b) => b - a);
1508
+ const levelOf = new Map(keys.map((key, i) => [key, Math.min(6, i + 1)]));
1509
+ headings.forEach((h) => {
1510
+ h.block.level = levelOf.get(h.key);
1511
+ });
1512
+ }
1513
+ var DEFAULTS = {
1514
+ paragraphGap: 1.4,
1515
+ removeHeadersAndFooters: true,
1516
+ detectColumns: true,
1517
+ detectHeadings: true,
1518
+ detectLists: true,
1519
+ detectTables: true,
1520
+ dehyphenate: true
1521
+ };
1522
+ function analyzePdfLayout(pages, options = {}) {
1523
+ const opts = { ...DEFAULTS };
1524
+ Object.keys(options).forEach((key) => {
1525
+ if (options[key] !== void 0) opts[key] = options[key];
1526
+ });
1527
+ const fragPages = pages.map((page) => buildFragments(_nullishCoalesce(page.runs, () => ( []))));
1528
+ const removed = opts.removeHeadersAndFooters ? removeHeadersAndFooters(fragPages) : { headers: 0, footers: 0, pageNumbers: 0 };
1529
+ const bySize = /* @__PURE__ */ new Map();
1530
+ let boldChars = 0;
1531
+ let totalChars = 0;
1532
+ fragPages.flat().forEach((f) => {
1533
+ const key = Math.round(f.size * 2) / 2;
1534
+ bySize.set(key, (_nullishCoalesce(bySize.get(key), () => ( 0))) + f.text.length);
1535
+ });
1536
+ let body = 10;
1537
+ let bodyChars = -1;
1538
+ bySize.forEach((chars, size) => {
1539
+ if (chars > bodyChars) {
1540
+ body = size;
1541
+ bodyChars = chars;
1542
+ }
1543
+ });
1544
+ fragPages.flat().forEach((f) => {
1545
+ if (Math.abs(f.size - body) <= body * 0.05) {
1546
+ totalChars += f.text.length;
1547
+ if (f.bold) boldChars += f.text.length;
1548
+ }
1549
+ });
1550
+ const pitches = /* @__PURE__ */ new Map();
1551
+ fragPages.forEach((frags) => {
1552
+ const rows = baselineRows([...frags].sort((a, b) => b.y - a.y || a.x0 - b.x0));
1553
+ for (let k = 1; k < rows.length; k++) {
1554
+ const a = rows[k - 1][0];
1555
+ const b = rows[k][0];
1556
+ if (Math.abs(a.size - b.size) > 0.5) continue;
1557
+ const d = a.y - b.y;
1558
+ if (d > 0 && d < a.size * 3) {
1559
+ const key = Math.round(b.size * 2) / 2;
1560
+ if (!pitches.has(key)) pitches.set(key, []);
1561
+ pitches.get(key).push(d);
1562
+ }
1563
+ }
1564
+ });
1565
+ const pitchMedians = /* @__PURE__ */ new Map();
1566
+ pitches.forEach((values, key) => pitchMedians.set(key, median(values)));
1567
+ const stats = { dehyphenated: 0 };
1568
+ const ctx = {
1569
+ body,
1570
+ boldBody: totalChars > 0 && boldChars / totalChars > 0.5,
1571
+ pitch: (size) => {
1572
+ const known = pitchMedians.get(Math.round(size * 2) / 2);
1573
+ return known && known >= size * 0.9 ? known : size * 1.2;
1574
+ },
1575
+ options: opts,
1576
+ stats,
1577
+ blocks: [],
1578
+ headings: [],
1579
+ open: null
1580
+ };
1581
+ const columnPages = { count: 0 };
1582
+ const items = [];
1583
+ fragPages.forEach((frags, pageIndex) => {
1584
+ const page = pageIndex + 1;
1585
+ let flowFrags = frags;
1586
+ const atoms = [];
1587
+ if (opts.detectTables && _optionalChain([pages, 'access', _44 => _44[pageIndex], 'access', _45 => _45.rules, 'optionalAccess', _46 => _46.length])) {
1588
+ const ruled = ruledTables(frags, pages[pageIndex].rules, page, opts.dehyphenate, stats);
1589
+ flowFrags = frags.filter((f) => !ruled.consumed.has(f));
1590
+ atoms.push(...ruled.atoms);
1591
+ }
1592
+ const before = columnPages.count;
1593
+ const segments = readingOrder([...flowFrags, ...atoms], body, opts.detectColumns, 0, columnPages);
1594
+ if (columnPages.count > before) items.push({ type: "columns", page, confidence: 0.8, detail: "multi-column layout" });
1595
+ const units = [];
1596
+ let carry = [];
1597
+ for (const segment of segments) {
1598
+ if (segment.kind === "grid" && opts.detectTables) {
1599
+ const result = alignedTable(segment.items.filter((f) => !f.table), page, 3, opts.dehyphenate, stats);
1600
+ if (result) {
1601
+ const last = units[units.length - 1];
1602
+ if (result.before.length && last && last.kind === "flow") last.items.push(...carry, ...result.before);
1603
+ else if (result.before.length || carry.length) units.push({ kind: "flow", items: [...carry, ...result.before] });
1604
+ units.push({ kind: "table", table: result.table });
1605
+ carry = [...segment.items.filter((f) => f.table), ...result.leftover];
1606
+ continue;
1607
+ }
1608
+ }
1609
+ units.push({ kind: "flow", items: [...carry, ...segment.items] });
1610
+ carry = [];
1611
+ }
1612
+ if (carry.length) units.push({ kind: "flow", items: carry });
1613
+ for (const unit of units) {
1614
+ if (unit.kind === "table") {
1615
+ ctx.open = null;
1616
+ ctx.blocks.push(unit.table);
1617
+ } else buildBlocks(flowLines(unit.items, page), ctx);
1618
+ }
1619
+ });
1620
+ assignHeadingLevels(ctx.headings);
1621
+ const counts = { headings: 0, lists: 0, tables: 0, paragraphs: 0 };
1622
+ const confidences = [];
1623
+ ctx.blocks.forEach((block) => {
1624
+ if (block.type === "heading") {
1625
+ counts.headings++;
1626
+ confidences.push(block.confidence);
1627
+ items.push({ type: "heading", page: block.page, confidence: block.confidence, detail: `H${block.level} "${truncate(block.text)}"` });
1628
+ } else if (block.type === "list") {
1629
+ counts.lists++;
1630
+ confidences.push(block.confidence);
1631
+ const depth = maxOf(block.items, (i) => i.depth) + 1;
1632
+ items.push({
1633
+ type: "list",
1634
+ page: block.page,
1635
+ confidence: block.confidence,
1636
+ detail: `${_optionalChain([block, 'access', _47 => _47.items, 'access', _48 => _48[0], 'optionalAccess', _49 => _49.ordered]) ? "numbered" : "bulleted"} list, ${block.items.length} items${depth > 1 ? `, ${depth} levels` : ""}`
1637
+ });
1638
+ } else if (block.type === "table") {
1639
+ counts.tables++;
1640
+ confidences.push(block.confidence);
1641
+ items.push({
1642
+ type: "table",
1643
+ page: block.page,
1644
+ confidence: block.confidence,
1645
+ detail: `${block.rows.length}\xD7${block.columns} table${block.ruled ? " (ruled)" : ""}${block.headerRows ? ", header row" : ""}`
1646
+ });
1647
+ } else counts.paragraphs++;
1648
+ });
1649
+ items.sort((a, b) => a.page - b.page);
1650
+ return {
1651
+ blocks: ctx.blocks,
1652
+ report: {
1653
+ mode: "structured",
1654
+ pages: pages.length,
1655
+ counts,
1656
+ multiColumnPages: columnPages.count,
1657
+ confidence: confidences.length ? Math.round(confidences.reduce((a, b) => a + b, 0) / confidences.length * 100) / 100 : 1,
1658
+ items,
1659
+ removed,
1660
+ dehyphenated: stats.dehyphenated
1661
+ }
1662
+ };
1663
+ }
1664
+ var truncate = (text) => text.length > 60 ? `${text.slice(0, 57)}\u2026` : text;
1665
+ function listHtml(items) {
1666
+ let html = "";
1667
+ const stack = [];
1668
+ for (const item of items) {
1669
+ const level = item.depth + 1;
1670
+ while (stack.length > level) html += `</li></${stack.pop()}>`;
1671
+ const tag = item.ordered ? "ol" : "ul";
1672
+ if (stack.length === level) {
1673
+ if (stack[stack.length - 1] !== tag) {
1674
+ html += `</li></${stack.pop()}>`;
1675
+ } else html += "</li>";
1676
+ }
1677
+ while (stack.length < level) {
1678
+ const start = item.ordered && item.start !== void 0 && item.start !== 1 ? ` start="${item.start}"` : "";
1679
+ html += `<${tag}${start}>`;
1680
+ stack.push(tag);
1681
+ }
1682
+ html += `<li><p>${_chunk7WISYZFOcjs.escapeHtml.call(void 0, item.text)}</p>`;
1683
+ }
1684
+ while (stack.length) html += `</li></${stack.pop()}>`;
1685
+ return html;
1686
+ }
1687
+ function pdfLayoutBlocksToHtml(blocks) {
1688
+ let html = "";
1689
+ for (const block of blocks) {
1690
+ if (block.type === "heading") html += `<h${block.level}>${_chunk7WISYZFOcjs.escapeHtml.call(void 0, block.text)}</h${block.level}>`;
1691
+ else if (block.type === "paragraph") html += `<p>${_chunk7WISYZFOcjs.escapeHtml.call(void 0, block.text)}</p>`;
1692
+ else if (block.type === "list") html += listHtml(block.items);
1693
+ else {
1694
+ html += "<table><tbody>";
1695
+ for (const row of block.rows) {
1696
+ html += "<tr>";
1697
+ for (const cell of row) {
1698
+ const tag = cell.header ? "th" : "td";
1699
+ const attrs = `${cell.colSpan > 1 ? ` colspan="${cell.colSpan}"` : ""}${cell.rowSpan > 1 ? ` rowspan="${cell.rowSpan}"` : ""}`;
1700
+ html += `<${tag}${attrs}><p>${_chunk7WISYZFOcjs.escapeHtml.call(void 0, cell.text)}</p></${tag}>`;
1701
+ }
1702
+ html += "</tr>";
1703
+ }
1704
+ html += "</tbody></table>";
1705
+ }
1706
+ }
1707
+ return html || "<p></p>";
1708
+ }
1709
+
1710
+ // src/import/pdf.ts
1711
+ var isTextItem = (item) => typeof item.str === "string";
1712
+ function median2(values) {
1713
+ if (!values.length) return 0;
1714
+ const sorted = [...values].sort((a, b) => a - b);
1715
+ const mid = sorted.length >> 1;
1716
+ return sorted.length % 2 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;
1717
+ }
1718
+ function groupLines(items) {
1719
+ const lines = [];
1720
+ let current = null;
1721
+ let breakNext = false;
1722
+ for (const item of items) {
1723
+ if (!isTextItem(item)) continue;
1724
+ const x = _nullishCoalesce(_optionalChain([item, 'access', _50 => _50.transform, 'optionalAccess', _51 => _51[4]]), () => ( 0));
1725
+ const y = _nullishCoalesce(_optionalChain([item, 'access', _52 => _52.transform, 'optionalAccess', _53 => _53[5]]), () => ( (_nullishCoalesce(_optionalChain([current, 'optionalAccess', _54 => _54.y]), () => ( 0)))));
1726
+ const height = item.height || Math.abs(_nullishCoalesce(_optionalChain([item, 'access', _55 => _55.transform, 'optionalAccess', _56 => _56[3]]), () => ( 0))) || _optionalChain([current, 'optionalAccess', _57 => _57.height]) || 10;
1727
+ const tolerance = Math.max(1, height * 0.5);
1728
+ if (!item.str) {
1729
+ if (item.hasEOL) {
1730
+ if (breakNext && current) current.blankAfter = true;
1731
+ breakNext = true;
1732
+ }
1733
+ continue;
1734
+ }
1735
+ if (!current || breakNext || Math.abs(y - current.y) > tolerance) {
1736
+ current = { text: "", y, height, blankAfter: false };
1737
+ lines.push(current);
1738
+ } else if (current.endX !== void 0 && x - current.endX > height * 0.15) {
1739
+ if (!/\s$/.test(current.text) && !/^\s/.test(item.str)) current.text += " ";
1740
+ }
1741
+ current.text += item.str;
1742
+ current.height = Math.max(current.height, height);
1743
+ current.endX = item.width !== void 0 ? x + item.width : void 0;
1744
+ breakNext = !!item.hasEOL;
1745
+ }
1746
+ return lines;
1747
+ }
1748
+ function pdfTextItemsToParagraphs(items, options = {}) {
1749
+ const lines = groupLines(items).filter((line) => line.text.trim() || line.blankAfter);
1750
+ const gaps = [];
1751
+ for (let i = 1; i < lines.length; i++) {
1752
+ const gap = lines[i - 1].y - lines[i].y;
1753
+ if (gap > 0) gaps.push(gap);
1754
+ }
1755
+ const typical = median2(gaps);
1756
+ const factor = _nullishCoalesce(options.paragraphGap, () => ( 1.4));
1757
+ const paragraphs = [];
1758
+ let current = [];
1759
+ const flush = () => {
1760
+ const text = current.join(" ").replace(/\s+/g, " ").trim();
1761
+ if (text) paragraphs.push(text);
1762
+ current = [];
1763
+ };
1764
+ lines.forEach((line, i) => {
1765
+ if (i > 0) {
1766
+ const prev = lines[i - 1];
1767
+ const gap = prev.y - line.y;
1768
+ const bigGap = typical > 0 ? gap > typical * factor : gap > prev.height * 1.8;
1769
+ if (prev.blankAfter || bigGap || gap < -prev.height * 0.5) flush();
1770
+ }
1771
+ const text = line.text.trim();
1772
+ if (!text) return;
1773
+ if (current.length && /\w-$/.test(current[current.length - 1]) && /^[a-z]/.test(text)) {
1774
+ current[current.length - 1] = current[current.length - 1].slice(0, -1) + text;
1775
+ } else {
1776
+ current.push(text);
1777
+ }
1778
+ });
1779
+ flush();
1780
+ return paragraphs;
1781
+ }
1782
+ function pdfTextItemsToRuns(items, font) {
1783
+ const runs = [];
1784
+ const cache = /* @__PURE__ */ new Map();
1785
+ for (const item of items) {
1786
+ if (!isTextItem(item) || !item.str.trim()) continue;
1787
+ const t = _nullishCoalesce(item.transform, () => ( []));
1788
+ const fontSize = Math.hypot(_nullishCoalesce(t[2], () => ( 0)), _nullishCoalesce(t[3], () => ( 0))) || item.height || 10;
1789
+ let info;
1790
+ if (item.fontName && font) {
1791
+ if (!cache.has(item.fontName)) cache.set(item.fontName, font(item.fontName));
1792
+ info = cache.get(item.fontName);
1793
+ }
1794
+ runs.push({
1795
+ text: item.str,
1796
+ x: _nullishCoalesce(t[4], () => ( 0)),
1797
+ y: _nullishCoalesce(t[5], () => ( 0)),
1798
+ width: item.width,
1799
+ fontSize,
1800
+ fontName: _nullishCoalesce(_optionalChain([info, 'optionalAccess', _58 => _58.name]), () => ( item.fontName)),
1801
+ bold: _optionalChain([info, 'optionalAccess', _59 => _59.bold]),
1802
+ italic: _optionalChain([info, 'optionalAccess', _60 => _60.italic])
1803
+ });
1804
+ }
1805
+ return runs;
1806
+ }
1807
+ var DEFAULT_OPS = {
1808
+ save: 10,
1809
+ restore: 11,
1810
+ transform: 12,
1811
+ moveTo: 13,
1812
+ lineTo: 14,
1813
+ curveTo: 15,
1814
+ curveTo2: 16,
1815
+ curveTo3: 17,
1816
+ closePath: 18,
1817
+ rectangle: 19,
1818
+ stroke: 20,
1819
+ closeStroke: 21,
1820
+ fill: 22,
1821
+ eoFill: 23,
1822
+ fillStroke: 24,
1823
+ eoFillStroke: 25,
1824
+ closeFillStroke: 26,
1825
+ closeEOFillStroke: 27,
1826
+ endPath: 28,
1827
+ constructPath: 91
1828
+ };
1829
+ var DRAW_OPS = { moveTo: 0, lineTo: 1, curveTo: 2, quadraticCurveTo: 3, closePath: 4 };
1830
+ var MAX_PAGE_RULES = 5e3;
1831
+ var IDENTITY = [1, 0, 0, 1, 0, 0];
1832
+ var multiply = (m, c) => [
1833
+ m[0] * c[0] + m[1] * c[2],
1834
+ m[0] * c[1] + m[1] * c[3],
1835
+ m[2] * c[0] + m[3] * c[2],
1836
+ m[2] * c[1] + m[3] * c[3],
1837
+ m[4] * c[0] + m[5] * c[2] + c[4],
1838
+ m[4] * c[1] + m[5] * c[3] + c[5]
1839
+ ];
1840
+ var apply = (m, x, y) => [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
1841
+ function pdfOperatorListToRules(list, opsTable) {
1842
+ const OPS = { ...DEFAULT_OPS, ..._nullishCoalesce(opsTable, () => ( {})) };
1843
+ const stroking = /* @__PURE__ */ new Set([OPS.stroke, OPS.closeStroke, OPS.fillStroke, OPS.eoFillStroke, OPS.closeFillStroke, OPS.closeEOFillStroke]);
1844
+ const filling = /* @__PURE__ */ new Set([OPS.fill, OPS.eoFill, OPS.fillStroke, OPS.eoFillStroke, OPS.closeFillStroke, OPS.closeEOFillStroke]);
1845
+ const rules = [];
1846
+ const stack = [];
1847
+ let ctm = IDENTITY;
1848
+ let lines = [];
1849
+ let rects = [];
1850
+ const num = (value) => typeof value === "number" && Number.isFinite(value) ? value : NaN;
1851
+ const addLine = (x1, y1, x2, y2) => {
1852
+ const [a, b] = apply(ctm, x1, y1);
1853
+ const [c, d] = apply(ctm, x2, y2);
1854
+ lines.push([a, b, c, d]);
1855
+ };
1856
+ const addRect = (x, y, w, h) => {
1857
+ const corners = [apply(ctm, x, y), apply(ctm, x + w, y), apply(ctm, x + w, y + h), apply(ctm, x, y + h)];
1858
+ const xs = corners.map((p) => p[0]);
1859
+ const ys = corners.map((p) => p[1]);
1860
+ rects.push([Math.min(...xs), Math.min(...ys), Math.max(...xs), Math.max(...ys)]);
1861
+ };
1862
+ const paint = (op) => {
1863
+ const stroke = stroking.has(op);
1864
+ const fill = filling.has(op);
1865
+ if (stroke) {
1866
+ for (const [x1, y1, x2, y2] of lines) rules.push({ x1, y1, x2, y2 });
1867
+ for (const [x0, y0, x1, y1] of rects) {
1868
+ rules.push({ x1: x0, y1: y0, x2: x1, y2: y0 }, { x1: x0, y1, x2: x1, y2: y1 });
1869
+ rules.push({ x1: x0, y1: y0, x2: x0, y2: y1 }, { x1, y1: y0, x2: x1, y2: y1 });
1870
+ }
1871
+ } else if (fill) {
1872
+ for (const [x0, y0, x1, y1] of rects) {
1873
+ if (y1 - y0 <= 2 && x1 - x0 > 2) rules.push({ x1: x0, y1: (y0 + y1) / 2, x2: x1, y2: (y0 + y1) / 2 });
1874
+ else if (x1 - x0 <= 2 && y1 - y0 > 2) rules.push({ x1: (x0 + x1) / 2, y1: y0, x2: (x0 + x1) / 2, y2: y1 });
1875
+ }
1876
+ }
1877
+ lines = [];
1878
+ rects = [];
1879
+ };
1880
+ const readPath = (subOps, subArgs) => {
1881
+ let k = 0;
1882
+ let cx = 0;
1883
+ let cy = 0;
1884
+ let sx = 0;
1885
+ let sy = 0;
1886
+ for (let i = 0; i < subOps.length; i++) {
1887
+ const op = subOps[i];
1888
+ if (op === OPS.moveTo) {
1889
+ cx = sx = num(subArgs[k++]);
1890
+ cy = sy = num(subArgs[k++]);
1891
+ } else if (op === OPS.lineTo) {
1892
+ const x = num(subArgs[k++]);
1893
+ const y = num(subArgs[k++]);
1894
+ addLine(cx, cy, x, y);
1895
+ cx = x;
1896
+ cy = y;
1897
+ } else if (op === OPS.rectangle) {
1898
+ addRect(num(subArgs[k++]), num(subArgs[k++]), num(subArgs[k++]), num(subArgs[k++]));
1899
+ } else if (op === OPS.curveTo) {
1900
+ k += 4;
1901
+ cx = num(subArgs[k++]);
1902
+ cy = num(subArgs[k++]);
1903
+ } else if (op === OPS.curveTo2 || op === OPS.curveTo3) {
1904
+ k += 2;
1905
+ cx = num(subArgs[k++]);
1906
+ cy = num(subArgs[k++]);
1907
+ } else if (op === OPS.closePath) {
1908
+ if (cx !== sx || cy !== sy) addLine(cx, cy, sx, sy);
1909
+ cx = sx;
1910
+ cy = sy;
1911
+ }
1912
+ }
1913
+ };
1914
+ const readDrawBuffer = (data) => {
1915
+ let cx = 0;
1916
+ let cy = 0;
1917
+ let sx = 0;
1918
+ let sy = 0;
1919
+ for (let k = 0; k < data.length; ) {
1920
+ const code = data[k++];
1921
+ if (code === DRAW_OPS.moveTo) {
1922
+ cx = sx = data[k++];
1923
+ cy = sy = data[k++];
1924
+ } else if (code === DRAW_OPS.lineTo) {
1925
+ const x = data[k++];
1926
+ const y = data[k++];
1927
+ addLine(cx, cy, x, y);
1928
+ cx = x;
1929
+ cy = y;
1930
+ } else if (code === DRAW_OPS.curveTo) {
1931
+ k += 4;
1932
+ cx = data[k++];
1933
+ cy = data[k++];
1934
+ } else if (code === DRAW_OPS.quadraticCurveTo) {
1935
+ k += 2;
1936
+ cx = data[k++];
1937
+ cy = data[k++];
1938
+ } else if (code === DRAW_OPS.closePath) {
1939
+ if (cx !== sx || cy !== sy) addLine(cx, cy, sx, sy);
1940
+ cx = sx;
1941
+ cy = sy;
1942
+ } else break;
1943
+ }
1944
+ };
1945
+ for (let i = 0; i < list.fnArray.length && rules.length < MAX_PAGE_RULES; i++) {
1946
+ const fn = list.fnArray[i];
1947
+ const args = list.argsArray[i];
1948
+ if (fn === OPS.save) stack.push(ctm);
1949
+ else if (fn === OPS.restore) ctm = _nullishCoalesce(stack.pop(), () => ( IDENTITY));
1950
+ else if (fn === OPS.transform && args && args.length >= 6) {
1951
+ const m = Array.from({ length: 6 }, (_, k) => num(args[k]));
1952
+ if (m.every(Number.isFinite)) ctm = multiply(m, ctm);
1953
+ } else if (fn === OPS.constructPath && args) {
1954
+ const first = args[0];
1955
+ if (typeof first === "number") {
1956
+ const buffers = args[1];
1957
+ const data = _optionalChain([buffers, 'optionalAccess', _61 => _61[0]]);
1958
+ if (data && typeof data.length === "number") readDrawBuffer(data);
1959
+ paint(first);
1960
+ } else if (first && typeof first.length === "number") {
1961
+ readPath(first, _nullishCoalesce(args[1], () => ( [])));
1962
+ }
1963
+ } else if (stroking.has(fn) || filling.has(fn)) paint(fn);
1964
+ else if (fn === OPS.endPath) {
1965
+ lines = [];
1966
+ rects = [];
1967
+ }
1968
+ }
1969
+ return rules.filter((rule) => [rule.x1, rule.y1, rule.x2, rule.y2].every(Number.isFinite));
1970
+ }
1971
+ function fontResolver(page, content) {
1972
+ return (fontName) => {
1973
+ let info;
1974
+ try {
1975
+ if (page.commonObjs && (!page.commonObjs.has || page.commonObjs.has(fontName))) {
1976
+ const font = page.commonObjs.get(fontName);
1977
+ if (font && typeof font === "object") {
1978
+ info = {
1979
+ name: typeof font.name === "string" ? font.name : void 0,
1980
+ bold: font.bold || font.black ? true : void 0,
1981
+ italic: font.italic ? true : void 0
1982
+ };
1983
+ }
1984
+ }
1985
+ } catch (e) {
1986
+ }
1987
+ const family = _optionalChain([content, 'access', _62 => _62.styles, 'optionalAccess', _63 => _63[fontName], 'optionalAccess', _64 => _64.fontFamily]);
1988
+ if (!_optionalChain([info, 'optionalAccess', _65 => _65.name]) && family) info = { ...info, name: family };
1989
+ return info;
1990
+ };
1991
+ }
1992
+ function plainReport(paragraphs, pages) {
1993
+ return {
1994
+ mode: "plain",
1995
+ pages,
1996
+ counts: { headings: 0, lists: 0, tables: 0, paragraphs },
1997
+ multiColumnPages: 0,
1998
+ confidence: 1,
1999
+ items: [],
2000
+ removed: { headers: 0, footers: 0, pageNumbers: 0 },
2001
+ dehyphenated: 0
2002
+ };
2003
+ }
2004
+ function createPdfImportAdapter(pdfjs, options = {}) {
2005
+ return {
605
2006
  id: _nullishCoalesce(options.id, () => ( "pdf")),
606
2007
  label: "PDF",
607
2008
  mimeTypes: ["application/pdf"],
608
2009
  extensions: [".pdf"],
609
2010
  target: "document",
610
2011
  async import(_input, context) {
2012
+ const call = context.options && typeof context.options === "object" ? context.options : {};
2013
+ const opts = { ...options, ...call, layout: { ...options.layout, ...call.layout } };
2014
+ const structured = opts.structure !== false;
611
2015
  const data = new Uint8Array((await context.readArrayBuffer()).slice(0));
612
- const doc = await pdfjs.getDocument({ ...options.documentParams, data }).promise;
2016
+ const doc = await pdfjs.getDocument({ ...opts.documentParams, data }).promise;
613
2017
  const paragraphs = [];
2018
+ const layoutPages = [];
2019
+ let pages = 0;
614
2020
  try {
615
- const pages = Math.min(doc.numPages, _nullishCoalesce(options.maxPages, () => ( Infinity)));
2021
+ pages = Math.min(doc.numPages, _nullishCoalesce(opts.maxPages, () => ( Infinity)));
616
2022
  for (let n = 1; n <= pages; n++) {
617
2023
  const page = await doc.getPage(n);
618
- const content = await page.getTextContent();
619
- paragraphs.push(...pdfTextItemsToParagraphs(content.items, options));
620
- _optionalChain([page, 'access', _41 => _41.cleanup, 'optionalCall', _42 => _42()]);
2024
+ if (!structured) {
2025
+ const content = await page.getTextContent();
2026
+ paragraphs.push(...pdfTextItemsToParagraphs(content.items, opts));
2027
+ } else {
2028
+ let rules = [];
2029
+ if (opts.rulingLines !== false && typeof page.getOperatorList === "function") {
2030
+ try {
2031
+ rules = pdfOperatorListToRules(await page.getOperatorList(), pdfjs.OPS);
2032
+ } catch (e2) {
2033
+ rules = [];
2034
+ }
2035
+ }
2036
+ const content = await page.getTextContent();
2037
+ layoutPages.push({ runs: pdfTextItemsToRuns(content.items, fontResolver(page, content)), rules });
2038
+ }
2039
+ _optionalChain([page, 'access', _66 => _66.cleanup, 'optionalCall', _67 => _67()]);
621
2040
  }
622
2041
  } finally {
623
- await _optionalChain([doc, 'access', _43 => _43.destroy, 'optionalCall', _44 => _44()]);
2042
+ await _optionalChain([doc, 'access', _68 => _68.destroy, 'optionalCall', _69 => _69()]);
624
2043
  }
625
- const text = paragraphs.join("\n");
626
- return { html: _chunkCL37JGFWcjs.plainTextToParagraphHtml.call(void 0, text), text };
2044
+ if (!structured) {
2045
+ const text = paragraphs.join("\n");
2046
+ return { html: _chunkV3CHHWOEcjs.plainTextToParagraphHtml.call(void 0, text), text, structure: plainReport(paragraphs.length, pages) };
2047
+ }
2048
+ const layout = { ...opts.layout };
2049
+ if (layout.paragraphGap === void 0 && opts.paragraphGap !== void 0) layout.paragraphGap = opts.paragraphGap;
2050
+ const { blocks, report } = analyzePdfLayout(layoutPages, layout);
2051
+ const html = _chunkV3CHHWOEcjs.sanitizeImportedHtml.call(void 0, pdfLayoutBlocksToHtml(blocks));
2052
+ return { html, text: _chunk7WISYZFOcjs.htmlToPlainText.call(void 0, html), structure: report };
627
2053
  }
628
2054
  };
629
2055
  }
@@ -657,8 +2083,8 @@ function createZipImportAdapter(options = {}) {
657
2083
  extensions: [".zip"],
658
2084
  target: "document",
659
2085
  async import(_input, context) {
660
- const registry = _nullishCoalesce(_nullishCoalesce(options.registry, () => ( context.registry)), () => ( _chunkGVSMRPHBcjs.defaultImportRegistry));
661
- const zip = await _chunkGVSMRPHBcjs.readZip.call(void 0, await context.readArrayBuffer(), {
2086
+ const registry = _nullishCoalesce(_nullishCoalesce(options.registry, () => ( context.registry)), () => ( _chunkPO6A6QQHcjs.defaultImportRegistry));
2087
+ const zip = await _chunkPO6A6QQHcjs.readZip.call(void 0, await context.readArrayBuffer(), {
662
2088
  maxTotalSize: 100 * 1024 * 1024,
663
2089
  maxEntries: 5e3,
664
2090
  ...options.zip
@@ -692,7 +2118,7 @@ function createZipImportAdapter(options = {}) {
692
2118
  });
693
2119
  const title = zipEntryTitle(name);
694
2120
  if (options.headings !== false) {
695
- html += `<h${level}>${_chunkAA4ZEVCCcjs.escapeHtml.call(void 0, title)}</h${level}>`;
2121
+ html += `<h${level}>${_chunk7WISYZFOcjs.escapeHtml.call(void 0, title)}</h${level}>`;
696
2122
  text += `${text ? "\n" : ""}${title}
697
2123
  `;
698
2124
  } else if (text) {
@@ -702,13 +2128,13 @@ function createZipImportAdapter(options = {}) {
702
2128
  text += outcome.result.text;
703
2129
  files.push({ name, adapterId: adapter.id });
704
2130
  } catch (error) {
705
- const code = _optionalChain([error, 'optionalAccess', _45 => _45.code]);
2131
+ const code = _optionalChain([error, 'optionalAccess', _70 => _70.code]);
706
2132
  if (code === "too_large") throw error;
707
2133
  skipped.push({ name, reason: error instanceof Error ? error.message : String(error) });
708
2134
  }
709
2135
  }
710
2136
  if (!files.length) {
711
- throw new (0, _chunkGVSMRPHBcjs.ImportError)("invalid_file", "The archive contains no importable documents.", {
2137
+ throw new (0, _chunkPO6A6QQHcjs.ImportError)("invalid_file", "The archive contains no importable documents.", {
712
2138
  fileName: context.fileName
713
2139
  });
714
2140
  }
@@ -1002,5 +2428,162 @@ var zipImportAdapter = createZipImportAdapter();
1002
2428
 
1003
2429
 
1004
2430
 
1005
- exports.Autocorrect = _chunkGVSMRPHBcjs.Autocorrect; exports.BLOCK_CHANGE_ATTRIBUTE = _chunkAA4ZEVCCcjs.BLOCK_CHANGE_ATTRIBUTE; exports.BUILT_IN_IMPORT_ADAPTERS = _chunkGVSMRPHBcjs.BUILT_IN_IMPORT_ADAPTERS; exports.Bookmark = _chunkGVSMRPHBcjs.Bookmark; exports.COMMENT_MARK_NAME = _chunkGVSMRPHBcjs.COMMENT_MARK_NAME; exports.ColorHighlighter = _chunkGVSMRPHBcjs.ColorHighlighter; exports.CommentStore = _chunkAA4ZEVCCcjs.CommentStore; exports.Comments = _chunkGVSMRPHBcjs.Comments; exports.CrossReference = _chunkGVSMRPHBcjs.CrossReference; exports.DEFAULT_AUTOCORRECT_EXCEPTIONS = _chunkGVSMRPHBcjs.DEFAULT_AUTOCORRECT_EXCEPTIONS; exports.DEFAULT_COLUMN_WIDTH = _chunkXDMXXC4Zcjs.DEFAULT_COLUMN_WIDTH; exports.DEFAULT_DOCX_MAX_IMAGE_SIZE = _chunkGVSMRPHBcjs.DEFAULT_DOCX_MAX_IMAGE_SIZE; exports.DEFAULT_ROW_HEIGHT = _chunkXDMXXC4Zcjs.DEFAULT_ROW_HEIGHT; exports.DEFAULT_ZIP_MAX_ENTRIES = _chunkGVSMRPHBcjs.DEFAULT_ZIP_MAX_ENTRIES; exports.DEFAULT_ZIP_MAX_TOTAL_SIZE = _chunkGVSMRPHBcjs.DEFAULT_ZIP_MAX_TOTAL_SIZE; exports.DELETION_MARK_NAME = _chunkAA4ZEVCCcjs.DELETION_MARK_NAME; exports.DOCX_MIME_TYPES = _chunkGVSMRPHBcjs.DOCX_MIME_TYPES; exports.DataSourceBinder = _chunkXDMXXC4Zcjs.DataSourceBinder; exports.DependencyGraph = _chunkXDMXXC4Zcjs.DependencyGraph; exports.DirtyTracker = _chunkG2I4QJOTcjs.DirtyTracker; exports.EditorController = EditorController; exports.FORMAT_CHANGE_MARK_NAME = _chunkAA4ZEVCCcjs.FORMAT_CHANGE_MARK_NAME; exports.FORMULA_ERRORS = _chunkRIKBJLS2cjs.FORMULA_ERRORS; exports.FileImport = _chunkGVSMRPHBcjs.FileImport; exports.FileImportController = FileImportController; exports.FontSize = _chunkGVSMRPHBcjs.FontSize; exports.Footnote = _chunkGVSMRPHBcjs.Footnote; exports.FootnoteReference = _chunkGVSMRPHBcjs.FootnoteReference; exports.Footnotes = _chunkGVSMRPHBcjs.Footnotes; exports.FormulaEvaluator = _chunkRIKBJLS2cjs.FormulaEvaluator; exports.FormulaParser = _chunkRIKBJLS2cjs.FormulaParser; exports.GradientText = _chunkGVSMRPHBcjs.GradientText; exports.HistoryManager = _chunkG2I4QJOTcjs.HistoryManager; exports.INSERTION_MARK_NAME = _chunkAA4ZEVCCcjs.INSERTION_MARK_NAME; exports.INSTRUCTION_REGEX = _chunkAXV2ZW34cjs.INSTRUCTION_REGEX; exports.Image = _chunkGVSMRPHBcjs.Image; exports.ImportAdapterRegistry = _chunkGVSMRPHBcjs.ImportAdapterRegistry; exports.ImportError = _chunkGVSMRPHBcjs.ImportError; exports.LoadingNode = _chunkGVSMRPHBcjs.LoadingNode; exports.MARKDOWN_MENTION_SPLIT_REGEX = _chunkAA4ZEVCCcjs.MARKDOWN_MENTION_SPLIT_REGEX; exports.MAX_FORMULA_ARRAY_SIZE = _chunkRIKBJLS2cjs.MAX_FORMULA_ARRAY_SIZE; exports.MENTION_REGEX = _chunkAA4ZEVCCcjs.MENTION_REGEX; exports.Markdown = _chunkGVSMRPHBcjs.Markdown; exports.Mention = _chunkGVSMRPHBcjs.Mention; exports.Outline = _chunkGVSMRPHBcjs.Outline; exports.PIXERATE_DOCUMENT_MIME = _chunkCL37JGFWcjs.PIXERATE_DOCUMENT_MIME; exports.RichClipboard = _chunkGVSMRPHBcjs.RichClipboard; exports.SMILIE_REPLACEMENTS = _chunkGVSMRPHBcjs.SMILIE_REPLACEMENTS; exports.SPREADSHEET_CLIPBOARD_MIME = _chunkXDMXXC4Zcjs.SPREADSHEET_CLIPBOARD_MIME; exports.SPREADSHEET_IMPORT_ADAPTERS = _chunkXDMXXC4Zcjs.SPREADSHEET_IMPORT_ADAPTERS; exports.SPREADSHEET_TABLE_ACTIONS = _chunkXDMXXC4Zcjs.SPREADSHEET_TABLE_ACTIONS; exports.SlashCommands = _chunkGVSMRPHBcjs.SlashCommands; exports.SmilieReplacer = _chunkGVSMRPHBcjs.SmilieReplacer; exports.SpreadsheetController = _chunkXDMXXC4Zcjs.SpreadsheetController; exports.TEMPLATE_DEPTH_ERROR = _chunk4SUNJZWBcjs.TEMPLATE_DEPTH_ERROR; exports.TEMPLATE_LOOP_ERROR = _chunk4SUNJZWBcjs.TEMPLATE_LOOP_ERROR; exports.TEMPLATE_REGEX = _chunkAXV2ZW34cjs.TEMPLATE_REGEX; exports.TRACK_CHANGES_SKIP_META = _chunkAA4ZEVCCcjs.TRACK_CHANGES_SKIP_META; exports.TableOfContents = _chunkGVSMRPHBcjs.TableOfContents; exports.TemplateSuggestions = _chunkGVSMRPHBcjs.TemplateSuggestions; exports.TrackChanges = _chunkAA4ZEVCCcjs.TrackChanges; exports.TrackChangesStore = _chunkAA4ZEVCCcjs.TrackChangesStore; exports.TrackedDeletion = _chunkAA4ZEVCCcjs.TrackedDeletion; exports.TrackedFormatChange = _chunkAA4ZEVCCcjs.TrackedFormatChange; exports.TrackedInsertion = _chunkAA4ZEVCCcjs.TrackedInsertion; exports.VARIABLE_REGEX = _chunkAXV2ZW34cjs.VARIABLE_REGEX; exports.WHOLE_COLUMN_END_ROW = _chunkRIKBJLS2cjs.WHOLE_COLUMN_END_ROW; exports.ZipArchive = _chunkGVSMRPHBcjs.ZipArchive; exports.ZipError = _chunkGVSMRPHBcjs.ZipError; exports.aggregateValues = _chunkXDMXXC4Zcjs.aggregateValues; exports.applyFormulaSuggestion = _chunkXDMXXC4Zcjs.applyFormulaSuggestion; exports.autocorrectPluginKey = _chunkGVSMRPHBcjs.autocorrectPluginKey; exports.bindDirtyToHistory = _chunkG2I4QJOTcjs.bindDirtyToHistory; exports.bindSpreadsheetTableActions = _chunkXDMXXC4Zcjs.bindSpreadsheetTableActions; exports.buildOutlineTree = _chunkGVSMRPHBcjs.buildOutlineTree; exports.buildSpreadsheetView = _chunkXDMXXC4Zcjs.buildSpreadsheetView; exports.capitalizeSentenceRules = _chunkGVSMRPHBcjs.capitalizeSentenceRules; exports.checkFormulaArgumentCount = _chunkRIKBJLS2cjs.checkFormulaArgumentCount; exports.clampMenuPosition = _chunkXDMXXC4Zcjs.clampMenuPosition; exports.colNameToIndex = _chunkRIKBJLS2cjs.colNameToIndex; exports.columnDependencyKey = _chunkXDMXXC4Zcjs.columnDependencyKey; exports.commentsPluginKey = _chunkGVSMRPHBcjs.commentsPluginKey; exports.compactVariableValues = _chunk4SUNJZWBcjs.compactVariableValues; exports.compareCellValues = _chunkXDMXXC4Zcjs.compareCellValues; exports.compareNumbers = _chunkRIKBJLS2cjs.compareNumbers; exports.compareValues = _chunkRIKBJLS2cjs.compareValues; exports.computeFillTarget = _chunkXDMXXC4Zcjs.computeFillTarget; exports.computeOutline = _chunkGVSMRPHBcjs.computeOutline; exports.computeRowGroups = _chunkXDMXXC4Zcjs.computeRowGroups; exports.createCommentStore = _chunkAA4ZEVCCcjs.createCommentStore; exports.createDirtyTracker = _chunkG2I4QJOTcjs.createDirtyTracker; exports.createDocxImportAdapter = _chunkGVSMRPHBcjs.createDocxImportAdapter; exports.createEditor = createEditor; exports.createFileImportController = createFileImportController; exports.createHistoryManager = _chunkG2I4QJOTcjs.createHistoryManager; exports.createImportAdapterRegistry = _chunkGVSMRPHBcjs.createImportAdapterRegistry; exports.createImportContext = _chunkGVSMRPHBcjs.createImportContext; exports.createMentionExtension = _chunkGVSMRPHBcjs.createMentionExtension; exports.createOutlineStore = _chunkGVSMRPHBcjs.createOutlineStore; exports.createPdfImportAdapter = createPdfImportAdapter; exports.createReviewId = _chunkAA4ZEVCCcjs.createReviewId; exports.createRichTextPreset = _chunkGVSMRPHBcjs.createRichTextPreset; exports.createSpreadsheetClipboardData = _chunkXDMXXC4Zcjs.createSpreadsheetClipboardData; exports.createZipImportAdapter = createZipImportAdapter; exports.crossReferencePluginKey = _chunkGVSMRPHBcjs.crossReferencePluginKey; exports.csvImportAdapter = _chunkXDMXXC4Zcjs.csvImportAdapter; exports.defaultAutocorrectRules = _chunkGVSMRPHBcjs.defaultAutocorrectRules; exports.defaultImportRegistry = _chunkGVSMRPHBcjs.defaultImportRegistry; exports.defaultIsEqual = _chunkG2I4QJOTcjs.defaultIsEqual; exports.describeBlockChange = _chunkAA4ZEVCCcjs.describeBlockChange; exports.describeFormatChange = _chunkAA4ZEVCCcjs.describeFormatChange; exports.describeFormulaError = _chunkRIKBJLS2cjs.describeFormulaError; exports.documentStructureCommandItems = _chunkGVSMRPHBcjs.documentStructureCommandItems; exports.docxImportAdapter = _chunkGVSMRPHBcjs.docxImportAdapter; exports.docxToDocumentImport = _chunkGVSMRPHBcjs.docxToDocumentImport; exports.escapeCsvField = _chunkXDMXXC4Zcjs.escapeCsvField; exports.escapeHtml = _chunkAA4ZEVCCcjs.escapeHtml; exports.escapeVariableText = _chunkAXV2ZW34cjs.escapeVariableText; exports.evaluateCondition = _chunkAXV2ZW34cjs.evaluateCondition; exports.evaluatePromptTokens = _chunk4SUNJZWBcjs.evaluatePromptTokens; exports.extractCellDependencies = _chunkXDMXXC4Zcjs.extractCellDependencies; exports.extractInstructionNames = _chunk4SUNJZWBcjs.extractInstructionNames; exports.extractMentions = _chunkAA4ZEVCCcjs.extractMentions; exports.extractMentionsFromDoc = _chunkAA4ZEVCCcjs.extractMentionsFromDoc; exports.extractTemplateNames = _chunk4SUNJZWBcjs.extractTemplateNames; exports.extractVariableNames = _chunk4SUNJZWBcjs.extractVariableNames; exports.extractVariables = _chunk4SUNJZWBcjs.extractVariables; exports.fileImportPluginKey = _chunkGVSMRPHBcjs.fileImportPluginKey; exports.fillSeries = _chunkXDMXXC4Zcjs.fillSeries; exports.findAutocorrection = _chunkGVSMRPHBcjs.findAutocorrection; exports.findCommentRanges = _chunkGVSMRPHBcjs.findCommentRanges; exports.findHexColors = _chunkGVSMRPHBcjs.findHexColors; exports.findImportAdapter = _chunkGVSMRPHBcjs.findImportAdapter; exports.footnotesMarkdownIt = _chunkGVSMRPHBcjs.footnotesMarkdownIt; exports.footnotesPluginKey = _chunkGVSMRPHBcjs.footnotesPluginKey; exports.formatCellDisplay = _chunkRIKBJLS2cjs.formatCellDisplay; exports.formatReviewTime = _chunkAA4ZEVCCcjs.formatReviewTime; exports.formatValueWithCode = _chunkRIKBJLS2cjs.formatValueWithCode; exports.fractionRules = _chunkGVSMRPHBcjs.fractionRules; exports.getActiveHeading = _chunkGVSMRPHBcjs.getActiveHeading; exports.getBookmarks = _chunkGVSMRPHBcjs.getBookmarks; exports.getClipboardData = _chunkCL37JGFWcjs.getClipboardData; exports.getCommentAnchors = _chunkGVSMRPHBcjs.getCommentAnchors; exports.getCommentAuthor = _chunkGVSMRPHBcjs.getCommentAuthor; exports.getCommentIdsAt = _chunkGVSMRPHBcjs.getCommentIdsAt; exports.getCommentStore = _chunkGVSMRPHBcjs.getCommentStore; exports.getCrossReferenceTargets = _chunkGVSMRPHBcjs.getCrossReferenceTargets; exports.getDocumentStructureCommandItems = _chunkGVSMRPHBcjs.getDocumentStructureCommandItems; exports.getEditorMarkdown = _chunkAA4ZEVCCcjs.getEditorMarkdown; exports.getEditorText = _chunkAA4ZEVCCcjs.getEditorText; exports.getFillDirection = _chunkXDMXXC4Zcjs.getFillDirection; exports.getFootnotes = _chunkGVSMRPHBcjs.getFootnotes; exports.getFormulaArgumentSpecIndex = _chunkRIKBJLS2cjs.getFormulaArgumentSpecIndex; exports.getFormulaCaretContext = _chunkXDMXXC4Zcjs.getFormulaCaretContext; exports.getFormulaFunction = _chunkRIKBJLS2cjs.getFormulaFunction; exports.getFormulaHints = _chunkXDMXXC4Zcjs.getFormulaHints; exports.getFormulaSignature = _chunkRIKBJLS2cjs.getFormulaSignature; exports.getFormulaSignatureParts = _chunkRIKBJLS2cjs.getFormulaSignatureParts; exports.getImportAccept = _chunkGVSMRPHBcjs.getImportAccept; exports.getLatestVersion = _chunk4SUNJZWBcjs.getLatestVersion; exports.getOutline = _chunkGVSMRPHBcjs.getOutline; exports.getPromptDiagnostics = _chunk4SUNJZWBcjs.getPromptDiagnostics; exports.getRowSection = _chunkXDMXXC4Zcjs.getRowSection; exports.getSchemaSignature = _chunkCL37JGFWcjs.getSchemaSignature; exports.getSpreadsheetMenuItems = _chunkXDMXXC4Zcjs.getSpreadsheetMenuItems; exports.getSuppliedValue = _chunkAXV2ZW34cjs.getSuppliedValue; exports.getTableOfContentsEntries = _chunkGVSMRPHBcjs.getTableOfContentsEntries; exports.getTableSections = _chunkXDMXXC4Zcjs.getTableSections; exports.getTemplateBody = _chunk4SUNJZWBcjs.getTemplateBody; exports.getTrackChangesStore = _chunkAA4ZEVCCcjs.getTrackChangesStore; exports.getTrackedChangeAt = _chunkAA4ZEVCCcjs.getTrackedChangeAt; exports.getTrackedChanges = _chunkAA4ZEVCCcjs.getTrackedChanges; exports.getVariableFormFields = _chunk4SUNJZWBcjs.getVariableFormFields; exports.handleImageInsertion = _chunkGVSMRPHBcjs.handleImageInsertion; exports.htmlImportAdapter = _chunkGVSMRPHBcjs.htmlImportAdapter; exports.htmlToPlainText = _chunkAA4ZEVCCcjs.htmlToPlainText; exports.htmlToSlice = _chunkGVSMRPHBcjs.htmlToSlice; exports.imagePastePluginKey = _chunkGVSMRPHBcjs.imagePastePluginKey; exports.importFile = _chunkGVSMRPHBcjs.importFile; exports.importFileIntoSpreadsheet = _chunkXDMXXC4Zcjs.importFileIntoSpreadsheet; exports.importFilesIntoEditor = _chunkGVSMRPHBcjs.importFilesIntoEditor; exports.indexToColName = _chunkRIKBJLS2cjs.indexToColName; exports.insertImageNode = _chunkGVSMRPHBcjs.insertImageNode; exports.insertImportedDocument = _chunkGVSMRPHBcjs.insertImportedDocument; exports.instructionRegex = _chunkAXV2ZW34cjs.instructionRegex; exports.isBlankValue = _chunkXDMXXC4Zcjs.isBlankValue; exports.isFormulaError = _chunkRIKBJLS2cjs.isFormulaError; exports.isInsidePromptToken = _chunkGVSMRPHBcjs.isInsidePromptToken; exports.isPromptValueSet = _chunkAXV2ZW34cjs.isPromptValueSet; exports.isSingleCellRange = _chunkXDMXXC4Zcjs.isSingleCellRange; exports.isTrackChangesEnabled = _chunkAA4ZEVCCcjs.isTrackChangesEnabled; exports.isUnsafeZipPath = _chunkGVSMRPHBcjs.isUnsafeZipPath; exports.listFormulaFunctions = _chunkRIKBJLS2cjs.listFormulaFunctions; exports.mapFormulaReferences = _chunkXDMXXC4Zcjs.mapFormulaReferences; exports.mapRawOffsetToResolved = _chunk4SUNJZWBcjs.mapRawOffsetToResolved; exports.mapResolvedOffsetToRaw = _chunk4SUNJZWBcjs.mapResolvedOffsetToRaw; exports.markdownImportAdapter = _chunkGVSMRPHBcjs.markdownImportAdapter; exports.markdownToTipTapHtml = _chunkAA4ZEVCCcjs.markdownToTipTapHtml; exports.matchConditionalTags = _chunkAXV2ZW34cjs.matchConditionalTags; exports.matchesFilterRule = _chunkXDMXXC4Zcjs.matchesFilterRule; exports.navigateToHeading = _chunkGVSMRPHBcjs.navigateToHeading; exports.normalizeRange = _chunkXDMXXC4Zcjs.normalizeRange; exports.numberToText = _chunkRIKBJLS2cjs.numberToText; exports.offsetFormulaReferences = _chunkXDMXXC4Zcjs.offsetFormulaReferences; exports.outlinePluginKey = _chunkGVSMRPHBcjs.outlinePluginKey; exports.parseCellInput = _chunkRIKBJLS2cjs.parseCellInput; exports.parseCellReference = _chunkRIKBJLS2cjs.parseCellReference; exports.parseCriteria = _chunkRIKBJLS2cjs.parseCriteria; exports.parseCsv = _chunkXDMXXC4Zcjs.parseCsv; exports.parseFormula = _chunkRIKBJLS2cjs.parseFormula; exports.parseHtmlTable = _chunkXDMXXC4Zcjs.parseHtmlTable; exports.parseMentionSegments = _chunkAA4ZEVCCcjs.parseMentionSegments; exports.parseNumberText = _chunkRIKBJLS2cjs.parseNumberText; exports.parseRange = _chunkRIKBJLS2cjs.parseRange; exports.parseRichClipboardPayload = _chunkCL37JGFWcjs.parseRichClipboardPayload; exports.parseTsv = _chunkXDMXXC4Zcjs.parseTsv; exports.parseVariableBody = _chunkAXV2ZW34cjs.parseVariableBody; exports.pdfTextItemsToParagraphs = pdfTextItemsToParagraphs; exports.pickImportFiles = pickImportFiles; exports.plainTextImportAdapter = _chunkGVSMRPHBcjs.plainTextImportAdapter; exports.plainTextToParagraphHtml = _chunkCL37JGFWcjs.plainTextToParagraphHtml; exports.plainTextToSlice = _chunkAA4ZEVCCcjs.plainTextToSlice; exports.plainTextToTipTapHtml = _chunkAA4ZEVCCcjs.plainTextToTipTapHtml; exports.preprocessMarkdownFileLinks = _chunkAA4ZEVCCcjs.preprocessMarkdownFileLinks; exports.preprocessMarkdownMentions = _chunkAA4ZEVCCcjs.preprocessMarkdownMentions; exports.rangeContains = _chunkXDMXXC4Zcjs.rangeContains; exports.rangeContainsRange = _chunkXDMXXC4Zcjs.rangeContainsRange; exports.rangesIntersect = _chunkXDMXXC4Zcjs.rangesIntersect; exports.readRichClipboard = _chunkCL37JGFWcjs.readRichClipboard; exports.readSpreadsheetClipboard = _chunkXDMXXC4Zcjs.readSpreadsheetClipboard; exports.readZip = _chunkGVSMRPHBcjs.readZip; exports.rebaseClipboardRows = _chunkXDMXXC4Zcjs.rebaseClipboardRows; exports.registerFormulaFunction = _chunkRIKBJLS2cjs.registerFormulaFunction; exports.registerImportAdapter = _chunkGVSMRPHBcjs.registerImportAdapter; exports.registerSpreadsheetImportAdapters = _chunkXDMXXC4Zcjs.registerSpreadsheetImportAdapters; exports.remapFormulaReferences = _chunkXDMXXC4Zcjs.remapFormulaReferences; exports.removeImageNode = _chunkGVSMRPHBcjs.removeImageNode; exports.resolvePrompt = _chunk4SUNJZWBcjs.resolvePrompt; exports.resolveTemplates = _chunk4SUNJZWBcjs.resolveTemplates; exports.resolveTemplatesWithMapping = _chunk4SUNJZWBcjs.resolveTemplatesWithMapping; exports.resolveTrackedChanges = _chunkAA4ZEVCCcjs.resolveTrackedChanges; exports.resolveVariables = _chunk4SUNJZWBcjs.resolveVariables; exports.richClipboardPluginKey = _chunkGVSMRPHBcjs.richClipboardPluginKey; exports.roundFloat = _chunkXDMXXC4Zcjs.roundFloat; exports.rowPassesFilters = _chunkXDMXXC4Zcjs.rowPassesFilters; exports.rtfImportAdapter = _chunkGVSMRPHBcjs.rtfImportAdapter; exports.rtfToPlainText = _chunkCL37JGFWcjs.rtfToPlainText; exports.sanitizeHtml = _chunkAA4ZEVCCcjs.sanitizeHtml; exports.sanitizeImportedHtml = _chunkCL37JGFWcjs.sanitizeImportedHtml; exports.searchFormulaFunctions = _chunkRIKBJLS2cjs.searchFormulaFunctions; exports.serialFromYmd = _chunkRIKBJLS2cjs.serialFromYmd; exports.serializeCsv = _chunkXDMXXC4Zcjs.serializeCsv; exports.serializeHtmlTable = _chunkXDMXXC4Zcjs.serializeHtmlTable; exports.serializeRichClipboardPayload = _chunkCL37JGFWcjs.serializeRichClipboardPayload; exports.serializeTsv = _chunkXDMXXC4Zcjs.serializeTsv; exports.shiftFormulaReferences = _chunkXDMXXC4Zcjs.shiftFormulaReferences; exports.smartQuoteRules = _chunkGVSMRPHBcjs.smartQuoteRules; exports.smilieAutocorrectRules = _chunkGVSMRPHBcjs.smilieAutocorrectRules; exports.sortCompareValues = _chunkRIKBJLS2cjs.sortCompareValues; exports.sortZipEntryNames = sortZipEntryNames; exports.stripMarkdownCode = _chunkAA4ZEVCCcjs.stripMarkdownCode; exports.symbolRules = _chunkGVSMRPHBcjs.symbolRules; exports.syncFootnotes = _chunkGVSMRPHBcjs.syncFootnotes; exports.tableOfContentsMarkdownIt = _chunkGVSMRPHBcjs.tableOfContentsMarkdownIt; exports.tableOfContentsPluginKey = _chunkGVSMRPHBcjs.tableOfContentsPluginKey; exports.templateRegex = _chunkAXV2ZW34cjs.templateRegex; exports.toNumber = _chunkXDMXXC4Zcjs.toNumber; exports.tokenizeFormula = _chunkRIKBJLS2cjs.tokenizeFormula; exports.tokenizePrompt = _chunk4SUNJZWBcjs.tokenizePrompt; exports.tokenizePromptWithDiagnostics = _chunk4SUNJZWBcjs.tokenizePromptWithDiagnostics; exports.trackChangesPluginKey = _chunkAA4ZEVCCcjs.trackChangesPluginKey; exports.tsvImportAdapter = _chunkXDMXXC4Zcjs.tsvImportAdapter; exports.twoInitialCapitalsRules = _chunkGVSMRPHBcjs.twoInitialCapitalsRules; exports.unescapeVariableText = _chunkAXV2ZW34cjs.unescapeVariableText; exports.unregisterFormulaFunction = _chunkRIKBJLS2cjs.unregisterFormulaFunction; exports.unregisterImportAdapter = _chunkGVSMRPHBcjs.unregisterImportAdapter; exports.updateImageSrc = _chunkGVSMRPHBcjs.updateImageSrc; exports.variableRegex = _chunkAXV2ZW34cjs.variableRegex; exports.wildcardToRegExp = _chunkRIKBJLS2cjs.wildcardToRegExp; exports.withoutDirty = _chunkG2I4QJOTcjs.withoutDirty; exports.writeRichClipboard = _chunkGVSMRPHBcjs.writeRichClipboard; exports.zipCrc32 = _chunkGVSMRPHBcjs.zipCrc32; exports.zipEntryTitle = zipEntryTitle; exports.zipImportAdapter = zipImportAdapter;
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+
2541
+
2542
+
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+ exports.Autocorrect = _chunkPO6A6QQHcjs.Autocorrect; exports.BLOCK_CHANGE_ATTRIBUTE = _chunkX4N4WUKBcjs.BLOCK_CHANGE_ATTRIBUTE; exports.BUILT_IN_IMPORT_ADAPTERS = _chunkPO6A6QQHcjs.BUILT_IN_IMPORT_ADAPTERS; exports.Bookmark = _chunkPO6A6QQHcjs.Bookmark; exports.CHARACTER_STYLE_MARK_NAME = _chunkPO6A6QQHcjs.CHARACTER_STYLE_MARK_NAME; exports.COMMENT_MARK_NAME = _chunkPO6A6QQHcjs.COMMENT_MARK_NAME; exports.CONDITIONAL_FORMAT_ICON_SETS = _chunkWSQKHXW7cjs.CONDITIONAL_FORMAT_ICON_SETS; exports.CONDITIONAL_FORMAT_PRESETS = _chunkWSQKHXW7cjs.CONDITIONAL_FORMAT_PRESETS; exports.CONDITIONAL_FORMAT_STYLE_PRESETS = _chunkWSQKHXW7cjs.CONDITIONAL_FORMAT_STYLE_PRESETS; exports.CONDITIONAL_FORMAT_TIME_PERIODS = _chunkWSQKHXW7cjs.CONDITIONAL_FORMAT_TIME_PERIODS; exports.CharacterStyle = _chunkPO6A6QQHcjs.CharacterStyle; exports.ColorHighlighter = _chunkPO6A6QQHcjs.ColorHighlighter; exports.CommentStore = _chunkX4N4WUKBcjs.CommentStore; exports.Comments = _chunkPO6A6QQHcjs.Comments; exports.ConditionalFormatEngine = _chunkWSQKHXW7cjs.ConditionalFormatEngine; exports.CrossReference = _chunkPO6A6QQHcjs.CrossReference; exports.DATA_VALIDATION_ERROR_STYLE_OPTIONS = _chunkWSQKHXW7cjs.DATA_VALIDATION_ERROR_STYLE_OPTIONS; exports.DATA_VALIDATION_OPERATOR_OPTIONS = _chunkWSQKHXW7cjs.DATA_VALIDATION_OPERATOR_OPTIONS; exports.DATA_VALIDATION_TYPE_OPTIONS = _chunkWSQKHXW7cjs.DATA_VALIDATION_TYPE_OPTIONS; exports.DEFAULT_AUTOCORRECT_EXCEPTIONS = _chunkPO6A6QQHcjs.DEFAULT_AUTOCORRECT_EXCEPTIONS; exports.DEFAULT_COLUMN_WIDTH = _chunkWSQKHXW7cjs.DEFAULT_COLUMN_WIDTH; exports.DEFAULT_CONDITIONAL_FORMAT_STYLE = _chunkWSQKHXW7cjs.DEFAULT_CONDITIONAL_FORMAT_STYLE; exports.DEFAULT_DATA_VALIDATION_MESSAGE = _chunkWSQKHXW7cjs.DEFAULT_DATA_VALIDATION_MESSAGE; exports.DEFAULT_DATA_VALIDATION_TITLE = _chunkWSQKHXW7cjs.DEFAULT_DATA_VALIDATION_TITLE; exports.DEFAULT_DOCX_MAX_IMAGE_SIZE = _chunkPO6A6QQHcjs.DEFAULT_DOCX_MAX_IMAGE_SIZE; exports.DEFAULT_ROW_HEIGHT = _chunkWSQKHXW7cjs.DEFAULT_ROW_HEIGHT; exports.DEFAULT_STYLES = _chunkPO6A6QQHcjs.DEFAULT_STYLES; exports.DEFAULT_ZIP_MAX_ENTRIES = _chunkPO6A6QQHcjs.DEFAULT_ZIP_MAX_ENTRIES; exports.DEFAULT_ZIP_MAX_TOTAL_SIZE = _chunkPO6A6QQHcjs.DEFAULT_ZIP_MAX_TOTAL_SIZE; exports.DELETION_MARK_NAME = _chunkX4N4WUKBcjs.DELETION_MARK_NAME; exports.DOCX_MIME_TYPES = _chunkPO6A6QQHcjs.DOCX_MIME_TYPES; exports.DataSourceBinder = _chunkWSQKHXW7cjs.DataSourceBinder; exports.DependencyGraph = _chunkWSQKHXW7cjs.DependencyGraph; exports.DirtyTracker = _chunkG2I4QJOTcjs.DirtyTracker; exports.DocumentCompare = _chunkPO6A6QQHcjs.DocumentCompare; exports.EMPTY_CONDITIONAL_FORMAT_OVERLAY = _chunkWSQKHXW7cjs.EMPTY_CONDITIONAL_FORMAT_OVERLAY; exports.EMPTY_FIND_REPLACE_SNAPSHOT = _chunkPO6A6QQHcjs.EMPTY_FIND_REPLACE_SNAPSHOT; exports.EditorController = EditorController; exports.FIELD_ALIASES = _chunkP3RQ5UJEcjs.FIELD_ALIASES; exports.FIND_OPTION_TOGGLES = _chunkPO6A6QQHcjs.FIND_OPTION_TOGGLES; exports.FIND_PARAGRAPH_MARK = _chunkPO6A6QQHcjs.FIND_PARAGRAPH_MARK; exports.FORMAT_CHANGE_MARK_NAME = _chunkX4N4WUKBcjs.FORMAT_CHANGE_MARK_NAME; exports.FORMULA_ERRORS = _chunkC7P22VIPcjs.FORMULA_ERRORS; exports.FileImport = _chunkPO6A6QQHcjs.FileImport; exports.FileImportController = FileImportController; exports.FindReplace = _chunkPO6A6QQHcjs.FindReplace; exports.FindReplaceStore = _chunkPO6A6QQHcjs.FindReplaceStore; exports.FontSize = _chunkPO6A6QQHcjs.FontSize; exports.Footnote = _chunkPO6A6QQHcjs.Footnote; exports.FootnoteReference = _chunkPO6A6QQHcjs.FootnoteReference; exports.Footnotes = _chunkPO6A6QQHcjs.Footnotes; exports.FormulaEvaluator = _chunkC7P22VIPcjs.FormulaEvaluator; exports.FormulaLambda = _chunkC7P22VIPcjs.FormulaLambda; exports.FormulaParser = _chunkC7P22VIPcjs.FormulaParser; exports.GradientText = _chunkPO6A6QQHcjs.GradientText; exports.HistoryManager = _chunkG2I4QJOTcjs.HistoryManager; exports.INSERTION_MARK_NAME = _chunkX4N4WUKBcjs.INSERTION_MARK_NAME; exports.INSTRUCTION_REGEX = _chunkMKA3AHLVcjs.INSTRUCTION_REGEX; exports.Image = _chunkPO6A6QQHcjs.Image; exports.ImportAdapterRegistry = _chunkPO6A6QQHcjs.ImportAdapterRegistry; exports.ImportError = _chunkPO6A6QQHcjs.ImportError; exports.LoadingNode = _chunkPO6A6QQHcjs.LoadingNode; exports.MARKDOWN_MENTION_SPLIT_REGEX = _chunk7WISYZFOcjs.MARKDOWN_MENTION_SPLIT_REGEX; exports.MAX_DATA_SOURCE_FIELDS = _chunkP3RQ5UJEcjs.MAX_DATA_SOURCE_FIELDS; exports.MAX_DATA_SOURCE_RECORDS = _chunkP3RQ5UJEcjs.MAX_DATA_SOURCE_RECORDS; exports.MAX_DEFINED_NAME_LENGTH = _chunkWSQKHXW7cjs.MAX_DEFINED_NAME_LENGTH; exports.MAX_FIND_PATTERN_LENGTH = _chunkPO6A6QQHcjs.MAX_FIND_PATTERN_LENGTH; exports.MAX_FORMULA_ARRAY_SIZE = _chunkC7P22VIPcjs.MAX_FORMULA_ARRAY_SIZE; exports.MAX_LAMBDA_DEPTH = _chunkC7P22VIPcjs.MAX_LAMBDA_DEPTH; exports.MAX_MERGE_LENGTH = _chunkP3RQ5UJEcjs.MAX_MERGE_LENGTH; exports.MAX_MERGE_OUTPUTS = _chunkP3RQ5UJEcjs.MAX_MERGE_OUTPUTS; exports.MAX_NUMBER_FORMAT_CODE_CHARS = _chunkC7P22VIPcjs.MAX_NUMBER_FORMAT_CODE_CHARS; exports.MAX_SHEET_NAME_LENGTH = _chunkWSQKHXW7cjs.MAX_SHEET_NAME_LENGTH; exports.MENTION_REGEX = _chunkBVP3TSLHcjs.MENTION_REGEX; exports.MOVE_FROM_CLASS = _chunkX4N4WUKBcjs.MOVE_FROM_CLASS; exports.MOVE_ID_ATTRIBUTE = _chunkX4N4WUKBcjs.MOVE_ID_ATTRIBUTE; exports.MOVE_TO_CLASS = _chunkX4N4WUKBcjs.MOVE_TO_CLASS; exports.Markdown = _chunkPO6A6QQHcjs.Markdown; exports.Mention = _chunkPO6A6QQHcjs.Mention; exports.NORMAL_STYLE_ID = _chunkPO6A6QQHcjs.NORMAL_STYLE_ID; exports.NUMBER_FORMAT_PRESETS = _chunkWSQKHXW7cjs.NUMBER_FORMAT_PRESETS; exports.NumberFormat = _chunkC7P22VIPcjs.NumberFormat; exports.Outline = _chunkPO6A6QQHcjs.Outline; exports.PIXERATE_DOCUMENT_MIME = _chunkV3CHHWOEcjs.PIXERATE_DOCUMENT_MIME; exports.ParagraphStyles = _chunkPO6A6QQHcjs.ParagraphStyles; exports.RichClipboard = _chunkPO6A6QQHcjs.RichClipboard; exports.SMILIE_REPLACEMENTS = _chunkPO6A6QQHcjs.SMILIE_REPLACEMENTS; exports.SPREADSHEET_CLIPBOARD_MIME = _chunkWSQKHXW7cjs.SPREADSHEET_CLIPBOARD_MIME; exports.SPREADSHEET_IMPORT_ADAPTERS = _chunkWSQKHXW7cjs.SPREADSHEET_IMPORT_ADAPTERS; exports.SPREADSHEET_TABLE_ACTIONS = _chunkWSQKHXW7cjs.SPREADSHEET_TABLE_ACTIONS; exports.STYLE_ID_ATTRIBUTE = _chunkPO6A6QQHcjs.STYLE_ID_ATTRIBUTE; exports.SlashCommands = _chunkPO6A6QQHcjs.SlashCommands; exports.SmilieReplacer = _chunkPO6A6QQHcjs.SmilieReplacer; exports.SpreadsheetController = _chunkWSQKHXW7cjs.SpreadsheetController; exports.StyleRegistry = _chunkPO6A6QQHcjs.StyleRegistry; exports.TEMPLATE_DEPTH_ERROR = _chunkFD4LPFAEcjs.TEMPLATE_DEPTH_ERROR; exports.TEMPLATE_LOOP_ERROR = _chunkFD4LPFAEcjs.TEMPLATE_LOOP_ERROR; exports.TEMPLATE_REGEX = _chunkMKA3AHLVcjs.TEMPLATE_REGEX; exports.TRACK_CHANGES_SKIP_META = _chunkX4N4WUKBcjs.TRACK_CHANGES_SKIP_META; exports.TableOfContents = _chunkPO6A6QQHcjs.TableOfContents; exports.TemplateSuggestions = _chunkPO6A6QQHcjs.TemplateSuggestions; exports.TrackChanges = _chunkX4N4WUKBcjs.TrackChanges; exports.TrackChangesStore = _chunkX4N4WUKBcjs.TrackChangesStore; exports.TrackedDeletion = _chunkX4N4WUKBcjs.TrackedDeletion; exports.TrackedFormatChange = _chunkX4N4WUKBcjs.TrackedFormatChange; exports.TrackedInsertion = _chunkX4N4WUKBcjs.TrackedInsertion; exports.VARIABLE_REGEX = _chunkMKA3AHLVcjs.VARIABLE_REGEX; exports.WHOLE_COLUMN_END_ROW = _chunkC7P22VIPcjs.WHOLE_COLUMN_END_ROW; exports.ZipArchive = _chunkPO6A6QQHcjs.ZipArchive; exports.ZipError = _chunkPO6A6QQHcjs.ZipError; exports.adjustRangeForStructuralChange = _chunkWSQKHXW7cjs.adjustRangeForStructuralChange; exports.adjustRangesForStructuralChange = _chunkWSQKHXW7cjs.adjustRangesForStructuralChange; exports.aggregateValues = _chunkWSQKHXW7cjs.aggregateValues; exports.analyzePdfLayout = analyzePdfLayout; exports.applyDocumentComparison = _chunkPO6A6QQHcjs.applyDocumentComparison; exports.applyFormulaSuggestion = _chunkWSQKHXW7cjs.applyFormulaSuggestion; exports.applyReplacements = _chunkPO6A6QQHcjs.applyReplacements; exports.autocorrectPluginKey = _chunkPO6A6QQHcjs.autocorrectPluginKey; exports.bindDirtyToHistory = _chunkG2I4QJOTcjs.bindDirtyToHistory; exports.bindSpreadsheetTableActions = _chunkWSQKHXW7cjs.bindSpreadsheetTableActions; exports.blendConditionalFormatColors = _chunkWSQKHXW7cjs.blendConditionalFormatColors; exports.buildOutlineTree = _chunkPO6A6QQHcjs.buildOutlineTree; exports.buildSpreadsheetView = _chunkWSQKHXW7cjs.buildSpreadsheetView; exports.builtinNumberFormat = _chunkC7P22VIPcjs.builtinNumberFormat; exports.builtinNumberFormatId = _chunkC7P22VIPcjs.builtinNumberFormatId; exports.capitalizeSentenceRules = _chunkPO6A6QQHcjs.capitalizeSentenceRules; exports.captureSelectionFormat = _chunkPO6A6QQHcjs.captureSelectionFormat; exports.cellFormatForNumberFormat = _chunkWSQKHXW7cjs.cellFormatForNumberFormat; exports.checkFormulaArgumentCount = _chunkC7P22VIPcjs.checkFormulaArgumentCount; exports.clampMenuPosition = _chunkWSQKHXW7cjs.clampMenuPosition; exports.clearNumberFormatCache = _chunkC7P22VIPcjs.clearNumberFormatCache; exports.colNameToIndex = _chunkC7P22VIPcjs.colNameToIndex; exports.columnDependencyKey = _chunkWSQKHXW7cjs.columnDependencyKey; exports.commentsPluginKey = _chunkPO6A6QQHcjs.commentsPluginKey; exports.compactVariableValues = _chunkP3RQ5UJEcjs.compactVariableValues; exports.compareCellValues = _chunkWSQKHXW7cjs.compareCellValues; exports.compareConditionValues = _chunkMKA3AHLVcjs.compareConditionValues; exports.compareDocuments = _chunkAL6JMGWWcjs.compareDocuments; exports.compareHtml = _chunkAL6JMGWWcjs.compareHtml; exports.compareInEditor = _chunkPO6A6QQHcjs.compareInEditor; exports.compareNumbers = _chunkC7P22VIPcjs.compareNumbers; exports.compareValues = _chunkC7P22VIPcjs.compareValues; exports.compileFindPattern = _chunkPO6A6QQHcjs.compileFindPattern; exports.computeFillTarget = _chunkWSQKHXW7cjs.computeFillTarget; exports.computeOutline = _chunkPO6A6QQHcjs.computeOutline; exports.computeRowGroups = _chunkWSQKHXW7cjs.computeRowGroups; exports.conditionSubject = _chunkMKA3AHLVcjs.conditionSubject; exports.conditionalFormatContrastColor = _chunkWSQKHXW7cjs.conditionalFormatContrastColor; exports.conditionalFormatIconCount = _chunkWSQKHXW7cjs.conditionalFormatIconCount; exports.conditionalFormatNumber = _chunkWSQKHXW7cjs.conditionalFormatNumber; exports.conditionalFormatStyleString = _chunkWSQKHXW7cjs.conditionalFormatStyleString; exports.copySheetName = _chunkWSQKHXW7cjs.copySheetName; exports.createCommentStore = _chunkX4N4WUKBcjs.createCommentStore; exports.createConditionalFormatRule = _chunkWSQKHXW7cjs.createConditionalFormatRule; exports.createDirtyTracker = _chunkG2I4QJOTcjs.createDirtyTracker; exports.createDocxImportAdapter = _chunkPO6A6QQHcjs.createDocxImportAdapter; exports.createEditor = createEditor; exports.createFileImportController = createFileImportController; exports.createFindReplaceCommands = _chunkPO6A6QQHcjs.createFindReplaceCommands; exports.createHistoryManager = _chunkG2I4QJOTcjs.createHistoryManager; exports.createImportAdapterRegistry = _chunkPO6A6QQHcjs.createImportAdapterRegistry; exports.createImportContext = _chunkPO6A6QQHcjs.createImportContext; exports.createMentionExtension = _chunkPO6A6QQHcjs.createMentionExtension; exports.createOutlineStore = _chunkPO6A6QQHcjs.createOutlineStore; exports.createParagraphStylesStore = _chunkPO6A6QQHcjs.createParagraphStylesStore; exports.createPdfImportAdapter = createPdfImportAdapter; exports.createReviewId = _chunkX4N4WUKBcjs.createReviewId; exports.createRichTextPreset = _chunkPO6A6QQHcjs.createRichTextPreset; exports.createSearchBudget = _chunkPO6A6QQHcjs.createSearchBudget; exports.createSpreadsheetClipboardData = _chunkWSQKHXW7cjs.createSpreadsheetClipboardData; exports.createStyleRegistry = _chunkPO6A6QQHcjs.createStyleRegistry; exports.createZipImportAdapter = createZipImportAdapter; exports.crossReferencePluginKey = _chunkPO6A6QQHcjs.crossReferencePluginKey; exports.csvImportAdapter = _chunkWSQKHXW7cjs.csvImportAdapter; exports.dateValueToSerial = _chunkC7P22VIPcjs.dateValueToSerial; exports.defaultAutocorrectRules = _chunkPO6A6QQHcjs.defaultAutocorrectRules; exports.defaultIconThresholds = _chunkWSQKHXW7cjs.defaultIconThresholds; exports.defaultImportRegistry = _chunkPO6A6QQHcjs.defaultImportRegistry; exports.defaultIsEqual = _chunkG2I4QJOTcjs.defaultIsEqual; exports.deleteSheetInFormula = _chunkWSQKHXW7cjs.deleteSheetInFormula; exports.describeBlockChange = _chunkX4N4WUKBcjs.describeBlockChange; exports.describeConditionalFormat = _chunkWSQKHXW7cjs.describeConditionalFormat; exports.describeConditionalTag = _chunkMKA3AHLVcjs.describeConditionalTag; exports.describeDataValidation = _chunkWSQKHXW7cjs.describeDataValidation; exports.describeFormatChange = _chunkX4N4WUKBcjs.describeFormatChange; exports.describeFormulaError = _chunkC7P22VIPcjs.describeFormulaError; exports.detectDelimiter = _chunkP3RQ5UJEcjs.detectDelimiter; exports.diffChanges = _chunkAL6JMGWWcjs.diffChanges; exports.diffSequences = _chunkAL6JMGWWcjs.diffSequences; exports.documentStructureCommandItems = _chunkPO6A6QQHcjs.documentStructureCommandItems; exports.docxImportAdapter = _chunkPO6A6QQHcjs.docxImportAdapter; exports.docxToDocumentImport = _chunkPO6A6QQHcjs.docxToDocumentImport; exports.escapeCsvField = _chunkTNNJXF46cjs.escapeCsvField; exports.escapeHtml = _chunk7WISYZFOcjs.escapeHtml; exports.escapeVariableText = _chunkMKA3AHLVcjs.escapeVariableText; exports.evaluateCondition = _chunkMKA3AHLVcjs.evaluateCondition; exports.evaluateConditionExpression = _chunkMKA3AHLVcjs.evaluateConditionExpression; exports.evaluateConditionalFormats = _chunkWSQKHXW7cjs.evaluateConditionalFormats; exports.evaluatePromptTokens = _chunkFD4LPFAEcjs.evaluatePromptTokens; exports.expandReplacement = _chunkPO6A6QQHcjs.expandReplacement; exports.extractCellDependencies = _chunkWSQKHXW7cjs.extractCellDependencies; exports.extractInstructionNames = _chunkP3RQ5UJEcjs.extractInstructionNames; exports.extractMentions = _chunk7WISYZFOcjs.extractMentions; exports.extractMentionsFromDoc = _chunk7WISYZFOcjs.extractMentionsFromDoc; exports.extractNameDependencies = _chunkWSQKHXW7cjs.extractNameDependencies; exports.extractTemplateNames = _chunkP3RQ5UJEcjs.extractTemplateNames; exports.extractVariableNames = _chunkP3RQ5UJEcjs.extractVariableNames; exports.extractVariables = _chunkP3RQ5UJEcjs.extractVariables; exports.fileImportPluginKey = _chunkPO6A6QQHcjs.fileImportPluginKey; exports.fillSeries = _chunkWSQKHXW7cjs.fillSeries; exports.findAllMatches = _chunkPO6A6QQHcjs.findAllMatches; exports.findAutocorrection = _chunkPO6A6QQHcjs.findAutocorrection; exports.findCommentRanges = _chunkPO6A6QQHcjs.findCommentRanges; exports.findDataValidation = _chunkWSQKHXW7cjs.findDataValidation; exports.findHexColors = _chunkPO6A6QQHcjs.findHexColors; exports.findImportAdapter = _chunkPO6A6QQHcjs.findImportAdapter; exports.findInvalidCells = _chunkWSQKHXW7cjs.findInvalidCells; exports.findReplacePluginKey = _chunkPO6A6QQHcjs.findReplacePluginKey; exports.findTextMentions = _chunkBVP3TSLHcjs.findTextMentions; exports.foldCodePoint = _chunkPO6A6QQHcjs.foldCodePoint; exports.footnotesMarkdownIt = _chunkPO6A6QQHcjs.footnotesMarkdownIt; exports.footnotesPluginKey = _chunkPO6A6QQHcjs.footnotesPluginKey; exports.forEachRangeCell = _chunkWSQKHXW7cjs.forEachRangeCell; exports.formatCellDisplay = _chunkWSQKHXW7cjs.formatCellDisplay; exports.formatCellForDisplay = _chunkWSQKHXW7cjs.formatCellForDisplay; exports.formatComparisonOperand = _chunkMKA3AHLVcjs.formatComparisonOperand; exports.formatConditionalTag = _chunkMKA3AHLVcjs.formatConditionalTag; exports.formatFindStatus = _chunkPO6A6QQHcjs.formatFindStatus; exports.formatGeneralFit = _chunkC7P22VIPcjs.formatGeneralFit; exports.formatMentionText = _chunkBVP3TSLHcjs.formatMentionText; exports.formatNumberFormatValue = _chunkC7P22VIPcjs.formatNumberFormatValue; exports.formatReviewTime = _chunkX4N4WUKBcjs.formatReviewTime; exports.formatRuleRanges = _chunkWSQKHXW7cjs.formatRuleRanges; exports.formatSheetPrefix = _chunkWSQKHXW7cjs.formatSheetPrefix; exports.formatTextFunction = _chunkC7P22VIPcjs.formatTextFunction; exports.formatValueWithCode = _chunkWSQKHXW7cjs.formatValueWithCode; exports.formulaIdentifiers = _chunkWSQKHXW7cjs.formulaIdentifiers; exports.fractionRules = _chunkPO6A6QQHcjs.fractionRules; exports.getActiveHeading = _chunkPO6A6QQHcjs.getActiveHeading; exports.getBookmarks = _chunkPO6A6QQHcjs.getBookmarks; exports.getClipboardData = _chunkV3CHHWOEcjs.getClipboardData; exports.getCommentAnchors = _chunkPO6A6QQHcjs.getCommentAnchors; exports.getCommentAuthor = _chunkPO6A6QQHcjs.getCommentAuthor; exports.getCommentIdsAt = _chunkPO6A6QQHcjs.getCommentIdsAt; exports.getCommentStore = _chunkPO6A6QQHcjs.getCommentStore; exports.getConditionalFormatCss = _chunkWSQKHXW7cjs.getConditionalFormatCss; exports.getConditionalFormatIcon = _chunkWSQKHXW7cjs.getConditionalFormatIcon; exports.getCrossReferenceTargets = _chunkPO6A6QQHcjs.getCrossReferenceTargets; exports.getDataBarCss = _chunkWSQKHXW7cjs.getDataBarCss; exports.getDocumentStructureCommandItems = _chunkPO6A6QQHcjs.getDocumentStructureCommandItems; exports.getEditorMarkdown = _chunk7WISYZFOcjs.getEditorMarkdown; exports.getEditorText = _chunk7WISYZFOcjs.getEditorText; exports.getFillDirection = _chunkWSQKHXW7cjs.getFillDirection; exports.getFindReplaceState = _chunkPO6A6QQHcjs.getFindReplaceState; exports.getFindReplaceStore = _chunkPO6A6QQHcjs.getFindReplaceStore; exports.getFootnotes = _chunkPO6A6QQHcjs.getFootnotes; exports.getFormulaArgumentSpecIndex = _chunkC7P22VIPcjs.getFormulaArgumentSpecIndex; exports.getFormulaCaretContext = _chunkWSQKHXW7cjs.getFormulaCaretContext; exports.getFormulaFunction = _chunkC7P22VIPcjs.getFormulaFunction; exports.getFormulaHints = _chunkWSQKHXW7cjs.getFormulaHints; exports.getFormulaSignature = _chunkC7P22VIPcjs.getFormulaSignature; exports.getFormulaSignatureParts = _chunkC7P22VIPcjs.getFormulaSignatureParts; exports.getImportAccept = _chunkPO6A6QQHcjs.getImportAccept; exports.getLatestVersion = _chunkFD4LPFAEcjs.getLatestVersion; exports.getMentionNodes = _chunkPO6A6QQHcjs.getMentionNodes; exports.getNameManagerRows = _chunkWSQKHXW7cjs.getNameManagerRows; exports.getOutline = _chunkPO6A6QQHcjs.getOutline; exports.getParagraphStyleAt = _chunkPO6A6QQHcjs.getParagraphStyleAt; exports.getPromptDiagnostics = _chunkFD4LPFAEcjs.getPromptDiagnostics; exports.getRowSection = _chunkWSQKHXW7cjs.getRowSection; exports.getSchemaSignature = _chunkV3CHHWOEcjs.getSchemaSignature; exports.getSheetTabMenuItems = _chunkWSQKHXW7cjs.getSheetTabMenuItems; exports.getSpreadsheetMenuItems = _chunkWSQKHXW7cjs.getSpreadsheetMenuItems; exports.getStyleRegistry = _chunkPO6A6QQHcjs.getStyleRegistry; exports.getSuppliedValue = _chunkMKA3AHLVcjs.getSuppliedValue; exports.getTableOfContentsEntries = _chunkPO6A6QQHcjs.getTableOfContentsEntries; exports.getTableSections = _chunkWSQKHXW7cjs.getTableSections; exports.getTemplateBody = _chunkFD4LPFAEcjs.getTemplateBody; exports.getTrackChangesStore = _chunkX4N4WUKBcjs.getTrackChangesStore; exports.getTrackedChangeAt = _chunkX4N4WUKBcjs.getTrackedChangeAt; exports.getTrackedChanges = _chunkX4N4WUKBcjs.getTrackedChanges; exports.getValidationListValues = _chunkWSQKHXW7cjs.getValidationListValues; exports.getVariableFormFields = _chunkP3RQ5UJEcjs.getVariableFormFields; exports.handleImageInsertion = _chunkPO6A6QQHcjs.handleImageInsertion; exports.htmlImportAdapter = _chunkPO6A6QQHcjs.htmlImportAdapter; exports.htmlToPlainText = _chunk7WISYZFOcjs.htmlToPlainText; exports.htmlToSlice = _chunkPO6A6QQHcjs.htmlToSlice; exports.imagePastePluginKey = _chunkPO6A6QQHcjs.imagePastePluginKey; exports.importFile = _chunkPO6A6QQHcjs.importFile; exports.importFileIntoSpreadsheet = _chunkWSQKHXW7cjs.importFileIntoSpreadsheet; exports.importFilesIntoEditor = _chunkPO6A6QQHcjs.importFilesIntoEditor; exports.indexToColName = _chunkC7P22VIPcjs.indexToColName; exports.insertImageNode = _chunkPO6A6QQHcjs.insertImageNode; exports.insertImportedDocument = _chunkPO6A6QQHcjs.insertImportedDocument; exports.instructionRegex = _chunkMKA3AHLVcjs.instructionRegex; exports.isBlankValue = _chunkWSQKHXW7cjs.isBlankValue; exports.isFormulaError = _chunkC7P22VIPcjs.isFormulaError; exports.isFormulaLambda = _chunkC7P22VIPcjs.isFormulaLambda; exports.isGeneralNumberFormat = _chunkWSQKHXW7cjs.isGeneralNumberFormat; exports.isInsidePromptToken = _chunkPO6A6QQHcjs.isInsidePromptToken; exports.isLambdaDefinition = _chunkWSQKHXW7cjs.isLambdaDefinition; exports.isMoveSized = _chunkX4N4WUKBcjs.isMoveSized; exports.isParagraphStyleAvailable = _chunkPO6A6QQHcjs.isParagraphStyleAvailable; exports.isPromptValueSet = _chunkMKA3AHLVcjs.isPromptValueSet; exports.isSingleCellRange = _chunkWSQKHXW7cjs.isSingleCellRange; exports.isTrackChangesEnabled = _chunkX4N4WUKBcjs.isTrackChangesEnabled; exports.isUnsafeZipPath = _chunkPO6A6QQHcjs.isUnsafeZipPath; exports.isValidStyleId = _chunkPO6A6QQHcjs.isValidStyleId; exports.listFormulaFunctions = _chunkC7P22VIPcjs.listFormulaFunctions; exports.mapFormulaReferences = _chunkWSQKHXW7cjs.mapFormulaReferences; exports.mapRawOffsetToResolved = _chunkP3RQ5UJEcjs.mapRawOffsetToResolved; exports.mapResolvedOffsetToRaw = _chunkP3RQ5UJEcjs.mapResolvedOffsetToRaw; exports.markdownImportAdapter = _chunkPO6A6QQHcjs.markdownImportAdapter; exports.markdownToTipTapHtml = _chunk7WISYZFOcjs.markdownToTipTapHtml; exports.matchConditionalTags = _chunkMKA3AHLVcjs.matchConditionalTags; exports.matchFields = _chunkP3RQ5UJEcjs.matchFields; exports.matchesFilterRule = _chunkWSQKHXW7cjs.matchesFilterRule; exports.matchesTimePeriod = _chunkWSQKHXW7cjs.matchesTimePeriod; exports.mergeRecords = _chunkP3RQ5UJEcjs.mergeRecords; exports.navigateToHeading = _chunkPO6A6QQHcjs.navigateToHeading; exports.nextSheetName = _chunkWSQKHXW7cjs.nextSheetName; exports.normalizeFieldKey = _chunkP3RQ5UJEcjs.normalizeFieldKey; exports.normalizeFieldNames = _chunkP3RQ5UJEcjs.normalizeFieldNames; exports.normalizeRange = _chunkWSQKHXW7cjs.normalizeRange; exports.numberFormatColorToCss = _chunkC7P22VIPcjs.numberFormatColorToCss; exports.numberFormatForCellFormat = _chunkWSQKHXW7cjs.numberFormatForCellFormat; exports.numberToText = _chunkC7P22VIPcjs.numberToText; exports.offsetFormulaReferences = _chunkWSQKHXW7cjs.offsetFormulaReferences; exports.outlinePluginKey = _chunkPO6A6QQHcjs.outlinePluginKey; exports.paragraphStylesPluginKey = _chunkPO6A6QQHcjs.paragraphStylesPluginKey; exports.parseCellInput = _chunkC7P22VIPcjs.parseCellInput; exports.parseCellReference = _chunkC7P22VIPcjs.parseCellReference; exports.parseComparison = _chunkMKA3AHLVcjs.parseComparison; exports.parseConditionExpression = _chunkMKA3AHLVcjs.parseConditionExpression; exports.parseCriteria = _chunkC7P22VIPcjs.parseCriteria; exports.parseCsv = _chunkTNNJXF46cjs.parseCsv; exports.parseDataSource = _chunkP3RQ5UJEcjs.parseDataSource; exports.parseFormula = _chunkC7P22VIPcjs.parseFormula; exports.parseHtmlTable = _chunkWSQKHXW7cjs.parseHtmlTable; exports.parseMentionSegments = _chunk7WISYZFOcjs.parseMentionSegments; exports.parseNumberText = _chunkC7P22VIPcjs.parseNumberText; exports.parseRange = _chunkC7P22VIPcjs.parseRange; exports.parseReplacement = _chunkPO6A6QQHcjs.parseReplacement; exports.parseRichClipboardPayload = _chunkV3CHHWOEcjs.parseRichClipboardPayload; exports.parseRuleRanges = _chunkWSQKHXW7cjs.parseRuleRanges; exports.parseTsv = _chunkTNNJXF46cjs.parseTsv; exports.parseVariableBody = _chunkMKA3AHLVcjs.parseVariableBody; exports.pdfLayoutBlocksToHtml = pdfLayoutBlocksToHtml; exports.pdfOperatorListToRules = pdfOperatorListToRules; exports.pdfTextItemsToParagraphs = pdfTextItemsToParagraphs; exports.pdfTextItemsToRuns = pdfTextItemsToRuns; exports.pickImportFiles = pickImportFiles; exports.plainTextImportAdapter = _chunkPO6A6QQHcjs.plainTextImportAdapter; exports.plainTextToParagraphHtml = _chunkV3CHHWOEcjs.plainTextToParagraphHtml; exports.plainTextToSlice = _chunk7WISYZFOcjs.plainTextToSlice; exports.plainTextToTipTapHtml = _chunk7WISYZFOcjs.plainTextToTipTapHtml; exports.preprocessMarkdownFileLinks = _chunk7WISYZFOcjs.preprocessMarkdownFileLinks; exports.preprocessMarkdownMentions = _chunk7WISYZFOcjs.preprocessMarkdownMentions; exports.quoteSheetName = _chunkWSQKHXW7cjs.quoteSheetName; exports.rangeContains = _chunkWSQKHXW7cjs.rangeContains; exports.rangeContainsRange = _chunkWSQKHXW7cjs.rangeContainsRange; exports.rangesContain = _chunkWSQKHXW7cjs.rangesContain; exports.rangesIntersect = _chunkWSQKHXW7cjs.rangesIntersect; exports.readRichClipboard = _chunkV3CHHWOEcjs.readRichClipboard; exports.readSpreadsheetClipboard = _chunkWSQKHXW7cjs.readSpreadsheetClipboard; exports.readZip = _chunkPO6A6QQHcjs.readZip; exports.rebaseClipboardRows = _chunkWSQKHXW7cjs.rebaseClipboardRows; exports.recordToValues = _chunkP3RQ5UJEcjs.recordToValues; exports.registerFormulaFunction = _chunkC7P22VIPcjs.registerFormulaFunction; exports.registerImportAdapter = _chunkPO6A6QQHcjs.registerImportAdapter; exports.registerSpreadsheetImportAdapters = _chunkWSQKHXW7cjs.registerSpreadsheetImportAdapters; exports.remapFormulaReferences = _chunkWSQKHXW7cjs.remapFormulaReferences; exports.removeImageNode = _chunkPO6A6QQHcjs.removeImageNode; exports.renameNameInFormula = _chunkWSQKHXW7cjs.renameNameInFormula; exports.renameSheetInFormula = _chunkWSQKHXW7cjs.renameSheetInFormula; exports.resolvePrompt = _chunkFD4LPFAEcjs.resolvePrompt; exports.resolveTemplates = _chunkP3RQ5UJEcjs.resolveTemplates; exports.resolveTemplatesWithMapping = _chunkP3RQ5UJEcjs.resolveTemplatesWithMapping; exports.resolveTrackedChanges = _chunkX4N4WUKBcjs.resolveTrackedChanges; exports.resolveVariables = _chunkP3RQ5UJEcjs.resolveVariables; exports.richClipboardPluginKey = _chunkPO6A6QQHcjs.richClipboardPluginKey; exports.roundFloat = _chunkWSQKHXW7cjs.roundFloat; exports.rowPassesFilters = _chunkWSQKHXW7cjs.rowPassesFilters; exports.rtfImportAdapter = _chunkPO6A6QQHcjs.rtfImportAdapter; exports.rtfToPlainText = _chunkV3CHHWOEcjs.rtfToPlainText; exports.ruleAnchor = _chunkWSQKHXW7cjs.ruleAnchor; exports.ruleFormulaAt = _chunkWSQKHXW7cjs.ruleFormulaAt; exports.runSpreadsheetMenuItem = _chunkWSQKHXW7cjs.runSpreadsheetMenuItem; exports.safeCSSValue = _chunkPO6A6QQHcjs.safeCSSValue; exports.sanitizeHtml = _chunk7WISYZFOcjs.sanitizeHtml; exports.sanitizeImportedHtml = _chunkV3CHHWOEcjs.sanitizeImportedHtml; exports.searchDocument = _chunkPO6A6QQHcjs.searchDocument; exports.searchFormulaFunctions = _chunkC7P22VIPcjs.searchFormulaFunctions; exports.serialFromYmd = _chunkC7P22VIPcjs.serialFromYmd; exports.serializeCsv = _chunkTNNJXF46cjs.serializeCsv; exports.serializeHtmlTable = _chunkWSQKHXW7cjs.serializeHtmlTable; exports.serializeMergeOutputs = _chunkP3RQ5UJEcjs.serializeMergeOutputs; exports.serializeRichClipboardPayload = _chunkV3CHHWOEcjs.serializeRichClipboardPayload; exports.serializeTsv = _chunkTNNJXF46cjs.serializeTsv; exports.setMentionRoleAt = _chunkPO6A6QQHcjs.setMentionRoleAt; exports.setMentionRoleInText = _chunkBVP3TSLHcjs.setMentionRoleInText; exports.sheetDropIndex = _chunkWSQKHXW7cjs.sheetDropIndex; exports.sheetNameNeedsQuotes = _chunkWSQKHXW7cjs.sheetNameNeedsQuotes; exports.shiftFormulaReferences = _chunkWSQKHXW7cjs.shiftFormulaReferences; exports.shiftRuleFormula = _chunkWSQKHXW7cjs.shiftRuleFormula; exports.smartQuoteRules = _chunkPO6A6QQHcjs.smartQuoteRules; exports.smilieAutocorrectRules = _chunkPO6A6QQHcjs.smilieAutocorrectRules; exports.sortCompareValues = _chunkC7P22VIPcjs.sortCompareValues; exports.sortZipEntryNames = sortZipEntryNames; exports.stripMarkdownCode = _chunk7WISYZFOcjs.stripMarkdownCode; exports.subtractRange = _chunkWSQKHXW7cjs.subtractRange; exports.subtractRangeFromRanges = _chunkWSQKHXW7cjs.subtractRangeFromRanges; exports.summarizeImportStructure = summarizeImportStructure; exports.symbolRules = _chunkPO6A6QQHcjs.symbolRules; exports.syncFootnotes = _chunkPO6A6QQHcjs.syncFootnotes; exports.tableOfContentsMarkdownIt = _chunkPO6A6QQHcjs.tableOfContentsMarkdownIt; exports.tableOfContentsPluginKey = _chunkPO6A6QQHcjs.tableOfContentsPluginKey; exports.templateRegex = _chunkMKA3AHLVcjs.templateRegex; exports.toNumber = _chunkWSQKHXW7cjs.toNumber; exports.tokenizeFormula = _chunkC7P22VIPcjs.tokenizeFormula; exports.tokenizePrompt = _chunkFD4LPFAEcjs.tokenizePrompt; exports.tokenizePromptWithDiagnostics = _chunkFD4LPFAEcjs.tokenizePromptWithDiagnostics; exports.trackChangesPluginKey = _chunkX4N4WUKBcjs.trackChangesPluginKey; exports.trackedChangeLabel = _chunkX4N4WUKBcjs.trackedChangeLabel; exports.tsvImportAdapter = _chunkWSQKHXW7cjs.tsvImportAdapter; exports.twoInitialCapitalsRules = _chunkPO6A6QQHcjs.twoInitialCapitalsRules; exports.unescapeVariableText = _chunkMKA3AHLVcjs.unescapeVariableText; exports.unregisterFormulaFunction = _chunkC7P22VIPcjs.unregisterFormulaFunction; exports.unregisterImportAdapter = _chunkPO6A6QQHcjs.unregisterImportAdapter; exports.updateImageSrc = _chunkPO6A6QQHcjs.updateImageSrc; exports.validateCellInput = _chunkWSQKHXW7cjs.validateCellInput; exports.validateDefinedName = _chunkWSQKHXW7cjs.validateDefinedName; exports.validateFindPattern = _chunkPO6A6QQHcjs.validateFindPattern; exports.validateSheetName = _chunkWSQKHXW7cjs.validateSheetName; exports.variableRegex = _chunkMKA3AHLVcjs.variableRegex; exports.wildcardToRegExp = _chunkC7P22VIPcjs.wildcardToRegExp; exports.withoutDirty = _chunkG2I4QJOTcjs.withoutDirty; exports.writeRichClipboard = _chunkPO6A6QQHcjs.writeRichClipboard; exports.zipCrc32 = _chunkPO6A6QQHcjs.zipCrc32; exports.zipEntryTitle = zipEntryTitle; exports.zipImportAdapter = zipImportAdapter;
1006
2589
  //# sourceMappingURL=index.cjs.map