@verdocs/web-sdk 2.2.42 → 2.2.44

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 (149) hide show
  1. package/dist/cjs/{TemplateStore-42c35573.js → TemplateStore-d9936a68.js} +1 -1
  2. package/dist/cjs/{VerdocsEndpoint-ae3a69d6.js → VerdocsEndpoint-2d85658d.js} +85 -0
  3. package/dist/cjs/ipc-test.cjs.entry.js +2 -2
  4. package/dist/cjs/verdocs-activity-box.cjs.entry.js +1 -1
  5. package/dist/cjs/verdocs-auth.cjs.entry.js +1 -1
  6. package/dist/cjs/verdocs-build.cjs.entry.js +2 -2
  7. package/dist/cjs/verdocs-button-panel_2.cjs.entry.js +2 -2
  8. package/dist/cjs/verdocs-contact-picker_2.cjs.entry.js +1 -1
  9. package/dist/cjs/verdocs-envelope-document-page.cjs.entry.js +1 -1
  10. package/dist/cjs/verdocs-envelope-recipient-link_2.cjs.entry.js +1 -1
  11. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +1 -1
  12. package/dist/cjs/verdocs-envelopes-list.cjs.entry.js +1 -1
  13. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +1 -1
  14. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +1 -1
  15. package/dist/cjs/verdocs-file-chooser_2.cjs.entry.js +1 -1
  16. package/dist/cjs/verdocs-preview_8.cjs.entry.js +2 -2
  17. package/dist/cjs/verdocs-quick-functions_3.cjs.entry.js +1 -1
  18. package/dist/cjs/verdocs-search.cjs.entry.js +1 -1
  19. package/dist/cjs/verdocs-settings-api-keys_4.cjs.entry.js +1 -1
  20. package/dist/cjs/verdocs-settings.cjs.entry.js +1 -1
  21. package/dist/cjs/verdocs-sign.cjs.entry.js +1 -1
  22. package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +1 -1
  23. package/dist/cjs/verdocs-template-fields_4.cjs.entry.js +2 -2
  24. package/dist/cjs/verdocs-template-star.cjs.entry.js +1 -1
  25. package/dist/cjs/verdocs-templates-list.cjs.entry.js +6 -6
  26. package/dist/cjs/verdocs-view.cjs.entry.js +1 -1
  27. package/dist/collection/components/templates/verdocs-templates-list/verdocs-templates-list.js +6 -5
  28. package/dist/components/TemplateStore.js +1 -1
  29. package/dist/components/VerdocsEndpoint.js +85 -1
  30. package/dist/components/verdocs-template-create2.js +1 -1
  31. package/dist/components/verdocs-template-role-properties2.js +1 -1
  32. package/dist/components/verdocs-template-roles2.js +1 -1
  33. package/dist/components/verdocs-template-sender2.js +1 -1
  34. package/dist/components/verdocs-templates-list.js +6 -6
  35. package/dist/docs.json +1 -1
  36. package/dist/esm/{TemplateStore-1dfaf509.js → TemplateStore-018fc1db.js} +1 -1
  37. package/dist/esm/{VerdocsEndpoint-f58fcb3c.js → VerdocsEndpoint-b011af25.js} +85 -1
  38. package/dist/esm/ipc-test.entry.js +2 -2
  39. package/dist/esm/verdocs-activity-box.entry.js +1 -1
  40. package/dist/esm/verdocs-auth.entry.js +1 -1
  41. package/dist/esm/verdocs-build.entry.js +2 -2
  42. package/dist/esm/verdocs-button-panel_2.entry.js +2 -2
  43. package/dist/esm/verdocs-contact-picker_2.entry.js +1 -1
  44. package/dist/esm/verdocs-envelope-document-page.entry.js +1 -1
  45. package/dist/esm/verdocs-envelope-recipient-link_2.entry.js +1 -1
  46. package/dist/esm/verdocs-envelope-sidebar.entry.js +1 -1
  47. package/dist/esm/verdocs-envelopes-list.entry.js +1 -1
  48. package/dist/esm/verdocs-field-textarea.entry.js +1 -1
  49. package/dist/esm/verdocs-field-textbox.entry.js +1 -1
  50. package/dist/esm/verdocs-file-chooser_2.entry.js +1 -1
  51. package/dist/esm/verdocs-preview_8.entry.js +2 -2
  52. package/dist/esm/verdocs-quick-functions_3.entry.js +1 -1
  53. package/dist/esm/verdocs-search.entry.js +1 -1
  54. package/dist/esm/verdocs-settings-api-keys_4.entry.js +1 -1
  55. package/dist/esm/verdocs-settings.entry.js +1 -1
  56. package/dist/esm/verdocs-sign.entry.js +1 -1
  57. package/dist/esm/verdocs-template-document-page_2.entry.js +1 -1
  58. package/dist/esm/verdocs-template-fields_4.entry.js +2 -2
  59. package/dist/esm/verdocs-template-star.entry.js +1 -1
  60. package/dist/esm/verdocs-templates-list.entry.js +6 -6
  61. package/dist/esm/verdocs-view.entry.js +1 -1
  62. package/dist/esm-es5/{TemplateStore-1dfaf509.js → TemplateStore-018fc1db.js} +1 -1
  63. package/dist/esm-es5/VerdocsEndpoint-b011af25.js +1 -0
  64. package/dist/esm-es5/ipc-test.entry.js +1 -1
  65. package/dist/esm-es5/verdocs-activity-box.entry.js +1 -1
  66. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  67. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  68. package/dist/esm-es5/verdocs-button-panel_2.entry.js +1 -1
  69. package/dist/esm-es5/verdocs-contact-picker_2.entry.js +1 -1
  70. package/dist/esm-es5/verdocs-envelope-document-page.entry.js +1 -1
  71. package/dist/esm-es5/verdocs-envelope-recipient-link_2.entry.js +1 -1
  72. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  73. package/dist/esm-es5/verdocs-envelopes-list.entry.js +1 -1
  74. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  75. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  76. package/dist/esm-es5/verdocs-file-chooser_2.entry.js +1 -1
  77. package/dist/esm-es5/verdocs-preview_8.entry.js +1 -1
  78. package/dist/esm-es5/verdocs-quick-functions_3.entry.js +1 -1
  79. package/dist/esm-es5/verdocs-search.entry.js +1 -1
  80. package/dist/esm-es5/verdocs-settings-api-keys_4.entry.js +1 -1
  81. package/dist/esm-es5/verdocs-settings.entry.js +1 -1
  82. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  83. package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
  84. package/dist/esm-es5/verdocs-template-fields_4.entry.js +1 -1
  85. package/dist/esm-es5/verdocs-template-star.entry.js +1 -1
  86. package/dist/esm-es5/verdocs-templates-list.entry.js +1 -1
  87. package/dist/esm-es5/verdocs-view.entry.js +1 -1
  88. package/dist/types/components/templates/verdocs-templates-list/verdocs-templates-list.d.ts +1 -1
  89. package/dist/verdocs-web-sdk/{p-4248ef54.system.entry.js → p-01166179.system.entry.js} +1 -1
  90. package/dist/verdocs-web-sdk/p-04d7d759.system.entry.js +1 -0
  91. package/dist/verdocs-web-sdk/{p-ce804092.entry.js → p-0ad1fd33.entry.js} +1 -1
  92. package/dist/verdocs-web-sdk/{p-e48418fd.system.entry.js → p-0e5449d1.system.entry.js} +1 -1
  93. package/dist/verdocs-web-sdk/{p-7c013c13.system.entry.js → p-10af7aec.system.entry.js} +1 -1
  94. package/dist/verdocs-web-sdk/{p-081df4a1.system.entry.js → p-126ba5d2.system.entry.js} +1 -1
  95. package/dist/verdocs-web-sdk/{p-69c0f441.system.entry.js → p-15cb963a.system.entry.js} +1 -1
  96. package/dist/verdocs-web-sdk/{p-2184a570.entry.js → p-17d0e5f4.entry.js} +1 -1
  97. package/dist/verdocs-web-sdk/{p-bb8d6bdb.entry.js → p-23be436b.entry.js} +1 -1
  98. package/dist/verdocs-web-sdk/{p-70df50d0.system.entry.js → p-261d376e.system.entry.js} +1 -1
  99. package/dist/verdocs-web-sdk/{p-61ad8441.system.entry.js → p-2f04fb38.system.entry.js} +1 -1
  100. package/dist/verdocs-web-sdk/p-30b4bd45.js +1 -0
  101. package/dist/verdocs-web-sdk/{p-0d35d591.system.entry.js → p-30ce4358.system.entry.js} +1 -1
  102. package/dist/verdocs-web-sdk/{p-16043ac0.system.entry.js → p-343672f5.system.entry.js} +1 -1
  103. package/dist/verdocs-web-sdk/{p-d5a46144.system.entry.js → p-37187046.system.entry.js} +1 -1
  104. package/dist/verdocs-web-sdk/{p-7e558e92.entry.js → p-39cbfe15.entry.js} +1 -1
  105. package/dist/verdocs-web-sdk/{p-2f7236a5.entry.js → p-3abfff14.entry.js} +1 -1
  106. package/dist/verdocs-web-sdk/{p-c6cc7015.system.entry.js → p-4a94ee00.system.entry.js} +1 -1
  107. package/dist/verdocs-web-sdk/{p-f1c4035f.entry.js → p-4f439363.entry.js} +1 -1
  108. package/dist/verdocs-web-sdk/{p-5fa7fcf7.system.entry.js → p-50ac71f3.system.entry.js} +1 -1
  109. package/dist/verdocs-web-sdk/{p-90ff8b2c.system.entry.js → p-5c50a778.system.entry.js} +1 -1
  110. package/dist/verdocs-web-sdk/{p-691fa663.system.entry.js → p-5df0fa7a.system.entry.js} +1 -1
  111. package/dist/verdocs-web-sdk/{p-2bc8c83c.system.entry.js → p-609c7fab.system.entry.js} +1 -1
  112. package/dist/verdocs-web-sdk/{p-3fd978ad.entry.js → p-6307e6ae.entry.js} +1 -1
  113. package/dist/verdocs-web-sdk/{p-95259770.entry.js → p-66d66e2b.entry.js} +1 -1
  114. package/dist/verdocs-web-sdk/{p-32d4b31e.entry.js → p-6bda7dce.entry.js} +1 -1
  115. package/dist/verdocs-web-sdk/{p-6d1150ae.entry.js → p-76907130.entry.js} +1 -1
  116. package/dist/verdocs-web-sdk/{p-34d2f66c.entry.js → p-7805f0e0.entry.js} +1 -1
  117. package/dist/verdocs-web-sdk/{p-7549ad05.entry.js → p-79dc4f76.entry.js} +1 -1
  118. package/dist/verdocs-web-sdk/p-7b63017c.js +1 -0
  119. package/dist/verdocs-web-sdk/{p-53648483.system.entry.js → p-89aa696c.system.entry.js} +1 -1
  120. package/dist/verdocs-web-sdk/{p-35acc57f.entry.js → p-8da1555a.entry.js} +1 -1
  121. package/dist/verdocs-web-sdk/{p-2ae9baa3.entry.js → p-961708ac.entry.js} +1 -1
  122. package/dist/verdocs-web-sdk/{p-56c0cc86.system.entry.js → p-9934f3ec.system.entry.js} +1 -1
  123. package/dist/verdocs-web-sdk/{p-2a185ea9.entry.js → p-9b07a2a7.entry.js} +1 -1
  124. package/dist/verdocs-web-sdk/{p-e6037224.system.entry.js → p-a0b02d83.system.entry.js} +1 -1
  125. package/dist/verdocs-web-sdk/{p-3ba65022.entry.js → p-a310f65b.entry.js} +1 -1
  126. package/dist/verdocs-web-sdk/{p-d37aac3a.entry.js → p-a5425a9b.entry.js} +1 -1
  127. package/dist/verdocs-web-sdk/p-ace35be6.entry.js +1 -0
  128. package/dist/verdocs-web-sdk/{p-9b25404e.entry.js → p-b17a20b8.entry.js} +1 -1
  129. package/dist/verdocs-web-sdk/{p-01f875d4.system.entry.js → p-bb2c866b.system.entry.js} +1 -1
  130. package/dist/verdocs-web-sdk/{p-eaa5f223.system.entry.js → p-bd0bc3dd.system.entry.js} +1 -1
  131. package/dist/verdocs-web-sdk/{p-79557fd0.entry.js → p-bfcf8ad2.entry.js} +1 -1
  132. package/dist/verdocs-web-sdk/p-cbbf849f.system.js +1 -0
  133. package/dist/verdocs-web-sdk/{p-6a795d03.system.entry.js → p-df6a373e.system.entry.js} +1 -1
  134. package/dist/verdocs-web-sdk/{p-9fa916b5.system.js → p-eb595245.system.js} +1 -1
  135. package/dist/verdocs-web-sdk/{p-23a92204.system.entry.js → p-ecf04564.system.entry.js} +1 -1
  136. package/dist/verdocs-web-sdk/{p-6823dd3e.entry.js → p-ee195e5e.entry.js} +1 -1
  137. package/dist/verdocs-web-sdk/{p-3807b541.entry.js → p-eef694e8.entry.js} +1 -1
  138. package/dist/verdocs-web-sdk/p-f04bf956.system.js +1 -1
  139. package/dist/verdocs-web-sdk/{p-f2249009.system.entry.js → p-f1257cd0.system.entry.js} +1 -1
  140. package/dist/verdocs-web-sdk/{p-44fa9fba.entry.js → p-f8718b03.entry.js} +1 -1
  141. package/dist/verdocs-web-sdk/{p-271c989f.entry.js → p-fde6b724.entry.js} +1 -1
  142. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  143. package/package.json +1 -1
  144. package/dist/esm-es5/VerdocsEndpoint-f58fcb3c.js +0 -1
  145. package/dist/verdocs-web-sdk/p-4d4da6ef.system.entry.js +0 -1
  146. package/dist/verdocs-web-sdk/p-53b991de.system.js +0 -1
  147. package/dist/verdocs-web-sdk/p-56f2a8ac.js +0 -1
  148. package/dist/verdocs-web-sdk/p-9c7093ab.entry.js +0 -1
  149. package/dist/verdocs-web-sdk/p-c7757545.js +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index-f712049c.js');
4
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
4
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
5
5
 
6
6
  const createTemplateStore = (templateId) => {
7
7
  const now = new Date().toISOString();
@@ -22,6 +22,90 @@ var TemplatePermissions;
22
22
  TemplatePermissions["TEMPLATE_MEMBER_DELETE"] = "template:member:delete";
23
23
  TemplatePermissions["TEMPLATE_MEMBER_VISIBILITY"] = "template:member:visibility";
24
24
  })(TemplatePermissions || (TemplatePermissions = {}));
25
+ var canPerformTemplateAction = function (session, action, template) {
26
+ var _a, _b;
27
+ if (!template && !action.includes('create')) {
28
+ return { canPerform: false, message: 'Missing required template object' };
29
+ }
30
+ // We use BOGUS here to force the option-chain in things like template?.profile_id to NOT match profile?.profile_id because if both
31
+ // were undefined, they would actually match.
32
+ var profile_id = (session === null || session === void 0 ? void 0 : session.profile_id) || 'BOGUS';
33
+ var organization_id = (session === null || session === void 0 ? void 0 : session.organization_id) || 'BOGUS';
34
+ if (!profile_id) {
35
+ return { canPerform: false, message: 'Active session required' };
36
+ }
37
+ var isCreator = (template === null || template === void 0 ? void 0 : template.profile_id) === profile_id;
38
+ var isSameOrg = (template === null || template === void 0 ? void 0 : template.organization_id) === organization_id;
39
+ var isPersonal = (_a = template === null || template === void 0 ? void 0 : template.is_personal) !== null && _a !== void 0 ? _a : false;
40
+ var isPublic = (_b = template === null || template === void 0 ? void 0 : template.is_public) !== null && _b !== void 0 ? _b : false;
41
+ var permissionsRequired = [];
42
+ switch (action) {
43
+ case 'create_personal':
44
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PERSONAL);
45
+ break;
46
+ case 'create_org':
47
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_ORG);
48
+ break;
49
+ case 'create_public':
50
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PUBLIC);
51
+ break;
52
+ case 'read':
53
+ if (!isCreator) {
54
+ if ((!isPersonal && isSameOrg) || !isPublic) {
55
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_READ);
56
+ }
57
+ }
58
+ break;
59
+ case 'write':
60
+ if (!isCreator) {
61
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_READ);
62
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_WRITE);
63
+ }
64
+ break;
65
+ case 'change_visibility_personal':
66
+ if (isCreator) {
67
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PERSONAL);
68
+ }
69
+ else {
70
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
71
+ }
72
+ break;
73
+ case 'change_visibility_org':
74
+ if (isCreator) {
75
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_ORG);
76
+ }
77
+ else {
78
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
79
+ }
80
+ break;
81
+ case 'change_visibility_public':
82
+ if (isCreator) {
83
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PUBLIC);
84
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_VISIBILITY);
85
+ }
86
+ else {
87
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
88
+ }
89
+ break;
90
+ case 'delete':
91
+ if (isCreator) {
92
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_DELETE);
93
+ }
94
+ else {
95
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_DELETE);
96
+ }
97
+ break;
98
+ default:
99
+ return { canPerform: false, message: 'Action is not defined' };
100
+ }
101
+ if (hasRequiredPermissions(session, permissionsRequired)) {
102
+ return { canPerform: true, message: '' };
103
+ }
104
+ return { canPerform: false, message: "Insufficient access to perform '".concat(action, "'. Needed permissions: ").concat(permissionsRequired.toString()) };
105
+ };
106
+ var hasRequiredPermissions = function (session, permissions) {
107
+ return permissions.every(function (perm) { return ((session === null || session === void 0 ? void 0 : session.permissions) || []).includes(perm); });
108
+ };
25
109
 
26
110
  /**
27
111
  * A Template defines how a Verdocs signing flow will be performed, including attachments, signing fields, and
@@ -4229,6 +4313,7 @@ var VerdocsEndpoint = /** @class */ (function () {
4229
4313
  }());
4230
4314
 
4231
4315
  exports.VerdocsEndpoint = VerdocsEndpoint;
4316
+ exports.canPerformTemplateAction = canPerformTemplateAction;
4232
4317
  exports.createTemplate = createTemplate;
4233
4318
  exports.deleteTemplate = deleteTemplate;
4234
4319
  exports.getTemplate = getTemplate;
@@ -4,8 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
- const TemplateStore = require('./TemplateStore-42c35573.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
+ const TemplateStore = require('./TemplateStore-d9936a68.js');
9
9
  require('./index-f712049c.js');
10
10
 
11
11
  const ipcTestCss = "ipc-test{max-width:800px;display:block}";
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  require('./Types-f89f9116.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const Primitives = require('./Primitives-a59870a2.js');
10
10
  const errors = require('./errors-0396da3d.js');
11
11
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const Types = require('./Types-f89f9116.js');
7
7
  const Profiles = require('./Profiles-54271244.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const Toast = require('./Toast-06880504.js');
10
10
  const errors = require('./errors-0396da3d.js');
11
11
 
@@ -4,8 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
- const TemplateStore = require('./TemplateStore-42c35573.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
+ const TemplateStore = require('./TemplateStore-d9936a68.js');
9
9
  const errors = require('./errors-0396da3d.js');
10
10
  require('./index-f712049c.js');
11
11
 
@@ -6,9 +6,9 @@ const index = require('./index-5463795e.js');
6
6
  const popper = require('./popper-d7adcfc6.js');
7
7
  const _commonjsHelpers = require('./_commonjsHelpers-0c557e26.js');
8
8
  require('./Types-f89f9116.js');
9
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
9
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
10
10
  const Fields = require('./Fields-705a2168.js');
11
- const TemplateStore = require('./TemplateStore-42c35573.js');
11
+ const TemplateStore = require('./TemplateStore-d9936a68.js');
12
12
  const errors = require('./errors-0396da3d.js');
13
13
  require('./index-f712049c.js');
14
14
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const utils = require('./utils-2ddfdf9e.js');
9
9
  require('./_commonjsHelpers-0c557e26.js');
10
10
  require('./Envelopes-99ca79fe.js');
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  require('./Types-f89f9116.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const utils = require('./utils-2ddfdf9e.js');
10
10
  require('./_commonjsHelpers-0c557e26.js');
11
11
  require('./Files-4bdc0c0f.js');
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
7
  const Recipients = require('./Recipients-f3d6cf10.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const EnvelopeStore = require('./EnvelopeStore-f8c301e1.js');
10
10
  const Toast = require('./Toast-06880504.js');
11
11
  const errors = require('./errors-0396da3d.js');
@@ -7,7 +7,7 @@ const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  const Permissions = require('./Permissions-1436f847.js');
8
8
  const Recipients = require('./Recipients-f3d6cf10.js');
9
9
  require('./Types-f89f9116.js');
10
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
10
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
11
11
  const EnvelopeStore = require('./EnvelopeStore-f8c301e1.js');
12
12
  const Types = require('./Types-ee5afdf8.js');
13
13
  const Toast = require('./Toast-06880504.js');
@@ -6,7 +6,7 @@ const index = require('./index-5463795e.js');
6
6
  const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  const Permissions = require('./Permissions-1436f847.js');
8
8
  require('./Types-f89f9116.js');
9
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
9
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
10
10
  const Primitives = require('./Primitives-a59870a2.js');
11
11
  const utils = require('./utils-2ddfdf9e.js');
12
12
  const Toast = require('./Toast-06880504.js');
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const interact_min = require('./interact.min-ba5cc513.js');
7
7
  require('./Types-f89f9116.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const Fields = require('./Fields-705a2168.js');
10
10
  const Colors = require('./Colors-e809dcc9.js');
11
11
  const utils = require('./utils-2ddfdf9e.js');
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const interact_min = require('./interact.min-ba5cc513.js');
7
7
  require('./Types-f89f9116.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const Fields = require('./Fields-705a2168.js');
10
10
  const Colors = require('./Colors-e809dcc9.js');
11
11
  const utils = require('./utils-2ddfdf9e.js');
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const Icons = require('./Icons-a11fb3fc.js');
9
9
 
10
10
  const verdocsFileChooserCss = "verdocs-file-chooser{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;background-color:#ffffff;font-family:\"Inter\", -apple-system, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif}verdocs-file-chooser .upload-box{text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 15px;color:rgba(0, 0, 0, 0.54)}verdocs-file-chooser .upload-box svg{width:64px;height:64px;fill:#5c6575}verdocs-file-chooser .selected-filename{font-size:20px;font-weight:bold;overflow-wrap:anywhere}verdocs-file-chooser .or-prefer{height:20px;margin:20px 0;font-size:16px}";
@@ -4,9 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const utils = require('./utils-2ddfdf9e.js');
9
- const TemplateStore = require('./TemplateStore-42c35573.js');
9
+ const TemplateStore = require('./TemplateStore-d9936a68.js');
10
10
  const errors = require('./errors-0396da3d.js');
11
11
  const Envelopes = require('./Envelopes-99ca79fe.js');
12
12
  const Validators = require('./Validators-16e6d7d1.js');
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
 
9
9
  /**
10
10
  * Verdocs provides a range of search functions to help find and retrieve content. This module provides generic functions intended
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
 
9
9
  const verdocsSearchCss = "verdocs-search{font-family:\"Inter\", -apple-system, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif;display:-ms-flexbox;display:flex;background-color:#1e2031}verdocs-search search-box{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:20px 10px}verdocs-search .boxes{-ms-flex-wrap:wrap;flex-wrap:wrap;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;margin:20px 0}verdocs-search search-recent,verdocs-search search-saved,verdocs-search search-quick-functions,verdocs-search search-starred{display:-ms-flexbox;display:flex;margin:0 20px 20px 0}";
10
10
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const Primitives = require('./Primitives-a59870a2.js');
9
9
  const Toast = require('./Toast-06880504.js');
10
10
  const errors = require('./errors-0396da3d.js');
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const errors = require('./errors-0396da3d.js');
9
9
 
10
10
  const verdocsSettingsCss = "verdocs-settings{font-family:\"Inter\", -apple-system, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif;display:-ms-flexbox;display:flex;padding:15px;row-gap:15px;min-height:200px;position:relative;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-direction:column;flex-direction:column}verdocs-settings .tabs{gap:4px;width:100%;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row;border-bottom:1px solid #654dcb}verdocs-settings .tabs .tab{cursor:pointer;padding:5px 10px;color:#ffffff;background-color:#777777}verdocs-settings .tabs .tab.active{color:#ffffff;background-color:#654dcb}";
@@ -6,7 +6,7 @@ const index = require('./index-5463795e.js');
6
6
  const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  const Types$1 = require('./Types-f89f9116.js');
8
8
  const Recipients = require('./Recipients-f3d6cf10.js');
9
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
9
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
10
10
  const Validators = require('./Validators-16e6d7d1.js');
11
11
  const Primitives = require('./Primitives-a59870a2.js');
12
12
  const utils = require('./utils-2ddfdf9e.js');
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const TemplateDocuments = require('./TemplateDocuments-e2e0e6b7.js');
9
9
  const utils = require('./utils-2ddfdf9e.js');
10
10
  const popper = require('./popper-d7adcfc6.js');
@@ -5,11 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5463795e.js');
6
6
  const interact_min = require('./interact.min-ba5cc513.js');
7
7
  require('./Types-f89f9116.js');
8
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
8
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
9
9
  const Fields = require('./Fields-705a2168.js');
10
10
  const Primitives = require('./Primitives-a59870a2.js');
11
11
  const utils = require('./utils-2ddfdf9e.js');
12
- const TemplateStore = require('./TemplateStore-42c35573.js');
12
+ const TemplateStore = require('./TemplateStore-d9936a68.js');
13
13
  const errors = require('./errors-0396da3d.js');
14
14
  const Colors = require('./Colors-e809dcc9.js');
15
15
  require('./_commonjsHelpers-0c557e26.js');
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
6
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
7
7
  require('./Types-f89f9116.js');
8
8
 
9
9
  /**
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5463795e.js');
6
6
  require('./Types-f89f9116.js');
7
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
7
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
8
8
  const Primitives = require('./Primitives-a59870a2.js');
9
9
  const errors = require('./errors-0396da3d.js');
10
10
  const index$1 = require('./index-7c19ba1d.js');
@@ -192,18 +192,18 @@ const VerdocsTemplatesList = class {
192
192
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_personal', record) && record.allowed_operations.push('change_visibility_personal');
193
193
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_org', record) && record.allowed_operations.push('change_visibility_org');
194
194
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_public', record) && record.allowed_operations.push('change_visibility_public');
195
- if (allowed_operations.includes(VerdocsEndpoint.TemplateActions.READ) && this.allowedActions.includes('send')) {
196
- MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !allowed_operations.includes(VerdocsEndpoint.TemplateActions.READ) });
195
+ if (this.allowedActions.includes('send')) {
196
+ MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !VerdocsEndpoint.canPerformTemplateAction(this.endpoint.session, 'read', template) });
197
197
  }
198
198
  // if (this.allowedActions.includes('createlink')) {
199
199
  // MENU_OPTIONS.push({label: 'Create Link', id: 'createlink', disabled: true});
200
200
  // }
201
- if (allowed_operations.includes(VerdocsEndpoint.TemplateActions.CREATE_PERSONAL) && this.allowedActions.includes('signnow')) {
201
+ if (this.allowedActions.includes('signnow')) {
202
202
  MENU_OPTIONS.push({ label: 'Sign Now', id: 'signnow', disabled: true });
203
203
  }
204
- if (allowed_operations.includes(VerdocsEndpoint.TemplateActions.READ) && this.allowedActions.includes('submitted')) {
204
+ if (this.allowedActions.includes('submitted')) {
205
205
  MENU_OPTIONS.push({ label: '' });
206
- MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted' });
206
+ MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted', disabled: !VerdocsEndpoint.canPerformTemplateAction(this.endpoint.session, 'read', template) });
207
207
  }
208
208
  if (this.allowedActions.includes('link') || this.allowedActions.includes('edit') || this.allowedActions.includes('delete')) {
209
209
  MENU_OPTIONS.push({ label: '' });
@@ -6,7 +6,7 @@ const index = require('./index-5463795e.js');
6
6
  const Envelopes = require('./Envelopes-99ca79fe.js');
7
7
  const Permissions = require('./Permissions-1436f847.js');
8
8
  require('./Types-f89f9116.js');
9
- const VerdocsEndpoint = require('./VerdocsEndpoint-ae3a69d6.js');
9
+ const VerdocsEndpoint = require('./VerdocsEndpoint-2d85658d.js');
10
10
  const Primitives = require('./Primitives-a59870a2.js');
11
11
  const utils = require('./utils-2ddfdf9e.js');
12
12
  const errors = require('./errors-0396da3d.js');
@@ -5,6 +5,7 @@ import { integerSequence } from '@verdocs/js-sdk/Utils/Primitives';
5
5
  import { TemplateActions } from '@verdocs/js-sdk/Templates/Types';
6
6
  import { h, Host } from '@stencil/core';
7
7
  import { SDKError } from '../../../utils/errors';
8
+ import { canPerformTemplateAction } from '@verdocs/js-sdk/Templates/Actions';
8
9
  const GlobeAltIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" /></svg>`;
9
10
  const LockClosedIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" /></svg>`;
10
11
  const BuildingOfficeIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21" /></svg>`;
@@ -178,18 +179,18 @@ export class VerdocsTemplatesList {
178
179
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_personal', record) && record.allowed_operations.push('change_visibility_personal');
179
180
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_org', record) && record.allowed_operations.push('change_visibility_org');
180
181
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_public', record) && record.allowed_operations.push('change_visibility_public');
181
- if (allowed_operations.includes(TemplateActions.READ) && this.allowedActions.includes('send')) {
182
- MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !allowed_operations.includes(TemplateActions.READ) });
182
+ if (this.allowedActions.includes('send')) {
183
+ MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !canPerformTemplateAction(this.endpoint.session, 'read', template) });
183
184
  }
184
185
  // if (this.allowedActions.includes('createlink')) {
185
186
  // MENU_OPTIONS.push({label: 'Create Link', id: 'createlink', disabled: true});
186
187
  // }
187
- if (allowed_operations.includes(TemplateActions.CREATE_PERSONAL) && this.allowedActions.includes('signnow')) {
188
+ if (this.allowedActions.includes('signnow')) {
188
189
  MENU_OPTIONS.push({ label: 'Sign Now', id: 'signnow', disabled: true });
189
190
  }
190
- if (allowed_operations.includes(TemplateActions.READ) && this.allowedActions.includes('submitted')) {
191
+ if (this.allowedActions.includes('submitted')) {
191
192
  MENU_OPTIONS.push({ label: '' });
192
- MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted' });
193
+ MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted', disabled: !canPerformTemplateAction(this.endpoint.session, 'read', template) });
193
194
  }
194
195
  if (this.allowedActions.includes('link') || this.allowedActions.includes('edit') || this.allowedActions.includes('delete')) {
195
196
  MENU_OPTIONS.push({ label: '' });
@@ -1,5 +1,5 @@
1
1
  import { c as createStore } from './index4.js';
2
- import { b as getTemplate, a as TemplateSenderTypes } from './VerdocsEndpoint.js';
2
+ import { e as getTemplate, b as TemplateSenderTypes } from './VerdocsEndpoint.js';
3
3
 
4
4
  const createTemplateStore = (templateId) => {
5
5
  const now = new Date().toISOString();
@@ -20,6 +20,90 @@ var TemplatePermissions;
20
20
  TemplatePermissions["TEMPLATE_MEMBER_DELETE"] = "template:member:delete";
21
21
  TemplatePermissions["TEMPLATE_MEMBER_VISIBILITY"] = "template:member:visibility";
22
22
  })(TemplatePermissions || (TemplatePermissions = {}));
23
+ var canPerformTemplateAction = function (session, action, template) {
24
+ var _a, _b;
25
+ if (!template && !action.includes('create')) {
26
+ return { canPerform: false, message: 'Missing required template object' };
27
+ }
28
+ // We use BOGUS here to force the option-chain in things like template?.profile_id to NOT match profile?.profile_id because if both
29
+ // were undefined, they would actually match.
30
+ var profile_id = (session === null || session === void 0 ? void 0 : session.profile_id) || 'BOGUS';
31
+ var organization_id = (session === null || session === void 0 ? void 0 : session.organization_id) || 'BOGUS';
32
+ if (!profile_id) {
33
+ return { canPerform: false, message: 'Active session required' };
34
+ }
35
+ var isCreator = (template === null || template === void 0 ? void 0 : template.profile_id) === profile_id;
36
+ var isSameOrg = (template === null || template === void 0 ? void 0 : template.organization_id) === organization_id;
37
+ var isPersonal = (_a = template === null || template === void 0 ? void 0 : template.is_personal) !== null && _a !== void 0 ? _a : false;
38
+ var isPublic = (_b = template === null || template === void 0 ? void 0 : template.is_public) !== null && _b !== void 0 ? _b : false;
39
+ var permissionsRequired = [];
40
+ switch (action) {
41
+ case 'create_personal':
42
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PERSONAL);
43
+ break;
44
+ case 'create_org':
45
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_ORG);
46
+ break;
47
+ case 'create_public':
48
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PUBLIC);
49
+ break;
50
+ case 'read':
51
+ if (!isCreator) {
52
+ if ((!isPersonal && isSameOrg) || !isPublic) {
53
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_READ);
54
+ }
55
+ }
56
+ break;
57
+ case 'write':
58
+ if (!isCreator) {
59
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_READ);
60
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_WRITE);
61
+ }
62
+ break;
63
+ case 'change_visibility_personal':
64
+ if (isCreator) {
65
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PERSONAL);
66
+ }
67
+ else {
68
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
69
+ }
70
+ break;
71
+ case 'change_visibility_org':
72
+ if (isCreator) {
73
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_ORG);
74
+ }
75
+ else {
76
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
77
+ }
78
+ break;
79
+ case 'change_visibility_public':
80
+ if (isCreator) {
81
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_CREATE_PUBLIC);
82
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_VISIBILITY);
83
+ }
84
+ else {
85
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_VISIBILITY);
86
+ }
87
+ break;
88
+ case 'delete':
89
+ if (isCreator) {
90
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_CREATOR_DELETE);
91
+ }
92
+ else {
93
+ permissionsRequired.push(TemplatePermissions.TEMPLATE_MEMBER_DELETE);
94
+ }
95
+ break;
96
+ default:
97
+ return { canPerform: false, message: 'Action is not defined' };
98
+ }
99
+ if (hasRequiredPermissions(session, permissionsRequired)) {
100
+ return { canPerform: true, message: '' };
101
+ }
102
+ return { canPerform: false, message: "Insufficient access to perform '".concat(action, "'. Needed permissions: ").concat(permissionsRequired.toString()) };
103
+ };
104
+ var hasRequiredPermissions = function (session, permissions) {
105
+ return permissions.every(function (perm) { return ((session === null || session === void 0 ? void 0 : session.permissions) || []).includes(perm); });
106
+ };
23
107
 
24
108
  /**
25
109
  * A Template defines how a Verdocs signing flow will be performed, including attachments, signing fields, and
@@ -4226,4 +4310,4 @@ var VerdocsEndpoint = /** @class */ (function () {
4226
4310
  return VerdocsEndpoint;
4227
4311
  }());
4228
4312
 
4229
- export { TemplateActions as T, VerdocsEndpoint as V, TemplateSenderTypes as a, getTemplate as b, createTemplate as c, deleteTemplate as d, getTemplates as g, listTemplates as l, updateTemplate as u };
4313
+ export { TemplateActions as T, VerdocsEndpoint as V, createTemplate as a, TemplateSenderTypes as b, canPerformTemplateAction as c, deleteTemplate as d, getTemplate as e, getTemplates as g, listTemplates as l, updateTemplate as u };
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import './Types.js';
3
- import { V as VerdocsEndpoint, c as createTemplate } from './VerdocsEndpoint.js';
3
+ import { V as VerdocsEndpoint, a as createTemplate } from './VerdocsEndpoint.js';
4
4
  import { S as SDKError } from './errors.js';
5
5
  import { d as defineCustomElement$4 } from './verdocs-button2.js';
6
6
  import { d as defineCustomElement$3 } from './verdocs-component-error2.js';
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import './Types.js';
3
- import { V as VerdocsEndpoint, a as TemplateSenderTypes } from './VerdocsEndpoint.js';
3
+ import { V as VerdocsEndpoint, b as TemplateSenderTypes } from './VerdocsEndpoint.js';
4
4
  import { g as getTemplateStore } from './TemplateStore.js';
5
5
  import { S as SDKError } from './errors.js';
6
6
  import { d as defineCustomElement$5 } from './verdocs-button2.js';
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host, Fragment } from '@stencil/core/internal/client';
2
2
  import { i as interact } from './interact.min.js';
3
3
  import './Types.js';
4
- import { V as VerdocsEndpoint, a as TemplateSenderTypes } from './VerdocsEndpoint.js';
4
+ import { V as VerdocsEndpoint, b as TemplateSenderTypes } from './VerdocsEndpoint.js';
5
5
  import { u as updateRole, c as createRole, d as defineCustomElement$3 } from './verdocs-template-role-properties2.js';
6
6
  import { g as getRGBA } from './Colors.js';
7
7
  import { g as getTemplateStore } from './TemplateStore.js';
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import './Types.js';
3
- import { V as VerdocsEndpoint, a as TemplateSenderTypes, u as updateTemplate } from './VerdocsEndpoint.js';
3
+ import { V as VerdocsEndpoint, b as TemplateSenderTypes, u as updateTemplate } from './VerdocsEndpoint.js';
4
4
  import { g as getTemplateStore } from './TemplateStore.js';
5
5
  import { S as SDKError } from './errors.js';
6
6
  import { d as defineCustomElement$3 } from './verdocs-button2.js';
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import './Types.js';
3
- import { V as VerdocsEndpoint, l as listTemplates, d as deleteTemplate, T as TemplateActions } from './VerdocsEndpoint.js';
3
+ import { V as VerdocsEndpoint, l as listTemplates, d as deleteTemplate, c as canPerformTemplateAction, T as TemplateActions } from './VerdocsEndpoint.js';
4
4
  import { i as integerSequence } from './Primitives.js';
5
5
  import { S as SDKError } from './errors.js';
6
6
  import { d as defineCustomElement$a } from './verdocs-button2.js';
@@ -198,18 +198,18 @@ const VerdocsTemplatesList$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
198
198
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_personal', record) && record.allowed_operations.push('change_visibility_personal');
199
199
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_org', record) && record.allowed_operations.push('change_visibility_org');
200
200
  // serverless/src/functions/getTemplates.ts: canPerformTemplateAction(request.session, 'change_visibility_public', record) && record.allowed_operations.push('change_visibility_public');
201
- if (allowed_operations.includes(TemplateActions.READ) && this.allowedActions.includes('send')) {
202
- MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !allowed_operations.includes(TemplateActions.READ) });
201
+ if (this.allowedActions.includes('send')) {
202
+ MENU_OPTIONS.push({ label: 'Preview / Send', id: 'send', disabled: !canPerformTemplateAction(this.endpoint.session, 'read', template) });
203
203
  }
204
204
  // if (this.allowedActions.includes('createlink')) {
205
205
  // MENU_OPTIONS.push({label: 'Create Link', id: 'createlink', disabled: true});
206
206
  // }
207
- if (allowed_operations.includes(TemplateActions.CREATE_PERSONAL) && this.allowedActions.includes('signnow')) {
207
+ if (this.allowedActions.includes('signnow')) {
208
208
  MENU_OPTIONS.push({ label: 'Sign Now', id: 'signnow', disabled: true });
209
209
  }
210
- if (allowed_operations.includes(TemplateActions.READ) && this.allowedActions.includes('submitted')) {
210
+ if (this.allowedActions.includes('submitted')) {
211
211
  MENU_OPTIONS.push({ label: '' });
212
- MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted' });
212
+ MENU_OPTIONS.push({ label: 'Submissions', id: 'submitted', disabled: !canPerformTemplateAction(this.endpoint.session, 'read', template) });
213
213
  }
214
214
  if (this.allowedActions.includes('link') || this.allowedActions.includes('edit') || this.allowedActions.includes('delete')) {
215
215
  MENU_OPTIONS.push({ label: '' });
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-11-22T05:17:04",
2
+ "timestamp": "2023-11-22T16:35:08",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "2.20.0",