legalesign-document-viewer 1.0.13 → 1.0.15

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 (272) hide show
  1. package/dist/cjs/{defaultFieldLabels-BUxtUsF1.js → defaultFieldLabels-BKohZ5DW.js} +3 -3
  2. package/dist/{esm/defaultFieldLabels-GlbzVGpj.js.map → cjs/defaultFieldLabels-BKohZ5DW.js.map} +1 -1
  3. package/dist/cjs/{editorUtils-Bej3Frit.js → editorUtils-CA5HbWrj.js} +3 -3
  4. package/dist/cjs/{editorUtils-Bej3Frit.js.map → editorUtils-CA5HbWrj.js.map} +1 -1
  5. package/dist/cjs/{i18n-CO9DdQsL.js → i18n-DZs4FndR.js} +483 -39
  6. package/dist/cjs/{i18n-CO9DdQsL.js.map → i18n-DZs4FndR.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/{ls-add-new-button_20.cjs.entry.js → ls-add-new-button_21.cjs.entry.js} +68 -24
  9. package/dist/cjs/ls-assignee-select_21.cjs.entry.js +15 -14
  10. package/dist/cjs/ls-compose-loader_7.cjs.entry.js +10 -10
  11. package/dist/cjs/ls-compose-manager.cjs.entry.js +1 -1
  12. package/dist/cjs/ls-document-viewer.cjs.entry.js +23 -39
  13. package/dist/cjs/ls-document-viewer.cjs.js +1 -1
  14. package/dist/cjs/ls-field-alignment_3.cjs.entry.js +4 -4
  15. package/dist/cjs/ls-field-format_2.cjs.entry.js +11 -11
  16. package/dist/cjs/ls-field-type-display.cjs.entry.js +4 -4
  17. package/dist/cjs/ls-helper-bar_2.cjs.entry.js +3 -3
  18. package/dist/cjs/ls-title-input.cjs.entry.js +1 -1
  19. package/dist/cjs/ls-toolbox-field.cjs.entry.js +3 -3
  20. package/dist/cjs/{mouseHandlers-Cc9PovyB.js → mouseHandlers-BdaPuPMr.js} +4 -4
  21. package/dist/cjs/{mouseHandlers-Cc9PovyB.js.map → mouseHandlers-BdaPuPMr.js.map} +1 -1
  22. package/dist/collection/collection-manifest.json +1 -0
  23. package/dist/collection/components/ls-document-viewer/defaultFieldLabels.js +1 -1
  24. package/dist/collection/components/ls-document-viewer/defaultFieldLabels.js.map +1 -1
  25. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +20 -36
  26. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
  27. package/dist/collection/components/ls-field-properties/ls-field-properties.js +3 -1
  28. package/dist/collection/components/ls-field-properties/ls-field-properties.js.map +1 -1
  29. package/dist/collection/components/ls-field-properties-advanced/ls-field-properties-advanced.js +9 -23
  30. package/dist/collection/components/ls-field-properties-advanced/ls-field-properties-advanced.js.map +1 -1
  31. package/dist/collection/components/ls-field-properties-multiple/ls-field-properties-multiple.js +1 -1
  32. package/dist/collection/components/ls-field-properties-multiple/ls-field-properties-multiple.js.map +1 -1
  33. package/dist/collection/components/ls-field-properties-number/ls-field-properties-number.js +1 -1
  34. package/dist/collection/components/ls-field-properties-regex/ls-field-properties-regex.css +301 -0
  35. package/dist/collection/components/ls-field-properties-regex/ls-field-properties-regex.js +180 -0
  36. package/dist/collection/components/ls-field-properties-regex/ls-field-properties-regex.js.map +1 -0
  37. package/dist/collection/components/ls-field-properties-signature/ls-field-properties-signature.js +1 -1
  38. package/dist/collection/components/ls-field-properties-signature/ls-field-properties-signature.js.map +1 -1
  39. package/dist/collection/components/ls-field-properties-text/ls-field-properties-text.js +1 -1
  40. package/dist/collection/components/ls-field-size/ls-field-size.js +1 -1
  41. package/dist/collection/components/ls-field-type-display/ls-field-type-display.js +3 -3
  42. package/dist/collection/components/ls-field-type-select/ls-field-type-select.js +4 -4
  43. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js +1 -1
  44. package/dist/collection/components/ls-input-wrapper/ls-input-wrapper.js +1 -1
  45. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.js +1 -1
  46. package/dist/collection/components/ls-participant-card/ls-participant-card.js +4 -0
  47. package/dist/collection/components/ls-participant-card/ls-participant-card.js.map +1 -1
  48. package/dist/collection/components/ls-participant-manager/ls-participant-manager.js +3 -3
  49. package/dist/collection/components/ls-participant-select/ls-participant-select.js +10 -10
  50. package/dist/collection/components/ls-props-section/ls-props-section.js +1 -1
  51. package/dist/collection/components/ls-recipient-card/ls-recipient-card.js +5 -5
  52. package/dist/collection/components/ls-recipient-manager/ls-recipient-manager.js +1 -1
  53. package/dist/collection/components/ls-statusbar/ls-statusbar.js +8 -8
  54. package/dist/collection/components/ls-title-input/ls-title-input.js +1 -1
  55. package/dist/collection/components/ls-toggle/ls-toggle.js +2 -2
  56. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js +3 -3
  57. package/dist/collection/components/ls-validation-manager/ls-validation-manager.js +2 -2
  58. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js +2 -2
  59. package/dist/components/ls-assignee-select.js +1 -1
  60. package/dist/components/ls-compose-manager.js +1 -1
  61. package/dist/components/ls-document-options.js +1 -1
  62. package/dist/components/ls-document-viewer.js +102 -112
  63. package/dist/components/ls-document-viewer.js.map +1 -1
  64. package/dist/components/ls-editor-field.js +1 -1
  65. package/dist/components/ls-feature-column.js +1 -1
  66. package/dist/components/ls-field-alignment.js +1 -1
  67. package/dist/components/ls-field-content.js +1 -1
  68. package/dist/components/ls-field-dimensions.js +1 -1
  69. package/dist/components/ls-field-distribute.js +1 -1
  70. package/dist/components/ls-field-footer.js +1 -1
  71. package/dist/components/ls-field-format.js +1 -1
  72. package/dist/components/ls-field-placement.js +1 -1
  73. package/dist/components/ls-field-properties-advanced.js +1 -1
  74. package/dist/components/ls-field-properties-autosign.js +1 -1
  75. package/dist/components/ls-field-properties-checkbox.js +1 -1
  76. package/dist/components/ls-field-properties-container.js +1 -1
  77. package/dist/components/ls-field-properties-date.js +1 -1
  78. package/dist/components/ls-field-properties-dropdown.js +12 -12
  79. package/dist/components/ls-field-properties-email.js +1 -1
  80. package/dist/components/ls-field-properties-file.js +1 -1
  81. package/dist/components/ls-field-properties-general.js +1 -1
  82. package/dist/components/ls-field-properties-multiple.js +1 -1
  83. package/dist/components/ls-field-properties-number.js +1 -1
  84. package/dist/components/ls-field-properties-regex.d.ts +11 -0
  85. package/dist/components/ls-field-properties-regex.js +9 -0
  86. package/dist/components/ls-field-properties-regex.js.map +1 -0
  87. package/dist/components/ls-field-properties-signature.js +1 -1
  88. package/dist/components/ls-field-properties-text.js +1 -1
  89. package/dist/components/ls-field-properties.js +1 -1
  90. package/dist/components/ls-field-size.js +1 -1
  91. package/dist/components/ls-field-type-display.js +4 -4
  92. package/dist/components/ls-field-type-select.js +1 -1
  93. package/dist/components/ls-helper-bar.js +1 -1
  94. package/dist/components/ls-input-wrapper.js +1 -1
  95. package/dist/components/ls-keyboard-shortcuts.js +1 -1
  96. package/dist/components/ls-left-bar.js +1 -1
  97. package/dist/components/ls-participant-card.js +1 -1
  98. package/dist/components/ls-participant-manager.js +1 -1
  99. package/dist/components/ls-participant-select.js +1 -1
  100. package/dist/components/ls-props-section.js +1 -1
  101. package/dist/components/ls-recipient-card.js +1 -1
  102. package/dist/components/ls-recipient-manager.js +1 -1
  103. package/dist/components/ls-select-menu.js +1 -1
  104. package/dist/components/ls-statusbar.js +1 -1
  105. package/dist/components/ls-title-input.js +1 -1
  106. package/dist/components/ls-toggle.js +1 -1
  107. package/dist/components/ls-toolbar.js +1 -1
  108. package/dist/components/ls-toolbox-field.js +1 -1
  109. package/dist/components/ls-validation-manager.js +1 -1
  110. package/dist/components/ls-validation-tag.js +1 -1
  111. package/dist/components/{p-BmpejMo_.js → p-60kgekmt.js} +14 -14
  112. package/dist/components/{p-BmpejMo_.js.map → p-60kgekmt.js.map} +1 -1
  113. package/dist/components/{p-DmB0JIWj.js → p-Ab2eo4Ko.js} +8 -4
  114. package/dist/components/p-Ab2eo4Ko.js.map +1 -0
  115. package/dist/components/{p-CyV8nu-T.js → p-B0BPkRk9.js} +71 -65
  116. package/dist/components/p-B0BPkRk9.js.map +1 -0
  117. package/dist/components/{p-BDD6zFgO.js → p-B2qe4IkH.js} +14 -14
  118. package/dist/components/{p-BDD6zFgO.js.map → p-B2qe4IkH.js.map} +1 -1
  119. package/dist/components/{p-C2JalniE.js → p-B5lJU9KU.js} +4 -4
  120. package/dist/components/{p-C2JalniE.js.map → p-B5lJU9KU.js.map} +1 -1
  121. package/dist/components/{p-RceAr_AQ.js → p-BDYqYoIy.js} +3 -3
  122. package/dist/components/{p-RceAr_AQ.js.map → p-BDYqYoIy.js.map} +1 -1
  123. package/dist/components/{p-DpA4TE1Q.js → p-BEQj5_wz.js} +14 -14
  124. package/dist/components/{p-DpA4TE1Q.js.map → p-BEQj5_wz.js.map} +1 -1
  125. package/dist/components/{p-CyHkY6Ep.js → p-BHt-_hqQ.js} +3 -3
  126. package/dist/components/{p-CyHkY6Ep.js.map → p-BHt-_hqQ.js.map} +1 -1
  127. package/dist/components/{p-eWb3jk9k.js → p-BLZyVIno.js} +7 -7
  128. package/dist/components/{p-eWb3jk9k.js.map → p-BLZyVIno.js.map} +1 -1
  129. package/dist/components/{p-S46PtMZ-.js → p-BUGOiaPK.js} +6 -6
  130. package/dist/components/{p-S46PtMZ-.js.map → p-BUGOiaPK.js.map} +1 -1
  131. package/dist/components/{p-pAh5qPFg.js → p-BeQBbw5L.js} +56 -48
  132. package/dist/components/p-BeQBbw5L.js.map +1 -0
  133. package/dist/components/{p-Dw48QFVg.js → p-BpDKp7BL.js} +4 -4
  134. package/dist/components/{p-Dw48QFVg.js.map → p-BpDKp7BL.js.map} +1 -1
  135. package/dist/components/{p-DQGVdCyH.js → p-C4h8Uik2.js} +5 -5
  136. package/dist/components/{p-DQGVdCyH.js.map → p-C4h8Uik2.js.map} +1 -1
  137. package/dist/components/{p-DaQLveiE.js → p-CKcOLluN.js} +3 -3
  138. package/dist/components/{p-DaQLveiE.js.map → p-CKcOLluN.js.map} +1 -1
  139. package/dist/components/{p-D3nY_GGj.js → p-CPUhExFR.js} +13 -13
  140. package/dist/components/{p-D3nY_GGj.js.map → p-CPUhExFR.js.map} +1 -1
  141. package/dist/components/{p-D4pQIA1Z.js → p-CXCcBcGu.js} +22 -28
  142. package/dist/components/p-CXCcBcGu.js.map +1 -0
  143. package/dist/components/{p-BTcdVmkv.js → p-CZ9xdGQd.js} +11 -10
  144. package/dist/components/p-CZ9xdGQd.js.map +1 -0
  145. package/dist/components/{p--oiqur2Y.js → p-CZjNHYfy.js} +3 -3
  146. package/dist/components/{p--oiqur2Y.js.map → p-CZjNHYfy.js.map} +1 -1
  147. package/dist/components/{p-BKbGzLae.js → p-CxBIa83N.js} +3 -3
  148. package/dist/components/{p-BKbGzLae.js.map → p-CxBIa83N.js.map} +1 -1
  149. package/dist/components/{p-D6grL59P.js → p-D1YFoc0l.js} +7 -7
  150. package/dist/components/{p-D6grL59P.js.map → p-D1YFoc0l.js.map} +1 -1
  151. package/dist/components/{p-WCNsFhYD.js → p-D8XvOxx7.js} +5 -5
  152. package/dist/components/{p-WCNsFhYD.js.map → p-D8XvOxx7.js.map} +1 -1
  153. package/dist/components/{p-CLn6CMAa.js → p-DNZ70kWZ.js} +5 -5
  154. package/dist/components/{p-CLn6CMAa.js.map → p-DNZ70kWZ.js.map} +1 -1
  155. package/dist/components/{p-CowkeWsT.js → p-DRUFPWev.js} +14 -14
  156. package/dist/components/{p-CowkeWsT.js.map → p-DRUFPWev.js.map} +1 -1
  157. package/dist/{esm/i18n-Al32p_JM.js → components/p-DU-efe4l.js} +483 -39
  158. package/dist/components/{p-Al32p_JM.js.map → p-DU-efe4l.js.map} +1 -1
  159. package/dist/components/{p-BNHlMdus.js → p-DX_iaF-l.js} +3 -3
  160. package/dist/components/{p-BNHlMdus.js.map → p-DX_iaF-l.js.map} +1 -1
  161. package/dist/components/{p-DmrshWtQ.js → p-DYVjHU88.js} +3 -3
  162. package/dist/components/{p-DmrshWtQ.js.map → p-DYVjHU88.js.map} +1 -1
  163. package/dist/components/{p-eDwhUH-3.js → p-DZJKaPhB.js} +3 -3
  164. package/dist/components/{p-eDwhUH-3.js.map → p-DZJKaPhB.js.map} +1 -1
  165. package/dist/components/{p-BodlW2-m.js → p-DkDYh4WL.js} +4 -4
  166. package/dist/components/{p-BodlW2-m.js.map → p-DkDYh4WL.js.map} +1 -1
  167. package/dist/components/{p-C-vCe5Wm.js → p-Ds2yihe8.js} +3 -3
  168. package/dist/components/{p-C-vCe5Wm.js.map → p-Ds2yihe8.js.map} +1 -1
  169. package/dist/components/{p-CTMHCecN.js → p-DsIip0mA.js} +10 -10
  170. package/dist/components/{p-CTMHCecN.js.map → p-DsIip0mA.js.map} +1 -1
  171. package/dist/components/{p-BzFRp7ij.js → p-DsqOfGfP.js} +4 -4
  172. package/dist/components/{p-BzFRp7ij.js.map → p-DsqOfGfP.js.map} +1 -1
  173. package/dist/components/{p-gvdT4if6.js → p-DtIt9SZR.js} +3 -3
  174. package/dist/components/{p-gvdT4if6.js.map → p-DtIt9SZR.js.map} +1 -1
  175. package/dist/components/{p-Cmw6RXlv.js → p-DwHAGiqD.js} +8 -8
  176. package/dist/components/{p-Cmw6RXlv.js.map → p-DwHAGiqD.js.map} +1 -1
  177. package/dist/components/{p-CD0ohunR.js → p-EL05A6XH.js} +5 -5
  178. package/dist/components/{p-CD0ohunR.js.map → p-EL05A6XH.js.map} +1 -1
  179. package/dist/components/{p-DAq2HFf_.js → p-KJ6n20em.js} +14 -14
  180. package/dist/components/{p-DAq2HFf_.js.map → p-KJ6n20em.js.map} +1 -1
  181. package/dist/components/{p-uST4uUr8.js → p-LICXDZDh.js} +15 -15
  182. package/dist/components/{p-uST4uUr8.js.map → p-LICXDZDh.js.map} +1 -1
  183. package/dist/components/{p-ByN7GurE.js → p-MVrx9OAk.js} +52 -40
  184. package/dist/components/p-MVrx9OAk.js.map +1 -0
  185. package/dist/components/{p-8F4ilTjF.js → p-PPtZV34v.js} +9 -9
  186. package/dist/components/{p-8F4ilTjF.js.map → p-PPtZV34v.js.map} +1 -1
  187. package/dist/components/{p-BddWzZuD.js → p-T_Emh7AC.js} +4 -4
  188. package/dist/components/{p-BddWzZuD.js.map → p-T_Emh7AC.js.map} +1 -1
  189. package/dist/components/{p-DGQDJCUG.js → p-l5DR81kr.js} +3 -3
  190. package/dist/components/{p-DGQDJCUG.js.map → p-l5DR81kr.js.map} +1 -1
  191. package/dist/components/{p-x8FQ2VuC.js → p-oVyx239D.js} +15 -15
  192. package/dist/components/{p-x8FQ2VuC.js.map → p-oVyx239D.js.map} +1 -1
  193. package/dist/components/{p-CJWQJjj3.js → p-ovBHb1rg.js} +4 -4
  194. package/dist/components/{p-CJWQJjj3.js.map → p-ovBHb1rg.js.map} +1 -1
  195. package/dist/components/{p-XbFErpli.js → p-p5JEvsTq.js} +3 -3
  196. package/dist/components/{p-XbFErpli.js.map → p-p5JEvsTq.js.map} +1 -1
  197. package/dist/components/{p-Dxb06R94.js → p-qQidKYRw.js} +3 -3
  198. package/dist/components/{p-Dxb06R94.js.map → p-qQidKYRw.js.map} +1 -1
  199. package/dist/components/p-qucyFm7t.js +206 -0
  200. package/dist/components/p-qucyFm7t.js.map +1 -0
  201. package/dist/components/{p-CHbV_3Pe.js → p-zd5dsPvn.js} +14 -14
  202. package/dist/components/{p-CHbV_3Pe.js.map → p-zd5dsPvn.js.map} +1 -1
  203. package/dist/esm/{defaultFieldLabels-GlbzVGpj.js → defaultFieldLabels-DAGFP74Z.js} +3 -3
  204. package/dist/{cjs/defaultFieldLabels-BUxtUsF1.js.map → esm/defaultFieldLabels-DAGFP74Z.js.map} +1 -1
  205. package/dist/esm/{editorUtils-COpeLNIg.js → editorUtils-B1BCA_3i.js} +3 -3
  206. package/dist/esm/{editorUtils-COpeLNIg.js.map → editorUtils-B1BCA_3i.js.map} +1 -1
  207. package/dist/{components/p-Al32p_JM.js → esm/i18n-DU-efe4l.js} +483 -39
  208. package/dist/esm/{i18n-Al32p_JM.js.map → i18n-DU-efe4l.js.map} +1 -1
  209. package/dist/esm/loader.js +1 -1
  210. package/dist/esm/{ls-add-new-button_20.entry.js → ls-add-new-button_21.entry.js} +67 -24
  211. package/dist/esm/ls-assignee-select_21.entry.js +15 -14
  212. package/dist/esm/ls-compose-loader_7.entry.js +10 -10
  213. package/dist/esm/ls-compose-manager.entry.js +1 -1
  214. package/dist/esm/ls-document-viewer.entry.js +23 -39
  215. package/dist/esm/ls-document-viewer.entry.js.map +1 -1
  216. package/dist/esm/ls-document-viewer.js +1 -1
  217. package/dist/esm/ls-field-alignment_3.entry.js +4 -4
  218. package/dist/esm/ls-field-format_2.entry.js +11 -11
  219. package/dist/esm/ls-field-type-display.entry.js +4 -4
  220. package/dist/esm/ls-helper-bar_2.entry.js +3 -3
  221. package/dist/esm/ls-title-input.entry.js +1 -1
  222. package/dist/esm/ls-toolbox-field.entry.js +3 -3
  223. package/dist/esm/{mouseHandlers-CidXuxi3.js → mouseHandlers-DLIW6HsO.js} +4 -4
  224. package/dist/esm/{mouseHandlers-CidXuxi3.js.map → mouseHandlers-DLIW6HsO.js.map} +1 -1
  225. package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
  226. package/dist/ls-document-viewer/{p-5353749c.entry.js → p-13fa9cb6.entry.js} +2 -2
  227. package/dist/ls-document-viewer/p-13fa9cb6.entry.js.map +1 -0
  228. package/dist/ls-document-viewer/{p-daea4a55.entry.js → p-14e74521.entry.js} +2 -2
  229. package/dist/ls-document-viewer/{p-51edee50.entry.js → p-2b4b7393.entry.js} +2 -2
  230. package/dist/ls-document-viewer/{p-cbff9ae0.entry.js → p-31fd0b5d.entry.js} +2 -2
  231. package/dist/ls-document-viewer/p-83cec731.entry.js +2 -0
  232. package/dist/ls-document-viewer/p-83cec731.entry.js.map +1 -0
  233. package/dist/ls-document-viewer/{p-0WDO8yNX.js → p-ClnfOEJp.js} +2 -2
  234. package/dist/ls-document-viewer/{p-0WDO8yNX.js.map → p-ClnfOEJp.js.map} +1 -1
  235. package/dist/ls-document-viewer/{p-GlbzVGpj.js → p-DAGFP74Z.js} +2 -2
  236. package/dist/ls-document-viewer/{p-GlbzVGpj.js.map → p-DAGFP74Z.js.map} +1 -1
  237. package/dist/ls-document-viewer/p-DU-efe4l.js +2 -0
  238. package/dist/ls-document-viewer/{p-Al32p_JM.js.map → p-DU-efe4l.js.map} +1 -1
  239. package/dist/ls-document-viewer/{p-D6sbeDib.js → p-W-duPvwW.js} +2 -2
  240. package/dist/ls-document-viewer/{p-D6sbeDib.js.map → p-W-duPvwW.js.map} +1 -1
  241. package/dist/ls-document-viewer/p-a5a9b36e.entry.js +2 -0
  242. package/dist/ls-document-viewer/{p-8d626c5c.entry.js.map → p-a5a9b36e.entry.js.map} +1 -1
  243. package/dist/ls-document-viewer/{p-0bd91b5d.entry.js → p-ab242e41.entry.js} +2 -2
  244. package/dist/ls-document-viewer/{p-c71b0687.entry.js → p-bae1fb76.entry.js} +2 -2
  245. package/dist/ls-document-viewer/{p-b142576e.entry.js → p-e6bccb0f.entry.js} +2 -2
  246. package/dist/ls-document-viewer/{p-89798744.entry.js → p-e8688cca.entry.js} +4 -4
  247. package/dist/ls-document-viewer/p-e8688cca.entry.js.map +1 -0
  248. package/dist/ls-document-viewer/p-f5959479.entry.js +2 -0
  249. package/dist/types/components/ls-field-properties-advanced/ls-field-properties-advanced.d.ts +2 -1
  250. package/dist/types/components/ls-field-properties-regex/ls-field-properties-regex.d.ts +15 -0
  251. package/dist/types/components.d.ts +57 -8
  252. package/package.json +1 -1
  253. package/dist/components/p-BTcdVmkv.js.map +0 -1
  254. package/dist/components/p-ByN7GurE.js.map +0 -1
  255. package/dist/components/p-CyV8nu-T.js.map +0 -1
  256. package/dist/components/p-D4pQIA1Z.js.map +0 -1
  257. package/dist/components/p-DmB0JIWj.js.map +0 -1
  258. package/dist/components/p-pAh5qPFg.js.map +0 -1
  259. package/dist/ls-document-viewer/p-5353749c.entry.js.map +0 -1
  260. package/dist/ls-document-viewer/p-89798744.entry.js.map +0 -1
  261. package/dist/ls-document-viewer/p-8d626c5c.entry.js +0 -2
  262. package/dist/ls-document-viewer/p-Al32p_JM.js +0 -2
  263. package/dist/ls-document-viewer/p-e4ce8e02.entry.js +0 -2
  264. package/dist/ls-document-viewer/p-e4ce8e02.entry.js.map +0 -1
  265. package/dist/ls-document-viewer/p-e7783017.entry.js +0 -2
  266. /package/dist/ls-document-viewer/{p-daea4a55.entry.js.map → p-14e74521.entry.js.map} +0 -0
  267. /package/dist/ls-document-viewer/{p-51edee50.entry.js.map → p-2b4b7393.entry.js.map} +0 -0
  268. /package/dist/ls-document-viewer/{p-cbff9ae0.entry.js.map → p-31fd0b5d.entry.js.map} +0 -0
  269. /package/dist/ls-document-viewer/{p-0bd91b5d.entry.js.map → p-ab242e41.entry.js.map} +0 -0
  270. /package/dist/ls-document-viewer/{p-c71b0687.entry.js.map → p-bae1fb76.entry.js.map} +0 -0
  271. /package/dist/ls-document-viewer/{p-b142576e.entry.js.map → p-e6bccb0f.entry.js.map} +0 -0
  272. /package/dist/ls-document-viewer/{p-e7783017.entry.js.map → p-f5959479.entry.js.map} +0 -0
@@ -287,7 +287,11 @@ export class LsDocumentViewer {
287
287
  const hasDefaultName = witness.name === 'Participant ' + witness.ordinal;
288
288
  const hasParentWitnessName = witness.name === oldRole.name + ' Witness';
289
289
  if (hasDefaultName || hasParentWitnessName) {
290
- const updatedWitness = { ...witness, name: role.name + ' Witness' };
290
+ // If parent reverts to default, witness should also revert to default
291
+ const newWitnessName = role.name === 'Participant ' + role.ordinal
292
+ ? 'Participant ' + witness.ordinal
293
+ : role.name + ' Witness';
294
+ const updatedWitness = { ...witness, name: newWitnessName };
291
295
  this.adapter.handleEvent({ action: 'update', data: updatedWitness }, this.token).then(wr => {
292
296
  if (wr !== 'invalid')
293
297
  matchData.bind(this)(wr);
@@ -296,41 +300,21 @@ export class LsDocumentViewer {
296
300
  }
297
301
  }
298
302
  }
299
- // Swap/delete: after structural changes, sync default names to new ordinals
300
- if (me.action === 'swap' || me.action === 'delete') {
301
- // For swap, capture which roles had default names before the sync
302
- const preSwapDefaults = me.action === 'swap' ? [
303
- { id: me.data.id, hadDefault: me.data.name === 'Participant ' + me.data.ordinal },
304
- { id: me.data2.id, hadDefault: me.data2.name === 'Participant ' + me.data2.ordinal },
305
- ] : null;
306
- // For delete, snapshot all roles with default names before ordinals shift
307
- const preDeleteDefaults = me.action === 'delete'
308
- ? this._template.roles.filter(r => r.name === 'Participant ' + r.ordinal).map(r => r.id)
309
- : null;
303
+ // Swap/delete/create: after structural changes, sync default names to new ordinals
304
+ if (me.action === 'swap' || me.action === 'delete' || me.action === 'create') {
305
+ // Snapshot all roles with default names before ordinals shift
306
+ const preChangeDefaults = this._template.roles
307
+ .filter(r => r.name === 'Participant ' + r.ordinal)
308
+ .map(r => r.id);
310
309
  return Promise.resolve(matchData.bind(this)(result)).then(() => {
311
310
  const updates = [];
312
- if (preSwapDefaults) {
313
- for (const { id, hadDefault } of preSwapDefaults) {
314
- if (!hadDefault)
315
- continue;
316
- const fresh = this._template.roles.find(r => r.id === id);
317
- if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {
318
- updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {
319
- if (r !== 'invalid')
320
- matchData.bind(this)(r);
321
- }));
322
- }
323
- }
324
- }
325
- if (preDeleteDefaults) {
326
- for (const id of preDeleteDefaults) {
327
- const fresh = this._template.roles.find(r => r.id === id);
328
- if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {
329
- updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {
330
- if (r !== 'invalid')
331
- matchData.bind(this)(r);
332
- }));
333
- }
311
+ for (const id of preChangeDefaults) {
312
+ const fresh = this._template.roles.find(r => r.id === id);
313
+ if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {
314
+ updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {
315
+ if (r !== 'invalid')
316
+ matchData.bind(this)(r);
317
+ }));
334
318
  }
335
319
  }
336
320
  return Promise.all(updates);
@@ -978,12 +962,12 @@ export class LsDocumentViewer {
978
962
  return false;
979
963
  }
980
964
  render() {
981
- return (h(Host, { key: 'd734589f21701f8842ff21fd0ac3bc57910bd2c0', class: { 'ls-dv-preview-mode': this.mode === 'preview' } }, h(h.Fragment, null, this.isLoading && (h(h.Fragment, null, h("div", { key: '6b23095cce9f80d65cc87b4faf91026652f142cb', class: 'ls-dv-page-loader' }, h("ls-loading-logo", { key: 'eb04b9206ef97083fce40574ebb40a8edf43f9d1', size: this.loaderSize, colour: "var(--primary-60)" })), h("div", { key: '0af81d1b030f2400814b2d473723cb4363bb602d', class: 'ls-dv-custom-loader-slot' }, h("slot", { key: '799c57bd60af30258893249ad79e744f388e6dac', name: "custom-loader" })), this.mode === 'compose' && h("ls-compose-loader", { key: 'e74211a77b7ead319e51bcfc5afc28f25ed441a5' }))), this.error && (h("div", { key: 'd144ffbf258f67471a3e8586026539c9a2ec2a13', class: "ls-dv-error-state" }, h("div", { key: '3f079e5d855dd5f8eba85d3c16fe8f13a9e3e1fd', class: "ls-dv-error-card" }, h("ls-icon", { key: 'ab4e94ed151e1bc97525c0d411c184f19ed91568', name: "exclamation-circle-icon", size: 32, style: { color: 'var(--red-60, #dc2626)' } }), h("p", { key: 'aa24a956c9ebd3074855dbb242b3967282f0525c', class: "ls-dv-error-title" }, this.errorTitle), h("p", { key: '4e25d629fbc1fa4eae29e66a46787a60c8168862', class: "ls-dv-error-message" }, this.error)))), this.mode !== 'preview' && (h("div", { key: '789a5c3f027fad8525e1e78f9f6398669e8a4904', class: "ls-dv-page-header" }, h("div", { key: '5175792e24c98fa7f7a94fb0b659acf885d7d814', class: 'ls-dv-left-slot-wrapper' }, h("slot", { key: '64befda9960e0fd65cf6d2e00243ce7d3b4fb81c', name: "left-button" })), h("div", { key: '6e31a97e1d7cea55753e817989483a9c43dba7c1', class: 'ls-dv-right-slot-wrapper' }, h("slot", { key: '41643bf4389b31651e53ad5624329c31d30ea412', name: "right-button" })), this.mode === 'editor' && (h("div", { key: '3d29c1a560cc02004aad498b4cbe7bf89c4a9e50' }, h("span", { key: '64dfbc6b09d33376f8a6c260cff2388f3f0975c8', class: "ls-dv-header-text-1" }, dvI18n.t('viewer.templatecreation')), h("span", { key: 'e73339a4c2ed2e074ed005242c078504e5ce1157' }, "/"), h("span", { key: '5e710d23a37d8273c06734514aa7e2735fbb6c69', class: "ls-dv-header-text-2" }, this._template?.title))), this.mode === 'compose' && (h("div", { key: '2aded4d932f536ab2537638d77225a6891a2bf11', style: { display: 'flex', alignItems: 'center', gap: '0.25rem' } }, h("slot", { key: 'fb6aa36cc708ce2edb8fc757015abaa2b79b47f3', name: "top-bar" }))))), h("form", { key: 'bd78ca4c151d1d8a55adacf4f3700b9682cab687', id: "ls-editor-form" }, h("ls-left-bar", { key: '9099ccbcbb93d38e0b9b22f019dc7ef2ed92b053', mode: this.mode, selected: this.selected, manager: this.manager, signer: this.signer, filtertoolbox: this.filtertoolbox, template: this._template, recipients: this._recipients, validationErrors: this.validationErrors, fieldTypeSelected: this.fieldTypeSelected, displayTable: this.displayTable, selectedDataItems: this.selectedDataItems, busy: this.isMutating, onManagerChange: e => this.handleManagerChange(e.detail), onClearSelected: () => {
965
+ return (h(Host, { key: '6925b686269e3d749f204a27e5796f1048c3aaad', class: { 'ls-dv-preview-mode': this.mode === 'preview' } }, h(h.Fragment, null, this.isLoading && (h(h.Fragment, null, h("div", { key: '12b2c3abb07dbc64945ad37fc6c2792b5b4a7a5c', class: 'ls-dv-page-loader' }, h("ls-loading-logo", { key: 'f62f216786f319e16981b35c989284fdd87ed235', size: this.loaderSize, colour: "var(--primary-60)" })), h("div", { key: '3c819f4c204cffd94e24cc9e2ec552e65a72b499', class: 'ls-dv-custom-loader-slot' }, h("slot", { key: '12e5ef2a4607ccfb5e6d6850a71e085cb6161fae', name: "custom-loader" })), this.mode === 'compose' && h("ls-compose-loader", { key: '8c05f297c5943c1c3aa016b7701251e7ac485b21' }))), this.error && (h("div", { key: '80f66943b5d4734bfef646160f279b5e5f08eec0', class: "ls-dv-error-state" }, h("div", { key: '835de0650f0dd03a42915ce6950f0ea203ff1605', class: "ls-dv-error-card" }, h("ls-icon", { key: '719a3555d5f274a1b37a53c1681f10a19a06c2ce', name: "exclamation-circle-icon", size: 32, style: { color: 'var(--red-60, #dc2626)' } }), h("p", { key: '0b069574fe88ad72e6b6f7468793aa62ae221c86', class: "ls-dv-error-title" }, this.errorTitle), h("p", { key: '1e2df5165e7437a237ca1539d32f501572150ec6', class: "ls-dv-error-message" }, this.error)))), this.mode !== 'preview' && (h("div", { key: '3542403c9e72b945efc504e9772eac2c1b7eaa29', class: "ls-dv-page-header" }, h("div", { key: '9d3287b94a8e0e5a46a9ba0485e3f0607cf67378', class: 'ls-dv-left-slot-wrapper' }, h("slot", { key: 'deda3110e22cb589222f66a305937f98e475c363', name: "left-button" })), h("div", { key: '2cb52b5a7114f3dccb0425482d4d53a0c9974f0b', class: 'ls-dv-right-slot-wrapper' }, h("slot", { key: 'e11fcd1981c37df448f860465f54a5e2bf7bbcc8', name: "right-button" })), this.mode === 'editor' && (h("div", { key: '54acbf6d5ff640b4457b50f17b4027072fc6ca29' }, h("span", { key: '49c79e2f6cbc772ddc8c3ace58528951aedad88a', class: "ls-dv-header-text-1" }, dvI18n.t('viewer.templatecreation')), h("span", { key: '26707a892a9643ac56b15f92572e96a3fae5a617' }, "/"), h("span", { key: '1d6bd71349cc7be1c1560413914416937baec1f3', class: "ls-dv-header-text-2" }, this._template?.title))), this.mode === 'compose' && (h("div", { key: 'd8781b678e7f53cc11b1dd3ef887dbc10b676811', style: { display: 'flex', alignItems: 'center', gap: '0.25rem' } }, h("slot", { key: '2db9adbdfa9aaebe971466ae3fd35f444b07a310', name: "top-bar" }))))), h("form", { key: '51e6eb22153a66619e7ffb76b094d04ae2db3095', id: "ls-editor-form" }, h("ls-left-bar", { key: 'a1b6eae9d2ba749204be3124964774f47e9bf9b1', mode: this.mode, selected: this.selected, manager: this.manager, signer: this.signer, filtertoolbox: this.filtertoolbox, template: this._template, recipients: this._recipients, validationErrors: this.validationErrors, fieldTypeSelected: this.fieldTypeSelected, displayTable: this.displayTable, selectedDataItems: this.selectedDataItems, busy: this.isMutating, onManagerChange: e => this.handleManagerChange(e.detail), onClearSelected: () => {
982
966
  this.unselect();
983
967
  const toolbar = this.component.shadowRoot.getElementById('ls-toolbar');
984
968
  if (toolbar)
985
969
  toolbar.dataItem = [];
986
- } }, h("slot", { key: '37e04c506b0873adddea9c169c1a632a9ea9ede6', name: "recipient-panel", slot: "recipient-panel" })), h("ls-toolbar", { key: '9aa0ad70bb133613c365bf69798b5b27f51cbb27', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo, mode: this.mode, signer: this.signer, selected: this.selected, pageNum: this.pageNum }), h("div", { key: '9c2eeaa67b5473208a9d5320b48ef604908c1df6', id: "ls-mid-area" }, h("div", { key: 'df4ba6a3410ff6edaa8538afd803dedd57fb02b9', class: { 'ls-dv-document-frame-wrapper': true, 'ls-dv-document-frame-wrapper--preview': this.mode === 'preview' }, id: "document-frame-wrapper" }, h("div", { key: 'bf48a7c3cf559b270df8864227a1d2a6a8d0143f', id: "ls-document-frame" }, h("canvas", { key: '4b7f07726adc44b8e27205ea15c08ed7087a78e0', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'ls-dv-hidden' : '' }), h("ls-editor-table", { key: 'f1eb1f06bca632256cfd867ccfb3530481221a22', editor: this, class: this.displayTable ? '' : 'ls-dv-hidden' }), h("div", { key: '4fa14c5ce6226b44c0ceb2f80b41a1d7532fd088', id: "ls-box-selector" }), h("div", { key: '9916c9ee0872f6c76618e48befa8719da3c7fb9b', id: "ls-drag-selector" }), this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (h("ls-select-menu", { key: '14b56e30f7a303a73185c3ec7b9c92f3826919b3', class: "ls-dv-select-menu-position", selected: this.selected, pageNum: this.pageNum, editor: this })), this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (h("ls-select-menu", { key: '40ece1aad83e25dff73755d84d113b832dc72916', class: "ls-dv-select-menu-floating", selected: this.selected, pageNum: this.pageNum, editor: this, floating: true })))), h("ls-statusbar", { key: '3c6edda9a51b4db3248e9edb9c543df4c69ee41b', editor: this, page: this.pageNum, pageCount: this.pageCount, mode: this.mode, canUndo: canUndo(), canRedo: canRedo() }), this.mode === 'editor' && (h("div", { key: '7fb7451962f8588877e98d9c7499adce82e0d008', class: 'ls-dv-validation-tag-wrapper' }, h("ls-validation-tag", { key: '6a7d69b7d842d9ce1f11fb55a3f1ec82d8971c65', validationErrors: this.validationErrors }), h("slot", { key: '55befd61a78b45f3ea6c47f79aa3153258943909', name: "next-button" })))))), h("ls-tooltip", { key: '3da47138b36d20a454b0fcd3e42d3fb439685cbd', tooltipId: "ls-dv-tooltip" })));
970
+ } }, h("slot", { key: 'e472bd7b6faf855a2675358aa8355870fadfcc54', name: "recipient-panel", slot: "recipient-panel" })), h("ls-toolbar", { key: '14c180e17852602940522a6ecff5ebbade07e7a4', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo, mode: this.mode, signer: this.signer, selected: this.selected, pageNum: this.pageNum }), h("div", { key: '8792aa4059d402b8ead3bd765f936b6c3dd134f0', id: "ls-mid-area" }, h("div", { key: 'e4322372e3e27c06cbbe290461a3b46adcee2775', class: { 'ls-dv-document-frame-wrapper': true, 'ls-dv-document-frame-wrapper--preview': this.mode === 'preview' }, id: "document-frame-wrapper" }, h("div", { key: 'f8262f5264321a3d66504912640a602cb67bb85c', id: "ls-document-frame" }, h("canvas", { key: '6730cb75b8ea2504e0161051ab565d7902f174c2', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'ls-dv-hidden' : '' }), h("ls-editor-table", { key: '250257cdd9d8df3244fda6168ff8991a4ac9d3d9', editor: this, class: this.displayTable ? '' : 'ls-dv-hidden' }), h("div", { key: 'fd4c974ee347ba31434dadfffae0196c065bd716', id: "ls-box-selector" }), h("div", { key: '5d75e51175f811e03a00b18874a4b8b82f47ca58', id: "ls-drag-selector" }), this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (h("ls-select-menu", { key: '23adf3e49d6d6d634657987cfde2c0bdccedb0ad', class: "ls-dv-select-menu-position", selected: this.selected, pageNum: this.pageNum, editor: this })), this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (h("ls-select-menu", { key: '9050928787a3a0a34ce96d163fd2dcb0fe1a7583', class: "ls-dv-select-menu-floating", selected: this.selected, pageNum: this.pageNum, editor: this, floating: true })))), h("ls-statusbar", { key: '7017129ee8c6bee0a4d2861594f1743c8c51a7c2', editor: this, page: this.pageNum, pageCount: this.pageCount, mode: this.mode, canUndo: canUndo(), canRedo: canRedo() }), this.mode === 'editor' && (h("div", { key: '7af711472a1141a5206971e077e9b0013927c739', class: 'ls-dv-validation-tag-wrapper' }, h("ls-validation-tag", { key: '1d9612986c19ab56ff7a94e39dbe5a654f927bd4', validationErrors: this.validationErrors }), h("slot", { key: '8e067bc84dcb3a3ebdb50cfa40dd9b034ac8edda', name: "next-button" })))))), h("ls-tooltip", { key: '776c8cb9be69077b47556a50f4045df65ecd6a57', tooltipId: "ls-dv-tooltip" })));
987
971
  }
988
972
  static get is() { return "ls-document-viewer"; }
989
973
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"ls-document-viewer.js","sourceRoot":"","sources":["../../../../src/components/ls-document-viewer/ls-document-viewer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Polyfill URL.parse for older browsers (used by pdfjs-dist)\nif (typeof URL.parse !== 'function') {\n (URL as any).parse = function (url: string, base?: string | URL): URL | null {\n try {\n return base ? new URL(url, base) : new URL(url);\n } catch {\n return null;\n }\n };\n}\n\nimport { Component, Host, Prop, h, Element, Method, State, Listen, Watch } from '@stencil/core';\nimport { Event, EventEmitter } from '@stencil/core';\nimport { LSApiElement } from '../../types/LSApiElement';\nimport { PDFDocumentProxy, PDFPageProxy, PageViewport, RenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport { dvI18n } from '../../i18n/i18n';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME, FIELD_DEFAULTS } from '../../constants/fieldDefaults';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { recordMutations, clearHistory, canUndo, canRedo } from './history';\nimport { mouseClick, mouseDoubleClick, mouseDown, mouseMove, mouseUp, toolboxDragStart } from './mouseHandlers';\nimport { getApiType, getInputType, matchData } from './editorUtils';\nimport { updateSelectionBox } from './mouseHandlers';\n// import { RoleColor } from '../../types/RoleColor';\nimport { LSApiRole, LSApiRoleType } from '../../types/LSApiRole';\nimport { LsDocumentAdapter } from './adapter/LsDocumentAdapter';\nimport { getTemplate } from './adapter/templateActions';\nimport { getGroupData } from './adapter/groupActions';\nimport { ValidationError } from '../../types/ValidationError';\nimport { validate } from './validator';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { generateRoles } from './generateRoles';\n\nGlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@5.4.449/build/pdf.worker.min.mjs`;\n\n// Module-level reference to the document keydown listener so it can be cleaned up across remounts\nlet _activeKeyDownListener: ((e: KeyboardEvent) => void) | null = null;\n\n/**\n * The Legalesign page viewer converted to stencil. To use pass the standard\n * Template information from GraphQL (see Readme).\n *\n * Alex Weinle\n */\n\n@Component({\n tag: 'ls-document-viewer',\n styleUrl: 'ls-document-viewer.scss',\n shadow: true,\n})\nexport class LsDocumentViewer {\n @Element() component: HTMLElement;\n\n private isPageRendering: boolean;\n private pdfDocument: any;\n private pageNumPending: number = null;\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n public pageDimensions: { height: number; width: number }[]; // hardcoded to start at the page 1\n // @ts-ignore\n private isMoving: boolean = false;\n // @ts-ignore\n private isBoxing: boolean = false;\n // @ts-ignore\n private selectionBox: { x: number; y: number } = null;\n // @ts-ignore\n private hitField: HTMLElement;\n // @ts-ignore\n private edgeSide: string;\n // @ts-ignore\n private startLocations: { left: number; top: number; height: number; width: number }[];\n // @ts-ignore\n private startMouse: { left: number; top: number; height: number; width: number; x: number; y: number };\n // @ts-ignore\n private _isToolboxDragging: boolean = false;\n // @ts-ignore\n private _cancelToolboxDrag: (() => void) | null = null;\n\n //\n // --- Properties / Inputs --- //\n //\n\n /**\n * The initial template data, including the link for background PDF. See README and\n * example for correct GraphQL query and data structure.\n * {LSApiTemplate}\n */\n @Prop() template: string;\n\n /**\n * The access token of the account your want the widget to use, you should normally\n * acquire this with a server side call using that accounts login credentials.\n * {string}\n */\n @Prop() token: string;\n\n /**\n * This will override the default production user pool.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() userpool: string;\n\n /**\n * This will override the default production graphql endpoint.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() endpoint: string;\n\n /**\n * The id of the template you want to load (if using the internal data adapter).\n * {string}\n */\n @Prop() templateid: string;\n\n @Watch('templateid')\n templateIdChanged() {\n if (this.token && this._initialized) this.reload();\n }\n\n /**\n * A JSON string containing the recipient details. Only used in COMPOSE mode.\n * {string}\n */\n @Prop() recipients: string;\n @Prop() _recipients: any[];\n\n /**\n * Override the detected language. Pass a BCP 47 language code (e.g. 'fr', 'de').\n * {string}\n */\n @Prop() language: string;\n\n @Watch('language')\n languageChanged(newLang: string) {\n if (newLang) {\n dvI18n.changeLanguage(newLang);\n }\n }\n\n @Prop({ mutable: true }) zoom: number = 1.0; // hardcoded to scale the document to full canvas size\n @Prop({ mutable: true }) pageNum: number = 1;\n @Prop({ mutable: true }) pageCount: number = 1;\n @Prop({ mutable: true }) signer: number = 0;\n @Prop({ mutable: true }) groupInfo: any;\n\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n @State() error: string | null = null;\n @State() errorTitle: string | null = null;\n\n /**\n * The following state properties define the defaults for field\n * creation. They should be overridden by the users most used\n * values from localStorage or profile settings.\n */\n @State() fontSize: number = DEFAULT_FONT_SIZE;\n @State() fontFamily: string = DEFAULT_FONT_NAME;\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\n @State() isMutating: boolean = false;\n @State() loaderSize: number = 200;\n @State() selectedDataItems: LSApiElement[] = [];\n @State() fieldTypeSelected: IToolboxField = {\n label: 'Signature',\n formElementType: 'signature',\n elementType: 'signature',\n validation: 0,\n defaultHeight: 27,\n defaultWidth: 120,\n };\n\n /**\n * An ease of use property that will arrange document-viewer appropraitely.\n * {'preview' | 'editor' | 'custom'}\n */\n @Prop() mode: 'preview' | 'editor' | 'compose' = 'editor';\n\n @Watch('mode')\n modeHandler(_newMode, _oldMode) {\n if (_newMode === 'preview') {\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showstatusbar = true;\n this.readonly = false;\n }\n \n // Update readonly attribute on all existing fields\n const fields = this.component.shadowRoot?.querySelectorAll('ls-editor-field');\n if (fields) {\n fields.forEach(field => {\n field.setAttribute('readonly', String(_newMode === 'preview'));\n });\n }\n }\n\n @Watch('_template')\n templateLockedHandler() {\n const fields = this.component.shadowRoot?.querySelectorAll('ls-editor-field');\n if (fields) {\n fields.forEach(field => {\n field.setAttribute('readonly', String(this.mode === 'preview' || this._template?.locked));\n });\n }\n }\n\n @Watch('zoom')\n zoomChanged(newZoom: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(f => f.setAttribute('zoom', String(newZoom)));\n const statusbar = this.component.shadowRoot.querySelector('ls-statusbar') as any;\n if (statusbar) statusbar.zoom = newZoom;\n }\n\n /**\n * Determines / sets which of the far left 'managers' is active.\n * {'document' | 'toolbox' | 'participant' }\n */\n @Prop({ mutable: true }) manager: 'document' | 'toolbox' | 'participant' | 'recipient' | 'validation' = 'toolbox';\n\n /**\n * Shows the table view of fields rather than the preview.\n * {boolean}\n */\n @Prop({ mutable: true }) displayTable?: boolean = false;\n\n /**\n * Allows the selection of fields in the toolbox to be limited to a | (pipe) delimited list.\n * {string}\n */\n @Prop() filtertoolbox?: string = null;\n\n /**\n * Whether the bottom statusbar is displayed.\n * {boolean}\n */\n @Prop() showstatusbar?: boolean = false;\n\n /**\n * Whether the page previewvertical ribbon will be shown\n * {boolean}\n */\n @Prop() showpagepreview?: boolean = false;\n\n /**\n * Whether the right panel (which can be default field properties or custom panel) is\n * displayed.\n * {boolean}\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Whether the table view of the fields on this template is available to the user.\n * {boolean}\n */\n @Prop() showtableview?: boolean = false;\n\n /**\n * If supplied ONLY items in this | (\"or\") delimited list will be shown. i.e. \"signature|intials\"\n * {boolean}\n */\n @Prop() toolboxFilter?: string = null;\n\n //\n // --- Event Emitters --- //\n //\n @Event() pageRendered: EventEmitter<number>;\n // @Event() error: EventEmitter<any>;\n @Event() pageChange: EventEmitter<number>;\n // Multiple or single select\n @Event() selectFields: EventEmitter<LSApiElement[]>;\n // Send an internal event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n\n // Send an external event to be mmonitored by an external developer\n @Event() update: EventEmitter<{ event: LSMutateEvent; template: LSApiTemplate }>;\n\n // Send an external validation event to be monitored by an external developer\n @Event() validate: EventEmitter<{ valid: boolean; errors: ValidationError[] }>;\n\n @Event({\n bubbles: true,\n composed: true,\n })\n addParticipant: EventEmitter<{ name?: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>;\n\n private adapter: LsDocumentAdapter;\n public _skipHistory: boolean = false;\n private _loadGeneration: number = 0;\n\n // Action an external data action and use the result (if required)\n @Listen('mutate')\n mutateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (this.token && this.adapter) {\n const mutations = Array.isArray(event.detail) ? event.detail : [event.detail];\n\n // Record history for undo/redo (skip if this mutation came from undo/redo itself)\n if (!this._skipHistory) {\n const beforeStates = new Map<string, any>();\n mutations.forEach(me => {\n const data = me.data as any;\n if (me.action === 'update' && data?.id) {\n const existing = this.component.shadowRoot?.getElementById('ls-field-' + data.id) as HTMLLsEditorFieldElement;\n if (existing?.dataItem) {\n beforeStates.set(data.id, { ...existing.dataItem });\n }\n } else if (me.action === 'delete' && data?.id) {\n const existing = this.component.shadowRoot?.getElementById('ls-field-' + data.id) as HTMLLsEditorFieldElement;\n if (existing?.dataItem) {\n beforeStates.set(data.id, { ...existing.dataItem });\n }\n }\n });\n recordMutations(mutations, beforeStates);\n }\n this._skipHistory = false;\n\n this.isMutating = true;\n const currentGeneration = this._loadGeneration;\n const promises = mutations.map(me =>\n this.adapter\n .handleEvent(me, this.token)\n .then(result => {\n if (result === 'invalid') return;\n // Discard stale responses from a previous template\n if (this._loadGeneration !== currentGeneration) return;\n // Cascade name change to witness if it still matches a default pattern\n // Must check before matchData/syncRoles overwrites this._template.roles\n if (me.action === 'update' && (me.data as LSApiRole).roleType !== 'WITNESS') {\n const role = me.data as LSApiRole;\n const oldRole = this._template.roles.find(r => r.id === role.id);\n if (oldRole && oldRole.name !== role.name) {\n const witness = this._template.roles.find(r => r.signerParent === role.id && r.roleType === 'WITNESS');\n if (witness) {\n const hasDefaultName = witness.name === 'Participant ' + witness.ordinal;\n const hasParentWitnessName = witness.name === oldRole.name + ' Witness';\n if (hasDefaultName || hasParentWitnessName) {\n const updatedWitness = { ...witness, name: role.name + ' Witness' };\n this.adapter.handleEvent({ action: 'update', data: updatedWitness }, this.token).then(wr => {\n if (wr !== 'invalid') matchData.bind(this)(wr);\n });\n }\n }\n }\n }\n // Swap/delete: after structural changes, sync default names to new ordinals\n if (me.action === 'swap' || me.action === 'delete') {\n // For swap, capture which roles had default names before the sync\n const preSwapDefaults = me.action === 'swap' ? [\n { id: (me.data as LSApiRole).id, hadDefault: (me.data as LSApiRole).name === 'Participant ' + (me.data as LSApiRole).ordinal },\n { id: (me.data2 as LSApiRole).id, hadDefault: (me.data2 as LSApiRole).name === 'Participant ' + (me.data2 as LSApiRole).ordinal },\n ] : null;\n // For delete, snapshot all roles with default names before ordinals shift\n const preDeleteDefaults = me.action === 'delete'\n ? this._template.roles.filter(r => r.name === 'Participant ' + r.ordinal).map(r => r.id)\n : null;\n return Promise.resolve(matchData.bind(this)(result)).then(() => {\n const updates: Promise<any>[] = [];\n if (preSwapDefaults) {\n for (const { id, hadDefault } of preSwapDefaults) {\n if (!hadDefault) continue;\n const fresh = this._template.roles.find(r => r.id === id);\n if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {\n updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {\n if (r !== 'invalid') matchData.bind(this)(r);\n }));\n }\n }\n }\n if (preDeleteDefaults) {\n for (const id of preDeleteDefaults) {\n const fresh = this._template.roles.find(r => r.id === id);\n if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {\n updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {\n if (r !== 'invalid') matchData.bind(this)(r);\n }));\n }\n }\n }\n return Promise.all(updates);\n });\n }\n matchData.bind(this)(result);\n })\n .then(() => this.syncChange(me))\n .catch(() => {\n // Revalidate against current template state on API failure\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }),\n );\n Promise.all(promises).finally(() => {\n requestAnimationFrame(() => {\n this.isMutating = false;\n });\n });\n }\n }\n\n @Listen('update')\n updateHandler(event: CustomEvent<LSMutateEvent[]>) {\n const details = event.detail;\n if (!details || !Array.isArray(details) || details.length === 0) return;\n event.stopPropagation();\n\n const source = event.target as HTMLElement;\n const isFromEditorField = source?.tagName === 'LS-EDITOR-FIELD';\n\n for (const detail of details) {\n if (detail?.action === 'update' && detail?.data?.id) {\n const updatedData = detail.data as LSApiElement;\n\n // Sync selectedDataItems so sidebar reflects the latest value\n this.selectedDataItems = this.selectedDataItems.map(item =>\n item.id === updatedData.id ? { ...updatedData } : item,\n );\n\n // Sync toolbar dataItem so format/alignment changes use current values\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar?.dataItem) {\n toolbar.dataItem = toolbar.dataItem.map(item =>\n item.id === updatedData.id ? { ...updatedData } : item,\n );\n }\n\n // Only sync editor field if the change came from the sidebar\n if (!isFromEditorField) {\n const editorField = this.component.shadowRoot?.getElementById('ls-field-' + updatedData.id) as HTMLLsEditorFieldElement;\n if (editorField) {\n editorField.dataItem = { ...updatedData };\n }\n }\n }\n }\n\n // Optimistic validation: run validate against a temp template with the updated element\n const optimisticTemplate = {\n ...this._template,\n elementConnection: {\n ...this._template.elementConnection,\n templateElements: this._template.elementConnection.templateElements.map(el => {\n const updated = details.find(d => d.action === 'update' && d.data?.id === el.id);\n return updated ? { ...el, ...updated.data } as LSApiElement : el;\n }),\n },\n };\n this.validationErrors = validate.bind(this)(optimisticTemplate as LSApiTemplate);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }\n\n @Listen('fieldTypeSelected')\n handleFieldTypeSelected(event) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-toolbox-field');\n\n fields.forEach(element => {\n element.isSelected = element.formElementType === event.detail.formElementType;\n });\n\n this.fieldTypeSelected = event.detail;\n }\n\n @Listen('toolboxDragStart')\n handleToolboxDragStart(event) {\n toolboxDragStart.bind(this)(event.detail);\n }\n\n // generate a new role on the template\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ name: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = event.detail.signerIndex > 99 ? this._template.roles.find(r => r.signerIndex === event.detail.signerIndex % 100) : null;\n const newSignerIndex =\n event.detail.type === 'WITNESS' ? parent.signerIndex + 100 : Math.max(...this._template.roles.filter(r => r.roleType !== 'WITNESS').map(r => r.signerIndex)) + 1;\n\n const resolvedSignerIndex = event.detail.signerIndex\n ? event.detail.signerIndex\n : event.detail.type === 'WITNESS'\n ? 100 + parent?.signerIndex\n : this._template.roles.length === 0\n ? 1\n : newSignerIndex;\n\n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: event.detail.name\n ? event.detail.name\n : event.detail.type === 'WITNESS'\n ? (parent?.name === 'Participant ' + parent?.ordinal ? 'Participant ' + (parent?.ordinal + 1) : parent?.name + ' Witness')\n : 'Participant ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: resolvedSignerIndex,\n ordinal: event.detail.type === 'WITNESS' ? parent?.ordinal + 1 : this._template.roles.length + 1,\n signerParent: event.detail.parent,\n experience: defaultExperience.id,\n templateId: this._template.id,\n },\n },\n ];\n this.mutate.emit(data);\n\n // Auto-select the newly created participant\n this.signer = resolvedSignerIndex;\n }\n\n // change the signer selected\n @Listen('changeSigner')\n updateSigner(event: CustomEvent<number>) {\n if (event.detail) {\n this.signer = event.detail;\n }\n }\n\n // Handle field selection from validation tag for immediate placement\n @Listen('selectFieldForPlacement')\n selectFieldForPlacement(event: CustomEvent<{ signerIndex: number; fieldType: string }>) {\n const { signerIndex, fieldType } = event.detail;\n\n // Update the active signer\n this.signer = signerIndex;\n\n // Build the field data directly from defaults\n const defaults = FIELD_DEFAULTS[fieldType] || FIELD_DEFAULTS['signature'];\n \n // Map formElementType to elementType correctly\n let elementType: 'text' | 'signature' | 'initials' | 'admin';\n if (fieldType === 'signature') {\n elementType = 'signature';\n } else if (fieldType === 'initials') {\n elementType = 'initials';\n } else if (fieldType === 'auto sign') {\n elementType = 'admin';\n } else {\n elementType = 'text';\n }\n \n this.fieldTypeSelected = {\n label: fieldType,\n formElementType: fieldType,\n elementType: elementType,\n validation: 0,\n defaultHeight: defaults.defaultHeight,\n defaultWidth: defaults.defaultWidth,\n };\n\n // Switch to toolbox view if not already there\n if (this.manager !== 'toolbox') {\n this.manager = 'toolbox';\n }\n\n // Initiate dragging for the selected field type on next tick\n // (current mousedown/mouseup cycle needs to complete first)\n requestAnimationFrame(() => {\n toolboxDragStart.bind(this)(this.fieldTypeSelected);\n });\n }\n\n // Send selection changes to bars and panels if in use.\n @Listen('selectFields')\n selectFieldsHandler(event: CustomEvent<LSApiElement[]>) {\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field'));\n // update the template with all the latest values in the\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: fields.map(ef => ef.dataItem) },\n };\n\n var toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) {\n toolbar.dataItem = event.detail as any as LSApiElement[];\n }\n if (event.detail.length === 0) {\n this.selected = [];\n } else {\n console.log(event.detail, 'selected');\n this.selectedDataItems = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n const isMulti = event.detail.length > 1;\n fields.forEach(f => {\n (f as HTMLLsEditorFieldElement).selected = false;\n (f as HTMLLsEditorFieldElement).multiSelected = false;\n });\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n if (fu) {\n fu.selected = true;\n fu.multiSelected = isMulti;\n }\n });\n\n this.selected = (fields as HTMLLsEditorFieldElement[]).filter(fx => fx.selected);\n\n // Open date picker only when exactly one date field is selected\n if (event.detail.length === 1) {\n const field = this.component.shadowRoot.getElementById('ls-field-' + event.detail[0].id) as HTMLLsEditorFieldElement;\n if (field && getInputType(event.detail[0].validation)?.inputType === 'date' && this.mode !== 'preview') {\n requestAnimationFrame(() => {\n const editbox = field.shadowRoot?.getElementById('editing-input') as HTMLInputElement;\n if (editbox) editbox.showPicker();\n });\n }\n }\n\n updateSelectionBox.bind(this)();\n this.validationErrors = validate.bind(this)(this._template);\n\n\n }\n\n // Send role selection changes to bars and panels\n @Listen('roleChange')\n roleHandler(event: CustomEvent<number>) {\n this.signer = event.detail;\n }\n\n //\n // --- Methods --- //\n //\n\n /**\n * Page forward\n * {MouseEvent} e\n */\n @Method()\n async pageNext() {\n if (this.pageNum >= this.pdfDocument.numPages) {\n return;\n }\n this.pageNum += 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Page backward\n * e\n */\n @Method()\n async pagePrev() {\n if (this.pageNum <= 1) {\n return;\n }\n\n this.pageNum -= 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Unselect all fields\n */\n @Method()\n async unselect() {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [];\n updateSelectionBox.bind(this)();\n }\n\n pageResize() {\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n // const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n }\n\n /**\n * Page and field resize on zoom change\n *\n */\n @Method()\n async setZoom(z: number) {\n this.zoom = z;\n this.pageResize();\n\n // wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';\n // wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';\n\n // place all fields at new zoom level\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(fx => moveField.bind(this)(fx, fx.dataItem));\n\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Ensure broken or misplaced fields are put onto the page.\n * {number} position\n */\n clip(legacyPosition: number, failback: number = 0.0): number {\n return legacyPosition > 1 ? failback : legacyPosition;\n }\n\n /**\n * Decorate the template data object with useful transformations.\n * {string} json of template\n */\n parseTemplate(newValue: string) {\n const newTemplate: LSApiTemplate = JSON.parse(newValue) as any as LSApiTemplate;\n const pages = JSON.parse(JSON.parse(newTemplate.pageDimensions));\n\n // Convert ax,bx,ay etc. into top, left\n // We also add the templateId into every object so that all the information\n // required to mutate is in each object.\n this.pageDimensions = pages.map(p => {\n return { height: p[1], width: p[0] };\n });\n const fields = newTemplate.elementConnection.templateElements.map(f => {\n return {\n ...f,\n top: Math.floor(this.clip(f.ay) * this.pageDimensions[0].height),\n left: Math.floor(this.clip(f.ax) * this.pageDimensions[0].width),\n height: Math.floor((this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height),\n width: Math.floor((this.clip(f.bx, 0.2) - this.clip(f.ax)) * this.pageDimensions[0].width),\n templateId: newTemplate.id,\n };\n });\n\n const preparedRoles: LSApiRole[] = newTemplate.roles.map((ro: LSApiRole) => {\n return { ...ro, templateId: newTemplate.id };\n });\n\n // Only set signer on initial load or if current signer no longer exists\n const signerExistsInRoles = preparedRoles.some(r => r.signerIndex === this.signer);\n if (!signerExistsInRoles) {\n this.signer = preparedRoles.length > 0 ? 1 : 0;\n }\n\n this._template = {\n ...newTemplate,\n elementConnection: { ...newTemplate.elementConnection, templateElements: fields },\n roles: preparedRoles,\n };\n }\n\n /**\n * Render the page based on pageNumber\n * {number} pageNumber\n */\n private readonly RENDER_SCALE = 2;\n\n renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n if (this.pdfDocument !== undefined && this.pdfDocument !== null) {\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PageViewport = page.getViewport({ scale: this.zoom * this.RENDER_SCALE });\n\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n this.canvas.style.width = Math.floor(this.pageDimensions[this.pageNum - 1].width * this.zoom) + 'px';\n this.canvas.style.height = Math.floor(this.pageDimensions[this.pageNum - 1].height * this.zoom) + 'px';\n\n const renderContext = {\n canvasContext: this.ctx,\n viewport,\n };\n\n // Render page method\n const renderTask: RenderTask = page.render(renderContext as any);\n\n // Wait for rendering to finish\n renderTask.promise.then(() => {\n this.isPageRendering = false;\n this.pageRendered.emit(this.pageNum);\n\n if (this.pageNumPending !== null) {\n this.renderPage(this.pageNumPending); // New page rendering is pending\n this.pageChange.emit(this.pageNumPending); // emit\n this.pageNumPending = null;\n }\n });\n });\n }\n }\n\n private queueRenderPage(pageNumber: number): void {\n if (this.isPageRendering) {\n this.pageNumPending = pageNumber;\n } else {\n this.renderPage(pageNumber);\n }\n }\n\n private loadAndRender(src: string): void {\n getDocument(src).promise.then((pdfDocument: PDFDocumentProxy) => {\n this.pdfDocument = pdfDocument;\n this.renderPage(this.pageNum);\n });\n }\n\n // Fills in and converts all utility and placement fields\n prepareElement(newElement: LSApiElement): LSApiElement {\n return {\n ...newElement,\n top: Math.floor(this.clip(newElement.ay) * this.pageDimensions[newElement.page - 1].height),\n left: Math.floor(this.clip(newElement.ax) * this.pageDimensions[newElement.page - 1].width),\n height: Math.floor((this.clip(newElement.by, 0.05) - this.clip(newElement.ay)) * this.pageDimensions[newElement.page - 1].height),\n width: Math.floor((this.clip(newElement.bx, 0.2) - this.clip(newElement.ax)) * this.pageDimensions[newElement.page - 1].width),\n pageDimensions: this.pageDimensions[newElement.page - 1],\n templateId: this._template.id,\n };\n }\n\n // internal forced change\n syncChange(update: LSMutateEvent) {\n if (update?.select === 'clear') {\n this.unselect();\n }\n\n if (getApiType(update.data) === 'element') {\n if (update.action === 'create') {\n // const newData = { ...update.data, page: this.pageNum };\n // addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), newData);\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n //this.selected = [newField];\n //this.selectFields.emit([newData as LSApiElement]);\n } else if (update.action === 'update') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (fi) {\n moveField.bind(this)(fi, update.data);\n // Update assignee label when signer changes\n const signer = (update.data as any).signer;\n const assignee = this.mode === 'compose'\n ? this._recipients?.find(r => r.signerIndex === signer)\n : this._template.roles.find(r => r.signerIndex === signer);\n fi.setAttribute(\n 'assignee',\n signer === 0\n ? 'Sender'\n : this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${signer}`,\n );\n this.selected = this.selected.map(s => (s.dataItem.id === update.data.id ? fi : s));\n }\n // Reselect the fields - this updates the dataItem value passed to child controls\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n this.selected = Array.from(fields).filter(fx => fx.selected);\n // Sync selectedDataItems so the sidebar and toolbar reflect updated positions/sizes\n this.selectedDataItems = this.selected.map(f => f.dataItem);\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) toolbar.dataItem = this.selectedDataItems;\n // Update template elements so validation runs against current data\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: Array.from(fields).map(ef => ef.dataItem) },\n };\n // Sync sidebar and toolbar with updated data\n this.selectedDataItems = this.selected.map(s => s.dataItem);\n if (toolbar) toolbar.dataItem = this.selectedDataItems;\n // Update selection box to match new field positions (e.g. after undo/redo)\n updateSelectionBox.bind(this)();\n } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (!fi) return;\n const fields = this._template.elementConnection.templateElements;\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: fields.filter(f => f.id !== update.data.id) } };\n this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi);\n this.selectFields.emit([]);\n } else {\n console.warn('Unrecognised action, check Legalesign documentation. `create`, `update` and `delete` allowed.');\n }\n }\n\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }\n\n private _initialized: boolean = false;\n\n initViewer() {\n // Generate a canvas to draw the background PDF on.\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n this.ctx = this.canvas.getContext('2d');\n if (this._template?.link) this.loadAndRender(this._template?.link);\n\n var dropTarget = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLCanvasElement;\n var wrapperTarget = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLElement;\n\n // Used for single field selection\n if (this.mode !== 'preview' || this._template?.locked === true) {\n dropTarget.addEventListener('click', mouseClick.bind(this));\n wrapperTarget.addEventListener('mousedown', mouseDown.bind(this));\n document.addEventListener('mousemove', mouseMove.bind(this));\n document.addEventListener('mouseup', mouseUp.bind(this));\n dropTarget.addEventListener('dblclick', mouseDoubleClick.bind(this));\n // Remove any previous keydown listener before adding a new one\n if (_activeKeyDownListener) {\n document.removeEventListener('keydown', _activeKeyDownListener);\n }\n _activeKeyDownListener = keyDown.bind(this);\n document.addEventListener('keydown', _activeKeyDownListener);\n }\n\n // Listen for flushed mutations from destroyed sidebar components\n document.addEventListener('ls-flush-mutate', ((e: CustomEvent) => {\n this.mutate.emit(e.detail);\n }) as EventListener);\n\n // Pinch-to-zoom (trackpad) and Ctrl/Cmd+scroll zoom\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n wrapper.addEventListener('wheel', (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const factor = e.deltaY > 0 ? 0.95 : 1.05;\n const newZoom = Math.min(Math.max(this.zoom * factor, 0.25), 5);\n const scale = newZoom / this.zoom;\n\n // Cursor position relative to wrapper viewport\n const rect = wrapper.getBoundingClientRect();\n const cursorX = e.clientX - rect.left;\n const cursorY = e.clientY - rect.top;\n\n // Adjust scroll so the point under cursor stays fixed\n wrapper.scrollLeft = (wrapper.scrollLeft + cursorX) * scale - cursorX;\n wrapper.scrollTop = (wrapper.scrollTop + cursorY) * scale - cursorY;\n\n this.setZoom(Math.round(newZoom * 1e2) / 1e2);\n }, { passive: false });\n\n this.generateFields();\n this._initialized = true;\n }\n\n // Generate all the field HTML elements that are required (for every page)\n generateFields(clearExisting: boolean = true) {\n if (clearExisting) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fi => this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi));\n }\n\n const elements = [...this._template.elementConnection.templateElements];\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: [] } };\n elements.forEach(te => {\n addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), this.prepareElement(te));\n });\n }\n\n showPageFields(page: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n Array.from(fields).forEach(fx => {\n fx.className = fx.dataItem.page === page ? '' : 'ls-dv-hidden';\n // Find assignee for this field\n const data = fx.dataItem;\n const assignee = this.mode === 'compose' ? this._recipients?.find(r => r.signerIndex === data.signer) : this._template.roles.find(r => r.signerIndex === data.signer);\n fx.setAttribute(\n 'assignee',\n this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${data.signer}`,\n );\n });\n }\n\n async load() {\n this.isLoading = true;\n this._loadGeneration++;\n clearHistory();\n // Get all template and group listing data.\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.initViewer();\n\n if (this.mode === 'compose') {\n this.manager = 'recipient';\n if (!this.recipients) {\n throw new Error('Compose mode requires a \"recipients\" attribute. See documentation for the expected JSON format.');\n }\n this._recipients = JSON.parse(this.recipients.replace('\\u0022', '\"')).sort((a, b) => {\n // Signers (signerIndex < 100) come before witnesses (signerIndex >= 100) for the same base index\n const aBase = a.signerIndex % 100 || 100;\n const bBase = b.signerIndex % 100 || 100;\n if (aBase !== bBase) return aBase - bBase;\n // If base is the same, signer comes before witness\n if (a.signerIndex < 100 && b.signerIndex >= 100) return -1;\n if (a.signerIndex >= 100 && b.signerIndex < 100) return 1;\n // Otherwise, keep original order\n return a.signerIndex - b.signerIndex;\n });\n\n //Generate roles for any not already present\n generateRoles.bind(this)();\n }\n\n //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n\n if (this.mode === 'preview') {\n requestAnimationFrame(() => {\n const midArea = this.component.shadowRoot.getElementById('ls-mid-area');\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n const wrapperStyle = getComputedStyle(wrapper);\n const paddingY = parseFloat(wrapperStyle.paddingTop) + parseFloat(wrapperStyle.paddingBottom);\n const paddingX = parseFloat(wrapperStyle.paddingLeft) + parseFloat(wrapperStyle.paddingRight);\n const availableHeight = midArea.clientHeight - paddingY;\n const availableWidth = midArea.clientWidth - paddingX;\n const scaleH = availableHeight / this.pageDimensions[this.pageNum - 1].height;\n const scaleW = availableWidth / this.pageDimensions[this.pageNum - 1].width;\n const scale = Math.min(scaleH, scaleW);\n this.setZoom(Math.round(scale * 1e2) / 1e2);\n });\n }\n } catch (e: any) {\n this.isLoading = false;\n const isAuthError = e?.message?.includes('401') || e?.message?.includes('403') || e?.message?.includes('Unauthorized') || e?.status === 401 || e?.status === 403;\n if (isAuthError) {\n console.error('Authentication failed.', e);\n this.errorTitle = dvI18n.t('viewer.autherror');\n this.error = dvI18n.t('viewer.autherrormessage');\n } else {\n console.error('Failed to load template.', e?.message || e);\n this.errorTitle = dvI18n.t('viewer.loaderror');\n this.error = dvI18n.t('viewer.loaderrormessage');\n }\n }\n }\n\n async reload() {\n this.isLoading = true;\n this._loadGeneration++;\n clearHistory();\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.generateFields();\n this.showPageFields(this.pageNum);\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n if (this._template?.link) this.loadAndRender(this._template.link);\n } catch (e: any) {\n this.isLoading = false;\n console.error('Failed to reload template.', e?.message || e);\n }\n }\n\n componentWillLoad() {\n if (this.language) {\n dvI18n.changeLanguage(this.language);\n }\n if (this.token && !this._template) this.load();\n }\n\n private _resizeObserver: ResizeObserver;\n\n componentDidLoad() {\n this._resizeObserver = new ResizeObserver(entries => {\n const { width, height } = entries[0].contentRect;\n this.loaderSize = Math.min(200, Math.floor(Math.min(width, height) * 0.4));\n });\n this._resizeObserver.observe(this.component);\n }\n\n disconnectedCallback() {\n this._resizeObserver?.disconnect();\n }\n\n handleManagerChange(manager: string) {\n this.manager = manager as any;\n }\n\n showTool(fieldFormType: string): boolean {\n return this.filtertoolbox === null || this.filtertoolbox.split('|').includes(fieldFormType);\n }\n\n /// Check if the current signer has a role of the specified type\n checkType(type: LSApiRoleType): boolean {\n if (this.mode === 'compose' && this._recipients) {\n return this._recipients.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else if (this._template) {\n return this._template.roles.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else return false;\n }\n\n render() {\n return (\n <Host class={{ 'ls-dv-preview-mode': this.mode === 'preview' }}>\n <>\n {this.isLoading && (\n <>\n <div class={'ls-dv-page-loader'}>\n <ls-loading-logo size={this.loaderSize} colour=\"var(--primary-60)\" />\n </div>\n <div class={'ls-dv-custom-loader-slot'}>\n <slot name=\"custom-loader\"></slot>\n </div>\n {this.mode === 'compose' && <ls-compose-loader />}\n </>\n )}\n {this.error && (\n <div class=\"ls-dv-error-state\">\n <div class=\"ls-dv-error-card\">\n <ls-icon name=\"exclamation-circle-icon\" size={32} style={{ color: 'var(--red-60, #dc2626)' }} />\n <p class=\"ls-dv-error-title\">{this.errorTitle}</p>\n <p class=\"ls-dv-error-message\">{this.error}</p>\n </div>\n </div>\n )}\n {this.mode !== 'preview' && (\n <div class=\"ls-dv-page-header\">\n <div class={'ls-dv-left-slot-wrapper'}>\n <slot name=\"left-button\" />\n </div>\n <div class={'ls-dv-right-slot-wrapper'}>\n <slot name=\"right-button\" />\n </div>\n {this.mode === 'editor' && (\n <div>\n <span class=\"ls-dv-header-text-1\">{dvI18n.t('viewer.templatecreation')}</span>\n <span>/</span>\n <span class=\"ls-dv-header-text-2\">{this._template?.title}</span>\n </div>\n )}\n {this.mode === 'compose' && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <slot name=\"top-bar\"></slot>\n </div>\n )}\n </div>\n )}\n\n <form id=\"ls-editor-form\">\n <ls-left-bar\n mode={this.mode}\n selected={this.selected}\n manager={this.manager}\n signer={this.signer}\n filtertoolbox={this.filtertoolbox}\n template={this._template}\n recipients={this._recipients}\n validationErrors={this.validationErrors}\n fieldTypeSelected={this.fieldTypeSelected}\n displayTable={this.displayTable}\n selectedDataItems={this.selectedDataItems}\n busy={this.isMutating}\n onManagerChange={e => this.handleManagerChange(e.detail)}\n onClearSelected={() => {\n this.unselect();\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) toolbar.dataItem = [];\n }}\n >\n <slot name=\"recipient-panel\" slot=\"recipient-panel\" />\n </ls-left-bar>\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} mode={this.mode} signer={this.signer} selected={this.selected} pageNum={this.pageNum} />\n <div id=\"ls-mid-area\">\n <div class={{'ls-dv-document-frame-wrapper': true, 'ls-dv-document-frame-wrapper--preview': this.mode === 'preview'}} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'ls-dv-hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'ls-dv-hidden'} />\n <div id=\"ls-box-selector\"></div>\n <div id=\"ls-drag-selector\"></div>\n {this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (\n <ls-select-menu\n class=\"ls-dv-select-menu-position\"\n selected={this.selected}\n pageNum={this.pageNum}\n editor={this}\n />\n )}\n {this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (\n <ls-select-menu\n class=\"ls-dv-select-menu-floating\"\n selected={this.selected}\n pageNum={this.pageNum}\n editor={this}\n floating={true}\n />\n )}\n </div>\n </div>\n <ls-statusbar editor={this} page={this.pageNum} pageCount={this.pageCount} mode={this.mode} canUndo={canUndo()} canRedo={canRedo()} />\n {this.mode === 'editor' && (\n <div class={'ls-dv-validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n <slot name=\"next-button\"></slot>\n </div>\n )}\n </div>\n </form>\n </>\n <ls-tooltip tooltipId=\"ls-dv-tooltip\" />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ls-document-viewer.js","sourceRoot":"","sources":["../../../../src/components/ls-document-viewer/ls-document-viewer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Polyfill URL.parse for older browsers (used by pdfjs-dist)\nif (typeof URL.parse !== 'function') {\n (URL as any).parse = function (url: string, base?: string | URL): URL | null {\n try {\n return base ? new URL(url, base) : new URL(url);\n } catch {\n return null;\n }\n };\n}\n\nimport { Component, Host, Prop, h, Element, Method, State, Listen, Watch } from '@stencil/core';\nimport { Event, EventEmitter } from '@stencil/core';\nimport { LSApiElement } from '../../types/LSApiElement';\nimport { PDFDocumentProxy, PDFPageProxy, PageViewport, RenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport { dvI18n } from '../../i18n/i18n';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME, FIELD_DEFAULTS } from '../../constants/fieldDefaults';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { recordMutations, clearHistory, canUndo, canRedo } from './history';\nimport { mouseClick, mouseDoubleClick, mouseDown, mouseMove, mouseUp, toolboxDragStart } from './mouseHandlers';\nimport { getApiType, getInputType, matchData } from './editorUtils';\nimport { updateSelectionBox } from './mouseHandlers';\n// import { RoleColor } from '../../types/RoleColor';\nimport { LSApiRole, LSApiRoleType } from '../../types/LSApiRole';\nimport { LsDocumentAdapter } from './adapter/LsDocumentAdapter';\nimport { getTemplate } from './adapter/templateActions';\nimport { getGroupData } from './adapter/groupActions';\nimport { ValidationError } from '../../types/ValidationError';\nimport { validate } from './validator';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { generateRoles } from './generateRoles';\n\nGlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@5.4.449/build/pdf.worker.min.mjs`;\n\n// Module-level reference to the document keydown listener so it can be cleaned up across remounts\nlet _activeKeyDownListener: ((e: KeyboardEvent) => void) | null = null;\n\n/**\n * The Legalesign page viewer converted to stencil. To use pass the standard\n * Template information from GraphQL (see Readme).\n *\n * Alex Weinle\n */\n\n@Component({\n tag: 'ls-document-viewer',\n styleUrl: 'ls-document-viewer.scss',\n shadow: true,\n})\nexport class LsDocumentViewer {\n @Element() component: HTMLElement;\n\n private isPageRendering: boolean;\n private pdfDocument: any;\n private pageNumPending: number = null;\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n public pageDimensions: { height: number; width: number }[]; // hardcoded to start at the page 1\n // @ts-ignore\n private isMoving: boolean = false;\n // @ts-ignore\n private isBoxing: boolean = false;\n // @ts-ignore\n private selectionBox: { x: number; y: number } = null;\n // @ts-ignore\n private hitField: HTMLElement;\n // @ts-ignore\n private edgeSide: string;\n // @ts-ignore\n private startLocations: { left: number; top: number; height: number; width: number }[];\n // @ts-ignore\n private startMouse: { left: number; top: number; height: number; width: number; x: number; y: number };\n // @ts-ignore\n private _isToolboxDragging: boolean = false;\n // @ts-ignore\n private _cancelToolboxDrag: (() => void) | null = null;\n\n //\n // --- Properties / Inputs --- //\n //\n\n /**\n * The initial template data, including the link for background PDF. See README and\n * example for correct GraphQL query and data structure.\n * {LSApiTemplate}\n */\n @Prop() template: string;\n\n /**\n * The access token of the account your want the widget to use, you should normally\n * acquire this with a server side call using that accounts login credentials.\n * {string}\n */\n @Prop() token: string;\n\n /**\n * This will override the default production user pool.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() userpool: string;\n\n /**\n * This will override the default production graphql endpoint.\n * Almost exclusively used for internal development.\n * {string}\n */\n @Prop() endpoint: string;\n\n /**\n * The id of the template you want to load (if using the internal data adapter).\n * {string}\n */\n @Prop() templateid: string;\n\n @Watch('templateid')\n templateIdChanged() {\n if (this.token && this._initialized) this.reload();\n }\n\n /**\n * A JSON string containing the recipient details. Only used in COMPOSE mode.\n * {string}\n */\n @Prop() recipients: string;\n @Prop() _recipients: any[];\n\n /**\n * Override the detected language. Pass a BCP 47 language code (e.g. 'fr', 'de').\n * {string}\n */\n @Prop() language: string;\n\n @Watch('language')\n languageChanged(newLang: string) {\n if (newLang) {\n dvI18n.changeLanguage(newLang);\n }\n }\n\n @Prop({ mutable: true }) zoom: number = 1.0; // hardcoded to scale the document to full canvas size\n @Prop({ mutable: true }) pageNum: number = 1;\n @Prop({ mutable: true }) pageCount: number = 1;\n @Prop({ mutable: true }) signer: number = 0;\n @Prop({ mutable: true }) groupInfo: any;\n\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n @State() error: string | null = null;\n @State() errorTitle: string | null = null;\n\n /**\n * The following state properties define the defaults for field\n * creation. They should be overridden by the users most used\n * values from localStorage or profile settings.\n */\n @State() fontSize: number = DEFAULT_FONT_SIZE;\n @State() fontFamily: string = DEFAULT_FONT_NAME;\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\n @State() isMutating: boolean = false;\n @State() loaderSize: number = 200;\n @State() selectedDataItems: LSApiElement[] = [];\n @State() fieldTypeSelected: IToolboxField = {\n label: 'Signature',\n formElementType: 'signature',\n elementType: 'signature',\n validation: 0,\n defaultHeight: 27,\n defaultWidth: 120,\n };\n\n /**\n * An ease of use property that will arrange document-viewer appropraitely.\n * {'preview' | 'editor' | 'custom'}\n */\n @Prop() mode: 'preview' | 'editor' | 'compose' = 'editor';\n\n @Watch('mode')\n modeHandler(_newMode, _oldMode) {\n if (_newMode === 'preview') {\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showstatusbar = true;\n this.readonly = false;\n }\n \n // Update readonly attribute on all existing fields\n const fields = this.component.shadowRoot?.querySelectorAll('ls-editor-field');\n if (fields) {\n fields.forEach(field => {\n field.setAttribute('readonly', String(_newMode === 'preview'));\n });\n }\n }\n\n @Watch('_template')\n templateLockedHandler() {\n const fields = this.component.shadowRoot?.querySelectorAll('ls-editor-field');\n if (fields) {\n fields.forEach(field => {\n field.setAttribute('readonly', String(this.mode === 'preview' || this._template?.locked));\n });\n }\n }\n\n @Watch('zoom')\n zoomChanged(newZoom: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(f => f.setAttribute('zoom', String(newZoom)));\n const statusbar = this.component.shadowRoot.querySelector('ls-statusbar') as any;\n if (statusbar) statusbar.zoom = newZoom;\n }\n\n /**\n * Determines / sets which of the far left 'managers' is active.\n * {'document' | 'toolbox' | 'participant' }\n */\n @Prop({ mutable: true }) manager: 'document' | 'toolbox' | 'participant' | 'recipient' | 'validation' = 'toolbox';\n\n /**\n * Shows the table view of fields rather than the preview.\n * {boolean}\n */\n @Prop({ mutable: true }) displayTable?: boolean = false;\n\n /**\n * Allows the selection of fields in the toolbox to be limited to a | (pipe) delimited list.\n * {string}\n */\n @Prop() filtertoolbox?: string = null;\n\n /**\n * Whether the bottom statusbar is displayed.\n * {boolean}\n */\n @Prop() showstatusbar?: boolean = false;\n\n /**\n * Whether the page previewvertical ribbon will be shown\n * {boolean}\n */\n @Prop() showpagepreview?: boolean = false;\n\n /**\n * Whether the right panel (which can be default field properties or custom panel) is\n * displayed.\n * {boolean}\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Whether the table view of the fields on this template is available to the user.\n * {boolean}\n */\n @Prop() showtableview?: boolean = false;\n\n /**\n * If supplied ONLY items in this | (\"or\") delimited list will be shown. i.e. \"signature|intials\"\n * {boolean}\n */\n @Prop() toolboxFilter?: string = null;\n\n //\n // --- Event Emitters --- //\n //\n @Event() pageRendered: EventEmitter<number>;\n // @Event() error: EventEmitter<any>;\n @Event() pageChange: EventEmitter<number>;\n // Multiple or single select\n @Event() selectFields: EventEmitter<LSApiElement[]>;\n // Send an internal event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n\n // Send an external event to be mmonitored by an external developer\n @Event() update: EventEmitter<{ event: LSMutateEvent; template: LSApiTemplate }>;\n\n // Send an external validation event to be monitored by an external developer\n @Event() validate: EventEmitter<{ valid: boolean; errors: ValidationError[] }>;\n\n @Event({\n bubbles: true,\n composed: true,\n })\n addParticipant: EventEmitter<{ name?: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>;\n\n private adapter: LsDocumentAdapter;\n public _skipHistory: boolean = false;\n private _loadGeneration: number = 0;\n\n // Action an external data action and use the result (if required)\n @Listen('mutate')\n mutateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (this.token && this.adapter) {\n const mutations = Array.isArray(event.detail) ? event.detail : [event.detail];\n\n // Record history for undo/redo (skip if this mutation came from undo/redo itself)\n if (!this._skipHistory) {\n const beforeStates = new Map<string, any>();\n mutations.forEach(me => {\n const data = me.data as any;\n if (me.action === 'update' && data?.id) {\n const existing = this.component.shadowRoot?.getElementById('ls-field-' + data.id) as HTMLLsEditorFieldElement;\n if (existing?.dataItem) {\n beforeStates.set(data.id, { ...existing.dataItem });\n }\n } else if (me.action === 'delete' && data?.id) {\n const existing = this.component.shadowRoot?.getElementById('ls-field-' + data.id) as HTMLLsEditorFieldElement;\n if (existing?.dataItem) {\n beforeStates.set(data.id, { ...existing.dataItem });\n }\n }\n });\n recordMutations(mutations, beforeStates);\n }\n this._skipHistory = false;\n\n this.isMutating = true;\n const currentGeneration = this._loadGeneration;\n const promises = mutations.map(me =>\n this.adapter\n .handleEvent(me, this.token)\n .then(result => {\n if (result === 'invalid') return;\n // Discard stale responses from a previous template\n if (this._loadGeneration !== currentGeneration) return;\n // Cascade name change to witness if it still matches a default pattern\n // Must check before matchData/syncRoles overwrites this._template.roles\n if (me.action === 'update' && (me.data as LSApiRole).roleType !== 'WITNESS') {\n const role = me.data as LSApiRole;\n const oldRole = this._template.roles.find(r => r.id === role.id);\n if (oldRole && oldRole.name !== role.name) {\n const witness = this._template.roles.find(r => r.signerParent === role.id && r.roleType === 'WITNESS');\n if (witness) {\n const hasDefaultName = witness.name === 'Participant ' + witness.ordinal;\n const hasParentWitnessName = witness.name === oldRole.name + ' Witness';\n if (hasDefaultName || hasParentWitnessName) {\n // If parent reverts to default, witness should also revert to default\n const newWitnessName = role.name === 'Participant ' + role.ordinal\n ? 'Participant ' + witness.ordinal\n : role.name + ' Witness';\n const updatedWitness = { ...witness, name: newWitnessName };\n this.adapter.handleEvent({ action: 'update', data: updatedWitness }, this.token).then(wr => {\n if (wr !== 'invalid') matchData.bind(this)(wr);\n });\n }\n }\n }\n }\n // Swap/delete/create: after structural changes, sync default names to new ordinals\n if (me.action === 'swap' || me.action === 'delete' || me.action === 'create') {\n // Snapshot all roles with default names before ordinals shift\n const preChangeDefaults = this._template.roles\n .filter(r => r.name === 'Participant ' + r.ordinal)\n .map(r => r.id);\n return Promise.resolve(matchData.bind(this)(result)).then(() => {\n const updates: Promise<any>[] = [];\n for (const id of preChangeDefaults) {\n const fresh = this._template.roles.find(r => r.id === id);\n if (fresh && fresh.name !== 'Participant ' + fresh.ordinal) {\n updates.push(this.adapter.handleEvent({ action: 'update', data: { ...fresh, name: 'Participant ' + fresh.ordinal } }, this.token).then(r => {\n if (r !== 'invalid') matchData.bind(this)(r);\n }));\n }\n }\n return Promise.all(updates);\n });\n }\n matchData.bind(this)(result);\n })\n .then(() => this.syncChange(me))\n .catch(() => {\n // Revalidate against current template state on API failure\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }),\n );\n Promise.all(promises).finally(() => {\n requestAnimationFrame(() => {\n this.isMutating = false;\n });\n });\n }\n }\n\n @Listen('update')\n updateHandler(event: CustomEvent<LSMutateEvent[]>) {\n const details = event.detail;\n if (!details || !Array.isArray(details) || details.length === 0) return;\n event.stopPropagation();\n\n const source = event.target as HTMLElement;\n const isFromEditorField = source?.tagName === 'LS-EDITOR-FIELD';\n\n for (const detail of details) {\n if (detail?.action === 'update' && detail?.data?.id) {\n const updatedData = detail.data as LSApiElement;\n\n // Sync selectedDataItems so sidebar reflects the latest value\n this.selectedDataItems = this.selectedDataItems.map(item =>\n item.id === updatedData.id ? { ...updatedData } : item,\n );\n\n // Sync toolbar dataItem so format/alignment changes use current values\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar?.dataItem) {\n toolbar.dataItem = toolbar.dataItem.map(item =>\n item.id === updatedData.id ? { ...updatedData } : item,\n );\n }\n\n // Only sync editor field if the change came from the sidebar\n if (!isFromEditorField) {\n const editorField = this.component.shadowRoot?.getElementById('ls-field-' + updatedData.id) as HTMLLsEditorFieldElement;\n if (editorField) {\n editorField.dataItem = { ...updatedData };\n }\n }\n }\n }\n\n // Optimistic validation: run validate against a temp template with the updated element\n const optimisticTemplate = {\n ...this._template,\n elementConnection: {\n ...this._template.elementConnection,\n templateElements: this._template.elementConnection.templateElements.map(el => {\n const updated = details.find(d => d.action === 'update' && d.data?.id === el.id);\n return updated ? { ...el, ...updated.data } as LSApiElement : el;\n }),\n },\n };\n this.validationErrors = validate.bind(this)(optimisticTemplate as LSApiTemplate);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }\n\n @Listen('fieldTypeSelected')\n handleFieldTypeSelected(event) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-toolbox-field');\n\n fields.forEach(element => {\n element.isSelected = element.formElementType === event.detail.formElementType;\n });\n\n this.fieldTypeSelected = event.detail;\n }\n\n @Listen('toolboxDragStart')\n handleToolboxDragStart(event) {\n toolboxDragStart.bind(this)(event.detail);\n }\n\n // generate a new role on the template\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ name: string | null; type: LSApiRoleType; parent?: string | null; signerIndex?: number }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = event.detail.signerIndex > 99 ? this._template.roles.find(r => r.signerIndex === event.detail.signerIndex % 100) : null;\n const newSignerIndex =\n event.detail.type === 'WITNESS' ? parent.signerIndex + 100 : Math.max(...this._template.roles.filter(r => r.roleType !== 'WITNESS').map(r => r.signerIndex)) + 1;\n\n const resolvedSignerIndex = event.detail.signerIndex\n ? event.detail.signerIndex\n : event.detail.type === 'WITNESS'\n ? 100 + parent?.signerIndex\n : this._template.roles.length === 0\n ? 1\n : newSignerIndex;\n\n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: event.detail.name\n ? event.detail.name\n : event.detail.type === 'WITNESS'\n ? (parent?.name === 'Participant ' + parent?.ordinal ? 'Participant ' + (parent?.ordinal + 1) : parent?.name + ' Witness')\n : 'Participant ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: resolvedSignerIndex,\n ordinal: event.detail.type === 'WITNESS' ? parent?.ordinal + 1 : this._template.roles.length + 1,\n signerParent: event.detail.parent,\n experience: defaultExperience.id,\n templateId: this._template.id,\n },\n },\n ];\n this.mutate.emit(data);\n\n // Auto-select the newly created participant\n this.signer = resolvedSignerIndex;\n }\n\n // change the signer selected\n @Listen('changeSigner')\n updateSigner(event: CustomEvent<number>) {\n if (event.detail) {\n this.signer = event.detail;\n }\n }\n\n // Handle field selection from validation tag for immediate placement\n @Listen('selectFieldForPlacement')\n selectFieldForPlacement(event: CustomEvent<{ signerIndex: number; fieldType: string }>) {\n const { signerIndex, fieldType } = event.detail;\n\n // Update the active signer\n this.signer = signerIndex;\n\n // Build the field data directly from defaults\n const defaults = FIELD_DEFAULTS[fieldType] || FIELD_DEFAULTS['signature'];\n \n // Map formElementType to elementType correctly\n let elementType: 'text' | 'signature' | 'initials' | 'admin';\n if (fieldType === 'signature') {\n elementType = 'signature';\n } else if (fieldType === 'initials') {\n elementType = 'initials';\n } else if (fieldType === 'auto sign') {\n elementType = 'admin';\n } else {\n elementType = 'text';\n }\n \n this.fieldTypeSelected = {\n label: fieldType,\n formElementType: fieldType,\n elementType: elementType,\n validation: 0,\n defaultHeight: defaults.defaultHeight,\n defaultWidth: defaults.defaultWidth,\n };\n\n // Switch to toolbox view if not already there\n if (this.manager !== 'toolbox') {\n this.manager = 'toolbox';\n }\n\n // Initiate dragging for the selected field type on next tick\n // (current mousedown/mouseup cycle needs to complete first)\n requestAnimationFrame(() => {\n toolboxDragStart.bind(this)(this.fieldTypeSelected);\n });\n }\n\n // Send selection changes to bars and panels if in use.\n @Listen('selectFields')\n selectFieldsHandler(event: CustomEvent<LSApiElement[]>) {\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field'));\n // update the template with all the latest values in the\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: fields.map(ef => ef.dataItem) },\n };\n\n var toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) {\n toolbar.dataItem = event.detail as any as LSApiElement[];\n }\n if (event.detail.length === 0) {\n this.selected = [];\n } else {\n console.log(event.detail, 'selected');\n this.selectedDataItems = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n const isMulti = event.detail.length > 1;\n fields.forEach(f => {\n (f as HTMLLsEditorFieldElement).selected = false;\n (f as HTMLLsEditorFieldElement).multiSelected = false;\n });\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n if (fu) {\n fu.selected = true;\n fu.multiSelected = isMulti;\n }\n });\n\n this.selected = (fields as HTMLLsEditorFieldElement[]).filter(fx => fx.selected);\n\n // Open date picker only when exactly one date field is selected\n if (event.detail.length === 1) {\n const field = this.component.shadowRoot.getElementById('ls-field-' + event.detail[0].id) as HTMLLsEditorFieldElement;\n if (field && getInputType(event.detail[0].validation)?.inputType === 'date' && this.mode !== 'preview') {\n requestAnimationFrame(() => {\n const editbox = field.shadowRoot?.getElementById('editing-input') as HTMLInputElement;\n if (editbox) editbox.showPicker();\n });\n }\n }\n\n updateSelectionBox.bind(this)();\n this.validationErrors = validate.bind(this)(this._template);\n\n\n }\n\n // Send role selection changes to bars and panels\n @Listen('roleChange')\n roleHandler(event: CustomEvent<number>) {\n this.signer = event.detail;\n }\n\n //\n // --- Methods --- //\n //\n\n /**\n * Page forward\n * {MouseEvent} e\n */\n @Method()\n async pageNext() {\n if (this.pageNum >= this.pdfDocument.numPages) {\n return;\n }\n this.pageNum += 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Page backward\n * e\n */\n @Method()\n async pagePrev() {\n if (this.pageNum <= 1) {\n return;\n }\n\n this.pageNum -= 1;\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n this.pageResize();\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Unselect all fields\n */\n @Method()\n async unselect() {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [];\n updateSelectionBox.bind(this)();\n }\n\n pageResize() {\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n // const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLDivElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n }\n\n /**\n * Page and field resize on zoom change\n *\n */\n @Method()\n async setZoom(z: number) {\n this.zoom = z;\n this.pageResize();\n\n // wrapper.style.height = this.pageDimensions[this.pageNum - 1].height * z + 200 + 'px';\n // wrapper.style.width = this.pageDimensions[this.pageNum - 1].width * z + 600 + 'px';\n\n // place all fields at new zoom level\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(fx => moveField.bind(this)(fx, fx.dataItem));\n\n this.queueRenderPage(this.pageNum);\n this.showPageFields(this.pageNum);\n updateSelectionBox.bind(this)();\n }\n\n /**\n * Ensure broken or misplaced fields are put onto the page.\n * {number} position\n */\n clip(legacyPosition: number, failback: number = 0.0): number {\n return legacyPosition > 1 ? failback : legacyPosition;\n }\n\n /**\n * Decorate the template data object with useful transformations.\n * {string} json of template\n */\n parseTemplate(newValue: string) {\n const newTemplate: LSApiTemplate = JSON.parse(newValue) as any as LSApiTemplate;\n const pages = JSON.parse(JSON.parse(newTemplate.pageDimensions));\n\n // Convert ax,bx,ay etc. into top, left\n // We also add the templateId into every object so that all the information\n // required to mutate is in each object.\n this.pageDimensions = pages.map(p => {\n return { height: p[1], width: p[0] };\n });\n const fields = newTemplate.elementConnection.templateElements.map(f => {\n return {\n ...f,\n top: Math.floor(this.clip(f.ay) * this.pageDimensions[0].height),\n left: Math.floor(this.clip(f.ax) * this.pageDimensions[0].width),\n height: Math.floor((this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height),\n width: Math.floor((this.clip(f.bx, 0.2) - this.clip(f.ax)) * this.pageDimensions[0].width),\n templateId: newTemplate.id,\n };\n });\n\n const preparedRoles: LSApiRole[] = newTemplate.roles.map((ro: LSApiRole) => {\n return { ...ro, templateId: newTemplate.id };\n });\n\n // Only set signer on initial load or if current signer no longer exists\n const signerExistsInRoles = preparedRoles.some(r => r.signerIndex === this.signer);\n if (!signerExistsInRoles) {\n this.signer = preparedRoles.length > 0 ? 1 : 0;\n }\n\n this._template = {\n ...newTemplate,\n elementConnection: { ...newTemplate.elementConnection, templateElements: fields },\n roles: preparedRoles,\n };\n }\n\n /**\n * Render the page based on pageNumber\n * {number} pageNumber\n */\n private readonly RENDER_SCALE = 2;\n\n renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n if (this.pdfDocument !== undefined && this.pdfDocument !== null) {\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PageViewport = page.getViewport({ scale: this.zoom * this.RENDER_SCALE });\n\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n this.canvas.style.width = Math.floor(this.pageDimensions[this.pageNum - 1].width * this.zoom) + 'px';\n this.canvas.style.height = Math.floor(this.pageDimensions[this.pageNum - 1].height * this.zoom) + 'px';\n\n const renderContext = {\n canvasContext: this.ctx,\n viewport,\n };\n\n // Render page method\n const renderTask: RenderTask = page.render(renderContext as any);\n\n // Wait for rendering to finish\n renderTask.promise.then(() => {\n this.isPageRendering = false;\n this.pageRendered.emit(this.pageNum);\n\n if (this.pageNumPending !== null) {\n this.renderPage(this.pageNumPending); // New page rendering is pending\n this.pageChange.emit(this.pageNumPending); // emit\n this.pageNumPending = null;\n }\n });\n });\n }\n }\n\n private queueRenderPage(pageNumber: number): void {\n if (this.isPageRendering) {\n this.pageNumPending = pageNumber;\n } else {\n this.renderPage(pageNumber);\n }\n }\n\n private loadAndRender(src: string): void {\n getDocument(src).promise.then((pdfDocument: PDFDocumentProxy) => {\n this.pdfDocument = pdfDocument;\n this.renderPage(this.pageNum);\n });\n }\n\n // Fills in and converts all utility and placement fields\n prepareElement(newElement: LSApiElement): LSApiElement {\n return {\n ...newElement,\n top: Math.floor(this.clip(newElement.ay) * this.pageDimensions[newElement.page - 1].height),\n left: Math.floor(this.clip(newElement.ax) * this.pageDimensions[newElement.page - 1].width),\n height: Math.floor((this.clip(newElement.by, 0.05) - this.clip(newElement.ay)) * this.pageDimensions[newElement.page - 1].height),\n width: Math.floor((this.clip(newElement.bx, 0.2) - this.clip(newElement.ax)) * this.pageDimensions[newElement.page - 1].width),\n pageDimensions: this.pageDimensions[newElement.page - 1],\n templateId: this._template.id,\n };\n }\n\n // internal forced change\n syncChange(update: LSMutateEvent) {\n if (update?.select === 'clear') {\n this.unselect();\n }\n\n if (getApiType(update.data) === 'element') {\n if (update.action === 'create') {\n // const newData = { ...update.data, page: this.pageNum };\n // addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), newData);\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n //this.selected = [newField];\n //this.selectFields.emit([newData as LSApiElement]);\n } else if (update.action === 'update') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (fi) {\n moveField.bind(this)(fi, update.data);\n // Update assignee label when signer changes\n const signer = (update.data as any).signer;\n const assignee = this.mode === 'compose'\n ? this._recipients?.find(r => r.signerIndex === signer)\n : this._template.roles.find(r => r.signerIndex === signer);\n fi.setAttribute(\n 'assignee',\n signer === 0\n ? 'Sender'\n : this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${signer}`,\n );\n this.selected = this.selected.map(s => (s.dataItem.id === update.data.id ? fi : s));\n }\n // Reselect the fields - this updates the dataItem value passed to child controls\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n this.selected = Array.from(fields).filter(fx => fx.selected);\n // Sync selectedDataItems so the sidebar and toolbar reflect updated positions/sizes\n this.selectedDataItems = this.selected.map(f => f.dataItem);\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) toolbar.dataItem = this.selectedDataItems;\n // Update template elements so validation runs against current data\n this._template = {\n ...this._template,\n elementConnection: { ...this._template.elementConnection, templateElements: Array.from(fields).map(ef => ef.dataItem) },\n };\n // Sync sidebar and toolbar with updated data\n this.selectedDataItems = this.selected.map(s => s.dataItem);\n if (toolbar) toolbar.dataItem = this.selectedDataItems;\n // Update selection box to match new field positions (e.g. after undo/redo)\n updateSelectionBox.bind(this)();\n } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n if (!fi) return;\n const fields = this._template.elementConnection.templateElements;\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: fields.filter(f => f.id !== update.data.id) } };\n this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi);\n this.selectFields.emit([]);\n } else {\n console.warn('Unrecognised action, check Legalesign documentation. `create`, `update` and `delete` allowed.');\n }\n }\n\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n }\n\n private _initialized: boolean = false;\n\n initViewer() {\n // Generate a canvas to draw the background PDF on.\n this.canvas = this.component.shadowRoot.getElementById('pdf-canvas') as HTMLCanvasElement;\n this.canvas.style.height = this.pageDimensions[this.pageNum - 1].height * this.zoom + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * this.zoom + 'px';\n this.ctx = this.canvas.getContext('2d');\n if (this._template?.link) this.loadAndRender(this._template?.link);\n\n var dropTarget = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLCanvasElement;\n var wrapperTarget = this.component.shadowRoot.getElementById('document-frame-wrapper') as HTMLElement;\n\n // Used for single field selection\n if (this.mode !== 'preview' || this._template?.locked === true) {\n dropTarget.addEventListener('click', mouseClick.bind(this));\n wrapperTarget.addEventListener('mousedown', mouseDown.bind(this));\n document.addEventListener('mousemove', mouseMove.bind(this));\n document.addEventListener('mouseup', mouseUp.bind(this));\n dropTarget.addEventListener('dblclick', mouseDoubleClick.bind(this));\n // Remove any previous keydown listener before adding a new one\n if (_activeKeyDownListener) {\n document.removeEventListener('keydown', _activeKeyDownListener);\n }\n _activeKeyDownListener = keyDown.bind(this);\n document.addEventListener('keydown', _activeKeyDownListener);\n }\n\n // Listen for flushed mutations from destroyed sidebar components\n document.addEventListener('ls-flush-mutate', ((e: CustomEvent) => {\n this.mutate.emit(e.detail);\n }) as EventListener);\n\n // Pinch-to-zoom (trackpad) and Ctrl/Cmd+scroll zoom\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n wrapper.addEventListener('wheel', (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const factor = e.deltaY > 0 ? 0.95 : 1.05;\n const newZoom = Math.min(Math.max(this.zoom * factor, 0.25), 5);\n const scale = newZoom / this.zoom;\n\n // Cursor position relative to wrapper viewport\n const rect = wrapper.getBoundingClientRect();\n const cursorX = e.clientX - rect.left;\n const cursorY = e.clientY - rect.top;\n\n // Adjust scroll so the point under cursor stays fixed\n wrapper.scrollLeft = (wrapper.scrollLeft + cursorX) * scale - cursorX;\n wrapper.scrollTop = (wrapper.scrollTop + cursorY) * scale - cursorY;\n\n this.setZoom(Math.round(newZoom * 1e2) / 1e2);\n }, { passive: false });\n\n this.generateFields();\n this._initialized = true;\n }\n\n // Generate all the field HTML elements that are required (for every page)\n generateFields(clearExisting: boolean = true) {\n if (clearExisting) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n fields.forEach(fi => this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi));\n }\n\n const elements = [...this._template.elementConnection.templateElements];\n this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: [] } };\n elements.forEach(te => {\n addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), this.prepareElement(te));\n });\n }\n\n showPageFields(page: number) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n Array.from(fields).forEach(fx => {\n fx.className = fx.dataItem.page === page ? '' : 'ls-dv-hidden';\n // Find assignee for this field\n const data = fx.dataItem;\n const assignee = this.mode === 'compose' ? this._recipients?.find(r => r.signerIndex === data.signer) : this._template.roles.find(r => r.signerIndex === data.signer);\n fx.setAttribute(\n 'assignee',\n this.mode === 'compose' && assignee?.previousRecipientDecides === true\n ? 'To Be Decided'\n : this.mode === 'compose'\n ? `${assignee?.firstName} ${assignee?.lastName}`\n : assignee?.name || `Participant ${data.signer}`,\n );\n });\n }\n\n async load() {\n this.isLoading = true;\n this._loadGeneration++;\n clearHistory();\n // Get all template and group listing data.\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.initViewer();\n\n if (this.mode === 'compose') {\n this.manager = 'recipient';\n if (!this.recipients) {\n throw new Error('Compose mode requires a \"recipients\" attribute. See documentation for the expected JSON format.');\n }\n this._recipients = JSON.parse(this.recipients.replace('\\u0022', '\"')).sort((a, b) => {\n // Signers (signerIndex < 100) come before witnesses (signerIndex >= 100) for the same base index\n const aBase = a.signerIndex % 100 || 100;\n const bBase = b.signerIndex % 100 || 100;\n if (aBase !== bBase) return aBase - bBase;\n // If base is the same, signer comes before witness\n if (a.signerIndex < 100 && b.signerIndex >= 100) return -1;\n if (a.signerIndex >= 100 && b.signerIndex < 100) return 1;\n // Otherwise, keep original order\n return a.signerIndex - b.signerIndex;\n });\n\n //Generate roles for any not already present\n generateRoles.bind(this)();\n }\n\n //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n\n if (this.mode === 'preview') {\n requestAnimationFrame(() => {\n const midArea = this.component.shadowRoot.getElementById('ls-mid-area');\n const wrapper = this.component.shadowRoot.getElementById('document-frame-wrapper');\n const wrapperStyle = getComputedStyle(wrapper);\n const paddingY = parseFloat(wrapperStyle.paddingTop) + parseFloat(wrapperStyle.paddingBottom);\n const paddingX = parseFloat(wrapperStyle.paddingLeft) + parseFloat(wrapperStyle.paddingRight);\n const availableHeight = midArea.clientHeight - paddingY;\n const availableWidth = midArea.clientWidth - paddingX;\n const scaleH = availableHeight / this.pageDimensions[this.pageNum - 1].height;\n const scaleW = availableWidth / this.pageDimensions[this.pageNum - 1].width;\n const scale = Math.min(scaleH, scaleW);\n this.setZoom(Math.round(scale * 1e2) / 1e2);\n });\n }\n } catch (e: any) {\n this.isLoading = false;\n const isAuthError = e?.message?.includes('401') || e?.message?.includes('403') || e?.message?.includes('Unauthorized') || e?.status === 401 || e?.status === 403;\n if (isAuthError) {\n console.error('Authentication failed.', e);\n this.errorTitle = dvI18n.t('viewer.autherror');\n this.error = dvI18n.t('viewer.autherrormessage');\n } else {\n console.error('Failed to load template.', e?.message || e);\n this.errorTitle = dvI18n.t('viewer.loaderror');\n this.error = dvI18n.t('viewer.loaderrormessage');\n }\n }\n }\n\n async reload() {\n this.isLoading = true;\n this._loadGeneration++;\n clearHistory();\n try {\n this.adapter = new LsDocumentAdapter(this.endpoint);\n const result = (await this.adapter.execute(this.token, getTemplate(this.templateid))) as any;\n this.parseTemplate(JSON.stringify(result.template));\n const resultGroup = (await this.adapter.execute(this.token, getGroupData(this._template.groupId))) as any;\n this.groupInfo = resultGroup.group;\n this.generateFields();\n this.showPageFields(this.pageNum);\n this.validationErrors = validate.bind(this)(this._template);\n this.validate.emit({ valid: this.validationErrors.length === 0, errors: this.validationErrors });\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n if (this._template?.link) this.loadAndRender(this._template.link);\n } catch (e: any) {\n this.isLoading = false;\n console.error('Failed to reload template.', e?.message || e);\n }\n }\n\n componentWillLoad() {\n if (this.language) {\n dvI18n.changeLanguage(this.language);\n }\n if (this.token && !this._template) this.load();\n }\n\n private _resizeObserver: ResizeObserver;\n\n componentDidLoad() {\n this._resizeObserver = new ResizeObserver(entries => {\n const { width, height } = entries[0].contentRect;\n this.loaderSize = Math.min(200, Math.floor(Math.min(width, height) * 0.4));\n });\n this._resizeObserver.observe(this.component);\n }\n\n disconnectedCallback() {\n this._resizeObserver?.disconnect();\n }\n\n handleManagerChange(manager: string) {\n this.manager = manager as any;\n }\n\n showTool(fieldFormType: string): boolean {\n return this.filtertoolbox === null || this.filtertoolbox.split('|').includes(fieldFormType);\n }\n\n /// Check if the current signer has a role of the specified type\n checkType(type: LSApiRoleType): boolean {\n if (this.mode === 'compose' && this._recipients) {\n return this._recipients.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else if (this._template) {\n return this._template.roles.find(r => r.roleType === type && r.signerIndex === this.signer) !== undefined;\n } else return false;\n }\n\n render() {\n return (\n <Host class={{ 'ls-dv-preview-mode': this.mode === 'preview' }}>\n <>\n {this.isLoading && (\n <>\n <div class={'ls-dv-page-loader'}>\n <ls-loading-logo size={this.loaderSize} colour=\"var(--primary-60)\" />\n </div>\n <div class={'ls-dv-custom-loader-slot'}>\n <slot name=\"custom-loader\"></slot>\n </div>\n {this.mode === 'compose' && <ls-compose-loader />}\n </>\n )}\n {this.error && (\n <div class=\"ls-dv-error-state\">\n <div class=\"ls-dv-error-card\">\n <ls-icon name=\"exclamation-circle-icon\" size={32} style={{ color: 'var(--red-60, #dc2626)' }} />\n <p class=\"ls-dv-error-title\">{this.errorTitle}</p>\n <p class=\"ls-dv-error-message\">{this.error}</p>\n </div>\n </div>\n )}\n {this.mode !== 'preview' && (\n <div class=\"ls-dv-page-header\">\n <div class={'ls-dv-left-slot-wrapper'}>\n <slot name=\"left-button\" />\n </div>\n <div class={'ls-dv-right-slot-wrapper'}>\n <slot name=\"right-button\" />\n </div>\n {this.mode === 'editor' && (\n <div>\n <span class=\"ls-dv-header-text-1\">{dvI18n.t('viewer.templatecreation')}</span>\n <span>/</span>\n <span class=\"ls-dv-header-text-2\">{this._template?.title}</span>\n </div>\n )}\n {this.mode === 'compose' && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <slot name=\"top-bar\"></slot>\n </div>\n )}\n </div>\n )}\n\n <form id=\"ls-editor-form\">\n <ls-left-bar\n mode={this.mode}\n selected={this.selected}\n manager={this.manager}\n signer={this.signer}\n filtertoolbox={this.filtertoolbox}\n template={this._template}\n recipients={this._recipients}\n validationErrors={this.validationErrors}\n fieldTypeSelected={this.fieldTypeSelected}\n displayTable={this.displayTable}\n selectedDataItems={this.selectedDataItems}\n busy={this.isMutating}\n onManagerChange={e => this.handleManagerChange(e.detail)}\n onClearSelected={() => {\n this.unselect();\n const toolbar = this.component.shadowRoot.getElementById('ls-toolbar') as HTMLLsToolbarElement;\n if (toolbar) toolbar.dataItem = [];\n }}\n >\n <slot name=\"recipient-panel\" slot=\"recipient-panel\" />\n </ls-left-bar>\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} mode={this.mode} signer={this.signer} selected={this.selected} pageNum={this.pageNum} />\n <div id=\"ls-mid-area\">\n <div class={{'ls-dv-document-frame-wrapper': true, 'ls-dv-document-frame-wrapper--preview': this.mode === 'preview'}} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'ls-dv-hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'ls-dv-hidden'} />\n <div id=\"ls-box-selector\"></div>\n <div id=\"ls-drag-selector\"></div>\n {this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (\n <ls-select-menu\n class=\"ls-dv-select-menu-position\"\n selected={this.selected}\n pageNum={this.pageNum}\n editor={this}\n />\n )}\n {this.mode !== 'preview' && !this._template?.locked && !this.isLoading && this._template?.elementConnection?.templateElements?.length > 0 && (\n <ls-select-menu\n class=\"ls-dv-select-menu-floating\"\n selected={this.selected}\n pageNum={this.pageNum}\n editor={this}\n floating={true}\n />\n )}\n </div>\n </div>\n <ls-statusbar editor={this} page={this.pageNum} pageCount={this.pageCount} mode={this.mode} canUndo={canUndo()} canRedo={canRedo()} />\n {this.mode === 'editor' && (\n <div class={'ls-dv-validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n <slot name=\"next-button\"></slot>\n </div>\n )}\n </div>\n </form>\n </>\n <ls-tooltip tooltipId=\"ls-dv-tooltip\" />\n </Host>\n );\n }\n}\n"]}
@@ -28,6 +28,8 @@ export class LsFieldProperties {
28
28
  return h("ls-field-properties-file", { dataItem: this.dataItem[0], readonly: this.readonly, roles: roles, filtertoolbox: this.filtertoolbox });
29
29
  case 'checkbox':
30
30
  return h("ls-field-properties-checkbox", { dataItem: this.dataItem[0], readonly: this.readonly, roles: roles, filtertoolbox: this.filtertoolbox });
31
+ case 'regular expression':
32
+ return h("ls-field-properties-regex", { dataItem: this.dataItem[0], readonly: this.readonly, roles: roles, filtertoolbox: this.filtertoolbox });
31
33
  default:
32
34
  return h("ls-field-properties-general", { dataItem: this.dataItem[0], readonly: this.readonly, roles: roles, filtertoolbox: this.filtertoolbox });
33
35
  }
@@ -42,7 +44,7 @@ export class LsFieldProperties {
42
44
  event.stopPropagation();
43
45
  };
44
46
  render() {
45
- return (h(Host, { key: 'f41f894c2cc3db8b2bd4c6f84e3b3a08a130b403', onKeyDown: this.handleKeyDown, onKeyUp: this.handleKeyUp }, this.dataItem && this.renderFields(), h("slot", { key: '5de59a1709253febc30753dea39f8eb97e21cfa3' })));
47
+ return (h(Host, { key: '4088ec791550b1cf9353251746b03de369e4ecf3', onKeyDown: this.handleKeyDown, onKeyUp: this.handleKeyUp }, this.dataItem && this.renderFields(), h("slot", { key: '56c86cd2ff0ba31982f656837ff76e31b5a56713' })));
46
48
  }
47
49
  static get is() { return "ls-field-properties"; }
48
50
  static get encapsulation() { return "shadow"; }