@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.
@@ -494,6 +494,29 @@ module.exports = function (iters, kind, value) {
494
494
  };
495
495
 
496
496
 
497
+ /***/ },
498
+
499
+ /***/ 1548
500
+ (module, __unused_webpack_exports, __webpack_require__) {
501
+
502
+
503
+ var globalThis = __webpack_require__(4576);
504
+ var fails = __webpack_require__(9039);
505
+ var V8 = __webpack_require__(9519);
506
+ var ENVIRONMENT = __webpack_require__(4215);
507
+
508
+ var structuredClone = globalThis.structuredClone;
509
+
510
+ module.exports = !!structuredClone && !fails(function () {
511
+ // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation
512
+ // https://github.com/zloirock/core-js/issues/679
513
+ if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;
514
+ var buffer = new ArrayBuffer(8);
515
+ var clone = structuredClone(buffer, { transfer: [buffer] });
516
+ return buffer.byteLength !== 0 || clone.byteLength !== 8;
517
+ });
518
+
519
+
497
520
  /***/ },
498
521
 
499
522
  /***/ 1625
@@ -1010,6 +1033,30 @@ var userAgent = navigator && navigator.userAgent;
1010
1033
  module.exports = userAgent ? String(userAgent) : '';
1011
1034
 
1012
1035
 
1036
+ /***/ },
1037
+
1038
+ /***/ 3238
1039
+ (module, __unused_webpack_exports, __webpack_require__) {
1040
+
1041
+
1042
+ var globalThis = __webpack_require__(4576);
1043
+ var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);
1044
+ var arrayBufferByteLength = __webpack_require__(7394);
1045
+
1046
+ var DataView = globalThis.DataView;
1047
+
1048
+ module.exports = function (O) {
1049
+ if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;
1050
+ try {
1051
+ // eslint-disable-next-line no-new -- thrower
1052
+ new DataView(O);
1053
+ return false;
1054
+ } catch (error) {
1055
+ return true;
1056
+ }
1057
+ };
1058
+
1059
+
1013
1060
  /***/ },
1014
1061
 
1015
1062
  /***/ 3392
@@ -1211,6 +1258,34 @@ module.exports = function (it) {
1211
1258
  };
1212
1259
 
1213
1260
 
1261
+ /***/ },
1262
+
1263
+ /***/ 4215
1264
+ (module, __unused_webpack_exports, __webpack_require__) {
1265
+
1266
+
1267
+ /* global Bun, Deno -- detection */
1268
+ var globalThis = __webpack_require__(4576);
1269
+ var userAgent = __webpack_require__(2839);
1270
+ var classof = __webpack_require__(2195);
1271
+
1272
+ var userAgentStartsWith = function (string) {
1273
+ return userAgent.slice(0, string.length) === string;
1274
+ };
1275
+
1276
+ module.exports = (function () {
1277
+ if (userAgentStartsWith('Bun/')) return 'BUN';
1278
+ if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';
1279
+ if (userAgentStartsWith('Deno/')) return 'DENO';
1280
+ if (userAgentStartsWith('Node.js/')) return 'NODE';
1281
+ if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';
1282
+ if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';
1283
+ if (classof(globalThis.process) === 'process') return 'NODE';
1284
+ if (globalThis.window && globalThis.document) return 'BROWSER';
1285
+ return 'REST';
1286
+ })();
1287
+
1288
+
1214
1289
  /***/ },
1215
1290
 
1216
1291
  /***/ 4270
@@ -1250,6 +1325,50 @@ module.exports = Array.isArray || function isArray(argument) {
1250
1325
  };
1251
1326
 
1252
1327
 
1328
+ /***/ },
1329
+
1330
+ /***/ 4483
1331
+ (module, __unused_webpack_exports, __webpack_require__) {
1332
+
1333
+
1334
+ var globalThis = __webpack_require__(4576);
1335
+ var getBuiltInNodeModule = __webpack_require__(9429);
1336
+ var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);
1337
+
1338
+ var structuredClone = globalThis.structuredClone;
1339
+ var $ArrayBuffer = globalThis.ArrayBuffer;
1340
+ var $MessageChannel = globalThis.MessageChannel;
1341
+ var detach = false;
1342
+ var WorkerThreads, channel, buffer, $detach;
1343
+
1344
+ if (PROPER_STRUCTURED_CLONE_TRANSFER) {
1345
+ detach = function (transferable) {
1346
+ structuredClone(transferable, { transfer: [transferable] });
1347
+ };
1348
+ } else if ($ArrayBuffer) try {
1349
+ if (!$MessageChannel) {
1350
+ WorkerThreads = getBuiltInNodeModule('worker_threads');
1351
+ if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;
1352
+ }
1353
+
1354
+ if ($MessageChannel) {
1355
+ channel = new $MessageChannel();
1356
+ buffer = new $ArrayBuffer(2);
1357
+
1358
+ $detach = function (transferable) {
1359
+ channel.port1.postMessage(null, [transferable]);
1360
+ };
1361
+
1362
+ if (buffer.byteLength === 2) {
1363
+ $detach(buffer);
1364
+ if (buffer.byteLength === 0) detach = $detach;
1365
+ }
1366
+ }
1367
+ } catch (error) { /* empty */ }
1368
+
1369
+ module.exports = detach;
1370
+
1371
+
1253
1372
  /***/ },
1254
1373
 
1255
1374
  /***/ 4495
@@ -1471,6 +1590,22 @@ module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
1471
1590
  };
1472
1591
 
1473
1592
 
1593
+ /***/ },
1594
+
1595
+ /***/ 5169
1596
+ (module, __unused_webpack_exports, __webpack_require__) {
1597
+
1598
+
1599
+ var isDetached = __webpack_require__(3238);
1600
+
1601
+ var $TypeError = TypeError;
1602
+
1603
+ module.exports = function (it) {
1604
+ if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');
1605
+ return it;
1606
+ };
1607
+
1608
+
1474
1609
  /***/ },
1475
1610
 
1476
1611
  /***/ 5397
@@ -1506,6 +1641,58 @@ module.exports = function (index, length) {
1506
1641
  };
1507
1642
 
1508
1643
 
1644
+ /***/ },
1645
+
1646
+ /***/ 5636
1647
+ (module, __unused_webpack_exports, __webpack_require__) {
1648
+
1649
+
1650
+ var globalThis = __webpack_require__(4576);
1651
+ var uncurryThis = __webpack_require__(9504);
1652
+ var uncurryThisAccessor = __webpack_require__(6706);
1653
+ var toIndex = __webpack_require__(7696);
1654
+ var notDetached = __webpack_require__(5169);
1655
+ var arrayBufferByteLength = __webpack_require__(7394);
1656
+ var detachTransferable = __webpack_require__(4483);
1657
+ var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);
1658
+
1659
+ var structuredClone = globalThis.structuredClone;
1660
+ var ArrayBuffer = globalThis.ArrayBuffer;
1661
+ var DataView = globalThis.DataView;
1662
+ var min = Math.min;
1663
+ var ArrayBufferPrototype = ArrayBuffer.prototype;
1664
+ var DataViewPrototype = DataView.prototype;
1665
+ var slice = uncurryThis(ArrayBufferPrototype.slice);
1666
+ var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');
1667
+ var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');
1668
+ var getInt8 = uncurryThis(DataViewPrototype.getInt8);
1669
+ var setInt8 = uncurryThis(DataViewPrototype.setInt8);
1670
+
1671
+ module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {
1672
+ var byteLength = arrayBufferByteLength(arrayBuffer);
1673
+ var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);
1674
+ var fixedLength = !isResizable || !isResizable(arrayBuffer);
1675
+ var newBuffer;
1676
+ notDetached(arrayBuffer);
1677
+ if (PROPER_STRUCTURED_CLONE_TRANSFER) {
1678
+ arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
1679
+ if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;
1680
+ }
1681
+ if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
1682
+ newBuffer = slice(arrayBuffer, 0, newByteLength);
1683
+ } else {
1684
+ var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;
1685
+ newBuffer = new ArrayBuffer(newByteLength, options);
1686
+ var a = new DataView(arrayBuffer);
1687
+ var b = new DataView(newBuffer);
1688
+ var copyLength = min(newByteLength, byteLength);
1689
+ for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));
1690
+ }
1691
+ if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);
1692
+ return newBuffer;
1693
+ };
1694
+
1695
+
1509
1696
  /***/ },
1510
1697
 
1511
1698
  /***/ 5745
@@ -1592,6 +1779,17 @@ module.exports = function (key) {
1592
1779
  };
1593
1780
 
1594
1781
 
1782
+ /***/ },
1783
+
1784
+ /***/ 6193
1785
+ (module, __unused_webpack_exports, __webpack_require__) {
1786
+
1787
+
1788
+ var ENVIRONMENT = __webpack_require__(4215);
1789
+
1790
+ module.exports = ENVIRONMENT === 'NODE';
1791
+
1792
+
1595
1793
  /***/ },
1596
1794
 
1597
1795
  /***/ 6198
@@ -1720,6 +1918,30 @@ module.exports = function (options, source) {
1720
1918
  };
1721
1919
 
1722
1920
 
1921
+ /***/ },
1922
+
1923
+ /***/ 6573
1924
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
1925
+
1926
+
1927
+ var DESCRIPTORS = __webpack_require__(3724);
1928
+ var defineBuiltInAccessor = __webpack_require__(2106);
1929
+ var isDetached = __webpack_require__(3238);
1930
+
1931
+ var ArrayBufferPrototype = ArrayBuffer.prototype;
1932
+
1933
+ // `ArrayBuffer.prototype.detached` getter
1934
+ // https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached
1935
+ if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {
1936
+ defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {
1937
+ configurable: true,
1938
+ get: function detached() {
1939
+ return isDetached(this);
1940
+ }
1941
+ });
1942
+ }
1943
+
1944
+
1723
1945
  /***/ },
1724
1946
 
1725
1947
  /***/ 6699
@@ -1738,6 +1960,23 @@ module.exports = DESCRIPTORS ? function (object, key, value) {
1738
1960
  };
1739
1961
 
1740
1962
 
1963
+ /***/ },
1964
+
1965
+ /***/ 6706
1966
+ (module, __unused_webpack_exports, __webpack_require__) {
1967
+
1968
+
1969
+ var uncurryThis = __webpack_require__(9504);
1970
+ var aCallable = __webpack_require__(9306);
1971
+
1972
+ module.exports = function (object, key, method) {
1973
+ try {
1974
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
1975
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
1976
+ } catch (error) { /* empty */ }
1977
+ };
1978
+
1979
+
1741
1980
  /***/ },
1742
1981
 
1743
1982
  /***/ 6801
@@ -1970,6 +2209,28 @@ exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDes
1970
2209
  };
1971
2210
 
1972
2211
 
2212
+ /***/ },
2213
+
2214
+ /***/ 7394
2215
+ (module, __unused_webpack_exports, __webpack_require__) {
2216
+
2217
+
2218
+ var globalThis = __webpack_require__(4576);
2219
+ var uncurryThisAccessor = __webpack_require__(6706);
2220
+ var classof = __webpack_require__(2195);
2221
+
2222
+ var ArrayBuffer = globalThis.ArrayBuffer;
2223
+ var TypeError = globalThis.TypeError;
2224
+
2225
+ // Includes
2226
+ // - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
2227
+ // - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
2228
+ module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {
2229
+ if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');
2230
+ return O.byteLength;
2231
+ };
2232
+
2233
+
1973
2234
  /***/ },
1974
2235
 
1975
2236
  /***/ 7476
@@ -2104,6 +2365,28 @@ module.exports = {
2104
2365
  };
2105
2366
 
2106
2367
 
2368
+ /***/ },
2369
+
2370
+ /***/ 7696
2371
+ (module, __unused_webpack_exports, __webpack_require__) {
2372
+
2373
+
2374
+ var toIntegerOrInfinity = __webpack_require__(1291);
2375
+ var toLength = __webpack_require__(8014);
2376
+
2377
+ var $RangeError = RangeError;
2378
+
2379
+ // `ToIndex` abstract operation
2380
+ // https://tc39.es/ecma262/#sec-toindex
2381
+ module.exports = function (it) {
2382
+ if (it === undefined) return 0;
2383
+ var number = toIntegerOrInfinity(it);
2384
+ var length = toLength(number);
2385
+ if (number !== length) throw new $RangeError('Wrong length or index');
2386
+ return length;
2387
+ };
2388
+
2389
+
2107
2390
  /***/ },
2108
2391
 
2109
2392
  /***/ 7740
@@ -2164,6 +2447,34 @@ module.exports = function (namespace, method) {
2164
2447
  };
2165
2448
 
2166
2449
 
2450
+ /***/ },
2451
+
2452
+ /***/ 7811
2453
+ (module) {
2454
+
2455
+
2456
+ // eslint-disable-next-line es/no-typed-arrays -- safe
2457
+ module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
2458
+
2459
+
2460
+ /***/ },
2461
+
2462
+ /***/ 7936
2463
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
2464
+
2465
+
2466
+ var $ = __webpack_require__(6518);
2467
+ var $transfer = __webpack_require__(5636);
2468
+
2469
+ // `ArrayBuffer.prototype.transferToFixedLength` method
2470
+ // https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfertofixedlength
2471
+ if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
2472
+ transferToFixedLength: function transferToFixedLength() {
2473
+ return $transfer(this, arguments.length ? arguments[0] : undefined, false);
2474
+ }
2475
+ });
2476
+
2477
+
2167
2478
  /***/ },
2168
2479
 
2169
2480
  /***/ 8014
@@ -2182,6 +2493,24 @@ module.exports = function (argument) {
2182
2493
  };
2183
2494
 
2184
2495
 
2496
+ /***/ },
2497
+
2498
+ /***/ 8100
2499
+ (__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
2500
+
2501
+
2502
+ var $ = __webpack_require__(6518);
2503
+ var $transfer = __webpack_require__(5636);
2504
+
2505
+ // `ArrayBuffer.prototype.transfer` method
2506
+ // https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfer
2507
+ if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
2508
+ transfer: function transfer() {
2509
+ return $transfer(this, arguments.length ? arguments[0] : undefined, true);
2510
+ }
2511
+ });
2512
+
2513
+
2185
2514
  /***/ },
2186
2515
 
2187
2516
  /***/ 8111
@@ -2477,6 +2806,28 @@ module.exports = function (argument) {
2477
2806
  };
2478
2807
 
2479
2808
 
2809
+ /***/ },
2810
+
2811
+ /***/ 9429
2812
+ (module, __unused_webpack_exports, __webpack_require__) {
2813
+
2814
+
2815
+ var globalThis = __webpack_require__(4576);
2816
+ var IS_NODE = __webpack_require__(6193);
2817
+
2818
+ module.exports = function (name) {
2819
+ if (IS_NODE) {
2820
+ try {
2821
+ return globalThis.process.getBuiltinModule(name);
2822
+ } catch (error) { /* empty */ }
2823
+ try {
2824
+ // eslint-disable-next-line no-new-func -- safe
2825
+ return Function('return require("' + name + '")')();
2826
+ } catch (error) { /* empty */ }
2827
+ }
2828
+ };
2829
+
2830
+
2480
2831
  /***/ },
2481
2832
 
2482
2833
  /***/ 9433
@@ -2811,7 +3162,7 @@ if (typeof window !== 'undefined') {
2811
3162
  // Indicate to webpack that this file can be concatenated
2812
3163
  /* harmony default export */ const setPublicPath = (null);
2813
3164
 
2814
- ;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
3165
+ ;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
2815
3166
  var render = function render() {
2816
3167
  var _vm = this,
2817
3168
  _c = _vm._self._c;
@@ -2892,6 +3243,7 @@ var render = function render() {
2892
3243
  "read-only": _vm.readOnly,
2893
3244
  "on-update": payload => _vm.updateObject(docIndex, object.id, payload),
2894
3245
  "on-delete": () => _vm.deleteObject(docIndex, object.id),
3246
+ "on-duplicate": () => _vm.duplicateObject(docIndex, object.id),
2895
3247
  "on-drag-start": (mouseX, mouseY, pointerOffset, dragShift) => _vm.startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift),
2896
3248
  "on-drag-move": _vm.updateDraggingPosition,
2897
3249
  "on-drag-end": _vm.stopDraggingElement,
@@ -2902,7 +3254,8 @@ var render = function render() {
2902
3254
  "global-drag-doc-index": _vm.draggingDocIndex,
2903
3255
  "global-drag-page-index": _vm.draggingPageIndex,
2904
3256
  "show-selection-ui": _vm.showSelectionHandles && !_vm.hideSelectionUI && object.resizable !== false,
2905
- "show-default-actions": _vm.showElementActions && !_vm.hideSelectionUI
3257
+ "show-default-actions": _vm.showElementActions && !_vm.hideSelectionUI,
3258
+ "ignore-click-outside-selectors": _vm.ignoreClickOutsideSelectors
2906
3259
  },
2907
3260
  scopedSlots: _vm._u([{
2908
3261
  key: "default",
@@ -2924,7 +3277,8 @@ var render = function render() {
2924
3277
  fn: function (slotProps) {
2925
3278
  return [_vm._t("actions", null, {
2926
3279
  "object": slotProps.object,
2927
- "onDelete": slotProps.onDelete
3280
+ "onDelete": slotProps.onDelete,
3281
+ "onDuplicate": slotProps.onDuplicate
2928
3282
  })];
2929
3283
  }
2930
3284
  }], null, true)
@@ -3201,8 +3555,8 @@ var component = normalizeComponent(
3201
3555
  )
3202
3556
 
3203
3557
  /* harmony default export */ const PDFPage = (component.exports);
3204
- ;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
3205
- var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function render() {
3558
+ ;// ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
3559
+ var DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_render = function render() {
3206
3560
  var _vm = this,
3207
3561
  _c = _vm._self._c;
3208
3562
  return _c('div', {
@@ -3212,6 +3566,29 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3212
3566
  style: _vm.toolbarStyle
3213
3567
  }, [_vm._t("actions", function () {
3214
3568
  return [_c('button', {
3569
+ staticClass: "action-btn",
3570
+ attrs: {
3571
+ "type": "button",
3572
+ "title": "Duplicate"
3573
+ },
3574
+ on: {
3575
+ "click": function ($event) {
3576
+ $event.stopPropagation();
3577
+ return _vm.onDuplicate.apply(null, arguments);
3578
+ }
3579
+ }
3580
+ }, [_c('svg', {
3581
+ attrs: {
3582
+ "width": "16",
3583
+ "height": "16",
3584
+ "viewBox": "0 0 24 24",
3585
+ "fill": "currentColor"
3586
+ }
3587
+ }, [_c('path', {
3588
+ attrs: {
3589
+ "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"
3590
+ }
3591
+ })])]), _c('button', {
3215
3592
  staticClass: "action-btn",
3216
3593
  attrs: {
3217
3594
  "type": "button",
@@ -3237,7 +3614,8 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3237
3614
  })])])];
3238
3615
  }, {
3239
3616
  "object": _vm.object,
3240
- "onDelete": _vm.onDelete
3617
+ "onDelete": _vm.onDelete,
3618
+ "onDuplicate": _vm.onDuplicate
3241
3619
  })], 2) : _vm._e(), _c('div', {
3242
3620
  staticClass: "draggable-element",
3243
3621
  class: {
@@ -3282,7 +3660,7 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_render = function
3282
3660
  });
3283
3661
  }) : _vm._e()], 2)]);
3284
3662
  };
3285
- var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns = [];
3663
+ var DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_staticRenderFns = [];
3286
3664
 
3287
3665
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/DraggableElement.vue?vue&type=script&lang=js
3288
3666
  /* harmony default export */ const DraggableElementvue_type_script_lang_js = ({
@@ -3312,6 +3690,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3312
3690
  type: Function,
3313
3691
  default: () => {}
3314
3692
  },
3693
+ onDuplicate: {
3694
+ type: Function,
3695
+ default: () => {}
3696
+ },
3315
3697
  onDragStart: {
3316
3698
  type: Function,
3317
3699
  default: () => {}
@@ -3362,6 +3744,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3362
3744
  readOnly: {
3363
3745
  type: Boolean,
3364
3746
  default: false
3747
+ },
3748
+ ignoreClickOutsideSelectors: {
3749
+ type: Array,
3750
+ default: () => []
3365
3751
  }
3366
3752
  },
3367
3753
  data() {
@@ -3478,6 +3864,12 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3478
3864
  this.startDrag(event);
3479
3865
  },
3480
3866
  handleClickOutside(event) {
3867
+ const selectors = Array.isArray(this.ignoreClickOutsideSelectors) ? this.ignoreClickOutsideSelectors : [];
3868
+ for (const selector of selectors) {
3869
+ if (selector && event?.target?.closest?.(selector)) {
3870
+ return;
3871
+ }
3872
+ }
3481
3873
  if (this.$el && !this.$el.contains(event.target)) {
3482
3874
  this.isSelected = false;
3483
3875
  }
@@ -3692,10 +4084,10 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3692
4084
  });
3693
4085
  ;// ./src/components/DraggableElement.vue?vue&type=script&lang=js
3694
4086
  /* harmony default export */ const components_DraggableElementvue_type_script_lang_js = (DraggableElementvue_type_script_lang_js);
3695
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
4087
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
3696
4088
  // extracted by mini-css-extract-plugin
3697
4089
 
3698
- ;// ./src/components/DraggableElement.vue?vue&type=style&index=0&id=1fb13404&prod&scoped=true&lang=css
4090
+ ;// ./src/components/DraggableElement.vue?vue&type=style&index=0&id=9f1fd9e4&prod&scoped=true&lang=css
3699
4091
 
3700
4092
  ;// ./src/components/DraggableElement.vue
3701
4093
 
@@ -3708,16 +4100,22 @@ var DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns =
3708
4100
 
3709
4101
  var DraggableElement_component = normalizeComponent(
3710
4102
  components_DraggableElementvue_type_script_lang_js,
3711
- DraggableElementvue_type_template_id_1fb13404_scoped_true_render,
3712
- DraggableElementvue_type_template_id_1fb13404_scoped_true_staticRenderFns,
4103
+ DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_render,
4104
+ DraggableElementvue_type_template_id_9f1fd9e4_scoped_true_staticRenderFns,
3713
4105
  false,
3714
4106
  null,
3715
- "1fb13404",
4107
+ "9f1fd9e4",
3716
4108
  null
3717
4109
 
3718
4110
  )
3719
4111
 
3720
4112
  /* harmony default export */ const DraggableElement = (DraggableElement_component.exports);
4113
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js
4114
+ var es_array_buffer_detached = __webpack_require__(6573);
4115
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js
4116
+ var es_array_buffer_transfer = __webpack_require__(8100);
4117
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
4118
+ var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);
3721
4119
  ;// ./node_modules/pdfjs-dist/build/pdf.mjs
3722
4120
  /**
3723
4121
  * @licstart The following is the entire license notice for the
@@ -30113,12 +30511,24 @@ globalThis.pdfjsLib = {
30113
30511
  ;// ./node_modules/pdfjs-dist/build/pdf.worker.min.mjs
30114
30512
  const pdf_worker_min_namespaceObject = __webpack_require__.p + "pdf.worker.min.mjs";
30115
30513
  ;// ./src/utils/asyncReader.js
30514
+
30515
+
30516
+
30116
30517
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
30117
30518
  // SPDX-License-Identifier: AGPL-3.0-or-later
30118
30519
 
30119
30520
 
30120
30521
 
30121
30522
  pdf_GlobalWorkerOptions.workerSrc = pdf_worker_min_namespaceObject;
30523
+ let sharedWorker = null;
30524
+ function getSharedWorker() {
30525
+ if (!sharedWorker) {
30526
+ sharedWorker = new PDFWorker({
30527
+ name: 'libresign-pdf-worker'
30528
+ });
30529
+ }
30530
+ return sharedWorker;
30531
+ }
30122
30532
  function setWorkerPath(path) {
30123
30533
  GlobalWorkerOptions.workerSrc = path;
30124
30534
  }
@@ -30131,7 +30541,26 @@ function readAsArrayBuffer(file) {
30131
30541
  });
30132
30542
  }
30133
30543
  function readAsPDF(file) {
30134
- return getDocument(file).promise;
30544
+ const worker = getSharedWorker();
30545
+ const isArrayBuffer = file instanceof ArrayBuffer;
30546
+ const isView = ArrayBuffer.isView(file);
30547
+ const isBlob = typeof Blob !== 'undefined' && file instanceof Blob;
30548
+ if (file && typeof file === 'object' && !isArrayBuffer && !isView && !isBlob) {
30549
+ return getDocument({
30550
+ ...file,
30551
+ worker
30552
+ }).promise;
30553
+ }
30554
+ if (typeof file === 'string') {
30555
+ return getDocument({
30556
+ url: file,
30557
+ worker
30558
+ }).promise;
30559
+ }
30560
+ return getDocument({
30561
+ data: file,
30562
+ worker
30563
+ }).promise;
30135
30564
  }
30136
30565
  ;// ./src/utils/geometry.js
30137
30566
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
@@ -30297,6 +30726,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
30297
30726
  type: Boolean,
30298
30727
  default: false
30299
30728
  },
30729
+ ignoreClickOutsideSelectors: {
30730
+ type: Array,
30731
+ default: () => []
30732
+ },
30300
30733
  pageCountFormat: {
30301
30734
  type: String,
30302
30735
  default: '{currentPage} of {totalPages}'
@@ -31027,6 +31460,56 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31027
31460
  });
31028
31461
  }
31029
31462
  },
31463
+ duplicateObject(docIndex, objectId) {
31464
+ if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return;
31465
+ const doc = this.pdfDocuments[docIndex];
31466
+ const cacheKey = `${docIndex}-${objectId}`;
31467
+ let pageIndex = this.objectIndexCache[cacheKey];
31468
+ if (pageIndex === undefined) {
31469
+ pageIndex = findObjectPageIndex(doc, objectId);
31470
+ if (pageIndex !== undefined) {
31471
+ this.objectIndexCache[cacheKey] = pageIndex;
31472
+ }
31473
+ }
31474
+ if (pageIndex === undefined) return;
31475
+ const sourceObject = doc.allObjects[pageIndex]?.find(o => o.id === objectId);
31476
+ if (!sourceObject) return;
31477
+ const {
31478
+ width: pageWidth,
31479
+ height: pageHeight
31480
+ } = this.getPageSize(docIndex, pageIndex);
31481
+ const offset = 12;
31482
+ const {
31483
+ x,
31484
+ y
31485
+ } = clampPosition(sourceObject.x + offset, sourceObject.y + offset, sourceObject.width, sourceObject.height, pageWidth, pageHeight);
31486
+ let duplicatedSigner = sourceObject.signer;
31487
+ if (duplicatedSigner?.element && Object.prototype.hasOwnProperty.call(duplicatedSigner.element, 'elementId')) {
31488
+ duplicatedSigner = {
31489
+ ...duplicatedSigner,
31490
+ element: {
31491
+ ...duplicatedSigner.element
31492
+ }
31493
+ };
31494
+ delete duplicatedSigner.element.elementId;
31495
+ }
31496
+ const duplicatedObject = {
31497
+ ...sourceObject,
31498
+ id: this.generateObjectId(),
31499
+ x,
31500
+ y,
31501
+ signer: duplicatedSigner
31502
+ };
31503
+ doc.allObjects[pageIndex].push(duplicatedObject);
31504
+ this.objectIndexCache[`${docIndex}-${duplicatedObject.id}`] = pageIndex;
31505
+ this.$nextTick(() => {
31506
+ const refKey = `draggable${docIndex}-${pageIndex}-${duplicatedObject.id}`;
31507
+ const draggableRefs = this.$refs[refKey];
31508
+ if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {
31509
+ draggableRefs[0].isSelected = true;
31510
+ }
31511
+ });
31512
+ },
31030
31513
  checkAndMoveObjectPage(docIndex, objectId, mouseX, mouseY) {
31031
31514
  if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return undefined;
31032
31515
  const doc = this.pdfDocuments[docIndex];
@@ -31162,10 +31645,10 @@ function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
31162
31645
  });
31163
31646
  ;// ./src/components/PDFElements.vue?vue&type=script&lang=js
31164
31647
  /* harmony default export */ const components_PDFElementsvue_type_script_lang_js = (PDFElementsvue_type_script_lang_js);
31165
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
31648
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
31166
31649
  // extracted by mini-css-extract-plugin
31167
31650
 
31168
- ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=ec3a4e5e&prod&scoped=true&lang=css
31651
+ ;// ./src/components/PDFElements.vue?vue&type=style&index=0&id=46de43ea&prod&scoped=true&lang=css
31169
31652
 
31170
31653
  ;// ./src/components/PDFElements.vue
31171
31654
 
@@ -31182,7 +31665,7 @@ var PDFElements_component = normalizeComponent(
31182
31665
  staticRenderFns,
31183
31666
  false,
31184
31667
  null,
31185
- "ec3a4e5e",
31668
+ "46de43ea",
31186
31669
  null
31187
31670
 
31188
31671
  )