legalesign-document-viewer 0.9.7 → 0.9.8
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/cjs/ls-compose-loader_46.cjs.entry.js +14 -9
- package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +14 -17
- package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
- package/dist/components/ls-document-viewer.js +14 -9
- package/dist/components/ls-document-viewer.js.map +1 -1
- package/dist/esm/ls-compose-loader_46.entry.js +14 -9
- package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
- package/dist/ls-document-viewer/{p-82d276fe.entry.js → p-f7e36e3b.entry.js} +2 -2
- package/dist/ls-document-viewer/p-f7e36e3b.entry.js.map +1 -0
- package/dist/types/components/ls-document-viewer/ls-document-viewer.d.ts +1 -0
- package/package.json +1 -1
- package/dist/ls-document-viewer/p-82d276fe.entry.js.map +0 -1
|
@@ -40611,6 +40611,7 @@ const LsDocumentViewer = class {
|
|
|
40611
40611
|
this.pageNum += 1;
|
|
40612
40612
|
this.queueRenderPage(this.pageNum);
|
|
40613
40613
|
this.showPageFields(this.pageNum);
|
|
40614
|
+
this.pageResize();
|
|
40614
40615
|
}
|
|
40615
40616
|
/**
|
|
40616
40617
|
* Page backward
|
|
@@ -40623,6 +40624,7 @@ const LsDocumentViewer = class {
|
|
|
40623
40624
|
this.pageNum -= 1;
|
|
40624
40625
|
this.queueRenderPage(this.pageNum);
|
|
40625
40626
|
this.showPageFields(this.pageNum);
|
|
40627
|
+
this.pageResize();
|
|
40626
40628
|
}
|
|
40627
40629
|
/**
|
|
40628
40630
|
* Unselect all fields
|
|
@@ -40634,19 +40636,22 @@ const LsDocumentViewer = class {
|
|
|
40634
40636
|
});
|
|
40635
40637
|
this.selected = [];
|
|
40636
40638
|
}
|
|
40639
|
+
pageResize() {
|
|
40640
|
+
this.canvas = this.component.shadowRoot.getElementById('pdf-canvas');
|
|
40641
|
+
const frame = this.component.shadowRoot.getElementById('ls-document-frame');
|
|
40642
|
+
// const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;
|
|
40643
|
+
this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';
|
|
40644
|
+
this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';
|
|
40645
|
+
frame.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';
|
|
40646
|
+
frame.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';
|
|
40647
|
+
}
|
|
40637
40648
|
/**
|
|
40638
40649
|
* Page and field resize on zoom change
|
|
40639
40650
|
*
|
|
40640
40651
|
*/
|
|
40641
40652
|
async setZoom(z) {
|
|
40642
40653
|
this.zoom = z;
|
|
40643
|
-
this.
|
|
40644
|
-
const frame = this.component.shadowRoot.getElementById('ls-document-frame');
|
|
40645
|
-
// const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;
|
|
40646
|
-
this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';
|
|
40647
|
-
this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';
|
|
40648
|
-
frame.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';
|
|
40649
|
-
frame.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';
|
|
40654
|
+
this.pageResize();
|
|
40650
40655
|
// wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';
|
|
40651
40656
|
// wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';
|
|
40652
40657
|
// place all fields at new zoom level
|
|
@@ -40914,7 +40919,7 @@ const LsDocumentViewer = class {
|
|
|
40914
40919
|
return false;
|
|
40915
40920
|
}
|
|
40916
40921
|
render() {
|
|
40917
|
-
return (index.h(index.Host, { key: '
|
|
40922
|
+
return (index.h(index.Host, { key: '6ae6febc377179b3044510f14e11b65e11e94e51' }, index.h(index.h.Fragment, null, this.isLoading && (index.h(index.h.Fragment, null, index.h("ls-page-loader", { key: '8cbb1fbbcd253b58e91d62a401c2de56fcd9b17e' }), index.h("div", { key: 'efd6deb080632a899782d9b554c8a9be9c13e90b', class: 'custom-loader-slot' }, index.h("slot", { key: 'cfe9b22b53426c93818873b70f75074e9acc9eba', name: 'custom-loader' })), this.mode === 'compose' && index.h("ls-compose-loader", { key: 'c75d4d34c384b91e37b1a9b61d2851df5747ef15' }))), index.h("div", { key: '1e9619ad9eedbd09e6a695a46049b1e372e2cdf6', class: "page-header" }, index.h("div", { key: 'e49fa3a73955fc2df6c7e8e2bf146013c9fdea2a', class: 'left-slot-wrapper' }, index.h("slot", { key: '921fd1139da00e9efc48623d17923c1d621919da', name: "left-button" })), index.h("div", { key: '2d7566a49420bc2d9982dc2caba65b36322b73d2', class: 'right-slot-wrapper' }, index.h("slot", { key: '650d4074491e3133615c0b7d79c4052efcfc618b', name: "right-button" })), this.mode === 'editor' && (index.h("div", { key: '4df3d2a06766c7256e9408b54c26576a44bc8924' }, index.h("span", { key: '8ca76097e8764eb477363be3411684cde72c5328', class: "header-text-1" }, "Template Creation"), index.h("span", { key: '93028d32cc544c7e0569d5743efea0fea9d576ce' }, "/"), index.h("span", { key: '13589b4f7e49d5a12aa45e6cc492d21b5dee39e5', class: "header-text-2" }, this._template?.title))), this.mode === 'compose' && (index.h("div", { key: '522d1d78906f233bf59c985c930e78cc949ad4c1', style: { display: 'flex', alignItems: 'center', gap: '0.25rem' } }, index.h("slot", { key: '433495bb45bdc18cbbb1c66675095d749a2213e5', name: "top-bar" })))), this.mode === 'editor' && (index.h("div", { key: '9d4f849e0c5c68fadc5b98f0c8f86f22713d759b', class: 'validation-tag-wrapper' }, index.h("ls-validation-tag", { key: '4cc1a1012574148bf64be8170ce0a6e9fac66a7e', validationErrors: this.validationErrors }))), index.h("form", { key: '2beaacb5234aa918fdc5e22ad90156f1b5b09c7f', id: "ls-editor-form" }, this.mode !== 'preview' ? (index.h("div", { id: "ls-left-box", class: "leftBox", style: this.mode === 'compose' ? { borderRadius: '1.75rem' } : {} }, index.h("div", { class: !this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden' }, this.mode === 'editor' && (index.h("ls-feature-column", { mode: this.mode, onManage: manager => {
|
|
40918
40923
|
if (manager.detail === 'document') {
|
|
40919
40924
|
var documentManager = this.component.shadowRoot.getElementById('ls-document-options');
|
|
40920
40925
|
documentManager.template = this._template;
|
|
@@ -40932,7 +40937,7 @@ const LsDocumentViewer = class {
|
|
|
40932
40937
|
this._recipients.map(recipient => (index.h("ls-recipient-card", { recipient: recipient, activeRecipient: this.signer, filtertoolbox: this.filtertoolbox, template: this._template, validationErrors: this.validationErrors, fieldTypeSelected: this.fieldTypeSelected, "data-signer-index": recipient.signerIndex })))), index.h("slot", { name: "recipient-panel" }))), !this.displayTable && (index.h("div", { class: this.selected.length > 0 ? 'field-properties-outer' : 'hidden' }, index.h("div", { class: 'properties-header' }, index.h("div", { class: 'properties-header-icon' }, index.h("ls-icon", { name: "pre-filled-content" })), index.h("h1", { class: 'properties-header-title' }, "Field Properties"), index.h("button", { class: 'tertiaryGrey', onClick: e => {
|
|
40933
40938
|
this.selected = [];
|
|
40934
40939
|
e.preventDefault();
|
|
40935
|
-
}, "data-tooltip": "Close Properties Panel" }, index.h("ls-icon", { name: "x", size: "1.25rem" }))), index.h("ls-field-properties", { id: "my-field-panel" }))))) : (index.h(index.h.Fragment, null)), index.h("ls-toolbar", { key: '
|
|
40940
|
+
}, "data-tooltip": "Close Properties Panel" }, index.h("ls-icon", { name: "x", size: "1.25rem" }))), index.h("ls-field-properties", { id: "my-field-panel" }))))) : (index.h(index.h.Fragment, null)), index.h("ls-toolbar", { key: 'd090d6e7e460c463b4b3e097ebbd21dec78b866a', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo, mode: this.mode }), index.h("div", { key: '885f4358c2c18fbcef12e35ab708c58597185aab', id: "ls-mid-area" }, index.h("div", { key: '351beda3b33a687b042204f3f6c3dfb9de4a1b3a', class: 'document-frame-wrapper', id: "document-frame-wrapper" }, index.h("div", { key: 'de9da8fe829e576186a1d72fe7511fc93c6dc0db', id: "ls-document-frame" }, index.h("canvas", { key: '69b7d9a5b000626a3ee38e9b8d85dcc2ce0244af', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'hidden' : '' }), index.h("ls-editor-table", { key: '86d8080c6868b3ef36e37f8c7e4ea33f50f97b9c', editor: this, class: this.displayTable ? '' : 'hidden' }), index.h("div", { key: '7c1d69b409c91c347849923f0928500c679a2ae2', id: "ls-box-selector" }))), index.h("ls-statusbar", { key: '344ff9e9f823b779365cc81703bd79e7d008a064', editor: this, page: this.pageNum, pageCount: this.pageCount })))), index.h("ls-tooltip", { key: '3eec36b27885c5ecd4c54d6fa3716b1cadcc1774', id: "ls-tooltip-master" })));
|
|
40936
40941
|
}
|
|
40937
40942
|
static get watchers() { return {
|
|
40938
40943
|
"mode": ["modeHandler"],
|
|
@@ -295,6 +295,7 @@ export class LsDocumentViewer {
|
|
|
295
295
|
this.pageNum += 1;
|
|
296
296
|
this.queueRenderPage(this.pageNum);
|
|
297
297
|
this.showPageFields(this.pageNum);
|
|
298
|
+
this.pageResize();
|
|
298
299
|
}
|
|
299
300
|
/**
|
|
300
301
|
* Page backward
|
|
@@ -307,6 +308,7 @@ export class LsDocumentViewer {
|
|
|
307
308
|
this.pageNum -= 1;
|
|
308
309
|
this.queueRenderPage(this.pageNum);
|
|
309
310
|
this.showPageFields(this.pageNum);
|
|
311
|
+
this.pageResize();
|
|
310
312
|
}
|
|
311
313
|
/**
|
|
312
314
|
* Unselect all fields
|
|
@@ -318,19 +320,22 @@ export class LsDocumentViewer {
|
|
|
318
320
|
});
|
|
319
321
|
this.selected = [];
|
|
320
322
|
}
|
|
323
|
+
pageResize() {
|
|
324
|
+
this.canvas = this.component.shadowRoot.getElementById('pdf-canvas');
|
|
325
|
+
const frame = this.component.shadowRoot.getElementById('ls-document-frame');
|
|
326
|
+
// const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;
|
|
327
|
+
this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';
|
|
328
|
+
this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';
|
|
329
|
+
frame.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';
|
|
330
|
+
frame.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';
|
|
331
|
+
}
|
|
321
332
|
/**
|
|
322
333
|
* Page and field resize on zoom change
|
|
323
334
|
*
|
|
324
335
|
*/
|
|
325
336
|
async setZoom(z) {
|
|
326
337
|
this.zoom = z;
|
|
327
|
-
this.
|
|
328
|
-
const frame = this.component.shadowRoot.getElementById('ls-document-frame');
|
|
329
|
-
// const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;
|
|
330
|
-
this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';
|
|
331
|
-
this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';
|
|
332
|
-
frame.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';
|
|
333
|
-
frame.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';
|
|
338
|
+
this.pageResize();
|
|
334
339
|
// wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';
|
|
335
340
|
// wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';
|
|
336
341
|
// place all fields at new zoom level
|
|
@@ -604,7 +609,7 @@ export class LsDocumentViewer {
|
|
|
604
609
|
return false;
|
|
605
610
|
}
|
|
606
611
|
render() {
|
|
607
|
-
return (h(Host, { key: '
|
|
612
|
+
return (h(Host, { key: '6ae6febc377179b3044510f14e11b65e11e94e51' }, h(h.Fragment, null, this.isLoading && (h(h.Fragment, null, h("ls-page-loader", { key: '8cbb1fbbcd253b58e91d62a401c2de56fcd9b17e' }), h("div", { key: 'efd6deb080632a899782d9b554c8a9be9c13e90b', class: 'custom-loader-slot' }, h("slot", { key: 'cfe9b22b53426c93818873b70f75074e9acc9eba', name: 'custom-loader' })), this.mode === 'compose' && h("ls-compose-loader", { key: 'c75d4d34c384b91e37b1a9b61d2851df5747ef15' }))), h("div", { key: '1e9619ad9eedbd09e6a695a46049b1e372e2cdf6', class: "page-header" }, h("div", { key: 'e49fa3a73955fc2df6c7e8e2bf146013c9fdea2a', class: 'left-slot-wrapper' }, h("slot", { key: '921fd1139da00e9efc48623d17923c1d621919da', name: "left-button" })), h("div", { key: '2d7566a49420bc2d9982dc2caba65b36322b73d2', class: 'right-slot-wrapper' }, h("slot", { key: '650d4074491e3133615c0b7d79c4052efcfc618b', name: "right-button" })), this.mode === 'editor' && (h("div", { key: '4df3d2a06766c7256e9408b54c26576a44bc8924' }, h("span", { key: '8ca76097e8764eb477363be3411684cde72c5328', class: "header-text-1" }, "Template Creation"), h("span", { key: '93028d32cc544c7e0569d5743efea0fea9d576ce' }, "/"), h("span", { key: '13589b4f7e49d5a12aa45e6cc492d21b5dee39e5', class: "header-text-2" }, this._template?.title))), this.mode === 'compose' && (h("div", { key: '522d1d78906f233bf59c985c930e78cc949ad4c1', style: { display: 'flex', alignItems: 'center', gap: '0.25rem' } }, h("slot", { key: '433495bb45bdc18cbbb1c66675095d749a2213e5', name: "top-bar" })))), this.mode === 'editor' && (h("div", { key: '9d4f849e0c5c68fadc5b98f0c8f86f22713d759b', class: 'validation-tag-wrapper' }, h("ls-validation-tag", { key: '4cc1a1012574148bf64be8170ce0a6e9fac66a7e', validationErrors: this.validationErrors }))), h("form", { key: '2beaacb5234aa918fdc5e22ad90156f1b5b09c7f', id: "ls-editor-form" }, this.mode !== 'preview' ? (h("div", { id: "ls-left-box", class: "leftBox", style: this.mode === 'compose' ? { borderRadius: '1.75rem' } : {} }, h("div", { class: !this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden' }, this.mode === 'editor' && (h("ls-feature-column", { mode: this.mode, onManage: manager => {
|
|
608
613
|
if (manager.detail === 'document') {
|
|
609
614
|
var documentManager = this.component.shadowRoot.getElementById('ls-document-options');
|
|
610
615
|
documentManager.template = this._template;
|
|
@@ -622,7 +627,7 @@ export class LsDocumentViewer {
|
|
|
622
627
|
this._recipients.map(recipient => (h("ls-recipient-card", { recipient: recipient, activeRecipient: this.signer, filtertoolbox: this.filtertoolbox, template: this._template, validationErrors: this.validationErrors, fieldTypeSelected: this.fieldTypeSelected, "data-signer-index": recipient.signerIndex })))), h("slot", { name: "recipient-panel" }))), !this.displayTable && (h("div", { class: this.selected.length > 0 ? 'field-properties-outer' : 'hidden' }, h("div", { class: 'properties-header' }, h("div", { class: 'properties-header-icon' }, h("ls-icon", { name: "pre-filled-content" })), h("h1", { class: 'properties-header-title' }, "Field Properties"), h("button", { class: 'tertiaryGrey', onClick: e => {
|
|
623
628
|
this.selected = [];
|
|
624
629
|
e.preventDefault();
|
|
625
|
-
}, "data-tooltip": "Close Properties Panel" }, h("ls-icon", { name: "x", size: "1.25rem" }))), h("ls-field-properties", { id: "my-field-panel" }))))) : (h(h.Fragment, null)), h("ls-toolbar", { key: '
|
|
630
|
+
}, "data-tooltip": "Close Properties Panel" }, h("ls-icon", { name: "x", size: "1.25rem" }))), h("ls-field-properties", { id: "my-field-panel" }))))) : (h(h.Fragment, null)), h("ls-toolbar", { key: 'd090d6e7e460c463b4b3e097ebbd21dec78b866a', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo, mode: this.mode }), h("div", { key: '885f4358c2c18fbcef12e35ab708c58597185aab', id: "ls-mid-area" }, h("div", { key: '351beda3b33a687b042204f3f6c3dfb9de4a1b3a', class: 'document-frame-wrapper', id: "document-frame-wrapper" }, h("div", { key: 'de9da8fe829e576186a1d72fe7511fc93c6dc0db', id: "ls-document-frame" }, h("canvas", { key: '69b7d9a5b000626a3ee38e9b8d85dcc2ce0244af', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'hidden' : '' }), h("ls-editor-table", { key: '86d8080c6868b3ef36e37f8c7e4ea33f50f97b9c', editor: this, class: this.displayTable ? '' : 'hidden' }), h("div", { key: '7c1d69b409c91c347849923f0928500c679a2ae2', id: "ls-box-selector" }))), h("ls-statusbar", { key: '344ff9e9f823b779365cc81703bd79e7d008a064', editor: this, page: this.pageNum, pageCount: this.pageCount })))), h("ls-tooltip", { key: '3eec36b27885c5ecd4c54d6fa3716b1cadcc1774', id: "ls-tooltip-master" })));
|
|
626
631
|
}
|
|
627
632
|
static get is() { return "ls-document-viewer"; }
|
|
628
633
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1264,14 +1269,6 @@ export class LsDocumentViewer {
|
|
|
1264
1269
|
"Promise": {
|
|
1265
1270
|
"location": "global",
|
|
1266
1271
|
"id": "global::Promise"
|
|
1267
|
-
},
|
|
1268
|
-
"HTMLCanvasElement": {
|
|
1269
|
-
"location": "global",
|
|
1270
|
-
"id": "global::HTMLCanvasElement"
|
|
1271
|
-
},
|
|
1272
|
-
"HTMLDivElement": {
|
|
1273
|
-
"location": "global",
|
|
1274
|
-
"id": "global::HTMLDivElement"
|
|
1275
1272
|
}
|
|
1276
1273
|
},
|
|
1277
1274
|
"return": "Promise<void>"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls-document-viewer.js","sourceRoot":"","sources":["../../../src/components/ls-document-viewer/ls-document-viewer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Prop, h, Element, Method, State, Listen, Watch } from '@stencil/core';\nimport { Event, EventEmitter } from '@stencil/core';\nimport { LSApiElement } from '../../types/LSApiElement';\nimport { PDFDocumentProxy, PDFPageProxy, PageViewport, RenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport 'pdfjs-dist/web/pdf_viewer';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { mouseClick, mouseDoubleClick, mouseDown, mouseDrop, mouseMove, mouseUp } from './mouseHandlers';\nimport { getApiType, matchData } from './editorUtils';\n// import { RoleColor } from '../../types/RoleColor';\nimport { LSApiRole, LSApiRoleType } from '../../types/LSApiRole';\nimport { LsDocumentAdapter } from './adapter/LsDocumentAdapter';\nimport { getTemplate } from './adapter/templateActions';\nimport { getGroupData } from './adapter/groupActions';\nimport { ValidationError } from '../../types/ValidationError';\nimport { validate } from './validator';\nimport { attachAllTooltips } from '../../utils/tooltip';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { generateRoles } from './generateRoles';\n\nGlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@5.4.449/build/pdf.worker.min.mjs`;\n\n/**\n * The Legalesign page viewer converted to stencil. To use pass the standard\n * Template information from GraphQL (see Readme).\n *\n * Alex Weinle\n */\n\n@Component({\n tag: 'ls-document-viewer',\n styleUrl: 'ls-document-viewer.css',\n shadow: true,\n})\nexport class LsDocumentViewer {\n @Element() component: HTMLElement;\n\n private isPageRendering: boolean;\n private pdfDocument: any;\n private pageNumPending: number = null;\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n public pageDimensions: { height: number; width: number }[]; // hardcoded to start at the page 1\n // @ts-ignore\n private isMoving: boolean = false;\n // @ts-ignore\n private isBoxing: boolean = false;\n // @ts-ignore\n private selectionBox: { x: number; y: number } = null;\n // @ts-ignore\n private hitField: HTMLElement;\n // @ts-ignore\n private edgeSide: string;\n // @ts-ignore\n private startLocations: { left: number; top: number; height: number; width: number }[];\n // @ts-ignore\n private startMouse: { left: number; top: number; height: number; width: number; x: number; y: number };\n\n //\n // --- Properties / Inputs --- //\n //\n\n /**\n * The initial template data, including the link for background PDF. See README and\n * example for correct GraphQL query and data structure.\n * {LSApiTemplate}\n */\n @Prop() template: string;\n\n /**\n * The access token of the account your want the widget to use, you should normally\n * acquire this with a server side call using that accounts login credentials.\n * {string}\n */\n @Prop() token: string;\n\n /**\n * This will override the default production user pool.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() userpool: string;\n\n /**\n * This will override the default production graphql endpoint.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() endpoint: string;\n\n /**\n * The id of the template you want to load (if using the internal data adapter).\n * {string}\n */\n @Prop() templateid: string;\n\n /**\n * A JSON string containing the recipient details. Only used in COMPOSE mode.\n * {string}\n */\n @Prop() recipients: string;\n @Prop() _recipients: any[];\n\n @Prop({ mutable: true }) zoom: number = 1.0; // hardcoded to scale the document to full canvas size\n @Prop({ mutable: true }) pageNum: number = 1;\n @Prop({ mutable: true }) pageCount: number = 1;\n @Prop({ mutable: true }) signer: number = 0;\n @Prop({ mutable: true }) groupInfo: any;\n\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n\n /**\n * The following state properties define the defaults for field\n * creation. They should be overridden by the users most used\n * values from localStorage or profile settings.\n */\n @State() fontSize: number = 10;\n @State() fontFamily: string = 'arial';\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\n @State() fieldTypeSelected: IToolboxField = {\n label: 'Signature',\n formElementType: 'signature',\n elementType: 'signature',\n validation: 0,\n defaultHeight: 27,\n defaultWidth: 120,\n };\n\n /**\n * An ease of use property that will arrange document-viewer appropraitely.\n * {'preview' | 'editor' | 'custom'}\n */\n @Prop() mode: 'preview' | 'editor' | 'compose' = 'editor';\n\n @Watch('mode')\n modeHandler(_newMode, _oldMode) {\n if (_newMode === 'preview') {\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showstatusbar = true;\n this.readonly = false;\n }\n }\n\n @Watch('zoom')\n zoomChanged(newZoom: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(f => f.setAttribute('zoom', String(newZoom)));\n }\n\n /**\n * Determines / sets which of the far left 'managers' is active.\n * {'document' | 'toolbox' | 'participant' }\n */\n @Prop({ mutable: true }) manager: 'document' | 'toolbox' | 'participant' | 'recipient' | 'validation' = 'toolbox';\n\n /**\n * Shows the table view of fields rather than the preview.\n * {boolean}\n */\n @Prop({ mutable: true }) displayTable?: boolean = false;\n\n /**\n * Allows the selection of fields in the toolbox to be limited to a | (pipe) delimited list.\n * {string}\n */\n @Prop() filtertoolbox?: string = null;\n\n /**\n * Whether the bottom statusbar is displayed.\n * {boolean}\n */\n @Prop() showstatusbar?: boolean = false;\n\n /**\n * Whether the page previewvertical ribbon will be shown\n * {boolean}\n */\n @Prop() showpagepreview?: boolean = false;\n\n /**\n * Whether the right panel (which can be default field properties or custom panel) is\n * displayed.\n * {boolean}\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Whether the table view of the fields on this template is available to the user.\n * {boolean}\n */\n @Prop() showtableview?: boolean = false;\n\n /**\n * If supplied ONLY items in this | (\"or\") delimited list will be shown. i.e. \"signature|intials\"\n * {boolean}\n */\n @Prop() toolboxFilter?: string = null;\n\n //\n // --- Event Emitters --- //\n //\n @Event() pageRendered: EventEmitter<number>;\n // @Event() error: EventEmitter<any>;\n @Event() pageChange: EventEmitter<number>;\n // Multiple or single select\n @Event() selectFields: EventEmitter<LSApiElement[]>;\n // Send an internal event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n\n // Send an external event to be mmonitored by an external developer\n @Event() update: EventEmitter<{ event: LSMutateEvent; template: LSApiTemplate }>;\n\n // Send an external validation event to be monitored by an external developer\n @Event() validate: EventEmitter<{ valid: boolean }>;\n\n @Event({\n bubbles: true,\n composed: true,\n })\n addParticipant: EventEmitter<{ name?: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>;\n\n private adapter: LsDocumentAdapter;\n\n // Action an external data action and use the result (if required)\n @Listen('mutate')\n mutateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (this.token && this.adapter)\n event.detail.forEach(me =>\n this.adapter\n .handleEvent(me, this.token)\n .then(result => matchData.bind(this)(result))\n .then(() => this.syncChange(me)),\n );\n }\n\n @Listen('fieldTypeSelected')\n handleFieldTypeSelected(event) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-toolbox-field');\n\n fields.forEach(element => {\n element.isSelected = element.formElementType === event.detail.formElementType;\n });\n\n this.fieldTypeSelected = event.detail;\n }\n\n // generate a new role on the template\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ name: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = event.detail.signerIndex > 99 ? this._template.roles.find(r => r.signerIndex === event.detail.signerIndex % 100) : null;\n const newSignerIndex =\n event.detail.type === 'WITNESS' ? parent.signerIndex + 100 : Math.max(...this._template.roles.filter(r => r.roleType !== 'WITNESS').map(r => r.signerIndex)) + 1;\n\n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: event.detail.name ? event.detail.name : 'Signer ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: event.detail.signerIndex\n ? event.detail.signerIndex\n : event.detail.type === 'WITNESS'\n ? 100 + parent?.signerIndex\n : this._template.roles.length === 0\n ? 1\n : newSignerIndex,\n ordinal: event.detail.type === 'WITNESS' ? parent?.ordinal + 1 : this._template.roles.length + 1,\n signerParent: event.detail.parent,\n experience: defaultExperience.id,\n templateId: this._template.id,\n },\n },\n ];\n this.mutate.emit(data);\n }\n\n // change the signer selected\n @Listen('changeSigner')\n updateSigner(event: CustomEvent<number>) {\n if (event.detail) {\n this.signer = event.detail;\n\n try {\n const leftBox = this.component.shadowRoot?.getElementById('ls-recipient-manager');\n if (leftBox) {\n const recipientsBox = leftBox.querySelector('.recipients-box');\n const card = recipientsBox?.querySelector(`ls-recipient-card[data-signer-index=\"${event.detail}\"]`);\n\n if (card && recipientsBox) {\n recipientsBox.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }\n } catch (e) {\n // fail silently\n }\n }\n }\n\n // Send selection changes to bars and panels if in use.\n @Listen('selectFields')\n selectFieldsHandler(event: CustomEvent<LSApiElement[]>) {\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field'));\n // update the template with all the latest values in the\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: fields.map(ef => ef.dataItem) },\n };\n\n var toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) {\n toolbar.dataItem = event.detail as any as LSApiElement[];\n }\n var propPanel = this.component.shadowRoot.getElementById('my-field-panel') as HTMLLsFieldPropertiesElement;\n if (event.detail.length === 0) {\n this.selected = [];\n } else {\n console.log(event.detail, 'selected')\n propPanel.dataItem = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n fu.selected = true;\n });\n\n // this.selected = fields.filter(fx => fx.selected) as HTMLLsEditorFieldElement[];\n this.selected.forEach(s => (s.selected = event.detail.map(d => d.id).includes(s.dataItem.id)));\n\n this.validationErrors = validate.bind(this)(this._template);\n }\n\n // Send role selection changes to bars and panels\n @Listen('roleChange')\n roleHandler(event: CustomEvent<number>) {\n this.signer = event.detail;\n }\n\n //\n // --- Methods --- //\n //\n\n /**\n * Page forward\n * {MouseEvent} e\n */\n @Method()\n async pageNext() {\n if (this.pageNum >= this.pdfDocument.numPages) {\n return;\n }\n this.pageNum += 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n }\n\n /**\n * Page backward\n * e\n */\n @Method()\n async pagePrev() {\n if (this.pageNum <= 1) {\n return;\n }\n\n this.pageNum -= 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n }\n\n /**\n * Unselect all fields\n */\n @Method()\n async unselect() {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [];\n }\n\n /**\n * Page and field resize on zoom change\n *\n */\n @Method()\n async setZoom(z: number) {\n this.zoom = z;\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n // const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\n\n // wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';\n // wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';\n\n // place all fields at new zoom level\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(fx => moveField.bind(this)(fx, fx.dataItem));\n\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n }\n\n /**\n * Ensure broken or misplaced fields are put onto the page.\n * {number} position\n */\n clip(legacyPosition: number, failback: number = 0.0): number {\n return legacyPosition > 1 ? failback : legacyPosition;\n }\n\n /**\n * Decorate the template data object with useful transformations.\n * {string} json of template\n */\n parseTemplate(newValue: string) {\n const newTemplate: LSApiTemplate = JSON.parse(newValue) as any as LSApiTemplate;\n const pages = JSON.parse(JSON.parse(newTemplate.pageDimensions));\n\n // Convert ax,bx,ay etc. into top, left\n // We also add the templateId into every object so that all the information\n // required to mutate is in each object.\n this.pageDimensions = pages.map(p => {\n return { height: p[1], width: p[0] };\n });\n const fields = newTemplate.elementConnection.templateElements.map(f => {\n return {\n ...f,\n top: Math.floor(this.clip(f.ay) * this.pageDimensions[0].height),\n left: Math.floor(this.clip(f.ax) * this.pageDimensions[0].width),\n height: Math.floor((this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height),\n width: Math.floor((this.clip(f.bx, 0.2) - this.clip(f.ax)) * this.pageDimensions[0].width),\n templateId: newTemplate.id,\n };\n });\n\n const preparedRoles: LSApiRole[] = newTemplate.roles.map((ro: LSApiRole) => {\n return { ...ro, templateId: newTemplate.id };\n });\n\n this.signer = preparedRoles.length > 0 ? 1 : 0;\n\n this._template = {\n ...newTemplate,\n elementConnection: { ...newTemplate.elementConnection, templateElements: fields },\n roles: preparedRoles,\n };\n }\n\n /**\n * Render the page based on pageNumber\n * {number} pageNumber\n */\n renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n if (this.pdfDocument !== undefined && this.pdfDocument !== null) {\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PageViewport = page.getViewport({ scale: this.zoom });\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: this.ctx,\n viewport,\n };\n\n // Render page method\n const renderTask: RenderTask = page.render(renderContext as any);\n\n // Wait for rendering to finish\n renderTask.promise.then(() => {\n this.isPageRendering = false;\n this.pageRendered.emit(this.pageNum);\n\n if (this.pageNumPending !== null) {\n this.renderPage(this.pageNumPending); // New page rendering is pending\n this.pageChange.emit(this.pageNumPending); // emit\n this.pageNumPending = null;\n }\n });\n });\n }\n }\n\n private queueRenderPage(pageNumber: number): void {\n if (this.isPageRendering) {\n this.pageNumPending = pageNumber;\n } else {\n this.renderPage(pageNumber);\n }\n }\n\n private loadAndRender(src: string): void {\n getDocument(src).promise.then((pdfDocument: PDFDocumentProxy) => {\n this.pdfDocument = pdfDocument;\n this.renderPage(this.pageNum);\n });\n }\n\n // Fills in and converts all utility and placement fields\n prepareElement(newElement: LSApiElement): LSApiElement {\n return {\n ...newElement,\n top: Math.floor(this.clip(newElement.ay) * this.pageDimensions[newElement.page - 1].height),\n left: Math.floor(this.clip(newElement.ax) * this.pageDimensions[newElement.page - 1].width),\n height: Math.floor((this.clip(newElement.by, 0.05) - this.clip(newElement.ay)) * this.pageDimensions[newElement.page - 1].height),\n width: Math.floor((this.clip(newElement.bx, 0.2) - this.clip(newElement.ax)) * this.pageDimensions[newElement.page - 1].width),\n pageDimensions: this.pageDimensions[newElement.page - 1],\n templateId: this._template.id,\n };\n }\n\n // internal forced change\n syncChange(update: LSMutateEvent) {\n if (update?.select === 'clear') {\n this.unselect();\n }\n\n if (getApiType(update.data) === 'element') {\n if (update.action === 'create') {\n // const newData = { ...update.data, page: this.pageNum };\n // addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), newData);\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n //this.selected = [newField];\n //this.selectFields.emit([newData as LSApiElement]);\n } else if (update.action === 'update') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (fi) {\n moveField.bind(this)(fi, update.data);\n // const fu = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\n // fu.dataItem = update.data as LSApiElement;\n // Refresh the selected array\n this.selectFields.emit(this.selected.map(sf => sf.dataItem));\n this.selected = this.selected.map(s => (s.dataItem.id === update.data.id ? fi : s));\n }\n // Reselect the fields - this updates the dataItem value passed to child controls\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n this.selected = Array.from(fields).filter(fx => fx.selected);\n } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (!fi) return;\n const fields = this._template.elementConnection.templateElements;\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: fields.filter(f => f.id !== update.data.id) } };\n this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi);\n this.selectFields.emit([]);\n } else {\n console.warn('Unrecognised action, check Legalesign documentation. `create`, `update` and `delete` allowed.');\n }\n }\n\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0 });\n }\n\n initViewer() {\n // Generate a canvas to draw the background PDF on.\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n this.ctx = this.canvas.getContext('2d');\n if (this._template?.link) this.loadAndRender(this._template?.link);\n\n var dropTarget = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLCanvasElement;\n\n // Used for single field selection\n if (this.mode !== 'preview' || this._template?.locked === true) {\n dropTarget.addEventListener('click', mouseClick.bind(this));\n document.addEventListener('mousedown', mouseDown.bind(this));\n document.addEventListener('mousemove', mouseMove.bind(this));\n document.addEventListener('mouseup', mouseUp.bind(this));\n dropTarget.addEventListener('dblclick', mouseDoubleClick.bind(this));\n document.addEventListener('keydown', keyDown.bind(this));\n dropTarget.addEventListener('dragenter', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('dragover', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('drop', mouseDrop.bind(this));\n }\n this.generateFields();\n }\n\n // Generate all the field HTML elements that are required (for every page)\n generateFields(clearExisting: boolean = true) {\n if (clearExisting) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fi => this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi));\n }\n\n this._template.elementConnection.templateElements.forEach(te => {\n addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), this.prepareElement(te));\n });\n }\n\n showPageFields(page: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n Array.from(fields).forEach(fx => {\n fx.className = fx.dataItem.page === page ? '' : 'hidden';\n // Find assignee for this field\n const data = fx.dataItem;\n const assignee = this.mode === 'compose' ? this._recipients?.find(r => r.signerIndex === data.signer) : this._template.roles.find(r => r.signerIndex === data.signer);\n fx.setAttribute(\n 'assignee',\n this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${data.signer}`,\n );\n });\n }\n\n async load() {\n this.isLoading = true;\n // Get all template and group listing data.\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.initViewer();\n\n if (this.mode === 'compose') {\n this.manager = 'recipient';\n this._recipients = JSON.parse(this.recipients.replace('\\u0022', '\"')).sort((a, b) => {\n // Signers (signerIndex < 100) come before witnesses (signerIndex >= 100) for the same base index\n const aBase = a.signerIndex % 100 || 100;\n const bBase = b.signerIndex % 100 || 100;\n if (aBase !== bBase) return aBase - bBase;\n // If base is the same, signer comes before witness\n if (a.signerIndex < 100 && b.signerIndex >= 100) return -1;\n if (a.signerIndex >= 100 && b.signerIndex < 100) return 1;\n // Otherwise, keep original order\n return a.signerIndex - b.signerIndex;\n });\n\n //Generate roles for any not already present\n generateRoles.bind(this)();\n }\n\n\n\n //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0 });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n } catch (e) {\n console.error('Your access token is invalid.', e);\n }\n }\n\n componentWillLoad() {\n if (this.token && !this._template) this.load();\n }\n\n componentDidLoad() {\n attachAllTooltips(this.component.shadowRoot);\n\n const leftBox = this.component.shadowRoot.getElementById('ls-left-box');\n if (leftBox) {\n leftBox.addEventListener('mousedown', e => {\n e.stopPropagation();\n });\n leftBox.addEventListener('mouseup', e => {\n e.stopPropagation();\n });\n leftBox.addEventListener('mousemove', e => {\n e.stopPropagation();\n });\n }\n }\n\n showTool(fieldFormType: string): boolean {\n return this.filtertoolbox === null || this.filtertoolbox.split('|').includes(fieldFormType);\n }\n\n /// Check if the current signer has a role of the specified type\n checkType(type: LSApiRoleType): boolean {\n\n if (this.mode === \"compose\" && this._recipients) {\n return this._recipients.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else if (this._template) {\n return this._template.roles.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n }\n else\n return false;\n }\n\n render() {\n return (\n <Host>\n <>\n {this.isLoading && (\n <>\n <ls-page-loader />\n <div class={'custom-loader-slot'}><slot name='custom-loader'></slot></div>\n {this.mode === 'compose' && <ls-compose-loader />}\n </>\n )}\n <div class=\"page-header\">\n <div class={'left-slot-wrapper'}>\n <slot name=\"left-button\" />\n </div>\n <div class={'right-slot-wrapper'}>\n <slot name=\"right-button\" />\n </div>\n {this.mode === 'editor' && (\n <div>\n <span class=\"header-text-1\">Template Creation</span>\n <span>/</span>\n <span class=\"header-text-2\">{this._template?.title}</span>\n </div>\n )}\n {this.mode === 'compose' && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <slot name=\"top-bar\"></slot>\n </div>\n )}\n </div>\n {this.mode === 'editor' && (\n <div class={'validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n </div>\n )}\n\n <form id=\"ls-editor-form\">\n {this.mode !== 'preview' ? (\n <div id=\"ls-left-box\" class=\"leftBox\" style={this.mode === 'compose' ? { borderRadius: '1.75rem' } : {}}>\n <div class={!this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden'}>\n {this.mode === 'editor' && (\n <ls-feature-column\n mode={this.mode}\n onManage={manager => {\n if (manager.detail === 'document') {\n var documentManager = this.component.shadowRoot.getElementById('ls-document-options') as HTMLLsDocumentOptionsElement;\n documentManager.template = this._template;\n } else if (manager.detail === 'participant') {\n var participantManager = this.component.shadowRoot.getElementById('ls-participant-manager') as HTMLLsParticipantManagerElement;\n participantManager.template = this._template;\n } else if (manager.detail === 'validation') {\n var validationManager = this.component.shadowRoot.getElementById('ls-validation-manager') as HTMLLsValidationManagerElement;\n validationManager.validationErrors = this.validationErrors;\n }\n this.manager = manager.detail;\n }}\n />\n )}\n <div id=\"ls-toolbox\" class={this.manager === 'toolbox' ? 'toolbox' : 'hidden'}>\n <div class=\"ls-editor-infobox\">\n <h2 class=\"toolbox-section-title\">Fields</h2>\n <p class=\"toolbox-section-description\">Drag and drop, or select and double click, to place fields on the Document.</p>\n </div>\n <div class=\"fields-box\">\n {(this.signer > 0 && this.showTool('signature') && !this.checkType('APPROVER')) && (\n <ls-toolbox-field\n elementType=\"signature\"\n formElementType=\"signature\"\n label=\"Signature\"\n defaultHeight={25}\n defaultWidth={97}\n validation={0}\n icon=\"signature\"\n tooltip=\"Use this field to collect Signatures from Participants\"\n signer={this.signer}\n />\n )}\n\n {this.signer === 0 && this.showTool('auto sign') && (\n <ls-toolbox-field\n elementType=\"admin\"\n formElementType=\"auto sign\"\n label=\"Auto Sign\"\n defaultHeight={25}\n defaultWidth={97}\n validation={3000}\n icon=\"auto-sign\"\n tooltip=\"Auto-Sign lets Senders add a Signature to the Document that will be automatically applied upon Sending\"\n signer={this.signer}\n />\n )}\n {this.showTool('text') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"text\"\n label=\"Text\"\n defaultHeight={16}\n defaultWidth={150}\n validation={0}\n icon=\"text\"\n tooltip=\"A field for collecting any plain text values such as: names, addresses or descriptions\"\n signer={this.signer}\n />\n )}\n\n {this.signer > 0 && this.showTool('signing date') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"signing date\"\n label=\"Signing Date\"\n defaultHeight={16}\n defaultWidth={100}\n validation={32}\n icon=\"auto-date\"\n tooltip=\"Automatically inserts the date upon completion by the assigned Participant\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('date') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"date\"\n label=\"Date\"\n defaultHeight={16}\n defaultWidth={100}\n validation={4}\n icon=\"calender\"\n tooltip=\"A field for collecting dates with built-in date formatting options\"\n signer={this.signer}\n />\n )}\n {this.showTool('email') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"email\"\n label=\"Email\"\n defaultHeight={16}\n defaultWidth={150}\n validation={1}\n icon=\"at-symbol\"\n tooltip=\"A Field to only accept entries formatted as an email address (e.g., example@example.com)\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('initials') && (\n <ls-toolbox-field\n elementType=\"initials\"\n formElementType=\"initials\"\n label=\"Initials\"\n defaultHeight={25}\n defaultWidth={70}\n validation={2000}\n icon=\"initials\"\n tooltip=\"Use this field anywhere Participants are required to Initial your document\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('number') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"number\"\n label=\"Number\"\n defaultHeight={16}\n defaultWidth={150}\n validation={50}\n icon=\"hashtag\"\n tooltip=\"A Field to only accept entries in numerical format. Additional validations include character limit (1 to 12 digits), and currency format (2 decimal places)\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('dropdown') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"dropdown\"\n label=\"Dropdown\"\n defaultHeight={16}\n defaultWidth={100}\n validation={20}\n icon=\"dropdown\"\n tooltip=\"Use this field to create custom dropdown menus in your document, or place one of our handy presets for countries or prefixes\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('checkbox') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"checkbox\"\n label=\"Checkbox\"\n defaultHeight={16}\n defaultWidth={16}\n validation={25}\n icon=\"check\"\n tooltip=\"Places a checkbox on your document. Handy for T&Cs or ✔/✗ sections\"\n signer={this.signer}\n />\n )}\n\n {this.signer > 0 && this.showTool('regex') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"regex\"\n label=\"Regex\"\n defaultHeight={16}\n defaultWidth={150}\n validation={93}\n icon=\"code\"\n tooltip=\"Need a specific validation? Use this field to enter a custom RegEx and have Participants enter exactly what you need\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('image') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"image\"\n label=\"Image\"\n defaultHeight={16}\n defaultWidth={100}\n validation={90}\n icon=\"photograph\"\n tooltip=\"Use when you need Participants to upload their own images during the signing process\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('file') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"file\"\n label=\"File\"\n defaultHeight={16}\n defaultWidth={100}\n validation={74}\n icon=\"upload\"\n tooltip=\"Use when you need Participants to upload their own documents during the signing process\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('drawn') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"drawn\"\n label=\"Drawn\"\n defaultHeight={120}\n defaultWidth={120}\n validation={90}\n icon=\"pencil\"\n tooltip=\"Allow users to draw on the document using their mouse or touchscreen\"\n signer={this.signer}\n />\n )}\n </div>\n </div>\n <ls-participant-manager id=\"ls-participant-manager\" class={this.manager === 'participant' ? 'toolbox' : 'hidden'} editor={this} />\n <ls-document-options id=\"ls-document-options\" class={this.manager === 'document' ? 'toolbox' : 'hidden'} />\n <ls-validation-manager id=\"ls-validation-manager\" class={this.manager === 'validation' ? 'toolbox' : 'hidden'} />\n <ls-recipient-manager id=\"ls-recipient-manager\" class={this.manager === 'recipient' ? 'compose-toolbox' : 'hidden'}>\n <div class={'scroll-gradient-top'} />\n <div class={'scroll-gradient-bottom'} />\n <ls-validation-tag validationErrors={this.validationErrors} style={{ position: 'absolute', top: '1.125rem', right: '1rem' }} type=\"compose\" />\n <div class={'recipients-box'}>\n {this._recipients &&\n this._recipients.map(recipient => (\n <ls-recipient-card\n recipient={recipient}\n activeRecipient={this.signer}\n filtertoolbox={this.filtertoolbox}\n template={this._template}\n validationErrors={this.validationErrors}\n fieldTypeSelected={this.fieldTypeSelected}\n data-signer-index={recipient.signerIndex}\n />\n ))}\n\n </div>\n <slot name=\"recipient-panel\"></slot>\n </ls-recipient-manager>\n </div>\n {!this.displayTable && (\n <div class={this.selected.length > 0 ? 'field-properties-outer' : 'hidden'}>\n <div class={'properties-header'}>\n <div class={'properties-header-icon'}>\n <ls-icon name=\"pre-filled-content\" />\n </div>\n <h1 class={'properties-header-title'}>Field Properties</h1>\n <button\n class={'tertiaryGrey'}\n onClick={e => {\n this.selected = [];\n e.preventDefault();\n }}\n data-tooltip=\"Close Properties Panel\"\n >\n <ls-icon name=\"x\" size=\"1.25rem\" />\n </button>\n </div>\n <ls-field-properties id=\"my-field-panel\"></ls-field-properties>\n </div>\n )}\n </div>\n ) : (\n <></>\n )}\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} mode={this.mode} />\n <div id=\"ls-mid-area\">\n <div class={'document-frame-wrapper'} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'hidden'} />\n <div id=\"ls-box-selector\"></div>\n </div>\n </div>\n <ls-statusbar editor={this} page={this.pageNum} pageCount={this.pageCount} />\n </div>\n </form>\n </>\n <ls-tooltip id=\"ls-tooltip-master\" />\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ls-document-viewer.js","sourceRoot":"","sources":["../../../src/components/ls-document-viewer/ls-document-viewer.tsx"],"names":[],"mappings":"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E,EAAC,mBAAmB,GAAG,CAChC,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h, Element, Method, State, Listen, Watch } from '@stencil/core';\nimport { Event, EventEmitter } from '@stencil/core';\nimport { LSApiElement } from '../../types/LSApiElement';\nimport { PDFDocumentProxy, PDFPageProxy, PageViewport, RenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport 'pdfjs-dist/web/pdf_viewer';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { mouseClick, mouseDoubleClick, mouseDown, mouseDrop, mouseMove, mouseUp } from './mouseHandlers';\nimport { getApiType, matchData } from './editorUtils';\n// import { RoleColor } from '../../types/RoleColor';\nimport { LSApiRole, LSApiRoleType } from '../../types/LSApiRole';\nimport { LsDocumentAdapter } from './adapter/LsDocumentAdapter';\nimport { getTemplate } from './adapter/templateActions';\nimport { getGroupData } from './adapter/groupActions';\nimport { ValidationError } from '../../types/ValidationError';\nimport { validate } from './validator';\nimport { attachAllTooltips } from '../../utils/tooltip';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { generateRoles } from './generateRoles';\n\nGlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@5.4.449/build/pdf.worker.min.mjs`;\n\n/**\n * The Legalesign page viewer converted to stencil. To use pass the standard\n * Template information from GraphQL (see Readme).\n *\n * Alex Weinle\n */\n\n@Component({\n tag: 'ls-document-viewer',\n styleUrl: 'ls-document-viewer.css',\n shadow: true,\n})\nexport class LsDocumentViewer {\n @Element() component: HTMLElement;\n\n private isPageRendering: boolean;\n private pdfDocument: any;\n private pageNumPending: number = null;\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n public pageDimensions: { height: number; width: number }[]; // hardcoded to start at the page 1\n // @ts-ignore\n private isMoving: boolean = false;\n // @ts-ignore\n private isBoxing: boolean = false;\n // @ts-ignore\n private selectionBox: { x: number; y: number } = null;\n // @ts-ignore\n private hitField: HTMLElement;\n // @ts-ignore\n private edgeSide: string;\n // @ts-ignore\n private startLocations: { left: number; top: number; height: number; width: number }[];\n // @ts-ignore\n private startMouse: { left: number; top: number; height: number; width: number; x: number; y: number };\n\n //\n // --- Properties / Inputs --- //\n //\n\n /**\n * The initial template data, including the link for background PDF. See README and\n * example for correct GraphQL query and data structure.\n * {LSApiTemplate}\n */\n @Prop() template: string;\n\n /**\n * The access token of the account your want the widget to use, you should normally\n * acquire this with a server side call using that accounts login credentials.\n * {string}\n */\n @Prop() token: string;\n\n /**\n * This will override the default production user pool.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() userpool: string;\n\n /**\n * This will override the default production graphql endpoint.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() endpoint: string;\n\n /**\n * The id of the template you want to load (if using the internal data adapter).\n * {string}\n */\n @Prop() templateid: string;\n\n /**\n * A JSON string containing the recipient details. Only used in COMPOSE mode.\n * {string}\n */\n @Prop() recipients: string;\n @Prop() _recipients: any[];\n\n @Prop({ mutable: true }) zoom: number = 1.0; // hardcoded to scale the document to full canvas size\n @Prop({ mutable: true }) pageNum: number = 1;\n @Prop({ mutable: true }) pageCount: number = 1;\n @Prop({ mutable: true }) signer: number = 0;\n @Prop({ mutable: true }) groupInfo: any;\n\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n\n /**\n * The following state properties define the defaults for field\n * creation. They should be overridden by the users most used\n * values from localStorage or profile settings.\n */\n @State() fontSize: number = 10;\n @State() fontFamily: string = 'arial';\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\n @State() fieldTypeSelected: IToolboxField = {\n label: 'Signature',\n formElementType: 'signature',\n elementType: 'signature',\n validation: 0,\n defaultHeight: 27,\n defaultWidth: 120,\n };\n\n /**\n * An ease of use property that will arrange document-viewer appropraitely.\n * {'preview' | 'editor' | 'custom'}\n */\n @Prop() mode: 'preview' | 'editor' | 'compose' = 'editor';\n\n @Watch('mode')\n modeHandler(_newMode, _oldMode) {\n if (_newMode === 'preview') {\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showstatusbar = true;\n this.readonly = false;\n }\n }\n\n @Watch('zoom')\n zoomChanged(newZoom: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(f => f.setAttribute('zoom', String(newZoom)));\n }\n\n /**\n * Determines / sets which of the far left 'managers' is active.\n * {'document' | 'toolbox' | 'participant' }\n */\n @Prop({ mutable: true }) manager: 'document' | 'toolbox' | 'participant' | 'recipient' | 'validation' = 'toolbox';\n\n /**\n * Shows the table view of fields rather than the preview.\n * {boolean}\n */\n @Prop({ mutable: true }) displayTable?: boolean = false;\n\n /**\n * Allows the selection of fields in the toolbox to be limited to a | (pipe) delimited list.\n * {string}\n */\n @Prop() filtertoolbox?: string = null;\n\n /**\n * Whether the bottom statusbar is displayed.\n * {boolean}\n */\n @Prop() showstatusbar?: boolean = false;\n\n /**\n * Whether the page previewvertical ribbon will be shown\n * {boolean}\n */\n @Prop() showpagepreview?: boolean = false;\n\n /**\n * Whether the right panel (which can be default field properties or custom panel) is\n * displayed.\n * {boolean}\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Whether the table view of the fields on this template is available to the user.\n * {boolean}\n */\n @Prop() showtableview?: boolean = false;\n\n /**\n * If supplied ONLY items in this | (\"or\") delimited list will be shown. i.e. \"signature|intials\"\n * {boolean}\n */\n @Prop() toolboxFilter?: string = null;\n\n //\n // --- Event Emitters --- //\n //\n @Event() pageRendered: EventEmitter<number>;\n // @Event() error: EventEmitter<any>;\n @Event() pageChange: EventEmitter<number>;\n // Multiple or single select\n @Event() selectFields: EventEmitter<LSApiElement[]>;\n // Send an internal event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n\n // Send an external event to be mmonitored by an external developer\n @Event() update: EventEmitter<{ event: LSMutateEvent; template: LSApiTemplate }>;\n\n // Send an external validation event to be monitored by an external developer\n @Event() validate: EventEmitter<{ valid: boolean }>;\n\n @Event({\n bubbles: true,\n composed: true,\n })\n addParticipant: EventEmitter<{ name?: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>;\n\n private adapter: LsDocumentAdapter;\n\n // Action an external data action and use the result (if required)\n @Listen('mutate')\n mutateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (this.token && this.adapter)\n event.detail.forEach(me =>\n this.adapter\n .handleEvent(me, this.token)\n .then(result => matchData.bind(this)(result))\n .then(() => this.syncChange(me)),\n );\n }\n\n @Listen('fieldTypeSelected')\n handleFieldTypeSelected(event) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-toolbox-field');\n\n fields.forEach(element => {\n element.isSelected = element.formElementType === event.detail.formElementType;\n });\n\n this.fieldTypeSelected = event.detail;\n }\n\n // generate a new role on the template\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ name: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = event.detail.signerIndex > 99 ? this._template.roles.find(r => r.signerIndex === event.detail.signerIndex % 100) : null;\n const newSignerIndex =\n event.detail.type === 'WITNESS' ? parent.signerIndex + 100 : Math.max(...this._template.roles.filter(r => r.roleType !== 'WITNESS').map(r => r.signerIndex)) + 1;\n\n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: event.detail.name ? event.detail.name : 'Signer ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: event.detail.signerIndex\n ? event.detail.signerIndex\n : event.detail.type === 'WITNESS'\n ? 100 + parent?.signerIndex\n : this._template.roles.length === 0\n ? 1\n : newSignerIndex,\n ordinal: event.detail.type === 'WITNESS' ? parent?.ordinal + 1 : this._template.roles.length + 1,\n signerParent: event.detail.parent,\n experience: defaultExperience.id,\n templateId: this._template.id,\n },\n },\n ];\n this.mutate.emit(data);\n }\n\n // change the signer selected\n @Listen('changeSigner')\n updateSigner(event: CustomEvent<number>) {\n if (event.detail) {\n this.signer = event.detail;\n\n try {\n const leftBox = this.component.shadowRoot?.getElementById('ls-recipient-manager');\n if (leftBox) {\n const recipientsBox = leftBox.querySelector('.recipients-box');\n const card = recipientsBox?.querySelector(`ls-recipient-card[data-signer-index=\"${event.detail}\"]`);\n\n if (card && recipientsBox) {\n recipientsBox.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }\n } catch (e) {\n // fail silently\n }\n }\n }\n\n // Send selection changes to bars and panels if in use.\n @Listen('selectFields')\n selectFieldsHandler(event: CustomEvent<LSApiElement[]>) {\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field'));\n // update the template with all the latest values in the\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: fields.map(ef => ef.dataItem) },\n };\n\n var toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) {\n toolbar.dataItem = event.detail as any as LSApiElement[];\n }\n var propPanel = this.component.shadowRoot.getElementById('my-field-panel') as HTMLLsFieldPropertiesElement;\n if (event.detail.length === 0) {\n this.selected = [];\n } else {\n console.log(event.detail, 'selected')\n propPanel.dataItem = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n fu.selected = true;\n });\n\n // this.selected = fields.filter(fx => fx.selected) as HTMLLsEditorFieldElement[];\n this.selected.forEach(s => (s.selected = event.detail.map(d => d.id).includes(s.dataItem.id)));\n\n this.validationErrors = validate.bind(this)(this._template);\n }\n\n // Send role selection changes to bars and panels\n @Listen('roleChange')\n roleHandler(event: CustomEvent<number>) {\n this.signer = event.detail;\n }\n\n //\n // --- Methods --- //\n //\n\n /**\n * Page forward\n * {MouseEvent} e\n */\n @Method()\n async pageNext() {\n if (this.pageNum >= this.pdfDocument.numPages) {\n return;\n }\n this.pageNum += 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n \n }\n\n /**\n * Page backward\n * e\n */\n @Method()\n async pagePrev() {\n if (this.pageNum <= 1) {\n return;\n }\n\n this.pageNum -= 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n \n }\n\n /**\n * Unselect all fields\n */\n @Method()\n async unselect() {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [];\n }\n\n pageResize() {\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n // const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n }\n\n /**\n * Page and field resize on zoom change\n *\n */\n @Method()\n async setZoom(z: number) {\n this.zoom = z;\n this.pageResize();\n\n // wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';\n // wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';\n\n // place all fields at new zoom level\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(fx => moveField.bind(this)(fx, fx.dataItem));\n\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n }\n\n /**\n * Ensure broken or misplaced fields are put onto the page.\n * {number} position\n */\n clip(legacyPosition: number, failback: number = 0.0): number {\n return legacyPosition > 1 ? failback : legacyPosition;\n }\n\n /**\n * Decorate the template data object with useful transformations.\n * {string} json of template\n */\n parseTemplate(newValue: string) {\n const newTemplate: LSApiTemplate = JSON.parse(newValue) as any as LSApiTemplate;\n const pages = JSON.parse(JSON.parse(newTemplate.pageDimensions));\n\n // Convert ax,bx,ay etc. into top, left\n // We also add the templateId into every object so that all the information\n // required to mutate is in each object.\n this.pageDimensions = pages.map(p => {\n return { height: p[1], width: p[0] };\n });\n const fields = newTemplate.elementConnection.templateElements.map(f => {\n return {\n ...f,\n top: Math.floor(this.clip(f.ay) * this.pageDimensions[0].height),\n left: Math.floor(this.clip(f.ax) * this.pageDimensions[0].width),\n height: Math.floor((this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height),\n width: Math.floor((this.clip(f.bx, 0.2) - this.clip(f.ax)) * this.pageDimensions[0].width),\n templateId: newTemplate.id,\n };\n });\n\n const preparedRoles: LSApiRole[] = newTemplate.roles.map((ro: LSApiRole) => {\n return { ...ro, templateId: newTemplate.id };\n });\n\n this.signer = preparedRoles.length > 0 ? 1 : 0;\n\n this._template = {\n ...newTemplate,\n elementConnection: { ...newTemplate.elementConnection, templateElements: fields },\n roles: preparedRoles,\n };\n }\n\n /**\n * Render the page based on pageNumber\n * {number} pageNumber\n */\n renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n if (this.pdfDocument !== undefined && this.pdfDocument !== null) {\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PageViewport = page.getViewport({ scale: this.zoom });\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: this.ctx,\n viewport,\n };\n\n // Render page method\n const renderTask: RenderTask = page.render(renderContext as any);\n\n // Wait for rendering to finish\n renderTask.promise.then(() => {\n this.isPageRendering = false;\n this.pageRendered.emit(this.pageNum);\n\n if (this.pageNumPending !== null) {\n this.renderPage(this.pageNumPending); // New page rendering is pending\n this.pageChange.emit(this.pageNumPending); // emit\n this.pageNumPending = null;\n }\n });\n });\n }\n }\n\n private queueRenderPage(pageNumber: number): void {\n if (this.isPageRendering) {\n this.pageNumPending = pageNumber;\n } else {\n this.renderPage(pageNumber);\n }\n }\n\n private loadAndRender(src: string): void {\n getDocument(src).promise.then((pdfDocument: PDFDocumentProxy) => {\n this.pdfDocument = pdfDocument;\n this.renderPage(this.pageNum);\n });\n }\n\n // Fills in and converts all utility and placement fields\n prepareElement(newElement: LSApiElement): LSApiElement {\n return {\n ...newElement,\n top: Math.floor(this.clip(newElement.ay) * this.pageDimensions[newElement.page - 1].height),\n left: Math.floor(this.clip(newElement.ax) * this.pageDimensions[newElement.page - 1].width),\n height: Math.floor((this.clip(newElement.by, 0.05) - this.clip(newElement.ay)) * this.pageDimensions[newElement.page - 1].height),\n width: Math.floor((this.clip(newElement.bx, 0.2) - this.clip(newElement.ax)) * this.pageDimensions[newElement.page - 1].width),\n pageDimensions: this.pageDimensions[newElement.page - 1],\n templateId: this._template.id,\n };\n }\n\n // internal forced change\n syncChange(update: LSMutateEvent) {\n if (update?.select === 'clear') {\n this.unselect();\n }\n\n if (getApiType(update.data) === 'element') {\n if (update.action === 'create') {\n // const newData = { ...update.data, page: this.pageNum };\n // addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), newData);\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n //this.selected = [newField];\n //this.selectFields.emit([newData as LSApiElement]);\n } else if (update.action === 'update') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (fi) {\n moveField.bind(this)(fi, update.data);\n // const fu = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\n // fu.dataItem = update.data as LSApiElement;\n // Refresh the selected array\n this.selectFields.emit(this.selected.map(sf => sf.dataItem));\n this.selected = this.selected.map(s => (s.dataItem.id === update.data.id ? fi : s));\n }\n // Reselect the fields - this updates the dataItem value passed to child controls\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n this.selected = Array.from(fields).filter(fx => fx.selected);\n } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (!fi) return;\n const fields = this._template.elementConnection.templateElements;\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: fields.filter(f => f.id !== update.data.id) } };\n this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi);\n this.selectFields.emit([]);\n } else {\n console.warn('Unrecognised action, check Legalesign documentation. `create`, `update` and `delete` allowed.');\n }\n }\n\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0 });\n }\n\n initViewer() {\n // Generate a canvas to draw the background PDF on.\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n this.ctx = this.canvas.getContext('2d');\n if (this._template?.link) this.loadAndRender(this._template?.link);\n\n var dropTarget = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLCanvasElement;\n\n // Used for single field selection\n if (this.mode !== 'preview' || this._template?.locked === true) {\n dropTarget.addEventListener('click', mouseClick.bind(this));\n document.addEventListener('mousedown', mouseDown.bind(this));\n document.addEventListener('mousemove', mouseMove.bind(this));\n document.addEventListener('mouseup', mouseUp.bind(this));\n dropTarget.addEventListener('dblclick', mouseDoubleClick.bind(this));\n document.addEventListener('keydown', keyDown.bind(this));\n dropTarget.addEventListener('dragenter', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('dragover', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('drop', mouseDrop.bind(this));\n }\n this.generateFields();\n }\n\n // Generate all the field HTML elements that are required (for every page)\n generateFields(clearExisting: boolean = true) {\n if (clearExisting) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fi => this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi));\n }\n\n this._template.elementConnection.templateElements.forEach(te => {\n addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), this.prepareElement(te));\n });\n }\n\n showPageFields(page: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n Array.from(fields).forEach(fx => {\n fx.className = fx.dataItem.page === page ? '' : 'hidden';\n // Find assignee for this field\n const data = fx.dataItem;\n const assignee = this.mode === 'compose' ? this._recipients?.find(r => r.signerIndex === data.signer) : this._template.roles.find(r => r.signerIndex === data.signer);\n fx.setAttribute(\n 'assignee',\n this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${data.signer}`,\n );\n });\n }\n\n async load() {\n this.isLoading = true;\n // Get all template and group listing data.\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.initViewer();\n\n if (this.mode === 'compose') {\n this.manager = 'recipient';\n this._recipients = JSON.parse(this.recipients.replace('\\u0022', '\"')).sort((a, b) => {\n // Signers (signerIndex < 100) come before witnesses (signerIndex >= 100) for the same base index\n const aBase = a.signerIndex % 100 || 100;\n const bBase = b.signerIndex % 100 || 100;\n if (aBase !== bBase) return aBase - bBase;\n // If base is the same, signer comes before witness\n if (a.signerIndex < 100 && b.signerIndex >= 100) return -1;\n if (a.signerIndex >= 100 && b.signerIndex < 100) return 1;\n // Otherwise, keep original order\n return a.signerIndex - b.signerIndex;\n });\n\n //Generate roles for any not already present\n generateRoles.bind(this)();\n }\n\n\n\n //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0 });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n } catch (e) {\n console.error('Your access token is invalid.', e);\n }\n }\n\n componentWillLoad() {\n if (this.token && !this._template) this.load();\n }\n\n componentDidLoad() {\n attachAllTooltips(this.component.shadowRoot);\n\n const leftBox = this.component.shadowRoot.getElementById('ls-left-box');\n if (leftBox) {\n leftBox.addEventListener('mousedown', e => {\n e.stopPropagation();\n });\n leftBox.addEventListener('mouseup', e => {\n e.stopPropagation();\n });\n leftBox.addEventListener('mousemove', e => {\n e.stopPropagation();\n });\n }\n }\n\n showTool(fieldFormType: string): boolean {\n return this.filtertoolbox === null || this.filtertoolbox.split('|').includes(fieldFormType);\n }\n\n /// Check if the current signer has a role of the specified type\n checkType(type: LSApiRoleType): boolean {\n\n if (this.mode === \"compose\" && this._recipients) {\n return this._recipients.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else if (this._template) {\n return this._template.roles.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n }\n else\n return false;\n }\n\n render() {\n return (\n <Host>\n <>\n {this.isLoading && (\n <>\n <ls-page-loader />\n <div class={'custom-loader-slot'}><slot name='custom-loader'></slot></div>\n {this.mode === 'compose' && <ls-compose-loader />}\n </>\n )}\n <div class=\"page-header\">\n <div class={'left-slot-wrapper'}>\n <slot name=\"left-button\" />\n </div>\n <div class={'right-slot-wrapper'}>\n <slot name=\"right-button\" />\n </div>\n {this.mode === 'editor' && (\n <div>\n <span class=\"header-text-1\">Template Creation</span>\n <span>/</span>\n <span class=\"header-text-2\">{this._template?.title}</span>\n </div>\n )}\n {this.mode === 'compose' && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <slot name=\"top-bar\"></slot>\n </div>\n )}\n </div>\n {this.mode === 'editor' && (\n <div class={'validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n </div>\n )}\n\n <form id=\"ls-editor-form\">\n {this.mode !== 'preview' ? (\n <div id=\"ls-left-box\" class=\"leftBox\" style={this.mode === 'compose' ? { borderRadius: '1.75rem' } : {}}>\n <div class={!this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden'}>\n {this.mode === 'editor' && (\n <ls-feature-column\n mode={this.mode}\n onManage={manager => {\n if (manager.detail === 'document') {\n var documentManager = this.component.shadowRoot.getElementById('ls-document-options') as HTMLLsDocumentOptionsElement;\n documentManager.template = this._template;\n } else if (manager.detail === 'participant') {\n var participantManager = this.component.shadowRoot.getElementById('ls-participant-manager') as HTMLLsParticipantManagerElement;\n participantManager.template = this._template;\n } else if (manager.detail === 'validation') {\n var validationManager = this.component.shadowRoot.getElementById('ls-validation-manager') as HTMLLsValidationManagerElement;\n validationManager.validationErrors = this.validationErrors;\n }\n this.manager = manager.detail;\n }}\n />\n )}\n <div id=\"ls-toolbox\" class={this.manager === 'toolbox' ? 'toolbox' : 'hidden'}>\n <div class=\"ls-editor-infobox\">\n <h2 class=\"toolbox-section-title\">Fields</h2>\n <p class=\"toolbox-section-description\">Drag and drop, or select and double click, to place fields on the Document.</p>\n </div>\n <div class=\"fields-box\">\n {(this.signer > 0 && this.showTool('signature') && !this.checkType('APPROVER')) && (\n <ls-toolbox-field\n elementType=\"signature\"\n formElementType=\"signature\"\n label=\"Signature\"\n defaultHeight={25}\n defaultWidth={97}\n validation={0}\n icon=\"signature\"\n tooltip=\"Use this field to collect Signatures from Participants\"\n signer={this.signer}\n />\n )}\n\n {this.signer === 0 && this.showTool('auto sign') && (\n <ls-toolbox-field\n elementType=\"admin\"\n formElementType=\"auto sign\"\n label=\"Auto Sign\"\n defaultHeight={25}\n defaultWidth={97}\n validation={3000}\n icon=\"auto-sign\"\n tooltip=\"Auto-Sign lets Senders add a Signature to the Document that will be automatically applied upon Sending\"\n signer={this.signer}\n />\n )}\n {this.showTool('text') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"text\"\n label=\"Text\"\n defaultHeight={16}\n defaultWidth={150}\n validation={0}\n icon=\"text\"\n tooltip=\"A field for collecting any plain text values such as: names, addresses or descriptions\"\n signer={this.signer}\n />\n )}\n\n {this.signer > 0 && this.showTool('signing date') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"signing date\"\n label=\"Signing Date\"\n defaultHeight={16}\n defaultWidth={100}\n validation={32}\n icon=\"auto-date\"\n tooltip=\"Automatically inserts the date upon completion by the assigned Participant\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('date') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"date\"\n label=\"Date\"\n defaultHeight={16}\n defaultWidth={100}\n validation={4}\n icon=\"calender\"\n tooltip=\"A field for collecting dates with built-in date formatting options\"\n signer={this.signer}\n />\n )}\n {this.showTool('email') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"email\"\n label=\"Email\"\n defaultHeight={16}\n defaultWidth={150}\n validation={1}\n icon=\"at-symbol\"\n tooltip=\"A Field to only accept entries formatted as an email address (e.g., example@example.com)\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('initials') && (\n <ls-toolbox-field\n elementType=\"initials\"\n formElementType=\"initials\"\n label=\"Initials\"\n defaultHeight={25}\n defaultWidth={70}\n validation={2000}\n icon=\"initials\"\n tooltip=\"Use this field anywhere Participants are required to Initial your document\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('number') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"number\"\n label=\"Number\"\n defaultHeight={16}\n defaultWidth={150}\n validation={50}\n icon=\"hashtag\"\n tooltip=\"A Field to only accept entries in numerical format. Additional validations include character limit (1 to 12 digits), and currency format (2 decimal places)\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('dropdown') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"dropdown\"\n label=\"Dropdown\"\n defaultHeight={16}\n defaultWidth={100}\n validation={20}\n icon=\"dropdown\"\n tooltip=\"Use this field to create custom dropdown menus in your document, or place one of our handy presets for countries or prefixes\"\n signer={this.signer}\n />\n )}\n\n {this.showTool('checkbox') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"checkbox\"\n label=\"Checkbox\"\n defaultHeight={16}\n defaultWidth={16}\n validation={25}\n icon=\"check\"\n tooltip=\"Places a checkbox on your document. Handy for T&Cs or ✔/✗ sections\"\n signer={this.signer}\n />\n )}\n\n {this.signer > 0 && this.showTool('regex') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"regex\"\n label=\"Regex\"\n defaultHeight={16}\n defaultWidth={150}\n validation={93}\n icon=\"code\"\n tooltip=\"Need a specific validation? Use this field to enter a custom RegEx and have Participants enter exactly what you need\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('image') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"image\"\n label=\"Image\"\n defaultHeight={16}\n defaultWidth={100}\n validation={90}\n icon=\"photograph\"\n tooltip=\"Use when you need Participants to upload their own images during the signing process\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('file') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"file\"\n label=\"File\"\n defaultHeight={16}\n defaultWidth={100}\n validation={74}\n icon=\"upload\"\n tooltip=\"Use when you need Participants to upload their own documents during the signing process\"\n signer={this.signer}\n />\n )}\n {this.signer > 0 && this.showTool('drawn') && (\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"drawn\"\n label=\"Drawn\"\n defaultHeight={120}\n defaultWidth={120}\n validation={90}\n icon=\"pencil\"\n tooltip=\"Allow users to draw on the document using their mouse or touchscreen\"\n signer={this.signer}\n />\n )}\n </div>\n </div>\n <ls-participant-manager id=\"ls-participant-manager\" class={this.manager === 'participant' ? 'toolbox' : 'hidden'} editor={this} />\n <ls-document-options id=\"ls-document-options\" class={this.manager === 'document' ? 'toolbox' : 'hidden'} />\n <ls-validation-manager id=\"ls-validation-manager\" class={this.manager === 'validation' ? 'toolbox' : 'hidden'} />\n <ls-recipient-manager id=\"ls-recipient-manager\" class={this.manager === 'recipient' ? 'compose-toolbox' : 'hidden'}>\n <div class={'scroll-gradient-top'} />\n <div class={'scroll-gradient-bottom'} />\n <ls-validation-tag validationErrors={this.validationErrors} style={{ position: 'absolute', top: '1.125rem', right: '1rem' }} type=\"compose\" />\n <div class={'recipients-box'}>\n {this._recipients &&\n this._recipients.map(recipient => (\n <ls-recipient-card\n recipient={recipient}\n activeRecipient={this.signer}\n filtertoolbox={this.filtertoolbox}\n template={this._template}\n validationErrors={this.validationErrors}\n fieldTypeSelected={this.fieldTypeSelected}\n data-signer-index={recipient.signerIndex}\n />\n ))}\n\n </div>\n <slot name=\"recipient-panel\"></slot>\n </ls-recipient-manager>\n </div>\n {!this.displayTable && (\n <div class={this.selected.length > 0 ? 'field-properties-outer' : 'hidden'}>\n <div class={'properties-header'}>\n <div class={'properties-header-icon'}>\n <ls-icon name=\"pre-filled-content\" />\n </div>\n <h1 class={'properties-header-title'}>Field Properties</h1>\n <button\n class={'tertiaryGrey'}\n onClick={e => {\n this.selected = [];\n e.preventDefault();\n }}\n data-tooltip=\"Close Properties Panel\"\n >\n <ls-icon name=\"x\" size=\"1.25rem\" />\n </button>\n </div>\n <ls-field-properties id=\"my-field-panel\"></ls-field-properties>\n </div>\n )}\n </div>\n ) : (\n <></>\n )}\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} mode={this.mode} />\n <div id=\"ls-mid-area\">\n <div class={'document-frame-wrapper'} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'hidden'} />\n <div id=\"ls-box-selector\"></div>\n </div>\n </div>\n <ls-statusbar editor={this} page={this.pageNum} pageCount={this.pageCount} />\n </div>\n </form>\n </>\n <ls-tooltip id=\"ls-tooltip-master\" />\n </Host>\n );\n }\n}\n"]}
|