@jotforminc/dnd-builder 3.0.0 → 3.1.1

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 (356) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/lib/cjs/assets/search.svg.js +5 -2
  3. package/lib/cjs/assets/search.svg.js.map +1 -1
  4. package/lib/cjs/assets/svg/all_slides.svg.js +9 -29
  5. package/lib/cjs/assets/svg/all_slides.svg.js.map +1 -1
  6. package/lib/cjs/assets/svg/close.svg.js +4 -2
  7. package/lib/cjs/assets/svg/close.svg.js.map +1 -1
  8. package/lib/cjs/assets/svg/customize.svg.js +4 -2
  9. package/lib/cjs/assets/svg/customize.svg.js.map +1 -1
  10. package/lib/cjs/assets/svg/duplicate.svg.js +5 -2
  11. package/lib/cjs/assets/svg/duplicate.svg.js.map +1 -1
  12. package/lib/cjs/assets/svg/fit_screen.svg.js +7 -7
  13. package/lib/cjs/assets/svg/heart_rating.svg.js +5 -3
  14. package/lib/cjs/assets/svg/heart_rating.svg.js.map +1 -1
  15. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js +4 -2
  16. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js.map +1 -1
  17. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js +4 -2
  18. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js.map +1 -1
  19. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js +4 -2
  20. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js.map +1 -1
  21. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js +4 -2
  22. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js.map +1 -1
  23. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js +4 -2
  24. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js.map +1 -1
  25. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js +4 -2
  26. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js.map +1 -1
  27. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js +4 -2
  28. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js.map +1 -1
  29. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js +4 -2
  30. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js.map +1 -1
  31. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js +4 -2
  32. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js.map +1 -1
  33. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js +4 -2
  34. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js.map +1 -1
  35. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js +4 -2
  36. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js.map +1 -1
  37. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-cloud.svg.js +2 -2
  38. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-download.svg.js +4 -2
  39. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-download.svg.js.map +1 -1
  40. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js +4 -2
  41. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js.map +1 -1
  42. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js +4 -2
  43. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js.map +1 -1
  44. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js +4 -2
  45. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js.map +1 -1
  46. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-home.svg.js +4 -2
  47. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-home.svg.js.map +1 -1
  48. package/lib/cjs/assets/svg/minus.svg.js +6 -9
  49. package/lib/cjs/assets/svg/minus.svg.js.map +1 -1
  50. package/lib/cjs/assets/svg/page-actions/duplicate_line.svg.js +5 -2
  51. package/lib/cjs/assets/svg/page-actions/duplicate_line.svg.js.map +1 -1
  52. package/lib/cjs/assets/svg/page-actions/trash_line.svg.js +5 -2
  53. package/lib/cjs/assets/svg/page-actions/trash_line.svg.js.map +1 -1
  54. package/lib/cjs/assets/svg/page_settings.svg.js +4 -4
  55. package/lib/cjs/assets/svg/plus.svg.js +5 -2
  56. package/lib/cjs/assets/svg/plus.svg.js.map +1 -1
  57. package/lib/cjs/assets/svg/presentation/attachment.svg.js +4 -2
  58. package/lib/cjs/assets/svg/presentation/attachment.svg.js.map +1 -1
  59. package/lib/cjs/assets/svg/presentation/download.svg.js +5 -2
  60. package/lib/cjs/assets/svg/presentation/download.svg.js.map +1 -1
  61. package/lib/cjs/assets/svg/presentation/enter_fullscreen.svg.js +8 -12
  62. package/lib/cjs/assets/svg/presentation/enter_fullscreen.svg.js.map +1 -1
  63. package/lib/cjs/assets/svg/presentation/exit_fullscreen.svg.js +8 -12
  64. package/lib/cjs/assets/svg/presentation/exit_fullscreen.svg.js.map +1 -1
  65. package/lib/cjs/assets/svg/presentation/eye.svg.js +6 -5
  66. package/lib/cjs/assets/svg/presentation/eye.svg.js.map +1 -1
  67. package/lib/cjs/assets/svg/presentation/key.svg.js +5 -3
  68. package/lib/cjs/assets/svg/presentation/key.svg.js.map +1 -1
  69. package/lib/cjs/assets/svg/presentation/pause.svg.js +4 -2
  70. package/lib/cjs/assets/svg/presentation/pause.svg.js.map +1 -1
  71. package/lib/cjs/assets/svg/presentation/pen.svg.js +4 -2
  72. package/lib/cjs/assets/svg/presentation/pen.svg.js.map +1 -1
  73. package/lib/cjs/assets/svg/presentation/play.svg.js +5 -3
  74. package/lib/cjs/assets/svg/presentation/play.svg.js.map +1 -1
  75. package/lib/cjs/assets/svg/presentation/print.svg.js +5 -2
  76. package/lib/cjs/assets/svg/presentation/print.svg.js.map +1 -1
  77. package/lib/cjs/assets/svg/presentation/share.svg.js +5 -2
  78. package/lib/cjs/assets/svg/presentation/share.svg.js.map +1 -1
  79. package/lib/cjs/assets/svg/rotate.svg.js +5 -2
  80. package/lib/cjs/assets/svg/rotate.svg.js.map +1 -1
  81. package/lib/cjs/assets/svg/settings/align_center.svg.js +5 -2
  82. package/lib/cjs/assets/svg/settings/align_center.svg.js.map +1 -1
  83. package/lib/cjs/assets/svg/settings/align_left.svg.js +5 -2
  84. package/lib/cjs/assets/svg/settings/align_left.svg.js.map +1 -1
  85. package/lib/cjs/assets/svg/settings/align_right.svg.js +5 -2
  86. package/lib/cjs/assets/svg/settings/align_right.svg.js.map +1 -1
  87. package/lib/cjs/assets/svg/settings/drag.svg.js +7 -26
  88. package/lib/cjs/assets/svg/settings/drag.svg.js.map +1 -1
  89. package/lib/cjs/assets/svg/settings/ellipse.svg.js +6 -5
  90. package/lib/cjs/assets/svg/settings/ellipse.svg.js.map +1 -1
  91. package/lib/cjs/assets/svg/settings/font_bold.svg.js +5 -2
  92. package/lib/cjs/assets/svg/settings/font_bold.svg.js.map +1 -1
  93. package/lib/cjs/assets/svg/settings/font_italic.svg.js +5 -2
  94. package/lib/cjs/assets/svg/settings/font_italic.svg.js.map +1 -1
  95. package/lib/cjs/assets/svg/settings/font_underline.svg.js +5 -2
  96. package/lib/cjs/assets/svg/settings/font_underline.svg.js.map +1 -1
  97. package/lib/cjs/assets/svg/settings/line.svg.js +8 -10
  98. package/lib/cjs/assets/svg/settings/line.svg.js.map +1 -1
  99. package/lib/cjs/assets/svg/settings/lock.svg.js +5 -2
  100. package/lib/cjs/assets/svg/settings/lock.svg.js.map +1 -1
  101. package/lib/cjs/assets/svg/settings/rectangle.svg.js +6 -4
  102. package/lib/cjs/assets/svg/settings/rectangle.svg.js.map +1 -1
  103. package/lib/cjs/assets/svg/settings/star.svg.js +6 -4
  104. package/lib/cjs/assets/svg/settings/star.svg.js.map +1 -1
  105. package/lib/cjs/assets/svg/settings/triangle.svg.js +6 -4
  106. package/lib/cjs/assets/svg/settings/triangle.svg.js.map +1 -1
  107. package/lib/cjs/assets/svg/settings/unlock.svg.js +5 -2
  108. package/lib/cjs/assets/svg/settings/unlock.svg.js.map +1 -1
  109. package/lib/cjs/assets/svg/settings.svg.js +3 -2
  110. package/lib/cjs/assets/svg/settings.svg.js.map +1 -1
  111. package/lib/cjs/assets/svg/settings_toggle.svg.js +7 -5
  112. package/lib/cjs/assets/svg/settings_toggle.svg.js.map +1 -1
  113. package/lib/cjs/assets/svg/slides.svg.js +8 -14
  114. package/lib/cjs/assets/svg/slides.svg.js.map +1 -1
  115. package/lib/cjs/assets/svg/star_rating.svg.js +5 -2
  116. package/lib/cjs/assets/svg/star_rating.svg.js.map +1 -1
  117. package/lib/cjs/assets/svg/toolbox/email.svg.js +5 -2
  118. package/lib/cjs/assets/svg/toolbox/email.svg.js.map +1 -1
  119. package/lib/cjs/assets/svg/toolbox/header.svg.js +5 -2
  120. package/lib/cjs/assets/svg/toolbox/header.svg.js.map +1 -1
  121. package/lib/cjs/assets/svg/toolbox/icon.svg.js +6 -11
  122. package/lib/cjs/assets/svg/toolbox/icon.svg.js.map +1 -1
  123. package/lib/cjs/assets/svg/toolbox/image.svg.js +7 -7
  124. package/lib/cjs/assets/svg/toolbox/label.svg.js +4 -2
  125. package/lib/cjs/assets/svg/toolbox/label.svg.js.map +1 -1
  126. package/lib/cjs/assets/svg/toolbox/multiple_choice.svg.js +6 -5
  127. package/lib/cjs/assets/svg/toolbox/multiple_choice.svg.js.map +1 -1
  128. package/lib/cjs/assets/svg/toolbox/shapes.svg.js +7 -10
  129. package/lib/cjs/assets/svg/toolbox/shapes.svg.js.map +1 -1
  130. package/lib/cjs/assets/svg/toolbox/single_choice.svg.js +5 -2
  131. package/lib/cjs/assets/svg/toolbox/single_choice.svg.js.map +1 -1
  132. package/lib/cjs/assets/svg/toolbox/star.svg.js +5 -2
  133. package/lib/cjs/assets/svg/toolbox/star.svg.js.map +1 -1
  134. package/lib/cjs/assets/svg/toolbox/table.svg.js +5 -2
  135. package/lib/cjs/assets/svg/toolbox/table.svg.js.map +1 -1
  136. package/lib/cjs/assets/svg/toolbox/text.svg.js +5 -2
  137. package/lib/cjs/assets/svg/toolbox/text.svg.js.map +1 -1
  138. package/lib/cjs/assets/svg/toolbox/text_element.svg.js +5 -2
  139. package/lib/cjs/assets/svg/toolbox/text_element.svg.js.map +1 -1
  140. package/lib/cjs/assets/svg/trash.svg.js +5 -2
  141. package/lib/cjs/assets/svg/trash.svg.js.map +1 -1
  142. package/lib/cjs/components/Builder/DraggableLayer.js +44 -0
  143. package/lib/cjs/components/Builder/DraggableLayer.js.map +1 -0
  144. package/lib/cjs/components/Builder/Element.js +1 -0
  145. package/lib/cjs/components/Builder/Element.js.map +1 -1
  146. package/lib/cjs/components/Builder/Page.js +36 -30
  147. package/lib/cjs/components/Builder/Page.js.map +1 -1
  148. package/lib/cjs/components/Builder/Scene.js +13 -29
  149. package/lib/cjs/components/Builder/Scene.js.map +1 -1
  150. package/lib/cjs/components/Builder/SearchInput.js +3 -1
  151. package/lib/cjs/components/Builder/SearchInput.js.map +1 -1
  152. package/lib/cjs/components/DraggableItem/DraggableItem.js +33 -80
  153. package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
  154. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +95 -219
  155. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  156. package/lib/cjs/components/PageItemResizer.js +21 -8
  157. package/lib/cjs/components/PageItemResizer.js.map +1 -1
  158. package/lib/cjs/components/Panels/SlidesPanel/SortablePageList.js +1 -3
  159. package/lib/cjs/components/Panels/SlidesPanel/SortablePageList.js.map +1 -1
  160. package/lib/cjs/components/ReportItemsWrapper.js +18 -17
  161. package/lib/cjs/components/ReportItemsWrapper.js.map +1 -1
  162. package/lib/cjs/components/Settings/PageLayer/LayerItem.js +1 -1
  163. package/lib/cjs/components/Settings/PageLayer/LayerItem.js.map +1 -1
  164. package/lib/cjs/components/Settings/SizeSettings.js +1 -1
  165. package/lib/cjs/components/Settings/SizeSettings.js.map +1 -1
  166. package/lib/cjs/constants/texts.js +1 -0
  167. package/lib/cjs/constants/texts.js.map +1 -1
  168. package/lib/cjs/contexts/BuilderContext.js +6 -0
  169. package/lib/cjs/contexts/BuilderContext.js.map +1 -1
  170. package/lib/cjs/styles/_jfDarkTheme.scss +0 -5
  171. package/lib/cjs/styles/_jfPrint.scss +0 -4
  172. package/lib/cjs/styles/_jfReportsPages.scss +4 -2
  173. package/lib/cjs/styles/_jfReportsSVG.scss +6 -6
  174. package/lib/cjs/styles/_jfSearchInput.scss +0 -2
  175. package/lib/cjs/utils/functions.js +33 -45
  176. package/lib/cjs/utils/functions.js.map +1 -1
  177. package/lib/cjs/utils/hooks.js +37 -0
  178. package/lib/cjs/utils/hooks.js.map +1 -1
  179. package/lib/esm/assets/search.svg.js +5 -2
  180. package/lib/esm/assets/search.svg.js.map +1 -1
  181. package/lib/esm/assets/svg/all_slides.svg.js +9 -29
  182. package/lib/esm/assets/svg/all_slides.svg.js.map +1 -1
  183. package/lib/esm/assets/svg/close.svg.js +4 -2
  184. package/lib/esm/assets/svg/close.svg.js.map +1 -1
  185. package/lib/esm/assets/svg/customize.svg.js +4 -2
  186. package/lib/esm/assets/svg/customize.svg.js.map +1 -1
  187. package/lib/esm/assets/svg/duplicate.svg.js +5 -2
  188. package/lib/esm/assets/svg/duplicate.svg.js.map +1 -1
  189. package/lib/esm/assets/svg/fit_screen.svg.js +7 -7
  190. package/lib/esm/assets/svg/heart_rating.svg.js +5 -3
  191. package/lib/esm/assets/svg/heart_rating.svg.js.map +1 -1
  192. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js +4 -2
  193. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js.map +1 -1
  194. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js +4 -2
  195. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js.map +1 -1
  196. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js +4 -2
  197. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js.map +1 -1
  198. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js +4 -2
  199. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js.map +1 -1
  200. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js +4 -2
  201. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js.map +1 -1
  202. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js +4 -2
  203. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js.map +1 -1
  204. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js +4 -2
  205. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js.map +1 -1
  206. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js +4 -2
  207. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js.map +1 -1
  208. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js +4 -2
  209. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js.map +1 -1
  210. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js +4 -2
  211. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js.map +1 -1
  212. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js +4 -2
  213. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js.map +1 -1
  214. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-cloud.svg.js +2 -2
  215. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-download.svg.js +4 -2
  216. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-download.svg.js.map +1 -1
  217. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js +4 -2
  218. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js.map +1 -1
  219. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js +4 -2
  220. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js.map +1 -1
  221. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js +4 -2
  222. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js.map +1 -1
  223. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-home.svg.js +4 -2
  224. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-home.svg.js.map +1 -1
  225. package/lib/esm/assets/svg/minus.svg.js +6 -9
  226. package/lib/esm/assets/svg/minus.svg.js.map +1 -1
  227. package/lib/esm/assets/svg/page-actions/duplicate_line.svg.js +5 -2
  228. package/lib/esm/assets/svg/page-actions/duplicate_line.svg.js.map +1 -1
  229. package/lib/esm/assets/svg/page-actions/trash_line.svg.js +5 -2
  230. package/lib/esm/assets/svg/page-actions/trash_line.svg.js.map +1 -1
  231. package/lib/esm/assets/svg/page_settings.svg.js +4 -4
  232. package/lib/esm/assets/svg/plus.svg.js +5 -2
  233. package/lib/esm/assets/svg/plus.svg.js.map +1 -1
  234. package/lib/esm/assets/svg/presentation/attachment.svg.js +4 -2
  235. package/lib/esm/assets/svg/presentation/attachment.svg.js.map +1 -1
  236. package/lib/esm/assets/svg/presentation/download.svg.js +5 -2
  237. package/lib/esm/assets/svg/presentation/download.svg.js.map +1 -1
  238. package/lib/esm/assets/svg/presentation/enter_fullscreen.svg.js +8 -12
  239. package/lib/esm/assets/svg/presentation/enter_fullscreen.svg.js.map +1 -1
  240. package/lib/esm/assets/svg/presentation/exit_fullscreen.svg.js +8 -12
  241. package/lib/esm/assets/svg/presentation/exit_fullscreen.svg.js.map +1 -1
  242. package/lib/esm/assets/svg/presentation/eye.svg.js +6 -5
  243. package/lib/esm/assets/svg/presentation/eye.svg.js.map +1 -1
  244. package/lib/esm/assets/svg/presentation/key.svg.js +5 -3
  245. package/lib/esm/assets/svg/presentation/key.svg.js.map +1 -1
  246. package/lib/esm/assets/svg/presentation/pause.svg.js +4 -2
  247. package/lib/esm/assets/svg/presentation/pause.svg.js.map +1 -1
  248. package/lib/esm/assets/svg/presentation/pen.svg.js +4 -2
  249. package/lib/esm/assets/svg/presentation/pen.svg.js.map +1 -1
  250. package/lib/esm/assets/svg/presentation/play.svg.js +5 -3
  251. package/lib/esm/assets/svg/presentation/play.svg.js.map +1 -1
  252. package/lib/esm/assets/svg/presentation/print.svg.js +5 -2
  253. package/lib/esm/assets/svg/presentation/print.svg.js.map +1 -1
  254. package/lib/esm/assets/svg/presentation/share.svg.js +5 -2
  255. package/lib/esm/assets/svg/presentation/share.svg.js.map +1 -1
  256. package/lib/esm/assets/svg/rotate.svg.js +5 -2
  257. package/lib/esm/assets/svg/rotate.svg.js.map +1 -1
  258. package/lib/esm/assets/svg/settings/align_center.svg.js +5 -2
  259. package/lib/esm/assets/svg/settings/align_center.svg.js.map +1 -1
  260. package/lib/esm/assets/svg/settings/align_left.svg.js +5 -2
  261. package/lib/esm/assets/svg/settings/align_left.svg.js.map +1 -1
  262. package/lib/esm/assets/svg/settings/align_right.svg.js +5 -2
  263. package/lib/esm/assets/svg/settings/align_right.svg.js.map +1 -1
  264. package/lib/esm/assets/svg/settings/drag.svg.js +7 -26
  265. package/lib/esm/assets/svg/settings/drag.svg.js.map +1 -1
  266. package/lib/esm/assets/svg/settings/ellipse.svg.js +6 -5
  267. package/lib/esm/assets/svg/settings/ellipse.svg.js.map +1 -1
  268. package/lib/esm/assets/svg/settings/font_bold.svg.js +5 -2
  269. package/lib/esm/assets/svg/settings/font_bold.svg.js.map +1 -1
  270. package/lib/esm/assets/svg/settings/font_italic.svg.js +5 -2
  271. package/lib/esm/assets/svg/settings/font_italic.svg.js.map +1 -1
  272. package/lib/esm/assets/svg/settings/font_underline.svg.js +5 -2
  273. package/lib/esm/assets/svg/settings/font_underline.svg.js.map +1 -1
  274. package/lib/esm/assets/svg/settings/line.svg.js +8 -10
  275. package/lib/esm/assets/svg/settings/line.svg.js.map +1 -1
  276. package/lib/esm/assets/svg/settings/lock.svg.js +5 -2
  277. package/lib/esm/assets/svg/settings/lock.svg.js.map +1 -1
  278. package/lib/esm/assets/svg/settings/rectangle.svg.js +6 -4
  279. package/lib/esm/assets/svg/settings/rectangle.svg.js.map +1 -1
  280. package/lib/esm/assets/svg/settings/star.svg.js +6 -4
  281. package/lib/esm/assets/svg/settings/star.svg.js.map +1 -1
  282. package/lib/esm/assets/svg/settings/triangle.svg.js +6 -4
  283. package/lib/esm/assets/svg/settings/triangle.svg.js.map +1 -1
  284. package/lib/esm/assets/svg/settings/unlock.svg.js +5 -2
  285. package/lib/esm/assets/svg/settings/unlock.svg.js.map +1 -1
  286. package/lib/esm/assets/svg/settings.svg.js +3 -2
  287. package/lib/esm/assets/svg/settings.svg.js.map +1 -1
  288. package/lib/esm/assets/svg/settings_toggle.svg.js +7 -5
  289. package/lib/esm/assets/svg/settings_toggle.svg.js.map +1 -1
  290. package/lib/esm/assets/svg/slides.svg.js +8 -14
  291. package/lib/esm/assets/svg/slides.svg.js.map +1 -1
  292. package/lib/esm/assets/svg/star_rating.svg.js +5 -2
  293. package/lib/esm/assets/svg/star_rating.svg.js.map +1 -1
  294. package/lib/esm/assets/svg/toolbox/email.svg.js +5 -2
  295. package/lib/esm/assets/svg/toolbox/email.svg.js.map +1 -1
  296. package/lib/esm/assets/svg/toolbox/header.svg.js +5 -2
  297. package/lib/esm/assets/svg/toolbox/header.svg.js.map +1 -1
  298. package/lib/esm/assets/svg/toolbox/icon.svg.js +6 -11
  299. package/lib/esm/assets/svg/toolbox/icon.svg.js.map +1 -1
  300. package/lib/esm/assets/svg/toolbox/image.svg.js +7 -7
  301. package/lib/esm/assets/svg/toolbox/label.svg.js +4 -2
  302. package/lib/esm/assets/svg/toolbox/label.svg.js.map +1 -1
  303. package/lib/esm/assets/svg/toolbox/multiple_choice.svg.js +6 -5
  304. package/lib/esm/assets/svg/toolbox/multiple_choice.svg.js.map +1 -1
  305. package/lib/esm/assets/svg/toolbox/shapes.svg.js +7 -10
  306. package/lib/esm/assets/svg/toolbox/shapes.svg.js.map +1 -1
  307. package/lib/esm/assets/svg/toolbox/single_choice.svg.js +5 -2
  308. package/lib/esm/assets/svg/toolbox/single_choice.svg.js.map +1 -1
  309. package/lib/esm/assets/svg/toolbox/star.svg.js +5 -2
  310. package/lib/esm/assets/svg/toolbox/star.svg.js.map +1 -1
  311. package/lib/esm/assets/svg/toolbox/table.svg.js +5 -2
  312. package/lib/esm/assets/svg/toolbox/table.svg.js.map +1 -1
  313. package/lib/esm/assets/svg/toolbox/text.svg.js +5 -2
  314. package/lib/esm/assets/svg/toolbox/text.svg.js.map +1 -1
  315. package/lib/esm/assets/svg/toolbox/text_element.svg.js +5 -2
  316. package/lib/esm/assets/svg/toolbox/text_element.svg.js.map +1 -1
  317. package/lib/esm/assets/svg/trash.svg.js +5 -2
  318. package/lib/esm/assets/svg/trash.svg.js.map +1 -1
  319. package/lib/esm/components/Builder/DraggableLayer.js +38 -0
  320. package/lib/esm/components/Builder/DraggableLayer.js.map +1 -0
  321. package/lib/esm/components/Builder/Element.js +1 -0
  322. package/lib/esm/components/Builder/Element.js.map +1 -1
  323. package/lib/esm/components/Builder/Page.js +38 -32
  324. package/lib/esm/components/Builder/Page.js.map +1 -1
  325. package/lib/esm/components/Builder/Scene.js +16 -32
  326. package/lib/esm/components/Builder/Scene.js.map +1 -1
  327. package/lib/esm/components/Builder/SearchInput.js +3 -1
  328. package/lib/esm/components/Builder/SearchInput.js.map +1 -1
  329. package/lib/esm/components/DraggableItem/DraggableItem.js +34 -81
  330. package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
  331. package/lib/esm/components/DraggableItem/DraggableItemLayer.js +98 -221
  332. package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  333. package/lib/esm/components/PageItemResizer.js +21 -8
  334. package/lib/esm/components/PageItemResizer.js.map +1 -1
  335. package/lib/esm/components/Panels/SlidesPanel/SortablePageList.js +1 -3
  336. package/lib/esm/components/Panels/SlidesPanel/SortablePageList.js.map +1 -1
  337. package/lib/esm/components/ReportItemsWrapper.js +15 -18
  338. package/lib/esm/components/ReportItemsWrapper.js.map +1 -1
  339. package/lib/esm/components/Settings/PageLayer/LayerItem.js +1 -1
  340. package/lib/esm/components/Settings/PageLayer/LayerItem.js.map +1 -1
  341. package/lib/esm/components/Settings/SizeSettings.js +1 -1
  342. package/lib/esm/components/Settings/SizeSettings.js.map +1 -1
  343. package/lib/esm/constants/texts.js +1 -0
  344. package/lib/esm/constants/texts.js.map +1 -1
  345. package/lib/esm/contexts/BuilderContext.js +6 -0
  346. package/lib/esm/contexts/BuilderContext.js.map +1 -1
  347. package/lib/esm/styles/_jfDarkTheme.scss +0 -5
  348. package/lib/esm/styles/_jfPrint.scss +0 -4
  349. package/lib/esm/styles/_jfReportsPages.scss +4 -2
  350. package/lib/esm/styles/_jfReportsSVG.scss +6 -6
  351. package/lib/esm/styles/_jfSearchInput.scss +0 -2
  352. package/lib/esm/utils/functions.js +31 -44
  353. package/lib/esm/utils/functions.js.map +1 -1
  354. package/lib/esm/utils/hooks.js +37 -1
  355. package/lib/esm/utils/hooks.js.map +1 -1
  356. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"trash.svg.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"trash.svg.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,38 @@
1
+ import PropTypes from 'prop-types';
2
+ import { useDragLayer } from 'react-dnd';
3
+ import DraggableItemLayer from '../DraggableItem/DraggableItemLayer.js';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var DraggableLayer = function DraggableLayer(_ref) {
7
+ var _ref$guides = _ref.guides,
8
+ guides = _ref$guides === void 0 ? {} : _ref$guides,
9
+ _ref$pageRefs = _ref.pageRefs,
10
+ pageRefs = _ref$pageRefs === void 0 ? {} : _ref$pageRefs;
11
+ var collectedProps = useDragLayer(function (monitor) {
12
+ return {
13
+ currentOffset: monitor.getSourceClientOffset(),
14
+ initialOffset: monitor.getInitialSourceClientOffset(),
15
+ isDragging: monitor.isDragging(),
16
+ item: monitor.getItem(),
17
+ itemType: monitor.getItemType()
18
+ };
19
+ });
20
+
21
+ if (!collectedProps.currentOffset || !collectedProps.isDragging) {
22
+ return null;
23
+ }
24
+
25
+ return /*#__PURE__*/jsx(DraggableItemLayer, {
26
+ collectedProps: collectedProps,
27
+ guides: guides,
28
+ pageRefs: pageRefs
29
+ });
30
+ };
31
+
32
+ DraggableLayer.propTypes = {
33
+ guides: PropTypes.shape({}),
34
+ pageRefs: PropTypes.shape({})
35
+ };
36
+
37
+ export default DraggableLayer;
38
+ //# sourceMappingURL=DraggableLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraggableLayer.js","sources":["../../../../src/components/Builder/DraggableLayer.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useDragLayer } from 'react-dnd';\nimport DraggableItemLayer from '../DraggableItem/DraggableItemLayer';\n\nconst DraggableLayer = ({\n guides = {},\n pageRefs = {},\n}) => {\n const collectedProps = useDragLayer(monitor => ({\n currentOffset: monitor.getSourceClientOffset(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n isDragging: monitor.isDragging(),\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n }));\n\n if (!collectedProps.currentOffset || !collectedProps.isDragging) {\n return null;\n }\n\n return (\n <DraggableItemLayer\n collectedProps={collectedProps}\n guides={guides}\n pageRefs={pageRefs}\n />\n );\n};\n\nDraggableLayer.propTypes = {\n guides: PropTypes.shape({}),\n pageRefs: PropTypes.shape({}),\n};\n\nexport default DraggableLayer;\n"],"names":["DraggableLayer","guides","pageRefs","collectedProps","useDragLayer","monitor","currentOffset","getSourceClientOffset","initialOffset","getInitialSourceClientOffset","isDragging","item","getItem","itemType","getItemType","_jsx","propTypes","PropTypes","shape"],"mappings":";;;;;IAIMA,cAAc,GAAG,SAAjBA,cAAiB,OAGjB;AAAA,yBAFJC,MAEI;AAAA,MAFJA,MAEI,4BAFK,EAEL;AAAA,2BADJC,QACI;AAAA,MADJA,QACI,8BADO,EACP;AACJ,MAAMC,cAAc,GAAGC,YAAY,CAAC,UAAAC,OAAO;AAAA,WAAK;AAC9CC,MAAAA,aAAa,EAAED,OAAO,CAACE,qBAAR,EAD+B;AAE9CC,MAAAA,aAAa,EAAEH,OAAO,CAACI,4BAAR,EAF+B;AAG9CC,MAAAA,UAAU,EAAEL,OAAO,CAACK,UAAR,EAHkC;AAI9CC,MAAAA,IAAI,EAAEN,OAAO,CAACO,OAAR,EAJwC;AAK9CC,MAAAA,QAAQ,EAAER,OAAO,CAACS,WAAR;AALoC,KAAL;AAAA,GAAR,CAAnC;;AAQA,MAAI,CAACX,cAAc,CAACG,aAAhB,IAAiC,CAACH,cAAc,CAACO,UAArD,EAAiE;AAC/D,WAAO,IAAP;AACD;;AAED,sBACEK,IAAC,kBAAD;AACE,IAAA,cAAc,EAAEZ,cADlB;AAEE,IAAA,MAAM,EAAEF,MAFV;AAGE,IAAA,QAAQ,EAAEC;AAHZ,IADF;AAOD;;AAEDF,cAAc,CAACgB,SAAf,GAA2B;AACzBf,EAAAA,MAAM,EAAEgB,SAAS,CAACC,KAAV,CAAgB,EAAhB,CADiB;AAEzBhB,EAAAA,QAAQ,EAAEe,SAAS,CAACC,KAAV,CAAgB,EAAhB;AAFe,CAA3B;;;;"}
@@ -73,6 +73,7 @@ var Element = function Element(_ref) {
73
73
  };
74
74
  },
75
75
  item: function item() {
76
+ setActiveElement(null);
76
77
  return _objectSpread({
77
78
  itemType: itemType,
78
79
  type: DROPPABLE_ITEM_TYPE
@@ -1 +1 @@
1
- {"version":3,"file":"Element.js","sources":["../../../../src/components/Builder/Element.js"],"sourcesContent":["import { useEffect, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { DROPPABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getMostVisiblePage, getExactIconType, getAvailableCoordinate,\n} from '../../utils/functions';\nimport generateId from '../../utils/generateId';\nimport * as icons from '../../utils/icons';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst Element = ({\n icon = null,\n iconType = '',\n itemType = '',\n title = '',\n ...additionalData\n}) => {\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n\n item: () => ({\n itemType,\n type: DROPPABLE_ITEM_TYPE,\n ...additionalData,\n }),\n\n type: DROPPABLE_ITEM_TYPE,\n }), [itemType, additionalData]);\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n const onElementClick = () => {\n const itemID = generateId();\n const page = getMostVisiblePage();\n let left = 0;\n let top = 0;\n if (page) { // for test\n [left, top] = getAvailableCoordinate(page, zoom);\n }\n onItemAdd({\n ...acceptedItems[itemType].details,\n ...additionalData,\n id: itemID,\n left,\n pageID: page.id,\n top,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n };\n\n const onElementOtherActions = () => {};\n\n const exactIconType = getExactIconType(iconType);\n const Icon = icons[exactIconType] ? icons[exactIconType] : icons.label;\n return (\n <>\n <div\n ref={drag}\n className=\"toolItem d-flex a-center js-toolItem\"\n onClick={onElementClick}\n onKeyDown={onElementOtherActions}\n style={{ cursor: isDragging ? 'grabbing' : 'pointer', opacity: isDragging ? 0.5 : 1 }}\n title={title}\n >\n <span className=\"toolItem-icon d-flex j-center a-center\">\n {icon ? icon : (\n <Icon className={`jfReportSVG icon-question icon-${iconType}`} />\n )}\n </span>\n <span className=\"js-toolItemName toolItem-name d-flex a-center\">\n { title }\n </span>\n </div>\n </>\n );\n};\n\nElement.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n iconType: PropTypes.string,\n itemType: PropTypes.string,\n title: PropTypes.string,\n};\n\nexport default memo(Element);\n"],"names":["Element","icon","iconType","itemType","title","additionalData","acceptedItems","usePropStore","state","onAnEventTrigger","onItemAdd","setActiveElement","useBuilderStore","setIsRightPanelOpen","zoom","useDrag","collect","monitor","isDragging","item","type","DROPPABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onElementClick","itemID","generateId","page","getMostVisiblePage","left","top","getAvailableCoordinate","details","id","pageID","onElementOtherActions","exactIconType","getExactIconType","Icon","icons","_jsx","_jsxs","cursor","opacity","propTypes","PropTypes","oneOfType","element","func","string","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Element.js","sources":["../../../../src/components/Builder/Element.js"],"sourcesContent":["import { useEffect, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { DROPPABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getMostVisiblePage, getExactIconType, getAvailableCoordinate,\n} from '../../utils/functions';\nimport generateId from '../../utils/generateId';\nimport * as icons from '../../utils/icons';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst Element = ({\n icon = null,\n iconType = '',\n itemType = '',\n title = '',\n ...additionalData\n}) => {\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n\n item: () => {\n setActiveElement(null);\n return {\n itemType,\n type: DROPPABLE_ITEM_TYPE,\n ...additionalData,\n };\n },\n\n type: DROPPABLE_ITEM_TYPE,\n }), [itemType, additionalData]);\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n const onElementClick = () => {\n const itemID = generateId();\n const page = getMostVisiblePage();\n let left = 0;\n let top = 0;\n if (page) { // for test\n [left, top] = getAvailableCoordinate(page, zoom);\n }\n onItemAdd({\n ...acceptedItems[itemType].details,\n ...additionalData,\n id: itemID,\n left,\n pageID: page.id,\n top,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n };\n\n const onElementOtherActions = () => {};\n\n const exactIconType = getExactIconType(iconType);\n const Icon = icons[exactIconType] ? icons[exactIconType] : icons.label;\n return (\n <>\n <div\n ref={drag}\n className=\"toolItem d-flex a-center js-toolItem\"\n onClick={onElementClick}\n onKeyDown={onElementOtherActions}\n style={{ cursor: isDragging ? 'grabbing' : 'pointer', opacity: isDragging ? 0.5 : 1 }}\n title={title}\n >\n <span className=\"toolItem-icon d-flex j-center a-center\">\n {icon ? icon : (\n <Icon className={`jfReportSVG icon-question icon-${iconType}`} />\n )}\n </span>\n <span className=\"js-toolItemName toolItem-name d-flex a-center\">\n { title }\n </span>\n </div>\n </>\n );\n};\n\nElement.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n iconType: PropTypes.string,\n itemType: PropTypes.string,\n title: PropTypes.string,\n};\n\nexport default memo(Element);\n"],"names":["Element","icon","iconType","itemType","title","additionalData","acceptedItems","usePropStore","state","onAnEventTrigger","onItemAdd","setActiveElement","useBuilderStore","setIsRightPanelOpen","zoom","useDrag","collect","monitor","isDragging","item","type","DROPPABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onElementClick","itemID","generateId","page","getMostVisiblePage","left","top","getAvailableCoordinate","details","id","pageID","onElementOtherActions","exactIconType","getExactIconType","Icon","icons","_jsx","_jsxs","cursor","opacity","propTypes","PropTypes","oneOfType","element","func","string","memo"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { memo, useState, useRef } from 'react';
1
+ import { memo, useState, useRef, useCallback } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useDrop } from 'react-dnd';
4
4
  import { ACCEPTED_TYPES, DROPPABLE_ITEM_TYPE, DRAGGABLE_ITEM_TYPE } from '../../constants/itemTypes.js';
@@ -6,7 +6,7 @@ import AlignmentGuides from '../AlignmentGuides.js';
6
6
  import ReportItemsWrapper from '../ReportItemsWrapper.js';
7
7
  import { useBuilderStore } from '../../contexts/BuilderContext.js';
8
8
  import { usePropStore } from '../../contexts/PropContext.js';
9
- import { getCorrectDroppedOffsetValue, getCorrectDroppedOffsetValueBySnap, findItemById, calculateGuidePositions, proximityListener } from '../../utils/functions.js';
9
+ import { getMatchesForItem, getCorrectDroppedOffsetValue, getCorrectDroppedOffsetValueBySnap, findItemById, getCoordinatesFromMatches } from '../../utils/functions.js';
10
10
  import { pageContainer } from '../../constants/classNames.js';
11
11
  import generateId from '../../utils/generateId.js';
12
12
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
@@ -34,7 +34,6 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
34
34
  function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
35
35
 
36
36
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
- var emptyObject = {};
38
37
 
39
38
  var Page = function Page(_ref) {
40
39
  var _ref$guides = _ref.guides,
@@ -43,8 +42,6 @@ var Page = function Page(_ref) {
43
42
  items = _ref$items === void 0 ? [] : _ref$items,
44
43
  _ref$page = _ref.page,
45
44
  page = _ref$page === void 0 ? {} : _ref$page,
46
- _ref$pageRef = _ref.pageRef,
47
- pageRef = _ref$pageRef === void 0 ? {} : _ref$pageRef,
48
45
  _ref$style = _ref.style,
49
46
  style = _ref$style === void 0 ? {} : _ref$style;
50
47
  var activeElement = useBuilderStore(function (state) {
@@ -59,6 +56,9 @@ var Page = function Page(_ref) {
59
56
  var zoom = useBuilderStore(function (state) {
60
57
  return state.zoom;
61
58
  });
59
+ var isResize = useBuilderStore(function (state) {
60
+ return state.isResize;
61
+ });
62
62
  var onItemAdd = usePropStore(function (state) {
63
63
  return state.onItemAdd;
64
64
  });
@@ -89,12 +89,13 @@ var Page = function Page(_ref) {
89
89
  matches = _useState2[0],
90
90
  setMatches = _useState2[1];
91
91
 
92
- var _useState3 = useState(false),
93
- _useState4 = _slicedToArray(_useState3, 2),
94
- isResize = _useState4[0],
95
- setIsResize = _useState4[1];
96
-
97
92
  var requestRef = useRef();
93
+ var dropRef = useRef(null); // for getting the bounding client rect
94
+
95
+ var handleMatches = useCallback(function (item) {
96
+ var newMatches = getMatchesForItem(item, guides, zoom);
97
+ setMatches(newMatches);
98
+ }, [guides, zoom]);
98
99
 
99
100
  var drawAlignmentGuides = function drawAlignmentGuides(item, monitor) {
100
101
  return function () {
@@ -104,17 +105,14 @@ var Page = function Page(_ref) {
104
105
  return;
105
106
  }
106
107
 
107
- var coords = getCorrectDroppedOffsetValue(monitor, pageRef.current.getBoundingClientRect(), zoom);
108
+ var coords = getCorrectDroppedOffsetValue(monitor.getSourceClientOffset(), monitor.getInitialSourceClientOffset(), dropRef.current.getBoundingClientRect(), zoom);
108
109
 
109
110
  var activeItem = _objectSpread(_objectSpread({}, item), coords);
110
111
 
111
- var _guides = _objectSpread(_objectSpread({}, guides[item.pageID]), {}, _defineProperty({}, item.id, _objectSpread(_objectSpread({}, guides[item.pageID][item.id]), {}, {
112
- x: calculateGuidePositions(activeItem, 'x', zoom),
113
- y: calculateGuidePositions(activeItem, 'y', zoom)
114
- })));
112
+ if (activeItem.id && activeItem.pageID) {
113
+ handleMatches(activeItem);
114
+ }
115
115
 
116
- var match = proximityListener(item.id, _guides);
117
- setMatches(match);
118
116
  requestRef.current = undefined;
119
117
  } catch (error) {
120
118
  setMatches({});
@@ -138,10 +136,9 @@ var Page = function Page(_ref) {
138
136
  };
139
137
  },
140
138
  drop: function drop(item, monitor) {
141
- var _pageRef$current;
139
+ var _dropRef$current;
142
140
 
143
- var pageClient = (_pageRef$current = pageRef.current) === null || _pageRef$current === void 0 ? void 0 : _pageRef$current.getBoundingClientRect();
144
- var coords = getCorrectDroppedOffsetValue(monitor, pageClient, zoom);
141
+ var coords = getCorrectDroppedOffsetValue(monitor.getSourceClientOffset(), monitor.getInitialSourceClientOffset(), (_dropRef$current = dropRef.current) === null || _dropRef$current === void 0 ? void 0 : _dropRef$current.getBoundingClientRect(), zoom);
145
142
  var type = monitor.getItemType();
146
143
 
147
144
  var id = item.id,
@@ -162,7 +159,9 @@ var Page = function Page(_ref) {
162
159
  setIsRightPanelOpen(true);
163
160
  newCoords[itemID] = coords;
164
161
  } else if (type === DRAGGABLE_ITEM_TYPE) {
165
- var dragCoords = getCorrectDroppedOffsetValueBySnap(coords, guides, id, pages, zoom);
162
+ var newItem = _objectSpread(_objectSpread({}, item), coords);
163
+
164
+ var dragCoords = getCorrectDroppedOffsetValueBySnap(newItem, guides, zoom);
166
165
 
167
166
  if (isMultipleItemSelected) {
168
167
  var leftDifference = additionalData.left - dragCoords.left;
@@ -203,12 +202,26 @@ var Page = function Page(_ref) {
203
202
  isOver = _useDrop2[0].isOver,
204
203
  drop = _useDrop2[1];
205
204
 
205
+ var getIntersectionsFromMatches = useCallback(function (item) {
206
+ var _getCoordinatesFromMa = getCoordinatesFromMatches(item, matches),
207
+ newActiveBoxLeft = _getCoordinatesFromMa.left,
208
+ newActiveBoxTop = _getCoordinatesFromMa.top;
209
+
210
+ return {
211
+ newActiveBoxLeft: newActiveBoxLeft,
212
+ newActiveBoxTop: newActiveBoxTop
213
+ };
214
+ }, [matches]);
215
+ var combinedRef = useCallback(function (node) {
216
+ dropRef.current = node;
217
+ drop(node);
218
+ }, [drop]);
206
219
  var reportBackgroundColor = settings.reportBackgroundColor;
207
220
  var backgroundColor = page.backgroundColor;
208
221
  var bgColor = backgroundColor ? backgroundColor : reportBackgroundColor || '#fff';
209
222
  return /*#__PURE__*/jsx(Fragment, {
210
223
  children: /*#__PURE__*/jsx("div", {
211
- ref: drop,
224
+ ref: combinedRef,
212
225
  className: pageContainer,
213
226
  style: _objectSpread({
214
227
  backgroundColor: bgColor
@@ -216,13 +229,9 @@ var Page = function Page(_ref) {
216
229
  children: /*#__PURE__*/jsxs("div", {
217
230
  className: "jfReport-hider o-hidden f-all p-relative",
218
231
  children: [/*#__PURE__*/jsx(ReportItemsWrapper, {
219
- guides: guides[page.id],
220
- isResize: isResize // if we send matches all the time, DraggableItems are also rendered on dragging
221
- ,
222
- items: items,
223
- matches: isResize ? matches : emptyObject,
224
- setIsResize: setIsResize,
225
- setMatches: setMatches
232
+ getIntersectionsFromMatches: getIntersectionsFromMatches,
233
+ handleMatches: handleMatches,
234
+ items: items
226
235
  }), additionalPageItems, /*#__PURE__*/jsx(AlignmentGuides, {
227
236
  axis: "x",
228
237
  guides: guides[page.id],
@@ -245,9 +254,6 @@ Page.propTypes = {
245
254
  page: PropTypes.shape({
246
255
  backgroundColor: PropTypes.string
247
256
  }),
248
- pageRef: PropTypes.shape({
249
- current: PropTypes.any
250
- }),
251
257
  style: PropTypes.shape({})
252
258
  };
253
259
  var Page$1 = /*#__PURE__*/memo(Page);
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sources":["../../../../src/components/Builder/Page.js"],"sourcesContent":["import {\n useState,\n useRef,\n memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrop } from 'react-dnd';\nimport {\n ACCEPTED_TYPES,\n DRAGGABLE_ITEM_TYPE,\n DROPPABLE_ITEM_TYPE,\n} from '../../constants/itemTypes';\nimport AlignmentGuides from '../AlignmentGuides';\nimport ReportItemsWrapper from '../ReportItemsWrapper';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport {\n proximityListener,\n calculateGuidePositions,\n getCorrectDroppedOffsetValue,\n getCorrectDroppedOffsetValueBySnap,\n findItemById,\n} from '../../utils/functions';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\n\nconst emptyObject = {};\n\nconst Page = ({\n guides = {},\n items = [],\n page = {},\n pageRef = {},\n style = {},\n}) => {\n const activeElement = useBuilderStore(state => state.activeElement);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemMove = usePropStore(state => state.onItemMove);\n const onItemsMove = usePropStore(state => state.onItemsMove);\n const additionalPageItems = usePropStore(state => state.additionalPageItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const settings = usePropStore(state => state.settings);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const pages = usePropStore(state => state.pages);\n\n const [matches, setMatches] = useState({});\n const [isResize, setIsResize] = useState(false);\n const requestRef = useRef();\n\n const drawAlignmentGuides = (item, monitor) => {\n return () => {\n try {\n if (!monitor || monitor.getSourceClientOffset() === null) {\n requestRef.current = undefined;\n return;\n }\n const coords = getCorrectDroppedOffsetValue(\n monitor,\n pageRef.current.getBoundingClientRect(),\n zoom,\n );\n const activeItem = {\n ...item, ...coords,\n };\n const _guides = {\n ...guides[item.pageID],\n [item.id]: {\n ...guides[item.pageID][item.id],\n x: calculateGuidePositions(activeItem, 'x', zoom),\n y: calculateGuidePositions(activeItem, 'y', zoom),\n },\n };\n const match = proximityListener(item.id, _guides);\n setMatches(match);\n requestRef.current = undefined;\n } catch (error) {\n setMatches({});\n }\n };\n };\n\n const isMultipleItemSelected = activeElement !== null && activeElement.length > 1;\n\n const onHover = (item, monitor) => {\n if (!requestRef.current) {\n requestRef.current = global.requestAnimationFrame(drawAlignmentGuides(item, monitor));\n }\n };\n\n const [{ isOver }, drop] = useDrop({\n accept: ACCEPTED_TYPES,\n collect: monitor => {\n return {\n isOver: monitor.isOver(),\n };\n },\n drop: (item, monitor) => {\n const pageClient = pageRef.current?.getBoundingClientRect();\n const coords = getCorrectDroppedOffsetValue(\n monitor,\n pageClient,\n zoom,\n );\n const type = monitor.getItemType();\n const {\n id, itemType, pageID, ...additionalData\n } = item;\n const newCoords = {};\n if (type === DROPPABLE_ITEM_TYPE) {\n const itemID = generateId();\n onItemAdd({\n ...acceptedItems[itemType].details,\n id: itemID,\n pageID: page.id,\n ...coords,\n ...additionalData,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n newCoords[itemID] = coords;\n } else if (type === DRAGGABLE_ITEM_TYPE) {\n const dragCoords = getCorrectDroppedOffsetValueBySnap(coords, guides, id, pages, zoom);\n if (isMultipleItemSelected) {\n const leftDifference = additionalData.left - dragCoords.left;\n const topDifference = additionalData.top - dragCoords.top;\n const _items = activeElement.reduce((acc, curr) => {\n const tempItem = findItemById(curr, pages);\n acc[curr] = {\n id: curr,\n left: tempItem.left - leftDifference,\n pageID: page.id,\n top: tempItem.top - topDifference,\n };\n newCoords[curr] = {\n left: tempItem.left - leftDifference,\n top: tempItem.top - topDifference,\n };\n return acc;\n }, {});\n onItemsMove({ items: _items });\n } else {\n onItemMove({\n id,\n pageID: page.id,\n ...dragCoords,\n });\n newCoords[id] = dragCoords;\n }\n }\n\n return newCoords;\n },\n hover: onHover,\n });\n\n const { reportBackgroundColor } = settings;\n const { backgroundColor } = page;\n const bgColor = backgroundColor ? backgroundColor : reportBackgroundColor || '#fff';\n\n return (\n <>\n <div\n ref={drop}\n className={classNames.pageContainer}\n style={{\n backgroundColor: bgColor,\n ...style,\n }}\n >\n <div className=\"jfReport-hider o-hidden f-all p-relative\">\n <ReportItemsWrapper\n guides={guides[page.id]}\n isResize={isResize}\n // if we send matches all the time, DraggableItems are also rendered on dragging\n items={items}\n matches={isResize ? matches : emptyObject}\n setIsResize={setIsResize}\n setMatches={setMatches}\n />\n {additionalPageItems}\n <AlignmentGuides\n axis=\"x\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n <AlignmentGuides\n axis=\"y\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n </div>\n </div>\n </>\n );\n};\n\nPage.propTypes = {\n guides: PropTypes.shape({}),\n items: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n page: PropTypes.shape({\n backgroundColor: PropTypes.string,\n }),\n pageRef: PropTypes.shape({\n current: PropTypes.any,\n }),\n style: PropTypes.shape({}),\n};\n\nexport default memo(Page);\n"],"names":["emptyObject","Page","guides","items","page","pageRef","style","activeElement","useBuilderStore","state","setActiveElement","setIsRightPanelOpen","zoom","onItemAdd","usePropStore","onItemMove","onItemsMove","additionalPageItems","onAnEventTrigger","settings","acceptedItems","pages","useState","matches","setMatches","isResize","setIsResize","requestRef","useRef","drawAlignmentGuides","item","monitor","getSourceClientOffset","current","undefined","coords","getCorrectDroppedOffsetValue","getBoundingClientRect","activeItem","_guides","pageID","id","x","calculateGuidePositions","y","match","proximityListener","error","isMultipleItemSelected","length","onHover","global","requestAnimationFrame","useDrop","accept","ACCEPTED_TYPES","collect","isOver","drop","pageClient","type","getItemType","itemType","additionalData","newCoords","DROPPABLE_ITEM_TYPE","itemID","generateId","details","DRAGGABLE_ITEM_TYPE","dragCoords","getCorrectDroppedOffsetValueBySnap","leftDifference","left","topDifference","top","_items","reduce","acc","curr","tempItem","findItemById","hover","reportBackgroundColor","backgroundColor","bgColor","_jsx","classNames","_jsxs","propTypes","PropTypes","shape","arrayOf","string","any","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Page.js","sources":["../../../../src/components/Builder/Page.js"],"sourcesContent":["import {\n useState,\n useRef,\n memo,\n useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrop } from 'react-dnd';\nimport {\n ACCEPTED_TYPES,\n DRAGGABLE_ITEM_TYPE,\n DROPPABLE_ITEM_TYPE,\n} from '../../constants/itemTypes';\nimport AlignmentGuides from '../AlignmentGuides';\nimport ReportItemsWrapper from '../ReportItemsWrapper';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport {\n getCorrectDroppedOffsetValue,\n getCorrectDroppedOffsetValueBySnap,\n findItemById,\n getMatchesForItem,\n getCoordinatesFromMatches,\n} from '../../utils/functions';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\n\nconst Page = ({\n guides = {},\n items = [],\n page = {},\n style = {},\n}) => {\n const activeElement = useBuilderStore(state => state.activeElement);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n const isResize = useBuilderStore(state => state.isResize);\n\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemMove = usePropStore(state => state.onItemMove);\n const onItemsMove = usePropStore(state => state.onItemsMove);\n const additionalPageItems = usePropStore(state => state.additionalPageItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const settings = usePropStore(state => state.settings);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const pages = usePropStore(state => state.pages);\n\n const [matches, setMatches] = useState({});\n const requestRef = useRef();\n const dropRef = useRef(null); // for getting the bounding client rect\n\n const handleMatches = useCallback(item => {\n const newMatches = getMatchesForItem(item, guides, zoom);\n setMatches(newMatches);\n }, [guides, zoom]);\n\n const drawAlignmentGuides = (item, monitor) => {\n return () => {\n try {\n if (!monitor || monitor.getSourceClientOffset() === null) {\n requestRef.current = undefined;\n return;\n }\n const coords = getCorrectDroppedOffsetValue(\n monitor.getSourceClientOffset(),\n monitor.getInitialSourceClientOffset(),\n dropRef.current.getBoundingClientRect(),\n zoom,\n );\n const activeItem = {\n ...item, ...coords,\n };\n if (activeItem.id && activeItem.pageID) {\n handleMatches(activeItem);\n }\n requestRef.current = undefined;\n } catch (error) {\n setMatches({});\n }\n };\n };\n\n const isMultipleItemSelected = activeElement !== null && activeElement.length > 1;\n\n const onHover = (item, monitor) => {\n if (!requestRef.current) {\n requestRef.current = global.requestAnimationFrame(drawAlignmentGuides(item, monitor));\n }\n };\n\n const [{ isOver }, drop] = useDrop({\n accept: ACCEPTED_TYPES,\n collect: monitor => {\n return {\n isOver: monitor.isOver(),\n };\n },\n drop: (item, monitor) => {\n const coords = getCorrectDroppedOffsetValue(\n monitor.getSourceClientOffset(),\n monitor.getInitialSourceClientOffset(),\n dropRef.current?.getBoundingClientRect(),\n zoom,\n );\n const type = monitor.getItemType();\n const {\n id, itemType, pageID, ...additionalData\n } = item;\n const newCoords = {};\n if (type === DROPPABLE_ITEM_TYPE) {\n const itemID = generateId();\n onItemAdd({\n ...acceptedItems[itemType].details,\n id: itemID,\n pageID: page.id,\n ...coords,\n ...additionalData,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n newCoords[itemID] = coords;\n } else if (type === DRAGGABLE_ITEM_TYPE) {\n const newItem = { ...item, ...coords };\n const dragCoords = getCorrectDroppedOffsetValueBySnap(newItem, guides, zoom);\n if (isMultipleItemSelected) {\n const leftDifference = additionalData.left - dragCoords.left;\n const topDifference = additionalData.top - dragCoords.top;\n const _items = activeElement.reduce((acc, curr) => {\n const tempItem = findItemById(curr, pages);\n acc[curr] = {\n id: curr,\n left: tempItem.left - leftDifference,\n pageID: page.id,\n top: tempItem.top - topDifference,\n };\n newCoords[curr] = {\n left: tempItem.left - leftDifference,\n top: tempItem.top - topDifference,\n };\n return acc;\n }, {});\n onItemsMove({ items: _items });\n } else {\n onItemMove({\n id,\n pageID: page.id,\n ...dragCoords,\n });\n newCoords[id] = dragCoords;\n }\n }\n\n return newCoords;\n },\n hover: onHover,\n });\n\n const getIntersectionsFromMatches = useCallback(item => {\n const {\n left: newActiveBoxLeft,\n top: newActiveBoxTop,\n } = getCoordinatesFromMatches(item, matches);\n\n return { newActiveBoxLeft, newActiveBoxTop };\n }, [matches]);\n\n const combinedRef = useCallback(node => {\n dropRef.current = node;\n drop(node);\n }, [drop]);\n\n const { reportBackgroundColor } = settings;\n const { backgroundColor } = page;\n const bgColor = backgroundColor ? backgroundColor : reportBackgroundColor || '#fff';\n\n return (\n <>\n <div\n ref={combinedRef}\n className={classNames.pageContainer}\n style={{\n backgroundColor: bgColor,\n ...style,\n }}\n >\n <div className=\"jfReport-hider o-hidden f-all p-relative\">\n <ReportItemsWrapper\n getIntersectionsFromMatches={getIntersectionsFromMatches}\n handleMatches={handleMatches}\n items={items}\n />\n {additionalPageItems}\n <AlignmentGuides\n axis=\"x\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n <AlignmentGuides\n axis=\"y\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n </div>\n </div>\n </>\n );\n};\n\nPage.propTypes = {\n guides: PropTypes.shape({}),\n items: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n page: PropTypes.shape({\n backgroundColor: PropTypes.string,\n }),\n style: PropTypes.shape({}),\n};\n\nexport default memo(Page);\n"],"names":["Page","guides","items","page","style","activeElement","useBuilderStore","state","setActiveElement","setIsRightPanelOpen","zoom","isResize","onItemAdd","usePropStore","onItemMove","onItemsMove","additionalPageItems","onAnEventTrigger","settings","acceptedItems","pages","useState","matches","setMatches","requestRef","useRef","dropRef","handleMatches","useCallback","item","newMatches","getMatchesForItem","drawAlignmentGuides","monitor","getSourceClientOffset","current","undefined","coords","getCorrectDroppedOffsetValue","getInitialSourceClientOffset","getBoundingClientRect","activeItem","id","pageID","error","isMultipleItemSelected","length","onHover","global","requestAnimationFrame","useDrop","accept","ACCEPTED_TYPES","collect","isOver","drop","type","getItemType","itemType","additionalData","newCoords","DROPPABLE_ITEM_TYPE","itemID","generateId","details","DRAGGABLE_ITEM_TYPE","newItem","dragCoords","getCorrectDroppedOffsetValueBySnap","leftDifference","left","topDifference","top","_items","reduce","acc","curr","tempItem","findItemById","hover","getIntersectionsFromMatches","getCoordinatesFromMatches","newActiveBoxLeft","newActiveBoxTop","combinedRef","node","reportBackgroundColor","backgroundColor","bgColor","_jsx","classNames","_jsxs","propTypes","PropTypes","shape","arrayOf","string","memo"],"mappings":"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"}
@@ -8,7 +8,7 @@ import 'core-js/modules/es.number.to-fixed.js';
8
8
  import 'core-js/modules/es.object.to-string.js';
9
9
  import 'core-js/modules/es.regexp.to-string.js';
10
10
  import 'core-js/modules/web.dom-collections.for-each.js';
11
- import { useState, useRef, createRef, useMemo, useEffect, Fragment } from 'react';
11
+ import { useState, useRef, createRef, useEffect, useMemo, Fragment } from 'react';
12
12
  import { mainWrapper, viewport, canvas, page } from '../../constants/classNames.js';
13
13
  import ContextMenu from './ContextMenu.js';
14
14
  import PageActions from './PageActions.js';
@@ -17,11 +17,11 @@ import ZoomControls from './ZoomControls.js';
17
17
  import { useBuilderStore } from '../../contexts/BuilderContext.js';
18
18
  import { usePropStore } from '../../contexts/PropContext.js';
19
19
  import Page from './Page.js';
20
- import { calculateGuidePositions, findItemById, getSelectedItems, findItemsOnPage, getMostVisiblePage } from '../../utils/functions.js';
21
- import { useEventListener } from '../../utils/hooks.js';
22
- import DraggableItemLayer from '../DraggableItem/DraggableItemLayer.js';
20
+ import { calculateGuidePositions, findItemById, findItemsOnPage, getMostVisiblePage } from '../../utils/functions.js';
21
+ import { useActiveElement, useEventListener } from '../../utils/hooks.js';
23
22
  import generateId from '../../utils/generateId.js';
24
23
  import { EVENT_IGNORED_ROLES } from '../../constants/eventIgnoredRoles.js';
24
+ import DraggableLayer from './DraggableLayer.js';
25
25
  import { jsxs, jsx } from 'react/jsx-runtime';
26
26
 
27
27
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -91,7 +91,6 @@ var Scene = function Scene() {
91
91
  var lastScrollPosition = useBuilderStore(function (state) {
92
92
  return state.lastScrollPosition;
93
93
  });
94
- var isHeaderHidden = useRef(false);
95
94
  var pageStyles = useRef({});
96
95
  var pageContainerStyles = useRef({});
97
96
  var viewPortRef = useRef({});
@@ -100,7 +99,15 @@ var Scene = function Scene() {
100
99
  var refs = useRef(pages.reduce(function (acc, curr) {
101
100
  acc[curr.id] = /*#__PURE__*/createRef(null);
102
101
  return acc;
103
- }, {}));
102
+ }, {})); // Update refs when new pages are added
103
+
104
+ useEffect(function () {
105
+ pages.forEach(function (page) {
106
+ if (!refs.current[page.id]) {
107
+ refs.current[page.id] = /*#__PURE__*/createRef(null);
108
+ }
109
+ });
110
+ }, [pages]);
104
111
  var isMultipleItemSelected = activeElement !== null && activeElement.length > 1;
105
112
  /* Calculate snap guides */
106
113
 
@@ -149,14 +156,8 @@ var Scene = function Scene() {
149
156
  }
150
157
  }, [lastScrollPosition]); // set last scroll position after changing mode
151
158
 
152
- useEffect(function () {
153
- if (document.body.classList.contains('hideHeader') && isHeaderHidden) {
154
- document.body.classList.remove('hideHeader');
155
- }
156
- }, []); // reset hideHeader
157
-
158
159
  var foundItem = findItemById(activeElement === null ? null : activeElement[0], pages);
159
- var selectedItems = getSelectedItems(activeElement, pages);
160
+ var selectedItems = useActiveElement();
160
161
 
161
162
  var moveItemWithKeyboard = function moveItemWithKeyboard(event, direction, value) {
162
163
  event.preventDefault();
@@ -316,20 +317,6 @@ var Scene = function Scene() {
316
317
  }
317
318
  };
318
319
 
319
- var onScroll = function onScroll(e) {
320
- var scrollTop = e.currentTarget.scrollTop;
321
- var hiddenHeaderHeight = 70;
322
- var headerHidingLimit = isHeaderHidden ? 230 : 300;
323
-
324
- if (scrollTop > headerHidingLimit + hiddenHeaderHeight && !isHeaderHidden.current) {
325
- isHeaderHidden.current = true;
326
- document.body.classList.add('hideHeader');
327
- } else if (scrollTop < headerHidingLimit && isHeaderHidden.current) {
328
- isHeaderHidden.current = false;
329
- document.body.classList.remove('hideHeader');
330
- }
331
- };
332
-
333
320
  var shouldSuppressKeyboardEvent = function shouldSuppressKeyboardEvent(e) {
334
321
  return EVENT_IGNORED_ROLES.some(function (role) {
335
322
  return e.target.closest("[role=".concat(role, "]"));
@@ -379,15 +366,13 @@ var Scene = function Scene() {
379
366
  return /*#__PURE__*/jsxs("main", {
380
367
  // Builder.js
381
368
  className: mainWrapper,
382
- children: [/*#__PURE__*/jsx(DraggableItemLayer, {
369
+ children: [/*#__PURE__*/jsx(DraggableLayer, {
383
370
  guides: guides,
384
- pageRefs: refs.current,
385
- pages: pages
371
+ pageRefs: refs.current
386
372
  }), /*#__PURE__*/jsx("div", {
387
373
  ref: viewPortRef,
388
374
  className: viewport,
389
375
  "data-zoom": zoom,
390
- onScroll: onScroll,
391
376
  children: /*#__PURE__*/jsxs("div", {
392
377
  className: canvas,
393
378
  children: [pages.map(function (page$1, index) {
@@ -410,7 +395,6 @@ var Scene = function Scene() {
410
395
  items: page$1.items,
411
396
  page: page$1,
412
397
  pageIndex: index,
413
- pageRef: refs.current[page$1.id],
414
398
  style: pageContainerStyles.current
415
399
  })
416
400
  }, "page_".concat(page$1.id))]
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.js","sources":["../../../../src/components/Builder/Scene.js"],"sourcesContent":["/* eslint-disable complexity */\nimport {\n createRef,\n Fragment,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport * as classNames from '../../constants/classNames';\nimport ContextMenu from './ContextMenu';\nimport PageActions from './PageActions';\nimport PageAdder from './PageAdder';\nimport ZoomControls from './ZoomControls';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport Page from './Page';\nimport {\n calculateGuidePositions,\n findItemById,\n findItemsOnPage,\n getMostVisiblePage,\n getSelectedItems,\n} from '../../utils/functions';\nimport { useEventListener } from '../../utils/hooks';\nimport DraggableItemLayer from '../DraggableItem/DraggableItemLayer';\nimport generateId from '../../utils/generateId';\nimport { EVENT_IGNORED_ROLES } from '../../constants/eventIgnoredRoles';\n\nconst Scene = () => {\n const pages = usePropStore(state => state.pages);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const settings = usePropStore(state => state.settings);\n const onItemChange = usePropStore(state => state.onItemChange);\n\n const activeElement = useBuilderStore(state => state.activeElement);\n const contextMenuProps = useBuilderStore(state => state.contextMenuProps);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setContextMenuProps = useBuilderStore(state => state.setContextMenuProps);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [itemToPaste, setItemToPaste] = useState(null);\n const lastScrollPosition = useBuilderStore(state => state.lastScrollPosition);\n const isHeaderHidden = useRef(false);\n\n const pageStyles = useRef({});\n const pageContainerStyles = useRef({});\n const viewPortRef = useRef({});\n\n /* Page Refs */\n const refs = useRef(pages.reduce((acc, curr) => {\n acc[curr.id] = createRef(null);\n return acc;\n }, {}));\n\n const isMultipleItemSelected = activeElement !== null && activeElement.length > 1;\n\n /* Calculate snap guides */\n const keyDownCount = useRef(null);\n\n const guides = useMemo(() => {\n return pages.reduce((acc, page) => {\n const _pageGuides = {};\n const pageRef = refs.current[page.id];\n if (pageRef && pageRef.current) {\n const {\n height, left, top, width,\n } = pageRef.current.getBoundingClientRect();\n const boundingBox = {\n height, left, top, width,\n };\n _pageGuides.boundingBox = {\n x: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n y: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top),\n };\n page.items.forEach(item => {\n _pageGuides[item.id] = {\n x: calculateGuidePositions(item, 'x', zoom),\n y: calculateGuidePositions(item, 'y', zoom),\n };\n });\n }\n acc[page.id] = _pageGuides;\n return acc;\n }, {});\n }, [pages, zoom]);\n\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, [lastScrollPosition]); // set last scroll position after changing mode\n\n useEffect(() => {\n if (document.body.classList.contains('hideHeader') && isHeaderHidden) {\n document.body.classList.remove('hideHeader');\n }\n }, []); // reset hideHeader\n\n const foundItem = findItemById(activeElement === null ? null : activeElement[0], pages);\n\n const selectedItems = getSelectedItems(activeElement, pages);\n const moveItemWithKeyboard = (event, direction, value) => {\n event.preventDefault();\n selectedItems.forEach(item => {\n if (item.isLocked) {\n return false;\n }\n onItemChange(\n { id: item.id },\n {\n ...item,\n [direction]: item[direction] + value,\n },\n );\n });\n };\n\n const selectNextOrPrevElement = (event, deletedItem) => {\n if (event.preventDefault) event.preventDefault();\n const referenceItem = deletedItem ? deletedItem : foundItem;\n\n const page = pages.find(_page => _page.id === referenceItem.pageID);\n if (!page || (page && !page.items.length)) return setActiveElement(null);\n const { items } = page;\n\n const currentIndex = items.findIndex(item => item.id === referenceItem.id);\n\n // Pages are not updated in time so here is an unnecessary check\n if (items.length === 1 && deletedItem) {\n return setActiveElement(null);\n }\n\n if (event.shiftKey) {\n if (items[currentIndex - 1]) setActiveElement(items[currentIndex - 1].id);\n else setActiveElement(items[items.length - 1].id);\n } else if (items[currentIndex + 1]) {\n setActiveElement(items[currentIndex + 1].id);\n } else setActiveElement(items[0].id);\n };\n\n const onItemRemoveFromPage = e => {\n // Firefox updates browser history on backspace\n e.preventDefault();\n if (isMultipleItemSelected) return;\n if (foundItem.isLocked) {\n return false;\n }\n setActiveElement(null);\n onItemRemove(foundItem);\n selectNextOrPrevElement({ shiftKey: false }, foundItem);\n onAnEventTrigger('removeItem', foundItem.itemType);\n };\n\n const handlePaste = () => {\n if (isMultipleItemSelected) return;\n const itemID = generateId();\n const pageID = getMostVisiblePage(true);\n const offset = itemToPaste.pageID === pageID ? 50 : 0;\n\n const item = {\n ...itemToPaste,\n id: itemID,\n left: itemToPaste.left + offset,\n pageID,\n top: itemToPaste.top + offset,\n };\n\n onItemAdd(item);\n\n onAnEventTrigger('pasteItem', itemToPaste.itemType);\n setActiveElement(itemID);\n // set as last reference to paste\n setItemToPaste(item);\n };\n\n const keyboardActions = event => {\n const {\n key,\n metaKey,\n shiftKey,\n } = event;\n\n if (metaKey) {\n if (key === 'l') {\n // Lock\n if (isMultipleItemSelected) return;\n event.preventDefault(); // Dont focus to URL bar\n onAnEventTrigger(\n foundItem.isLocked ? 'unlockReportItem' : 'lockReportItem',\n foundItem.itemType,\n );\n onItemChange(\n { id: foundItem.id },\n { isLocked: foundItem.isLocked ? false : true },\n );\n return;\n }\n\n if (key === 'c' || key === 'x') {\n if (isMultipleItemSelected) return;\n // Copy or Cut\n if (key === 'x') {\n onItemRemoveFromPage(event);\n onAnEventTrigger('cutItem', foundItem.itemType);\n } else {\n onAnEventTrigger('copyItem', foundItem.itemType);\n }\n\n setItemToPaste(foundItem);\n return;\n }\n\n if (foundItem && key === 'd') {\n if (isMultipleItemSelected) return;\n // Duplicate\n event.preventDefault();\n const itemID = generateId();\n onItemAdd({\n ...foundItem,\n id: itemID,\n left: foundItem.left + 50,\n top: foundItem.top + 50,\n });\n onAnEventTrigger('duplicateItem', foundItem.itemType);\n setActiveElement(itemID);\n if (!isRightPanelOpen) {\n setIsRightPanelOpen(true);\n }\n return;\n }\n }\n\n keyDownCount.current++;\n const movementValue = shiftKey ? 10 : 1 + keyDownCount.current;\n\n // Others\n switch (key) {\n case 'Backspace': return onItemRemoveFromPage(event);\n case 'Delete': return onItemRemoveFromPage(event);\n case 'Escape': return setActiveElement(null);\n case 'ArrowLeft': return moveItemWithKeyboard(event, 'left', -movementValue);\n case 'ArrowUp': return moveItemWithKeyboard(event, 'top', -movementValue);\n case 'ArrowRight': return moveItemWithKeyboard(event, 'left', movementValue);\n case 'ArrowDown': return moveItemWithKeyboard(event, 'top', movementValue);\n case 'Tab': return selectNextOrPrevElement(event);\n default:\n }\n };\n\n const onScroll = e => {\n const { scrollTop } = e.currentTarget;\n const hiddenHeaderHeight = 70;\n const headerHidingLimit = isHeaderHidden ? 230 : 300;\n if (scrollTop > headerHidingLimit + hiddenHeaderHeight && !isHeaderHidden.current) {\n isHeaderHidden.current = true;\n document.body.classList.add('hideHeader');\n } else if (scrollTop < headerHidingLimit && isHeaderHidden.current) {\n isHeaderHidden.current = false;\n document.body.classList.remove('hideHeader');\n }\n };\n\n const shouldSuppressKeyboardEvent = e => (\n EVENT_IGNORED_ROLES.some(role => e.target.closest(`[role=${role}]`))\n );\n\n const handleKeyboardEvent = e => {\n const shouldPaste = itemToPaste && e.key === 'v' && e.metaKey;\n\n if (shouldSuppressKeyboardEvent(e)) {\n return;\n }\n\n if (activeElement && !shouldPaste) {\n const arrowKeyCodes = ['ArrowLeft', 'ArrowUp', 'ArrowDown', 'ArrowBottom'];\n if (arrowKeyCodes.includes(e.key)) e.preventDefault();\n keyboardActions(e);\n } else if (shouldPaste) {\n handlePaste();\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('keyup', () => { keyDownCount.current = 0; });\n\n const { reportLayoutHeight = 794, reportLayoutWidth = 1123 } = settings;\n\n // TODO: Some strange shit is going on here on first render\n let width = parseInt(reportLayoutWidth, 10);\n let height = parseInt(reportLayoutHeight, 10);\n width = Number.isNaN(width) ? 1 : width;\n height = Number.isNaN(height) ? 1 : height;\n const zoomToUse = Number.isNaN(zoom) ? 1 : zoom;\n\n pageStyles.current = {\n height: parseFloat((height * zoomToUse).toFixed(1)),\n width: parseFloat((width * zoomToUse).toFixed(1)),\n };\n pageContainerStyles.current = {\n height,\n transform: `scale(${zoomToUse})`,\n transformOrigin: '0 0',\n width,\n };\n\n return (\n <main // Builder.js\n className={classNames.mainWrapper}\n >\n <DraggableItemLayer\n guides={guides}\n pageRefs={refs.current}\n pages={pages}\n />\n\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n data-zoom={zoom}\n onScroll={onScroll}\n >\n <div\n className={classNames.canvas}\n >\n {pages.map((page, index) => (\n // TODO: This part can be moved into a different component\n <Fragment key={page.id}>\n <PageActions\n order={page.order}\n pageID={page.id}\n />\n <div\n key={`page_${page.id}`}\n ref={refs.current[page.id]}\n className={classNames.page}\n data-id={page.id}\n data-order={page.order}\n id={`presentation-page-${page.id.toString()}`}\n style={pageStyles.current}\n >\n <Page\n guides={guides}\n items={page.items}\n page={page}\n pageIndex={index}\n pageRef={refs.current[page.id]}\n style={pageContainerStyles.current}\n />\n </div>\n </Fragment>\n ))}\n <PageAdder />\n </div>\n </div>\n <ZoomControls />\n {contextMenuProps\n && (\n <ContextMenu\n exceptionalClasses={['contextMenu-button']}\n height={height}\n item={findItemById(contextMenuProps.id, pages)}\n items={findItemsOnPage(contextMenuProps.pageID, pages)}\n onClickOutside={() => setContextMenuProps(null)}\n position={contextMenuProps.position}\n width={width}\n />\n )}\n </main>\n );\n};\n\nexport default Scene;\n"],"names":["Scene","pages","usePropStore","state","onItemAdd","onItemRemove","onAnEventTrigger","settings","onItemChange","activeElement","useBuilderStore","contextMenuProps","isRightPanelOpen","setActiveElement","setContextMenuProps","setIsRightPanelOpen","zoom","useState","itemToPaste","setItemToPaste","lastScrollPosition","isHeaderHidden","useRef","pageStyles","pageContainerStyles","viewPortRef","refs","reduce","acc","curr","id","createRef","isMultipleItemSelected","length","keyDownCount","guides","useMemo","page","_pageGuides","pageRef","current","getBoundingClientRect","height","left","top","width","boundingBox","x","calculateGuidePositions","map","value","y","items","forEach","item","useEffect","scrollTop","document","body","classList","contains","remove","foundItem","findItemById","selectedItems","getSelectedItems","moveItemWithKeyboard","event","direction","preventDefault","isLocked","selectNextOrPrevElement","deletedItem","referenceItem","find","_page","pageID","currentIndex","findIndex","shiftKey","onItemRemoveFromPage","e","itemType","handlePaste","itemID","generateId","getMostVisiblePage","offset","keyboardActions","key","metaKey","movementValue","onScroll","currentTarget","hiddenHeaderHeight","headerHidingLimit","add","shouldSuppressKeyboardEvent","EVENT_IGNORED_ROLES","some","role","target","closest","handleKeyboardEvent","shouldPaste","arrowKeyCodes","includes","useEventListener","reportLayoutHeight","reportLayoutWidth","parseInt","Number","isNaN","zoomToUse","parseFloat","toFixed","transform","transformOrigin","_jsxs","classNames","_jsx","index","order","toString","findItemsOnPage","position"],"mappings":"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"}
1
+ {"version":3,"file":"Scene.js","sources":["../../../../src/components/Builder/Scene.js"],"sourcesContent":["/* eslint-disable complexity */\nimport {\n createRef,\n Fragment,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport * as classNames from '../../constants/classNames';\nimport ContextMenu from './ContextMenu';\nimport PageActions from './PageActions';\nimport PageAdder from './PageAdder';\nimport ZoomControls from './ZoomControls';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport Page from './Page';\nimport {\n calculateGuidePositions,\n findItemById,\n findItemsOnPage,\n getMostVisiblePage,\n} from '../../utils/functions';\nimport { useActiveElement, useEventListener } from '../../utils/hooks';\nimport generateId from '../../utils/generateId';\nimport { EVENT_IGNORED_ROLES } from '../../constants/eventIgnoredRoles';\nimport DraggableLayer from './DraggableLayer';\n\nconst Scene = () => {\n const pages = usePropStore(state => state.pages);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const settings = usePropStore(state => state.settings);\n const onItemChange = usePropStore(state => state.onItemChange);\n\n const activeElement = useBuilderStore(state => state.activeElement);\n const contextMenuProps = useBuilderStore(state => state.contextMenuProps);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setContextMenuProps = useBuilderStore(state => state.setContextMenuProps);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [itemToPaste, setItemToPaste] = useState(null);\n const lastScrollPosition = useBuilderStore(state => state.lastScrollPosition);\n\n const pageStyles = useRef({});\n const pageContainerStyles = useRef({});\n const viewPortRef = useRef({});\n\n /* Page Refs */\n const refs = useRef(pages.reduce((acc, curr) => {\n acc[curr.id] = createRef(null);\n return acc;\n }, {}));\n\n // Update refs when new pages are added\n useEffect(() => {\n pages.forEach(page => {\n if (!refs.current[page.id]) {\n refs.current[page.id] = createRef(null);\n }\n });\n }, [pages]);\n\n const isMultipleItemSelected = activeElement !== null && activeElement.length > 1;\n\n /* Calculate snap guides */\n const keyDownCount = useRef(null);\n\n const guides = useMemo(() => {\n return pages.reduce((acc, page) => {\n const _pageGuides = {};\n const pageRef = refs.current[page.id];\n if (pageRef && pageRef.current) {\n const {\n height, left, top, width,\n } = pageRef.current.getBoundingClientRect();\n const boundingBox = {\n height, left, top, width,\n };\n _pageGuides.boundingBox = {\n x: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n y: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top),\n };\n page.items.forEach(item => {\n _pageGuides[item.id] = {\n x: calculateGuidePositions(item, 'x', zoom),\n y: calculateGuidePositions(item, 'y', zoom),\n };\n });\n }\n acc[page.id] = _pageGuides;\n return acc;\n }, {});\n }, [pages, zoom]);\n\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, [lastScrollPosition]); // set last scroll position after changing mode\n\n const foundItem = findItemById(activeElement === null ? null : activeElement[0], pages);\n\n const selectedItems = useActiveElement();\n const moveItemWithKeyboard = (event, direction, value) => {\n event.preventDefault();\n selectedItems.forEach(item => {\n if (item.isLocked) {\n return false;\n }\n onItemChange(\n { id: item.id },\n {\n ...item,\n [direction]: item[direction] + value,\n },\n );\n });\n };\n\n const selectNextOrPrevElement = (event, deletedItem) => {\n if (event.preventDefault) event.preventDefault();\n const referenceItem = deletedItem ? deletedItem : foundItem;\n\n const page = pages.find(_page => _page.id === referenceItem.pageID);\n if (!page || (page && !page.items.length)) return setActiveElement(null);\n const { items } = page;\n\n const currentIndex = items.findIndex(item => item.id === referenceItem.id);\n\n // Pages are not updated in time so here is an unnecessary check\n if (items.length === 1 && deletedItem) {\n return setActiveElement(null);\n }\n\n if (event.shiftKey) {\n if (items[currentIndex - 1]) setActiveElement(items[currentIndex - 1].id);\n else setActiveElement(items[items.length - 1].id);\n } else if (items[currentIndex + 1]) {\n setActiveElement(items[currentIndex + 1].id);\n } else setActiveElement(items[0].id);\n };\n\n const onItemRemoveFromPage = e => {\n // Firefox updates browser history on backspace\n e.preventDefault();\n if (isMultipleItemSelected) return;\n if (foundItem.isLocked) {\n return false;\n }\n setActiveElement(null);\n onItemRemove(foundItem);\n selectNextOrPrevElement({ shiftKey: false }, foundItem);\n onAnEventTrigger('removeItem', foundItem.itemType);\n };\n\n const handlePaste = () => {\n if (isMultipleItemSelected) return;\n const itemID = generateId();\n const pageID = getMostVisiblePage(true);\n const offset = itemToPaste.pageID === pageID ? 50 : 0;\n\n const item = {\n ...itemToPaste,\n id: itemID,\n left: itemToPaste.left + offset,\n pageID,\n top: itemToPaste.top + offset,\n };\n\n onItemAdd(item);\n\n onAnEventTrigger('pasteItem', itemToPaste.itemType);\n setActiveElement(itemID);\n // set as last reference to paste\n setItemToPaste(item);\n };\n\n const keyboardActions = event => {\n const {\n key,\n metaKey,\n shiftKey,\n } = event;\n\n if (metaKey) {\n if (key === 'l') {\n // Lock\n if (isMultipleItemSelected) return;\n event.preventDefault(); // Dont focus to URL bar\n onAnEventTrigger(\n foundItem.isLocked ? 'unlockReportItem' : 'lockReportItem',\n foundItem.itemType,\n );\n onItemChange(\n { id: foundItem.id },\n { isLocked: foundItem.isLocked ? false : true },\n );\n return;\n }\n\n if (key === 'c' || key === 'x') {\n if (isMultipleItemSelected) return;\n // Copy or Cut\n if (key === 'x') {\n onItemRemoveFromPage(event);\n onAnEventTrigger('cutItem', foundItem.itemType);\n } else {\n onAnEventTrigger('copyItem', foundItem.itemType);\n }\n\n setItemToPaste(foundItem);\n return;\n }\n\n if (foundItem && key === 'd') {\n if (isMultipleItemSelected) return;\n // Duplicate\n event.preventDefault();\n const itemID = generateId();\n onItemAdd({\n ...foundItem,\n id: itemID,\n left: foundItem.left + 50,\n top: foundItem.top + 50,\n });\n onAnEventTrigger('duplicateItem', foundItem.itemType);\n setActiveElement(itemID);\n if (!isRightPanelOpen) {\n setIsRightPanelOpen(true);\n }\n return;\n }\n }\n\n keyDownCount.current++;\n const movementValue = shiftKey ? 10 : 1 + keyDownCount.current;\n\n // Others\n switch (key) {\n case 'Backspace': return onItemRemoveFromPage(event);\n case 'Delete': return onItemRemoveFromPage(event);\n case 'Escape': return setActiveElement(null);\n case 'ArrowLeft': return moveItemWithKeyboard(event, 'left', -movementValue);\n case 'ArrowUp': return moveItemWithKeyboard(event, 'top', -movementValue);\n case 'ArrowRight': return moveItemWithKeyboard(event, 'left', movementValue);\n case 'ArrowDown': return moveItemWithKeyboard(event, 'top', movementValue);\n case 'Tab': return selectNextOrPrevElement(event);\n default:\n }\n };\n\n const shouldSuppressKeyboardEvent = e => (\n EVENT_IGNORED_ROLES.some(role => e.target.closest(`[role=${role}]`))\n );\n\n const handleKeyboardEvent = e => {\n const shouldPaste = itemToPaste && e.key === 'v' && e.metaKey;\n\n if (shouldSuppressKeyboardEvent(e)) {\n return;\n }\n\n if (activeElement && !shouldPaste) {\n const arrowKeyCodes = ['ArrowLeft', 'ArrowUp', 'ArrowDown', 'ArrowBottom'];\n if (arrowKeyCodes.includes(e.key)) e.preventDefault();\n keyboardActions(e);\n } else if (shouldPaste) {\n handlePaste();\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('keyup', () => { keyDownCount.current = 0; });\n\n const { reportLayoutHeight = 794, reportLayoutWidth = 1123 } = settings;\n\n // TODO: Some strange shit is going on here on first render\n let width = parseInt(reportLayoutWidth, 10);\n let height = parseInt(reportLayoutHeight, 10);\n width = Number.isNaN(width) ? 1 : width;\n height = Number.isNaN(height) ? 1 : height;\n const zoomToUse = Number.isNaN(zoom) ? 1 : zoom;\n\n pageStyles.current = {\n height: parseFloat((height * zoomToUse).toFixed(1)),\n width: parseFloat((width * zoomToUse).toFixed(1)),\n };\n pageContainerStyles.current = {\n height,\n transform: `scale(${zoomToUse})`,\n transformOrigin: '0 0',\n width,\n };\n\n return (\n <main // Builder.js\n className={classNames.mainWrapper}\n >\n <DraggableLayer\n guides={guides}\n pageRefs={refs.current}\n />\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n data-zoom={zoom}\n >\n <div\n className={classNames.canvas}\n >\n {pages.map((page, index) => (\n // TODO: This part can be moved into a different component\n <Fragment key={page.id}>\n <PageActions\n order={page.order}\n pageID={page.id}\n />\n <div\n key={`page_${page.id}`}\n ref={refs.current[page.id]}\n className={classNames.page}\n data-id={page.id}\n data-order={page.order}\n id={`presentation-page-${page.id.toString()}`}\n style={pageStyles.current}\n >\n <Page\n guides={guides}\n items={page.items}\n page={page}\n pageIndex={index}\n style={pageContainerStyles.current}\n />\n </div>\n </Fragment>\n ))}\n <PageAdder />\n </div>\n </div>\n <ZoomControls />\n {contextMenuProps\n && (\n <ContextMenu\n exceptionalClasses={['contextMenu-button']}\n height={height}\n item={findItemById(contextMenuProps.id, pages)}\n items={findItemsOnPage(contextMenuProps.pageID, pages)}\n onClickOutside={() => setContextMenuProps(null)}\n position={contextMenuProps.position}\n width={width}\n />\n )}\n </main>\n );\n};\n\nexport default Scene;\n"],"names":["Scene","pages","usePropStore","state","onItemAdd","onItemRemove","onAnEventTrigger","settings","onItemChange","activeElement","useBuilderStore","contextMenuProps","isRightPanelOpen","setActiveElement","setContextMenuProps","setIsRightPanelOpen","zoom","useState","itemToPaste","setItemToPaste","lastScrollPosition","pageStyles","useRef","pageContainerStyles","viewPortRef","refs","reduce","acc","curr","id","createRef","useEffect","forEach","page","current","isMultipleItemSelected","length","keyDownCount","guides","useMemo","_pageGuides","pageRef","getBoundingClientRect","height","left","top","width","boundingBox","x","calculateGuidePositions","map","value","y","items","item","scrollTop","foundItem","findItemById","selectedItems","useActiveElement","moveItemWithKeyboard","event","direction","preventDefault","isLocked","selectNextOrPrevElement","deletedItem","referenceItem","find","_page","pageID","currentIndex","findIndex","shiftKey","onItemRemoveFromPage","e","itemType","handlePaste","itemID","generateId","getMostVisiblePage","offset","keyboardActions","key","metaKey","movementValue","shouldSuppressKeyboardEvent","EVENT_IGNORED_ROLES","some","role","target","closest","handleKeyboardEvent","shouldPaste","arrowKeyCodes","includes","useEventListener","reportLayoutHeight","reportLayoutWidth","parseInt","Number","isNaN","zoomToUse","parseFloat","toFixed","transform","transformOrigin","_jsxs","classNames","_jsx","index","order","toString","findItemsOnPage","position"],"mappings":"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"}
@@ -69,7 +69,9 @@ var SearchInput = function SearchInput(_ref) {
69
69
  className: "search-icon",
70
70
  style: {
71
71
  left: '8px',
72
- position: 'absolute'
72
+ position: 'absolute',
73
+ top: '50%',
74
+ transform: 'translateY(-40%)'
73
75
  },
74
76
  children: /*#__PURE__*/jsx(SvgSearch, {
75
77
  className: "section-search-icon"
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sources":["../../../../src/components/Builder/SearchInput.js"],"sourcesContent":["import {\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport SearchIcon from '../../assets/search.svg';\nimport CrossIcon from '../../assets/svg/close.svg';\nimport { useTranslatedTexts } from '../../utils/hooks';\n\nconst SearchInput = ({\n onSearch,\n}) => {\n const { SEARCH } = useTranslatedTexts();\n const searchInputRef = useRef(null);\n const [searchValue, setSearchValue] = useState('');\n\n const handleSearch = useCallback(e => {\n const { value } = e?.target || {};\n setSearchValue(value);\n onSearch?.(value);\n }, [onSearch]);\n\n const handleClearSearch = useCallback(() => {\n setSearchValue('');\n onSearch?.('');\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [onSearch]);\n\n const handleKeyDown = useCallback(e => {\n e.stopPropagation();\n if (e.key === 'Escape' && searchInputRef.current) {\n setSearchValue('');\n searchInputRef.current.blur();\n }\n }, []);\n\n return (\n <div className=\"jfReport-searchContainer\">\n <div className=\"jfReport-search p-relative\">\n <input\n ref={searchInputRef}\n className=\"js-searchInput section-search-input\"\n onChange={handleSearch}\n onKeyDown={handleKeyDown}\n placeholder={SEARCH}\n type=\"text\"\n value={searchValue}\n />\n <span\n className=\"search-icon\"\n style={{ left: '8px', position: 'absolute' }}\n >\n <SearchIcon className=\"section-search-icon\" />\n </span>\n {searchValue && (\n <button\n className=\"section-search-button search-delete\"\n onClick={handleClearSearch}\n type=\"button\"\n >\n <CrossIcon className=\"section-search-icon delete\" />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nSearchInput.propTypes = {\n onSearch: PropTypes.func,\n};\n\nexport default SearchInput;\n"],"names":["SearchInput","onSearch","useTranslatedTexts","SEARCH","searchInputRef","useRef","useState","searchValue","setSearchValue","handleSearch","useCallback","e","target","value","handleClearSearch","current","focus","handleKeyDown","stopPropagation","key","blur","_jsx","_jsxs","left","position","SearchIcon","CrossIcon","propTypes","PropTypes","func"],"mappings":";;;;;;;;;;;;;;;;;;;IAUMA,WAAW,GAAG,SAAdA,WAAc,OAEd;AAAA,MADJC,QACI,QADJA,QACI;;AACJ,4BAAmBC,kBAAkB,EAArC;AAAA,MAAQC,MAAR,uBAAQA,MAAR;;AACA,MAAMC,cAAc,GAAGC,MAAM,CAAC,IAAD,CAA7B;;AACA,kBAAsCC,QAAQ,CAAC,EAAD,CAA9C;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAEA,MAAMC,YAAY,GAAGC,WAAW,CAAC,UAAAC,CAAC,EAAI;AACpC,gBAAkB,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEC,MAAH,KAAa,EAA/B;AAAA,QAAQC,KAAR,SAAQA,KAAR;;AACAL,IAAAA,cAAc,CAACK,KAAD,CAAd;AACAZ,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAGY,KAAH,CAAR;AACD,GAJ+B,EAI7B,CAACZ,QAAD,CAJ6B,CAAhC;AAMA,MAAMa,iBAAiB,GAAGJ,WAAW,CAAC,YAAM;AAC1CF,IAAAA,cAAc,CAAC,EAAD,CAAd;AACAP,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAG,EAAH,CAAR;;AACA,QAAIG,cAAc,CAACW,OAAnB,EAA4B;AAC1BX,MAAAA,cAAc,CAACW,OAAf,CAAuBC,KAAvB;AACD;AACF,GANoC,EAMlC,CAACf,QAAD,CANkC,CAArC;AAQA,MAAMgB,aAAa,GAAGP,WAAW,CAAC,UAAAC,CAAC,EAAI;AACrCA,IAAAA,CAAC,CAACO,eAAF;;AACA,QAAIP,CAAC,CAACQ,GAAF,KAAU,QAAV,IAAsBf,cAAc,CAACW,OAAzC,EAAkD;AAChDP,MAAAA,cAAc,CAAC,EAAD,CAAd;AACAJ,MAAAA,cAAc,CAACW,OAAf,CAAuBK,IAAvB;AACD;AACF,GANgC,EAM9B,EAN8B,CAAjC;AAQA,sBACEC;AAAK,IAAA,SAAS,EAAC,0BAAf;AAAA,2BACEC;AAAK,MAAA,SAAS,EAAC,4BAAf;AAAA,8BACED;AACE,QAAA,GAAG,EAAEjB,cADP;AAEE,QAAA,SAAS,EAAC,qCAFZ;AAGE,QAAA,QAAQ,EAAEK,YAHZ;AAIE,QAAA,SAAS,EAAEQ,aAJb;AAKE,QAAA,WAAW,EAAEd,MALf;AAME,QAAA,IAAI,EAAC,MANP;AAOE,QAAA,KAAK,EAAEI;AAPT,QADF,eAUEc;AACE,QAAA,SAAS,EAAC,aADZ;AAEE,QAAA,KAAK,EAAE;AAAEE,UAAAA,IAAI,EAAE,KAAR;AAAeC,UAAAA,QAAQ,EAAE;AAAzB,SAFT;AAAA,+BAIEH,IAACI,SAAD;AAAY,UAAA,SAAS,EAAC;AAAtB;AAJF,QAVF,EAgBGlB,WAAW,iBACVc;AACE,QAAA,SAAS,EAAC,qCADZ;AAEE,QAAA,OAAO,EAAEP,iBAFX;AAGE,QAAA,IAAI,EAAC,QAHP;AAAA,+BAKEO,IAACK,QAAD;AAAW,UAAA,SAAS,EAAC;AAArB;AALF,QAjBJ;AAAA;AADF,IADF;AA8BD;;AAED1B,WAAW,CAAC2B,SAAZ,GAAwB;AACtB1B,EAAAA,QAAQ,EAAE2B,SAAS,CAACC;AADE,CAAxB;;;;"}
1
+ {"version":3,"file":"SearchInput.js","sources":["../../../../src/components/Builder/SearchInput.js"],"sourcesContent":["import {\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport SearchIcon from '../../assets/search.svg';\nimport CrossIcon from '../../assets/svg/close.svg';\nimport { useTranslatedTexts } from '../../utils/hooks';\n\nconst SearchInput = ({\n onSearch,\n}) => {\n const { SEARCH } = useTranslatedTexts();\n const searchInputRef = useRef(null);\n const [searchValue, setSearchValue] = useState('');\n\n const handleSearch = useCallback(e => {\n const { value } = e?.target || {};\n setSearchValue(value);\n onSearch?.(value);\n }, [onSearch]);\n\n const handleClearSearch = useCallback(() => {\n setSearchValue('');\n onSearch?.('');\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [onSearch]);\n\n const handleKeyDown = useCallback(e => {\n e.stopPropagation();\n if (e.key === 'Escape' && searchInputRef.current) {\n setSearchValue('');\n searchInputRef.current.blur();\n }\n }, []);\n\n return (\n <div className=\"jfReport-searchContainer\">\n <div className=\"jfReport-search p-relative\">\n <input\n ref={searchInputRef}\n className=\"js-searchInput section-search-input\"\n onChange={handleSearch}\n onKeyDown={handleKeyDown}\n placeholder={SEARCH}\n type=\"text\"\n value={searchValue}\n />\n <span\n className=\"search-icon\"\n style={{\n left: '8px',\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-40%)',\n }}\n >\n <SearchIcon className=\"section-search-icon\" />\n </span>\n {searchValue && (\n <button\n className=\"section-search-button search-delete\"\n onClick={handleClearSearch}\n type=\"button\"\n >\n <CrossIcon className=\"section-search-icon delete\" />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nSearchInput.propTypes = {\n onSearch: PropTypes.func,\n};\n\nexport default SearchInput;\n"],"names":["SearchInput","onSearch","useTranslatedTexts","SEARCH","searchInputRef","useRef","useState","searchValue","setSearchValue","handleSearch","useCallback","e","target","value","handleClearSearch","current","focus","handleKeyDown","stopPropagation","key","blur","_jsx","_jsxs","left","position","top","transform","SearchIcon","CrossIcon","propTypes","PropTypes","func"],"mappings":";;;;;;;;;;;;;;;;;;;IAUMA,WAAW,GAAG,SAAdA,WAAc,OAEd;AAAA,MADJC,QACI,QADJA,QACI;;AACJ,4BAAmBC,kBAAkB,EAArC;AAAA,MAAQC,MAAR,uBAAQA,MAAR;;AACA,MAAMC,cAAc,GAAGC,MAAM,CAAC,IAAD,CAA7B;;AACA,kBAAsCC,QAAQ,CAAC,EAAD,CAA9C;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAEA,MAAMC,YAAY,GAAGC,WAAW,CAAC,UAAAC,CAAC,EAAI;AACpC,gBAAkB,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEC,MAAH,KAAa,EAA/B;AAAA,QAAQC,KAAR,SAAQA,KAAR;;AACAL,IAAAA,cAAc,CAACK,KAAD,CAAd;AACAZ,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAGY,KAAH,CAAR;AACD,GAJ+B,EAI7B,CAACZ,QAAD,CAJ6B,CAAhC;AAMA,MAAMa,iBAAiB,GAAGJ,WAAW,CAAC,YAAM;AAC1CF,IAAAA,cAAc,CAAC,EAAD,CAAd;AACAP,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAG,EAAH,CAAR;;AACA,QAAIG,cAAc,CAACW,OAAnB,EAA4B;AAC1BX,MAAAA,cAAc,CAACW,OAAf,CAAuBC,KAAvB;AACD;AACF,GANoC,EAMlC,CAACf,QAAD,CANkC,CAArC;AAQA,MAAMgB,aAAa,GAAGP,WAAW,CAAC,UAAAC,CAAC,EAAI;AACrCA,IAAAA,CAAC,CAACO,eAAF;;AACA,QAAIP,CAAC,CAACQ,GAAF,KAAU,QAAV,IAAsBf,cAAc,CAACW,OAAzC,EAAkD;AAChDP,MAAAA,cAAc,CAAC,EAAD,CAAd;AACAJ,MAAAA,cAAc,CAACW,OAAf,CAAuBK,IAAvB;AACD;AACF,GANgC,EAM9B,EAN8B,CAAjC;AAQA,sBACEC;AAAK,IAAA,SAAS,EAAC,0BAAf;AAAA,2BACEC;AAAK,MAAA,SAAS,EAAC,4BAAf;AAAA,8BACED;AACE,QAAA,GAAG,EAAEjB,cADP;AAEE,QAAA,SAAS,EAAC,qCAFZ;AAGE,QAAA,QAAQ,EAAEK,YAHZ;AAIE,QAAA,SAAS,EAAEQ,aAJb;AAKE,QAAA,WAAW,EAAEd,MALf;AAME,QAAA,IAAI,EAAC,MANP;AAOE,QAAA,KAAK,EAAEI;AAPT,QADF,eAUEc;AACE,QAAA,SAAS,EAAC,aADZ;AAEE,QAAA,KAAK,EAAE;AACLE,UAAAA,IAAI,EAAE,KADD;AAELC,UAAAA,QAAQ,EAAE,UAFL;AAGLC,UAAAA,GAAG,EAAE,KAHA;AAILC,UAAAA,SAAS,EAAE;AAJN,SAFT;AAAA,+BASEL,IAACM,SAAD;AAAY,UAAA,SAAS,EAAC;AAAtB;AATF,QAVF,EAqBGpB,WAAW,iBACVc;AACE,QAAA,SAAS,EAAC,qCADZ;AAEE,QAAA,OAAO,EAAEP,iBAFX;AAGE,QAAA,IAAI,EAAC,QAHP;AAAA,+BAKEO,IAACO,QAAD;AAAW,UAAA,SAAS,EAAC;AAArB;AALF,QAtBJ;AAAA;AADF,IADF;AAmCD;;AAED5B,WAAW,CAAC6B,SAAZ,GAAwB;AACtB5B,EAAAA,QAAQ,EAAE6B,SAAS,CAACC;AADE,CAAxB;;;;"}