@harbour-enterprises/superdoc 0.24.0 → 0.25.0-next.2
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.
- package/dist/chunks/{PdfViewer-qk_hITc5.cjs → PdfViewer-CEc5ST9t.cjs} +1 -1
- package/dist/chunks/{PdfViewer-BiHh3x6b.es.js → PdfViewer-CoEXViCu.es.js} +1 -1
- package/dist/chunks/{index-Di6nG2sc.cjs → index-ChgYIPZ8.cjs} +166 -76
- package/dist/chunks/{index-aMnFs35I.es.js → index-DtXgSPMT.es.js} +166 -76
- package/dist/chunks/{super-editor.es-BKZvTraR.cjs → super-editor.es-B-E_YaLO.cjs} +163 -18
- package/dist/chunks/{super-editor.es-Dz7y81Yr.es.js → super-editor.es-BePxEtE8.es.js} +163 -18
- package/dist/core/SuperDoc.d.ts +20 -0
- package/dist/core/SuperDoc.d.ts.map +1 -1
- package/dist/core/collaboration/permissions.d.ts +7 -1
- package/dist/core/collaboration/permissions.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +23 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/style.css +55 -55
- package/dist/super-editor/ai-writer.es.js +2 -2
- package/dist/super-editor/chunks/{converter-CI3WqmGV.js → converter-gSy6s2VK.js} +1 -1
- package/dist/super-editor/chunks/{docx-zipper-D4fk50d9.js → docx-zipper-CceGxV02.js} +1 -1
- package/dist/super-editor/chunks/{editor-DC6pZVp1.js → editor-yaef8OIs.js} +122 -19
- package/dist/super-editor/chunks/{toolbar-DMobfM6u.js → toolbar-Dc5uyyIp.js} +2 -2
- package/dist/super-editor/converter.es.js +1 -1
- package/dist/super-editor/docx-zipper.es.js +2 -2
- package/dist/super-editor/editor.es.js +3 -3
- package/dist/super-editor/file-zipper.es.js +1 -1
- package/dist/super-editor/super-editor/src/components/slash-menu/tests/testHelpers.d.ts +1 -0
- package/dist/super-editor/super-editor/src/core/Editor.d.ts +18 -0
- package/dist/super-editor/super-editor/src/extensions/track-changes/permission-helpers.d.ts +110 -0
- package/dist/super-editor/super-editor/src/extensions/track-changes/trackChangesHelpers/markDeletion.d.ts +1 -1
- package/dist/super-editor/super-editor.es.js +66 -21
- package/dist/super-editor/toolbar.es.js +2 -2
- package/dist/super-editor.cjs +1 -1
- package/dist/super-editor.es.js +1 -1
- package/dist/superdoc.cjs +2 -2
- package/dist/superdoc.es.js +2 -2
- package/dist/superdoc.umd.js +327 -92
- package/dist/superdoc.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,5 +10,11 @@ export const PERMISSIONS: Readonly<{
|
|
|
10
10
|
UPLOAD_VERSION: "UPLOAD_VERSION";
|
|
11
11
|
VERSION_HISTORY: "VERSION_HISTORY";
|
|
12
12
|
}>;
|
|
13
|
-
export function isAllowed(permission: string, role: string, isInternal: boolean
|
|
13
|
+
export function isAllowed(permission: string, role: string, isInternal: boolean, context?: {
|
|
14
|
+
comment?: any;
|
|
15
|
+
superdoc?: any;
|
|
16
|
+
currentUser?: any;
|
|
17
|
+
permissionResolver?: Function;
|
|
18
|
+
trackedChange?: any;
|
|
19
|
+
}): boolean;
|
|
14
20
|
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/core/collaboration/permissions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/core/collaboration/permissions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkFI,2FAPJ;IAAyB,OAAO;IACP,QAAQ;IACR,WAAW;IACT,kBAAkB;IACpB,aAAa;CACtC,WAoBF"}
|
|
@@ -74,7 +74,17 @@ export type Modules = {
|
|
|
74
74
|
/**
|
|
75
75
|
* Comments module configuration
|
|
76
76
|
*/
|
|
77
|
-
comments?:
|
|
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
|
|
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;;;;;;;;;;;;;;sBA0F4kmf,aAAa;;;;;;;;;;;yBAA+xJ,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAAkpZ,aAAa;sBAA99sB,aAAa;8CAA0wX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAAorsB,UAAU;8CAAuV,UAAU,aAA+E,UAAU;gCAAgZ,UAAU;;;;;;;;;;uBAvFx2hhB,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-
|
|
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-
|
|
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-
|
|
193
|
+
.avatar[data-v-0f4f53ef] {
|
|
194
194
|
margin-right: 10px;
|
|
195
195
|
}
|
|
196
|
-
.user-info[data-v-
|
|
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-
|
|
201
|
+
.user-name[data-v-0f4f53ef] {
|
|
202
202
|
font-weight: 600;
|
|
203
203
|
line-height: 1.2em;
|
|
204
204
|
}
|
|
205
|
-
.user-timestamp[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
227
|
+
.overflow-menu__icon[data-v-0f4f53ef]:hover {
|
|
228
228
|
background-color: #dbdbdb;
|
|
229
229
|
}
|
|
230
|
-
.overflow-menu__icon[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
262
|
+
.tracked-change[data-v-36e5f63e] {
|
|
263
263
|
font-size: 12px;
|
|
264
264
|
}
|
|
265
|
-
.tracked-change-text[data-v-
|
|
265
|
+
.tracked-change-text[data-v-36e5f63e] {
|
|
266
266
|
color: #111;
|
|
267
267
|
}
|
|
268
|
-
.comment-separator[data-v-
|
|
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-
|
|
275
|
+
.existing-internal-input[data-v-36e5f63e] {
|
|
276
276
|
margin-bottom: 10px;
|
|
277
277
|
}
|
|
278
|
-
.initial-internal-dropdown[data-v-
|
|
278
|
+
.initial-internal-dropdown[data-v-36e5f63e] {
|
|
279
279
|
margin-top: 10px;
|
|
280
280
|
}
|
|
281
|
-
.comments-dialog[data-v-
|
|
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-
|
|
296
|
+
.is-active[data-v-36e5f63e] {
|
|
297
297
|
z-index: 10;
|
|
298
298
|
}
|
|
299
|
-
.input-section[data-v-
|
|
299
|
+
.input-section[data-v-36e5f63e] {
|
|
300
300
|
margin-top: 10px;
|
|
301
301
|
}
|
|
302
|
-
.sd-button[data-v-
|
|
302
|
+
.sd-button[data-v-36e5f63e] {
|
|
303
303
|
font-size: 12px;
|
|
304
304
|
margin-left: 5px;
|
|
305
305
|
}
|
|
306
|
-
.comment[data-v-
|
|
306
|
+
.comment[data-v-36e5f63e] {
|
|
307
307
|
font-size: 13px;
|
|
308
308
|
margin: 10px 0;
|
|
309
309
|
}
|
|
310
|
-
.is-resolved[data-v-
|
|
310
|
+
.is-resolved[data-v-36e5f63e] {
|
|
311
311
|
background-color: #f0f0f0;
|
|
312
312
|
}
|
|
313
|
-
.comment-footer[data-v-
|
|
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-
|
|
319
|
+
.internal-dropdown[data-v-36e5f63e] {
|
|
320
320
|
display: inline-block;
|
|
321
321
|
}
|
|
322
|
-
.comment-editing[data-v-
|
|
322
|
+
.comment-editing[data-v-36e5f63e] {
|
|
323
323
|
padding-bottom: 10px;
|
|
324
324
|
}
|
|
325
|
-
.comment-editing button[data-v-
|
|
325
|
+
.comment-editing button[data-v-36e5f63e] {
|
|
326
326
|
margin-left: 5px;
|
|
327
327
|
}
|
|
328
|
-
.tracked-change[data-v-
|
|
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-
|
|
2474
|
+
.superdoc[data-v-ac4ea6eb] {
|
|
2475
2475
|
display: flex;
|
|
2476
2476
|
}
|
|
2477
|
-
.right-sidebar[data-v-
|
|
2477
|
+
.right-sidebar[data-v-ac4ea6eb] {
|
|
2478
2478
|
min-width: 320px;
|
|
2479
2479
|
}
|
|
2480
|
-
.floating-comments[data-v-
|
|
2480
|
+
.floating-comments[data-v-ac4ea6eb] {
|
|
2481
2481
|
min-width: 300px;
|
|
2482
2482
|
width: 300px;
|
|
2483
2483
|
}
|
|
2484
|
-
.superdoc__layers[data-v-
|
|
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-
|
|
2489
|
+
.superdoc__document[data-v-ac4ea6eb] {
|
|
2490
2490
|
width: 100%;
|
|
2491
2491
|
position: relative;
|
|
2492
2492
|
}
|
|
2493
|
-
.superdoc__sub-document[data-v-
|
|
2493
|
+
.superdoc__sub-document[data-v-ac4ea6eb] {
|
|
2494
2494
|
width: 100%;
|
|
2495
2495
|
position: relative;
|
|
2496
2496
|
}
|
|
2497
|
-
.superdoc__selection-layer[data-v-
|
|
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-
|
|
2504
|
+
.superdoc__temp-selection[data-v-ac4ea6eb] {
|
|
2505
2505
|
position: absolute;
|
|
2506
2506
|
}
|
|
2507
|
-
.superdoc__comments-layer[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2548
|
+
.tools-item i[data-v-ac4ea6eb] {
|
|
2549
2549
|
cursor: pointer;
|
|
2550
2550
|
}
|
|
2551
|
-
.superdoc__tools-icon[data-v-
|
|
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-
|
|
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-
|
|
2571
|
+
.superdoc__sub-document[data-v-ac4ea6eb] {
|
|
2572
2572
|
max-width: 100%;
|
|
2573
2573
|
}
|
|
2574
|
-
.superdoc__right-sidebar[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2625
|
+
.tools-item i[data-v-ac4ea6eb] {
|
|
2626
2626
|
cursor: pointer;
|
|
2627
2627
|
}
|
|
2628
|
-
.superdoc__tools-icon[data-v-
|
|
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-
|
|
2633
|
+
.ai-tool > svg[data-v-ac4ea6eb] {
|
|
2634
2634
|
fill: transparent;
|
|
2635
2635
|
}
|
|
2636
|
-
.ai-tool[data-v-
|
|
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-
|
|
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-
|
|
3
|
-
import { _ as _export_sfc } from "./chunks/editor-
|
|
2
|
+
import { T as TextSelection } from "./chunks/converter-gSy6s2VK.js";
|
|
3
|
+
import { _ as _export_sfc } from "./chunks/editor-yaef8OIs.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.
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
};
|
|
@@ -11034,7 +11034,7 @@ const markInsertion = ({ tr, from: from2, to, user, date }) => {
|
|
|
11034
11034
|
});
|
|
11035
11035
|
return insertionMark;
|
|
11036
11036
|
};
|
|
11037
|
-
const markDeletion = ({ tr, from: from2, to, user, date }) => {
|
|
11037
|
+
const markDeletion = ({ tr, from: from2, to, user, date, id: providedId }) => {
|
|
11038
11038
|
let trackedMark = findTrackedMarkBetween({
|
|
11039
11039
|
tr,
|
|
11040
11040
|
from: from2,
|
|
@@ -11043,7 +11043,9 @@ const markDeletion = ({ tr, from: from2, to, user, date }) => {
|
|
|
11043
11043
|
attrs: { authorEmail: user.email }
|
|
11044
11044
|
});
|
|
11045
11045
|
let id;
|
|
11046
|
-
if (
|
|
11046
|
+
if (providedId) {
|
|
11047
|
+
id = providedId;
|
|
11048
|
+
} else if (trackedMark) {
|
|
11047
11049
|
id = trackedMark.mark.attrs.id;
|
|
11048
11050
|
} else {
|
|
11049
11051
|
id = v4();
|
|
@@ -12315,7 +12317,8 @@ const replaceStep = ({ state, tr, step, newTr, map: map2, user, date, originalSt
|
|
|
12315
12317
|
from: step.from,
|
|
12316
12318
|
to: step.to,
|
|
12317
12319
|
user,
|
|
12318
|
-
date
|
|
12320
|
+
date,
|
|
12321
|
+
id: meta.insertedMark?.attrs?.id
|
|
12319
12322
|
});
|
|
12320
12323
|
meta.deletionNodes = deletionNodes;
|
|
12321
12324
|
meta.deletionMark = deletionMark2;
|
|
@@ -14290,7 +14293,8 @@ const _Editor = class _Editor extends EventEmitter {
|
|
|
14290
14293
|
customUpdatedFiles: {},
|
|
14291
14294
|
isHeaderFooterChanged: false,
|
|
14292
14295
|
isCustomXmlChanged: false,
|
|
14293
|
-
focusTarget: null
|
|
14296
|
+
focusTarget: null,
|
|
14297
|
+
permissionResolver: null
|
|
14294
14298
|
});
|
|
14295
14299
|
__privateMethod(this, _Editor_instances, initContainerElement_fn).call(this, options);
|
|
14296
14300
|
__privateMethod(this, _Editor_instances, checkHeadless_fn).call(this, options);
|
|
@@ -15052,7 +15056,7 @@ const _Editor = class _Editor extends EventEmitter {
|
|
|
15052
15056
|
* @returns {Object | void} Migration results
|
|
15053
15057
|
*/
|
|
15054
15058
|
processCollaborationMigrations() {
|
|
15055
|
-
console.debug("[checkVersionMigrations] Current editor version", "0.
|
|
15059
|
+
console.debug("[checkVersionMigrations] Current editor version", "0.24.0");
|
|
15056
15060
|
if (!this.options.ydoc) return;
|
|
15057
15061
|
const metaMap = this.options.ydoc.getMap("meta");
|
|
15058
15062
|
let docVersion = metaMap.get("version");
|
|
@@ -29181,11 +29185,105 @@ const TrackFormat = Mark.create({
|
|
|
29181
29185
|
return ["span", Attribute.mergeAttributes(this.options.htmlAttributes, htmlAttributes), 0];
|
|
29182
29186
|
}
|
|
29183
29187
|
});
|
|
29188
|
+
const PERMISSION_MAP = {
|
|
29189
|
+
accept: {
|
|
29190
|
+
own: "RESOLVE_OWN",
|
|
29191
|
+
other: "RESOLVE_OTHER"
|
|
29192
|
+
},
|
|
29193
|
+
reject: {
|
|
29194
|
+
own: "REJECT_OWN",
|
|
29195
|
+
other: "REJECT_OTHER"
|
|
29196
|
+
}
|
|
29197
|
+
};
|
|
29198
|
+
const buildKey = (change) => {
|
|
29199
|
+
const id = change.mark?.attrs?.id ?? `${change.from}-${change.to}`;
|
|
29200
|
+
return `${id}:${change.mark?.type?.name ?? "unknown"}`;
|
|
29201
|
+
};
|
|
29202
|
+
const mergeChange = (bucket, change) => {
|
|
29203
|
+
const key2 = buildKey(change);
|
|
29204
|
+
const existing = bucket.get(key2);
|
|
29205
|
+
if (existing) {
|
|
29206
|
+
existing.from = Math.min(existing.from, change.from);
|
|
29207
|
+
existing.to = Math.max(existing.to, change.to);
|
|
29208
|
+
existing.segments.push({ from: change.from, to: change.to });
|
|
29209
|
+
} else {
|
|
29210
|
+
bucket.set(key2, {
|
|
29211
|
+
id: change.mark?.attrs?.id ?? null,
|
|
29212
|
+
type: change.mark?.type?.name ?? null,
|
|
29213
|
+
attrs: { ...change.mark?.attrs ?? {} },
|
|
29214
|
+
from: change.from,
|
|
29215
|
+
to: change.to,
|
|
29216
|
+
segments: [{ from: change.from, to: change.to }]
|
|
29217
|
+
});
|
|
29218
|
+
}
|
|
29219
|
+
};
|
|
29220
|
+
const collectTrackedChanges = ({ state, from: from2, to }) => {
|
|
29221
|
+
if (!state) return [];
|
|
29222
|
+
const collapsed = from2 === to;
|
|
29223
|
+
const changes = getTrackChanges(state);
|
|
29224
|
+
if (!changes?.length) return [];
|
|
29225
|
+
const bucket = /* @__PURE__ */ new Map();
|
|
29226
|
+
changes.forEach((change) => {
|
|
29227
|
+
const overlaps = collapsed ? change.from <= from2 && change.to >= from2 : change.from < to && change.to > from2;
|
|
29228
|
+
if (!overlaps) return;
|
|
29229
|
+
mergeChange(bucket, change);
|
|
29230
|
+
});
|
|
29231
|
+
return Array.from(bucket.values());
|
|
29232
|
+
};
|
|
29233
|
+
const derivePermissionKey = ({ action, isOwn }) => {
|
|
29234
|
+
const mapping = PERMISSION_MAP[action];
|
|
29235
|
+
if (!mapping) return null;
|
|
29236
|
+
return isOwn ? mapping.own : mapping.other;
|
|
29237
|
+
};
|
|
29238
|
+
const resolveChanges = (editor) => {
|
|
29239
|
+
if (!editor) return { role: "editor", isInternal: false, currentUser: null, resolver: null };
|
|
29240
|
+
const role = editor.options?.role ?? "editor";
|
|
29241
|
+
const isInternal = Boolean(editor.options?.isInternal);
|
|
29242
|
+
const currentUser = editor.options?.user ?? null;
|
|
29243
|
+
const resolver = editor.options?.permissionResolver;
|
|
29244
|
+
return { role, isInternal, currentUser, resolver };
|
|
29245
|
+
};
|
|
29246
|
+
const isTrackedChangeActionAllowed = ({ editor, action, trackedChanges }) => {
|
|
29247
|
+
if (!trackedChanges?.length) return true;
|
|
29248
|
+
const { role, isInternal, currentUser, resolver } = resolveChanges(editor);
|
|
29249
|
+
if (typeof resolver !== "function") return true;
|
|
29250
|
+
const currentEmail = currentUser?.email ?? null;
|
|
29251
|
+
return trackedChanges.every((change) => {
|
|
29252
|
+
const authorEmail = change.attrs?.authorEmail ?? null;
|
|
29253
|
+
const isOwn = Boolean(currentEmail && authorEmail && currentEmail === authorEmail);
|
|
29254
|
+
const permission = derivePermissionKey({ action, isOwn });
|
|
29255
|
+
if (!permission) return true;
|
|
29256
|
+
const payload = {
|
|
29257
|
+
permission,
|
|
29258
|
+
role,
|
|
29259
|
+
isInternal,
|
|
29260
|
+
trackedChange: {
|
|
29261
|
+
id: change.id,
|
|
29262
|
+
type: change.type,
|
|
29263
|
+
attrs: change.attrs,
|
|
29264
|
+
from: change.from,
|
|
29265
|
+
to: change.to,
|
|
29266
|
+
segments: change.segments,
|
|
29267
|
+
commentId: change.id
|
|
29268
|
+
},
|
|
29269
|
+
comment: change.comment ?? null
|
|
29270
|
+
};
|
|
29271
|
+
return resolver(payload) !== false;
|
|
29272
|
+
});
|
|
29273
|
+
};
|
|
29274
|
+
const collectTrackedChangesForContext = ({ state, pos, trackedChangeId }) => {
|
|
29275
|
+
if (pos == null) return [];
|
|
29276
|
+
const changes = collectTrackedChanges({ state, from: pos, to: pos });
|
|
29277
|
+
if (!trackedChangeId) return changes;
|
|
29278
|
+
return changes.filter((change) => change.id === trackedChangeId);
|
|
29279
|
+
};
|
|
29184
29280
|
const TrackChanges = Extension.create({
|
|
29185
29281
|
name: "trackChanges",
|
|
29186
29282
|
addCommands() {
|
|
29187
29283
|
return {
|
|
29188
|
-
acceptTrackedChangesBetween: (from2, to) => ({ state, dispatch }) => {
|
|
29284
|
+
acceptTrackedChangesBetween: (from2, to) => ({ state, dispatch, editor }) => {
|
|
29285
|
+
const trackedChanges = collectTrackedChanges({ state, from: from2, to });
|
|
29286
|
+
if (!isTrackedChangeActionAllowed({ editor, action: "accept", trackedChanges })) return false;
|
|
29189
29287
|
let { tr, doc: doc2 } = state;
|
|
29190
29288
|
tr.setMeta("acceptReject", true);
|
|
29191
29289
|
const map2 = new Mapping();
|
|
@@ -29223,7 +29321,9 @@ const TrackChanges = Extension.create({
|
|
|
29223
29321
|
}
|
|
29224
29322
|
return true;
|
|
29225
29323
|
},
|
|
29226
|
-
rejectTrackedChangesBetween: (from2, to) => ({ state, dispatch }) => {
|
|
29324
|
+
rejectTrackedChangesBetween: (from2, to) => ({ state, dispatch, editor }) => {
|
|
29325
|
+
const trackedChanges = collectTrackedChanges({ state, from: from2, to });
|
|
29326
|
+
if (!isTrackedChangeActionAllowed({ editor, action: "reject", trackedChanges })) return false;
|
|
29227
29327
|
const { tr, doc: doc2 } = state;
|
|
29228
29328
|
tr.setMeta("acceptReject", true);
|
|
29229
29329
|
const map2 = new Mapping();
|
|
@@ -34970,19 +35070,22 @@ export {
|
|
|
34970
35070
|
getFileOpener as c,
|
|
34971
35071
|
checkAndProcessImage as d,
|
|
34972
35072
|
uploadAndInsertImage as e,
|
|
34973
|
-
|
|
35073
|
+
collectTrackedChanges as f,
|
|
34974
35074
|
global as g,
|
|
34975
|
-
|
|
34976
|
-
|
|
34977
|
-
|
|
34978
|
-
|
|
34979
|
-
|
|
34980
|
-
|
|
34981
|
-
|
|
34982
|
-
|
|
34983
|
-
|
|
35075
|
+
undoDepth as h,
|
|
35076
|
+
isTrackedChangeActionAllowed as i,
|
|
35077
|
+
redoDepth as j,
|
|
35078
|
+
collectTrackedChangesForContext as k,
|
|
35079
|
+
getStarterExtensions as l,
|
|
35080
|
+
getRichTextExtensions as m,
|
|
35081
|
+
Extension as n,
|
|
35082
|
+
index$1 as o,
|
|
35083
|
+
index as p,
|
|
35084
|
+
AnnotatorHelpers as q,
|
|
34984
35085
|
replaceSelectionWithImagePlaceholder as r,
|
|
34985
35086
|
shouldBypassContextMenu as s,
|
|
35087
|
+
SectionHelpers as t,
|
|
34986
35088
|
useHighContrastMode as u,
|
|
35089
|
+
getAllowedImageDimensions as v,
|
|
34987
35090
|
yUndoPluginKey as y
|
|
34988
35091
|
};
|
|
@@ -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-
|
|
3
|
-
import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-
|
|
2
|
+
import { p as process$1 } from "./converter-gSy6s2VK.js";
|
|
3
|
+
import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-yaef8OIs.js";
|
|
4
4
|
const sanitizeNumber = (value, defaultNumber) => {
|
|
5
5
|
let sanitized = value.replace(/[^0-9.]/g, "");
|
|
6
6
|
sanitized = parseFloat(sanitized);
|