@libresign/pdf-elements 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pdf-elements.common.js +135 -17
- package/dist/pdf-elements.common.js.map +1 -1
- package/dist/pdf-elements.css +1 -1
- package/dist/pdf-elements.umd.js +135 -17
- package/dist/pdf-elements.umd.js.map +1 -1
- package/dist/pdf-elements.umd.min.js +2 -2
- package/dist/pdf-elements.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/PDFElements.vue +45 -16
package/dist/pdf-elements.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
canvas[data-v-2c9e224a]{display:block}.draggable-wrapper[data-v-55db89ce]{position:relative}.actions-toolbar[data-v-55db89ce]{position:absolute;display:flex;gap:4px;background:#1f2937;border-radius:6px;padding:6px 8px;box-shadow:0 4px 12px -2px #00000026,0 2px 6px -2px #0000001a;z-index:100;white-space:nowrap}.action-btn[data-v-55db89ce]{border:none;background:#0000;color:#fff;padding:4px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease}.action-btn[data-v-55db89ce]:hover{background:#ffffff1a}.draggable-element[data-v-55db89ce]{position:absolute;cursor:move;user-select:none;border-radius:6px;overflow:visible}.draggable-element.selected[data-v-55db89ce]{box-shadow:inset 0 0 0 2px #2563eb}.resize-handle[data-v-55db89ce]{position:absolute;width:10px;height:10px;background:#2563eb;border:1px solid #fff;border-radius:2px;padding:0;margin:0;cursor:pointer;z-index:200}.handle-top-left[data-v-55db89ce]{top:-6px;left:-6px;cursor:nwse-resize}.handle-top-right[data-v-55db89ce]{top:-6px;right:-6px;cursor:nesw-resize}.handle-bottom-left[data-v-55db89ce]{bottom:-6px;left:-6px;cursor:nesw-resize}.handle-bottom-right[data-v-55db89ce]{bottom:-6px;right:-6px;cursor:nwse-resize}.pdf-elements-root[data-v-
|
|
1
|
+
canvas[data-v-2c9e224a]{display:block}.draggable-wrapper[data-v-55db89ce]{position:relative}.actions-toolbar[data-v-55db89ce]{position:absolute;display:flex;gap:4px;background:#1f2937;border-radius:6px;padding:6px 8px;box-shadow:0 4px 12px -2px #00000026,0 2px 6px -2px #0000001a;z-index:100;white-space:nowrap}.action-btn[data-v-55db89ce]{border:none;background:#0000;color:#fff;padding:4px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease}.action-btn[data-v-55db89ce]:hover{background:#ffffff1a}.draggable-element[data-v-55db89ce]{position:absolute;cursor:move;user-select:none;border-radius:6px;overflow:visible}.draggable-element.selected[data-v-55db89ce]{box-shadow:inset 0 0 0 2px #2563eb}.resize-handle[data-v-55db89ce]{position:absolute;width:10px;height:10px;background:#2563eb;border:1px solid #fff;border-radius:2px;padding:0;margin:0;cursor:pointer;z-index:200}.handle-top-left[data-v-55db89ce]{top:-6px;left:-6px;cursor:nwse-resize}.handle-top-right[data-v-55db89ce]{top:-6px;right:-6px;cursor:nesw-resize}.handle-bottom-left[data-v-55db89ce]{bottom:-6px;left:-6px;cursor:nesw-resize}.handle-bottom-right[data-v-55db89ce]{bottom:-6px;right:-6px;cursor:nwse-resize}.pdf-elements-root[data-v-a3ee1be0]{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;box-sizing:border-box}.pages-container[data-v-a3ee1be0]{width:100%;padding:20px 0 0 0;text-align:center;background:#f7fafc;overflow:hidden}.page-slot[data-v-a3ee1be0]{margin:0 auto}.page-wrapper[data-v-a3ee1be0]{display:inline-block;margin-bottom:0}.page-canvas[data-v-a3ee1be0]{position:relative;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.shadow-outline[data-v-a3ee1be0]{box-shadow:0 0 0 3px #4299e180}.preview-element[data-v-a3ee1be0]{position:absolute;opacity:.7;pointer-events:none}.drag-ghost[data-v-a3ee1be0]{position:fixed;opacity:.9;pointer-events:none;z-index:10000;transform-origin:top left;transition:none;box-shadow:0 8px 16px #0000004d}.overlay[data-v-a3ee1be0]{position:absolute;top:0;left:0;transform-origin:top left;width:100%;height:100%}.page-footer[data-v-a3ee1be0]{display:flex;justify-content:space-between;align-items:center;padding:12px 20px 20px 20px;color:#4b5563;font-size:14px}
|
package/dist/pdf-elements.umd.js
CHANGED
|
@@ -190,6 +190,74 @@ module.exports = getBuiltIn('document', 'documentElement');
|
|
|
190
190
|
module.exports = {};
|
|
191
191
|
|
|
192
192
|
|
|
193
|
+
/***/ },
|
|
194
|
+
|
|
195
|
+
/***/ 531
|
|
196
|
+
(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
var $ = __webpack_require__(6518);
|
|
200
|
+
var call = __webpack_require__(9565);
|
|
201
|
+
var aCallable = __webpack_require__(9306);
|
|
202
|
+
var anObject = __webpack_require__(8551);
|
|
203
|
+
var getIteratorDirect = __webpack_require__(1767);
|
|
204
|
+
var getIteratorFlattenable = __webpack_require__(8646);
|
|
205
|
+
var createIteratorProxy = __webpack_require__(9462);
|
|
206
|
+
var iteratorClose = __webpack_require__(9539);
|
|
207
|
+
var IS_PURE = __webpack_require__(6395);
|
|
208
|
+
var iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);
|
|
209
|
+
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);
|
|
210
|
+
|
|
211
|
+
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
|
|
212
|
+
&& !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
|
|
213
|
+
var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
214
|
+
&& iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
|
|
215
|
+
|
|
216
|
+
var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;
|
|
217
|
+
|
|
218
|
+
var IteratorProxy = createIteratorProxy(function () {
|
|
219
|
+
var iterator = this.iterator;
|
|
220
|
+
var mapper = this.mapper;
|
|
221
|
+
var result, inner;
|
|
222
|
+
|
|
223
|
+
while (true) {
|
|
224
|
+
if (inner = this.inner) try {
|
|
225
|
+
result = anObject(call(inner.next, inner.iterator));
|
|
226
|
+
if (!result.done) return result.value;
|
|
227
|
+
this.inner = null;
|
|
228
|
+
} catch (error) { iteratorClose(iterator, 'throw', error); }
|
|
229
|
+
|
|
230
|
+
result = anObject(call(this.next, iterator));
|
|
231
|
+
|
|
232
|
+
if (this.done = !!result.done) return;
|
|
233
|
+
|
|
234
|
+
try {
|
|
235
|
+
this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);
|
|
236
|
+
} catch (error) { iteratorClose(iterator, 'throw', error); }
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// `Iterator.prototype.flatMap` method
|
|
241
|
+
// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap
|
|
242
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
243
|
+
flatMap: function flatMap(mapper) {
|
|
244
|
+
anObject(this);
|
|
245
|
+
try {
|
|
246
|
+
aCallable(mapper);
|
|
247
|
+
} catch (error) {
|
|
248
|
+
iteratorClose(this, 'throw', error);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);
|
|
252
|
+
|
|
253
|
+
return new IteratorProxy(getIteratorDirect(this), {
|
|
254
|
+
mapper: mapper,
|
|
255
|
+
inner: null
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
|
|
193
261
|
/***/ },
|
|
194
262
|
|
|
195
263
|
/***/ 616
|
|
@@ -2234,6 +2302,24 @@ var WeakMap = globalThis.WeakMap;
|
|
|
2234
2302
|
module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
|
|
2235
2303
|
|
|
2236
2304
|
|
|
2305
|
+
/***/ },
|
|
2306
|
+
|
|
2307
|
+
/***/ 8646
|
|
2308
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
var call = __webpack_require__(9565);
|
|
2312
|
+
var anObject = __webpack_require__(8551);
|
|
2313
|
+
var getIteratorDirect = __webpack_require__(1767);
|
|
2314
|
+
var getIteratorMethod = __webpack_require__(851);
|
|
2315
|
+
|
|
2316
|
+
module.exports = function (obj, stringHandling) {
|
|
2317
|
+
if (!stringHandling || typeof obj !== 'string') anObject(obj);
|
|
2318
|
+
var method = getIteratorMethod(obj);
|
|
2319
|
+
return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));
|
|
2320
|
+
};
|
|
2321
|
+
|
|
2322
|
+
|
|
2237
2323
|
/***/ },
|
|
2238
2324
|
|
|
2239
2325
|
/***/ 8686
|
|
@@ -29090,7 +29176,7 @@ globalThis.pdfjsLib = {
|
|
|
29090
29176
|
//# sourceMappingURL=pdf.mjs.map
|
|
29091
29177
|
;// ./node_modules/pdfjs-dist/build/pdf.worker.min.mjs
|
|
29092
29178
|
const pdf_worker_min_namespaceObject = __webpack_require__.p + "pdf.worker.min.mjs";
|
|
29093
|
-
;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/PDFElements.vue?vue&type=template&id=
|
|
29179
|
+
;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/PDFElements.vue?vue&type=template&id=a3ee1be0&scoped=true
|
|
29094
29180
|
var render = function render() {
|
|
29095
29181
|
var _vm = this,
|
|
29096
29182
|
_c = _vm._self._c;
|
|
@@ -29236,6 +29322,8 @@ var es_iterator_constructor = __webpack_require__(8111);
|
|
|
29236
29322
|
var es_iterator_filter = __webpack_require__(2489);
|
|
29237
29323
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
|
|
29238
29324
|
var es_iterator_find = __webpack_require__(116);
|
|
29325
|
+
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js
|
|
29326
|
+
var es_iterator_flat_map = __webpack_require__(531);
|
|
29239
29327
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
|
|
29240
29328
|
var es_iterator_for_each = __webpack_require__(7588);
|
|
29241
29329
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
|
|
@@ -30074,6 +30162,7 @@ function readAsPDF(file) {
|
|
|
30074
30162
|
|
|
30075
30163
|
|
|
30076
30164
|
|
|
30165
|
+
|
|
30077
30166
|
/* harmony default export */ const PDFElementsvue_type_script_lang_js = ({
|
|
30078
30167
|
name: 'PDFElements',
|
|
30079
30168
|
components: {
|
|
@@ -30172,7 +30261,8 @@ function readAsPDF(file) {
|
|
|
30172
30261
|
zoomRafId: null,
|
|
30173
30262
|
boundHandleWheel: null,
|
|
30174
30263
|
debouncedApplyZoom: null,
|
|
30175
|
-
visualScale: this.initialScale
|
|
30264
|
+
visualScale: this.initialScale,
|
|
30265
|
+
autoFitApplied: false
|
|
30176
30266
|
};
|
|
30177
30267
|
},
|
|
30178
30268
|
mounted() {
|
|
@@ -30196,9 +30286,6 @@ function readAsPDF(file) {
|
|
|
30196
30286
|
this.$el?.addEventListener('wheel', this.boundHandleWheel, {
|
|
30197
30287
|
passive: false
|
|
30198
30288
|
});
|
|
30199
|
-
if (this.autoFitZoom) {
|
|
30200
|
-
window.addEventListener('resize', this.adjustZoomToFit);
|
|
30201
|
-
}
|
|
30202
30289
|
},
|
|
30203
30290
|
beforeUnmount() {
|
|
30204
30291
|
if (this.zoomRafId) {
|
|
@@ -30216,9 +30303,6 @@ function readAsPDF(file) {
|
|
|
30216
30303
|
window.removeEventListener('scroll', this.onViewportScroll);
|
|
30217
30304
|
window.removeEventListener('resize', this.onViewportScroll);
|
|
30218
30305
|
this.$el?.removeEventListener('scroll', this.onViewportScroll);
|
|
30219
|
-
if (this.autoFitZoom) {
|
|
30220
|
-
window.removeEventListener('resize', this.adjustZoomToFit);
|
|
30221
|
-
}
|
|
30222
30306
|
if (this.viewportRafId) {
|
|
30223
30307
|
window.cancelAnimationFrame(this.viewportRafId);
|
|
30224
30308
|
this.viewportRafId = 0;
|
|
@@ -30228,6 +30312,7 @@ function readAsPDF(file) {
|
|
|
30228
30312
|
async init() {
|
|
30229
30313
|
if (!this.initFiles || this.initFiles.length === 0) return;
|
|
30230
30314
|
const docs = [];
|
|
30315
|
+
this.autoFitApplied = false;
|
|
30231
30316
|
for (let i = 0; i < this.initFiles.length; i++) {
|
|
30232
30317
|
const file = this.initFiles[i];
|
|
30233
30318
|
const name = this.initFileNames[i] || `document-${i + 1}.pdf`;
|
|
@@ -30241,8 +30326,18 @@ function readAsPDF(file) {
|
|
|
30241
30326
|
pdfDoc = await readAsPDF(file);
|
|
30242
30327
|
}
|
|
30243
30328
|
const pages = [];
|
|
30329
|
+
const pageWidths = Array(pdfDoc.numPages).fill(0);
|
|
30244
30330
|
for (let p = 1; p <= pdfDoc.numPages; p++) {
|
|
30245
|
-
|
|
30331
|
+
const pagePromise = pdfDoc.getPage(p);
|
|
30332
|
+
pagePromise.then(page => {
|
|
30333
|
+
pageWidths[p - 1] = page.getViewport({
|
|
30334
|
+
scale: 1
|
|
30335
|
+
}).width;
|
|
30336
|
+
if (this.autoFitZoom) {
|
|
30337
|
+
this.scheduleAutoFitZoom();
|
|
30338
|
+
}
|
|
30339
|
+
});
|
|
30340
|
+
pages.push(pagePromise);
|
|
30246
30341
|
}
|
|
30247
30342
|
docs.push({
|
|
30248
30343
|
name,
|
|
@@ -30250,6 +30345,7 @@ function readAsPDF(file) {
|
|
|
30250
30345
|
pdfDoc,
|
|
30251
30346
|
numPages: pdfDoc.numPages,
|
|
30252
30347
|
pages,
|
|
30348
|
+
pageWidths,
|
|
30253
30349
|
pagesScale: Array(pdfDoc.numPages).fill(this.scale),
|
|
30254
30350
|
allObjects: Array(pdfDoc.numPages).fill(0).map(() => [])
|
|
30255
30351
|
});
|
|
@@ -30263,7 +30359,7 @@ function readAsPDF(file) {
|
|
|
30263
30359
|
});
|
|
30264
30360
|
this.$nextTick(() => {
|
|
30265
30361
|
if (this.autoFitZoom) {
|
|
30266
|
-
this.
|
|
30362
|
+
this.scheduleAutoFitZoom();
|
|
30267
30363
|
}
|
|
30268
30364
|
});
|
|
30269
30365
|
}
|
|
@@ -30685,6 +30781,9 @@ function readAsPDF(file) {
|
|
|
30685
30781
|
if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return;
|
|
30686
30782
|
this.pdfDocuments[docIndex].pagesScale[pageIndex] = e.scale;
|
|
30687
30783
|
this.cachePageBounds();
|
|
30784
|
+
if (this.autoFitZoom) {
|
|
30785
|
+
this.scheduleAutoFitZoom();
|
|
30786
|
+
}
|
|
30688
30787
|
},
|
|
30689
30788
|
formatPageNumber(currentPage, totalPages) {
|
|
30690
30789
|
return this.pageCountFormat.replace('{currentPage}', currentPage).replace('{totalPages}', totalPages);
|
|
@@ -30709,12 +30808,31 @@ function readAsPDF(file) {
|
|
|
30709
30808
|
const availableWidth = containerWidth - 40;
|
|
30710
30809
|
return Math.max(0.1, Math.min(2, availableWidth / maxPageWidth));
|
|
30711
30810
|
},
|
|
30811
|
+
scheduleAutoFitZoom() {
|
|
30812
|
+
if (this.autoFitApplied) return;
|
|
30813
|
+
if (this.zoomRafId) return;
|
|
30814
|
+
this.zoomRafId = window.requestAnimationFrame(() => {
|
|
30815
|
+
this.zoomRafId = 0;
|
|
30816
|
+
this.adjustZoomToFit();
|
|
30817
|
+
});
|
|
30818
|
+
},
|
|
30712
30819
|
adjustZoomToFit() {
|
|
30713
|
-
if (!this.autoFitZoom || !this.pdfDocuments.length) return;
|
|
30714
|
-
const
|
|
30715
|
-
|
|
30716
|
-
|
|
30820
|
+
if (!this.autoFitZoom || this.autoFitApplied || !this.pdfDocuments.length) return;
|
|
30821
|
+
const widths = this.pdfDocuments.flatMap(doc => doc.pageWidths || []).filter(width => width > 0);
|
|
30822
|
+
let maxCanvasWidth = 0;
|
|
30823
|
+
if (widths.length) {
|
|
30824
|
+
maxCanvasWidth = Math.max(...widths);
|
|
30825
|
+
} else {
|
|
30826
|
+
if (this.autoFitZoom) {
|
|
30827
|
+
this.scheduleAutoFitZoom();
|
|
30828
|
+
return;
|
|
30829
|
+
}
|
|
30830
|
+
const canvases = this.$el?.querySelectorAll('canvas');
|
|
30831
|
+
if (!canvases?.length) return;
|
|
30832
|
+
maxCanvasWidth = Math.max(...Array.from(canvases).map(canvas => canvas.width / (this.scale || 1)));
|
|
30833
|
+
}
|
|
30717
30834
|
const optimalScale = this.calculateOptimalScale(maxCanvasWidth);
|
|
30835
|
+
this.autoFitApplied = true;
|
|
30718
30836
|
if (Math.abs(optimalScale - this.scale) > 0.01) {
|
|
30719
30837
|
this.scale = optimalScale;
|
|
30720
30838
|
this.visualScale = optimalScale;
|
|
@@ -30728,10 +30846,10 @@ function readAsPDF(file) {
|
|
|
30728
30846
|
});
|
|
30729
30847
|
;// ./src/components/PDFElements.vue?vue&type=script&lang=js
|
|
30730
30848
|
/* harmony default export */ const components_PDFElementsvue_type_script_lang_js = (PDFElementsvue_type_script_lang_js);
|
|
30731
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-55.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-55.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-55.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/PDFElements.vue?vue&type=style&index=0&id=
|
|
30849
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-55.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-55.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-55.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/PDFElements.vue?vue&type=style&index=0&id=a3ee1be0&prod&scoped=true&lang=css
|
|
30732
30850
|
// extracted by mini-css-extract-plugin
|
|
30733
30851
|
|
|
30734
|
-
;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=
|
|
30852
|
+
;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=a3ee1be0&prod&scoped=true&lang=css
|
|
30735
30853
|
|
|
30736
30854
|
;// ./src/components/PDFElements.vue
|
|
30737
30855
|
|
|
@@ -30748,7 +30866,7 @@ var PDFElements_component = normalizeComponent(
|
|
|
30748
30866
|
staticRenderFns,
|
|
30749
30867
|
false,
|
|
30750
30868
|
null,
|
|
30751
|
-
"
|
|
30869
|
+
"a3ee1be0",
|
|
30752
30870
|
null
|
|
30753
30871
|
|
|
30754
30872
|
)
|