legalesign-document-viewer 0.9.21 → 0.9.23

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 (486) hide show
  1. package/dist/cjs/{i18n-2j78quax.js → i18n-Bp2XLXxM.js} +4 -2
  2. package/dist/cjs/{i18n-2j78quax.js.map → i18n-Bp2XLXxM.js.map} +1 -1
  3. package/dist/cjs/{index-DjAX0m_J.js → index-DFeU0FNc.js} +9 -3
  4. package/dist/cjs/index-DFeU0FNc.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/ls-add-new-button_51.cjs.entry.js +976 -573
  7. package/dist/cjs/ls-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/ls-banner.cjs.entry.js +1 -1
  9. package/dist/cjs/ls-card.cjs.entry.js +1 -1
  10. package/dist/cjs/ls-checkbox-input_5.cjs.entry.js +1 -1
  11. package/dist/cjs/ls-compose-manager.cjs.entry.js +4 -4
  12. package/dist/cjs/ls-details-section.cjs.entry.js +1 -1
  13. package/dist/cjs/ls-document-viewer.cjs.js +2 -2
  14. package/dist/cjs/ls-dropdown-item.cjs.entry.js +1 -1
  15. package/dist/cjs/ls-dropdown.cjs.entry.js +1 -1
  16. package/dist/cjs/ls-field-properties-dropdown.cjs.entry.js +2 -2
  17. package/dist/cjs/ls-formfield.cjs.entry.js +1 -1
  18. package/dist/cjs/ls-header-bar.cjs.entry.js +1 -1
  19. package/dist/cjs/ls-icon-button.cjs.entry.js +1 -1
  20. package/dist/cjs/ls-icon-check-button.cjs.entry.js +1 -1
  21. package/dist/cjs/ls-label.cjs.entry.js +1 -1
  22. package/dist/cjs/ls-list-card-button.cjs.entry.js +1 -1
  23. package/dist/cjs/ls-navbar.cjs.entry.js +1 -1
  24. package/dist/cjs/ls-notification.cjs.entry.js +1 -1
  25. package/dist/cjs/ls-radio-group.cjs.entry.js +1 -1
  26. package/dist/cjs/ls-radio-input.cjs.entry.js +1 -1
  27. package/dist/cjs/ls-tabs.cjs.entry.js +1 -1
  28. package/dist/cjs/ls-tag.cjs.entry.js +1 -1
  29. package/dist/cjs/ls-text.cjs.entry.js +1 -1
  30. package/dist/cjs/ls-timeline-step.cjs.entry.js +1 -1
  31. package/dist/cjs/ls-timeline.cjs.entry.js +1 -1
  32. package/dist/cjs/ls-title-input.cjs.entry.js +2 -2
  33. package/dist/cjs/test-item.cjs.entry.js +1 -1
  34. package/dist/collection/components/interfaces/IToolboxField.js.map +1 -1
  35. package/dist/collection/components/ls-compose-loader/ls-compose-loader.js +1 -1
  36. package/dist/collection/components/ls-compose-manager/ls-compose-manager.js +2 -2
  37. package/dist/collection/components/ls-document-viewer/editorCalculator.js +1 -0
  38. package/dist/collection/components/ls-document-viewer/editorCalculator.js.map +1 -1
  39. package/dist/collection/components/ls-document-viewer/editorUtils.js +1 -0
  40. package/dist/collection/components/ls-document-viewer/editorUtils.js.map +1 -1
  41. package/dist/collection/components/ls-document-viewer/keyHandlers.js +51 -7
  42. package/dist/collection/components/ls-document-viewer/keyHandlers.js.map +1 -1
  43. package/dist/collection/components/ls-document-viewer/ls-document-viewer.css +16 -4
  44. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +74 -32
  45. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
  46. package/dist/collection/components/ls-document-viewer/mouseHandlers.js +301 -58
  47. package/dist/collection/components/ls-document-viewer/mouseHandlers.js.map +1 -1
  48. package/dist/collection/components/ls-document-viewer/snapHelper.js +66 -0
  49. package/dist/collection/components/ls-document-viewer/snapHelper.js.map +1 -0
  50. package/dist/collection/components/ls-editor-field/ls-editor-field.css +33 -0
  51. package/dist/collection/components/ls-editor-field/ls-editor-field.js +31 -19
  52. package/dist/collection/components/ls-editor-field/ls-editor-field.js.map +1 -1
  53. package/dist/collection/components/ls-editor-table/ls-editor-table.js +1 -1
  54. package/dist/collection/components/ls-feature-column/ls-feature-column.js +6 -6
  55. package/dist/collection/components/ls-field-alignment/ls-field-alignment.js +2 -2
  56. package/dist/collection/components/ls-field-content/ls-field-content.js +3 -3
  57. package/dist/collection/components/ls-field-dimensions/ls-field-dimensions.js +3 -3
  58. package/dist/collection/components/ls-field-distribute/ls-field-distribute.js +5 -5
  59. package/dist/collection/components/ls-field-footer/ls-field-footer.js +1 -1
  60. package/dist/collection/components/ls-field-format/ls-field-format.js +11 -11
  61. package/dist/collection/components/ls-field-placement/ls-field-placement.js +1 -1
  62. package/dist/collection/components/ls-field-properties/ls-field-properties.js +1 -1
  63. package/dist/collection/components/ls-field-properties-advanced/ls-field-properties-advanced.js +2 -2
  64. package/dist/collection/components/ls-field-properties-autosign/ls-field-properties-autosign.js +1 -1
  65. package/dist/collection/components/ls-field-properties-container/ls-field-properties-container.js +1 -1
  66. package/dist/collection/components/ls-field-properties-date/ls-field-properties-date.js +1 -1
  67. package/dist/collection/components/ls-field-properties-dropdown/ls-field-properties-dropdown.js +1 -1
  68. package/dist/collection/components/ls-field-properties-email/ls-field-properties-email.js +1 -1
  69. package/dist/collection/components/ls-field-properties-file/ls-field-properties-file.js +1 -1
  70. package/dist/collection/components/ls-field-properties-general/ls-field-properties-general.js +1 -1
  71. package/dist/collection/components/ls-field-properties-image/ls-field-properties-image.js +1 -1
  72. package/dist/collection/components/ls-field-properties-multiple/ls-field-properties-multiple.js +3 -3
  73. package/dist/collection/components/ls-field-properties-number/ls-field-properties-number.js +1 -1
  74. package/dist/collection/components/ls-field-properties-signature/ls-field-properties-signature.js +1 -1
  75. package/dist/collection/components/ls-field-properties-text/ls-field-properties-text.js +1 -1
  76. package/dist/collection/components/ls-field-size/ls-field-size.js +1 -1
  77. package/dist/collection/components/ls-field-type-display/ls-field-type-display.js +3 -3
  78. package/dist/collection/components/ls-helper-bar/ls-helper-bar.css +1 -1
  79. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js +1 -1
  80. package/dist/collection/components/ls-helper-bar/ls-helper-bar.js.map +1 -1
  81. package/dist/collection/components/ls-input-wrapper/ls-input-wrapper.js +1 -1
  82. package/dist/collection/components/ls-keyboard-shortcuts/ls-keyboard-shortcuts.js +1 -1
  83. package/dist/collection/components/ls-left-bar/ls-left-bar.js +6 -6
  84. package/dist/collection/components/ls-left-bar/ls-left-bar.js.map +1 -1
  85. package/dist/collection/components/ls-participant-card/ls-participant-card.css +4 -0
  86. package/dist/collection/components/ls-participant-card/ls-participant-card.js +2 -2
  87. package/dist/collection/components/ls-participant-card/ls-participant-card.js.map +1 -1
  88. package/dist/collection/components/ls-participant-manager/ls-participant-manager.js +3 -3
  89. package/dist/collection/components/ls-participant-select/ls-participant-select.css +1 -1
  90. package/dist/collection/components/ls-participant-select/ls-participant-select.js +25 -9
  91. package/dist/collection/components/ls-participant-select/ls-participant-select.js.map +1 -1
  92. package/dist/collection/components/ls-props-section/ls-props-section.js +1 -1
  93. package/dist/collection/components/ls-recipient-card/ls-recipient-card.js +9 -9
  94. package/dist/collection/components/ls-recipient-card/ls-recipient-card.js.map +1 -1
  95. package/dist/collection/components/ls-recipient-manager/ls-recipient-manager.js +1 -1
  96. package/dist/collection/components/ls-statusbar/ls-statusbar.js +8 -11
  97. package/dist/collection/components/ls-statusbar/ls-statusbar.js.map +1 -1
  98. package/dist/collection/components/ls-title-input/ls-title-input.js +1 -1
  99. package/dist/collection/components/ls-toggle/ls-toggle.js +2 -2
  100. package/dist/collection/components/ls-toolbar/ls-toolbar.css +1 -1
  101. package/dist/collection/components/ls-toolbar/ls-toolbar.js +3 -5
  102. package/dist/collection/components/ls-toolbar/ls-toolbar.js.map +1 -1
  103. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.css +5 -0
  104. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js +38 -32
  105. package/dist/collection/components/ls-toolbox-field/ls-toolbox-field.js.map +1 -1
  106. package/dist/collection/components/ls-validation-manager/ls-validation-manager.js +2 -2
  107. package/dist/collection/components/ls-validation-tag/ls-validation-tag.css +65 -0
  108. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js +7 -11
  109. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js.map +1 -1
  110. package/dist/components/index.js +1 -1
  111. package/dist/components/ls-add-new-button.js +1 -1
  112. package/dist/components/ls-badge.js +1 -1
  113. package/dist/components/ls-banner.js +6 -6
  114. package/dist/components/ls-banner.js.map +1 -1
  115. package/dist/components/ls-button.js +1 -1
  116. package/dist/components/ls-card.js +1 -1
  117. package/dist/components/ls-card.js.map +1 -1
  118. package/dist/components/ls-checkbox-input.js +1 -1
  119. package/dist/components/ls-compose-loader.js +1 -1
  120. package/dist/components/ls-compose-manager.js +4 -4
  121. package/dist/components/ls-details-section.js +3 -3
  122. package/dist/components/ls-details-section.js.map +1 -1
  123. package/dist/components/ls-document-options.js +1 -1
  124. package/dist/components/ls-document-viewer.js +167 -90
  125. package/dist/components/ls-document-viewer.js.map +1 -1
  126. package/dist/components/ls-dropdown-item.js +1 -1
  127. package/dist/components/ls-dropdown.js +3 -3
  128. package/dist/components/ls-dropdown.js.map +1 -1
  129. package/dist/components/ls-editor-field.js +1 -1
  130. package/dist/components/ls-editor-table.js +1 -1
  131. package/dist/components/ls-feature-column.js +1 -1
  132. package/dist/components/ls-field-alignment.js +1 -1
  133. package/dist/components/ls-field-content.js +1 -1
  134. package/dist/components/ls-field-dimensions.js +1 -1
  135. package/dist/components/ls-field-distribute.js +1 -1
  136. package/dist/components/ls-field-footer.js +1 -1
  137. package/dist/components/ls-field-format.js +1 -1
  138. package/dist/components/ls-field-placement.js +1 -1
  139. package/dist/components/ls-field-properties-advanced.js +1 -1
  140. package/dist/components/ls-field-properties-autosign.js +1 -1
  141. package/dist/components/ls-field-properties-container.js +1 -1
  142. package/dist/components/ls-field-properties-date.js +1 -1
  143. package/dist/components/ls-field-properties-dropdown.js +15 -15
  144. package/dist/components/ls-field-properties-email.js +1 -1
  145. package/dist/components/ls-field-properties-file.js +1 -1
  146. package/dist/components/ls-field-properties-general.js +1 -1
  147. package/dist/components/ls-field-properties-image.js +1 -1
  148. package/dist/components/ls-field-properties-multiple.js +1 -1
  149. package/dist/components/ls-field-properties-number.js +1 -1
  150. package/dist/components/ls-field-properties-signature.js +1 -1
  151. package/dist/components/ls-field-properties-text.js +1 -1
  152. package/dist/components/ls-field-properties.js +1 -1
  153. package/dist/components/ls-field-size.js +1 -1
  154. package/dist/components/ls-field-type-display.js +1 -1
  155. package/dist/components/ls-formfield.js +11 -11
  156. package/dist/components/ls-formfield.js.map +1 -1
  157. package/dist/components/ls-header-bar.js +4 -4
  158. package/dist/components/ls-header-bar.js.map +1 -1
  159. package/dist/components/ls-helper-bar.js +1 -1
  160. package/dist/components/ls-icon-button.js +1 -1
  161. package/dist/components/ls-icon-check-button.js +2 -2
  162. package/dist/components/ls-icon-check-button.js.map +1 -1
  163. package/dist/components/ls-icon.js +1 -1
  164. package/dist/components/ls-input-wrapper.js +1 -1
  165. package/dist/components/ls-keyboard-shortcuts.js +1 -1
  166. package/dist/components/ls-label.js +1 -1
  167. package/dist/components/ls-left-bar.js +1 -1
  168. package/dist/components/ls-list-card-button.js +4 -4
  169. package/dist/components/ls-list-card-button.js.map +1 -1
  170. package/dist/components/ls-loading-icon.js +1 -1
  171. package/dist/components/ls-loading-logo.js +1 -1
  172. package/dist/components/ls-loading.js +1 -1
  173. package/dist/components/ls-navbar.js +3 -3
  174. package/dist/components/ls-navbar.js.map +1 -1
  175. package/dist/components/ls-notification.js +2 -2
  176. package/dist/components/ls-notification.js.map +1 -1
  177. package/dist/components/ls-number-input.js +1 -1
  178. package/dist/components/ls-participant-card.js +1 -1
  179. package/dist/components/ls-participant-manager.js +1 -1
  180. package/dist/components/ls-participant-select.js +1 -1
  181. package/dist/components/ls-props-section.js +1 -1
  182. package/dist/components/ls-radio-group.js +3 -3
  183. package/dist/components/ls-radio-group.js.map +1 -1
  184. package/dist/components/ls-radio-input.js +1 -1
  185. package/dist/components/ls-recipient-card.js +1 -1
  186. package/dist/components/ls-recipient-manager.js +1 -1
  187. package/dist/components/ls-select-input.js +1 -1
  188. package/dist/components/ls-statusbar.js +1 -1
  189. package/dist/components/ls-tabs.js +2 -2
  190. package/dist/components/ls-tabs.js.map +1 -1
  191. package/dist/components/ls-tag.js +2 -2
  192. package/dist/components/ls-tag.js.map +1 -1
  193. package/dist/components/ls-text-input.js +1 -1
  194. package/dist/components/ls-text.js +1 -1
  195. package/dist/components/ls-text.js.map +1 -1
  196. package/dist/components/ls-textarea-input.js +1 -1
  197. package/dist/components/ls-timeline-step.js +2 -2
  198. package/dist/components/ls-timeline-step.js.map +1 -1
  199. package/dist/components/ls-timeline.js +2 -2
  200. package/dist/components/ls-timeline.js.map +1 -1
  201. package/dist/components/ls-title-input.js +3 -3
  202. package/dist/components/ls-toggle.js +1 -1
  203. package/dist/components/ls-toolbar.js +1 -1
  204. package/dist/components/ls-toolbox-field.js +1 -1
  205. package/dist/components/ls-tooltip.js +1 -1
  206. package/dist/components/ls-validation-manager.js +1 -1
  207. package/dist/components/ls-validation-tag.js +1 -1
  208. package/dist/components/{p-hGc0PM4h.js → p-0KcafqsD.js} +4 -4
  209. package/dist/components/{p-hGc0PM4h.js.map → p-0KcafqsD.js.map} +1 -1
  210. package/dist/components/{p-BEoo68ix.js → p-0xNJgDwU.js} +17 -17
  211. package/dist/components/{p-BEoo68ix.js.map → p-0xNJgDwU.js.map} +1 -1
  212. package/dist/components/p-3nGlwNge.js +139 -0
  213. package/dist/components/p-3nGlwNge.js.map +1 -0
  214. package/dist/components/{p-BqHWzbwb.js → p-84KTjgkl.js} +4 -4
  215. package/dist/components/{p-BqHWzbwb.js.map → p-84KTjgkl.js.map} +1 -1
  216. package/dist/components/{p-Cj4lPJEO.js → p-B7x-6bu5.js} +4 -4
  217. package/dist/components/{p-Cj4lPJEO.js.map → p-B7x-6bu5.js.map} +1 -1
  218. package/dist/components/{p-BuTI5iFf.js → p-B9ooYFOA.js} +5 -5
  219. package/dist/components/{p-BuTI5iFf.js.map → p-B9ooYFOA.js.map} +1 -1
  220. package/dist/components/{p-BilTZGhO.js → p-BCzMSIcI.js} +4 -4
  221. package/dist/components/{p-BilTZGhO.js.map → p-BCzMSIcI.js.map} +1 -1
  222. package/dist/components/{p-DAP3L70b.js → p-BH-y0Rpv.js} +9 -9
  223. package/dist/components/{p-DAP3L70b.js.map → p-BH-y0Rpv.js.map} +1 -1
  224. package/dist/components/{p-MvHRmlvj.js → p-BMhCD-zg.js} +4 -4
  225. package/dist/components/{p-MvHRmlvj.js.map → p-BMhCD-zg.js.map} +1 -1
  226. package/dist/components/{p-C1mHzpwC.js → p-BRH_57K4.js} +17 -17
  227. package/dist/components/{p-C1mHzpwC.js.map → p-BRH_57K4.js.map} +1 -1
  228. package/dist/components/{p-CSPLGKKp.js → p-BT5rCW3w.js} +3 -3
  229. package/dist/components/{p-CSPLGKKp.js.map → p-BT5rCW3w.js.map} +1 -1
  230. package/dist/components/{p-BgjZLcgZ.js → p-BgAdNxbN.js} +13 -13
  231. package/dist/components/p-BgAdNxbN.js.map +1 -0
  232. package/dist/components/{p--TgjpdhB.js → p-BkrhluM5.js} +30 -30
  233. package/dist/components/{p--TgjpdhB.js.map → p-BkrhluM5.js.map} +1 -1
  234. package/dist/components/{p-Dx1cMyvL.js → p-BtjCijn4.js} +4 -2
  235. package/dist/components/{p-Dx1cMyvL.js.map → p-BtjCijn4.js.map} +1 -1
  236. package/dist/components/{p-BPcmC2nE.js → p-BwbcEeA_.js} +17 -17
  237. package/dist/components/{p-BPcmC2nE.js.map → p-BwbcEeA_.js.map} +1 -1
  238. package/dist/components/{p-DJ7bx7B5.js → p-BwfjRoGr.js} +13 -13
  239. package/dist/components/{p-DJ7bx7B5.js.map → p-BwfjRoGr.js.map} +1 -1
  240. package/dist/components/{p-DhcX4EuS.js → p-C1GGLUpO.js} +15 -15
  241. package/dist/components/p-C1GGLUpO.js.map +1 -0
  242. package/dist/components/{p-Bn74nhFM.js → p-C7YkcdaA.js} +10 -10
  243. package/dist/components/{p-Bn74nhFM.js.map → p-C7YkcdaA.js.map} +1 -1
  244. package/dist/components/{p-cJzdZ_Zw.js → p-CKZG8VvW.js} +5 -5
  245. package/dist/components/{p-cJzdZ_Zw.js.map → p-CKZG8VvW.js.map} +1 -1
  246. package/dist/components/{p-CyqNq-AI.js → p-CKbRUnN1.js} +7 -7
  247. package/dist/components/{p-CyqNq-AI.js.map → p-CKbRUnN1.js.map} +1 -1
  248. package/dist/components/{p-C8NcdVVP.js → p-CZF2_NGo.js} +4 -4
  249. package/dist/components/{p-C8NcdVVP.js.map → p-CZF2_NGo.js.map} +1 -1
  250. package/dist/components/{p-EE_rUtMN.js → p-ChRy20ef.js} +12 -12
  251. package/dist/components/{p-EE_rUtMN.js.map → p-ChRy20ef.js.map} +1 -1
  252. package/dist/components/{p-DGgN9Tk0.js → p-CkKXB6ey.js} +7 -7
  253. package/dist/components/{p-DGgN9Tk0.js.map → p-CkKXB6ey.js.map} +1 -1
  254. package/dist/components/{p-DIZNU-wE.js → p-CnWF6SJW.js} +15 -15
  255. package/dist/components/{p-DIZNU-wE.js.map → p-CnWF6SJW.js.map} +1 -1
  256. package/dist/components/{p-OLQsckjQ.js → p-Cq8ahbie.js} +4 -4
  257. package/dist/components/{p-OLQsckjQ.js.map → p-Cq8ahbie.js.map} +1 -1
  258. package/dist/components/{p-BuUhtsZT.js → p-CuKQ9tEk.js} +3 -3
  259. package/dist/components/{p-BuUhtsZT.js.map → p-CuKQ9tEk.js.map} +1 -1
  260. package/dist/components/{p-CmMYC0p8.js → p-CzuXVZQ1.js} +4 -4
  261. package/dist/components/{p-CmMYC0p8.js.map → p-CzuXVZQ1.js.map} +1 -1
  262. package/dist/components/{p-DFvqOenH.js → p-D5pMAqGE.js} +8 -8
  263. package/dist/components/{p-DFvqOenH.js.map → p-D5pMAqGE.js.map} +1 -1
  264. package/dist/components/p-D60hGCYW.js +163 -0
  265. package/dist/components/p-D60hGCYW.js.map +1 -0
  266. package/dist/components/{p-DOZ7EVSp.js → p-D8oeRQud.js} +46 -46
  267. package/dist/components/p-D8oeRQud.js.map +1 -0
  268. package/dist/components/p-DBASMZy7.js +63 -0
  269. package/dist/components/p-DBASMZy7.js.map +1 -0
  270. package/dist/components/{p-BNu-kdNq.js → p-DG3likTA.js} +9 -9
  271. package/dist/components/{p-BNu-kdNq.js.map → p-DG3likTA.js.map} +1 -1
  272. package/dist/components/{p-wwN19gwm.js → p-DKo99Z43.js} +3 -3
  273. package/dist/components/{p-wwN19gwm.js.map → p-DKo99Z43.js.map} +1 -1
  274. package/dist/components/{p-D7bwh5bc.js → p-DLJvb8vE.js} +8 -8
  275. package/dist/components/{p-D7bwh5bc.js.map → p-DLJvb8vE.js.map} +1 -1
  276. package/dist/components/{p-3MMDk3sy.js → p-DN9dmmkk.js} +17 -17
  277. package/dist/components/{p-3MMDk3sy.js.map → p-DN9dmmkk.js.map} +1 -1
  278. package/dist/components/{p-DCdDskfL.js → p-DS_FPOrD.js} +380 -72
  279. package/dist/components/p-DS_FPOrD.js.map +1 -0
  280. package/dist/components/{p-CgczqobT.js → p-DVMW45bm.js} +8 -8
  281. package/dist/components/{p-CgczqobT.js.map → p-DVMW45bm.js.map} +1 -1
  282. package/dist/components/{p-dHMolk9H.js → p-DZP-fvPJ.js} +60 -15
  283. package/dist/components/p-DZP-fvPJ.js.map +1 -0
  284. package/dist/components/{p-DxKBajEl.js → p-DZgk5qxN.js} +17 -17
  285. package/dist/components/{p-DxKBajEl.js.map → p-DZgk5qxN.js.map} +1 -1
  286. package/dist/components/{p-CYSZo6aX.js → p-DcR04vBT.js} +4 -4
  287. package/dist/components/{p-CYSZo6aX.js.map → p-DcR04vBT.js.map} +1 -1
  288. package/dist/components/{p-BDiZ0WrF.js → p-Dcgsf6yy.js} +5 -5
  289. package/dist/components/{p-BDiZ0WrF.js.map → p-Dcgsf6yy.js.map} +1 -1
  290. package/dist/components/{p-BrykT5-C.js → p-DffaAVW4.js} +9 -3
  291. package/dist/components/p-DffaAVW4.js.map +1 -0
  292. package/dist/components/p-DgBJsVwe.js +117 -0
  293. package/dist/components/p-DgBJsVwe.js.map +1 -0
  294. package/dist/components/{p-CWgG6RtI.js → p-Dj0hj7yh.js} +5 -5
  295. package/dist/components/{p-CWgG6RtI.js.map → p-Dj0hj7yh.js.map} +1 -1
  296. package/dist/components/{p-d3FQEed-.js → p-DowYrMjW.js} +5 -5
  297. package/dist/components/{p-d3FQEed-.js.map → p-DowYrMjW.js.map} +1 -1
  298. package/dist/components/{p-BYjOvCbn.js → p-DrEcfY_J.js} +4 -4
  299. package/dist/components/{p-BYjOvCbn.js.map → p-DrEcfY_J.js.map} +1 -1
  300. package/dist/components/{p-d3qXKu5b.js → p-Dt8gRmhC.js} +17 -17
  301. package/dist/components/{p-d3qXKu5b.js.map → p-Dt8gRmhC.js.map} +1 -1
  302. package/dist/components/{p-Dz16EnCS.js → p-Dw_QK-he.js} +11 -9
  303. package/dist/components/p-Dw_QK-he.js.map +1 -0
  304. package/dist/components/{p-BJqq2Npt.js → p-E0JC-Cu3.js} +17 -17
  305. package/dist/components/{p-BJqq2Npt.js.map → p-E0JC-Cu3.js.map} +1 -1
  306. package/dist/components/p-JclQnuaU.js +108 -0
  307. package/dist/components/p-JclQnuaU.js.map +1 -0
  308. package/dist/components/{p-UI9vt753.js → p-OiC5NHtc.js} +4 -4
  309. package/dist/components/{p-UI9vt753.js.map → p-OiC5NHtc.js.map} +1 -1
  310. package/dist/components/{p-B-hPslyN.js → p-QZa2_PWg.js} +4 -4
  311. package/dist/components/{p-B-hPslyN.js.map → p-QZa2_PWg.js.map} +1 -1
  312. package/dist/components/{p-BBAOpkc_.js → p-TmHRO8G9.js} +7 -7
  313. package/dist/components/{p-BBAOpkc_.js.map → p-TmHRO8G9.js.map} +1 -1
  314. package/dist/components/{p-Bo2HQUQV.js → p-jh1Se9AW.js} +17 -17
  315. package/dist/components/{p-Bo2HQUQV.js.map → p-jh1Se9AW.js.map} +1 -1
  316. package/dist/components/{p-r32PqGrS.js → p-lphkmIXU.js} +4 -4
  317. package/dist/components/{p-r32PqGrS.js.map → p-lphkmIXU.js.map} +1 -1
  318. package/dist/components/{p-BfHGjq5t.js → p-o4HzWbjW.js} +17 -20
  319. package/dist/components/p-o4HzWbjW.js.map +1 -0
  320. package/dist/components/{p-DckVC3o2.js → p-pPhflIHp.js} +21 -32
  321. package/dist/components/p-pPhflIHp.js.map +1 -0
  322. package/dist/components/{p-4mqXicuy.js → p-wOTvKO9s.js} +18 -18
  323. package/dist/components/{p-4mqXicuy.js.map → p-wOTvKO9s.js.map} +1 -1
  324. package/dist/components/p-wijn7N4I.js +102 -0
  325. package/dist/components/p-wijn7N4I.js.map +1 -0
  326. package/dist/components/{p-C4Fkc5Wm.js → p-wxu8bkXk.js} +6 -6
  327. package/dist/components/{p-C4Fkc5Wm.js.map → p-wxu8bkXk.js.map} +1 -1
  328. package/dist/components/{p-B4zjHmIp.js → p-xKxEAqzv.js} +17 -17
  329. package/dist/components/{p-B4zjHmIp.js.map → p-xKxEAqzv.js.map} +1 -1
  330. package/dist/components/{p-DoQt0hBg.js → p-ygIo6UQn.js} +3 -3
  331. package/dist/components/{p-DoQt0hBg.js.map → p-ygIo6UQn.js.map} +1 -1
  332. package/dist/components/test-item.js +1 -1
  333. package/dist/components/test-item.js.map +1 -1
  334. package/dist/esm/{i18n-Dx1cMyvL.js → i18n-BtjCijn4.js} +4 -2
  335. package/dist/esm/{i18n-Dx1cMyvL.js.map → i18n-BtjCijn4.js.map} +1 -1
  336. package/dist/esm/{index-CqgU9BMJ.js → index-CItPoq74.js} +9 -3
  337. package/dist/esm/index-CItPoq74.js.map +1 -0
  338. package/dist/esm/loader.js +3 -3
  339. package/dist/esm/ls-add-new-button_51.entry.js +976 -573
  340. package/dist/esm/ls-badge.entry.js +1 -1
  341. package/dist/esm/ls-badge.entry.js.map +1 -1
  342. package/dist/esm/ls-banner.entry.js +1 -1
  343. package/dist/esm/ls-banner.entry.js.map +1 -1
  344. package/dist/esm/ls-card.entry.js +1 -1
  345. package/dist/esm/ls-card.entry.js.map +1 -1
  346. package/dist/esm/ls-checkbox-input_5.entry.js +1 -1
  347. package/dist/esm/ls-compose-manager.entry.js +4 -4
  348. package/dist/esm/ls-details-section.entry.js +1 -1
  349. package/dist/esm/ls-details-section.entry.js.map +1 -1
  350. package/dist/esm/ls-document-viewer.js +3 -3
  351. package/dist/esm/ls-dropdown-item.entry.js +1 -1
  352. package/dist/esm/ls-dropdown-item.entry.js.map +1 -1
  353. package/dist/esm/ls-dropdown.entry.js +1 -1
  354. package/dist/esm/ls-dropdown.entry.js.map +1 -1
  355. package/dist/esm/ls-field-properties-dropdown.entry.js +2 -2
  356. package/dist/esm/ls-formfield.entry.js +1 -1
  357. package/dist/esm/ls-formfield.entry.js.map +1 -1
  358. package/dist/esm/ls-header-bar.entry.js +1 -1
  359. package/dist/esm/ls-header-bar.entry.js.map +1 -1
  360. package/dist/esm/ls-icon-button.entry.js +1 -1
  361. package/dist/esm/ls-icon-button.entry.js.map +1 -1
  362. package/dist/esm/ls-icon-check-button.entry.js +1 -1
  363. package/dist/esm/ls-icon-check-button.entry.js.map +1 -1
  364. package/dist/esm/ls-label.entry.js +1 -1
  365. package/dist/esm/ls-label.entry.js.map +1 -1
  366. package/dist/esm/ls-list-card-button.entry.js +1 -1
  367. package/dist/esm/ls-list-card-button.entry.js.map +1 -1
  368. package/dist/esm/ls-navbar.entry.js +1 -1
  369. package/dist/esm/ls-navbar.entry.js.map +1 -1
  370. package/dist/esm/ls-notification.entry.js +1 -1
  371. package/dist/esm/ls-notification.entry.js.map +1 -1
  372. package/dist/esm/ls-radio-group.entry.js +1 -1
  373. package/dist/esm/ls-radio-group.entry.js.map +1 -1
  374. package/dist/esm/ls-radio-input.entry.js +1 -1
  375. package/dist/esm/ls-radio-input.entry.js.map +1 -1
  376. package/dist/esm/ls-tabs.entry.js +1 -1
  377. package/dist/esm/ls-tabs.entry.js.map +1 -1
  378. package/dist/esm/ls-tag.entry.js +1 -1
  379. package/dist/esm/ls-tag.entry.js.map +1 -1
  380. package/dist/esm/ls-text.entry.js +1 -1
  381. package/dist/esm/ls-text.entry.js.map +1 -1
  382. package/dist/esm/ls-timeline-step.entry.js +1 -1
  383. package/dist/esm/ls-timeline-step.entry.js.map +1 -1
  384. package/dist/esm/ls-timeline.entry.js +1 -1
  385. package/dist/esm/ls-timeline.entry.js.map +1 -1
  386. package/dist/esm/ls-title-input.entry.js +2 -2
  387. package/dist/esm/test-item.entry.js +1 -1
  388. package/dist/esm/test-item.entry.js.map +1 -1
  389. package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
  390. package/dist/ls-document-viewer/{p-6d948608.entry.js → p-17771224.entry.js} +2 -2
  391. package/dist/ls-document-viewer/{p-a9cfd73b.entry.js → p-34c89736.entry.js} +2 -2
  392. package/dist/ls-document-viewer/{p-fa30b362.entry.js → p-35181c98.entry.js} +2 -2
  393. package/dist/ls-document-viewer/{p-6cc592f3.entry.js → p-355fa23b.entry.js} +2 -2
  394. package/dist/ls-document-viewer/{p-f474989d.entry.js → p-429be8d1.entry.js} +2 -2
  395. package/dist/ls-document-viewer/{p-9ecd1ff7.entry.js → p-5e4e4662.entry.js} +2 -2
  396. package/dist/ls-document-viewer/{p-3da9d77b.entry.js → p-61e1b37b.entry.js} +2 -2
  397. package/dist/ls-document-viewer/{p-0d1fc411.entry.js → p-6244f792.entry.js} +2 -2
  398. package/dist/ls-document-viewer/{p-0b3a5fbd.entry.js → p-7c5b3574.entry.js} +2 -2
  399. package/dist/ls-document-viewer/{p-e29d619f.entry.js → p-7eecf11a.entry.js} +603 -603
  400. package/dist/ls-document-viewer/p-7eecf11a.entry.js.map +1 -0
  401. package/dist/ls-document-viewer/{p-ee2098bb.entry.js → p-85c87644.entry.js} +2 -2
  402. package/dist/ls-document-viewer/{p-7f5b13f6.entry.js → p-8bdf7b95.entry.js} +2 -2
  403. package/dist/ls-document-viewer/{p-d09bc75d.entry.js → p-8e0ad6ec.entry.js} +2 -2
  404. package/dist/ls-document-viewer/p-9337949c.entry.js +2 -0
  405. package/dist/ls-document-viewer/{p-e51973e5.entry.js.map → p-9337949c.entry.js.map} +1 -1
  406. package/dist/ls-document-viewer/{p-f2a51b12.entry.js → p-94bbac6a.entry.js} +2 -2
  407. package/dist/ls-document-viewer/{p-55834145.entry.js → p-9ebec463.entry.js} +2 -2
  408. package/dist/ls-document-viewer/p-BtjCijn4.js +2 -0
  409. package/dist/ls-document-viewer/{p-Dx1cMyvL.js.map → p-BtjCijn4.js.map} +1 -1
  410. package/dist/ls-document-viewer/{p-CqgU9BMJ.js → p-CItPoq74.js} +2 -2
  411. package/dist/ls-document-viewer/p-CItPoq74.js.map +1 -0
  412. package/dist/ls-document-viewer/{p-e45b3ca8.entry.js → p-a4121600.entry.js} +2 -2
  413. package/dist/ls-document-viewer/p-a7dd3ba3.entry.js +2 -0
  414. package/dist/ls-document-viewer/{p-5a98eb27.entry.js → p-abb5c859.entry.js} +2 -2
  415. package/dist/ls-document-viewer/{p-fd50bc60.entry.js → p-bbc53e46.entry.js} +2 -2
  416. package/dist/ls-document-viewer/{p-f3af5313.entry.js → p-c521696b.entry.js} +2 -2
  417. package/dist/ls-document-viewer/{p-828c1636.entry.js → p-c78bd190.entry.js} +2 -2
  418. package/dist/ls-document-viewer/{p-870b9662.entry.js → p-ca1a0e03.entry.js} +2 -2
  419. package/dist/ls-document-viewer/{p-a16db209.entry.js → p-d297ea14.entry.js} +2 -2
  420. package/dist/ls-document-viewer/{p-ae2d6df8.entry.js → p-d2caf154.entry.js} +2 -2
  421. package/dist/ls-document-viewer/{p-0f6a01b3.entry.js → p-d76f5c10.entry.js} +2 -2
  422. package/dist/ls-document-viewer/{p-febb8794.entry.js → p-f318c711.entry.js} +2 -2
  423. package/dist/types/components/interfaces/IToolboxField.d.ts +1 -0
  424. package/dist/types/components/ls-document-viewer/ls-document-viewer.d.ts +3 -0
  425. package/dist/types/components/ls-document-viewer/mouseHandlers.d.ts +8 -1
  426. package/dist/types/components/ls-document-viewer/snapHelper.d.ts +21 -0
  427. package/dist/types/components/ls-editor-field/ls-editor-field.d.ts +1 -0
  428. package/dist/types/components/ls-left-bar/ls-left-bar.d.ts +3 -3
  429. package/dist/types/components/ls-participant-select/ls-participant-select.d.ts +2 -0
  430. package/dist/types/components/ls-toolbox-field/ls-toolbox-field.d.ts +3 -1
  431. package/dist/types/components.d.ts +16 -6
  432. package/package.json +2 -2
  433. package/readme.md +2 -2
  434. package/dist/cjs/index-DjAX0m_J.js.map +0 -1
  435. package/dist/components/p-BfHGjq5t.js.map +0 -1
  436. package/dist/components/p-BgjZLcgZ.js.map +0 -1
  437. package/dist/components/p-Bo0Bazo8.js +0 -153
  438. package/dist/components/p-Bo0Bazo8.js.map +0 -1
  439. package/dist/components/p-BrykT5-C.js.map +0 -1
  440. package/dist/components/p-CffM9Jz_.js +0 -119
  441. package/dist/components/p-CffM9Jz_.js.map +0 -1
  442. package/dist/components/p-D9Kd-4_M.js +0 -100
  443. package/dist/components/p-D9Kd-4_M.js.map +0 -1
  444. package/dist/components/p-DCdDskfL.js.map +0 -1
  445. package/dist/components/p-DD5tgd5X.js +0 -157
  446. package/dist/components/p-DD5tgd5X.js.map +0 -1
  447. package/dist/components/p-DH9Evr8X.js +0 -63
  448. package/dist/components/p-DH9Evr8X.js.map +0 -1
  449. package/dist/components/p-DOZ7EVSp.js.map +0 -1
  450. package/dist/components/p-DckVC3o2.js.map +0 -1
  451. package/dist/components/p-DhcX4EuS.js.map +0 -1
  452. package/dist/components/p-Dz16EnCS.js.map +0 -1
  453. package/dist/components/p-NAiclfXm.js +0 -112
  454. package/dist/components/p-NAiclfXm.js.map +0 -1
  455. package/dist/components/p-dHMolk9H.js.map +0 -1
  456. package/dist/esm/index-CqgU9BMJ.js.map +0 -1
  457. package/dist/ls-document-viewer/p-CqgU9BMJ.js.map +0 -1
  458. package/dist/ls-document-viewer/p-Dx1cMyvL.js +0 -2
  459. package/dist/ls-document-viewer/p-ac0c3ed5.entry.js +0 -2
  460. package/dist/ls-document-viewer/p-e29d619f.entry.js.map +0 -1
  461. package/dist/ls-document-viewer/p-e51973e5.entry.js +0 -2
  462. /package/dist/ls-document-viewer/{p-6d948608.entry.js.map → p-17771224.entry.js.map} +0 -0
  463. /package/dist/ls-document-viewer/{p-a9cfd73b.entry.js.map → p-34c89736.entry.js.map} +0 -0
  464. /package/dist/ls-document-viewer/{p-fa30b362.entry.js.map → p-35181c98.entry.js.map} +0 -0
  465. /package/dist/ls-document-viewer/{p-6cc592f3.entry.js.map → p-355fa23b.entry.js.map} +0 -0
  466. /package/dist/ls-document-viewer/{p-f474989d.entry.js.map → p-429be8d1.entry.js.map} +0 -0
  467. /package/dist/ls-document-viewer/{p-9ecd1ff7.entry.js.map → p-5e4e4662.entry.js.map} +0 -0
  468. /package/dist/ls-document-viewer/{p-3da9d77b.entry.js.map → p-61e1b37b.entry.js.map} +0 -0
  469. /package/dist/ls-document-viewer/{p-0d1fc411.entry.js.map → p-6244f792.entry.js.map} +0 -0
  470. /package/dist/ls-document-viewer/{p-0b3a5fbd.entry.js.map → p-7c5b3574.entry.js.map} +0 -0
  471. /package/dist/ls-document-viewer/{p-ee2098bb.entry.js.map → p-85c87644.entry.js.map} +0 -0
  472. /package/dist/ls-document-viewer/{p-7f5b13f6.entry.js.map → p-8bdf7b95.entry.js.map} +0 -0
  473. /package/dist/ls-document-viewer/{p-d09bc75d.entry.js.map → p-8e0ad6ec.entry.js.map} +0 -0
  474. /package/dist/ls-document-viewer/{p-f2a51b12.entry.js.map → p-94bbac6a.entry.js.map} +0 -0
  475. /package/dist/ls-document-viewer/{p-55834145.entry.js.map → p-9ebec463.entry.js.map} +0 -0
  476. /package/dist/ls-document-viewer/{p-e45b3ca8.entry.js.map → p-a4121600.entry.js.map} +0 -0
  477. /package/dist/ls-document-viewer/{p-ac0c3ed5.entry.js.map → p-a7dd3ba3.entry.js.map} +0 -0
  478. /package/dist/ls-document-viewer/{p-5a98eb27.entry.js.map → p-abb5c859.entry.js.map} +0 -0
  479. /package/dist/ls-document-viewer/{p-fd50bc60.entry.js.map → p-bbc53e46.entry.js.map} +0 -0
  480. /package/dist/ls-document-viewer/{p-f3af5313.entry.js.map → p-c521696b.entry.js.map} +0 -0
  481. /package/dist/ls-document-viewer/{p-828c1636.entry.js.map → p-c78bd190.entry.js.map} +0 -0
  482. /package/dist/ls-document-viewer/{p-870b9662.entry.js.map → p-ca1a0e03.entry.js.map} +0 -0
  483. /package/dist/ls-document-viewer/{p-a16db209.entry.js.map → p-d297ea14.entry.js.map} +0 -0
  484. /package/dist/ls-document-viewer/{p-ae2d6df8.entry.js.map → p-d2caf154.entry.js.map} +0 -0
  485. /package/dist/ls-document-viewer/{p-0f6a01b3.entry.js.map → p-d76f5c10.entry.js.map} +0 -0
  486. /package/dist/ls-document-viewer/{p-febb8794.entry.js.map → p-f318c711.entry.js.map} +0 -0
@@ -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';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { FIELD_DEFAULTS, DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME } from '../../constants/fieldDefaults';\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 // Scale edge threshold for small fields\n const edgeX = Math.min(8, width * 0.25);\n const edgeY = Math.min(8, height * 0.25);\n // corners (check before edges)\n if (Math.abs(e.clientX - right) < edgeX && Math.abs(e.clientY - bottom) < edgeY) {\n this.edgeSide = 'se';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < edgeX && Math.abs(e.clientY - top) < edgeY) {\n this.edgeSide = 'nw';\n this.hitField = f;\n } else if (Math.abs(e.clientX - right) < edgeX && Math.abs(e.clientY - top) < edgeY) {\n this.edgeSide = 'ne';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < edgeX && Math.abs(e.clientY - bottom) < edgeY) {\n this.edgeSide = 'sw';\n this.hitField = f;\n // west edge\n } else if (Math.abs(e.clientX - left) < edgeX && 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) < edgeX && 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) < edgeY && 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) < edgeY && 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 outOfBounds(futureField) {\n return (\n futureField.height <= 5 ||\n futureField.left < 0 ||\n futureField.top < 0 ||\n futureField.left + futureField.width >= futureField.pageDimensions.width ||\n futureField.top + futureField.height >= futureField.pageDimensions.height\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 var width = this.hitField.dataItem.width;\n var height = this.hitField.dataItem.height;\n var scale = this.hitField.dataItem.formElementType === 'signature' && this._template.fixSignatureScale;\n\n switch (this.edgeSide) {\n case 'n':\n if (outOfBounds({ ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom })) break;\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n\n if (scale) {\n width = (this.startMouse.height - movedY) * 3.8;\n this.hitField.style.width = width + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom, width };\n break;\n case 's':\n if (outOfBounds({ ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom })) break;\n\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n if (scale) {\n width = (this.startMouse.height + movedY) * 3.8;\n this.hitField.style.width = width + 'px';\n }\n\n this.hitField.dataItem = { ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom, width };\n break;\n case 'e':\n if (outOfBounds({ ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom })) break;\n\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n if (scale) {\n height = Math.round((this.startMouse.width + movedX) / 3.8);\n this.hitField.style.height = height + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom, height };\n\n break;\n case 'w':\n if (outOfBounds({ ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n\n if (scale) {\n height = Math.round((this.startMouse.width - movedX) / 3.8);\n this.hitField.style.height = height + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom, height };\n break;\n case 'se': {\n const newWidth = (this.startMouse.width + movedX) / this.zoom;\n const newHeight = (this.startMouse.height + movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, width: newWidth, height: newHeight })) break;\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth, height: newHeight };\n break;\n }\n case 'nw': {\n const newLeft = (this.startMouse.left + movedX) / this.zoom;\n const newTop = (this.startMouse.top + movedY) / this.zoom;\n const newWidth = (this.startMouse.width - movedX) / this.zoom;\n const newHeight = (this.startMouse.height - movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight };\n break;\n }\n case 'ne': {\n const newWidth = (this.startMouse.width + movedX) / this.zoom;\n const newTop = (this.startMouse.top + movedY) / this.zoom;\n const newHeight = (this.startMouse.height - movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight })) break;\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight };\n break;\n }\n case 'sw': {\n const newLeft = (this.startMouse.left + movedX) / this.zoom;\n const newWidth = (this.startMouse.width - movedX) / this.zoom;\n const newHeight = (this.startMouse.height + movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight };\n break;\n }\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 if (\n this.startLocations[i].left + movedX >= 0 &&\n this.startLocations[i].top + movedY >= 0 &&\n this.startLocations[i].left + movedX <= (this.pageDimensions[this.pageNum - 1].width - this.selected[i].dataItem.width) * this.zoom &&\n this.startLocations[i].top + movedY <= (this.pageDimensions[this.pageNum - 1].height - this.selected[i].dataItem.height) * this.zoom\n ) {\n this.selected[i].style.left = Math.round(this.startLocations[i].left + movedX) + 'px';\n this.selected[i].style.top = Math.round(this.startLocations[i].top + movedY) + 'px';\n }\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, fx.dataItem.pageDimensions.height, fx.dataItem.pageDimensions.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: this.fontFamily,\n fontSize: this.fontSize,\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\n this.mutate.emit([newData]);\n } catch (e) {\n console.error(e);\n }\n}\n\nexport function mouseDoubleClick(event) {\n console.log('double click', this.fieldTypeSelected, this.signer);\n try {\n let data: IToolboxField = this.fieldTypeSelected as IToolboxField;\n\n if (this.checkType('APPROVER') && data.elementType === 'signature') {\n data = {\n label: 'Text',\n formElementType: 'text',\n elementType: 'text',\n validation: 0,\n defaultHeight: FIELD_DEFAULTS['text'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['text'].defaultWidth,\n };\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: DEFAULT_FONT_NAME,\n fontSize: DEFAULT_FONT_SIZE,\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 } 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":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,kBAAkB;IAChC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;IACrF,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,QAAQ,CAAC;IAEvF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC;QACpC,IAAI,IAAI,GAAG,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAC;QAC/B,IAAI,KAAK,GAAG,QAAQ;YAAE,QAAQ,GAAG,KAAK,CAAC;QACvC,IAAI,MAAM,GAAG,SAAS;YAAE,SAAS,GAAG,MAAM,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/C,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AACnC,CAAC;AAED,IAAI,UAAU,GAAG,IAAI,CAAC;AAEtB,MAAM,UAAU,QAAQ,CAAC,IAAI,EAAE,KAAK;IAClC,IAAI,UAAU;QAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAEzC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO;IAC3C,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO;IACpC,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACxD,+BAA+B;IAE/B,mBAAmB;IACnB,iCAAiC;IACjC,wCAAwC;IACxC,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAE7E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAClG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACzC,+BAA+B;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;YAChF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;YACnF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;YACpF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;YACtF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,YAAY;QACd,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YACzF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,oBAAoB;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YAC1F,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,aAAa;QACf,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;YACxF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,aAAa;QACf,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;YAC3F,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;YAC9F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;QACrF,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAEhC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrC,4BAA4B;YAC5B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAClB,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1H,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,CAAgB,CAAC;YAChC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;QACrF,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAEhC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrC,4BAA4B;YAC5B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAClB,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1H,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,CAAgB,CAAC;YAChC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,gEAAgE;QAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAW;IACrC,OAAO,CACL,WAAW,CAAC,MAAM,IAAI,CAAC;QACvB,WAAW,CAAC,IAAI,GAAG,CAAC;QACpB,WAAW,CAAC,GAAG,GAAG,CAAC;QACnB,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,cAAc,CAAC,KAAK;QACxE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,CAC1E,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,KAAK;IAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO;IACpC,kDAAkD;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,4DAA4D;IAC5D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAEvG,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,GAAG;gBACN,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,MAAM;gBAC9J,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBAEpE,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACtK,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,MAAM;gBAE7G,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC3C,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACrH,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,MAAM;gBAE3G,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClE,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC7C,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAEpH,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,MAAM;gBAC9J,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;gBAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAElE,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC7C,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvK,MAAM;YACR,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChE,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAAE,MAAM;gBAC1F,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC3F,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC5D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1D,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChE,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAAE,MAAM;gBACtH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;gBAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACvH,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChE,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAAE,MAAM;gBACvG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACxG,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC5D,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChE,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAAE,MAAM;gBACzG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;gBAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC1G,MAAM;YACR,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvG,CAAC;SAAM,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,kCAAkC;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;QACrF,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB,CAAC;QACzF,IAAI,UAAU,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QACpD,IAAI,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAElD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnD,qCAAqC;QACrC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACpI,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACjI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAE3C,kCAAkC;IACpC,CAAC;SAAM,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC3F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;QACrF,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAEhC,kDAAkD;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACxB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,eAAe,CAAqB,CAAC;gBAChF,IAAI,KAAK;oBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,6DAA6D;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAEpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B,CAAC;YAC1H,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAEtH,2CAA2C;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,WAAW,CAAC;gBACjE,IACE,OAAO,IAAI,CAAC;oBACZ,MAAM,IAAI,CAAC;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;oBACtG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EACvG,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;oBACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAK;IAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IACpC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7B,sFAAsF;IACtF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAgB,CAAC;QACrF,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAC;IAC1B,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,sBAAsB;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAA+B,CAAC;QAC3G,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAmB,CAAC;QACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACf,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;aACzB,GAAG,CAAC,EAAE,CAAC,EAAE;YACR,iEAAiE;YACjE,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,CAAC,QAAQ;gBACd,GAAG,cAAc,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;aAChH,CAAC;YACF,sCAAsC;YACtC,sCAAsC;YACtC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;YACpB,uCAAuC;YACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CACL,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,mCAAmC;QACnC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAA+B,CAAC;QAC3G,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;YAC/D,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;gBACvF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,iEAAiE;gBACjE,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsD;IACnF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB,CAAC;IAC3F,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,GAAG,gBAAgB,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QACvC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,oCAAoC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,oCAAoC,CAAC;QAC9D,CAAC;QACD,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC7E,IAAI,SAAS;QAAE,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAwB;IACvD,mCAAmC;IACnC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB,CAAC;IAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAExC,sEAAsE;IACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC9B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC/B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3D,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/E,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACpD,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,wEAAwE,CAAC;IACjG,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IACrC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C,CAAC;IACzE,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/D,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAChC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;IACzC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAE7C,gCAAgC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,mCAAmC,CAAC;IAC3D,IAAI,CAAC,WAAW,GAAG,qCAAqC,CAAC;IACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;QAClD,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAEnC,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK;YAC3E,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC;QAEhE,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B,CAAC;YACvH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnF,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACrH,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAEnH,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACtD,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACtD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAa,EAAE,EAAE;QAClC,mEAAmE;QACnE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,GAAG;YAAE,OAAO;QAEzC,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK;YAC3E,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC;QAEhE,OAAO,EAAE,CAAC;QAEV,IAAI,WAAW,EAAE,CAAC;YAEhB,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;YAChD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAA+B,CAAC;YACvH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI;gBAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI;gBAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;YAElC,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;YAE9B,6DAA6D;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YAE7F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;YAEjG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAkB;gBAC7B,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE;oBACJ,EAAE;oBACF,KAAK,EAAE,EAAE;oBACT,eAAe,EAAE,SAAS,CAAC,eAAe;oBAC1C,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,WAAW,EAAE,KAAK;oBAClB,GAAG,EAAE,cAAc;oBACnB,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,SAAS,CAAC,aAAa;oBAC/B,KAAK,EAAE,SAAS,CAAC,YAAY;oBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;oBACrD,QAAQ,EAAE,IAAI,CAAC,UAAU;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,OAAO;oBAClB,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,IAAI;oBACjB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3F,EAAE,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1F,EAAE,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;oBAC5F,EAAE,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;oBAC7F,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;iBACd;aAClB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAK;IACpC,sDAAsD;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,IAAI,IAAI,GAAkB,IAAI,CAAC,iBAAkC,CAAC;QAElE,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACnE,IAAI,GAAG;gBACL,KAAK,EAAE,MAAM;gBACb,eAAe,EAAE,MAAM;gBACvB,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,aAAa;gBACnD,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY;aAClD,CAAC;QACJ,CAAC;QACD,sCAAsC;QACtC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;QACjG,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAgB,CAAC;QACzF,qEAAqE;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;QAE1D,8CAA8C;QAC9C,MAAM,OAAO,GAAkB;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE;gBACJ,EAAE;gBACF,KAAK,EAAE,EAAE;gBACT,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,KAAK;gBAClB,GAAG;gBACH,IAAI;gBACJ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACrD,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,IAAI;gBAChB,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpE,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK;gBAC5E,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC7E,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;aACd;SAClB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import { LSApiElement } from '../../types/LSApiElement';\nimport { LSMutateEvent } from '../../types/LSMutateEvent';\nimport { findDimensions, findIn, recalculateCoordinates } from './editorCalculator';\nimport { IToolboxField } from '../interfaces/IToolboxField';\nimport { FIELD_DEFAULTS, DEFAULT_FONT_SIZE, DEFAULT_FONT_NAME } from '../../constants/fieldDefaults';\nimport { calculateSnap } from './snapHelper';\nimport { defaultRolePalette } from './defaultPalette';\n\nexport function updateSelectionBox() {\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n if (!this.selected || this.selected.length < 2) {\n box.style.visibility = 'hidden';\n return;\n }\n\n let minLeft = Infinity, minTop = Infinity, maxRight = -Infinity, maxBottom = -Infinity;\n\n this.selected.forEach(f => {\n const left = f.offsetLeft;\n const top = f.offsetTop;\n const right = left + f.offsetWidth;\n const bottom = top + f.offsetHeight;\n if (left < minLeft) minLeft = left;\n if (top < minTop) minTop = top;\n if (right > maxRight) maxRight = right;\n if (bottom > maxBottom) maxBottom = bottom;\n });\n\n box.style.left = minLeft + 'px';\n box.style.top = minTop + 'px';\n box.style.width = (maxRight - minLeft) + 'px';\n box.style.height = (maxBottom - minTop) + 'px';\n box.style.visibility = 'visible';\n}\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 if (this._isToolboxDragging) return;\n // Disable mouse interactions in preview mode\n if (this.mode === 'preview') {\n return;\n }\n // Ignore events originating from outside the document frame\n const frame = this.component.shadowRoot.getElementById('ls-document-frame');\n if (!frame || !e.composedPath().includes(frame)) 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 // Scale edge threshold for small fields\n const edgeX = Math.min(8, width * 0.25);\n const edgeY = Math.min(8, height * 0.25);\n // corners (check before edges)\n if (Math.abs(e.clientX - right) < edgeX && Math.abs(e.clientY - bottom) < edgeY) {\n this.edgeSide = 'se';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < edgeX && Math.abs(e.clientY - top) < edgeY) {\n this.edgeSide = 'nw';\n this.hitField = f;\n } else if (Math.abs(e.clientX - right) < edgeX && Math.abs(e.clientY - top) < edgeY) {\n this.edgeSide = 'ne';\n this.hitField = f;\n } else if (Math.abs(e.clientX - left) < edgeX && Math.abs(e.clientY - bottom) < edgeY) {\n this.edgeSide = 'sw';\n this.hitField = f;\n // west edge\n } else if (Math.abs(e.clientX - left) < edgeX && 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) < edgeX && 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) < edgeY && 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) < edgeY && 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 updateSelectionBox.bind(this)();\n }\n}\n\nexport function outOfBounds(futureField) {\n return (\n futureField.height <= 5 ||\n futureField.left < 0 ||\n futureField.top < 0 ||\n futureField.left + futureField.width >= futureField.pageDimensions.width ||\n futureField.top + futureField.height >= futureField.pageDimensions.height\n );\n}\nexport function mouseMove(event) {\n event.preventDefault();\n if (this._isToolboxDragging) return;\n // Disable mouse move interactions in preview mode\n if (this.mode === 'preview') {\n return;\n }\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 var width = this.hitField.dataItem.width;\n var height = this.hitField.dataItem.height;\n var scale = this.hitField.dataItem.formElementType === 'signature' && this._template.fixSignatureScale;\n\n switch (this.edgeSide) {\n case 'n':\n if (outOfBounds({ ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom })) break;\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n\n if (scale) {\n width = (this.startMouse.height - movedY) * 3.8;\n this.hitField.style.width = width + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, top: (this.startMouse.top + movedY) / this.zoom, height: (this.startMouse.height - movedY) / this.zoom, width };\n break;\n case 's':\n if (outOfBounds({ ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom })) break;\n\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n if (scale) {\n width = (this.startMouse.height + movedY) * 3.8;\n this.hitField.style.width = width + 'px';\n }\n\n this.hitField.dataItem = { ...this.hitField.dataItem, height: (this.startMouse.height + movedY) / this.zoom, width };\n break;\n case 'e':\n if (outOfBounds({ ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom })) break;\n\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n if (scale) {\n height = Math.round((this.startMouse.width + movedX) / 3.8);\n this.hitField.style.height = height + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, width: (this.startMouse.width + movedX) / this.zoom, height };\n\n break;\n case 'w':\n if (outOfBounds({ ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n\n if (scale) {\n height = Math.round((this.startMouse.width - movedX) / 3.8);\n this.hitField.style.height = height + 'px';\n }\n this.hitField.dataItem = { ...this.hitField.dataItem, left: (this.startMouse.left + movedX) / this.zoom, width: (this.startMouse.width - movedX) / this.zoom, height };\n break;\n case 'se': {\n const newWidth = (this.startMouse.width + movedX) / this.zoom;\n const newHeight = (this.startMouse.height + movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, width: newWidth, height: newHeight })) break;\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, width: newWidth, height: newHeight };\n break;\n }\n case 'nw': {\n const newLeft = (this.startMouse.left + movedX) / this.zoom;\n const newTop = (this.startMouse.top + movedY) / this.zoom;\n const newWidth = (this.startMouse.width - movedX) / this.zoom;\n const newHeight = (this.startMouse.height - movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, top: newTop, width: newWidth, height: newHeight };\n break;\n }\n case 'ne': {\n const newWidth = (this.startMouse.width + movedX) / this.zoom;\n const newTop = (this.startMouse.top + movedY) / this.zoom;\n const newHeight = (this.startMouse.height - movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight })) break;\n this.hitField.style.width = this.startMouse.width + movedX + 'px';\n this.hitField.style.top = this.startMouse.top + movedY + 'px';\n this.hitField.style.height = this.startMouse.height - movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, top: newTop, width: newWidth, height: newHeight };\n break;\n }\n case 'sw': {\n const newLeft = (this.startMouse.left + movedX) / this.zoom;\n const newWidth = (this.startMouse.width - movedX) / this.zoom;\n const newHeight = (this.startMouse.height + movedY) / this.zoom;\n if (outOfBounds({ ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight })) break;\n this.hitField.style.left = this.startMouse.left + movedX + 'px';\n this.hitField.style.width = this.startMouse.width - movedX + 'px';\n this.hitField.style.height = this.startMouse.height + movedY + 'px';\n this.hitField.dataItem = { ...this.hitField.dataItem, left: newLeft, width: newWidth, height: newHeight };\n break;\n }\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 document.body.style.userSelect = 'none';\n var box = this.component.shadowRoot.getElementById('ls-box-selector') as HTMLElement;\n box.style.visibility = 'hidden';\n\n // Dismiss any open date picker when moving fields\n if (this.selected?.length) {\n this.selected.forEach(f => {\n const input = f.shadowRoot?.getElementById('editing-input') as HTMLInputElement;\n if (input) input.blur();\n });\n }\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 // Calculate snap based on the primary (first) selected field\n const primaryLeft = this.startLocations[0].left + movedX;\n const primaryTop = this.startLocations[0].top + movedY;\n const primaryWidth = this.startLocations[0].width;\n const primaryHeight = this.startLocations[0].height;\n\n const allFields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const excludeIds = this.selected.map(s => s.dataItem.id);\n const snap = calculateSnap(primaryLeft, primaryTop, primaryWidth, primaryHeight, allFields, this.pageNum, excludeIds);\n\n // Apply snap offset to all selected fields\n const snapOffsetX = snap.x !== null ? snap.x - primaryLeft : 0;\n const snapOffsetY = snap.y !== null ? snap.y - primaryTop : 0;\n\n for (let i = 0; i < this.selected.length; i++) {\n const newLeft = this.startLocations[i].left + movedX + snapOffsetX;\n const newTop = this.startLocations[i].top + movedY + snapOffsetY;\n if (\n newLeft >= 0 &&\n newTop >= 0 &&\n newLeft <= (this.pageDimensions[this.pageNum - 1].width - this.selected[i].dataItem.width) * this.zoom &&\n newTop <= (this.pageDimensions[this.pageNum - 1].height - this.selected[i].dataItem.height) * this.zoom\n ) {\n this.selected[i].style.left = Math.round(newLeft) + 'px';\n this.selected[i].style.top = Math.round(newTop) + 'px';\n }\n }\n\n showSnapGuides.bind(this)(snap.guides);\n updateSelectionBox.bind(this)();\n }\n }\n}\n\nexport function mouseUp(event) {\n this.edgeSide = null;\n this.startMouse = null;\n this.component.style.cursor = 'auto';\n document.body.style.userSelect = '';\n clearSnapGuides.bind(this)();\n\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 updateSelectionBox.bind(this)();\n }\n}\n\nexport function mouseClick(e) {\n // Disable click interactions in preview mode\n if (this.mode === 'preview') {\n return;\n }\n \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, fx.dataItem.pageDimensions.height, fx.dataItem.pageDimensions.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 updateSelectionBox.bind(this)();\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 updateSelectionBox.bind(this)();\n }\n}\n\nexport function showSnapGuides(guides: { orientation: 'h' | 'v'; position: number }[]) {\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n let container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (!container) {\n container = document.createElement('div');\n container.id = 'ls-snap-guides';\n container.style.position = 'absolute';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.pointerEvents = 'none';\n container.style.zIndex = '9999';\n frame.appendChild(container);\n }\n\n container.innerHTML = '';\n for (const guide of guides) {\n const line = document.createElement('div');\n line.style.position = 'absolute';\n line.style.backgroundColor = 'transparent';\n if (guide.orientation === 'v') {\n line.style.left = guide.position + 'px';\n line.style.top = '0';\n line.style.width = '0';\n line.style.height = '100%';\n line.style.borderLeft = '1px dashed var(--gray-50, #c8c9cc)';\n } else {\n line.style.top = guide.position + 'px';\n line.style.left = '0';\n line.style.width = '100%';\n line.style.height = '0';\n line.style.borderTop = '1px dashed var(--gray-50, #c8c9cc)';\n }\n container.appendChild(line);\n }\n}\n\nexport function clearSnapGuides() {\n const container = this.component.shadowRoot.getElementById('ls-snap-guides');\n if (container) container.innerHTML = '';\n}\n\nexport function toolboxDragStart(fieldData: IToolboxField) {\n // Cancel any existing toolbox drag\n if (this._cancelToolboxDrag) {\n this._cancelToolboxDrag();\n }\n\n const frame = this.component.shadowRoot.getElementById('ls-document-frame') as HTMLElement;\n const zoom = this.zoom;\n this._isToolboxDragging = true;\n const startTime = Date.now();\n\n // Prevent text selection during drag\n document.body.style.userSelect = 'none';\n\n // Create ghost preview element matching the original drag image style\n const ghost = document.createElement('div');\n ghost.id = 'ls-toolbox-ghost';\n ghost.style.position = 'fixed';\n ghost.style.width = fieldData.defaultWidth * zoom + 'px';\n ghost.style.height = fieldData.defaultHeight * zoom + 'px';\n ghost.style.border = `2px dashed ${defaultRolePalette[this.signer % 100].s60}`;\n const s20 = defaultRolePalette[this.signer % 100].s20.replace('#', '');\n const r = parseInt(s20.substring(0, 2), 16);\n const g = parseInt(s20.substring(2, 4), 16);\n const b = parseInt(s20.substring(4, 6), 16);\n ghost.style.background = `rgba(${r},${g},${b},0.5)`;\n ghost.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)';\n ghost.style.pointerEvents = 'none';\n ghost.style.zIndex = '10000';\n ghost.style.visibility = 'hidden';\n ghost.style.boxSizing = 'border-box';\n ghost.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n ghost.style.fontSize = Math.round(DEFAULT_FONT_SIZE * zoom) + 'px';\n ghost.style.color = defaultRolePalette[this.signer % 100].s100;\n ghost.style.overflow = 'hidden';\n ghost.style.whiteSpace = 'nowrap';\n ghost.style.display = 'flex';\n ghost.style.alignItems = 'center';\n ghost.style.textTransform = 'capitalize';\n ghost.innerHTML = fieldData.formElementType;\n this.component.shadowRoot.appendChild(ghost);\n\n // Info chip at bottom of screen\n const chip = document.createElement('div');\n chip.id = 'ls-esc-chip';\n chip.style.position = 'fixed';\n chip.style.bottom = '1.5rem';\n chip.style.left = '50%';\n chip.style.transform = 'translateX(-50%)';\n chip.style.padding = '0.375rem 0.75rem';\n chip.style.borderRadius = '0.625rem';\n chip.style.background = 'var(--gray-100, #1f2937)';\n chip.style.color = 'white';\n chip.style.fontSize = '0.75rem';\n chip.style.fontFamily = 'var(--font-family, IBM Plex Sans, sans-serif)';\n chip.style.pointerEvents = 'none';\n chip.style.zIndex = '10000';\n chip.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)';\n chip.textContent = 'Press Esc to cancel field placement';\n this.component.shadowRoot.appendChild(chip);\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n ghost.style.visibility = 'visible';\n\n const frameRect = frame.getBoundingClientRect();\n const isOverFrame = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n\n if (isOverFrame) {\n ghost.style.opacity = '1';\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n ghost.style.left = (snap.x !== null ? snap.x + frameRect.left - frame.scrollLeft : e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (snap.y !== null ? snap.y + frameRect.top - frame.scrollTop : e.clientY - dragHeight / 2) + 'px';\n\n showSnapGuides.bind(this)(snap.guides);\n } else {\n ghost.style.opacity = '0.5';\n ghost.style.left = (e.clientX - dragWidth / 2) + 'px';\n ghost.style.top = (e.clientY - dragHeight / 2) + 'px';\n clearSnapGuides.bind(this)();\n }\n };\n\n const cleanup = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('keydown', onKeyDown);\n ghost.remove();\n chip.remove();\n clearSnapGuides.bind(this)();\n document.body.style.userSelect = '';\n this._isToolboxDragging = false;\n this._cancelToolboxDrag = null;\n };\n\n const onMouseUp = (e: MouseEvent) => {\n // Ignore mouseup if it's from the same click that started the drag\n if (Date.now() - startTime < 100) return;\n\n const frameRect = frame.getBoundingClientRect();\n const shouldPlace = e.clientX >= frameRect.left && e.clientX <= frameRect.right &&\n e.clientY >= frameRect.top && e.clientY <= frameRect.bottom;\n\n cleanup();\n\n if (shouldPlace) {\n\n const dragWidth = fieldData.defaultWidth * zoom;\n const dragHeight = fieldData.defaultHeight * zoom;\n const x = e.clientX - frameRect.left + frame.scrollLeft;\n const y = e.clientY - frameRect.top + frame.scrollTop;\n let left = x - dragWidth / 2;\n let top = y - dragHeight / 2;\n\n const fields = Array.from(this.component.shadowRoot.querySelectorAll('ls-editor-field')) as HTMLLsEditorFieldElement[];\n const snap = calculateSnap(left, top, dragWidth, dragHeight, fields, this.pageNum);\n if (snap.x !== null) left = snap.x;\n if (snap.y !== null) top = snap.y;\n\n const finalTop = top / zoom;\n const finalLeft = left / zoom;\n\n // Check if field fits on page - constrain to page boundaries\n const pageWidth = this.pageDimensions[this.pageNum - 1].width;\n const pageHeight = this.pageDimensions[this.pageNum - 1].height;\n const constrainedLeft = Math.max(0, Math.min(finalLeft, pageWidth - fieldData.defaultWidth));\n const constrainedTop = Math.max(0, Math.min(finalTop, pageHeight - fieldData.defaultHeight));\n\n this.component.shadowRoot.querySelectorAll('ls-editor-field').forEach(f => (f.selected = false));\n\n const id = btoa('ele' + crypto.randomUUID());\n const newData: LSMutateEvent = {\n action: 'create',\n data: {\n id,\n value: '',\n formElementType: fieldData.formElementType,\n elementType: fieldData.elementType,\n validation: fieldData.validation,\n substantive: false,\n top: constrainedTop,\n left: constrainedLeft,\n hideBorder: false,\n height: fieldData.defaultHeight,\n width: fieldData.defaultWidth,\n pageDimensions: this.pageDimensions[this.pageNum - 1],\n fontName: this.fontFamily,\n fontSize: this.fontSize,\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: constrainedLeft > 0 ? constrainedLeft / this.pageDimensions[this.pageNum - 1].width : 0,\n ay: constrainedTop > 0 ? constrainedTop / this.pageDimensions[this.pageNum - 1].height : 0,\n bx: (constrainedLeft + fieldData.defaultWidth) / this.pageDimensions[this.pageNum - 1].width,\n by: (constrainedTop + fieldData.defaultHeight) / this.pageDimensions[this.pageNum - 1].height,\n templateId: this._template.id,\n } as LSApiElement,\n };\n\n this.mutate.emit([newData]);\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n cleanup();\n }\n };\n\n this._cancelToolboxDrag = cleanup;\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('keydown', onKeyDown);\n}\n\nexport function mouseDoubleClick(event) {\n // Disable double-click field creation in preview mode\n if (this.mode === 'preview') {\n return;\n }\n \n console.log('double click', this.fieldTypeSelected, this.signer);\n try {\n let data: IToolboxField = this.fieldTypeSelected as IToolboxField;\n\n if (this.checkType('APPROVER') && data.elementType === 'signature') {\n data = {\n label: 'Text',\n formElementType: 'text',\n elementType: 'text',\n validation: 0,\n defaultHeight: FIELD_DEFAULTS['text'].defaultHeight,\n defaultWidth: FIELD_DEFAULTS['text'].defaultWidth,\n };\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: DEFAULT_FONT_NAME,\n fontSize: DEFAULT_FONT_SIZE,\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 } catch (e) {\n console.error(e);\n }\n}\n"]}
@@ -0,0 +1,66 @@
1
+ const SNAP_THRESHOLD = 8; // pixels proximity to trigger snap
2
+ /**
3
+ * Calculate snap positions for a dragging field against existing fields.
4
+ * Snaps any outer edge (left/right/top/bottom) of the moving field to any
5
+ * outer edge of every other field on the same page.
6
+ * All values are in zoomed pixel coordinates relative to the document frame.
7
+ */
8
+ export function calculateSnap(dragLeft, dragTop, dragWidth, dragHeight, fields, currentPage, excludeIds) {
9
+ const result = { x: null, y: null, guides: [] };
10
+ const dragRight = dragLeft + dragWidth;
11
+ const dragBottom = dragTop + dragHeight;
12
+ let closestDx = SNAP_THRESHOLD + 1;
13
+ let closestDy = SNAP_THRESHOLD + 1;
14
+ for (const field of fields) {
15
+ if (field.dataItem?.page !== currentPage)
16
+ continue;
17
+ if (excludeIds && excludeIds.includes(field.dataItem?.id))
18
+ continue;
19
+ const fLeft = field.offsetLeft;
20
+ const fTop = field.offsetTop;
21
+ const fRight = fLeft + field.offsetWidth;
22
+ const fBottom = fTop + field.offsetHeight;
23
+ // X-axis: any dragged edge to any target edge
24
+ const xPairs = [
25
+ { dragEdge: dragLeft, targetEdge: fLeft },
26
+ { dragEdge: dragLeft, targetEdge: fRight },
27
+ { dragEdge: dragRight, targetEdge: fLeft },
28
+ { dragEdge: dragRight, targetEdge: fRight },
29
+ ];
30
+ for (const { dragEdge, targetEdge } of xPairs) {
31
+ const dist = Math.abs(dragEdge - targetEdge);
32
+ if (dist < closestDx) {
33
+ closestDx = dist;
34
+ result.x = dragLeft + (targetEdge - dragEdge);
35
+ result.guides = result.guides.filter(g => g.orientation !== 'v');
36
+ result.guides.push({ orientation: 'v', position: targetEdge });
37
+ }
38
+ }
39
+ // Y-axis: any dragged edge to any target edge
40
+ const yPairs = [
41
+ { dragEdge: dragTop, targetEdge: fTop },
42
+ { dragEdge: dragTop, targetEdge: fBottom },
43
+ { dragEdge: dragBottom, targetEdge: fTop },
44
+ { dragEdge: dragBottom, targetEdge: fBottom },
45
+ ];
46
+ for (const { dragEdge, targetEdge } of yPairs) {
47
+ const dist = Math.abs(dragEdge - targetEdge);
48
+ if (dist < closestDy) {
49
+ closestDy = dist;
50
+ result.y = dragTop + (targetEdge - dragEdge);
51
+ result.guides = result.guides.filter(g => g.orientation !== 'h');
52
+ result.guides.push({ orientation: 'h', position: targetEdge });
53
+ }
54
+ }
55
+ }
56
+ if (closestDx > SNAP_THRESHOLD) {
57
+ result.x = null;
58
+ result.guides = result.guides.filter(g => g.orientation !== 'v');
59
+ }
60
+ if (closestDy > SNAP_THRESHOLD) {
61
+ result.y = null;
62
+ result.guides = result.guides.filter(g => g.orientation !== 'h');
63
+ }
64
+ return result;
65
+ }
66
+ //# sourceMappingURL=snapHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapHelper.js","sourceRoot":"","sources":["../../../../src/components/ls-document-viewer/snapHelper.ts"],"names":[],"mappings":"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","sourcesContent":["const SNAP_THRESHOLD = 8; // pixels proximity to trigger snap\n\nexport interface SnapResult {\n x: number | null; // snapped left position (null = no snap on x)\n y: number | null; // snapped top position (null = no snap on y)\n guides: { orientation: 'h' | 'v'; position: number }[];\n}\n\n/**\n * Calculate snap positions for a dragging field against existing fields.\n * Snaps any outer edge (left/right/top/bottom) of the moving field to any\n * outer edge of every other field on the same page.\n * All values are in zoomed pixel coordinates relative to the document frame.\n */\nexport function calculateSnap(\n dragLeft: number,\n dragTop: number,\n dragWidth: number,\n dragHeight: number,\n fields: { offsetLeft: number; offsetTop: number; offsetWidth: number; offsetHeight: number; dataItem?: any }[],\n currentPage: number,\n excludeIds?: string[],\n): SnapResult {\n const result: SnapResult = { x: null, y: null, guides: [] };\n\n const dragRight = dragLeft + dragWidth;\n const dragBottom = dragTop + dragHeight;\n\n let closestDx = SNAP_THRESHOLD + 1;\n let closestDy = SNAP_THRESHOLD + 1;\n\n for (const field of fields) {\n if (field.dataItem?.page !== currentPage) continue;\n if (excludeIds && excludeIds.includes(field.dataItem?.id)) continue;\n\n const fLeft = field.offsetLeft;\n const fTop = field.offsetTop;\n const fRight = fLeft + field.offsetWidth;\n const fBottom = fTop + field.offsetHeight;\n\n // X-axis: any dragged edge to any target edge\n const xPairs = [\n { dragEdge: dragLeft, targetEdge: fLeft },\n { dragEdge: dragLeft, targetEdge: fRight },\n { dragEdge: dragRight, targetEdge: fLeft },\n { dragEdge: dragRight, targetEdge: fRight },\n ];\n\n for (const { dragEdge, targetEdge } of xPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDx) {\n closestDx = dist;\n result.x = dragLeft + (targetEdge - dragEdge);\n result.guides = result.guides.filter(g => g.orientation !== 'v');\n result.guides.push({ orientation: 'v', position: targetEdge });\n }\n }\n\n // Y-axis: any dragged edge to any target edge\n const yPairs = [\n { dragEdge: dragTop, targetEdge: fTop },\n { dragEdge: dragTop, targetEdge: fBottom },\n { dragEdge: dragBottom, targetEdge: fTop },\n { dragEdge: dragBottom, targetEdge: fBottom },\n ];\n\n for (const { dragEdge, targetEdge } of yPairs) {\n const dist = Math.abs(dragEdge - targetEdge);\n if (dist < closestDy) {\n closestDy = dist;\n result.y = dragTop + (targetEdge - dragEdge);\n result.guides = result.guides.filter(g => g.orientation !== 'h');\n result.guides.push({ orientation: 'h', position: targetEdge });\n }\n }\n }\n\n if (closestDx > SNAP_THRESHOLD) {\n result.x = null;\n result.guides = result.guides.filter(g => g.orientation !== 'v');\n }\n if (closestDy > SNAP_THRESHOLD) {\n result.y = null;\n result.guides = result.guides.filter(g => g.orientation !== 'h');\n }\n\n return result;\n}\n"]}
@@ -103,4 +103,37 @@ input {
103
103
 
104
104
  .ls-dv-x-button:hover {
105
105
  background: var(--gray-90, #5e6066);
106
+ }
107
+
108
+ .resize-handles {
109
+ pointer-events: none;
110
+ }
111
+
112
+ .resize-handle {
113
+ position: absolute;
114
+ background: var(--field-border-color);
115
+ border-radius: 1px;
116
+ }
117
+
118
+ .handle-e {
119
+ width: 4px;
120
+ height: 16px;
121
+ right: 0px;
122
+ top: 50%;
123
+ transform: translateY(-50%);
124
+ }
125
+
126
+ .handle-s {
127
+ width: 16px;
128
+ height: 4px;
129
+ bottom: 0px;
130
+ left: 50%;
131
+ transform: translateX(-50%);
132
+ }
133
+
134
+ .handle-se {
135
+ width: 6px;
136
+ height: 6px;
137
+ right: 0px;
138
+ bottom: 0px;
106
139
  }
@@ -25,6 +25,7 @@ export class LsEditorField {
25
25
  assignee;
26
26
  dataItem;
27
27
  selected = false;
28
+ multiSelected = false;
28
29
  readonly;
29
30
  type;
30
31
  page;
@@ -141,15 +142,6 @@ export class LsEditorField {
141
142
  if (_newValue) {
142
143
  this.component.style.background = this.hexToRgba(defaultRolePalette[this.dataItem?.signer % 100].s20, 0.5);
143
144
  this.component.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)';
144
- // Open date picker when field is selected
145
- if (this.isDateField() && !this.readonly) {
146
- requestAnimationFrame(() => {
147
- const editbox = this.component.shadowRoot.getElementById('editing-input');
148
- if (editbox) {
149
- editbox.showPicker();
150
- }
151
- });
152
- }
153
145
  }
154
146
  else {
155
147
  this.component.style.background = 'rgba(255,255,255,0.5)';
@@ -255,21 +247,21 @@ export class LsEditorField {
255
247
  }
256
248
  render() {
257
249
  const hostStyle = this.floatingActive
258
- ? { border: `2px ${defaultRolePalette[this.dataItem?.signer % 100].s60} ${this.dataItem?.signer > 99 ? 'dashed' : 'solid'}`, boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)' }
259
- : { border: `2px ${defaultRolePalette[this.dataItem?.signer % 100].s60} ${this.dataItem?.signer > 99 ? 'dashed' : 'solid'}` };
250
+ ? { border: `2px ${defaultRolePalette[this.dataItem?.signer % 100].s60} ${this.dataItem?.signer > 99 ? 'dashed' : 'solid'}`, boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', '--field-border-color': defaultRolePalette[this.dataItem?.signer % 100].s60 }
251
+ : { border: `2px ${defaultRolePalette[this.dataItem?.signer % 100].s60} ${this.dataItem?.signer > 99 ? 'dashed' : 'solid'}`, '--field-border-color': defaultRolePalette[this.dataItem?.signer % 100].s60 };
260
252
  const zoomValue = parseFloat(this.zoom) || 1;
261
253
  const topOffest = (this.dataItem.height ?? 1) + 4;
262
- return (h(Host, { key: '7d64b0bbcc7702c98f71078b923d1fc167b63dfc', id: this.dataItem ? 'ls-field-' + this.dataItem.id : undefined, style: hostStyle, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: '1d369978162bf351edab8961bab284fb7df184f5', class: {
254
+ return (h(Host, { key: '0d29b860690c43f5b351baa639a2a8ec00c6bdfd', id: this.dataItem ? 'ls-field-' + this.dataItem.id : undefined, style: hostStyle, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: 'ea39e9ccf339350e6b9c06d02c1efc8a45711bb8', class: {
263
255
  'ls-editor-field': true,
264
256
  'is-selected': this.selected,
265
- } }, !this.dataItem?.optional && (h("ls-icon", { key: '8b7d64c9bfe4bf8644daa69c1debbf32c44ba31e', name: "required-icon", size: Math.round(12 * zoomValue), class: "ls-dv-required-icon", customStyle: {
257
+ } }, !this.dataItem?.optional && (h("ls-icon", { key: '1341c6ccd3dade934f816b47bd83a97e7ec47e78', name: "required-icon", size: Math.round(12 * zoomValue), class: "ls-dv-required-icon", customStyle: {
266
258
  position: 'absolute',
267
259
  top: '50%',
268
- right: `${0.125 * zoomValue}rem`,
260
+ right: `${0.25 * zoomValue}rem`,
269
261
  transform: 'translateY(-50%)',
270
262
  lineHeight: '1',
271
263
  fontSize: `${0.75 * zoomValue}rem`,
272
- } })), h("input", { key: '520566931f5979752a6aa2aada1c190dc912dc87', id: "editing-input", class: this.isDateField()
264
+ } })), h("input", { key: '5a7904d75ea7482446999e0a223ec2473e957d1f', id: "editing-input", class: this.isDateField()
273
265
  ? 'ls-dv-date-field-input'
274
266
  : (this.isEditing ? 'ls-dv-editor-field-editable' : 'ls-dv-hidden-field'), type: this.isDateField() ? 'date' : 'text', style: { color: `${defaultRolePalette[this.dataItem?.signer % 100].s100}` }, value: this.isDateField() ? this.toISODate(this.dataItem?.value) : this.dataItem?.value, checked: this.dataItem?.value ? true : false, onInput: e => {
275
267
  const val = e.target.value;
@@ -279,7 +271,7 @@ export class LsEditorField {
279
271
  const val = e.target.value;
280
272
  this.alter({ value: this.formatDateFromISO(val) });
281
273
  }
282
- } }), h("div", { key: '762899aa1e2cb23d97de30341319622435a4ad00', id: "field-info", class: this.isEditing ? 'ls-dv-hidden-field' : 'ls-dv-editor-field-draggable', style: { color: `${defaultRolePalette[this.dataItem?.signer % 100].s100}` } }, (this.dataItem.value.length && this.dataItem.value) || dvI18n.t(this.getFieldTypeKey())), (this.floatingActive || this.selected) && this.dataItem?.label && (h("div", { key: 'f1a513a1126580c164bf5a41acb454fe73f54c12', style: {
274
+ } }), h("div", { key: '7b0db9fcb1900bef477f508c3c470e02c68e01b1', id: "field-info", class: this.isEditing ? 'ls-dv-hidden-field' : 'ls-dv-editor-field-draggable', style: { color: `${defaultRolePalette[this.dataItem?.signer % 100].s100}` } }, (this.dataItem.value.length && this.dataItem.value) || dvI18n.t(this.getFieldTypeKey())), (this.floatingActive || this.selected) && this.dataItem?.label && (h("div", { key: '8a32f89365f275dc2766cdef91f4dd23b23f8ea3', style: {
283
275
  position: 'absolute',
284
276
  background: `${defaultRolePalette[this.dataItem?.signer % 100].s20}`,
285
277
  color: `${defaultRolePalette[this.dataItem?.signer % 100].s80}`,
@@ -290,7 +282,7 @@ export class LsEditorField {
290
282
  left: `-${2 * zoomValue}px`,
291
283
  whiteSpace: 'nowrap',
292
284
  width: 'fit-content',
293
- } }, this.dataItem?.label)), (this.floatingActive || this.selected) && (h("p", { key: '4bd4b53f0c7f9e7dbb18a965cfccb44058293e21', style: {
285
+ } }, this.dataItem?.label)), (this.floatingActive || this.selected) && (h("p", { key: '31f8836c0abe739966844c0c0616f18424d5f623', style: {
294
286
  position: 'absolute',
295
287
  color: 'var(--gray-80, #3a3a3a)',
296
288
  bottom: `-${1.75 * zoomValue}rem`,
@@ -299,7 +291,7 @@ export class LsEditorField {
299
291
  whiteSpace: 'nowrap',
300
292
  width: 'fit-content',
301
293
  fontFamily: 'sans-serif',
302
- } }, dvI18n.t('fieldproperties.assignedto'), " ", this.assignee)), this.floatingActive && (h("button", { key: '878836f081c90b5253d84ef3260726cab37e5f89', class: 'ls-dv-x-button', style: {
294
+ } }, dvI18n.t('fieldproperties.assignedto'), " ", this.assignee)), this.selected && !this.multiSelected && (h("div", { key: 'a7408580bbe6576f162a6814e037b568b9d6b83c', class: "resize-handles" }, h("div", { key: '0d94c033756b3d4dc151397fd72cb307714f53ff', class: "resize-handle handle-e" }), h("div", { key: '2078154553e30ae4a38d9fdfe1429f6f24ebd3b7', class: "resize-handle handle-s" }), h("div", { key: 'aca42ba15940ffd225e5ac624ac11b3d0fbcc9ed', class: "resize-handle handle-se" }))), this.floatingActive && !this.readonly && (h("button", { key: '5093c2879acfc19b2c6c400e8ad4a716a6d43716', class: 'ls-dv-x-button', style: {
303
295
  display: 'flex',
304
296
  justifyContent: 'center',
305
297
  alignItems: 'center',
@@ -307,7 +299,7 @@ export class LsEditorField {
307
299
  height: `${0.875 * zoomValue}rem`,
308
300
  lineHeight: `${0.75 * zoomValue}rem`,
309
301
  fontSize: `${0.75 * zoomValue}rem`,
310
- }, onClick: () => this.deleteField() }, h("ls-icon", { key: '94a37fda9401b17514a02b707f9c27f5e2d1181d', name: "x-icon", size: Math.round(12 * zoomValue) }))))));
302
+ }, onClick: () => this.deleteField() }, h("ls-icon", { key: 'e16451ebde40a9535f7ea12134f1e5a0cc7a0da9', name: "x-icon", size: Math.round(12 * zoomValue) }))))));
311
303
  }
312
304
  static get is() { return "ls-editor-field"; }
313
305
  static get encapsulation() { return "shadow"; }
@@ -385,6 +377,26 @@ export class LsEditorField {
385
377
  "attribute": "selected",
386
378
  "defaultValue": "false"
387
379
  },
380
+ "multiSelected": {
381
+ "type": "boolean",
382
+ "mutable": false,
383
+ "complexType": {
384
+ "original": "boolean",
385
+ "resolved": "boolean",
386
+ "references": {}
387
+ },
388
+ "required": false,
389
+ "optional": false,
390
+ "docs": {
391
+ "tags": [],
392
+ "text": ""
393
+ },
394
+ "getter": false,
395
+ "setter": false,
396
+ "reflect": false,
397
+ "attribute": "multi-selected",
398
+ "defaultValue": "false"
399
+ },
388
400
  "readonly": {
389
401
  "type": "boolean",
390
402
  "mutable": false,