@design.estate/dees-catalog 6.12.0 → 7.0.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/.smartconfig.json +5 -1
- package/dist_bundle/bundle.js +24090 -1235
- package/dist_bundle/bundle.js.map +1 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/.tsbundle-artifacts.json +7 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js +58301 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js.map +1 -0
- package/dist_bundle/third-party-notices.md +190 -0
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/elements/00group-chart/dees-chart-area/component.js +3 -3
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +4 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +29 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +4 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +65 -8
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.js +15 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.d.ts +6 -4
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.js +183 -21
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.d.ts +3 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.js +67 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.d.ts +25 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.js +693 -285
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/demo.js +7 -7
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.d.ts +20 -1
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.js +379 -116
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/demo.js +2 -2
- package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.js +7 -1
- package/package.json +5 -4
- package/readme.hints.md +26 -19
- package/readme.md +104 -53
- package/third-party-notices.md +190 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-chart/dees-chart-area/component.ts +2 -2
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +13 -0
- package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +51 -6
- package/ts_web/elements/00group-harness/interfaces.ts +2 -0
- package/ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.ts +15 -1
- package/ts_web/elements/00group-media/dees-pdf-shared/PdfManager.ts +214 -24
- package/ts_web/elements/00group-media/dees-pdf-shared/utils.ts +77 -1
- package/ts_web/elements/00group-media/dees-pdf-viewer/component.ts +774 -327
- package/ts_web/elements/00group-media/dees-pdf-viewer/demo.ts +7 -7
- package/ts_web/elements/00group-media/dees-thumbnail-pdf/component.ts +427 -128
- package/ts_web/elements/00group-media/dees-thumbnail-pdf/demo.ts +1 -1
- package/ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.ts +5 -0
|
@@ -37,9 +37,10 @@ import { DeesThumbnailBase } from '../dees-thumbnail-shared/DeesThumbnailBase.js
|
|
|
37
37
|
import { thumbnailBaseStyles } from '../dees-thumbnail-shared/styles.js';
|
|
38
38
|
import { PdfManager } from '../dees-pdf-shared/PdfManager.js';
|
|
39
39
|
import { CanvasPool } from '../dees-pdf-shared/CanvasPool.js';
|
|
40
|
-
import {
|
|
40
|
+
import { throttle, formatFileSize, raceWithAbort, settlePromisesWithin, waitForAnimationFrame, } from '../dees-pdf-shared/utils.js';
|
|
41
41
|
import { tilePdfStyles } from './styles.js';
|
|
42
42
|
import { demo as demoFunc } from './demo.js';
|
|
43
|
+
const pipelineSettlementGraceMs = 2_500;
|
|
43
44
|
let DeesThumbnailPdf = (() => {
|
|
44
45
|
let _classDecorators = [customElement('dees-thumbnail-pdf')];
|
|
45
46
|
let _classDescriptor;
|
|
@@ -114,8 +115,21 @@ let DeesThumbnailPdf = (() => {
|
|
|
114
115
|
get fileSize() { return this.#fileSize_accessor_storage; }
|
|
115
116
|
set fileSize(value) { this.#fileSize_accessor_storage = value; }
|
|
116
117
|
renderPagesTask = (__runInitializers(this, _fileSize_extraInitializers), null);
|
|
118
|
+
renderPagesRequestPromise = null;
|
|
119
|
+
currentPageRenderTask = null;
|
|
117
120
|
renderPagesQueued = false;
|
|
118
|
-
|
|
121
|
+
renderQueueEpoch = 0;
|
|
122
|
+
pdfDocument = null;
|
|
123
|
+
pdfLoadPromise = null;
|
|
124
|
+
loadAbortController = null;
|
|
125
|
+
loadOperation = null;
|
|
126
|
+
loadGeneration = 0;
|
|
127
|
+
connectionEpoch = 0;
|
|
128
|
+
cleanupPromise = null;
|
|
129
|
+
renderFailurePromise = null;
|
|
130
|
+
renderAdmissionOpen = false;
|
|
131
|
+
renderGeneration = 0;
|
|
132
|
+
documentUsePipelines = new Set();
|
|
119
133
|
canvases = [];
|
|
120
134
|
resizeObserver;
|
|
121
135
|
stackElement = null;
|
|
@@ -160,8 +174,8 @@ let DeesThumbnailPdf = (() => {
|
|
|
160
174
|
};
|
|
161
175
|
}
|
|
162
176
|
onBecameVisible() {
|
|
163
|
-
if (!this.rendered && this.pdfUrl) {
|
|
164
|
-
this.
|
|
177
|
+
if (this.isConnected && !this.rendered && this.pdfUrl) {
|
|
178
|
+
void this.schedulePdfLoad(this.connectionEpoch);
|
|
165
179
|
}
|
|
166
180
|
}
|
|
167
181
|
onTileMouseEnter() {
|
|
@@ -171,7 +185,6 @@ let DeesThumbnailPdf = (() => {
|
|
|
171
185
|
this.isHovering = false;
|
|
172
186
|
if (this.currentPreviewPage !== 1) {
|
|
173
187
|
this.currentPreviewPage = 1;
|
|
174
|
-
void this.scheduleRenderPages();
|
|
175
188
|
}
|
|
176
189
|
}
|
|
177
190
|
onTileMouseMove(e) {
|
|
@@ -184,144 +197,328 @@ let DeesThumbnailPdf = (() => {
|
|
|
184
197
|
const newPage = Math.ceil(percentage * this.pageCount) || 1;
|
|
185
198
|
if (newPage !== this.currentPreviewPage) {
|
|
186
199
|
this.currentPreviewPage = newPage;
|
|
187
|
-
void this.scheduleRenderPages();
|
|
188
200
|
}
|
|
189
201
|
}
|
|
190
202
|
async connectedCallback() {
|
|
203
|
+
const connectionEpoch = ++this.connectionEpoch;
|
|
191
204
|
await super.connectedCallback();
|
|
192
205
|
await this.updateComplete;
|
|
206
|
+
if (!this.isConnected || connectionEpoch !== this.connectionEpoch)
|
|
207
|
+
return;
|
|
193
208
|
this.cacheElements();
|
|
194
209
|
this.setupResizeObserver();
|
|
210
|
+
if (this.pdfUrl
|
|
211
|
+
&& this.isVisible) {
|
|
212
|
+
const operationKey = `${connectionEpoch}:${this.pdfUrl}`;
|
|
213
|
+
if (this.loadOperation?.key === operationKey) {
|
|
214
|
+
await this.loadOperation.promise;
|
|
215
|
+
}
|
|
216
|
+
else if (connectionEpoch > 1 || !this.pdfDocument) {
|
|
217
|
+
await this.schedulePdfLoad(connectionEpoch);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
195
220
|
}
|
|
196
221
|
async disconnectedCallback() {
|
|
222
|
+
this.connectionEpoch += 1;
|
|
223
|
+
this.loadGeneration += 1;
|
|
224
|
+
this.renderAdmissionOpen = false;
|
|
225
|
+
this.loadAbortController?.abort();
|
|
226
|
+
const cleanupPromise = this.cleanup();
|
|
197
227
|
await super.disconnectedCallback();
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
228
|
+
await cleanupPromise;
|
|
229
|
+
}
|
|
230
|
+
schedulePdfLoad(connectionEpochArg) {
|
|
231
|
+
const url = this.pdfUrl;
|
|
232
|
+
const key = `${connectionEpochArg}:${url}`;
|
|
233
|
+
if (this.loadOperation?.key === key) {
|
|
234
|
+
return this.loadOperation.promise;
|
|
235
|
+
}
|
|
236
|
+
const generation = ++this.loadGeneration;
|
|
237
|
+
const operation = {
|
|
238
|
+
key,
|
|
239
|
+
promise: Promise.resolve(),
|
|
240
|
+
};
|
|
241
|
+
operation.promise = this.performPdfLoad(generation, connectionEpochArg, url)
|
|
242
|
+
.finally(() => {
|
|
243
|
+
if (this.loadOperation === operation) {
|
|
244
|
+
this.loadOperation = null;
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
this.loadOperation = operation;
|
|
248
|
+
return operation.promise;
|
|
249
|
+
}
|
|
250
|
+
isCurrentLoad(generationArg, connectionEpochArg, urlArg) {
|
|
251
|
+
return this.isConnected
|
|
252
|
+
&& generationArg === this.loadGeneration
|
|
253
|
+
&& connectionEpochArg === this.connectionEpoch
|
|
254
|
+
&& urlArg === this.pdfUrl;
|
|
201
255
|
}
|
|
202
|
-
async
|
|
203
|
-
|
|
256
|
+
async performPdfLoad(generationArg, connectionEpochArg, urlArg) {
|
|
257
|
+
await this.cleanup();
|
|
258
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg)
|
|
259
|
+
|| !urlArg
|
|
260
|
+
|| !this.isVisible)
|
|
204
261
|
return;
|
|
205
262
|
this.loading = true;
|
|
206
263
|
this.error = false;
|
|
207
|
-
|
|
264
|
+
const loadStartedAt = performance.now();
|
|
265
|
+
const abortController = new AbortController();
|
|
266
|
+
this.loadAbortController = abortController;
|
|
267
|
+
const { signal } = abortController;
|
|
208
268
|
try {
|
|
209
|
-
|
|
210
|
-
this.
|
|
211
|
-
|
|
269
|
+
const pdfLoadPromise = PdfManager.loadDocument(urlArg, signal);
|
|
270
|
+
this.pdfLoadPromise = pdfLoadPromise;
|
|
271
|
+
let pdfDocument;
|
|
212
272
|
try {
|
|
213
|
-
|
|
214
|
-
this.fileSize = downloadInfo.length;
|
|
273
|
+
pdfDocument = await pdfLoadPromise;
|
|
215
274
|
}
|
|
216
|
-
|
|
217
|
-
|
|
275
|
+
finally {
|
|
276
|
+
if (this.pdfLoadPromise === pdfLoadPromise) {
|
|
277
|
+
this.pdfLoadPromise = null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg) || signal.aborted) {
|
|
281
|
+
await PdfManager.releaseDocument(pdfDocument);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
this.pdfDocument = pdfDocument;
|
|
285
|
+
this.renderAdmissionOpen = true;
|
|
286
|
+
const documentUsePipeline = (async () => {
|
|
287
|
+
this.pageCount = pdfDocument.numPages;
|
|
288
|
+
this.currentPreviewPage = 1;
|
|
289
|
+
try {
|
|
290
|
+
const downloadInfo = await raceWithAbort(pdfDocument.getDownloadInfo(), signal);
|
|
291
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg))
|
|
292
|
+
return;
|
|
293
|
+
this.fileSize = downloadInfo.length;
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg))
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
this.loadedPdfUrl = urlArg;
|
|
300
|
+
this.loading = false;
|
|
301
|
+
await this.updateComplete;
|
|
302
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg))
|
|
303
|
+
return;
|
|
304
|
+
this.cacheElements();
|
|
305
|
+
this.setupResizeObserver();
|
|
306
|
+
await this.scheduleRenderPages();
|
|
307
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg))
|
|
308
|
+
return;
|
|
309
|
+
this.rendered = true;
|
|
310
|
+
const duration = performance.now() - loadStartedAt;
|
|
311
|
+
console.log(`PDF tile rendered in ${duration}ms`);
|
|
312
|
+
})();
|
|
313
|
+
this.documentUsePipelines.add(documentUsePipeline);
|
|
314
|
+
try {
|
|
315
|
+
await documentUsePipeline;
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
this.documentUsePipelines.delete(documentUsePipeline);
|
|
218
319
|
}
|
|
219
|
-
this.loadedPdfUrl = this.pdfUrl;
|
|
220
|
-
this.loading = false;
|
|
221
|
-
await this.updateComplete;
|
|
222
|
-
this.cacheElements();
|
|
223
|
-
await this.scheduleRenderPages();
|
|
224
|
-
this.rendered = true;
|
|
225
|
-
const duration = PerformanceMonitor.measure(`preview-render-${this.pdfUrl}`, `preview-load-${this.pdfUrl}`);
|
|
226
|
-
console.log(`PDF tile rendered in ${duration}ms`);
|
|
227
320
|
}
|
|
228
321
|
catch (error) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
322
|
+
if (this.isCurrentLoad(generationArg, connectionEpochArg, urlArg) && !signal.aborted) {
|
|
323
|
+
await this.handleDocumentFailure(error, generationArg, connectionEpochArg, urlArg, this.pdfDocument);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
requestRenderPages() {
|
|
328
|
+
const requestPromise = this.scheduleRenderPages();
|
|
329
|
+
if (this.renderPagesRequestPromise === requestPromise)
|
|
330
|
+
return;
|
|
331
|
+
this.renderPagesRequestPromise = requestPromise;
|
|
332
|
+
const generation = this.loadGeneration;
|
|
333
|
+
const connectionEpoch = this.connectionEpoch;
|
|
334
|
+
const url = this.pdfUrl;
|
|
335
|
+
const pdfDocument = this.pdfDocument;
|
|
336
|
+
void requestPromise.catch(async (error) => {
|
|
337
|
+
await this.handleDocumentFailure(error, generation, connectionEpoch, url, pdfDocument);
|
|
338
|
+
}).finally(() => {
|
|
339
|
+
if (this.renderPagesRequestPromise === requestPromise) {
|
|
340
|
+
this.renderPagesRequestPromise = null;
|
|
341
|
+
}
|
|
342
|
+
}).catch(() => { });
|
|
343
|
+
}
|
|
344
|
+
handleDocumentFailure(errorArg, generationArg, connectionEpochArg, urlArg, pdfDocumentArg) {
|
|
345
|
+
if (errorArg instanceof Error
|
|
346
|
+
&& ['AbortError', 'AbortException', 'RenderingCancelledException'].includes(errorArg.name)) {
|
|
347
|
+
return Promise.resolve();
|
|
348
|
+
}
|
|
349
|
+
if (!this.isCurrentLoad(generationArg, connectionEpochArg, urlArg)
|
|
350
|
+
|| (pdfDocumentArg && pdfDocumentArg !== this.pdfDocument)) {
|
|
351
|
+
return Promise.resolve();
|
|
232
352
|
}
|
|
353
|
+
if (this.renderFailurePromise)
|
|
354
|
+
return this.renderFailurePromise;
|
|
355
|
+
this.renderAdmissionOpen = false;
|
|
356
|
+
this.loadAbortController?.abort();
|
|
357
|
+
console.error('Failed to load or render PDF thumbnail:', errorArg);
|
|
358
|
+
const failurePromise = (async () => {
|
|
359
|
+
await this.cleanup();
|
|
360
|
+
if (this.isConnected
|
|
361
|
+
&& generationArg === this.loadGeneration
|
|
362
|
+
&& connectionEpochArg === this.connectionEpoch
|
|
363
|
+
&& urlArg === this.pdfUrl) {
|
|
364
|
+
this.error = true;
|
|
365
|
+
this.loading = false;
|
|
366
|
+
}
|
|
367
|
+
})();
|
|
368
|
+
this.renderFailurePromise = failurePromise;
|
|
369
|
+
void failurePromise.finally(() => {
|
|
370
|
+
if (this.renderFailurePromise === failurePromise) {
|
|
371
|
+
this.renderFailurePromise = null;
|
|
372
|
+
}
|
|
373
|
+
}).catch(() => { });
|
|
374
|
+
return failurePromise;
|
|
233
375
|
}
|
|
234
376
|
scheduleRenderPages() {
|
|
235
|
-
if (!this.pdfDocument) {
|
|
377
|
+
if (!this.renderAdmissionOpen || !this.pdfDocument) {
|
|
236
378
|
return Promise.resolve();
|
|
237
379
|
}
|
|
238
380
|
if (this.renderPagesTask) {
|
|
381
|
+
this.renderGeneration += 1;
|
|
239
382
|
this.renderPagesQueued = true;
|
|
240
|
-
return this.renderPagesTask;
|
|
241
|
-
}
|
|
242
|
-
this.renderPagesTask = (async () => {
|
|
243
383
|
try {
|
|
244
|
-
|
|
384
|
+
this.currentPageRenderTask?.cancel();
|
|
245
385
|
}
|
|
246
|
-
catch
|
|
247
|
-
|
|
386
|
+
catch {
|
|
387
|
+
// The active task remains part of the render queue settlement.
|
|
248
388
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
389
|
+
return this.renderPagesTask;
|
|
390
|
+
}
|
|
391
|
+
this.renderGeneration += 1;
|
|
392
|
+
const renderQueueEpoch = ++this.renderQueueEpoch;
|
|
393
|
+
const renderPagesTask = (async () => {
|
|
394
|
+
do {
|
|
395
|
+
if (renderQueueEpoch !== this.renderQueueEpoch)
|
|
396
|
+
return;
|
|
252
397
|
this.renderPagesQueued = false;
|
|
253
|
-
|
|
398
|
+
const renderGeneration = this.renderGeneration;
|
|
399
|
+
await this.performRenderPages(renderGeneration);
|
|
400
|
+
} while (renderQueueEpoch === this.renderQueueEpoch
|
|
401
|
+
&& this.renderPagesQueued
|
|
402
|
+
&& this.renderAdmissionOpen
|
|
403
|
+
&& this.pdfDocument);
|
|
404
|
+
})();
|
|
405
|
+
this.renderPagesTask = renderPagesTask;
|
|
406
|
+
void renderPagesTask.finally(() => {
|
|
407
|
+
if (this.renderPagesTask === renderPagesTask) {
|
|
408
|
+
this.renderPagesTask = null;
|
|
254
409
|
}
|
|
255
|
-
});
|
|
256
|
-
return
|
|
410
|
+
}).catch(() => { });
|
|
411
|
+
return renderPagesTask;
|
|
257
412
|
}
|
|
258
|
-
async performRenderPages() {
|
|
259
|
-
|
|
413
|
+
async performRenderPages(renderGenerationArg) {
|
|
414
|
+
const pdfDocument = this.pdfDocument;
|
|
415
|
+
const signal = this.loadAbortController?.signal;
|
|
416
|
+
if (!this.renderAdmissionOpen || !pdfDocument || !signal)
|
|
417
|
+
return;
|
|
418
|
+
const isCurrentRender = () => (this.isConnected
|
|
419
|
+
&& this.renderAdmissionOpen
|
|
420
|
+
&& !signal.aborted
|
|
421
|
+
&& renderGenerationArg === this.renderGeneration
|
|
422
|
+
&& pdfDocument === this.pdfDocument);
|
|
423
|
+
await waitForAnimationFrame();
|
|
424
|
+
if (!isCurrentRender())
|
|
260
425
|
return;
|
|
261
|
-
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
262
426
|
const canvas = this.shadowRoot?.querySelector('.preview-canvas');
|
|
263
427
|
if (!canvas)
|
|
264
|
-
|
|
428
|
+
throw new Error('PDF thumbnail preview canvas is unavailable');
|
|
265
429
|
this.clearCanvases();
|
|
266
430
|
this.cacheElements();
|
|
267
431
|
const { availableWidth, availableHeight } = this.getAvailableSize();
|
|
432
|
+
let pooledCanvas;
|
|
433
|
+
let pooledCanvasRenderSettled = true;
|
|
268
434
|
try {
|
|
269
435
|
const pageNum = this.currentPreviewPage;
|
|
270
|
-
const page = await
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
436
|
+
const page = await raceWithAbort(pdfDocument.getPage(pageNum), signal);
|
|
437
|
+
try {
|
|
438
|
+
if (!isCurrentRender())
|
|
439
|
+
return;
|
|
440
|
+
const initialViewport = page.getViewport({ scale: 1 });
|
|
441
|
+
const aspectRatio = initialViewport.height / initialViewport.width;
|
|
442
|
+
const a4PortraitRatio = 1.414;
|
|
443
|
+
const a4LandscapeRatio = 0.707;
|
|
444
|
+
const letterPortraitRatio = 1.294;
|
|
445
|
+
const letterLandscapeRatio = 0.773;
|
|
446
|
+
const tolerance = 0.05;
|
|
447
|
+
const isA4Portrait = Math.abs(aspectRatio - a4PortraitRatio) < (a4PortraitRatio * tolerance);
|
|
448
|
+
const isA4Landscape = Math.abs(aspectRatio - a4LandscapeRatio) < (a4LandscapeRatio * tolerance);
|
|
449
|
+
const isLetterPortrait = Math.abs(aspectRatio - letterPortraitRatio) < (letterPortraitRatio * tolerance);
|
|
450
|
+
const isLetterLandscape = Math.abs(aspectRatio - letterLandscapeRatio) < (letterLandscapeRatio * tolerance);
|
|
451
|
+
this.isA4Format = isA4Portrait || isA4Landscape || isLetterPortrait || isLetterLandscape;
|
|
452
|
+
const adjustedWidth = this.isA4Format ? availableWidth : availableWidth - 24;
|
|
453
|
+
const adjustedHeight = this.isA4Format ? availableHeight : availableHeight - 24;
|
|
454
|
+
const scaleX = adjustedWidth > 0 ? adjustedWidth / initialViewport.width : 0;
|
|
455
|
+
const scaleY = adjustedHeight > 0 ? adjustedHeight / initialViewport.height : 0;
|
|
456
|
+
const baseScale = Math.min(scaleX || 0.5, scaleY || scaleX || 0.5);
|
|
457
|
+
const renderScale = Math.min(baseScale * 2, 3.0);
|
|
458
|
+
if (!Number.isFinite(renderScale) || renderScale <= 0) {
|
|
459
|
+
throw new Error('PDF thumbnail render scale is invalid');
|
|
460
|
+
}
|
|
461
|
+
const viewport = page.getViewport({ scale: renderScale });
|
|
462
|
+
pooledCanvas = CanvasPool.acquire(viewport.width, viewport.height);
|
|
463
|
+
this.canvases.push(pooledCanvas);
|
|
464
|
+
const renderTask = page.render({
|
|
465
|
+
canvasContext: pooledCanvas.ctx,
|
|
466
|
+
viewport,
|
|
467
|
+
});
|
|
468
|
+
this.currentPageRenderTask = renderTask;
|
|
469
|
+
pooledCanvasRenderSettled = false;
|
|
470
|
+
const trackedRenderPromise = renderTask.promise.finally(() => {
|
|
471
|
+
pooledCanvasRenderSettled = true;
|
|
472
|
+
});
|
|
473
|
+
try {
|
|
474
|
+
await raceWithAbort(trackedRenderPromise, signal);
|
|
475
|
+
}
|
|
476
|
+
finally {
|
|
477
|
+
if (this.currentPageRenderTask === renderTask) {
|
|
478
|
+
this.currentPageRenderTask = null;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
if (!isCurrentRender())
|
|
482
|
+
return;
|
|
483
|
+
canvas.width = viewport.width;
|
|
484
|
+
canvas.height = viewport.height;
|
|
485
|
+
const displayWidth = adjustedWidth;
|
|
486
|
+
const displayHeight = (viewport.height / viewport.width) * adjustedWidth;
|
|
487
|
+
if (displayHeight > adjustedHeight) {
|
|
488
|
+
const altDisplayHeight = adjustedHeight;
|
|
489
|
+
const altDisplayWidth = (viewport.width / viewport.height) * adjustedHeight;
|
|
490
|
+
canvas.style.width = `${altDisplayWidth}px`;
|
|
491
|
+
canvas.style.height = `${altDisplayHeight}px`;
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
canvas.style.width = `${displayWidth}px`;
|
|
495
|
+
canvas.style.height = `${displayHeight}px`;
|
|
496
|
+
}
|
|
497
|
+
const ctx = canvas.getContext('2d');
|
|
498
|
+
if (!ctx)
|
|
499
|
+
throw new Error('PDF thumbnail preview context is unavailable');
|
|
317
500
|
ctx.imageSmoothingEnabled = true;
|
|
318
501
|
ctx.imageSmoothingQuality = 'high';
|
|
319
502
|
ctx.drawImage(pooledCanvas.canvas, 0, 0);
|
|
320
503
|
}
|
|
321
|
-
|
|
504
|
+
finally {
|
|
505
|
+
page.cleanup();
|
|
506
|
+
}
|
|
322
507
|
}
|
|
323
508
|
catch (error) {
|
|
324
|
-
|
|
509
|
+
if (error instanceof Error
|
|
510
|
+
&& ['AbortError', 'AbortException', 'RenderingCancelledException'].includes(error.name)) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
throw error;
|
|
514
|
+
}
|
|
515
|
+
finally {
|
|
516
|
+
if (pooledCanvas && pooledCanvasRenderSettled) {
|
|
517
|
+
const canvasIndex = this.canvases.indexOf(pooledCanvas);
|
|
518
|
+
if (canvasIndex >= 0)
|
|
519
|
+
this.canvases.splice(canvasIndex, 1);
|
|
520
|
+
CanvasPool.release(pooledCanvas);
|
|
521
|
+
}
|
|
325
522
|
}
|
|
326
523
|
}
|
|
327
524
|
clearCanvases() {
|
|
@@ -330,13 +527,86 @@ let DeesThumbnailPdf = (() => {
|
|
|
330
527
|
}
|
|
331
528
|
this.canvases = [];
|
|
332
529
|
}
|
|
530
|
+
discardCanvases() {
|
|
531
|
+
for (const pooledCanvas of this.canvases) {
|
|
532
|
+
CanvasPool.discard(pooledCanvas);
|
|
533
|
+
}
|
|
534
|
+
this.canvases = [];
|
|
535
|
+
}
|
|
333
536
|
cleanup() {
|
|
334
|
-
this.
|
|
335
|
-
|
|
336
|
-
PdfManager.releaseDocument(this.loadedPdfUrl ?? this.pdfUrl);
|
|
337
|
-
this.pdfDocument = null;
|
|
537
|
+
if (this.cleanupPromise) {
|
|
538
|
+
return this.cleanupPromise;
|
|
338
539
|
}
|
|
540
|
+
const cleanupPromise = this.performCleanup();
|
|
541
|
+
this.cleanupPromise = cleanupPromise;
|
|
542
|
+
void cleanupPromise.finally(() => {
|
|
543
|
+
if (this.cleanupPromise === cleanupPromise) {
|
|
544
|
+
this.cleanupPromise = null;
|
|
545
|
+
}
|
|
546
|
+
}).catch(() => { });
|
|
547
|
+
return cleanupPromise;
|
|
548
|
+
}
|
|
549
|
+
async performCleanup() {
|
|
550
|
+
this.renderAdmissionOpen = false;
|
|
551
|
+
this.renderGeneration += 1;
|
|
552
|
+
this.renderQueueEpoch += 1;
|
|
553
|
+
this.resizeObserver?.disconnect();
|
|
554
|
+
this.resizeObserver = undefined;
|
|
555
|
+
const abortController = this.loadAbortController;
|
|
556
|
+
this.loadAbortController = null;
|
|
557
|
+
abortController?.abort();
|
|
558
|
+
const loadOperation = this.loadOperation;
|
|
559
|
+
const pdfLoadPromise = this.pdfLoadPromise;
|
|
560
|
+
const renderPagesTask = this.renderPagesTask;
|
|
561
|
+
const currentPageRenderTask = this.currentPageRenderTask;
|
|
562
|
+
const documentUsePipelines = [...this.documentUsePipelines];
|
|
339
563
|
this.renderPagesQueued = false;
|
|
564
|
+
try {
|
|
565
|
+
currentPageRenderTask?.cancel();
|
|
566
|
+
}
|
|
567
|
+
catch {
|
|
568
|
+
// The tracked render promise still participates in settlement below.
|
|
569
|
+
}
|
|
570
|
+
const pdfDocument = this.pdfDocument;
|
|
571
|
+
this.pdfDocument = null;
|
|
572
|
+
const releasePromise = pdfDocument
|
|
573
|
+
? PdfManager.releaseDocument(pdfDocument).catch((error) => {
|
|
574
|
+
console.error('Failed to release PDF tile document:', error);
|
|
575
|
+
})
|
|
576
|
+
: null;
|
|
577
|
+
const pipelinesSettled = await settlePromisesWithin([
|
|
578
|
+
...(pdfLoadPromise ? [pdfLoadPromise] : []),
|
|
579
|
+
...documentUsePipelines,
|
|
580
|
+
...(renderPagesTask ? [renderPagesTask] : []),
|
|
581
|
+
...(currentPageRenderTask ? [currentPageRenderTask.promise] : []),
|
|
582
|
+
...(releasePromise ? [releasePromise] : []),
|
|
583
|
+
], pipelineSettlementGraceMs);
|
|
584
|
+
if (this.pdfLoadPromise === pdfLoadPromise) {
|
|
585
|
+
this.pdfLoadPromise = null;
|
|
586
|
+
}
|
|
587
|
+
if (this.loadOperation === loadOperation) {
|
|
588
|
+
this.loadOperation = null;
|
|
589
|
+
}
|
|
590
|
+
if (this.renderPagesTask === renderPagesTask) {
|
|
591
|
+
this.renderPagesTask = null;
|
|
592
|
+
}
|
|
593
|
+
if (this.currentPageRenderTask === currentPageRenderTask) {
|
|
594
|
+
this.currentPageRenderTask = null;
|
|
595
|
+
}
|
|
596
|
+
this.documentUsePipelines.clear();
|
|
597
|
+
if (pipelinesSettled) {
|
|
598
|
+
this.clearCanvases();
|
|
599
|
+
}
|
|
600
|
+
else {
|
|
601
|
+
this.discardCanvases();
|
|
602
|
+
}
|
|
603
|
+
const previewCanvas = this.shadowRoot?.querySelector('.preview-canvas');
|
|
604
|
+
if (previewCanvas) {
|
|
605
|
+
previewCanvas.width = 0;
|
|
606
|
+
previewCanvas.height = 0;
|
|
607
|
+
previewCanvas.style.removeProperty('width');
|
|
608
|
+
previewCanvas.style.removeProperty('height');
|
|
609
|
+
}
|
|
340
610
|
this.pageCount = 0;
|
|
341
611
|
this.currentPreviewPage = 1;
|
|
342
612
|
this.isHovering = false;
|
|
@@ -346,24 +616,17 @@ let DeesThumbnailPdf = (() => {
|
|
|
346
616
|
this.rendered = false;
|
|
347
617
|
this.loading = false;
|
|
348
618
|
this.error = false;
|
|
619
|
+
this.fileSize = 0;
|
|
349
620
|
}
|
|
350
621
|
async updated(changedProperties) {
|
|
351
622
|
super.updated(changedProperties);
|
|
352
|
-
if (changedProperties.has('pdfUrl') && this.
|
|
353
|
-
|
|
354
|
-
if (previousUrl) {
|
|
355
|
-
PdfManager.releaseDocument(previousUrl);
|
|
356
|
-
}
|
|
357
|
-
this.cleanup();
|
|
358
|
-
this.rendered = false;
|
|
359
|
-
this.currentPreviewPage = 1;
|
|
360
|
-
const rect = this.getBoundingClientRect();
|
|
361
|
-
if (rect.top < window.innerHeight && rect.bottom > 0) {
|
|
362
|
-
this.loadAndRenderPreview();
|
|
363
|
-
}
|
|
623
|
+
if (changedProperties.has('pdfUrl') && this.isConnected) {
|
|
624
|
+
await this.schedulePdfLoad(this.connectionEpoch);
|
|
364
625
|
}
|
|
365
|
-
if (changedProperties.has('currentPreviewPage')
|
|
366
|
-
|
|
626
|
+
if (changedProperties.has('currentPreviewPage')
|
|
627
|
+
&& this.renderAdmissionOpen
|
|
628
|
+
&& this.rendered) {
|
|
629
|
+
this.requestRenderPages();
|
|
367
630
|
}
|
|
368
631
|
}
|
|
369
632
|
getContextMenuItems() {
|
|
@@ -424,7 +687,7 @@ let DeesThumbnailPdf = (() => {
|
|
|
424
687
|
return;
|
|
425
688
|
this.resizeObserver = new ResizeObserver(() => {
|
|
426
689
|
if (this.rendered && this.pdfDocument && !this.loading) {
|
|
427
|
-
|
|
690
|
+
this.requestRenderPages();
|
|
428
691
|
}
|
|
429
692
|
});
|
|
430
693
|
this.resizeObserver.observe(this);
|
|
@@ -448,4 +711,4 @@ let DeesThumbnailPdf = (() => {
|
|
|
448
711
|
return DeesThumbnailPdf = _classThis;
|
|
449
712
|
})();
|
|
450
713
|
export { DeesThumbnailPdf };
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbWVkaWEvZGVlcy10aHVtYm5haWwtcGRmL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7SUFTaEMsZ0JBQWdCOzRCQUQ1QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0UsaUJBQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUF6QixTQUFRLFdBQWlCOzs7O2tDQUtwRCxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7OENBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztxQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO29DQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7c0NBRzNCLFFB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
|
|
714
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbWVkaWEvZGVlcy10aHVtYm5haWwtcGRmL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUMsTUFBTSw2QkFBNkIsQ0FBQztBQUV4SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQ0wsUUFBUSxFQUNSLGNBQWMsRUFDZCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFhN0MsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUM7SUFHM0IsZ0JBQWdCOzRCQUQ1QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0UsaUJBQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUF6QixTQUFRLFdBQWlCOzs7O2tDQUtwRCxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7OENBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztxQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFD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
|