@libresign/pdf-elements 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- canvas[data-v-acf7a444]{display:block}.draggable-wrapper[data-v-9f1fd9e4]{position:relative}.actions-toolbar[data-v-9f1fd9e4]{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:5;white-space:nowrap}.action-btn[data-v-9f1fd9e4]{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-9f1fd9e4]:hover{background:#ffffff1a}.draggable-element[data-v-9f1fd9e4]{position:absolute;cursor:move;user-select:none;border-radius:6px;overflow:visible}.draggable-element.selected[data-v-9f1fd9e4]{box-shadow:inset 0 0 0 2px #2563eb}.resize-handle[data-v-9f1fd9e4]{all:unset;position:absolute;width:12px;height:12px;min-width:0;min-height:0;background:#2563eb;border:1px solid #fff;border-radius:3px;padding:0;margin:0;line-height:0;font-size:0;box-sizing:border-box;display:block;appearance:none;cursor:pointer;z-index:5}.handle-top-left[data-v-9f1fd9e4]{top:-7px;left:-7px;cursor:nwse-resize}.handle-top-right[data-v-9f1fd9e4]{top:-7px;right:-7px;cursor:nesw-resize}.handle-bottom-left[data-v-9f1fd9e4]{bottom:-7px;left:-7px;cursor:nesw-resize}.handle-bottom-right[data-v-9f1fd9e4]{bottom:-7px;right:-7px;cursor:nwse-resize}.pdf-elements-root[data-v-46de43ea]{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;box-sizing:border-box}.pages-container[data-v-46de43ea]{width:100%;padding:20px 0 0 0;text-align:center;background:#f7fafc;overflow:hidden}.page-slot[data-v-46de43ea]{margin:0 auto}.page-wrapper[data-v-46de43ea]{display:inline-block;margin-bottom:0}.page-canvas[data-v-46de43ea]{position:relative;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.shadow-outline[data-v-46de43ea]{box-shadow:0 0 0 3px #4299e180}.preview-element[data-v-46de43ea]{position:absolute;opacity:.7;pointer-events:none}.overlay[data-v-46de43ea]{position:absolute;top:0;left:0;transform-origin:top left;width:100%;height:100%}.page-footer[data-v-46de43ea]{display:flex;justify-content:space-between;align-items:center;padding:12px 20px 20px 20px;color:#4b5563;font-size:14px}
1
+ canvas[data-v-acf7a444]{display:block}.draggable-wrapper[data-v-9f1fd9e4]{position:relative}.actions-toolbar[data-v-9f1fd9e4]{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:5;white-space:nowrap}.action-btn[data-v-9f1fd9e4]{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-9f1fd9e4]:hover{background:#ffffff1a}.draggable-element[data-v-9f1fd9e4]{position:absolute;cursor:move;user-select:none;border-radius:6px;overflow:visible}.draggable-element.selected[data-v-9f1fd9e4]{box-shadow:inset 0 0 0 2px #2563eb}.resize-handle[data-v-9f1fd9e4]{all:unset;position:absolute;width:12px;height:12px;min-width:0;min-height:0;background:#2563eb;border:1px solid #fff;border-radius:3px;padding:0;margin:0;line-height:0;font-size:0;box-sizing:border-box;display:block;appearance:none;cursor:pointer;z-index:5}.handle-top-left[data-v-9f1fd9e4]{top:-7px;left:-7px;cursor:nwse-resize}.handle-top-right[data-v-9f1fd9e4]{top:-7px;right:-7px;cursor:nesw-resize}.handle-bottom-left[data-v-9f1fd9e4]{bottom:-7px;left:-7px;cursor:nesw-resize}.handle-bottom-right[data-v-9f1fd9e4]{bottom:-7px;right:-7px;cursor:nwse-resize}.pdf-elements-root[data-v-4b0138d1]{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;box-sizing:border-box}.pages-container[data-v-4b0138d1]{width:100%;padding:20px 0 0 0;text-align:center;background:#f7fafc;overflow:hidden}.page-slot[data-v-4b0138d1]{margin:0 auto}.page-wrapper[data-v-4b0138d1]{display:inline-block;margin-bottom:0}.page-canvas[data-v-4b0138d1]{position:relative;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.shadow-outline[data-v-4b0138d1]{box-shadow:0 0 0 3px #4299e180}.preview-element[data-v-4b0138d1]{position:absolute;opacity:.7;pointer-events:none}.overlay[data-v-4b0138d1]{position:absolute;top:0;left:0;transform-origin:top left;width:100%;height:100%}.page-footer[data-v-4b0138d1]{display:flex;justify-content:space-between;align-items:center;padding:12px 20px 20px 20px;color:#4b5563;font-size:14px}
@@ -208,12 +208,26 @@ var IS_PURE = __webpack_require__(6395);
208
208
  var iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);
209
209
  var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);
210
210
 
211
+ // Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
212
+ // https://bugs.webkit.org/show_bug.cgi?id=297532
213
+ function throwsOnIteratorWithoutReturn() {
214
+ try {
215
+ // eslint-disable-next-line es/no-map, es/no-iterator, es/no-iterator-prototype-flatmap -- required for testing
216
+ var it = Iterator.prototype.flatMap.call(new Map([[4, 5]]).entries(), function (v) { return v; });
217
+ it.next();
218
+ it['return']();
219
+ } catch (error) {
220
+ return true;
221
+ }
222
+ }
223
+
211
224
  var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
212
225
  && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
213
226
  var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
214
227
  && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
215
228
 
216
- var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;
229
+ var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError
230
+ || throwsOnIteratorWithoutReturn();
217
231
 
218
232
  var IteratorProxy = createIteratorProxy(function () {
219
233
  var iterator = this.iterator;
@@ -2311,10 +2325,10 @@ var SHARED = '__core-js_shared__';
2311
2325
  var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
2312
2326
 
2313
2327
  (store.versions || (store.versions = [])).push({
2314
- version: '3.47.0',
2328
+ version: '3.48.0',
2315
2329
  mode: IS_PURE ? 'pure' : 'global',
2316
- copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)',
2317
- license: 'https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE',
2330
+ copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',
2331
+ license: 'https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE',
2318
2332
  source: 'https://github.com/zloirock/core-js'
2319
2333
  });
2320
2334
 
@@ -3172,7 +3186,7 @@ if (typeof window !== 'undefined') {
3172
3186
  // Indicate to webpack that this file can be concatenated
3173
3187
  /* harmony default export */ const setPublicPath = (null);
3174
3188
 
3175
- ;// ./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=46de43ea&scoped=true
3189
+ ;// ./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=4b0138d1&scoped=true
3176
3190
  var render = function render() {
3177
3191
  var _vm = this,
3178
3192
  _c = _vm._self._c;
@@ -3222,7 +3236,13 @@ var render = function render() {
3222
3236
  staticClass: "overlay",
3223
3237
  on: {
3224
3238
  "mousemove": _vm.handleMouseMove,
3225
- "touchmove": _vm.handleMouseMove
3239
+ "touchmove": _vm.handleMouseMove,
3240
+ "click": function ($event) {
3241
+ return _vm.handleOverlayClick(docIndex, pIndex, $event);
3242
+ },
3243
+ "touchend": function ($event) {
3244
+ return _vm.handleOverlayClick(docIndex, pIndex, $event);
3245
+ }
3226
3246
  }
3227
3247
  }, [_vm.isAddingMode && _vm.previewPageDocIndex === docIndex && _vm.previewPageIndex === pIndex && _vm.previewElement && _vm.previewVisible ? _c('div', {
3228
3248
  staticClass: "preview-element",
@@ -30736,6 +30756,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
30736
30756
  type: Boolean,
30737
30757
  default: false
30738
30758
  },
30759
+ emitObjectClick: {
30760
+ type: Boolean,
30761
+ default: false
30762
+ },
30739
30763
  ignoreClickOutsideSelectors: {
30740
30764
  type: Array,
30741
30765
  default: () => []
@@ -31208,6 +31232,44 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31208
31232
  this.previewVisible = true;
31209
31233
  });
31210
31234
  },
31235
+ handleOverlayClick(docIndex, pageIndex, event) {
31236
+ if (!this.emitObjectClick) return;
31237
+ const {
31238
+ x: clientX,
31239
+ y: clientY
31240
+ } = this.getPointerPosition(event);
31241
+ if (!Number.isFinite(clientX) || !Number.isFinite(clientY)) return;
31242
+ this.cachePageBoundsForPage(docIndex, pageIndex);
31243
+ const pageRect = this.getPageRect(docIndex, pageIndex);
31244
+ if (!pageRect) return;
31245
+ const pagesScale = this.getDisplayedPageScale(docIndex, pageIndex) || 1;
31246
+ const relX = (clientX - pageRect.left) / pagesScale;
31247
+ const relY = (clientY - pageRect.top) / pagesScale;
31248
+ const doc = this.pdfDocuments?.[docIndex];
31249
+ const pageObjects = doc?.allObjects?.[pageIndex] || [];
31250
+ let hitObject = null;
31251
+ for (let i = pageObjects.length - 1; i >= 0; i--) {
31252
+ const object = pageObjects[i];
31253
+ const x = Number(object.x);
31254
+ const y = Number(object.y);
31255
+ const width = Number(object.width);
31256
+ const height = Number(object.height);
31257
+ if (![x, y, width, height].every(Number.isFinite)) {
31258
+ continue;
31259
+ }
31260
+ if (relX >= x && relX <= x + width && relY >= y && relY <= y + height) {
31261
+ hitObject = object;
31262
+ break;
31263
+ }
31264
+ }
31265
+ if (!hitObject) return;
31266
+ this.$emit('pdf-elements:object-click', {
31267
+ docIndex,
31268
+ pageIndex,
31269
+ object: hitObject,
31270
+ event
31271
+ });
31272
+ },
31211
31273
  handleKeyDown(event) {
31212
31274
  if (event.key === 'Escape' && this.isAddingMode) {
31213
31275
  this.cancelAdding();
@@ -31655,10 +31717,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31655
31717
  });
31656
31718
  ;// ./src/components/PDFElements.vue?vue&type=script&lang=js
31657
31719
  /* harmony default export */ const components_PDFElementsvue_type_script_lang_js = (PDFElementsvue_type_script_lang_js);
31658
- ;// ./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=46de43ea&prod&scoped=true&lang=css
31720
+ ;// ./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=4b0138d1&prod&scoped=true&lang=css
31659
31721
  // extracted by mini-css-extract-plugin
31660
31722
 
31661
- ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=46de43ea&prod&scoped=true&lang=css
31723
+ ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=4b0138d1&prod&scoped=true&lang=css
31662
31724
 
31663
31725
  ;// ./src/components/PDFElements.vue
31664
31726
 
@@ -31675,7 +31737,7 @@ var PDFElements_component = normalizeComponent(
31675
31737
  staticRenderFns,
31676
31738
  false,
31677
31739
  null,
31678
- "46de43ea",
31740
+ "4b0138d1",
31679
31741
  null
31680
31742
 
31681
31743
  )