superdoc 2.4.0-next.9 → 2.4.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.
- package/dist/chunks/{FindReplaceSurface-9VkPw_-X.cjs → FindReplaceSurface-0p7EtMZh.cjs} +4 -3
- package/dist/chunks/{FindReplaceSurface-BuvaIrQ5.es.js → FindReplaceSurface-40AnrqWk.es.js} +4 -2
- package/dist/chunks/{PasswordPromptSurface-Bu5xHm91.cjs → PasswordPromptSurface-31lYPcCK.cjs} +4 -3
- package/dist/chunks/{PasswordPromptSurface-Bz9_sKhX.es.js → PasswordPromptSurface-CwYeO3iQ.es.js} +4 -2
- package/dist/chunks/{PdfViewer-CdVGB6Fe.es.js → PdfViewer-D8h7LRZy.es.js} +103 -19
- package/dist/chunks/{PdfViewer-D4eD2dV1.cjs → PdfViewer-Dug6yDRC.cjs} +105 -20
- package/dist/chunks/_plugin-vue_export-helper-BOaGB7Aw.es.js +8 -0
- package/dist/chunks/_plugin-vue_export-helper-SDR04tiH.cjs +13 -0
- package/dist/chunks/{blank-docx-DP8RUPW-.cjs → blank-docx-BuFAbRjs.cjs} +2 -0
- package/dist/chunks/{blank-docx-XRX6Ker2.es.js → blank-docx-DzQccOlW.es.js} +2 -0
- package/dist/chunks/constants-B6VBlmKp.es.js +4 -0
- package/dist/chunks/constants-DpXuDx_g.cjs +9 -0
- package/dist/chunks/{create-super-doc-ui-DBXOhHdW.es.js → create-super-doc-ui-CmOSA_lN.es.js} +2030 -1086
- package/dist/chunks/{create-super-doc-ui-ByvmsAAG.cjs → create-super-doc-ui-CqGmoMMA.cjs} +1841 -1137
- package/dist/chunks/{eventemitter3-DqY4aSMf.cjs → eventemitter3-C_TAnXOl.cjs} +125 -16
- package/dist/chunks/{eventemitter3-Bt2s0X0a.es.js → eventemitter3-DEIiXiH2.es.js} +124 -16
- package/dist/chunks/jszip-BzJ3CyxR.es.js +4717 -0
- package/dist/chunks/jszip-D8mAFF-r.cjs +4758 -0
- package/dist/chunks/{rolldown-runtime-D7PMmH3s.es.js → rolldown-runtime-0pSA04fp.es.js} +12 -3
- package/dist/chunks/{rolldown-runtime-1Y-nnZJ3.cjs → rolldown-runtime-74VwNCz7.cjs} +11 -2
- package/dist/chunks/{uuid-CFp0WGVU.cjs → uuid-BhG0ngwk.cjs} +10 -6
- package/dist/chunks/{uuid-B2Sqk-3p.es.js → uuid-H0Xcmmhy.es.js} +8 -3
- package/dist/collaboration-upgrade-engine.cjs +34 -9
- package/dist/collaboration-upgrade-engine.es.js +30 -5
- package/dist/document-api/src/citations/citations.types.d.ts +9 -0
- package/dist/document-api/src/comments/comments.types.d.ts +7 -0
- package/dist/document-api/src/types/receipt.d.ts +9 -5
- package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +22 -2
- package/dist/layout-engine/contracts/src/index.d.ts +74 -2
- package/dist/layout-engine/contracts/src/inline-box.d.ts +19 -0
- package/dist/layout-engine/contracts/src/paragraph-visible-text.d.ts +19 -0
- package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +4 -1
- package/dist/layout-engine/layout-bridge/src/index.d.ts +1 -0
- package/dist/layout-engine/layout-bridge/src/inline-box-key.d.ts +3 -0
- package/dist/layout-engine/layout-bridge/src/layoutHeaderFooter.d.ts +5 -1
- package/dist/layout-engine/layout-bridge/src/run-visual-marks.d.ts +2 -0
- package/dist/layout-engine/layout-bridge/src/text-measurement.d.ts +0 -12
- package/dist/layout-engine/painters/dom/src/runs/inline-box.d.ts +8 -0
- package/dist/public/ui-react.cjs +66 -2
- package/dist/public/ui-react.es.js +66 -1
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/style.css +134 -98
- package/dist/style.layered.css +134 -98
- package/dist/superdoc/src/components/CommentsLayer/CommentDialog.vue.d.ts +2 -0
- package/dist/superdoc/src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue.d.ts +16 -0
- package/dist/superdoc/src/components/CommentsLayer/commentsList/commentsList.vue.d.ts +3 -1
- package/dist/superdoc/src/components/CommentsLayer/commentsList/super-comments-list.d.ts +12 -0
- package/dist/superdoc/src/core/SuperDoc.d.ts +10 -7
- package/dist/superdoc/src/core/extensions/index.d.ts +1 -1
- package/dist/superdoc/src/core/extensions/types.d.ts +63 -5
- package/dist/superdoc/src/core/types/index.d.ts +399 -37
- package/dist/superdoc/src/core/v2-integration/v2-integration.d.ts +3 -3
- package/dist/superdoc/src/helpers/comment-small-screen.d.ts +10 -0
- package/dist/superdoc/src/helpers/v2-review-mutation-impact.d.ts +3 -5
- package/dist/superdoc/src/internal/toolbar/built-in/ToolbarButton.vue.d.ts +4 -4
- package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +11 -0
- package/dist/superdoc/src/internal/toolbar/compatibility-catalog.d.ts +1 -1
- package/dist/superdoc/src/public/index.d.cts +20 -0
- package/dist/superdoc/src/public/index.d.ts +10 -0
- package/dist/superdoc/src/public/ui/types.d.ts +5 -5
- package/dist/superdoc/src/stores/comments-store.d.ts +81 -78
- package/dist/superdoc/src/stores/superdoc-store.d.ts +243 -234
- package/dist/superdoc.cjs +6667 -2090
- package/dist/superdoc.es.js +6540 -1963
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +37 -37
- package/package.json +14 -14
- package/dist/chunks/_plugin-vue_export-helper-CZ1Nl59K.cjs +0 -11
- package/dist/chunks/_plugin-vue_export-helper-DSMAhhwD.es.js +0 -6
- package/dist/chunks/constants-BfH0br5u.es.js +0 -3
- package/dist/chunks/constants-D7TNtyJd.cjs +0 -14
- package/dist/chunks/jszip-C8srOKAO.es.js +0 -4650
- package/dist/chunks/jszip-Cs9JBLlJ.cjs +0 -4691
- package/dist/superdoc/src/helpers/v2-remote-review-hydration.d.ts +0 -12
- package/dist/superdoc/src/helpers/v2-review-mutation-reconciler.d.ts +0 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-CZ1Nl59K.cjs");
|
|
1
|
+
const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
|
|
3
2
|
let vue = require("vue");
|
|
3
|
+
//#region src/components/surfaces/FindReplaceSurface.vue
|
|
4
4
|
var _hoisted_1 = ["onKeydown"];
|
|
5
5
|
var _hoisted_2 = { class: "sd-find-replace__row" };
|
|
6
6
|
var _hoisted_3 = [
|
|
@@ -341,5 +341,6 @@ var _sfc_main = {
|
|
|
341
341
|
};
|
|
342
342
|
}
|
|
343
343
|
};
|
|
344
|
-
var FindReplaceSurface_default =
|
|
344
|
+
var FindReplaceSurface_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-41f37c29"]]);
|
|
345
|
+
//#endregion
|
|
345
346
|
exports.default = FindReplaceSurface_default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
|
|
2
2
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, normalizeClass, onMounted, openBlock, ref, toDisplayString, withKeys, withModifiers } from "vue";
|
|
3
|
+
//#region src/components/surfaces/FindReplaceSurface.vue
|
|
3
4
|
var _hoisted_1 = ["onKeydown"];
|
|
4
5
|
var _hoisted_2 = { class: "sd-find-replace__row" };
|
|
5
6
|
var _hoisted_3 = [
|
|
@@ -67,7 +68,7 @@ var _hoisted_20 = {
|
|
|
67
68
|
"aria-hidden": "true"
|
|
68
69
|
};
|
|
69
70
|
var _hoisted_21 = { class: "sd-find-replace__error-text" };
|
|
70
|
-
var FindReplaceSurface_default =
|
|
71
|
+
var FindReplaceSurface_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
|
|
71
72
|
__name: "FindReplaceSurface",
|
|
72
73
|
props: {
|
|
73
74
|
surfaceId: {
|
|
@@ -340,4 +341,5 @@ var FindReplaceSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_defa
|
|
|
340
341
|
};
|
|
341
342
|
}
|
|
342
343
|
}, [["__scopeId", "data-v-41f37c29"]]);
|
|
344
|
+
//#endregion
|
|
343
345
|
export { FindReplaceSurface_default as default };
|
package/dist/chunks/{PasswordPromptSurface-Bu5xHm91.cjs → PasswordPromptSurface-31lYPcCK.cjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-CZ1Nl59K.cjs");
|
|
1
|
+
const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
|
|
3
2
|
let vue = require("vue");
|
|
3
|
+
//#region src/components/surfaces/PasswordPromptSurface.vue
|
|
4
4
|
var _hoisted_1 = ["onKeydown"];
|
|
5
5
|
var _hoisted_2 = ["id"];
|
|
6
6
|
var _hoisted_3 = { class: "sd-password-prompt__description" };
|
|
@@ -109,5 +109,6 @@ var _sfc_main = {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
};
|
|
112
|
-
var PasswordPromptSurface_default =
|
|
112
|
+
var PasswordPromptSurface_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-ecf7f6fb"]]);
|
|
113
|
+
//#endregion
|
|
113
114
|
exports.default = PasswordPromptSurface_default;
|
package/dist/chunks/{PasswordPromptSurface-Bz9_sKhX.es.js → PasswordPromptSurface-CwYeO3iQ.es.js}
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
|
|
2
2
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, openBlock, ref, toDisplayString, vModelText, withDirectives, withKeys, withModifiers } from "vue";
|
|
3
|
+
//#region src/components/surfaces/PasswordPromptSurface.vue
|
|
3
4
|
var _hoisted_1 = ["onKeydown"];
|
|
4
5
|
var _hoisted_2 = ["id"];
|
|
5
6
|
var _hoisted_3 = { class: "sd-password-prompt__description" };
|
|
@@ -17,7 +18,7 @@ var _hoisted_6 = {
|
|
|
17
18
|
var _hoisted_7 = { class: "sd-password-prompt__actions" };
|
|
18
19
|
var _hoisted_8 = ["disabled"];
|
|
19
20
|
var _hoisted_9 = ["disabled"];
|
|
20
|
-
var PasswordPromptSurface_default =
|
|
21
|
+
var PasswordPromptSurface_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
|
|
21
22
|
__name: "PasswordPromptSurface",
|
|
22
23
|
props: {
|
|
23
24
|
surfaceId: {
|
|
@@ -108,4 +109,5 @@ var PasswordPromptSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_d
|
|
|
108
109
|
};
|
|
109
110
|
}
|
|
110
111
|
}, [["__scopeId", "data-v-ecf7f6fb"]]);
|
|
112
|
+
//#endregion
|
|
111
113
|
export { PasswordPromptSurface_default as default };
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import {
|
|
1
|
+
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
|
|
2
|
+
import { t as PDF_TO_CSS_UNITS } from "./constants-B6VBlmKp.es.js";
|
|
3
3
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, markRaw, mergeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, watch } from "vue";
|
|
4
|
-
|
|
4
|
+
//#region src/core/pdf/helpers/floor.js
|
|
5
|
+
var floor = (val, precision) => {
|
|
5
6
|
const multiplier = 10 ** (precision || 0);
|
|
6
7
|
return Math.floor(val * multiplier) / multiplier;
|
|
7
8
|
};
|
|
8
|
-
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/core/pdf/helpers/read-file.js
|
|
11
|
+
var readFileAsArrayBuffer = (blob) => {
|
|
9
12
|
return new Promise((resolve, reject) => {
|
|
10
13
|
const reader = new FileReader();
|
|
11
14
|
reader.onload = (event) => resolve(event.target.result);
|
|
@@ -13,22 +16,71 @@ const readFileAsArrayBuffer = (blob) => {
|
|
|
13
16
|
reader.readAsDataURL(blob);
|
|
14
17
|
});
|
|
15
18
|
};
|
|
16
|
-
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/core/pdf/helpers/range.js
|
|
21
|
+
var range = (start, end) => {
|
|
17
22
|
const length = end - start;
|
|
18
23
|
return Array.from({ length }, (_, i) => start + i);
|
|
19
24
|
};
|
|
20
|
-
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/core/pdf/pdf-adapter.js
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {import('pdfjs-dist').PDFDocumentProxy} PDFDocumentProxy
|
|
29
|
+
* @typedef {import('pdfjs-dist').PDFPageProxy} PDFPageProxy
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {'pdfjs'} AdapterType
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {Object} PDFConfig
|
|
36
|
+
* @property {AdapterType} adapter
|
|
37
|
+
* @property {any} [pdfLib]
|
|
38
|
+
* @property {string} [workerSrc]
|
|
39
|
+
* @property {boolean} [setWorker]
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* @typedef {Object} PDFJSConfig
|
|
43
|
+
* @property {any} pdfLib
|
|
44
|
+
* @property {string} [workerSrc]
|
|
45
|
+
* @property {boolean} [setWorker]
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* @typedef {Object} RenderPagesOptions
|
|
49
|
+
* @property {string} documentId
|
|
50
|
+
* @property {PDFDocumentProxy} pdfDocument
|
|
51
|
+
* @property {HTMLElement} viewerContainer
|
|
52
|
+
* @property {function(string, ...any): void} [emit]
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* @typedef {Object} PageSize
|
|
56
|
+
* @property {number} width
|
|
57
|
+
* @property {number} height
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* @param {Partial<PDFConfig>} [config]
|
|
61
|
+
* @returns {PDFConfig}
|
|
62
|
+
*/
|
|
63
|
+
var createPDFConfig = (config) => {
|
|
21
64
|
return {
|
|
22
65
|
adapter: "pdfjs",
|
|
23
66
|
...config
|
|
24
67
|
};
|
|
25
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* @abstract
|
|
71
|
+
*/
|
|
26
72
|
var PDFAdapter = class PDFAdapter {
|
|
73
|
+
/**
|
|
74
|
+
* @throws {Error}
|
|
75
|
+
*/
|
|
27
76
|
constructor() {
|
|
28
77
|
if (Object.getPrototypeOf(this).constructor === PDFAdapter) throw new Error("Abstract class should not be instantiated");
|
|
29
78
|
}
|
|
30
79
|
};
|
|
31
80
|
var PDFJSAdapter = class extends PDFAdapter {
|
|
81
|
+
/**
|
|
82
|
+
* @param {PDFJSConfig} config
|
|
83
|
+
*/
|
|
32
84
|
constructor(config) {
|
|
33
85
|
super();
|
|
34
86
|
this.pdfLib = config.pdfLib;
|
|
@@ -36,15 +88,30 @@ var PDFJSAdapter = class extends PDFAdapter {
|
|
|
36
88
|
if (config.setWorker) if (this.workerSrc) this.pdfLib.GlobalWorkerOptions.workerSrc = config.workerSrc;
|
|
37
89
|
else this.pdfLib.GlobalWorkerOptions.workerSrc = getWorkerSrcFromCDN(this.pdfLib.version);
|
|
38
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* @param {string | ArrayBuffer | Uint8Array} file
|
|
93
|
+
* @returns {Promise<PDFDocumentProxy>}
|
|
94
|
+
*/
|
|
39
95
|
async getDocument(file) {
|
|
40
96
|
return await this.pdfLib.getDocument(file).promise;
|
|
41
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @param {PDFDocumentProxy} pdf
|
|
100
|
+
* @param {number} firstPage
|
|
101
|
+
* @param {number} lastPage
|
|
102
|
+
* @returns {Promise<PDFPageProxy[]>}
|
|
103
|
+
*/
|
|
42
104
|
async getPages(pdf, firstPage, lastPage) {
|
|
43
105
|
const pagesPromises = range(firstPage, lastPage + 1).map((num) => pdf.getPage(num));
|
|
44
106
|
return await Promise.all(pagesPromises);
|
|
45
107
|
}
|
|
46
108
|
};
|
|
47
109
|
var PDFAdapterFactory = class {
|
|
110
|
+
/**
|
|
111
|
+
* @param {PDFJSConfig & {adapter: AdapterType}} config
|
|
112
|
+
* @returns {PDFAdapter}
|
|
113
|
+
* @throws {Error}
|
|
114
|
+
*/
|
|
48
115
|
static create(config) {
|
|
49
116
|
const adapters = {
|
|
50
117
|
pdfjs: () => {
|
|
@@ -57,12 +124,18 @@ var PDFAdapterFactory = class {
|
|
|
57
124
|
return (adapters[config.adapter] ?? adapters.default)();
|
|
58
125
|
}
|
|
59
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* @param {number} version
|
|
129
|
+
* @returns {string}
|
|
130
|
+
*/
|
|
60
131
|
function getWorkerSrcFromCDN(version) {
|
|
61
132
|
return `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.min.mjs`;
|
|
62
133
|
}
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/components/PdfViewer/PdfViewerPage.vue
|
|
63
136
|
var _hoisted_1$1 = ["data-page-id", "data-page-number"];
|
|
64
137
|
var _hoisted_2 = { class: "sd-pdf-viewer-page__canvas-wrapper" };
|
|
65
|
-
var PdfViewerPage_default =
|
|
138
|
+
var PdfViewerPage_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
|
|
66
139
|
__name: "PdfViewerPage",
|
|
67
140
|
props: {
|
|
68
141
|
config: {
|
|
@@ -161,9 +234,8 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
161
234
|
});
|
|
162
235
|
const pageStyle = computed(() => {
|
|
163
236
|
const { width: widthPt, height: heightPt } = getPagePtSize();
|
|
164
|
-
const scaleFactor = getScaleFactor();
|
|
165
237
|
return {
|
|
166
|
-
"--scale-factor": `${
|
|
238
|
+
"--scale-factor": `${getScaleFactor()}`,
|
|
167
239
|
width: `calc(var(--scale-factor) * ${widthPt}px)`,
|
|
168
240
|
height: `calc(var(--scale-factor) * ${heightPt}px)`
|
|
169
241
|
};
|
|
@@ -224,7 +296,7 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
224
296
|
await renderTask.promise;
|
|
225
297
|
const size = getPageSize();
|
|
226
298
|
const originalPt = getPagePtSize();
|
|
227
|
-
|
|
299
|
+
const payload = {
|
|
228
300
|
page: props.page,
|
|
229
301
|
documentId: props.page.documentId,
|
|
230
302
|
pageIndex: pageIdx.value,
|
|
@@ -233,7 +305,8 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
233
305
|
height: size.height,
|
|
234
306
|
originalWidth: originalPt.width * PDF_TO_CSS_UNITS,
|
|
235
307
|
originalHeight: originalPt.height * PDF_TO_CSS_UNITS
|
|
236
|
-
}
|
|
308
|
+
};
|
|
309
|
+
emit("page-rendered", payload);
|
|
237
310
|
} catch (e) {
|
|
238
311
|
destroyRenderTask();
|
|
239
312
|
emit("page-error", props.page);
|
|
@@ -306,7 +379,7 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
306
379
|
};
|
|
307
380
|
}
|
|
308
381
|
}, [["__scopeId", "data-v-d7a9857d"]]);
|
|
309
|
-
var PdfViewerDocument_default =
|
|
382
|
+
var PdfViewerDocument_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
|
|
310
383
|
__name: "PdfViewerDocument",
|
|
311
384
|
props: {
|
|
312
385
|
config: {
|
|
@@ -376,8 +449,10 @@ var PdfViewerDocument_default = /* @__PURE__ */ __plugin_vue_export_helper_defau
|
|
|
376
449
|
};
|
|
377
450
|
}
|
|
378
451
|
}, [["__scopeId", "data-v-2152178b"]]);
|
|
452
|
+
//#endregion
|
|
453
|
+
//#region src/components/PdfViewer/PdfViewer.vue
|
|
379
454
|
var _hoisted_1 = { class: "sd-pdf-viewer__main" };
|
|
380
|
-
var PdfViewer_default =
|
|
455
|
+
var PdfViewer_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
|
|
381
456
|
__name: "PdfViewer",
|
|
382
457
|
props: {
|
|
383
458
|
config: {
|
|
@@ -389,6 +464,11 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
389
464
|
required: true
|
|
390
465
|
},
|
|
391
466
|
fileId: { type: String },
|
|
467
|
+
/**
|
|
468
|
+
* Zoom scale to render the first paint at (1 = 100%). The host seeds
|
|
469
|
+
* this from `config.zoom.initial` so a PDF never flashes 100% before
|
|
470
|
+
* a watcher catches up; later changes still arrive via updateScale().
|
|
471
|
+
*/
|
|
392
472
|
initialScale: {
|
|
393
473
|
type: Number,
|
|
394
474
|
default: 1
|
|
@@ -447,16 +527,19 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
447
527
|
renderedPages.value = 0;
|
|
448
528
|
}
|
|
449
529
|
function updateScale(nextScale) {
|
|
450
|
-
|
|
530
|
+
const roundedScale = floor(nextScale, 2);
|
|
531
|
+
scale.value = roundedScale;
|
|
451
532
|
}
|
|
452
533
|
__expose({ updateScale });
|
|
453
534
|
async function getDocument(file) {
|
|
454
535
|
if (!file) return;
|
|
455
536
|
try {
|
|
456
537
|
const result = await readFileAsArrayBuffer(file);
|
|
538
|
+
const documentId = props.fileId || generateDocumentId("document");
|
|
539
|
+
const pdfjsDocument = await pdfAdapter.getDocument(result);
|
|
457
540
|
pdf.value = {
|
|
458
|
-
documentId
|
|
459
|
-
pdfjsDocument: markRaw(
|
|
541
|
+
documentId,
|
|
542
|
+
pdfjsDocument: markRaw(pdfjsDocument)
|
|
460
543
|
};
|
|
461
544
|
emit("document-loaded", file);
|
|
462
545
|
} catch (e) {
|
|
@@ -480,9 +563,9 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
480
563
|
pdfjsPage: markRaw(pdfjsPage)
|
|
481
564
|
};
|
|
482
565
|
};
|
|
483
|
-
const pages
|
|
484
|
-
updatePages(pages
|
|
485
|
-
emit("pages-loaded", pages
|
|
566
|
+
const pages = pdfjsPages.map(mapPages);
|
|
567
|
+
updatePages(pages);
|
|
568
|
+
emit("pages-loaded", pages);
|
|
486
569
|
} catch (e) {
|
|
487
570
|
emit("document-error", e);
|
|
488
571
|
console.error(e);
|
|
@@ -528,4 +611,5 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
|
|
|
528
611
|
};
|
|
529
612
|
}
|
|
530
613
|
}, [["__scopeId", "data-v-05c9d9b5"]]);
|
|
614
|
+
//#endregion
|
|
531
615
|
export { PdfViewer_default as default };
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const require_constants = require("./constants-D7TNtyJd.cjs");
|
|
1
|
+
const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
|
|
2
|
+
const require_constants = require("./constants-DpXuDx_g.cjs");
|
|
4
3
|
let vue = require("vue");
|
|
5
|
-
|
|
4
|
+
//#region src/core/pdf/helpers/floor.js
|
|
5
|
+
var floor = (val, precision) => {
|
|
6
6
|
const multiplier = 10 ** (precision || 0);
|
|
7
7
|
return Math.floor(val * multiplier) / multiplier;
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/core/pdf/helpers/read-file.js
|
|
11
|
+
var readFileAsArrayBuffer = (blob) => {
|
|
10
12
|
return new Promise((resolve, reject) => {
|
|
11
13
|
const reader = new FileReader();
|
|
12
14
|
reader.onload = (event) => resolve(event.target.result);
|
|
@@ -14,22 +16,71 @@ const readFileAsArrayBuffer = (blob) => {
|
|
|
14
16
|
reader.readAsDataURL(blob);
|
|
15
17
|
});
|
|
16
18
|
};
|
|
17
|
-
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/core/pdf/helpers/range.js
|
|
21
|
+
var range = (start, end) => {
|
|
18
22
|
const length = end - start;
|
|
19
23
|
return Array.from({ length }, (_, i) => start + i);
|
|
20
24
|
};
|
|
21
|
-
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/core/pdf/pdf-adapter.js
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {import('pdfjs-dist').PDFDocumentProxy} PDFDocumentProxy
|
|
29
|
+
* @typedef {import('pdfjs-dist').PDFPageProxy} PDFPageProxy
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {'pdfjs'} AdapterType
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {Object} PDFConfig
|
|
36
|
+
* @property {AdapterType} adapter
|
|
37
|
+
* @property {any} [pdfLib]
|
|
38
|
+
* @property {string} [workerSrc]
|
|
39
|
+
* @property {boolean} [setWorker]
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* @typedef {Object} PDFJSConfig
|
|
43
|
+
* @property {any} pdfLib
|
|
44
|
+
* @property {string} [workerSrc]
|
|
45
|
+
* @property {boolean} [setWorker]
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* @typedef {Object} RenderPagesOptions
|
|
49
|
+
* @property {string} documentId
|
|
50
|
+
* @property {PDFDocumentProxy} pdfDocument
|
|
51
|
+
* @property {HTMLElement} viewerContainer
|
|
52
|
+
* @property {function(string, ...any): void} [emit]
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* @typedef {Object} PageSize
|
|
56
|
+
* @property {number} width
|
|
57
|
+
* @property {number} height
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* @param {Partial<PDFConfig>} [config]
|
|
61
|
+
* @returns {PDFConfig}
|
|
62
|
+
*/
|
|
63
|
+
var createPDFConfig = (config) => {
|
|
22
64
|
return {
|
|
23
65
|
adapter: "pdfjs",
|
|
24
66
|
...config
|
|
25
67
|
};
|
|
26
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* @abstract
|
|
71
|
+
*/
|
|
27
72
|
var PDFAdapter = class PDFAdapter {
|
|
73
|
+
/**
|
|
74
|
+
* @throws {Error}
|
|
75
|
+
*/
|
|
28
76
|
constructor() {
|
|
29
77
|
if (Object.getPrototypeOf(this).constructor === PDFAdapter) throw new Error("Abstract class should not be instantiated");
|
|
30
78
|
}
|
|
31
79
|
};
|
|
32
80
|
var PDFJSAdapter = class extends PDFAdapter {
|
|
81
|
+
/**
|
|
82
|
+
* @param {PDFJSConfig} config
|
|
83
|
+
*/
|
|
33
84
|
constructor(config) {
|
|
34
85
|
super();
|
|
35
86
|
this.pdfLib = config.pdfLib;
|
|
@@ -37,15 +88,30 @@ var PDFJSAdapter = class extends PDFAdapter {
|
|
|
37
88
|
if (config.setWorker) if (this.workerSrc) this.pdfLib.GlobalWorkerOptions.workerSrc = config.workerSrc;
|
|
38
89
|
else this.pdfLib.GlobalWorkerOptions.workerSrc = getWorkerSrcFromCDN(this.pdfLib.version);
|
|
39
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* @param {string | ArrayBuffer | Uint8Array} file
|
|
93
|
+
* @returns {Promise<PDFDocumentProxy>}
|
|
94
|
+
*/
|
|
40
95
|
async getDocument(file) {
|
|
41
96
|
return await this.pdfLib.getDocument(file).promise;
|
|
42
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @param {PDFDocumentProxy} pdf
|
|
100
|
+
* @param {number} firstPage
|
|
101
|
+
* @param {number} lastPage
|
|
102
|
+
* @returns {Promise<PDFPageProxy[]>}
|
|
103
|
+
*/
|
|
43
104
|
async getPages(pdf, firstPage, lastPage) {
|
|
44
105
|
const pagesPromises = range(firstPage, lastPage + 1).map((num) => pdf.getPage(num));
|
|
45
106
|
return await Promise.all(pagesPromises);
|
|
46
107
|
}
|
|
47
108
|
};
|
|
48
109
|
var PDFAdapterFactory = class {
|
|
110
|
+
/**
|
|
111
|
+
* @param {PDFJSConfig & {adapter: AdapterType}} config
|
|
112
|
+
* @returns {PDFAdapter}
|
|
113
|
+
* @throws {Error}
|
|
114
|
+
*/
|
|
49
115
|
static create(config) {
|
|
50
116
|
const adapters = {
|
|
51
117
|
pdfjs: () => {
|
|
@@ -58,9 +124,15 @@ var PDFAdapterFactory = class {
|
|
|
58
124
|
return (adapters[config.adapter] ?? adapters.default)();
|
|
59
125
|
}
|
|
60
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* @param {number} version
|
|
129
|
+
* @returns {string}
|
|
130
|
+
*/
|
|
61
131
|
function getWorkerSrcFromCDN(version) {
|
|
62
132
|
return `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.min.mjs`;
|
|
63
133
|
}
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/components/PdfViewer/PdfViewerPage.vue
|
|
64
136
|
var _hoisted_1$1 = ["data-page-id", "data-page-number"];
|
|
65
137
|
var _hoisted_2 = { class: "sd-pdf-viewer-page__canvas-wrapper" };
|
|
66
138
|
var _sfc_main$2 = {
|
|
@@ -162,9 +234,8 @@ var _sfc_main$2 = {
|
|
|
162
234
|
});
|
|
163
235
|
const pageStyle = (0, vue.computed)(() => {
|
|
164
236
|
const { width: widthPt, height: heightPt } = getPagePtSize();
|
|
165
|
-
const scaleFactor = getScaleFactor();
|
|
166
237
|
return {
|
|
167
|
-
"--scale-factor": `${
|
|
238
|
+
"--scale-factor": `${getScaleFactor()}`,
|
|
168
239
|
width: `calc(var(--scale-factor) * ${widthPt}px)`,
|
|
169
240
|
height: `calc(var(--scale-factor) * ${heightPt}px)`
|
|
170
241
|
};
|
|
@@ -225,7 +296,7 @@ var _sfc_main$2 = {
|
|
|
225
296
|
await renderTask.promise;
|
|
226
297
|
const size = getPageSize();
|
|
227
298
|
const originalPt = getPagePtSize();
|
|
228
|
-
|
|
299
|
+
const payload = {
|
|
229
300
|
page: props.page,
|
|
230
301
|
documentId: props.page.documentId,
|
|
231
302
|
pageIndex: pageIdx.value,
|
|
@@ -234,7 +305,8 @@ var _sfc_main$2 = {
|
|
|
234
305
|
height: size.height,
|
|
235
306
|
originalWidth: originalPt.width * require_constants.PDF_TO_CSS_UNITS,
|
|
236
307
|
originalHeight: originalPt.height * require_constants.PDF_TO_CSS_UNITS
|
|
237
|
-
}
|
|
308
|
+
};
|
|
309
|
+
emit("page-rendered", payload);
|
|
238
310
|
} catch (e) {
|
|
239
311
|
destroyRenderTask();
|
|
240
312
|
emit("page-error", props.page);
|
|
@@ -307,7 +379,9 @@ var _sfc_main$2 = {
|
|
|
307
379
|
};
|
|
308
380
|
}
|
|
309
381
|
};
|
|
310
|
-
var PdfViewerPage_default =
|
|
382
|
+
var PdfViewerPage_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$2, [["__scopeId", "data-v-d7a9857d"]]);
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region src/components/PdfViewer/PdfViewerDocument.vue
|
|
311
385
|
var _sfc_main$1 = {
|
|
312
386
|
__name: "PdfViewerDocument",
|
|
313
387
|
props: {
|
|
@@ -378,7 +452,9 @@ var _sfc_main$1 = {
|
|
|
378
452
|
};
|
|
379
453
|
}
|
|
380
454
|
};
|
|
381
|
-
var PdfViewerDocument_default =
|
|
455
|
+
var PdfViewerDocument_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$1, [["__scopeId", "data-v-2152178b"]]);
|
|
456
|
+
//#endregion
|
|
457
|
+
//#region src/components/PdfViewer/PdfViewer.vue
|
|
382
458
|
var _hoisted_1 = { class: "sd-pdf-viewer__main" };
|
|
383
459
|
var _sfc_main = {
|
|
384
460
|
__name: "PdfViewer",
|
|
@@ -392,6 +468,11 @@ var _sfc_main = {
|
|
|
392
468
|
required: true
|
|
393
469
|
},
|
|
394
470
|
fileId: { type: String },
|
|
471
|
+
/**
|
|
472
|
+
* Zoom scale to render the first paint at (1 = 100%). The host seeds
|
|
473
|
+
* this from `config.zoom.initial` so a PDF never flashes 100% before
|
|
474
|
+
* a watcher catches up; later changes still arrive via updateScale().
|
|
475
|
+
*/
|
|
395
476
|
initialScale: {
|
|
396
477
|
type: Number,
|
|
397
478
|
default: 1
|
|
@@ -450,16 +531,19 @@ var _sfc_main = {
|
|
|
450
531
|
renderedPages.value = 0;
|
|
451
532
|
}
|
|
452
533
|
function updateScale(nextScale) {
|
|
453
|
-
|
|
534
|
+
const roundedScale = floor(nextScale, 2);
|
|
535
|
+
scale.value = roundedScale;
|
|
454
536
|
}
|
|
455
537
|
__expose({ updateScale });
|
|
456
538
|
async function getDocument(file) {
|
|
457
539
|
if (!file) return;
|
|
458
540
|
try {
|
|
459
541
|
const result = await readFileAsArrayBuffer(file);
|
|
542
|
+
const documentId = props.fileId || generateDocumentId("document");
|
|
543
|
+
const pdfjsDocument = await pdfAdapter.getDocument(result);
|
|
460
544
|
pdf.value = {
|
|
461
|
-
documentId
|
|
462
|
-
pdfjsDocument: (0, vue.markRaw)(
|
|
545
|
+
documentId,
|
|
546
|
+
pdfjsDocument: (0, vue.markRaw)(pdfjsDocument)
|
|
463
547
|
};
|
|
464
548
|
emit("document-loaded", file);
|
|
465
549
|
} catch (e) {
|
|
@@ -483,9 +567,9 @@ var _sfc_main = {
|
|
|
483
567
|
pdfjsPage: (0, vue.markRaw)(pdfjsPage)
|
|
484
568
|
};
|
|
485
569
|
};
|
|
486
|
-
const pages
|
|
487
|
-
updatePages(pages
|
|
488
|
-
emit("pages-loaded", pages
|
|
570
|
+
const pages = pdfjsPages.map(mapPages);
|
|
571
|
+
updatePages(pages);
|
|
572
|
+
emit("pages-loaded", pages);
|
|
489
573
|
} catch (e) {
|
|
490
574
|
emit("document-error", e);
|
|
491
575
|
console.error(e);
|
|
@@ -531,5 +615,6 @@ var _sfc_main = {
|
|
|
531
615
|
};
|
|
532
616
|
}
|
|
533
617
|
};
|
|
534
|
-
var PdfViewer_default =
|
|
618
|
+
var PdfViewer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-05c9d9b5"]]);
|
|
619
|
+
//#endregion
|
|
535
620
|
exports.default = PdfViewer_default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region \0plugin-vue:export-helper
|
|
2
|
+
var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
3
|
+
const target = sfc.__vccOpts || sfc;
|
|
4
|
+
for (const [key, val] of props) target[key] = val;
|
|
5
|
+
return target;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { _plugin_vue_export_helper_default as t };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region \0plugin-vue:export-helper
|
|
2
|
+
var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
3
|
+
const target = sfc.__vccOpts || sfc;
|
|
4
|
+
for (const [key, val] of props) target[key] = val;
|
|
5
|
+
return target;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
Object.defineProperty(exports, "_plugin_vue_export_helper_default", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function() {
|
|
11
|
+
return _plugin_vue_export_helper_default;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
//#region ../../shared/common/data/blank.docx?url
|
|
1
2
|
var blank_default = "data:application/octet-stream;base64,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";
|
|
3
|
+
//#endregion
|
|
2
4
|
Object.defineProperty(exports, "blank_default", {
|
|
3
5
|
enumerable: true,
|
|
4
6
|
get: function() {
|