@sync-in/server 2.0.0 → 2.1.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/CHANGELOG.md +18 -0
- package/README.md +38 -28
- package/environment/environment.dist.yaml +4 -0
- package/package.json +17 -17
- package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -1
- package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
- package/server/applications/files/utils/files.js +37 -24
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/notifications/i18n/index.js +5 -0
- package/server/applications/notifications/i18n/index.js.map +1 -1
- package/server/applications/notifications/i18n/nl.js +54 -0
- package/server/applications/notifications/i18n/nl.js.map +1 -0
- package/server/applications/sync/services/sync-clients-manager.service.js +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
- package/server/authentication/providers/oidc/auth-oidc.config.js +5 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -1
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js +10 -7
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -1
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +16 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -1
- package/server/common/i18n.js +1 -0
- package/server/common/i18n.js.map +1 -1
- package/server/infrastructure/database/database.module.js +7 -0
- package/server/infrastructure/database/database.module.js.map +1 -1
- package/server/infrastructure/database/scripts/check-db.js +20 -0
- package/server/infrastructure/database/scripts/check-db.js.map +1 -0
- package/static/3rdpartylicenses.txt +391 -391
- package/static/assets/pdfjs/build/pdf.mjs +512 -417
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +390 -4
- package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.worker.mjs +2378 -401
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/debugger.mjs +6 -15
- package/static/assets/pdfjs/web/locale/be/viewer.ftl +78 -0
- package/static/assets/pdfjs/web/locale/cs/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/cy/viewer.ftl +90 -0
- package/static/assets/pdfjs/web/locale/de/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/el/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +14 -14
- package/static/assets/pdfjs/web/locale/eo/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/eu/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/fi/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/fr/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/gn/viewer.ftl +77 -0
- package/static/assets/pdfjs/web/locale/he/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +87 -0
- package/static/assets/pdfjs/web/locale/hu/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +10 -10
- package/static/assets/pdfjs/web/locale/ia/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/it/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/ja/viewer.ftl +58 -0
- package/static/assets/pdfjs/web/locale/ka/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/km/viewer.ftl +44 -0
- package/static/assets/pdfjs/web/locale/ko/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/nl/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/pl/viewer.ftl +78 -0
- package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/ro/viewer.ftl +81 -3
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +85 -0
- package/static/assets/pdfjs/web/locale/sk/viewer.ftl +83 -1
- package/static/assets/pdfjs/web/locale/sl/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/tg/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/th/viewer.ftl +58 -0
- package/static/assets/pdfjs/web/locale/tr/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/uk/viewer.ftl +144 -0
- package/static/assets/pdfjs/web/locale/vi/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +61 -3
- package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/viewer.css +292 -152
- package/static/assets/pdfjs/web/viewer.html +14 -21
- package/static/assets/pdfjs/web/viewer.mjs +782 -327
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
- package/static/{chunk-7WOPGQXB.js → chunk-25XD7GNL.js} +1 -1
- package/static/{chunk-E5WI5725.js → chunk-2W4Z5VTY.js} +1 -1
- package/static/chunk-2XNPCG4F.js +1 -0
- package/static/chunk-3B2RHO2H.js +1 -0
- package/static/{chunk-UMDRE4S7.js → chunk-3DNAFXGN.js} +1 -1
- package/static/{chunk-OANZITPM.js → chunk-3EPN4WD7.js} +1 -1
- package/static/chunk-4L2WBHB6.js +1 -0
- package/static/chunk-4RYZNAIZ.js +1 -0
- package/static/chunk-5C77PEFA.js +1 -0
- package/static/chunk-5JA3DZWQ.js +1 -0
- package/static/chunk-5MSTJGPE.js +1 -0
- package/static/{chunk-VSBFNFOM.js → chunk-5O7KTREI.js} +1 -1
- package/static/chunk-6KORLSUZ.js +1 -0
- package/static/chunk-6LIHQVPW.js +2 -0
- package/static/{chunk-2CKLZ3FM.js → chunk-72BXGTUG.js} +1 -1
- package/static/chunk-7423QJQN.js +1 -0
- package/static/chunk-77HB4DE6.js +1 -0
- package/static/{chunk-RWAAC3A4.js → chunk-7PVTMTWH.js} +1 -1
- package/static/{chunk-IWWBV6EM.js → chunk-7UIOW5AD.js} +1 -1
- package/static/chunk-7YMONFZZ.js +1 -0
- package/static/chunk-AUPNSQGJ.js +1 -0
- package/static/chunk-AYF6ZI6L.js +5 -0
- package/static/chunk-BEESW4BF.js +1 -0
- package/static/{chunk-2R6IBBPZ.js → chunk-BI3VI6XG.js} +1 -1
- package/static/chunk-BMGKB3JK.js +4 -0
- package/static/chunk-CFXAKPPB.js +563 -0
- package/static/chunk-CGYZG6CB.js +2 -0
- package/static/{chunk-K25E7YGG.js → chunk-CHAYERHQ.js} +1 -1
- package/static/chunk-CLNKPQMZ.js +1 -0
- package/static/{chunk-ISV3BO6R.js → chunk-CVLSRA2W.js} +1 -1
- package/static/chunk-D373HBMN.js +1 -0
- package/static/{chunk-MTRXBVWZ.js → chunk-D43PHZEY.js} +1 -1
- package/static/chunk-D44RAVFK.js +1 -0
- package/static/chunk-DFVVEGWC.js +1 -0
- package/static/chunk-E43LXI27.js +1 -0
- package/static/{chunk-GQFMWVFD.js → chunk-E5M4ZDID.js} +1 -1
- package/static/chunk-F7JS3YWP.js +2 -0
- package/static/chunk-FRWEEOOM.js +1 -0
- package/static/chunk-HIZGSP7R.js +1 -0
- package/static/chunk-HX6ZWXQD.js +1 -0
- package/static/chunk-HZ6LLXLE.js +1 -0
- package/static/{chunk-RLL634K4.js → chunk-IFHFPV5W.js} +1 -1
- package/static/{chunk-KJD3KFF3.js → chunk-JICKUOQ6.js} +1 -1
- package/static/chunk-KY2BW2LP.js +1 -0
- package/static/{chunk-CWYHOPOP.js → chunk-KYA3HPDX.js} +1 -1
- package/static/{chunk-RWCNTCU5.js → chunk-KYLATNX5.js} +1 -1
- package/static/chunk-LCZNSV4Z.js +1 -0
- package/static/{chunk-GVNTC564.js → chunk-MA6DYTMQ.js} +1 -1
- package/static/{chunk-KZS7CTNR.js → chunk-MXH5XYBD.js} +1 -1
- package/static/{chunk-NMTBMHUL.js → chunk-MXIJGSDQ.js} +1 -1
- package/static/{chunk-RS2OFKWP.js → chunk-NE75E3GD.js} +1 -1
- package/static/{chunk-MZQK6LNV.js → chunk-NJKIHMOH.js} +1 -1
- package/static/chunk-NMDGST45.js +1 -0
- package/static/{chunk-CU76ATCF.js → chunk-OF7P4LTI.js} +1 -1
- package/static/chunk-OK5K5CYJ.js +13 -0
- package/static/chunk-OZ6LXMUH.js +1 -0
- package/static/chunk-PFY6YUPS.js +2 -0
- package/static/chunk-PQ2YFCVM.js +1 -0
- package/static/{chunk-Y4AUYQTG.js → chunk-QPX34S6P.js} +4 -4
- package/static/{chunk-27ATUHBH.js → chunk-QQO7S2VY.js} +1 -1
- package/static/chunk-RANZZPRG.js +1 -0
- package/static/{chunk-WN4WXCVK.js → chunk-RNQB2QJB.js} +1 -1
- package/static/{chunk-Q3EGCMF5.js → chunk-S7QYAKG5.js} +1 -1
- package/static/chunk-SCEWOW5C.js +2 -0
- package/static/chunk-SQ2KIOJ7.js +1 -0
- package/static/{chunk-QVRVFYJH.js → chunk-SW5GCGOI.js} +1 -1
- package/static/chunk-SWCYWB2T.js +1 -0
- package/static/{chunk-4FIGEBNL.js → chunk-SWZ3L2LK.js} +1 -1
- package/static/{chunk-TWCGKSYE.js → chunk-TDK62XEQ.js} +1 -1
- package/static/chunk-TH4L5H6P.js +1 -0
- package/static/chunk-U3ZGYOLA.js +1 -0
- package/static/chunk-U6V4Y234.js +1 -0
- package/static/chunk-U7KNV64D.js +2 -0
- package/static/chunk-UC66HJV4.js +1 -0
- package/static/{chunk-7GWW6MJO.js → chunk-V4HAIERK.js} +1 -1
- package/static/chunk-V55LDRV7.js +1 -0
- package/static/{chunk-5CZOSAMZ.js → chunk-WF6D7CQ4.js} +1 -1
- package/static/chunk-WJPVHM7T.js +1 -0
- package/static/chunk-WM4XBDC2.js +1 -0
- package/static/chunk-X2EKQYMZ.js +1 -0
- package/static/{chunk-L5IHUVXL.js → chunk-XEDABMM5.js} +1 -1
- package/static/{chunk-OGE4SAHU.js → chunk-Y3YKVK3K.js} +1 -1
- package/static/{chunk-QIGUDEZF.js → chunk-YEOAMYRK.js} +1 -1
- package/static/{chunk-A4UGPSWX.js → chunk-ZLTL7I7D.js} +1 -1
- package/static/chunk-ZYNBYM7I.js +3 -0
- package/static/index.html +2 -2
- package/static/main-KFUSRCP5.js +5 -0
- package/static/media/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 +0 -0
- package/static/media/inter-cyrillic-wght-normal-JEOLYBOO.woff2 +0 -0
- package/static/media/inter-greek-ext-wght-normal-EOVOK2B5.woff2 +0 -0
- package/static/media/inter-greek-wght-normal-IRE366VL.woff2 +0 -0
- package/static/media/inter-latin-ext-wght-normal-HA22NDSG.woff2 +0 -0
- package/static/media/inter-latin-wght-normal-NRMW37G5.woff2 +0 -0
- package/static/media/inter-vietnamese-wght-normal-CE5GGD3W.woff2 +0 -0
- package/static/styles-66AEF62D.css +1 -0
- package/static/chunk-22TZP6HW.js +0 -1
- package/static/chunk-2QZPX7LO.js +0 -1
- package/static/chunk-4P3JABAP.js +0 -13
- package/static/chunk-677WUBCT.js +0 -1
- package/static/chunk-74CAHBFM.js +0 -1
- package/static/chunk-AHO37FKW.js +0 -1
- package/static/chunk-AQCXMKP3.js +0 -1
- package/static/chunk-B6PDYCRO.js +0 -3
- package/static/chunk-FC5HTKVM.js +0 -1
- package/static/chunk-FOSM7EYI.js +0 -1
- package/static/chunk-GAZO25PI.js +0 -1
- package/static/chunk-GB7ABR5N.js +0 -1
- package/static/chunk-GEHFKZQ5.js +0 -2
- package/static/chunk-HGL3NYP2.js +0 -2
- package/static/chunk-HLIWPWRA.js +0 -1
- package/static/chunk-HNYB3M4S.js +0 -1
- package/static/chunk-HUXAUQMN.js +0 -1
- package/static/chunk-I2XA6PPK.js +0 -1
- package/static/chunk-JV3AGU5B.js +0 -1
- package/static/chunk-K46PUTZB.js +0 -1
- package/static/chunk-KERFLJ56.js +0 -1
- package/static/chunk-KPKSI23S.js +0 -1
- package/static/chunk-L7RRX2M3.js +0 -1
- package/static/chunk-LGWJ2WKU.js +0 -1
- package/static/chunk-LUSVISM6.js +0 -1
- package/static/chunk-MLC7JK2H.js +0 -2
- package/static/chunk-MOHNYW2A.js +0 -1
- package/static/chunk-NCDUOVMW.js +0 -1
- package/static/chunk-NGUAJIGI.js +0 -1
- package/static/chunk-NIPP6JDI.js +0 -1
- package/static/chunk-O4XXMZFX.js +0 -4
- package/static/chunk-OI3ME22C.js +0 -1
- package/static/chunk-QF2NSHZA.js +0 -1
- package/static/chunk-QJVC3SRJ.js +0 -562
- package/static/chunk-QKN6LAAA.js +0 -1
- package/static/chunk-QRFESU5O.js +0 -2
- package/static/chunk-RFJIPIOK.js +0 -2
- package/static/chunk-S5Y64DDS.js +0 -1
- package/static/chunk-SLG5KDU6.js +0 -1
- package/static/chunk-TJ4CVFEL.js +0 -1
- package/static/chunk-VRIOLRYR.js +0 -5
- package/static/chunk-VS4O2XDP.js +0 -1
- package/static/chunk-WX7RXW7K.js +0 -1
- package/static/chunk-XC4POKR3.js +0 -2
- package/static/chunk-Y67J3BOL.js +0 -1
- package/static/chunk-YMIXHRJQ.js +0 -1
- package/static/chunk-ZUNKFAKP.js +0 -1
- package/static/main-QN4UCOC5.js +0 -5
- package/static/styles-46GLIE7Y.css +0 -1
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* pdfjsVersion = 5.
|
|
25
|
-
* pdfjsBuild =
|
|
24
|
+
* pdfjsVersion = 5.5.207
|
|
25
|
+
* pdfjsBuild = 527964698
|
|
26
26
|
*/
|
|
27
27
|
/******/ // The require scope
|
|
28
28
|
/******/ var __webpack_require__ = {};
|
|
@@ -125,7 +125,7 @@ const TextRenderingMode = {
|
|
|
125
125
|
FILL_STROKE_MASK: 3,
|
|
126
126
|
ADD_TO_PATH_FLAG: 4
|
|
127
127
|
};
|
|
128
|
-
const
|
|
128
|
+
const ImageKind = {
|
|
129
129
|
GRAYSCALE_1BPP: 1,
|
|
130
130
|
RGB_24BPP: 2,
|
|
131
131
|
RGBA_32BPP: 3
|
|
@@ -408,6 +408,9 @@ function updateUrlHash(url, hash, allowRel = false) {
|
|
|
408
408
|
}
|
|
409
409
|
return "";
|
|
410
410
|
}
|
|
411
|
+
function stripPath(str) {
|
|
412
|
+
return str.substring(str.lastIndexOf("/") + 1);
|
|
413
|
+
}
|
|
411
414
|
function shadow(obj, prop, value, nonSerializable = false) {
|
|
412
415
|
Object.defineProperty(obj, prop, {
|
|
413
416
|
value,
|
|
@@ -508,7 +511,7 @@ function isEvalSupported() {
|
|
|
508
511
|
return false;
|
|
509
512
|
}
|
|
510
513
|
}
|
|
511
|
-
class
|
|
514
|
+
class FeatureTest {
|
|
512
515
|
static get isLittleEndian() {
|
|
513
516
|
return shadow(this, "isLittleEndian", isLittleEndian());
|
|
514
517
|
}
|
|
@@ -894,6 +897,9 @@ function _isValidExplicitDest(validRef, validName, dest) {
|
|
|
894
897
|
}
|
|
895
898
|
return true;
|
|
896
899
|
}
|
|
900
|
+
const makeArr = () => [];
|
|
901
|
+
const makeMap = () => new Map();
|
|
902
|
+
const makeObj = () => Object.create(null);
|
|
897
903
|
function MathClamp(v, min, max) {
|
|
898
904
|
return Math.min(Math.max(v, min), max);
|
|
899
905
|
}
|
|
@@ -1173,10 +1179,10 @@ async function fetchData(url, type = "text") {
|
|
|
1173
1179
|
throw new Error(response.statusText);
|
|
1174
1180
|
}
|
|
1175
1181
|
switch (type) {
|
|
1176
|
-
case "arraybuffer":
|
|
1177
|
-
return response.arrayBuffer();
|
|
1178
1182
|
case "blob":
|
|
1179
1183
|
return response.blob();
|
|
1184
|
+
case "bytes":
|
|
1185
|
+
return response.bytes();
|
|
1180
1186
|
case "json":
|
|
1181
1187
|
return response.json();
|
|
1182
1188
|
}
|
|
@@ -1185,14 +1191,16 @@ async function fetchData(url, type = "text") {
|
|
|
1185
1191
|
return new Promise((resolve, reject) => {
|
|
1186
1192
|
const request = new XMLHttpRequest();
|
|
1187
1193
|
request.open("GET", url, true);
|
|
1188
|
-
request.responseType = type;
|
|
1194
|
+
request.responseType = type === "bytes" ? "arraybuffer" : type;
|
|
1189
1195
|
request.onreadystatechange = () => {
|
|
1190
1196
|
if (request.readyState !== XMLHttpRequest.DONE) {
|
|
1191
1197
|
return;
|
|
1192
1198
|
}
|
|
1193
1199
|
if (request.status === 200 || request.status === 0) {
|
|
1194
1200
|
switch (type) {
|
|
1195
|
-
case "
|
|
1201
|
+
case "bytes":
|
|
1202
|
+
resolve(new Uint8Array(request.response));
|
|
1203
|
+
return;
|
|
1196
1204
|
case "blob":
|
|
1197
1205
|
case "json":
|
|
1198
1206
|
resolve(request.response);
|
|
@@ -1342,7 +1350,7 @@ function isPdfFile(filename) {
|
|
|
1342
1350
|
}
|
|
1343
1351
|
function getFilenameFromUrl(url) {
|
|
1344
1352
|
[url] = url.split(/[#?]/, 1);
|
|
1345
|
-
return
|
|
1353
|
+
return stripPath(url);
|
|
1346
1354
|
}
|
|
1347
1355
|
function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
|
|
1348
1356
|
if (typeof url !== "string") {
|
|
@@ -1379,11 +1387,10 @@ function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
|
|
|
1379
1387
|
try {
|
|
1380
1388
|
let decoded = decodeURIComponent(name);
|
|
1381
1389
|
if (decoded.includes("/")) {
|
|
1382
|
-
decoded = decoded
|
|
1383
|
-
if (
|
|
1384
|
-
return
|
|
1390
|
+
decoded = stripPath(decoded);
|
|
1391
|
+
if (/^\.pdf$/i.test(decoded)) {
|
|
1392
|
+
return name;
|
|
1385
1393
|
}
|
|
1386
|
-
return name;
|
|
1387
1394
|
}
|
|
1388
1395
|
return decoded;
|
|
1389
1396
|
} catch {
|
|
@@ -1391,22 +1398,15 @@ function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
|
|
|
1391
1398
|
}
|
|
1392
1399
|
};
|
|
1393
1400
|
const pdfRegex = /\.pdf$/i;
|
|
1394
|
-
const filename = newURL.pathname
|
|
1401
|
+
const filename = stripPath(newURL.pathname);
|
|
1395
1402
|
if (pdfRegex.test(filename)) {
|
|
1396
1403
|
return decode(filename);
|
|
1397
1404
|
}
|
|
1398
1405
|
if (newURL.searchParams.size > 0) {
|
|
1399
|
-
const
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
const keys = Array.from(newURL.searchParams.keys()).reverse();
|
|
1406
|
-
for (const key of keys) {
|
|
1407
|
-
if (pdfRegex.test(key)) {
|
|
1408
|
-
return decode(key);
|
|
1409
|
-
}
|
|
1406
|
+
const getLast = iterator => [...iterator].findLast(v => pdfRegex.test(v));
|
|
1407
|
+
const name = getLast(newURL.searchParams.values()) ?? getLast(newURL.searchParams.keys());
|
|
1408
|
+
if (name) {
|
|
1409
|
+
return decode(name);
|
|
1410
1410
|
}
|
|
1411
1411
|
}
|
|
1412
1412
|
if (newURL.hash) {
|
|
@@ -1458,7 +1458,7 @@ class StatTimer {
|
|
|
1458
1458
|
}
|
|
1459
1459
|
function isValidFetchUrl(url, baseUrl) {
|
|
1460
1460
|
const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);
|
|
1461
|
-
return res?.protocol
|
|
1461
|
+
return /https?:/.test(res?.protocol ?? "");
|
|
1462
1462
|
}
|
|
1463
1463
|
function noContextMenu(e) {
|
|
1464
1464
|
e.preventDefault();
|
|
@@ -1583,7 +1583,7 @@ function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true)
|
|
|
1583
1583
|
const {
|
|
1584
1584
|
style
|
|
1585
1585
|
} = div;
|
|
1586
|
-
const useRound =
|
|
1586
|
+
const useRound = FeatureTest.isCSSRoundSupported;
|
|
1587
1587
|
const w = `var(--total-scale-factor) * ${pageWidth}px`,
|
|
1588
1588
|
h = `var(--total-scale-factor) * ${pageHeight}px`;
|
|
1589
1589
|
const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,
|
|
@@ -1670,7 +1670,7 @@ class CSSConstants {
|
|
|
1670
1670
|
}
|
|
1671
1671
|
}
|
|
1672
1672
|
function applyOpacity(r, g, b, opacity) {
|
|
1673
|
-
opacity =
|
|
1673
|
+
opacity = MathClamp(opacity ?? 1, 0, 1);
|
|
1674
1674
|
const white = 255 * (1 - opacity);
|
|
1675
1675
|
r = Math.round(r * opacity + white);
|
|
1676
1676
|
g = Math.round(g * opacity + white);
|
|
@@ -1855,58 +1855,74 @@ function makePathFromDrawOPS(data) {
|
|
|
1855
1855
|
return path;
|
|
1856
1856
|
}
|
|
1857
1857
|
class PagesMapper {
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1858
|
+
#idToPageNumber = null;
|
|
1859
|
+
#pageNumberToId = null;
|
|
1860
|
+
#prevPageNumbers = null;
|
|
1861
|
+
#pagesNumber = 0;
|
|
1862
|
+
#listeners = [];
|
|
1863
|
+
#copiedPageIds = null;
|
|
1864
|
+
#copiedPageNumbers = null;
|
|
1863
1865
|
get pagesNumber() {
|
|
1864
|
-
return
|
|
1866
|
+
return this.#pagesNumber;
|
|
1865
1867
|
}
|
|
1866
1868
|
set pagesNumber(n) {
|
|
1867
|
-
if (
|
|
1869
|
+
if (this.#pagesNumber === n) {
|
|
1868
1870
|
return;
|
|
1869
1871
|
}
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1872
|
+
this.#pagesNumber = n;
|
|
1873
|
+
this.#reset();
|
|
1874
|
+
}
|
|
1875
|
+
#reset() {
|
|
1876
|
+
this.#pageNumberToId = null;
|
|
1877
|
+
this.#idToPageNumber = null;
|
|
1875
1878
|
}
|
|
1876
1879
|
addListener(listener) {
|
|
1877
|
-
|
|
1880
|
+
this.#listeners.push(listener);
|
|
1878
1881
|
}
|
|
1879
1882
|
removeListener(listener) {
|
|
1880
|
-
const index =
|
|
1883
|
+
const index = this.#listeners.indexOf(listener);
|
|
1881
1884
|
if (index >= 0) {
|
|
1882
|
-
|
|
1885
|
+
this.#listeners.splice(index, 1);
|
|
1883
1886
|
}
|
|
1884
1887
|
}
|
|
1885
|
-
#updateListeners() {
|
|
1886
|
-
for (const listener of
|
|
1887
|
-
listener();
|
|
1888
|
+
#updateListeners(data) {
|
|
1889
|
+
for (const listener of this.#listeners) {
|
|
1890
|
+
listener(data);
|
|
1888
1891
|
}
|
|
1889
1892
|
}
|
|
1890
1893
|
#init(mustInit) {
|
|
1891
|
-
if (
|
|
1894
|
+
if (this.#pageNumberToId) {
|
|
1892
1895
|
return;
|
|
1893
1896
|
}
|
|
1894
|
-
const n =
|
|
1895
|
-
const
|
|
1896
|
-
|
|
1897
|
-
const idToPageNumber =
|
|
1897
|
+
const n = this.#pagesNumber;
|
|
1898
|
+
const pageNumberToId = this.#pageNumberToId = new Uint32Array(n);
|
|
1899
|
+
this.#prevPageNumbers = new Int32Array(pageNumberToId);
|
|
1900
|
+
const idToPageNumber = this.#idToPageNumber = new Map();
|
|
1898
1901
|
if (mustInit) {
|
|
1899
|
-
for (let i =
|
|
1900
|
-
pageNumberToId[i
|
|
1902
|
+
for (let i = 1; i <= n; i++) {
|
|
1903
|
+
pageNumberToId[i - 1] = i;
|
|
1904
|
+
idToPageNumber.set(i, [i]);
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
#updateIdToPageNumber() {
|
|
1909
|
+
const idToPageNumber = this.#idToPageNumber;
|
|
1910
|
+
const pageNumberToId = this.#pageNumberToId;
|
|
1911
|
+
idToPageNumber.clear();
|
|
1912
|
+
for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {
|
|
1913
|
+
const id = pageNumberToId[i];
|
|
1914
|
+
const pageNumbers = idToPageNumber.get(id);
|
|
1915
|
+
if (pageNumbers) {
|
|
1916
|
+
pageNumbers.push(i + 1);
|
|
1917
|
+
} else {
|
|
1918
|
+
idToPageNumber.set(id, [i + 1]);
|
|
1901
1919
|
}
|
|
1902
1920
|
}
|
|
1903
|
-
PagesMapper.#prevIdToPageNumber = array.subarray(2 * n);
|
|
1904
1921
|
}
|
|
1905
1922
|
movePages(selectedPages, pagesToMove, index) {
|
|
1906
1923
|
this.#init(true);
|
|
1907
|
-
const pageNumberToId =
|
|
1908
|
-
const idToPageNumber =
|
|
1909
|
-
PagesMapper.#prevIdToPageNumber.set(idToPageNumber);
|
|
1924
|
+
const pageNumberToId = this.#pageNumberToId;
|
|
1925
|
+
const idToPageNumber = this.#idToPageNumber;
|
|
1910
1926
|
const movedCount = pagesToMove.length;
|
|
1911
1927
|
const mappedPagesToMove = new Uint32Array(movedCount);
|
|
1912
1928
|
let removedBeforeTarget = 0;
|
|
@@ -1917,7 +1933,7 @@ class PagesMapper {
|
|
|
1917
1933
|
removedBeforeTarget += 1;
|
|
1918
1934
|
}
|
|
1919
1935
|
}
|
|
1920
|
-
const pagesNumber =
|
|
1936
|
+
const pagesNumber = this.#pagesNumber;
|
|
1921
1937
|
let adjustedTarget = index - removedBeforeTarget;
|
|
1922
1938
|
const remainingLen = pagesNumber - movedCount;
|
|
1923
1939
|
adjustedTarget = MathClamp(adjustedTarget, 0, remainingLen);
|
|
@@ -1928,39 +1944,135 @@ class PagesMapper {
|
|
|
1928
1944
|
}
|
|
1929
1945
|
pageNumberToId.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);
|
|
1930
1946
|
pageNumberToId.set(mappedPagesToMove, adjustedTarget);
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1947
|
+
this.#setPrevPageNumbers(idToPageNumber, null);
|
|
1948
|
+
this.#updateIdToPageNumber();
|
|
1949
|
+
this.#updateListeners({
|
|
1950
|
+
type: "move"
|
|
1951
|
+
});
|
|
1952
|
+
if (pageNumberToId.every((id, i) => id === i + 1)) {
|
|
1953
|
+
this.#reset();
|
|
1936
1954
|
}
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1955
|
+
}
|
|
1956
|
+
deletePages(pagesToDelete) {
|
|
1957
|
+
this.#init(true);
|
|
1958
|
+
const pageNumberToId = this.#pageNumberToId;
|
|
1959
|
+
const prevIdToPageNumber = this.#idToPageNumber;
|
|
1960
|
+
this.pagesNumber -= pagesToDelete.length;
|
|
1961
|
+
this.#init(false);
|
|
1962
|
+
const newPageNumberToId = this.#pageNumberToId;
|
|
1963
|
+
let sourceIndex = 0;
|
|
1964
|
+
let destIndex = 0;
|
|
1965
|
+
for (const pageNumber of pagesToDelete) {
|
|
1966
|
+
const pageIndex = pageNumber - 1;
|
|
1967
|
+
if (pageIndex !== sourceIndex) {
|
|
1968
|
+
newPageNumberToId.set(pageNumberToId.subarray(sourceIndex, pageIndex), destIndex);
|
|
1969
|
+
destIndex += pageIndex - sourceIndex;
|
|
1970
|
+
}
|
|
1971
|
+
sourceIndex = pageIndex + 1;
|
|
1972
|
+
}
|
|
1973
|
+
if (sourceIndex < pageNumberToId.length) {
|
|
1974
|
+
newPageNumberToId.set(pageNumberToId.subarray(sourceIndex), destIndex);
|
|
1975
|
+
}
|
|
1976
|
+
this.#setPrevPageNumbers(prevIdToPageNumber, null);
|
|
1977
|
+
this.#updateIdToPageNumber();
|
|
1978
|
+
this.#updateListeners({
|
|
1979
|
+
type: "delete",
|
|
1980
|
+
pageNumbers: pagesToDelete
|
|
1981
|
+
});
|
|
1982
|
+
}
|
|
1983
|
+
copyPages(pagesToCopy) {
|
|
1984
|
+
this.#init(true);
|
|
1985
|
+
this.#copiedPageNumbers = pagesToCopy;
|
|
1986
|
+
this.#copiedPageIds = pagesToCopy.map(pageNumber => this.#pageNumberToId[pageNumber - 1]);
|
|
1987
|
+
this.#updateListeners({
|
|
1988
|
+
type: "copy",
|
|
1989
|
+
pageNumbers: pagesToCopy
|
|
1990
|
+
});
|
|
1991
|
+
}
|
|
1992
|
+
pastePages(index) {
|
|
1993
|
+
this.#init(true);
|
|
1994
|
+
const pageNumberToId = this.#pageNumberToId;
|
|
1995
|
+
const prevIdToPageNumber = this.#idToPageNumber;
|
|
1996
|
+
const copiedPageNumbers = this.#copiedPageNumbers;
|
|
1997
|
+
const copiedPageMapping = new Map();
|
|
1998
|
+
let base = index;
|
|
1999
|
+
for (const pageNumber of copiedPageNumbers) {
|
|
2000
|
+
copiedPageMapping.set(++base, pageNumber);
|
|
2001
|
+
}
|
|
2002
|
+
this.pagesNumber += copiedPageNumbers.length;
|
|
2003
|
+
this.#init(false);
|
|
2004
|
+
const newPageNumberToId = this.#pageNumberToId;
|
|
2005
|
+
newPageNumberToId.set(pageNumberToId.subarray(0, index), 0);
|
|
2006
|
+
newPageNumberToId.set(this.#copiedPageIds, index);
|
|
2007
|
+
newPageNumberToId.set(pageNumberToId.subarray(index), index + copiedPageNumbers.length);
|
|
2008
|
+
this.#setPrevPageNumbers(prevIdToPageNumber, copiedPageMapping);
|
|
2009
|
+
this.#updateIdToPageNumber();
|
|
2010
|
+
this.#updateListeners({
|
|
2011
|
+
type: "paste"
|
|
2012
|
+
});
|
|
2013
|
+
this.#copiedPageIds = null;
|
|
2014
|
+
}
|
|
2015
|
+
#setPrevPageNumbers(prevIdToPageNumber, copiedPageMapping) {
|
|
2016
|
+
const prevPageNumbers = this.#prevPageNumbers;
|
|
2017
|
+
const newPageNumberToId = this.#pageNumberToId;
|
|
2018
|
+
const idsIndices = new Map();
|
|
2019
|
+
for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {
|
|
2020
|
+
const oldPageNumber = copiedPageMapping?.get(i + 1);
|
|
2021
|
+
if (oldPageNumber) {
|
|
2022
|
+
prevPageNumbers[i] = -oldPageNumber;
|
|
2023
|
+
continue;
|
|
2024
|
+
}
|
|
2025
|
+
const id = newPageNumberToId[i];
|
|
2026
|
+
const j = idsIndices.get(id) || 0;
|
|
2027
|
+
prevPageNumbers[i] = prevIdToPageNumber.get(id)?.[j];
|
|
2028
|
+
idsIndices.set(id, j + 1);
|
|
1940
2029
|
}
|
|
1941
2030
|
}
|
|
1942
2031
|
hasBeenAltered() {
|
|
1943
|
-
return
|
|
2032
|
+
return this.#pageNumberToId !== null;
|
|
1944
2033
|
}
|
|
1945
2034
|
getPageMappingForSaving() {
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
2035
|
+
const idToPageNumber = this.#idToPageNumber;
|
|
2036
|
+
let nCopy = 0;
|
|
2037
|
+
for (const pageNumbers of idToPageNumber.values()) {
|
|
2038
|
+
nCopy = Math.max(nCopy, pageNumbers.length);
|
|
2039
|
+
}
|
|
2040
|
+
const extractParams = new Array(nCopy);
|
|
2041
|
+
for (let i = 0; i < nCopy; i++) {
|
|
2042
|
+
extractParams[i] = {
|
|
2043
|
+
document: null,
|
|
2044
|
+
pageIndices: [],
|
|
2045
|
+
includePages: []
|
|
2046
|
+
};
|
|
2047
|
+
}
|
|
2048
|
+
for (const [id, pageNumbers] of idToPageNumber) {
|
|
2049
|
+
for (let i = 0, ii = pageNumbers.length; i < ii; i++) {
|
|
2050
|
+
extractParams[i].includePages.push([id - 1, pageNumbers[i] - 1]);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
for (const {
|
|
2054
|
+
includePages,
|
|
2055
|
+
pageIndices
|
|
2056
|
+
} of extractParams) {
|
|
2057
|
+
includePages.sort((a, b) => a[0] - b[0]);
|
|
2058
|
+
for (let i = 0, ii = includePages.length; i < ii; i++) {
|
|
2059
|
+
pageIndices.push(includePages[i][1]);
|
|
2060
|
+
includePages[i] = includePages[i][0];
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
return extractParams;
|
|
1949
2064
|
}
|
|
1950
2065
|
getPrevPageNumber(pageNumber) {
|
|
1951
|
-
return
|
|
2066
|
+
return this.#prevPageNumbers[pageNumber - 1] ?? 0;
|
|
1952
2067
|
}
|
|
1953
2068
|
getPageNumber(id) {
|
|
1954
|
-
return
|
|
2069
|
+
return this.#idToPageNumber ? this.#idToPageNumber.get(id)?.[0] ?? 0 : id;
|
|
1955
2070
|
}
|
|
1956
2071
|
getPageId(pageNumber) {
|
|
1957
|
-
return
|
|
1958
|
-
}
|
|
1959
|
-
static get instance() {
|
|
1960
|
-
return shadow(this, "instance", new PagesMapper());
|
|
2072
|
+
return this.#pageNumberToId?.[pageNumber - 1] ?? pageNumber;
|
|
1961
2073
|
}
|
|
1962
2074
|
getMapping() {
|
|
1963
|
-
return
|
|
2075
|
+
return this.#pageNumberToId.subarray(0, this.pagesNumber);
|
|
1964
2076
|
}
|
|
1965
2077
|
}
|
|
1966
2078
|
|
|
@@ -2607,7 +2719,7 @@ class KeyboardManager {
|
|
|
2607
2719
|
this.allKeys = new Set();
|
|
2608
2720
|
const {
|
|
2609
2721
|
isMac
|
|
2610
|
-
} =
|
|
2722
|
+
} = FeatureTest.platform;
|
|
2611
2723
|
for (const [keys, callback, options = {}] of callbacks) {
|
|
2612
2724
|
for (const key of keys) {
|
|
2613
2725
|
const isMacKey = key.startsWith("mac+");
|
|
@@ -2843,9 +2955,6 @@ class AnnotationEditorUIManager {
|
|
|
2843
2955
|
eventBus._on("switchannotationeditorparams", evt => this.updateParams(evt.type, evt.value), {
|
|
2844
2956
|
signal
|
|
2845
2957
|
});
|
|
2846
|
-
eventBus._on("pagesedited", this.onPagesEdited.bind(this), {
|
|
2847
|
-
signal
|
|
2848
|
-
});
|
|
2849
2958
|
window.addEventListener("pointerdown", () => {
|
|
2850
2959
|
this.#isPointerDown = true;
|
|
2851
2960
|
}, {
|
|
@@ -2858,6 +2967,10 @@ class AnnotationEditorUIManager {
|
|
|
2858
2967
|
capture: true,
|
|
2859
2968
|
signal
|
|
2860
2969
|
});
|
|
2970
|
+
window.addEventListener("beforeunload", this.#beforeUnload.bind(this), {
|
|
2971
|
+
capture: true,
|
|
2972
|
+
signal
|
|
2973
|
+
});
|
|
2861
2974
|
this.#addSelectionListener();
|
|
2862
2975
|
this.#addDragAndDropListeners();
|
|
2863
2976
|
this.#addKeyboardManager();
|
|
@@ -3084,29 +3197,20 @@ class AnnotationEditorUIManager {
|
|
|
3084
3197
|
break;
|
|
3085
3198
|
}
|
|
3086
3199
|
}
|
|
3087
|
-
onPagesEdited({
|
|
3088
|
-
pagesMapper
|
|
3089
|
-
}) {
|
|
3090
|
-
for (const editor of this.#allEditors.values()) {
|
|
3091
|
-
editor.updatePageIndex(pagesMapper.getPrevPageNumber(editor.pageIndex + 1) - 1);
|
|
3092
|
-
}
|
|
3093
|
-
const allLayers = this.#allLayers;
|
|
3094
|
-
const newAllLayers = this.#allLayers = new Map();
|
|
3095
|
-
for (const [pageIndex, layer] of allLayers) {
|
|
3096
|
-
const prevPageIndex = pagesMapper.getPrevPageNumber(pageIndex + 1) - 1;
|
|
3097
|
-
if (prevPageIndex === -1) {
|
|
3098
|
-
layer.destroy();
|
|
3099
|
-
continue;
|
|
3100
|
-
}
|
|
3101
|
-
newAllLayers.set(prevPageIndex, layer);
|
|
3102
|
-
layer.updatePageIndex(prevPageIndex);
|
|
3103
|
-
}
|
|
3104
|
-
}
|
|
3105
3200
|
onPageChanging({
|
|
3106
3201
|
pageNumber
|
|
3107
3202
|
}) {
|
|
3108
3203
|
this.#currentPageIndex = pageNumber - 1;
|
|
3109
3204
|
}
|
|
3205
|
+
deletePage(id) {
|
|
3206
|
+
for (const editor of this.getEditors(id)) {
|
|
3207
|
+
editor.remove();
|
|
3208
|
+
}
|
|
3209
|
+
this.#allLayers.delete(id);
|
|
3210
|
+
if (this.#currentPageIndex === id) {
|
|
3211
|
+
this.#currentPageIndex = 0;
|
|
3212
|
+
}
|
|
3213
|
+
}
|
|
3110
3214
|
focusMainContainer() {
|
|
3111
3215
|
this.#container.focus();
|
|
3112
3216
|
}
|
|
@@ -3218,6 +3322,10 @@ class AnnotationEditorUIManager {
|
|
|
3218
3322
|
commentSelection(methodOfCreation = "") {
|
|
3219
3323
|
this.highlightSelection(methodOfCreation, true);
|
|
3220
3324
|
}
|
|
3325
|
+
#beforeUnload(e) {
|
|
3326
|
+
this.commitOrRemove();
|
|
3327
|
+
this.currentLayer?.endDrawingSession(false);
|
|
3328
|
+
}
|
|
3221
3329
|
#displayFloatingToolbar() {
|
|
3222
3330
|
const selection = document.getSelection();
|
|
3223
3331
|
if (!selection || selection.isCollapsed) {
|
|
@@ -5562,7 +5670,7 @@ class AnnotationEditor {
|
|
|
5562
5670
|
event.preventDefault();
|
|
5563
5671
|
const {
|
|
5564
5672
|
isMac
|
|
5565
|
-
} =
|
|
5673
|
+
} = FeatureTest.platform;
|
|
5566
5674
|
if (event.button !== 0 || event.ctrlKey && isMac) {
|
|
5567
5675
|
return;
|
|
5568
5676
|
}
|
|
@@ -6056,7 +6164,7 @@ class AnnotationEditor {
|
|
|
6056
6164
|
pointerdown(event) {
|
|
6057
6165
|
const {
|
|
6058
6166
|
isMac
|
|
6059
|
-
} =
|
|
6167
|
+
} = FeatureTest.platform;
|
|
6060
6168
|
if (event.button !== 0 || event.ctrlKey && isMac) {
|
|
6061
6169
|
event.preventDefault();
|
|
6062
6170
|
return;
|
|
@@ -6071,7 +6179,7 @@ class AnnotationEditor {
|
|
|
6071
6179
|
#selectOnPointerEvent(event) {
|
|
6072
6180
|
const {
|
|
6073
6181
|
isMac
|
|
6074
|
-
} =
|
|
6182
|
+
} = FeatureTest.platform;
|
|
6075
6183
|
if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {
|
|
6076
6184
|
this.parent.toggleSelected(this);
|
|
6077
6185
|
} else {
|
|
@@ -6838,11 +6946,9 @@ class AnnotationStorage {
|
|
|
6838
6946
|
#modifiedIds = null;
|
|
6839
6947
|
#editorsMap = null;
|
|
6840
6948
|
#storage = new Map();
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
this.onAnnotationEditor = null;
|
|
6845
|
-
}
|
|
6949
|
+
onSetModified = null;
|
|
6950
|
+
onResetModified = null;
|
|
6951
|
+
onAnnotationEditor = null;
|
|
6846
6952
|
getValue(key, defaultValue) {
|
|
6847
6953
|
const value = this.#storage.get(key);
|
|
6848
6954
|
if (value === undefined) {
|
|
@@ -6994,13 +7100,8 @@ class AnnotationStorage {
|
|
|
6994
7100
|
if (key === "type") {
|
|
6995
7101
|
continue;
|
|
6996
7102
|
}
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
counters = new Map();
|
|
7000
|
-
map.set(key, counters);
|
|
7001
|
-
}
|
|
7002
|
-
const count = counters.get(val) ?? 0;
|
|
7003
|
-
counters.set(val, count + 1);
|
|
7103
|
+
const counters = map.getOrInsertComputed(key, makeMap);
|
|
7104
|
+
counters.set(val, (counters.get(val) ?? 0) + 1);
|
|
7004
7105
|
}
|
|
7005
7106
|
}
|
|
7006
7107
|
if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {
|
|
@@ -7055,21 +7156,27 @@ class AnnotationStorage {
|
|
|
7055
7156
|
}
|
|
7056
7157
|
}
|
|
7057
7158
|
class PrintAnnotationStorage extends AnnotationStorage {
|
|
7058
|
-
#serializable;
|
|
7159
|
+
#serializable = SerializableEmpty;
|
|
7059
7160
|
constructor(parent) {
|
|
7060
7161
|
super();
|
|
7162
|
+
const {
|
|
7163
|
+
serializable
|
|
7164
|
+
} = parent;
|
|
7165
|
+
if (serializable === SerializableEmpty) {
|
|
7166
|
+
return;
|
|
7167
|
+
}
|
|
7061
7168
|
const {
|
|
7062
7169
|
map,
|
|
7063
7170
|
hash,
|
|
7064
7171
|
transfer
|
|
7065
|
-
} =
|
|
7172
|
+
} = serializable;
|
|
7066
7173
|
const clone = structuredClone(map, transfer ? {
|
|
7067
7174
|
transfer
|
|
7068
7175
|
} : null);
|
|
7069
7176
|
this.#serializable = {
|
|
7070
7177
|
map: clone,
|
|
7071
7178
|
hash,
|
|
7072
|
-
transfer
|
|
7179
|
+
transfer: []
|
|
7073
7180
|
};
|
|
7074
7181
|
}
|
|
7075
7182
|
get print() {
|
|
@@ -7197,7 +7304,7 @@ class FontLoader {
|
|
|
7197
7304
|
return shadow(this, "isFontLoadingAPISupported", hasFonts);
|
|
7198
7305
|
}
|
|
7199
7306
|
get isSyncFontLoadingSupported() {
|
|
7200
|
-
return shadow(this, "isSyncFontLoadingSupported", isNodeJS ||
|
|
7307
|
+
return shadow(this, "isSyncFontLoadingSupported", isNodeJS || FeatureTest.platform.isFirefox);
|
|
7201
7308
|
}
|
|
7202
7309
|
_queueLoadingCallback(callback) {
|
|
7203
7310
|
function completeRequest() {
|
|
@@ -8092,7 +8199,7 @@ class FontPathInfo {
|
|
|
8092
8199
|
static write(path) {
|
|
8093
8200
|
let data;
|
|
8094
8201
|
let buffer;
|
|
8095
|
-
if (
|
|
8202
|
+
if (FeatureTest.isFloat16ArraySupported) {
|
|
8096
8203
|
buffer = new ArrayBuffer(path.length * 2);
|
|
8097
8204
|
data = new Float16Array(buffer);
|
|
8098
8205
|
} else {
|
|
@@ -8107,7 +8214,7 @@ class FontPathInfo {
|
|
|
8107
8214
|
this.#buffer = buffer;
|
|
8108
8215
|
}
|
|
8109
8216
|
get path() {
|
|
8110
|
-
if (
|
|
8217
|
+
if (FeatureTest.isFloat16ArraySupported) {
|
|
8111
8218
|
return new Float16Array(this.#buffer);
|
|
8112
8219
|
}
|
|
8113
8220
|
return new Float32Array(this.#buffer);
|
|
@@ -8118,15 +8225,19 @@ class FontPathInfo {
|
|
|
8118
8225
|
|
|
8119
8226
|
function getUrlProp(val) {
|
|
8120
8227
|
if (val instanceof URL) {
|
|
8121
|
-
return val
|
|
8228
|
+
return val;
|
|
8122
8229
|
}
|
|
8123
8230
|
if (typeof val === "string") {
|
|
8124
8231
|
if (isNodeJS) {
|
|
8125
|
-
|
|
8232
|
+
if (/^[a-z][a-z0-9\-+.]+:/i.test(val)) {
|
|
8233
|
+
return new URL(val);
|
|
8234
|
+
}
|
|
8235
|
+
const url = process.getBuiltinModule("url");
|
|
8236
|
+
return new URL(url.pathToFileURL(val));
|
|
8126
8237
|
}
|
|
8127
8238
|
const url = URL.parse(val, window.location);
|
|
8128
8239
|
if (url) {
|
|
8129
|
-
return url
|
|
8240
|
+
return url;
|
|
8130
8241
|
}
|
|
8131
8242
|
}
|
|
8132
8243
|
throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property.");
|
|
@@ -8701,8 +8812,8 @@ class BaseCMapReaderFactory {
|
|
|
8701
8812
|
}
|
|
8702
8813
|
class DOMCMapReaderFactory extends BaseCMapReaderFactory {
|
|
8703
8814
|
async _fetch(url) {
|
|
8704
|
-
const data = await fetchData(url, this.isCompressed ? "
|
|
8705
|
-
return data instanceof
|
|
8815
|
+
const data = await fetchData(url, this.isCompressed ? "bytes" : "text");
|
|
8816
|
+
return data instanceof Uint8Array ? data : stringToBytes(data);
|
|
8706
8817
|
}
|
|
8707
8818
|
}
|
|
8708
8819
|
|
|
@@ -9071,8 +9182,7 @@ class BaseStandardFontDataFactory {
|
|
|
9071
9182
|
}
|
|
9072
9183
|
class DOMStandardFontDataFactory extends BaseStandardFontDataFactory {
|
|
9073
9184
|
async _fetch(url) {
|
|
9074
|
-
|
|
9075
|
-
return new Uint8Array(data);
|
|
9185
|
+
return fetchData(url, "bytes");
|
|
9076
9186
|
}
|
|
9077
9187
|
}
|
|
9078
9188
|
|
|
@@ -9105,8 +9215,7 @@ class BaseWasmFactory {
|
|
|
9105
9215
|
}
|
|
9106
9216
|
class DOMWasmFactory extends BaseWasmFactory {
|
|
9107
9217
|
async _fetch(url) {
|
|
9108
|
-
|
|
9109
|
-
return new Uint8Array(data);
|
|
9218
|
+
return fetchData(url, "bytes");
|
|
9110
9219
|
}
|
|
9111
9220
|
}
|
|
9112
9221
|
|
|
@@ -9189,20 +9298,10 @@ class BBoxReader {
|
|
|
9189
9298
|
return (this.#coords[i * 4 + 3] + 1) / 256;
|
|
9190
9299
|
}
|
|
9191
9300
|
}
|
|
9192
|
-
const ensureDebugMetadata = (map, key) => {
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
let value = map.get(key);
|
|
9197
|
-
if (!value) {
|
|
9198
|
-
value = {
|
|
9199
|
-
dependencies: new Set(),
|
|
9200
|
-
isRenderingOperation: false
|
|
9201
|
-
};
|
|
9202
|
-
map.set(key, value);
|
|
9203
|
-
}
|
|
9204
|
-
return value;
|
|
9205
|
-
};
|
|
9301
|
+
const ensureDebugMetadata = (map, key) => map?.getOrInsertComputed(key, () => ({
|
|
9302
|
+
dependencies: new Set(),
|
|
9303
|
+
isRenderingOperation: false
|
|
9304
|
+
}));
|
|
9206
9305
|
class CanvasDependencyTracker {
|
|
9207
9306
|
#simple = {
|
|
9208
9307
|
__proto__: null
|
|
@@ -10250,12 +10349,14 @@ class TilingPattern {
|
|
|
10250
10349
|
}
|
|
10251
10350
|
|
|
10252
10351
|
;// ./src/shared/image_utils.js
|
|
10352
|
+
/* unused harmony import specifier */ var image_utils_ImageKind;
|
|
10353
|
+
/* unused harmony import specifier */ var image_utils_FeatureTest;
|
|
10253
10354
|
|
|
10254
10355
|
function convertToRGBA(params) {
|
|
10255
10356
|
switch (params.kind) {
|
|
10256
|
-
case
|
|
10357
|
+
case image_utils_ImageKind.GRAYSCALE_1BPP:
|
|
10257
10358
|
return convertBlackAndWhiteToRGBA(params);
|
|
10258
|
-
case
|
|
10359
|
+
case image_utils_ImageKind.RGB_24BPP:
|
|
10259
10360
|
return convertRGBToRGBA(params);
|
|
10260
10361
|
}
|
|
10261
10362
|
return null;
|
|
@@ -10269,31 +10370,32 @@ function convertBlackAndWhiteToRGBA({
|
|
|
10269
10370
|
nonBlackColor = 0xffffffff,
|
|
10270
10371
|
inverseDecode = false
|
|
10271
10372
|
}) {
|
|
10272
|
-
const black =
|
|
10373
|
+
const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
|
|
10273
10374
|
const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];
|
|
10274
10375
|
const widthInSource = width >> 3;
|
|
10275
10376
|
const widthRemainder = width & 7;
|
|
10377
|
+
const xorMask = zeroMapping ^ oneMapping;
|
|
10276
10378
|
const srcLength = src.length;
|
|
10277
10379
|
dest = new Uint32Array(dest.buffer);
|
|
10278
10380
|
let destPos = 0;
|
|
10279
|
-
for (let i = 0; i < height; i
|
|
10280
|
-
for (const max = srcPos + widthInSource; srcPos < max; srcPos
|
|
10281
|
-
const elem =
|
|
10282
|
-
dest[destPos
|
|
10283
|
-
dest[destPos
|
|
10284
|
-
dest[destPos
|
|
10285
|
-
dest[destPos
|
|
10286
|
-
dest[destPos
|
|
10287
|
-
dest[destPos
|
|
10288
|
-
dest[destPos
|
|
10289
|
-
dest[destPos
|
|
10381
|
+
for (let i = 0; i < height; ++i) {
|
|
10382
|
+
for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {
|
|
10383
|
+
const elem = src[srcPos];
|
|
10384
|
+
dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;
|
|
10385
|
+
dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;
|
|
10386
|
+
dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;
|
|
10387
|
+
dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;
|
|
10388
|
+
dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;
|
|
10389
|
+
dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;
|
|
10390
|
+
dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;
|
|
10391
|
+
dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;
|
|
10290
10392
|
}
|
|
10291
10393
|
if (widthRemainder === 0) {
|
|
10292
10394
|
continue;
|
|
10293
10395
|
}
|
|
10294
10396
|
const elem = srcPos < srcLength ? src[srcPos++] : 255;
|
|
10295
|
-
for (let j = 0; j < widthRemainder; j++) {
|
|
10296
|
-
dest[destPos
|
|
10397
|
+
for (let j = 0; j < widthRemainder; ++j, ++destPos) {
|
|
10398
|
+
dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;
|
|
10297
10399
|
}
|
|
10298
10400
|
}
|
|
10299
10401
|
return {
|
|
@@ -10313,31 +10415,32 @@ function convertRGBToRGBA({
|
|
|
10313
10415
|
const len = width * height * 3;
|
|
10314
10416
|
const len32 = len >> 2;
|
|
10315
10417
|
const src32 = new Uint32Array(src.buffer, srcPos, len32);
|
|
10316
|
-
|
|
10418
|
+
const alphaMask = image_utils_FeatureTest.isLittleEndian ? 0xff000000 : 0xff;
|
|
10419
|
+
if (image_utils_FeatureTest.isLittleEndian) {
|
|
10317
10420
|
for (; i < len32 - 2; i += 3, destPos += 4) {
|
|
10318
|
-
const s1 = src32[i]
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
dest[destPos] = s1 |
|
|
10322
|
-
dest[destPos + 1] = s1 >>> 24 | s2 << 8 |
|
|
10323
|
-
dest[destPos + 2] = s2 >>> 16 | s3 << 16 |
|
|
10324
|
-
dest[destPos + 3] = s3 >>> 8 |
|
|
10421
|
+
const s1 = src32[i],
|
|
10422
|
+
s2 = src32[i + 1],
|
|
10423
|
+
s3 = src32[i + 2];
|
|
10424
|
+
dest[destPos] = s1 | alphaMask;
|
|
10425
|
+
dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;
|
|
10426
|
+
dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;
|
|
10427
|
+
dest[destPos + 3] = s3 >>> 8 | alphaMask;
|
|
10325
10428
|
}
|
|
10326
10429
|
for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {
|
|
10327
|
-
dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 |
|
|
10430
|
+
dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;
|
|
10328
10431
|
}
|
|
10329
10432
|
} else {
|
|
10330
10433
|
for (; i < len32 - 2; i += 3, destPos += 4) {
|
|
10331
|
-
const s1 = src32[i]
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
dest[destPos] = s1 |
|
|
10335
|
-
dest[destPos + 1] = s1 << 24 | s2 >>> 8 |
|
|
10336
|
-
dest[destPos + 2] = s2 << 16 | s3 >>> 16 |
|
|
10337
|
-
dest[destPos + 3] = s3 << 8 |
|
|
10434
|
+
const s1 = src32[i],
|
|
10435
|
+
s2 = src32[i + 1],
|
|
10436
|
+
s3 = src32[i + 2];
|
|
10437
|
+
dest[destPos] = s1 | alphaMask;
|
|
10438
|
+
dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;
|
|
10439
|
+
dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;
|
|
10440
|
+
dest[destPos + 3] = s3 << 8 | alphaMask;
|
|
10338
10441
|
}
|
|
10339
10442
|
for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {
|
|
10340
|
-
dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 |
|
|
10443
|
+
dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;
|
|
10341
10444
|
}
|
|
10342
10445
|
}
|
|
10343
10446
|
return {
|
|
@@ -10346,7 +10449,7 @@ function convertRGBToRGBA({
|
|
|
10346
10449
|
};
|
|
10347
10450
|
}
|
|
10348
10451
|
function grayToRGBA(src, dest) {
|
|
10349
|
-
if (
|
|
10452
|
+
if (image_utils_FeatureTest.isLittleEndian) {
|
|
10350
10453
|
for (let i = 0, ii = src.length; i < ii; i++) {
|
|
10351
10454
|
dest[i] = src[i] * 0x10101 | 0xff000000;
|
|
10352
10455
|
}
|
|
@@ -10615,13 +10718,13 @@ function putBinaryImageData(ctx, imgData) {
|
|
|
10615
10718
|
const src = imgData.data;
|
|
10616
10719
|
const dest = chunkImgData.data;
|
|
10617
10720
|
let i, j, thisChunkHeight, elemsInThisChunk;
|
|
10618
|
-
if (imgData.kind ===
|
|
10721
|
+
if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {
|
|
10619
10722
|
const srcLength = src.byteLength;
|
|
10620
10723
|
const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
|
|
10621
10724
|
const dest32DataLength = dest32.length;
|
|
10622
10725
|
const fullSrcDiff = width + 7 >> 3;
|
|
10623
10726
|
const white = 0xffffffff;
|
|
10624
|
-
const black =
|
|
10727
|
+
const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
|
|
10625
10728
|
for (i = 0; i < totalChunks; i++) {
|
|
10626
10729
|
thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
|
|
10627
10730
|
destPos = 0;
|
|
@@ -10657,7 +10760,7 @@ function putBinaryImageData(ctx, imgData) {
|
|
|
10657
10760
|
}
|
|
10658
10761
|
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
|
|
10659
10762
|
}
|
|
10660
|
-
} else if (imgData.kind ===
|
|
10763
|
+
} else if (imgData.kind === ImageKind.RGBA_32BPP) {
|
|
10661
10764
|
j = 0;
|
|
10662
10765
|
elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
|
|
10663
10766
|
for (i = 0; i < fullChunks; i++) {
|
|
@@ -10671,7 +10774,7 @@ function putBinaryImageData(ctx, imgData) {
|
|
|
10671
10774
|
dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
|
|
10672
10775
|
ctx.putImageData(chunkImgData, 0, j);
|
|
10673
10776
|
}
|
|
10674
|
-
} else if (imgData.kind ===
|
|
10777
|
+
} else if (imgData.kind === ImageKind.RGB_24BPP) {
|
|
10675
10778
|
thisChunkHeight = FULL_CHUNK_HEIGHT;
|
|
10676
10779
|
elemsInThisChunk = width * thisChunkHeight;
|
|
10677
10780
|
for (i = 0; i < totalChunks; i++) {
|
|
@@ -10776,8 +10879,6 @@ class CanvasGraphics {
|
|
|
10776
10879
|
this.stateStack = [];
|
|
10777
10880
|
this.pendingClip = null;
|
|
10778
10881
|
this.pendingEOFill = false;
|
|
10779
|
-
this.res = null;
|
|
10780
|
-
this.xobjs = null;
|
|
10781
10882
|
this.commonObjs = commonObjs;
|
|
10782
10883
|
this.objs = objs;
|
|
10783
10884
|
this.canvasFactory = canvasFactory;
|
|
@@ -10984,11 +11085,7 @@ class CanvasGraphics {
|
|
|
10984
11085
|
if ((img.bitmap || img.data) && img.count > 1) {
|
|
10985
11086
|
const mainKey = img.bitmap || img.data.buffer;
|
|
10986
11087
|
cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);
|
|
10987
|
-
cache = this._cachedBitmapsMap.
|
|
10988
|
-
if (!cache) {
|
|
10989
|
-
cache = new Map();
|
|
10990
|
-
this._cachedBitmapsMap.set(mainKey, cache);
|
|
10991
|
-
}
|
|
11088
|
+
cache = this._cachedBitmapsMap.getOrInsertComputed(mainKey, makeMap);
|
|
10992
11089
|
const cachedImage = cache.get(cacheKey);
|
|
10993
11090
|
if (cachedImage && !isPatternFill) {
|
|
10994
11091
|
const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);
|
|
@@ -12026,7 +12123,7 @@ class CanvasGraphics {
|
|
|
12026
12123
|
copyCtxState(currentCtx, groupCtx);
|
|
12027
12124
|
this.ctx = groupCtx;
|
|
12028
12125
|
this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha", "strokeAlpha", "globalCompositeOperation"]).pushBaseTransform(currentCtx);
|
|
12029
|
-
this.setGState(opIdx, [["BM", "source-over"], ["ca", 1], ["CA", 1]]);
|
|
12126
|
+
this.setGState(opIdx, [["BM", "source-over"], ["ca", 1], ["CA", 1], ["TR", null]]);
|
|
12030
12127
|
this.groupStack.push(currentCtx);
|
|
12031
12128
|
this.groupLevel++;
|
|
12032
12129
|
}
|
|
@@ -12834,6 +12931,12 @@ class BasePDFStreamReader {
|
|
|
12834
12931
|
constructor(stream) {
|
|
12835
12932
|
this._stream = stream;
|
|
12836
12933
|
}
|
|
12934
|
+
_callOnProgress() {
|
|
12935
|
+
this.onProgress?.({
|
|
12936
|
+
loaded: this._loaded,
|
|
12937
|
+
total: this._contentLength
|
|
12938
|
+
});
|
|
12939
|
+
}
|
|
12837
12940
|
get headersReady() {
|
|
12838
12941
|
return this._headersCapability.promise;
|
|
12839
12942
|
}
|
|
@@ -12876,6 +12979,15 @@ class BasePDFStreamRangeReader {
|
|
|
12876
12979
|
function getArrayBuffer(val) {
|
|
12877
12980
|
return val instanceof Uint8Array && val.byteLength === val.buffer.byteLength ? val.buffer : new Uint8Array(val).buffer;
|
|
12878
12981
|
}
|
|
12982
|
+
function endRequests() {
|
|
12983
|
+
for (const capability of this._requests) {
|
|
12984
|
+
capability.resolve({
|
|
12985
|
+
value: undefined,
|
|
12986
|
+
done: true
|
|
12987
|
+
});
|
|
12988
|
+
}
|
|
12989
|
+
this._requests.length = 0;
|
|
12990
|
+
}
|
|
12879
12991
|
class PDFDataTransportStream extends BasePDFStream {
|
|
12880
12992
|
_progressiveDone = false;
|
|
12881
12993
|
_queuedChunks = [];
|
|
@@ -12896,14 +13008,6 @@ class PDFDataTransportStream extends BasePDFStream {
|
|
|
12896
13008
|
pdfDataRangeTransport.addRangeListener((begin, chunk) => {
|
|
12897
13009
|
this.#onReceiveData(begin, chunk);
|
|
12898
13010
|
});
|
|
12899
|
-
pdfDataRangeTransport.addProgressListener((loaded, total) => {
|
|
12900
|
-
if (total !== undefined) {
|
|
12901
|
-
this._fullReader?.onProgress?.({
|
|
12902
|
-
loaded,
|
|
12903
|
-
total
|
|
12904
|
-
});
|
|
12905
|
-
}
|
|
12906
|
-
});
|
|
12907
13011
|
pdfDataRangeTransport.addProgressiveReadListener(chunk => {
|
|
12908
13012
|
this.#onReceiveData(undefined, chunk);
|
|
12909
13013
|
});
|
|
@@ -12946,6 +13050,7 @@ class PDFDataTransportStream extends BasePDFStream {
|
|
|
12946
13050
|
}
|
|
12947
13051
|
}
|
|
12948
13052
|
class PDFDataTransportStreamReader extends BasePDFStreamReader {
|
|
13053
|
+
#endRequests = endRequests.bind(this);
|
|
12949
13054
|
_done = false;
|
|
12950
13055
|
_queuedChunks = null;
|
|
12951
13056
|
_requests = [];
|
|
@@ -12972,6 +13077,12 @@ class PDFDataTransportStreamReader extends BasePDFStreamReader {
|
|
|
12972
13077
|
this._filename = contentDispositionFilename;
|
|
12973
13078
|
}
|
|
12974
13079
|
this._headersCapability.resolve();
|
|
13080
|
+
const loaded = this._loaded;
|
|
13081
|
+
Promise.resolve().then(() => {
|
|
13082
|
+
if (loaded > 0 && this._loaded === loaded) {
|
|
13083
|
+
this._callOnProgress();
|
|
13084
|
+
}
|
|
13085
|
+
});
|
|
12975
13086
|
}
|
|
12976
13087
|
_enqueue(chunk) {
|
|
12977
13088
|
if (this._done) {
|
|
@@ -12987,6 +13098,7 @@ class PDFDataTransportStreamReader extends BasePDFStreamReader {
|
|
|
12987
13098
|
this._queuedChunks.push(chunk);
|
|
12988
13099
|
}
|
|
12989
13100
|
this._loaded += chunk.byteLength;
|
|
13101
|
+
this._callOnProgress();
|
|
12990
13102
|
}
|
|
12991
13103
|
async read() {
|
|
12992
13104
|
if (this._queuedChunks.length > 0) {
|
|
@@ -13008,19 +13120,17 @@ class PDFDataTransportStreamReader extends BasePDFStreamReader {
|
|
|
13008
13120
|
}
|
|
13009
13121
|
cancel(reason) {
|
|
13010
13122
|
this._done = true;
|
|
13011
|
-
|
|
13012
|
-
capability.resolve({
|
|
13013
|
-
value: undefined,
|
|
13014
|
-
done: true
|
|
13015
|
-
});
|
|
13016
|
-
}
|
|
13017
|
-
this._requests.length = 0;
|
|
13123
|
+
this.#endRequests();
|
|
13018
13124
|
}
|
|
13019
13125
|
progressiveDone() {
|
|
13020
13126
|
this._done ||= true;
|
|
13127
|
+
if (this._queuedChunks.length === 0) {
|
|
13128
|
+
this.#endRequests();
|
|
13129
|
+
}
|
|
13021
13130
|
}
|
|
13022
13131
|
}
|
|
13023
13132
|
class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
|
|
13133
|
+
#endRequests = endRequests.bind(this);
|
|
13024
13134
|
onDone = null;
|
|
13025
13135
|
_begin = -1;
|
|
13026
13136
|
_done = false;
|
|
@@ -13037,18 +13147,12 @@ class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13037
13147
|
if (this._requests.length === 0) {
|
|
13038
13148
|
this._queuedChunk = chunk;
|
|
13039
13149
|
} else {
|
|
13040
|
-
const
|
|
13041
|
-
|
|
13150
|
+
const capability = this._requests.shift();
|
|
13151
|
+
capability.resolve({
|
|
13042
13152
|
value: chunk,
|
|
13043
13153
|
done: false
|
|
13044
13154
|
});
|
|
13045
|
-
|
|
13046
|
-
capability.resolve({
|
|
13047
|
-
value: undefined,
|
|
13048
|
-
done: true
|
|
13049
|
-
});
|
|
13050
|
-
}
|
|
13051
|
-
this._requests.length = 0;
|
|
13155
|
+
this.#endRequests();
|
|
13052
13156
|
}
|
|
13053
13157
|
this._done = true;
|
|
13054
13158
|
this.onDone?.();
|
|
@@ -13074,13 +13178,7 @@ class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13074
13178
|
}
|
|
13075
13179
|
cancel(reason) {
|
|
13076
13180
|
this._done = true;
|
|
13077
|
-
|
|
13078
|
-
capability.resolve({
|
|
13079
|
-
value: undefined,
|
|
13080
|
-
done: true
|
|
13081
|
-
});
|
|
13082
|
-
}
|
|
13083
|
-
this._requests.length = 0;
|
|
13181
|
+
this.#endRequests();
|
|
13084
13182
|
this.onDone?.();
|
|
13085
13183
|
}
|
|
13086
13184
|
}
|
|
@@ -13283,7 +13381,7 @@ function extractFilenameFromHeader(responseHeaders) {
|
|
|
13283
13381
|
return null;
|
|
13284
13382
|
}
|
|
13285
13383
|
function createResponseError(status, url) {
|
|
13286
|
-
return new ResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status, status === 404 || status === 0 && url.
|
|
13384
|
+
return new ResponseException(`Unexpected server response (${status}) while retrieving PDF "${url.href}".`, status, status === 404 || status === 0 && url.protocol === "file:");
|
|
13287
13385
|
}
|
|
13288
13386
|
function ensureResponseOrigin(rangeOrigin, origin) {
|
|
13289
13387
|
if (rangeOrigin !== origin) {
|
|
@@ -13317,15 +13415,18 @@ function fetch_stream_getArrayBuffer(val) {
|
|
|
13317
13415
|
if (val instanceof ArrayBuffer) {
|
|
13318
13416
|
return val;
|
|
13319
13417
|
}
|
|
13320
|
-
|
|
13321
|
-
return new Uint8Array(val).buffer;
|
|
13418
|
+
throw new Error(`getArrayBuffer - unexpected data: ${val}`);
|
|
13322
13419
|
}
|
|
13323
13420
|
class PDFFetchStream extends BasePDFStream {
|
|
13324
13421
|
_responseOrigin = null;
|
|
13325
13422
|
constructor(source) {
|
|
13326
13423
|
super(source, PDFFetchStreamReader, PDFFetchStreamRangeReader);
|
|
13327
|
-
|
|
13328
|
-
|
|
13424
|
+
const {
|
|
13425
|
+
httpHeaders,
|
|
13426
|
+
url
|
|
13427
|
+
} = source;
|
|
13428
|
+
assert(/https?:/.test(url.protocol), "PDFFetchStream only supports http(s):// URLs.");
|
|
13429
|
+
this.headers = createHeaders(true, httpHeaders);
|
|
13329
13430
|
}
|
|
13330
13431
|
}
|
|
13331
13432
|
class PDFFetchStreamReader extends BasePDFStreamReader {
|
|
@@ -13355,7 +13456,7 @@ class PDFFetchStreamReader extends BasePDFStreamReader {
|
|
|
13355
13456
|
suggestedLength
|
|
13356
13457
|
} = validateRangeRequestCapabilities({
|
|
13357
13458
|
responseHeaders,
|
|
13358
|
-
isHttp:
|
|
13459
|
+
isHttp: true,
|
|
13359
13460
|
rangeChunkSize,
|
|
13360
13461
|
disableRange
|
|
13361
13462
|
});
|
|
@@ -13381,10 +13482,7 @@ class PDFFetchStreamReader extends BasePDFStreamReader {
|
|
|
13381
13482
|
};
|
|
13382
13483
|
}
|
|
13383
13484
|
this._loaded += value.byteLength;
|
|
13384
|
-
this.
|
|
13385
|
-
loaded: this._loaded,
|
|
13386
|
-
total: this._contentLength
|
|
13387
|
-
});
|
|
13485
|
+
this._callOnProgress();
|
|
13388
13486
|
return {
|
|
13389
13487
|
value: fetch_stream_getArrayBuffer(value),
|
|
13390
13488
|
done: false
|
|
@@ -13442,6 +13540,7 @@ class PDFFetchStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13442
13540
|
|
|
13443
13541
|
|
|
13444
13542
|
|
|
13543
|
+
|
|
13445
13544
|
const OK_RESPONSE = 200;
|
|
13446
13545
|
const PARTIAL_CONTENT_RESPONSE = 206;
|
|
13447
13546
|
function network_getArrayBuffer(val) {
|
|
@@ -13452,9 +13551,13 @@ class PDFNetworkStream extends BasePDFStream {
|
|
|
13452
13551
|
_responseOrigin = null;
|
|
13453
13552
|
constructor(source) {
|
|
13454
13553
|
super(source, PDFNetworkStreamReader, PDFNetworkStreamRangeReader);
|
|
13455
|
-
|
|
13456
|
-
|
|
13457
|
-
|
|
13554
|
+
const {
|
|
13555
|
+
httpHeaders,
|
|
13556
|
+
url
|
|
13557
|
+
} = source;
|
|
13558
|
+
this.url = url;
|
|
13559
|
+
this.isHttp = /https?:/.test(url.protocol);
|
|
13560
|
+
this.headers = createHeaders(this.isHttp, httpHeaders);
|
|
13458
13561
|
}
|
|
13459
13562
|
_request(args) {
|
|
13460
13563
|
const xhr = new XMLHttpRequest();
|
|
@@ -13544,6 +13647,7 @@ class PDFNetworkStream extends BasePDFStream {
|
|
|
13544
13647
|
}
|
|
13545
13648
|
}
|
|
13546
13649
|
class PDFNetworkStreamReader extends BasePDFStreamReader {
|
|
13650
|
+
#endRequests = endRequests.bind(this);
|
|
13547
13651
|
_cachedChunks = [];
|
|
13548
13652
|
_done = false;
|
|
13549
13653
|
_requests = [];
|
|
@@ -13604,16 +13708,9 @@ class PDFNetworkStreamReader extends BasePDFStreamReader {
|
|
|
13604
13708
|
this._cachedChunks.push(chunk);
|
|
13605
13709
|
}
|
|
13606
13710
|
this._done = true;
|
|
13607
|
-
if (this._cachedChunks.length
|
|
13608
|
-
|
|
13609
|
-
}
|
|
13610
|
-
for (const capability of this._requests) {
|
|
13611
|
-
capability.resolve({
|
|
13612
|
-
value: undefined,
|
|
13613
|
-
done: true
|
|
13614
|
-
});
|
|
13711
|
+
if (this._cachedChunks.length === 0) {
|
|
13712
|
+
this.#endRequests();
|
|
13615
13713
|
}
|
|
13616
|
-
this._requests.length = 0;
|
|
13617
13714
|
}
|
|
13618
13715
|
#onError(status) {
|
|
13619
13716
|
this._storedError = createResponseError(status, this._stream.url);
|
|
@@ -13655,18 +13752,13 @@ class PDFNetworkStreamReader extends BasePDFStreamReader {
|
|
|
13655
13752
|
cancel(reason) {
|
|
13656
13753
|
this._done = true;
|
|
13657
13754
|
this._headersCapability.reject(reason);
|
|
13658
|
-
|
|
13659
|
-
capability.resolve({
|
|
13660
|
-
value: undefined,
|
|
13661
|
-
done: true
|
|
13662
|
-
});
|
|
13663
|
-
}
|
|
13664
|
-
this._requests.length = 0;
|
|
13755
|
+
this.#endRequests();
|
|
13665
13756
|
this._stream._abortRequest(this._fullRequestXhr);
|
|
13666
13757
|
this._fullRequestXhr = null;
|
|
13667
13758
|
}
|
|
13668
13759
|
}
|
|
13669
13760
|
class PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {
|
|
13761
|
+
#endRequests = endRequests.bind(this);
|
|
13670
13762
|
onClosed = null;
|
|
13671
13763
|
_done = false;
|
|
13672
13764
|
_queuedChunk = null;
|
|
@@ -13703,13 +13795,7 @@ class PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13703
13795
|
this._queuedChunk = chunk;
|
|
13704
13796
|
}
|
|
13705
13797
|
this._done = true;
|
|
13706
|
-
|
|
13707
|
-
capability.resolve({
|
|
13708
|
-
value: undefined,
|
|
13709
|
-
done: true
|
|
13710
|
-
});
|
|
13711
|
-
}
|
|
13712
|
-
this._requests.length = 0;
|
|
13798
|
+
this.#endRequests();
|
|
13713
13799
|
this.onClosed?.();
|
|
13714
13800
|
}
|
|
13715
13801
|
#onError(status) {
|
|
@@ -13744,13 +13830,7 @@ class PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13744
13830
|
}
|
|
13745
13831
|
cancel(reason) {
|
|
13746
13832
|
this._done = true;
|
|
13747
|
-
|
|
13748
|
-
capability.resolve({
|
|
13749
|
-
value: undefined,
|
|
13750
|
-
done: true
|
|
13751
|
-
});
|
|
13752
|
-
}
|
|
13753
|
-
this._requests.length = 0;
|
|
13833
|
+
this.#endRequests();
|
|
13754
13834
|
this._stream._abortRequest(this._requestXhr);
|
|
13755
13835
|
this.onClosed?.();
|
|
13756
13836
|
}
|
|
@@ -13760,14 +13840,7 @@ class PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13760
13840
|
|
|
13761
13841
|
|
|
13762
13842
|
|
|
13763
|
-
|
|
13764
|
-
function parseUrlOrPath(sourceUrl) {
|
|
13765
|
-
if (urlRegex.test(sourceUrl)) {
|
|
13766
|
-
return new URL(sourceUrl);
|
|
13767
|
-
}
|
|
13768
|
-
const url = process.getBuiltinModule("url");
|
|
13769
|
-
return new URL(url.pathToFileURL(sourceUrl));
|
|
13770
|
-
}
|
|
13843
|
+
|
|
13771
13844
|
function getReadableStream(readStream) {
|
|
13772
13845
|
const {
|
|
13773
13846
|
Readable
|
|
@@ -13779,21 +13852,13 @@ function getReadableStream(readStream) {
|
|
|
13779
13852
|
const polyfill = require("node-readable-to-web-readable-stream");
|
|
13780
13853
|
return polyfill.makeDefaultReadableStreamFromNodeReadable(readStream);
|
|
13781
13854
|
}
|
|
13782
|
-
function node_stream_getArrayBuffer(val) {
|
|
13783
|
-
if (val instanceof Uint8Array) {
|
|
13784
|
-
return val.buffer;
|
|
13785
|
-
}
|
|
13786
|
-
if (val instanceof ArrayBuffer) {
|
|
13787
|
-
return val;
|
|
13788
|
-
}
|
|
13789
|
-
warn(`getArrayBuffer - unexpected data format: ${val}`);
|
|
13790
|
-
return new Uint8Array(val).buffer;
|
|
13791
|
-
}
|
|
13792
13855
|
class PDFNodeStream extends BasePDFStream {
|
|
13793
13856
|
constructor(source) {
|
|
13794
13857
|
super(source, PDFNodeStreamReader, PDFNodeStreamRangeReader);
|
|
13795
|
-
|
|
13796
|
-
|
|
13858
|
+
const {
|
|
13859
|
+
url
|
|
13860
|
+
} = source;
|
|
13861
|
+
assert(url.protocol === "file:", "PDFNodeStream only supports file:// URLs.");
|
|
13797
13862
|
}
|
|
13798
13863
|
}
|
|
13799
13864
|
class PDFNodeStreamReader extends BasePDFStreamReader {
|
|
@@ -13804,12 +13869,12 @@ class PDFNodeStreamReader extends BasePDFStreamReader {
|
|
|
13804
13869
|
disableRange,
|
|
13805
13870
|
disableStream,
|
|
13806
13871
|
length,
|
|
13807
|
-
rangeChunkSize
|
|
13872
|
+
rangeChunkSize,
|
|
13873
|
+
url
|
|
13808
13874
|
} = stream._source;
|
|
13809
13875
|
this._contentLength = length;
|
|
13810
13876
|
this._isStreamingSupported = !disableStream;
|
|
13811
13877
|
this._isRangeSupported = !disableRange;
|
|
13812
|
-
const url = stream.url;
|
|
13813
13878
|
const fs = process.getBuiltinModule("fs");
|
|
13814
13879
|
fs.promises.lstat(url).then(stat => {
|
|
13815
13880
|
const readStream = fs.createReadStream(url);
|
|
@@ -13828,7 +13893,7 @@ class PDFNodeStreamReader extends BasePDFStreamReader {
|
|
|
13828
13893
|
this._headersCapability.resolve();
|
|
13829
13894
|
}).catch(error => {
|
|
13830
13895
|
if (error.code === "ENOENT") {
|
|
13831
|
-
error = createResponseError(0, url
|
|
13896
|
+
error = createResponseError(0, url);
|
|
13832
13897
|
}
|
|
13833
13898
|
this._headersCapability.reject(error);
|
|
13834
13899
|
});
|
|
@@ -13845,13 +13910,10 @@ class PDFNodeStreamReader extends BasePDFStreamReader {
|
|
|
13845
13910
|
done
|
|
13846
13911
|
};
|
|
13847
13912
|
}
|
|
13848
|
-
this._loaded += value.
|
|
13849
|
-
this.
|
|
13850
|
-
loaded: this._loaded,
|
|
13851
|
-
total: this._contentLength
|
|
13852
|
-
});
|
|
13913
|
+
this._loaded += value.byteLength;
|
|
13914
|
+
this._callOnProgress();
|
|
13853
13915
|
return {
|
|
13854
|
-
value:
|
|
13916
|
+
value: fetch_stream_getArrayBuffer(value),
|
|
13855
13917
|
done: false
|
|
13856
13918
|
};
|
|
13857
13919
|
}
|
|
@@ -13864,7 +13926,9 @@ class PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13864
13926
|
_reader = null;
|
|
13865
13927
|
constructor(stream, begin, end) {
|
|
13866
13928
|
super(stream, begin, end);
|
|
13867
|
-
const
|
|
13929
|
+
const {
|
|
13930
|
+
url
|
|
13931
|
+
} = stream._source;
|
|
13868
13932
|
const fs = process.getBuiltinModule("fs");
|
|
13869
13933
|
try {
|
|
13870
13934
|
const readStream = fs.createReadStream(url, {
|
|
@@ -13891,7 +13955,7 @@ class PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13891
13955
|
};
|
|
13892
13956
|
}
|
|
13893
13957
|
return {
|
|
13894
|
-
value:
|
|
13958
|
+
value: fetch_stream_getArrayBuffer(value),
|
|
13895
13959
|
done: false
|
|
13896
13960
|
};
|
|
13897
13961
|
}
|
|
@@ -13902,13 +13966,14 @@ class PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {
|
|
|
13902
13966
|
|
|
13903
13967
|
;// ./src/display/pdf_objects.js
|
|
13904
13968
|
const INITIAL_DATA = Symbol("INITIAL_DATA");
|
|
13969
|
+
const dataObj = () => ({
|
|
13970
|
+
...Promise.withResolvers(),
|
|
13971
|
+
data: INITIAL_DATA
|
|
13972
|
+
});
|
|
13905
13973
|
class PDFObjects {
|
|
13906
|
-
#objs =
|
|
13974
|
+
#objs = new Map();
|
|
13907
13975
|
#ensureObj(objId) {
|
|
13908
|
-
return this.#objs
|
|
13909
|
-
...Promise.withResolvers(),
|
|
13910
|
-
data: INITIAL_DATA
|
|
13911
|
-
};
|
|
13976
|
+
return this.#objs.getOrInsertComputed(objId, dataObj);
|
|
13912
13977
|
}
|
|
13913
13978
|
get(objId, callback = null) {
|
|
13914
13979
|
if (callback) {
|
|
@@ -13916,22 +13981,22 @@ class PDFObjects {
|
|
|
13916
13981
|
obj.promise.then(() => callback(obj.data));
|
|
13917
13982
|
return null;
|
|
13918
13983
|
}
|
|
13919
|
-
const obj = this.#objs
|
|
13984
|
+
const obj = this.#objs.get(objId);
|
|
13920
13985
|
if (!obj || obj.data === INITIAL_DATA) {
|
|
13921
13986
|
throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
|
|
13922
13987
|
}
|
|
13923
13988
|
return obj.data;
|
|
13924
13989
|
}
|
|
13925
13990
|
has(objId) {
|
|
13926
|
-
const obj = this.#objs
|
|
13991
|
+
const obj = this.#objs.get(objId);
|
|
13927
13992
|
return !!obj && obj.data !== INITIAL_DATA;
|
|
13928
13993
|
}
|
|
13929
13994
|
delete(objId) {
|
|
13930
|
-
const obj = this.#objs
|
|
13995
|
+
const obj = this.#objs.get(objId);
|
|
13931
13996
|
if (!obj || obj.data === INITIAL_DATA) {
|
|
13932
13997
|
return false;
|
|
13933
13998
|
}
|
|
13934
|
-
|
|
13999
|
+
this.#objs.delete(objId);
|
|
13935
14000
|
return true;
|
|
13936
14001
|
}
|
|
13937
14002
|
resolve(objId, data = null) {
|
|
@@ -13940,23 +14005,20 @@ class PDFObjects {
|
|
|
13940
14005
|
obj.resolve();
|
|
13941
14006
|
}
|
|
13942
14007
|
clear() {
|
|
13943
|
-
for (const
|
|
13944
|
-
|
|
13945
|
-
|
|
13946
|
-
} = this.#objs[objId];
|
|
14008
|
+
for (const {
|
|
14009
|
+
data
|
|
14010
|
+
} of this.#objs.values()) {
|
|
13947
14011
|
data?.bitmap?.close();
|
|
13948
14012
|
}
|
|
13949
|
-
this.#objs
|
|
14013
|
+
this.#objs.clear();
|
|
13950
14014
|
}
|
|
13951
14015
|
*[Symbol.iterator]() {
|
|
13952
|
-
for (const objId
|
|
13953
|
-
|
|
13954
|
-
|
|
13955
|
-
|
|
13956
|
-
|
|
13957
|
-
continue;
|
|
14016
|
+
for (const [objId, {
|
|
14017
|
+
data
|
|
14018
|
+
}] of this.#objs) {
|
|
14019
|
+
if (data !== INITIAL_DATA) {
|
|
14020
|
+
yield [objId, data];
|
|
13958
14021
|
}
|
|
13959
|
-
yield [objId, data];
|
|
13960
14022
|
}
|
|
13961
14023
|
}
|
|
13962
14024
|
}
|
|
@@ -14037,7 +14099,7 @@ class TextLayer {
|
|
|
14037
14099
|
const {
|
|
14038
14100
|
isWindows,
|
|
14039
14101
|
isFirefox
|
|
14040
|
-
} =
|
|
14102
|
+
} = FeatureTest.platform;
|
|
14041
14103
|
return shadow(this, "fontFamilyMap", new Map([["sans-serif", `${isWindows && isFirefox ? "Calibri, " : ""}sans-serif`], ["monospace", `${isWindows && isFirefox ? "Lucida Console, " : ""}monospace`]]));
|
|
14042
14104
|
}
|
|
14043
14105
|
render() {
|
|
@@ -14303,7 +14365,7 @@ class TextLayer {
|
|
|
14303
14365
|
if (ascent) {
|
|
14304
14366
|
ratio = ascent / (ascent + descent);
|
|
14305
14367
|
} else {
|
|
14306
|
-
if (
|
|
14368
|
+
if (FeatureTest.platform.isFirefox) {
|
|
14307
14369
|
warn("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference " + "in `about:config` to improve TextLayer rendering.");
|
|
14308
14370
|
}
|
|
14309
14371
|
if (style.ascent) {
|
|
@@ -14380,7 +14442,7 @@ function getDocument(src = {}) {
|
|
|
14380
14442
|
const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;
|
|
14381
14443
|
const isEvalSupported = src.isEvalSupported !== false;
|
|
14382
14444
|
const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !isNodeJS;
|
|
14383
|
-
const isImageDecoderSupported = typeof src.isImageDecoderSupported === "boolean" ? src.isImageDecoderSupported : !isNodeJS && (
|
|
14445
|
+
const isImageDecoderSupported = typeof src.isImageDecoderSupported === "boolean" ? src.isImageDecoderSupported : !isNodeJS && (FeatureTest.platform.isFirefox || !globalThis.chrome);
|
|
14384
14446
|
const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;
|
|
14385
14447
|
const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : isNodeJS;
|
|
14386
14448
|
const fontExtraProperties = src.fontExtraProperties === true;
|
|
@@ -14394,6 +14456,7 @@ function getDocument(src = {}) {
|
|
|
14394
14456
|
const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);
|
|
14395
14457
|
const enableHWA = src.enableHWA === true;
|
|
14396
14458
|
const useWasm = src.useWasm !== false;
|
|
14459
|
+
const pagesMapper = src.pagesMapper || new PagesMapper();
|
|
14397
14460
|
const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;
|
|
14398
14461
|
const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !isNodeJS && !disableFontFace;
|
|
14399
14462
|
const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));
|
|
@@ -14428,7 +14491,7 @@ function getDocument(src = {}) {
|
|
|
14428
14491
|
}
|
|
14429
14492
|
const docParams = {
|
|
14430
14493
|
docId,
|
|
14431
|
-
apiVersion: "5.
|
|
14494
|
+
apiVersion: "5.5.207",
|
|
14432
14495
|
data,
|
|
14433
14496
|
password,
|
|
14434
14497
|
disableAutoFetch,
|
|
@@ -14502,7 +14565,7 @@ function getDocument(src = {}) {
|
|
|
14502
14565
|
throw new Error("Worker was destroyed");
|
|
14503
14566
|
}
|
|
14504
14567
|
const messageHandler = new MessageHandler(docId, workerId, worker.port);
|
|
14505
|
-
const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);
|
|
14568
|
+
const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, pagesMapper);
|
|
14506
14569
|
task._transport = transport;
|
|
14507
14570
|
messageHandler.send("Ready", null);
|
|
14508
14571
|
});
|
|
@@ -14546,20 +14609,21 @@ class PDFDataRangeTransport {
|
|
|
14546
14609
|
#capability = Promise.withResolvers();
|
|
14547
14610
|
#progressiveDoneListeners = [];
|
|
14548
14611
|
#progressiveReadListeners = [];
|
|
14549
|
-
#progressListeners = [];
|
|
14550
14612
|
#rangeListeners = [];
|
|
14551
14613
|
constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
|
|
14552
14614
|
this.length = length;
|
|
14553
14615
|
this.initialData = initialData;
|
|
14554
14616
|
this.progressiveDone = progressiveDone;
|
|
14555
14617
|
this.contentDispositionFilename = contentDispositionFilename;
|
|
14618
|
+
Object.defineProperty(this, "onDataProgress", {
|
|
14619
|
+
value: () => {
|
|
14620
|
+
deprecated("`PDFDataRangeTransport.prototype.onDataProgress` - method was " + "removed, since loading progress is now reported automatically " + "through the `PDFDataTransportStream` class (and related code).");
|
|
14621
|
+
}
|
|
14622
|
+
});
|
|
14556
14623
|
}
|
|
14557
14624
|
addRangeListener(listener) {
|
|
14558
14625
|
this.#rangeListeners.push(listener);
|
|
14559
14626
|
}
|
|
14560
|
-
addProgressListener(listener) {
|
|
14561
|
-
this.#progressListeners.push(listener);
|
|
14562
|
-
}
|
|
14563
14627
|
addProgressiveReadListener(listener) {
|
|
14564
14628
|
this.#progressiveReadListeners.push(listener);
|
|
14565
14629
|
}
|
|
@@ -14571,13 +14635,6 @@ class PDFDataRangeTransport {
|
|
|
14571
14635
|
listener(begin, chunk);
|
|
14572
14636
|
}
|
|
14573
14637
|
}
|
|
14574
|
-
onDataProgress(loaded, total) {
|
|
14575
|
-
this.#capability.promise.then(() => {
|
|
14576
|
-
for (const listener of this.#progressListeners) {
|
|
14577
|
-
listener(loaded, total);
|
|
14578
|
-
}
|
|
14579
|
-
});
|
|
14580
|
-
}
|
|
14581
14638
|
onDataProgressiveRead(chunk) {
|
|
14582
14639
|
this.#capability.promise.then(() => {
|
|
14583
14640
|
for (const listener of this.#progressiveReadListeners) {
|
|
@@ -14605,6 +14662,9 @@ class PDFDocumentProxy {
|
|
|
14605
14662
|
this._pdfInfo = pdfInfo;
|
|
14606
14663
|
this._transport = transport;
|
|
14607
14664
|
}
|
|
14665
|
+
get pagesMapper() {
|
|
14666
|
+
return this._transport.pagesMapper;
|
|
14667
|
+
}
|
|
14608
14668
|
get annotationStorage() {
|
|
14609
14669
|
return this._transport.annotationStorage;
|
|
14610
14670
|
}
|
|
@@ -14721,8 +14781,8 @@ class PDFDocumentProxy {
|
|
|
14721
14781
|
}
|
|
14722
14782
|
class PDFPageProxy {
|
|
14723
14783
|
#pendingCleanup = false;
|
|
14724
|
-
#pagesMapper =
|
|
14725
|
-
constructor(pageIndex, pageInfo, transport, pdfBug = false) {
|
|
14784
|
+
#pagesMapper = null;
|
|
14785
|
+
constructor(pageIndex, pageInfo, transport, pagesMapper, pdfBug = false) {
|
|
14726
14786
|
this._pageIndex = pageIndex;
|
|
14727
14787
|
this._pageInfo = pageInfo;
|
|
14728
14788
|
this._transport = transport;
|
|
@@ -14733,6 +14793,7 @@ class PDFPageProxy {
|
|
|
14733
14793
|
this._intentStates = new Map();
|
|
14734
14794
|
this.destroyed = false;
|
|
14735
14795
|
this.recordedBBoxes = null;
|
|
14796
|
+
this.#pagesMapper = pagesMapper;
|
|
14736
14797
|
}
|
|
14737
14798
|
get pageNumber() {
|
|
14738
14799
|
return this._pageIndex + 1;
|
|
@@ -14813,11 +14874,7 @@ class PDFPageProxy {
|
|
|
14813
14874
|
} = intentArgs;
|
|
14814
14875
|
this.#pendingCleanup = false;
|
|
14815
14876
|
optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);
|
|
14816
|
-
|
|
14817
|
-
if (!intentState) {
|
|
14818
|
-
intentState = Object.create(null);
|
|
14819
|
-
this._intentStates.set(cacheKey, intentState);
|
|
14820
|
-
}
|
|
14877
|
+
const intentState = this._intentStates.getOrInsertComputed(cacheKey, makeObj);
|
|
14821
14878
|
if (intentState.streamReaderCancelTimeout) {
|
|
14822
14879
|
clearTimeout(intentState.streamReaderCancelTimeout);
|
|
14823
14880
|
intentState.streamReaderCancelTimeout = null;
|
|
@@ -14925,11 +14982,7 @@ class PDFPageProxy {
|
|
|
14925
14982
|
}
|
|
14926
14983
|
}
|
|
14927
14984
|
const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);
|
|
14928
|
-
|
|
14929
|
-
if (!intentState) {
|
|
14930
|
-
intentState = Object.create(null);
|
|
14931
|
-
this._intentStates.set(intentArgs.cacheKey, intentState);
|
|
14932
|
-
}
|
|
14985
|
+
const intentState = this._intentStates.getOrInsertComputed(intentArgs.cacheKey, makeObj);
|
|
14933
14986
|
let opListTask;
|
|
14934
14987
|
if (!intentState.opListReadCapability) {
|
|
14935
14988
|
opListTask = Object.create(null);
|
|
@@ -14964,35 +15017,22 @@ class PDFPageProxy {
|
|
|
14964
15017
|
}
|
|
14965
15018
|
});
|
|
14966
15019
|
}
|
|
14967
|
-
getTextContent(params = {}) {
|
|
15020
|
+
async getTextContent(params = {}) {
|
|
14968
15021
|
if (this._transport._htmlForXfa) {
|
|
14969
15022
|
return this.getXfa().then(xfa => XfaText.textContent(xfa));
|
|
14970
15023
|
}
|
|
14971
15024
|
const readableStream = this.streamTextContent(params);
|
|
14972
|
-
|
|
14973
|
-
|
|
14974
|
-
|
|
14975
|
-
|
|
14976
|
-
|
|
14977
|
-
|
|
14978
|
-
|
|
14979
|
-
|
|
14980
|
-
|
|
14981
|
-
|
|
14982
|
-
|
|
14983
|
-
Object.assign(textContent.styles, value.styles);
|
|
14984
|
-
textContent.items.push(...value.items);
|
|
14985
|
-
pump();
|
|
14986
|
-
}, reject);
|
|
14987
|
-
}
|
|
14988
|
-
const reader = readableStream.getReader();
|
|
14989
|
-
const textContent = {
|
|
14990
|
-
items: [],
|
|
14991
|
-
styles: Object.create(null),
|
|
14992
|
-
lang: null
|
|
14993
|
-
};
|
|
14994
|
-
pump();
|
|
14995
|
-
});
|
|
15025
|
+
const textContent = {
|
|
15026
|
+
items: [],
|
|
15027
|
+
styles: Object.create(null),
|
|
15028
|
+
lang: null
|
|
15029
|
+
};
|
|
15030
|
+
for await (const value of readableStream) {
|
|
15031
|
+
textContent.lang ??= value.lang;
|
|
15032
|
+
Object.assign(textContent.styles, value.styles);
|
|
15033
|
+
textContent.items.push(...value.items);
|
|
15034
|
+
}
|
|
15035
|
+
return textContent;
|
|
14996
15036
|
}
|
|
14997
15037
|
getStructTree() {
|
|
14998
15038
|
return this._transport.getStructTree(this._pageIndex);
|
|
@@ -15082,7 +15122,7 @@ class PDFPageProxy {
|
|
|
15082
15122
|
cacheKey,
|
|
15083
15123
|
annotationStorage: map,
|
|
15084
15124
|
modifiedIds
|
|
15085
|
-
}, transfer);
|
|
15125
|
+
}, undefined, transfer);
|
|
15086
15126
|
const reader = readableStream.getReader();
|
|
15087
15127
|
const intentState = this._intentStates.get(cacheKey);
|
|
15088
15128
|
intentState.streamReader = reader;
|
|
@@ -15390,8 +15430,8 @@ class WorkerTransport {
|
|
|
15390
15430
|
#pagePromises = new Map();
|
|
15391
15431
|
#pageRefCache = new Map();
|
|
15392
15432
|
#passwordCapability = null;
|
|
15393
|
-
#
|
|
15394
|
-
constructor(messageHandler, loadingTask, networkStream, params, factory) {
|
|
15433
|
+
#copiedPageInfo = null;
|
|
15434
|
+
constructor(messageHandler, loadingTask, networkStream, params, factory, pagesMapper) {
|
|
15395
15435
|
this.messageHandler = messageHandler;
|
|
15396
15436
|
this.loadingTask = loadingTask;
|
|
15397
15437
|
this.#networkStream = networkStream;
|
|
@@ -15411,13 +15451,50 @@ class WorkerTransport {
|
|
|
15411
15451
|
this.destroyed = false;
|
|
15412
15452
|
this.destroyCapability = null;
|
|
15413
15453
|
this.setupMessageHandler();
|
|
15414
|
-
this
|
|
15454
|
+
this.pagesMapper = pagesMapper;
|
|
15455
|
+
this.pagesMapper.addListener(this.#updateCaches.bind(this));
|
|
15415
15456
|
}
|
|
15416
|
-
#updateCaches(
|
|
15457
|
+
#updateCaches({
|
|
15458
|
+
type,
|
|
15459
|
+
pageNumbers
|
|
15460
|
+
}) {
|
|
15461
|
+
if (type === "copy") {
|
|
15462
|
+
this.#copiedPageInfo = new Map();
|
|
15463
|
+
for (const pageNum of pageNumbers) {
|
|
15464
|
+
this.#copiedPageInfo.set(pageNum, {
|
|
15465
|
+
proxy: this.#pageCache.get(pageNum - 1) || null,
|
|
15466
|
+
promise: this.#pagePromises.get(pageNum - 1) || null
|
|
15467
|
+
});
|
|
15468
|
+
}
|
|
15469
|
+
return;
|
|
15470
|
+
}
|
|
15471
|
+
if (type === "delete") {
|
|
15472
|
+
for (const pageNum of pageNumbers) {
|
|
15473
|
+
this.#pageCache.delete(pageNum - 1);
|
|
15474
|
+
this.#pagePromises.delete(pageNum - 1);
|
|
15475
|
+
}
|
|
15476
|
+
}
|
|
15417
15477
|
const newPageCache = new Map();
|
|
15418
15478
|
const newPromiseCache = new Map();
|
|
15419
|
-
|
|
15420
|
-
|
|
15479
|
+
const {
|
|
15480
|
+
pagesMapper
|
|
15481
|
+
} = this;
|
|
15482
|
+
for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
|
|
15483
|
+
const prevPageNumber = pagesMapper.getPrevPageNumber(i + 1);
|
|
15484
|
+
if (prevPageNumber < 0) {
|
|
15485
|
+
const {
|
|
15486
|
+
proxy,
|
|
15487
|
+
promise
|
|
15488
|
+
} = this.#copiedPageInfo?.get(-prevPageNumber) || {};
|
|
15489
|
+
if (proxy) {
|
|
15490
|
+
newPageCache.set(i, proxy);
|
|
15491
|
+
}
|
|
15492
|
+
if (promise) {
|
|
15493
|
+
newPromiseCache.set(i, promise);
|
|
15494
|
+
}
|
|
15495
|
+
continue;
|
|
15496
|
+
}
|
|
15497
|
+
const prevPageIndex = prevPageNumber - 1;
|
|
15421
15498
|
const page = this.#pageCache.get(prevPageIndex);
|
|
15422
15499
|
if (page) {
|
|
15423
15500
|
newPageCache.set(i, page);
|
|
@@ -15431,13 +15508,7 @@ class WorkerTransport {
|
|
|
15431
15508
|
this.#pagePromises = newPromiseCache;
|
|
15432
15509
|
}
|
|
15433
15510
|
#cacheSimpleMethod(name, data = null) {
|
|
15434
|
-
|
|
15435
|
-
if (cachedPromise) {
|
|
15436
|
-
return cachedPromise;
|
|
15437
|
-
}
|
|
15438
|
-
const promise = this.messageHandler.sendWithPromise(name, data);
|
|
15439
|
-
this.#methodPromises.set(name, promise);
|
|
15440
|
-
return promise;
|
|
15511
|
+
return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, data));
|
|
15441
15512
|
}
|
|
15442
15513
|
#onProgress({
|
|
15443
15514
|
loaded,
|
|
@@ -15619,7 +15690,7 @@ class WorkerTransport {
|
|
|
15619
15690
|
messageHandler.on("GetDoc", ({
|
|
15620
15691
|
pdfInfo
|
|
15621
15692
|
}) => {
|
|
15622
|
-
this
|
|
15693
|
+
this.pagesMapper.pagesNumber = pdfInfo.numPages;
|
|
15623
15694
|
this._numPages = pdfInfo.numPages;
|
|
15624
15695
|
this._htmlForXfa = pdfInfo.htmlForXfa;
|
|
15625
15696
|
delete pdfInfo.htmlForXfa;
|
|
@@ -15787,11 +15858,11 @@ class WorkerTransport {
|
|
|
15787
15858
|
});
|
|
15788
15859
|
}
|
|
15789
15860
|
getPage(pageNumber) {
|
|
15790
|
-
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this
|
|
15861
|
+
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.pagesMapper.pagesNumber) {
|
|
15791
15862
|
return Promise.reject(new Error("Invalid page request."));
|
|
15792
15863
|
}
|
|
15793
15864
|
const pageIndex = pageNumber - 1;
|
|
15794
|
-
const newPageIndex = this
|
|
15865
|
+
const newPageIndex = this.pagesMapper.getPageId(pageNumber) - 1;
|
|
15795
15866
|
const cachedPromise = this.#pagePromises.get(pageIndex);
|
|
15796
15867
|
if (cachedPromise) {
|
|
15797
15868
|
return cachedPromise;
|
|
@@ -15805,7 +15876,7 @@ class WorkerTransport {
|
|
|
15805
15876
|
if (pageInfo.refStr) {
|
|
15806
15877
|
this.#pageRefCache.set(pageInfo.refStr, newPageIndex);
|
|
15807
15878
|
}
|
|
15808
|
-
const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);
|
|
15879
|
+
const page = new PDFPageProxy(pageIndex, pageInfo, this, this.pagesMapper, this._params.pdfBug);
|
|
15809
15880
|
this.#pageCache.set(pageIndex, page);
|
|
15810
15881
|
return page;
|
|
15811
15882
|
});
|
|
@@ -15820,11 +15891,15 @@ class WorkerTransport {
|
|
|
15820
15891
|
num: ref.num,
|
|
15821
15892
|
gen: ref.gen
|
|
15822
15893
|
});
|
|
15823
|
-
|
|
15894
|
+
const pageNumber = this.pagesMapper.getPageNumber(index + 1);
|
|
15895
|
+
if (pageNumber === 0) {
|
|
15896
|
+
throw new Error("GetPageIndex: page has been removed.");
|
|
15897
|
+
}
|
|
15898
|
+
return pageNumber - 1;
|
|
15824
15899
|
}
|
|
15825
15900
|
getAnnotations(pageIndex, intent) {
|
|
15826
15901
|
return this.messageHandler.sendWithPromise("GetAnnotations", {
|
|
15827
|
-
pageIndex: this
|
|
15902
|
+
pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1,
|
|
15828
15903
|
intent
|
|
15829
15904
|
});
|
|
15830
15905
|
}
|
|
@@ -15877,12 +15952,12 @@ class WorkerTransport {
|
|
|
15877
15952
|
}
|
|
15878
15953
|
getPageJSActions(pageIndex) {
|
|
15879
15954
|
return this.messageHandler.sendWithPromise("GetPageJSActions", {
|
|
15880
|
-
pageIndex: this
|
|
15955
|
+
pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1
|
|
15881
15956
|
});
|
|
15882
15957
|
}
|
|
15883
15958
|
getStructTree(pageIndex) {
|
|
15884
15959
|
return this.messageHandler.sendWithPromise("GetStructTree", {
|
|
15885
|
-
pageIndex: this
|
|
15960
|
+
pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1
|
|
15886
15961
|
});
|
|
15887
15962
|
}
|
|
15888
15963
|
getOutline() {
|
|
@@ -15895,20 +15970,14 @@ class WorkerTransport {
|
|
|
15895
15970
|
return this.messageHandler.sendWithPromise("GetPermissions", null);
|
|
15896
15971
|
}
|
|
15897
15972
|
getMetadata() {
|
|
15898
|
-
const name = "GetMetadata"
|
|
15899
|
-
|
|
15900
|
-
if (cachedPromise) {
|
|
15901
|
-
return cachedPromise;
|
|
15902
|
-
}
|
|
15903
|
-
const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({
|
|
15973
|
+
const name = "GetMetadata";
|
|
15974
|
+
return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, null).then(results => ({
|
|
15904
15975
|
info: results[0],
|
|
15905
15976
|
metadata: results[1] ? new Metadata(results[1]) : null,
|
|
15906
15977
|
contentDispositionFilename: this.#fullReader?.filename ?? null,
|
|
15907
15978
|
contentLength: this.#fullReader?.contentLength ?? null,
|
|
15908
15979
|
hasStructTree: results[2]
|
|
15909
|
-
}));
|
|
15910
|
-
this.#methodPromises.set(name, promise);
|
|
15911
|
-
return promise;
|
|
15980
|
+
})));
|
|
15912
15981
|
}
|
|
15913
15982
|
getMarkInfo() {
|
|
15914
15983
|
return this.messageHandler.sendWithPromise("GetMarkInfo", null);
|
|
@@ -15938,7 +16007,13 @@ class WorkerTransport {
|
|
|
15938
16007
|
}
|
|
15939
16008
|
const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;
|
|
15940
16009
|
const pageIndex = this.#pageRefCache.get(refStr);
|
|
15941
|
-
|
|
16010
|
+
if (pageIndex >= 0) {
|
|
16011
|
+
const pageNumber = this.pagesMapper.getPageNumber(pageIndex + 1);
|
|
16012
|
+
if (pageNumber !== 0) {
|
|
16013
|
+
return pageNumber;
|
|
16014
|
+
}
|
|
16015
|
+
}
|
|
16016
|
+
return null;
|
|
15942
16017
|
}
|
|
15943
16018
|
}
|
|
15944
16019
|
class RenderTask {
|
|
@@ -16120,8 +16195,8 @@ class InternalRenderTask {
|
|
|
16120
16195
|
}
|
|
16121
16196
|
}
|
|
16122
16197
|
}
|
|
16123
|
-
const version = "5.
|
|
16124
|
-
const build = "
|
|
16198
|
+
const version = "5.5.207";
|
|
16199
|
+
const build = "527964698";
|
|
16125
16200
|
|
|
16126
16201
|
;// ./src/display/editor/color_picker.js
|
|
16127
16202
|
|
|
@@ -17542,7 +17617,7 @@ class WidgetAnnotationElement extends AnnotationElement {
|
|
|
17542
17617
|
}
|
|
17543
17618
|
}
|
|
17544
17619
|
_getKeyModifier(event) {
|
|
17545
|
-
return
|
|
17620
|
+
return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;
|
|
17546
17621
|
}
|
|
17547
17622
|
_setEventListener(element, elementData, baseName, eventName, valueGetter) {
|
|
17548
17623
|
if (baseName.includes("mouse")) {
|
|
@@ -19543,7 +19618,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
|
|
|
19543
19618
|
this.#trigger = trigger;
|
|
19544
19619
|
const {
|
|
19545
19620
|
isMac
|
|
19546
|
-
} =
|
|
19621
|
+
} = FeatureTest.platform;
|
|
19547
19622
|
container.addEventListener("keydown", evt => {
|
|
19548
19623
|
if (evt.key === "Enter" && (isMac ? evt.metaKey : evt.ctrlKey)) {
|
|
19549
19624
|
this.#download();
|
|
@@ -19656,12 +19731,7 @@ class AnnotationLayer {
|
|
|
19656
19731
|
if (!isPopupAnnotation) {
|
|
19657
19732
|
this.#elements.push(element);
|
|
19658
19733
|
if (data.popupRef) {
|
|
19659
|
-
|
|
19660
|
-
if (!elements) {
|
|
19661
|
-
popupToElements.set(data.popupRef, [element]);
|
|
19662
|
-
} else {
|
|
19663
|
-
elements.push(element);
|
|
19664
|
-
}
|
|
19734
|
+
popupToElements.getOrInsertComputed(data.popupRef, makeArr).push(element);
|
|
19665
19735
|
}
|
|
19666
19736
|
}
|
|
19667
19737
|
const rendered = element.render();
|
|
@@ -25384,7 +25454,30 @@ class AnnotationEditorLayer {
|
|
|
25384
25454
|
this.#uiManager.addLayer(this);
|
|
25385
25455
|
}
|
|
25386
25456
|
updatePageIndex(newPageIndex) {
|
|
25457
|
+
for (const editor of this.#allEditorsIterator) {
|
|
25458
|
+
editor.updatePageIndex(newPageIndex);
|
|
25459
|
+
}
|
|
25387
25460
|
this.pageIndex = newPageIndex;
|
|
25461
|
+
this.#uiManager.addLayer(this);
|
|
25462
|
+
}
|
|
25463
|
+
async setClonedFrom(clonedFrom) {
|
|
25464
|
+
if (!clonedFrom) {
|
|
25465
|
+
return;
|
|
25466
|
+
}
|
|
25467
|
+
const promises = [];
|
|
25468
|
+
for (const editor of clonedFrom.#allEditorsIterator) {
|
|
25469
|
+
const serialized = editor.serialize(true);
|
|
25470
|
+
if (!serialized) {
|
|
25471
|
+
continue;
|
|
25472
|
+
}
|
|
25473
|
+
serialized.isCopy = false;
|
|
25474
|
+
promises.push(this.deserialize(serialized).then(deserialized => {
|
|
25475
|
+
if (deserialized) {
|
|
25476
|
+
this.addOrRebuild(deserialized);
|
|
25477
|
+
}
|
|
25478
|
+
}));
|
|
25479
|
+
}
|
|
25480
|
+
await Promise.all(promises);
|
|
25388
25481
|
}
|
|
25389
25482
|
get isEmpty() {
|
|
25390
25483
|
return this.#editors.size === 0;
|
|
@@ -25651,7 +25744,7 @@ class AnnotationEditorLayer {
|
|
|
25651
25744
|
if (target === this.#textLayer.div || (target.getAttribute("role") === "img" || target.classList.contains("endOfContent")) && this.#textLayer.div.contains(target)) {
|
|
25652
25745
|
const {
|
|
25653
25746
|
isMac
|
|
25654
|
-
} =
|
|
25747
|
+
} = FeatureTest.platform;
|
|
25655
25748
|
if (event.button !== 0 || event.ctrlKey && isMac) {
|
|
25656
25749
|
return;
|
|
25657
25750
|
}
|
|
@@ -25897,7 +25990,7 @@ class AnnotationEditorLayer {
|
|
|
25897
25990
|
pointerup(event) {
|
|
25898
25991
|
const {
|
|
25899
25992
|
isMac
|
|
25900
|
-
} =
|
|
25993
|
+
} = FeatureTest.platform;
|
|
25901
25994
|
if (event.button !== 0 || event.ctrlKey && isMac) {
|
|
25902
25995
|
return;
|
|
25903
25996
|
}
|
|
@@ -25932,7 +26025,7 @@ class AnnotationEditorLayer {
|
|
|
25932
26025
|
}
|
|
25933
26026
|
const {
|
|
25934
26027
|
isMac
|
|
25935
|
-
} =
|
|
26028
|
+
} = FeatureTest.platform;
|
|
25936
26029
|
if (event.button !== 0 || event.ctrlKey && isMac) {
|
|
25937
26030
|
return;
|
|
25938
26031
|
}
|
|
@@ -26321,7 +26414,7 @@ globalThis.pdfjsLib = {
|
|
|
26321
26414
|
CSSConstants: CSSConstants,
|
|
26322
26415
|
DOMSVGFactory: DOMSVGFactory,
|
|
26323
26416
|
DrawLayer: DrawLayer,
|
|
26324
|
-
FeatureTest:
|
|
26417
|
+
FeatureTest: FeatureTest,
|
|
26325
26418
|
fetchData: fetchData,
|
|
26326
26419
|
findContrastColor: findContrastColor,
|
|
26327
26420
|
getDocument: getDocument,
|
|
@@ -26331,17 +26424,19 @@ globalThis.pdfjsLib = {
|
|
|
26331
26424
|
getUuid: getUuid,
|
|
26332
26425
|
getXfaPageViewport: getXfaPageViewport,
|
|
26333
26426
|
GlobalWorkerOptions: GlobalWorkerOptions,
|
|
26334
|
-
ImageKind:
|
|
26427
|
+
ImageKind: ImageKind,
|
|
26335
26428
|
InvalidPDFException: InvalidPDFException,
|
|
26336
26429
|
isDataScheme: isDataScheme,
|
|
26337
26430
|
isPdfFile: isPdfFile,
|
|
26338
26431
|
isValidExplicitDest: isValidExplicitDest,
|
|
26432
|
+
makeArr: makeArr,
|
|
26433
|
+
makeMap: makeMap,
|
|
26434
|
+
makeObj: makeObj,
|
|
26339
26435
|
MathClamp: MathClamp,
|
|
26340
26436
|
noContextMenu: noContextMenu,
|
|
26341
26437
|
normalizeUnicode: normalizeUnicode,
|
|
26342
26438
|
OPS: OPS,
|
|
26343
26439
|
OutputScale: OutputScale,
|
|
26344
|
-
PagesMapper: PagesMapper,
|
|
26345
26440
|
PasswordResponses: PasswordResponses,
|
|
26346
26441
|
PDFDataRangeTransport: PDFDataRangeTransport,
|
|
26347
26442
|
PDFDateString: PDFDateString,
|
|
@@ -26365,6 +26460,6 @@ globalThis.pdfjsLib = {
|
|
|
26365
26460
|
XfaLayer: XfaLayer
|
|
26366
26461
|
};
|
|
26367
26462
|
|
|
26368
|
-
export { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer,
|
|
26463
|
+
export { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, FeatureTest, GlobalWorkerOptions, ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, makeArr, makeMap, makeObj, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };
|
|
26369
26464
|
|
|
26370
26465
|
//# sourceMappingURL=pdf.mjs.map
|