@verdocs/web-sdk 1.6.2 → 1.6.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 (58) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/verdocs-auth.cjs.entry.js +13 -19
  3. package/dist/cjs/verdocs-auth.cjs.entry.js.map +1 -1
  4. package/dist/cjs/verdocs-dropdown_12.cjs.entry.js +71 -53
  5. package/dist/cjs/verdocs-dropdown_12.cjs.entry.js.map +1 -1
  6. package/dist/cjs/verdocs-sign.cjs.entry.js.map +1 -1
  7. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  8. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js +16 -22
  9. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js.map +1 -1
  10. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js.map +1 -1
  11. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js +71 -53
  12. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js.map +1 -1
  13. package/dist/collection/components/embeds/verdocs-view/verdocs-view.stories.js +2 -1
  14. package/dist/collection/components/embeds/verdocs-view/verdocs-view.stories.js.map +1 -1
  15. package/dist/components/verdocs-auth.js +14 -21
  16. package/dist/components/verdocs-auth.js.map +1 -1
  17. package/dist/components/verdocs-sign.js.map +1 -1
  18. package/dist/components/verdocs-view2.js +71 -53
  19. package/dist/components/verdocs-view2.js.map +1 -1
  20. package/dist/docs.json +2 -1
  21. package/dist/esm/loader.js +1 -1
  22. package/dist/esm/verdocs-auth.entry.js +13 -19
  23. package/dist/esm/verdocs-auth.entry.js.map +1 -1
  24. package/dist/esm/verdocs-dropdown_12.entry.js +71 -53
  25. package/dist/esm/verdocs-dropdown_12.entry.js.map +1 -1
  26. package/dist/esm/verdocs-sign.entry.js.map +1 -1
  27. package/dist/esm/verdocs-web-sdk.js +1 -1
  28. package/dist/esm-es5/loader.js +1 -1
  29. package/dist/esm-es5/loader.js.map +1 -1
  30. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  31. package/dist/esm-es5/verdocs-auth.entry.js.map +1 -1
  32. package/dist/esm-es5/verdocs-dropdown_12.entry.js +2 -2
  33. package/dist/esm-es5/verdocs-dropdown_12.entry.js.map +1 -1
  34. package/dist/esm-es5/verdocs-sign.entry.js.map +1 -1
  35. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  36. package/dist/esm-es5/verdocs-web-sdk.js.map +1 -1
  37. package/dist/types/components/embeds/verdocs-auth/verdocs-auth.d.ts +0 -2
  38. package/dist/types/components/embeds/verdocs-view/verdocs-view.d.ts +3 -1
  39. package/dist/verdocs-web-sdk/p-10e49d23.entry.js.map +1 -1
  40. package/dist/verdocs-web-sdk/p-1dd229a2.system.entry.js +2 -0
  41. package/dist/verdocs-web-sdk/p-1dd229a2.system.entry.js.map +1 -0
  42. package/dist/verdocs-web-sdk/p-545eb938.system.entry.js.map +1 -1
  43. package/dist/verdocs-web-sdk/{p-ec757dab.entry.js → p-5c6bbb6c.entry.js} +2 -2
  44. package/dist/verdocs-web-sdk/p-5c6bbb6c.entry.js.map +1 -0
  45. package/dist/verdocs-web-sdk/p-8f198f11.entry.js +2 -0
  46. package/dist/verdocs-web-sdk/p-8f198f11.entry.js.map +1 -0
  47. package/dist/verdocs-web-sdk/p-bb08e079.system.js +1 -1
  48. package/dist/verdocs-web-sdk/p-bb08e079.system.js.map +1 -1
  49. package/dist/verdocs-web-sdk/{p-85cd7ebf.system.entry.js → p-f3aee0fc.system.entry.js} +3 -3
  50. package/dist/verdocs-web-sdk/{p-ec757dab.entry.js.map → p-f3aee0fc.system.entry.js.map} +1 -1
  51. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  52. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js.map +1 -1
  53. package/package.json +2 -3
  54. package/dist/verdocs-web-sdk/p-654d98ea.system.entry.js +0 -2
  55. package/dist/verdocs-web-sdk/p-654d98ea.system.entry.js.map +0 -1
  56. package/dist/verdocs-web-sdk/p-85cd7ebf.system.entry.js.map +0 -1
  57. package/dist/verdocs-web-sdk/p-bdcc8115.entry.js +0 -2
  58. package/dist/verdocs-web-sdk/p-bdcc8115.entry.js.map +0 -1
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["verdocs-sign.cjs",[[0,"verdocs-sign",{"endpoint":[16],"documentid":[1],"roleid":[1],"invitecode":[1],"recipient":[32],"signerToken":[32],"pdfUrl":[32],"recipientIndex":[32],"document":[32],"fields":[32],"pdfPageInfo":[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],"_endpoint":[32]}]]],["verdocs-search.cjs",[[0,"verdocs-search",{"endpoint":[16]}]]],["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-organization-card.cjs",[[0,"verdocs-organization-card",{"organization":[16]}]]],["verdocs-quick-functions.cjs",[[0,"verdocs-quick-functions",{"endpoint":[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-button_2.cjs",[[0,"verdocs-text-input",{"value":[1],"label":[1],"placeholder":[1],"autocomplete":[1],"type":[1],"disabled":[4],"_value":[32]}],[0,"verdocs-button",{"label":[1],"startIcon":[1,"start-icon"],"endIcon":[1,"end-icon"],"size":[1],"type":[1],"variant":[1],"disabled":[4]}]]],["verdocs-ok-dialog.cjs",[[0,"verdocs-ok-dialog",{"heading":[1],"message":[1],"open":[4],"cancel":[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],"open":[4],"fontLoaded":[32],"enteredName":[32],"mode":[32]}]]],["verdocs-upload-dialog.cjs",[[0,"verdocs-upload-dialog",{"open":[4],"draggingOver":[32],"decodedFiles":[32]}]]],["verdocs-search-activity_2.cjs",[[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-loader.cjs",[[0,"verdocs-loader"]]],["verdocs-dropdown_12.cjs",[[0,"verdocs-field-initial",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}],[0,"verdocs-field-signature",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}],[0,"verdocs-field-attachment",{"order":[2],"value":[1],"required":[4],"disabled":[4],"focusField":[64]}],[0,"verdocs-view",{"endpoint":[16],"rotation":[2],"source":[1],"loadProgress":[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-date",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}],[0,"verdocs-field-dropdown",{"options":[16],"required":[4],"order":[2],"disabled":[4],"value":[1],"focused":[32],"focusField":[64]}],[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]}],[0,"verdocs-field-radio-button",{"order":[2],"checked":[4],"value":[1],"name":[1],"required":[4],"disabled":[4]}],[0,"verdocs-field-textarea",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}],[0,"verdocs-field-textbox",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]]], options);
17
+ return index.bootstrapLazy([["verdocs-sign.cjs",[[0,"verdocs-sign",{"endpoint":[16],"documentid":[1],"roleid":[1],"invitecode":[1],"recipient":[32],"signerToken":[32],"pdfUrl":[32],"recipientIndex":[32],"document":[32],"fields":[32],"pdfPageInfo":[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-search.cjs",[[0,"verdocs-search",{"endpoint":[16]}]]],["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-organization-card.cjs",[[0,"verdocs-organization-card",{"organization":[16]}]]],["verdocs-quick-functions.cjs",[[0,"verdocs-quick-functions",{"endpoint":[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-button_2.cjs",[[0,"verdocs-text-input",{"value":[1],"label":[1],"placeholder":[1],"autocomplete":[1],"type":[1],"disabled":[4],"_value":[32]}],[0,"verdocs-button",{"label":[1],"startIcon":[1,"start-icon"],"endIcon":[1,"end-icon"],"size":[1],"type":[1],"variant":[1],"disabled":[4]}]]],["verdocs-ok-dialog.cjs",[[0,"verdocs-ok-dialog",{"heading":[1],"message":[1],"open":[4],"cancel":[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],"open":[4],"fontLoaded":[32],"enteredName":[32],"mode":[32]}]]],["verdocs-upload-dialog.cjs",[[0,"verdocs-upload-dialog",{"open":[4],"draggingOver":[32],"decodedFiles":[32]}]]],["verdocs-search-activity_2.cjs",[[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-loader.cjs",[[0,"verdocs-loader"]]],["verdocs-dropdown_12.cjs",[[0,"verdocs-field-initial",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}],[0,"verdocs-field-signature",{"required":[4],"fullName":[1,"full-name"],"value":[1],"focusField":[64]}],[0,"verdocs-field-attachment",{"order":[2],"value":[1],"required":[4],"disabled":[4],"focusField":[64]}],[0,"verdocs-view",{"endpoint":[16],"rotation":[2],"source":[1],"loadProgress":[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-date",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}],[0,"verdocs-field-dropdown",{"options":[16],"required":[4],"order":[2],"disabled":[4],"value":[1],"focused":[32],"focusField":[64]}],[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]}],[0,"verdocs-field-radio-button",{"order":[2],"checked":[4],"value":[1],"name":[1],"required":[4],"disabled":[4]}],[0,"verdocs-field-textarea",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}],[0,"verdocs-field-textbox",{"placeholder":[1],"order":[2],"value":[1],"required":[4],"disabled":[4],"focused":[32],"focusField":[64]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -28,6 +28,10 @@ const VerdocsAuth = class {
28
28
  constructor(hostRef) {
29
29
  index.registerInstance(this, hostRef);
30
30
  this.authenticated = index.createEvent(this, "authenticated", 7);
31
+ /**
32
+ * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.
33
+ */
34
+ this.endpoint = VerdocsEndpoint.VerdocsEndpoint.getDefault();
31
35
  /**
32
36
  * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display
33
37
  * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may
@@ -53,24 +57,14 @@ const VerdocsAuth = class {
53
57
  this.loggingIn = false;
54
58
  this.activeSession = null;
55
59
  this.loginError = null;
56
- this._endpoint = VerdocsEndpoint.VerdocsEndpoint.getDefault();
57
- }
58
- componentWillLoad() {
59
- if (this.endpoint) {
60
- console.log('Using user-supplied endpoint', this.endpoint);
61
- this._endpoint = this.endpoint;
62
- }
63
- else {
64
- console.log('Using default endpoint', this._endpoint);
65
- }
66
60
  }
67
61
  componentDidLoad() {
68
62
  console.log('loaded', this);
69
- this._endpoint.loadSession();
70
- if (this._endpoint.session) {
63
+ this.endpoint.loadSession();
64
+ if (this.endpoint.session) {
71
65
  this.isAuthenticated = true;
72
- this.activeSession = this._endpoint.session;
73
- this.authenticated.emit({ authenticated: true, session: this._endpoint.session });
66
+ this.activeSession = this.endpoint.session;
67
+ this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
74
68
  }
75
69
  else {
76
70
  this.authenticated.emit({ authenticated: false, session: null });
@@ -82,13 +76,13 @@ const VerdocsAuth = class {
82
76
  // }
83
77
  handleLogin() {
84
78
  this.loggingIn = true;
85
- authenticateUser(this._endpoint, { username: this.username, password: this.password })
79
+ authenticateUser(this.endpoint, { username: this.username, password: this.password })
86
80
  .then(r => {
87
81
  this.loggingIn = false;
88
- this._endpoint.setToken(r.accessToken);
89
- this.activeSession = this._endpoint.session;
82
+ this.endpoint.setToken(r.accessToken);
83
+ this.activeSession = this.endpoint.session;
90
84
  this.isAuthenticated = true;
91
- this.authenticated.emit({ authenticated: true, session: this._endpoint.session });
85
+ this.authenticated.emit({ authenticated: true, session: this.endpoint.session });
92
86
  })
93
87
  .catch(e => {
94
88
  var _a;
@@ -102,7 +96,7 @@ const VerdocsAuth = class {
102
96
  });
103
97
  }
104
98
  handleLogout() {
105
- this._endpoint.clearSession();
99
+ this.endpoint.clearSession();
106
100
  this.isAuthenticated = false;
107
101
  this.authenticated.emit({ authenticated: false, session: null });
108
102
  }
@@ -1 +1 @@
1
- {"file":"verdocs-auth.entry.cjs.js","mappings":"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","names":["VerdocsEndpoint","Auth.authenticateUser","h"],"sources":["./node_modules/@verdocs/js-sdk/Users/Auth.js","./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","@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';\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})\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;\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 @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 @State() _endpoint = VerdocsEndpoint.getDefault();\n\n componentWillLoad() {\n if (this.endpoint) {\n console.log('Using user-supplied endpoint', this.endpoint);\n this._endpoint = this.endpoint;\n } else {\n console.log('Using default endpoint', this._endpoint);\n }\n }\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\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.entry.cjs.js","mappings":"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","names":["VerdocsEndpoint","Auth.authenticateUser","h"],"sources":["./node_modules/@verdocs/js-sdk/Users/Auth.js","./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","@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';\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 @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\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}
@@ -23332,9 +23332,7 @@ const verdocsViewCss = "verdocs-view{font-family:\"Inter\", -apple-system, \"Seg
23332
23332
  const CANVAS_MARGIN = 15;
23333
23333
  const PDF_WORKER_URL = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdf.version}/pdf.worker.min.js`;
23334
23334
  const CMAPS_URL = `https://unpkg.com/pdfjs-dist@${pdf.version}/cmaps/`;
23335
- // https://unpkg.com/pdfjs-dist@2.0.550/cmaps/78-EUC-H.bcmap
23336
23335
  console.log('[VIEW] Loading PDF-JS', { PDF_WORKER_URL, CMAPS_URL });
23337
- // pdf.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.worker.min.js';
23338
23336
  pdf$1.GlobalWorkerOptions.workerSrc = PDF_WORKER_URL;
23339
23337
  const VerdocsView = class {
23340
23338
  constructor(hostRef) {
@@ -23346,7 +23344,7 @@ const VerdocsView = class {
23346
23344
  this.scaleChange = index.createEvent(this, "scaleChange", 7);
23347
23345
  this.documentRendered = index.createEvent(this, "documentRendered", 7);
23348
23346
  this.numPages = 1;
23349
- this.fingerprint = null;
23347
+ this.fingerprints = [];
23350
23348
  /**
23351
23349
  * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.
23352
23350
  */
@@ -23373,54 +23371,68 @@ const VerdocsView = class {
23373
23371
  async renderPages() {
23374
23372
  const pageNumbersToRender = integerSequence(1, this.numPages);
23375
23373
  for await (let pageNumber of pageNumbersToRender) {
23376
- const index = pageNumber - 1;
23377
- console.log('[VIEW] Rendering page', pageNumber);
23378
- const page = await this.pdfDocument.getPage(pageNumber);
23379
- const [pageX0, pageY0, pageX1, pageY1] = page.view;
23380
- const rotation = page.rotate;
23381
- const viewport = page.getViewport({ scale: 1 / 0.75 });
23382
- // const viewport = page.getViewport({scale: 1.5});
23383
- const canvas = document.createElement('canvas');
23384
- const canvasContext = canvas.getContext('2d');
23385
- canvas.height = viewport.height;
23386
- canvas.width = viewport.width;
23387
- await page.render({ canvasContext, viewport });
23388
- this.pdfContainer.appendChild(canvas);
23389
- const canvasWidth = canvas.width;
23390
- const canvasHeight = canvas.height;
23391
- const pageWidth = pageX1 - pageX0;
23392
- const pageHeight = pageY1 - pageY0;
23393
- this.pagesRendered.sort((a, b) => a.pageNumber - b.pageNumber);
23394
- const previousSibling = this.pagesRendered.filter(page => page.pageNumber < pageNumber).pop();
23395
- const canvasTop = ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.canvasBottom) || 0) + CANVAS_MARGIN;
23396
- const pageDetails = {
23397
- pageNumber,
23398
- width: canvasWidth,
23399
- height: canvasHeight,
23400
- originalWidth: this.isRotated(rotation) ? pageHeight : pageWidth,
23401
- originalHeight: this.isRotated(rotation) ? pageWidth : pageHeight,
23402
- xRatio: canvasWidth / pageWidth,
23403
- yRatio: canvasHeight / pageHeight,
23404
- canvasTop: canvasTop,
23405
- canvasLeft: CANVAS_MARGIN,
23406
- canvasRight: CANVAS_MARGIN + canvasWidth,
23407
- canvasBottom: canvasTop + canvasHeight,
23408
- };
23409
- if (this.pagesRendered[index]) {
23410
- this.pagesRendered[index] = pageDetails;
23411
- }
23412
- else {
23413
- this.pagesRendered.push(pageDetails);
23414
- }
23415
- const eventData = { pages: this.pagesRendered, numPages: this.numPages, numRendered: this.pagesRendered.length, canvasContainer: this.pdfContainer };
23416
- this.pageRendered.emit(eventData);
23417
- if (pageNumber >= this.numPages) {
23418
- console.log('[VIEW] Done rendering');
23374
+ try {
23375
+ const index = pageNumber - 1;
23376
+ console.log('[VIEW] Rendering page', pageNumber);
23377
+ const page = await this.pdfDocument.getPage(pageNumber);
23378
+ const [pageX0, pageY0, pageX1, pageY1] = page.view;
23379
+ const rotation = page.rotate;
23380
+ const viewport = page.getViewport({ scale: 1 / 0.75 });
23381
+ // const viewport = page.getViewport({scale: 1.5});
23382
+ const canvas = document.createElement('canvas');
23383
+ canvas.height = viewport.height;
23384
+ canvas.width = viewport.width;
23385
+ const canvasContext = canvas.getContext('2d');
23386
+ await page.render({ canvasContext, viewport });
23387
+ this.pdfContainer.appendChild(canvas);
23388
+ const canvasWidth = canvas.width;
23389
+ const canvasHeight = canvas.height;
23390
+ const pageWidth = pageX1 - pageX0;
23391
+ const pageHeight = pageY1 - pageY0;
23419
23392
  this.pagesRendered.sort((a, b) => a.pageNumber - b.pageNumber);
23420
- this.documentRendered.emit(eventData);
23393
+ const previousSibling = this.pagesRendered.filter(page => page.pageNumber < pageNumber).pop();
23394
+ const canvasTop = ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.canvasBottom) || 0) + CANVAS_MARGIN;
23395
+ const pageDetails = {
23396
+ pageNumber,
23397
+ width: canvasWidth,
23398
+ height: canvasHeight,
23399
+ originalWidth: this.isRotated(rotation) ? pageHeight : pageWidth,
23400
+ originalHeight: this.isRotated(rotation) ? pageWidth : pageHeight,
23401
+ xRatio: canvasWidth / pageWidth,
23402
+ yRatio: canvasHeight / pageHeight,
23403
+ canvasTop: canvasTop,
23404
+ canvasLeft: CANVAS_MARGIN,
23405
+ canvasRight: CANVAS_MARGIN + canvasWidth,
23406
+ canvasBottom: canvasTop + canvasHeight,
23407
+ };
23408
+ if (this.pagesRendered[index]) {
23409
+ this.pagesRendered[index] = pageDetails;
23410
+ }
23411
+ else {
23412
+ this.pagesRendered.push(pageDetails);
23413
+ }
23414
+ const eventData = {
23415
+ pages: this.pagesRendered,
23416
+ numPages: this.numPages,
23417
+ numRendered: this.pagesRendered.length,
23418
+ canvasContainer: this.pdfContainer,
23419
+ renderedPage: pageDetails,
23420
+ };
23421
+ this.pageRendered.emit(eventData);
23422
+ if (pageNumber >= this.numPages) {
23423
+ console.log('[VIEW] Done rendering');
23424
+ this.pagesRendered.sort((a, b) => a.pageNumber - b.pageNumber);
23425
+ this.documentRendered.emit(eventData);
23426
+ }
23427
+ }
23428
+ catch (e) {
23429
+ console.warn('[VIEW] Rendering error', e);
23421
23430
  }
23422
23431
  }
23423
23432
  }
23433
+ componentWillLoad() {
23434
+ this.endpoint.loadSession();
23435
+ }
23424
23436
  componentDidLoad() {
23425
23437
  this.pdfContainer = document.getElementById('verdocs-pdf-viewer-container');
23426
23438
  if (this.source) {
@@ -23428,31 +23440,37 @@ const VerdocsView = class {
23428
23440
  }
23429
23441
  }
23430
23442
  onProgress(progress) {
23443
+ console.log(`[VIEW] Progress ${Math.floor((progress.loaded / progress.total) * 100)} (${progress.loaded} / ${progress.total})`);
23431
23444
  this.loadProgress = Math.floor((100 * progress.loaded) / progress.total);
23432
23445
  }
23433
23446
  loadAndRender(src) {
23434
23447
  console.log('[VIEW] Loading', src);
23435
- console.log('this', this);
23436
23448
  const token = this.endpoint.getToken();
23437
23449
  const httpHeaders = token ? { Authorization: `Bearer ${token}` } : {};
23438
23450
  const source = {
23439
23451
  url: src,
23440
- withCredentials: true,
23441
23452
  cMapUrl: CMAPS_URL,
23442
23453
  cMapPacked: true,
23443
- verbosity: pdf.VerbosityLevel.WARNINGS,
23444
23454
  httpHeaders,
23455
+ withCredentials: true,
23456
+ verbosity: pdf.VerbosityLevel.INFOS,
23457
+ // TODO
23458
+ stopAtErrors: true,
23445
23459
  };
23446
23460
  // @ts-ignore
23447
23461
  const loadingTask = pdf$1.getDocument(source, null, null, this.onProgress);
23448
23462
  loadingTask.onProgress = this.onProgress;
23449
- loadingTask.promise.then((pdfDocument) => {
23463
+ loadingTask.promise
23464
+ .then((pdfDocument) => {
23450
23465
  this.loadProgress = 100;
23451
23466
  this.numPages = pdfDocument.numPages;
23452
- this.fingerprint = pdfDocument.fingerprints[0];
23453
- console.log(`[VIEW] Got PDF document fingerprint "${this.fingerprint}, ${this.numPages} pages`, pdfDocument);
23467
+ this.fingerprints = pdfDocument.fingerprints;
23468
+ console.log(`[VIEW] Got PDF document fingerprints "${this.fingerprints.join(', ')}", ${this.numPages} pages`);
23454
23469
  this.pdfDocument = pdfDocument;
23455
23470
  this.renderPages().catch(e => console.log('Rendering error', e));
23471
+ })
23472
+ .catch(e => {
23473
+ console.log('[VIEW] Loading error', e);
23456
23474
  });
23457
23475
  }
23458
23476
  render() {