@verdocs/web-sdk 4.2.157 → 5.0.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 (514) hide show
  1. package/dist/cjs/Datastore-b1742da2.js +1783 -0
  2. package/dist/cjs/Icons-02a47df1.js +7 -0
  3. package/dist/cjs/{index-2589e4d1.js → index-ccac8641.js} +19 -31
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/{utils-5accd019.js → utils-ba1e95e0.js} +4 -2
  6. package/dist/cjs/verdocs-auth.cjs.entry.js +1 -1
  7. package/dist/cjs/verdocs-build.cjs.entry.js +22 -13
  8. package/dist/cjs/verdocs-button-panel_2.cjs.entry.js +1 -1
  9. package/dist/cjs/{verdocs-button_3.cjs.entry.js → verdocs-button_2.cjs.entry.js} +1 -56
  10. package/dist/cjs/{verdocs-checkbox_4.cjs.entry.js → verdocs-checkbox_6.cjs.entry.js} +115 -24
  11. package/dist/cjs/verdocs-contact-picker_2.cjs.entry.js +2 -2
  12. package/dist/cjs/verdocs-dialog.cjs.entry.js +1 -1
  13. package/dist/cjs/verdocs-dropdown.cjs.entry.js +1 -1
  14. package/dist/cjs/verdocs-envelope-document-page.cjs.entry.js +2 -2
  15. package/dist/cjs/verdocs-envelope-recipient-link_2.cjs.entry.js +30 -15
  16. package/dist/cjs/verdocs-envelope-recipient-summary.cjs.entry.js +32 -17
  17. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +64 -45
  18. package/dist/cjs/verdocs-envelopes-list.cjs.entry.js +2 -2
  19. package/dist/cjs/verdocs-field-attachment_13.cjs.entry.js +105 -156
  20. package/dist/cjs/verdocs-field-payment.cjs.entry.js +38 -25
  21. package/dist/cjs/{verdocs-file-chooser_2.cjs.entry.js → verdocs-file-chooser.cjs.entry.js} +2 -21
  22. package/dist/cjs/verdocs-kba-dialog_2.cjs.entry.js +27 -5
  23. package/dist/cjs/verdocs-ok-dialog.cjs.entry.js +1 -1
  24. package/dist/cjs/verdocs-organization-card_2.cjs.entry.js +1 -1
  25. package/dist/cjs/verdocs-pagination_2.cjs.entry.js +2 -2
  26. package/dist/cjs/{verdocs-preview_9.cjs.entry.js → verdocs-preview_5.cjs.entry.js} +220 -593
  27. package/dist/cjs/verdocs-progress-bar.cjs.entry.js +25 -0
  28. package/dist/cjs/verdocs-quick-functions.cjs.entry.js +1 -1
  29. package/dist/cjs/verdocs-radio-button.cjs.entry.js +1 -1
  30. package/dist/cjs/verdocs-search-box.cjs.entry.js +1 -1
  31. package/dist/cjs/verdocs-search-tabs.cjs.entry.js +1 -1
  32. package/dist/cjs/verdocs-sign.cjs.entry.js +11 -12
  33. package/dist/cjs/verdocs-spinner.cjs.entry.js +1 -1
  34. package/dist/cjs/verdocs-status-indicator.cjs.entry.js +1 -1
  35. package/dist/cjs/verdocs-table.cjs.entry.js +1 -1
  36. package/dist/cjs/verdocs-template-card.cjs.entry.js +1 -1
  37. package/dist/cjs/verdocs-template-create.cjs.entry.js +108 -0
  38. package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +78 -63
  39. package/dist/cjs/verdocs-template-role-properties.cjs.entry.js +58 -37
  40. package/dist/cjs/verdocs-template-star.cjs.entry.js +2 -2
  41. package/dist/cjs/verdocs-template-tags.cjs.entry.js +2 -2
  42. package/dist/cjs/verdocs-templates-list.cjs.entry.js +1 -1
  43. package/dist/cjs/verdocs-toggle.cjs.entry.js +1 -1
  44. package/dist/cjs/verdocs-web-sdk.cjs.js +3 -3
  45. package/dist/collection/collection-manifest.json +2 -5
  46. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.js +5 -21
  47. package/dist/collection/components/embeds/verdocs-build/verdocs-build.js +27 -40
  48. package/dist/collection/components/embeds/verdocs-preview/verdocs-preview.js +27 -28
  49. package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +45 -44
  50. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +12 -11
  51. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js +28 -28
  52. package/dist/collection/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.js +34 -15
  53. package/dist/collection/components/envelopes/verdocs-envelope-recipient-summary/verdocs-envelope-recipient-summary.js +35 -17
  54. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js +67 -45
  55. package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.js +29 -18
  56. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +30 -20
  57. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +30 -22
  58. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +29 -17
  59. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +30 -18
  60. package/dist/collection/components/fields/verdocs-field-payment/verdocs-field-payment.js +192 -139
  61. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.js +30 -20
  62. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +30 -18
  63. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +31 -19
  64. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.css +31 -0
  65. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +44 -44
  66. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +29 -17
  67. package/dist/collection/components/templates/verdocs-template-build-tabs/verdocs-template-build-tabs.js +37 -32
  68. package/dist/collection/components/templates/verdocs-template-create/verdocs-template-create.js +7 -15
  69. package/dist/collection/components/templates/verdocs-template-document-page/verdocs-template-document-page.css +6 -0
  70. package/dist/collection/components/templates/verdocs-template-document-page/verdocs-template-document-page.js +79 -61
  71. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +48 -24
  72. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +65 -64
  73. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.js +61 -36
  74. package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +63 -46
  75. package/dist/collection/components/templates/verdocs-template-star/verdocs-template-star.js +1 -1
  76. package/dist/collection/components/templates/verdocs-template-tags/verdocs-template-tags.js +1 -1
  77. package/dist/collection/utils/Datastore.js +141 -0
  78. package/dist/collection/utils/Templates.js +2 -0
  79. package/dist/collection/utils/utils.js +3 -2
  80. package/dist/components/index.js +1 -7
  81. package/dist/components/{p-3044c9cb.js → p-070bebd7.js} +1 -1
  82. package/dist/components/{p-69881420.js → p-0ca7012b.js} +1 -1
  83. package/dist/components/{p-b2bf338f.js → p-0d063bf9.js} +65 -35
  84. package/dist/components/{p-ac7578f6.js → p-0e332769.js} +1 -1
  85. package/dist/components/{p-12594438.js → p-1030e0b1.js} +32 -32
  86. package/dist/components/{p-b11eb119.js → p-15d530b8.js} +6 -6
  87. package/dist/components/{p-71dd305b.js → p-18999830.js} +2 -2
  88. package/dist/components/{p-90540412.js → p-1ae5d7e0.js} +1 -1
  89. package/dist/components/{p-4d2f2954.js → p-1e2e8b1c.js} +1 -1
  90. package/dist/components/{p-c7a21595.js → p-1e67ebdf.js} +67 -42
  91. package/dist/components/{p-72e959a7.js → p-1fc15f94.js} +31 -32
  92. package/dist/components/{p-85ef4d07.js → p-2548f3f0.js} +49 -38
  93. package/dist/components/{p-9a85b700.js → p-258c3c53.js} +125 -101
  94. package/dist/components/{p-263dc67d.js → p-315d6592.js} +1 -1
  95. package/dist/components/{p-4dc4418a.js → p-3201d529.js} +1 -1
  96. package/dist/components/{p-7786799a.js → p-324ed895.js} +8 -4
  97. package/dist/components/{p-4c8548d4.js → p-4bc5ac82.js} +4 -3
  98. package/dist/components/{p-ffe8b41d.js → p-4dd750e9.js} +1 -1
  99. package/dist/components/{p-b679d760.js → p-4e08dcdd.js} +33 -32
  100. package/dist/components/{p-82fb3284.js → p-58c2bd5d.js} +1 -1
  101. package/dist/components/{p-d3170dcd.js → p-5a9cea40.js} +4 -4
  102. package/dist/components/{p-76282bf0.js → p-5d1dec61.js} +52 -53
  103. package/dist/components/{p-8b27ce22.js → p-5d4bbcd0.js} +1 -1
  104. package/dist/components/{p-8cd2e08d.js → p-5d82a9f3.js} +64 -57
  105. package/dist/components/{p-877eaf65.js → p-5eb45a4f.js} +1 -1
  106. package/dist/components/{p-cbb20d7a.js → p-6400f542.js} +36 -14
  107. package/dist/components/{p-6e8c00bc.js → p-642af221.js} +32 -31
  108. package/dist/components/{p-03660739.js → p-649a2ae7.js} +31 -32
  109. package/dist/components/{p-e4ac6259.js → p-6fcd99d1.js} +2 -2
  110. package/dist/components/p-7e9c499e.js +4 -0
  111. package/dist/components/{p-cdf871dd.js → p-81794664.js} +30 -29
  112. package/dist/components/{p-1b60debe.js → p-82a3f92e.js} +30 -29
  113. package/dist/components/{p-921297ba.js → p-84ae0283.js} +1 -1
  114. package/dist/components/{p-fbc69665.js → p-8d3c0b4c.js} +2 -2
  115. package/dist/components/{p-83a2fa2f.js → p-8fbc64e9.js} +72 -55
  116. package/dist/components/{p-761eefa9.js → p-94065def.js} +91 -90
  117. package/dist/components/{p-0e64ccc3.js → p-9bb47a5a.js} +1 -1
  118. package/dist/components/{p-df4ac086.js → p-a3e12c74.js} +2 -2
  119. package/dist/components/{p-6b369b14.js → p-b16c202a.js} +1 -1
  120. package/dist/components/{p-3518350d.js → p-b9034018.js} +4 -4
  121. package/dist/components/{p-b8cd75c0.js → p-b9a18099.js} +56 -46
  122. package/dist/components/{p-8f942993.js → p-bdc03b91.js} +32 -31
  123. package/dist/components/{p-4535a9fd.js → p-c7b00ce6.js} +36 -17
  124. package/dist/components/{p-e4a852b5.js → p-c8fedb4e.js} +7 -6
  125. package/dist/components/{p-0162bdd3.js → p-caa41754.js} +31 -34
  126. package/dist/components/{p-83245875.js → p-cf6ea837.js} +2 -2
  127. package/dist/components/p-da4d4eed.js +1781 -0
  128. package/dist/components/p-ea5954bd.js +4 -0
  129. package/dist/components/{p-1e63fb14.js → p-ec894daf.js} +2 -2
  130. package/dist/components/{p-556596e4.js → p-f72b9c45.js} +1 -1
  131. package/dist/components/{p-a7bbe96b.js → p-f990140a.js} +3 -3
  132. package/dist/components/{p-db4a15fd.js → p-fcad60f5.js} +1 -1
  133. package/dist/components/verdocs-auth.js +4 -4
  134. package/dist/components/verdocs-build.js +93 -115
  135. package/dist/components/verdocs-button-panel.js +1 -1
  136. package/dist/components/verdocs-button.js +1 -1
  137. package/dist/components/verdocs-checkbox.js +1 -1
  138. package/dist/components/verdocs-component-error.js +1 -1
  139. package/dist/components/verdocs-contact-picker.js +1 -1
  140. package/dist/components/verdocs-dialog.js +1 -1
  141. package/dist/components/verdocs-dropdown.js +1 -1
  142. package/dist/components/verdocs-envelope-document-page.js +1 -1
  143. package/dist/components/verdocs-envelope-recipient-link.js +1 -1
  144. package/dist/components/verdocs-envelope-recipient-summary.js +37 -19
  145. package/dist/components/verdocs-envelope-sidebar.js +76 -54
  146. package/dist/components/verdocs-envelopes-list.js +12 -12
  147. package/dist/components/verdocs-field-attachment.js +1 -1
  148. package/dist/components/verdocs-field-checkbox.js +1 -1
  149. package/dist/components/verdocs-field-date.js +1 -1
  150. package/dist/components/verdocs-field-dropdown.js +1 -1
  151. package/dist/components/verdocs-field-initial.js +1 -1
  152. package/dist/components/verdocs-field-payment.js +106 -33
  153. package/dist/components/verdocs-field-radio.js +1 -1
  154. package/dist/components/verdocs-field-signature.js +1 -1
  155. package/dist/components/verdocs-field-textarea.js +1 -1
  156. package/dist/components/verdocs-field-textbox.js +1 -1
  157. package/dist/components/verdocs-field-timestamp.js +1 -1
  158. package/dist/components/verdocs-file-chooser.js +56 -1
  159. package/dist/components/verdocs-help-icon.js +1 -1
  160. package/dist/components/verdocs-initial-dialog.js +1 -1
  161. package/dist/components/verdocs-kba-dialog.js +1 -1
  162. package/dist/components/verdocs-loader.js +1 -1
  163. package/dist/components/verdocs-ok-dialog.js +1 -1
  164. package/dist/components/verdocs-organization-card.js +2 -2
  165. package/dist/components/verdocs-pagination.js +1 -1
  166. package/dist/components/verdocs-portal.js +1 -1
  167. package/dist/components/verdocs-preview.js +1 -1
  168. package/dist/components/verdocs-progress-bar.js +1 -1
  169. package/dist/components/verdocs-quick-filter.js +1 -1
  170. package/dist/components/verdocs-quick-functions.js +1 -1
  171. package/dist/components/verdocs-radio-button.js +1 -1
  172. package/dist/components/verdocs-search-box.js +1 -1
  173. package/dist/components/verdocs-search-tabs.js +1 -1
  174. package/dist/components/verdocs-select-input.js +1 -1
  175. package/dist/components/verdocs-send.js +1 -1
  176. package/dist/components/verdocs-sign.js +24 -23
  177. package/dist/components/verdocs-signature-dialog.js +1 -1
  178. package/dist/components/verdocs-spinner.js +1 -1
  179. package/dist/components/verdocs-status-indicator.js +1 -1
  180. package/dist/components/verdocs-switch.js +1 -1
  181. package/dist/components/verdocs-table.js +1 -1
  182. package/dist/components/verdocs-tabs.js +1 -1
  183. package/dist/components/verdocs-template-build-tabs.js +1 -1
  184. package/dist/components/verdocs-template-card.js +1 -1
  185. package/dist/components/verdocs-template-create.js +148 -1
  186. package/dist/components/verdocs-template-document-page.js +1 -1
  187. package/dist/components/verdocs-template-field-properties.js +1 -1
  188. package/dist/components/verdocs-template-fields.js +1 -1
  189. package/dist/components/verdocs-template-role-properties.js +1 -1
  190. package/dist/components/verdocs-template-roles.js +1 -1
  191. package/dist/components/verdocs-template-star.js +1 -1
  192. package/dist/components/verdocs-template-tags.js +2 -2
  193. package/dist/components/verdocs-templates-list.js +11 -11
  194. package/dist/components/verdocs-text-input.js +1 -1
  195. package/dist/components/verdocs-toggle-button.js +1 -1
  196. package/dist/components/verdocs-toggle.js +1 -1
  197. package/dist/components/verdocs-toolbar-icon.js +1 -1
  198. package/dist/components/verdocs-upload-dialog.js +1 -1
  199. package/dist/components/verdocs-view.js +1 -1
  200. package/dist/custom-elements.json +2114 -0
  201. package/dist/esm/Datastore-52fcbac6.js +1781 -0
  202. package/dist/esm/Icons-190fd11d.js +4 -0
  203. package/dist/esm/{index-c8587076.js → index-272d51a4.js} +20 -30
  204. package/dist/esm/loader.js +3 -3
  205. package/dist/esm/{utils-6ecd6558.js → utils-47de6f79.js} +4 -3
  206. package/dist/esm/verdocs-auth.entry.js +1 -1
  207. package/dist/esm/verdocs-build.entry.js +23 -14
  208. package/dist/esm/verdocs-button-panel_2.entry.js +1 -1
  209. package/dist/esm/{verdocs-button_3.entry.js → verdocs-button_2.entry.js} +2 -56
  210. package/dist/esm/{verdocs-checkbox_4.entry.js → verdocs-checkbox_6.entry.js} +115 -26
  211. package/dist/esm/verdocs-contact-picker_2.entry.js +2 -2
  212. package/dist/esm/verdocs-dialog.entry.js +1 -1
  213. package/dist/esm/verdocs-dropdown.entry.js +1 -1
  214. package/dist/esm/verdocs-envelope-document-page.entry.js +2 -2
  215. package/dist/esm/verdocs-envelope-recipient-link_2.entry.js +31 -16
  216. package/dist/esm/verdocs-envelope-recipient-summary.entry.js +33 -18
  217. package/dist/esm/verdocs-envelope-sidebar.entry.js +65 -46
  218. package/dist/esm/verdocs-envelopes-list.entry.js +2 -2
  219. package/dist/esm/verdocs-field-attachment_13.entry.js +105 -156
  220. package/dist/esm/verdocs-field-payment.entry.js +38 -25
  221. package/dist/{components/p-fe2dca8c.js → esm/verdocs-file-chooser.entry.js} +8 -31
  222. package/dist/esm/verdocs-kba-dialog_2.entry.js +27 -5
  223. package/dist/esm/verdocs-ok-dialog.entry.js +1 -1
  224. package/dist/esm/verdocs-organization-card_2.entry.js +1 -1
  225. package/dist/esm/verdocs-pagination_2.entry.js +2 -2
  226. package/dist/esm/{verdocs-preview_9.entry.js → verdocs-preview_5.entry.js} +222 -591
  227. package/dist/esm/verdocs-progress-bar.entry.js +21 -0
  228. package/dist/esm/verdocs-quick-functions.entry.js +1 -1
  229. package/dist/esm/verdocs-radio-button.entry.js +1 -1
  230. package/dist/esm/verdocs-search-box.entry.js +1 -1
  231. package/dist/esm/verdocs-search-tabs.entry.js +1 -1
  232. package/dist/esm/verdocs-sign.entry.js +11 -12
  233. package/dist/esm/verdocs-spinner.entry.js +1 -1
  234. package/dist/esm/verdocs-status-indicator.entry.js +1 -1
  235. package/dist/esm/verdocs-table.entry.js +1 -1
  236. package/dist/esm/verdocs-template-card.entry.js +1 -1
  237. package/dist/{components/p-f9cc62a7.js → esm/verdocs-template-create.entry.js} +15 -69
  238. package/dist/esm/verdocs-template-document-page_2.entry.js +79 -64
  239. package/dist/esm/verdocs-template-role-properties.entry.js +59 -38
  240. package/dist/esm/verdocs-template-star.entry.js +2 -2
  241. package/dist/esm/verdocs-template-tags.entry.js +2 -2
  242. package/dist/esm/verdocs-templates-list.entry.js +1 -1
  243. package/dist/esm/verdocs-toggle.entry.js +1 -1
  244. package/dist/esm/verdocs-web-sdk.js +4 -4
  245. package/dist/esm-es5/Datastore-52fcbac6.js +1 -0
  246. package/dist/esm-es5/Icons-190fd11d.js +1 -0
  247. package/dist/esm-es5/index-272d51a4.js +1 -0
  248. package/dist/esm-es5/loader.js +1 -1
  249. package/dist/esm-es5/{utils-6ecd6558.js → utils-47de6f79.js} +1 -1
  250. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  251. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  252. package/dist/esm-es5/verdocs-button-panel_2.entry.js +1 -1
  253. package/dist/esm-es5/verdocs-button_2.entry.js +1 -0
  254. package/dist/esm-es5/verdocs-checkbox_6.entry.js +1 -0
  255. package/dist/esm-es5/verdocs-contact-picker_2.entry.js +1 -1
  256. package/dist/esm-es5/verdocs-dialog.entry.js +1 -1
  257. package/dist/esm-es5/verdocs-dropdown.entry.js +1 -1
  258. package/dist/esm-es5/verdocs-envelope-document-page.entry.js +1 -1
  259. package/dist/esm-es5/verdocs-envelope-recipient-link_2.entry.js +1 -1
  260. package/dist/esm-es5/verdocs-envelope-recipient-summary.entry.js +1 -1
  261. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  262. package/dist/esm-es5/verdocs-envelopes-list.entry.js +1 -1
  263. package/dist/esm-es5/verdocs-field-attachment_13.entry.js +1 -1
  264. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  265. package/dist/esm-es5/verdocs-file-chooser.entry.js +1 -0
  266. package/dist/esm-es5/verdocs-kba-dialog_2.entry.js +1 -1
  267. package/dist/esm-es5/verdocs-ok-dialog.entry.js +1 -1
  268. package/dist/esm-es5/verdocs-organization-card_2.entry.js +1 -1
  269. package/dist/esm-es5/verdocs-pagination_2.entry.js +1 -1
  270. package/dist/esm-es5/verdocs-preview_5.entry.js +1 -0
  271. package/dist/esm-es5/verdocs-progress-bar.entry.js +1 -0
  272. package/dist/esm-es5/verdocs-quick-functions.entry.js +1 -1
  273. package/dist/esm-es5/verdocs-radio-button.entry.js +1 -1
  274. package/dist/esm-es5/verdocs-search-box.entry.js +1 -1
  275. package/dist/esm-es5/verdocs-search-tabs.entry.js +1 -1
  276. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  277. package/dist/esm-es5/verdocs-spinner.entry.js +1 -1
  278. package/dist/esm-es5/verdocs-status-indicator.entry.js +1 -1
  279. package/dist/esm-es5/verdocs-table.entry.js +1 -1
  280. package/dist/esm-es5/verdocs-template-card.entry.js +1 -1
  281. package/dist/esm-es5/verdocs-template-create.entry.js +1 -0
  282. package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
  283. package/dist/esm-es5/verdocs-template-role-properties.entry.js +1 -1
  284. package/dist/esm-es5/verdocs-template-star.entry.js +1 -1
  285. package/dist/esm-es5/verdocs-template-tags.entry.js +1 -1
  286. package/dist/esm-es5/verdocs-templates-list.entry.js +1 -1
  287. package/dist/esm-es5/verdocs-toggle.entry.js +1 -1
  288. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  289. package/dist/types/components/controls/verdocs-text-input/verdocs-text-input.d.ts +0 -2
  290. package/dist/types/components/embeds/verdocs-build/verdocs-build.d.ts +8 -32
  291. package/dist/types/components/embeds/verdocs-preview/verdocs-preview.d.ts +6 -8
  292. package/dist/types/components/embeds/verdocs-send/verdocs-send.d.ts +7 -6
  293. package/dist/types/components/embeds/verdocs-sign/verdocs-sign.d.ts +3 -3
  294. package/dist/types/components/embeds/verdocs-view/verdocs-view.d.ts +6 -5
  295. package/dist/types/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.d.ts +6 -3
  296. package/dist/types/components/envelopes/verdocs-envelope-recipient-summary/verdocs-envelope-recipient-summary.d.ts +6 -3
  297. package/dist/types/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.d.ts +8 -4
  298. package/dist/types/components/fields/verdocs-field-attachment/verdocs-field-attachment.d.ts +6 -7
  299. package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +6 -7
  300. package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +6 -7
  301. package/dist/types/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.d.ts +6 -7
  302. package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +6 -7
  303. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +44 -30
  304. package/dist/types/components/fields/verdocs-field-radio/verdocs-field-radio.d.ts +6 -7
  305. package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +6 -7
  306. package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +6 -7
  307. package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +5 -12
  308. package/dist/types/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.d.ts +6 -7
  309. package/dist/types/components/templates/verdocs-template-build-tabs/verdocs-template-build-tabs.d.ts +7 -4
  310. package/dist/types/components/templates/verdocs-template-document-page/verdocs-template-document-page.d.ts +7 -4
  311. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +7 -8
  312. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +6 -8
  313. package/dist/types/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.d.ts +7 -7
  314. package/dist/types/components/templates/verdocs-template-roles/verdocs-template-roles.d.ts +7 -6
  315. package/dist/types/components.d.ts +176 -409
  316. package/dist/types/utils/Datastore.d.ts +24 -0
  317. package/dist/types/utils/Templates.d.ts +3 -0
  318. package/dist/types/utils/utils.d.ts +1 -1
  319. package/dist/verdocs-web-sdk/{p-efcbb3cf.entry.js → p-0ca1e87c.entry.js} +1 -1
  320. package/dist/verdocs-web-sdk/{p-dc271457.entry.js → p-167e3d7e.entry.js} +1 -1
  321. package/dist/verdocs-web-sdk/p-1efce6e0.entry.js +1 -0
  322. package/dist/verdocs-web-sdk/{p-7bd37bca.entry.js → p-2a1287ec.entry.js} +1 -1
  323. package/dist/verdocs-web-sdk/{p-5381847c.system.js → p-2be751c4.system.js} +1 -1
  324. package/dist/verdocs-web-sdk/{p-cb30f11e.entry.js → p-2f73c9de.entry.js} +1 -1
  325. package/dist/verdocs-web-sdk/p-3364cc13.system.entry.js +1 -0
  326. package/dist/verdocs-web-sdk/{p-03d40eb5.system.entry.js → p-37d747fb.system.entry.js} +1 -1
  327. package/dist/verdocs-web-sdk/p-386d789c.system.entry.js +1 -0
  328. package/dist/verdocs-web-sdk/p-3a1fa556.system.entry.js +1 -0
  329. package/dist/verdocs-web-sdk/{p-0fd57194.entry.js → p-41cbf650.entry.js} +1 -1
  330. package/dist/verdocs-web-sdk/{p-26715b8b.entry.js → p-4b36ca30.entry.js} +1 -1
  331. package/dist/verdocs-web-sdk/{p-98501408.system.entry.js → p-4e9e154f.system.entry.js} +1 -1
  332. package/dist/verdocs-web-sdk/{p-a3778013.system.entry.js → p-511a4ecc.system.entry.js} +1 -1
  333. package/dist/verdocs-web-sdk/{p-65a4e01e.entry.js → p-524f37a0.entry.js} +1 -1
  334. package/dist/verdocs-web-sdk/{p-13fe8650.system.entry.js → p-53f4c7c3.system.entry.js} +1 -1
  335. package/dist/verdocs-web-sdk/p-54f085d1.entry.js +1 -0
  336. package/dist/verdocs-web-sdk/{p-d1e64207.entry.js → p-584113d1.entry.js} +1 -1
  337. package/dist/verdocs-web-sdk/{p-f8cad58e.entry.js → p-5f1a000c.entry.js} +1 -1
  338. package/dist/verdocs-web-sdk/{p-256f07fd.system.entry.js → p-62f15675.system.entry.js} +1 -1
  339. package/dist/verdocs-web-sdk/{p-fae63f89.js → p-650697bd.js} +1 -1
  340. package/dist/verdocs-web-sdk/{p-c06d2604.entry.js → p-65c5398e.entry.js} +1 -1
  341. package/dist/verdocs-web-sdk/p-6a95ce12.system.entry.js +1 -0
  342. package/dist/verdocs-web-sdk/{p-0446030b.entry.js → p-6ced37ed.entry.js} +1 -1
  343. package/dist/verdocs-web-sdk/{p-16619383.entry.js → p-7464b84f.entry.js} +1 -1
  344. package/dist/verdocs-web-sdk/{p-6e3fa0c4.system.entry.js → p-761f6656.system.entry.js} +1 -1
  345. package/dist/verdocs-web-sdk/{p-30bc5986.entry.js → p-76cc40fe.entry.js} +1 -1
  346. package/dist/verdocs-web-sdk/{p-c45dc777.entry.js → p-771c2f92.entry.js} +1 -1
  347. package/dist/verdocs-web-sdk/p-78191329.system.entry.js +1 -0
  348. package/dist/verdocs-web-sdk/p-79f842b4.system.entry.js +1 -0
  349. package/dist/verdocs-web-sdk/{p-f3c995d8.system.entry.js → p-7c8938e7.system.entry.js} +1 -1
  350. package/dist/verdocs-web-sdk/p-7e9c499e.js +1 -0
  351. package/dist/verdocs-web-sdk/p-8221a48f.entry.js +1 -0
  352. package/dist/verdocs-web-sdk/p-860b9f94.system.entry.js +1 -0
  353. package/dist/verdocs-web-sdk/p-89cdecac.system.entry.js +1 -0
  354. package/dist/verdocs-web-sdk/p-8a2ff048.entry.js +1 -0
  355. package/dist/verdocs-web-sdk/{p-921b56fd.system.entry.js → p-914e131c.system.entry.js} +1 -1
  356. package/dist/verdocs-web-sdk/{p-5737f0ae.system.js → p-9186f42e.system.js} +1 -1
  357. package/dist/verdocs-web-sdk/{p-8e233a6b.system.entry.js → p-9227d400.system.entry.js} +1 -1
  358. package/dist/verdocs-web-sdk/p-92ce6180.entry.js +1 -0
  359. package/dist/verdocs-web-sdk/p-9567cb7d.system.entry.js +1 -0
  360. package/dist/verdocs-web-sdk/p-9812e99d.system.entry.js +1 -0
  361. package/dist/verdocs-web-sdk/{p-4b4801ad.system.entry.js → p-982f1b36.system.entry.js} +1 -1
  362. package/dist/verdocs-web-sdk/{p-ed6a5478.system.entry.js → p-9d0b0e36.system.entry.js} +1 -1
  363. package/dist/verdocs-web-sdk/{p-4266e717.system.entry.js → p-a08886c1.system.entry.js} +1 -1
  364. package/dist/verdocs-web-sdk/{p-e25e1dcf.entry.js → p-a165607e.entry.js} +1 -1
  365. package/dist/verdocs-web-sdk/p-a242aa80.system.entry.js +1 -0
  366. package/dist/verdocs-web-sdk/p-a7db9f1f.system.entry.js +1 -0
  367. package/dist/verdocs-web-sdk/{p-5d6a2fda.system.entry.js → p-a9635106.system.entry.js} +1 -1
  368. package/dist/verdocs-web-sdk/p-aebb0cd9.system.entry.js +1 -0
  369. package/dist/verdocs-web-sdk/p-b00ef194.system.entry.js +1 -0
  370. package/dist/verdocs-web-sdk/p-b0b958a0.entry.js +1 -0
  371. package/dist/verdocs-web-sdk/p-b8737f7b.entry.js +1 -0
  372. package/dist/verdocs-web-sdk/{p-49988769.js → p-b9654a5e.js} +2 -2
  373. package/dist/verdocs-web-sdk/p-bb0effe1.entry.js +1 -0
  374. package/dist/verdocs-web-sdk/p-bcc23811.entry.js +1 -0
  375. package/dist/verdocs-web-sdk/{p-281e63e5.entry.js → p-bd7406ae.entry.js} +1 -1
  376. package/dist/verdocs-web-sdk/{p-e8d91957.entry.js → p-bdd7b3d3.entry.js} +1 -1
  377. package/dist/verdocs-web-sdk/{p-c5818330.entry.js → p-c1728f5c.entry.js} +1 -1
  378. package/dist/verdocs-web-sdk/p-c18c718f.system.js +1 -0
  379. package/dist/verdocs-web-sdk/{p-731066de.system.entry.js → p-c6fd3e53.system.entry.js} +1 -1
  380. package/dist/verdocs-web-sdk/p-c7cd6843.entry.js +1 -0
  381. package/dist/verdocs-web-sdk/{p-4f7c72f9.system.entry.js → p-c9f40726.system.entry.js} +1 -1
  382. package/dist/verdocs-web-sdk/p-ca712f40.system.entry.js +1 -0
  383. package/dist/verdocs-web-sdk/p-cbb75c5e.system.entry.js +1 -0
  384. package/dist/verdocs-web-sdk/{p-751b0280.entry.js → p-d475fff3.entry.js} +1 -1
  385. package/dist/verdocs-web-sdk/{p-91c4298b.system.entry.js → p-d5870e33.system.entry.js} +1 -1
  386. package/dist/verdocs-web-sdk/{p-e5126f26.system.entry.js → p-d8dae4e9.system.entry.js} +1 -1
  387. package/dist/verdocs-web-sdk/p-d93c7661.entry.js +1 -0
  388. package/dist/verdocs-web-sdk/{p-93093a7a.system.entry.js → p-d98cbd0f.system.entry.js} +1 -1
  389. package/dist/verdocs-web-sdk/p-da4d4eed.js +1 -0
  390. package/dist/verdocs-web-sdk/{p-2298c22e.entry.js → p-ddb17b3e.entry.js} +1 -1
  391. package/dist/verdocs-web-sdk/p-df04f0ca.entry.js +1 -0
  392. package/dist/verdocs-web-sdk/p-e2b70dfb.system.js +1 -0
  393. package/dist/verdocs-web-sdk/{p-2aea0c7b.system.entry.js → p-e438bd02.system.entry.js} +1 -1
  394. package/dist/verdocs-web-sdk/p-e5044463.entry.js +1 -0
  395. package/dist/verdocs-web-sdk/{p-b066c4f2.system.entry.js → p-e5d291f3.system.entry.js} +1 -1
  396. package/dist/verdocs-web-sdk/{p-7f1e0c5e.entry.js → p-e6dbb0f7.entry.js} +1 -1
  397. package/dist/verdocs-web-sdk/{p-c4d61c66.entry.js → p-e83cd333.entry.js} +1 -1
  398. package/dist/verdocs-web-sdk/p-efd8149f.system.js +1 -0
  399. package/dist/verdocs-web-sdk/p-f4fcf7a5.entry.js +1 -0
  400. package/dist/verdocs-web-sdk/{p-97b951e6.system.entry.js → p-f5d01982.system.entry.js} +1 -1
  401. package/dist/verdocs-web-sdk/p-f65a9b03.entry.js +1 -0
  402. package/dist/verdocs-web-sdk/p-f7abe6e2.entry.js +1 -0
  403. package/dist/verdocs-web-sdk/{p-6e55af26.system.entry.js → p-f9b37af2.system.entry.js} +1 -1
  404. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  405. package/dist/verdocs-web-sdk/verdocs-web-sdk.js +1 -1
  406. package/package.json +3 -3
  407. package/dist/cjs/EnvelopeStore-f1cd9bd3.js +0 -96
  408. package/dist/cjs/Icons-9a6f2f7c.js +0 -86
  409. package/dist/cjs/TemplateFieldStore-7bcc0f7a.js +0 -44
  410. package/dist/cjs/TemplateRoleStore-e8bb00ec.js +0 -51
  411. package/dist/cjs/TemplateStore-db21be4d.js +0 -99
  412. package/dist/cjs/index-2a189d85.js +0 -3721
  413. package/dist/cjs/index-76d03a35.js +0 -196
  414. package/dist/cjs/verdocs-loader.cjs.entry.js +0 -20
  415. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.css +0 -120
  416. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.js +0 -284
  417. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.css +0 -0
  418. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.js +0 -196
  419. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.css +0 -86
  420. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.js +0 -203
  421. package/dist/collection/utils/EnvelopeStore.js +0 -90
  422. package/dist/collection/utils/TemplateFieldStore.js +0 -36
  423. package/dist/collection/utils/TemplateRoleStore.js +0 -41
  424. package/dist/collection/utils/TemplateStore.js +0 -94
  425. package/dist/components/p-00d39dca.js +0 -39
  426. package/dist/components/p-0933fb2d.js +0 -127
  427. package/dist/components/p-09d28afd.js +0 -97
  428. package/dist/components/p-3555cef1.js +0 -122
  429. package/dist/components/p-474b6663.js +0 -1314
  430. package/dist/components/p-821f2345.js +0 -93
  431. package/dist/components/p-9b5a4f9e.js +0 -44
  432. package/dist/components/p-a706bac9.js +0 -3719
  433. package/dist/components/p-b0766439.js +0 -76
  434. package/dist/components/p-ed9a1a21.js +0 -200
  435. package/dist/components/verdocs-template-attachments.d.ts +0 -11
  436. package/dist/components/verdocs-template-attachments.js +0 -6
  437. package/dist/components/verdocs-template-name.d.ts +0 -11
  438. package/dist/components/verdocs-template-name.js +0 -6
  439. package/dist/components/verdocs-template-visibility.d.ts +0 -11
  440. package/dist/components/verdocs-template-visibility.js +0 -6
  441. package/dist/esm/EnvelopeStore-4599b7d3.js +0 -93
  442. package/dist/esm/Icons-faf0377f.js +0 -76
  443. package/dist/esm/TemplateFieldStore-909147d8.js +0 -39
  444. package/dist/esm/TemplateRoleStore-2fef1fdb.js +0 -44
  445. package/dist/esm/TemplateStore-ace14a8b.js +0 -97
  446. package/dist/esm/index-24d8ae6a.js +0 -194
  447. package/dist/esm/index-7588a071.js +0 -3719
  448. package/dist/esm/verdocs-file-chooser_2.entry.js +0 -53
  449. package/dist/esm/verdocs-loader.entry.js +0 -16
  450. package/dist/esm-es5/EnvelopeStore-4599b7d3.js +0 -1
  451. package/dist/esm-es5/Icons-faf0377f.js +0 -1
  452. package/dist/esm-es5/TemplateFieldStore-909147d8.js +0 -1
  453. package/dist/esm-es5/TemplateRoleStore-2fef1fdb.js +0 -1
  454. package/dist/esm-es5/TemplateStore-ace14a8b.js +0 -1
  455. package/dist/esm-es5/index-24d8ae6a.js +0 -1
  456. package/dist/esm-es5/index-7588a071.js +0 -1
  457. package/dist/esm-es5/index-c8587076.js +0 -1
  458. package/dist/esm-es5/verdocs-button_3.entry.js +0 -1
  459. package/dist/esm-es5/verdocs-checkbox_4.entry.js +0 -1
  460. package/dist/esm-es5/verdocs-file-chooser_2.entry.js +0 -1
  461. package/dist/esm-es5/verdocs-loader.entry.js +0 -1
  462. package/dist/esm-es5/verdocs-preview_9.entry.js +0 -1
  463. package/dist/types/components/templates/verdocs-template-attachments/verdocs-template-attachments.d.ts +0 -56
  464. package/dist/types/components/templates/verdocs-template-name/verdocs-template-name.d.ts +0 -41
  465. package/dist/types/components/templates/verdocs-template-visibillity/verdocs-template-visibility.d.ts +0 -42
  466. package/dist/types/utils/EnvelopeStore.d.ts +0 -12
  467. package/dist/types/utils/TemplateFieldStore.d.ts +0 -9
  468. package/dist/types/utils/TemplateRoleStore.d.ts +0 -11
  469. package/dist/types/utils/TemplateStore.d.ts +0 -16
  470. package/dist/verdocs-web-sdk/p-0c51c5be.entry.js +0 -1
  471. package/dist/verdocs-web-sdk/p-194f9f4d.entry.js +0 -1
  472. package/dist/verdocs-web-sdk/p-1ce2f724.system.entry.js +0 -1
  473. package/dist/verdocs-web-sdk/p-2211234d.system.js +0 -1
  474. package/dist/verdocs-web-sdk/p-2305c1e8.system.entry.js +0 -1
  475. package/dist/verdocs-web-sdk/p-261d5b4a.system.entry.js +0 -1
  476. package/dist/verdocs-web-sdk/p-341d540f.system.entry.js +0 -1
  477. package/dist/verdocs-web-sdk/p-368a36ea.system.js +0 -1
  478. package/dist/verdocs-web-sdk/p-36b5d46e.entry.js +0 -1
  479. package/dist/verdocs-web-sdk/p-569434fb.system.js +0 -1
  480. package/dist/verdocs-web-sdk/p-56c1ebd6.entry.js +0 -1
  481. package/dist/verdocs-web-sdk/p-5bf2910c.system.entry.js +0 -1
  482. package/dist/verdocs-web-sdk/p-6bc1b9f4.entry.js +0 -1
  483. package/dist/verdocs-web-sdk/p-6fda3817.js +0 -1
  484. package/dist/verdocs-web-sdk/p-77ec43a3.system.entry.js +0 -1
  485. package/dist/verdocs-web-sdk/p-79e222f8.entry.js +0 -1
  486. package/dist/verdocs-web-sdk/p-7a5b80f8.entry.js +0 -1
  487. package/dist/verdocs-web-sdk/p-7d18cb23.system.entry.js +0 -1
  488. package/dist/verdocs-web-sdk/p-7d593603.system.js +0 -1
  489. package/dist/verdocs-web-sdk/p-9fabdbb1.system.entry.js +0 -1
  490. package/dist/verdocs-web-sdk/p-9ff1be63.entry.js +0 -1
  491. package/dist/verdocs-web-sdk/p-a04aac80.entry.js +0 -1
  492. package/dist/verdocs-web-sdk/p-a1a2c13b.entry.js +0 -1
  493. package/dist/verdocs-web-sdk/p-a706bac9.js +0 -1
  494. package/dist/verdocs-web-sdk/p-b0766439.js +0 -1
  495. package/dist/verdocs-web-sdk/p-b0bc8c15.system.entry.js +0 -1
  496. package/dist/verdocs-web-sdk/p-b17843d9.system.js +0 -1
  497. package/dist/verdocs-web-sdk/p-b1fcc883.entry.js +0 -1
  498. package/dist/verdocs-web-sdk/p-b56793c4.entry.js +0 -1
  499. package/dist/verdocs-web-sdk/p-b84d1a25.system.entry.js +0 -1
  500. package/dist/verdocs-web-sdk/p-bb253149.js +0 -1
  501. package/dist/verdocs-web-sdk/p-bd642df2.js +0 -1
  502. package/dist/verdocs-web-sdk/p-c7115b35.system.entry.js +0 -1
  503. package/dist/verdocs-web-sdk/p-cd546dbe.system.js +0 -1
  504. package/dist/verdocs-web-sdk/p-cde4c155.js +0 -1
  505. package/dist/verdocs-web-sdk/p-d3ddc7c8.system.entry.js +0 -1
  506. package/dist/verdocs-web-sdk/p-d86c8c1a.entry.js +0 -1
  507. package/dist/verdocs-web-sdk/p-dbddb752.system.entry.js +0 -1
  508. package/dist/verdocs-web-sdk/p-dcd3eb1b.js +0 -1
  509. package/dist/verdocs-web-sdk/p-e123f19c.entry.js +0 -1
  510. package/dist/verdocs-web-sdk/p-e294b6c2.system.entry.js +0 -1
  511. package/dist/verdocs-web-sdk/p-e48b387d.system.entry.js +0 -1
  512. package/dist/verdocs-web-sdk/p-e83a163d.entry.js +0 -1
  513. package/dist/verdocs-web-sdk/p-f5064e0c.system.js +0 -1
  514. package/dist/verdocs-web-sdk/p-f79b8537.system.js +0 -1
@@ -0,0 +1,1781 @@
1
+ import { getTemplate } from '@verdocs/js-sdk';
2
+
3
+ const getTypeOf = (thing) => typeof thing;
4
+ const EMPTY_STRING = '';
5
+ const STRING = getTypeOf(EMPTY_STRING);
6
+ const BOOLEAN = getTypeOf(true);
7
+ const NUMBER = getTypeOf(0);
8
+ const FUNCTION = getTypeOf(getTypeOf);
9
+ const TYPE = 'type';
10
+ const DEFAULT = 'default';
11
+ const LISTENER = 'Listener';
12
+ const ADD = 'add';
13
+ const HAS = 'Has';
14
+ const IDS = 'Ids';
15
+ const TABLE = 'Table';
16
+ const TABLES = TABLE + 's';
17
+ const TABLE_IDS = TABLE + IDS;
18
+ const ROW = 'Row';
19
+ const ROW_COUNT = ROW + 'Count';
20
+ const ROW_IDS = ROW + IDS;
21
+ const CELL = 'Cell';
22
+ const CELL_IDS = CELL + IDS;
23
+ const VALUE = 'Value';
24
+ const VALUES = VALUE + 's';
25
+ const VALUE_IDS = VALUE + IDS;
26
+ const id = (key) => EMPTY_STRING + key;
27
+ const isFiniteNumber = isFinite;
28
+ const isInstanceOf = (thing, cls) => thing instanceof cls;
29
+ const isUndefined = (thing) => thing == void 0;
30
+ const ifNotUndefined = (value, then, otherwise) =>
31
+ isUndefined(value) ? otherwise?.() : then(value);
32
+ const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
33
+ const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
34
+ const isArray = (thing) => Array.isArray(thing);
35
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
36
+ const size = (arrayOrString) => arrayOrString.length;
37
+ const test = (regex, subject) => regex.test(subject);
38
+
39
+ const arrayHas = (array, value) => array.includes(value);
40
+ const arrayEvery = (array, cb) => array.every(cb);
41
+ const arrayIsEqual = (array1, array2) =>
42
+ size(array1) === size(array2) &&
43
+ arrayEvery(array1, (value1, index) => array2[index] === value1);
44
+ const arraySort = (array, sorter) => array.sort(sorter);
45
+ const arrayForEach = (array, cb) => array.forEach(cb);
46
+ const arrayMap = (array, cb) => array.map(cb);
47
+ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
48
+ const arrayPush = (array, ...values) => array.push(...values);
49
+ const arrayShift = (array) => array.shift();
50
+
51
+ const object = Object;
52
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
53
+ const objEntries = object.entries;
54
+ const objFrozen = object.isFrozen;
55
+ const isObject = (obj) =>
56
+ !isUndefined(obj) &&
57
+ ifNotUndefined(
58
+ getPrototypeOf(obj),
59
+ (objPrototype) =>
60
+ objPrototype == object.prototype ||
61
+ isUndefined(getPrototypeOf(objPrototype)),
62
+
63
+ /* istanbul ignore next */
64
+ () => true,
65
+ );
66
+ const objIds = object.keys;
67
+ const objFreeze = object.freeze;
68
+ const objHas = (obj, id) => id in obj;
69
+ const objDel = (obj, id) => {
70
+ delete obj[id];
71
+ return obj;
72
+ };
73
+ const objToArray = (obj, cb) =>
74
+ arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
75
+ const objSize = (obj) => size(objIds(obj));
76
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
77
+ const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
78
+ if (
79
+ isUndefined(obj) ||
80
+ !isObject(obj) ||
81
+ (!emptyIsValid && objIsEmpty(obj)) ||
82
+ objFrozen(obj)
83
+ ) {
84
+ onInvalidObj?.();
85
+ return false;
86
+ }
87
+ objToArray(obj, (child, id) => {
88
+ if (!validateChild(child, id)) {
89
+ objDel(obj, id);
90
+ }
91
+ });
92
+ return emptyIsValid ? true : !objIsEmpty(obj);
93
+ };
94
+
95
+ const collSizeN = (collSizer) => (coll) =>
96
+ arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
97
+ const collSize = (coll) => coll?.size ?? 0;
98
+ const collSize2 = collSizeN(collSize);
99
+ const collSize3 = collSizeN(collSize2);
100
+ const collSize4 = collSizeN(collSize3);
101
+ const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
102
+ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
103
+ const collValues = (coll) => [...(coll?.values() ?? [])];
104
+ const collClear = (coll) => coll.clear();
105
+ const collForEach = (coll, cb) => coll?.forEach(cb);
106
+ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
107
+
108
+ const mapNew = (entries) => new Map(entries);
109
+ const mapKeys = (map) => [...(map?.keys() ?? [])];
110
+ const mapGet = (map, key) => map?.get(key);
111
+ const mapForEach = (map, cb) =>
112
+ collForEach(map, (value, key) => cb(key, value));
113
+ const mapMap = (coll, cb) =>
114
+ arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
115
+ const mapSet = (map, key, value) =>
116
+ isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
117
+ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
118
+ if (!collHas(map, key)) {
119
+ mapSet(map, key, getDefaultValue());
120
+ } else {
121
+ hadExistingValue?.(mapGet(map, key));
122
+ }
123
+ return mapGet(map, key);
124
+ };
125
+ const mapMatch = (map, obj, set, del = mapSet) => {
126
+ objToArray(obj, (value, id) => set(map, id, value));
127
+ mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
128
+ return map;
129
+ };
130
+ const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
131
+ const obj = {};
132
+ collForEach(map, (mapValue, id) => {
133
+ if (!excludeMapValue?.(mapValue, id)) {
134
+ const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
135
+ if (!excludeObjValue?.(objValue)) {
136
+ obj[id] = objValue;
137
+ }
138
+ }
139
+ });
140
+ return obj;
141
+ };
142
+ const mapToObj2 = (map, valueMapper, excludeMapValue) =>
143
+ mapToObj(
144
+ map,
145
+ (childMap) => mapToObj(childMap, valueMapper, excludeMapValue),
146
+ collIsEmpty,
147
+ objIsEmpty,
148
+ );
149
+ const mapToObj3 = (map, valueMapper, excludeMapValue) =>
150
+ mapToObj(
151
+ map,
152
+ (childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),
153
+ collIsEmpty,
154
+ objIsEmpty,
155
+ );
156
+ const mapClone = (map, mapValue) => {
157
+ const map2 = mapNew();
158
+ collForEach(map, (value, key) => map2.set(key, mapValue?.(value) ?? value));
159
+ return map2;
160
+ };
161
+ const mapClone2 = (map) => mapClone(map, mapClone);
162
+ const mapClone3 = (map) => mapClone(map, mapClone2);
163
+ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
164
+ ifNotUndefined(
165
+ (ensureLeaf ? mapEnsure : mapGet)(
166
+ node,
167
+ path[p],
168
+ p > size(path) - 2 ? ensureLeaf : mapNew,
169
+ ),
170
+ (nodeOrLeaf) => {
171
+ if (p > size(path) - 2) {
172
+ if (pruneLeaf?.(nodeOrLeaf)) {
173
+ mapSet(node, path[p]);
174
+ }
175
+ return nodeOrLeaf;
176
+ }
177
+ const leaf = visitTree(nodeOrLeaf, path, ensureLeaf, pruneLeaf, p + 1);
178
+ if (collIsEmpty(nodeOrLeaf)) {
179
+ mapSet(node, path[p]);
180
+ }
181
+ return leaf;
182
+ },
183
+ );
184
+
185
+ const getCellOrValueType = (cellOrValue) => {
186
+ const type = getTypeOf(cellOrValue);
187
+ return isTypeStringOrBoolean(type) ||
188
+ (type == NUMBER && isFiniteNumber(cellOrValue))
189
+ ? type
190
+ : void 0;
191
+ };
192
+ const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
193
+ isUndefined(cell)
194
+ ? store.delCell(tableId, rowId, cellId, true)
195
+ : store.setCell(tableId, rowId, cellId, cell);
196
+ const setOrDelValue = (store, valueId, value) =>
197
+ isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);
198
+
199
+ const setNew = (entryOrEntries) =>
200
+ new Set(
201
+ isArray(entryOrEntries) || isUndefined(entryOrEntries)
202
+ ? entryOrEntries
203
+ : [entryOrEntries],
204
+ );
205
+ const setAdd = (set, value) => set?.add(value);
206
+
207
+ const INTEGER = /^\d+$/;
208
+ const getPoolFunctions = () => {
209
+ const pool = [];
210
+ let nextId = 0;
211
+ return [
212
+ (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
213
+ (id) => {
214
+ if (test(INTEGER, id) && size(pool) < 1e3) {
215
+ arrayPush(pool, id);
216
+ }
217
+ },
218
+ ];
219
+ };
220
+
221
+ const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
222
+ const leaves = [];
223
+ const deep = (node, p) =>
224
+ p == size(path)
225
+ ? arrayPush(leaves, node)
226
+ : path[p] === null
227
+ ? collForEach(node, (node2) => deep(node2, p + 1))
228
+ : arrayForEach([path[p], null], (id) => deep(mapGet(node, id), p + 1));
229
+ deep(deepIdSet, 0);
230
+ return leaves;
231
+ };
232
+ const getListenerFunctions = (getThing) => {
233
+ let thing;
234
+ const [getId, releaseId] = getPoolFunctions();
235
+ const allListeners = mapNew();
236
+ const addListener = (
237
+ listener,
238
+ idSetNode,
239
+ path,
240
+ pathGetters = [],
241
+ extraArgsGetter = () => [],
242
+ ) => {
243
+ thing ??= getThing();
244
+ const id = getId(1);
245
+ mapSet(allListeners, id, [
246
+ listener,
247
+ idSetNode,
248
+ path,
249
+ pathGetters,
250
+ extraArgsGetter,
251
+ ]);
252
+ setAdd(visitTree(idSetNode, path ?? [EMPTY_STRING], setNew), id);
253
+ return id;
254
+ };
255
+ const callListeners = (idSetNode, ids, ...extraArgs) =>
256
+ arrayForEach(getWildcardedLeaves(idSetNode, ids), (set) =>
257
+ collForEach(set, (id) =>
258
+ mapGet(allListeners, id)[0](thing, ...(ids ?? []), ...extraArgs),
259
+ ),
260
+ );
261
+ const delListener = (id) =>
262
+ ifNotUndefined(mapGet(allListeners, id), ([, idSetNode, idOrNulls]) => {
263
+ visitTree(idSetNode, idOrNulls ?? [EMPTY_STRING], void 0, (idSet) => {
264
+ collDel(idSet, id);
265
+ return collIsEmpty(idSet) ? 1 : 0;
266
+ });
267
+ mapSet(allListeners, id);
268
+ releaseId(id);
269
+ return idOrNulls;
270
+ });
271
+ const callListener = (id) =>
272
+ ifNotUndefined(
273
+ mapGet(allListeners, id),
274
+ ([listener, , path = [], pathGetters, extraArgsGetter]) => {
275
+ const callWithIds = (...ids) => {
276
+ const index = size(ids);
277
+ if (index == size(path)) {
278
+ listener(thing, ...ids, ...extraArgsGetter(ids));
279
+ } else if (isUndefined(path[index])) {
280
+ arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
281
+ callWithIds(...ids, id2),
282
+ );
283
+ } else {
284
+ callWithIds(...ids, path[index]);
285
+ }
286
+ };
287
+ callWithIds();
288
+ },
289
+ );
290
+ return [addListener, callListeners, delListener, callListener];
291
+ };
292
+ const defaultSorter = (sortKey1, sortKey2) =>
293
+ (sortKey1 ?? 0) < (sortKey2 ?? 0) ? -1 : 1;
294
+
295
+ const pairNew = (value) => [value, value];
296
+ const pairCollSize2 = (pair, func = collSize2) => func(pair[0]) + func(pair[1]);
297
+ const pairNewMap = () => [mapNew(), mapNew()];
298
+ const pairClone = (array) => [...array];
299
+ const pairIsEqual = ([entry1, entry2]) => entry1 === entry2;
300
+
301
+ const jsonString = JSON.stringify;
302
+ const jsonParse = JSON.parse;
303
+ const jsonStringWithMap = (obj) =>
304
+ jsonString(obj, (_key, value) =>
305
+ isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
306
+ );
307
+
308
+ const idsChanged = (changedIds, id2, addedOrRemoved) =>
309
+ mapSet(
310
+ changedIds,
311
+ id2,
312
+ mapGet(changedIds, id2) == -addedOrRemoved ? void 0 : addedOrRemoved,
313
+ );
314
+ const createStore = () => {
315
+ let hasTablesSchema;
316
+ let hasValuesSchema;
317
+ let hadTables = false;
318
+ let hadValues = false;
319
+ let transactions = 0;
320
+ let internalListeners = [];
321
+ const changedTableIds = mapNew();
322
+ const changedTableCellIds = mapNew();
323
+ const changedRowCount = mapNew();
324
+ const changedRowIds = mapNew();
325
+ const changedCellIds = mapNew();
326
+ const changedCells = mapNew();
327
+ const changedValueIds = mapNew();
328
+ const changedValues = mapNew();
329
+ const invalidCells = mapNew();
330
+ const invalidValues = mapNew();
331
+ const tablesSchemaMap = mapNew();
332
+ const tablesSchemaRowCache = mapNew();
333
+ const valuesSchemaMap = mapNew();
334
+ const valuesDefaulted = mapNew();
335
+ const valuesNonDefaulted = setNew();
336
+ const tablePoolFunctions = mapNew();
337
+ const tableCellIds = mapNew();
338
+ const tablesMap = mapNew();
339
+ const valuesMap = mapNew();
340
+ const hasTablesListeners = pairNewMap();
341
+ const tablesListeners = pairNewMap();
342
+ const tableIdsListeners = pairNewMap();
343
+ const hasTableListeners = pairNewMap();
344
+ const tableListeners = pairNewMap();
345
+ const tableCellIdsListeners = pairNewMap();
346
+ const hasTableCellListeners = pairNewMap();
347
+ const rowCountListeners = pairNewMap();
348
+ const rowIdsListeners = pairNewMap();
349
+ const sortedRowIdsListeners = pairNewMap();
350
+ const hasRowListeners = pairNewMap();
351
+ const rowListeners = pairNewMap();
352
+ const cellIdsListeners = pairNewMap();
353
+ const hasCellListeners = pairNewMap();
354
+ const cellListeners = pairNewMap();
355
+ const invalidCellListeners = pairNewMap();
356
+ const invalidValueListeners = pairNewMap();
357
+ const hasValuesListeners = pairNewMap();
358
+ const valuesListeners = pairNewMap();
359
+ const valueIdsListeners = pairNewMap();
360
+ const hasValueListeners = pairNewMap();
361
+ const valueListeners = pairNewMap();
362
+ const startTransactionListeners = mapNew();
363
+ const finishTransactionListeners = pairNewMap();
364
+ const [addListener, callListeners, delListenerImpl, callListenerImpl] =
365
+ getListenerFunctions(() => store);
366
+ const validateTablesSchema = (tableSchema) =>
367
+ objValidate(tableSchema, (tableSchema2) =>
368
+ objValidate(tableSchema2, validateCellOrValueSchema),
369
+ );
370
+ const validateValuesSchema = (valuesSchema) =>
371
+ objValidate(valuesSchema, validateCellOrValueSchema);
372
+ const validateCellOrValueSchema = (schema) => {
373
+ if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {
374
+ return false;
375
+ }
376
+ const type = schema[TYPE];
377
+ if (!isTypeStringOrBoolean(type) && type != NUMBER) {
378
+ return false;
379
+ }
380
+ if (getCellOrValueType(schema[DEFAULT]) != type) {
381
+ objDel(schema, DEFAULT);
382
+ }
383
+ return true;
384
+ };
385
+ const validateContent = isArray;
386
+ const validateTables = (tables) =>
387
+ objValidate(tables, validateTable, cellInvalid);
388
+ const validateTable = (table, tableId) =>
389
+ (!hasTablesSchema ||
390
+ collHas(tablesSchemaMap, tableId) ||
391
+ /* istanbul ignore next */
392
+ cellInvalid(tableId)) &&
393
+ objValidate(
394
+ table,
395
+ (row, rowId) => validateRow(tableId, rowId, row),
396
+ () => cellInvalid(tableId),
397
+ );
398
+ const validateRow = (tableId, rowId, row, skipDefaults) =>
399
+ objValidate(
400
+ skipDefaults ? row : addDefaultsToRow(row, tableId, rowId),
401
+ (cell, cellId) =>
402
+ ifNotUndefined(
403
+ getValidatedCell(tableId, rowId, cellId, cell),
404
+ (validCell) => {
405
+ row[cellId] = validCell;
406
+ return true;
407
+ },
408
+ () => false,
409
+ ),
410
+ () => cellInvalid(tableId, rowId),
411
+ );
412
+ const getValidatedCell = (tableId, rowId, cellId, cell) =>
413
+ hasTablesSchema
414
+ ? ifNotUndefined(
415
+ mapGet(mapGet(tablesSchemaMap, tableId), cellId),
416
+ (cellSchema) =>
417
+ getCellOrValueType(cell) != cellSchema[TYPE]
418
+ ? cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
419
+ : cell,
420
+ () => cellInvalid(tableId, rowId, cellId, cell),
421
+ )
422
+ : isUndefined(getCellOrValueType(cell))
423
+ ? cellInvalid(tableId, rowId, cellId, cell)
424
+ : cell;
425
+ const validateValues = (values, skipDefaults) =>
426
+ objValidate(
427
+ skipDefaults ? values : addDefaultsToValues(values),
428
+ (value, valueId) =>
429
+ ifNotUndefined(
430
+ getValidatedValue(valueId, value),
431
+ (validValue) => {
432
+ values[valueId] = validValue;
433
+ return true;
434
+ },
435
+ () => false,
436
+ ),
437
+ () => valueInvalid(),
438
+ );
439
+ const getValidatedValue = (valueId, value) =>
440
+ hasValuesSchema
441
+ ? ifNotUndefined(
442
+ mapGet(valuesSchemaMap, valueId),
443
+ (valueSchema) =>
444
+ getCellOrValueType(value) != valueSchema[TYPE]
445
+ ? valueInvalid(valueId, value, valueSchema[DEFAULT])
446
+ : value,
447
+ () => valueInvalid(valueId, value),
448
+ )
449
+ : isUndefined(getCellOrValueType(value))
450
+ ? valueInvalid(valueId, value)
451
+ : value;
452
+ const addDefaultsToRow = (row, tableId, rowId) => {
453
+ ifNotUndefined(
454
+ mapGet(tablesSchemaRowCache, tableId),
455
+ ([rowDefaulted, rowNonDefaulted]) => {
456
+ collForEach(rowDefaulted, (cell, cellId) => {
457
+ if (!objHas(row, cellId)) {
458
+ row[cellId] = cell;
459
+ }
460
+ });
461
+ collForEach(rowNonDefaulted, (cellId) => {
462
+ if (!objHas(row, cellId)) {
463
+ cellInvalid(tableId, rowId, cellId);
464
+ }
465
+ });
466
+ },
467
+ );
468
+ return row;
469
+ };
470
+ const addDefaultsToValues = (values) => {
471
+ if (hasValuesSchema) {
472
+ collForEach(valuesDefaulted, (value, valueId) => {
473
+ if (!objHas(values, valueId)) {
474
+ values[valueId] = value;
475
+ }
476
+ });
477
+ collForEach(valuesNonDefaulted, (valueId) => {
478
+ if (!objHas(values, valueId)) {
479
+ valueInvalid(valueId);
480
+ }
481
+ });
482
+ }
483
+ return values;
484
+ };
485
+ const setValidTablesSchema = (tablesSchema) =>
486
+ mapMatch(
487
+ tablesSchemaMap,
488
+ tablesSchema,
489
+ (_tablesSchema, tableId, tableSchema) => {
490
+ const rowDefaulted = mapNew();
491
+ const rowNonDefaulted = setNew();
492
+ mapMatch(
493
+ mapEnsure(tablesSchemaMap, tableId, mapNew),
494
+ tableSchema,
495
+ (tableSchemaMap, cellId, cellSchema) => {
496
+ mapSet(tableSchemaMap, cellId, cellSchema);
497
+ ifNotUndefined(
498
+ cellSchema[DEFAULT],
499
+ (def) => mapSet(rowDefaulted, cellId, def),
500
+ () => setAdd(rowNonDefaulted, cellId),
501
+ );
502
+ },
503
+ );
504
+ mapSet(tablesSchemaRowCache, tableId, [rowDefaulted, rowNonDefaulted]);
505
+ },
506
+ (_tablesSchema, tableId) => {
507
+ mapSet(tablesSchemaMap, tableId);
508
+ mapSet(tablesSchemaRowCache, tableId);
509
+ },
510
+ );
511
+ const setValidValuesSchema = (valuesSchema) =>
512
+ mapMatch(
513
+ valuesSchemaMap,
514
+ valuesSchema,
515
+ (_valuesSchema, valueId, valueSchema) => {
516
+ mapSet(valuesSchemaMap, valueId, valueSchema);
517
+ ifNotUndefined(
518
+ valueSchema[DEFAULT],
519
+ (def) => mapSet(valuesDefaulted, valueId, def),
520
+ () => setAdd(valuesNonDefaulted, valueId),
521
+ );
522
+ },
523
+ (_valuesSchema, valueId) => {
524
+ mapSet(valuesSchemaMap, valueId);
525
+ mapSet(valuesDefaulted, valueId);
526
+ collDel(valuesNonDefaulted, valueId);
527
+ },
528
+ );
529
+ const setOrDelTables = (tables) =>
530
+ objIsEmpty(tables) ? delTables() : setTables(tables);
531
+ const setValidContent = ([tables, values]) => {
532
+ (objIsEmpty(tables) ? delTables : setTables)(tables);
533
+ (objIsEmpty(values) ? delValues : setValues)(values);
534
+ };
535
+ const setValidTables = (tables) =>
536
+ mapMatch(
537
+ tablesMap,
538
+ tables,
539
+ (_tables, tableId, table) => setValidTable(tableId, table),
540
+ (_tables, tableId) => delValidTable(tableId),
541
+ );
542
+ const setValidTable = (tableId, table) =>
543
+ mapMatch(
544
+ mapEnsure(tablesMap, tableId, () => {
545
+ tableIdsChanged(tableId, 1);
546
+ mapSet(tablePoolFunctions, tableId, getPoolFunctions());
547
+ mapSet(tableCellIds, tableId, mapNew());
548
+ return mapNew();
549
+ }),
550
+ table,
551
+ (tableMap, rowId, row) => setValidRow(tableId, tableMap, rowId, row),
552
+ (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
553
+ );
554
+ const setValidRow = (tableId, tableMap, rowId, row, forceDel) =>
555
+ mapMatch(
556
+ mapEnsure(tableMap, rowId, () => {
557
+ rowIdsChanged(tableId, rowId, 1);
558
+ return mapNew();
559
+ }),
560
+ row,
561
+ (rowMap, cellId, cell) =>
562
+ setValidCell(tableId, rowId, rowMap, cellId, cell),
563
+ (rowMap, cellId) =>
564
+ delValidCell(tableId, tableMap, rowId, rowMap, cellId, forceDel),
565
+ );
566
+ const setValidCell = (tableId, rowId, rowMap, cellId, cell) => {
567
+ if (!collHas(rowMap, cellId)) {
568
+ cellIdsChanged(tableId, rowId, cellId, 1);
569
+ }
570
+ const oldCell = mapGet(rowMap, cellId);
571
+ if (cell !== oldCell) {
572
+ cellChanged(tableId, rowId, cellId, oldCell, cell);
573
+ mapSet(rowMap, cellId, cell);
574
+ }
575
+ };
576
+ const setCellIntoDefaultRow = (tableId, tableMap, rowId, cellId, validCell) =>
577
+ ifNotUndefined(
578
+ mapGet(tableMap, rowId),
579
+ (rowMap) => setValidCell(tableId, rowId, rowMap, cellId, validCell),
580
+ () =>
581
+ setValidRow(
582
+ tableId,
583
+ tableMap,
584
+ rowId,
585
+ addDefaultsToRow({[cellId]: validCell}, tableId, rowId),
586
+ ),
587
+ );
588
+ const setOrDelValues = (values) =>
589
+ objIsEmpty(values) ? delValues() : setValues(values);
590
+ const setValidValues = (values) =>
591
+ mapMatch(
592
+ valuesMap,
593
+ values,
594
+ (_valuesMap, valueId, value) => setValidValue(valueId, value),
595
+ (_valuesMap, valueId) => delValidValue(valueId),
596
+ );
597
+ const setValidValue = (valueId, value) => {
598
+ if (!collHas(valuesMap, valueId)) {
599
+ valueIdsChanged(valueId, 1);
600
+ }
601
+ const oldValue = mapGet(valuesMap, valueId);
602
+ if (value !== oldValue) {
603
+ valueChanged(valueId, oldValue, value);
604
+ mapSet(valuesMap, valueId, value);
605
+ }
606
+ };
607
+ const getNewRowId = (tableId, reuse) => {
608
+ const [getId] = mapGet(tablePoolFunctions, tableId);
609
+ let rowId;
610
+ do {
611
+ rowId = getId(reuse);
612
+ } while (collHas(mapGet(tablesMap, tableId), rowId));
613
+ return rowId;
614
+ };
615
+ const getOrCreateTable = (tableId) =>
616
+ mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});
617
+ const delValidTable = (tableId) => setValidTable(tableId, {});
618
+ const delValidRow = (tableId, tableMap, rowId) => {
619
+ const [, releaseId] = mapGet(tablePoolFunctions, tableId);
620
+ releaseId(rowId);
621
+ setValidRow(tableId, tableMap, rowId, {}, true);
622
+ };
623
+ const delValidCell = (tableId, table, rowId, row, cellId, forceDel) => {
624
+ const defaultCell = mapGet(
625
+ mapGet(tablesSchemaRowCache, tableId)?.[0],
626
+ cellId,
627
+ );
628
+ if (!isUndefined(defaultCell) && !forceDel) {
629
+ return setValidCell(tableId, rowId, row, cellId, defaultCell);
630
+ }
631
+ const delCell2 = (cellId2) => {
632
+ cellChanged(tableId, rowId, cellId2, mapGet(row, cellId2));
633
+ cellIdsChanged(tableId, rowId, cellId2, -1);
634
+ mapSet(row, cellId2);
635
+ };
636
+ if (isUndefined(defaultCell)) {
637
+ delCell2(cellId);
638
+ } else {
639
+ mapForEach(row, delCell2);
640
+ }
641
+ if (collIsEmpty(row)) {
642
+ rowIdsChanged(tableId, rowId, -1);
643
+ if (collIsEmpty(mapSet(table, rowId))) {
644
+ tableIdsChanged(tableId, -1);
645
+ mapSet(tablesMap, tableId);
646
+ mapSet(tablePoolFunctions, tableId);
647
+ mapSet(tableCellIds, tableId);
648
+ }
649
+ }
650
+ };
651
+ const delValidValue = (valueId) => {
652
+ const defaultValue = mapGet(valuesDefaulted, valueId);
653
+ if (!isUndefined(defaultValue)) {
654
+ return setValidValue(valueId, defaultValue);
655
+ }
656
+ valueChanged(valueId, mapGet(valuesMap, valueId));
657
+ valueIdsChanged(valueId, -1);
658
+ mapSet(valuesMap, valueId);
659
+ };
660
+ const tableIdsChanged = (tableId, addedOrRemoved) =>
661
+ idsChanged(changedTableIds, tableId, addedOrRemoved);
662
+ const rowIdsChanged = (tableId, rowId, addedOrRemoved) =>
663
+ idsChanged(
664
+ mapEnsure(changedRowIds, tableId, mapNew),
665
+ rowId,
666
+ addedOrRemoved,
667
+ ) &&
668
+ mapSet(
669
+ changedRowCount,
670
+ tableId,
671
+ mapEnsure(changedRowCount, tableId, () => 0) + addedOrRemoved,
672
+ );
673
+ const cellIdsChanged = (tableId, rowId, cellId, addedOrRemoved) => {
674
+ const cellIds = mapGet(tableCellIds, tableId);
675
+ const count = mapGet(cellIds, cellId) ?? 0;
676
+ if (
677
+ (count == 0 && addedOrRemoved == 1) ||
678
+ (count == 1 && addedOrRemoved == -1)
679
+ ) {
680
+ idsChanged(
681
+ mapEnsure(changedTableCellIds, tableId, mapNew),
682
+ cellId,
683
+ addedOrRemoved,
684
+ );
685
+ }
686
+ mapSet(
687
+ cellIds,
688
+ cellId,
689
+ count != -addedOrRemoved ? count + addedOrRemoved : null,
690
+ );
691
+ idsChanged(
692
+ mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
693
+ cellId,
694
+ addedOrRemoved,
695
+ );
696
+ };
697
+ const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
698
+ mapEnsure(
699
+ mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
700
+ cellId,
701
+ () => [oldCell, 0],
702
+ )[1] = newCell;
703
+ internalListeners[3]?.(tableId, rowId, cellId, newCell);
704
+ };
705
+ const valueIdsChanged = (valueId, addedOrRemoved) =>
706
+ idsChanged(changedValueIds, valueId, addedOrRemoved);
707
+ const valueChanged = (valueId, oldValue, newValue) => {
708
+ mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
709
+ internalListeners[4]?.(valueId, newValue);
710
+ };
711
+ const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
712
+ arrayPush(
713
+ mapEnsure(
714
+ mapEnsure(mapEnsure(invalidCells, tableId, mapNew), rowId, mapNew),
715
+ cellId,
716
+ () => [],
717
+ ),
718
+ invalidCell,
719
+ );
720
+ return defaultedCell;
721
+ };
722
+ const valueInvalid = (valueId, invalidValue, defaultedValue) => {
723
+ arrayPush(
724
+ mapEnsure(invalidValues, valueId, () => []),
725
+ invalidValue,
726
+ );
727
+ return defaultedValue;
728
+ };
729
+ const getCellChange = (tableId, rowId, cellId) =>
730
+ ifNotUndefined(
731
+ mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),
732
+ ([oldCell, newCell]) => [true, oldCell, newCell],
733
+ () => [false, ...pairNew(getCell(tableId, rowId, cellId))],
734
+ );
735
+ const getValueChange = (valueId) =>
736
+ ifNotUndefined(
737
+ mapGet(changedValues, valueId),
738
+ ([oldValue, newValue]) => [true, oldValue, newValue],
739
+ () => [false, ...pairNew(getValue(valueId))],
740
+ );
741
+ const callInvalidCellListeners = (mutator) =>
742
+ !collIsEmpty(invalidCells) && !collIsEmpty(invalidCellListeners[mutator])
743
+ ? collForEach(
744
+ mutator ? mapClone3(invalidCells) : invalidCells,
745
+ (rows, tableId) =>
746
+ collForEach(rows, (cells, rowId) =>
747
+ collForEach(cells, (invalidCell, cellId) =>
748
+ callListeners(
749
+ invalidCellListeners[mutator],
750
+ [tableId, rowId, cellId],
751
+ invalidCell,
752
+ ),
753
+ ),
754
+ ),
755
+ )
756
+ : 0;
757
+ const callInvalidValueListeners = (mutator) =>
758
+ !collIsEmpty(invalidValues) && !collIsEmpty(invalidValueListeners[mutator])
759
+ ? collForEach(
760
+ mutator ? mapClone(invalidValues) : invalidValues,
761
+ (invalidValue, valueId) =>
762
+ callListeners(
763
+ invalidValueListeners[mutator],
764
+ [valueId],
765
+ invalidValue,
766
+ ),
767
+ )
768
+ : 0;
769
+ const callIdsAndHasListenersIfChanged = (
770
+ changedIds,
771
+ idListeners,
772
+ hasListeners,
773
+ ids,
774
+ ) => {
775
+ if (!collIsEmpty(changedIds)) {
776
+ callListeners(idListeners, ids, () => mapToObj(changedIds));
777
+ mapForEach(changedIds, (changedId, changed) =>
778
+ callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
779
+ );
780
+ return 1;
781
+ }
782
+ };
783
+ const callTabularListenersForChanges = (mutator) => {
784
+ const hasTablesNow = hasTables();
785
+ if (hasTablesNow != hadTables) {
786
+ callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
787
+ }
788
+ const emptySortedRowIdListeners = collIsEmpty(
789
+ sortedRowIdsListeners[mutator],
790
+ );
791
+ const emptyIdAndHasListeners =
792
+ collIsEmpty(cellIdsListeners[mutator]) &&
793
+ collIsEmpty(hasCellListeners[mutator]) &&
794
+ collIsEmpty(rowIdsListeners[mutator]) &&
795
+ collIsEmpty(hasRowListeners[mutator]) &&
796
+ collIsEmpty(tableCellIdsListeners[mutator]) &&
797
+ collIsEmpty(hasTableCellListeners[mutator]) &&
798
+ collIsEmpty(rowCountListeners[mutator]) &&
799
+ emptySortedRowIdListeners &&
800
+ collIsEmpty(tableIdsListeners[mutator]) &&
801
+ collIsEmpty(hasTableListeners[mutator]);
802
+ const emptyOtherListeners =
803
+ collIsEmpty(cellListeners[mutator]) &&
804
+ collIsEmpty(rowListeners[mutator]) &&
805
+ collIsEmpty(tableListeners[mutator]) &&
806
+ collIsEmpty(tablesListeners[mutator]);
807
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
808
+ const changes = mutator
809
+ ? [
810
+ mapClone(changedTableIds),
811
+ mapClone2(changedTableCellIds),
812
+ mapClone(changedRowCount),
813
+ mapClone2(changedRowIds),
814
+ mapClone3(changedCellIds),
815
+ mapClone3(changedCells),
816
+ ]
817
+ : [
818
+ changedTableIds,
819
+ changedTableCellIds,
820
+ changedRowCount,
821
+ changedRowIds,
822
+ changedCellIds,
823
+ changedCells,
824
+ ];
825
+ if (!emptyIdAndHasListeners) {
826
+ callIdsAndHasListenersIfChanged(
827
+ changes[0],
828
+ tableIdsListeners[mutator],
829
+ hasTableListeners[mutator],
830
+ );
831
+ collForEach(changes[1], (changedIds, tableId) =>
832
+ callIdsAndHasListenersIfChanged(
833
+ changedIds,
834
+ tableCellIdsListeners[mutator],
835
+ hasTableCellListeners[mutator],
836
+ [tableId],
837
+ ),
838
+ );
839
+ collForEach(changes[2], (changedCount, tableId) => {
840
+ if (changedCount != 0) {
841
+ callListeners(
842
+ rowCountListeners[mutator],
843
+ [tableId],
844
+ getRowCount(tableId),
845
+ );
846
+ }
847
+ });
848
+ const calledSortableTableIds = setNew();
849
+ collForEach(changes[3], (changedIds, tableId) => {
850
+ if (
851
+ callIdsAndHasListenersIfChanged(
852
+ changedIds,
853
+ rowIdsListeners[mutator],
854
+ hasRowListeners[mutator],
855
+ [tableId],
856
+ ) &&
857
+ !emptySortedRowIdListeners
858
+ ) {
859
+ callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
860
+ setAdd(calledSortableTableIds, tableId);
861
+ }
862
+ });
863
+ if (!emptySortedRowIdListeners) {
864
+ collForEach(changes[5], (rows, tableId) => {
865
+ if (!collHas(calledSortableTableIds, tableId)) {
866
+ const sortableCellIds = setNew();
867
+ collForEach(rows, (cells) =>
868
+ collForEach(cells, ([oldCell, newCell], cellId) =>
869
+ newCell !== oldCell
870
+ ? setAdd(sortableCellIds, cellId)
871
+ : collDel(cells, cellId),
872
+ ),
873
+ );
874
+ collForEach(sortableCellIds, (cellId) =>
875
+ callListeners(sortedRowIdsListeners[mutator], [
876
+ tableId,
877
+ cellId,
878
+ ]),
879
+ );
880
+ }
881
+ });
882
+ }
883
+ collForEach(changes[4], (rowCellIds, tableId) =>
884
+ collForEach(rowCellIds, (changedIds, rowId) =>
885
+ callIdsAndHasListenersIfChanged(
886
+ changedIds,
887
+ cellIdsListeners[mutator],
888
+ hasCellListeners[mutator],
889
+ [tableId, rowId],
890
+ ),
891
+ ),
892
+ );
893
+ }
894
+ if (!emptyOtherListeners) {
895
+ let tablesChanged;
896
+ collForEach(changes[5], (rows, tableId) => {
897
+ let tableChanged;
898
+ collForEach(rows, (cells, rowId) => {
899
+ let rowChanged;
900
+ collForEach(cells, ([oldCell, newCell], cellId) => {
901
+ if (newCell !== oldCell) {
902
+ callListeners(
903
+ cellListeners[mutator],
904
+ [tableId, rowId, cellId],
905
+ newCell,
906
+ oldCell,
907
+ getCellChange,
908
+ );
909
+ tablesChanged = tableChanged = rowChanged = 1;
910
+ }
911
+ });
912
+ if (rowChanged) {
913
+ callListeners(
914
+ rowListeners[mutator],
915
+ [tableId, rowId],
916
+ getCellChange,
917
+ );
918
+ }
919
+ });
920
+ if (tableChanged) {
921
+ callListeners(tableListeners[mutator], [tableId], getCellChange);
922
+ }
923
+ });
924
+ if (tablesChanged) {
925
+ callListeners(tablesListeners[mutator], void 0, getCellChange);
926
+ }
927
+ }
928
+ }
929
+ };
930
+ const callValuesListenersForChanges = (mutator) => {
931
+ const hasValuesNow = hasValues();
932
+ if (hasValuesNow != hadValues) {
933
+ callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
934
+ }
935
+ const emptyIdAndHasListeners =
936
+ collIsEmpty(valueIdsListeners[mutator]) &&
937
+ collIsEmpty(hasValueListeners[mutator]);
938
+ const emptyOtherListeners =
939
+ collIsEmpty(valueListeners[mutator]) &&
940
+ collIsEmpty(valuesListeners[mutator]);
941
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
942
+ const changes = mutator
943
+ ? [mapClone(changedValueIds), mapClone(changedValues)]
944
+ : [changedValueIds, changedValues];
945
+ if (!emptyIdAndHasListeners) {
946
+ callIdsAndHasListenersIfChanged(
947
+ changes[0],
948
+ valueIdsListeners[mutator],
949
+ hasValueListeners[mutator],
950
+ );
951
+ }
952
+ if (!emptyOtherListeners) {
953
+ let valuesChanged;
954
+ collForEach(changes[1], ([oldValue, newValue], valueId) => {
955
+ if (newValue !== oldValue) {
956
+ callListeners(
957
+ valueListeners[mutator],
958
+ [valueId],
959
+ newValue,
960
+ oldValue,
961
+ getValueChange,
962
+ );
963
+ valuesChanged = 1;
964
+ }
965
+ });
966
+ if (valuesChanged) {
967
+ callListeners(valuesListeners[mutator], void 0, getValueChange);
968
+ }
969
+ }
970
+ }
971
+ };
972
+ const fluentTransaction = (actions, ...args) => {
973
+ transaction(() => actions(...arrayMap(args, id)));
974
+ return store;
975
+ };
976
+ const getContent = () => [getTables(), getValues()];
977
+ const getTables = () => mapToObj3(tablesMap);
978
+ const getTableIds = () => mapKeys(tablesMap);
979
+ const getTable = (tableId) => mapToObj2(mapGet(tablesMap, id(tableId)));
980
+ const getTableCellIds = (tableId) =>
981
+ mapKeys(mapGet(tableCellIds, id(tableId)));
982
+ const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
983
+ const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
984
+ const getSortedRowIds = (tableId, cellId, descending, offset = 0, limit) =>
985
+ arrayMap(
986
+ slice(
987
+ arraySort(
988
+ mapMap(mapGet(tablesMap, id(tableId)), (row, rowId) => [
989
+ isUndefined(cellId) ? rowId : mapGet(row, id(cellId)),
990
+ rowId,
991
+ ]),
992
+ ([cell1], [cell2]) =>
993
+ defaultSorter(cell1, cell2) * (descending ? -1 : 1),
994
+ ),
995
+ offset,
996
+ isUndefined(limit) ? limit : offset + limit,
997
+ ),
998
+ ([, rowId]) => rowId,
999
+ );
1000
+ const getRow = (tableId, rowId) =>
1001
+ mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
1002
+ const getCellIds = (tableId, rowId) =>
1003
+ mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
1004
+ const getCell = (tableId, rowId, cellId) =>
1005
+ mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
1006
+ const getValues = () => mapToObj(valuesMap);
1007
+ const getValueIds = () => mapKeys(valuesMap);
1008
+ const getValue = (valueId) => mapGet(valuesMap, id(valueId));
1009
+ const hasTables = () => !collIsEmpty(tablesMap);
1010
+ const hasTable = (tableId) => collHas(tablesMap, id(tableId));
1011
+ const hasTableCell = (tableId, cellId) =>
1012
+ collHas(mapGet(tableCellIds, id(tableId)), id(cellId));
1013
+ const hasRow = (tableId, rowId) =>
1014
+ collHas(mapGet(tablesMap, id(tableId)), id(rowId));
1015
+ const hasCell = (tableId, rowId, cellId) =>
1016
+ collHas(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
1017
+ const hasValues = () => !collIsEmpty(valuesMap);
1018
+ const hasValue = (valueId) => collHas(valuesMap, id(valueId));
1019
+ const getTablesJson = () => jsonStringWithMap(tablesMap);
1020
+ const getValuesJson = () => jsonStringWithMap(valuesMap);
1021
+ const getJson = () => jsonStringWithMap([tablesMap, valuesMap]);
1022
+ const getTablesSchemaJson = () => jsonStringWithMap(tablesSchemaMap);
1023
+ const getValuesSchemaJson = () => jsonStringWithMap(valuesSchemaMap);
1024
+ const getSchemaJson = () =>
1025
+ jsonStringWithMap([tablesSchemaMap, valuesSchemaMap]);
1026
+ const setContent = (content) =>
1027
+ fluentTransaction(() =>
1028
+ validateContent(content) ? setValidContent(content) : 0,
1029
+ );
1030
+ const setTables = (tables) =>
1031
+ fluentTransaction(() =>
1032
+ validateTables(tables) ? setValidTables(tables) : 0,
1033
+ );
1034
+ const setTable = (tableId, table) =>
1035
+ fluentTransaction(
1036
+ (tableId2) =>
1037
+ validateTable(table, tableId2) ? setValidTable(tableId2, table) : 0,
1038
+ tableId,
1039
+ );
1040
+ const setRow = (tableId, rowId, row) =>
1041
+ fluentTransaction(
1042
+ (tableId2, rowId2) =>
1043
+ validateRow(tableId2, rowId2, row)
1044
+ ? setValidRow(tableId2, getOrCreateTable(tableId2), rowId2, row)
1045
+ : 0,
1046
+ tableId,
1047
+ rowId,
1048
+ );
1049
+ const addRow = (tableId, row, reuseRowIds = true) =>
1050
+ transaction(() => {
1051
+ let rowId = void 0;
1052
+ if (validateRow(tableId, rowId, row)) {
1053
+ tableId = id(tableId);
1054
+ setValidRow(
1055
+ tableId,
1056
+ getOrCreateTable(tableId),
1057
+ (rowId = getNewRowId(tableId, reuseRowIds ? 1 : 0)),
1058
+ row,
1059
+ );
1060
+ }
1061
+ return rowId;
1062
+ });
1063
+ const setPartialRow = (tableId, rowId, partialRow) =>
1064
+ fluentTransaction(
1065
+ (tableId2, rowId2) => {
1066
+ if (validateRow(tableId2, rowId2, partialRow, 1)) {
1067
+ const table = getOrCreateTable(tableId2);
1068
+ objToArray(partialRow, (cell, cellId) =>
1069
+ setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
1070
+ );
1071
+ }
1072
+ },
1073
+ tableId,
1074
+ rowId,
1075
+ );
1076
+ const setCell = (tableId, rowId, cellId, cell) =>
1077
+ fluentTransaction(
1078
+ (tableId2, rowId2, cellId2) =>
1079
+ ifNotUndefined(
1080
+ getValidatedCell(
1081
+ tableId2,
1082
+ rowId2,
1083
+ cellId2,
1084
+ isFunction(cell) ? cell(getCell(tableId2, rowId2, cellId2)) : cell,
1085
+ ),
1086
+ (validCell) =>
1087
+ setCellIntoDefaultRow(
1088
+ tableId2,
1089
+ getOrCreateTable(tableId2),
1090
+ rowId2,
1091
+ cellId2,
1092
+ validCell,
1093
+ ),
1094
+ ),
1095
+ tableId,
1096
+ rowId,
1097
+ cellId,
1098
+ );
1099
+ const setValues = (values) =>
1100
+ fluentTransaction(() =>
1101
+ validateValues(values) ? setValidValues(values) : 0,
1102
+ );
1103
+ const setPartialValues = (partialValues) =>
1104
+ fluentTransaction(() =>
1105
+ validateValues(partialValues, 1)
1106
+ ? objToArray(partialValues, (value, valueId) =>
1107
+ setValidValue(valueId, value),
1108
+ )
1109
+ : 0,
1110
+ );
1111
+ const setValue = (valueId, value) =>
1112
+ fluentTransaction(
1113
+ (valueId2) =>
1114
+ ifNotUndefined(
1115
+ getValidatedValue(
1116
+ valueId2,
1117
+ isFunction(value) ? value(getValue(valueId2)) : value,
1118
+ ),
1119
+ (validValue) => setValidValue(valueId2, validValue),
1120
+ ),
1121
+ valueId,
1122
+ );
1123
+ const applyChanges = (changes) =>
1124
+ fluentTransaction(() => {
1125
+ objToArray(changes[0], (table, tableId) =>
1126
+ isUndefined(table)
1127
+ ? delTable(tableId)
1128
+ : objToArray(table, (row, rowId) =>
1129
+ isUndefined(row)
1130
+ ? delRow(tableId, rowId)
1131
+ : objToArray(row, (cell, cellId) =>
1132
+ setOrDelCell(store, tableId, rowId, cellId, cell),
1133
+ ),
1134
+ ),
1135
+ );
1136
+ objToArray(changes[1], (value, valueId) =>
1137
+ setOrDelValue(store, valueId, value),
1138
+ );
1139
+ });
1140
+ const setTablesJson = (tablesJson) => {
1141
+ try {
1142
+ setOrDelTables(jsonParse(tablesJson));
1143
+ } catch {}
1144
+ return store;
1145
+ };
1146
+ const setValuesJson = (valuesJson) => {
1147
+ try {
1148
+ setOrDelValues(jsonParse(valuesJson));
1149
+ } catch {}
1150
+ return store;
1151
+ };
1152
+ const setJson = (tablesAndValuesJson) =>
1153
+ fluentTransaction(() => {
1154
+ try {
1155
+ const [tables, values] = jsonParse(tablesAndValuesJson);
1156
+ setOrDelTables(tables);
1157
+ setOrDelValues(values);
1158
+ } catch {
1159
+ setTablesJson(tablesAndValuesJson);
1160
+ }
1161
+ });
1162
+ const setTablesSchema = (tablesSchema) =>
1163
+ fluentTransaction(() => {
1164
+ if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
1165
+ setValidTablesSchema(tablesSchema);
1166
+ if (!collIsEmpty(tablesMap)) {
1167
+ const tables = getTables();
1168
+ delTables();
1169
+ setTables(tables);
1170
+ }
1171
+ }
1172
+ });
1173
+ const setValuesSchema = (valuesSchema) =>
1174
+ fluentTransaction(() => {
1175
+ if ((hasValuesSchema = validateValuesSchema(valuesSchema))) {
1176
+ const values = getValues();
1177
+ delValuesSchema();
1178
+ delValues();
1179
+ hasValuesSchema = true;
1180
+ setValidValuesSchema(valuesSchema);
1181
+ setValues(values);
1182
+ }
1183
+ });
1184
+ const setSchema = (tablesSchema, valuesSchema) =>
1185
+ fluentTransaction(() => {
1186
+ setTablesSchema(tablesSchema);
1187
+ setValuesSchema(valuesSchema);
1188
+ });
1189
+ const delTables = () => fluentTransaction(() => setValidTables({}));
1190
+ const delTable = (tableId) =>
1191
+ fluentTransaction(
1192
+ (tableId2) =>
1193
+ collHas(tablesMap, tableId2) ? delValidTable(tableId2) : 0,
1194
+ tableId,
1195
+ );
1196
+ const delRow = (tableId, rowId) =>
1197
+ fluentTransaction(
1198
+ (tableId2, rowId2) =>
1199
+ ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
1200
+ collHas(tableMap, rowId2)
1201
+ ? delValidRow(tableId2, tableMap, rowId2)
1202
+ : 0,
1203
+ ),
1204
+ tableId,
1205
+ rowId,
1206
+ );
1207
+ const delCell = (tableId, rowId, cellId, forceDel) =>
1208
+ fluentTransaction(
1209
+ (tableId2, rowId2, cellId2) =>
1210
+ ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
1211
+ ifNotUndefined(mapGet(tableMap, rowId2), (rowMap) =>
1212
+ collHas(rowMap, cellId2)
1213
+ ? delValidCell(
1214
+ tableId2,
1215
+ tableMap,
1216
+ rowId2,
1217
+ rowMap,
1218
+ cellId2,
1219
+ forceDel,
1220
+ )
1221
+ : 0,
1222
+ ),
1223
+ ),
1224
+ tableId,
1225
+ rowId,
1226
+ cellId,
1227
+ );
1228
+ const delValues = () => fluentTransaction(() => setValidValues({}));
1229
+ const delValue = (valueId) =>
1230
+ fluentTransaction(
1231
+ (valueId2) =>
1232
+ collHas(valuesMap, valueId2) ? delValidValue(valueId2) : 0,
1233
+ valueId,
1234
+ );
1235
+ const delTablesSchema = () =>
1236
+ fluentTransaction(() => {
1237
+ setValidTablesSchema({});
1238
+ hasTablesSchema = false;
1239
+ });
1240
+ const delValuesSchema = () =>
1241
+ fluentTransaction(() => {
1242
+ setValidValuesSchema({});
1243
+ hasValuesSchema = false;
1244
+ });
1245
+ const delSchema = () =>
1246
+ fluentTransaction(() => {
1247
+ delTablesSchema();
1248
+ delValuesSchema();
1249
+ });
1250
+ const transaction = (actions, doRollback) => {
1251
+ if (transactions != -1) {
1252
+ startTransaction();
1253
+ const result = actions();
1254
+ finishTransaction(doRollback);
1255
+ return result;
1256
+ }
1257
+ };
1258
+ const startTransaction = () => {
1259
+ if (transactions != -1) {
1260
+ transactions++;
1261
+ }
1262
+ if (transactions == 1) {
1263
+ internalListeners[0]?.();
1264
+ callListeners(startTransactionListeners);
1265
+ }
1266
+ return store;
1267
+ };
1268
+ const getTransactionChanges = () => [
1269
+ mapToObj(
1270
+ changedCells,
1271
+ (table, tableId) =>
1272
+ mapGet(changedTableIds, tableId) === -1
1273
+ ? void 0
1274
+ : mapToObj(
1275
+ table,
1276
+ (row, rowId) =>
1277
+ mapGet(mapGet(changedRowIds, tableId), rowId) === -1
1278
+ ? void 0
1279
+ : mapToObj(
1280
+ row,
1281
+ ([, newCell]) => newCell,
1282
+ (changedCell) => pairIsEqual(changedCell),
1283
+ ),
1284
+ collIsEmpty,
1285
+ objIsEmpty,
1286
+ ),
1287
+ collIsEmpty,
1288
+ objIsEmpty,
1289
+ ),
1290
+ mapToObj(
1291
+ changedValues,
1292
+ ([, newValue]) => newValue,
1293
+ (changedValue) => pairIsEqual(changedValue),
1294
+ ),
1295
+ 1,
1296
+ ];
1297
+ const getTransactionLog = () => [
1298
+ !collIsEmpty(changedCells),
1299
+ !collIsEmpty(changedValues),
1300
+ mapToObj3(changedCells, pairClone, pairIsEqual),
1301
+ mapToObj3(invalidCells),
1302
+ mapToObj(changedValues, pairClone, pairIsEqual),
1303
+ mapToObj(invalidValues),
1304
+ mapToObj(changedTableIds),
1305
+ mapToObj2(changedRowIds),
1306
+ mapToObj3(changedCellIds),
1307
+ mapToObj(changedValueIds),
1308
+ ];
1309
+ const finishTransaction = (doRollback) => {
1310
+ if (transactions > 0) {
1311
+ transactions--;
1312
+ if (transactions == 0) {
1313
+ transactions = 1;
1314
+ callInvalidCellListeners(1);
1315
+ if (!collIsEmpty(changedCells)) {
1316
+ callTabularListenersForChanges(1);
1317
+ }
1318
+ callInvalidValueListeners(1);
1319
+ if (!collIsEmpty(changedValues)) {
1320
+ callValuesListenersForChanges(1);
1321
+ }
1322
+ if (doRollback?.(store)) {
1323
+ collForEach(changedCells, (table, tableId) =>
1324
+ collForEach(table, (row, rowId) =>
1325
+ collForEach(row, ([oldCell], cellId) =>
1326
+ setOrDelCell(store, tableId, rowId, cellId, oldCell),
1327
+ ),
1328
+ ),
1329
+ );
1330
+ collClear(changedCells);
1331
+ collForEach(changedValues, ([oldValue], valueId) =>
1332
+ setOrDelValue(store, valueId, oldValue),
1333
+ );
1334
+ collClear(changedValues);
1335
+ }
1336
+ callListeners(finishTransactionListeners[0], void 0);
1337
+ transactions = -1;
1338
+ callInvalidCellListeners(0);
1339
+ if (!collIsEmpty(changedCells)) {
1340
+ callTabularListenersForChanges(0);
1341
+ }
1342
+ callInvalidValueListeners(0);
1343
+ if (!collIsEmpty(changedValues)) {
1344
+ callValuesListenersForChanges(0);
1345
+ }
1346
+ internalListeners[1]?.();
1347
+ callListeners(finishTransactionListeners[1], void 0);
1348
+ internalListeners[2]?.();
1349
+ transactions = 0;
1350
+ hadTables = hasTables();
1351
+ hadValues = hasValues();
1352
+ arrayForEach(
1353
+ [
1354
+ changedTableIds,
1355
+ changedTableCellIds,
1356
+ changedRowCount,
1357
+ changedRowIds,
1358
+ changedCellIds,
1359
+ changedCells,
1360
+ invalidCells,
1361
+ changedValueIds,
1362
+ changedValues,
1363
+ invalidValues,
1364
+ ],
1365
+ collClear,
1366
+ );
1367
+ }
1368
+ }
1369
+ return store;
1370
+ };
1371
+ const forEachTable = (tableCallback) =>
1372
+ collForEach(tablesMap, (tableMap, tableId) =>
1373
+ tableCallback(tableId, (rowCallback) =>
1374
+ collForEach(tableMap, (rowMap, rowId) =>
1375
+ rowCallback(rowId, (cellCallback) =>
1376
+ mapForEach(rowMap, cellCallback),
1377
+ ),
1378
+ ),
1379
+ ),
1380
+ );
1381
+ const forEachTableCell = (tableId, tableCellCallback) =>
1382
+ mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
1383
+ const forEachRow = (tableId, rowCallback) =>
1384
+ collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
1385
+ rowCallback(rowId, (cellCallback) => mapForEach(rowMap, cellCallback)),
1386
+ );
1387
+ const forEachCell = (tableId, rowId, cellCallback) =>
1388
+ mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);
1389
+ const forEachValue = (valueCallback) => mapForEach(valuesMap, valueCallback);
1390
+ const addSortedRowIdsListener = (
1391
+ tableId,
1392
+ cellId,
1393
+ descending,
1394
+ offset,
1395
+ limit,
1396
+ listener,
1397
+ mutator,
1398
+ ) => {
1399
+ let sortedRowIds = getSortedRowIds(
1400
+ tableId,
1401
+ cellId,
1402
+ descending,
1403
+ offset,
1404
+ limit,
1405
+ );
1406
+ return addListener(
1407
+ () => {
1408
+ const newSortedRowIds = getSortedRowIds(
1409
+ tableId,
1410
+ cellId,
1411
+ descending,
1412
+ offset,
1413
+ limit,
1414
+ );
1415
+ if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
1416
+ sortedRowIds = newSortedRowIds;
1417
+ listener(
1418
+ store,
1419
+ tableId,
1420
+ cellId,
1421
+ descending,
1422
+ offset,
1423
+ limit,
1424
+ sortedRowIds,
1425
+ );
1426
+ }
1427
+ },
1428
+ sortedRowIdsListeners[mutator ? 1 : 0],
1429
+ [tableId, cellId],
1430
+ [getTableIds],
1431
+ );
1432
+ };
1433
+ const addStartTransactionListener = (listener) =>
1434
+ addListener(listener, startTransactionListeners);
1435
+ const addWillFinishTransactionListener = (listener) =>
1436
+ addListener(listener, finishTransactionListeners[0]);
1437
+ const addDidFinishTransactionListener = (listener) =>
1438
+ addListener(listener, finishTransactionListeners[1]);
1439
+ const callListener = (listenerId) => {
1440
+ callListenerImpl(listenerId);
1441
+ return store;
1442
+ };
1443
+ const delListener = (listenerId) => {
1444
+ delListenerImpl(listenerId);
1445
+ return store;
1446
+ };
1447
+ const getListenerStats = () => ({
1448
+ hasTables: pairCollSize2(hasTablesListeners),
1449
+ tables: pairCollSize2(tablesListeners),
1450
+ tableIds: pairCollSize2(tableIdsListeners),
1451
+ hasTable: pairCollSize2(hasTableListeners),
1452
+ table: pairCollSize2(tableListeners),
1453
+ tableCellIds: pairCollSize2(tableCellIdsListeners),
1454
+ hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
1455
+ rowCount: pairCollSize2(rowCountListeners),
1456
+ rowIds: pairCollSize2(rowIdsListeners),
1457
+ sortedRowIds: pairCollSize2(sortedRowIdsListeners),
1458
+ hasRow: pairCollSize2(hasRowListeners, collSize3),
1459
+ row: pairCollSize2(rowListeners, collSize3),
1460
+ cellIds: pairCollSize2(cellIdsListeners, collSize3),
1461
+ hasCell: pairCollSize2(hasCellListeners, collSize4),
1462
+ cell: pairCollSize2(cellListeners, collSize4),
1463
+ invalidCell: pairCollSize2(invalidCellListeners, collSize4),
1464
+ hasValues: pairCollSize2(hasValuesListeners),
1465
+ values: pairCollSize2(valuesListeners),
1466
+ valueIds: pairCollSize2(valueIdsListeners),
1467
+ hasValue: pairCollSize2(hasValueListeners),
1468
+ value: pairCollSize2(valueListeners),
1469
+ invalidValue: pairCollSize2(invalidValueListeners),
1470
+ transaction:
1471
+ collSize2(startTransactionListeners) +
1472
+ pairCollSize2(finishTransactionListeners),
1473
+ });
1474
+ const setInternalListeners = (
1475
+ preStartTransaction,
1476
+ preFinishTransaction,
1477
+ postFinishTransaction,
1478
+ cellChanged2,
1479
+ valueChanged2,
1480
+ ) =>
1481
+ (internalListeners = [
1482
+ preStartTransaction,
1483
+ preFinishTransaction,
1484
+ postFinishTransaction,
1485
+ cellChanged2,
1486
+ valueChanged2,
1487
+ ]);
1488
+ const store = {
1489
+ getContent,
1490
+ getTables,
1491
+ getTableIds,
1492
+ getTable,
1493
+ getTableCellIds,
1494
+ getRowCount,
1495
+ getRowIds,
1496
+ getSortedRowIds,
1497
+ getRow,
1498
+ getCellIds,
1499
+ getCell,
1500
+ getValues,
1501
+ getValueIds,
1502
+ getValue,
1503
+ hasTables,
1504
+ hasTable,
1505
+ hasTableCell,
1506
+ hasRow,
1507
+ hasCell,
1508
+ hasValues,
1509
+ hasValue,
1510
+ getTablesJson,
1511
+ getValuesJson,
1512
+ getJson,
1513
+ getTablesSchemaJson,
1514
+ getValuesSchemaJson,
1515
+ getSchemaJson,
1516
+ hasTablesSchema: () => hasTablesSchema,
1517
+ hasValuesSchema: () => hasValuesSchema,
1518
+ setContent,
1519
+ setTables,
1520
+ setTable,
1521
+ setRow,
1522
+ addRow,
1523
+ setPartialRow,
1524
+ setCell,
1525
+ setValues,
1526
+ setPartialValues,
1527
+ setValue,
1528
+ applyChanges,
1529
+ setTablesJson,
1530
+ setValuesJson,
1531
+ setJson,
1532
+ setTablesSchema,
1533
+ setValuesSchema,
1534
+ setSchema,
1535
+ delTables,
1536
+ delTable,
1537
+ delRow,
1538
+ delCell,
1539
+ delValues,
1540
+ delValue,
1541
+ delTablesSchema,
1542
+ delValuesSchema,
1543
+ delSchema,
1544
+ transaction,
1545
+ startTransaction,
1546
+ getTransactionChanges,
1547
+ getTransactionLog,
1548
+ finishTransaction,
1549
+ forEachTable,
1550
+ forEachTableCell,
1551
+ forEachRow,
1552
+ forEachCell,
1553
+ forEachValue,
1554
+ addSortedRowIdsListener,
1555
+ addStartTransactionListener,
1556
+ addWillFinishTransactionListener,
1557
+ addDidFinishTransactionListener,
1558
+ callListener,
1559
+ delListener,
1560
+ getListenerStats,
1561
+ isMergeable: () => false,
1562
+ // only used internally by other modules
1563
+ createStore,
1564
+ addListener,
1565
+ callListeners,
1566
+ setInternalListeners,
1567
+ };
1568
+ objToArray(
1569
+ {
1570
+ [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
1571
+ [TABLES]: [0, tablesListeners],
1572
+ [TABLE_IDS]: [0, tableIdsListeners],
1573
+ [HAS + TABLE]: [
1574
+ 1,
1575
+ hasTableListeners,
1576
+ [getTableIds],
1577
+ (ids) => [hasTable(...ids)],
1578
+ ],
1579
+ [TABLE]: [1, tableListeners, [getTableIds]],
1580
+ [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
1581
+ [HAS + TABLE + CELL]: [
1582
+ 2,
1583
+ hasTableCellListeners,
1584
+ [getTableIds, getTableCellIds],
1585
+ (ids) => [hasTableCell(...ids)],
1586
+ ],
1587
+ [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
1588
+ [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
1589
+ [HAS + ROW]: [
1590
+ 2,
1591
+ hasRowListeners,
1592
+ [getTableIds, getRowIds],
1593
+ (ids) => [hasRow(...ids)],
1594
+ ],
1595
+ [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
1596
+ [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
1597
+ [HAS + CELL]: [
1598
+ 3,
1599
+ hasCellListeners,
1600
+ [getTableIds, getRowIds, getCellIds],
1601
+ (ids) => [hasCell(...ids)],
1602
+ ],
1603
+ [CELL]: [
1604
+ 3,
1605
+ cellListeners,
1606
+ [getTableIds, getRowIds, getCellIds],
1607
+ (ids) => pairNew(getCell(...ids)),
1608
+ ],
1609
+ InvalidCell: [3, invalidCellListeners],
1610
+ [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
1611
+ [VALUES]: [0, valuesListeners],
1612
+ [VALUE_IDS]: [0, valueIdsListeners],
1613
+ [HAS + VALUE]: [
1614
+ 1,
1615
+ hasValueListeners,
1616
+ [getValueIds],
1617
+ (ids) => [hasValue(...ids)],
1618
+ ],
1619
+ [VALUE]: [
1620
+ 1,
1621
+ valueListeners,
1622
+ [getValueIds],
1623
+ (ids) => pairNew(getValue(ids[0])),
1624
+ ],
1625
+ InvalidValue: [1, invalidValueListeners],
1626
+ },
1627
+ ([argumentCount, idSetNode, pathGetters, extraArgsGetter], listenable) => {
1628
+ store[ADD + listenable + LISTENER] = (...args) =>
1629
+ addListener(
1630
+ args[argumentCount],
1631
+ idSetNode[args[argumentCount + 1] ? 1 : 0],
1632
+ argumentCount > 0 ? slice(args, 0, argumentCount) : void 0,
1633
+ pathGetters,
1634
+ extraArgsGetter,
1635
+ );
1636
+ },
1637
+ );
1638
+ return objFreeze(store);
1639
+ };
1640
+
1641
+ const store = createStore();
1642
+ // For now, we clear the database every page load to keep it clean and small.
1643
+ // We're only using it to synchronize data between isolated components. e-Signing
1644
+ // flows don't really benefit from "offline-first" approaches anyway, since most
1645
+ // of a user's interactions need to go through our servers anyway.
1646
+ store.delTables();
1647
+ store.delValues();
1648
+ console.log('[STORE] Data store initialized.');
1649
+ const safeJsonParse = (val, fallback) => {
1650
+ try {
1651
+ return JSON.parse(val);
1652
+ }
1653
+ catch (e) {
1654
+ return fallback || null;
1655
+ }
1656
+ };
1657
+ const objectToRow = (obj) => {
1658
+ const row = {};
1659
+ for (let key in obj) {
1660
+ if (typeof obj[key] === 'string' || typeof obj[key] === 'number' || typeof obj[key] === 'boolean') {
1661
+ row[key] = obj[key];
1662
+ }
1663
+ else if (obj[key] === null) {
1664
+ row[`__null__${key}`] = '';
1665
+ }
1666
+ else if (Array.isArray(obj[key])) {
1667
+ row[`__array__${key}`] = JSON.stringify(obj[key]);
1668
+ }
1669
+ else if (typeof obj[key] === 'object') {
1670
+ row[`__object__${key}`] = JSON.stringify(obj[key]);
1671
+ }
1672
+ }
1673
+ return row;
1674
+ };
1675
+ const rowToObject = (row) => {
1676
+ const obj = {};
1677
+ for (let key in row) {
1678
+ if (key.startsWith('__null__')) {
1679
+ obj[key.replace('__null__', '')] = null;
1680
+ }
1681
+ else if (typeof row[key] === 'string' && key.startsWith('__array__')) {
1682
+ obj[key.replace('__array__', '')] = safeJsonParse(row[key]);
1683
+ }
1684
+ else if (typeof row[key] === 'string' && key.startsWith('__object__')) {
1685
+ obj[key.replace('__object__', '')] = safeJsonParse(row[key]);
1686
+ }
1687
+ else {
1688
+ obj[key] = row[key];
1689
+ }
1690
+ }
1691
+ return obj;
1692
+ };
1693
+ const Store = {
1694
+ store,
1695
+ // Extends the store's listener mechanism with two features:
1696
+ // 1. Apply typing to the return result, and pass the whole updated value to the callback instead
1697
+ // of just the "changes".
1698
+ // 2. Fire the callback immediately with the current value, so that the component can initialize.
1699
+ subscribe(tableId, rowId, getter, forceReload, callback) {
1700
+ // We call the callback immediately if the row exists so we get an SWR-like behavior.
1701
+ if (store.hasRow(tableId, rowId)) {
1702
+ callback(rowToObject(store.getRow(tableId, rowId)));
1703
+ }
1704
+ const listenerId = store.addRowListener(tableId, rowId, () => {
1705
+ const row = store.getRow(tableId, rowId);
1706
+ callback(rowToObject(row));
1707
+ });
1708
+ if (!store.hasRow(tableId, rowId) || forceReload) {
1709
+ console.log('[STORE] Reloading', { tableId, rowId });
1710
+ getter()
1711
+ .then(result => {
1712
+ // We don't need to call the callback because it's already listening
1713
+ console.log('[STORE] Loaded row', { tableId, rowId, forceReload }, result);
1714
+ store.setRow(tableId, rowId, objectToRow(result));
1715
+ })
1716
+ .catch(e => {
1717
+ console.error('[STORE] Error getting row', { tableId, rowId, forceReload }, e);
1718
+ });
1719
+ }
1720
+ return listenerId;
1721
+ },
1722
+ unsubscribe(listenerId) {
1723
+ store.delListener(listenerId);
1724
+ },
1725
+ async getTemplate(endpoint, templateId, reload = false) {
1726
+ if (!reload) {
1727
+ if (!store.hasRow('templates', templateId)) {
1728
+ return null;
1729
+ }
1730
+ const row = store.getRow('templates', templateId);
1731
+ return rowToObject(row);
1732
+ }
1733
+ const template = await getTemplate(endpoint, templateId);
1734
+ store.setRow('templates', templateId, objectToRow(template));
1735
+ return template;
1736
+ },
1737
+ updateTemplate(templateId, template) {
1738
+ store.setRow('templates', templateId, objectToRow(template));
1739
+ return template;
1740
+ },
1741
+ async getEnvelope(endpoint, envelopeId, reload = false) {
1742
+ if (!reload) {
1743
+ if (!store.hasRow('envelopes', envelopeId)) {
1744
+ return null;
1745
+ }
1746
+ const row = store.getRow('envelopes', envelopeId);
1747
+ return rowToObject(row);
1748
+ }
1749
+ const envelope = await getTemplate(endpoint, envelopeId);
1750
+ store.setRow('envelopes', envelopeId, objectToRow(envelope));
1751
+ return envelope;
1752
+ },
1753
+ updateEnvelope(envelopeId, envelope) {
1754
+ store.setRow('envelopes', envelopeId, objectToRow(envelope));
1755
+ return envelope;
1756
+ },
1757
+ // Get a field from an already-loaded envelope or template. Intended to be
1758
+ // called by the verdocs-field-* components themselves which are only rendered
1759
+ // after a template or envelope is already loaded and cached in the store, so
1760
+ // no attempt is made to load the parent record if it isn't already known.
1761
+ getField(source, sourceId, fieldName) {
1762
+ if (source === 'template') {
1763
+ const row = store.getRow('templates', sourceId);
1764
+ const template = rowToObject(row);
1765
+ const field = (template.fields || []).find(field => field.name === fieldName);
1766
+ const roleNames = (template.roles || []).map(role => role.name);
1767
+ const index = roleNames.findIndex(name => name === field.role_name);
1768
+ return { index: Math.max(index, 0), field };
1769
+ }
1770
+ else {
1771
+ const row = store.getRow('envelopes', sourceId);
1772
+ const envelope = rowToObject(row);
1773
+ const field = (envelope.fields || []).find(field => field.name === fieldName);
1774
+ const roleNames = (envelope.recipients || []).map(recipient => recipient.role_name);
1775
+ const index = roleNames.findIndex(name => name === field.role_name);
1776
+ return { index, field };
1777
+ }
1778
+ },
1779
+ };
1780
+
1781
+ export { Store as S };