legalesign-document-viewer 0.10.2 → 0.10.4

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 (508) hide show
  1. package/dist/cjs/defaultFieldIcons-ByvDN5ag.js +26 -0
  2. package/dist/cjs/defaultFieldIcons-ByvDN5ag.js.map +1 -0
  3. package/dist/cjs/defaultPalette-Dt4FmPno.js +222 -0
  4. package/dist/cjs/defaultPalette-Dt4FmPno.js.map +1 -0
  5. package/dist/cjs/editorUtils-f8cxkqvC.js +447 -0
  6. package/dist/cjs/editorUtils-f8cxkqvC.js.map +1 -0
  7. package/dist/cjs/fieldDefaults-BbJ3qf1E.js +27 -0
  8. package/dist/cjs/fieldDefaults-BbJ3qf1E.js.map +1 -0
  9. package/dist/cjs/{i18n-BElI-ESH.js → i18n-B8sub13B.js} +7 -5
  10. package/dist/cjs/{i18n-BElI-ESH.js.map → i18n-B8sub13B.js.map} +1 -1
  11. package/dist/cjs/{index-CmGbWor3.js → index-DFeU0FNc.js} +2 -5
  12. package/dist/cjs/index-DFeU0FNc.js.map +1 -0
  13. package/dist/cjs/loader.cjs.js +2 -2
  14. package/dist/cjs/ls-add-new-button_20.cjs.entry.js +1035 -0
  15. package/dist/cjs/ls-badge.cjs.entry.js +1 -1
  16. package/dist/cjs/ls-banner.cjs.entry.js +1 -1
  17. package/dist/cjs/ls-button.cjs.entry.js +49 -0
  18. package/dist/cjs/ls-card.cjs.entry.js +1 -1
  19. package/dist/cjs/ls-checkbox-input_5.cjs.entry.js +1 -1
  20. package/dist/cjs/ls-compose-loader_6.cjs.entry.js +381 -0
  21. package/dist/cjs/ls-compose-manager.cjs.entry.js +4 -4
  22. package/dist/cjs/ls-details-section.cjs.entry.js +1 -1
  23. package/dist/cjs/ls-document-viewer.cjs.entry.js +31138 -0
  24. package/dist/cjs/ls-document-viewer.cjs.js +2 -2
  25. package/dist/cjs/ls-dropdown-item.cjs.entry.js +1 -1
  26. package/dist/cjs/ls-dropdown.cjs.entry.js +1 -1
  27. package/dist/cjs/ls-editor-field_11.cjs.entry.js +909 -0
  28. package/dist/cjs/ls-field-alignment_3.cjs.entry.js +315 -0
  29. package/dist/cjs/ls-field-format_2.cjs.entry.js +218 -0
  30. package/dist/cjs/ls-field-properties-dropdown.cjs.entry.js +2 -2
  31. package/dist/cjs/ls-formfield.cjs.entry.js +1 -1
  32. package/dist/cjs/ls-header-bar.cjs.entry.js +1 -1
  33. package/dist/cjs/ls-helper-bar_2.cjs.entry.js +37 -0
  34. package/dist/cjs/ls-icon-button.cjs.entry.js +1 -1
  35. package/dist/cjs/ls-icon-check-button.cjs.entry.js +1 -1
  36. package/dist/cjs/ls-icon.cjs.entry.js +11211 -0
  37. package/dist/cjs/ls-label.cjs.entry.js +1 -1
  38. package/dist/cjs/ls-list-card-button.cjs.entry.js +1 -1
  39. package/dist/cjs/ls-loading_2.cjs.entry.js +37 -0
  40. package/dist/cjs/ls-navbar.cjs.entry.js +1 -1
  41. package/dist/cjs/ls-notification.cjs.entry.js +1 -1
  42. package/dist/cjs/ls-radio-group.cjs.entry.js +1 -1
  43. package/dist/cjs/ls-radio-input.cjs.entry.js +1 -1
  44. package/dist/cjs/ls-tabs.cjs.entry.js +1 -1
  45. package/dist/cjs/ls-tag.cjs.entry.js +1 -1
  46. package/dist/cjs/ls-text.cjs.entry.js +1 -1
  47. package/dist/cjs/ls-timeline-step.cjs.entry.js +1 -1
  48. package/dist/cjs/ls-timeline.cjs.entry.js +1 -1
  49. package/dist/cjs/ls-title-input.cjs.entry.js +2 -2
  50. package/dist/cjs/ls-toolbox-field.cjs.entry.js +96 -0
  51. package/dist/cjs/ls-tooltip.cjs.entry.js +247 -0
  52. package/dist/cjs/mouseHandlers-D3r6xq7p.js +975 -0
  53. package/dist/cjs/mouseHandlers-D3r6xq7p.js.map +1 -0
  54. package/dist/cjs/test-item.cjs.entry.js +1 -1
  55. package/dist/collection/components/ls-compose-loader/ls-compose-loader.js +1 -1
  56. package/dist/collection/components/ls-compose-manager/ls-compose-manager.js +2 -2
  57. package/dist/collection/components/ls-document-viewer/adapter/elementActions.js +1 -1
  58. package/dist/collection/components/ls-document-viewer/adapter/elementActions.js.map +1 -1
  59. package/dist/collection/components/ls-document-viewer/editorCalculator.js +1 -1
  60. package/dist/collection/components/ls-document-viewer/editorCalculator.js.map +1 -1
  61. package/dist/collection/components/ls-document-viewer/ls-document-viewer.css +6 -0
  62. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +53 -23
  63. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
  64. package/dist/collection/components/ls-document-viewer/mouseHandlers.js +218 -78
  65. package/dist/collection/components/ls-document-viewer/mouseHandlers.js.map +1 -1
  66. package/dist/collection/components/ls-document-viewer/snapHelper.js +57 -16
  67. package/dist/collection/components/ls-document-viewer/snapHelper.js.map +1 -1
  68. package/dist/collection/components/ls-document-viewer/validator.js +6 -2
  69. package/dist/collection/components/ls-document-viewer/validator.js.map +1 -1
  70. package/dist/collection/components/ls-editor-field/ls-editor-field.js +6 -6
  71. package/dist/collection/components/ls-editor-field/ls-editor-field.js.map +1 -1
  72. package/dist/collection/components/ls-editor-table/ls-editor-table.js +1 -1
  73. package/dist/collection/components/ls-feature-column/ls-feature-column.js +6 -6
  74. package/dist/collection/components/ls-field-alignment/ls-field-alignment.js +2 -2
  75. package/dist/collection/components/ls-field-content/ls-field-content.js +3 -3
  76. package/dist/collection/components/ls-field-content/ls-field-content.js.map +1 -1
  77. package/dist/collection/components/ls-field-dimensions/ls-field-dimensions.js +3 -3
  78. package/dist/collection/components/ls-field-distribute/ls-field-distribute.js +24 -28
  79. package/dist/collection/components/ls-field-distribute/ls-field-distribute.js.map +1 -1
  80. package/dist/collection/components/ls-field-footer/ls-field-footer.js +1 -1
  81. package/dist/collection/components/ls-field-format/ls-field-format.css +7 -0
  82. package/dist/collection/components/ls-field-format/ls-field-format.js +11 -11
  83. package/dist/collection/components/ls-field-format/ls-field-format.js.map +1 -1
  84. package/dist/collection/components/ls-field-placement/ls-field-placement.js +1 -1
  85. package/dist/collection/components/ls-field-properties/ls-field-properties.js +1 -1
  86. package/dist/collection/components/ls-field-properties-advanced/ls-field-properties-advanced.js +2 -2
  87. package/dist/collection/components/ls-field-properties-autosign/ls-field-properties-autosign.js +1 -1
  88. package/dist/collection/components/ls-field-properties-container/ls-field-properties-container.js +1 -1
  89. package/dist/collection/components/ls-field-properties-date/ls-field-properties-date.js +1 -1
  90. package/dist/collection/components/ls-field-properties-dropdown/ls-field-properties-dropdown.js +1 -1
  91. package/dist/collection/components/ls-field-properties-email/ls-field-properties-email.js +1 -1
  92. package/dist/collection/components/ls-field-properties-file/ls-field-properties-file.js +1 -1
  93. package/dist/collection/components/ls-field-properties-general/ls-field-properties-general.js +1 -1
  94. package/dist/collection/components/ls-field-properties-image/ls-field-properties-image.js +1 -1
  95. package/dist/collection/components/ls-field-properties-multiple/ls-field-properties-multiple.js +3 -3
  96. package/dist/collection/components/ls-field-properties-number/ls-field-properties-number.js +1 -1
  97. package/dist/collection/components/ls-field-properties-signature/ls-field-properties-signature.js +1 -1
  98. package/dist/collection/components/ls-field-properties-text/ls-field-properties-text.js +1 -1
  99. package/dist/collection/components/ls-field-size/ls-field-size.js +1 -1
  100. package/dist/collection/components/ls-field-type-display/ls-field-type-display.js +3 -3
  101. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js +1 -1
  102. package/dist/collection/components/ls-input-wrapper/ls-input-wrapper.js +1 -1
  103. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.js +1 -1
  104. package/dist/collection/components/ls-left-bar/ls-left-bar.css +6 -0
  105. package/dist/collection/components/ls-participant-manager/ls-participant-manager.js +3 -3
  106. package/dist/collection/components/ls-participant-select/ls-participant-select.css +8 -0
  107. package/dist/collection/components/ls-participant-select/ls-participant-select.js +35 -47
  108. package/dist/collection/components/ls-participant-select/ls-participant-select.js.map +1 -1
  109. package/dist/collection/components/ls-props-section/ls-props-section.js +1 -1
  110. package/dist/collection/components/ls-recipient-card/ls-recipient-card.js +6 -5
  111. package/dist/collection/components/ls-recipient-card/ls-recipient-card.js.map +1 -1
  112. package/dist/collection/components/ls-recipient-manager/ls-recipient-manager.js +1 -1
  113. package/dist/collection/components/ls-statusbar/ls-statusbar.js +18 -8
  114. package/dist/collection/components/ls-statusbar/ls-statusbar.js.map +1 -1
  115. package/dist/collection/components/ls-title-input/ls-title-input.js +1 -1
  116. package/dist/collection/components/ls-toggle/ls-toggle.js +2 -2
  117. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js +3 -3
  118. package/dist/collection/components/ls-validation-manager/ls-validation-manager.js +32 -2
  119. package/dist/collection/components/ls-validation-manager/ls-validation-manager.js.map +1 -1
  120. package/dist/collection/components/ls-validation-tag/ls-validation-tag.css +7 -0
  121. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js +90 -34
  122. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js.map +1 -1
  123. package/dist/components/index.js +1 -1
  124. package/dist/components/ls-add-new-button.js +1 -1
  125. package/dist/components/ls-badge.js +1 -1
  126. package/dist/components/ls-banner.js +6 -6
  127. package/dist/components/ls-button.js +1 -1
  128. package/dist/components/ls-card.js +1 -1
  129. package/dist/components/ls-checkbox-input.js +1 -1
  130. package/dist/components/ls-compose-loader.js +1 -1
  131. package/dist/components/ls-compose-manager.js +4 -4
  132. package/dist/components/ls-details-section.js +3 -3
  133. package/dist/components/ls-document-options.js +1 -1
  134. package/dist/components/ls-document-viewer.js +146 -110
  135. package/dist/components/ls-document-viewer.js.map +1 -1
  136. package/dist/components/ls-dropdown-item.js +1 -1
  137. package/dist/components/ls-dropdown.js +3 -3
  138. package/dist/components/ls-editor-field.js +1 -1
  139. package/dist/components/ls-editor-table.js +1 -1
  140. package/dist/components/ls-feature-column.js +1 -1
  141. package/dist/components/ls-field-alignment.js +1 -1
  142. package/dist/components/ls-field-content.js +1 -1
  143. package/dist/components/ls-field-dimensions.js +1 -1
  144. package/dist/components/ls-field-distribute.js +1 -1
  145. package/dist/components/ls-field-footer.js +1 -1
  146. package/dist/components/ls-field-format.js +1 -1
  147. package/dist/components/ls-field-placement.js +1 -1
  148. package/dist/components/ls-field-properties-advanced.js +1 -1
  149. package/dist/components/ls-field-properties-autosign.js +1 -1
  150. package/dist/components/ls-field-properties-container.js +1 -1
  151. package/dist/components/ls-field-properties-date.js +1 -1
  152. package/dist/components/ls-field-properties-dropdown.js +15 -15
  153. package/dist/components/ls-field-properties-email.js +1 -1
  154. package/dist/components/ls-field-properties-file.js +1 -1
  155. package/dist/components/ls-field-properties-general.js +1 -1
  156. package/dist/components/ls-field-properties-image.js +1 -1
  157. package/dist/components/ls-field-properties-multiple.js +1 -1
  158. package/dist/components/ls-field-properties-number.js +1 -1
  159. package/dist/components/ls-field-properties-signature.js +1 -1
  160. package/dist/components/ls-field-properties-text.js +1 -1
  161. package/dist/components/ls-field-properties.js +1 -1
  162. package/dist/components/ls-field-size.js +1 -1
  163. package/dist/components/ls-field-type-display.js +1 -1
  164. package/dist/components/ls-formfield.js +11 -11
  165. package/dist/components/ls-header-bar.js +4 -4
  166. package/dist/components/ls-helper-bar.js +1 -1
  167. package/dist/components/ls-icon-button.js +1 -1
  168. package/dist/components/ls-icon-check-button.js +2 -2
  169. package/dist/components/ls-icon.js +1 -1
  170. package/dist/components/ls-input-wrapper.js +1 -1
  171. package/dist/components/ls-keyboard-shortcuts.js +1 -1
  172. package/dist/components/ls-label.js +1 -1
  173. package/dist/components/ls-left-bar.js +1 -1
  174. package/dist/components/ls-list-card-button.js +4 -4
  175. package/dist/components/ls-loading-icon.js +1 -1
  176. package/dist/components/ls-loading-logo.js +1 -1
  177. package/dist/components/ls-loading.js +1 -1
  178. package/dist/components/ls-navbar.js +3 -3
  179. package/dist/components/ls-notification.js +2 -2
  180. package/dist/components/ls-number-input.js +1 -1
  181. package/dist/components/ls-participant-card.js +1 -1
  182. package/dist/components/ls-participant-manager.js +1 -1
  183. package/dist/components/ls-participant-select.js +1 -1
  184. package/dist/components/ls-props-section.js +1 -1
  185. package/dist/components/ls-radio-group.js +3 -3
  186. package/dist/components/ls-radio-input.js +1 -1
  187. package/dist/components/ls-recipient-card.js +1 -1
  188. package/dist/components/ls-recipient-manager.js +1 -1
  189. package/dist/components/ls-select-input.js +1 -1
  190. package/dist/components/ls-statusbar.js +1 -1
  191. package/dist/components/ls-tabs.js +2 -2
  192. package/dist/components/ls-tag.js +2 -2
  193. package/dist/components/ls-text-input.js +1 -1
  194. package/dist/components/ls-text.js +1 -1
  195. package/dist/components/ls-textarea-input.js +1 -1
  196. package/dist/components/ls-timeline-step.js +2 -2
  197. package/dist/components/ls-timeline.js +2 -2
  198. package/dist/components/ls-title-input.js +3 -3
  199. package/dist/components/ls-toggle.js +1 -1
  200. package/dist/components/ls-toolbar.js +1 -1
  201. package/dist/components/ls-toolbox-field.js +1 -1
  202. package/dist/components/ls-tooltip.js +1 -1
  203. package/dist/components/ls-validation-manager.js +1 -1
  204. package/dist/components/ls-validation-tag.js +1 -1
  205. package/dist/components/{p-C9O4GcTq.js → p-0KcafqsD.js} +4 -4
  206. package/dist/components/{p-C9O4GcTq.js.map → p-0KcafqsD.js.map} +1 -1
  207. package/dist/components/{p-C5Jz_eCB.js → p-4SVN50rZ.js} +17 -17
  208. package/dist/components/{p-C5Jz_eCB.js.map → p-4SVN50rZ.js.map} +1 -1
  209. package/dist/components/{p-CItLrDhm.js → p-7tNxs8No.js} +17 -17
  210. package/dist/components/{p-CItLrDhm.js.map → p-7tNxs8No.js.map} +1 -1
  211. package/dist/components/{p-DQ2OogsY.js → p-84KTjgkl.js} +4 -4
  212. package/dist/components/{p-DQ2OogsY.js.map → p-84KTjgkl.js.map} +1 -1
  213. package/dist/components/{p-Ci6AP0jT.js → p-B4nern9h.js} +8 -8
  214. package/dist/components/{p-Ci6AP0jT.js.map → p-B4nern9h.js.map} +1 -1
  215. package/dist/components/{p-DYJoT5OC.js → p-B6iYKtGO.js} +13 -12
  216. package/dist/components/p-B6iYKtGO.js.map +1 -0
  217. package/dist/components/{p-DlEh2FKG.js → p-B7x-6bu5.js} +4 -4
  218. package/dist/components/{p-DlEh2FKG.js.map → p-B7x-6bu5.js.map} +1 -1
  219. package/dist/components/{p-QXLGttP4.js → p-B9ooYFOA.js} +5 -5
  220. package/dist/components/{p-QXLGttP4.js.map → p-B9ooYFOA.js.map} +1 -1
  221. package/dist/components/{p-s20HlPHN.js → p-BBevdiks.js} +17 -17
  222. package/dist/components/{p-s20HlPHN.js.map → p-BBevdiks.js.map} +1 -1
  223. package/dist/components/{p-Ciap_aJy.js → p-BCNmvVjK.js} +17 -17
  224. package/dist/components/{p-Ciap_aJy.js.map → p-BCNmvVjK.js.map} +1 -1
  225. package/dist/components/{p-Bk-DeJ8r.js → p-BCzMSIcI.js} +4 -4
  226. package/dist/components/{p-Bk-DeJ8r.js.map → p-BCzMSIcI.js.map} +1 -1
  227. package/dist/components/{p-DbDvUcr5.js → p-BMhCD-zg.js} +4 -4
  228. package/dist/components/{p-DbDvUcr5.js.map → p-BMhCD-zg.js.map} +1 -1
  229. package/dist/components/{p-DvzrSyuS.js → p-BNihuKsl.js} +8 -8
  230. package/dist/components/{p-DvzrSyuS.js.map → p-BNihuKsl.js.map} +1 -1
  231. package/dist/components/{p-D_u1HxMf.js → p-BNtgCuBd.js} +8 -8
  232. package/dist/components/{p-D_u1HxMf.js.map → p-BNtgCuBd.js.map} +1 -1
  233. package/dist/components/{p-j1rAIT-X.js → p-BQ7lEZmO.js} +305 -129
  234. package/dist/components/p-BQ7lEZmO.js.map +1 -0
  235. package/dist/components/{p-CB9tEjJy.js → p-BT5rCW3w.js} +3 -3
  236. package/dist/components/{p-CB9tEjJy.js.map → p-BT5rCW3w.js.map} +1 -1
  237. package/dist/components/{p-C5iOpglg.js → p-BieB5Yv4.js} +12 -12
  238. package/dist/components/{p-C5iOpglg.js.map → p-BieB5Yv4.js.map} +1 -1
  239. package/dist/components/{p-DKhDOvYu.js → p-BnDS-Vxn.js} +10 -10
  240. package/dist/components/{p-DKhDOvYu.js.map → p-BnDS-Vxn.js.map} +1 -1
  241. package/dist/{esm/i18n-B8VmBxFg.js → components/p-Bp8hmhrC.js} +7 -5
  242. package/dist/components/{p-B8VmBxFg.js.map → p-Bp8hmhrC.js.map} +1 -1
  243. package/dist/components/{p-DVKeLLVk.js → p-BwJElhYd.js} +13 -13
  244. package/dist/components/p-BwJElhYd.js.map +1 -0
  245. package/dist/components/{p-MG59mYF3.js → p-C6Wto5hV.js} +18 -14
  246. package/dist/components/p-C6Wto5hV.js.map +1 -0
  247. package/dist/components/{p-1dutDvgl.js → p-C7ZEYzas.js} +5 -5
  248. package/dist/components/{p-1dutDvgl.js.map → p-C7ZEYzas.js.map} +1 -1
  249. package/dist/components/{p-CyKYlaAh.js → p-CKZG8VvW.js} +5 -5
  250. package/dist/components/{p-CyKYlaAh.js.map → p-CKZG8VvW.js.map} +1 -1
  251. package/dist/components/p-CMop5vLm.js +150 -0
  252. package/dist/components/p-CMop5vLm.js.map +1 -0
  253. package/dist/components/{p-Cm69fGZy.js → p-COX6-Qb4.js} +10 -10
  254. package/dist/components/{p-Cm69fGZy.js.map → p-COX6-Qb4.js.map} +1 -1
  255. package/dist/components/{p-lImp2h8Q.js → p-COkDTfhY.js} +17 -17
  256. package/dist/components/{p-lImp2h8Q.js.map → p-COkDTfhY.js.map} +1 -1
  257. package/dist/components/{p-CyQvboOz.js → p-CQx0j-F_.js} +6 -6
  258. package/dist/components/{p-CyQvboOz.js.map → p-CQx0j-F_.js.map} +1 -1
  259. package/dist/components/{p-CYBhiXXl.js → p-CXxS70Mm.js} +7 -7
  260. package/dist/components/{p-CYBhiXXl.js.map → p-CXxS70Mm.js.map} +1 -1
  261. package/dist/components/{p-CoUvqjky.js → p-CZF2_NGo.js} +4 -4
  262. package/dist/components/{p-CoUvqjky.js.map → p-CZF2_NGo.js.map} +1 -1
  263. package/dist/components/{p-Iy7DUSnq.js → p-C_A1TQER.js} +17 -17
  264. package/dist/components/{p-Iy7DUSnq.js.map → p-C_A1TQER.js.map} +1 -1
  265. package/dist/components/{p-B9uklVCX.js → p-CbaxmrLQ.js} +4 -4
  266. package/dist/components/{p-B9uklVCX.js.map → p-CbaxmrLQ.js.map} +1 -1
  267. package/dist/components/{p-DVM-djDm.js → p-Ck-idhcY.js} +7 -7
  268. package/dist/components/{p-DVM-djDm.js.map → p-Ck-idhcY.js.map} +1 -1
  269. package/dist/components/{p-CczRGS7Y.js → p-CuKQ9tEk.js} +3 -3
  270. package/dist/components/{p-CczRGS7Y.js.map → p-CuKQ9tEk.js.map} +1 -1
  271. package/dist/components/{p-DbBws6X7.js → p-CzuXVZQ1.js} +4 -4
  272. package/dist/components/{p-DbBws6X7.js.map → p-CzuXVZQ1.js.map} +1 -1
  273. package/dist/components/{p-DPZ4R8tR.js → p-D0k1Pz_A.js} +17 -17
  274. package/dist/components/{p-DPZ4R8tR.js.map → p-D0k1Pz_A.js.map} +1 -1
  275. package/dist/components/{p-C09xOzQ6.js → p-D1L3-Uvq.js} +7 -7
  276. package/dist/components/{p-C09xOzQ6.js.map → p-D1L3-Uvq.js.map} +1 -1
  277. package/dist/components/{p-DKbMooLM.js → p-DCexcYIP.js} +79 -73
  278. package/dist/components/p-DCexcYIP.js.map +1 -0
  279. package/dist/components/{p-CF3y5NYY.js → p-DG4uEGCg.js} +5 -5
  280. package/dist/components/{p-CF3y5NYY.js.map → p-DG4uEGCg.js.map} +1 -1
  281. package/dist/components/{p-i4y_Venf.js → p-DKo99Z43.js} +3 -3
  282. package/dist/components/{p-i4y_Venf.js.map → p-DKo99Z43.js.map} +1 -1
  283. package/dist/components/{p-1ddWJmvW.js → p-DVBhtEXS.js} +8 -8
  284. package/dist/components/{p-1ddWJmvW.js.map → p-DVBhtEXS.js.map} +1 -1
  285. package/dist/components/{p-B_88roRV.js → p-DYzmbr8y.js} +17 -17
  286. package/dist/components/{p-B_88roRV.js.map → p-DYzmbr8y.js.map} +1 -1
  287. package/dist/components/{p-BsreOXdY.js → p-DZP-fvPJ.js} +3 -3
  288. package/dist/components/{p-BsreOXdY.js.map → p-DZP-fvPJ.js.map} +1 -1
  289. package/dist/components/{p-CsfhfNKJ.js → p-DcR04vBT.js} +4 -4
  290. package/dist/components/{p-CsfhfNKJ.js.map → p-DcR04vBT.js.map} +1 -1
  291. package/dist/components/p-DdsRqtRd.js +176 -0
  292. package/dist/components/p-DdsRqtRd.js.map +1 -0
  293. package/dist/components/{p-CLbfAJ0X.js → p-DffaAVW4.js} +2 -5
  294. package/dist/components/p-DffaAVW4.js.map +1 -0
  295. package/dist/components/{p-Ak82LNyC.js → p-DqCMV_MY.js} +15 -15
  296. package/dist/components/{p-Ak82LNyC.js.map → p-DqCMV_MY.js.map} +1 -1
  297. package/dist/components/{p-DLpSXikD.js → p-DrEcfY_J.js} +4 -4
  298. package/dist/components/{p-DLpSXikD.js.map → p-DrEcfY_J.js.map} +1 -1
  299. package/dist/components/{p-DRcpbaNd.js → p-DwKK-L0J.js} +5 -5
  300. package/dist/components/{p-DRcpbaNd.js.map → p-DwKK-L0J.js.map} +1 -1
  301. package/dist/components/{p-BYHrh00m.js → p-Dw_QK-he.js} +6 -6
  302. package/dist/components/{p-BYHrh00m.js.map → p-Dw_QK-he.js.map} +1 -1
  303. package/dist/components/{p-CQVcPp7I.js → p-Ij6Uu9h8.js} +7 -7
  304. package/dist/components/{p-CQVcPp7I.js.map → p-Ij6Uu9h8.js.map} +1 -1
  305. package/dist/components/{p-DvVSXyfE.js → p-K7KaIE1v.js} +18 -18
  306. package/dist/components/p-K7KaIE1v.js.map +1 -0
  307. package/dist/components/{p-D-mPHPaO.js → p-OiC5NHtc.js} +4 -4
  308. package/dist/components/{p-D-mPHPaO.js.map → p-OiC5NHtc.js.map} +1 -1
  309. package/dist/components/{p-DzS_0OPs.js → p-QZa2_PWg.js} +4 -4
  310. package/dist/components/{p-DzS_0OPs.js.map → p-QZa2_PWg.js.map} +1 -1
  311. package/dist/components/{p-DdS3vht-.js → p-UwE-6cC0.js} +18 -18
  312. package/dist/components/{p-DdS3vht-.js.map → p-UwE-6cC0.js.map} +1 -1
  313. package/dist/components/{p-CDEEN7tu.js → p-ZtMRKgam.js} +16 -9
  314. package/dist/components/p-ZtMRKgam.js.map +1 -0
  315. package/dist/components/{p-5bn-NO5u.js → p-_YEZiLlm.js} +8 -8
  316. package/dist/components/{p-5bn-NO5u.js.map → p-_YEZiLlm.js.map} +1 -1
  317. package/dist/components/{p-DdCwAPae.js → p-lphkmIXU.js} +4 -4
  318. package/dist/components/{p-DdCwAPae.js.map → p-lphkmIXU.js.map} +1 -1
  319. package/dist/components/{p-C0RAZYKW.js → p-rE7Q2Ue3.js} +9 -9
  320. package/dist/components/{p-C0RAZYKW.js.map → p-rE7Q2Ue3.js.map} +1 -1
  321. package/dist/components/{p-BnrAwLD3.js → p-uXv5wPjh.js} +30 -30
  322. package/dist/components/{p-BnrAwLD3.js.map → p-uXv5wPjh.js.map} +1 -1
  323. package/dist/components/{p-DLtUiUbu.js → p-wijn7N4I.js} +6 -6
  324. package/dist/components/{p-DLtUiUbu.js.map → p-wijn7N4I.js.map} +1 -1
  325. package/dist/components/{p-BKHg_nvO.js → p-x_ncrpeq.js} +27 -17
  326. package/dist/components/p-x_ncrpeq.js.map +1 -0
  327. package/dist/components/{p-B2dT8iAi.js → p-ygIo6UQn.js} +3 -3
  328. package/dist/components/{p-B2dT8iAi.js.map → p-ygIo6UQn.js.map} +1 -1
  329. package/dist/components/test-item.js +1 -1
  330. package/dist/esm/defaultFieldIcons-CxK9aHT8.js +24 -0
  331. package/dist/esm/defaultFieldIcons-CxK9aHT8.js.map +1 -0
  332. package/dist/esm/defaultPalette-CwCWCxsI.js +220 -0
  333. package/dist/esm/defaultPalette-CwCWCxsI.js.map +1 -0
  334. package/dist/esm/editorUtils-BwTFZZiO.js +432 -0
  335. package/dist/esm/editorUtils-BwTFZZiO.js.map +1 -0
  336. package/dist/esm/fieldDefaults-B3gB_457.js +23 -0
  337. package/dist/esm/fieldDefaults-B3gB_457.js.map +1 -0
  338. package/dist/{components/p-B8VmBxFg.js → esm/i18n-Bp8hmhrC.js} +7 -5
  339. package/dist/esm/{i18n-B8VmBxFg.js.map → i18n-Bp8hmhrC.js.map} +1 -1
  340. package/dist/esm/{index-MftqtSf2.js → index-CItPoq74.js} +2 -5
  341. package/dist/esm/index-CItPoq74.js.map +1 -0
  342. package/dist/esm/loader.js +3 -3
  343. package/dist/esm/ls-add-new-button_20.entry.js +1014 -0
  344. package/dist/esm/ls-badge.entry.js +1 -1
  345. package/dist/esm/ls-banner.entry.js +1 -1
  346. package/dist/esm/ls-button.entry.js +47 -0
  347. package/dist/esm/ls-button.entry.js.map +1 -0
  348. package/dist/esm/ls-card.entry.js +1 -1
  349. package/dist/esm/ls-checkbox-input_5.entry.js +1 -1
  350. package/dist/esm/ls-compose-loader_6.entry.js +374 -0
  351. package/dist/esm/ls-compose-manager.entry.js +4 -4
  352. package/dist/esm/ls-details-section.entry.js +1 -1
  353. package/dist/esm/ls-document-viewer.entry.js +31135 -0
  354. package/dist/esm/ls-document-viewer.entry.js.map +1 -0
  355. package/dist/esm/ls-document-viewer.js +3 -3
  356. package/dist/esm/ls-dropdown-item.entry.js +1 -1
  357. package/dist/esm/ls-dropdown.entry.js +1 -1
  358. package/dist/esm/ls-editor-field_11.entry.js +897 -0
  359. package/dist/esm/ls-field-alignment_3.entry.js +311 -0
  360. package/dist/esm/ls-field-format_2.entry.js +215 -0
  361. package/dist/esm/ls-field-properties-dropdown.entry.js +2 -2
  362. package/dist/esm/ls-formfield.entry.js +1 -1
  363. package/dist/esm/ls-header-bar.entry.js +1 -1
  364. package/dist/esm/ls-helper-bar_2.entry.js +34 -0
  365. package/dist/esm/ls-icon-button.entry.js +1 -1
  366. package/dist/esm/ls-icon-check-button.entry.js +1 -1
  367. package/dist/esm/ls-icon.entry.js +11209 -0
  368. package/dist/esm/ls-icon.entry.js.map +1 -0
  369. package/dist/esm/ls-label.entry.js +1 -1
  370. package/dist/esm/ls-list-card-button.entry.js +1 -1
  371. package/dist/esm/ls-loading_2.entry.js +34 -0
  372. package/dist/esm/ls-navbar.entry.js +1 -1
  373. package/dist/esm/ls-notification.entry.js +1 -1
  374. package/dist/esm/ls-radio-group.entry.js +1 -1
  375. package/dist/esm/ls-radio-input.entry.js +1 -1
  376. package/dist/esm/ls-tabs.entry.js +1 -1
  377. package/dist/esm/ls-tag.entry.js +1 -1
  378. package/dist/esm/ls-text.entry.js +1 -1
  379. package/dist/esm/ls-timeline-step.entry.js +1 -1
  380. package/dist/esm/ls-timeline.entry.js +1 -1
  381. package/dist/esm/ls-title-input.entry.js +2 -2
  382. package/dist/esm/ls-toolbox-field.entry.js +94 -0
  383. package/dist/esm/ls-toolbox-field.entry.js.map +1 -0
  384. package/dist/esm/ls-tooltip.entry.js +245 -0
  385. package/dist/esm/ls-tooltip.entry.js.map +1 -0
  386. package/dist/esm/mouseHandlers-BV17gkLo.js +966 -0
  387. package/dist/esm/mouseHandlers-BV17gkLo.js.map +1 -0
  388. package/dist/esm/test-item.entry.js +1 -1
  389. package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
  390. package/dist/ls-document-viewer/p-048d62f5.entry.js +2 -0
  391. package/dist/ls-document-viewer/p-048d62f5.entry.js.map +1 -0
  392. package/dist/ls-document-viewer/p-0cd12efb.entry.js +2 -0
  393. package/dist/ls-document-viewer/p-0cd12efb.entry.js.map +1 -0
  394. package/dist/ls-document-viewer/{p-98a57094.entry.js → p-17771224.entry.js} +2 -2
  395. package/dist/ls-document-viewer/{p-6772200f.entry.js → p-34c89736.entry.js} +2 -2
  396. package/dist/ls-document-viewer/{p-7cfcd1b7.entry.js → p-35181c98.entry.js} +2 -2
  397. package/dist/ls-document-viewer/{p-f107d880.entry.js → p-355fa23b.entry.js} +2 -2
  398. package/dist/ls-document-viewer/p-36c7680a.entry.js +2 -0
  399. package/dist/ls-document-viewer/p-36c7680a.entry.js.map +1 -0
  400. package/dist/ls-document-viewer/{p-b884f55e.entry.js → p-3bce0fe7.entry.js} +2 -2
  401. package/dist/ls-document-viewer/{p-77488866.entry.js → p-429be8d1.entry.js} +2 -2
  402. package/dist/ls-document-viewer/p-4f759b89.entry.js +2 -0
  403. package/dist/ls-document-viewer/p-4f759b89.entry.js.map +1 -0
  404. package/dist/ls-document-viewer/p-4f8330da.entry.js +2 -0
  405. package/dist/ls-document-viewer/p-4f8330da.entry.js.map +1 -0
  406. package/dist/ls-document-viewer/p-58506eb1.entry.js +2 -0
  407. package/dist/ls-document-viewer/p-58506eb1.entry.js.map +1 -0
  408. package/dist/ls-document-viewer/{p-a5615ff6.entry.js → p-5e4e4662.entry.js} +2 -2
  409. package/dist/ls-document-viewer/{p-cf174e71.entry.js → p-61e1b37b.entry.js} +2 -2
  410. package/dist/ls-document-viewer/{p-c0cd42f6.entry.js → p-6244f792.entry.js} +2 -2
  411. package/dist/ls-document-viewer/p-6d0a1ebd.entry.js +2 -0
  412. package/dist/ls-document-viewer/p-6d0a1ebd.entry.js.map +1 -0
  413. package/dist/ls-document-viewer/p-7145596d.entry.js +2 -0
  414. package/dist/ls-document-viewer/p-7145596d.entry.js.map +1 -0
  415. package/dist/ls-document-viewer/{p-f3798c61.entry.js → p-7c5b3574.entry.js} +2 -2
  416. package/dist/ls-document-viewer/p-7f51073d.entry.js +2 -0
  417. package/dist/ls-document-viewer/{p-e4b0754b.entry.js → p-85c87644.entry.js} +2 -2
  418. package/dist/ls-document-viewer/{p-7c5c0140.entry.js → p-8e0ad6ec.entry.js} +2 -2
  419. package/dist/ls-document-viewer/{p-6f20b92f.entry.js → p-94bbac6a.entry.js} +2 -2
  420. package/dist/ls-document-viewer/{p-7d43969d.entry.js → p-9ebec463.entry.js} +2 -2
  421. package/dist/ls-document-viewer/p-B3gB_457.js +2 -0
  422. package/dist/ls-document-viewer/p-B3gB_457.js.map +1 -0
  423. package/dist/ls-document-viewer/p-Bp8hmhrC.js +2 -0
  424. package/dist/ls-document-viewer/{p-B8VmBxFg.js.map → p-Bp8hmhrC.js.map} +1 -1
  425. package/dist/ls-document-viewer/p-BwTFZZiO.js +2 -0
  426. package/dist/ls-document-viewer/p-BwTFZZiO.js.map +1 -0
  427. package/dist/ls-document-viewer/{p-MftqtSf2.js → p-CItPoq74.js} +2 -2
  428. package/dist/ls-document-viewer/p-CItPoq74.js.map +1 -0
  429. package/dist/ls-document-viewer/p-CwCWCxsI.js +2 -0
  430. package/dist/ls-document-viewer/p-CwCWCxsI.js.map +1 -0
  431. package/dist/ls-document-viewer/p-CxK9aHT8.js +2 -0
  432. package/dist/ls-document-viewer/p-CxK9aHT8.js.map +1 -0
  433. package/dist/ls-document-viewer/p-DhBCuHVJ.js +2 -0
  434. package/dist/ls-document-viewer/p-DhBCuHVJ.js.map +1 -0
  435. package/dist/ls-document-viewer/{p-9eac3794.entry.js → p-a4121600.entry.js} +2 -2
  436. package/dist/ls-document-viewer/p-a7dd3ba3.entry.js +2 -0
  437. package/dist/ls-document-viewer/p-a961097c.entry.js +2 -0
  438. package/dist/ls-document-viewer/p-a961097c.entry.js.map +1 -0
  439. package/dist/ls-document-viewer/{p-6be63692.entry.js → p-abb5c859.entry.js} +2 -2
  440. package/dist/ls-document-viewer/{p-a0ed1643.entry.js → p-bbc53e46.entry.js} +2 -2
  441. package/dist/ls-document-viewer/{p-fcf271bf.entry.js → p-c521696b.entry.js} +2 -2
  442. package/dist/ls-document-viewer/{p-8239246f.entry.js → p-c78bd190.entry.js} +2 -2
  443. package/dist/ls-document-viewer/{p-47e3e300.entry.js → p-ca1a0e03.entry.js} +2 -2
  444. package/dist/ls-document-viewer/p-cee82e97.entry.js +9009 -0
  445. package/dist/ls-document-viewer/p-cee82e97.entry.js.map +1 -0
  446. package/dist/ls-document-viewer/{p-0fba6f09.entry.js → p-d297ea14.entry.js} +2 -2
  447. package/dist/ls-document-viewer/{p-a91b7258.entry.js → p-d2caf154.entry.js} +2 -2
  448. package/dist/ls-document-viewer/{p-05267892.entry.js → p-d76f5c10.entry.js} +2 -2
  449. package/dist/ls-document-viewer/p-edfdaad7.entry.js +2 -0
  450. package/dist/ls-document-viewer/p-edfdaad7.entry.js.map +1 -0
  451. package/dist/ls-document-viewer/{p-a74d04e0.entry.js → p-f318c711.entry.js} +2 -2
  452. package/dist/ls-document-viewer/p-f3585382.entry.js +24 -0
  453. package/dist/ls-document-viewer/p-f3585382.entry.js.map +1 -0
  454. package/dist/types/components/ls-document-viewer/snapHelper.d.ts +1 -2
  455. package/dist/types/components/ls-participant-select/ls-participant-select.d.ts +4 -2
  456. package/dist/types/components/ls-validation-manager/ls-validation-manager.d.ts +3 -0
  457. package/dist/types/components/ls-validation-tag/ls-validation-tag.d.ts +2 -0
  458. package/dist/types/components.d.ts +18 -0
  459. package/package.json +1 -1
  460. package/dist/cjs/index-CmGbWor3.js.map +0 -1
  461. package/dist/cjs/ls-add-new-button_51.cjs.entry.js +0 -46975
  462. package/dist/components/p-1e4klocT.js +0 -182
  463. package/dist/components/p-1e4klocT.js.map +0 -1
  464. package/dist/components/p-BKHg_nvO.js.map +0 -1
  465. package/dist/components/p-BsVEdJSl.js +0 -108
  466. package/dist/components/p-BsVEdJSl.js.map +0 -1
  467. package/dist/components/p-CDEEN7tu.js.map +0 -1
  468. package/dist/components/p-CLbfAJ0X.js.map +0 -1
  469. package/dist/components/p-DKbMooLM.js.map +0 -1
  470. package/dist/components/p-DVKeLLVk.js.map +0 -1
  471. package/dist/components/p-DYJoT5OC.js.map +0 -1
  472. package/dist/components/p-DvVSXyfE.js.map +0 -1
  473. package/dist/components/p-MG59mYF3.js.map +0 -1
  474. package/dist/components/p-j1rAIT-X.js.map +0 -1
  475. package/dist/esm/index-MftqtSf2.js.map +0 -1
  476. package/dist/esm/ls-add-new-button_51.entry.js +0 -46922
  477. package/dist/ls-document-viewer/p-B8VmBxFg.js +0 -2
  478. package/dist/ls-document-viewer/p-MftqtSf2.js.map +0 -1
  479. package/dist/ls-document-viewer/p-d865f5a4.entry.js +0 -9031
  480. package/dist/ls-document-viewer/p-d865f5a4.entry.js.map +0 -1
  481. package/dist/ls-document-viewer/p-db2560fe.entry.js +0 -2
  482. package/dist/ls-document-viewer/p-e3a04b71.entry.js +0 -2
  483. /package/dist/ls-document-viewer/{p-98a57094.entry.js.map → p-17771224.entry.js.map} +0 -0
  484. /package/dist/ls-document-viewer/{p-6772200f.entry.js.map → p-34c89736.entry.js.map} +0 -0
  485. /package/dist/ls-document-viewer/{p-7cfcd1b7.entry.js.map → p-35181c98.entry.js.map} +0 -0
  486. /package/dist/ls-document-viewer/{p-f107d880.entry.js.map → p-355fa23b.entry.js.map} +0 -0
  487. /package/dist/ls-document-viewer/{p-b884f55e.entry.js.map → p-3bce0fe7.entry.js.map} +0 -0
  488. /package/dist/ls-document-viewer/{p-77488866.entry.js.map → p-429be8d1.entry.js.map} +0 -0
  489. /package/dist/ls-document-viewer/{p-a5615ff6.entry.js.map → p-5e4e4662.entry.js.map} +0 -0
  490. /package/dist/ls-document-viewer/{p-cf174e71.entry.js.map → p-61e1b37b.entry.js.map} +0 -0
  491. /package/dist/ls-document-viewer/{p-c0cd42f6.entry.js.map → p-6244f792.entry.js.map} +0 -0
  492. /package/dist/ls-document-viewer/{p-f3798c61.entry.js.map → p-7c5b3574.entry.js.map} +0 -0
  493. /package/dist/ls-document-viewer/{p-db2560fe.entry.js.map → p-7f51073d.entry.js.map} +0 -0
  494. /package/dist/ls-document-viewer/{p-e4b0754b.entry.js.map → p-85c87644.entry.js.map} +0 -0
  495. /package/dist/ls-document-viewer/{p-7c5c0140.entry.js.map → p-8e0ad6ec.entry.js.map} +0 -0
  496. /package/dist/ls-document-viewer/{p-6f20b92f.entry.js.map → p-94bbac6a.entry.js.map} +0 -0
  497. /package/dist/ls-document-viewer/{p-7d43969d.entry.js.map → p-9ebec463.entry.js.map} +0 -0
  498. /package/dist/ls-document-viewer/{p-9eac3794.entry.js.map → p-a4121600.entry.js.map} +0 -0
  499. /package/dist/ls-document-viewer/{p-e3a04b71.entry.js.map → p-a7dd3ba3.entry.js.map} +0 -0
  500. /package/dist/ls-document-viewer/{p-6be63692.entry.js.map → p-abb5c859.entry.js.map} +0 -0
  501. /package/dist/ls-document-viewer/{p-a0ed1643.entry.js.map → p-bbc53e46.entry.js.map} +0 -0
  502. /package/dist/ls-document-viewer/{p-fcf271bf.entry.js.map → p-c521696b.entry.js.map} +0 -0
  503. /package/dist/ls-document-viewer/{p-8239246f.entry.js.map → p-c78bd190.entry.js.map} +0 -0
  504. /package/dist/ls-document-viewer/{p-47e3e300.entry.js.map → p-ca1a0e03.entry.js.map} +0 -0
  505. /package/dist/ls-document-viewer/{p-0fba6f09.entry.js.map → p-d297ea14.entry.js.map} +0 -0
  506. /package/dist/ls-document-viewer/{p-a91b7258.entry.js.map → p-d2caf154.entry.js.map} +0 -0
  507. /package/dist/ls-document-viewer/{p-05267892.entry.js.map → p-d76f5c10.entry.js.map} +0 -0
  508. /package/dist/ls-document-viewer/{p-a74d04e0.entry.js.map → p-f318c711.entry.js.map} +0 -0
@@ -1,24 +1,28 @@
1
- import { t as transformTag, p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-CLbfAJ0X.js';
2
- import { d as dvI18n } from './p-B8VmBxFg.js';
3
- import { f as findDimensions, r as recalculateCoordinates, h as findIn, d as defineCustomElement$3, o as oob } from './p-MG59mYF3.js';
1
+ import { t as transformTag, p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-DffaAVW4.js';
2
+ import { d as dvI18n } from './p-Bp8hmhrC.js';
3
+ import { f as findDimensions, r as recalculateCoordinates, h as findIn, d as defineCustomElement$3, o as oob } from './p-C6Wto5hV.js';
4
4
  import { D as DEFAULT_FONT_SIZE, F as FIELD_DEFAULTS, a as DEFAULT_FONT_NAME } from './p-B3gB_457.js';
5
5
  import { d as defaultRolePalette } from './p-BKrsDBDB.js';
6
- import { d as defineCustomElement$2 } from './p-CB9tEjJy.js';
7
- import { d as defineCustomElement$1 } from './p-BsreOXdY.js';
6
+ import { d as defineCustomElement$2 } from './p-BT5rCW3w.js';
7
+ import { d as defineCustomElement$1 } from './p-DZP-fvPJ.js';
8
8
 
9
9
  const SNAP_THRESHOLD = 8; // pixels proximity to trigger snap
10
10
  /**
11
11
  * Calculate snap positions for a dragging field against existing fields.
12
- * Snaps any outer edge (left/right/top/bottom) of the moving field to any
13
- * outer edge of every other field on the same page.
12
+ * Snaps edges and centers. Shows guides for ALL aligned edges at the snapped position.
14
13
  * All values are in zoomed pixel coordinates relative to the document frame.
15
14
  */
16
15
  function calculateSnap(dragLeft, dragTop, dragWidth, dragHeight, fields, currentPage, excludeIds) {
17
16
  const result = { x: null, y: null, guides: [] };
18
17
  const dragRight = dragLeft + dragWidth;
19
18
  const dragBottom = dragTop + dragHeight;
19
+ const dragCenterX = dragLeft + dragWidth / 2;
20
+ const dragCenterY = dragTop + dragHeight / 2;
20
21
  let closestDx = SNAP_THRESHOLD + 1;
21
22
  let closestDy = SNAP_THRESHOLD + 1;
23
+ let snappedX = dragLeft;
24
+ let snappedY = dragTop;
25
+ // First pass: find the closest snap distance per axis
22
26
  for (const field of fields) {
23
27
  if (field.dataItem?.page !== currentPage)
24
28
  continue;
@@ -28,50 +32,98 @@ function calculateSnap(dragLeft, dragTop, dragWidth, dragHeight, fields, current
28
32
  const fTop = field.offsetTop;
29
33
  const fRight = fLeft + field.offsetWidth;
30
34
  const fBottom = fTop + field.offsetHeight;
31
- // X-axis: any dragged edge to any target edge
35
+ const fCenterX = fLeft + field.offsetWidth / 2;
36
+ const fCenterY = fTop + field.offsetHeight / 2;
32
37
  const xPairs = [
33
38
  { dragEdge: dragLeft, targetEdge: fLeft },
34
39
  { dragEdge: dragLeft, targetEdge: fRight },
35
40
  { dragEdge: dragRight, targetEdge: fLeft },
36
41
  { dragEdge: dragRight, targetEdge: fRight },
42
+ { dragEdge: dragCenterX, targetEdge: fCenterX },
37
43
  ];
38
44
  for (const { dragEdge, targetEdge } of xPairs) {
39
45
  const dist = Math.abs(dragEdge - targetEdge);
40
46
  if (dist < closestDx) {
41
47
  closestDx = dist;
42
- result.x = dragLeft + (targetEdge - dragEdge);
43
- result.guides = result.guides.filter(g => g.orientation !== 'v');
44
- result.guides.push({ orientation: 'v', position: targetEdge });
48
+ snappedX = dragLeft + (targetEdge - dragEdge);
45
49
  }
46
50
  }
47
- // Y-axis: any dragged edge to any target edge
48
51
  const yPairs = [
49
52
  { dragEdge: dragTop, targetEdge: fTop },
50
53
  { dragEdge: dragTop, targetEdge: fBottom },
51
54
  { dragEdge: dragBottom, targetEdge: fTop },
52
55
  { dragEdge: dragBottom, targetEdge: fBottom },
56
+ { dragEdge: dragCenterY, targetEdge: fCenterY },
53
57
  ];
54
58
  for (const { dragEdge, targetEdge } of yPairs) {
55
59
  const dist = Math.abs(dragEdge - targetEdge);
56
60
  if (dist < closestDy) {
57
61
  closestDy = dist;
58
- result.y = dragTop + (targetEdge - dragEdge);
59
- result.guides = result.guides.filter(g => g.orientation !== 'h');
60
- result.guides.push({ orientation: 'h', position: targetEdge });
62
+ snappedY = dragTop + (targetEdge - dragEdge);
61
63
  }
62
64
  }
63
65
  }
64
- if (closestDx > SNAP_THRESHOLD) {
65
- result.x = null;
66
- result.guides = result.guides.filter(g => g.orientation !== 'v');
66
+ if (closestDx > SNAP_THRESHOLD)
67
+ snappedX = dragLeft;
68
+ if (closestDy > SNAP_THRESHOLD)
69
+ snappedY = dragTop;
70
+ // Second pass: collect ALL guides that align at the snapped position
71
+ if (closestDx <= SNAP_THRESHOLD) {
72
+ result.x = snappedX;
73
+ const snappedRight = snappedX + dragWidth;
74
+ const snappedCenterX = snappedX + dragWidth / 2;
75
+ const guideSet = new Set();
76
+ for (const field of fields) {
77
+ if (field.dataItem?.page !== currentPage)
78
+ continue;
79
+ if (excludeIds && excludeIds.includes(field.dataItem?.id))
80
+ continue;
81
+ const fLeft = field.offsetLeft;
82
+ const fRight = fLeft + field.offsetWidth;
83
+ const fCenterX = fLeft + field.offsetWidth / 2;
84
+ for (const target of [fLeft, fRight, fCenterX]) {
85
+ if (Math.abs(snappedX - target) < 1 || Math.abs(snappedRight - target) < 1 || Math.abs(snappedCenterX - target) < 1) {
86
+ guideSet.add(target);
87
+ }
88
+ }
89
+ }
90
+ guideSet.forEach(pos => result.guides.push({ orientation: 'v', position: pos }));
67
91
  }
68
- if (closestDy > SNAP_THRESHOLD) {
69
- result.y = null;
70
- result.guides = result.guides.filter(g => g.orientation !== 'h');
92
+ if (closestDy <= SNAP_THRESHOLD) {
93
+ result.y = snappedY;
94
+ const snappedBottom = snappedY + dragHeight;
95
+ const snappedCenterY = snappedY + dragHeight / 2;
96
+ const guideSet = new Set();
97
+ for (const field of fields) {
98
+ if (field.dataItem?.page !== currentPage)
99
+ continue;
100
+ if (excludeIds && excludeIds.includes(field.dataItem?.id))
101
+ continue;
102
+ const fTop = field.offsetTop;
103
+ const fBottom = fTop + field.offsetHeight;
104
+ const fCenterY = fTop + field.offsetHeight / 2;
105
+ for (const target of [fTop, fBottom, fCenterY]) {
106
+ if (Math.abs(snappedY - target) < 1 || Math.abs(snappedBottom - target) < 1 || Math.abs(snappedCenterY - target) < 1) {
107
+ guideSet.add(target);
108
+ }
109
+ }
110
+ }
111
+ guideSet.forEach(pos => result.guides.push({ orientation: 'h', position: pos }));
71
112
  }
72
113
  return result;
73
114
  }
74
115
 
116
+ const preventSelect = (e) => e.preventDefault();
117
+ function disableSelection() {
118
+ document.body.style.userSelect = 'none';
119
+ document.body.style.webkitUserSelect = 'none';
120
+ document.addEventListener('selectstart', preventSelect);
121
+ }
122
+ function enableSelection() {
123
+ document.body.style.userSelect = '';
124
+ document.body.style.webkitUserSelect = '';
125
+ document.removeEventListener('selectstart', preventSelect);
126
+ }
75
127
  function updateSelectionBox() {
76
128
  var box = this.component.shadowRoot.getElementById('ls-box-selector');
77
129
  if (!this.selected || this.selected.length < 2) {
@@ -250,100 +302,189 @@ function mouseMove(event) {
250
302
  }
251
303
  // We have the mouse held down on a field edge to resize it.
252
304
  if (this.hitField && this.edgeSide && this.startMouse && event.buttons === 1) {
305
+ disableSelection();
253
306
  const movedX = event.screenX - this.startMouse.x;
254
307
  const movedY = event.screenY - this.startMouse.y;
255
- var width = this.hitField.dataItem.width;
256
- var height = this.hitField.dataItem.height;
257
308
  var scale = this.hitField.dataItem.formElementType === 'signature' && this._template.fixSignatureScale;
258
309
  switch (this.edgeSide) {
259
310
  case 'n':
260
- if (outOfBounds({ ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom }))
261
- break;
262
- this.hitField.style.top = this.startMouse.top + movedY + 'px';
263
- this.hitField.style.height = this.startMouse.height - movedY + 'px';
264
311
  if (scale) {
265
- width = (this.startMouse.height - movedY) * 3.8;
266
- this.hitField.style.width = width + 'px';
312
+ const newHeight = this.startMouse.height - movedY;
313
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
314
+ const newWidth = newHeight * aspectRatio;
315
+ if (outOfBounds({ ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: newHeight / this.zoom, width: newWidth / this.zoom }))
316
+ break;
317
+ this.hitField.style.top = this.startMouse.top + movedY + 'px';
318
+ this.hitField.style.height = newHeight + 'px';
319
+ this.hitField.style.width = newWidth + 'px';
320
+ this.hitField.dataItem = { ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: newHeight / this.zoom, width: newWidth / this.zoom };
321
+ }
322
+ else {
323
+ if (outOfBounds({ ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom }))
324
+ break;
325
+ this.hitField.style.top = this.startMouse.top + movedY + 'px';
326
+ this.hitField.style.height = this.startMouse.height - movedY + 'px';
327
+ this.hitField.dataItem = { ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom };
267
328
  }
268
- this.hitField.dataItem = { ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom, width };
269
329
  break;
270
330
  case 's':
271
- if (outOfBounds({ ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom }))
272
- break;
273
- this.hitField.style.height = this.startMouse.height + movedY + 'px';
274
331
  if (scale) {
275
- width = (this.startMouse.height + movedY) * 3.8;
276
- this.hitField.style.width = width + 'px';
332
+ const newHeight = this.startMouse.height + movedY;
333
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
334
+ const newWidth = newHeight * aspectRatio;
335
+ if (outOfBounds({ ...this.hitField.dataItem, height: newHeight / this.zoom, width: newWidth / this.zoom }))
336
+ break;
337
+ this.hitField.style.height = newHeight + 'px';
338
+ this.hitField.style.width = newWidth + 'px';
339
+ this.hitField.dataItem = { ...this.hitField.dataItem, height: newHeight / this.zoom, width: newWidth / this.zoom };
340
+ }
341
+ else {
342
+ if (outOfBounds({ ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom }))
343
+ break;
344
+ this.hitField.style.height = this.startMouse.height + movedY + 'px';
345
+ this.hitField.dataItem = { ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom };
277
346
  }
278
- this.hitField.dataItem = { ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom, width };
279
347
  break;
280
348
  case 'e':
281
- if (outOfBounds({ ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom }))
282
- break;
283
- this.hitField.style.width = this.startMouse.width + movedX + 'px';
284
349
  if (scale) {
285
- height = Math.round((this.startMouse.width + movedX) / 3.8);
286
- this.hitField.style.height = height + 'px';
350
+ const newWidth = this.startMouse.width + movedX;
351
+ const aspectRatio = this.startMouse.height / this.startMouse.width;
352
+ const newHeight = newWidth * aspectRatio;
353
+ if (outOfBounds({ ...this.hitField.dataItem, width: newWidth / this.zoom, height: newHeight / this.zoom }))
354
+ break;
355
+ this.hitField.style.width = newWidth + 'px';
356
+ this.hitField.style.height = newHeight + 'px';
357
+ this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth / this.zoom, height: newHeight / this.zoom };
358
+ }
359
+ else {
360
+ if (outOfBounds({ ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom }))
361
+ break;
362
+ this.hitField.style.width = this.startMouse.width + movedX + 'px';
363
+ this.hitField.dataItem = { ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom };
287
364
  }
288
- this.hitField.dataItem = { ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom, height };
289
365
  break;
290
366
  case 'w':
291
- if (outOfBounds({ ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom }))
292
- break;
293
- this.hitField.style.left = this.startMouse.left + movedX + 'px';
294
- this.hitField.style.width = this.startMouse.width - movedX + 'px';
295
367
  if (scale) {
296
- height = Math.round((this.startMouse.width - movedX) / 3.8);
297
- this.hitField.style.height = height + 'px';
368
+ const newWidth = this.startMouse.width - movedX;
369
+ const aspectRatio = this.startMouse.height / this.startMouse.width;
370
+ const newHeight = newWidth * aspectRatio;
371
+ if (outOfBounds({ ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom }))
372
+ break;
373
+ this.hitField.style.left = this.startMouse.left + movedX + 'px';
374
+ this.hitField.style.width = newWidth + 'px';
375
+ this.hitField.style.height = newHeight + 'px';
376
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom };
377
+ }
378
+ else {
379
+ if (outOfBounds({ ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom }))
380
+ break;
381
+ this.hitField.style.left = this.startMouse.left + movedX + 'px';
382
+ this.hitField.style.width = this.startMouse.width - movedX + 'px';
383
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom };
298
384
  }
299
- this.hitField.dataItem = { ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom, height };
300
385
  break;
301
386
  case 'se': {
302
- const newWidth = (this.startMouse.width + movedX) / this.zoom;
303
- const newHeight = (this.startMouse.height + movedY) / this.zoom;
304
- if (outOfBounds({ ...this.hitField.dataItem, width: newWidth, height: newHeight }))
305
- break;
306
- this.hitField.style.width = this.startMouse.width + movedX + 'px';
307
- this.hitField.style.height = this.startMouse.height + movedY + 'px';
308
- this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth, height: newHeight };
387
+ if (scale) {
388
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
389
+ const newWidth = this.startMouse.width + movedX;
390
+ const newHeight = newWidth / aspectRatio;
391
+ if (outOfBounds({ ...this.hitField.dataItem, width: newWidth / this.zoom, height: newHeight / this.zoom }))
392
+ break;
393
+ this.hitField.style.width = newWidth + 'px';
394
+ this.hitField.style.height = newHeight + 'px';
395
+ this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth / this.zoom, height: newHeight / this.zoom };
396
+ }
397
+ else {
398
+ const newWidth = (this.startMouse.width + movedX) / this.zoom;
399
+ const newHeight = (this.startMouse.height + movedY) / this.zoom;
400
+ if (outOfBounds({ ...this.hitField.dataItem, width: newWidth, height: newHeight }))
401
+ break;
402
+ this.hitField.style.width = this.startMouse.width + movedX + 'px';
403
+ this.hitField.style.height = this.startMouse.height + movedY + 'px';
404
+ this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth, height: newHeight };
405
+ }
309
406
  break;
310
407
  }
311
408
  case 'nw': {
312
- const newLeft = (this.startMouse.left + movedX) / this.zoom;
313
- const newTop = (this.startMouse.top + movedY) / this.zoom;
314
- const newWidth = (this.startMouse.width - movedX) / this.zoom;
315
- const newHeight = (this.startMouse.height - movedY) / this.zoom;
316
- if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight }))
317
- break;
318
- this.hitField.style.left = this.startMouse.left + movedX + 'px';
319
- this.hitField.style.top = this.startMouse.top + movedY + 'px';
320
- this.hitField.style.width = this.startMouse.width - movedX + 'px';
321
- this.hitField.style.height = this.startMouse.height - movedY + 'px';
322
- this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight };
409
+ if (scale) {
410
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
411
+ const newWidth = this.startMouse.width - movedX;
412
+ const newHeight = newWidth / aspectRatio;
413
+ const newLeft = this.startMouse.left + movedX;
414
+ const newTop = this.startMouse.top + (this.startMouse.height - newHeight);
415
+ if (outOfBounds({ ...this.hitField.dataItem, left: newLeft / this.zoom, top: newTop / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom }))
416
+ break;
417
+ this.hitField.style.left = newLeft + 'px';
418
+ this.hitField.style.top = newTop + 'px';
419
+ this.hitField.style.width = newWidth + 'px';
420
+ this.hitField.style.height = newHeight + 'px';
421
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft / this.zoom, top: newTop / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom };
422
+ }
423
+ else {
424
+ const newLeft = (this.startMouse.left + movedX) / this.zoom;
425
+ const newTop = (this.startMouse.top + movedY) / this.zoom;
426
+ const newWidth = (this.startMouse.width - movedX) / this.zoom;
427
+ const newHeight = (this.startMouse.height - movedY) / this.zoom;
428
+ if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight }))
429
+ break;
430
+ this.hitField.style.left = this.startMouse.left + movedX + 'px';
431
+ this.hitField.style.top = this.startMouse.top + movedY + 'px';
432
+ this.hitField.style.width = this.startMouse.width - movedX + 'px';
433
+ this.hitField.style.height = this.startMouse.height - movedY + 'px';
434
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight };
435
+ }
323
436
  break;
324
437
  }
325
438
  case 'ne': {
326
- const newWidth = (this.startMouse.width + movedX) / this.zoom;
327
- const newTop = (this.startMouse.top + movedY) / this.zoom;
328
- const newHeight = (this.startMouse.height - movedY) / this.zoom;
329
- if (outOfBounds({ ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight }))
330
- break;
331
- this.hitField.style.width = this.startMouse.width + movedX + 'px';
332
- this.hitField.style.top = this.startMouse.top + movedY + 'px';
333
- this.hitField.style.height = this.startMouse.height - movedY + 'px';
334
- this.hitField.dataItem = { ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight };
439
+ if (scale) {
440
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
441
+ const newWidth = this.startMouse.width + movedX;
442
+ const newHeight = newWidth / aspectRatio;
443
+ const newTop = this.startMouse.top + (this.startMouse.height - newHeight);
444
+ if (outOfBounds({ ...this.hitField.dataItem, top: newTop / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom }))
445
+ break;
446
+ this.hitField.style.top = newTop + 'px';
447
+ this.hitField.style.width = newWidth + 'px';
448
+ this.hitField.style.height = newHeight + 'px';
449
+ this.hitField.dataItem = { ...this.hitField.dataItem, top: newTop / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom };
450
+ }
451
+ else {
452
+ const newWidth = (this.startMouse.width + movedX) / this.zoom;
453
+ const newTop = (this.startMouse.top + movedY) / this.zoom;
454
+ const newHeight = (this.startMouse.height - movedY) / this.zoom;
455
+ if (outOfBounds({ ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight }))
456
+ break;
457
+ this.hitField.style.width = this.startMouse.width + movedX + 'px';
458
+ this.hitField.style.top = this.startMouse.top + movedY + 'px';
459
+ this.hitField.style.height = this.startMouse.height - movedY + 'px';
460
+ this.hitField.dataItem = { ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight };
461
+ }
335
462
  break;
336
463
  }
337
464
  case 'sw': {
338
- const newLeft = (this.startMouse.left + movedX) / this.zoom;
339
- const newWidth = (this.startMouse.width - movedX) / this.zoom;
340
- const newHeight = (this.startMouse.height + movedY) / this.zoom;
341
- if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight }))
342
- break;
343
- this.hitField.style.left = this.startMouse.left + movedX + 'px';
344
- this.hitField.style.width = this.startMouse.width - movedX + 'px';
345
- this.hitField.style.height = this.startMouse.height + movedY + 'px';
346
- this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight };
465
+ if (scale) {
466
+ const aspectRatio = this.startMouse.width / this.startMouse.height;
467
+ const newWidth = this.startMouse.width - movedX;
468
+ const newHeight = newWidth / aspectRatio;
469
+ const newLeft = this.startMouse.left + movedX;
470
+ if (outOfBounds({ ...this.hitField.dataItem, left: newLeft / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom }))
471
+ break;
472
+ this.hitField.style.left = newLeft + 'px';
473
+ this.hitField.style.width = newWidth + 'px';
474
+ this.hitField.style.height = newHeight + 'px';
475
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft / this.zoom, width: newWidth / this.zoom, height: newHeight / this.zoom };
476
+ }
477
+ else {
478
+ const newLeft = (this.startMouse.left + movedX) / this.zoom;
479
+ const newWidth = (this.startMouse.width - movedX) / this.zoom;
480
+ const newHeight = (this.startMouse.height + movedY) / this.zoom;
481
+ if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight }))
482
+ break;
483
+ this.hitField.style.left = this.startMouse.left + movedX + 'px';
484
+ this.hitField.style.width = this.startMouse.width - movedX + 'px';
485
+ this.hitField.style.height = this.startMouse.height + movedY + 'px';
486
+ this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight };
487
+ }
347
488
  break;
348
489
  }
349
490
  }
@@ -368,7 +509,7 @@ function mouseMove(event) {
368
509
  }
369
510
  else if (this.startLocations && !this.edgeSide && this.startMouse && event.buttons === 1) {
370
511
  this.isMoving = true;
371
- document.body.style.userSelect = 'none';
512
+ disableSelection();
372
513
  var box = this.component.shadowRoot.getElementById('ls-box-selector');
373
514
  box.style.visibility = 'hidden';
374
515
  // Dismiss any open date picker when moving fields
@@ -414,7 +555,7 @@ function mouseUp(event) {
414
555
  this.edgeSide = null;
415
556
  this.startMouse = null;
416
557
  this.component.style.cursor = 'auto';
417
- document.body.style.userSelect = '';
558
+ enableSelection();
418
559
  clearSnapGuides.bind(this)();
419
560
  // find what was inside the selection box emit the select event and change their style
420
561
  if (this.selectionBox && this.isBoxing) {
@@ -533,12 +674,8 @@ function toolboxDragStart(fieldData) {
533
674
  const zoom = this.zoom;
534
675
  this._isToolboxDragging = true;
535
676
  let hasMoved = false;
536
- // Prevent text selection during drag and set grabbing cursor
537
- document.body.style.userSelect = 'none';
538
- const cursorStyle = document.createElement('style');
539
- cursorStyle.id = 'ls-drag-cursor';
540
- cursorStyle.textContent = '* { cursor: grabbing !important; }';
541
- document.head.appendChild(cursorStyle);
677
+ // Prevent text selection during drag
678
+ disableSelection();
542
679
  // Add dragging class to toolbox fields (shadow DOM cursor override)
543
680
  this.component.shadowRoot.querySelectorAll('ls-left-bar, ls-compose-loader').forEach(bar => {
544
681
  bar.shadowRoot?.querySelectorAll('ls-toolbox-field').forEach(el => el.classList.add('ls-dv-dragging'));
@@ -549,7 +686,7 @@ function toolboxDragStart(fieldData) {
549
686
  ghost.style.position = 'fixed';
550
687
  ghost.style.width = fieldData.defaultWidth * zoom + 'px';
551
688
  ghost.style.height = fieldData.defaultHeight * zoom + 'px';
552
- ghost.style.border = `2px dashed ${defaultRolePalette[this.signer % 100].s60}`;
689
+ ghost.style.border = `1px dashed ${defaultRolePalette[this.signer % 100].s60}`;
553
690
  const s20 = defaultRolePalette[this.signer % 100].s20.replace('#', '');
554
691
  const r = parseInt(s20.substring(0, 2), 16);
555
692
  const g = parseInt(s20.substring(2, 4), 16);
@@ -559,16 +696,40 @@ function toolboxDragStart(fieldData) {
559
696
  ghost.style.pointerEvents = 'none';
560
697
  ghost.style.zIndex = '10000';
561
698
  ghost.style.visibility = 'hidden';
562
- ghost.style.boxSizing = 'border-box';
699
+ ghost.style.boxSizing = 'content-box';
563
700
  ghost.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';
564
701
  ghost.style.fontSize = Math.round(DEFAULT_FONT_SIZE * zoom) + 'px';
565
702
  ghost.style.color = defaultRolePalette[this.signer % 100].s100;
566
- ghost.style.overflow = 'hidden';
703
+ ghost.style.overflow = 'visible';
567
704
  ghost.style.whiteSpace = 'nowrap';
568
705
  ghost.style.display = 'flex';
569
706
  ghost.style.alignItems = 'center';
570
707
  ghost.style.textTransform = 'capitalize';
571
708
  ghost.innerHTML = fieldData.formElementType;
709
+ // Assignee label below ghost
710
+ const assignee = this.mode === 'compose'
711
+ ? this._recipients?.find(r => r.signerIndex === this.signer)
712
+ : this._template.roles.find(r => r.signerIndex === this.signer);
713
+ const assigneeName = this.mode === 'compose' && assignee?.previousRecipientDecides
714
+ ? 'To Be Decided'
715
+ : this.mode === 'compose'
716
+ ? `${assignee?.firstName} ${assignee?.lastName}`
717
+ : assignee?.name || (this.signer === 0 ? 'Sender' : `Participant ${this.signer}`);
718
+ const assigneeLabel = document.createElement('p');
719
+ assigneeLabel.style.position = 'absolute';
720
+ assigneeLabel.style.color = 'var(--gray-80, #3a3a3a)';
721
+ assigneeLabel.style.bottom = `-${1 * zoom}rem`;
722
+ assigneeLabel.style.left = '0';
723
+ assigneeLabel.style.margin = '0';
724
+ assigneeLabel.style.padding = '0';
725
+ assigneeLabel.style.lineHeight = '1';
726
+ assigneeLabel.style.fontSize = `${0.625 * zoom}rem`;
727
+ assigneeLabel.style.whiteSpace = 'nowrap';
728
+ assigneeLabel.style.fontFamily = 'sans-serif';
729
+ assigneeLabel.style.textTransform = 'none';
730
+ assigneeLabel.style.pointerEvents = 'none';
731
+ assigneeLabel.textContent = `${dvI18n.t('fieldproperties.assignedto')} ${assigneeName}`;
732
+ ghost.appendChild(assigneeLabel);
572
733
  this.component.shadowRoot.appendChild(ghost);
573
734
  // Info chip at bottom of screen
574
735
  const chip = document.createElement('div');
@@ -593,11 +754,25 @@ function toolboxDragStart(fieldData) {
593
754
  hasMoved = true;
594
755
  const dragWidth = fieldData.defaultWidth * zoom;
595
756
  const dragHeight = fieldData.defaultHeight * zoom;
596
- ghost.style.visibility = 'visible';
597
757
  const frameRect = frame.getBoundingClientRect();
598
758
  const isOverFrame = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&
599
759
  e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;
760
+ const isDragging = e.buttons === 1;
761
+ // Only show grabbing cursor when ghost is visible
762
+ let cursorStyle = document.getElementById('ls-drag-cursor');
763
+ if ((isOverFrame || isDragging) && !cursorStyle) {
764
+ cursorStyle = document.createElement('style');
765
+ cursorStyle.id = 'ls-drag-cursor';
766
+ cursorStyle.textContent = '* { cursor: grabbing !important; }';
767
+ document.head.appendChild(cursorStyle);
768
+ }
769
+ else if (!isOverFrame && !isDragging && cursorStyle) {
770
+ cursorStyle.remove();
771
+ }
772
+ // When dragging (mouse held): show ghost over wrapper area
773
+ // When click-to-place (mouse not held): only show over document frame
600
774
  if (isOverFrame) {
775
+ ghost.style.visibility = 'visible';
601
776
  ghost.style.opacity = '1';
602
777
  const x = e.clientX - frameRect.left + frame.scrollLeft;
603
778
  const y = e.clientY - frameRect.top + frame.scrollTop;
@@ -609,12 +784,17 @@ function toolboxDragStart(fieldData) {
609
784
  ghost.style.top = (snap.y !== null ? snap.y + frameRect.top - frame.scrollTop : e.clientY - dragHeight / 2) + 'px';
610
785
  showSnapGuides.bind(this)(snap.guides);
611
786
  }
612
- else {
787
+ else if (isDragging) {
788
+ ghost.style.visibility = 'visible';
613
789
  ghost.style.opacity = '0.5';
614
790
  ghost.style.left = (e.clientX - dragWidth / 2) + 'px';
615
791
  ghost.style.top = (e.clientY - dragHeight / 2) + 'px';
616
792
  clearSnapGuides.bind(this)();
617
793
  }
794
+ else {
795
+ ghost.style.visibility = 'hidden';
796
+ clearSnapGuides.bind(this)();
797
+ }
618
798
  };
619
799
  const cleanup = () => {
620
800
  document.removeEventListener('mousemove', onMouseMove);
@@ -623,7 +803,7 @@ function toolboxDragStart(fieldData) {
623
803
  ghost.remove();
624
804
  chip.remove();
625
805
  clearSnapGuides.bind(this)();
626
- document.body.style.userSelect = '';
806
+ enableSelection();
627
807
  const cursorStyle = document.getElementById('ls-drag-cursor');
628
808
  if (cursorStyle)
629
809
  cursorStyle.remove();
@@ -809,10 +989,10 @@ const LsFieldDistribute = /*@__PURE__*/ proxyCustomElement(class LsFieldDistribu
809
989
  this.mutate.emit(diffs);
810
990
  }
811
991
  distributeHorizontal() {
992
+ if (!this.dataItem || this.dataItem.length < 3)
993
+ return;
812
994
  var spacing = this.component.shadowRoot.getElementById('ls-fix-horizontal-space');
813
995
  const sorted = this.dataItem.sort((a, b) => a.left - b.left);
814
- if (sorted.length < 3)
815
- return;
816
996
  var avgspace = 0;
817
997
  const leftmost = sorted[0].left + sorted[0].width / 2;
818
998
  const rightmost = sorted.reduce((acc, cur) => {
@@ -844,6 +1024,8 @@ const LsFieldDistribute = /*@__PURE__*/ proxyCustomElement(class LsFieldDistribu
844
1024
  this.mutate.emit(diffs);
845
1025
  }
846
1026
  gapVertical(spacing) {
1027
+ if (!this.dataItem || this.dataItem.length === 0)
1028
+ return;
847
1029
  const sorted = this.dataItem.sort((a, b) => a.top - b.top);
848
1030
  var buffer = sorted[0].top;
849
1031
  const diffs = sorted.map(c => {
@@ -867,6 +1049,8 @@ const LsFieldDistribute = /*@__PURE__*/ proxyCustomElement(class LsFieldDistribu
867
1049
  this.mutate.emit(diffs);
868
1050
  }
869
1051
  gapHorizontal(spacing) {
1052
+ if (!this.dataItem || this.dataItem.length === 0)
1053
+ return;
870
1054
  const sorted = this.dataItem.sort((a, b) => a.top - b.top);
871
1055
  var buffer = sorted[0].left;
872
1056
  const diffs = sorted.map(c => {
@@ -891,32 +1075,24 @@ const LsFieldDistribute = /*@__PURE__*/ proxyCustomElement(class LsFieldDistribu
891
1075
  this.mutate.emit(diffs);
892
1076
  }
893
1077
  distributeVertical() {
894
- var spacing = this.component.shadowRoot.getElementById('ls-fix-vertical-space');
895
- var avgspace = 0;
1078
+ if (!this.dataItem || this.dataItem.length < 3)
1079
+ return;
896
1080
  const sorted = this.dataItem.sort((a, b) => a.top - b.top);
897
- const topmost = sorted[0].top + sorted[0].height / 2;
898
- const bottommost = sorted.reduce((acc, cur) => {
899
- return cur.top + (cur.height / 2) > acc ? cur.top + (cur.height / 2) : acc;
900
- }, topmost);
901
- // find total width between centre first and centre last
902
- const totalHeight = bottommost - topmost;
903
- if (spacing.value !== '') {
904
- avgspace = parseInt(spacing.value);
905
- }
906
- else {
907
- avgspace = Math.floor(totalHeight / (sorted.length - 1));
908
- }
909
- const filtered = sorted.filter((c, index) => {
910
- return outOfBounds({ ...c, left: Math.floor(topmost - (c.height / 2) + avgspace * index) }) === false
911
- && index !== 0
912
- && index !== sorted.length - 1;
913
- });
914
- const diffs = filtered.map((c, index) => {
1081
+ const firstBottom = sorted[0].top + sorted[0].height;
1082
+ const lastTop = sorted[sorted.length - 1].top;
1083
+ const availableSpace = lastTop - firstBottom;
1084
+ const middleFieldsHeight = sorted.slice(1, -1).reduce((sum, field) => sum + field.height, 0);
1085
+ const numGaps = sorted.length - 1;
1086
+ const gap = Math.max(0, (availableSpace - middleFieldsHeight) / numGaps);
1087
+ let currentTop = sorted[0].top + sorted[0].height + gap;
1088
+ const diffs = sorted.slice(1, -1).map((c) => {
1089
+ const newTop = Math.floor(currentTop);
1090
+ currentTop += c.height + gap;
915
1091
  return {
916
1092
  action: 'update',
917
1093
  data: {
918
1094
  ...c,
919
- top: Math.floor(topmost - (c.height / 2) + (avgspace * (index + 1))),
1095
+ top: newTop,
920
1096
  },
921
1097
  };
922
1098
  });
@@ -926,15 +1102,15 @@ const LsFieldDistribute = /*@__PURE__*/ proxyCustomElement(class LsFieldDistribu
926
1102
  componentDidLoad() {
927
1103
  }
928
1104
  render() {
929
- return (h(Host, { key: '56f966a535e8f922b26c8cb54cf6665d44910f5e' }, h("div", { key: 'f070810aa48fdc91969557ed530df85a9e348a69', class: 'ls-dv-field-properties-section' }, h("div", { key: 'e1a26c95992928568d2ee15698271a5dc64c4451', class: 'ls-dv-field-properties-section-text' }, h("p", { key: '0bcf794aa4354342aafa27c445da23a5137fec24', class: 'ls-dv-field-properties-section-title' }, dvI18n.t('placement.distribution')), h("p", { key: 'c8954ef063c9b9621a9b936c24e5a66f1a43e34b', class: 'ls-dv-field-properties-section-description' }, dvI18n.t('placement.distributiondescription'))), h("div", { key: 'aea726ed81c4f338ba062483a8817187c8c9b057', class: 'ls-dv-button-group' }, h("button", { key: 'dc82813a701f5cade56af5a7c40f7db80dd9dc3a', onClick: () => {
1105
+ return (h(Host, { key: '57be31baf13ebcc0f22a87fb357c1e909a2f2f92' }, h("div", { key: '913ccc6218e4b1f5a62209efce83071d4ff9fafc', class: 'ls-dv-field-properties-section' }, h("div", { key: '7f102602755314f06e1c3b47e14e84231a735eef', class: 'ls-dv-field-properties-section-text' }, h("p", { key: '187c445e9f1e48614584346318feb52e2fff8556', class: 'ls-dv-field-properties-section-title' }, dvI18n.t('placement.distribution')), h("p", { key: '6a6383b9df8541c41d862f68c9f6c78013a0b73c', class: 'ls-dv-field-properties-section-description' }, dvI18n.t('placement.distributiondescription'))), h("div", { key: 'a5d0e949746bae9ab910c80f2a6e8c9dce75dbd5', class: 'ls-dv-button-group' }, h("button", { key: 'a3726734b194b794bb977a4efd309f7143d9bb69', onClick: () => {
930
1106
  this.distributeVertical();
931
- }, "aria-label": dvI18n.t('alignment.distributevertically'), "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('alignment.distributevertically'), disabled: this.readonly }, h("ls-icon", { key: '0227863069afb084f820aaccfd9bd1984e79f10d', name: "field-distribute-vertically-icon" })), h("button", { key: '820d383d045d4a719ce8ef23e1fa12b16aed265f', onClick: () => {
1107
+ }, "aria-label": dvI18n.t('alignment.distributevertically'), "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('alignment.distributevertically'), disabled: this.readonly }, h("ls-icon", { key: '96c4ce2b7b5352a99ed26787c85f0505ae4fcc6b', name: "field-distribute-vertically-icon" })), h("button", { key: 'b9a96c6b3289ddd237179063e085c23bc6eb3663', onClick: () => {
932
1108
  this.distributeHorizontal();
933
- }, "aria-label": dvI18n.t('alignment.distributehorizontally'), "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('alignment.distributehorizontally'), disabled: this.readonly }, h("ls-icon", { key: '1cbc62ba1ea65c63d6ff2cffb8b8b8f616e823ca', name: "field-distribute-horizontally-icon" })))), h("div", { key: '862a48f72f56cfad6edfc08ccc9df8566245c948', class: 'ls-dv-field-properties-section' }, h("div", { key: '85f6591763a0c8bbc2ac0774f81e1372029bdc53', class: 'ls-dv-field-properties-section-text' }, h("p", { key: '8fff6072497b1fac6f903eb4b7d9b4ede6601ef6', class: 'ls-dv-field-properties-section-title' }, dvI18n.t('placement.gap')), h("p", { key: '73e6b2a00c9b391fd35ec468b02909601fdd3a25', class: 'ls-dv-field-properties-section-description' }, dvI18n.t('placement.gapdescription'))), h("div", { key: '656418e594632ab5ffa29b46f5b6539c6dbdd981', class: 'ls-dv-input-row' }, h("div", { key: 'c7a10c323f60861b30a26f03606e0f7aa92d51ef', class: 'ls-dv-input-wrapper', "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('placement.setverticalgap') }, h("ls-icon", { key: 'cdbbcb89ab6d3cd7b74e2395ff25cc602326e34d', id: "selectLeadingIcon", name: "field-distribute-vertically-icon" }), h("input", { key: '2e45e83bbe4d7ac4f68d94eb9e70944cef07dbd9', type: "number", class: 'ls-dv-has-leading-icon', id: "ls-fix-vertical-space", onChange: e => {
1109
+ }, "aria-label": dvI18n.t('alignment.distributehorizontally'), "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('alignment.distributehorizontally'), disabled: this.readonly }, h("ls-icon", { key: '27a9f65617e16a07d601de53e5570e2d9831960c', name: "field-distribute-horizontally-icon" })))), h("div", { key: '3cfec98f4de47bd4f7f106aabaea219b40482564', class: 'ls-dv-field-properties-section' }, h("div", { key: '31c5bd2ed10f7c7e5203d1cece96a9aecd6a59f0', class: 'ls-dv-field-properties-section-text' }, h("p", { key: '5fe76aabfdfae6f4c0251ed2d23a472ba6b9daee', class: 'ls-dv-field-properties-section-title' }, dvI18n.t('placement.gap')), h("p", { key: '87cc8c0961ede86283d413813e96d42ffb41765f', class: 'ls-dv-field-properties-section-description' }, dvI18n.t('placement.gapdescription'))), h("div", { key: 'dc033f1b292825bf64b06e3c0c8f09d3fa78830c', class: 'ls-dv-input-row' }, h("div", { key: 'cafaa3f295fb0c24f6d67cfd4ee8a743a9f73cb1', class: 'ls-dv-input-wrapper', "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('placement.setverticalgap') }, h("ls-icon", { key: '889436667ef89ad9e9d0fca9a8e3666720036783', id: "selectLeadingIcon", name: "field-distribute-vertically-icon" }), h("input", { key: 'f753f53b100450b872581d2bbc7fd66b6062d479', type: "number", class: 'ls-dv-has-leading-icon', id: "ls-fix-vertical-space", onChange: e => {
934
1110
  this.gapVertical(parseInt(e.target.value));
935
- }, min: 0, max: 9999, value: '', size: 4, disabled: this.readonly })), h("div", { key: '9c3b3c812a0146f28da6147962875a692752d1aa', class: 'ls-dv-input-wrapper', "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('placement.sethorizontalgap') }, h("ls-icon", { key: 'dcc63604c1281b6aef939007d3c37cac039532a7', id: "selectLeadingIcon", name: "field-distribute-horizontally-icon" }), h("input", { key: '7de0252c577005ecbb09848d4490db90b1f7aa36', type: "number", class: 'ls-dv-has-leading-icon', id: "ls-fix-horizontal-space", onChange: e => {
1111
+ }, min: 0, max: 9999, value: '', size: 4, disabled: this.readonly })), h("div", { key: '191371a18ff9ddb71e800220c50af942d83e4630', class: 'ls-dv-input-wrapper', "data-tooltip-id": "ls-dv-tooltip", "data-tooltip-content": dvI18n.t('placement.sethorizontalgap') }, h("ls-icon", { key: 'f860ecf1213034604e410a43febb7f95f675d387', id: "selectLeadingIcon", name: "field-distribute-horizontally-icon" }), h("input", { key: '56f64b5e2548de9772831d925b1f99f1038e8514', type: "number", class: 'ls-dv-has-leading-icon', id: "ls-fix-horizontal-space", onChange: e => {
936
1112
  this.gapHorizontal(parseInt(e.target.value));
937
- }, min: 0, max: 9999, value: '', size: 4, disabled: this.readonly })))), h("ls-tooltip", { key: 'dd415c0c2c8eb33ca5425fbccf6554f8a5bf5244', tooltipId: "ls-dv-tooltip" }), h("slot", { key: '5e830d31e15e188f9260e52d099f84192486afca' })));
1113
+ }, min: 0, max: 9999, value: '', size: 4, disabled: this.readonly })))), h("ls-tooltip", { key: 'c75fba59ca3fb9e50a108f153ecd2353cfefb8fe', tooltipId: "ls-dv-tooltip" }), h("slot", { key: '987d6eb4a9990f7ce0a8ba7b9a1a8b489bd4c5a1' })));
938
1114
  }
939
1115
  static get style() { return lsFieldDistributeCss(); }
940
1116
  }, [769, "ls-field-distribute", {
@@ -972,6 +1148,6 @@ function defineCustomElement() {
972
1148
  defineCustomElement();
973
1149
 
974
1150
  export { LsFieldDistribute as L, mouseDown as a, mouseMove as b, mouseUp as c, defineCustomElement as d, mouseDoubleClick as e, mouseClick as m, toolboxDragStart as t, updateSelectionBox as u };
975
- //# sourceMappingURL=p-j1rAIT-X.js.map
1151
+ //# sourceMappingURL=p-BQ7lEZmO.js.map
976
1152
 
977
- //# sourceMappingURL=p-j1rAIT-X.js.map
1153
+ //# sourceMappingURL=p-BQ7lEZmO.js.map