@harbour-enterprises/superdoc 0.24.0 → 0.25.0-next.1

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 (34) hide show
  1. package/dist/chunks/{PdfViewer-BiHh3x6b.es.js → PdfViewer-BEbvklge.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-qk_hITc5.cjs → PdfViewer-CvksDDwi.cjs} +1 -1
  3. package/dist/chunks/{index-aMnFs35I.es.js → index-B9Ad3j3k.es.js} +166 -76
  4. package/dist/chunks/{index-Di6nG2sc.cjs → index-Bf3lSVG2.cjs} +166 -76
  5. package/dist/chunks/{super-editor.es-Dz7y81Yr.es.js → super-editor.es--RpCOiR4.es.js} +157 -15
  6. package/dist/chunks/{super-editor.es-BKZvTraR.cjs → super-editor.es-Bh07I_ue.cjs} +157 -15
  7. package/dist/core/SuperDoc.d.ts +20 -0
  8. package/dist/core/SuperDoc.d.ts.map +1 -1
  9. package/dist/core/collaboration/permissions.d.ts +7 -1
  10. package/dist/core/collaboration/permissions.d.ts.map +1 -1
  11. package/dist/core/types/index.d.ts +23 -1
  12. package/dist/core/types/index.d.ts.map +1 -1
  13. package/dist/style.css +55 -55
  14. package/dist/super-editor/ai-writer.es.js +2 -2
  15. package/dist/super-editor/chunks/{converter-CI3WqmGV.js → converter-gSy6s2VK.js} +1 -1
  16. package/dist/super-editor/chunks/{docx-zipper-D4fk50d9.js → docx-zipper-CceGxV02.js} +1 -1
  17. package/dist/super-editor/chunks/{editor-DC6pZVp1.js → editor-CyBtLJFF.js} +116 -16
  18. package/dist/super-editor/chunks/{toolbar-DMobfM6u.js → toolbar-1Ejr8Exl.js} +2 -2
  19. package/dist/super-editor/converter.es.js +1 -1
  20. package/dist/super-editor/docx-zipper.es.js +2 -2
  21. package/dist/super-editor/editor.es.js +3 -3
  22. package/dist/super-editor/file-zipper.es.js +1 -1
  23. package/dist/super-editor/super-editor/src/components/slash-menu/tests/testHelpers.d.ts +1 -0
  24. package/dist/super-editor/super-editor/src/core/Editor.d.ts +18 -0
  25. package/dist/super-editor/super-editor/src/extensions/track-changes/permission-helpers.d.ts +110 -0
  26. package/dist/super-editor/super-editor.es.js +66 -21
  27. package/dist/super-editor/toolbar.es.js +2 -2
  28. package/dist/super-editor.cjs +1 -1
  29. package/dist/super-editor.es.js +1 -1
  30. package/dist/superdoc.cjs +2 -2
  31. package/dist/superdoc.es.js +2 -2
  32. package/dist/superdoc.umd.js +321 -89
  33. package/dist/superdoc.umd.js.map +1 -1
  34. package/package.json +1 -1
@@ -74,7 +74,17 @@ export type Modules = {
74
74
  /**
75
75
  * Comments module configuration
76
76
  */
77
- comments?: any;
77
+ comments?: {
78
+ permissionResolver?: (params: {
79
+ permission: string;
80
+ role?: string;
81
+ isInternal?: boolean;
82
+ comment?: any | null;
83
+ trackedChange?: any | null;
84
+ currentUser?: User | null;
85
+ superdoc?: SuperDoc | null;
86
+ }) => boolean | undefined;
87
+ };
78
88
  /**
79
89
  * AI module configuration
80
90
  */
@@ -266,6 +276,18 @@ export type Config = {
266
276
  * Modules to load
267
277
  */
268
278
  modules?: Modules;
279
+ /**
280
+ * Top-level override for permission checks
281
+ */
282
+ permissionResolver?: (params: {
283
+ permission: string;
284
+ role?: string;
285
+ isInternal?: boolean;
286
+ comment?: any | null;
287
+ trackedChange?: any | null;
288
+ currentUser?: User | null;
289
+ superdoc?: SuperDoc | null;
290
+ }) => boolean | undefined;
269
291
  /**
270
292
  * Whether to show pagination in SuperEditors
271
293
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":";;;;;;;UAEc,MAAM;;;;WACN,MAAM;;;;YACN,MAAM,GAAG,IAAI;;;;;;;;;cAKb,OAAO;;;;iBACP,MAAM;;;;eACN,MAAM;;;;sBACN,MAAM;;;;;;SAKN,MAAM;;;;UACN,MAAM;;;;WACN,IAAI,GAAG,IAAI,GAAG,IAAI;;;;WAClB,MAAM;;;;UACN,MAAM;;;;gBACN,OAAO;;;;WACP,OAAO,KAAK,EAAE,GAAG;;;;eACjB,OAAO,sBAAsB,EAAE,kBAAkB;;;;;;;;;;SAO5D;QAAuB,MAAM,GAAlB,MAAM;QACM,QAAQ,GAApB,MAAM;KACjB;;;;;;;;;;;;gBAGA;QAA6B,WAAW;QACR,YAAY;QACb,mBAAmB,GAAvC,OAAO;KACpB;;;;;;;;;;;;;;sBAiFmlnf,aAAa;;;;;;;;;;;yBAA+xJ,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAAkpZ,aAAa;sBAA97sB,aAAa;8CAA0uX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAAorsB,UAAU;8CAAuV,UAAU,aAA+E,UAAU;gCAAgZ,UAAU;;;;;;;;;;uBA9E/2ihB,OAAO,gBAAgB,EAAE,QAAQ;2BAGlC,SAAS,GAAG,SAAS,GAAG,YAAY;yBAIpC,MAAM,GAAG,KAAK,GAAG,MAAM;;;;;2BAIvB,UAAU,GAAG,OAAO;;;;;iBAOnB,UAAU,EAAE;;;;mBACZ,YAAY;;;;mBACZ,MAAM;;;;sBACN,OAAO;;;;2BACP,MAAM;;;;;;iBAKN,MAAM;;;;cACN,MAAM,GAAG,WAAW;;;;kBACpB,YAAY;;;;WACZ,QAAQ,GAAG,QAAQ,GAAG,WAAW;;;;eACjC,MAAS,MAAM,GAAG,IAAI,GAAG,IAAI;;;;gBAC7B,KAAK,CAAC,QAAQ,CAAC;;;;WACf,IAAI;;;;YACJ,KAAK,CAAC,IAAI,CAAC;;;;aACX,KAAK,CAAC,MAAM,CAAC;;;;cACb,OAAO;;;;iBACP,OAAO;;;;cACP,MAAM;;;;oBACN,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;;YAGb,OAAO;;;;gBACP,eAAe;;;;2BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;;;;qBACxB,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;;;;oBACxB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;sBACxE,MAAM,IAAI;;;;qBACV,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI;;;;cACnF,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KAAK,IAAI;;;;uBACxC,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI;;;;wBAC/C,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,MAAM,QAAO;KAAE,KAAK,IAAI;;;;eACtD,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI;;;;yBACvD,MAAM,IAAI;;;;sBACV,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;;;;2BAC3B,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;qBACpC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;kBACpC,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;;;2BAClC,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;;;;8BACzC,CAAC,MAAM,EAAE,EAAE,KAAC,GAAA;;;;aACZ,MAAM;;;;uBACN,KAAQ;;;;iBACR,OAAO;;;;YACP,MAAM;;;;oBACN,KAAQ;;;;eACR,OAAO;;;;wBACP,CAAS,IAAI,EAAJ,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC;;;;eAC/B,IAAI;;;;aACJ,OAAO;;;;gCACP,OAAO;;;;;;;;yBAEP,OAAO;;;;WACP,MAAM;;;;eACN,MAAM;;;;cACN,OAAO"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":";;;;;;;UAEc,MAAM;;;;WACN,MAAM;;;;YACN,MAAM,GAAG,IAAI;;;;;;;;;cAKb,OAAO;;;;iBACP,MAAM;;;;eACN,MAAM;;;;sBACN,MAAM;;;;;;SAKN,MAAM;;;;UACN,MAAM;;;;WACN,IAAI,GAAG,IAAI,GAAG,IAAI;;;;WAClB,MAAM;;;;UACN,MAAM;;;;gBACN,OAAO;;;;WACP,OAAO,KAAK,EAAE,GAAG;;;;eACjB,OAAO,sBAAsB,EAAE,kBAAkB;;;;;;eAM5D;QAQqC,kBAAkB,GAR5C,CAAC,MAAM,EAAE;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,OAAO,CAAC,EAAE,MAAS,IAAI,CAAC;YACxB,aAAa,CAAC,EAAE,MAAS,IAAI,CAAC;YAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;YAC1B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;SAC5B,KAAK,OAAO,GAAG,SAAS;KACzB;;;;SACA;QAAuB,MAAM,GAAlB,MAAM;QACM,QAAQ,GAApB,MAAM;KACjB;;;;;;;;;;;;gBAGA;QAA6B,WAAW;QACR,YAAY;QACb,mBAAmB,GAAvC,OAAO;KACpB;;;;;;;;;;;;;;sBA0Fo+lf,aAAa;;;;;;;;;;;yBAA+xJ,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAAkpZ,aAAa;sBAA99sB,aAAa;8CAA0wX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAAorsB,UAAU;8CAAuV,UAAU,aAA+E,UAAU;gCAAgZ,UAAU;;;;;;;;;;uBAvFhwhhB,OAAO,gBAAgB,EAAE,QAAQ;2BAGlC,SAAS,GAAG,SAAS,GAAG,YAAY;yBAIpC,MAAM,GAAG,KAAK,GAAG,MAAM;;;;;2BAIvB,UAAU,GAAG,OAAO;;;;;iBAOnB,UAAU,EAAE;;;;mBACZ,YAAY;;;;mBACZ,MAAM;;;;sBACN,OAAO;;;;2BACP,MAAM;;;;;;iBAKN,MAAM;;;;cACN,MAAM,GAAG,WAAW;;;;kBACpB,YAAY;;;;WACZ,QAAQ,GAAG,QAAQ,GAAG,WAAW;;;;eACjC,MAAS,MAAM,GAAG,IAAI,GAAG,IAAI;;;;gBAC7B,KAAK,CAAC,QAAQ,CAAC;;;;WACf,IAAI;;;;YACJ,KAAK,CAAC,IAAI,CAAC;;;;aACX,KAAK,CAAC,MAAM,CAAC;;;;cACb,OAAO;;;;yBACP,CAAC,MAAM,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAS,IAAI,CAAC;QACxB,aAAa,CAAC,EAAE,MAAS,IAAI,CAAC;QAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;KAC5B,KAAK,OAAO,GAAG,SAAS;;;;iBACd,OAAO;;;;cACP,MAAM;;;;oBACN,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;;YAGb,OAAO;;;;gBACP,eAAe;;;;2BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;;;;qBACxB,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;;;;oBACxB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;sBACxE,MAAM,IAAI;;;;qBACV,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI;;;;cACnF,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KAAK,IAAI;;;;uBACxC,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI;;;;wBAC/C,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,MAAM,QAAO;KAAE,KAAK,IAAI;;;;eACtD,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI;;;;yBACvD,MAAM,IAAI;;;;sBACV,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;;;;2BAC3B,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;qBACpC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;;;;kBACpC,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;;;2BAClC,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;;;;8BACzC,CAAC,MAAM,EAAE,EAAE,KAAC,GAAA;;;;aACZ,MAAM;;;;uBACN,KAAQ;;;;iBACR,OAAO;;;;YACP,MAAM;;;;oBACN,KAAQ;;;;eACR,OAAO;;;;wBACP,CAAS,IAAI,EAAJ,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC;;;;eAC/B,IAAI;;;;aACJ,OAAO;;;;gCACP,OAAO;;;;;;;;yBAEP,OAAO;;;;WACP,MAAM;;;;eACN,MAAM;;;;cACN,OAAO"}
package/dist/style.css CHANGED
@@ -179,40 +179,40 @@ span[data-v-53e13009] {
179
179
  fill: currentColor;
180
180
  }
181
181
 
182
- .comment-header[data-v-27b7739c] {
182
+ .comment-header[data-v-0f4f53ef] {
183
183
  display: flex;
184
184
  align-items: center;
185
185
  justify-content: space-between;
186
186
  margin-bottom: 10px;
187
187
  }
188
- .comment-header-left[data-v-27b7739c] {
188
+ .comment-header-left[data-v-0f4f53ef] {
189
189
  display: flex;
190
190
  justify-content: space-between;
191
191
  align-items: center;
192
192
  }
193
- .avatar[data-v-27b7739c] {
193
+ .avatar[data-v-0f4f53ef] {
194
194
  margin-right: 10px;
195
195
  }
196
- .user-info[data-v-27b7739c] {
196
+ .user-info[data-v-0f4f53ef] {
197
197
  display: flex;
198
198
  flex-direction: column;
199
199
  font-size: 12px;
200
200
  }
201
- .user-name[data-v-27b7739c] {
201
+ .user-name[data-v-0f4f53ef] {
202
202
  font-weight: 600;
203
203
  line-height: 1.2em;
204
204
  }
205
- .user-timestamp[data-v-27b7739c] {
205
+ .user-timestamp[data-v-0f4f53ef] {
206
206
  line-height: 1.2em;
207
207
  font-size: 12px;
208
208
  color: #999;
209
209
  }
210
- .overflow-menu[data-v-27b7739c] {
210
+ .overflow-menu[data-v-0f4f53ef] {
211
211
  flex-shrink: 1;
212
212
  display: flex;
213
213
  gap: 6px;
214
214
  }
215
- .overflow-menu__icon[data-v-27b7739c] {
215
+ .overflow-menu__icon[data-v-0f4f53ef] {
216
216
  box-sizing: content-box;
217
217
  justify-content: center;
218
218
  align-items: center;
@@ -224,16 +224,16 @@ span[data-v-53e13009] {
224
224
  cursor: pointer;
225
225
  transition: all 250ms ease;
226
226
  }
227
- .overflow-menu__icon[data-v-27b7739c]:hover {
227
+ .overflow-menu__icon[data-v-0f4f53ef]:hover {
228
228
  background-color: #dbdbdb;
229
229
  }
230
- .overflow-menu__icon[data-v-27b7739c] svg {
230
+ .overflow-menu__icon[data-v-0f4f53ef] svg {
231
231
  width: 100%;
232
232
  height: 100%;
233
233
  display: block;
234
234
  fill: currentColor;
235
235
  }
236
- .overflow-icon[data-v-27b7739c] {
236
+ .overflow-icon[data-v-0f4f53ef] {
237
237
  display: inline-flex;
238
238
  justify-content: center;
239
239
  align-items: center;
@@ -253,32 +253,32 @@ span[data-v-53e13009] {
253
253
  display: inline-block;
254
254
  }
255
255
 
256
- .change-type[data-v-e07f3426] {
256
+ .change-type[data-v-36e5f63e] {
257
257
  font-style: italic;
258
258
  font-weight: 600;
259
259
  font-size: 10px;
260
260
  color: #555;
261
261
  }
262
- .tracked-change[data-v-e07f3426] {
262
+ .tracked-change[data-v-36e5f63e] {
263
263
  font-size: 12px;
264
264
  }
265
- .tracked-change-text[data-v-e07f3426] {
265
+ .tracked-change-text[data-v-36e5f63e] {
266
266
  color: #111;
267
267
  }
268
- .comment-separator[data-v-e07f3426] {
268
+ .comment-separator[data-v-36e5f63e] {
269
269
  background-color: #dbdbdb;
270
270
  height: 1px;
271
271
  width: 100%;
272
272
  margin: 10px 0;
273
273
  font-weight: 400;
274
274
  }
275
- .existing-internal-input[data-v-e07f3426] {
275
+ .existing-internal-input[data-v-36e5f63e] {
276
276
  margin-bottom: 10px;
277
277
  }
278
- .initial-internal-dropdown[data-v-e07f3426] {
278
+ .initial-internal-dropdown[data-v-36e5f63e] {
279
279
  margin-top: 10px;
280
280
  }
281
- .comments-dialog[data-v-e07f3426] {
281
+ .comments-dialog[data-v-36e5f63e] {
282
282
  display: flex;
283
283
  flex-direction: column;
284
284
  padding: 10px 15px;
@@ -293,39 +293,39 @@ span[data-v-53e13009] {
293
293
  min-width: 200px;
294
294
  width: 100%;
295
295
  }
296
- .is-active[data-v-e07f3426] {
296
+ .is-active[data-v-36e5f63e] {
297
297
  z-index: 10;
298
298
  }
299
- .input-section[data-v-e07f3426] {
299
+ .input-section[data-v-36e5f63e] {
300
300
  margin-top: 10px;
301
301
  }
302
- .sd-button[data-v-e07f3426] {
302
+ .sd-button[data-v-36e5f63e] {
303
303
  font-size: 12px;
304
304
  margin-left: 5px;
305
305
  }
306
- .comment[data-v-e07f3426] {
306
+ .comment[data-v-36e5f63e] {
307
307
  font-size: 13px;
308
308
  margin: 10px 0;
309
309
  }
310
- .is-resolved[data-v-e07f3426] {
310
+ .is-resolved[data-v-36e5f63e] {
311
311
  background-color: #f0f0f0;
312
312
  }
313
- .comment-footer[data-v-e07f3426] {
313
+ .comment-footer[data-v-36e5f63e] {
314
314
  margin: 5px 0 5px;
315
315
  display: flex;
316
316
  justify-content: flex-end;
317
317
  width: 100%;
318
318
  }
319
- .internal-dropdown[data-v-e07f3426] {
319
+ .internal-dropdown[data-v-36e5f63e] {
320
320
  display: inline-block;
321
321
  }
322
- .comment-editing[data-v-e07f3426] {
322
+ .comment-editing[data-v-36e5f63e] {
323
323
  padding-bottom: 10px;
324
324
  }
325
- .comment-editing button[data-v-e07f3426] {
325
+ .comment-editing button[data-v-36e5f63e] {
326
326
  margin-left: 5px;
327
327
  }
328
- .tracked-change[data-v-e07f3426] {
328
+ .tracked-change[data-v-36e5f63e] {
329
329
  margin: 0;
330
330
  }
331
331
 
@@ -2471,46 +2471,46 @@ img[data-v-7dd69850] {
2471
2471
  box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.05);
2472
2472
  }
2473
2473
 
2474
- .superdoc[data-v-6de7ff3a] {
2474
+ .superdoc[data-v-ac4ea6eb] {
2475
2475
  display: flex;
2476
2476
  }
2477
- .right-sidebar[data-v-6de7ff3a] {
2477
+ .right-sidebar[data-v-ac4ea6eb] {
2478
2478
  min-width: 320px;
2479
2479
  }
2480
- .floating-comments[data-v-6de7ff3a] {
2480
+ .floating-comments[data-v-ac4ea6eb] {
2481
2481
  min-width: 300px;
2482
2482
  width: 300px;
2483
2483
  }
2484
- .superdoc__layers[data-v-6de7ff3a] {
2484
+ .superdoc__layers[data-v-ac4ea6eb] {
2485
2485
  height: 100%;
2486
2486
  position: relative;
2487
2487
  box-sizing: border-box;
2488
2488
  }
2489
- .superdoc__document[data-v-6de7ff3a] {
2489
+ .superdoc__document[data-v-ac4ea6eb] {
2490
2490
  width: 100%;
2491
2491
  position: relative;
2492
2492
  }
2493
- .superdoc__sub-document[data-v-6de7ff3a] {
2493
+ .superdoc__sub-document[data-v-ac4ea6eb] {
2494
2494
  width: 100%;
2495
2495
  position: relative;
2496
2496
  }
2497
- .superdoc__selection-layer[data-v-6de7ff3a] {
2497
+ .superdoc__selection-layer[data-v-ac4ea6eb] {
2498
2498
  position: absolute;
2499
2499
  min-width: 100%;
2500
2500
  min-height: 100%;
2501
2501
  z-index: 10;
2502
2502
  pointer-events: none;
2503
2503
  }
2504
- .superdoc__temp-selection[data-v-6de7ff3a] {
2504
+ .superdoc__temp-selection[data-v-ac4ea6eb] {
2505
2505
  position: absolute;
2506
2506
  }
2507
- .superdoc__comments-layer[data-v-6de7ff3a] {
2507
+ .superdoc__comments-layer[data-v-ac4ea6eb] {
2508
2508
  /* position: absolute; */
2509
2509
  top: 0;
2510
2510
  height: 100%;
2511
2511
  position: relative;
2512
2512
  }
2513
- .superdoc__right-sidebar[data-v-6de7ff3a] {
2513
+ .superdoc__right-sidebar[data-v-ac4ea6eb] {
2514
2514
  width: 320px;
2515
2515
  min-width: 320px;
2516
2516
  padding: 0 10px;
@@ -2520,14 +2520,14 @@ img[data-v-7dd69850] {
2520
2520
  }
2521
2521
 
2522
2522
  /* Tools styles */
2523
- .tools[data-v-6de7ff3a] {
2523
+ .tools[data-v-ac4ea6eb] {
2524
2524
  position: absolute;
2525
2525
  z-index: 3;
2526
2526
  display: flex;
2527
2527
  flex-direction: column;
2528
2528
  gap: 6px;
2529
2529
  }
2530
- .tools .tool-icon[data-v-6de7ff3a] {
2530
+ .tools .tool-icon[data-v-ac4ea6eb] {
2531
2531
  font-size: 20px;
2532
2532
  border-radius: 12px;
2533
2533
  border: none;
@@ -2535,7 +2535,7 @@ img[data-v-7dd69850] {
2535
2535
  background-color: #dbdbdb;
2536
2536
  cursor: pointer;
2537
2537
  }
2538
- .tools-item[data-v-6de7ff3a] {
2538
+ .tools-item[data-v-ac4ea6eb] {
2539
2539
  display: flex;
2540
2540
  align-items: center;
2541
2541
  justify-content: center;
@@ -2545,10 +2545,10 @@ img[data-v-7dd69850] {
2545
2545
  border-radius: 12px;
2546
2546
  cursor: pointer;
2547
2547
  }
2548
- .tools-item i[data-v-6de7ff3a] {
2548
+ .tools-item i[data-v-ac4ea6eb] {
2549
2549
  cursor: pointer;
2550
2550
  }
2551
- .superdoc__tools-icon[data-v-6de7ff3a] {
2551
+ .superdoc__tools-icon[data-v-ac4ea6eb] {
2552
2552
  width: 20px;
2553
2553
  height: 20px;
2554
2554
  flex-shrink: 0;
@@ -2563,15 +2563,15 @@ img[data-v-7dd69850] {
2563
2563
 
2564
2564
  /* 834px is iPad screen size in portrait orientation */
2565
2565
  @media (max-width: 834px) {
2566
- .superdoc .superdoc__layers[data-v-6de7ff3a] {
2566
+ .superdoc .superdoc__layers[data-v-ac4ea6eb] {
2567
2567
  margin: 0;
2568
2568
  border: 0 !important;
2569
2569
  box-shadow: none;
2570
2570
  }
2571
- .superdoc__sub-document[data-v-6de7ff3a] {
2571
+ .superdoc__sub-document[data-v-ac4ea6eb] {
2572
2572
  max-width: 100%;
2573
2573
  }
2574
- .superdoc__right-sidebar[data-v-6de7ff3a] {
2574
+ .superdoc__right-sidebar[data-v-ac4ea6eb] {
2575
2575
  padding: 10px;
2576
2576
  width: 55px;
2577
2577
  position: relative;
@@ -2579,7 +2579,7 @@ img[data-v-7dd69850] {
2579
2579
  }
2580
2580
 
2581
2581
  /* AI Writer styles */
2582
- .ai-writer-container[data-v-6de7ff3a] {
2582
+ .ai-writer-container[data-v-ac4ea6eb] {
2583
2583
  position: fixed;
2584
2584
  z-index: 1000;
2585
2585
  background: white;
@@ -2597,13 +2597,13 @@ img[data-v-7dd69850] {
2597
2597
  } */
2598
2598
 
2599
2599
  /* Tools styles */
2600
- .tools[data-v-6de7ff3a] {
2600
+ .tools[data-v-ac4ea6eb] {
2601
2601
  position: absolute;
2602
2602
  z-index: 3;
2603
2603
  display: flex;
2604
2604
  gap: 6px;
2605
2605
  }
2606
- .tools .tool-icon[data-v-6de7ff3a] {
2606
+ .tools .tool-icon[data-v-ac4ea6eb] {
2607
2607
  font-size: 20px;
2608
2608
  border-radius: 12px;
2609
2609
  border: none;
@@ -2611,7 +2611,7 @@ img[data-v-7dd69850] {
2611
2611
  background-color: #dbdbdb;
2612
2612
  cursor: pointer;
2613
2613
  }
2614
- .tools-item[data-v-6de7ff3a] {
2614
+ .tools-item[data-v-ac4ea6eb] {
2615
2615
  display: flex;
2616
2616
  align-items: center;
2617
2617
  justify-content: center;
@@ -2622,18 +2622,18 @@ img[data-v-7dd69850] {
2622
2622
  border-radius: 12px;
2623
2623
  cursor: pointer;
2624
2624
  }
2625
- .tools-item i[data-v-6de7ff3a] {
2625
+ .tools-item i[data-v-ac4ea6eb] {
2626
2626
  cursor: pointer;
2627
2627
  }
2628
- .superdoc__tools-icon[data-v-6de7ff3a] {
2628
+ .superdoc__tools-icon[data-v-ac4ea6eb] {
2629
2629
  width: 20px;
2630
2630
  height: 20px;
2631
2631
  flex-shrink: 0;
2632
2632
  }
2633
- .ai-tool > svg[data-v-6de7ff3a] {
2633
+ .ai-tool > svg[data-v-ac4ea6eb] {
2634
2634
  fill: transparent;
2635
2635
  }
2636
- .ai-tool[data-v-6de7ff3a]::before {
2636
+ .ai-tool[data-v-ac4ea6eb]::before {
2637
2637
  content: '';
2638
2638
  position: absolute;
2639
2639
  width: 20px;
@@ -2654,7 +2654,7 @@ img[data-v-7dd69850] {
2654
2654
  filter: brightness(1.2);
2655
2655
  transition: filter 0.2s ease;
2656
2656
  }
2657
- .ai-tool[data-v-6de7ff3a]:hover::before {
2657
+ .ai-tool[data-v-ac4ea6eb]:hover::before {
2658
2658
  filter: brightness(1.3);
2659
2659
  }
2660
2660
 
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, onUnmounted, computed, createElementBlock, openBlock, withModifiers, createElementVNode, withDirectives, unref, vModelText, createCommentVNode, nextTick } from "vue";
2
- import { T as TextSelection } from "./chunks/converter-CI3WqmGV.js";
3
- import { _ as _export_sfc } from "./chunks/editor-DC6pZVp1.js";
2
+ import { T as TextSelection } from "./chunks/converter-gSy6s2VK.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-CyBtLJFF.js";
4
4
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
5
5
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
6
6
  async function baseInsightsFetch(payload, options = {}) {
@@ -35131,7 +35131,7 @@ const _SuperConverter = class _SuperConverter {
35131
35131
  static getStoredSuperdocVersion(docx) {
35132
35132
  return _SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
35133
35133
  }
35134
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "0.23.0") {
35134
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "0.24.0") {
35135
35135
  return _SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
35136
35136
  }
35137
35137
  /**
@@ -1,4 +1,4 @@
1
- import { p as process$1, az as commonjsGlobal, B as Buffer, aA as getDefaultExportFromCjs, aB as getContentTypesFromXml, aC as xmljs } from "./converter-CI3WqmGV.js";
1
+ import { p as process$1, az as commonjsGlobal, B as Buffer, aA as getDefaultExportFromCjs, aB as getContentTypesFromXml, aC as xmljs } from "./converter-gSy6s2VK.js";
2
2
  function commonjsRequire(path) {
3
3
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
4
4
  }
@@ -12,9 +12,9 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
12
12
  var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, registerPluginByNameIfNotExists_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, checkFonts_fn, determineUnsupportedFontsWithLocalFonts_fn, determineUnsupportedFontsWithCanvas_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
13
13
  import * as Y from "yjs";
14
14
  import { UndoManager, Item as Item$1, ContentType, Text as Text$1, XmlElement, encodeStateAsUpdate } from "yjs";
15
- import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as twipsToPixels, as as PIXELS_PER_INCH, at as SelectionRange, au as Transform, av as isInTable$1, aw as generateDocxRandomId, ax as insertNewRelationship, ay as inchesToPixels } from "./converter-CI3WqmGV.js";
15
+ import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as twipsToPixels, as as PIXELS_PER_INCH, at as SelectionRange, au as Transform, av as isInTable$1, aw as generateDocxRandomId, ax as insertNewRelationship, ay as inchesToPixels } from "./converter-gSy6s2VK.js";
16
16
  import { ref, computed, createElementBlock, openBlock, withModifiers, Fragment as Fragment$1, renderList, normalizeClass, createCommentVNode, toDisplayString, createElementVNode, createApp } from "vue";
17
- import { D as DocxZipper } from "./docx-zipper-D4fk50d9.js";
17
+ import { D as DocxZipper } from "./docx-zipper-CceGxV02.js";
18
18
  var GOOD_LEAF_SIZE = 200;
19
19
  var RopeSequence = function RopeSequence2() {
20
20
  };
@@ -14290,7 +14290,8 @@ const _Editor = class _Editor extends EventEmitter {
14290
14290
  customUpdatedFiles: {},
14291
14291
  isHeaderFooterChanged: false,
14292
14292
  isCustomXmlChanged: false,
14293
- focusTarget: null
14293
+ focusTarget: null,
14294
+ permissionResolver: null
14294
14295
  });
14295
14296
  __privateMethod(this, _Editor_instances, initContainerElement_fn).call(this, options);
14296
14297
  __privateMethod(this, _Editor_instances, checkHeadless_fn).call(this, options);
@@ -15052,7 +15053,7 @@ const _Editor = class _Editor extends EventEmitter {
15052
15053
  * @returns {Object | void} Migration results
15053
15054
  */
15054
15055
  processCollaborationMigrations() {
15055
- console.debug("[checkVersionMigrations] Current editor version", "0.23.0");
15056
+ console.debug("[checkVersionMigrations] Current editor version", "0.24.0");
15056
15057
  if (!this.options.ydoc) return;
15057
15058
  const metaMap = this.options.ydoc.getMap("meta");
15058
15059
  let docVersion = metaMap.get("version");
@@ -29181,11 +29182,105 @@ const TrackFormat = Mark.create({
29181
29182
  return ["span", Attribute.mergeAttributes(this.options.htmlAttributes, htmlAttributes), 0];
29182
29183
  }
29183
29184
  });
29185
+ const PERMISSION_MAP = {
29186
+ accept: {
29187
+ own: "RESOLVE_OWN",
29188
+ other: "RESOLVE_OTHER"
29189
+ },
29190
+ reject: {
29191
+ own: "REJECT_OWN",
29192
+ other: "REJECT_OTHER"
29193
+ }
29194
+ };
29195
+ const buildKey = (change) => {
29196
+ const id = change.mark?.attrs?.id ?? `${change.from}-${change.to}`;
29197
+ return `${id}:${change.mark?.type?.name ?? "unknown"}`;
29198
+ };
29199
+ const mergeChange = (bucket, change) => {
29200
+ const key2 = buildKey(change);
29201
+ const existing = bucket.get(key2);
29202
+ if (existing) {
29203
+ existing.from = Math.min(existing.from, change.from);
29204
+ existing.to = Math.max(existing.to, change.to);
29205
+ existing.segments.push({ from: change.from, to: change.to });
29206
+ } else {
29207
+ bucket.set(key2, {
29208
+ id: change.mark?.attrs?.id ?? null,
29209
+ type: change.mark?.type?.name ?? null,
29210
+ attrs: { ...change.mark?.attrs ?? {} },
29211
+ from: change.from,
29212
+ to: change.to,
29213
+ segments: [{ from: change.from, to: change.to }]
29214
+ });
29215
+ }
29216
+ };
29217
+ const collectTrackedChanges = ({ state, from: from2, to }) => {
29218
+ if (!state) return [];
29219
+ const collapsed = from2 === to;
29220
+ const changes = getTrackChanges(state);
29221
+ if (!changes?.length) return [];
29222
+ const bucket = /* @__PURE__ */ new Map();
29223
+ changes.forEach((change) => {
29224
+ const overlaps = collapsed ? change.from <= from2 && change.to >= from2 : change.from < to && change.to > from2;
29225
+ if (!overlaps) return;
29226
+ mergeChange(bucket, change);
29227
+ });
29228
+ return Array.from(bucket.values());
29229
+ };
29230
+ const derivePermissionKey = ({ action, isOwn }) => {
29231
+ const mapping = PERMISSION_MAP[action];
29232
+ if (!mapping) return null;
29233
+ return isOwn ? mapping.own : mapping.other;
29234
+ };
29235
+ const resolveChanges = (editor) => {
29236
+ if (!editor) return { role: "editor", isInternal: false, currentUser: null, resolver: null };
29237
+ const role = editor.options?.role ?? "editor";
29238
+ const isInternal = Boolean(editor.options?.isInternal);
29239
+ const currentUser = editor.options?.user ?? null;
29240
+ const resolver = editor.options?.permissionResolver;
29241
+ return { role, isInternal, currentUser, resolver };
29242
+ };
29243
+ const isTrackedChangeActionAllowed = ({ editor, action, trackedChanges }) => {
29244
+ if (!trackedChanges?.length) return true;
29245
+ const { role, isInternal, currentUser, resolver } = resolveChanges(editor);
29246
+ if (typeof resolver !== "function") return true;
29247
+ const currentEmail = currentUser?.email ?? null;
29248
+ return trackedChanges.every((change) => {
29249
+ const authorEmail = change.attrs?.authorEmail ?? null;
29250
+ const isOwn = Boolean(currentEmail && authorEmail && currentEmail === authorEmail);
29251
+ const permission = derivePermissionKey({ action, isOwn });
29252
+ if (!permission) return true;
29253
+ const payload = {
29254
+ permission,
29255
+ role,
29256
+ isInternal,
29257
+ trackedChange: {
29258
+ id: change.id,
29259
+ type: change.type,
29260
+ attrs: change.attrs,
29261
+ from: change.from,
29262
+ to: change.to,
29263
+ segments: change.segments,
29264
+ commentId: change.id
29265
+ },
29266
+ comment: change.comment ?? null
29267
+ };
29268
+ return resolver(payload) !== false;
29269
+ });
29270
+ };
29271
+ const collectTrackedChangesForContext = ({ state, pos, trackedChangeId }) => {
29272
+ if (pos == null) return [];
29273
+ const changes = collectTrackedChanges({ state, from: pos, to: pos });
29274
+ if (!trackedChangeId) return changes;
29275
+ return changes.filter((change) => change.id === trackedChangeId);
29276
+ };
29184
29277
  const TrackChanges = Extension.create({
29185
29278
  name: "trackChanges",
29186
29279
  addCommands() {
29187
29280
  return {
29188
- acceptTrackedChangesBetween: (from2, to) => ({ state, dispatch }) => {
29281
+ acceptTrackedChangesBetween: (from2, to) => ({ state, dispatch, editor }) => {
29282
+ const trackedChanges = collectTrackedChanges({ state, from: from2, to });
29283
+ if (!isTrackedChangeActionAllowed({ editor, action: "accept", trackedChanges })) return false;
29189
29284
  let { tr, doc: doc2 } = state;
29190
29285
  tr.setMeta("acceptReject", true);
29191
29286
  const map2 = new Mapping();
@@ -29223,7 +29318,9 @@ const TrackChanges = Extension.create({
29223
29318
  }
29224
29319
  return true;
29225
29320
  },
29226
- rejectTrackedChangesBetween: (from2, to) => ({ state, dispatch }) => {
29321
+ rejectTrackedChangesBetween: (from2, to) => ({ state, dispatch, editor }) => {
29322
+ const trackedChanges = collectTrackedChanges({ state, from: from2, to });
29323
+ if (!isTrackedChangeActionAllowed({ editor, action: "reject", trackedChanges })) return false;
29227
29324
  const { tr, doc: doc2 } = state;
29228
29325
  tr.setMeta("acceptReject", true);
29229
29326
  const map2 = new Mapping();
@@ -34970,19 +35067,22 @@ export {
34970
35067
  getFileOpener as c,
34971
35068
  checkAndProcessImage as d,
34972
35069
  uploadAndInsertImage as e,
34973
- undoDepth as f,
35070
+ collectTrackedChanges as f,
34974
35071
  global as g,
34975
- redoDepth as h,
34976
- getStarterExtensions as i,
34977
- getRichTextExtensions as j,
34978
- Extension as k,
34979
- index$1 as l,
34980
- index as m,
34981
- AnnotatorHelpers as n,
34982
- SectionHelpers as o,
34983
- getAllowedImageDimensions as p,
35072
+ undoDepth as h,
35073
+ isTrackedChangeActionAllowed as i,
35074
+ redoDepth as j,
35075
+ collectTrackedChangesForContext as k,
35076
+ getStarterExtensions as l,
35077
+ getRichTextExtensions as m,
35078
+ Extension as n,
35079
+ index$1 as o,
35080
+ index as p,
35081
+ AnnotatorHelpers as q,
34984
35082
  replaceSelectionWithImagePlaceholder as r,
34985
35083
  shouldBypassContextMenu as s,
35084
+ SectionHelpers as t,
34986
35085
  useHighContrastMode as u,
35086
+ getAllowedImageDimensions as v,
34987
35087
  yUndoPluginKey as y
34988
35088
  };
@@ -1,6 +1,6 @@
1
1
  import { computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, normalizeStyle, ref, withKeys, unref, withModifiers, createBlock, toDisplayString, withDirectives, vModelText, nextTick, getCurrentInstance, createVNode, readonly, watch, onMounted, onBeforeUnmount, reactive, onBeforeMount, inject, onActivated, onDeactivated, createTextVNode, Fragment, Comment, defineComponent, provide, h, Teleport, toRef, renderSlot, isVNode, shallowRef, watchEffect, mergeProps, Transition, vShow, cloneVNode, Text, renderList, withCtx } from "vue";
2
- import { p as process$1 } from "./converter-CI3WqmGV.js";
3
- import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-DC6pZVp1.js";
2
+ import { p as process$1 } from "./converter-gSy6s2VK.js";
3
+ import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-CyBtLJFF.js";
4
4
  const sanitizeNumber = (value, defaultNumber) => {
5
5
  let sanitized = value.replace(/[^0-9.]/g, "");
6
6
  sanitized = parseFloat(sanitized);
@@ -1,4 +1,4 @@
1
- import { a5 } from "./chunks/converter-CI3WqmGV.js";
1
+ import { a5 } from "./chunks/converter-gSy6s2VK.js";
2
2
  import "vue";
3
3
  export {
4
4
  a5 as SuperConverter
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-CI3WqmGV.js";
2
- import { D } from "./chunks/docx-zipper-D4fk50d9.js";
1
+ import "./chunks/converter-gSy6s2VK.js";
2
+ import { D } from "./chunks/docx-zipper-CceGxV02.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor-DC6pZVp1.js";
2
- import "./chunks/converter-CI3WqmGV.js";
3
- import "./chunks/docx-zipper-D4fk50d9.js";
1
+ import { E } from "./chunks/editor-CyBtLJFF.js";
2
+ import "./chunks/converter-gSy6s2VK.js";
3
+ import "./chunks/docx-zipper-CceGxV02.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-D4fk50d9.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-CceGxV02.js";
2
2
  async function createZip(blobs, fileNames) {
3
3
  const zip = new JSZip();
4
4
  blobs.forEach((blob, index) => {
@@ -337,6 +337,7 @@ export function createMockContext(options?: {}): {
337
337
  currentNodeType: string;
338
338
  activeMarks: any[];
339
339
  isTrackedChange: boolean;
340
+ trackedChanges: any[];
340
341
  documentMode: string;
341
342
  canUndo: boolean;
342
343
  canRedo: boolean;