@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.
@@ -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-00b0fcba]{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;box-sizing:border-box}.pages-container[data-v-00b0fcba]{width:100%;padding:20px 0 0 0;text-align:center;background:#f7fafc;overflow:hidden}.page-slot[data-v-00b0fcba]{margin:0 auto}.page-wrapper[data-v-00b0fcba]{display:inline-block;margin-bottom:0}.page-canvas[data-v-00b0fcba]{position:relative;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.shadow-outline[data-v-00b0fcba]{box-shadow:0 0 0 3px #4299e180}.preview-element[data-v-00b0fcba]{position:absolute;opacity:.7;pointer-events:none}.drag-ghost[data-v-00b0fcba]{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-00b0fcba]{position:absolute;top:0;left:0;transform-origin:top left;width:100%;height:100%}.page-footer[data-v-00b0fcba]{display:flex;justify-content:space-between;align-items:center;padding:12px 20px 20px 20px;color:#4b5563;font-size:14px}
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}
@@ -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=00b0fcba&scoped=true
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
- pages.push(pdfDoc.getPage(p));
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.adjustZoomToFit();
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 canvases = this.$el?.querySelectorAll('canvas');
30715
- if (!canvases?.length) return;
30716
- const maxCanvasWidth = Math.max(...Array.from(canvases).map(canvas => canvas.width / (this.scale || 1)));
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=00b0fcba&prod&scoped=true&lang=css
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=00b0fcba&prod&scoped=true&lang=css
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
- "00b0fcba",
30869
+ "a3ee1be0",
30752
30870
  null
30753
30871
 
30754
30872
  )