@libresign/pdf-elements 0.2.5 → 0.3.1

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.
@@ -504,6 +504,29 @@ module.exports = function (iters, kind, value) {
504
504
  };
505
505
 
506
506
 
507
+ /***/ },
508
+
509
+ /***/ 1548
510
+ (module, __unused_webpack_exports, __webpack_require__) {
511
+
512
+
513
+ var globalThis = __webpack_require__(4576);
514
+ var fails = __webpack_require__(9039);
515
+ var V8 = __webpack_require__(9519);
516
+ var ENVIRONMENT = __webpack_require__(4215);
517
+
518
+ var structuredClone = globalThis.structuredClone;
519
+
520
+ module.exports = !!structuredClone && !fails(function () {
521
+ // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation
522
+ // https://github.com/zloirock/core-js/issues/679
523
+ if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;
524
+ var buffer = new ArrayBuffer(8);
525
+ var clone = structuredClone(buffer, { transfer: [buffer] });
526
+ return buffer.byteLength !== 0 || clone.byteLength !== 8;
527
+ });
528
+
529
+
507
530
  /***/ },
508
531
 
509
532
  /***/ 1625
@@ -1020,6 +1043,30 @@ var userAgent = navigator && navigator.userAgent;
1020
1043
  module.exports = userAgent ? String(userAgent) : '';
1021
1044
 
1022
1045
 
1046
+ /***/ },
1047
+
1048
+ /***/ 3238
1049
+ (module, __unused_webpack_exports, __webpack_require__) {
1050
+
1051
+
1052
+ var globalThis = __webpack_require__(4576);
1053
+ var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);
1054
+ var arrayBufferByteLength = __webpack_require__(7394);
1055
+
1056
+ var DataView = globalThis.DataView;
1057
+
1058
+ module.exports = function (O) {
1059
+ if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;
1060
+ try {
1061
+ // eslint-disable-next-line no-new -- thrower
1062
+ new DataView(O);
1063
+ return false;
1064
+ } catch (error) {
1065
+ return true;
1066
+ }
1067
+ };
1068
+
1069
+
1023
1070
  /***/ },
1024
1071
 
1025
1072
  /***/ 3392
@@ -1221,6 +1268,34 @@ module.exports = function (it) {
1221
1268
  };
1222
1269
 
1223
1270
 
1271
+ /***/ },
1272
+
1273
+ /***/ 4215
1274
+ (module, __unused_webpack_exports, __webpack_require__) {
1275
+
1276
+
1277
+ /* global Bun, Deno -- detection */
1278
+ var globalThis = __webpack_require__(4576);
1279
+ var userAgent = __webpack_require__(2839);
1280
+ var classof = __webpack_require__(2195);
1281
+
1282
+ var userAgentStartsWith = function (string) {
1283
+ return userAgent.slice(0, string.length) === string;
1284
+ };
1285
+
1286
+ module.exports = (function () {
1287
+ if (userAgentStartsWith('Bun/')) return 'BUN';
1288
+ if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';
1289
+ if (userAgentStartsWith('Deno/')) return 'DENO';
1290
+ if (userAgentStartsWith('Node.js/')) return 'NODE';
1291
+ if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';
1292
+ if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';
1293
+ if (classof(globalThis.process) === 'process') return 'NODE';
1294
+ if (globalThis.window && globalThis.document) return 'BROWSER';
1295
+ return 'REST';
1296
+ })();
1297
+
1298
+
1224
1299
  /***/ },
1225
1300
 
1226
1301
  /***/ 4270
@@ -1260,6 +1335,50 @@ module.exports = Array.isArray || function isArray(argument) {
1260
1335
  };
1261
1336
 
1262
1337
 
1338
+ /***/ },
1339
+
1340
+ /***/ 4483
1341
+ (module, __unused_webpack_exports, __webpack_require__) {
1342
+
1343
+
1344
+ var globalThis = __webpack_require__(4576);
1345
+ var getBuiltInNodeModule = __webpack_require__(9429);
1346
+ var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);
1347
+
1348
+ var structuredClone = globalThis.structuredClone;
1349
+ var $ArrayBuffer = globalThis.ArrayBuffer;
1350
+ var $MessageChannel = globalThis.MessageChannel;
1351
+ var detach = false;
1352
+ var WorkerThreads, channel, buffer, $detach;
1353
+
1354
+ if (PROPER_STRUCTURED_CLONE_TRANSFER) {
1355
+ detach = function (transferable) {
1356
+ structuredClone(transferable, { transfer: [transferable] });
1357
+ };
1358
+ } else if ($ArrayBuffer) try {
1359
+ if (!$MessageChannel) {
1360
+ WorkerThreads = getBuiltInNodeModule('worker_threads');
1361
+ if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;
1362
+ }
1363
+
1364
+ if ($MessageChannel) {
1365
+ channel = new $MessageChannel();
1366
+ buffer = new $ArrayBuffer(2);
1367
+
1368
+ $detach = function (transferable) {
1369
+ channel.port1.postMessage(null, [transferable]);
1370
+ };
1371
+
1372
+ if (buffer.byteLength === 2) {
1373
+ $detach(buffer);
1374
+ if (buffer.byteLength === 0) detach = $detach;
1375
+ }
1376
+ }
1377
+ } catch (error) { /* empty */ }
1378
+
1379
+ module.exports = detach;
1380
+
1381
+
1263
1382
  /***/ },
1264
1383
 
1265
1384
  /***/ 4495
@@ -1481,6 +1600,22 @@ module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
1481
1600
  };
1482
1601
 
1483
1602
 
1603
+ /***/ },
1604
+
1605
+ /***/ 5169
1606
+ (module, __unused_webpack_exports, __webpack_require__) {
1607
+
1608
+
1609
+ var isDetached = __webpack_require__(3238);
1610
+
1611
+ var $TypeError = TypeError;
1612
+
1613
+ module.exports = function (it) {
1614
+ if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');
1615
+ return it;
1616
+ };
1617
+
1618
+
1484
1619
  /***/ },
1485
1620
 
1486
1621
  /***/ 5397
@@ -1516,6 +1651,58 @@ module.exports = function (index, length) {
1516
1651
  };
1517
1652
 
1518
1653
 
1654
+ /***/ },
1655
+
1656
+ /***/ 5636
1657
+ (module, __unused_webpack_exports, __webpack_require__) {
1658
+
1659
+
1660
+ var globalThis = __webpack_require__(4576);
1661
+ var uncurryThis = __webpack_require__(9504);
1662
+ var uncurryThisAccessor = __webpack_require__(6706);
1663
+ var toIndex = __webpack_require__(7696);
1664
+ var notDetached = __webpack_require__(5169);
1665
+ var arrayBufferByteLength = __webpack_require__(7394);
1666
+ var detachTransferable = __webpack_require__(4483);
1667
+ var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);
1668
+
1669
+ var structuredClone = globalThis.structuredClone;
1670
+ var ArrayBuffer = globalThis.ArrayBuffer;
1671
+ var DataView = globalThis.DataView;
1672
+ var min = Math.min;
1673
+ var ArrayBufferPrototype = ArrayBuffer.prototype;
1674
+ var DataViewPrototype = DataView.prototype;
1675
+ var slice = uncurryThis(ArrayBufferPrototype.slice);
1676
+ var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');
1677
+ var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');
1678
+ var getInt8 = uncurryThis(DataViewPrototype.getInt8);
1679
+ var setInt8 = uncurryThis(DataViewPrototype.setInt8);
1680
+
1681
+ module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {
1682
+ var byteLength = arrayBufferByteLength(arrayBuffer);
1683
+ var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);
1684
+ var fixedLength = !isResizable || !isResizable(arrayBuffer);
1685
+ var newBuffer;
1686
+ notDetached(arrayBuffer);
1687
+ if (PROPER_STRUCTURED_CLONE_TRANSFER) {
1688
+ arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
1689
+ if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;
1690
+ }
1691
+ if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
1692
+ newBuffer = slice(arrayBuffer, 0, newByteLength);
1693
+ } else {
1694
+ var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;
1695
+ newBuffer = new ArrayBuffer(newByteLength, options);
1696
+ var a = new DataView(arrayBuffer);
1697
+ var b = new DataView(newBuffer);
1698
+ var copyLength = min(newByteLength, byteLength);
1699
+ for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));
1700
+ }
1701
+ if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);
1702
+ return newBuffer;
1703
+ };
1704
+
1705
+
1519
1706
  /***/ },
1520
1707
 
1521
1708
  /***/ 5745
@@ -1602,6 +1789,17 @@ module.exports = function (key) {
1602
1789
  };
1603
1790
 
1604
1791
 
1792
+ /***/ },
1793
+
1794
+ /***/ 6193
1795
+ (module, __unused_webpack_exports, __webpack_require__) {
1796
+
1797
+
1798
+ var ENVIRONMENT = __webpack_require__(4215);
1799
+
1800
+ module.exports = ENVIRONMENT === 'NODE';
1801
+
1802
+
1605
1803
  /***/ },
1606
1804
 
1607
1805
  /***/ 6198
@@ -1730,6 +1928,30 @@ module.exports = function (options, source) {
1730
1928
  };
1731
1929
 
1732
1930
 
1931
+ /***/ },
1932
+
1933
+ /***/ 6573
1934
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
1935
+
1936
+
1937
+ var DESCRIPTORS = __webpack_require__(3724);
1938
+ var defineBuiltInAccessor = __webpack_require__(2106);
1939
+ var isDetached = __webpack_require__(3238);
1940
+
1941
+ var ArrayBufferPrototype = ArrayBuffer.prototype;
1942
+
1943
+ // `ArrayBuffer.prototype.detached` getter
1944
+ // https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached
1945
+ if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {
1946
+ defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {
1947
+ configurable: true,
1948
+ get: function detached() {
1949
+ return isDetached(this);
1950
+ }
1951
+ });
1952
+ }
1953
+
1954
+
1733
1955
  /***/ },
1734
1956
 
1735
1957
  /***/ 6699
@@ -1748,6 +1970,23 @@ module.exports = DESCRIPTORS ? function (object, key, value) {
1748
1970
  };
1749
1971
 
1750
1972
 
1973
+ /***/ },
1974
+
1975
+ /***/ 6706
1976
+ (module, __unused_webpack_exports, __webpack_require__) {
1977
+
1978
+
1979
+ var uncurryThis = __webpack_require__(9504);
1980
+ var aCallable = __webpack_require__(9306);
1981
+
1982
+ module.exports = function (object, key, method) {
1983
+ try {
1984
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
1985
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
1986
+ } catch (error) { /* empty */ }
1987
+ };
1988
+
1989
+
1751
1990
  /***/ },
1752
1991
 
1753
1992
  /***/ 6801
@@ -1980,6 +2219,28 @@ exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDes
1980
2219
  };
1981
2220
 
1982
2221
 
2222
+ /***/ },
2223
+
2224
+ /***/ 7394
2225
+ (module, __unused_webpack_exports, __webpack_require__) {
2226
+
2227
+
2228
+ var globalThis = __webpack_require__(4576);
2229
+ var uncurryThisAccessor = __webpack_require__(6706);
2230
+ var classof = __webpack_require__(2195);
2231
+
2232
+ var ArrayBuffer = globalThis.ArrayBuffer;
2233
+ var TypeError = globalThis.TypeError;
2234
+
2235
+ // Includes
2236
+ // - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
2237
+ // - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
2238
+ module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {
2239
+ if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');
2240
+ return O.byteLength;
2241
+ };
2242
+
2243
+
1983
2244
  /***/ },
1984
2245
 
1985
2246
  /***/ 7476
@@ -2114,6 +2375,28 @@ module.exports = {
2114
2375
  };
2115
2376
 
2116
2377
 
2378
+ /***/ },
2379
+
2380
+ /***/ 7696
2381
+ (module, __unused_webpack_exports, __webpack_require__) {
2382
+
2383
+
2384
+ var toIntegerOrInfinity = __webpack_require__(1291);
2385
+ var toLength = __webpack_require__(8014);
2386
+
2387
+ var $RangeError = RangeError;
2388
+
2389
+ // `ToIndex` abstract operation
2390
+ // https://tc39.es/ecma262/#sec-toindex
2391
+ module.exports = function (it) {
2392
+ if (it === undefined) return 0;
2393
+ var number = toIntegerOrInfinity(it);
2394
+ var length = toLength(number);
2395
+ if (number !== length) throw new $RangeError('Wrong length or index');
2396
+ return length;
2397
+ };
2398
+
2399
+
2117
2400
  /***/ },
2118
2401
 
2119
2402
  /***/ 7740
@@ -2174,6 +2457,34 @@ module.exports = function (namespace, method) {
2174
2457
  };
2175
2458
 
2176
2459
 
2460
+ /***/ },
2461
+
2462
+ /***/ 7811
2463
+ (module) {
2464
+
2465
+
2466
+ // eslint-disable-next-line es/no-typed-arrays -- safe
2467
+ module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
2468
+
2469
+
2470
+ /***/ },
2471
+
2472
+ /***/ 7936
2473
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
2474
+
2475
+
2476
+ var $ = __webpack_require__(6518);
2477
+ var $transfer = __webpack_require__(5636);
2478
+
2479
+ // `ArrayBuffer.prototype.transferToFixedLength` method
2480
+ // https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfertofixedlength
2481
+ if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
2482
+ transferToFixedLength: function transferToFixedLength() {
2483
+ return $transfer(this, arguments.length ? arguments[0] : undefined, false);
2484
+ }
2485
+ });
2486
+
2487
+
2177
2488
  /***/ },
2178
2489
 
2179
2490
  /***/ 8014
@@ -2192,6 +2503,24 @@ module.exports = function (argument) {
2192
2503
  };
2193
2504
 
2194
2505
 
2506
+ /***/ },
2507
+
2508
+ /***/ 8100
2509
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
2510
+
2511
+
2512
+ var $ = __webpack_require__(6518);
2513
+ var $transfer = __webpack_require__(5636);
2514
+
2515
+ // `ArrayBuffer.prototype.transfer` method
2516
+ // https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfer
2517
+ if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
2518
+ transfer: function transfer() {
2519
+ return $transfer(this, arguments.length ? arguments[0] : undefined, true);
2520
+ }
2521
+ });
2522
+
2523
+
2195
2524
  /***/ },
2196
2525
 
2197
2526
  /***/ 8111
@@ -2487,6 +2816,28 @@ module.exports = function (argument) {
2487
2816
  };
2488
2817
 
2489
2818
 
2819
+ /***/ },
2820
+
2821
+ /***/ 9429
2822
+ (module, __unused_webpack_exports, __webpack_require__) {
2823
+
2824
+
2825
+ var globalThis = __webpack_require__(4576);
2826
+ var IS_NODE = __webpack_require__(6193);
2827
+
2828
+ module.exports = function (name) {
2829
+ if (IS_NODE) {
2830
+ try {
2831
+ return globalThis.process.getBuiltinModule(name);
2832
+ } catch (error) { /* empty */ }
2833
+ try {
2834
+ // eslint-disable-next-line no-new-func -- safe
2835
+ return Function('return require("' + name + '")')();
2836
+ } catch (error) { /* empty */ }
2837
+ }
2838
+ };
2839
+
2840
+
2490
2841
  /***/ },
2491
2842
 
2492
2843
  /***/ 9433
@@ -2821,7 +3172,7 @@ if (typeof window !== 'undefined') {
2821
3172
  // Indicate to webpack that this file can be concatenated
2822
3173
  /* harmony default export */ const setPublicPath = (null);
2823
3174
 
2824
- ;// ./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=ec3a4e5e&scoped=true
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
2825
3176
  var render = function render() {
2826
3177
  var _vm = this,
2827
3178
  _c = _vm._self._c;
@@ -2902,6 +3253,7 @@ var render = function render() {
2902
3253
  "read-only": _vm.readOnly,
2903
3254
  "on-update": payload => _vm.updateObject(docIndex, object.id, payload),
2904
3255
  "on-delete": () => _vm.deleteObject(docIndex, object.id),
3256
+ "on-duplicate": () => _vm.duplicateObject(docIndex, object.id),
2905
3257
  "on-drag-start": (mouseX, mouseY, pointerOffset, dragShift) => _vm.startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift),
2906
3258
  "on-drag-move": _vm.updateDraggingPosition,
2907
3259
  "on-drag-end": _vm.stopDraggingElement,
@@ -2912,7 +3264,8 @@ var render = function render() {
2912
3264
  "global-drag-doc-index": _vm.draggingDocIndex,
2913
3265
  "global-drag-page-index": _vm.draggingPageIndex,
2914
3266
  "show-selection-ui": _vm.showSelectionHandles && !_vm.hideSelectionUI && object.resizable !== false,
2915
- "show-default-actions": _vm.showElementActions && !_vm.hideSelectionUI
3267
+ "show-default-actions": _vm.showElementActions && !_vm.hideSelectionUI,
3268
+ "ignore-click-outside-selectors": _vm.ignoreClickOutsideSelectors
2916
3269
  },
2917
3270
  scopedSlots: _vm._u([{
2918
3271
  key: "default",
@@ -2934,7 +3287,8 @@ var render = function render() {
2934
3287
  fn: function (slotProps) {
2935
3288
  return [_vm._t("actions", null, {
2936
3289
  "object": slotProps.object,
2937
- "onDelete": slotProps.onDelete
3290
+ "onDelete": slotProps.onDelete,
3291
+ "onDuplicate": slotProps.onDuplicate
2938
3292
  })];
2939
3293
  }
2940
3294
  }], null, true)
@@ -3211,8 +3565,8 @@ var component = normalizeComponent(
3211
3565
  )
3212
3566
 
3213
3567
  /* harmony default export */ const PDFPage = (component.exports);
3214
- ;// ./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/DraggableElement.vue?vue&type=template&id=1fb13404&scoped=true
3215
- var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function render() {
3568
+ ;// ./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/DraggableElement.vue?vue&type=template&id=9f1fd9e4&scoped=true
3569
+ var DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_render = function render() {
3216
3570
  var _vm = this,
3217
3571
  _c = _vm._self._c;
3218
3572
  return _c('div', {
@@ -3222,6 +3576,29 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3222
3576
  style: _vm.toolbarStyle
3223
3577
  }, [_vm._t("actions", function () {
3224
3578
  return [_c('button', {
3579
+ staticClass: "action-btn",
3580
+ attrs: {
3581
+ "type": "button",
3582
+ "title": "Duplicate"
3583
+ },
3584
+ on: {
3585
+ "click": function ($event) {
3586
+ $event.stopPropagation();
3587
+ return _vm.onDuplicate.apply(null, arguments);
3588
+ }
3589
+ }
3590
+ }, [_c('svg', {
3591
+ attrs: {
3592
+ "width": "16",
3593
+ "height": "16",
3594
+ "viewBox": "0 0 24 24",
3595
+ "fill": "currentColor"
3596
+ }
3597
+ }, [_c('path', {
3598
+ attrs: {
3599
+ "d": "M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H10V7h9v14z"
3600
+ }
3601
+ })])]), _c('button', {
3225
3602
  staticClass: "action-btn",
3226
3603
  attrs: {
3227
3604
  "type": "button",
@@ -3247,7 +3624,8 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3247
3624
  })])])];
3248
3625
  }, {
3249
3626
  "object": _vm.object,
3250
- "onDelete": _vm.onDelete
3627
+ "onDelete": _vm.onDelete,
3628
+ "onDuplicate": _vm.onDuplicate
3251
3629
  })], 2) : _vm._e(), _c('div', {
3252
3630
  staticClass: "draggable-element",
3253
3631
  class: {
@@ -3292,7 +3670,7 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3292
3670
  });
3293
3671
  }) : _vm._e()], 2)]);
3294
3672
  };
3295
- var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns = [];
3673
+ var DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_staticRenderFns = [];
3296
3674
 
3297
3675
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/DraggableElement.vue?vue&type=script&lang=js
3298
3676
  /* harmony default export */ const DraggableElementvue_type_script_lang_js = ({
@@ -3322,6 +3700,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3322
3700
  type: Function,
3323
3701
  default: () => {}
3324
3702
  },
3703
+ onDuplicate: {
3704
+ type: Function,
3705
+ default: () => {}
3706
+ },
3325
3707
  onDragStart: {
3326
3708
  type: Function,
3327
3709
  default: () => {}
@@ -3372,6 +3754,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3372
3754
  readOnly: {
3373
3755
  type: Boolean,
3374
3756
  default: false
3757
+ },
3758
+ ignoreClickOutsideSelectors: {
3759
+ type: Array,
3760
+ default: () => []
3375
3761
  }
3376
3762
  },
3377
3763
  data() {
@@ -3488,6 +3874,12 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3488
3874
  this.startDrag(event);
3489
3875
  },
3490
3876
  handleClickOutside(event) {
3877
+ const selectors = Array.isArray(this.ignoreClickOutsideSelectors) ? this.ignoreClickOutsideSelectors : [];
3878
+ for (const selector of selectors) {
3879
+ if (selector && event?.target?.closest?.(selector)) {
3880
+ return;
3881
+ }
3882
+ }
3491
3883
  if (this.$el && !this.$el.contains(event.target)) {
3492
3884
  this.isSelected = false;
3493
3885
  }
@@ -3702,10 +4094,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3702
4094
  });
3703
4095
  ;// ./src/components/DraggableElement.vue?vue&type=script&lang=js
3704
4096
  /* harmony default export */ const components_DraggableElementvue_type_script_lang_js = (DraggableElementvue_type_script_lang_js);
3705
- ;// ./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/DraggableElement.vue?vue&type=style&index=0&id=1fb13404&prod&scoped=true&lang=css
4097
+ ;// ./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/DraggableElement.vue?vue&type=style&index=0&id=9f1fd9e4&prod&scoped=true&lang=css
3706
4098
  // extracted by mini-css-extract-plugin
3707
4099
 
3708
- ;// ./src/components/DraggableElement.vue?vue&type=style&index=0&id=1fb13404&prod&scoped=true&lang=css
4100
+ ;// ./src/components/DraggableElement.vue?vue&type=style&index=0&id=9f1fd9e4&prod&scoped=true&lang=css
3709
4101
 
3710
4102
  ;// ./src/components/DraggableElement.vue
3711
4103
 
@@ -3718,16 +4110,22 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3718
4110
 
3719
4111
  var DraggableElement_component = normalizeComponent(
3720
4112
  components_DraggableElementvue_type_script_lang_js,
3721
- DraggableElementvue_type_template_id_1fb13404_scoped_true_render,
3722
- DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns,
4113
+ DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_render,
4114
+ DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_staticRenderFns,
3723
4115
  false,
3724
4116
  null,
3725
- "1fb13404",
4117
+ "9f1fd9e4",
3726
4118
  null
3727
4119
 
3728
4120
  )
3729
4121
 
3730
4122
  /* harmony default export */ const DraggableElement = (DraggableElement_component.exports);
4123
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js
4124
+ var es_array_buffer_detached = __webpack_require__(6573);
4125
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js
4126
+ var es_array_buffer_transfer = __webpack_require__(8100);
4127
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
4128
+ var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);
3731
4129
  ;// ./node_modules/pdfjs-dist/build/pdf.mjs
3732
4130
  /**
3733
4131
  * @licstart The following is the entire license notice for the
@@ -30123,12 +30521,24 @@ globalThis.pdfjsLib = {
30123
30521
  ;// ./node_modules/pdfjs-dist/build/pdf.worker.min.mjs
30124
30522
  const pdf_worker_min_namespaceObject = __webpack_require__.p + "pdf.worker.min.mjs";
30125
30523
  ;// ./src/utils/asyncReader.js
30524
+
30525
+
30526
+
30126
30527
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
30127
30528
  // SPDX-License-Identifier: AGPL-3.0-or-later
30128
30529
 
30129
30530
 
30130
30531
 
30131
30532
  pdf_GlobalWorkerOptions.workerSrc = pdf_worker_min_namespaceObject;
30533
+ let sharedWorker = null;
30534
+ function getSharedWorker() {
30535
+ if (!sharedWorker) {
30536
+ sharedWorker = new PDFWorker({
30537
+ name: 'libresign-pdf-worker'
30538
+ });
30539
+ }
30540
+ return sharedWorker;
30541
+ }
30132
30542
  function setWorkerPath(path) {
30133
30543
  GlobalWorkerOptions.workerSrc = path;
30134
30544
  }
@@ -30141,7 +30551,26 @@ function readAsArrayBuffer(file) {
30141
30551
  });
30142
30552
  }
30143
30553
  function readAsPDF(file) {
30144
- return getDocument(file).promise;
30554
+ const worker = getSharedWorker();
30555
+ const isArrayBuffer = file instanceof ArrayBuffer;
30556
+ const isView = ArrayBuffer.isView(file);
30557
+ const isBlob = typeof Blob !== 'undefined' && file instanceof Blob;
30558
+ if (file && typeof file === 'object' && !isArrayBuffer && !isView && !isBlob) {
30559
+ return getDocument({
30560
+ ...file,
30561
+ worker
30562
+ }).promise;
30563
+ }
30564
+ if (typeof file === 'string') {
30565
+ return getDocument({
30566
+ url: file,
30567
+ worker
30568
+ }).promise;
30569
+ }
30570
+ return getDocument({
30571
+ data: file,
30572
+ worker
30573
+ }).promise;
30145
30574
  }
30146
30575
  ;// ./src/utils/geometry.js
30147
30576
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
@@ -30307,6 +30736,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
30307
30736
  type: Boolean,
30308
30737
  default: false
30309
30738
  },
30739
+ ignoreClickOutsideSelectors: {
30740
+ type: Array,
30741
+ default: () => []
30742
+ },
30310
30743
  pageCountFormat: {
30311
30744
  type: String,
30312
30745
  default: '{currentPage} of {totalPages}'
@@ -31037,6 +31470,56 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31037
31470
  });
31038
31471
  }
31039
31472
  },
31473
+ duplicateObject(docIndex, objectId) {
31474
+ if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return;
31475
+ const doc = this.pdfDocuments[docIndex];
31476
+ const cacheKey = `${docIndex}-${objectId}`;
31477
+ let pageIndex = this.objectIndexCache[cacheKey];
31478
+ if (pageIndex === undefined) {
31479
+ pageIndex = findObjectPageIndex(doc, objectId);
31480
+ if (pageIndex !== undefined) {
31481
+ this.objectIndexCache[cacheKey] = pageIndex;
31482
+ }
31483
+ }
31484
+ if (pageIndex === undefined) return;
31485
+ const sourceObject = doc.allObjects[pageIndex]?.find(o => o.id === objectId);
31486
+ if (!sourceObject) return;
31487
+ const {
31488
+ width: pageWidth,
31489
+ height: pageHeight
31490
+ } = this.getPageSize(docIndex, pageIndex);
31491
+ const offset = 12;
31492
+ const {
31493
+ x,
31494
+ y
31495
+ } = clampPosition(sourceObject.x + offset, sourceObject.y + offset, sourceObject.width, sourceObject.height, pageWidth, pageHeight);
31496
+ let duplicatedSigner = sourceObject.signer;
31497
+ if (duplicatedSigner?.element && Object.prototype.hasOwnProperty.call(duplicatedSigner.element, 'elementId')) {
31498
+ duplicatedSigner = {
31499
+ ...duplicatedSigner,
31500
+ element: {
31501
+ ...duplicatedSigner.element
31502
+ }
31503
+ };
31504
+ delete duplicatedSigner.element.elementId;
31505
+ }
31506
+ const duplicatedObject = {
31507
+ ...sourceObject,
31508
+ id: this.generateObjectId(),
31509
+ x,
31510
+ y,
31511
+ signer: duplicatedSigner
31512
+ };
31513
+ doc.allObjects[pageIndex].push(duplicatedObject);
31514
+ this.objectIndexCache[`${docIndex}-${duplicatedObject.id}`] = pageIndex;
31515
+ this.$nextTick(() => {
31516
+ const refKey = `draggable${docIndex}-${pageIndex}-${duplicatedObject.id}`;
31517
+ const draggableRefs = this.$refs[refKey];
31518
+ if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {
31519
+ draggableRefs[0].isSelected = true;
31520
+ }
31521
+ });
31522
+ },
31040
31523
  checkAndMoveObjectPage(docIndex, objectId, mouseX, mouseY) {
31041
31524
  if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return undefined;
31042
31525
  const doc = this.pdfDocuments[docIndex];
@@ -31172,10 +31655,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31172
31655
  });
31173
31656
  ;// ./src/components/PDFElements.vue?vue&type=script&lang=js
31174
31657
  /* harmony default export */ const components_PDFElementsvue_type_script_lang_js = (PDFElementsvue_type_script_lang_js);
31175
- ;// ./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=ec3a4e5e&prod&scoped=true&lang=css
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
31176
31659
  // extracted by mini-css-extract-plugin
31177
31660
 
31178
- ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=ec3a4e5e&prod&scoped=true&lang=css
31661
+ ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=46de43ea&prod&scoped=true&lang=css
31179
31662
 
31180
31663
  ;// ./src/components/PDFElements.vue
31181
31664
 
@@ -31192,7 +31675,7 @@ var PDFElements_component = normalizeComponent(
31192
31675
  staticRenderFns,
31193
31676
  false,
31194
31677
  null,
31195
- "ec3a4e5e",
31678
+ "46de43ea",
31196
31679
  null
31197
31680
 
31198
31681
  )