@verdocs/web-sdk 1.12.44 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/cjs/{templateStore-1862f03c.js → TemplateStore-01ff3237.js} +77 -43
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/verdocs-build.cjs.entry.js +12 -15
  4. package/dist/cjs/verdocs-button-panel_3.cjs.entry.js +32 -31
  5. package/dist/cjs/verdocs-field-attachment.cjs.entry.js +2 -3
  6. package/dist/cjs/verdocs-field-checkbox.cjs.entry.js +3 -4
  7. package/dist/cjs/verdocs-field-date.cjs.entry.js +3 -4
  8. package/dist/cjs/verdocs-field-dropdown.cjs.entry.js +3 -4
  9. package/dist/cjs/verdocs-field-initial.cjs.entry.js +3 -4
  10. package/dist/cjs/verdocs-field-payment.cjs.entry.js +2 -3
  11. package/dist/cjs/verdocs-field-radio-button.cjs.entry.js +3 -4
  12. package/dist/cjs/verdocs-field-signature.cjs.entry.js +3 -4
  13. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +3 -4
  14. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +3 -4
  15. package/dist/cjs/verdocs-field-timestamp.cjs.entry.js +3 -4
  16. package/dist/cjs/verdocs-preview.cjs.entry.js +21 -17
  17. package/dist/cjs/verdocs-send.cjs.entry.js +31 -29
  18. package/dist/cjs/verdocs-template-attachments.cjs.entry.js +20 -11
  19. package/dist/cjs/verdocs-template-create_3.cjs.entry.js +86 -111
  20. package/dist/cjs/verdocs-template-name.cjs.entry.js +28 -20
  21. package/dist/cjs/verdocs-template-properties.cjs.entry.js +14 -15
  22. package/dist/cjs/verdocs-template-reminders.cjs.entry.js +24 -19
  23. package/dist/cjs/verdocs-template-role-properties_2.cjs.entry.js +30 -40
  24. package/dist/cjs/verdocs-template-visibility.cjs.entry.js +29 -22
  25. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  26. package/dist/collection/components/controls/verdocs-button-panel/verdocs-button-panel.js +1 -2
  27. package/dist/collection/components/controls/verdocs-help-icon/verdocs-help-icon.stories.js +1 -1
  28. package/dist/collection/components/controls/verdocs-toolbar-icon/verdocs-toolbar-icon.stories.js +1 -1
  29. package/dist/collection/components/embeds/verdocs-build/verdocs-build.js +12 -13
  30. package/dist/collection/components/embeds/verdocs-preview/verdocs-preview.js +21 -16
  31. package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +31 -28
  32. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js +2 -2
  33. package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.js +20 -2
  34. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +21 -3
  35. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +21 -3
  36. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +21 -3
  37. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +21 -3
  38. package/dist/collection/components/fields/verdocs-field-payment/verdocs-field-payment.js +20 -2
  39. package/dist/collection/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.js +21 -3
  40. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +21 -3
  41. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +21 -3
  42. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +21 -3
  43. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +21 -3
  44. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.js +20 -15
  45. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +32 -30
  46. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +32 -32
  47. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.js +27 -19
  48. package/dist/collection/components/templates/verdocs-template-properties/verdocs-template-properties.js +13 -15
  49. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.js +25 -20
  50. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.js +16 -21
  51. package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +56 -82
  52. package/dist/collection/components/templates/verdocs-template-sender/verdocs-template-sender.js +13 -18
  53. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.js +27 -20
  54. package/dist/collection/utils/TemplateStore.js +77 -0
  55. package/dist/components/{templateStore.js → TemplateStore.js} +76 -43
  56. package/dist/components/Templates.js +65 -45
  57. package/dist/components/verdocs-build.js +12 -13
  58. package/dist/components/verdocs-field-attachment.js +3 -2
  59. package/dist/components/verdocs-field-checkbox.js +4 -3
  60. package/dist/components/verdocs-field-date.js +4 -3
  61. package/dist/components/verdocs-field-dropdown.js +4 -3
  62. package/dist/components/verdocs-field-initial.js +4 -3
  63. package/dist/components/verdocs-field-payment.js +3 -2
  64. package/dist/components/verdocs-field-radio-button.js +4 -3
  65. package/dist/components/verdocs-field-signature.js +4 -3
  66. package/dist/components/verdocs-field-textarea.js +4 -3
  67. package/dist/components/verdocs-field-textbox.js +4 -3
  68. package/dist/components/verdocs-field-timestamp.js +4 -3
  69. package/dist/components/verdocs-preview.js +21 -16
  70. package/dist/components/verdocs-search-activity2.js +1 -1
  71. package/dist/components/verdocs-send.js +31 -28
  72. package/dist/components/verdocs-sign.js +1 -2
  73. package/dist/components/verdocs-template-attachments.js +21 -12
  74. package/dist/components/verdocs-template-create2.js +1 -1
  75. package/dist/components/verdocs-template-field-properties2.js +32 -30
  76. package/dist/components/verdocs-template-fields2.js +32 -32
  77. package/dist/components/verdocs-template-name.js +28 -20
  78. package/dist/components/verdocs-template-properties.js +13 -15
  79. package/dist/components/verdocs-template-reminders.js +25 -20
  80. package/dist/components/verdocs-template-role-properties2.js +16 -21
  81. package/dist/components/verdocs-template-roles2.js +56 -82
  82. package/dist/components/verdocs-template-sender2.js +14 -19
  83. package/dist/components/verdocs-template-visibility.js +28 -21
  84. package/dist/components/verdocs-view2.js +20 -2
  85. package/dist/custom-elements.json +1546 -0
  86. package/dist/docs.json +189 -2
  87. package/dist/esm/{templateStore-17c872da.js → TemplateStore-91a71f46.js} +76 -43
  88. package/dist/esm/loader.js +1 -1
  89. package/dist/esm/verdocs-build.entry.js +12 -15
  90. package/dist/esm/verdocs-button-panel_3.entry.js +32 -31
  91. package/dist/esm/verdocs-field-attachment.entry.js +2 -3
  92. package/dist/esm/verdocs-field-checkbox.entry.js +3 -4
  93. package/dist/esm/verdocs-field-date.entry.js +3 -4
  94. package/dist/esm/verdocs-field-dropdown.entry.js +3 -4
  95. package/dist/esm/verdocs-field-initial.entry.js +3 -4
  96. package/dist/esm/verdocs-field-payment.entry.js +2 -3
  97. package/dist/esm/verdocs-field-radio-button.entry.js +3 -4
  98. package/dist/esm/verdocs-field-signature.entry.js +3 -4
  99. package/dist/esm/verdocs-field-textarea.entry.js +3 -4
  100. package/dist/esm/verdocs-field-textbox.entry.js +3 -4
  101. package/dist/esm/verdocs-field-timestamp.entry.js +3 -4
  102. package/dist/esm/verdocs-preview.entry.js +21 -17
  103. package/dist/esm/verdocs-send.entry.js +31 -29
  104. package/dist/esm/verdocs-template-attachments.entry.js +20 -11
  105. package/dist/esm/verdocs-template-create_3.entry.js +86 -111
  106. package/dist/esm/verdocs-template-name.entry.js +26 -18
  107. package/dist/esm/verdocs-template-properties.entry.js +14 -15
  108. package/dist/esm/verdocs-template-reminders.entry.js +24 -19
  109. package/dist/esm/verdocs-template-role-properties_2.entry.js +28 -38
  110. package/dist/esm/verdocs-template-visibility.entry.js +27 -20
  111. package/dist/esm/verdocs-web-sdk.js +1 -1
  112. package/dist/esm-es5/TemplateStore-91a71f46.js +1 -0
  113. package/dist/esm-es5/loader.js +1 -1
  114. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  115. package/dist/esm-es5/verdocs-button-panel_3.entry.js +1 -1
  116. package/dist/esm-es5/verdocs-field-attachment.entry.js +1 -1
  117. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  118. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  119. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  120. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  121. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  122. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  123. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  124. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  125. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  126. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  127. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  128. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  129. package/dist/esm-es5/verdocs-template-attachments.entry.js +1 -1
  130. package/dist/esm-es5/verdocs-template-create_3.entry.js +1 -1
  131. package/dist/esm-es5/verdocs-template-name.entry.js +1 -1
  132. package/dist/esm-es5/verdocs-template-properties.entry.js +1 -1
  133. package/dist/esm-es5/verdocs-template-reminders.entry.js +1 -1
  134. package/dist/esm-es5/verdocs-template-role-properties_2.entry.js +1 -1
  135. package/dist/esm-es5/verdocs-template-visibility.entry.js +1 -1
  136. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  137. package/dist/types/components/controls/verdocs-button-panel/verdocs-button-panel.d.ts +1 -2
  138. package/dist/types/components/embeds/verdocs-build/verdocs-build.d.ts +2 -0
  139. package/dist/types/components/embeds/verdocs-preview/verdocs-preview.d.ts +3 -1
  140. package/dist/types/components/embeds/verdocs-send/verdocs-send.d.ts +3 -1
  141. package/dist/types/components/fields/verdocs-field-attachment/verdocs-field-attachment.d.ts +4 -0
  142. package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +4 -0
  143. package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +4 -0
  144. package/dist/types/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.d.ts +4 -0
  145. package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +4 -0
  146. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +4 -0
  147. package/dist/types/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.d.ts +4 -0
  148. package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +4 -0
  149. package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +4 -0
  150. package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +4 -0
  151. package/dist/types/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.d.ts +4 -0
  152. package/dist/types/components/templates/verdocs-template-attachments/verdocs-template-attachments.d.ts +2 -1
  153. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +2 -0
  154. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +2 -0
  155. package/dist/types/components/templates/verdocs-template-name/verdocs-template-name.d.ts +2 -1
  156. package/dist/types/components/templates/verdocs-template-properties/verdocs-template-properties.d.ts +2 -2
  157. package/dist/types/components/templates/verdocs-template-reminders/verdocs-template-reminders.d.ts +2 -1
  158. package/dist/types/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.d.ts +2 -0
  159. package/dist/types/components/templates/verdocs-template-roles/verdocs-template-roles.d.ts +3 -1
  160. package/dist/types/components/templates/verdocs-template-sender/verdocs-template-sender.d.ts +2 -0
  161. package/dist/types/components/templates/verdocs-template-visibillity/verdocs-template-visibility.d.ts +2 -1
  162. package/dist/types/components.d.ts +88 -0
  163. package/dist/types/utils/TemplateStore.d.ts +14 -0
  164. package/dist/verdocs-web-sdk/p-1b21b08d.system.entry.js +1 -0
  165. package/dist/verdocs-web-sdk/p-2216464c.system.entry.js +1 -0
  166. package/dist/verdocs-web-sdk/p-227d07a2.entry.js +1 -0
  167. package/dist/verdocs-web-sdk/p-2cb414ec.system.entry.js +1 -0
  168. package/dist/verdocs-web-sdk/p-2d39a000.entry.js +1 -0
  169. package/dist/verdocs-web-sdk/p-34d3d150.system.entry.js +1 -0
  170. package/dist/verdocs-web-sdk/p-36a31514.entry.js +1 -0
  171. package/dist/verdocs-web-sdk/p-37dd3108.system.entry.js +1 -0
  172. package/dist/verdocs-web-sdk/p-38d0af92.entry.js +1 -0
  173. package/dist/verdocs-web-sdk/p-47bba747.entry.js +1 -0
  174. package/dist/verdocs-web-sdk/p-4eb829ca.system.entry.js +1 -0
  175. package/dist/verdocs-web-sdk/p-5a3d9d9f.system.entry.js +1 -0
  176. package/dist/verdocs-web-sdk/p-5b4dd6a0.entry.js +1 -0
  177. package/dist/verdocs-web-sdk/p-62e12e8f.system.entry.js +1 -0
  178. package/dist/verdocs-web-sdk/p-650b9205.system.entry.js +1 -0
  179. package/dist/verdocs-web-sdk/p-65abb620.entry.js +1 -0
  180. package/dist/verdocs-web-sdk/p-6a0e0615.system.entry.js +1 -0
  181. package/dist/verdocs-web-sdk/p-6caf1137.system.js +1 -1
  182. package/dist/verdocs-web-sdk/p-6f511c7b.entry.js +1 -0
  183. package/dist/verdocs-web-sdk/p-7306abd0.system.entry.js +1 -0
  184. package/dist/verdocs-web-sdk/p-7464fd3c.system.entry.js +1 -0
  185. package/dist/verdocs-web-sdk/p-7f927fb9.system.entry.js +1 -0
  186. package/dist/verdocs-web-sdk/p-809947d4.system.entry.js +1 -0
  187. package/dist/verdocs-web-sdk/p-8c9caa8a.system.entry.js +1 -0
  188. package/dist/verdocs-web-sdk/p-8d32078d.entry.js +1 -0
  189. package/dist/verdocs-web-sdk/p-8eca5dd8.entry.js +1 -0
  190. package/dist/verdocs-web-sdk/p-92a2bb47.entry.js +1 -0
  191. package/dist/verdocs-web-sdk/p-a3747387.system.entry.js +1 -0
  192. package/dist/verdocs-web-sdk/p-a5970648.system.entry.js +1 -0
  193. package/dist/verdocs-web-sdk/p-ab6bd525.entry.js +1 -0
  194. package/dist/verdocs-web-sdk/p-b3bca701.entry.js +1 -0
  195. package/dist/verdocs-web-sdk/p-ba62a8f6.system.entry.js +1 -0
  196. package/dist/verdocs-web-sdk/p-c25d965d.js +1 -0
  197. package/dist/verdocs-web-sdk/p-c2770861.system.entry.js +1 -0
  198. package/dist/verdocs-web-sdk/p-c35bbaef.entry.js +1 -0
  199. package/dist/verdocs-web-sdk/p-c8901fde.entry.js +1 -0
  200. package/dist/verdocs-web-sdk/p-cc396cda.entry.js +1 -0
  201. package/dist/verdocs-web-sdk/p-d63fe7e9.system.entry.js +1 -0
  202. package/dist/verdocs-web-sdk/p-d7ca70cc.entry.js +1 -0
  203. package/dist/verdocs-web-sdk/p-db2b75bc.system.entry.js +1 -0
  204. package/dist/verdocs-web-sdk/p-de4c38a1.entry.js +1 -0
  205. package/dist/verdocs-web-sdk/p-e4b56475.entry.js +1 -0
  206. package/dist/verdocs-web-sdk/p-e9751ec7.entry.js +1 -0
  207. package/dist/verdocs-web-sdk/p-e9c9cdf5.entry.js +1 -0
  208. package/dist/verdocs-web-sdk/p-ec81b1f2.entry.js +1 -0
  209. package/dist/verdocs-web-sdk/p-f1edfd5a.system.js +1 -0
  210. package/dist/verdocs-web-sdk/p-f201e410.system.entry.js +1 -0
  211. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  212. package/package.json +2 -2
  213. package/dist/cjs/Templates-f310df2f.js +0 -49
  214. package/dist/collection/utils/Templates.js +0 -44
  215. package/dist/collection/utils/templateStore.js +0 -46
  216. package/dist/components/Primitives.js +0 -20
  217. package/dist/components/Templates2.js +0 -67
  218. package/dist/esm/Templates-d94fb9d5.js +0 -47
  219. package/dist/esm-es5/Templates-d94fb9d5.js +0 -1
  220. package/dist/esm-es5/templateStore-17c872da.js +0 -1
  221. package/dist/types/utils/Templates.d.ts +0 -2
  222. package/dist/types/utils/templateStore.d.ts +0 -14
  223. package/dist/verdocs-web-sdk/p-02316241.system.js +0 -1
  224. package/dist/verdocs-web-sdk/p-0e727b1c.system.entry.js +0 -1
  225. package/dist/verdocs-web-sdk/p-0fd75d91.system.entry.js +0 -1
  226. package/dist/verdocs-web-sdk/p-1cfb7ff5.entry.js +0 -1
  227. package/dist/verdocs-web-sdk/p-1e35f143.entry.js +0 -1
  228. package/dist/verdocs-web-sdk/p-28976191.system.entry.js +0 -1
  229. package/dist/verdocs-web-sdk/p-2e0980f3.system.entry.js +0 -1
  230. package/dist/verdocs-web-sdk/p-38368af4.system.entry.js +0 -1
  231. package/dist/verdocs-web-sdk/p-3ba4df31.system.entry.js +0 -1
  232. package/dist/verdocs-web-sdk/p-41d9b35b.system.entry.js +0 -1
  233. package/dist/verdocs-web-sdk/p-48eb46ed.system.entry.js +0 -1
  234. package/dist/verdocs-web-sdk/p-519127ef.entry.js +0 -1
  235. package/dist/verdocs-web-sdk/p-552441c6.system.entry.js +0 -1
  236. package/dist/verdocs-web-sdk/p-645e4723.system.entry.js +0 -1
  237. package/dist/verdocs-web-sdk/p-66158f86.system.entry.js +0 -1
  238. package/dist/verdocs-web-sdk/p-667cbdb4.system.entry.js +0 -1
  239. package/dist/verdocs-web-sdk/p-6ec15fc0.entry.js +0 -1
  240. package/dist/verdocs-web-sdk/p-71b8bb54.system.js +0 -1
  241. package/dist/verdocs-web-sdk/p-72b936b3.entry.js +0 -1
  242. package/dist/verdocs-web-sdk/p-73452912.system.entry.js +0 -1
  243. package/dist/verdocs-web-sdk/p-753a6e4a.entry.js +0 -1
  244. package/dist/verdocs-web-sdk/p-7bc337ce.entry.js +0 -1
  245. package/dist/verdocs-web-sdk/p-808f6a46.entry.js +0 -1
  246. package/dist/verdocs-web-sdk/p-81b24500.entry.js +0 -1
  247. package/dist/verdocs-web-sdk/p-89963a6e.system.entry.js +0 -1
  248. package/dist/verdocs-web-sdk/p-8be51136.entry.js +0 -1
  249. package/dist/verdocs-web-sdk/p-8cba983e.entry.js +0 -1
  250. package/dist/verdocs-web-sdk/p-90c71302.entry.js +0 -1
  251. package/dist/verdocs-web-sdk/p-94fa2efb.system.entry.js +0 -1
  252. package/dist/verdocs-web-sdk/p-9e9de6e3.system.entry.js +0 -1
  253. package/dist/verdocs-web-sdk/p-9eb2690b.entry.js +0 -1
  254. package/dist/verdocs-web-sdk/p-a612d29b.system.entry.js +0 -1
  255. package/dist/verdocs-web-sdk/p-b24324f6.entry.js +0 -1
  256. package/dist/verdocs-web-sdk/p-b2c96afc.entry.js +0 -1
  257. package/dist/verdocs-web-sdk/p-b355484e.system.entry.js +0 -1
  258. package/dist/verdocs-web-sdk/p-be25b61f.js +0 -1
  259. package/dist/verdocs-web-sdk/p-bf8cc58c.entry.js +0 -1
  260. package/dist/verdocs-web-sdk/p-c0c4cbe6.entry.js +0 -1
  261. package/dist/verdocs-web-sdk/p-c60c9371.entry.js +0 -1
  262. package/dist/verdocs-web-sdk/p-c83042ac.entry.js +0 -1
  263. package/dist/verdocs-web-sdk/p-c903c4a7.js +0 -1
  264. package/dist/verdocs-web-sdk/p-cae4a96e.system.entry.js +0 -1
  265. package/dist/verdocs-web-sdk/p-ce14f118.system.entry.js +0 -1
  266. package/dist/verdocs-web-sdk/p-cf09e52c.entry.js +0 -1
  267. package/dist/verdocs-web-sdk/p-dca6db47.system.entry.js +0 -1
  268. package/dist/verdocs-web-sdk/p-f3206b9e.system.entry.js +0 -1
  269. package/dist/verdocs-web-sdk/p-f6f1eb46.entry.js +0 -1
  270. package/dist/verdocs-web-sdk/p-fd463970.entry.js +0 -1
@@ -4,8 +4,7 @@ import { getRGBA } from '@verdocs/js-sdk/Utils/Colors';
4
4
  import { createRole, updateRole } from '@verdocs/js-sdk/Templates/Roles';
5
5
  import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
6
6
  import { h, Fragment, Host } from '@stencil/core';
7
- import TemplateStore from '../../../utils/templateStore';
8
- import { loadTemplate } from '../../../utils/Templates';
7
+ import { getTemplateStore } from '../../../utils/TemplateStore';
9
8
  import { getRoleIndex } from '../../../utils/utils';
10
9
  import { SDKError } from '../../../utils/errors';
11
10
  const senderLabels = {
@@ -29,15 +28,15 @@ const iconCC = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill
29
28
  export class VerdocsTemplateRoles {
30
29
  constructor() {
31
30
  this.sequences = [];
31
+ this.store = null;
32
32
  this.endpoint = VerdocsEndpoint.getDefault();
33
33
  this.templateId = '';
34
34
  this.showingRoleDialog = null;
35
35
  this.showingSenderDialog = false;
36
36
  this.sender = null;
37
- this.forceRerender = 1;
38
37
  }
39
38
  async componentWillLoad() {
40
- var _a, _b, _c, _d, _e, _f;
39
+ var _a, _b, _c;
41
40
  try {
42
41
  this.endpoint.loadSession();
43
42
  if (!this.templateId) {
@@ -48,20 +47,13 @@ export class VerdocsTemplateRoles {
48
47
  console.log('[ROLES] Unable to start builder session, must be authenticated');
49
48
  return;
50
49
  }
51
- try {
52
- console.log(`[ROLES] Loading template ${this.templateId}`, this.endpoint.session);
53
- await loadTemplate(this.endpoint, this.templateId, true);
54
- }
55
- catch (e) {
56
- console.log('[ROLES] Error loading template', e);
57
- (_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
58
- }
50
+ this.store = await getTemplateStore(this.endpoint, this.templateId, true);
59
51
  this.sortTemplateRoles();
60
52
  this.renumberTemplateRoles();
61
53
  }
62
54
  catch (e) {
63
55
  console.log('[FIELDS] Error with preview session', e);
64
- (_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new SDKError(e.message, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status, (_f = e.response) === null || _f === void 0 ? void 0 : _f.data));
56
+ (_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
65
57
  }
66
58
  }
67
59
  componentDidRender() {
@@ -94,7 +86,7 @@ export class VerdocsTemplateRoles {
94
86
  interact('.dropzone').dropzone({
95
87
  overlap: 0.05,
96
88
  ondrop: function handleDrop(event) {
97
- var _a, _b;
89
+ var _a, _b, _c, _d, _e;
98
90
  event.target.classList.remove('active');
99
91
  // target will be the recipient e.g. <div class="recipient" data-rolename="Buyer" />
100
92
  // relatedTarget will be the drop zone, e.g. <div class="dropzone" data-order="2" data-sequence="1" />
@@ -108,7 +100,7 @@ export class VerdocsTemplateRoles {
108
100
  const roleName = event.relatedTarget.dataset.rolename;
109
101
  const targetSequence = +event.target.dataset.sequence;
110
102
  const targetOrder = +event.target.dataset.order;
111
- const changingRole = (_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles.find(role => role.name === roleName);
103
+ const changingRole = (_c = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles) === null || _c === void 0 ? void 0 : _c.find(role => role.name === roleName);
112
104
  if (changingRole) {
113
105
  // To handle the renumbering, we update the role being moved to the new values, which will be some half-interval e.g.
114
106
  // sequence 1.5 order 1. Then we
@@ -120,14 +112,14 @@ export class VerdocsTemplateRoles {
120
112
  // We have to update ALL the roles to be sure each gets new proper sequence/order numbers assigned.
121
113
  // TODO: We could optimize this by tracking "dirty" states and only update the roles that have changed. But it's a LOT more
122
114
  // code to do right, and since most workflows will typically only have 2-4 recipients max, it may not be worth it.
123
- Promise.all((_b = TemplateStore.template) === null || _b === void 0 ? void 0 : _b.roles.map(role => updateRole(this.endpoint, this.templateId, role.name, {
115
+ Promise.all((_e = (_d = this.store) === null || _d === void 0 ? void 0 : _d.state) === null || _e === void 0 ? void 0 : _e.roles.map(role => updateRole(this.endpoint, this.templateId, role.name, {
124
116
  sequence: role.sequence,
125
117
  order: role.order,
126
118
  })))
127
119
  .then(() => {
128
- var _a;
120
+ var _a, _b;
129
121
  console.log('[ROLES] Updated roles');
130
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'updated-role', endpoint: this.endpoint, template: TemplateStore.template });
122
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'updated-role', endpoint: this.endpoint, template: (_b = this.store) === null || _b === void 0 ? void 0 : _b.state });
131
123
  })
132
124
  .catch(e => console.log('[ROLES] Role updates failed', e));
133
125
  }
@@ -155,15 +147,15 @@ export class VerdocsTemplateRoles {
155
147
  (_a = this.next) === null || _a === void 0 ? void 0 : _a.emit();
156
148
  }
157
149
  sortTemplateRoles() {
158
- var _a;
159
- (_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles.sort((a, b) => {
150
+ var _a, _b;
151
+ (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles.sort((a, b) => {
160
152
  return a.sequence === b.sequence ? a.order - b.order : a.sequence - b.sequence;
161
153
  });
162
154
  }
163
155
  extractSequenceNumbers() {
164
- var _a;
156
+ var _a, _b;
165
157
  this.sequences = [];
166
- (_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles.forEach(role => {
158
+ (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles.forEach(role => {
167
159
  if (!this.sequences.includes(role.sequence)) {
168
160
  this.sequences.push(role.sequence);
169
161
  }
@@ -177,8 +169,8 @@ export class VerdocsTemplateRoles {
177
169
  // If the user dragged an entry from below a row to above it, we end up here like [1,0]. Make sure it's [0,1] for the next operation.
178
170
  this.sequences.sort((a, b) => a - b);
179
171
  this.sequences.forEach((originalSequence, newSequenceIndex) => {
180
- var _a;
181
- (_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles.filter(role => role.sequence === originalSequence).forEach((role, newOrderIndex) => {
172
+ var _a, _b;
173
+ (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles.filter(role => role.sequence === originalSequence).forEach((role, newOrderIndex) => {
182
174
  if (!renumbered.includes(role.name)) {
183
175
  role.sequence = newSequenceIndex + 1;
184
176
  role.order = newOrderIndex + 1;
@@ -191,96 +183,79 @@ export class VerdocsTemplateRoles {
191
183
  }
192
184
  // Look for name conflicts, because they're UGC and can be anything, regardless of order.
193
185
  getNextRoleName() {
194
- var _a, _b;
186
+ var _a, _b, _c, _d;
195
187
  let name = '';
196
- let nextNumber = (_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles.length;
188
+ let nextNumber = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles.length;
197
189
  do {
198
190
  nextNumber++;
199
191
  name = `Recipient ${nextNumber}`;
200
- } while (!name || ((_b = TemplateStore.template) === null || _b === void 0 ? void 0 : _b.roles.some(role => role.name === name)));
192
+ } while (!name || ((_d = (_c = this.store) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.roles.some(role => role.name === name)));
201
193
  return name;
202
194
  }
203
- handleAddRole(e, sequence) {
204
- e.stopPropagation();
205
- // We don't need to look for a unique order number because we're already working with a sorted/renumbered set by now.
206
- const order = TemplateStore.template.roles.filter(role => role.sequence === sequence).length + 1;
207
- const name = this.getNextRoleName();
208
- console.log('Will create', name, sequence, order);
195
+ callCreateRole(name, sequence, order) {
196
+ console.log('[ROLES] Will create role', { name, sequence, order });
209
197
  createRole(this.endpoint, this.templateId, {
210
198
  template_id: this.templateId,
211
199
  name,
200
+ sequence,
201
+ order,
212
202
  full_name: '',
213
203
  email: '',
214
204
  phone: '',
215
- sequence,
216
- order,
217
205
  type: 'signer',
218
206
  delegator: false,
219
207
  })
220
208
  .then(r => {
221
- var _a;
222
- console.log('Created role', r);
223
- TemplateStore.template.roles.push(r);
209
+ var _a, _b, _c;
210
+ console.log('[ROLES] Created role', r);
211
+ this.store.state.roles = [...(_a = this.store) === null || _a === void 0 ? void 0 : _a.state.roles, r];
224
212
  this.renumberTemplateRoles();
225
- this.forceRerender++;
226
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'created-role', endpoint: this.endpoint, template: TemplateStore.template });
213
+ (_b = this.templateUpdated) === null || _b === void 0 ? void 0 : _b.emit({ event: 'created-role', endpoint: this.endpoint, template: (_c = this.store) === null || _c === void 0 ? void 0 : _c.state });
227
214
  })
228
215
  .catch(e => {
229
- console.log('Error creating role', e);
216
+ console.log('[ROLES] Error creating role', e);
230
217
  });
231
218
  }
219
+ handleAddRole(e, sequence) {
220
+ var _a;
221
+ e.stopPropagation();
222
+ // We don't need to look for a unique order number because we're already working with a sorted/renumbered set by now.
223
+ const order = ((_a = this.store) === null || _a === void 0 ? void 0 : _a.state.roles.filter(role => role.sequence === sequence).length) + 1;
224
+ const name = this.getNextRoleName();
225
+ this.callCreateRole(name, sequence, order);
226
+ }
232
227
  handleAddStep(e, sequence) {
233
228
  e.stopPropagation();
234
229
  const order = 1;
235
230
  const name = this.getNextRoleName();
236
- console.log('Will create', name, sequence, order);
237
- createRole(this.endpoint, this.templateId, {
238
- template_id: this.templateId,
239
- name,
240
- full_name: '',
241
- email: '',
242
- phone: '',
243
- sequence,
244
- order,
245
- type: 'signer',
246
- delegator: false,
247
- })
248
- .then(r => {
249
- var _a;
250
- console.log('Created role', r);
251
- TemplateStore.template.roles.push(r);
252
- this.renumberTemplateRoles();
253
- this.forceRerender++;
254
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'created-role', endpoint: this.endpoint, template: TemplateStore.template });
255
- })
256
- .catch(e => {
257
- console.log('Error creating role', e);
258
- });
231
+ this.callCreateRole(name, sequence, order);
259
232
  }
260
233
  render() {
261
- var _a;
234
+ var _a, _b, _c, _d, _e, _f;
262
235
  if (!this.endpoint.session) {
263
236
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
264
237
  }
265
- if (TemplateStore.loading || !TemplateStore.template) {
266
- return (h(Host, null, h("verdocs-loader", null)));
238
+ if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.state.isLoaded)) {
239
+ return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
267
240
  }
268
- const roleNames = (((_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles) || []).map(role => role.name);
269
- return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off", "data-r": this.forceRerender }, h("h5", null, "Roles and Workflow"), h("div", { class: "participants" }, h("div", { class: "left-line" }), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: startIcon }), h("div", { class: "row-roles" }, h("div", { class: "sender" }, h("span", { class: "label" }, "Sender:"), " ", senderLabels[TemplateStore.template.sender], ' ', h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" })))), h("div", { class: "row add-sequence", "data-sequence": 0 }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-sequence": 0, "data-order": 1 }, "Add Step"))), this.sequences.map(sequence => (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-order": 0.5, "data-sequence": sequence }), TemplateStore.template.roles
270
- .filter(role => role.sequence === sequence)
271
- .map(role => {
272
- const unknown = !role.email;
273
- return unknown ? (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence }))) : (h(Fragment, null, h("div", { class: "recipient", style: { borderColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.full_name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence })));
274
- }), h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, sequence) }))), this.sequences.length > 0 && (h("div", { class: "row add-sequence", "data-sequence": sequence }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "dropzone", "data-sequence": sequence + 1, "data-order": 1 }, "Add Step"))))))), h("div", { class: "row", "data-sequence": this.sequences.length + 1 }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("button", { class: "add-step", innerHTML: plusIcon, onClick: e => this.handleAddStep(e, this.sequences.length + 1) }))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-roles" }, h("div", { class: "complete" }, "Document Complete")))), roleNames.length < 1 && (h("div", { class: "empty" }, "You must add at least one Role before proceeding.", h("br", null), " Click the ", h("span", { innerHTML: plusIcon }), " Add button above to get started.")), h("div", { class: "buttons" }, h("div", { class: "flex-fill" }), h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: () => this.handleCancel() }), h("verdocs-button", { label: "OK", size: "small", onClick: () => this.handleSubmit(), disabled: roleNames.length < 1 }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
241
+ const roleNames = (((_c = (_b = this.store) === null || _b === void 0 ? void 0 : _b.state) === null || _c === void 0 ? void 0 : _c.roles) || []).map(role => role.name);
242
+ return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off", "data-r": (_d = this.store.state) === null || _d === void 0 ? void 0 : _d.updateCount }, h("h5", null, "Roles and Workflow"), h("div", { class: "participants" }, h("div", { class: "left-line" }), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: startIcon }), h("div", { class: "row-roles" }, h("div", { class: "sender" }, h("span", { class: "label" }, "Sender:"), " ", senderLabels[(_f = (_e = this.store) === null || _e === void 0 ? void 0 : _e.state) === null || _f === void 0 ? void 0 : _f.sender], ' ', h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" })))), h("div", { class: "row add-sequence", "data-sequence": 0 }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-sequence": 0, "data-order": 1 }, "Add Step"))), this.sequences.map(sequence => {
243
+ var _a, _b;
244
+ return (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-order": 0.5, "data-sequence": sequence }), (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 :
245
+ _b.roles.filter(role => role.sequence === sequence).map(role => {
246
+ const unknown = !role.email;
247
+ return unknown ? (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence }))) : (h(Fragment, null, h("div", { class: "recipient", style: { borderColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.full_name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence })));
248
+ }), h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, sequence) }))), this.sequences.length > 0 && (h("div", { class: "row add-sequence", "data-sequence": sequence }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "dropzone", "data-sequence": sequence + 1, "data-order": 1 }, "Add Step"))))));
249
+ }), h("div", { class: "row", "data-sequence": this.sequences.length + 1 }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("button", { class: "add-step", innerHTML: plusIcon, onClick: e => this.handleAddStep(e, this.sequences.length + 1) }))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-roles" }, h("div", { class: "complete" }, "Document Complete")))), roleNames.length < 1 && (h("div", { class: "empty" }, "You must add at least one Role before proceeding.", h("br", null), " Click the ", h("span", { innerHTML: plusIcon }), " Add button above to get started.")), h("div", { class: "buttons" }, h("div", { class: "flex-fill" }), h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: () => this.handleCancel() }), h("verdocs-button", { label: "OK", size: "small", onClick: () => this.handleSubmit(), disabled: roleNames.length < 1 }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
275
250
  this.showingRoleDialog = null;
276
- this.forceRerender++;
277
- }, onDelete: e => {
278
- var _a;
279
- console.log('deleted', e.detail);
251
+ // this.forceRerender++;
252
+ }, onDelete: async () => {
253
+ var _a, _b;
254
+ await getTemplateStore(this.endpoint, this.templateId, true);
280
255
  this.renumberTemplateRoles();
281
256
  this.showingRoleDialog = null;
282
- this.forceRerender++;
283
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'deleted-role', endpoint: this.endpoint, template: TemplateStore.template });
257
+ // this.forceRerender++;
258
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'deleted-role', endpoint: this.endpoint, template: (_b = this.store) === null || _b === void 0 ? void 0 : _b.state });
284
259
  } })), this.showingSenderDialog && h("verdocs-template-sender", { endpoint: this.endpoint, templateId: this.templateId, onClose: () => (this.showingSenderDialog = false) })));
285
260
  }
286
261
  static get is() { return "verdocs-template-roles"; }
@@ -341,8 +316,7 @@ export class VerdocsTemplateRoles {
341
316
  return {
342
317
  "showingRoleDialog": {},
343
318
  "showingSenderDialog": {},
344
- "sender": {},
345
- "forceRerender": {}
319
+ "sender": {}
346
320
  };
347
321
  }
348
322
  static get events() {
@@ -2,45 +2,37 @@ import { VerdocsEndpoint } from '@verdocs/js-sdk';
2
2
  import { updateTemplate } from '@verdocs/js-sdk/Templates/Templates';
3
3
  import { h, Host } from '@stencil/core';
4
4
  import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
5
- import TemplateStore from '../../../utils/templateStore';
6
- import { loadTemplate } from '../../../utils/Templates';
5
+ import { getTemplateStore } from '../../../utils/TemplateStore';
7
6
  import { SDKError } from '../../../utils/errors';
8
7
  /**
9
8
  * Display a dialog that allows a template sender to be selected.
10
9
  */
11
10
  export class VerdocsTemplateSender {
12
11
  constructor() {
12
+ this.store = null;
13
13
  this.endpoint = VerdocsEndpoint.getDefault();
14
14
  this.templateId = '';
15
15
  this.sender = TemplateSenderTypes.EVERYONE;
16
16
  this.saving = false;
17
17
  }
18
18
  async componentWillLoad() {
19
- var _a, _b, _c, _d, _e, _f;
19
+ var _a, _b, _c, _d, _e;
20
20
  try {
21
21
  this.endpoint.loadSession();
22
22
  if (!this.templateId) {
23
- console.log(`[TEMPLATE SENDER] Missing required template ID ${this.templateId}`);
23
+ console.log(`[SENDER] Missing required template ID ${this.templateId}`);
24
24
  return;
25
25
  }
26
26
  if (!this.endpoint.session) {
27
- console.log('[TEMPLATE SENDER] Unable to start builder session, must be authenticated');
27
+ console.log('[SENDER] Unable to start builder session, must be authenticated');
28
28
  return;
29
29
  }
30
- try {
31
- console.log(`[TEMPLATE SENDER] Loading template ${this.templateId}`, this.endpoint.session);
32
- await loadTemplate(this.endpoint, this.templateId);
33
- }
34
- catch (e) {
35
- console.log('[TEMPLATE SENDER] Error loading template', e);
36
- (_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
37
- }
38
- this.sender = TemplateStore.template.sender;
39
- console.log('s', this.sender);
30
+ this.store = await getTemplateStore(this.endpoint, this.templateId, false);
31
+ this.sender = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.sender;
40
32
  }
41
33
  catch (e) {
42
- console.log('[TEMPLATE SENDER] Error with preview session', e);
43
- (_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new SDKError(e.message, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status, (_f = e.response) === null || _f === void 0 ? void 0 : _f.data));
34
+ console.log('[SENDER] Error with preview session', e);
35
+ (_c = this.sdkError) === null || _c === void 0 ? void 0 : _c.emit(new SDKError(e.message, (_d = e.response) === null || _d === void 0 ? void 0 : _d.status, (_e = e.response) === null || _e === void 0 ? void 0 : _e.data));
44
36
  }
45
37
  }
46
38
  handleClose() {
@@ -57,8 +49,11 @@ export class VerdocsTemplateSender {
57
49
  this.saving = true;
58
50
  updateTemplate(this.endpoint, this.templateId, { sender: value })
59
51
  .then(r => {
52
+ var _a;
60
53
  console.log('Update result', r);
61
- TemplateStore.template.sender = value;
54
+ if ((_a = this.store) === null || _a === void 0 ? void 0 : _a.state) {
55
+ this.store.state.sender = value;
56
+ }
62
57
  this.saving = false;
63
58
  this.sender = value;
64
59
  })
@@ -1,60 +1,68 @@
1
1
  import { VerdocsEndpoint } from '@verdocs/js-sdk';
2
2
  import { updateTemplate } from '@verdocs/js-sdk/Templates/Templates';
3
3
  import { h, Host } from '@stencil/core';
4
- import TemplateStore from '../../../utils/templateStore';
5
- import { loadTemplate } from '../../../utils/Templates';
4
+ import { getTemplateStore } from '../../../utils/TemplateStore';
6
5
  import { SDKError } from '../../../utils/errors';
7
6
  /**
8
7
  * Displays an edit form that allows the user to adjust a template's visibility.
9
8
  */
10
9
  export class VerdocsTemplateVisibility {
11
10
  constructor() {
11
+ this.store = null;
12
12
  this.endpoint = VerdocsEndpoint.getDefault();
13
13
  this.templateId = '';
14
14
  this.dirty = false;
15
- this.loading = true;
16
15
  this.personal = false;
17
16
  this.public = false;
18
17
  }
19
18
  async componentWillLoad() {
20
- var _a, _b, _c;
19
+ var _a, _b, _c, _d, _e, _f, _g;
21
20
  try {
22
21
  this.endpoint.loadSession();
23
- await loadTemplate(this.endpoint, this.templateId);
24
- this.loading = false;
25
- this.personal = TemplateStore.template.is_personal;
26
- this.public = TemplateStore.template.is_public;
22
+ if (!this.templateId) {
23
+ console.log(`[VISIBILITY] Missing required template ID ${this.templateId}`);
24
+ return;
25
+ }
26
+ if (!this.endpoint.session) {
27
+ console.log('[VISIBILITY] Unable to start builder session, must be authenticated');
28
+ return;
29
+ }
30
+ this.store = await getTemplateStore(this.endpoint, this.templateId, false);
31
+ this.personal = ((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.is_personal) || true;
32
+ this.public = ((_d = (_c = this.store) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.is_public) || false;
27
33
  this.dirty = false;
28
34
  }
29
35
  catch (e) {
30
36
  console.log('[TEMPLATE VISIBILITY] Error loading template', e);
31
- this.loading = false;
32
- (_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
37
+ (_e = this.sdkError) === null || _e === void 0 ? void 0 : _e.emit(new SDKError(e.message, (_f = e.response) === null || _f === void 0 ? void 0 : _f.status, (_g = e.response) === null || _g === void 0 ? void 0 : _g.data));
33
38
  }
34
39
  }
35
40
  handleCancel(e) {
36
- var _a;
41
+ var _a, _b, _c, _d, _e;
37
42
  e.stopPropagation();
38
- this.personal = TemplateStore.template.is_personal;
39
- this.public = TemplateStore.template.is_public;
43
+ this.personal = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.is_personal;
44
+ this.public = (_d = (_c = this.store) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.is_public;
40
45
  this.dirty = false;
41
- (_a = this.close) === null || _a === void 0 ? void 0 : _a.emit();
46
+ (_e = this.close) === null || _e === void 0 ? void 0 : _e.emit();
42
47
  }
43
48
  async handleSave(e) {
44
- var _a;
49
+ var _a, _b;
45
50
  e.stopPropagation();
46
51
  await updateTemplate(this.endpoint, this.templateId, { is_personal: this.personal, is_public: this.public });
47
- TemplateStore.template.is_personal = this.personal;
48
- TemplateStore.template.is_public = this.public;
52
+ if ((_a = this.store) === null || _a === void 0 ? void 0 : _a.state) {
53
+ this.store.state.is_personal = this.personal;
54
+ this.store.state.is_public = this.public;
55
+ }
49
56
  this.dirty = false;
50
- (_a = this.close) === null || _a === void 0 ? void 0 : _a.emit();
57
+ (_b = this.close) === null || _b === void 0 ? void 0 : _b.emit();
51
58
  }
52
59
  render() {
60
+ var _a, _b;
53
61
  if (!this.endpoint.session) {
54
62
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
55
63
  }
56
64
  // This is meant to be a companion for larger visual experiences so we just go blank on errors for now.
57
- if (!this.endpoint.session || !TemplateStore.template) {
65
+ if (!this.endpoint.session || !((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.isLoaded)) {
58
66
  return h(Host, { class: "empty" });
59
67
  }
60
68
  return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("h5", null, "Visibility"), h("div", { class: "input-row" }, h("label", { htmlFor: "verdocs-is-shared" }, "Shared"), h("verdocs-checkbox", { id: "verdocs-is-shared", name: "is-shared", checked: !this.personal, value: "on", onInput: (e) => {
@@ -122,7 +130,6 @@ export class VerdocsTemplateVisibility {
122
130
  static get states() {
123
131
  return {
124
132
  "dirty": {},
125
- "loading": {},
126
133
  "personal": {},
127
134
  "public": {}
128
135
  };
@@ -0,0 +1,77 @@
1
+ import { createStore } from '@stencil/store';
2
+ import { getTemplate } from '@verdocs/js-sdk/Templates/Templates';
3
+ import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
4
+ const createTemplateStore = (templateId) => {
5
+ const now = new Date().toISOString();
6
+ return createStore({
7
+ isLoading: true,
8
+ isLoaded: false,
9
+ isError: false,
10
+ error: null,
11
+ updateCount: 0,
12
+ roleNames: [],
13
+ id: templateId,
14
+ name: '',
15
+ description: '',
16
+ sender: TemplateSenderTypes.CREATOR,
17
+ profile_id: '',
18
+ organization_id: '',
19
+ counter: 0,
20
+ star_counter: 0,
21
+ is_sendable: false,
22
+ is_personal: true,
23
+ is_public: false,
24
+ created_at: now,
25
+ updated_at: now,
26
+ last_used_at: now,
27
+ token: '',
28
+ reminder_id: '',
29
+ reminder: undefined,
30
+ processed: false,
31
+ organization: undefined,
32
+ roles: [],
33
+ pages: [],
34
+ template_document: undefined,
35
+ template_documents: [],
36
+ });
37
+ };
38
+ const templateStores = {};
39
+ export const getTemplateStore = async (endpoint, templateId, forceReload = false) => {
40
+ let created = false;
41
+ if (!templateStores[templateId]) {
42
+ console.log('[TEMPLATES] No template store found for ID, creating', templateId);
43
+ templateStores[templateId] = createTemplateStore(templateId);
44
+ created = true;
45
+ }
46
+ const store = templateStores[templateId];
47
+ // TODO: This can create a race condition if two components call this at the same time.
48
+ // For now we can probably defer doing something smart here because it's only a
49
+ // double-load issue.
50
+ if (created || forceReload) {
51
+ console.log('[TEMPLATES] Reloading template', { templateId, created, forceReload });
52
+ store.state.isLoading = true;
53
+ store.state.isLoaded = false;
54
+ store.state.isError = false;
55
+ store.state.error = undefined;
56
+ try {
57
+ const template = await getTemplate(endpoint, templateId);
58
+ console.log('[TEMPLATES] Got template', template);
59
+ Object.assign(store.state, template);
60
+ // Object.keys(template).forEach(key => store.set(key as keyof TTemplateStore, template[key]));
61
+ store.state.isLoaded = true;
62
+ store.state.isError = false;
63
+ store.state.error = undefined;
64
+ }
65
+ catch (e) {
66
+ console.error('[TEMPLATES] Error loading template', e);
67
+ store.state.isLoaded = false;
68
+ store.state.isError = true;
69
+ store.state.error = e;
70
+ throw e;
71
+ }
72
+ store.state.isLoading = false;
73
+ store.state.updateCount++;
74
+ }
75
+ return store;
76
+ };
77
+ export const getRoleNames = (store) => { var _a; return (((_a = store === null || store === void 0 ? void 0 : store.state) === null || _a === void 0 ? void 0 : _a.roles) || []).map(role => role.name); };