@jotforminc/dnd-builder 3.1.0 → 3.2.0

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 (417) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/index.d.ts +428 -0
  3. package/lib/cjs/assets/search.svg.js +5 -2
  4. package/lib/cjs/assets/search.svg.js.map +1 -1
  5. package/lib/cjs/assets/svg/all_slides.svg.js +9 -29
  6. package/lib/cjs/assets/svg/all_slides.svg.js.map +1 -1
  7. package/lib/cjs/assets/svg/close.svg.js +4 -2
  8. package/lib/cjs/assets/svg/close.svg.js.map +1 -1
  9. package/lib/cjs/assets/svg/customize.svg.js +4 -2
  10. package/lib/cjs/assets/svg/customize.svg.js.map +1 -1
  11. package/lib/cjs/assets/svg/duplicate.svg.js +5 -2
  12. package/lib/cjs/assets/svg/duplicate.svg.js.map +1 -1
  13. package/lib/cjs/assets/svg/fit_screen.svg.js +7 -7
  14. package/lib/cjs/assets/svg/heart_rating.svg.js +5 -3
  15. package/lib/cjs/assets/svg/heart_rating.svg.js.map +1 -1
  16. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js +4 -2
  17. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js.map +1 -1
  18. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js +4 -2
  19. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js.map +1 -1
  20. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js +4 -2
  21. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js.map +1 -1
  22. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js +4 -2
  23. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js.map +1 -1
  24. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js +4 -2
  25. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js.map +1 -1
  26. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js +4 -2
  27. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js.map +1 -1
  28. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js +4 -2
  29. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js.map +1 -1
  30. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js +4 -2
  31. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js.map +1 -1
  32. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js +4 -2
  33. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js.map +1 -1
  34. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js +4 -2
  35. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js.map +1 -1
  36. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js +4 -2
  37. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js.map +1 -1
  38. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-cloud.svg.js +2 -2
  39. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-download.svg.js +4 -2
  40. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-download.svg.js.map +1 -1
  41. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js +4 -2
  42. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js.map +1 -1
  43. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js +4 -2
  44. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js.map +1 -1
  45. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js +4 -2
  46. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js.map +1 -1
  47. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-home.svg.js +4 -2
  48. package/lib/cjs/assets/svg/icon-selector/jfc_icon_solid-home.svg.js.map +1 -1
  49. package/lib/cjs/assets/svg/minus.svg.js +6 -9
  50. package/lib/cjs/assets/svg/minus.svg.js.map +1 -1
  51. package/lib/cjs/assets/svg/page-actions/duplicate_line.svg.js +5 -2
  52. package/lib/cjs/assets/svg/page-actions/duplicate_line.svg.js.map +1 -1
  53. package/lib/cjs/assets/svg/page-actions/trash_line.svg.js +5 -2
  54. package/lib/cjs/assets/svg/page-actions/trash_line.svg.js.map +1 -1
  55. package/lib/cjs/assets/svg/page_settings.svg.js +4 -4
  56. package/lib/cjs/assets/svg/plus.svg.js +5 -2
  57. package/lib/cjs/assets/svg/plus.svg.js.map +1 -1
  58. package/lib/cjs/assets/svg/presentation/attachment.svg.js +4 -2
  59. package/lib/cjs/assets/svg/presentation/attachment.svg.js.map +1 -1
  60. package/lib/cjs/assets/svg/presentation/download.svg.js +5 -2
  61. package/lib/cjs/assets/svg/presentation/download.svg.js.map +1 -1
  62. package/lib/cjs/assets/svg/presentation/enter_fullscreen.svg.js +8 -12
  63. package/lib/cjs/assets/svg/presentation/enter_fullscreen.svg.js.map +1 -1
  64. package/lib/cjs/assets/svg/presentation/exit_fullscreen.svg.js +8 -12
  65. package/lib/cjs/assets/svg/presentation/exit_fullscreen.svg.js.map +1 -1
  66. package/lib/cjs/assets/svg/presentation/eye.svg.js +6 -5
  67. package/lib/cjs/assets/svg/presentation/eye.svg.js.map +1 -1
  68. package/lib/cjs/assets/svg/presentation/key.svg.js +5 -3
  69. package/lib/cjs/assets/svg/presentation/key.svg.js.map +1 -1
  70. package/lib/cjs/assets/svg/presentation/pause.svg.js +4 -2
  71. package/lib/cjs/assets/svg/presentation/pause.svg.js.map +1 -1
  72. package/lib/cjs/assets/svg/presentation/pen.svg.js +4 -2
  73. package/lib/cjs/assets/svg/presentation/pen.svg.js.map +1 -1
  74. package/lib/cjs/assets/svg/presentation/play.svg.js +5 -3
  75. package/lib/cjs/assets/svg/presentation/play.svg.js.map +1 -1
  76. package/lib/cjs/assets/svg/presentation/print.svg.js +5 -2
  77. package/lib/cjs/assets/svg/presentation/print.svg.js.map +1 -1
  78. package/lib/cjs/assets/svg/presentation/share.svg.js +5 -2
  79. package/lib/cjs/assets/svg/presentation/share.svg.js.map +1 -1
  80. package/lib/cjs/assets/svg/rotate.svg.js +5 -2
  81. package/lib/cjs/assets/svg/rotate.svg.js.map +1 -1
  82. package/lib/cjs/assets/svg/settings/align_center.svg.js +5 -2
  83. package/lib/cjs/assets/svg/settings/align_center.svg.js.map +1 -1
  84. package/lib/cjs/assets/svg/settings/align_left.svg.js +5 -2
  85. package/lib/cjs/assets/svg/settings/align_left.svg.js.map +1 -1
  86. package/lib/cjs/assets/svg/settings/align_right.svg.js +5 -2
  87. package/lib/cjs/assets/svg/settings/align_right.svg.js.map +1 -1
  88. package/lib/cjs/assets/svg/settings/drag.svg.js +7 -26
  89. package/lib/cjs/assets/svg/settings/drag.svg.js.map +1 -1
  90. package/lib/cjs/assets/svg/settings/ellipse.svg.js +6 -5
  91. package/lib/cjs/assets/svg/settings/ellipse.svg.js.map +1 -1
  92. package/lib/cjs/assets/svg/settings/font_bold.svg.js +5 -2
  93. package/lib/cjs/assets/svg/settings/font_bold.svg.js.map +1 -1
  94. package/lib/cjs/assets/svg/settings/font_italic.svg.js +5 -2
  95. package/lib/cjs/assets/svg/settings/font_italic.svg.js.map +1 -1
  96. package/lib/cjs/assets/svg/settings/font_underline.svg.js +5 -2
  97. package/lib/cjs/assets/svg/settings/font_underline.svg.js.map +1 -1
  98. package/lib/cjs/assets/svg/settings/line.svg.js +8 -10
  99. package/lib/cjs/assets/svg/settings/line.svg.js.map +1 -1
  100. package/lib/cjs/assets/svg/settings/lock.svg.js +5 -2
  101. package/lib/cjs/assets/svg/settings/lock.svg.js.map +1 -1
  102. package/lib/cjs/assets/svg/settings/rectangle.svg.js +6 -4
  103. package/lib/cjs/assets/svg/settings/rectangle.svg.js.map +1 -1
  104. package/lib/cjs/assets/svg/settings/star.svg.js +6 -4
  105. package/lib/cjs/assets/svg/settings/star.svg.js.map +1 -1
  106. package/lib/cjs/assets/svg/settings/triangle.svg.js +6 -4
  107. package/lib/cjs/assets/svg/settings/triangle.svg.js.map +1 -1
  108. package/lib/cjs/assets/svg/settings/unlock.svg.js +5 -2
  109. package/lib/cjs/assets/svg/settings/unlock.svg.js.map +1 -1
  110. package/lib/cjs/assets/svg/settings.svg.js +3 -2
  111. package/lib/cjs/assets/svg/settings.svg.js.map +1 -1
  112. package/lib/cjs/assets/svg/settings_toggle.svg.js +7 -5
  113. package/lib/cjs/assets/svg/settings_toggle.svg.js.map +1 -1
  114. package/lib/cjs/assets/svg/slides.svg.js +8 -14
  115. package/lib/cjs/assets/svg/slides.svg.js.map +1 -1
  116. package/lib/cjs/assets/svg/star_rating.svg.js +5 -2
  117. package/lib/cjs/assets/svg/star_rating.svg.js.map +1 -1
  118. package/lib/cjs/assets/svg/toolbox/email.svg.js +5 -2
  119. package/lib/cjs/assets/svg/toolbox/email.svg.js.map +1 -1
  120. package/lib/cjs/assets/svg/toolbox/header.svg.js +5 -2
  121. package/lib/cjs/assets/svg/toolbox/header.svg.js.map +1 -1
  122. package/lib/cjs/assets/svg/toolbox/icon.svg.js +6 -11
  123. package/lib/cjs/assets/svg/toolbox/icon.svg.js.map +1 -1
  124. package/lib/cjs/assets/svg/toolbox/image.svg.js +7 -7
  125. package/lib/cjs/assets/svg/toolbox/label.svg.js +4 -2
  126. package/lib/cjs/assets/svg/toolbox/label.svg.js.map +1 -1
  127. package/lib/cjs/assets/svg/toolbox/multiple_choice.svg.js +6 -5
  128. package/lib/cjs/assets/svg/toolbox/multiple_choice.svg.js.map +1 -1
  129. package/lib/cjs/assets/svg/toolbox/shapes.svg.js +7 -10
  130. package/lib/cjs/assets/svg/toolbox/shapes.svg.js.map +1 -1
  131. package/lib/cjs/assets/svg/toolbox/single_choice.svg.js +5 -2
  132. package/lib/cjs/assets/svg/toolbox/single_choice.svg.js.map +1 -1
  133. package/lib/cjs/assets/svg/toolbox/star.svg.js +5 -2
  134. package/lib/cjs/assets/svg/toolbox/star.svg.js.map +1 -1
  135. package/lib/cjs/assets/svg/toolbox/table.svg.js +5 -2
  136. package/lib/cjs/assets/svg/toolbox/table.svg.js.map +1 -1
  137. package/lib/cjs/assets/svg/toolbox/text.svg.js +5 -2
  138. package/lib/cjs/assets/svg/toolbox/text.svg.js.map +1 -1
  139. package/lib/cjs/assets/svg/toolbox/text_element.svg.js +5 -2
  140. package/lib/cjs/assets/svg/toolbox/text_element.svg.js.map +1 -1
  141. package/lib/cjs/assets/svg/trash.svg.js +5 -2
  142. package/lib/cjs/assets/svg/trash.svg.js.map +1 -1
  143. package/lib/cjs/components/AlignmentGuides.js +28 -18
  144. package/lib/cjs/components/AlignmentGuides.js.map +1 -1
  145. package/lib/cjs/components/Builder/ContextMenu.js +4 -1
  146. package/lib/cjs/components/Builder/ContextMenu.js.map +1 -1
  147. package/lib/cjs/components/Builder/DraggableLayer.js +40 -0
  148. package/lib/cjs/components/Builder/DraggableLayer.js.map +1 -0
  149. package/lib/cjs/components/Builder/Element.js +7 -3
  150. package/lib/cjs/components/Builder/Element.js.map +1 -1
  151. package/lib/cjs/components/Builder/Page.js +58 -65
  152. package/lib/cjs/components/Builder/Page.js.map +1 -1
  153. package/lib/cjs/components/Builder/Scene.js +33 -255
  154. package/lib/cjs/components/Builder/Scene.js.map +1 -1
  155. package/lib/cjs/components/Builder/SearchInput.js +3 -1
  156. package/lib/cjs/components/Builder/SearchInput.js.map +1 -1
  157. package/lib/cjs/components/Builder/SelectionBox.js +48 -0
  158. package/lib/cjs/components/Builder/SelectionBox.js.map +1 -0
  159. package/lib/cjs/components/DraggableItem/DraggableItem.js +78 -135
  160. package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
  161. package/lib/cjs/components/DraggableItem/DraggableItemActions.js +69 -29
  162. package/lib/cjs/components/DraggableItem/DraggableItemActions.js.map +1 -1
  163. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +96 -220
  164. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  165. package/lib/cjs/components/PageItemResizer.js +37 -43
  166. package/lib/cjs/components/PageItemResizer.js.map +1 -1
  167. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js +1 -3
  168. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  169. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js +0 -6
  170. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  171. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js +1 -4
  172. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  173. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  174. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  175. package/lib/cjs/components/Panels/RightPanel/RightPanel.js +7 -7
  176. package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
  177. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  178. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  179. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js +1 -3
  180. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  181. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  182. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  183. package/lib/cjs/components/ReportItemsWrapper.js +5 -11
  184. package/lib/cjs/components/ReportItemsWrapper.js.map +1 -1
  185. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  186. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  187. package/lib/cjs/components/Settings/PageLayer/LayerItem.js +12 -7
  188. package/lib/cjs/components/Settings/PageLayer/LayerItem.js.map +1 -1
  189. package/lib/cjs/components/Settings/PageLayer/PageLayer.js +2 -4
  190. package/lib/cjs/components/Settings/PageLayer/PageLayer.js.map +1 -1
  191. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  192. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  193. package/lib/cjs/constants/texts.js +0 -1
  194. package/lib/cjs/constants/texts.js.map +1 -1
  195. package/lib/cjs/contexts/BuilderContext.js +47 -23
  196. package/lib/cjs/contexts/BuilderContext.js.map +1 -1
  197. package/lib/cjs/styles/_jfDarkTheme.scss +0 -5
  198. package/lib/cjs/styles/_jfPrint.scss +0 -4
  199. package/lib/cjs/styles/_jfReportsPages.scss +12 -3
  200. package/lib/cjs/styles/_jfReportsSVG.scss +6 -6
  201. package/lib/cjs/styles/_jfSearchInput.scss +0 -2
  202. package/lib/cjs/utils/functions.js +129 -57
  203. package/lib/cjs/utils/functions.js.map +1 -1
  204. package/lib/cjs/utils/hooks.js +37 -0
  205. package/lib/cjs/utils/hooks.js.map +1 -1
  206. package/lib/cjs/utils/useKeyboardActions.js +263 -0
  207. package/lib/cjs/utils/useKeyboardActions.js.map +1 -0
  208. package/lib/cjs/utils/useMarqueeSelection.js +156 -0
  209. package/lib/cjs/utils/useMarqueeSelection.js.map +1 -0
  210. package/lib/esm/assets/search.svg.js +5 -2
  211. package/lib/esm/assets/search.svg.js.map +1 -1
  212. package/lib/esm/assets/svg/all_slides.svg.js +9 -29
  213. package/lib/esm/assets/svg/all_slides.svg.js.map +1 -1
  214. package/lib/esm/assets/svg/close.svg.js +4 -2
  215. package/lib/esm/assets/svg/close.svg.js.map +1 -1
  216. package/lib/esm/assets/svg/customize.svg.js +4 -2
  217. package/lib/esm/assets/svg/customize.svg.js.map +1 -1
  218. package/lib/esm/assets/svg/duplicate.svg.js +5 -2
  219. package/lib/esm/assets/svg/duplicate.svg.js.map +1 -1
  220. package/lib/esm/assets/svg/fit_screen.svg.js +7 -7
  221. package/lib/esm/assets/svg/heart_rating.svg.js +5 -3
  222. package/lib/esm/assets/svg/heart_rating.svg.js.map +1 -1
  223. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js +4 -2
  224. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-left.svg.js.map +1 -1
  225. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js +4 -2
  226. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down-right.svg.js.map +1 -1
  227. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js +4 -2
  228. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-down.svg.js.map +1 -1
  229. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js +4 -2
  230. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-left.svg.js.map +1 -1
  231. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js +4 -2
  232. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-right.svg.js.map +1 -1
  233. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js +4 -2
  234. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-left.svg.js.map +1 -1
  235. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js +4 -2
  236. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-arrow-up-right.svg.js.map +1 -1
  237. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js +4 -2
  238. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-down-circle.svg.js.map +1 -1
  239. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js +4 -2
  240. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-left-circle.svg.js.map +1 -1
  241. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js +4 -2
  242. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-right-circle.svg.js.map +1 -1
  243. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js +4 -2
  244. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-caret-up-circle.svg.js.map +1 -1
  245. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-cloud.svg.js +2 -2
  246. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-download.svg.js +4 -2
  247. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-download.svg.js.map +1 -1
  248. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js +4 -2
  249. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-eye.svg.js.map +1 -1
  250. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js +4 -2
  251. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-folder.svg.js.map +1 -1
  252. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js +4 -2
  253. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-heart.svg.js.map +1 -1
  254. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-home.svg.js +4 -2
  255. package/lib/esm/assets/svg/icon-selector/jfc_icon_solid-home.svg.js.map +1 -1
  256. package/lib/esm/assets/svg/minus.svg.js +6 -9
  257. package/lib/esm/assets/svg/minus.svg.js.map +1 -1
  258. package/lib/esm/assets/svg/page-actions/duplicate_line.svg.js +5 -2
  259. package/lib/esm/assets/svg/page-actions/duplicate_line.svg.js.map +1 -1
  260. package/lib/esm/assets/svg/page-actions/trash_line.svg.js +5 -2
  261. package/lib/esm/assets/svg/page-actions/trash_line.svg.js.map +1 -1
  262. package/lib/esm/assets/svg/page_settings.svg.js +4 -4
  263. package/lib/esm/assets/svg/plus.svg.js +5 -2
  264. package/lib/esm/assets/svg/plus.svg.js.map +1 -1
  265. package/lib/esm/assets/svg/presentation/attachment.svg.js +4 -2
  266. package/lib/esm/assets/svg/presentation/attachment.svg.js.map +1 -1
  267. package/lib/esm/assets/svg/presentation/download.svg.js +5 -2
  268. package/lib/esm/assets/svg/presentation/download.svg.js.map +1 -1
  269. package/lib/esm/assets/svg/presentation/enter_fullscreen.svg.js +8 -12
  270. package/lib/esm/assets/svg/presentation/enter_fullscreen.svg.js.map +1 -1
  271. package/lib/esm/assets/svg/presentation/exit_fullscreen.svg.js +8 -12
  272. package/lib/esm/assets/svg/presentation/exit_fullscreen.svg.js.map +1 -1
  273. package/lib/esm/assets/svg/presentation/eye.svg.js +6 -5
  274. package/lib/esm/assets/svg/presentation/eye.svg.js.map +1 -1
  275. package/lib/esm/assets/svg/presentation/key.svg.js +5 -3
  276. package/lib/esm/assets/svg/presentation/key.svg.js.map +1 -1
  277. package/lib/esm/assets/svg/presentation/pause.svg.js +4 -2
  278. package/lib/esm/assets/svg/presentation/pause.svg.js.map +1 -1
  279. package/lib/esm/assets/svg/presentation/pen.svg.js +4 -2
  280. package/lib/esm/assets/svg/presentation/pen.svg.js.map +1 -1
  281. package/lib/esm/assets/svg/presentation/play.svg.js +5 -3
  282. package/lib/esm/assets/svg/presentation/play.svg.js.map +1 -1
  283. package/lib/esm/assets/svg/presentation/print.svg.js +5 -2
  284. package/lib/esm/assets/svg/presentation/print.svg.js.map +1 -1
  285. package/lib/esm/assets/svg/presentation/share.svg.js +5 -2
  286. package/lib/esm/assets/svg/presentation/share.svg.js.map +1 -1
  287. package/lib/esm/assets/svg/rotate.svg.js +5 -2
  288. package/lib/esm/assets/svg/rotate.svg.js.map +1 -1
  289. package/lib/esm/assets/svg/settings/align_center.svg.js +5 -2
  290. package/lib/esm/assets/svg/settings/align_center.svg.js.map +1 -1
  291. package/lib/esm/assets/svg/settings/align_left.svg.js +5 -2
  292. package/lib/esm/assets/svg/settings/align_left.svg.js.map +1 -1
  293. package/lib/esm/assets/svg/settings/align_right.svg.js +5 -2
  294. package/lib/esm/assets/svg/settings/align_right.svg.js.map +1 -1
  295. package/lib/esm/assets/svg/settings/drag.svg.js +7 -26
  296. package/lib/esm/assets/svg/settings/drag.svg.js.map +1 -1
  297. package/lib/esm/assets/svg/settings/ellipse.svg.js +6 -5
  298. package/lib/esm/assets/svg/settings/ellipse.svg.js.map +1 -1
  299. package/lib/esm/assets/svg/settings/font_bold.svg.js +5 -2
  300. package/lib/esm/assets/svg/settings/font_bold.svg.js.map +1 -1
  301. package/lib/esm/assets/svg/settings/font_italic.svg.js +5 -2
  302. package/lib/esm/assets/svg/settings/font_italic.svg.js.map +1 -1
  303. package/lib/esm/assets/svg/settings/font_underline.svg.js +5 -2
  304. package/lib/esm/assets/svg/settings/font_underline.svg.js.map +1 -1
  305. package/lib/esm/assets/svg/settings/line.svg.js +8 -10
  306. package/lib/esm/assets/svg/settings/line.svg.js.map +1 -1
  307. package/lib/esm/assets/svg/settings/lock.svg.js +5 -2
  308. package/lib/esm/assets/svg/settings/lock.svg.js.map +1 -1
  309. package/lib/esm/assets/svg/settings/rectangle.svg.js +6 -4
  310. package/lib/esm/assets/svg/settings/rectangle.svg.js.map +1 -1
  311. package/lib/esm/assets/svg/settings/star.svg.js +6 -4
  312. package/lib/esm/assets/svg/settings/star.svg.js.map +1 -1
  313. package/lib/esm/assets/svg/settings/triangle.svg.js +6 -4
  314. package/lib/esm/assets/svg/settings/triangle.svg.js.map +1 -1
  315. package/lib/esm/assets/svg/settings/unlock.svg.js +5 -2
  316. package/lib/esm/assets/svg/settings/unlock.svg.js.map +1 -1
  317. package/lib/esm/assets/svg/settings.svg.js +3 -2
  318. package/lib/esm/assets/svg/settings.svg.js.map +1 -1
  319. package/lib/esm/assets/svg/settings_toggle.svg.js +7 -5
  320. package/lib/esm/assets/svg/settings_toggle.svg.js.map +1 -1
  321. package/lib/esm/assets/svg/slides.svg.js +8 -14
  322. package/lib/esm/assets/svg/slides.svg.js.map +1 -1
  323. package/lib/esm/assets/svg/star_rating.svg.js +5 -2
  324. package/lib/esm/assets/svg/star_rating.svg.js.map +1 -1
  325. package/lib/esm/assets/svg/toolbox/email.svg.js +5 -2
  326. package/lib/esm/assets/svg/toolbox/email.svg.js.map +1 -1
  327. package/lib/esm/assets/svg/toolbox/header.svg.js +5 -2
  328. package/lib/esm/assets/svg/toolbox/header.svg.js.map +1 -1
  329. package/lib/esm/assets/svg/toolbox/icon.svg.js +6 -11
  330. package/lib/esm/assets/svg/toolbox/icon.svg.js.map +1 -1
  331. package/lib/esm/assets/svg/toolbox/image.svg.js +7 -7
  332. package/lib/esm/assets/svg/toolbox/label.svg.js +4 -2
  333. package/lib/esm/assets/svg/toolbox/label.svg.js.map +1 -1
  334. package/lib/esm/assets/svg/toolbox/multiple_choice.svg.js +6 -5
  335. package/lib/esm/assets/svg/toolbox/multiple_choice.svg.js.map +1 -1
  336. package/lib/esm/assets/svg/toolbox/shapes.svg.js +7 -10
  337. package/lib/esm/assets/svg/toolbox/shapes.svg.js.map +1 -1
  338. package/lib/esm/assets/svg/toolbox/single_choice.svg.js +5 -2
  339. package/lib/esm/assets/svg/toolbox/single_choice.svg.js.map +1 -1
  340. package/lib/esm/assets/svg/toolbox/star.svg.js +5 -2
  341. package/lib/esm/assets/svg/toolbox/star.svg.js.map +1 -1
  342. package/lib/esm/assets/svg/toolbox/table.svg.js +5 -2
  343. package/lib/esm/assets/svg/toolbox/table.svg.js.map +1 -1
  344. package/lib/esm/assets/svg/toolbox/text.svg.js +5 -2
  345. package/lib/esm/assets/svg/toolbox/text.svg.js.map +1 -1
  346. package/lib/esm/assets/svg/toolbox/text_element.svg.js +5 -2
  347. package/lib/esm/assets/svg/toolbox/text_element.svg.js.map +1 -1
  348. package/lib/esm/assets/svg/trash.svg.js +5 -2
  349. package/lib/esm/assets/svg/trash.svg.js.map +1 -1
  350. package/lib/esm/components/AlignmentGuides.js +28 -18
  351. package/lib/esm/components/AlignmentGuides.js.map +1 -1
  352. package/lib/esm/components/Builder/ContextMenu.js +4 -1
  353. package/lib/esm/components/Builder/ContextMenu.js.map +1 -1
  354. package/lib/esm/components/Builder/DraggableLayer.js +34 -0
  355. package/lib/esm/components/Builder/DraggableLayer.js.map +1 -0
  356. package/lib/esm/components/Builder/Element.js +7 -3
  357. package/lib/esm/components/Builder/Element.js.map +1 -1
  358. package/lib/esm/components/Builder/Page.js +60 -67
  359. package/lib/esm/components/Builder/Page.js.map +1 -1
  360. package/lib/esm/components/Builder/Scene.js +35 -257
  361. package/lib/esm/components/Builder/Scene.js.map +1 -1
  362. package/lib/esm/components/Builder/SearchInput.js +3 -1
  363. package/lib/esm/components/Builder/SearchInput.js.map +1 -1
  364. package/lib/esm/components/Builder/SelectionBox.js +42 -0
  365. package/lib/esm/components/Builder/SelectionBox.js.map +1 -0
  366. package/lib/esm/components/DraggableItem/DraggableItem.js +80 -137
  367. package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
  368. package/lib/esm/components/DraggableItem/DraggableItemActions.js +72 -28
  369. package/lib/esm/components/DraggableItem/DraggableItemActions.js.map +1 -1
  370. package/lib/esm/components/DraggableItem/DraggableItemLayer.js +99 -222
  371. package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  372. package/lib/esm/components/PageItemResizer.js +38 -44
  373. package/lib/esm/components/PageItemResizer.js.map +1 -1
  374. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js +2 -4
  375. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  376. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js +0 -6
  377. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  378. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js +3 -6
  379. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  380. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  381. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  382. package/lib/esm/components/Panels/RightPanel/RightPanel.js +7 -7
  383. package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
  384. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  385. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  386. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js +2 -4
  387. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  388. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  389. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  390. package/lib/esm/components/ReportItemsWrapper.js +5 -11
  391. package/lib/esm/components/ReportItemsWrapper.js.map +1 -1
  392. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  393. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  394. package/lib/esm/components/Settings/PageLayer/LayerItem.js +12 -7
  395. package/lib/esm/components/Settings/PageLayer/LayerItem.js.map +1 -1
  396. package/lib/esm/components/Settings/PageLayer/PageLayer.js +2 -4
  397. package/lib/esm/components/Settings/PageLayer/PageLayer.js.map +1 -1
  398. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  399. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  400. package/lib/esm/constants/texts.js +0 -1
  401. package/lib/esm/constants/texts.js.map +1 -1
  402. package/lib/esm/contexts/BuilderContext.js +47 -23
  403. package/lib/esm/contexts/BuilderContext.js.map +1 -1
  404. package/lib/esm/styles/_jfDarkTheme.scss +0 -5
  405. package/lib/esm/styles/_jfPrint.scss +0 -4
  406. package/lib/esm/styles/_jfReportsPages.scss +12 -3
  407. package/lib/esm/styles/_jfReportsSVG.scss +6 -6
  408. package/lib/esm/styles/_jfSearchInput.scss +0 -2
  409. package/lib/esm/utils/functions.js +126 -56
  410. package/lib/esm/utils/functions.js.map +1 -1
  411. package/lib/esm/utils/hooks.js +37 -1
  412. package/lib/esm/utils/hooks.js.map +1 -1
  413. package/lib/esm/utils/useKeyboardActions.js +261 -0
  414. package/lib/esm/utils/useKeyboardActions.js.map +1 -0
  415. package/lib/esm/utils/useMarqueeSelection.js +154 -0
  416. package/lib/esm/utils/useMarqueeSelection.js.map +1 -0
  417. package/package.json +11 -7
@@ -1,8 +1,5 @@
1
1
  'use strict';
2
2
 
3
- require('core-js/modules/es.array.find.js');
4
- require('core-js/modules/es.array.find-index.js');
5
- require('core-js/modules/es.array.includes.js');
6
3
  require('core-js/modules/es.array.map.js');
7
4
  require('core-js/modules/es.number.constructor.js');
8
5
  require('core-js/modules/es.number.is-nan.js');
@@ -16,14 +13,14 @@ var ContextMenu = require('./ContextMenu.js');
16
13
  var PageActions = require('./PageActions.js');
17
14
  var PageAdder = require('./PageAdder.js');
18
15
  var ZoomControls = require('./ZoomControls.js');
16
+ var SelectionBox = require('./SelectionBox.js');
19
17
  var BuilderContext = require('../../contexts/BuilderContext.js');
20
18
  var PropContext = require('../../contexts/PropContext.js');
21
19
  var Page = require('./Page.js');
22
20
  var functions = require('../../utils/functions.js');
23
- var hooks = require('../../utils/hooks.js');
24
- var DraggableItemLayer = require('../DraggableItem/DraggableItemLayer.js');
25
- var generateId = require('../../utils/generateId.js');
26
- var eventIgnoredRoles = require('../../constants/eventIgnoredRoles.js');
21
+ var DraggableLayer = require('./DraggableLayer.js');
22
+ var useKeyboardActions = require('../../utils/useKeyboardActions.js');
23
+ var useMarqueeSelection = require('../../utils/useMarqueeSelection.js');
27
24
  var jsxRuntime = require('react/jsx-runtime');
28
25
 
29
26
  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; }
@@ -32,76 +29,45 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
32
29
 
33
30
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
34
31
 
35
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
36
-
37
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
-
39
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
40
-
41
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
42
-
43
- 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; }
44
-
45
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
46
-
47
32
  var Scene = function Scene() {
48
33
  var pages = PropContext.usePropStore(function (state) {
49
34
  return state.pages;
50
35
  });
51
- var onItemAdd = PropContext.usePropStore(function (state) {
52
- return state.onItemAdd;
53
- });
54
- var onItemRemove = PropContext.usePropStore(function (state) {
55
- return state.onItemRemove;
56
- });
57
- var onAnEventTrigger = PropContext.usePropStore(function (state) {
58
- return state.onAnEventTrigger;
59
- });
60
36
  var settings = PropContext.usePropStore(function (state) {
61
37
  return state.settings;
62
38
  });
63
- var onItemChange = PropContext.usePropStore(function (state) {
64
- return state.onItemChange;
65
- });
66
- var activeElement = BuilderContext.useBuilderStore(function (state) {
67
- return state.activeElement;
68
- });
69
39
  var contextMenuProps = BuilderContext.useBuilderStore(function (state) {
70
40
  return state.contextMenuProps;
71
41
  });
72
- var isRightPanelOpen = BuilderContext.useBuilderStore(function (state) {
73
- return state.isRightPanelOpen;
74
- });
75
- var setActiveElement = BuilderContext.useBuilderStore(function (state) {
76
- return state.setActiveElement;
77
- });
78
42
  var setContextMenuProps = BuilderContext.useBuilderStore(function (state) {
79
43
  return state.setContextMenuProps;
80
44
  });
81
- var setIsRightPanelOpen = BuilderContext.useBuilderStore(function (state) {
82
- return state.setIsRightPanelOpen;
45
+ var setGuides = BuilderContext.useBuilderStore(function (state) {
46
+ return state.setGuides;
83
47
  });
84
48
  var zoom = BuilderContext.useBuilderStore(function (state) {
85
49
  return state.zoom;
86
50
  });
87
-
88
- var _useState = React.useState(null),
89
- _useState2 = _slicedToArray(_useState, 2),
90
- itemToPaste = _useState2[0],
91
- setItemToPaste = _useState2[1];
92
-
93
51
  var lastScrollPosition = BuilderContext.useBuilderStore(function (state) {
94
52
  return state.lastScrollPosition;
95
53
  });
96
54
  var pageStyles = React.useRef({});
97
55
  var pageContainerStyles = React.useRef({});
98
56
  var viewPortRef = React.useRef({});
57
+ var canvasRef = React.useRef(null);
99
58
  /* Page Refs */
100
59
 
101
60
  var refs = React.useRef(pages.reduce(function (acc, curr) {
102
61
  acc[curr.id] = /*#__PURE__*/React.createRef(null);
103
62
  return acc;
104
- }, {})); // Update refs when new pages are added
63
+ }, {})); // Custom hooks
64
+
65
+ useKeyboardActions();
66
+
67
+ var _useMarqueeSelection = useMarqueeSelection(canvasRef),
68
+ selectionBox = _useMarqueeSelection.selectionBox,
69
+ selectionPageId = _useMarqueeSelection.selectionPageId; // Update refs when new pages are added
70
+
105
71
 
106
72
  React.useEffect(function () {
107
73
  pages.forEach(function (page) {
@@ -109,13 +75,10 @@ var Scene = function Scene() {
109
75
  refs.current[page.id] = /*#__PURE__*/React.createRef(null);
110
76
  }
111
77
  });
112
- }, [pages]);
113
- var isMultipleItemSelected = activeElement !== null && activeElement.length > 1;
114
- /* Calculate snap guides */
78
+ }, [pages]); // Calculate guides for snap functionality
115
79
 
116
- var keyDownCount = React.useRef(null);
117
- var guides = React.useMemo(function () {
118
- return pages.reduce(function (acc, page) {
80
+ React.useEffect(function () {
81
+ setGuides(pages.reduce(function (acc, page) {
119
82
  var _pageGuides = {};
120
83
  var pageRef = refs.current[page.id];
121
84
 
@@ -150,201 +113,14 @@ var Scene = function Scene() {
150
113
 
151
114
  acc[page.id] = _pageGuides;
152
115
  return acc;
153
- }, {});
154
- }, [pages, zoom]);
116
+ }, {}));
117
+ }, [pages, zoom, setGuides]); // Restore scroll position after mode change
118
+
155
119
  React.useEffect(function () {
156
120
  if (viewPortRef.current) {
157
121
  viewPortRef.current.scrollTop = lastScrollPosition;
158
122
  }
159
- }, [lastScrollPosition]); // set last scroll position after changing mode
160
-
161
- var foundItem = functions.findItemById(activeElement === null ? null : activeElement[0], pages);
162
- var selectedItems = functions.getSelectedItems(activeElement, pages);
163
-
164
- var moveItemWithKeyboard = function moveItemWithKeyboard(event, direction, value) {
165
- event.preventDefault();
166
- selectedItems.forEach(function (item) {
167
- if (item.isLocked) {
168
- return false;
169
- }
170
-
171
- onItemChange({
172
- id: item.id
173
- }, _objectSpread(_objectSpread({}, item), {}, _defineProperty({}, direction, item[direction] + value)));
174
- });
175
- };
176
-
177
- var selectNextOrPrevElement = function selectNextOrPrevElement(event, deletedItem) {
178
- if (event.preventDefault) event.preventDefault();
179
- var referenceItem = deletedItem ? deletedItem : foundItem;
180
- var page = pages.find(function (_page) {
181
- return _page.id === referenceItem.pageID;
182
- });
183
- if (!page || page && !page.items.length) return setActiveElement(null);
184
- var items = page.items;
185
- var currentIndex = items.findIndex(function (item) {
186
- return item.id === referenceItem.id;
187
- }); // Pages are not updated in time so here is an unnecessary check
188
-
189
- if (items.length === 1 && deletedItem) {
190
- return setActiveElement(null);
191
- }
192
-
193
- if (event.shiftKey) {
194
- if (items[currentIndex - 1]) setActiveElement(items[currentIndex - 1].id);else setActiveElement(items[items.length - 1].id);
195
- } else if (items[currentIndex + 1]) {
196
- setActiveElement(items[currentIndex + 1].id);
197
- } else setActiveElement(items[0].id);
198
- };
199
-
200
- var onItemRemoveFromPage = function onItemRemoveFromPage(e) {
201
- // Firefox updates browser history on backspace
202
- e.preventDefault();
203
- if (isMultipleItemSelected) return;
204
-
205
- if (foundItem.isLocked) {
206
- return false;
207
- }
208
-
209
- setActiveElement(null);
210
- onItemRemove(foundItem);
211
- selectNextOrPrevElement({
212
- shiftKey: false
213
- }, foundItem);
214
- onAnEventTrigger('removeItem', foundItem.itemType);
215
- };
216
-
217
- var handlePaste = function handlePaste() {
218
- if (isMultipleItemSelected) return;
219
- var itemID = generateId();
220
- var pageID = functions.getMostVisiblePage(true);
221
- var offset = itemToPaste.pageID === pageID ? 50 : 0;
222
-
223
- var item = _objectSpread(_objectSpread({}, itemToPaste), {}, {
224
- id: itemID,
225
- left: itemToPaste.left + offset,
226
- pageID: pageID,
227
- top: itemToPaste.top + offset
228
- });
229
-
230
- onItemAdd(item);
231
- onAnEventTrigger('pasteItem', itemToPaste.itemType);
232
- setActiveElement(itemID); // set as last reference to paste
233
-
234
- setItemToPaste(item);
235
- };
236
-
237
- var keyboardActions = function keyboardActions(event) {
238
- var key = event.key,
239
- metaKey = event.metaKey,
240
- shiftKey = event.shiftKey;
241
-
242
- if (metaKey) {
243
- if (key === 'l') {
244
- // Lock
245
- if (isMultipleItemSelected) return;
246
- event.preventDefault(); // Dont focus to URL bar
247
-
248
- onAnEventTrigger(foundItem.isLocked ? 'unlockReportItem' : 'lockReportItem', foundItem.itemType);
249
- onItemChange({
250
- id: foundItem.id
251
- }, {
252
- isLocked: foundItem.isLocked ? false : true
253
- });
254
- return;
255
- }
256
-
257
- if (key === 'c' || key === 'x') {
258
- if (isMultipleItemSelected) return; // Copy or Cut
259
-
260
- if (key === 'x') {
261
- onItemRemoveFromPage(event);
262
- onAnEventTrigger('cutItem', foundItem.itemType);
263
- } else {
264
- onAnEventTrigger('copyItem', foundItem.itemType);
265
- }
266
-
267
- setItemToPaste(foundItem);
268
- return;
269
- }
270
-
271
- if (foundItem && key === 'd') {
272
- if (isMultipleItemSelected) return; // Duplicate
273
-
274
- event.preventDefault();
275
- var itemID = generateId();
276
- onItemAdd(_objectSpread(_objectSpread({}, foundItem), {}, {
277
- id: itemID,
278
- left: foundItem.left + 50,
279
- top: foundItem.top + 50
280
- }));
281
- onAnEventTrigger('duplicateItem', foundItem.itemType);
282
- setActiveElement(itemID);
283
-
284
- if (!isRightPanelOpen) {
285
- setIsRightPanelOpen(true);
286
- }
287
-
288
- return;
289
- }
290
- }
291
-
292
- keyDownCount.current++;
293
- var movementValue = shiftKey ? 10 : 1 + keyDownCount.current; // Others
294
-
295
- switch (key) {
296
- case 'Backspace':
297
- return onItemRemoveFromPage(event);
298
-
299
- case 'Delete':
300
- return onItemRemoveFromPage(event);
301
-
302
- case 'Escape':
303
- return setActiveElement(null);
304
-
305
- case 'ArrowLeft':
306
- return moveItemWithKeyboard(event, 'left', -movementValue);
307
-
308
- case 'ArrowUp':
309
- return moveItemWithKeyboard(event, 'top', -movementValue);
310
-
311
- case 'ArrowRight':
312
- return moveItemWithKeyboard(event, 'left', movementValue);
313
-
314
- case 'ArrowDown':
315
- return moveItemWithKeyboard(event, 'top', movementValue);
316
-
317
- case 'Tab':
318
- return selectNextOrPrevElement(event);
319
- }
320
- };
321
-
322
- var shouldSuppressKeyboardEvent = function shouldSuppressKeyboardEvent(e) {
323
- return eventIgnoredRoles.EVENT_IGNORED_ROLES.some(function (role) {
324
- return e.target.closest("[role=".concat(role, "]"));
325
- });
326
- };
327
-
328
- var handleKeyboardEvent = function handleKeyboardEvent(e) {
329
- var shouldPaste = itemToPaste && e.key === 'v' && e.metaKey;
330
-
331
- if (shouldSuppressKeyboardEvent(e)) {
332
- return;
333
- }
334
-
335
- if (activeElement && !shouldPaste) {
336
- var arrowKeyCodes = ['ArrowLeft', 'ArrowUp', 'ArrowDown', 'ArrowBottom'];
337
- if (arrowKeyCodes.includes(e.key)) e.preventDefault();
338
- keyboardActions(e);
339
- } else if (shouldPaste) {
340
- handlePaste();
341
- }
342
- };
343
-
344
- hooks.useEventListener('keydown', handleKeyboardEvent);
345
- hooks.useEventListener('keyup', function () {
346
- keyDownCount.current = 0;
347
- });
123
+ }, [lastScrollPosition]);
348
124
  var _settings$reportLayou = settings.reportLayoutHeight,
349
125
  reportLayoutHeight = _settings$reportLayou === void 0 ? 794 : _settings$reportLayou,
350
126
  _settings$reportLayou2 = settings.reportLayoutWidth,
@@ -368,15 +144,14 @@ var Scene = function Scene() {
368
144
  return /*#__PURE__*/jsxRuntime.jsxs("main", {
369
145
  // Builder.js
370
146
  className: classNames.mainWrapper,
371
- children: [/*#__PURE__*/jsxRuntime.jsx(DraggableItemLayer, {
372
- guides: guides,
373
- pageRefs: refs.current,
374
- pages: pages
147
+ children: [/*#__PURE__*/jsxRuntime.jsx(DraggableLayer, {
148
+ pageRefs: refs.current
375
149
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
376
150
  ref: viewPortRef,
377
151
  className: classNames.viewport,
378
152
  "data-zoom": zoom,
379
153
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
154
+ ref: canvasRef,
380
155
  className: classNames.canvas,
381
156
  children: [pages.map(function (page, index) {
382
157
  return (
@@ -386,20 +161,23 @@ var Scene = function Scene() {
386
161
  children: [/*#__PURE__*/jsxRuntime.jsx(PageActions, {
387
162
  order: page.order,
388
163
  pageID: page.id
389
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
164
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
390
165
  ref: refs.current[page.id],
391
166
  className: classNames.page,
392
167
  "data-id": page.id,
393
168
  "data-order": page.order,
394
169
  id: "presentation-page-".concat(page.id.toString()),
395
- style: pageStyles.current,
396
- children: /*#__PURE__*/jsxRuntime.jsx(Page, {
397
- guides: guides,
170
+ style: _objectSpread(_objectSpread({}, pageStyles.current), {}, {
171
+ position: 'relative'
172
+ }),
173
+ children: [/*#__PURE__*/jsxRuntime.jsx(Page, {
398
174
  items: page.items,
399
175
  page: page,
400
176
  pageIndex: index,
401
177
  style: pageContainerStyles.current
402
- })
178
+ }), selectionPageId === page.id && selectionBox && /*#__PURE__*/jsxRuntime.jsx(SelectionBox, {
179
+ selectionBox: selectionBox
180
+ })]
403
181
  }, "page_".concat(page.id))]
404
182
  }, page.id)
405
183
  );
@@ -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\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 = 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 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 <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","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","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","Fragment","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 useRef,\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 SelectionBox from './SelectionBox';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport Page from './Page';\nimport {\n calculateGuidePositions,\n findItemById,\n findItemsOnPage,\n} from '../../utils/functions';\nimport DraggableLayer from './DraggableLayer';\nimport useKeyboardActions from '../../utils/useKeyboardActions';\nimport useMarqueeSelection from '../../utils/useMarqueeSelection';\n\nconst Scene = () => {\n const pages = usePropStore(state => state.pages);\n const settings = usePropStore(state => state.settings);\n const contextMenuProps = useBuilderStore(state => state.contextMenuProps);\n const setContextMenuProps = useBuilderStore(state => state.setContextMenuProps);\n const setGuides = useBuilderStore(state => state.setGuides);\n const zoom = useBuilderStore(state => state.zoom);\n const lastScrollPosition = useBuilderStore(state => state.lastScrollPosition);\n\n const pageStyles = useRef({});\n const pageContainerStyles = useRef({});\n const viewPortRef = useRef({});\n const canvasRef = useRef(null);\n\n /* Page Refs */\n const refs = useRef(pages.reduce((acc, curr) => {\n acc[curr.id] = createRef(null);\n return acc;\n }, {}));\n\n // Custom hooks\n useKeyboardActions();\n const { selectionBox, selectionPageId } = useMarqueeSelection(canvasRef);\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 // Calculate guides for snap functionality\n useEffect(() => {\n setGuides(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, setGuides]);\n\n // Restore scroll position after mode change\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, [lastScrollPosition]);\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 pageRefs={refs.current}\n />\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n data-zoom={zoom}\n >\n <div\n ref={canvasRef}\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, position: 'relative' }}\n >\n <Page\n items={page.items}\n page={page}\n pageIndex={index}\n style={pageContainerStyles.current}\n />\n {selectionPageId === page.id && selectionBox && (\n <SelectionBox selectionBox={selectionBox} />\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","settings","contextMenuProps","useBuilderStore","setContextMenuProps","setGuides","zoom","lastScrollPosition","pageStyles","useRef","pageContainerStyles","viewPortRef","canvasRef","refs","reduce","acc","curr","id","createRef","useKeyboardActions","useMarqueeSelection","selectionBox","selectionPageId","useEffect","forEach","page","current","_pageGuides","pageRef","getBoundingClientRect","height","left","top","width","boundingBox","x","calculateGuidePositions","map","value","y","items","item","scrollTop","reportLayoutHeight","reportLayoutWidth","parseInt","Number","isNaN","zoomToUse","parseFloat","toFixed","transform","transformOrigin","_jsxs","classNames","_jsx","index","Fragment","order","toString","position","findItemById","findItemsOnPage","pageID"],"mappings":"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"}
@@ -75,7 +75,9 @@ var SearchInput = function SearchInput(_ref) {
75
75
  className: "search-icon",
76
76
  style: {
77
77
  left: '8px',
78
- position: 'absolute'
78
+ position: 'absolute',
79
+ top: '50%',
80
+ transform: 'translateY(-40%)'
79
81
  },
80
82
  children: /*#__PURE__*/jsxRuntime.jsx(search, {
81
83
  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,wBAAkB,EAArC;AAAA,MAAQC,MAAR,uBAAQA,MAAR;;AACA,MAAMC,cAAc,GAAGC,YAAM,CAAC,IAAD,CAA7B;;AACA,kBAAsCC,cAAQ,CAAC,EAAD,CAA9C;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAEA,MAAMC,YAAY,GAAGC,iBAAW,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,iBAAW,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,iBAAW,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,eAACI,MAAD;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,eAACK,KAAD;AAAW,UAAA,SAAS,EAAC;AAArB;AALF,QAjBJ;AAAA;AADF,IADF;AA8BD;;AAED1B,WAAW,CAAC2B,SAAZ,GAAwB;AACtB1B,EAAAA,QAAQ,EAAE2B,6BAAS,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,wBAAkB,EAArC;AAAA,MAAQC,MAAR,uBAAQA,MAAR;;AACA,MAAMC,cAAc,GAAGC,YAAM,CAAC,IAAD,CAA7B;;AACA,kBAAsCC,cAAQ,CAAC,EAAD,CAA9C;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAEA,MAAMC,YAAY,GAAGC,iBAAW,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,iBAAW,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,iBAAW,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,eAACM,MAAD;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,eAACO,KAAD;AAAW,UAAA,SAAS,EAAC;AAArB;AALF,QAtBJ;AAAA;AADF,IADF;AAmCD;;AAED5B,WAAW,CAAC6B,SAAZ,GAAwB;AACtB5B,EAAAA,QAAQ,EAAE6B,6BAAS,CAACC;AADE,CAAxB;;;;"}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var PropTypes = require('prop-types');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+
8
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
9
+
10
+ var SelectionBox = function SelectionBox(_ref) {
11
+ var selectionBox = _ref.selectionBox;
12
+ var endX = selectionBox.endX,
13
+ endY = selectionBox.endY,
14
+ startX = selectionBox.startX,
15
+ startY = selectionBox.startY;
16
+ var left = Math.min(startX, endX);
17
+ var top = Math.min(startY, endY);
18
+ var width = Math.abs(endX - startX);
19
+ var height = Math.abs(endY - startY);
20
+ var style = {
21
+ backgroundColor: '#0099FF4A',
22
+ border: '2px solid #0066C3',
23
+ borderRadius: '2px',
24
+ height: height,
25
+ left: left,
26
+ pointerEvents: 'none',
27
+ position: 'absolute',
28
+ top: top,
29
+ width: width,
30
+ zIndex: 100000
31
+ };
32
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
33
+ className: "selection-box",
34
+ style: style
35
+ });
36
+ };
37
+
38
+ SelectionBox.propTypes = {
39
+ selectionBox: PropTypes__default['default'].shape({
40
+ endX: PropTypes__default['default'].number,
41
+ endY: PropTypes__default['default'].number,
42
+ startX: PropTypes__default['default'].number,
43
+ startY: PropTypes__default['default'].number
44
+ })
45
+ };
46
+
47
+ module.exports = SelectionBox;
48
+ //# sourceMappingURL=SelectionBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionBox.js","sources":["../../../../src/components/Builder/SelectionBox.js"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst SelectionBox = ({ selectionBox }) => {\n const {\n endX, endY, startX, startY,\n } = selectionBox;\n\n const left = Math.min(startX, endX);\n const top = Math.min(startY, endY);\n const width = Math.abs(endX - startX);\n const height = Math.abs(endY - startY);\n\n const style = {\n backgroundColor: '#0099FF4A',\n border: '2px solid #0066C3',\n borderRadius: '2px',\n height,\n left,\n pointerEvents: 'none',\n position: 'absolute',\n top,\n width,\n zIndex: 100000,\n };\n\n return (\n <div\n className=\"selection-box\"\n style={style}\n />\n );\n};\n\nSelectionBox.propTypes = {\n selectionBox: PropTypes.shape({\n endX: PropTypes.number,\n endY: PropTypes.number,\n startX: PropTypes.number,\n startY: PropTypes.number,\n }),\n};\n\nexport default SelectionBox;\n"],"names":["SelectionBox","selectionBox","endX","endY","startX","startY","left","Math","min","top","width","abs","height","style","backgroundColor","border","borderRadius","pointerEvents","position","zIndex","_jsx","propTypes","PropTypes","shape","number"],"mappings":";;;;;;;;;IAEMA,YAAY,GAAG,SAAfA,YAAe,OAAsB;AAAA,MAAnBC,YAAmB,QAAnBA,YAAmB;AACzC,MACEC,IADF,GAEID,YAFJ,CACEC,IADF;AAAA,MACQC,IADR,GAEIF,YAFJ,CACQE,IADR;AAAA,MACcC,MADd,GAEIH,YAFJ,CACcG,MADd;AAAA,MACsBC,MADtB,GAEIJ,YAFJ,CACsBI,MADtB;AAIA,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,EAAiBF,IAAjB,CAAb;AACA,MAAMO,GAAG,GAAGF,IAAI,CAACC,GAAL,CAASH,MAAT,EAAiBF,IAAjB,CAAZ;AACA,MAAMO,KAAK,GAAGH,IAAI,CAACI,GAAL,CAAST,IAAI,GAAGE,MAAhB,CAAd;AACA,MAAMQ,MAAM,GAAGL,IAAI,CAACI,GAAL,CAASR,IAAI,GAAGE,MAAhB,CAAf;AAEA,MAAMQ,KAAK,GAAG;AACZC,IAAAA,eAAe,EAAE,WADL;AAEZC,IAAAA,MAAM,EAAE,mBAFI;AAGZC,IAAAA,YAAY,EAAE,KAHF;AAIZJ,IAAAA,MAAM,EAANA,MAJY;AAKZN,IAAAA,IAAI,EAAJA,IALY;AAMZW,IAAAA,aAAa,EAAE,MANH;AAOZC,IAAAA,QAAQ,EAAE,UAPE;AAQZT,IAAAA,GAAG,EAAHA,GARY;AASZC,IAAAA,KAAK,EAALA,KATY;AAUZS,IAAAA,MAAM,EAAE;AAVI,GAAd;AAaA,sBACEC;AACE,IAAA,SAAS,EAAC,eADZ;AAEE,IAAA,KAAK,EAAEP;AAFT,IADF;AAMD;;AAEDb,YAAY,CAACqB,SAAb,GAAyB;AACvBpB,EAAAA,YAAY,EAAEqB,6BAAS,CAACC,KAAV,CAAgB;AAC5BrB,IAAAA,IAAI,EAAEoB,6BAAS,CAACE,MADY;AAE5BrB,IAAAA,IAAI,EAAEmB,6BAAS,CAACE,MAFY;AAG5BpB,IAAAA,MAAM,EAAEkB,6BAAS,CAACE,MAHU;AAI5BnB,IAAAA,MAAM,EAAEiB,6BAAS,CAACE;AAJU,GAAhB;AADS,CAAzB;;;;"}