@verdocs/web-sdk 1.12.43 → 1.13.0

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 +76 -85
  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 +33 -43
  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 +19 -24
  51. package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +46 -56
  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 +19 -24
  81. package/dist/components/verdocs-template-roles2.js +46 -56
  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/docs.json +189 -2
  86. package/dist/esm/{templateStore-17c872da.js → TemplateStore-91a71f46.js} +76 -43
  87. package/dist/esm/loader.js +1 -1
  88. package/dist/esm/verdocs-build.entry.js +12 -15
  89. package/dist/esm/verdocs-button-panel_3.entry.js +32 -31
  90. package/dist/esm/verdocs-field-attachment.entry.js +2 -3
  91. package/dist/esm/verdocs-field-checkbox.entry.js +3 -4
  92. package/dist/esm/verdocs-field-date.entry.js +3 -4
  93. package/dist/esm/verdocs-field-dropdown.entry.js +3 -4
  94. package/dist/esm/verdocs-field-initial.entry.js +3 -4
  95. package/dist/esm/verdocs-field-payment.entry.js +2 -3
  96. package/dist/esm/verdocs-field-radio-button.entry.js +3 -4
  97. package/dist/esm/verdocs-field-signature.entry.js +3 -4
  98. package/dist/esm/verdocs-field-textarea.entry.js +3 -4
  99. package/dist/esm/verdocs-field-textbox.entry.js +3 -4
  100. package/dist/esm/verdocs-field-timestamp.entry.js +3 -4
  101. package/dist/esm/verdocs-preview.entry.js +21 -17
  102. package/dist/esm/verdocs-send.entry.js +31 -29
  103. package/dist/esm/verdocs-template-attachments.entry.js +20 -11
  104. package/dist/esm/verdocs-template-create_3.entry.js +76 -85
  105. package/dist/esm/verdocs-template-name.entry.js +26 -18
  106. package/dist/esm/verdocs-template-properties.entry.js +14 -15
  107. package/dist/esm/verdocs-template-reminders.entry.js +24 -19
  108. package/dist/esm/verdocs-template-role-properties_2.entry.js +31 -41
  109. package/dist/esm/verdocs-template-visibility.entry.js +27 -20
  110. package/dist/esm/verdocs-web-sdk.js +1 -1
  111. package/dist/esm-es5/TemplateStore-91a71f46.js +1 -0
  112. package/dist/esm-es5/loader.js +1 -1
  113. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  114. package/dist/esm-es5/verdocs-button-panel_3.entry.js +1 -1
  115. package/dist/esm-es5/verdocs-field-attachment.entry.js +1 -1
  116. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  117. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  118. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  119. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  120. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  121. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  122. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  123. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  124. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  125. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  126. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  127. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  128. package/dist/esm-es5/verdocs-template-attachments.entry.js +1 -1
  129. package/dist/esm-es5/verdocs-template-create_3.entry.js +1 -1
  130. package/dist/esm-es5/verdocs-template-name.entry.js +1 -1
  131. package/dist/esm-es5/verdocs-template-properties.entry.js +1 -1
  132. package/dist/esm-es5/verdocs-template-reminders.entry.js +1 -1
  133. package/dist/esm-es5/verdocs-template-role-properties_2.entry.js +1 -1
  134. package/dist/esm-es5/verdocs-template-visibility.entry.js +1 -1
  135. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  136. package/dist/types/components/controls/verdocs-button-panel/verdocs-button-panel.d.ts +1 -2
  137. package/dist/types/components/embeds/verdocs-build/verdocs-build.d.ts +2 -0
  138. package/dist/types/components/embeds/verdocs-preview/verdocs-preview.d.ts +3 -1
  139. package/dist/types/components/embeds/verdocs-send/verdocs-send.d.ts +3 -1
  140. package/dist/types/components/fields/verdocs-field-attachment/verdocs-field-attachment.d.ts +4 -0
  141. package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +4 -0
  142. package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +4 -0
  143. package/dist/types/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.d.ts +4 -0
  144. package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +4 -0
  145. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +4 -0
  146. package/dist/types/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.d.ts +4 -0
  147. package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +4 -0
  148. package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +4 -0
  149. package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +4 -0
  150. package/dist/types/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.d.ts +4 -0
  151. package/dist/types/components/templates/verdocs-template-attachments/verdocs-template-attachments.d.ts +2 -1
  152. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +2 -0
  153. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +2 -0
  154. package/dist/types/components/templates/verdocs-template-name/verdocs-template-name.d.ts +2 -1
  155. package/dist/types/components/templates/verdocs-template-properties/verdocs-template-properties.d.ts +2 -2
  156. package/dist/types/components/templates/verdocs-template-reminders/verdocs-template-reminders.d.ts +2 -1
  157. package/dist/types/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.d.ts +2 -0
  158. package/dist/types/components/templates/verdocs-template-roles/verdocs-template-roles.d.ts +2 -1
  159. package/dist/types/components/templates/verdocs-template-sender/verdocs-template-sender.d.ts +2 -0
  160. package/dist/types/components/templates/verdocs-template-visibillity/verdocs-template-visibility.d.ts +2 -1
  161. package/dist/types/components.d.ts +88 -0
  162. package/dist/types/utils/TemplateStore.d.ts +14 -0
  163. package/dist/verdocs-web-sdk/p-1b21b08d.system.entry.js +1 -0
  164. package/dist/verdocs-web-sdk/p-227d07a2.entry.js +1 -0
  165. package/dist/verdocs-web-sdk/p-2cb414ec.system.entry.js +1 -0
  166. package/dist/verdocs-web-sdk/p-2d39a000.entry.js +1 -0
  167. package/dist/verdocs-web-sdk/p-34d3d150.system.entry.js +1 -0
  168. package/dist/verdocs-web-sdk/p-36a31514.entry.js +1 -0
  169. package/dist/verdocs-web-sdk/p-37dd3108.system.entry.js +1 -0
  170. package/dist/verdocs-web-sdk/p-38d0af92.entry.js +1 -0
  171. package/dist/verdocs-web-sdk/p-47bba747.entry.js +1 -0
  172. package/dist/verdocs-web-sdk/p-4eb829ca.system.entry.js +1 -0
  173. package/dist/verdocs-web-sdk/p-5a3d9d9f.system.entry.js +1 -0
  174. package/dist/verdocs-web-sdk/p-5b4dd6a0.entry.js +1 -0
  175. package/dist/verdocs-web-sdk/p-62e12e8f.system.entry.js +1 -0
  176. package/dist/verdocs-web-sdk/p-650b9205.system.entry.js +1 -0
  177. package/dist/verdocs-web-sdk/p-6a0e0615.system.entry.js +1 -0
  178. package/dist/verdocs-web-sdk/p-6caf1137.system.js +1 -1
  179. package/dist/verdocs-web-sdk/p-6dedf123.entry.js +1 -0
  180. package/dist/verdocs-web-sdk/p-6f511c7b.entry.js +1 -0
  181. package/dist/verdocs-web-sdk/p-7306abd0.system.entry.js +1 -0
  182. package/dist/verdocs-web-sdk/p-7464fd3c.system.entry.js +1 -0
  183. package/dist/verdocs-web-sdk/p-76938033.system.entry.js +1 -0
  184. package/dist/verdocs-web-sdk/p-809947d4.system.entry.js +1 -0
  185. package/dist/verdocs-web-sdk/p-8c9caa8a.system.entry.js +1 -0
  186. package/dist/verdocs-web-sdk/p-8d32078d.entry.js +1 -0
  187. package/dist/verdocs-web-sdk/p-8eca5dd8.entry.js +1 -0
  188. package/dist/verdocs-web-sdk/p-92a2bb47.entry.js +1 -0
  189. package/dist/verdocs-web-sdk/p-a3747387.system.entry.js +1 -0
  190. package/dist/verdocs-web-sdk/p-a5970648.system.entry.js +1 -0
  191. package/dist/verdocs-web-sdk/p-ab6bd525.entry.js +1 -0
  192. package/dist/verdocs-web-sdk/p-ba62a8f6.system.entry.js +1 -0
  193. package/dist/verdocs-web-sdk/p-c25d965d.js +1 -0
  194. package/dist/verdocs-web-sdk/p-c2770861.system.entry.js +1 -0
  195. package/dist/verdocs-web-sdk/p-c35bbaef.entry.js +1 -0
  196. package/dist/verdocs-web-sdk/p-c8901fde.entry.js +1 -0
  197. package/dist/verdocs-web-sdk/p-cc396cda.entry.js +1 -0
  198. package/dist/verdocs-web-sdk/p-ce6780e4.system.entry.js +1 -0
  199. package/dist/verdocs-web-sdk/p-d63fe7e9.system.entry.js +1 -0
  200. package/dist/verdocs-web-sdk/p-d7ca70cc.entry.js +1 -0
  201. package/dist/verdocs-web-sdk/p-db2b75bc.system.entry.js +1 -0
  202. package/dist/verdocs-web-sdk/p-de4c38a1.entry.js +1 -0
  203. package/dist/verdocs-web-sdk/p-e4b56475.entry.js +1 -0
  204. package/dist/verdocs-web-sdk/p-e9751ec7.entry.js +1 -0
  205. package/dist/verdocs-web-sdk/p-e9c9cdf5.entry.js +1 -0
  206. package/dist/verdocs-web-sdk/p-ec81b1f2.entry.js +1 -0
  207. package/dist/verdocs-web-sdk/p-f1edfd5a.system.js +1 -0
  208. package/dist/verdocs-web-sdk/p-f201e410.system.entry.js +1 -0
  209. package/dist/verdocs-web-sdk/p-f23a6019.entry.js +1 -0
  210. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  211. package/package.json +2 -2
  212. package/dist/cjs/Templates-f310df2f.js +0 -49
  213. package/dist/collection/utils/Templates.js +0 -44
  214. package/dist/collection/utils/templateStore.js +0 -46
  215. package/dist/components/Primitives.js +0 -20
  216. package/dist/components/Templates2.js +0 -67
  217. package/dist/custom-elements.json +0 -1502
  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,19 +183,20 @@ 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
195
  handleAddRole(e, sequence) {
196
+ var _a;
204
197
  e.stopPropagation();
205
198
  // 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;
199
+ const order = ((_a = this.store) === null || _a === void 0 ? void 0 : _a.state.roles.filter(role => role.sequence === sequence).length) + 1;
207
200
  const name = this.getNextRoleName();
208
201
  console.log('Will create', name, sequence, order);
209
202
  createRole(this.endpoint, this.templateId, {
@@ -218,12 +211,11 @@ export class VerdocsTemplateRoles {
218
211
  delegator: false,
219
212
  })
220
213
  .then(r => {
221
- var _a;
214
+ var _a, _b, _c;
222
215
  console.log('Created role', r);
223
- TemplateStore.template.roles.push(r);
216
+ (_a = this.store) === null || _a === void 0 ? void 0 : _a.state.roles.push(r);
224
217
  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 });
218
+ (_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
219
  })
228
220
  .catch(e => {
229
221
  console.log('Error creating role', e);
@@ -233,7 +225,6 @@ export class VerdocsTemplateRoles {
233
225
  e.stopPropagation();
234
226
  const order = 1;
235
227
  const name = this.getNextRoleName();
236
- console.log('Will create', name, sequence, order);
237
228
  createRole(this.endpoint, this.templateId, {
238
229
  template_id: this.templateId,
239
230
  name,
@@ -246,41 +237,41 @@ export class VerdocsTemplateRoles {
246
237
  delegator: false,
247
238
  })
248
239
  .then(r => {
249
- var _a;
250
- console.log('Created role', r);
251
- TemplateStore.template.roles.push(r);
240
+ var _a, _b, _c, _d;
241
+ (_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.push(r);
252
242
  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 });
243
+ (_d = this.templateUpdated) === null || _d === void 0 ? void 0 : _d.emit({ event: 'created-role', endpoint: this.endpoint, template: this.store.state });
255
244
  })
256
245
  .catch(e => {
257
246
  console.log('Error creating role', e);
258
247
  });
259
248
  }
260
249
  render() {
261
- var _a;
250
+ var _a, _b, _c, _d, _e, _f;
262
251
  if (!this.endpoint.session) {
263
252
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
264
253
  }
265
- if (TemplateStore.loading || !TemplateStore.template) {
266
- return (h(Host, null, h("verdocs-loader", null)));
254
+ if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.state.isLoaded)) {
255
+ return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
267
256
  }
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: () => {
257
+ 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);
258
+ 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 => {
259
+ var _a, _b;
260
+ 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 :
261
+ _b.roles.filter(role => role.sequence === sequence).map(role => {
262
+ const unknown = !role.email;
263
+ 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 })));
264
+ }), 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"))))));
265
+ }), 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
266
  this.showingRoleDialog = null;
276
- this.forceRerender++;
277
- }, onDelete: e => {
278
- var _a;
279
- console.log('deleted', e.detail);
267
+ // this.forceRerender++;
268
+ }, onDelete: async () => {
269
+ var _a, _b;
270
+ await getTemplateStore(this.endpoint, this.templateId, true);
280
271
  this.renumberTemplateRoles();
281
272
  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 });
273
+ // this.forceRerender++;
274
+ (_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
275
  } })), this.showingSenderDialog && h("verdocs-template-sender", { endpoint: this.endpoint, templateId: this.templateId, onClose: () => (this.showingSenderDialog = false) })));
285
276
  }
286
277
  static get is() { return "verdocs-template-roles"; }
@@ -341,8 +332,7 @@ export class VerdocsTemplateRoles {
341
332
  return {
342
333
  "showingRoleDialog": {},
343
334
  "showingSenderDialog": {},
344
- "sender": {},
345
- "forceRerender": {}
335
+ "sender": {}
346
336
  };
347
337
  }
348
338
  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); };
@@ -1,5 +1,6 @@
1
1
  import { getRenderingRef, forceUpdate } from '@stencil/core/internal/client';
2
- import { i as integerSequence } from './Primitives.js';
2
+ import { a as getTemplate } from './Templates.js';
3
+ import { T as TemplateSenderTypes } from './VerdocsEndpoint.js';
3
4
 
4
5
  const appendToMap = (map, propName, value) => {
5
6
  const items = map.get(propName);
@@ -192,47 +193,79 @@ const createStore = (defaultState, shouldUpdate) => {
192
193
  return map;
193
194
  };
194
195
 
195
- // NOTE: Do not attempt to convert this to a named-export module. It triggers compilation issues in Rollup that I spent days trying to
196
- const { state, onChange } = createStore({
197
- templateId: '',
198
- template: null,
199
- loadProgress: 0,
200
- loading: false,
201
- // This can be used as a data field on components that need to force re-rendering when the underlying data has changed. Stencil stores
202
- // are handy but not very sophisticated. They don't re-render on "deep" changes.
203
- updateCount: 1,
204
- pageNumbers: [],
205
- pageUris: {},
206
- roleNames: [],
207
- fields: [],
208
- dirty: false,
209
- });
210
- onChange('template', async (newTemplate) => {
211
- if (!newTemplate) {
212
- console.log('[TEMPLATESTORE] Clearing template');
213
- state.fields = [];
214
- state.roleNames = [];
215
- state.pageNumbers = [];
216
- state.dirty = false;
217
- state.loading = false;
218
- state.loadProgress = 0;
219
- return;
220
- }
221
- console.log('[TEMPLATESTORE] Template loaded', newTemplate);
222
- state.roleNames = newTemplate.roles.map(role => role.name);
223
- console.log('[TEMPLATESTORE] Loaded roles', state.roleNames);
224
- state.fields = [];
225
- newTemplate.roles.forEach(role => {
226
- state.fields.push(...role.fields);
196
+ const createTemplateStore = (templateId) => {
197
+ const now = new Date().toISOString();
198
+ return createStore({
199
+ isLoading: true,
200
+ isLoaded: false,
201
+ isError: false,
202
+ error: null,
203
+ updateCount: 0,
204
+ roleNames: [],
205
+ id: templateId,
206
+ name: '',
207
+ description: '',
208
+ sender: TemplateSenderTypes.CREATOR,
209
+ profile_id: '',
210
+ organization_id: '',
211
+ counter: 0,
212
+ star_counter: 0,
213
+ is_sendable: false,
214
+ is_personal: true,
215
+ is_public: false,
216
+ created_at: now,
217
+ updated_at: now,
218
+ last_used_at: now,
219
+ token: '',
220
+ reminder_id: '',
221
+ reminder: undefined,
222
+ processed: false,
223
+ organization: undefined,
224
+ roles: [],
225
+ pages: [],
226
+ template_document: undefined,
227
+ template_documents: [],
227
228
  });
228
- console.log('[TEMPLATESTORE] Loaded fields', state.fields);
229
- state.pageNumbers = integerSequence(1, newTemplate.pages.length);
230
- state.updateCount++;
231
- });
232
- // TODO: Do not rely on this, it doesn't appear to be working
233
- onChange('fields', newField => {
234
- console.log('[TEMPLATESTORE] Field changed', newField);
235
- state.dirty = true;
236
- });
229
+ };
230
+ const templateStores = {};
231
+ const getTemplateStore = async (endpoint, templateId, forceReload = false) => {
232
+ let created = false;
233
+ if (!templateStores[templateId]) {
234
+ console.log('[TEMPLATES] No template store found for ID, creating', templateId);
235
+ templateStores[templateId] = createTemplateStore(templateId);
236
+ created = true;
237
+ }
238
+ const store = templateStores[templateId];
239
+ // TODO: This can create a race condition if two components call this at the same time.
240
+ // For now we can probably defer doing something smart here because it's only a
241
+ // double-load issue.
242
+ if (created || forceReload) {
243
+ console.log('[TEMPLATES] Reloading template', { templateId, created, forceReload });
244
+ store.state.isLoading = true;
245
+ store.state.isLoaded = false;
246
+ store.state.isError = false;
247
+ store.state.error = undefined;
248
+ try {
249
+ const template = await getTemplate(endpoint, templateId);
250
+ console.log('[TEMPLATES] Got template', template);
251
+ Object.assign(store.state, template);
252
+ // Object.keys(template).forEach(key => store.set(key as keyof TTemplateStore, template[key]));
253
+ store.state.isLoaded = true;
254
+ store.state.isError = false;
255
+ store.state.error = undefined;
256
+ }
257
+ catch (e) {
258
+ console.error('[TEMPLATES] Error loading template', e);
259
+ store.state.isLoaded = false;
260
+ store.state.isError = true;
261
+ store.state.error = e;
262
+ throw e;
263
+ }
264
+ store.state.isLoading = false;
265
+ store.state.updateCount++;
266
+ }
267
+ return store;
268
+ };
269
+ 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); };
237
270
 
238
- export { state as s };
271
+ export { getRoleNames as a, getTemplateStore as g };