@verdocs/web-sdk 1.7.0 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/verdocs-auth.cjs.entry.js +9 -11
  3. package/dist/cjs/verdocs-auth.cjs.entry.js.map +1 -1
  4. package/dist/cjs/verdocs-status-indicator.cjs.entry.js +3 -2
  5. package/dist/cjs/verdocs-status-indicator.cjs.entry.js.map +1 -1
  6. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  7. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.js +5 -3
  8. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.js.map +1 -1
  9. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js +9 -11
  10. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js.map +1 -1
  11. package/dist/components/verdocs-auth.js +9 -11
  12. package/dist/components/verdocs-auth.js.map +1 -1
  13. package/dist/components/verdocs-status-indicator.js +5 -3
  14. package/dist/components/verdocs-status-indicator.js.map +1 -1
  15. package/dist/docs.json +1 -1
  16. package/dist/esm/loader.js +1 -1
  17. package/dist/esm/verdocs-auth.entry.js +9 -11
  18. package/dist/esm/verdocs-auth.entry.js.map +1 -1
  19. package/dist/esm/verdocs-status-indicator.entry.js +3 -2
  20. package/dist/esm/verdocs-status-indicator.entry.js.map +1 -1
  21. package/dist/esm/verdocs-web-sdk.js +1 -1
  22. package/dist/esm-es5/loader.js +1 -1
  23. package/dist/esm-es5/loader.js.map +1 -1
  24. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  25. package/dist/esm-es5/verdocs-auth.entry.js.map +1 -1
  26. package/dist/esm-es5/verdocs-status-indicator.entry.js +1 -1
  27. package/dist/esm-es5/verdocs-status-indicator.entry.js.map +1 -1
  28. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  29. package/dist/esm-es5/verdocs-web-sdk.js.map +1 -1
  30. package/dist/types/components/controls/verdocs-status-indicator/verdocs-status-indicator.d.ts +1 -0
  31. package/dist/typings.d.ts +4 -0
  32. package/dist/verdocs-web-sdk/{p-0abd29f0.system.entry.js → p-0e99724c.system.entry.js} +2 -2
  33. package/dist/verdocs-web-sdk/p-0e99724c.system.entry.js.map +1 -0
  34. package/dist/verdocs-web-sdk/p-403b35bb.system.js +1 -1
  35. package/dist/verdocs-web-sdk/p-403b35bb.system.js.map +1 -1
  36. package/dist/verdocs-web-sdk/p-6247cf41.system.entry.js +2 -0
  37. package/dist/verdocs-web-sdk/p-6247cf41.system.entry.js.map +1 -0
  38. package/dist/verdocs-web-sdk/{p-ab3a738d.entry.js → p-9f5f3f18.entry.js} +2 -2
  39. package/dist/verdocs-web-sdk/p-9f5f3f18.entry.js.map +1 -0
  40. package/dist/verdocs-web-sdk/p-f22d5fd0.entry.js +2 -0
  41. package/dist/verdocs-web-sdk/p-f22d5fd0.entry.js.map +1 -0
  42. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  43. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js.map +1 -1
  44. package/package.json +2 -2
  45. package/dist/verdocs-web-sdk/p-0abd29f0.system.entry.js.map +0 -1
  46. package/dist/verdocs-web-sdk/p-a781782d.entry.js +0 -2
  47. package/dist/verdocs-web-sdk/p-a781782d.entry.js.map +0 -1
  48. package/dist/verdocs-web-sdk/p-ab3a738d.entry.js.map +0 -1
  49. package/dist/verdocs-web-sdk/p-bd47255a.system.entry.js +0 -2
  50. package/dist/verdocs-web-sdk/p-bd47255a.system.entry.js.map +0 -1
@@ -15,7 +15,7 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["verdocs-sign.cjs",[[0,"verdocs-sign",{"endpoint":[16],"documentId":[1,"document-id"],"roleId":[1,"role-id"],"inviteCode":[1,"invite-code"],"recipient":[32],"signerToken":[32],"pdfUrl":[32],"recipientIndex":[32],"document":[32],"fields":[32],"hasSignature":[32],"nextButtonLabel":[32],"focusedField":[32]}]]],["verdocs-auth.cjs",[[0,"verdocs-auth",{"endpoint":[16],"visible":[4],"logo":[1],"debug":[4],"isAuthenticated":[32],"displayMode":[32],"username":[32],"password":[32],"loggingIn":[32],"activeSession":[32],"loginError":[32]}]]],["verdocs-field-initial.cjs",[[0,"verdocs-field-initial",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}]]],["verdocs-field-signature.cjs",[[0,"verdocs-field-signature",{"field":[16],"recipient":[16],"tempSignature":[32],"focusField":[64]}]]],["verdocs-search.cjs",[[0,"verdocs-search",{"endpoint":[16]}]]],["verdocs-field-attachment.cjs",[[0,"verdocs-field-attachment",{"field":[16],"order":[2],"value":[1],"required":[4],"disabled":[4],"focusField":[64]}]]],["verdocs-kba-dialog.cjs",[[0,"verdocs-kba-dialog",{"step":[2],"steps":[2],"helptitle":[1],"helptext":[1],"mode":[1],"label":[1],"placeholder":[1],"choices":[16],"open":[4],"response":[32]}]]],["verdocs-field-date.cjs",[[0,"verdocs-field-date",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]],["verdocs-field-dropdown.cjs",[[0,"verdocs-field-dropdown",{"options":[16],"required":[4],"order":[2],"disabled":[4],"value":[1],"focused":[32],"focusField":[64]}]]],["verdocs-field-payment.cjs",[[0,"verdocs-field-payment",{"field":[16],"fields":[16],"pageNum":[2,"page-num"],"roleName":[1,"role-name"],"fieldId":[1,"field-id"],"recipients":[8],"selectedRoleName":[1,"selected-role-name"],"pdfPages":[16],"currentSignature":[1,"current-signature"],"currentSignatureId":[1,"current-signature-id"],"currentInitial":[1,"current-initial"],"currentInitialId":[1,"current-initial-id"],"focused":[4],"signed":[4],"preparedMessage":[32],"signatureUrl":[32]}]]],["verdocs-field-textarea.cjs",[[0,"verdocs-field-textarea",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]],["verdocs-field-textbox.cjs",[[0,"verdocs-field-textbox",{"field":[16],"focused":[32],"focusField":[64]}]]],["verdocs-field-timestamp.cjs",[[0,"verdocs-field-timestamp",{"field":[16],"focused":[32],"focusField":[64]}]]],["verdocs-organization-card.cjs",[[0,"verdocs-organization-card",{"organization":[16]}]]],["verdocs-search-tabs.cjs",[[0,"verdocs-search-tabs",{"selected":[32]}]]],["verdocs-status-indicator.cjs",[[0,"verdocs-status-indicator",{"size":[1],"theme":[1],"status":[1],"document":[16],"isOpen":[32],"recipientStatusIcons":[32]}]]],["verdocs-template-card.cjs",[[0,"verdocs-template-card",{"template":[16]}]]],["verdocs-template-tags.cjs",[[0,"verdocs-template-tags",{"tags":[16]}]]],["verdocs-toggle.cjs",[[0,"verdocs-toggle",{"options":[16],"theme":[1]},[[6,"click","handleClick"]]]]],["verdocs-text-input.cjs",[[0,"verdocs-text-input",{"value":[1],"label":[1],"placeholder":[1],"autocomplete":[1],"type":[1],"disabled":[4],"_value":[32]}]]],["verdocs-button.cjs",[[0,"verdocs-button",{"label":[1],"startIcon":[1,"start-icon"],"endIcon":[1,"end-icon"],"size":[1],"type":[1],"variant":[1],"disabled":[4]}]]],["verdocs-initial-dialog.cjs",[[0,"verdocs-initial-dialog",{"fullname":[1],"open":[4],"fontLoaded":[32],"enteredInitials":[32],"mode":[32]}]]],["verdocs-signature-dialog.cjs",[[0,"verdocs-signature-dialog",{"fullName":[1,"full-name"],"open":[4],"fontLoaded":[32],"enteredName":[32],"mode":[32]}]]],["verdocs-ok-dialog.cjs",[[0,"verdocs-ok-dialog",{"heading":[1],"message":[1],"open":[4],"cancel":[4]}]]],["verdocs-upload-dialog.cjs",[[0,"verdocs-upload-dialog",{"open":[4],"draggingOver":[32],"decodedFiles":[32]}]]],["verdocs-quick-functions_3.cjs",[[0,"verdocs-quick-functions",{"endpoint":[16]}],[0,"verdocs-search-activity",{"endpoint":[16],"type":[1],"options":[8],"emptyMessage":[32],"authFailure":[32],"title":[32],"recent":[32],"saved":[32],"starred":[32]}],[0,"verdocs-search-box",{"endpoint":[16],"placeholder":[1],"type":[1],"query":[1]}]]],["verdocs-document-page_2.cjs",[[0,"verdocs-document-page",{"pageNumber":[2,"page-number"],"virtualWidth":[2,"virtual-width"],"virtualHeight":[2,"virtual-height"],"layers":[16],"containerId":[32],"renderedWidth":[32],"renderedHeight":[32],"skipFirstNotification":[32]}],[0,"verdocs-loader"]]],["verdocs-dropdown_4.cjs",[[0,"verdocs-view",{"endpoint":[16],"rotation":[2],"pageLayers":[16],"source":[1],"loadProgress":[32],"numPages":[32]}],[0,"verdocs-dropdown",{"options":[16],"open":[4],"isOpen":[32]}],[0,"verdocs-field-checkbox",{"order":[2],"value":[4],"required":[4],"disabled":[4]}],[0,"verdocs-field-radio-button",{"order":[2],"checked":[4],"value":[1],"name":[1],"required":[4],"disabled":[4]}]]]], options);
18
+ return index.bootstrapLazy([["verdocs-sign.cjs",[[0,"verdocs-sign",{"endpoint":[16],"documentId":[1,"document-id"],"roleId":[1,"role-id"],"inviteCode":[1,"invite-code"],"recipient":[32],"signerToken":[32],"pdfUrl":[32],"recipientIndex":[32],"document":[32],"fields":[32],"hasSignature":[32],"nextButtonLabel":[32],"focusedField":[32]}]]],["verdocs-auth.cjs",[[0,"verdocs-auth",{"endpoint":[16],"visible":[4],"logo":[1],"debug":[4],"isAuthenticated":[32],"displayMode":[32],"username":[32],"password":[32],"loggingIn":[32],"activeSession":[32],"loginError":[32]}]]],["verdocs-field-initial.cjs",[[0,"verdocs-field-initial",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}]]],["verdocs-field-signature.cjs",[[0,"verdocs-field-signature",{"field":[16],"recipient":[16],"tempSignature":[32],"focusField":[64]}]]],["verdocs-search.cjs",[[0,"verdocs-search",{"endpoint":[16]}]]],["verdocs-field-attachment.cjs",[[0,"verdocs-field-attachment",{"field":[16],"order":[2],"value":[1],"required":[4],"disabled":[4],"focusField":[64]}]]],["verdocs-kba-dialog.cjs",[[0,"verdocs-kba-dialog",{"step":[2],"steps":[2],"helptitle":[1],"helptext":[1],"mode":[1],"label":[1],"placeholder":[1],"choices":[16],"open":[4],"response":[32]}]]],["verdocs-field-date.cjs",[[0,"verdocs-field-date",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]],["verdocs-field-dropdown.cjs",[[0,"verdocs-field-dropdown",{"options":[16],"required":[4],"order":[2],"disabled":[4],"value":[1],"focused":[32],"focusField":[64]}]]],["verdocs-field-payment.cjs",[[0,"verdocs-field-payment",{"field":[16],"fields":[16],"pageNum":[2,"page-num"],"roleName":[1,"role-name"],"fieldId":[1,"field-id"],"recipients":[8],"selectedRoleName":[1,"selected-role-name"],"pdfPages":[16],"currentSignature":[1,"current-signature"],"currentSignatureId":[1,"current-signature-id"],"currentInitial":[1,"current-initial"],"currentInitialId":[1,"current-initial-id"],"focused":[4],"signed":[4],"preparedMessage":[32],"signatureUrl":[32]}]]],["verdocs-field-textarea.cjs",[[0,"verdocs-field-textarea",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]],["verdocs-field-textbox.cjs",[[0,"verdocs-field-textbox",{"field":[16],"focused":[32],"focusField":[64]}]]],["verdocs-field-timestamp.cjs",[[0,"verdocs-field-timestamp",{"field":[16],"focused":[32],"focusField":[64]}]]],["verdocs-organization-card.cjs",[[0,"verdocs-organization-card",{"organization":[16]}]]],["verdocs-search-tabs.cjs",[[0,"verdocs-search-tabs",{"selected":[32]}]]],["verdocs-status-indicator.cjs",[[0,"verdocs-status-indicator",{"size":[1],"theme":[1],"status":[1],"document":[16],"isOpen":[32],"recipientStatusIcons":[32],"containerId":[32]}]]],["verdocs-template-card.cjs",[[0,"verdocs-template-card",{"template":[16]}]]],["verdocs-template-tags.cjs",[[0,"verdocs-template-tags",{"tags":[16]}]]],["verdocs-toggle.cjs",[[0,"verdocs-toggle",{"options":[16],"theme":[1]},[[6,"click","handleClick"]]]]],["verdocs-text-input.cjs",[[0,"verdocs-text-input",{"value":[1],"label":[1],"placeholder":[1],"autocomplete":[1],"type":[1],"disabled":[4],"_value":[32]}]]],["verdocs-button.cjs",[[0,"verdocs-button",{"label":[1],"startIcon":[1,"start-icon"],"endIcon":[1,"end-icon"],"size":[1],"type":[1],"variant":[1],"disabled":[4]}]]],["verdocs-initial-dialog.cjs",[[0,"verdocs-initial-dialog",{"fullname":[1],"open":[4],"fontLoaded":[32],"enteredInitials":[32],"mode":[32]}]]],["verdocs-signature-dialog.cjs",[[0,"verdocs-signature-dialog",{"fullName":[1,"full-name"],"open":[4],"fontLoaded":[32],"enteredName":[32],"mode":[32]}]]],["verdocs-ok-dialog.cjs",[[0,"verdocs-ok-dialog",{"heading":[1],"message":[1],"open":[4],"cancel":[4]}]]],["verdocs-upload-dialog.cjs",[[0,"verdocs-upload-dialog",{"open":[4],"draggingOver":[32],"decodedFiles":[32]}]]],["verdocs-quick-functions_3.cjs",[[0,"verdocs-quick-functions",{"endpoint":[16]}],[0,"verdocs-search-activity",{"endpoint":[16],"type":[1],"options":[8],"emptyMessage":[32],"authFailure":[32],"title":[32],"recent":[32],"saved":[32],"starred":[32]}],[0,"verdocs-search-box",{"endpoint":[16],"placeholder":[1],"type":[1],"query":[1]}]]],["verdocs-document-page_2.cjs",[[0,"verdocs-document-page",{"pageNumber":[2,"page-number"],"virtualWidth":[2,"virtual-width"],"virtualHeight":[2,"virtual-height"],"layers":[16],"containerId":[32],"renderedWidth":[32],"renderedHeight":[32],"skipFirstNotification":[32]}],[0,"verdocs-loader"]]],["verdocs-dropdown_4.cjs",[[0,"verdocs-view",{"endpoint":[16],"rotation":[2],"pageLayers":[16],"source":[1],"loadProgress":[32],"numPages":[32]}],[0,"verdocs-dropdown",{"options":[16],"open":[4],"isOpen":[32]}],[0,"verdocs-field-checkbox",{"order":[2],"value":[4],"required":[4],"disabled":[4]}],[0,"verdocs-field-radio-button",{"order":[2],"checked":[4],"value":[1],"name":[1],"required":[4],"disabled":[4]}]]]], options);
19
19
  });
20
20
 
21
21
  //# sourceMappingURL=verdocs-web-sdk.cjs.js.map
@@ -44,6 +44,7 @@ export class VerdocsStatusIndicator {
44
44
  */
45
45
  this.theme = 'light';
46
46
  this.recipientStatusIcons = [];
47
+ this.containerId = `verdocs-status-indicator-${Math.random().toString(36).substring(2, 11)}`;
47
48
  }
48
49
  componentDidLoad() {
49
50
  var _a;
@@ -110,7 +111,7 @@ export class VerdocsStatusIndicator {
110
111
  });
111
112
  this.recipientStatusIcons = statusIcons;
112
113
  const diagram = RecipientFlow();
113
- diagram.initalize('#verdocs-recipient-status-diagram', canvasWidth, canvasHeight);
114
+ diagram.initalize(`#${this.containerId}`, canvasWidth, canvasHeight);
114
115
  diagram.update({ entities, lines });
115
116
  }
116
117
  }
@@ -243,7 +244,7 @@ export class VerdocsStatusIndicator {
243
244
  h("span", { class: "icon", innerHTML: icon }),
244
245
  h("span", { class: "content" }, statusMessage),
245
246
  h("div", { class: "detail-panel", ref: el => (this.detailPanel = el) },
246
- h("div", { id: "verdocs-recipient-status-diagram" }),
247
+ h("div", { id: `${this.containerId}` }),
247
248
  this.recipientStatusIcons.map(icon => (h("span", { innerHTML: icon.icon, style: { position: 'absolute', top: `${icon.y}px`, left: `${icon.x}px` } }))))));
248
249
  }
249
250
  static get is() { return "verdocs-status-indicator"; }
@@ -339,7 +340,8 @@ export class VerdocsStatusIndicator {
339
340
  }; }
340
341
  static get states() { return {
341
342
  "isOpen": {},
342
- "recipientStatusIcons": {}
343
+ "recipientStatusIcons": {},
344
+ "containerId": {}
343
345
  }; }
344
346
  }
345
347
  //# sourceMappingURL=verdocs-status-indicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verdocs-status-indicator.js","sourceRoot":"","sources":["../../../../src/components/controls/verdocs-status-indicator/verdocs-status-indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["import {RecipientFlow} from './recipient-flow';\nimport {createPopper, Instance} from '@popperjs/core';\nimport {Component, Prop, Host, h, State} from '@stencil/core';\nimport {IDocument, TDocumentStatus, TRecipientStatus} from '@verdocs/js-sdk/Documents/Documents';\nimport AcceptedLight from './accepted-light.svg';\nimport AcceptedDark from './accepted-dark.svg';\nimport CanceledLight from './canceled-light.svg';\nimport CanceledDark from './canceled-dark.svg';\nimport CompletedLight from './complete-light.svg';\nimport CompletedDark from './complete-dark.svg';\nimport DeclinedLight from './declined-light.svg';\nimport DeclinedDark from './declined-dark.svg';\nimport InProgressLight from './in-progress-light.svg';\nimport InProgressDark from './in-progress-dark.svg';\nimport OpenedLight from './opened-light.svg';\nimport OpenedDark from './opened-dark.svg';\nimport PendingLight from './pending-light.svg';\nimport PendingDark from './pending-dark.svg';\nimport SignedLight from './signed-light.svg';\nimport SignedDark from './signed-dark.svg';\nimport SomeSignedLight from './some-signed-light.svg';\nimport SomeSignedDark from './some-signed-dark.svg';\nimport SubmittedLight from './submitted-light.svg';\nimport SubmittedDark from './submitted-dark.svg';\n\nconst ENTRY_WIDTH = 140;\nconst ENTRY_HEIGHT = 40;\nconst ENTRY_PADDING = 40;\n\n/**\n * Displays an icon and message describing a document's completion status. For convenience, the status may be passed in either\n * directly as a status field or the whole document object may be passed in.\n *\n * If the document is provided, the status flag will indicate the document's overall status. This also makes the component clickable\n * to display a popup panel with per-recipient status data.\n *\n * If the status is provided as a string it can be either a `TRecipientStatus` or `TDocumentStatus` value.\n */\n@Component({\n tag: 'verdocs-status-indicator',\n styleUrl: 'verdocs-status-indicator.scss',\n})\nexport class VerdocsStatusIndicator {\n private summaryComponent?: HTMLButtonElement;\n private detailPanel?: HTMLDivElement;\n private popper?: Instance;\n\n /**\n * The size (height) of the indicator. The small variant is suitable for use in densely populated components such as table rows.\n */\n @Prop() size: 'small' | 'normal' = 'normal';\n\n /**\n * The theme to use for diplay.\n */\n @Prop() theme?: 'dark' | 'light' = 'light';\n\n /**\n * The status to display.\n */\n // The accepted override is here because we don't actually have an official status for that yet, but we plan to add it\n @Prop() status?: TDocumentStatus | TRecipientStatus | 'accepted';\n\n /**\n * The document to display status for. Ignored if `status` is set directly.\n */\n @Prop() document?: IDocument;\n\n @State() isOpen: boolean;\n\n @State() recipientStatusIcons = [];\n\n componentDidLoad() {\n this.popper = createPopper(this.summaryComponent, this.detailPanel, {placement: 'bottom-start', modifiers: [{name: 'offset', options: {offset: [0, 10]}}]});\n\n if (this.document?.recipients) {\n const recipientsAtLevel = [];\n this.document.recipients.forEach(recipient => {\n const level = recipient.sequence - 1;\n recipientsAtLevel[level] ||= [];\n const id = `r-${level}-${recipientsAtLevel[level].length}`;\n recipientsAtLevel[level].push({...recipient, id});\n });\n\n const levelCount = Object.keys(recipientsAtLevel).length;\n\n const canvasHeight = levelCount * ENTRY_HEIGHT + (levelCount + 1) * ENTRY_PADDING;\n let canvasWidth = 0;\n Object.values(recipientsAtLevel).forEach(recipients => {\n let minW = recipients.length * ENTRY_WIDTH + (recipients.length + 1) * ENTRY_PADDING;\n if (minW > canvasWidth) {\n canvasWidth = minW;\n }\n });\n\n const entities = [];\n const lines = [];\n const statusIcons = [];\n\n let y = ENTRY_PADDING;\n Object.entries(recipientsAtLevel).forEach(([level, recipients]) => {\n // To center align here, we figure out how many items are per line and how much leftover space there would be if we just\n // drew them left-to-right. We add half of that as a left offset.\n const renderedItemsWidth = recipients.length * (ENTRY_WIDTH + ENTRY_PADDING);\n const leftoverSpace = canvasWidth - renderedItemsWidth;\n const leftOffset = ENTRY_PADDING / 2 + leftoverSpace / 2;\n\n recipients.forEach((recipient, index) => {\n const [first, last] = (recipient.full_name || 'Unknown').toUpperCase().split(' ');\n const name = `${first} ${last?.substring(0, 1)}`;\n const entity = {\n id: recipient.id,\n text: name,\n icon: this.getStatusIcon(recipient.status),\n x: index * (ENTRY_WIDTH + ENTRY_PADDING) + leftOffset,\n y,\n width: ENTRY_WIDTH,\n height: ENTRY_HEIGHT,\n color: this.getStatusColor(recipient.status),\n radius: 8,\n };\n entities.push(entity);\n\n statusIcons.push({\n icon: this.getStatusIcon(recipient.status),\n x: index * (ENTRY_WIDTH + ENTRY_PADDING) + leftOffset + (ENTRY_WIDTH - 32),\n y: y + ENTRY_HEIGHT / 2 - 13,\n });\n\n recipientsAtLevel[+level - 1]?.forEach(prevRecip => {\n const line = {\n id: `line-${prevRecip.id}-${entity.id}`,\n from: {element: prevRecip.id, point: 'bottom'},\n to: {element: entity.id, point: 'top'},\n color: this.getStatusColor(recipient.status),\n };\n lines.push(line);\n });\n });\n\n y += ENTRY_HEIGHT + ENTRY_PADDING;\n });\n\n this.recipientStatusIcons = statusIcons;\n\n const diagram = RecipientFlow();\n diagram.initalize('#verdocs-recipient-status-diagram', canvasWidth, canvasHeight);\n diagram.update({entities, lines});\n }\n }\n\n // See https://popper.js.org/docs/v2/tutorial/\n // What we're doing here is clearing event listeners when they aren't needed, to increase performance in lists\n showDropdown() {\n this.isOpen = true;\n this.detailPanel.setAttribute('data-show', '');\n this.detailPanel.removeAttribute('aria-hidden');\n\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: true}],\n }));\n\n this.popper?.update();\n }\n\n handleHideDropdown(e: any) {\n if (e?.target?.localName === 'button' && e?.target?.className === 'arrow') {\n // This event is fired when a menu element is clicked because the button \"loses focus\" then too\n return;\n }\n\n this.hide();\n }\n\n toggleDropdown() {\n if (this.isOpen) {\n this.hide();\n } else {\n this.showDropdown();\n }\n }\n\n hide() {\n this.isOpen = false;\n this.detailPanel.removeAttribute('data-show');\n this.detailPanel.setAttribute('aria-hidden', 'true');\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: false}],\n }));\n }\n\n getStatusColor(status: string) {\n switch (status) {\n case 'invited':\n case 'opened':\n case 'accepted':\n case 'signed':\n return '#654dcb';\n case 'some-signed':\n case 'submitted':\n case 'complete':\n return '#55bc81';\n case 'declined':\n return '#ff0000';\n case 'canceled':\n case 'in progress':\n case 'pending':\n default:\n return '#999999';\n }\n }\n\n getStatusIcon(status: string) {\n switch (status) {\n case 'accepted':\n return this.theme === 'light' ? AcceptedLight : AcceptedDark;\n case 'complete':\n return this.theme === 'light' ? CompletedLight : CompletedDark;\n case 'in progress':\n return this.theme === 'light' ? InProgressLight : InProgressDark;\n case 'canceled':\n return this.theme === 'light' ? CanceledLight : CanceledDark;\n case 'declined':\n return this.theme === 'light' ? DeclinedLight : DeclinedDark;\n case 'invited':\n return this.theme === 'light' ? InProgressLight : InProgressDark;\n case 'opened':\n return this.theme === 'light' ? OpenedLight : OpenedDark;\n case 'signed':\n return this.theme === 'light' ? SignedLight : SignedDark;\n case 'submitted':\n return this.theme === 'light' ? SubmittedLight : SubmittedDark;\n case 'some-signed':\n return this.theme === 'light' ? SomeSignedLight : SomeSignedDark;\n default:\n case 'pending':\n return this.theme === 'light' ? PendingLight : PendingDark;\n }\n }\n\n getStatusMessage(status: string) {\n switch (status) {\n case 'accepted':\n return 'Accepted';\n case 'complete':\n return 'Completed';\n case 'in progress':\n return 'In Progress';\n case 'canceled':\n return 'Cancelled';\n case 'declined':\n return 'Declined';\n case 'invited':\n return 'Invited';\n case 'opened':\n return 'Opened';\n case 'signed':\n return 'Signed';\n case 'submitted':\n return 'Submitted';\n case 'some-signed':\n return 'Partly Signed';\n default:\n case 'pending':\n return 'Pending';\n }\n }\n\n render() {\n // The extra fallback for accepted is to future proof for when we add that.\n let status: string = this.status || this.document?.status || 'pending' || 'accepted';\n if (!this.status && this.document?.recipients) {\n const submittedRecipients = this.document.recipients.filter(r => r.status === 'submitted');\n if (submittedRecipients.length > 0 && submittedRecipients.length !== this.document.recipients.length) {\n status = 'some-signed';\n }\n }\n\n const icon = this.getStatusIcon(status);\n const statusMessage = this.getStatusMessage(status);\n\n return (\n <Host\n ref={el => (this.summaryComponent = el as HTMLButtonElement)}\n class={`${this.theme} ${this.size} ${this.document ? 'has-document' : ''}`}\n aria-label=\"Click to View Details\"\n onClick={() => this.document && this.toggleDropdown()}\n onBlur={e => this.document && this.handleHideDropdown(e)}\n >\n <span class=\"icon\" innerHTML={icon} />\n <span class=\"content\">{statusMessage}</span>\n\n <div class=\"detail-panel\" ref={el => (this.detailPanel = el as HTMLDivElement)}>\n <div id=\"verdocs-recipient-status-diagram\" />\n {this.recipientStatusIcons.map(icon => (\n <span innerHTML={icon.icon} style={{position: 'absolute', top: `${icon.y}px`, left: `${icon.x}px`}} />\n ))}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"verdocs-status-indicator.js","sourceRoot":"","sources":["../../../../src/components/controls/verdocs-status-indicator/verdocs-status-indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["import {RecipientFlow} from './recipient-flow';\nimport {createPopper, Instance} from '@popperjs/core';\nimport {Component, Prop, Host, h, State} from '@stencil/core';\nimport {IDocument, TDocumentStatus, TRecipientStatus} from '@verdocs/js-sdk/Documents/Documents';\nimport AcceptedLight from './accepted-light.svg';\nimport AcceptedDark from './accepted-dark.svg';\nimport CanceledLight from './canceled-light.svg';\nimport CanceledDark from './canceled-dark.svg';\nimport CompletedLight from './complete-light.svg';\nimport CompletedDark from './complete-dark.svg';\nimport DeclinedLight from './declined-light.svg';\nimport DeclinedDark from './declined-dark.svg';\nimport InProgressLight from './in-progress-light.svg';\nimport InProgressDark from './in-progress-dark.svg';\nimport OpenedLight from './opened-light.svg';\nimport OpenedDark from './opened-dark.svg';\nimport PendingLight from './pending-light.svg';\nimport PendingDark from './pending-dark.svg';\nimport SignedLight from './signed-light.svg';\nimport SignedDark from './signed-dark.svg';\nimport SomeSignedLight from './some-signed-light.svg';\nimport SomeSignedDark from './some-signed-dark.svg';\nimport SubmittedLight from './submitted-light.svg';\nimport SubmittedDark from './submitted-dark.svg';\n\nconst ENTRY_WIDTH = 140;\nconst ENTRY_HEIGHT = 40;\nconst ENTRY_PADDING = 40;\n\n/**\n * Displays an icon and message describing a document's completion status. For convenience, the status may be passed in either\n * directly as a status field or the whole document object may be passed in.\n *\n * If the document is provided, the status flag will indicate the document's overall status. This also makes the component clickable\n * to display a popup panel with per-recipient status data.\n *\n * If the status is provided as a string it can be either a `TRecipientStatus` or `TDocumentStatus` value.\n */\n@Component({\n tag: 'verdocs-status-indicator',\n styleUrl: 'verdocs-status-indicator.scss',\n})\nexport class VerdocsStatusIndicator {\n private summaryComponent?: HTMLButtonElement;\n private detailPanel?: HTMLDivElement;\n private popper?: Instance;\n\n /**\n * The size (height) of the indicator. The small variant is suitable for use in densely populated components such as table rows.\n */\n @Prop() size: 'small' | 'normal' = 'normal';\n\n /**\n * The theme to use for diplay.\n */\n @Prop() theme?: 'dark' | 'light' = 'light';\n\n /**\n * The status to display.\n */\n // The accepted override is here because we don't actually have an official status for that yet, but we plan to add it\n @Prop() status?: TDocumentStatus | TRecipientStatus | 'accepted';\n\n /**\n * The document to display status for. Ignored if `status` is set directly.\n */\n @Prop() document?: IDocument;\n\n @State() isOpen: boolean;\n\n @State() recipientStatusIcons = [];\n\n @State() containerId = `verdocs-status-indicator-${Math.random().toString(36).substring(2, 11)}`;\n\n componentDidLoad() {\n this.popper = createPopper(this.summaryComponent, this.detailPanel, {placement: 'bottom-start', modifiers: [{name: 'offset', options: {offset: [0, 10]}}]});\n\n if (this.document?.recipients) {\n const recipientsAtLevel = [];\n this.document.recipients.forEach(recipient => {\n const level = recipient.sequence - 1;\n recipientsAtLevel[level] ||= [];\n const id = `r-${level}-${recipientsAtLevel[level].length}`;\n recipientsAtLevel[level].push({...recipient, id});\n });\n\n const levelCount = Object.keys(recipientsAtLevel).length;\n\n const canvasHeight = levelCount * ENTRY_HEIGHT + (levelCount + 1) * ENTRY_PADDING;\n let canvasWidth = 0;\n Object.values(recipientsAtLevel).forEach(recipients => {\n let minW = recipients.length * ENTRY_WIDTH + (recipients.length + 1) * ENTRY_PADDING;\n if (minW > canvasWidth) {\n canvasWidth = minW;\n }\n });\n\n const entities = [];\n const lines = [];\n const statusIcons = [];\n\n let y = ENTRY_PADDING;\n Object.entries(recipientsAtLevel).forEach(([level, recipients]) => {\n // To center align here, we figure out how many items are per line and how much leftover space there would be if we just\n // drew them left-to-right. We add half of that as a left offset.\n const renderedItemsWidth = recipients.length * (ENTRY_WIDTH + ENTRY_PADDING);\n const leftoverSpace = canvasWidth - renderedItemsWidth;\n const leftOffset = ENTRY_PADDING / 2 + leftoverSpace / 2;\n\n recipients.forEach((recipient, index) => {\n const [first, last] = (recipient.full_name || 'Unknown').toUpperCase().split(' ');\n const name = `${first} ${last?.substring(0, 1)}`;\n const entity = {\n id: recipient.id,\n text: name,\n icon: this.getStatusIcon(recipient.status),\n x: index * (ENTRY_WIDTH + ENTRY_PADDING) + leftOffset,\n y,\n width: ENTRY_WIDTH,\n height: ENTRY_HEIGHT,\n color: this.getStatusColor(recipient.status),\n radius: 8,\n };\n entities.push(entity);\n\n statusIcons.push({\n icon: this.getStatusIcon(recipient.status),\n x: index * (ENTRY_WIDTH + ENTRY_PADDING) + leftOffset + (ENTRY_WIDTH - 32),\n y: y + ENTRY_HEIGHT / 2 - 13,\n });\n\n recipientsAtLevel[+level - 1]?.forEach(prevRecip => {\n const line = {\n id: `line-${prevRecip.id}-${entity.id}`,\n from: {element: prevRecip.id, point: 'bottom'},\n to: {element: entity.id, point: 'top'},\n color: this.getStatusColor(recipient.status),\n };\n lines.push(line);\n });\n });\n\n y += ENTRY_HEIGHT + ENTRY_PADDING;\n });\n\n this.recipientStatusIcons = statusIcons;\n\n const diagram = RecipientFlow();\n diagram.initalize(`#${this.containerId}`, canvasWidth, canvasHeight);\n diagram.update({entities, lines});\n }\n }\n\n // See https://popper.js.org/docs/v2/tutorial/\n // What we're doing here is clearing event listeners when they aren't needed, to increase performance in lists\n showDropdown() {\n this.isOpen = true;\n this.detailPanel.setAttribute('data-show', '');\n this.detailPanel.removeAttribute('aria-hidden');\n\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: true}],\n }));\n\n this.popper?.update();\n }\n\n handleHideDropdown(e: any) {\n if (e?.target?.localName === 'button' && e?.target?.className === 'arrow') {\n // This event is fired when a menu element is clicked because the button \"loses focus\" then too\n return;\n }\n\n this.hide();\n }\n\n toggleDropdown() {\n if (this.isOpen) {\n this.hide();\n } else {\n this.showDropdown();\n }\n }\n\n hide() {\n this.isOpen = false;\n this.detailPanel.removeAttribute('data-show');\n this.detailPanel.setAttribute('aria-hidden', 'true');\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: false}],\n }));\n }\n\n getStatusColor(status: string) {\n switch (status) {\n case 'invited':\n case 'opened':\n case 'accepted':\n case 'signed':\n return '#654dcb';\n case 'some-signed':\n case 'submitted':\n case 'complete':\n return '#55bc81';\n case 'declined':\n return '#ff0000';\n case 'canceled':\n case 'in progress':\n case 'pending':\n default:\n return '#999999';\n }\n }\n\n getStatusIcon(status: string) {\n switch (status) {\n case 'accepted':\n return this.theme === 'light' ? AcceptedLight : AcceptedDark;\n case 'complete':\n return this.theme === 'light' ? CompletedLight : CompletedDark;\n case 'in progress':\n return this.theme === 'light' ? InProgressLight : InProgressDark;\n case 'canceled':\n return this.theme === 'light' ? CanceledLight : CanceledDark;\n case 'declined':\n return this.theme === 'light' ? DeclinedLight : DeclinedDark;\n case 'invited':\n return this.theme === 'light' ? InProgressLight : InProgressDark;\n case 'opened':\n return this.theme === 'light' ? OpenedLight : OpenedDark;\n case 'signed':\n return this.theme === 'light' ? SignedLight : SignedDark;\n case 'submitted':\n return this.theme === 'light' ? SubmittedLight : SubmittedDark;\n case 'some-signed':\n return this.theme === 'light' ? SomeSignedLight : SomeSignedDark;\n default:\n case 'pending':\n return this.theme === 'light' ? PendingLight : PendingDark;\n }\n }\n\n getStatusMessage(status: string) {\n switch (status) {\n case 'accepted':\n return 'Accepted';\n case 'complete':\n return 'Completed';\n case 'in progress':\n return 'In Progress';\n case 'canceled':\n return 'Cancelled';\n case 'declined':\n return 'Declined';\n case 'invited':\n return 'Invited';\n case 'opened':\n return 'Opened';\n case 'signed':\n return 'Signed';\n case 'submitted':\n return 'Submitted';\n case 'some-signed':\n return 'Partly Signed';\n default:\n case 'pending':\n return 'Pending';\n }\n }\n\n render() {\n // The extra fallback for accepted is to future proof for when we add that.\n let status: string = this.status || this.document?.status || 'pending' || 'accepted';\n if (!this.status && this.document?.recipients) {\n const submittedRecipients = this.document.recipients.filter(r => r.status === 'submitted');\n if (submittedRecipients.length > 0 && submittedRecipients.length !== this.document.recipients.length) {\n status = 'some-signed';\n }\n }\n\n const icon = this.getStatusIcon(status);\n const statusMessage = this.getStatusMessage(status);\n\n return (\n <Host\n ref={el => (this.summaryComponent = el as HTMLButtonElement)}\n class={`${this.theme} ${this.size} ${this.document ? 'has-document' : ''}`}\n aria-label=\"Click to View Details\"\n onClick={() => this.document && this.toggleDropdown()}\n onBlur={e => this.document && this.handleHideDropdown(e)}\n >\n <span class=\"icon\" innerHTML={icon} />\n <span class=\"content\">{statusMessage}</span>\n\n <div class=\"detail-panel\" ref={el => (this.detailPanel = el as HTMLDivElement)}>\n <div id={`${this.containerId}`} />\n {this.recipientStatusIcons.map(icon => (\n <span innerHTML={icon.icon} style={{position: 'absolute', top: `${icon.y}px`, left: `${icon.x}px`}} />\n ))}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -63,39 +63,37 @@ export class VerdocsAuth {
63
63
  this.loginError = null;
64
64
  }
65
65
  componentDidLoad() {
66
+ var _a, _b;
66
67
  console.log('loaded', this);
67
68
  this.endpoint.loadSession();
68
69
  if (this.endpoint.session) {
69
70
  this.isAuthenticated = true;
70
71
  this.activeSession = this.endpoint.session;
71
- this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
72
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: true, session: this.endpoint.session });
72
73
  }
73
74
  else {
74
- this.authenticated.emit({ authenticated: false, session: null });
75
+ (_b = this.authenticated) === null || _b === void 0 ? void 0 : _b.emit({ authenticated: false, session: null });
75
76
  }
76
77
  }
77
- // handleSelectOption(option: IMenuOption) {
78
- // this.isAuthenticated = false;
79
- // this.authenticated.emit(option);
80
- // }
81
78
  handleLogin() {
82
79
  this.loggingIn = true;
83
80
  Auth.authenticateUser(this.endpoint, { username: this.username, password: this.password })
84
81
  .then(r => {
82
+ var _a;
85
83
  this.loggingIn = false;
86
84
  this.endpoint.setToken(r.accessToken);
87
85
  this.activeSession = this.endpoint.session;
88
86
  this.isAuthenticated = true;
89
- this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
87
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: true, session: this.endpoint.session });
90
88
  })
91
89
  .catch(e => {
92
- var _a, _b, _c;
90
+ var _a, _b, _c, _d, _e;
93
91
  console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));
94
92
  this.loggingIn = false;
95
93
  this.activeSession = null;
96
- this.authenticated.emit({ authenticated: false, session: null });
97
- this.error.emit(new SDKError(e.message, (_a = e.response) === null || _a === void 0 ? void 0 : _a.status, (_b = e.response) === null || _b === void 0 ? void 0 : _b.data));
98
- if (((_c = e === null || e === void 0 ? void 0 : e.response) === null || _c === void 0 ? void 0 : _c.status) === 403) {
94
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: false, session: null });
95
+ (_b = this.sdkError) === null || _b === void 0 ? void 0 : _b.emit(new SDKError(e.message, (_c = e.response) === null || _c === void 0 ? void 0 : _c.status, (_d = e.response) === null || _d === void 0 ? void 0 : _d.data));
96
+ if (((_e = e === null || e === void 0 ? void 0 : e.response) === null || _e === void 0 ? void 0 : _e.status) === 403) {
99
97
  this.loginError = 'Please check your username and password and try again.';
100
98
  }
101
99
  });
@@ -1 +1 @@
1
- {"version":3,"file":"verdocs-auth.js","sourceRoot":"","sources":["../../../../src/components/embeds/verdocs-auth/verdocs-auth.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Auth} from '@verdocs/js-sdk/Users';\nimport {Component, Prop, State, h, Event, EventEmitter} from '@stencil/core';\nimport {VerdocsEndpoint, TSession} from '@verdocs/js-sdk';\nimport {SDKError} from '../../../utils/errors';\n\nexport interface IAuthStatus {\n authenticated: boolean;\n session: TSession;\n}\n\n/**\n * Display an authentication dialog that allows the user to login or sign up. Callbacks are provided for events that\n * occur during the process (especially successful completion). The success callback will be fired immediately if the\n * user is already authenticated with a valid session, so this component may not always display visibly.\n *\n * To simplify some types of authentication flows, a visibility flag can force this component to never display. This\n * allows you to susbcribe to notifications from the\n *\n * This embed is responsive / mobile-friendly, but the calling application should provide at least a 300px wide\n * container to allow sufficient space for the required forms.\n *\n * As noted below, the primary event is `authenticated`. This will always be fired at least once, immediately after\n * the widget is rendered and the user's status has been checked. It may be fired again as the user completes (or\n * cancels) authentication steps.\n *\n * Authentication is required to demonstrate this Element. You may do this in Storybook by using the Auth\n * embed. This Element will reuse the same session produced by logging in via that Embed.\n *\n * ```typescript\n * interface IAuthStatus {\n * // If true, the user is authenticated with a valid session\n * authenticated: boolean;\n *\n * // Details for the user's session\n * session: IActiveSession | null;\n * }\n * ```\n */\n@Component({\n tag: 'verdocs-auth',\n styleUrl: 'verdocs-auth.scss',\n shadow: false,\n})\nexport class VerdocsAuth {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display\n * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may\n * use this to verify if a user has a valid session without needing a separate call to Verdocs JS SDK.\n */\n @Prop() visible: boolean = true;\n\n /**\n * By default, a Verdocs logo will be displayed above the login/signup forms. This may be used to\n * override its source. (Alternatively, you may simply hide it via CSS overrides.) Logos should be\n * in SVG format for best results.\n */\n @Prop() logo: string = 'https://verdocs.com/assets/blue-logo.svg';\n\n /**\n * If the user is authenticated, this embed will normally render invisibly. If debug is set true, a summary\n * if the user's session details will be displayed instead. This may be useful while debugging authentication\n * flows in new applications.\n */\n @Prop() debug: boolean = false;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) authenticated: EventEmitter<IAuthStatus>;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) sdkError: EventEmitter<SDKError>;\n\n @State() isAuthenticated: boolean = false;\n @State() displayMode: string = 'login';\n @State() username: string = '';\n @State() password: string = '';\n @State() loggingIn: boolean = false;\n @State() activeSession: TSession = null;\n @State() loginError: string | null = null;\n\n componentDidLoad() {\n console.log('loaded', this);\n this.endpoint.loadSession();\n if (this.endpoint.session) {\n this.isAuthenticated = true;\n this.activeSession = this.endpoint.session;\n this.authenticated.emit({authenticated: true, session: this.endpoint.session});\n } else {\n this.authenticated.emit({authenticated: false, session: null});\n }\n }\n\n // handleSelectOption(option: IMenuOption) {\n // this.isAuthenticated = false;\n // this.authenticated.emit(option);\n // }\n\n handleLogin() {\n this.loggingIn = true;\n Auth.authenticateUser(this.endpoint, {username: this.username, password: this.password})\n .then(r => {\n this.loggingIn = false;\n this.endpoint.setToken(r.accessToken);\n this.activeSession = this.endpoint.session;\n this.isAuthenticated = true;\n this.authenticated.emit({authenticated: true, session: this.endpoint.session});\n })\n .catch(e => {\n console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));\n this.loggingIn = false;\n this.activeSession = null;\n this.authenticated.emit({authenticated: false, session: null});\n this.error.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n\n if (e?.response?.status === 403) {\n this.loginError = 'Please check your username and password and try again.';\n }\n });\n }\n\n handleLogout() {\n this.endpoint.clearSession();\n this.isAuthenticated = false;\n this.authenticated.emit({authenticated: false, session: null});\n }\n\n handleClearError() {\n this.loginError = null;\n }\n\n render() {\n if (!this.visible) {\n return <div style={{display: 'none'}}>Verdocs Auth Placeholder</div>;\n }\n\n if (this.isAuthenticated) {\n if (this.debug) {\n return (\n <div class=\"status-result debug\">\n <verdocs-button label=\"Logout\" disabled={this.loggingIn} onPress={() => this.handleLogout()} />\n </div>\n );\n }\n\n return <div class=\"status-result\">Authenticated</div>;\n }\n\n if (this.displayMode === 'signup') {\n return (\n <div class=\"signup-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Sign up for an account</h3>\n <h4>\n Already have an account?\n <verdocs-button label=\"Log In\" variant=\"text\" onClick={() => (this.displayMode = 'login')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Signup\"\n disabled={this.loggingIn}\n onPress={() => this.handleLogin()}\n style={{display: 'flex', justifyContent: 'center', margin: '30px auto 0'}}\n />\n </form>\n </div>\n );\n }\n\n return (\n <div class=\"login-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Log in to your account</h3>\n <h4>\n Don't have an account?\n <verdocs-button label=\"Sign Up\" variant=\"text\" onClick={() => (this.displayMode = 'signup')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Forgot Your Password?\"\n variant=\"text\"\n onClick={() => (this.displayMode = 'signup')}\n disabled={this.loggingIn}\n style={{display: 'flex', justifyContent: 'center', margin: '10px auto 20px'}}\n />\n\n <verdocs-button label=\"Login\" disabled={this.loggingIn} onPress={() => this.handleLogin()} style={{display: 'flex', justifyContent: 'center', margin: '10px auto 0'}} />\n </form>\n\n {this.loginError ? <verdocs-ok-dialog open={true} heading=\"Login Error\" message={this.loginError} onClosed={() => this.handleClearError()} /> : <div />}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"verdocs-auth.js","sourceRoot":"","sources":["../../../../src/components/embeds/verdocs-auth/verdocs-auth.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Auth} from '@verdocs/js-sdk/Users';\nimport {Component, Prop, State, h, Event, EventEmitter} from '@stencil/core';\nimport {VerdocsEndpoint, TSession} from '@verdocs/js-sdk';\nimport {SDKError} from '../../../utils/errors';\n\nexport interface IAuthStatus {\n authenticated: boolean;\n session: TSession;\n}\n\n/**\n * Display an authentication dialog that allows the user to login or sign up. Callbacks are provided for events that\n * occur during the process (especially successful completion). The success callback will be fired immediately if the\n * user is already authenticated with a valid session, so this component may not always display visibly.\n *\n * To simplify some types of authentication flows, a visibility flag can force this component to never display. This\n * allows you to susbcribe to notifications from the\n *\n * This embed is responsive / mobile-friendly, but the calling application should provide at least a 300px wide\n * container to allow sufficient space for the required forms.\n *\n * As noted below, the primary event is `authenticated`. This will always be fired at least once, immediately after\n * the widget is rendered and the user's status has been checked. It may be fired again as the user completes (or\n * cancels) authentication steps.\n *\n * Authentication is required to demonstrate this Element. You may do this in Storybook by using the Auth\n * embed. This Element will reuse the same session produced by logging in via that Embed.\n *\n * ```typescript\n * interface IAuthStatus {\n * // If true, the user is authenticated with a valid session\n * authenticated: boolean;\n *\n * // Details for the user's session\n * session: IActiveSession | null;\n * }\n * ```\n */\n@Component({\n tag: 'verdocs-auth',\n styleUrl: 'verdocs-auth.scss',\n shadow: false,\n})\nexport class VerdocsAuth {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display\n * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may\n * use this to verify if a user has a valid session without needing a separate call to Verdocs JS SDK.\n */\n @Prop() visible: boolean = true;\n\n /**\n * By default, a Verdocs logo will be displayed above the login/signup forms. This may be used to\n * override its source. (Alternatively, you may simply hide it via CSS overrides.) Logos should be\n * in SVG format for best results.\n */\n @Prop() logo: string = 'https://verdocs.com/assets/blue-logo.svg';\n\n /**\n * If the user is authenticated, this embed will normally render invisibly. If debug is set true, a summary\n * if the user's session details will be displayed instead. This may be useful while debugging authentication\n * flows in new applications.\n */\n @Prop() debug: boolean = false;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) authenticated: EventEmitter<IAuthStatus>;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) sdkError: EventEmitter<SDKError>;\n\n @State() isAuthenticated: boolean = false;\n @State() displayMode: string = 'login';\n @State() username: string = '';\n @State() password: string = '';\n @State() loggingIn: boolean = false;\n @State() activeSession: TSession = null;\n @State() loginError: string | null = null;\n\n componentDidLoad() {\n console.log('loaded', this);\n this.endpoint.loadSession();\n if (this.endpoint.session) {\n this.isAuthenticated = true;\n this.activeSession = this.endpoint.session;\n this.authenticated?.emit({authenticated: true, session: this.endpoint.session});\n } else {\n this.authenticated?.emit({authenticated: false, session: null});\n }\n }\n\n handleLogin() {\n this.loggingIn = true;\n Auth.authenticateUser(this.endpoint, {username: this.username, password: this.password})\n .then(r => {\n this.loggingIn = false;\n this.endpoint.setToken(r.accessToken);\n this.activeSession = this.endpoint.session;\n this.isAuthenticated = true;\n this.authenticated?.emit({authenticated: true, session: this.endpoint.session});\n })\n .catch(e => {\n console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));\n this.loggingIn = false;\n this.activeSession = null;\n this.authenticated?.emit({authenticated: false, session: null});\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n\n if (e?.response?.status === 403) {\n this.loginError = 'Please check your username and password and try again.';\n }\n });\n }\n\n handleLogout() {\n this.endpoint.clearSession();\n this.isAuthenticated = false;\n this.authenticated.emit({authenticated: false, session: null});\n }\n\n handleClearError() {\n this.loginError = null;\n }\n\n render() {\n if (!this.visible) {\n return <div style={{display: 'none'}}>Verdocs Auth Placeholder</div>;\n }\n\n if (this.isAuthenticated) {\n if (this.debug) {\n return (\n <div class=\"status-result debug\">\n <verdocs-button label=\"Logout\" disabled={this.loggingIn} onPress={() => this.handleLogout()} />\n </div>\n );\n }\n\n return <div class=\"status-result\">Authenticated</div>;\n }\n\n if (this.displayMode === 'signup') {\n return (\n <div class=\"signup-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Sign up for an account</h3>\n <h4>\n Already have an account?\n <verdocs-button label=\"Log In\" variant=\"text\" onClick={() => (this.displayMode = 'login')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Signup\"\n disabled={this.loggingIn}\n onPress={() => this.handleLogin()}\n style={{display: 'flex', justifyContent: 'center', margin: '30px auto 0'}}\n />\n </form>\n </div>\n );\n }\n\n return (\n <div class=\"login-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Log in to your account</h3>\n <h4>\n Don't have an account?\n <verdocs-button label=\"Sign Up\" variant=\"text\" onClick={() => (this.displayMode = 'signup')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Forgot Your Password?\"\n variant=\"text\"\n onClick={() => (this.displayMode = 'signup')}\n disabled={this.loggingIn}\n style={{display: 'flex', justifyContent: 'center', margin: '10px auto 20px'}}\n />\n\n <verdocs-button label=\"Login\" disabled={this.loggingIn} onPress={() => this.handleLogin()} style={{display: 'flex', justifyContent: 'center', margin: '10px auto 0'}} />\n </form>\n\n {this.loginError ? <verdocs-ok-dialog open={true} heading=\"Login Error\" message={this.loginError} onClosed={() => this.handleClearError()} /> : <div />}\n </div>\n );\n }\n}\n"]}
@@ -72,39 +72,37 @@ const VerdocsAuth$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
72
72
  this.loginError = null;
73
73
  }
74
74
  componentDidLoad() {
75
+ var _a, _b;
75
76
  console.log('loaded', this);
76
77
  this.endpoint.loadSession();
77
78
  if (this.endpoint.session) {
78
79
  this.isAuthenticated = true;
79
80
  this.activeSession = this.endpoint.session;
80
- this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
81
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: true, session: this.endpoint.session });
81
82
  }
82
83
  else {
83
- this.authenticated.emit({ authenticated: false, session: null });
84
+ (_b = this.authenticated) === null || _b === void 0 ? void 0 : _b.emit({ authenticated: false, session: null });
84
85
  }
85
86
  }
86
- // handleSelectOption(option: IMenuOption) {
87
- // this.isAuthenticated = false;
88
- // this.authenticated.emit(option);
89
- // }
90
87
  handleLogin() {
91
88
  this.loggingIn = true;
92
89
  authenticateUser(this.endpoint, { username: this.username, password: this.password })
93
90
  .then(r => {
91
+ var _a;
94
92
  this.loggingIn = false;
95
93
  this.endpoint.setToken(r.accessToken);
96
94
  this.activeSession = this.endpoint.session;
97
95
  this.isAuthenticated = true;
98
- this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
96
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: true, session: this.endpoint.session });
99
97
  })
100
98
  .catch(e => {
101
- var _a, _b, _c;
99
+ var _a, _b, _c, _d, _e;
102
100
  console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));
103
101
  this.loggingIn = false;
104
102
  this.activeSession = null;
105
- this.authenticated.emit({ authenticated: false, session: null });
106
- this.error.emit(new SDKError(e.message, (_a = e.response) === null || _a === void 0 ? void 0 : _a.status, (_b = e.response) === null || _b === void 0 ? void 0 : _b.data));
107
- if (((_c = e === null || e === void 0 ? void 0 : e.response) === null || _c === void 0 ? void 0 : _c.status) === 403) {
103
+ (_a = this.authenticated) === null || _a === void 0 ? void 0 : _a.emit({ authenticated: false, session: null });
104
+ (_b = this.sdkError) === null || _b === void 0 ? void 0 : _b.emit(new SDKError(e.message, (_c = e.response) === null || _c === void 0 ? void 0 : _c.status, (_d = e.response) === null || _d === void 0 ? void 0 : _d.data));
105
+ if (((_e = e === null || e === void 0 ? void 0 : e.response) === null || _e === void 0 ? void 0 : _e.status) === 403) {
108
106
  this.loginError = 'Please check your username and password and try again.';
109
107
  }
110
108
  });
@@ -1 +1 @@
1
- {"file":"verdocs-auth.js","mappings":"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","names":["VerdocsAuth","Auth.authenticateUser"],"sources":["./node_modules/@verdocs/js-sdk/Users/Auth.js","./src/utils/errors.ts","./src/components/embeds/verdocs-auth/verdocs-auth.scss?tag=verdocs-auth","./src/components/embeds/verdocs-auth/verdocs-auth.tsx"],"sourcesContent":["/**\n * Authenticate to Verdocs via user/password authentication\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.authenticateUser({ username: 'test@test.com', password: 'PASSWORD' });\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var authenticateUser = function (endpoint, params) {\n return endpoint.api //\n .post('/authentication/login', params)\n .then(function (r) { return r.data; });\n};\n/**\n * Authenticate to Verdocs via client ID / Secret authentication. **NOTE: This is only suitable for\n * NodeJS server-side applications. Never expose your Client Secret in a Web or Mobile app!** Also note\n * that access tokens may be cached by server-side apps (and this is recommended) but do expire after 2\n * hours. This expiration may change based on future security needs. Application developers are encouraged\n * to check the `exp` expiration field in the response accessToken and renew tokens after they expire.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.authenticateApp({ client_id: 'CLIENTID', client_secret: 'SECRET' });\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var authenticateApp = function (endpoint, params) {\n return endpoint.api //\n .post('/authentication/login_client', {}, { headers: params })\n .then(function (r) { return r.data; });\n};\n/**\n * Validate a token. Only Verdocs tokens will be accepted. Most applications can decode tokens locally,\n * because tokens will be validated when API calls are made anyway. However, high-security applications\n * may use this endpoint to check if a token has been revoked.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {valid} = await Auth.validateToken({ token });\n * if (!valid) {\n * window.alert('Session invalid or expired. Please re-authenticate.');\n * }\n * ```\n */\nexport var validateToken = function (endpoint, params) {\n return endpoint.api //\n .post('/token/isValid', params)\n .then(function (r) { return r.data; });\n};\n/**\n * If called before the session expires, this will refresh the caller's session and tokens.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.refreshTokens();\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var refreshTokens = function (endpoint) {\n return endpoint.api //\n .get('/token')\n .then(function (r) { return r.data; });\n};\n/**\n * Update the caller's password. To help prevent CSRF attack vectors, the user's old password and email address are required.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {status, message} = await Auth.updatePassword({ email, oldPassword, newPassword });\n * if (status !== 'OK') {\n * window.alert(`Password reset error: ${message}`);\n * }\n * ```\n */\nexport var updatePassword = function (endpoint, params) {\n return endpoint.api //\n .put('/user/update_password', params)\n .then(function (r) { return r.data; });\n};\n/**\n * Update the caller's email address.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {profiles} = await Auth.updateEmail({ email: newEmail });\n * ```\n */\nexport var updateEmail = function (endpoint, params) {\n return endpoint.api //\n .put('/user/update_email', params)\n .then(function (r) { return r.data; });\n};\n","/**\n * Passed to parent components in certain callbacks with the lower-level JS-SDK emits an error\n */\nexport class SDKError extends Error {\n code;\n statusCode;\n response;\n\n constructor(message: string, statusCode: number, response: any) {\n super(message || 'SDK Error');\n this.response = response;\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-auth {\n font-family: $verdocs-primary-font;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .login-form,\n .signup-form {\n background: $verdocs-grey-4;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n display: flex;\n padding: 20px;\n width: 300px;\n max-width: 100%;\n }\n\n .logo {\n margin: 20px 0 30px;\n width: 128px;\n max-width: 100%;\n }\n\n h3 {\n text-align: center;\n font-weight: 400;\n font-size: 16px;\n line-height: 1.75;\n margin: 0;\n }\n\n h4 {\n text-align: center;\n font-weight: 400;\n font-size: 14px;\n line-height: 1.43;\n margin: 0;\n }\n\n .status-result {\n display: none;\n\n &.debug {\n white-space: pre-wrap;\n font-size: 14px;\n background: #fff;\n padding: 10px;\n display: block;\n flex-direction: row;\n justify-content: center;\n }\n }\n\n form {\n width: 100%;\n }\n\n verdocs-text-input {\n margin-bottom: 10px;\n }\n}\n","import {Auth} from '@verdocs/js-sdk/Users';\nimport {Component, Prop, State, h, Event, EventEmitter} from '@stencil/core';\nimport {VerdocsEndpoint, TSession} from '@verdocs/js-sdk';\nimport {SDKError} from '../../../utils/errors';\n\nexport interface IAuthStatus {\n authenticated: boolean;\n session: TSession;\n}\n\n/**\n * Display an authentication dialog that allows the user to login or sign up. Callbacks are provided for events that\n * occur during the process (especially successful completion). The success callback will be fired immediately if the\n * user is already authenticated with a valid session, so this component may not always display visibly.\n *\n * To simplify some types of authentication flows, a visibility flag can force this component to never display. This\n * allows you to susbcribe to notifications from the\n *\n * This embed is responsive / mobile-friendly, but the calling application should provide at least a 300px wide\n * container to allow sufficient space for the required forms.\n *\n * As noted below, the primary event is `authenticated`. This will always be fired at least once, immediately after\n * the widget is rendered and the user's status has been checked. It may be fired again as the user completes (or\n * cancels) authentication steps.\n *\n * Authentication is required to demonstrate this Element. You may do this in Storybook by using the Auth\n * embed. This Element will reuse the same session produced by logging in via that Embed.\n *\n * ```typescript\n * interface IAuthStatus {\n * // If true, the user is authenticated with a valid session\n * authenticated: boolean;\n *\n * // Details for the user's session\n * session: IActiveSession | null;\n * }\n * ```\n */\n@Component({\n tag: 'verdocs-auth',\n styleUrl: 'verdocs-auth.scss',\n shadow: false,\n})\nexport class VerdocsAuth {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display\n * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may\n * use this to verify if a user has a valid session without needing a separate call to Verdocs JS SDK.\n */\n @Prop() visible: boolean = true;\n\n /**\n * By default, a Verdocs logo will be displayed above the login/signup forms. This may be used to\n * override its source. (Alternatively, you may simply hide it via CSS overrides.) Logos should be\n * in SVG format for best results.\n */\n @Prop() logo: string = 'https://verdocs.com/assets/blue-logo.svg';\n\n /**\n * If the user is authenticated, this embed will normally render invisibly. If debug is set true, a summary\n * if the user's session details will be displayed instead. This may be useful while debugging authentication\n * flows in new applications.\n */\n @Prop() debug: boolean = false;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) authenticated: EventEmitter<IAuthStatus>;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) sdkError: EventEmitter<SDKError>;\n\n @State() isAuthenticated: boolean = false;\n @State() displayMode: string = 'login';\n @State() username: string = '';\n @State() password: string = '';\n @State() loggingIn: boolean = false;\n @State() activeSession: TSession = null;\n @State() loginError: string | null = null;\n\n componentDidLoad() {\n console.log('loaded', this);\n this.endpoint.loadSession();\n if (this.endpoint.session) {\n this.isAuthenticated = true;\n this.activeSession = this.endpoint.session;\n this.authenticated.emit({authenticated: true, session: this.endpoint.session});\n } else {\n this.authenticated.emit({authenticated: false, session: null});\n }\n }\n\n // handleSelectOption(option: IMenuOption) {\n // this.isAuthenticated = false;\n // this.authenticated.emit(option);\n // }\n\n handleLogin() {\n this.loggingIn = true;\n Auth.authenticateUser(this.endpoint, {username: this.username, password: this.password})\n .then(r => {\n this.loggingIn = false;\n this.endpoint.setToken(r.accessToken);\n this.activeSession = this.endpoint.session;\n this.isAuthenticated = true;\n this.authenticated.emit({authenticated: true, session: this.endpoint.session});\n })\n .catch(e => {\n console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));\n this.loggingIn = false;\n this.activeSession = null;\n this.authenticated.emit({authenticated: false, session: null});\n this.error.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n\n if (e?.response?.status === 403) {\n this.loginError = 'Please check your username and password and try again.';\n }\n });\n }\n\n handleLogout() {\n this.endpoint.clearSession();\n this.isAuthenticated = false;\n this.authenticated.emit({authenticated: false, session: null});\n }\n\n handleClearError() {\n this.loginError = null;\n }\n\n render() {\n if (!this.visible) {\n return <div style={{display: 'none'}}>Verdocs Auth Placeholder</div>;\n }\n\n if (this.isAuthenticated) {\n if (this.debug) {\n return (\n <div class=\"status-result debug\">\n <verdocs-button label=\"Logout\" disabled={this.loggingIn} onPress={() => this.handleLogout()} />\n </div>\n );\n }\n\n return <div class=\"status-result\">Authenticated</div>;\n }\n\n if (this.displayMode === 'signup') {\n return (\n <div class=\"signup-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Sign up for an account</h3>\n <h4>\n Already have an account?\n <verdocs-button label=\"Log In\" variant=\"text\" onClick={() => (this.displayMode = 'login')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Signup\"\n disabled={this.loggingIn}\n onPress={() => this.handleLogin()}\n style={{display: 'flex', justifyContent: 'center', margin: '30px auto 0'}}\n />\n </form>\n </div>\n );\n }\n\n return (\n <div class=\"login-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Log in to your account</h3>\n <h4>\n Don't have an account?\n <verdocs-button label=\"Sign Up\" variant=\"text\" onClick={() => (this.displayMode = 'signup')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Forgot Your Password?\"\n variant=\"text\"\n onClick={() => (this.displayMode = 'signup')}\n disabled={this.loggingIn}\n style={{display: 'flex', justifyContent: 'center', margin: '10px auto 20px'}}\n />\n\n <verdocs-button label=\"Login\" disabled={this.loggingIn} onPress={() => this.handleLogin()} style={{display: 'flex', justifyContent: 'center', margin: '10px auto 0'}} />\n </form>\n\n {this.loginError ? <verdocs-ok-dialog open={true} heading=\"Login Error\" message={this.loginError} onClosed={() => this.handleClearError()} /> : <div />}\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"verdocs-auth.js","mappings":"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","names":["VerdocsAuth","Auth.authenticateUser"],"sources":["./node_modules/@verdocs/js-sdk/Users/Auth.js","./src/utils/errors.ts","./src/components/embeds/verdocs-auth/verdocs-auth.scss?tag=verdocs-auth","./src/components/embeds/verdocs-auth/verdocs-auth.tsx"],"sourcesContent":["/**\n * Authenticate to Verdocs via user/password authentication\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.authenticateUser({ username: 'test@test.com', password: 'PASSWORD' });\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var authenticateUser = function (endpoint, params) {\n return endpoint.api //\n .post('/authentication/login', params)\n .then(function (r) { return r.data; });\n};\n/**\n * Authenticate to Verdocs via client ID / Secret authentication. **NOTE: This is only suitable for\n * NodeJS server-side applications. Never expose your Client Secret in a Web or Mobile app!** Also note\n * that access tokens may be cached by server-side apps (and this is recommended) but do expire after 2\n * hours. This expiration may change based on future security needs. Application developers are encouraged\n * to check the `exp` expiration field in the response accessToken and renew tokens after they expire.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.authenticateApp({ client_id: 'CLIENTID', client_secret: 'SECRET' });\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var authenticateApp = function (endpoint, params) {\n return endpoint.api //\n .post('/authentication/login_client', {}, { headers: params })\n .then(function (r) { return r.data; });\n};\n/**\n * Validate a token. Only Verdocs tokens will be accepted. Most applications can decode tokens locally,\n * because tokens will be validated when API calls are made anyway. However, high-security applications\n * may use this endpoint to check if a token has been revoked.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {valid} = await Auth.validateToken({ token });\n * if (!valid) {\n * window.alert('Session invalid or expired. Please re-authenticate.');\n * }\n * ```\n */\nexport var validateToken = function (endpoint, params) {\n return endpoint.api //\n .post('/token/isValid', params)\n .then(function (r) { return r.data; });\n};\n/**\n * If called before the session expires, this will refresh the caller's session and tokens.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n * import {Transport} from '@verdocs/js-sdk/HTTP';\n *\n * const {accessToken} = await Auth.refreshTokens();\n * Transport.setAuthToken(accessToken);\n * ```\n */\nexport var refreshTokens = function (endpoint) {\n return endpoint.api //\n .get('/token')\n .then(function (r) { return r.data; });\n};\n/**\n * Update the caller's password. To help prevent CSRF attack vectors, the user's old password and email address are required.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {status, message} = await Auth.updatePassword({ email, oldPassword, newPassword });\n * if (status !== 'OK') {\n * window.alert(`Password reset error: ${message}`);\n * }\n * ```\n */\nexport var updatePassword = function (endpoint, params) {\n return endpoint.api //\n .put('/user/update_password', params)\n .then(function (r) { return r.data; });\n};\n/**\n * Update the caller's email address.\n *\n * ```typescript\n * import {Auth} from '@verdocs/js-sdk/Auth';\n *\n * const {profiles} = await Auth.updateEmail({ email: newEmail });\n * ```\n */\nexport var updateEmail = function (endpoint, params) {\n return endpoint.api //\n .put('/user/update_email', params)\n .then(function (r) { return r.data; });\n};\n","/**\n * Passed to parent components in certain callbacks with the lower-level JS-SDK emits an error\n */\nexport class SDKError extends Error {\n code;\n statusCode;\n response;\n\n constructor(message: string, statusCode: number, response: any) {\n super(message || 'SDK Error');\n this.response = response;\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-auth {\n font-family: $verdocs-primary-font;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .login-form,\n .signup-form {\n background: $verdocs-grey-4;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n display: flex;\n padding: 20px;\n width: 300px;\n max-width: 100%;\n }\n\n .logo {\n margin: 20px 0 30px;\n width: 128px;\n max-width: 100%;\n }\n\n h3 {\n text-align: center;\n font-weight: 400;\n font-size: 16px;\n line-height: 1.75;\n margin: 0;\n }\n\n h4 {\n text-align: center;\n font-weight: 400;\n font-size: 14px;\n line-height: 1.43;\n margin: 0;\n }\n\n .status-result {\n display: none;\n\n &.debug {\n white-space: pre-wrap;\n font-size: 14px;\n background: #fff;\n padding: 10px;\n display: block;\n flex-direction: row;\n justify-content: center;\n }\n }\n\n form {\n width: 100%;\n }\n\n verdocs-text-input {\n margin-bottom: 10px;\n }\n}\n","import {Auth} from '@verdocs/js-sdk/Users';\nimport {Component, Prop, State, h, Event, EventEmitter} from '@stencil/core';\nimport {VerdocsEndpoint, TSession} from '@verdocs/js-sdk';\nimport {SDKError} from '../../../utils/errors';\n\nexport interface IAuthStatus {\n authenticated: boolean;\n session: TSession;\n}\n\n/**\n * Display an authentication dialog that allows the user to login or sign up. Callbacks are provided for events that\n * occur during the process (especially successful completion). The success callback will be fired immediately if the\n * user is already authenticated with a valid session, so this component may not always display visibly.\n *\n * To simplify some types of authentication flows, a visibility flag can force this component to never display. This\n * allows you to susbcribe to notifications from the\n *\n * This embed is responsive / mobile-friendly, but the calling application should provide at least a 300px wide\n * container to allow sufficient space for the required forms.\n *\n * As noted below, the primary event is `authenticated`. This will always be fired at least once, immediately after\n * the widget is rendered and the user's status has been checked. It may be fired again as the user completes (or\n * cancels) authentication steps.\n *\n * Authentication is required to demonstrate this Element. You may do this in Storybook by using the Auth\n * embed. This Element will reuse the same session produced by logging in via that Embed.\n *\n * ```typescript\n * interface IAuthStatus {\n * // If true, the user is authenticated with a valid session\n * authenticated: boolean;\n *\n * // Details for the user's session\n * session: IActiveSession | null;\n * }\n * ```\n */\n@Component({\n tag: 'verdocs-auth',\n styleUrl: 'verdocs-auth.scss',\n shadow: false,\n})\nexport class VerdocsAuth {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display\n * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may\n * use this to verify if a user has a valid session without needing a separate call to Verdocs JS SDK.\n */\n @Prop() visible: boolean = true;\n\n /**\n * By default, a Verdocs logo will be displayed above the login/signup forms. This may be used to\n * override its source. (Alternatively, you may simply hide it via CSS overrides.) Logos should be\n * in SVG format for best results.\n */\n @Prop() logo: string = 'https://verdocs.com/assets/blue-logo.svg';\n\n /**\n * If the user is authenticated, this embed will normally render invisibly. If debug is set true, a summary\n * if the user's session details will be displayed instead. This may be useful while debugging authentication\n * flows in new applications.\n */\n @Prop() debug: boolean = false;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) authenticated: EventEmitter<IAuthStatus>;\n\n /**\n * Event fired when session authentication process has completed. Check the event contents for completion status.\n */\n @Event({composed: true}) sdkError: EventEmitter<SDKError>;\n\n @State() isAuthenticated: boolean = false;\n @State() displayMode: string = 'login';\n @State() username: string = '';\n @State() password: string = '';\n @State() loggingIn: boolean = false;\n @State() activeSession: TSession = null;\n @State() loginError: string | null = null;\n\n componentDidLoad() {\n console.log('loaded', this);\n this.endpoint.loadSession();\n if (this.endpoint.session) {\n this.isAuthenticated = true;\n this.activeSession = this.endpoint.session;\n this.authenticated?.emit({authenticated: true, session: this.endpoint.session});\n } else {\n this.authenticated?.emit({authenticated: false, session: null});\n }\n }\n\n handleLogin() {\n this.loggingIn = true;\n Auth.authenticateUser(this.endpoint, {username: this.username, password: this.password})\n .then(r => {\n this.loggingIn = false;\n this.endpoint.setToken(r.accessToken);\n this.activeSession = this.endpoint.session;\n this.isAuthenticated = true;\n this.authenticated?.emit({authenticated: true, session: this.endpoint.session});\n })\n .catch(e => {\n console.log('[VERDOCS] Login error', e.response, JSON.stringify(e));\n this.loggingIn = false;\n this.activeSession = null;\n this.authenticated?.emit({authenticated: false, session: null});\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n\n if (e?.response?.status === 403) {\n this.loginError = 'Please check your username and password and try again.';\n }\n });\n }\n\n handleLogout() {\n this.endpoint.clearSession();\n this.isAuthenticated = false;\n this.authenticated.emit({authenticated: false, session: null});\n }\n\n handleClearError() {\n this.loginError = null;\n }\n\n render() {\n if (!this.visible) {\n return <div style={{display: 'none'}}>Verdocs Auth Placeholder</div>;\n }\n\n if (this.isAuthenticated) {\n if (this.debug) {\n return (\n <div class=\"status-result debug\">\n <verdocs-button label=\"Logout\" disabled={this.loggingIn} onPress={() => this.handleLogout()} />\n </div>\n );\n }\n\n return <div class=\"status-result\">Authenticated</div>;\n }\n\n if (this.displayMode === 'signup') {\n return (\n <div class=\"signup-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Sign up for an account</h3>\n <h4>\n Already have an account?\n <verdocs-button label=\"Log In\" variant=\"text\" onClick={() => (this.displayMode = 'login')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Signup\"\n disabled={this.loggingIn}\n onPress={() => this.handleLogin()}\n style={{display: 'flex', justifyContent: 'center', margin: '30px auto 0'}}\n />\n </form>\n </div>\n );\n }\n\n return (\n <div class=\"login-form\">\n <img src={this.logo} alt=\"Verdocs Logo\" class=\"logo\" />\n\n <h3>Log in to your account</h3>\n <h4>\n Don't have an account?\n <verdocs-button label=\"Sign Up\" variant=\"text\" onClick={() => (this.displayMode = 'signup')} disabled={this.loggingIn} />\n </h4>\n\n <form onSubmit={() => this.handleLogin()}>\n <verdocs-text-input label=\"Email\" autocomplete=\"username\" value={this.username} onFieldInput={e => (this.username = e.detail)} disabled={this.loggingIn} />\n <verdocs-text-input\n label=\"Password\"\n type=\"password\"\n autocomplete=\"current-password\"\n value={this.password}\n onFieldInput={e => (this.password = e.detail)}\n disabled={this.loggingIn}\n />\n\n <verdocs-button\n label=\"Forgot Your Password?\"\n variant=\"text\"\n onClick={() => (this.displayMode = 'signup')}\n disabled={this.loggingIn}\n style={{display: 'flex', justifyContent: 'center', margin: '10px auto 20px'}}\n />\n\n <verdocs-button label=\"Login\" disabled={this.loggingIn} onPress={() => this.handleLogin()} style={{display: 'flex', justifyContent: 'center', margin: '10px auto 0'}} />\n </form>\n\n {this.loginError ? <verdocs-ok-dialog open={true} heading=\"Login Error\" message={this.loginError} onClosed={() => this.handleClearError()} /> : <div />}\n </div>\n );\n }\n}\n"],"version":3}
@@ -7323,6 +7323,7 @@ const VerdocsStatusIndicator$1 = /*@__PURE__*/ proxyCustomElement(class extends
7323
7323
  */
7324
7324
  this.theme = 'light';
7325
7325
  this.recipientStatusIcons = [];
7326
+ this.containerId = `verdocs-status-indicator-${Math.random().toString(36).substring(2, 11)}`;
7326
7327
  }
7327
7328
  componentDidLoad() {
7328
7329
  var _a;
@@ -7389,7 +7390,7 @@ const VerdocsStatusIndicator$1 = /*@__PURE__*/ proxyCustomElement(class extends
7389
7390
  });
7390
7391
  this.recipientStatusIcons = statusIcons;
7391
7392
  const diagram = RecipientFlow();
7392
- diagram.initalize('#verdocs-recipient-status-diagram', canvasWidth, canvasHeight);
7393
+ diagram.initalize(`#${this.containerId}`, canvasWidth, canvasHeight);
7393
7394
  diagram.update({ entities, lines });
7394
7395
  }
7395
7396
  }
@@ -7518,7 +7519,7 @@ const VerdocsStatusIndicator$1 = /*@__PURE__*/ proxyCustomElement(class extends
7518
7519
  }
7519
7520
  const icon = this.getStatusIcon(status);
7520
7521
  const statusMessage = this.getStatusMessage(status);
7521
- return (h(Host, { ref: el => (this.summaryComponent = el), class: `${this.theme} ${this.size} ${this.document ? 'has-document' : ''}`, "aria-label": "Click to View Details", onClick: () => this.document && this.toggleDropdown(), onBlur: e => this.document && this.handleHideDropdown(e) }, h("span", { class: "icon", innerHTML: icon }), h("span", { class: "content" }, statusMessage), h("div", { class: "detail-panel", ref: el => (this.detailPanel = el) }, h("div", { id: "verdocs-recipient-status-diagram" }), this.recipientStatusIcons.map(icon => (h("span", { innerHTML: icon.icon, style: { position: 'absolute', top: `${icon.y}px`, left: `${icon.x}px` } }))))));
7522
+ return (h(Host, { ref: el => (this.summaryComponent = el), class: `${this.theme} ${this.size} ${this.document ? 'has-document' : ''}`, "aria-label": "Click to View Details", onClick: () => this.document && this.toggleDropdown(), onBlur: e => this.document && this.handleHideDropdown(e) }, h("span", { class: "icon", innerHTML: icon }), h("span", { class: "content" }, statusMessage), h("div", { class: "detail-panel", ref: el => (this.detailPanel = el) }, h("div", { id: `${this.containerId}` }), this.recipientStatusIcons.map(icon => (h("span", { innerHTML: icon.icon, style: { position: 'absolute', top: `${icon.y}px`, left: `${icon.x}px` } }))))));
7522
7523
  }
7523
7524
  static get style() { return verdocsStatusIndicatorCss; }
7524
7525
  }, [0, "verdocs-status-indicator", {
@@ -7527,7 +7528,8 @@ const VerdocsStatusIndicator$1 = /*@__PURE__*/ proxyCustomElement(class extends
7527
7528
  "status": [1],
7528
7529
  "document": [16],
7529
7530
  "isOpen": [32],
7530
- "recipientStatusIcons": [32]
7531
+ "recipientStatusIcons": [32],
7532
+ "containerId": [32]
7531
7533
  }]);
7532
7534
  function defineCustomElement$1() {
7533
7535
  if (typeof customElements === "undefined") {