@verdocs/web-sdk 6.13.2 → 6.14.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 (301) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{utils-BtmSHO0F.js → utils-D97WoGBX.js} +12 -2
  3. package/dist/cjs/utils-D97WoGBX.js.map +1 -0
  4. package/dist/cjs/verdocs-adopt-signature-dialog_7.cjs.entry.js +3 -3
  5. package/dist/cjs/verdocs-adopt-signature-dialog_7.cjs.entry.js.map +1 -1
  6. package/dist/cjs/verdocs-checkbox_5.cjs.entry.js +56 -11
  7. package/dist/cjs/verdocs-checkbox_5.cjs.entry.js.map +1 -1
  8. package/dist/cjs/verdocs-contact-picker.cjs.entry.js +4 -4
  9. package/dist/cjs/verdocs-contact-picker.cjs.entry.js.map +1 -1
  10. package/dist/cjs/verdocs-download-dialog_4.cjs.entry.js +1 -1
  11. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +1 -1
  12. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/verdocs-envelopes-list.cjs.entry.js +1 -1
  14. package/dist/cjs/verdocs-field-attachment_11.cjs.entry.js +89 -9
  15. package/dist/cjs/verdocs-field-attachment_11.cjs.entry.js.map +1 -1
  16. package/dist/cjs/verdocs-pagination_2.cjs.entry.js +1 -1
  17. package/dist/cjs/verdocs-preview_6.cjs.entry.js +291 -50
  18. package/dist/cjs/verdocs-preview_6.cjs.entry.js.map +1 -1
  19. package/dist/cjs/verdocs-sign.cjs.entry.js +37 -6
  20. package/dist/cjs/verdocs-sign.cjs.entry.js.map +1 -1
  21. package/dist/cjs/verdocs-signing-progress.cjs.entry.js +1 -1
  22. package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +1 -1
  23. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  24. package/dist/collection/components/controls/verdocs-checkbox/verdocs-checkbox.css +18 -1
  25. package/dist/collection/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.js +3 -3
  26. package/dist/collection/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.js.map +1 -1
  27. package/dist/collection/components/embeds/verdocs-send/verdocs-send.css +29 -0
  28. package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +7 -11
  29. package/dist/collection/components/embeds/verdocs-send/verdocs-send.js.map +1 -1
  30. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +38 -5
  31. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js.map +1 -1
  32. package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js +3 -3
  33. package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js.map +1 -1
  34. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js +1 -1
  35. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js.map +1 -1
  36. package/dist/collection/components/envelopes/verdocs-envelopes-list/verdocs-envelopes-list.js +2 -2
  37. package/dist/collection/components/envelopes/verdocs-status-indicator/verdocs-status-indicator.js +1 -1
  38. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.css +22 -0
  39. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +14 -1
  40. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js.map +1 -1
  41. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +1 -2
  42. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js.map +1 -1
  43. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +1 -1
  44. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js.map +1 -1
  45. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.css +29 -2
  46. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.js +14 -1
  47. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.js.map +1 -1
  48. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +1 -1
  49. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js.map +1 -1
  50. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +1 -1
  51. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js.map +1 -1
  52. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.css +5 -0
  53. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +55 -9
  54. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js.map +1 -1
  55. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.css +4 -0
  56. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +281 -36
  57. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js.map +1 -1
  58. package/dist/collection/utils/ToggleFields.js +61 -0
  59. package/dist/collection/utils/ToggleFields.js.map +1 -0
  60. package/dist/collection/utils/utils.js +9 -0
  61. package/dist/collection/utils/utils.js.map +1 -1
  62. package/dist/components/{p-CEkRxfcu.js → p-58qb6gkU.js} +2 -2
  63. package/dist/components/{p-BKLlc2r0.js → p-5M_R8La0.js} +2 -2
  64. package/dist/components/{p-D-X-Zcsr.js → p-BIi4c9Gz.js} +2 -2
  65. package/dist/components/p-BLsFdjFq.js +2 -0
  66. package/dist/components/p-BLsFdjFq.js.map +1 -0
  67. package/dist/components/{p-CQzPkAVQ.js → p-BPcxbmXF.js} +2 -2
  68. package/dist/components/{p-CQzPkAVQ.js.map → p-BPcxbmXF.js.map} +1 -1
  69. package/dist/components/{p-DTG2X1A2.js → p-BeDDvLcN.js} +2 -2
  70. package/dist/components/p-ByEpps_M.js +2 -0
  71. package/dist/components/p-ByEpps_M.js.map +1 -0
  72. package/dist/components/{p-D0MFs2Dv.js → p-C8ZliaLz.js} +2 -2
  73. package/dist/components/{p-D0MFs2Dv.js.map → p-C8ZliaLz.js.map} +1 -1
  74. package/dist/components/{p-B4tpmyon.js → p-CAJJndLX.js} +2 -2
  75. package/dist/components/{p-ByrpRZ3E.js → p-CaFhF-9s.js} +2 -2
  76. package/dist/components/p-CaFhF-9s.js.map +1 -0
  77. package/dist/components/{p-DscL0SIM.js → p-D56nBgHQ.js} +2 -2
  78. package/dist/components/{p-CFacV7mg.js → p-DMaRtkQF.js} +2 -2
  79. package/dist/components/{p-CFacV7mg.js.map → p-DMaRtkQF.js.map} +1 -1
  80. package/dist/components/p-DPF2i0o5.js +2 -0
  81. package/dist/components/p-DPF2i0o5.js.map +1 -0
  82. package/dist/components/{p-CEcG_ay-.js → p-DReW8CSB.js} +2 -2
  83. package/dist/components/{p-BhG0HGg6.js → p-DX713VO2.js} +2 -2
  84. package/dist/components/p-DbWcp3S8.js +2 -0
  85. package/dist/components/p-DbWcp3S8.js.map +1 -0
  86. package/dist/components/p-DvxzLwaB.js +2 -0
  87. package/dist/components/p-DvxzLwaB.js.map +1 -0
  88. package/dist/components/p-NtvxlYzY.js +2 -0
  89. package/dist/components/p-NtvxlYzY.js.map +1 -0
  90. package/dist/components/{p-Cij_2Ym2.js → p-Vs72fn43.js} +2 -2
  91. package/dist/components/p-Vs72fn43.js.map +1 -0
  92. package/dist/components/{p-9kEZy9MP.js → p-YCI5JKXK.js} +2 -2
  93. package/dist/components/{p-B1AE2j97.js → p-h3swu3rA.js} +2 -2
  94. package/dist/components/{p-B1AE2j97.js.map → p-h3swu3rA.js.map} +1 -1
  95. package/dist/components/{p-kHTZa3Ev.js → p-hwu-GrDS.js} +2 -2
  96. package/dist/components/p-qLNetL5t.js +2 -0
  97. package/dist/components/p-qLNetL5t.js.map +1 -0
  98. package/dist/components/{p-06em1_P-.js → p-vuCjHk-M.js} +2 -2
  99. package/dist/components/p-zYtapVJ0.js +2 -0
  100. package/dist/components/p-zYtapVJ0.js.map +1 -0
  101. package/dist/components/verdocs-adopt-signature-dialog.js +1 -1
  102. package/dist/components/verdocs-build.js +1 -1
  103. package/dist/components/verdocs-checkbox.js +1 -1
  104. package/dist/components/verdocs-contact-picker.js +1 -1
  105. package/dist/components/verdocs-disclosure-dialog.js +1 -1
  106. package/dist/components/verdocs-envelope-document-page.js +1 -1
  107. package/dist/components/verdocs-envelope-sidebar.js +1 -1
  108. package/dist/components/verdocs-envelope-sidebar.js.map +1 -1
  109. package/dist/components/verdocs-envelopes-list.js +1 -1
  110. package/dist/components/verdocs-field-attachment.js +1 -1
  111. package/dist/components/verdocs-field-checkbox.js +1 -1
  112. package/dist/components/verdocs-field-date.js +1 -1
  113. package/dist/components/verdocs-field-dropdown.js +1 -1
  114. package/dist/components/verdocs-field-initial.js +1 -1
  115. package/dist/components/verdocs-field-payment.js +1 -1
  116. package/dist/components/verdocs-field-radio.js +1 -1
  117. package/dist/components/verdocs-field-signature.js +1 -1
  118. package/dist/components/verdocs-field-textarea.js +1 -1
  119. package/dist/components/verdocs-field-textbox.js +1 -1
  120. package/dist/components/verdocs-field-timestamp.js +1 -1
  121. package/dist/components/verdocs-kba-dialog.js +1 -1
  122. package/dist/components/verdocs-multiselect.js +1 -1
  123. package/dist/components/verdocs-preview.js +1 -1
  124. package/dist/components/verdocs-quick-filter.js +1 -1
  125. package/dist/components/verdocs-send.js +1 -1
  126. package/dist/components/verdocs-sign.js +1 -1
  127. package/dist/components/verdocs-sign.js.map +1 -1
  128. package/dist/components/verdocs-signing-progress.js +1 -1
  129. package/dist/components/verdocs-template-document-page.js +1 -1
  130. package/dist/components/verdocs-template-field-properties.js +1 -1
  131. package/dist/components/verdocs-template-fields.js +1 -1
  132. package/dist/components/verdocs-templates-list.js +1 -1
  133. package/dist/components/verdocs-view.js +1 -1
  134. package/dist/esm/loader.js +1 -1
  135. package/dist/esm/{utils-Bh3zb1Xs.js → utils-T8dqWH7y.js} +12 -3
  136. package/dist/esm/utils-T8dqWH7y.js.map +1 -0
  137. package/dist/esm/verdocs-adopt-signature-dialog_7.entry.js +3 -3
  138. package/dist/esm/verdocs-adopt-signature-dialog_7.entry.js.map +1 -1
  139. package/dist/esm/verdocs-checkbox_5.entry.js +56 -11
  140. package/dist/esm/verdocs-checkbox_5.entry.js.map +1 -1
  141. package/dist/esm/verdocs-contact-picker.entry.js +4 -4
  142. package/dist/esm/verdocs-contact-picker.entry.js.map +1 -1
  143. package/dist/esm/verdocs-download-dialog_4.entry.js +1 -1
  144. package/dist/esm/verdocs-envelope-sidebar.entry.js +1 -1
  145. package/dist/esm/verdocs-envelope-sidebar.entry.js.map +1 -1
  146. package/dist/esm/verdocs-envelopes-list.entry.js +1 -1
  147. package/dist/esm/verdocs-field-attachment_11.entry.js +89 -9
  148. package/dist/esm/verdocs-field-attachment_11.entry.js.map +1 -1
  149. package/dist/esm/verdocs-pagination_2.entry.js +1 -1
  150. package/dist/esm/verdocs-preview_6.entry.js +291 -50
  151. package/dist/esm/verdocs-preview_6.entry.js.map +1 -1
  152. package/dist/esm/verdocs-sign.entry.js +37 -6
  153. package/dist/esm/verdocs-sign.entry.js.map +1 -1
  154. package/dist/esm/verdocs-signing-progress.entry.js +1 -1
  155. package/dist/esm/verdocs-template-document-page_2.entry.js +1 -1
  156. package/dist/esm/verdocs-web-sdk.js +1 -1
  157. package/dist/esm-es5/loader.js +1 -1
  158. package/dist/esm-es5/utils-T8dqWH7y.js +2 -0
  159. package/dist/esm-es5/utils-T8dqWH7y.js.map +1 -0
  160. package/dist/esm-es5/verdocs-adopt-signature-dialog_7.entry.js +1 -1
  161. package/dist/esm-es5/verdocs-adopt-signature-dialog_7.entry.js.map +1 -1
  162. package/dist/esm-es5/verdocs-checkbox_5.entry.js +1 -1
  163. package/dist/esm-es5/verdocs-checkbox_5.entry.js.map +1 -1
  164. package/dist/esm-es5/verdocs-contact-picker.entry.js +1 -1
  165. package/dist/esm-es5/verdocs-contact-picker.entry.js.map +1 -1
  166. package/dist/esm-es5/verdocs-download-dialog_4.entry.js +1 -1
  167. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  168. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js.map +1 -1
  169. package/dist/esm-es5/verdocs-envelopes-list.entry.js +1 -1
  170. package/dist/esm-es5/verdocs-field-attachment_11.entry.js +1 -1
  171. package/dist/esm-es5/verdocs-field-attachment_11.entry.js.map +1 -1
  172. package/dist/esm-es5/verdocs-pagination_2.entry.js +1 -1
  173. package/dist/esm-es5/verdocs-preview_6.entry.js +2 -2
  174. package/dist/esm-es5/verdocs-preview_6.entry.js.map +1 -1
  175. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  176. package/dist/esm-es5/verdocs-sign.entry.js.map +1 -1
  177. package/dist/esm-es5/verdocs-signing-progress.entry.js +1 -1
  178. package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
  179. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  180. package/dist/types/components/embeds/verdocs-send/verdocs-send.d.ts +0 -1
  181. package/dist/types/components/embeds/verdocs-sign/verdocs-sign.d.ts +3 -0
  182. package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +1 -0
  183. package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +1 -1
  184. package/dist/types/components/fields/verdocs-field-radio/verdocs-field-radio.d.ts +1 -0
  185. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +1 -0
  186. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +50 -3
  187. package/dist/types/utils/ToggleFields.d.ts +12 -0
  188. package/dist/types/utils/utils.d.ts +8 -2
  189. package/dist/verdocs-web-sdk/{p-46d6279e.entry.js → p-002fee52.entry.js} +2 -2
  190. package/dist/verdocs-web-sdk/p-1b4cde18.entry.js +2 -0
  191. package/dist/verdocs-web-sdk/p-1b4cde18.entry.js.map +1 -0
  192. package/dist/verdocs-web-sdk/p-1f708b6a.entry.js +2 -0
  193. package/dist/verdocs-web-sdk/p-1f708b6a.entry.js.map +1 -0
  194. package/dist/verdocs-web-sdk/{p-7dd394be.system.entry.js → p-259e53e2.system.entry.js} +2 -2
  195. package/dist/verdocs-web-sdk/{p-0d19368a.system.entry.js → p-298ee271.system.entry.js} +2 -2
  196. package/dist/verdocs-web-sdk/p-2cddbced.system.entry.js +2 -0
  197. package/dist/verdocs-web-sdk/p-2cddbced.system.entry.js.map +1 -0
  198. package/dist/verdocs-web-sdk/{p-99a6b317.system.entry.js → p-36f2fe29.system.entry.js} +2 -2
  199. package/dist/verdocs-web-sdk/{p-143428bc.system.entry.js → p-4a934b98.system.entry.js} +2 -2
  200. package/dist/verdocs-web-sdk/{p-478de2c9.entry.js → p-6ac28b30.entry.js} +2 -2
  201. package/dist/verdocs-web-sdk/p-6fdd258b.entry.js +2 -0
  202. package/dist/verdocs-web-sdk/p-6fdd258b.entry.js.map +1 -0
  203. package/dist/verdocs-web-sdk/{p-301f0247.entry.js → p-72702300.entry.js} +2 -2
  204. package/dist/verdocs-web-sdk/p-72702300.entry.js.map +1 -0
  205. package/dist/verdocs-web-sdk/{p-228c0fa3.system.entry.js → p-83b4e117.system.entry.js} +2 -2
  206. package/dist/verdocs-web-sdk/{p-228c0fa3.system.entry.js.map → p-83b4e117.system.entry.js.map} +1 -1
  207. package/dist/verdocs-web-sdk/{p-58b84a5a.entry.js → p-923aabca.entry.js} +2 -2
  208. package/dist/verdocs-web-sdk/{p-58b84a5a.entry.js.map → p-923aabca.entry.js.map} +1 -1
  209. package/dist/verdocs-web-sdk/p-BdZ5Ghsa.system.js +1 -1
  210. package/dist/verdocs-web-sdk/p-CHdb5wzt.js +2 -0
  211. package/dist/verdocs-web-sdk/p-CHdb5wzt.js.map +1 -0
  212. package/dist/verdocs-web-sdk/p-DeoYp6nD.system.js +2 -0
  213. package/dist/verdocs-web-sdk/p-DeoYp6nD.system.js.map +1 -0
  214. package/dist/verdocs-web-sdk/{p-38800961.system.entry.js → p-b3cad1ae.system.entry.js} +2 -2
  215. package/dist/verdocs-web-sdk/p-b3cad1ae.system.entry.js.map +1 -0
  216. package/dist/verdocs-web-sdk/p-b5fbfc6e.system.entry.js +2 -0
  217. package/dist/verdocs-web-sdk/p-b5fbfc6e.system.entry.js.map +1 -0
  218. package/dist/verdocs-web-sdk/p-bd1bcb9d.system.entry.js +8 -0
  219. package/dist/verdocs-web-sdk/p-bd1bcb9d.system.entry.js.map +1 -0
  220. package/dist/verdocs-web-sdk/{p-ea6c0b55.entry.js → p-bdfda300.entry.js} +2 -2
  221. package/dist/verdocs-web-sdk/{p-1a91a922.entry.js → p-c273b465.entry.js} +2 -2
  222. package/dist/verdocs-web-sdk/{p-eccac670.system.entry.js → p-c43a5bce.system.entry.js} +2 -2
  223. package/dist/verdocs-web-sdk/p-d7bb1eaa.system.entry.js +2 -0
  224. package/dist/verdocs-web-sdk/p-d7bb1eaa.system.entry.js.map +1 -0
  225. package/dist/verdocs-web-sdk/p-d8dbcb2c.entry.js +2 -0
  226. package/dist/verdocs-web-sdk/p-d8dbcb2c.entry.js.map +1 -0
  227. package/dist/verdocs-web-sdk/p-e3f13498.entry.js +8 -0
  228. package/dist/verdocs-web-sdk/p-e3f13498.entry.js.map +1 -0
  229. package/dist/verdocs-web-sdk/{p-8f50f83f.entry.js → p-efc80cbf.entry.js} +2 -2
  230. package/dist/verdocs-web-sdk/p-fd614aa0.system.entry.js +2 -0
  231. package/dist/verdocs-web-sdk/p-fd614aa0.system.entry.js.map +1 -0
  232. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  233. package/package.json +2 -2
  234. package/dist/cjs/utils-BtmSHO0F.js.map +0 -1
  235. package/dist/components/p-1FjgijEi.js +0 -2
  236. package/dist/components/p-1FjgijEi.js.map +0 -1
  237. package/dist/components/p-BCwFpXpV.js +0 -2
  238. package/dist/components/p-BCwFpXpV.js.map +0 -1
  239. package/dist/components/p-Blr31TcJ.js +0 -2
  240. package/dist/components/p-Blr31TcJ.js.map +0 -1
  241. package/dist/components/p-Bxvw_LqR.js +0 -2
  242. package/dist/components/p-Bxvw_LqR.js.map +0 -1
  243. package/dist/components/p-ByrpRZ3E.js.map +0 -1
  244. package/dist/components/p-Cij_2Ym2.js.map +0 -1
  245. package/dist/components/p-DGNIsXfr.js +0 -2
  246. package/dist/components/p-DGNIsXfr.js.map +0 -1
  247. package/dist/components/p-DRP4Xxiu.js +0 -2
  248. package/dist/components/p-DRP4Xxiu.js.map +0 -1
  249. package/dist/components/p-ek0LNMtb.js +0 -2
  250. package/dist/components/p-ek0LNMtb.js.map +0 -1
  251. package/dist/custom-elements.json +0 -2517
  252. package/dist/esm/utils-Bh3zb1Xs.js.map +0 -1
  253. package/dist/esm-es5/utils-Bh3zb1Xs.js +0 -2
  254. package/dist/esm-es5/utils-Bh3zb1Xs.js.map +0 -1
  255. package/dist/verdocs-web-sdk/p-1b818cdf.entry.js +0 -8
  256. package/dist/verdocs-web-sdk/p-1b818cdf.entry.js.map +0 -1
  257. package/dist/verdocs-web-sdk/p-24dcc54e.system.entry.js +0 -8
  258. package/dist/verdocs-web-sdk/p-24dcc54e.system.entry.js.map +0 -1
  259. package/dist/verdocs-web-sdk/p-301f0247.entry.js.map +0 -1
  260. package/dist/verdocs-web-sdk/p-38800961.system.entry.js.map +0 -1
  261. package/dist/verdocs-web-sdk/p-6fb7fd6d.system.entry.js +0 -2
  262. package/dist/verdocs-web-sdk/p-6fb7fd6d.system.entry.js.map +0 -1
  263. package/dist/verdocs-web-sdk/p-8ec770c3.entry.js +0 -2
  264. package/dist/verdocs-web-sdk/p-8ec770c3.entry.js.map +0 -1
  265. package/dist/verdocs-web-sdk/p-935267a6.entry.js +0 -2
  266. package/dist/verdocs-web-sdk/p-935267a6.entry.js.map +0 -1
  267. package/dist/verdocs-web-sdk/p-CGsVCy75.js +0 -2
  268. package/dist/verdocs-web-sdk/p-CGsVCy75.js.map +0 -1
  269. package/dist/verdocs-web-sdk/p-a9899fce.system.entry.js +0 -2
  270. package/dist/verdocs-web-sdk/p-a9899fce.system.entry.js.map +0 -1
  271. package/dist/verdocs-web-sdk/p-bf38aa98.entry.js +0 -2
  272. package/dist/verdocs-web-sdk/p-bf38aa98.entry.js.map +0 -1
  273. package/dist/verdocs-web-sdk/p-c5f8125b.system.entry.js +0 -2
  274. package/dist/verdocs-web-sdk/p-c5f8125b.system.entry.js.map +0 -1
  275. package/dist/verdocs-web-sdk/p-df921f12.system.entry.js +0 -2
  276. package/dist/verdocs-web-sdk/p-df921f12.system.entry.js.map +0 -1
  277. package/dist/verdocs-web-sdk/p-f6ad24c5.entry.js +0 -2
  278. package/dist/verdocs-web-sdk/p-f6ad24c5.entry.js.map +0 -1
  279. package/dist/verdocs-web-sdk/p-nfw6V5pF.system.js +0 -2
  280. package/dist/verdocs-web-sdk/p-nfw6V5pF.system.js.map +0 -1
  281. /package/dist/components/{p-CEkRxfcu.js.map → p-58qb6gkU.js.map} +0 -0
  282. /package/dist/components/{p-BKLlc2r0.js.map → p-5M_R8La0.js.map} +0 -0
  283. /package/dist/components/{p-D-X-Zcsr.js.map → p-BIi4c9Gz.js.map} +0 -0
  284. /package/dist/components/{p-DTG2X1A2.js.map → p-BeDDvLcN.js.map} +0 -0
  285. /package/dist/components/{p-B4tpmyon.js.map → p-CAJJndLX.js.map} +0 -0
  286. /package/dist/components/{p-DscL0SIM.js.map → p-D56nBgHQ.js.map} +0 -0
  287. /package/dist/components/{p-CEcG_ay-.js.map → p-DReW8CSB.js.map} +0 -0
  288. /package/dist/components/{p-BhG0HGg6.js.map → p-DX713VO2.js.map} +0 -0
  289. /package/dist/components/{p-9kEZy9MP.js.map → p-YCI5JKXK.js.map} +0 -0
  290. /package/dist/components/{p-kHTZa3Ev.js.map → p-hwu-GrDS.js.map} +0 -0
  291. /package/dist/components/{p-06em1_P-.js.map → p-vuCjHk-M.js.map} +0 -0
  292. /package/dist/verdocs-web-sdk/{p-46d6279e.entry.js.map → p-002fee52.entry.js.map} +0 -0
  293. /package/dist/verdocs-web-sdk/{p-7dd394be.system.entry.js.map → p-259e53e2.system.entry.js.map} +0 -0
  294. /package/dist/verdocs-web-sdk/{p-0d19368a.system.entry.js.map → p-298ee271.system.entry.js.map} +0 -0
  295. /package/dist/verdocs-web-sdk/{p-99a6b317.system.entry.js.map → p-36f2fe29.system.entry.js.map} +0 -0
  296. /package/dist/verdocs-web-sdk/{p-143428bc.system.entry.js.map → p-4a934b98.system.entry.js.map} +0 -0
  297. /package/dist/verdocs-web-sdk/{p-478de2c9.entry.js.map → p-6ac28b30.entry.js.map} +0 -0
  298. /package/dist/verdocs-web-sdk/{p-ea6c0b55.entry.js.map → p-bdfda300.entry.js.map} +0 -0
  299. /package/dist/verdocs-web-sdk/{p-1a91a922.entry.js.map → p-c273b465.entry.js.map} +0 -0
  300. /package/dist/verdocs-web-sdk/{p-eccac670.system.entry.js.map → p-c43a5bce.system.entry.js.map} +0 -0
  301. /package/dist/verdocs-web-sdk/{p-8f50f83f.entry.js.map → p-efc80cbf.entry.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-CjTHbolG.js';
2
2
  import { integerSequence } from '@verdocs/js-sdk';
3
- import { e as renderedTextWidth } from './utils-Bh3zb1Xs.js';
3
+ import { e as renderedTextWidth } from './utils-T8dqWH7y.js';
4
4
  import { c as createPopper } from './popper-BfP9ezJQ.js';
5
5
  import './index-BglCURB-.js';
6
6
  import './Types-CIxfEdV7.js';
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, F as Fragment, g as getElement } from './index-CjTHbolG.js';
2
2
  import { i as interact } from './interact.min-Bf1WXbdg.js';
3
3
  import { VerdocsEndpoint, getTemplate, integerSequence, getBrands, getOrganization, formatFullName, getOrganizationContacts, isValidEmail, createEnvelope, getRGBA, createTemplateDocument, deleteTemplateDocument, updateField, createField, updateTemplateRole, createTemplateRole } from '@verdocs/js-sdk';
4
- import { a as renderDocumentField, g as getFieldId, h as updateCssTransform, i as removeCssTransform, j as setControlStyles, d as defaultHeight, k as defaultWidth } from './utils-Bh3zb1Xs.js';
4
+ import { a as renderDocumentField, g as getFieldId, h as setControlStyles, i as updateCssTransform, j as removeCssTransform, d as defaultHeight, k as defaultWidth } from './utils-T8dqWH7y.js';
5
5
  import { S as SDKError } from './errors-C1sRVZWv.js';
6
6
  import { S as Store } from './Datastore-C7hFgM52.js';
7
7
  import { D as DefaultEndpoint, g as getWebAppUrl } from './Environment-Cq60Emo_.js';
@@ -126,7 +126,7 @@ VerdocsPreview.style = verdocsPreviewCss();
126
126
  const getRoleNames = (template) => ((template === null || template === void 0 ? void 0 : template.roles) || []).map(role => role.name);
127
127
  const getRoleIndex = (template, role_name) => Math.max(getRoleNames(template).findIndex(name => name === role_name), 0);
128
128
 
129
- const verdocsSendCss = () => `verdocs-send{--send-ink:var(--verdocs-body-color, #111827);--send-ink-2:#374151;--send-muted:#6b7280;--send-faint:#9ca3af;--send-rule:#e5e7eb;--send-control-border:#d1d5db;--send-accent:var(--verdocs-link-color, #4c56cb);--send-accent-tint:#f4f5fc;--send-accent-tint-2:#e6e7f8;--send-warning-bg:#fffbeb;--send-warning-border:#fde68a;--send-warning-icon:#d97706;--send-warning-text:#78350f;--send-radius:var(--verdocs-dialog-radius, 8px);--send-min-height:480px;--send-max-width:480px;display:none;position:relative;overflow:hidden;width:100%;max-width:var(--verdocs-send-max-width, var(--send-max-width));-webkit-box-sizing:border-box;box-sizing:border-box;background:#ffffff;color:var(--send-ink);font-size:14px;border-radius:var(--send-radius);border:1px solid var(--send-rule);font-family:var(--verdocs-primary-font, "Inter", "Barlow", sans-serif)}verdocs-send *{-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-send.sendable{display:block}verdocs-send .track{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:var(--send-min-height);-webkit-transition:-webkit-transform 220ms ease-out;transition:-webkit-transform 220ms ease-out;transition:transform 220ms ease-out;transition:transform 220ms ease-out, -webkit-transform 220ms ease-out}verdocs-send.detail-open .track{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@media (prefers-reduced-motion: reduce){verdocs-send .track{-webkit-transition:none;transition:none}}verdocs-send .pane{padding:16px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .main-pane{-ms-flex:1;flex:1}verdocs-send .detail-pane{position:absolute;top:0;left:100%;bottom:0;width:100%;overflow:hidden}verdocs-send .detail{-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .detail-body-wrap{position:relative;-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .detail-body{-ms-flex:1;flex:1;min-height:0;overflow-y:auto}verdocs-send .scroll-fade{position:absolute;left:0;right:0;bottom:0;height:36px;opacity:0;pointer-events:none;-webkit-transition:opacity 150ms ease-out;transition:opacity 150ms ease-out;background:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(#ffffff));background:linear-gradient(rgba(255, 255, 255, 0), #ffffff)}verdocs-send .scrollable:not(.at-end)>.scroll-fade{opacity:1}verdocs-send .recipient-detail verdocs-contact-picker{-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .section-title{font-size:12px;font-weight:600;color:var(--send-ink-2);margin:0 0 6px 0}verdocs-send .delivery-title{margin-top:16px}verdocs-send .step{font-size:11px;color:var(--send-muted);padding:10px 0 4px 0}verdocs-send .recipient,verdocs-send .kv{all:unset;display:-ms-flexbox;display:flex;width:100%;cursor:pointer;-ms-flex-align:center;align-items:center;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;border-top:1px solid var(--send-rule);color:var(--send-ink);font-family:inherit}verdocs-send .recipient:focus-visible,verdocs-send .kv:focus-visible{outline:2px solid var(--send-accent);outline-offset:-2px;border-radius:4px}verdocs-send .recipient .chevron,verdocs-send .kv .chevron{-ms-flex:0 0 16px;flex:0 0 16px;width:16px;height:16px;color:var(--send-faint)}verdocs-send .recipient .chevron svg,verdocs-send .kv .chevron svg{width:16px;height:16px;display:block}verdocs-send .recipient{padding:8px 6px 8px 0}verdocs-send .recipient:last-child{border-bottom:1px solid var(--send-rule)}verdocs-send .recipient .who{-ms-flex:1;flex:1;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .recipient .role-name{font-size:13px;font-weight:600}verdocs-send .recipient .who-detail{font-size:12px;color:var(--send-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .recipient .who-detail.configure{color:var(--send-accent);font-weight:500}verdocs-send .recipient .options{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;margin-top:3px}verdocs-send .recipient .pill{height:18px;padding:0 6px;border-radius:999px;font-size:10px;font-weight:500;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;background:var(--send-accent-tint);color:var(--send-ink-2)}verdocs-send .role-dot{-ms-flex:0 0 10px;flex:0 0 10px;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0, 0, 0, 0.1)}verdocs-send .kv{height:40px;padding:0 6px 0 0;font-size:13px}verdocs-send .kv:last-child{border-bottom:1px solid var(--send-rule)}verdocs-send .kv:disabled{cursor:default;color:var(--send-muted)}verdocs-send .kv .key{-ms-flex:0 0 84px;flex:0 0 84px;color:var(--send-muted)}verdocs-send .kv .value{-ms-flex:1;flex:1;min-width:0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .kv .value small{font-size:inherit;font-weight:400;color:var(--send-muted)}verdocs-send .kv .value.off{color:var(--send-warning-icon)}verdocs-send .main-spacer,verdocs-send .detail-spacer{-ms-flex:1;flex:1}verdocs-send .buttons{display:-ms-flexbox;display:flex;margin-top:14px;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}verdocs-send .buttons .error-message{width:100%;color:#cc0000;font-size:13px;margin-bottom:10px}verdocs-send .detail-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;margin:-2px 0 14px 0}verdocs-send .detail-header .back{all:unset;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;cursor:pointer;font-size:13px;font-weight:500;color:var(--send-accent);font-family:inherit;-ms-flex:0 0 52px;flex:0 0 52px}verdocs-send .detail-header .back .icon,verdocs-send .detail-header .back .icon svg{width:16px;height:16px;display:block}verdocs-send .detail-header .back:focus-visible{outline:2px solid var(--send-accent);outline-offset:2px;border-radius:4px}verdocs-send .detail-header .detail-title{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;font-size:14px;font-weight:600;text-align:center}verdocs-send .detail-header .detail-header-spacer{-ms-flex:0 0 52px;flex:0 0 52px}verdocs-send .detail-footer{margin-top:10px;padding-top:12px;border-top:1px solid var(--send-rule)}verdocs-send .detail-footer verdocs-button,verdocs-send .detail-footer verdocs-button button{width:100%}verdocs-send .hint{font-size:12px;line-height:1.5;color:var(--send-muted);margin:10px 0 0 0}verdocs-send .option-list{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .option{all:unset;display:-ms-flexbox;display:flex;width:100%;cursor:pointer;-ms-flex-align:center;align-items:center;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;padding:10px 0;font-size:13px;font-family:inherit;color:var(--send-ink);border-top:1px solid var(--send-rule)}verdocs-send .option:first-child{border-top:0}verdocs-send .option:focus-visible{outline:2px solid var(--send-accent);outline-offset:-2px;border-radius:4px}verdocs-send .option .radio{-ms-flex:0 0 16px;flex:0 0 16px;width:16px;height:16px;border-radius:50%;border:1px solid var(--send-control-border);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}verdocs-send .option.selected .radio{border-color:var(--send-accent)}verdocs-send .option.selected .radio::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--send-accent)}verdocs-send .option .swatch{-ms-flex:0 0 22px;flex:0 0 22px;width:22px;height:22px;border-radius:5px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:9px;font-weight:700;color:#ffffff;overflow:hidden}verdocs-send .option .swatch.logo{background:#ffffff;border:1px solid var(--send-rule)}verdocs-send .option .swatch img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block}verdocs-send .option .option-label{-ms-flex:1;flex:1;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .option .option-label small{font-size:11px;color:var(--send-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .option-divider{height:0;margin:2px 0;border-top:1px solid var(--send-control-border)}verdocs-send .option-divider+.option{border-top:0}verdocs-send .hint a{color:var(--send-accent);font-weight:500;text-decoration:none;border-bottom:1px solid var(--send-accent-tint-2)}verdocs-send .hint a .icon,verdocs-send .hint a .icon svg{width:11px;height:11px;display:inline-block;vertical-align:-1px;margin-left:2px}verdocs-send .expires-field{position:relative}verdocs-send .expires-field input{width:100%;height:36px;padding:0 52px 0 10px;font-size:14px;font-family:inherit;color:var(--send-ink);background:#ffffff;border:1px solid var(--send-control-border);border-radius:6px;outline:none}verdocs-send .expires-field input:focus{border-color:var(--send-accent);-webkit-box-shadow:0 0 0 2px var(--send-accent-tint-2);box-shadow:0 0 0 2px var(--send-accent-tint-2)}verdocs-send .expires-field input::-webkit-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::-moz-placeholder{color:var(--send-faint)}verdocs-send .expires-field input:-ms-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::-ms-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::placeholder{color:var(--send-faint)}verdocs-send .expires-field .suffix{position:absolute;right:10px;top:0;height:36px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;font-size:13px;color:var(--send-muted);pointer-events:none}verdocs-send .sender-field{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;row-gap:4px;margin:0 0 10px 0}verdocs-send .sender-field label{font-size:12px;font-weight:500;color:var(--send-ink-2)}verdocs-send .sender-field input{width:100%;height:36px;padding:0 10px;font-size:14px;font-family:inherit;color:var(--send-ink);background:#ffffff;border:1px solid var(--send-control-border);border-radius:6px;outline:none}verdocs-send .sender-field input:focus{border-color:var(--send-accent);-webkit-box-shadow:0 0 0 2px var(--send-accent-tint-2);box-shadow:0 0 0 2px var(--send-accent-tint-2)}verdocs-send .sender-field .field-error{font-size:12px;color:#cc0000}verdocs-send .notice{display:-ms-flexbox;display:flex;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;margin-top:4px;padding:10px 12px;font-size:12px;line-height:1.5;border-radius:6px;color:var(--send-ink-2);background:var(--send-accent-tint);border:1px solid var(--send-accent-tint-2)}verdocs-send .notice>.icon{-ms-flex:0 0 18px;flex:0 0 18px;width:18px;height:18px;margin-top:1px;color:var(--send-accent)}verdocs-send .notice>.icon svg{width:18px;height:18px;display:block}verdocs-send .warning{display:-ms-flexbox;display:flex;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.5;border-radius:6px;color:var(--send-warning-text);background:var(--send-warning-bg);border:1px solid var(--send-warning-border)}verdocs-send .warning>.icon{-ms-flex:0 0 18px;flex:0 0 18px;width:18px;height:18px;margin-top:1px;color:var(--send-warning-icon)}verdocs-send .warning>.icon svg{width:18px;height:18px;display:block}verdocs-send .warning a{color:var(--send-accent);font-weight:500;text-decoration:none;border-bottom:1px solid var(--send-accent-tint-2)}verdocs-send .warning a .icon,verdocs-send .warning a .icon svg{width:11px;height:11px;display:inline-block;vertical-align:-1px;margin-left:2px}verdocs-send verdocs-checkbox{display:block;padding:4px 0;font-size:13px}`;
129
+ const verdocsSendCss = () => `verdocs-send{--send-ink:var(--verdocs-body-color, #111827);--send-ink-2:#374151;--send-muted:#6b7280;--send-faint:#9ca3af;--send-rule:#e5e7eb;--send-control-border:#d1d5db;--send-accent:var(--verdocs-link-color, #4c56cb);--send-accent-tint:#f4f5fc;--send-accent-tint-2:#e6e7f8;--send-warning-bg:#fffbeb;--send-warning-border:#fde68a;--send-warning-icon:#d97706;--send-warning-text:#78350f;--send-radius:var(--verdocs-dialog-radius, 8px);--send-min-height:480px;--send-max-width:480px;display:none;position:relative;overflow:hidden;width:100%;min-width:0;max-width:var(--verdocs-send-max-width, var(--send-max-width));-webkit-box-sizing:border-box;box-sizing:border-box;background:#ffffff;color:var(--send-ink);font-size:14px;border-radius:var(--send-radius);border:1px solid var(--send-rule);font-family:var(--verdocs-primary-font, "Inter", "Barlow", sans-serif)}verdocs-send *{-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-send.sendable{display:block}verdocs-send .track{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:var(--send-min-height);-webkit-transition:-webkit-transform 220ms ease-out;transition:-webkit-transform 220ms ease-out;transition:transform 220ms ease-out;transition:transform 220ms ease-out, -webkit-transform 220ms ease-out}verdocs-send.detail-open .track{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@media (prefers-reduced-motion: reduce){verdocs-send .track{-webkit-transition:none;transition:none}}verdocs-send .pane{padding:16px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .main-pane{-ms-flex:1;flex:1}verdocs-send .detail-pane{position:absolute;top:0;left:100%;bottom:0;width:100%;overflow:hidden}verdocs-send .detail{-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .detail-body-wrap{position:relative;-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .detail-body{-ms-flex:1;flex:1;min-height:0;overflow-y:auto}verdocs-send .scroll-fade{position:absolute;left:0;right:0;bottom:0;height:36px;opacity:0;pointer-events:none;-webkit-transition:opacity 150ms ease-out;transition:opacity 150ms ease-out;background:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(#ffffff));background:linear-gradient(rgba(255, 255, 255, 0), #ffffff)}verdocs-send .scrollable:not(.at-end)>.scroll-fade{opacity:1}verdocs-send .recipient-detail verdocs-contact-picker{-ms-flex:1;flex:1;min-height:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .section-title{font-size:12px;font-weight:600;color:var(--send-ink-2);margin:0 0 6px 0}verdocs-send .delivery-title{margin-top:16px}verdocs-send .step{font-size:11px;color:var(--send-muted);padding:10px 0 4px 0}verdocs-send .recipient,verdocs-send .kv{all:unset;display:-ms-flexbox;display:flex;width:100%;min-width:0;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;-ms-flex-align:center;align-items:center;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;border-top:1px solid var(--send-rule);color:var(--send-ink);font-family:inherit}verdocs-send .recipient:focus-visible,verdocs-send .kv:focus-visible{outline:2px solid var(--send-accent);outline-offset:-2px;border-radius:4px}verdocs-send .recipient .chevron,verdocs-send .kv .chevron{-ms-flex:0 0 16px;flex:0 0 16px;width:16px;height:16px;color:var(--send-faint)}verdocs-send .recipient .chevron svg,verdocs-send .kv .chevron svg{width:16px;height:16px;display:block}verdocs-send .recipient{padding:8px 6px 8px 0}verdocs-send .recipient:last-child{border-bottom:1px solid var(--send-rule)}verdocs-send .recipient .who{-ms-flex:1;flex:1;width:0;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .recipient .role-name{font-size:13px;font-weight:600}verdocs-send .recipient .who-detail{font-size:12px;color:var(--send-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .recipient .who-detail.configure{color:var(--send-accent);font-weight:500}verdocs-send .recipient .options{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;margin-top:3px}verdocs-send .recipient .pill{height:18px;padding:0 6px;border-radius:999px;font-size:10px;font-weight:500;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;background:var(--send-accent-tint);color:var(--send-ink-2)}verdocs-send .role-dot{-ms-flex:0 0 10px;flex:0 0 10px;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0, 0, 0, 0.1)}verdocs-send .kv{height:40px;padding:0 6px 0 0;font-size:13px}verdocs-send .kv:last-child{border-bottom:1px solid var(--send-rule)}verdocs-send .kv:disabled{cursor:default;color:var(--send-muted)}verdocs-send .kv .key{-ms-flex:0 0 84px;flex:0 0 84px;color:var(--send-muted)}verdocs-send .kv .value{-ms-flex:1;flex:1;width:0;min-width:0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .kv .value small{font-size:inherit;font-weight:400;color:var(--send-muted)}verdocs-send .kv .value.stacked{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;row-gap:1px;white-space:normal}verdocs-send .kv .value.stacked .line{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .kv .value.stacked small.line{font-size:12px}verdocs-send .kv .value.off{color:var(--send-warning-icon)}verdocs-send .kv:has(.value.stacked){height:auto;min-height:40px;padding-top:6px;padding-bottom:6px}verdocs-send .main-spacer,verdocs-send .detail-spacer{-ms-flex:1;flex:1}verdocs-send .buttons{display:-ms-flexbox;display:flex;margin-top:14px;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}verdocs-send .buttons .error-message{width:100%;color:#cc0000;font-size:13px;margin-bottom:10px}verdocs-send .detail-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;margin:-2px 0 14px 0}verdocs-send .detail-header .back{all:unset;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;cursor:pointer;font-size:13px;font-weight:500;color:var(--send-accent);font-family:inherit;-ms-flex:0 0 52px;flex:0 0 52px}verdocs-send .detail-header .back .icon,verdocs-send .detail-header .back .icon svg{width:16px;height:16px;display:block}verdocs-send .detail-header .back:focus-visible{outline:2px solid var(--send-accent);outline-offset:2px;border-radius:4px}verdocs-send .detail-header .detail-title{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;font-size:14px;font-weight:600;text-align:center}verdocs-send .detail-header .detail-header-spacer{-ms-flex:0 0 52px;flex:0 0 52px}verdocs-send .detail-footer{margin-top:10px;padding-top:12px;border-top:1px solid var(--send-rule)}verdocs-send .detail-footer verdocs-button,verdocs-send .detail-footer verdocs-button button{width:100%}verdocs-send .hint{font-size:12px;line-height:1.5;color:var(--send-muted);margin:10px 0 0 0}verdocs-send .option-list{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .option{all:unset;display:-ms-flexbox;display:flex;width:100%;cursor:pointer;-ms-flex-align:center;align-items:center;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;padding:10px 0;font-size:13px;font-family:inherit;color:var(--send-ink);border-top:1px solid var(--send-rule)}verdocs-send .option:first-child{border-top:0}verdocs-send .option:focus-visible{outline:2px solid var(--send-accent);outline-offset:-2px;border-radius:4px}verdocs-send .option .radio{-ms-flex:0 0 16px;flex:0 0 16px;width:16px;height:16px;border-radius:50%;border:1px solid var(--send-control-border);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}verdocs-send .option.selected .radio{border-color:var(--send-accent)}verdocs-send .option.selected .radio::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--send-accent)}verdocs-send .option .swatch{-ms-flex:0 0 22px;flex:0 0 22px;width:22px;height:22px;border-radius:5px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:9px;font-weight:700;color:#ffffff;overflow:hidden}verdocs-send .option .swatch.logo{background:#ffffff;border:1px solid var(--send-rule)}verdocs-send .option .swatch img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block}verdocs-send .option .option-label{-ms-flex:1;flex:1;width:0;min-width:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-send .option .option-label small{font-size:11px;color:var(--send-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}verdocs-send .option-divider{height:0;margin:2px 0;border-top:1px solid var(--send-control-border)}verdocs-send .option-divider+.option{border-top:0}verdocs-send .hint a{color:var(--send-accent);font-weight:500;text-decoration:none;border-bottom:1px solid var(--send-accent-tint-2)}verdocs-send .hint a .icon,verdocs-send .hint a .icon svg{width:11px;height:11px;display:inline-block;vertical-align:-1px;margin-left:2px}verdocs-send .expires-field{position:relative}verdocs-send .expires-field input{width:100%;height:36px;padding:0 52px 0 10px;font-size:14px;font-family:inherit;color:var(--send-ink);background:#ffffff;border:1px solid var(--send-control-border);border-radius:6px;outline:none}verdocs-send .expires-field input:focus{border-color:var(--send-accent);-webkit-box-shadow:0 0 0 2px var(--send-accent-tint-2);box-shadow:0 0 0 2px var(--send-accent-tint-2)}verdocs-send .expires-field input::-webkit-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::-moz-placeholder{color:var(--send-faint)}verdocs-send .expires-field input:-ms-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::-ms-input-placeholder{color:var(--send-faint)}verdocs-send .expires-field input::placeholder{color:var(--send-faint)}verdocs-send .expires-field .suffix{position:absolute;right:10px;top:0;height:36px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;font-size:13px;color:var(--send-muted);pointer-events:none}verdocs-send .sender-field{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;row-gap:4px;margin:0 0 10px 0}verdocs-send .sender-field label{font-size:12px;font-weight:500;color:var(--send-ink-2)}verdocs-send .sender-field input{width:100%;height:36px;padding:0 10px;font-size:14px;font-family:inherit;color:var(--send-ink);background:#ffffff;border:1px solid var(--send-control-border);border-radius:6px;outline:none}verdocs-send .sender-field input:focus{border-color:var(--send-accent);-webkit-box-shadow:0 0 0 2px var(--send-accent-tint-2);box-shadow:0 0 0 2px var(--send-accent-tint-2)}verdocs-send .sender-field .field-error{font-size:12px;color:#cc0000}verdocs-send .notice{display:-ms-flexbox;display:flex;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;margin-top:4px;padding:10px 12px;font-size:12px;line-height:1.5;border-radius:6px;color:var(--send-ink-2);background:var(--send-accent-tint);border:1px solid var(--send-accent-tint-2)}verdocs-send .notice>.icon{-ms-flex:0 0 18px;flex:0 0 18px;width:18px;height:18px;margin-top:1px;color:var(--send-accent)}verdocs-send .notice>.icon svg{width:18px;height:18px;display:block}verdocs-send .warning{display:-ms-flexbox;display:flex;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px;margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.5;border-radius:6px;color:var(--send-warning-text);background:var(--send-warning-bg);border:1px solid var(--send-warning-border)}verdocs-send .warning>.icon{-ms-flex:0 0 18px;flex:0 0 18px;width:18px;height:18px;margin-top:1px;color:var(--send-warning-icon)}verdocs-send .warning>.icon svg{width:18px;height:18px;display:block}verdocs-send .warning a{color:var(--send-accent);font-weight:500;text-decoration:none;border-bottom:1px solid var(--send-accent-tint-2)}verdocs-send .warning a .icon,verdocs-send .warning a .icon svg{width:11px;height:11px;display:inline-block;vertical-align:-1px;margin-left:2px}verdocs-send verdocs-checkbox{display:block;padding:4px 0;font-size:13px}`;
130
130
 
131
131
  const chevronRightIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"/></svg>';
132
132
  const chevronLeftIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>';
@@ -291,15 +291,11 @@ const VerdocsSend = class {
291
291
  this.senderName = '';
292
292
  this.senderEmail = '';
293
293
  }
294
- // The sender_name defaults to the custom sender identity if configued/active, the brand
295
- // next, and then the org name.
296
- brandSenderName() {
297
- var _a;
298
- const brand = this.brandKey ? this.brands.find(b => b.key === this.brandKey) : this.getDefaultBrand();
299
- return (brand === null || brand === void 0 ? void 0 : brand.email_display_name) || (brand === null || brand === void 0 ? void 0 : brand.email_sender_name) || ((_a = this.organization) === null || _a === void 0 ? void 0 : _a.name) || '';
300
- }
294
+ // sender_name and sender_email are the contact for recipient questions and the completion
295
+ // notice. They default to the signed-in user and are only sent when edited away from that.
296
+ // The From line of the invitation email is the brand's (then the org's) and is not set here.
301
297
  effectiveSenderName() {
302
- return this.senderName || this.brandSenderName();
298
+ return this.senderName || this.senderDefaults.name;
303
299
  }
304
300
  effectiveSenderEmail() {
305
301
  return this.senderEmail || this.senderDefaults.email;
@@ -308,7 +304,7 @@ const VerdocsSend = class {
308
304
  const name = this.senderName.trim();
309
305
  const email = this.senderEmail.trim();
310
306
  return {
311
- sender_name: name && name !== this.brandSenderName() ? name : undefined,
307
+ sender_name: name && name !== this.senderDefaults.name ? name : undefined,
312
308
  sender_email: email && email !== this.senderDefaults.email ? email : undefined,
313
309
  };
314
310
  }
@@ -589,7 +585,7 @@ const VerdocsSend = class {
589
585
  return (h("div", { class: "detail" }, this.renderDetailHeader('Sender'), this.renderDetailBody([
590
586
  h("div", { class: "sender-field" }, h("label", { htmlFor: `${this.containerId}-sender-name` }, "Name"), h("input", { id: `${this.containerId}-sender-name`, type: "text", value: this.effectiveSenderName(), disabled: this.sending, onInput: (e) => (this.senderName = e.target.value) })),
591
587
  h("div", { class: "sender-field" }, h("label", { htmlFor: `${this.containerId}-sender-email` }, "Email"), h("input", { id: `${this.containerId}-sender-email`, type: "email", value: this.effectiveSenderEmail(), disabled: this.sending, onInput: (e) => (this.senderEmail = e.target.value) }), !validEmail && h("div", { class: "field-error" }, "Enter a valid email address.")),
592
- h("div", { class: "notice" }, h("span", { class: "icon", innerHTML: infoIcon }), h("div", null, "The name is what recipients see as the sender, for example \"Sentry <notifications@verdocs.com>\", and starts as your brand's name. The email is where status updates about this envelope are sent and what the certificate shows as the sender. Delivery from your own address needs a custom sender set up under Settings.")),
588
+ h("div", { class: "notice" }, h("span", { class: "icon", innerHTML: infoIcon }), h("div", null, "Specify where envelope-completed email notifications and \"Ask a Question\" submissions are delivered. To customize the \"From\" address for email notifications, please configure those in", ' ', h("a", { href: `${getWebAppUrl(this.endpoint)}/settings/brands`, target: "_blank", rel: "noopener" }, "Brands", h("span", { class: "icon", innerHTML: externalLinkIcon })), ' ', ".")),
593
589
  ]), this.renderDoneButton()));
594
590
  }
595
591
  renderNotificationsView() {
@@ -638,7 +634,7 @@ const VerdocsSend = class {
638
634
  const optionLabels = this.getRecipientOptionLabels(completed);
639
635
  return (h("button", { type: "button", class: "recipient", "data-ri": roleIndex, "data-rn": role.role_name, onClick: e => this.handleClickRole(e, role) }, h("span", { class: "role-dot", style: { backgroundColor: getRGBA(roleIndex) } }), h("span", { class: "who" }, h("span", { class: "role-name" }, role.role_name), assigned ? (h("span", { class: "who-detail" }, formatFullName(completed), " \u00B7 ", completed.email)) : (h("span", { class: "who-detail configure" }, "Configure recipient")), optionLabels.length > 0 && (h("span", { class: "options" }, optionLabels.map(label => (h("span", { class: "pill" }, label)))))), h("span", { class: "chevron", innerHTML: chevronRightIcon })));
640
636
  }),
641
- ])), h("div", { class: "section-title delivery-title" }, "Delivery"), h("div", { class: "delivery" }, h("button", { type: "button", class: "kv", onClick: () => this.showView('brand'), disabled: this.sending }, h("span", { class: "key" }, "Brand"), h("span", { class: "value" }, this.getSelectedBrandLabel()), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('expires'), disabled: this.sending }, h("span", { class: "key" }, "Expires"), h("span", { class: "value" }, this.effectiveExpiryDays(), " days ", h("small", null, "\u00B7 ", expiresShort)), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('sender'), disabled: this.sending }, h("span", { class: "key" }, "Sender"), h("span", { class: "value" }, this.effectiveSenderName() || this.effectiveSenderEmail(), this.effectiveSenderName() && this.effectiveSenderEmail() ? h("small", null, " \u00B7 ", this.effectiveSenderEmail()) : null), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('notifications'), disabled: this.sending }, h("span", { class: "key" }, "Notifications"), h("span", { class: { value: true, off: this.noContact } }, this.noContact ? 'Off' : 'On'), h("span", { class: "chevron", innerHTML: chevronRightIcon }))), h("div", { class: "main-spacer" }), h("div", { class: "buttons" }, hasDuplicateEmails && h("div", { class: "error-message" }, "Recipients cannot share the same email."), this.sending && h("verdocs-spinner", null), this.showCancel && h("verdocs-button", { label: "Cancel", size: "small", variant: "outline", onClick: e => this.handleCancel(e), disabled: this.sending }), h("verdocs-button", { label: "Send", size: "small", disabled: !allRolesAssigned || this.sending || hasDuplicateEmails, onClick: e => this.handleSend(e) }))), h("div", { class: "pane detail-pane", "aria-hidden": this.view === 'main' ? 'true' : 'false', onPointerDown: e => this.handleSwipeStart(e), onPointerUp: e => this.handleSwipeEnd(e), onPointerCancel: () => (this.swipeStart = null) }, this.renderDetail()))));
637
+ ])), h("div", { class: "section-title delivery-title" }, "Delivery"), h("div", { class: "delivery" }, h("button", { type: "button", class: "kv", onClick: () => this.showView('brand'), disabled: this.sending }, h("span", { class: "key" }, "Brand"), h("span", { class: "value" }, this.getSelectedBrandLabel()), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('expires'), disabled: this.sending }, h("span", { class: "key" }, "Expires"), h("span", { class: "value" }, this.effectiveExpiryDays(), " days ", h("small", null, "\u00B7 ", expiresShort)), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('sender'), disabled: this.sending }, h("span", { class: "key" }, "Sender"), h("span", { class: "value stacked" }, h("span", { class: "line" }, this.effectiveSenderName() || this.effectiveSenderEmail()), this.effectiveSenderName() && this.effectiveSenderEmail() ? h("small", { class: "line" }, this.effectiveSenderEmail()) : null), h("span", { class: "chevron", innerHTML: chevronRightIcon })), h("button", { type: "button", class: "kv", onClick: () => this.showView('notifications'), disabled: this.sending }, h("span", { class: "key" }, "Notifications"), h("span", { class: { value: true, off: this.noContact } }, this.noContact ? 'Off' : 'On'), h("span", { class: "chevron", innerHTML: chevronRightIcon }))), h("div", { class: "main-spacer" }), h("div", { class: "buttons" }, hasDuplicateEmails && h("div", { class: "error-message" }, "Recipients cannot share the same email."), this.sending && h("verdocs-spinner", null), this.showCancel && h("verdocs-button", { label: "Cancel", size: "small", variant: "outline", onClick: e => this.handleCancel(e), disabled: this.sending }), h("verdocs-button", { label: "Send", size: "small", disabled: !allRolesAssigned || this.sending || hasDuplicateEmails, onClick: e => this.handleSend(e) }))), h("div", { class: "pane detail-pane", "aria-hidden": this.view === 'main' ? 'true' : 'false', onPointerDown: e => this.handleSwipeStart(e), onPointerUp: e => this.handleSwipeEnd(e), onPointerCancel: () => (this.swipeStart = null) }, this.renderDetail()))));
642
638
  }
643
639
  get el() { return getElement(this); }
644
640
  static get watchers() { return {
@@ -921,7 +917,7 @@ const VerdocsTemplateBuildTabs = class {
921
917
  };
922
918
  VerdocsTemplateBuildTabs.style = verdocsTemplateBuildTabsCss();
923
919
 
924
- const verdocsTemplateFieldsCss = () => `verdocs-template-fields{font-family:var(--verdocs-primary-font, "Inter", "Barlow", sans-serif);position:relative;display:block;min-height:600px}verdocs-template-fields .page-0{padding:65px 15px 0 15px;-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields .page-0 .user-placed-fields{height:100px;position:relative;background:#ffffff;-webkit-box-shadow:0 0 10px 5px rgba(0, 0, 0, 0.0588235294);box-shadow:0 0 10px 5px rgba(0, 0, 0, 0.0588235294)}verdocs-template-fields .page-0 .user-placed-fields .title{top:0;left:0;color:#ffffff;font-size:12px;padding:3px 6px;font-weight:bold;position:absolute;background:#46497d}verdocs-template-fields .pages{display:-ms-flexbox;display:flex;padding:15px;row-gap:15px;min-height:200px;position:relative;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-direction:column;flex-direction:column}verdocs-template-fields .pages div,verdocs-template-fields .pages canvas{-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields .pages .document-separator{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 20px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#33364b;color:white;border-radius:6px;font-size:16px;font-weight:500;margin-top:20px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);box-shadow:0 2px 4px rgba(0, 0, 0, 0.1)}verdocs-template-fields .pages .document-separator svg{-ms-flex-negative:0;flex-shrink:0}verdocs-template-fields .pages .document-separator:first-child{margin-top:0}verdocs-template-fields #verdocs-template-fields-toolbar{width:100%;height:50px;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px;font-weight:700;padding:0 20px 0 0;-ms-flex-align:center;align-items:center;-ms-flex-direction:row;flex-direction:row;color:#f5f5fa;-ms-flex-pack:center;justify-content:center;background:#46497d}verdocs-template-fields #verdocs-template-fields-toolbar>verdocs-select-input{margin:0}verdocs-template-fields #verdocs-template-fields-toolbar svg{width:24px;height:24px}verdocs-template-fields #verdocs-template-fields-toolbar .add-for{margin:0;font-weight:500;color:#f5f5fa}verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{margin:0 20px 0 0}@media all and (max-width: 1000px){verdocs-template-fields #verdocs-template-fields-toolbar{-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;padding:0 10px 0 0}verdocs-template-fields #verdocs-template-fields-toolbar svg{-webkit-transform:scale(0.8);transform:scale(0.8)}verdocs-template-fields #verdocs-template-fields-toolbar .add-for,verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{display:none}}@media all and (max-width: 600px){verdocs-template-fields #verdocs-template-fields-toolbar{-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px}verdocs-template-fields #verdocs-template-fields-toolbar svg{-webkit-transform:scale(0.6);transform:scale(0.6)}verdocs-template-fields #verdocs-template-fields-toolbar .separator,verdocs-template-fields #verdocs-template-fields-toolbar .add-for,verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{display:none}}verdocs-template-fields.placing-attachment{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-checkbox{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-date{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-dropdown{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' stroke-width='1.5' stroke='currentColor'%3E%3Cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25' /%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-initial{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-payment{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-radio{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-signature{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-textarea{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-textbox{cursor:url("data:image/svg+xml,%3Csvg width='32' height='15' viewBox='0 0 32 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='path-1-inside-1_1401_24' fill='white'%3E%3Cpath d='M0 0H32V15H0V0Z'/%3E%3C/mask%3E%3Cpath d='M0 0H32V15H0V0Z' fill='%234C56CB' fill-opacity='0.1'/%3E%3Cpath d='M0 0V-1H-1V0H0ZM0 15H-1V16H0V15ZM0 1H32V-1H0V1ZM32 14H0V16H32V14ZM1 15V0H-1V15H1Z' fill='%234C56CB' mask='url(%23path-1-inside-1_1401_24)'/%3E%3Cpath d='M3 11.8V8.65H14.15V11.8H3ZM3 6.65V3.5H20.15V6.65H3Z' fill='%234C56CB'/%3E%3Cline x1='31.5' y1='1' x2='31.5' y2='14' stroke='%234C56CB' stroke-opacity='0.32' stroke-dasharray='1 1'/%3E%3C/svg%3E%0A") 0 14, pointer}verdocs-template-fields.placing-timestamp{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M9 1h6v2H9zm10.03 6.39 1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM13 14h-2V8h2v6z'%3E%3C/path%3E%3C/svg%3E") 16 16, pointer}`;
920
+ const verdocsTemplateFieldsCss = () => `verdocs-template-fields{font-family:var(--verdocs-primary-font, "Inter", "Barlow", sans-serif);position:relative;display:block;min-height:600px}verdocs-template-fields .verdocs-field-selected{outline:2px solid rgba(101, 77, 203, 0.75);outline-offset:1px}verdocs-template-fields .page-0{padding:65px 15px 0 15px;-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields .page-0 .user-placed-fields{height:100px;position:relative;background:#ffffff;-webkit-box-shadow:0 0 10px 5px rgba(0, 0, 0, 0.0588235294);box-shadow:0 0 10px 5px rgba(0, 0, 0, 0.0588235294)}verdocs-template-fields .page-0 .user-placed-fields .title{top:0;left:0;color:#ffffff;font-size:12px;padding:3px 6px;font-weight:bold;position:absolute;background:#46497d}verdocs-template-fields .pages{display:-ms-flexbox;display:flex;padding:15px;row-gap:15px;min-height:200px;position:relative;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-direction:column;flex-direction:column}verdocs-template-fields .pages div,verdocs-template-fields .pages canvas{-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields .pages .document-separator{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 20px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#33364b;color:white;border-radius:6px;font-size:16px;font-weight:500;margin-top:20px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);box-shadow:0 2px 4px rgba(0, 0, 0, 0.1)}verdocs-template-fields .pages .document-separator svg{-ms-flex-negative:0;flex-shrink:0}verdocs-template-fields .pages .document-separator:first-child{margin-top:0}verdocs-template-fields #verdocs-template-fields-toolbar{width:100%;height:50px;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px;font-weight:700;padding:0 20px 0 0;-ms-flex-align:center;align-items:center;-ms-flex-direction:row;flex-direction:row;color:#f5f5fa;-ms-flex-pack:center;justify-content:center;background:#46497d}verdocs-template-fields #verdocs-template-fields-toolbar>verdocs-select-input{margin:0}verdocs-template-fields #verdocs-template-fields-toolbar svg{width:24px;height:24px}verdocs-template-fields #verdocs-template-fields-toolbar .add-for{margin:0;font-weight:500;color:#f5f5fa}verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{margin:0 20px 0 0}@media all and (max-width: 1000px){verdocs-template-fields #verdocs-template-fields-toolbar{-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;padding:0 10px 0 0}verdocs-template-fields #verdocs-template-fields-toolbar svg{-webkit-transform:scale(0.8);transform:scale(0.8)}verdocs-template-fields #verdocs-template-fields-toolbar .add-for,verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{display:none}}@media all and (max-width: 600px){verdocs-template-fields #verdocs-template-fields-toolbar{-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px}verdocs-template-fields #verdocs-template-fields-toolbar svg{-webkit-transform:scale(0.6);transform:scale(0.6)}verdocs-template-fields #verdocs-template-fields-toolbar .separator,verdocs-template-fields #verdocs-template-fields-toolbar .add-for,verdocs-template-fields #verdocs-template-fields-toolbar verdocs-select-input{display:none}}verdocs-template-fields.placing-attachment{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-checkbox{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-date{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-dropdown{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' stroke-width='1.5' stroke='currentColor'%3E%3Cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25' /%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-initial{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-payment{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-radio{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-signature{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-textarea{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z'/%3E%3C/svg%3E") 16 16, pointer}verdocs-template-fields.placing-textbox{cursor:url("data:image/svg+xml,%3Csvg width='32' height='15' viewBox='0 0 32 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='path-1-inside-1_1401_24' fill='white'%3E%3Cpath d='M0 0H32V15H0V0Z'/%3E%3C/mask%3E%3Cpath d='M0 0H32V15H0V0Z' fill='%234C56CB' fill-opacity='0.1'/%3E%3Cpath d='M0 0V-1H-1V0H0ZM0 15H-1V16H0V15ZM0 1H32V-1H0V1ZM32 14H0V16H32V14ZM1 15V0H-1V15H1Z' fill='%234C56CB' mask='url(%23path-1-inside-1_1401_24)'/%3E%3Cpath d='M3 11.8V8.65H14.15V11.8H3ZM3 6.65V3.5H20.15V6.65H3Z' fill='%234C56CB'/%3E%3Cline x1='31.5' y1='1' x2='31.5' y2='14' stroke='%234C56CB' stroke-opacity='0.32' stroke-dasharray='1 1'/%3E%3C/svg%3E%0A") 0 14, pointer}verdocs-template-fields.placing-timestamp{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M9 1h6v2H9zm10.03 6.39 1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM13 14h-2V8h2v6z'%3E%3C/path%3E%3C/svg%3E") 16 16, pointer}`;
925
921
 
926
922
  const iconTextbox = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M3.425 16.15V13h11.15v3.15Zm0-5.15V7.85h17.15V11Z"/></svg>';
927
923
  const iconCheck = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z"/></svg>';
@@ -934,6 +930,11 @@ const iconInitial = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="
934
930
  const iconDropdown = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" stroke-width="1.5" stroke="currentColor"><path stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" d="M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25" /></svg>';
935
931
  const iconAttachment = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6"><path stroke-linecap="round" stroke-linejoin="round" d="m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13" /></svg>';
936
932
  const separator = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.707 14.707"><g><rect x="6.275" y="0" fill="#ffffff7f" width="1" height="15"/></g></svg>';
933
+ const GEOMETRY_KEYS = ['x', 'y', 'width', 'height', 'page', 'multiline'];
934
+ // We save a burst of arrow-key nudges once the keys go quiet instead of on every press.
935
+ const NUDGE_SAVE_DELAY_MS = 400;
936
+ const MAX_UNDO = 50;
937
+ const isTypingTarget = (el) => !!el && (['INPUT', 'TEXTAREA', 'SELECT'].includes(el.tagName) || el.isContentEditable);
937
938
  const menuOptions = [
938
939
  { id: 'signature', tooltip: 'Signature', icon: iconSignature, class: 'signature' },
939
940
  { id: 'initial', tooltip: 'Initials', icon: iconInitial, class: 'initial' },
@@ -979,24 +980,91 @@ const VerdocsTemplateFields = class {
979
980
  this.loading = true;
980
981
  this.template = null;
981
982
  this.pageHeights = {};
983
+ // Selection lives on the DOM (a class on the field element) so picking a field doesn't re-render every page.
984
+ this.selectedFieldName = null;
985
+ // Undo entries are recorded only once their save lands, so the stack never holds a change the server didn't take.
986
+ this.undoStack = [];
987
+ this.pendingNudge = null;
988
+ this.nudgeTimer = null;
989
+ this.dragBefore = null;
990
+ // Geometry we've sent but the server hasn't confirmed yet, so a new nudge or undo starts from where the field is drawn.
991
+ this.optimistic = new Map();
992
+ this.inFlight = new Set();
993
+ // Field components save their own resizes and announce them with settingsChanged; undo waits for that.
994
+ this.pendingResizes = new Map();
995
+ // Stable references so makeDraggable can re-bind them on every render without stacking duplicates.
996
+ this.handleFieldTap = (e) => { var _a, _b; return this.selectField(((_b = (_a = e.currentTarget) === null || _a === void 0 ? void 0 : _a.getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, 'fieldname')) || null); };
997
+ this.handleFieldResizeStart = (e) => {
998
+ var _a, _b;
999
+ const name = ((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, 'fieldname')) || null;
1000
+ this.flushNudge();
1001
+ this.selectField(name);
1002
+ this.startResize(name);
1003
+ };
982
1004
  this.cachedPageInfo = {};
983
1005
  }
984
1006
  onTemplateIdChanged() {
985
1007
  this.listenToTemplate();
986
1008
  }
987
- // Stop field-placement mode if ESC is pressed
1009
+ // Escape clears placement and selection, arrows nudge the selected field (Shift for 10pt), and Cmd/Ctrl+Z undoes a move or resize.
988
1010
  handleKeyDown(ev) {
1011
+ var _a, _b;
989
1012
  if (ev.key === 'Escape') {
990
1013
  this.placing = null;
1014
+ this.selectField(null);
1015
+ return;
991
1016
  }
1017
+ // composedPath reaches inputs inside a host page's shadow DOM, where activeElement would only show the host.
1018
+ const target = (((_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) || ev.target);
1019
+ if (ev.defaultPrevented || isTypingTarget(target)) {
1020
+ return;
1021
+ }
1022
+ // Keys pressed in a dialog, menu, or anything else outside the builder belong to that control.
1023
+ if (target !== document.body && target !== document.documentElement && !this.el.contains(target)) {
1024
+ return;
1025
+ }
1026
+ if ((ev.metaKey || ev.ctrlKey) && !ev.shiftKey && !ev.altKey && ev.key.toLowerCase() === 'z') {
1027
+ if (this.pendingNudge || this.undoStack.length > 0 || this.inFlight.size > 0 || this.pendingResizes.size > 0) {
1028
+ ev.preventDefault();
1029
+ this.undo();
1030
+ }
1031
+ return;
1032
+ }
1033
+ const step = ev.shiftKey ? 10 : 1;
1034
+ const delta = { ArrowLeft: [-step, 0], ArrowRight: [step, 0], ArrowUp: [0, step], ArrowDown: [0, -step] }[ev.key];
1035
+ if (!delta || !this.selectedFieldName || ev.metaKey || ev.ctrlKey || ev.altKey) {
1036
+ return;
1037
+ }
1038
+ // Once the selected field has scrolled out of view, arrows go back to scrolling the page.
1039
+ const field = this.findField(this.selectedFieldName);
1040
+ const rect = field ? (_b = document.getElementById(getFieldId(field))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect() : null;
1041
+ if (!rect || rect.bottom < 0 || rect.top > window.innerHeight || rect.right < 0 || rect.left > window.innerWidth) {
1042
+ this.selectField(null);
1043
+ return;
1044
+ }
1045
+ ev.preventDefault();
1046
+ this.nudge(delta[0], delta[1]);
992
1047
  }
993
- handleFieldSettingsChanged() {
1048
+ handleFieldSettingsChanged(e) {
994
1049
  var _a;
1050
+ const { fieldName, field } = e.detail || {};
1051
+ if (field && fieldName && field.name !== fieldName) {
1052
+ this.renameFieldState(fieldName, field.name);
1053
+ }
1054
+ const resize = field ? this.pendingResizes.get(field.name) : null;
1055
+ if (resize) {
1056
+ this.recordUndo(field.name, resize.before, field);
1057
+ resize.settle();
1058
+ }
995
1059
  (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: this.template, event: 'updated-field' });
996
1060
  }
997
- handleFieldDeleted() {
998
- var _a;
999
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: this.template, event: 'deleted-field' });
1061
+ handleFieldDeleted(e) {
1062
+ var _a, _b;
1063
+ const name = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.fieldName;
1064
+ if (name) {
1065
+ this.forgetField(name);
1066
+ }
1067
+ (_b = this.templateUpdated) === null || _b === void 0 ? void 0 : _b.emit({ endpoint: this.endpoint, template: this.template, event: 'deleted-field' });
1000
1068
  }
1001
1069
  async componentWillLoad() {
1002
1070
  var _a, _b, _c;
@@ -1032,6 +1100,7 @@ const VerdocsTemplateFields = class {
1032
1100
  toolbarEl.remove();
1033
1101
  toolbarTarget.append(toolbarEl);
1034
1102
  }
1103
+ this.applySelection();
1035
1104
  }
1036
1105
  componentWillUpdate() {
1037
1106
  var _a, _b;
@@ -1044,6 +1113,8 @@ const VerdocsTemplateFields = class {
1044
1113
  }
1045
1114
  disconnectedCallback() {
1046
1115
  this.unlistenToTemplate();
1116
+ this.flushNudge();
1117
+ this.selectField(null);
1047
1118
  }
1048
1119
  async listenToTemplate() {
1049
1120
  this.unlistenToTemplate();
@@ -1089,13 +1160,196 @@ const VerdocsTemplateFields = class {
1089
1160
  });
1090
1161
  }
1091
1162
  makeDraggable(el) {
1092
- interact(el).draggable({
1163
+ interact(el)
1164
+ .draggable({
1093
1165
  listeners: {
1166
+ start: this.handleMoveStart.bind(this),
1094
1167
  move: this.handleMoveField.bind(this),
1095
1168
  end: this.handleMoveEnd.bind(this),
1096
1169
  },
1170
+ })
1171
+ .off('tap', this.handleFieldTap)
1172
+ .on('tap', this.handleFieldTap)
1173
+ .off('resizestart', this.handleFieldResizeStart)
1174
+ .on('resizestart', this.handleFieldResizeStart);
1175
+ }
1176
+ findField(name) {
1177
+ var _a;
1178
+ return name ? (((_a = this.template) === null || _a === void 0 ? void 0 : _a.fields) || []).find(field => field.name === name) : undefined;
1179
+ }
1180
+ // Where the field is drawn right now: its saved geometry plus anything still on its way to the server.
1181
+ currentGeometry(field) {
1182
+ const { x, y, width, height, page, multiline } = { ...field, ...this.optimistic.get(field.name) };
1183
+ return { x, y, width, height, page, multiline };
1184
+ }
1185
+ selectField(name) {
1186
+ if (this.pendingNudge && this.pendingNudge.name !== name) {
1187
+ this.flushNudge();
1188
+ }
1189
+ this.selectedFieldName = name;
1190
+ this.applySelection();
1191
+ }
1192
+ applySelection() {
1193
+ var _a;
1194
+ document.querySelectorAll('.verdocs-field-selected').forEach(el => el.classList.remove('verdocs-field-selected'));
1195
+ const field = this.findField(this.selectedFieldName);
1196
+ if (field) {
1197
+ (_a = document.getElementById(getFieldId(field))) === null || _a === void 0 ? void 0 : _a.classList.add('verdocs-field-selected');
1198
+ }
1199
+ }
1200
+ recordUndo(name, before, after) {
1201
+ if (GEOMETRY_KEYS.some(key => after[key] !== undefined && after[key] !== before[key])) {
1202
+ this.undoStack.push({ name, before });
1203
+ this.undoStack.splice(0, Math.max(0, this.undoStack.length - MAX_UNDO));
1204
+ }
1205
+ }
1206
+ startResize(name) {
1207
+ var _a;
1208
+ const field = this.findField(name);
1209
+ if (!field) {
1210
+ return;
1211
+ }
1212
+ (_a = this.pendingResizes.get(field.name)) === null || _a === void 0 ? void 0 : _a.settle();
1213
+ let settle;
1214
+ const done = new Promise(resolve => (settle = resolve));
1215
+ const entry = { before: this.currentGeometry(field), settle: () => settle(), done };
1216
+ this.pendingResizes.set(field.name, entry);
1217
+ // A failed resize never announces itself, so stop waiting on it after a while.
1218
+ const timer = setTimeout(() => entry.settle(), 5000);
1219
+ done.then(() => {
1220
+ clearTimeout(timer);
1221
+ if (this.pendingResizes.get(field.name) === entry) {
1222
+ this.pendingResizes.delete(field.name);
1223
+ }
1097
1224
  });
1098
1225
  }
1226
+ renameFieldState(oldName, newName) {
1227
+ this.undoStack.forEach(entry => entry.name === oldName && (entry.name = newName));
1228
+ if (this.selectedFieldName === oldName) {
1229
+ this.selectedFieldName = newName;
1230
+ }
1231
+ }
1232
+ forgetField(name) {
1233
+ var _a, _b;
1234
+ this.undoStack = this.undoStack.filter(entry => entry.name !== name);
1235
+ this.optimistic.delete(name);
1236
+ (_a = this.pendingResizes.get(name)) === null || _a === void 0 ? void 0 : _a.settle();
1237
+ if (((_b = this.pendingNudge) === null || _b === void 0 ? void 0 : _b.name) === name) {
1238
+ clearTimeout(this.nudgeTimer);
1239
+ this.nudgeTimer = null;
1240
+ this.pendingNudge = null;
1241
+ }
1242
+ if (this.selectedFieldName === name) {
1243
+ this.selectField(null);
1244
+ }
1245
+ }
1246
+ drawField(field, geometry = {}) {
1247
+ var _a, _b;
1248
+ const pageInfo = (_a = this.cachedPageInfo[field.document_id]) === null || _a === void 0 ? void 0 : _a[(_b = geometry.page) !== null && _b !== void 0 ? _b : field.page];
1249
+ const el = document.getElementById(getFieldId(field));
1250
+ if (el && pageInfo) {
1251
+ setControlStyles(el, { ...field, ...geometry }, pageInfo.xScale, pageInfo.yScale);
1252
+ }
1253
+ }
1254
+ nudge(dx, dy) {
1255
+ var _a, _b, _c, _d, _e;
1256
+ const field = this.findField(this.selectedFieldName);
1257
+ if (!field || !document.getElementById(getFieldId(field)) || !((_a = this.cachedPageInfo[field.document_id]) === null || _a === void 0 ? void 0 : _a[field.page])) {
1258
+ return;
1259
+ }
1260
+ if (((_b = this.pendingNudge) === null || _b === void 0 ? void 0 : _b.name) !== field.name) {
1261
+ this.flushNudge();
1262
+ const before = this.currentGeometry(field);
1263
+ this.pendingNudge = { name: field.name, before, x: before.x, y: before.y };
1264
+ }
1265
+ // Keep the whole field on the page, measured in PDF points.
1266
+ const pageSize = (_e = (_d = (((_c = this.template) === null || _c === void 0 ? void 0 : _c.documents) || []).find(doc => doc.id === field.document_id)) === null || _d === void 0 ? void 0 : _d.page_sizes) === null || _e === void 0 ? void 0 : _e[field.page];
1267
+ const maxX = ((pageSize === null || pageSize === void 0 ? void 0 : pageSize.width) || 612) - (field.width || defaultWidth(field.type));
1268
+ const maxY = ((pageSize === null || pageSize === void 0 ? void 0 : pageSize.height) || 792) - (field.height || defaultHeight(field.type));
1269
+ this.pendingNudge.x = Math.min(Math.max(this.pendingNudge.x + dx, 0), maxX);
1270
+ this.pendingNudge.y = Math.min(Math.max(this.pendingNudge.y + dy, 0), maxY);
1271
+ this.drawField(field, { x: this.pendingNudge.x, y: this.pendingNudge.y });
1272
+ if (this.nudgeTimer) {
1273
+ clearTimeout(this.nudgeTimer);
1274
+ }
1275
+ this.nudgeTimer = setTimeout(() => this.flushNudge(), NUDGE_SAVE_DELAY_MS);
1276
+ }
1277
+ async flushNudge() {
1278
+ if (this.nudgeTimer) {
1279
+ clearTimeout(this.nudgeTimer);
1280
+ this.nudgeTimer = null;
1281
+ }
1282
+ const pending = this.pendingNudge;
1283
+ this.pendingNudge = null;
1284
+ if (pending) {
1285
+ await this.saveGeometry(pending.name, { x: pending.x, y: pending.y }, pending.before);
1286
+ }
1287
+ }
1288
+ async undo() {
1289
+ await this.flushNudge();
1290
+ await Promise.all([...this.inFlight, ...[...this.pendingResizes.values()].map(resize => resize.done)]);
1291
+ while (this.undoStack.length > 0) {
1292
+ const { name, before } = this.undoStack.pop();
1293
+ const field = this.findField(name);
1294
+ if (field && GEOMETRY_KEYS.some(key => field[key] !== before[key])) {
1295
+ this.selectField(name);
1296
+ await this.saveGeometry(name, before);
1297
+ return;
1298
+ }
1299
+ }
1300
+ }
1301
+ // Saves a move, nudge, or undo, drawing the field at its new spot right away. Pass `before` to make it undoable.
1302
+ saveGeometry(name, geometry, before) {
1303
+ const field = this.findField(name);
1304
+ if (!field) {
1305
+ return Promise.resolve();
1306
+ }
1307
+ const sent = { ...geometry };
1308
+ this.optimistic.set(name, sent);
1309
+ this.drawField(field, geometry);
1310
+ const save = (async () => {
1311
+ var _a, _b, _c, _d, _e, _f;
1312
+ try {
1313
+ const updatedField = await updateField(this.endpoint, this.templateId, name, geometry);
1314
+ const newTemplate = JSON.parse(JSON.stringify(this.template));
1315
+ const fieldIndex = newTemplate.fields.findIndex(field => field.name === name);
1316
+ if (fieldIndex > -1) {
1317
+ newTemplate.fields[fieldIndex] = updatedField;
1318
+ }
1319
+ Store.updateTemplate(this.templateId, newTemplate);
1320
+ this.drawField(updatedField);
1321
+ if (before) {
1322
+ this.recordUndo(name, before, updatedField);
1323
+ }
1324
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: newTemplate, event: 'updated-field' });
1325
+ }
1326
+ catch (e) {
1327
+ console.log('[FIELDS] Error saving field position', e);
1328
+ VerdocsToast(((_c = (_b = e.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) || 'Unable to move the field. Please try again.', { style: 'error' });
1329
+ (_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new SDKError(e.message, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status, (_f = e.response) === null || _f === void 0 ? void 0 : _f.data));
1330
+ // Put it back where the server still has it.
1331
+ const saved = this.findField(name);
1332
+ if (saved) {
1333
+ this.drawField(saved);
1334
+ }
1335
+ }
1336
+ finally {
1337
+ if (this.optimistic.get(name) === sent) {
1338
+ this.optimistic.delete(name);
1339
+ }
1340
+ }
1341
+ })();
1342
+ this.inFlight.add(save);
1343
+ save.finally(() => this.inFlight.delete(save));
1344
+ return save;
1345
+ }
1346
+ handleMoveStart(event) {
1347
+ const name = event.target.getAttribute('fieldname');
1348
+ this.flushNudge();
1349
+ this.selectField(name);
1350
+ const field = this.findField(name);
1351
+ this.dragBefore = field ? { name, before: this.currentGeometry(field) } : null;
1352
+ }
1099
1353
  async handleMoveField(event) {
1100
1354
  const oldX = +(event.target.getAttribute('posX') || 0);
1101
1355
  const oldY = +(event.target.getAttribute('posY') || 0);
@@ -1108,7 +1362,7 @@ const VerdocsTemplateFields = class {
1108
1362
  updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
1109
1363
  }
1110
1364
  async handleMoveEnd(event) {
1111
- var _a, _b, _c, _d, _e, _f, _g, _h;
1365
+ var _a, _b, _c, _d, _e;
1112
1366
  const name = event.target.getAttribute('fieldname');
1113
1367
  const field = (((_a = this.template) === null || _a === void 0 ? void 0 : _a.fields) || []).find(field => field.name === name);
1114
1368
  if (!field) {
@@ -1141,31 +1395,12 @@ const VerdocsTemplateFields = class {
1141
1395
  console.log('[FIELDS] Next page', { newPageNumber, newY, renderedHeight });
1142
1396
  }
1143
1397
  const { x, y } = this.viewCoordinatesToPageCoordinates(newX, newY, documentId, pageNumber, naturalWidth - width, naturalHeight - height);
1144
- try {
1145
- const params = { x, y, page: newPageNumber };
1146
- const updatedField = await updateField(this.endpoint, this.templateId, name, params);
1147
- console.log('[FIELDS] Updated', updatedField);
1148
- const newTemplate = JSON.parse(JSON.stringify(this.template));
1149
- const fieldIndex = newTemplate.fields.findIndex(field => field.name === name);
1150
- if (fieldIndex > -1) {
1151
- newTemplate.fields[fieldIndex] = updatedField;
1152
- }
1153
- Store.updateTemplate(this.templateId, newTemplate);
1154
- event.target.removeAttribute('posX');
1155
- event.target.removeAttribute('posY');
1156
- removeCssTransform(event.target);
1157
- const { xScale = 1, yScale = 1 } = this.cachedPageInfo[documentId][pageNumber];
1158
- setControlStyles(event.target, updatedField, xScale, yScale);
1159
- (_e = this.templateUpdated) === null || _e === void 0 ? void 0 : _e.emit({ endpoint: this.endpoint, template: newTemplate, event: 'updated-field' });
1160
- }
1161
- catch (e) {
1162
- VerdocsToast('Error updating field, please try again later', { style: 'error' });
1163
- console.log('[FIELDS] Error updating field', e);
1164
- (_f = this.sdkError) === null || _f === void 0 ? void 0 : _f.emit(new SDKError(e.message, (_g = e.response) === null || _g === void 0 ? void 0 : _g.status, (_h = e.response) === null || _h === void 0 ? void 0 : _h.data));
1165
- event.target.removeAttribute('posX');
1166
- event.target.removeAttribute('posY');
1167
- removeCssTransform(event.target);
1168
- }
1398
+ event.target.removeAttribute('posX');
1399
+ event.target.removeAttribute('posY');
1400
+ removeCssTransform(event.target);
1401
+ const before = ((_e = this.dragBefore) === null || _e === void 0 ? void 0 : _e.name) === name ? this.dragBefore.before : undefined;
1402
+ this.dragBefore = null;
1403
+ await this.saveGeometry(name, { x, y, page: newPageNumber }, before);
1169
1404
  }
1170
1405
  generateFieldName(type, pageNumber) {
1171
1406
  var _a;
@@ -1180,12 +1415,17 @@ const VerdocsTemplateFields = class {
1180
1415
  // Scale the X,Y clicks to the virtual page dimensions. Also ensure the field doesn't go off the page.
1181
1416
  viewCoordinatesToPageCoordinates(viewX, viewY, documentId, pageNumber, xMax, yMax) {
1182
1417
  const { xScale = 1, yScale = 1, renderedHeight = 792 } = this.cachedPageInfo[documentId][pageNumber];
1183
- const x = Math.floor(Math.min(viewX / xScale, xMax));
1184
- const y = Math.floor(Math.min(Math.max(renderedHeight - viewY, 0) / yScale, yMax));
1418
+ // Round rather than floor: PDF y counts up from the bottom, so flooring would pull every drop down and to the left.
1419
+ const x = Math.round(Math.min(viewX / xScale, xMax));
1420
+ const y = Math.round(Math.min(Math.max(renderedHeight - viewY, 0) / yScale, yMax));
1185
1421
  return { x, y };
1186
1422
  }
1187
1423
  async handleClickPage(e, documentId, pageNumber) {
1188
- var _a;
1424
+ var _a, _b, _c;
1425
+ // Clicks on a field select it through interact's tap, so only a click on the bare page clears the selection.
1426
+ if (!this.placing && !((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.closest) === null || _b === void 0 ? void 0 : _b.call(_a, '.verdocs-field'))) {
1427
+ this.selectField(null);
1428
+ }
1189
1429
  if (this.placing) {
1190
1430
  // console.log('Placing field', {documentId, pageNumber});
1191
1431
  const clickedX = e.offsetX;
@@ -1224,7 +1464,7 @@ const VerdocsTemplateFields = class {
1224
1464
  const newTemplate = JSON.parse(JSON.stringify(this.template));
1225
1465
  newTemplate.fields.push(newField);
1226
1466
  Store.updateTemplate(this.templateId, newTemplate);
1227
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: newTemplate, event: 'added-field' });
1467
+ (_c = this.templateUpdated) === null || _c === void 0 ? void 0 : _c.emit({ endpoint: this.endpoint, template: newTemplate, event: 'added-field' });
1228
1468
  this.placing = null;
1229
1469
  }
1230
1470
  }
@@ -1262,6 +1502,7 @@ const VerdocsTemplateFields = class {
1262
1502
  });
1263
1503
  })), this.showMustSelectRole && (h("verdocs-ok-dialog", { heading: "Unable to add field", message: (((_c = this.template) === null || _c === void 0 ? void 0 : _c.roles) || []).length > 0 ? 'Please select a role before adding fields.' : 'Please add at least one role before adding fields.', onNext: () => (this.showMustSelectRole = false) }))));
1264
1504
  }
1505
+ get el() { return getElement(this); }
1265
1506
  static get watchers() { return {
1266
1507
  "templateId": [{
1267
1508
  "onTemplateIdChanged": 0