legalesign-document-viewer 0.3.4 → 0.3.6

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 (323) hide show
  1. package/dist/cjs/index.cjs.js.map +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/{ls-document-options_40.cjs.entry.js → ls-document-options_42.cjs.entry.js} +1919 -1680
  4. package/dist/cjs/ls-document-options_42.cjs.entry.js.map +1 -0
  5. package/dist/cjs/ls-document-viewer.cjs.js +1 -1
  6. package/dist/cjs/ls-field-properties-dropdown.cjs.entry.js +1 -1
  7. package/dist/cjs/ls-formfield.cjs.entry.js +2 -2
  8. package/dist/cjs/ls-number-input_5.cjs.entry.js +6 -6
  9. package/dist/collection/collection-manifest.json +2 -0
  10. package/dist/collection/components/ls-document-options/ls-document-options.css +18 -0
  11. package/dist/collection/components/ls-document-options/ls-document-options.js +14 -11
  12. package/dist/collection/components/ls-document-options/ls-document-options.js.map +1 -1
  13. package/dist/collection/components/ls-document-viewer/adapter/LsDocumentAdapter.js +1 -1
  14. package/dist/collection/components/ls-document-viewer/adapter/LsDocumentAdapter.js.map +1 -1
  15. package/dist/collection/components/ls-document-viewer/adapter/templateActions.js +2 -0
  16. package/dist/collection/components/ls-document-viewer/adapter/templateActions.js.map +1 -1
  17. package/dist/collection/components/ls-document-viewer/editorCalculator.js +1 -1
  18. package/dist/collection/components/ls-document-viewer/editorCalculator.js.map +1 -1
  19. package/dist/collection/components/ls-document-viewer/editorUtils.js +2 -3
  20. package/dist/collection/components/ls-document-viewer/editorUtils.js.map +1 -1
  21. package/dist/collection/components/ls-document-viewer/keyHandlers.js +15 -0
  22. package/dist/collection/components/ls-document-viewer/keyHandlers.js.map +1 -1
  23. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +97 -49
  24. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
  25. package/dist/collection/components/ls-document-viewer/mouseHandlers.js +56 -0
  26. package/dist/collection/components/ls-document-viewer/mouseHandlers.js.map +1 -1
  27. package/dist/collection/components/ls-editor-table/ls-editor-table.js +1 -1
  28. package/dist/collection/components/ls-feature-column/ls-feature-column.js +10 -4
  29. package/dist/collection/components/ls-feature-column/ls-feature-column.js.map +1 -1
  30. package/dist/collection/components/ls-field-alignment/ls-field-alignment.js +8 -2
  31. package/dist/collection/components/ls-field-alignment/ls-field-alignment.js.map +1 -1
  32. package/dist/collection/components/ls-field-content/ls-field-content.js +2 -2
  33. package/dist/collection/components/ls-field-dimensions/ls-field-dimensions.js +7 -1
  34. package/dist/collection/components/ls-field-dimensions/ls-field-dimensions.js.map +1 -1
  35. package/dist/collection/components/ls-field-distribute/ls-field-distribute.js +31 -21
  36. package/dist/collection/components/ls-field-distribute/ls-field-distribute.js.map +1 -1
  37. package/dist/collection/components/ls-field-footer/ls-field-footer.js +1 -1
  38. package/dist/collection/components/ls-field-format/ls-field-format.css +6 -0
  39. package/dist/collection/components/ls-field-format/ls-field-format.js +38 -12
  40. package/dist/collection/components/ls-field-format/ls-field-format.js.map +1 -1
  41. package/dist/collection/components/ls-field-placement/ls-field-placement.js +7 -1
  42. package/dist/collection/components/ls-field-placement/ls-field-placement.js.map +1 -1
  43. package/dist/collection/components/ls-field-properties/ls-field-properties.js +1 -1
  44. package/dist/collection/components/ls-field-properties-advanced/ls-field-properties-advanced.js +2 -2
  45. package/dist/collection/components/ls-field-properties-autosign/ls-field-properties-autosign.js +1 -1
  46. package/dist/collection/components/ls-field-properties-container/ls-field-properties-container.js +1 -1
  47. package/dist/collection/components/ls-field-properties-date/ls-field-properties-date.js +1 -1
  48. package/dist/collection/components/ls-field-properties-dropdown/ls-field-properties-dropdown.js +1 -1
  49. package/dist/collection/components/ls-field-properties-email/ls-field-properties-email.js +1 -1
  50. package/dist/collection/components/ls-field-properties-file/ls-field-properties-file.js +1 -1
  51. package/dist/collection/components/ls-field-properties-general/ls-field-properties-general.js +1 -1
  52. package/dist/collection/components/ls-field-properties-image/ls-field-properties-image.js +1 -1
  53. package/dist/collection/components/ls-field-properties-multiple/ls-field-properties-multiple.js +3 -3
  54. package/dist/collection/components/ls-field-properties-number/ls-field-properties-number.js +1 -1
  55. package/dist/collection/components/ls-field-properties-signature/ls-field-properties-signature.js +1 -1
  56. package/dist/collection/components/ls-field-properties-text/ls-field-properties-text.js +1 -1
  57. package/dist/collection/components/ls-field-size/ls-field-size.js +7 -1
  58. package/dist/collection/components/ls-field-size/ls-field-size.js.map +1 -1
  59. package/dist/collection/components/ls-field-type-display/ls-field-type-display.js +3 -3
  60. package/dist/collection/components/ls-formfield/inputs/ls-number-input/ls-number-input.js +1 -1
  61. package/dist/collection/components/ls-formfield/inputs/ls-radio-input/ls-radio-input.js +1 -1
  62. package/dist/collection/components/ls-formfield/inputs/ls-select-input/ls-select-input.js +1 -1
  63. package/dist/collection/components/ls-formfield/inputs/ls-text-input/ls-text-input.js +2 -2
  64. package/dist/collection/components/ls-formfield/inputs/ls-textarea-input/ls-textarea-input.js +1 -1
  65. package/dist/collection/components/ls-formfield/ls-formfield.js +2 -2
  66. package/dist/collection/components/ls-helper-bar/ls-helper-bar.css +33 -0
  67. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js +60 -0
  68. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js.map +1 -0
  69. package/dist/collection/components/ls-icon/ls-icon.js +1 -1
  70. package/dist/collection/components/ls-input-wrapper/ls-input-wrapper.js +1 -1
  71. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.css +55 -0
  72. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.js +103 -0
  73. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.js.map +1 -0
  74. package/dist/collection/components/ls-page-loader/ls-page-loader.js +2 -2
  75. package/dist/collection/components/ls-participant-card/ls-participant-card.js +25 -9
  76. package/dist/collection/components/ls-participant-card/ls-participant-card.js.map +1 -1
  77. package/dist/collection/components/ls-participant-manager/ls-participant-manager.js +3 -3
  78. package/dist/collection/components/ls-participant-select/ls-participant-select.js +9 -9
  79. package/dist/collection/components/ls-props-section/ls-props-section.js +1 -1
  80. package/dist/collection/components/ls-statusbar/ls-statusbar.css +15 -1
  81. package/dist/collection/components/ls-statusbar/ls-statusbar.js +45 -3
  82. package/dist/collection/components/ls-statusbar/ls-statusbar.js.map +1 -1
  83. package/dist/collection/components/ls-toggle/ls-toggle.js +2 -2
  84. package/dist/collection/components/ls-toolbar/ls-toolbar.js +2 -2
  85. package/dist/collection/components/ls-toolbar/ls-toolbar.js.map +1 -1
  86. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js +46 -20
  87. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js.map +1 -1
  88. package/dist/collection/components/ls-tooltip/ls-tooltip.css +32 -3
  89. package/dist/collection/components/ls-tooltip/ls-tooltip.js +133 -57
  90. package/dist/collection/components/ls-tooltip/ls-tooltip.js.map +1 -1
  91. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js +1 -10
  92. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js.map +1 -1
  93. package/dist/collection/types/LSApiTemplate.js.map +1 -1
  94. package/dist/collection/utils/tooltip.js +28 -0
  95. package/dist/collection/utils/tooltip.js.map +1 -0
  96. package/dist/collection/utils/utils.js.map +1 -1
  97. package/dist/components/index.js.map +1 -1
  98. package/dist/components/ls-document-options.js +1 -1
  99. package/dist/components/ls-document-viewer.js +203 -213
  100. package/dist/components/ls-document-viewer.js.map +1 -1
  101. package/dist/components/ls-editor-field.js +1 -1
  102. package/dist/components/ls-editor-table.js +1 -1
  103. package/dist/components/ls-feature-column.js +1 -1
  104. package/dist/components/ls-field-alignment.js +1 -1
  105. package/dist/components/ls-field-content.js +1 -1
  106. package/dist/components/ls-field-dimensions.js +1 -1
  107. package/dist/components/ls-field-distribute.js +1 -1
  108. package/dist/components/ls-field-footer.js +1 -1
  109. package/dist/components/ls-field-format.js +1 -1
  110. package/dist/components/ls-field-placement.js +1 -1
  111. package/dist/components/ls-field-properties-advanced.js +1 -1
  112. package/dist/components/ls-field-properties-autosign.js +1 -1
  113. package/dist/components/ls-field-properties-container.js +1 -1
  114. package/dist/components/ls-field-properties-date.js +1 -1
  115. package/dist/components/ls-field-properties-dropdown.js +35 -23
  116. package/dist/components/ls-field-properties-dropdown.js.map +1 -1
  117. package/dist/components/ls-field-properties-email.js +1 -1
  118. package/dist/components/ls-field-properties-file.js +1 -1
  119. package/dist/components/ls-field-properties-general.js +1 -1
  120. package/dist/components/ls-field-properties-image.js +1 -1
  121. package/dist/components/ls-field-properties-multiple.js +1 -1
  122. package/dist/components/ls-field-properties-number.js +1 -1
  123. package/dist/components/ls-field-properties-signature.js +1 -1
  124. package/dist/components/ls-field-properties-text.js +1 -1
  125. package/dist/components/ls-field-properties.js +1 -1
  126. package/dist/components/ls-field-size.js +1 -1
  127. package/dist/components/ls-field-type-display.js +1 -1
  128. package/dist/components/ls-formfield.js +8 -8
  129. package/dist/components/ls-helper-bar.d.ts +11 -0
  130. package/dist/components/ls-helper-bar.js +9 -0
  131. package/dist/components/ls-helper-bar.js.map +1 -0
  132. package/dist/components/ls-icon.js +1 -1
  133. package/dist/components/ls-input-wrapper.js +1 -1
  134. package/dist/components/ls-keyboard-shortcuts.d.ts +11 -0
  135. package/dist/components/ls-keyboard-shortcuts.js +9 -0
  136. package/dist/components/ls-keyboard-shortcuts.js.map +1 -0
  137. package/dist/components/ls-number-input.js +1 -1
  138. package/dist/components/ls-page-loader.js +1 -1
  139. package/dist/components/ls-participant-card.js +1 -1
  140. package/dist/components/ls-participant-manager.js +1 -1
  141. package/dist/components/ls-participant-select.js +1 -1
  142. package/dist/components/ls-props-section.js +1 -1
  143. package/dist/components/ls-radio-input.js +1 -1
  144. package/dist/components/ls-select-input.js +1 -1
  145. package/dist/components/ls-statusbar.js +1 -1
  146. package/dist/components/ls-text-input.js +1 -1
  147. package/dist/components/ls-textarea-input.js +1 -1
  148. package/dist/components/ls-toggle.js +1 -1
  149. package/dist/components/ls-toolbar.js +1 -1
  150. package/dist/components/ls-toolbox-field.js +1 -1
  151. package/dist/components/ls-tooltip.js +1 -1
  152. package/dist/components/ls-validation-tag.js +1 -1
  153. package/dist/components/p-0l2bXbFG.js +112 -0
  154. package/dist/components/p-0l2bXbFG.js.map +1 -0
  155. package/dist/components/p-B-CwRcyM.js +125 -0
  156. package/dist/components/p-B-CwRcyM.js.map +1 -0
  157. package/dist/components/{p-C0t7MuwE.js → p-B6WHuozd.js} +37 -25
  158. package/dist/components/p-B6WHuozd.js.map +1 -0
  159. package/dist/components/{p-ozlIyuZ1.js → p-BKpv-kC8.js} +16 -10
  160. package/dist/components/p-BKpv-kC8.js.map +1 -0
  161. package/dist/components/{p-BcfP7mSQ.js → p-BMoeVwvV.js} +15 -9
  162. package/dist/components/p-BMoeVwvV.js.map +1 -0
  163. package/dist/components/{p-BOKGHQS9.js → p-BfYQbwHx.js} +47 -26
  164. package/dist/components/p-BfYQbwHx.js.map +1 -0
  165. package/dist/components/{p-Ba_8GAK2.js → p-BhKW6QAV.js} +4 -4
  166. package/dist/components/{p-Ba_8GAK2.js.map → p-BhKW6QAV.js.map} +1 -1
  167. package/dist/components/{p-DDWmD8TQ.js → p-BnXLoyl5.js} +37 -25
  168. package/dist/components/p-BnXLoyl5.js.map +1 -0
  169. package/dist/components/{p-vV0A8m2N.js → p-ByytASxI.js} +3 -3
  170. package/dist/components/{p-vV0A8m2N.js.map → p-ByytASxI.js.map} +1 -1
  171. package/dist/components/{p-o7kGA8FM.js → p-C0DxZPf7.js} +33 -15
  172. package/dist/components/p-C0DxZPf7.js.map +1 -0
  173. package/dist/components/{p-DxGzQ3Lc.js → p-C3Yf2XxL.js} +17 -6
  174. package/dist/components/p-C3Yf2XxL.js.map +1 -0
  175. package/dist/components/{p-DUVCAq-W.js → p-CEfaqMjm.js} +35 -21
  176. package/dist/components/p-CEfaqMjm.js.map +1 -0
  177. package/dist/components/{p-BBuk6A32.js → p-CHTd656b.js} +37 -25
  178. package/dist/components/p-CHTd656b.js.map +1 -0
  179. package/dist/components/{p-6LFAGg6D.js → p-CIaA9Qz9.js} +16 -5
  180. package/dist/components/p-CIaA9Qz9.js.map +1 -0
  181. package/dist/components/{p-Cw8qsoOq.js → p-CPWE3RPb.js} +4 -4
  182. package/dist/components/{p-Cw8qsoOq.js.map → p-CPWE3RPb.js.map} +1 -1
  183. package/dist/components/p-CZoubBus.js +96 -0
  184. package/dist/components/p-CZoubBus.js.map +1 -0
  185. package/dist/components/p-Cb8nDMs-.js +32 -0
  186. package/dist/components/p-Cb8nDMs-.js.map +1 -0
  187. package/dist/components/{p-Bxutt9rC.js → p-Ccn3ZZcu.js} +16 -5
  188. package/dist/components/p-Ccn3ZZcu.js.map +1 -0
  189. package/dist/components/{p-C6NnNmx5.js → p-CesULiVv.js} +16 -5
  190. package/dist/components/p-CesULiVv.js.map +1 -0
  191. package/dist/components/{p-iwXLSFLX.js → p-ChsJHskx.js} +4 -4
  192. package/dist/components/{p-iwXLSFLX.js.map → p-ChsJHskx.js.map} +1 -1
  193. package/dist/components/p-Cvpba_Hj.js +66 -0
  194. package/dist/components/p-Cvpba_Hj.js.map +1 -0
  195. package/dist/components/{p-Cv4qCy2p.js → p-D0Dhti1c.js} +4 -4
  196. package/dist/components/{p-Cv4qCy2p.js.map → p-D0Dhti1c.js.map} +1 -1
  197. package/dist/components/{p-Yrg6B_xb.js → p-D1G_SpA3.js} +12 -12
  198. package/dist/components/{p-Yrg6B_xb.js.map → p-D1G_SpA3.js.map} +1 -1
  199. package/dist/components/{p-1wdCYLqw.js → p-D7BMvkxF.js} +35 -23
  200. package/dist/components/p-D7BMvkxF.js.map +1 -0
  201. package/dist/components/{p-Co6xLkEu.js → p-D8-qPGsJ.js} +6 -6
  202. package/dist/components/{p-Co6xLkEu.js.map → p-D8-qPGsJ.js.map} +1 -1
  203. package/dist/components/{p-CTXoPKrw.js → p-D81uQuBt.js} +4 -4
  204. package/dist/components/{p-CTXoPKrw.js.map → p-D81uQuBt.js.map} +1 -1
  205. package/dist/components/{p-ji6hTzlP.js → p-DO4zTNa2.js} +37 -25
  206. package/dist/components/p-DO4zTNa2.js.map +1 -0
  207. package/dist/components/{p-CdGtJRZm.js → p-DPHDQvBy.js} +3 -3
  208. package/dist/components/{p-CdGtJRZm.js.map → p-DPHDQvBy.js.map} +1 -1
  209. package/dist/components/{p-BXKYpxgM.js → p-DRlasxvX.js} +19 -8
  210. package/dist/components/p-DRlasxvX.js.map +1 -0
  211. package/dist/components/{p-hUeqWmAs.js → p-DSWW2hzE.js} +63 -51
  212. package/dist/components/p-DSWW2hzE.js.map +1 -0
  213. package/dist/components/p-DXhpjcQC.js +88 -0
  214. package/dist/components/p-DXhpjcQC.js.map +1 -0
  215. package/dist/components/{p-BArjC51C.js → p-DYigxUng.js} +4 -4
  216. package/dist/components/{p-BArjC51C.js.map → p-DYigxUng.js.map} +1 -1
  217. package/dist/components/{p-BMpnAxqv.js → p-DZm_unSc.js} +278 -6
  218. package/dist/components/p-DZm_unSc.js.map +1 -0
  219. package/dist/components/{p-CktqjOO6.js → p-D_bOpI93.js} +16 -11
  220. package/dist/components/p-D_bOpI93.js.map +1 -0
  221. package/dist/components/{p-DM3pnD5z.js → p-DdA-gazu.js} +3 -3
  222. package/dist/components/{p-DM3pnD5z.js.map → p-DdA-gazu.js.map} +1 -1
  223. package/dist/components/{p-DqEap43n.js → p-DmRC_Wu_.js} +4 -4
  224. package/dist/components/{p-DqEap43n.js.map → p-DmRC_Wu_.js.map} +1 -1
  225. package/dist/components/{p-BLUUNyDx.js → p-DmpTMpIK.js} +3 -3
  226. package/dist/components/{p-BLUUNyDx.js.map → p-DmpTMpIK.js.map} +1 -1
  227. package/dist/components/{p-DyE9zKT7.js → p-Dns9yEdO.js} +4 -12
  228. package/dist/components/p-Dns9yEdO.js.map +1 -0
  229. package/dist/components/{p-Dprl580c.js → p-GVTVbJVE.js} +19 -16
  230. package/dist/components/p-GVTVbJVE.js.map +1 -0
  231. package/dist/components/{p-B3lY01RV.js → p-Jxy3zvjl.js} +4 -4
  232. package/dist/components/{p-B3lY01RV.js.map → p-Jxy3zvjl.js.map} +1 -1
  233. package/dist/components/{p-CzySwvIU.js → p-Pb_M5CHe.js} +6 -6
  234. package/dist/components/{p-CzySwvIU.js.map → p-Pb_M5CHe.js.map} +1 -1
  235. package/dist/components/{p-B0uVP8it.js → p-Ymh-2OnV.js} +37 -25
  236. package/dist/components/p-Ymh-2OnV.js.map +1 -0
  237. package/dist/components/{p-JFkSKN19.js → p-Z79iUN1m.js} +37 -25
  238. package/dist/components/p-Z79iUN1m.js.map +1 -0
  239. package/dist/components/{p-i5LoDKK3.js → p-ehKlmMJ5.js} +5 -5
  240. package/dist/components/{p-i5LoDKK3.js.map → p-ehKlmMJ5.js.map} +1 -1
  241. package/dist/components/{p-Bt5gnPRz.js → p-gQGwMtz0.js} +3 -98
  242. package/dist/components/p-gQGwMtz0.js.map +1 -0
  243. package/dist/components/{p-bNVYQ-ag.js → p-hM61nVV6.js} +37 -25
  244. package/dist/components/p-hM61nVV6.js.map +1 -0
  245. package/dist/components/{p-14owczyX.js → p-sXbu_0hu.js} +19 -13
  246. package/dist/components/p-sXbu_0hu.js.map +1 -0
  247. package/dist/components/{p-CvqT5MA7.js → p-yqhOKUzi.js} +37 -25
  248. package/dist/components/p-yqhOKUzi.js.map +1 -0
  249. package/dist/esm/index.js.map +1 -1
  250. package/dist/esm/loader.js +1 -1
  251. package/dist/esm/{ls-document-options_40.entry.js → ls-document-options_42.entry.js} +1918 -1681
  252. package/dist/esm/ls-document-options_42.entry.js.map +1 -0
  253. package/dist/esm/ls-document-viewer.js +1 -1
  254. package/dist/esm/ls-field-properties-dropdown.entry.js +1 -1
  255. package/dist/esm/ls-formfield.entry.js +2 -2
  256. package/dist/esm/ls-number-input_5.entry.js +6 -6
  257. package/dist/ls-document-viewer/index.esm.js.map +1 -1
  258. package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
  259. package/dist/ls-document-viewer/{p-5c27684b.entry.js → p-3d9bde07.entry.js} +6 -6
  260. package/dist/ls-document-viewer/p-3d9bde07.entry.js.map +1 -0
  261. package/dist/ls-document-viewer/p-3ff5b214.entry.js +2 -0
  262. package/dist/ls-document-viewer/{p-0b9016eb.entry.js → p-cfb2d2ff.entry.js} +2 -2
  263. package/dist/ls-document-viewer/{p-3dae15c9.entry.js → p-d2eaa2ec.entry.js} +2 -2
  264. package/dist/types/components/ls-document-options/ls-document-options.d.ts +1 -1
  265. package/dist/types/components/ls-document-viewer/ls-document-viewer.d.ts +9 -1
  266. package/dist/types/components/ls-document-viewer/mouseHandlers.d.ts +1 -0
  267. package/dist/types/components/ls-feature-column/ls-feature-column.d.ts +2 -0
  268. package/dist/types/components/ls-field-alignment/ls-field-alignment.d.ts +2 -0
  269. package/dist/types/components/ls-field-dimensions/ls-field-dimensions.d.ts +2 -0
  270. package/dist/types/components/ls-field-distribute/ls-field-distribute.d.ts +1 -0
  271. package/dist/types/components/ls-field-format/ls-field-format.d.ts +8 -0
  272. package/dist/types/components/ls-field-placement/ls-field-placement.d.ts +2 -0
  273. package/dist/types/components/ls-field-size/ls-field-size.d.ts +2 -0
  274. package/dist/types/components/ls-helper-bar/ls-helper-bar.d.ts +7 -0
  275. package/dist/types/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.d.ts +8 -0
  276. package/dist/types/components/ls-participant-card/ls-participant-card.d.ts +5 -0
  277. package/dist/types/components/ls-statusbar/ls-statusbar.d.ts +2 -0
  278. package/dist/types/components/ls-toolbox-field/ls-toolbox-field.d.ts +15 -3
  279. package/dist/types/components/ls-tooltip/ls-tooltip.d.ts +5 -3
  280. package/dist/types/components/ls-validation-tag/ls-validation-tag.d.ts +0 -1
  281. package/dist/types/components.d.ts +93 -2
  282. package/dist/types/types/LSApiTemplate.d.ts +1 -0
  283. package/dist/types/utils/tooltip.d.ts +3 -0
  284. package/package.json +1 -1
  285. package/dist/cjs/ls-document-options_40.cjs.entry.js.map +0 -1
  286. package/dist/components/p-14owczyX.js.map +0 -1
  287. package/dist/components/p-1wdCYLqw.js.map +0 -1
  288. package/dist/components/p-6LFAGg6D.js.map +0 -1
  289. package/dist/components/p-9WKoGwO0.js +0 -93
  290. package/dist/components/p-9WKoGwO0.js.map +0 -1
  291. package/dist/components/p-B0uVP8it.js.map +0 -1
  292. package/dist/components/p-BBuk6A32.js.map +0 -1
  293. package/dist/components/p-BMpnAxqv.js.map +0 -1
  294. package/dist/components/p-BOKGHQS9.js.map +0 -1
  295. package/dist/components/p-BOz4DYOB.js +0 -83
  296. package/dist/components/p-BOz4DYOB.js.map +0 -1
  297. package/dist/components/p-BXKYpxgM.js.map +0 -1
  298. package/dist/components/p-BcfP7mSQ.js.map +0 -1
  299. package/dist/components/p-Bt5gnPRz.js.map +0 -1
  300. package/dist/components/p-Bxutt9rC.js.map +0 -1
  301. package/dist/components/p-C0t7MuwE.js.map +0 -1
  302. package/dist/components/p-C6NnNmx5.js.map +0 -1
  303. package/dist/components/p-CktqjOO6.js.map +0 -1
  304. package/dist/components/p-CpYbd6qt.js +0 -181
  305. package/dist/components/p-CpYbd6qt.js.map +0 -1
  306. package/dist/components/p-CvqT5MA7.js.map +0 -1
  307. package/dist/components/p-DDWmD8TQ.js.map +0 -1
  308. package/dist/components/p-DUVCAq-W.js.map +0 -1
  309. package/dist/components/p-Dprl580c.js.map +0 -1
  310. package/dist/components/p-DxGzQ3Lc.js.map +0 -1
  311. package/dist/components/p-DyE9zKT7.js.map +0 -1
  312. package/dist/components/p-JFkSKN19.js.map +0 -1
  313. package/dist/components/p-bNVYQ-ag.js.map +0 -1
  314. package/dist/components/p-hUeqWmAs.js.map +0 -1
  315. package/dist/components/p-ji6hTzlP.js.map +0 -1
  316. package/dist/components/p-o7kGA8FM.js.map +0 -1
  317. package/dist/components/p-ozlIyuZ1.js.map +0 -1
  318. package/dist/esm/ls-document-options_40.entry.js.map +0 -1
  319. package/dist/ls-document-viewer/p-5c27684b.entry.js.map +0 -1
  320. package/dist/ls-document-viewer/p-be7a03ca.entry.js +0 -2
  321. /package/dist/ls-document-viewer/{p-be7a03ca.entry.js.map → p-3ff5b214.entry.js.map} +0 -0
  322. /package/dist/ls-document-viewer/{p-0b9016eb.entry.js.map → p-cfb2d2ff.entry.js.map} +0 -0
  323. /package/dist/ls-document-viewer/{p-3dae15c9.entry.js.map → p-d2eaa2ec.entry.js.map} +0 -0
@@ -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":["import { 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, PDFPageViewport, PDFRenderParams, PDFRenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport 'pdfjs-dist/web/pdf_viewer';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { mouseClick, mouseDown, mouseDrop, mouseMove, mouseUp } from './mouseHandlers';\nimport { getApiType, matchData } from './editorUtils';\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';\n\nGlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.5.207/pdf.worker.min.js';\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.css',\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\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 @Prop({ mutable: true }) zoom: number = 1.0; // hardcoded to scale the document to full canvas size\n @Prop({ mutable: true }) pageNum: number = 1; // hardcoded to start at the page 1\n @Prop({ mutable: true }) signer: number = 0; // hardcoded to start at the page 1\n\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n @Prop({ mutable: true }) groupInfo: any;\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\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.showtoolbar = false;\n this.showtoolbox = false;\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showtoolbar = true;\n this.showtoolbox = true;\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showtoolbar = true;\n this.showtoolbox = true;\n this.showstatusbar = true;\n this.readonly = false;\n }\n }\n\n @Watch('displayTable')\n tableViewHandler(_newMode, _oldMode) {\n if (_newMode === true) {\n this.showPageFields(-1);\n } else if (_newMode === 'editor') {\n this.showPageFields(this.pageNum);\n }\n this.queueRenderPage(this.pageNum);\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' = '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 * Whether the left hand toolbox is displayed.\n * {boolean}\n */\n @Prop() showtoolbox?: boolean = false;\n\n /**\n * Whether the top toolbar is displayed.\n * {boolean}\n */\n @Prop() showtoolbar?: boolean = false;\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 or not the fields list is expanded.\n * {boolean}\n */\n @Prop() expandfields?: 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 external event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n // Send an internal event to be processed\n @Event() update: EventEmitter<LSMutateEvent[]>;\n\n private adapter: LsDocumentAdapter;\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) event.detail.forEach(me => this.adapter.handleEvent(me, this.token).then(result => matchData.bind(this)(result)));\n }\n\n // Updates are internal event between LS controls not to be confused with mutate\n @Listen('update')\n updateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (event.detail) event.detail.forEach(fx => this.syncChange(fx));\n }\n\n // Updates are internal event between LS controls not to be confused with mutate\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ type: LSApiRoleType; parent?: string | null }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = this._template.roles.find(r => r.id === event.detail.parent);\n\n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: 'Signer ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: event.detail.type === 'WITNESS' ? 100 + parent.signerIndex : this._template.roles.length,\n ordinal: event.detail.type === 'WITNESS' ? parent.ordinal + 1 : this._template.roles.length,\n signerParent: event.detail.parent,\n experience: defaultExperience.id,\n templateId: this._template.id,\n },\n },\n ];\n this.update.emit(data);\n this.mutate.emit(data);\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 var propPanel = this.component.shadowRoot.getElementById('my-field-panel') as HTMLLsFieldPropertiesElement;\n if (propPanel) {\n propPanel.dataItem = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n fu.selected = true;\n });\n\n // this.selected = fields.filter(fx => fx.selected) as HTMLLsEditorFieldElement[];\n this.selected.forEach(s => (s.selected = event.detail.map(d => d.id).includes(s.dataItem.id)));\n\n this.validationErrors = validate.bind(this)(this._template);\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 }\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 }\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 => { fu.selected = false; });\n this.selected = [];\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.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 * z + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\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 }\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: this.clip(f.ay) * this.pageDimensions[0].height,\n left: this.clip(f.ax) * this.pageDimensions[0].width,\n height: (this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height,\n width: (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 this.signer = preparedRoles.length > 0 ? 1 : 0;\n\n this._template = {\n ...newTemplate,\n elementConnection: { ...newTemplate.elementConnection, templateElements: fields },\n roles: preparedRoles,\n };\n\n }\n\n /**\n * Render the page based on pageNumber\n * {number} pageNumber\n */\n renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PDFPageViewport = page.getViewport({ scale: this.zoom });\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n // Render PDF page into canvas context\n const renderContext: PDFRenderParams = {\n viewport,\n canvasContext: this.ctx,\n };\n\n // Render page method\n const renderTask: PDFRenderTask = page.render(renderContext);\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 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\n if (update?.select === 'clear') { this.unselect(); }\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\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\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 const fu = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\n fu.dataItem = update.data as LSApiElement;\n // Refresh the selected array\n this.selectFields.emit(this.selected.map(sf => sf.dataItem));\n this.selected = this.selected.map(s => (s.dataItem.id === update.data.id ? fu : 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 } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\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.selected = [];\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\n }\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\n // Used for single field selection\n dropTarget.addEventListener('click', mouseClick.bind(this));\n dropTarget.addEventListener('mousedown', mouseDown.bind(this));\n dropTarget.addEventListener('mousemove', mouseMove.bind(this));\n dropTarget.addEventListener('mouseup', mouseUp.bind(this));\n document.addEventListener('keydown', keyDown.bind(this));\n dropTarget.addEventListener('dragenter', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('dragover', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('drop', mouseDrop.bind(this));\n\n this.generateFields();\n }\n\n // Generate all the field HTML elements that are required (for every page)\n generateFields(clearExisting: boolean = true) {\n\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 this._template.elementConnection.templateElements.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 ? '' : 'hidden';\n });\n }\n\n async load() {\n this.isLoading = true;\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 //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n } catch (e) {\n console.error('Your access token is invalid.', e);\n }\n }\n\n componentWillLoad() {\n if (this.token && !this._template) this.load();\n }\n\n handleSelectedField(event) {\n const fields = this.component.shadowRoot.querySelectorAll('ls-toolbox-field');\n\n fields.forEach(element => {\n const isSelected = element.formElementType === event.detail;\n element.isSelected = isSelected;\n });\n }\n\n render() {\n return (\n <Host>\n <>\n {this.isLoading && <ls-page-loader />}\n <div class={'validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n </div>\n <div class=\"page-header\">\n <p class=\"header-text-1\">Template Creation</p>\n <p>/</p>\n <p class=\"header-text-2\">{this._template?.title}</p>\n </div>\n <form id=\"ls-editor-form\">\n {this.showtoolbox === true ? (\n <div id=\"ls-left-box\" class=\"leftBox\">\n <div class={!this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden'}>\n <ls-feature-column\n onManage={manager => {\n if (manager.detail === 'document') {\n var documentManager = this.component.shadowRoot.getElementById('ls-document-options') as HTMLLsDocumentOptionsElement;\n documentManager.template = this._template;\n } else if (manager.detail === 'participant') {\n var participantManager = this.component.shadowRoot.getElementById('ls-participant-manager') as HTMLLsParticipantManagerElement;\n participantManager.template = this._template;\n }\n this.manager = manager.detail;\n }}\n />\n <div id=\"ls-toolbox\" class={this.manager === 'toolbox' ? 'toolbox' : 'hidden'}>\n <div class=\"ls-editor-infobox\">\n <h2 class=\"toolbox-section-title\">Participant Fields</h2>\n <p class=\"toolbox-section-description\">Select and Click to place Signature fields where you’d like on the Document.</p>\n </div>\n <div class=\"fields-box\">\n {this.signer > 0 ? (\n <ls-toolbox-field\n elementType=\"signature\"\n formElementType=\"signature\"\n label=\"Signature\"\n defaultHeight={27}\n defaultWidth={120}\n validation={0}\n icon=\"signature\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n ) : (\n <ls-toolbox-field\n elementType=\"auto sign\"\n formElementType=\"auto sign\"\n label=\"Auto Sign\"\n defaultHeight={27}\n defaultWidth={120}\n validation={3000}\n icon=\"auto-sign\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n )}\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"text\"\n label=\"Text\"\n defaultHeight={27}\n defaultWidth={100}\n validation={0}\n icon=\"text\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n <ls-toolbox-field\n elementType=\"signing date\"\n formElementType=\"signing date\"\n label=\"Signing Date\"\n defaultHeight={27}\n defaultWidth={120}\n validation={30}\n icon=\"auto-date\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n <ls-toolbox-field\n elementType=\"date\"\n formElementType=\"date\"\n label=\"Date\"\n defaultHeight={27}\n defaultWidth={80}\n validation={2}\n icon=\"calender\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n\n <ls-toolbox-field\n elementType=\"email\"\n formElementType=\"email\"\n label=\"Email\"\n defaultHeight={27}\n defaultWidth={120}\n validation={1}\n icon=\"at-symbol\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n <ls-toolbox-field\n elementType=\"initials\"\n formElementType=\"initials\"\n label=\"Initials\"\n defaultHeight={27}\n defaultWidth={120}\n validation={2000}\n icon=\"initials\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n\n <div class=\"fields-box\">\n <ls-toolbox-field\n elementType=\"number\"\n formElementType=\"number\"\n label=\"Number\"\n defaultHeight={27}\n defaultWidth={80}\n validation={50}\n icon=\"hashtag\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n <ls-toolbox-field\n elementType=\"dropdown\"\n formElementType=\"dropdown\"\n label=\"Dropdown\"\n defaultHeight={27}\n defaultWidth={80}\n validation={20}\n icon=\"hashtag\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n <ls-toolbox-field\n elementType=\"checkbox\"\n formElementType=\"checkbox\"\n label=\"Checkbox\"\n defaultHeight={27}\n defaultWidth={27}\n validation={25}\n icon=\"check\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n <ls-toolbox-field\n elementType=\"regex\"\n formElementType=\"regex\"\n label=\"Regex\"\n defaultHeight={27}\n defaultWidth={120}\n validation={93}\n icon=\"code\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n <ls-toolbox-field\n elementType=\"image\"\n formElementType=\"image\"\n label=\"Image\"\n defaultHeight={27}\n defaultWidth={120}\n validation={90}\n icon=\"photograph\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n\n <ls-toolbox-field\n elementType=\"file\"\n formElementType=\"file\"\n label=\"File\"\n defaultHeight={27}\n defaultWidth={120}\n validation={74}\n icon=\"upload\"\n signer={this.signer}\n onSelected={event => {\n this.handleSelectedField.bind(this)(event);\n }}\n />\n </div>\n\n </div>\n </div>\n <ls-participant-manager id=\"ls-participant-manager\" class={this.manager === 'participant' ? 'toolbox' : 'hidden'} editor={this} />\n <ls-document-options id=\"ls-document-options\" class={this.manager === 'document' ? 'toolbox' : 'hidden'} />\n </div>\n {!this.displayTable && (\n <div class={this.selected.length > 0 ? 'field-properties-outer' : 'hidden'}>\n <div class={'properties-header'}>\n <div class={'properties-header-icon'}>\n <ls-icon name=\"pre-filled-content\" />\n </div>\n <h1 class={'properties-header-title'}>Field Properties</h1>\n <button\n class={'tertiaryGrey'}\n onClick={e => {\n this.selected = [];\n e.preventDefault();\n }}\n >\n <ls-icon name=\"x\" size=\"20\" />\n </button>\n </div>\n <ls-field-properties id=\"my-field-panel\"></ls-field-properties>\n <slot></slot>\n </div>\n )}\n </div>\n ) : (\n <></>\n )}\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} />\n <div id=\"ls-mid-area\">\n <div class={'document-frame-wrapper'} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'hidden'} />\n <div id=\"ls-box-selector\"></div>\n </div>\n </div>\n <ls-statusbar editor={this} />\n </div>\n </form>\n </>\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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AAG,CAChC,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { 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, PDFPageViewport, PDFRenderParams, PDFRenderTask, GlobalWorkerOptions, getDocument } from 'pdfjs-dist';\nimport 'pdfjs-dist/web/pdf_viewer';\nimport { LSApiTemplate } from '../../types/LSApiTemplate';\nimport { addField, moveField } from './editorCalculator';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { keyDown } from './keyHandlers';\nimport { mouseClick, mouseDoubleClick, mouseDown, mouseDrop, mouseMove, mouseUp } from './mouseHandlers';\nimport { getApiType, matchData } from './editorUtils';\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 { attachAllTooltips } from '../../utils/tooltip';\n\nGlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.5.207/pdf.worker.min.js';\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.css',\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\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 /**\n * A JSON string containing the signer details. Only used in COMPOSE mode.\n * {string}\n */\n @Prop() signers: string;\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\n @State() _template: LSApiTemplate;\n @State() validationErrors: ValidationError[] = [];\n @State() status: 'Valid' | 'Invalid' | 'Logged Out';\n @Prop({ mutable: true }) groupInfo: any;\n @State() selected: HTMLLsEditorFieldElement[] = [];\n @State() isLoading: boolean = true;\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.showtoolbar = false;\n this.showtoolbox = false;\n this.showstatusbar = false;\n this.readonly = true;\n } else if (_newMode === 'editor') {\n this.showtoolbar = true;\n this.showtoolbox = true;\n this.showstatusbar = true;\n this.readonly = false;\n } else if (_newMode === 'compose') {\n this.showtoolbar = true;\n this.showtoolbox = true;\n this.showstatusbar = true;\n this.readonly = false;\n }\n }\n\n @Watch('displayTable')\n tableViewHandler(_newMode, _oldMode) {\n if (_newMode === true) {\n this.showPageFields(-1);\n } else if (_newMode === 'editor') {\n this.showPageFields(this.pageNum);\n }\n this.queueRenderPage(this.pageNum);\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' = '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 * Whether the left hand toolbox is displayed.\n * {boolean}\n */\n @Prop() showtoolbox?: boolean = false;\n\n /**\n * Whether the top toolbar is displayed.\n * {boolean}\n */\n @Prop() showtoolbar?: boolean = false;\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 or not the fields list is expanded.\n * {boolean}\n */\n @Prop() expandfields?: 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\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 external event to be processed\n @Event() mutate: EventEmitter<LSMutateEvent[]>;\n // Send an internal event to be processed\n @Event() update: EventEmitter<LSMutateEvent[]>;\n\n private adapter: LsDocumentAdapter;\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) event.detail.forEach(me => this.adapter.handleEvent(me, this.token).then(result => matchData.bind(this)(result)));\n }\n\n @Listen('fieldTypeSelected')\n handleFieldTypeSelected(event) {\n console.log(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 // Updates are internal event between LS controls not to be confused with mutate\n @Listen('update')\n updateHandler(event: CustomEvent<LSMutateEvent[]>) {\n if (event.detail) event.detail.forEach(fx => this.syncChange(fx));\n }\n\n // Updates are internal event between LS controls not to be confused with mutate\n @Listen('addParticipant')\n addParticpantHandler(event: CustomEvent<{ type: LSApiRoleType; parent?: string | null }>) {\n const defaultExperience = this.groupInfo.experienceConnection.experiences.find(x => x.defaultExperience === true);\n const parent = this._template.roles.find(r => r.id === event.detail.parent);\n const newSignerIndex = Math.max(...this._template.roles.filter(r => r.roleType !== 'WITNESS').map(r => r.signerIndex)) + 1;\n \n const data: LSMutateEvent[] = [\n {\n action: 'create',\n data: {\n id: btoa('rol' + crypto.randomUUID()),\n name: 'Signer ' + (this._template.roles.length + 1),\n roleType: event.detail.type,\n signerIndex: event.detail.type === 'WITNESS' ? 100 + parent.signerIndex : (this._template.roles.length === 0 ? 1 : newSignerIndex),\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.update.emit(data);\n this.mutate.emit(data);\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 var propPanel = this.component.shadowRoot.getElementById('my-field-panel') as HTMLLsFieldPropertiesElement;\n if (event.detail.length === 0) {\n this.selected = [];\n } else {\n propPanel.dataItem = event.detail as any as LSApiElement[];\n }\n\n // change style of selected fields\n event.detail.forEach(fc => {\n const fu = this.component.shadowRoot.getElementById('ls-field-' + fc.id) as HTMLLsEditorFieldElement;\n fu.selected = true;\n });\n\n // this.selected = fields.filter(fx => fx.selected) as HTMLLsEditorFieldElement[];\n this.selected.forEach(s => (s.selected = event.detail.map(d => d.id).includes(s.dataItem.id)));\n\n this.validationErrors = validate.bind(this)(this._template);\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 }\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 }\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 }\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.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 * z + 'px';\n this.canvas.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\n\n frame.style.height = this.pageDimensions[this.pageNum - 1].height * z + 'px';\n frame.style.width = this.pageDimensions[this.pageNum - 1].width * z + 'px';\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 }\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: this.clip(f.ay) * this.pageDimensions[0].height,\n left: this.clip(f.ax) * this.pageDimensions[0].width,\n height: (this.clip(f.by, 0.1) - this.clip(f.ay)) * this.pageDimensions[0].height,\n width: (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 this.signer = preparedRoles.length > 0 ? 1 : 0;\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 renderPage(pageNumber: number): void {\n this.isPageRendering = true;\n this.pdfDocument.getPage(pageNumber).then((page: PDFPageProxy) => {\n const viewport: PDFPageViewport = page.getViewport({ scale: this.zoom });\n this.canvas.height = Math.floor(viewport.height);\n this.canvas.width = Math.floor(viewport.width);\n\n // Render PDF page into canvas context\n const renderContext: PDFRenderParams = {\n viewport,\n canvasContext: this.ctx,\n };\n\n // Render page method\n const renderTask: PDFRenderTask = page.render(renderContext);\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 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\n //const newField = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\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 // const fu = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\n\n // fu.dataItem = update.data as LSApiElement;\n // Refresh the selected array\n this.selectFields.emit(this.selected.map(sf => sf.dataItem));\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 } else if (update.action === 'delete') {\n const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id) as HTMLLsEditorFieldElement;\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 }\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\n // Used for single field selection\n dropTarget.addEventListener('click', mouseClick.bind(this));\n dropTarget.addEventListener('mousedown', mouseDown.bind(this));\n dropTarget.addEventListener('mousemove', mouseMove.bind(this));\n dropTarget.addEventListener('mouseup', mouseUp.bind(this));\n dropTarget.addEventListener('dblclick', mouseDoubleClick.bind(this));\n document.addEventListener('keydown', keyDown.bind(this));\n dropTarget.addEventListener('dragenter', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('dragover', event => {\n event.preventDefault();\n });\n dropTarget.addEventListener('drop', mouseDrop.bind(this));\n\n this.generateFields();\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 this._template.elementConnection.templateElements.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 ? '' : 'hidden';\n });\n }\n\n async load() {\n this.isLoading = true;\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 console.log(this._template);\n\n //Revalidate\n this.validationErrors = validate.bind(this)(this._template);\n this.pageCount = this._template.pageCount;\n this.selected = [];\n this.setZoom(1.0);\n this.isLoading = false;\n } catch (e) {\n console.error('Your access token is invalid.', e);\n }\n }\n\n componentWillLoad() {\n if (this.token && !this._template) this.load();\n }\n\n componentDidLoad() {\n attachAllTooltips(this.component.shadowRoot);\n }\n\n\n\n render() {\n return (\n <Host>\n <>\n {this.isLoading && <ls-page-loader />}\n <div class={'validation-tag-wrapper'}>\n <ls-validation-tag validationErrors={this.validationErrors} />\n </div>\n <div class=\"page-header\">\n <p class=\"header-text-1\">Template Creation</p>\n <p>/</p>\n <p class=\"header-text-2\">{this._template?.title}</p>\n </div>\n <form id=\"ls-editor-form\">\n {this.showtoolbox === true ? (\n <div id=\"ls-left-box\" class=\"leftBox\">\n <div class={!this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden'}>\n <ls-feature-column\n onManage={manager => {\n if (manager.detail === 'document') {\n var documentManager = this.component.shadowRoot.getElementById('ls-document-options') as HTMLLsDocumentOptionsElement;\n documentManager.template = this._template;\n } else if (manager.detail === 'participant') {\n var participantManager = this.component.shadowRoot.getElementById('ls-participant-manager') as HTMLLsParticipantManagerElement;\n participantManager.template = this._template;\n }\n this.manager = manager.detail;\n }}\n />\n <div id=\"ls-toolbox\" class={this.manager === 'toolbox' ? 'toolbox' : 'hidden'}>\n <div class=\"ls-editor-infobox\">\n <h2 class=\"toolbox-section-title\">Participant Fields</h2>\n <p class=\"toolbox-section-description\">Select and Click to place Signature fields where you’d like on the Document.</p>\n </div>\n <div class=\"fields-box\">\n <ls-toolbox-field\n elementType=\"signature\"\n formElementType=\"signature\"\n label=\"Signature\"\n defaultHeight={27}\n defaultWidth={120}\n validation={0}\n icon=\"signature\"\n tooltip=\"Use this field to collect Signatures from Participants\"\n signer={this.signer}\n style={this.signer > 0 ? { display: 'block' } : { display: 'none' }}\n />\n <ls-toolbox-field\n elementType=\"auto sign\"\n formElementType=\"auto sign\"\n label=\"Auto Sign\"\n defaultHeight={27}\n defaultWidth={120}\n validation={3000}\n icon=\"auto-sign\"\n tooltip=\"Auto-Sign lets Senders add a Signature to the Document that will be automatically applied upon Sending\"\n signer={this.signer}\n style={this.signer === 0 ? { display: 'block' } : { display: 'none' }}\n />\n <ls-toolbox-field\n elementType=\"text\"\n formElementType=\"text\"\n label=\"Text\"\n defaultHeight={27}\n defaultWidth={100}\n validation={0}\n icon=\"text\"\n tooltip=\"A field for collecting any plain text values such as: names, addresses or descriptions\"\n signer={this.signer}\n />\n\n {this.signer > 0 && (\n <ls-toolbox-field\n elementType=\"signing date\"\n formElementType=\"signing date\"\n label=\"Signing Date\"\n defaultHeight={27}\n defaultWidth={120}\n validation={30}\n icon=\"auto-date\"\n tooltip=\"Automatically inserts the date upon completion by the assigned Participant\"\n signer={this.signer}\n />\n )}\n\n <ls-toolbox-field\n elementType=\"date\"\n formElementType=\"date\"\n label=\"Date\"\n defaultHeight={27}\n defaultWidth={80}\n validation={2}\n icon=\"calender\"\n tooltip=\"A field for collecting dates with built-in date formatting options\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"email\"\n formElementType=\"email\"\n label=\"Email\"\n defaultHeight={27}\n defaultWidth={120}\n validation={1}\n icon=\"at-symbol\"\n tooltip=\"A Field to only accept entries formatted as an email address (e.g., example@example.com)\"\n signer={this.signer}\n />\n <ls-toolbox-field\n elementType=\"initials\"\n formElementType=\"initials\"\n label=\"Initials\"\n defaultHeight={27}\n defaultWidth={120}\n validation={2000}\n icon=\"initials\"\n tooltip=\"Use this field anywhere Participants are required to Initial your document\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"number\"\n formElementType=\"number\"\n label=\"Number\"\n defaultHeight={27}\n defaultWidth={80}\n validation={50}\n icon=\"hashtag\"\n tooltip=\"A Field to only accept entries in numerical format. Additional validations include character limit (1 to 12 digits), and currency format (2 decimal places)\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"dropdown\"\n formElementType=\"dropdown\"\n label=\"Dropdown\"\n defaultHeight={27}\n defaultWidth={80}\n validation={20}\n icon=\"dropdown\"\n tooltip=\"Use this field to create custom dropdown menus in your document, or place one of our handy presets for countries or prefixes\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"checkbox\"\n formElementType=\"checkbox\"\n label=\"Checkbox\"\n defaultHeight={27}\n defaultWidth={27}\n validation={25}\n icon=\"check\"\n tooltip=\"Places a checkbox on your document. Handy for T&Cs or ✔/✗ sections\"\n signer={this.signer}\n />\n\n {this.signer > 0 && (\n <>\n <ls-toolbox-field\n elementType=\"regex\"\n formElementType=\"regex\"\n label=\"Regex\"\n defaultHeight={27}\n defaultWidth={120}\n validation={93}\n icon=\"code\"\n tooltip=\"Need a specific validation? Use this field to enter a custom RegEx and have Participants enter exactly what you need\"\n signer={this.signer}\n />\n <ls-toolbox-field\n elementType=\"image\"\n formElementType=\"image\"\n label=\"Image\"\n defaultHeight={27}\n defaultWidth={120}\n validation={90}\n icon=\"photograph\"\n tooltip=\"Use when you need Participants to upload their own images during the signing process\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"file\"\n formElementType=\"file\"\n label=\"File\"\n defaultHeight={27}\n defaultWidth={120}\n validation={74}\n icon=\"upload\"\n tooltip=\"Use when you need Participants to upload their own documents during the signing process\"\n signer={this.signer}\n />\n\n <ls-toolbox-field\n elementType=\"drawn\"\n formElementType=\"drawn\"\n label=\"Drawn\"\n defaultHeight={120}\n defaultWidth={120}\n validation={90}\n icon=\"pencil\"\n tooltip=\"Allow users to draw on the document using their mouse or touchscreen\"\n signer={this.signer}\n />\n </>\n )}\n </div>\n </div>\n <ls-participant-manager id=\"ls-participant-manager\" class={this.manager === 'participant' ? 'toolbox' : 'hidden'} editor={this} />\n <ls-document-options id=\"ls-document-options\" class={this.manager === 'document' ? 'toolbox' : 'hidden'} />\n </div>\n {!this.displayTable && (\n <div class={this.selected.length > 0 ? 'field-properties-outer' : 'hidden'}>\n <div class={'properties-header'}>\n <div class={'properties-header-icon'}>\n <ls-icon name=\"pre-filled-content\" />\n </div>\n <h1 class={'properties-header-title'}>Field Properties</h1>\n <button\n class={'tertiaryGrey'}\n onClick={e => {\n this.selected = [];\n e.preventDefault();\n }}\n data-tooltip=\"Close Properties Panel\"\n >\n <ls-icon name=\"x\" size=\"20\" />\n </button>\n </div>\n <ls-field-properties id=\"my-field-panel\"></ls-field-properties>\n <slot></slot>\n </div>\n )}\n </div>\n ) : (\n <></>\n )}\n <ls-toolbar id=\"ls-toolbar\" template={this._template} editor={this} groupInfo={this.groupInfo} />\n <div id=\"ls-mid-area\">\n <div class={'document-frame-wrapper'} id=\"document-frame-wrapper\">\n <div id=\"ls-document-frame\">\n <canvas id=\"pdf-canvas\" class={this.displayTable || this.isLoading ? 'hidden' : ''}></canvas>\n <ls-editor-table editor={this} class={this.displayTable ? '' : 'hidden'} />\n <div id=\"ls-box-selector\"></div>\n </div>\n </div>\n <ls-statusbar editor={this} page={this.pageNum} pageCount={this.pageCount} />\n </div>\n </form>\n </>\n <ls-tooltip id=\"ls-tooltip-master\" />\n </Host>\n );\n }\n}\n"]}
@@ -277,4 +277,60 @@ export function mouseDrop(event) {
277
277
  console.error(e);
278
278
  }
279
279
  }
280
+ export function mouseDoubleClick(event) {
281
+ console.log('double click');
282
+ try {
283
+ const data = this.fieldTypeSelected;
284
+ // Unselect all current selected items
285
+ this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));
286
+ var frame = this.component.shadowRoot.getElementById('ls-document-frame');
287
+ // Make a new API compatible id for a template element (prefix 'ele')
288
+ const id = btoa('ele' + crypto.randomUUID());
289
+ const top = event.offsetY / this.zoom + frame.scrollTop;
290
+ const left = event.offsetX / this.zoom + frame.scrollLeft;
291
+ // TODO: Put these defaults somewhere sensible
292
+ const newData = {
293
+ action: 'create',
294
+ data: {
295
+ id,
296
+ value: '',
297
+ formElementType: data.formElementType,
298
+ elementType: data.elementType,
299
+ validation: data.validation,
300
+ substantive: false,
301
+ top,
302
+ left,
303
+ hideBorder: false,
304
+ height: data.defaultHeight,
305
+ width: data.defaultWidth,
306
+ pageDimensions: this.pageDimensions[this.pageNum - 1],
307
+ fontName: 'arial',
308
+ fontSize: 10,
309
+ align: 'left',
310
+ signer: this.signer,
311
+ page: this.pageNum,
312
+ mapTo: null,
313
+ label: '',
314
+ helpText: null,
315
+ logicGroup: null,
316
+ optional: false,
317
+ options: null,
318
+ logicAction: null,
319
+ labelExtra: null,
320
+ fieldOrder: null,
321
+ ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,
322
+ ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,
323
+ bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,
324
+ by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,
325
+ templateId: this._template.id,
326
+ },
327
+ };
328
+ console.log(newData);
329
+ this.mutate.emit([newData]);
330
+ this.update.emit([newData]);
331
+ }
332
+ catch (e) {
333
+ console.error(e);
334
+ }
335
+ }
280
336
  //# sourceMappingURL=mouseHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mouseHandlers.js","sourceRoot":"","sources":["../../../src/components/ls-document-viewer/mouseHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { LSApiElement } from '../../types/LSApiElement';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { findDimensions, findIn, recalculateCoordinates } from './editorCalculator';\n\nlet mousetimer = null;\n\nexport function debounce(data, delay) {\n if (mousetimer) clearTimeout(mousetimer);\n\n mousetimer = setTimeout(() => {\n this.mutate.emit([data]);\n }, delay);\n}\n\nexport function mouseDown(e) {\n if (e.offsetX < 0 || e.offsetY < 0) return;\n // console.log('mousedown', e);\n\n // Find if this was\n // - a hit on a field edge RESIZE\n // - a hit on the middle of a field MOVE\n // - a hit on the background document SELECTMULTIPLE with a box\n this.hitField = null;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n \n fields.forEach(f => {\n const { left, top, height, width, bottom, right } = f.getBoundingClientRect();\n const fdims = { left: f.offsetLeft, top: f.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n // west edge\n if (Math.abs(e.clientX - left) < 5 && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'w';\n this.hitField = f;\n // right / east edge\n } else if (Math.abs(e.clientX - right) < 5 && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'e';\n this.hitField = f;\n // north edge\n } else if (Math.abs(e.clientY - top) < 5 && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 'n';\n this.hitField = f;\n // south edge\n } else if (Math.abs(e.clientY - bottom) < 5 && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 's';\n this.hitField = f;\n } else if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n }\n });\n\n if (this.hitField && e.shiftKey === false) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // mouse down on a field, select it and note the start location\n if(this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [this.hitField];\n this.selectFields.emit([this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n \n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else if (this.hitField && e.shiftKey === true) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // mouse down on a field, select it and note the start location\n if(this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [...this.selected, this.hitField];\n this.selectFields.emit([...this.selected.map(si => si.dataItem), this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n \n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else {\n // move down on empty space, start a selection box\n this.startLocations = null;\n this.startMouse = null;\n this.selectionBox = { x: e.clientX, y: e.clientY };\n // console.log('empty space reset selected', this.selectionBox);\n this.unselect();\n\n this.selectFields.emit([]);\n this.selected = [];\n this.component.style.cursor = 'crosshair';\n }\n}\n\nexport function mouseMove(event) {\n event.preventDefault();\n\n // We have the mouse held down on a field edge to resize it.\n if (this.hitField && this.edgeSide && this.startMouse && event.buttons === 1) {\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n\n switch (this.edgeSide) {\n case 'n':\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n\n this.hitField.dataItem = { ...this.hitField.dataItem, top: this.startMouse.top + movedY, height: this.startMouse.height - movedY };\n break;\n case 's':\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, height: this.startMouse.height + movedY };\n break;\n case 'e':\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, width: this.startMouse.width + movedX };\n\n break;\n case 'w':\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n\n this.hitField.dataItem = { ...this.hitField.dataItem, left: this.startMouse.left + movedX, width: this.startMouse.width - movedX };\n break;\n }\n\n debounce.bind(this)({ action: 'update', data: recalculateCoordinates(this.hitField.dataItem) }, 700);\n\n \n } else if (this.selectionBox && event.buttons === 1) {\n this.isBoxing = true;\n // draw the multiple selection box\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n var leftOffset = frame.getBoundingClientRect().left;\n var topOffset = frame.getBoundingClientRect().top;\n\n const movedX = event.clientX - this.selectionBox.x;\n const movedY = event.clientY - this.selectionBox.y;\n\n // allow for the frame to be scrolled\n box.style.visibility = 'visible';\n box.style.left = (this.selectionBox.x > event.clientX ? event.clientX : this.selectionBox.x) - leftOffset + frame.scrollLeft + 'px';\n box.style.top = (this.selectionBox.y > event.clientY ? event.clientY : this.selectionBox.y) - topOffset + frame.scrollTop + 'px';\n box.style.width = Math.abs(movedX) + 'px';\n box.style.height = Math.abs(movedY) + 'px';\n\n // Move one or more selected items\n } else if (this.startLocations && !this.edgeSide && this.startMouse && event.buttons === 1) {\n this.isMoving = true;\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Move one or more selected items\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n if (this.selected?.length) {\n for (let i = 0; i < this.selected.length; i++) { \n this.selected[i].style.left = this.startLocations[i].left + movedX + 'px';\n this.selected[i].style.top = this.startLocations[i].top + movedY + 'px';\n }\n }\n }\n}\n\nexport function mouseUp(event) {\n this.edgeSide = null;\n this.startMouse = null;\n this.component.style.cursor = 'auto';\n\n // console.log('mouse up');\n // find what was inside the selection box emit the select event and change their style\n if (this.selectionBox && this.isBoxing) {\n this.isBoxing = false;\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n var fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n box.style.visibility = 'hidden';\n this.selectionBox = null;\n const found = findIn(fields, box, true, event.shiftKey);\n this.selected = Array.from(found);\n this.selectFields.emit(found.map(fx => fx.dataItem));\n }\n}\n\nexport function mouseClick(e) {\n // check we're not moving fields\n if (this.isMoving) {\n // End dragging fields\n this.isMoving = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n const divFrame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n const selected = Array.from(fields).filter(fx => fx.selected);\n\n this.mutate.emit(\n Array.from(fields)\n .filter(fx => fx.selected)\n .map(fx => {\n // Calculate new positions and update the dataItem on the control\n const delta = {\n ...fx.dataItem,\n ...findDimensions(divFrame, fx, this.pageDimensions[this.pageNum - 1].height, this.pageDimensions[this.pageNum - 1].width, this.zoom),\n };\n // TODO:: out of bounds handler (UNDO)\n // update the data in the html element\n fx.dataItem = delta;\n // send an update event to be processed\n return { action: 'update', data: delta };\n }),\n );\n this.selectFields.emit(selected.map(fx => fx.dataItem));\n } else {\n // reset the selection box location\n this.selectionBox = { x: e.clientX, y: e.clientY };\n\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n fields.forEach(f => {\n const { left, top, bottom, right } = f.getBoundingClientRect();\n if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n // check if this is a shift click to add to the current selection\n if (!e.shiftKey) fields.forEach(ft => (ft.selected = false));\n f.selected = true;\n }\n });\n\n this.selected = Array.from(fields).filter(fx => fx.selected);\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n }\n}\n\nexport function mouseDrop(event) {\n event.preventDefault();\n try {\n const data: IToolboxField = JSON.parse(event.dataTransfer.getData('application/json')) as any as IToolboxField;\n // Unselect all current selected items\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n // Make a new API compatible id for a template element (prefix 'ele')\n const id = btoa('ele' + crypto.randomUUID());\n const top = event.offsetY / this.zoom + frame.scrollTop;\n const left = event.offsetX / this.zoom + frame.scrollLeft;\n\n // TODO: Put these defaults somewhere sensible\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: '',\n formElementType: data.formElementType,\n elementType: data.elementType,\n validation: data.validation,\n substantive: false,\n top,\n left,\n hideBorder: false,\n height: data.defaultHeight,\n width: data.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: 'arial',\n fontSize: 10,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: false,\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n this.mutate.emit([newData]);\n this.update.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n"]}
1
+ {"version":3,"file":"mouseHandlers.js","sourceRoot":"","sources":["../../../src/components/ls-document-viewer/mouseHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { LSApiElement } from '../../types/LSApiElement';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { findDimensions, findIn, recalculateCoordinates } from './editorCalculator';\n\nlet mousetimer = null;\n\nexport function debounce(data, delay) {\n if (mousetimer) clearTimeout(mousetimer);\n\n mousetimer = setTimeout(() => {\n this.mutate.emit([data]);\n }, delay);\n}\n\nexport function mouseDown(e) {\n if (e.offsetX < 0 || e.offsetY < 0) return;\n // console.log('mousedown', e);\n\n // Find if this was\n // - a hit on a field edge RESIZE\n // - a hit on the middle of a field MOVE\n // - a hit on the background document SELECTMULTIPLE with a box\n this.hitField = null;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n\n fields.forEach(f => {\n const { left, top, height, width, bottom, right } = f.getBoundingClientRect();\n const fdims = { left: f.offsetLeft, top: f.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n // west edge\n if (Math.abs(e.clientX - left) < 5 && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'w';\n this.hitField = f;\n // right / east edge\n } else if (Math.abs(e.clientX - right) < 5 && e.clientY >= top && e.clientY <= bottom) {\n this.edgeSide = 'e';\n this.hitField = f;\n // north edge\n } else if (Math.abs(e.clientY - top) < 5 && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 'n';\n this.hitField = f;\n // south edge\n } else if (Math.abs(e.clientY - bottom) < 5 && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = 's';\n this.hitField = f;\n } else if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n }\n });\n\n if (this.hitField && e.shiftKey === false) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // mouse down on a field, select it and note the start location\n if (this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [this.hitField];\n this.selectFields.emit([this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else if (this.hitField && e.shiftKey === true) {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // mouse down on a field, select it and note the start location\n if (this.hitField.selected === false) {\n // unselect all other fields\n fields.forEach(fu => {\n fu.selected = false;\n });\n this.selected = [...this.selected, this.hitField];\n this.selectFields.emit([...this.selected.map(si => si.dataItem), this.hitField.dataItem]);\n }\n\n const { height, width } = this.hitField.getBoundingClientRect();\n const fdims = { left: this.hitField.offsetLeft, top: this.hitField.offsetTop, height, width, x: e.screenX, y: e.screenY };\n this.startMouse = fdims;\n\n this.startLocations = this.selected.map(f => {\n const { height, width } = f.getBoundingClientRect();\n const beHtml = f as HTMLElement;\n return { top: beHtml.offsetTop, left: beHtml.offsetLeft, height, width };\n });\n this.selectionBox = null;\n } else {\n // move down on empty space, start a selection box\n this.startLocations = null;\n this.startMouse = null;\n this.selectionBox = { x: e.clientX, y: e.clientY };\n // console.log('empty space reset selected', this.selectionBox);\n this.unselect();\n\n this.selectFields.emit([]);\n this.selected = [];\n this.component.style.cursor = 'crosshair';\n }\n}\n\nexport function mouseMove(event) {\n event.preventDefault();\n\n // We have the mouse held down on a field edge to resize it.\n if (this.hitField && this.edgeSide && this.startMouse && event.buttons === 1) {\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n\n switch (this.edgeSide) {\n case 'n':\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n\n this.hitField.dataItem = { ...this.hitField.dataItem, top: this.startMouse.top + movedY, height: this.startMouse.height - movedY };\n break;\n case 's':\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, height: this.startMouse.height + movedY };\n break;\n case 'e':\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, width: this.startMouse.width + movedX };\n\n break;\n case 'w':\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n\n this.hitField.dataItem = { ...this.hitField.dataItem, left: this.startMouse.left + movedX, width: this.startMouse.width - movedX };\n break;\n }\n\n debounce.bind(this)({ action: 'update', data: recalculateCoordinates(this.hitField.dataItem) }, 700);\n } else if (this.selectionBox && event.buttons === 1) {\n this.isBoxing = true;\n // draw the multiple selection box\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n var leftOffset = frame.getBoundingClientRect().left;\n var topOffset = frame.getBoundingClientRect().top;\n\n const movedX = event.clientX - this.selectionBox.x;\n const movedY = event.clientY - this.selectionBox.y;\n\n // allow for the frame to be scrolled\n box.style.visibility = 'visible';\n box.style.left = (this.selectionBox.x > event.clientX ? event.clientX : this.selectionBox.x) - leftOffset + frame.scrollLeft + 'px';\n box.style.top = (this.selectionBox.y > event.clientY ? event.clientY : this.selectionBox.y) - topOffset + frame.scrollTop + 'px';\n box.style.width = Math.abs(movedX) + 'px';\n box.style.height = Math.abs(movedY) + 'px';\n\n // Move one or more selected items\n } else if (this.startLocations && !this.edgeSide && this.startMouse && event.buttons === 1) {\n this.isMoving = true;\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Move one or more selected items\n const movedX = event.screenX - this.startMouse.x;\n const movedY = event.screenY - this.startMouse.y;\n if (this.selected?.length) {\n for (let i = 0; i < this.selected.length; i++) {\n this.selected[i].style.left = this.startLocations[i].left + movedX + 'px';\n this.selected[i].style.top = this.startLocations[i].top + movedY + 'px';\n }\n }\n }\n}\n\nexport function mouseUp(event) {\n this.edgeSide = null;\n this.startMouse = null;\n this.component.style.cursor = 'auto';\n\n // console.log('mouse up');\n // find what was inside the selection box emit the select event and change their style\n if (this.selectionBox && this.isBoxing) {\n this.isBoxing = false;\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n var fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');\n box.style.visibility = 'hidden';\n this.selectionBox = null;\n const found = findIn(fields, box, true, event.shiftKey);\n this.selected = Array.from(found);\n this.selectFields.emit(found.map(fx => fx.dataItem));\n }\n}\n\nexport function mouseClick(e) {\n // check we're not moving fields\n if (this.isMoving) {\n // End dragging fields\n this.isMoving = false;\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n const divFrame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLDivElement;\n const selected = Array.from(fields).filter(fx => fx.selected);\n\n this.mutate.emit(\n Array.from(fields)\n .filter(fx => fx.selected)\n .map(fx => {\n // Calculate new positions and update the dataItem on the control\n const delta = {\n ...fx.dataItem,\n ...findDimensions(divFrame, fx, this.pageDimensions[this.pageNum - 1].height, this.pageDimensions[this.pageNum - 1].width, this.zoom),\n };\n // TODO:: out of bounds handler (UNDO)\n // update the data in the html element\n fx.dataItem = delta;\n // send an update event to be processed\n return { action: 'update', data: delta };\n }),\n );\n this.selectFields.emit(selected.map(fx => fx.dataItem));\n } else {\n // reset the selection box location\n this.selectionBox = { x: e.clientX, y: e.clientY };\n\n const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field') as HTMLLsEditorFieldElement[];\n fields.forEach(f => {\n const { left, top, bottom, right } = f.getBoundingClientRect();\n if (e.clientY <= bottom && e.clientY >= top && e.clientX >= left && e.clientX <= right) {\n this.edgeSide = null;\n this.hitField = f;\n // check if this is a shift click to add to the current selection\n if (!e.shiftKey) fields.forEach(ft => (ft.selected = false));\n f.selected = true;\n }\n });\n\n this.selected = Array.from(fields).filter(fx => fx.selected);\n this.selectFields.emit(this.selected.map(fx => fx.dataItem));\n }\n}\n\nexport function mouseDrop(event) {\n event.preventDefault();\n try {\n const data: IToolboxField = JSON.parse(event.dataTransfer.getData('application/json')) as any as IToolboxField;\n // Unselect all current selected items\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n // Make a new API compatible id for a template element (prefix 'ele')\n const id = btoa('ele' + crypto.randomUUID());\n const top = event.offsetY / this.zoom + frame.scrollTop;\n const left = event.offsetX / this.zoom + frame.scrollLeft;\n\n // TODO: Put these defaults somewhere sensible\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: '',\n formElementType: data.formElementType,\n elementType: data.elementType,\n validation: data.validation,\n substantive: false,\n top,\n left,\n hideBorder: false,\n height: data.defaultHeight,\n width: data.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: 'arial',\n fontSize: 10,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: false,\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n this.mutate.emit([newData]);\n this.update.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n\nexport function mouseDoubleClick(event) {\n console.log('double click');\n try {\n const data: IToolboxField = this.fieldTypeSelected as IToolboxField;\n\n // Unselect all current selected items\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n var frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n // Make a new API compatible id for a template element (prefix 'ele')\n const id = btoa('ele' + crypto.randomUUID());\n const top = event.offsetY / this.zoom + frame.scrollTop;\n const left = event.offsetX / this.zoom + frame.scrollLeft; \n\n // TODO: Put these defaults somewhere sensible\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: '',\n formElementType: data.formElementType,\n elementType: data.elementType,\n validation: data.validation,\n substantive: false,\n top,\n left,\n hideBorder: false,\n height: data.defaultHeight,\n width: data.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: 'arial',\n fontSize: 10,\n align: 'left',\n signer: this.signer,\n page: this.pageNum,\n mapTo: null,\n label: '',\n helpText: null,\n logicGroup: null,\n optional: false,\n options: null,\n logicAction: null,\n labelExtra: null,\n fieldOrder: null,\n ax: left > 0 ? left / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: top > 0 ? top / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (left + data.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (top + data.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n console.log(newData);\n this.mutate.emit([newData]);\n this.update.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n"]}
@@ -23,7 +23,7 @@ export class LsEditorTable {
23
23
  });
24
24
  }
25
25
  render() {
26
- return (h(Host, { key: '5843064d233783ed3c491d399c415d281ed35e11' }, h("table", { key: '8a6d6d1dc717876eb4401f76f8dc280b957fdeb7', id: "ls-editor-table" }), h("slot", { key: '334d466e08ed2490fa88ef774912b469fde0a287' })));
26
+ return (h(Host, { key: '126032b55f6bb30ab2dd1b164e6f85ed4b29062d' }, h("table", { key: '03f13566a1c1ec6b0c214ce9bfeb13825d8f4be1', id: "ls-editor-table" }), h("slot", { key: 'e33ba6a318a2a6569dbb8659bffa542e9a71bcd1' })));
27
27
  }
28
28
  static get is() { return "ls-editor-table"; }
29
29
  static get encapsulation() { return "shadow"; }
@@ -1,5 +1,7 @@
1
1
  import { Host, h } from "@stencil/core";
2
+ import { attachAllTooltips } from "../../utils/tooltip";
2
3
  export class LsFeatureColoumn {
4
+ component;
3
5
  /**
4
6
  * Determines / sets which of the far left 'managers' is active.
5
7
  * {'document' | 'toolbox' | 'participant' }
@@ -7,18 +9,21 @@ export class LsFeatureColoumn {
7
9
  manager = 'toolbox';
8
10
  // Send an manager change up the DOM
9
11
  manage;
12
+ componentDidLoad() {
13
+ attachAllTooltips(this.component.shadowRoot);
14
+ }
10
15
  render() {
11
- return (h(Host, { key: 'c153ff8227ffe959671bd72b62eef1be0d6ea0a5' }, h("div", { key: 'febf78c0ccc42e2511b52419955e28017b6d617c', class: this.manager === 'document' ? 'activeIcon' : 'defaultIcon', onClick: () => {
16
+ return (h(Host, { key: 'f8397442545d0e798a66f31035311cae3bf41c9d' }, h("div", { key: '4db303dd905925d47d2dd28170a56cd8e7f8c2d4', class: this.manager === 'document' ? 'activeIcon' : 'defaultIcon', onClick: () => {
12
17
  console.log('document');
13
18
  this.manage.emit('document');
14
19
  this.manager = 'document';
15
- } }, h("ls-icon", { key: '027568b936d809b03eecc895fcfab24cd65e7fa3', name: "document", size: "24" })), h("div", { key: '3fe1542a7c2053dcca881682eb29859f4bf7a914', class: this.manager === 'toolbox' ? 'activeIcon' : 'defaultIcon', onClick: () => {
20
+ }, "data-tooltip-title": "Template Details", "data-tooltip": "View and edit Template properties", "data-tooltip-placement": "right" }, h("ls-icon", { key: 'b5043c55eddec92dca33ef147c11df9bd48fd6fe', name: "document", size: "24" })), h("div", { key: 'e02c5613c1dbd96b7ddb968972a522abec80fbf3', class: this.manager === 'toolbox' ? 'activeIcon' : 'defaultIcon', onClick: () => {
16
21
  this.manage.emit('toolbox');
17
22
  this.manager = 'toolbox';
18
- } }, h("ls-icon", { key: '2656bb9ebbcec8dbf2a5519e9f80ceb734413828', name: "typing-input", size: "24" })), h("div", { key: '46abc8a29b3488273d669089602ed902752b1145', class: this.manager === 'participant' ? 'activeIcon' : 'defaultIcon', onClick: () => {
23
+ }, "data-tooltip-title": "Field Types", "data-tooltip": "Select and place Form Field Elements", "data-tooltip-placement": "right" }, h("ls-icon", { key: '9ff52bec37456480b5741ea3bbedf0d56881b0e7', name: "typing-input", size: "24" })), h("div", { key: '364765ec9efe822ddc67f6e75df5b10d195f9f01', class: this.manager === 'participant' ? 'activeIcon' : 'defaultIcon', onClick: () => {
19
24
  this.manage.emit('participant');
20
25
  this.manager = 'participant';
21
- } }, h("ls-icon", { key: '173f5cc9556a37f7502fb7c02e1644659dd65b16', name: "user-group", size: "24" })), h("slot", { key: '856f4c459eb86ae32eb564c5024f64231f9cc8a1' })));
26
+ }, "data-tooltip-title": "Participants", "data-tooltip": "Manage Signers, Witnesses and Approvers", "data-tooltip-placement": "right" }, h("ls-icon", { key: 'f8e16dc093e911319df9e4970469ab76abbe7c78', name: "user-group", size: "24" })), h("slot", { key: '3caabbffd188f76168904ffe2d08445f4a009389' }), h("ls-tooltip", { key: '5a645c4907a67e0fb3d82705d751b4dd82953505', id: "ls-tooltip-master" })));
22
27
  }
23
28
  static get is() { return "ls-feature-column"; }
24
29
  static get encapsulation() { return "shadow"; }
@@ -74,5 +79,6 @@ export class LsFeatureColoumn {
74
79
  }
75
80
  }];
76
81
  }
82
+ static get elementRef() { return "component"; }
77
83
  }
78
84
  //# sourceMappingURL=ls-feature-column.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ls-feature-column.js","sourceRoot":"","sources":["../../../src/components/ls-feature-column/ls-feature-column.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAC;AAO9E,MAAM,OAAO,gBAAgB;IAC3B;;;OAGG;IACsB,OAAO,GAA2C,SAAS,CAAC;IAErF,oCAAoC;IAC3B,MAAM,CAAuD;IAEtE,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EACjE,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC5B,CAAC;gBAED,gEAAS,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,IAAI,GAAG,CACjC;YACN,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAChE,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBAC3B,CAAC;gBAED,gEAAS,IAAI,EAAC,cAAc,EAAC,IAAI,EAAC,IAAI,GAAG,CACrC;YACN,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EACpE,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC/B,CAAC;gBAED,gEAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,GAAG,CACnC;YAEN,8DAAa,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h, EventEmitter, Event } from '@stencil/core';\n\n@Component({\n tag: 'ls-feature-column',\n styleUrl: 'ls-feature-column.css',\n shadow: true,\n})\nexport class LsFeatureColoumn {\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' = 'toolbox';\n\n // Send an manager change up the DOM\n @Event() manage: EventEmitter<'document' | 'toolbox' | 'participant'>;\n\n render() {\n return (\n <Host>\n <div\n class={this.manager === 'document' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n console.log('document');\n this.manage.emit('document');\n this.manager = 'document';\n }}\n >\n <ls-icon name=\"document\" size=\"24\" />\n </div>\n <div\n class={this.manager === 'toolbox' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n this.manage.emit('toolbox');\n this.manager = 'toolbox';\n }}\n >\n <ls-icon name=\"typing-input\" size=\"24\" />\n </div>\n <div\n class={this.manager === 'participant' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n this.manage.emit('participant');\n this.manager = 'participant';\n }}\n >\n <ls-icon name=\"user-group\" size=\"24\" />\n </div>\n\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ls-feature-column.js","sourceRoot":"","sources":["../../../src/components/ls-feature-column/ls-feature-column.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAgB,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,MAAM,OAAO,gBAAgB;IAChB,SAAS,CAAc;IAClC;;;OAGG;IACsB,OAAO,GAA2C,SAAS,CAAC;IAErF,oCAAoC;IAC3B,MAAM,CAAuD;IAEtE,gBAAgB;QACd,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EACjE,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC5B,CAAC,wBACkB,kBAAkB,kBACxB,mCAAmC,4BACzB,OAAO;gBAE9B,gEAAS,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,IAAI,GAAG,CACjC;YACN,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAChE,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBAC3B,CAAC,wBACkB,aAAa,kBACnB,sCAAsC,4BAC5B,OAAO;gBAE9B,gEAAS,IAAI,EAAC,cAAc,EAAC,IAAI,EAAC,IAAI,GAAG,CACrC;YACN,4DACE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EACpE,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC/B,CAAC,wBACkB,cAAc,kBACpB,yCAAyC,4BAC/B,OAAO;gBAE9B,gEAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,GAAG,CACnC;YAEN,8DAAa;YACb,mEAAY,EAAE,EAAC,mBAAmB,GAAG,CAChC,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h, EventEmitter, Event, Element } from '@stencil/core';\nimport { attachAllTooltips } from '../../utils/tooltip';\n\n@Component({\n tag: 'ls-feature-column',\n styleUrl: 'ls-feature-column.css',\n shadow: true,\n})\nexport class LsFeatureColoumn {\n @Element() component: HTMLElement;\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' = 'toolbox';\n\n // Send an manager change up the DOM\n @Event() manage: EventEmitter<'document' | 'toolbox' | 'participant'>;\n\n componentDidLoad() {\n attachAllTooltips(this.component.shadowRoot);\n }\n\n render() {\n return (\n <Host>\n <div\n class={this.manager === 'document' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n console.log('document');\n this.manage.emit('document');\n this.manager = 'document';\n }}\n data-tooltip-title=\"Template Details\"\n data-tooltip=\"View and edit Template properties\"\n data-tooltip-placement=\"right\"\n >\n <ls-icon name=\"document\" size=\"24\" />\n </div>\n <div\n class={this.manager === 'toolbox' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n this.manage.emit('toolbox');\n this.manager = 'toolbox';\n }}\n data-tooltip-title=\"Field Types\"\n data-tooltip=\"Select and place Form Field Elements\"\n data-tooltip-placement=\"right\"\n >\n <ls-icon name=\"typing-input\" size=\"24\" />\n </div>\n <div\n class={this.manager === 'participant' ? 'activeIcon' : 'defaultIcon'}\n onClick={() => {\n this.manage.emit('participant');\n this.manager = 'participant';\n }}\n data-tooltip-title=\"Participants\"\n data-tooltip=\"Manage Signers, Witnesses and Approvers\"\n data-tooltip-placement=\"right\"\n >\n <ls-icon name=\"user-group\" size=\"24\" />\n </div>\n\n <slot></slot>\n <ls-tooltip id=\"ls-tooltip-master\" />\n </Host>\n );\n }\n}\n"]}