@jotforminc/dnd-builder 3.2.1 → 3.4.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 (90) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/lib/cjs/assets/svg/exclamation.svg.js +22 -0
  3. package/lib/cjs/assets/svg/exclamation.svg.js.map +1 -0
  4. package/lib/cjs/components/Builder/Builder.js +6 -0
  5. package/lib/cjs/components/Builder/Builder.js.map +1 -1
  6. package/lib/cjs/components/Builder/BuilderWrapper.js +17 -2
  7. package/lib/cjs/components/Builder/BuilderWrapper.js.map +1 -1
  8. package/lib/cjs/components/Builder/Page.js +3 -1
  9. package/lib/cjs/components/Builder/Page.js.map +1 -1
  10. package/lib/cjs/components/DraggableItem/DraggableItem.js +30 -19
  11. package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
  12. package/lib/cjs/components/ErrorBoundary/ErrorBoundary.js +94 -0
  13. package/lib/cjs/components/ErrorBoundary/ErrorBoundary.js.map +1 -0
  14. package/lib/cjs/components/ErrorBoundary/ErrorDetails.js +81 -0
  15. package/lib/cjs/components/ErrorBoundary/ErrorDetails.js.map +1 -0
  16. package/lib/cjs/components/ErrorBoundary/ErrorFallbackWrapper.js +129 -0
  17. package/lib/cjs/components/ErrorBoundary/ErrorFallbackWrapper.js.map +1 -0
  18. package/lib/cjs/components/Panels/LeftPanel/LeftPanelCloser.js +1 -4
  19. package/lib/cjs/components/Panels/LeftPanel/LeftPanelCloser.js.map +1 -1
  20. package/lib/cjs/components/Panels/RightPanel/RightPanel.js +1 -3
  21. package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
  22. package/lib/cjs/components/Panels/RightPanel/Settings.js +3 -1
  23. package/lib/cjs/components/Panels/RightPanel/Settings.js.map +1 -1
  24. package/lib/cjs/components/Panels/SlidesPanel/ListWrapper.js +9 -7
  25. package/lib/cjs/components/Panels/SlidesPanel/ListWrapper.js.map +1 -1
  26. package/lib/cjs/components/Preview/StaticItem.js +10 -7
  27. package/lib/cjs/components/Preview/StaticItem.js.map +1 -1
  28. package/lib/cjs/components/Preview/StaticPage.js +26 -21
  29. package/lib/cjs/components/Preview/StaticPage.js.map +1 -1
  30. package/lib/cjs/constants/texts.js +5 -0
  31. package/lib/cjs/constants/texts.js.map +1 -1
  32. package/lib/cjs/contexts/BuilderContext.js +3 -0
  33. package/lib/cjs/contexts/BuilderContext.js.map +1 -1
  34. package/lib/cjs/contexts/PropContext.js +15 -20
  35. package/lib/cjs/contexts/PropContext.js.map +1 -1
  36. package/lib/cjs/contexts/Providers.js +6 -1
  37. package/lib/cjs/contexts/Providers.js.map +1 -1
  38. package/lib/cjs/styles/_jfReportsMain.scss +150 -0
  39. package/lib/cjs/utils/hooks.js +17 -3
  40. package/lib/cjs/utils/hooks.js.map +1 -1
  41. package/lib/cjs/utils/icons.js +2 -0
  42. package/lib/cjs/utils/icons.js.map +1 -1
  43. package/lib/esm/assets/svg/exclamation.svg.js +20 -0
  44. package/lib/esm/assets/svg/exclamation.svg.js.map +1 -0
  45. package/lib/esm/components/Builder/Builder.js +6 -0
  46. package/lib/esm/components/Builder/Builder.js.map +1 -1
  47. package/lib/esm/components/Builder/BuilderWrapper.js +17 -3
  48. package/lib/esm/components/Builder/BuilderWrapper.js.map +1 -1
  49. package/lib/esm/components/Builder/Page.js +4 -2
  50. package/lib/esm/components/Builder/Page.js.map +1 -1
  51. package/lib/esm/components/DraggableItem/DraggableItem.js +31 -20
  52. package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
  53. package/lib/esm/components/ErrorBoundary/ErrorBoundary.js +88 -0
  54. package/lib/esm/components/ErrorBoundary/ErrorBoundary.js.map +1 -0
  55. package/lib/esm/components/ErrorBoundary/ErrorDetails.js +75 -0
  56. package/lib/esm/components/ErrorBoundary/ErrorDetails.js.map +1 -0
  57. package/lib/esm/components/ErrorBoundary/ErrorFallbackWrapper.js +123 -0
  58. package/lib/esm/components/ErrorBoundary/ErrorFallbackWrapper.js.map +1 -0
  59. package/lib/esm/components/Panels/LeftPanel/Elements.js +2 -2
  60. package/lib/esm/components/Panels/LeftPanel/Elements.js.map +1 -1
  61. package/lib/esm/components/Panels/LeftPanel/LeftPanelCloser.js +1 -4
  62. package/lib/esm/components/Panels/LeftPanel/LeftPanelCloser.js.map +1 -1
  63. package/lib/esm/components/Panels/RightPanel/RightPanel.js +2 -4
  64. package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
  65. package/lib/esm/components/Panels/RightPanel/Settings.js +4 -2
  66. package/lib/esm/components/Panels/RightPanel/Settings.js.map +1 -1
  67. package/lib/esm/components/Panels/SlidesPanel/ListWrapper.js +10 -8
  68. package/lib/esm/components/Panels/SlidesPanel/ListWrapper.js.map +1 -1
  69. package/lib/esm/components/Preview/StaticItem.js +10 -7
  70. package/lib/esm/components/Preview/StaticItem.js.map +1 -1
  71. package/lib/esm/components/Preview/StaticPage.js +26 -21
  72. package/lib/esm/components/Preview/StaticPage.js.map +1 -1
  73. package/lib/esm/constants/texts.js +5 -0
  74. package/lib/esm/constants/texts.js.map +1 -1
  75. package/lib/esm/contexts/BuilderContext.js +3 -0
  76. package/lib/esm/contexts/BuilderContext.js.map +1 -1
  77. package/lib/esm/contexts/PropContext.js +14 -20
  78. package/lib/esm/contexts/PropContext.js.map +1 -1
  79. package/lib/esm/contexts/Providers.js +6 -1
  80. package/lib/esm/contexts/Providers.js.map +1 -1
  81. package/lib/esm/styles/_jfReportsMain.scss +150 -0
  82. package/lib/esm/utils/hooks.js +17 -4
  83. package/lib/esm/utils/hooks.js.map +1 -1
  84. package/lib/esm/utils/icons.js +1 -0
  85. package/lib/esm/utils/icons.js.map +1 -1
  86. package/package.json +2 -1
  87. package/lib/cjs/components/ErrorBoundary.js +0 -101
  88. package/lib/cjs/components/ErrorBoundary.js.map +0 -1
  89. package/lib/esm/components/ErrorBoundary.js +0 -95
  90. package/lib/esm/components/ErrorBoundary.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../src/utils/hooks.js"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n useMemo,\n useCallback,\n} from 'react';\nimport { getZoomValue } from './functions';\nimport { SharingTextsModule } from '../constants/texts';\nimport { usePropStore } from '../contexts/PropContext';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePresentationStore } from '../contexts/PresentationContext';\n\nexport const useStateWithCallback = (initialState, callback) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => callback(state), [state, callback]);\n\n return [state, setState];\n};\n\nexport const useEventListener = (eventName, handler, element = global) => {\n const savedHandler = useRef();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = event => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element],\n );\n};\n\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const useFitZoom = () => {\n const settings = usePropStore(state => state.settings);\n const setZoom = useBuilderStore(state => state.setZoom);\n\n useEffect(() => {\n const newZoom = getZoomValue({\n limitZoom: true,\n settings: {\n reportLayoutHeight: settings.reportLayoutHeight,\n reportLayoutWidth: settings.reportLayoutWidth,\n },\n });\n setZoom(newZoom, settings.reportLayoutWidth);\n }, [\n settings.reportLayoutHeight,\n settings.reportLayoutWidth,\n setZoom,\n ]);\n};\n\nexport const usePageVisibility = (callback, pageCount, selectedPageIndex) => {\n const ratio = useRef({});\n const pageRefs = useRef([]);\n const observer = useMemo(() => new window.IntersectionObserver(entries => {\n entries.forEach(entry => {\n const order = entry.target.getAttribute('data-order');\n if (entry.intersectionRatio !== 0) {\n ratio.current[order] = entry.intersectionRatio;\n } else {\n delete ratio.current[order];\n }\n });\n callback(parseInt(\n Object.keys(ratio.current)\n .find(key => ratio.current[key] === Math.max(...Object.values(ratio.current))),\n 10,\n ));\n },\n {\n delay: 100,\n root: document.querySelector('.jfReport-viewport'),\n threshold: [0, 0.5, 1],\n }), [callback]);\n\n useEffect(() => {\n ratio.current = {};\n pageRefs.current = document.querySelectorAll('.jfReport-page');\n }, [pageCount]);\n\n useEffect(() => {\n if (selectedPageIndex === -1) {\n pageRefs.current.forEach(page => {\n observer.observe(page);\n });\n }\n\n return () => {\n pageRefs.current.forEach(page => {\n observer.unobserve(page);\n });\n };\n }, [selectedPageIndex, observer]);\n};\n\nexport const useFullscreenChange = (isFullscreen, fitToScreen) => {\n /**\n * All this is just to cover if the user exits fullscreen via ESC key :(\n */\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const setIsFullscreen = usePresentationStore(state => state.setIsFullscreen);\n\n const onFullscreenChange = useCallback(() => {\n if (!(\n document.fullScreen\n || document.mozFullScreen\n || document.webkitIsFullScreen\n )) {\n onAnEventTrigger('clickedFullscreen');\n setIsFullscreen(false);\n fitToScreen(500);\n } else {\n setIsFullscreen(true);\n fitToScreen(600);\n }\n }, [fitToScreen, setIsFullscreen, onAnEventTrigger]);\n\n useEventListener('fullscreenchange', onFullscreenChange);\n useEventListener('webkitfullscreenchange', onFullscreenChange);\n useEventListener('mozfullscreenchange', onFullscreenChange);\n useEventListener('MSFullscreenChange', onFullscreenChange);\n};\n\nexport const useTranslatedTexts = () => {\n return useMemo(() => SharingTextsModule.Texts, []);\n};\n\nexport const useClickOutsideListener = (classes, conditionValue, onClose) => {\n const onClickOutsideForPanel = useCallback(({ target: { classList } }) => {\n const shouldClose = classes.some(c => classList.contains(c));\n if (shouldClose) {\n onClose();\n }\n }, [classes, onClose]);\n\n useEffect(() => {\n if (conditionValue) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => window.removeEventListener('click', onClickOutsideForPanel, false);\n }, [conditionValue, onClickOutsideForPanel]);\n};\n\nexport const usePageTransition = (style, currentPage) => {\n const finalStyle = useMemo(() => {\n switch (style) {\n case 'verticalSlide':\n return { transform: `translateY(-${(currentPage * 100).toString()}%)` };\n case 'scaleAndFade':\n return {};\n case 'rotate':\n return { '-webkit-perspective': 1000 };\n case 'scaleAndSlide':\n case 'horizontalSlide':\n default:\n return { transform: `translateX(-${(currentPage * 100).toString()}%)` };\n }\n }, [style, currentPage]);\n\n return finalStyle;\n};\n\nexport const useSelectedElements = () => {\n const pages = usePropStore(state => state.pages);\n const activeElements = useBuilderStore(state => state.activeElements);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n\n return useMemo(() => {\n if (activeElements.length === 0) return [];\n const items = activeElements.map(itemID => {\n let foundItem = [];\n pages.forEach(page => {\n const item = page.items.find(el => el.id === itemID);\n if (item) {\n foundItem = item;\n }\n });\n const defItem = (acceptedItems[foundItem.itemType] && acceptedItems[foundItem.itemType].defaultItem) || {};\n return { ...defItem, ...foundItem };\n });\n return items;\n }, [pages, activeElements, acceptedItems]);\n};\n"],"names":["useEventListener","eventName","handler","element","global","savedHandler","useRef","useEffect","current","isSupported","addEventListener","eventListener","event","removeEventListener","useFitZoom","settings","usePropStore","state","setZoom","useBuilderStore","newZoom","getZoomValue","limitZoom","reportLayoutHeight","reportLayoutWidth","usePageVisibility","callback","pageCount","selectedPageIndex","ratio","pageRefs","observer","useMemo","window","IntersectionObserver","entries","forEach","entry","order","target","getAttribute","intersectionRatio","parseInt","Object","keys","find","key","Math","max","values","delay","root","document","querySelector","threshold","querySelectorAll","page","observe","unobserve","useFullscreenChange","isFullscreen","fitToScreen","onAnEventTrigger","setIsFullscreen","usePresentationStore","onFullscreenChange","useCallback","fullScreen","mozFullScreen","webkitIsFullScreen","useTranslatedTexts","SharingTextsModule","Texts","useClickOutsideListener","classes","conditionValue","onClose","onClickOutsideForPanel","classList","shouldClose","some","c","contains","usePageTransition","style","currentPage","finalStyle","transform","toString","useSelectedElements","pages","activeElements","acceptedItems","length","items","map","itemID","foundItem","item","el","id","defItem","itemType","defaultItem"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../src/utils/hooks.js"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n useMemo,\n useCallback,\n} from 'react';\nimport { getZoomValue } from './functions';\nimport { SharingTextsModule } from '../constants/texts';\nimport { usePropStore } from '../contexts/PropContext';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePresentationStore } from '../contexts/PresentationContext';\n\nexport const useStateWithCallback = (initialState, callback) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => callback(state), [state, callback]);\n\n return [state, setState];\n};\n\nexport const useEventListener = (eventName, handler, element = global) => {\n const savedHandler = useRef();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = event => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element],\n );\n};\n\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const useFitZoom = () => {\n const settings = usePropStore(state => state.settings);\n const setZoom = useBuilderStore(state => state.setZoom);\n\n useEffect(() => {\n const newZoom = getZoomValue({\n limitZoom: true,\n settings: {\n reportLayoutHeight: settings.reportLayoutHeight,\n reportLayoutWidth: settings.reportLayoutWidth,\n },\n });\n setZoom(newZoom, settings.reportLayoutWidth);\n }, [\n settings.reportLayoutHeight,\n settings.reportLayoutWidth,\n setZoom,\n ]);\n};\n\nexport const usePageVisibility = (callback, pageCount, selectedPageIndex) => {\n const ratio = useRef({});\n const prevVisiblePageIndex = useRef(-1);\n const pageRefs = useRef([]);\n const observer = useMemo(() => new window.IntersectionObserver(entries => {\n entries.forEach(entry => {\n const order = entry.target.getAttribute('data-order');\n if (entry.intersectionRatio !== 0) {\n ratio.current[order] = entry.intersectionRatio;\n } else {\n delete ratio.current[order];\n }\n });\n const visiblePageIndex = parseInt(\n Object.keys(ratio.current)\n .find(key => ratio.current[key] === Math.max(...Object.values(ratio.current))),\n 10,\n );\n if (visiblePageIndex !== prevVisiblePageIndex.current) {\n prevVisiblePageIndex.current = visiblePageIndex;\n callback(visiblePageIndex);\n }\n },\n {\n delay: 100,\n root: document.querySelector('.jfReport-viewport'),\n threshold: [0, 0.25, 0.5, 0.75, 1],\n }), [callback]);\n\n useEffect(() => {\n ratio.current = {};\n pageRefs.current = document.querySelectorAll('.jfReport-page');\n }, [pageCount]);\n\n useEffect(() => {\n if (selectedPageIndex === -1) {\n pageRefs.current.forEach(page => {\n observer.observe(page);\n });\n }\n\n return () => {\n pageRefs.current.forEach(page => {\n observer.unobserve(page);\n });\n };\n }, [selectedPageIndex, observer]);\n};\n\nexport const useFullscreenChange = (isFullscreen, fitToScreen) => {\n /**\n * All this is just to cover if the user exits fullscreen via ESC key :(\n */\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const setIsFullscreen = usePresentationStore(state => state.setIsFullscreen);\n\n const onFullscreenChange = useCallback(() => {\n if (!(\n document.fullScreen\n || document.mozFullScreen\n || document.webkitIsFullScreen\n )) {\n onAnEventTrigger('clickedFullscreen');\n setIsFullscreen(false);\n fitToScreen(500);\n } else {\n setIsFullscreen(true);\n fitToScreen(600);\n }\n }, [fitToScreen, setIsFullscreen, onAnEventTrigger]);\n\n useEventListener('fullscreenchange', onFullscreenChange);\n useEventListener('webkitfullscreenchange', onFullscreenChange);\n useEventListener('mozfullscreenchange', onFullscreenChange);\n useEventListener('MSFullscreenChange', onFullscreenChange);\n};\n\nexport const useTranslatedTexts = () => {\n return useMemo(() => SharingTextsModule.Texts, []);\n};\n\nexport const useClickOutsideListener = (classes, conditionValue, onClose) => {\n const onClickOutsideForPanel = useCallback(({ target: { classList } }) => {\n const shouldClose = classes.some(c => classList.contains(c));\n if (shouldClose) {\n onClose();\n }\n }, [classes, onClose]);\n\n useEffect(() => {\n if (conditionValue) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => window.removeEventListener('click', onClickOutsideForPanel, false);\n }, [conditionValue, onClickOutsideForPanel]);\n};\n\nexport const usePageTransition = (style, currentPage) => {\n const finalStyle = useMemo(() => {\n switch (style) {\n case 'verticalSlide':\n return { transform: `translateY(-${(currentPage * 100).toString()}%)` };\n case 'scaleAndFade':\n return {};\n case 'rotate':\n return { '-webkit-perspective': 1000 };\n case 'scaleAndSlide':\n case 'horizontalSlide':\n default:\n return { transform: `translateX(-${(currentPage * 100).toString()}%)` };\n }\n }, [style, currentPage]);\n\n return finalStyle;\n};\n\nexport const useSelectedElements = () => {\n const pages = usePropStore(state => state.pages);\n const activeElements = useBuilderStore(state => state.activeElements);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n\n return useMemo(() => {\n if (activeElements.length === 0) return [];\n const items = activeElements.map(itemID => {\n let foundItem = [];\n pages.forEach(page => {\n const item = page.items.find(el => el.id === itemID);\n if (item) {\n foundItem = item;\n }\n });\n const defItem = (acceptedItems[foundItem.itemType] && acceptedItems[foundItem.itemType].defaultItem) || {};\n return { ...defItem, ...foundItem };\n });\n return items;\n }, [pages, activeElements, acceptedItems]);\n};\n"],"names":["useEventListener","eventName","handler","element","global","savedHandler","useRef","useEffect","current","isSupported","addEventListener","eventListener","event","removeEventListener","usePrevious","value","ref","useFitZoom","settings","usePropStore","state","setZoom","useBuilderStore","newZoom","getZoomValue","limitZoom","reportLayoutHeight","reportLayoutWidth","usePageVisibility","callback","pageCount","selectedPageIndex","ratio","prevVisiblePageIndex","pageRefs","observer","useMemo","window","IntersectionObserver","entries","forEach","entry","order","target","getAttribute","intersectionRatio","visiblePageIndex","parseInt","Object","keys","find","key","Math","max","values","delay","root","document","querySelector","threshold","querySelectorAll","page","observe","unobserve","useFullscreenChange","isFullscreen","fitToScreen","onAnEventTrigger","setIsFullscreen","usePresentationStore","onFullscreenChange","useCallback","fullScreen","mozFullScreen","webkitIsFullScreen","useTranslatedTexts","SharingTextsModule","Texts","useClickOutsideListener","classes","conditionValue","onClose","onClickOutsideForPanel","classList","shouldClose","some","c","contains","usePageTransition","style","currentPage","finalStyle","transform","toString","useSelectedElements","pages","activeElements","acceptedItems","length","items","map","itemID","foundItem","item","el","id","defItem","itemType","defaultItem"],"mappings":"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"}
@@ -80,6 +80,7 @@ var donut = require('../assets/svg/placeholder/donut.svg.js');
80
80
  var grid = require('../assets/svg/placeholder/grid.svg.js');
81
81
  var fit_screen = require('../assets/svg/fit_screen.svg.js');
82
82
  var loading_circle = require('../assets/svg/loading_circle.svg.js');
83
+ var exclamation = require('../assets/svg/exclamation.svg.js');
83
84
 
84
85
  // General //
85
86
 
@@ -163,4 +164,5 @@ exports.donutPlaceholder = donut;
163
164
  exports.textGridPlaceholder = grid;
164
165
  exports.fit = fit_screen;
165
166
  exports.loadingCircle = loading_circle;
167
+ exports.exclamationIcon = exclamation;
166
168
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sources":["../../../src/utils/icons.js"],"sourcesContent":["// General //\n\nexport { default as down } from '../assets/svg/arrow_down.svg';\nexport { default as drag } from '../assets/svg/settings/drag.svg';\nexport { default as trash } from '../assets/svg/trash.svg';\nexport { default as close } from '../assets/svg/close.svg';\nexport { default as rotate } from '../assets/svg/rotate.svg';\nexport { default as customize } from '../assets/svg/customize.svg';\nexport { default as slides } from '../assets/svg/slides.svg';\nexport { default as allSlides } from '../assets/svg/all_slides.svg';\nexport { default as settingsToggle } from '../assets/svg/settings_toggle.svg';\n\n// Elements //\n\nexport { default as header } from '../assets/svg/toolbox/header.svg';\nexport { default as icon } from '../assets/svg/toolbox/icon.svg';\nexport { default as image } from '../assets/svg/toolbox/image.svg';\nexport { default as label } from '../assets/svg/toolbox/label.svg';\nexport { default as shapes } from '../assets/svg/toolbox/shapes.svg';\nexport { default as table } from '../assets/svg/toolbox/table.svg';\nexport { default as textElement } from '../assets/svg/toolbox/text_element.svg';\nexport { default as text } from '../assets/svg/toolbox/text.svg';\nexport { default as star } from '../assets/svg/toolbox/star.svg';\nexport { default as email } from '../assets/svg/toolbox/email.svg';\nexport { default as singleChoice } from '../assets/svg/toolbox/single_choice.svg';\nexport { default as multipleChoice } from '../assets/svg/toolbox/multiple_choice.svg';\nexport { default as lock } from '../assets/svg/settings/lock.svg';\nexport { default as unlock } from '../assets/svg/settings/unlock.svg';\n\n// Settings //\n\nexport { default as bold } from '../assets/svg/settings/font_bold.svg';\nexport { default as italic } from '../assets/svg/settings/font_italic.svg';\nexport { default as underline } from '../assets/svg/settings/font_underline.svg';\nexport { default as alignLeft } from '../assets/svg/settings/align_left.svg';\nexport { default as alignCenter } from '../assets/svg/settings/align_center.svg';\nexport { default as alignRight } from '../assets/svg/settings/align_right.svg';\n\n// Chart Settings //\n\nexport { default as pie } from '../assets/svg/settings/chart_pie.svg';\nexport { default as bar } from '../assets/svg/settings/chart_bar.svg';\nexport { default as line } from '../assets/svg/settings/chart_line.svg';\nexport { default as basic } from '../assets/svg/settings/chart_basic.svg';\nexport { default as donut } from '../assets/svg/settings/chart_donut.svg';\nexport { default as grid } from '../assets/svg/settings/chart_grid.svg';\nexport { default as textGrid } from '../assets/svg/settings/chart_textGrid.svg';\nexport { default as column } from '../assets/svg/settings/chart_column.svg';\nexport { default as layout } from '../assets/svg/settings/layout.svg';\nexport { default as starRating } from '../assets/svg/star_rating.svg';\nexport { default as heartRating } from '../assets/svg/heart_rating.svg';\n\n// Shape Settings //\n\nexport { default as rectangleIcon } from '../assets/svg/settings/rectangle.svg';\nexport { default as ellipseIcon } from '../assets/svg/settings/ellipse.svg';\nexport { default as triangleIcon } from '../assets/svg/settings/triangle.svg';\nexport { default as starIcon } from '../assets/svg/settings/star.svg';\nexport { default as lineIcon } from '../assets/svg/settings/line.svg';\n\n// Element Menu //\n\nexport { default as duplicate } from '../assets/svg/duplicate.svg';\nexport { default as settings } from '../assets/svg/settings.svg';\n\n// Page Menu //\n\nexport { default as arrowDown } from '../assets/svg/arrow_down.svg';\nexport { default as arrowUp } from '../assets/svg/arrow_up.svg';\nexport { default as arrowLeft } from '../assets/svg/arrow_left.svg';\nexport { default as arrowRight } from '../assets/svg/arrow_right.svg';\nexport { default as duplicateLine } from '../assets/svg/page-actions/duplicate_line.svg';\nexport { default as plus } from '../assets/svg/plus.svg';\nexport { default as minus } from '../assets/svg/minus.svg';\nexport { default as trashLine } from '../assets/svg/page-actions/trash_line.svg';\nexport { default as pageSettings } from '../assets/svg/page_settings.svg';\n\n// Context Menu //\n\nexport { default as moveToFront } from '../assets/svg/contextmenu/moveToFront.svg';\nexport { default as moveToForward } from '../assets/svg/contextmenu/moveToForward.svg';\nexport { default as moveToBackward } from '../assets/svg/contextmenu/moveToBackward.svg';\nexport { default as moveToBack } from '../assets/svg/contextmenu/moveToBack.svg';\n\n// Presentation //\n\nexport { default as print } from '../assets/svg/presentation/print.svg';\nexport { default as download } from '../assets/svg/presentation/download.svg';\nexport { default as play } from '../assets/svg/presentation/play.svg';\nexport { default as enterFullscreen } from '../assets/svg/presentation/enter_fullscreen.svg';\nexport { default as exitFullscreen } from '../assets/svg/presentation/exit_fullscreen.svg';\nexport { default as pause } from '../assets/svg/presentation/pause.svg';\nexport { default as share } from '../assets/svg/presentation/share.svg';\nexport { default as attachment } from '../assets/svg/presentation/attachment.svg';\nexport { default as pen } from '../assets/svg/presentation/pen.svg';\n\n// Password Modal //\n\nexport { default as key } from '../assets/svg/presentation/key.svg';\nexport { default as eye } from '../assets/svg/presentation/eye.svg';\n\n// Placeholder //\n\nexport { default as piePlaceholder } from '../assets/svg/placeholder/pie.svg';\nexport { default as barPlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as linePlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as columnPlaceholder } from '../assets/svg/placeholder/column.svg';\nexport { default as basicPlaceholder } from '../assets/svg/placeholder/basic.svg';\nexport { default as donutPlaceholder } from '../assets/svg/placeholder/donut.svg';\nexport { default as textGridPlaceholder } from '../assets/svg/placeholder/grid.svg';\n\n// Placeholder //\n\n// Zoom //\n\nexport { default as fit } from '../assets/svg/fit_screen.svg';\n\n// Zoom //\n\n// Loading //\nexport { default as loadingCircle } from '../assets/svg/loading_circle.svg';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"icons.js","sources":["../../../src/utils/icons.js"],"sourcesContent":["// General //\n\nexport { default as down } from '../assets/svg/arrow_down.svg';\nexport { default as drag } from '../assets/svg/settings/drag.svg';\nexport { default as trash } from '../assets/svg/trash.svg';\nexport { default as close } from '../assets/svg/close.svg';\nexport { default as rotate } from '../assets/svg/rotate.svg';\nexport { default as customize } from '../assets/svg/customize.svg';\nexport { default as slides } from '../assets/svg/slides.svg';\nexport { default as allSlides } from '../assets/svg/all_slides.svg';\nexport { default as settingsToggle } from '../assets/svg/settings_toggle.svg';\n\n// Elements //\n\nexport { default as header } from '../assets/svg/toolbox/header.svg';\nexport { default as icon } from '../assets/svg/toolbox/icon.svg';\nexport { default as image } from '../assets/svg/toolbox/image.svg';\nexport { default as label } from '../assets/svg/toolbox/label.svg';\nexport { default as shapes } from '../assets/svg/toolbox/shapes.svg';\nexport { default as table } from '../assets/svg/toolbox/table.svg';\nexport { default as textElement } from '../assets/svg/toolbox/text_element.svg';\nexport { default as text } from '../assets/svg/toolbox/text.svg';\nexport { default as star } from '../assets/svg/toolbox/star.svg';\nexport { default as email } from '../assets/svg/toolbox/email.svg';\nexport { default as singleChoice } from '../assets/svg/toolbox/single_choice.svg';\nexport { default as multipleChoice } from '../assets/svg/toolbox/multiple_choice.svg';\nexport { default as lock } from '../assets/svg/settings/lock.svg';\nexport { default as unlock } from '../assets/svg/settings/unlock.svg';\n\n// Settings //\n\nexport { default as bold } from '../assets/svg/settings/font_bold.svg';\nexport { default as italic } from '../assets/svg/settings/font_italic.svg';\nexport { default as underline } from '../assets/svg/settings/font_underline.svg';\nexport { default as alignLeft } from '../assets/svg/settings/align_left.svg';\nexport { default as alignCenter } from '../assets/svg/settings/align_center.svg';\nexport { default as alignRight } from '../assets/svg/settings/align_right.svg';\n\n// Chart Settings //\n\nexport { default as pie } from '../assets/svg/settings/chart_pie.svg';\nexport { default as bar } from '../assets/svg/settings/chart_bar.svg';\nexport { default as line } from '../assets/svg/settings/chart_line.svg';\nexport { default as basic } from '../assets/svg/settings/chart_basic.svg';\nexport { default as donut } from '../assets/svg/settings/chart_donut.svg';\nexport { default as grid } from '../assets/svg/settings/chart_grid.svg';\nexport { default as textGrid } from '../assets/svg/settings/chart_textGrid.svg';\nexport { default as column } from '../assets/svg/settings/chart_column.svg';\nexport { default as layout } from '../assets/svg/settings/layout.svg';\nexport { default as starRating } from '../assets/svg/star_rating.svg';\nexport { default as heartRating } from '../assets/svg/heart_rating.svg';\n\n// Shape Settings //\n\nexport { default as rectangleIcon } from '../assets/svg/settings/rectangle.svg';\nexport { default as ellipseIcon } from '../assets/svg/settings/ellipse.svg';\nexport { default as triangleIcon } from '../assets/svg/settings/triangle.svg';\nexport { default as starIcon } from '../assets/svg/settings/star.svg';\nexport { default as lineIcon } from '../assets/svg/settings/line.svg';\n\n// Element Menu //\n\nexport { default as duplicate } from '../assets/svg/duplicate.svg';\nexport { default as settings } from '../assets/svg/settings.svg';\n\n// Page Menu //\n\nexport { default as arrowDown } from '../assets/svg/arrow_down.svg';\nexport { default as arrowUp } from '../assets/svg/arrow_up.svg';\nexport { default as arrowLeft } from '../assets/svg/arrow_left.svg';\nexport { default as arrowRight } from '../assets/svg/arrow_right.svg';\nexport { default as duplicateLine } from '../assets/svg/page-actions/duplicate_line.svg';\nexport { default as plus } from '../assets/svg/plus.svg';\nexport { default as minus } from '../assets/svg/minus.svg';\nexport { default as trashLine } from '../assets/svg/page-actions/trash_line.svg';\nexport { default as pageSettings } from '../assets/svg/page_settings.svg';\n\n// Context Menu //\n\nexport { default as moveToFront } from '../assets/svg/contextmenu/moveToFront.svg';\nexport { default as moveToForward } from '../assets/svg/contextmenu/moveToForward.svg';\nexport { default as moveToBackward } from '../assets/svg/contextmenu/moveToBackward.svg';\nexport { default as moveToBack } from '../assets/svg/contextmenu/moveToBack.svg';\n\n// Presentation //\n\nexport { default as print } from '../assets/svg/presentation/print.svg';\nexport { default as download } from '../assets/svg/presentation/download.svg';\nexport { default as play } from '../assets/svg/presentation/play.svg';\nexport { default as enterFullscreen } from '../assets/svg/presentation/enter_fullscreen.svg';\nexport { default as exitFullscreen } from '../assets/svg/presentation/exit_fullscreen.svg';\nexport { default as pause } from '../assets/svg/presentation/pause.svg';\nexport { default as share } from '../assets/svg/presentation/share.svg';\nexport { default as attachment } from '../assets/svg/presentation/attachment.svg';\nexport { default as pen } from '../assets/svg/presentation/pen.svg';\n\n// Password Modal //\n\nexport { default as key } from '../assets/svg/presentation/key.svg';\nexport { default as eye } from '../assets/svg/presentation/eye.svg';\n\n// Placeholder //\n\nexport { default as piePlaceholder } from '../assets/svg/placeholder/pie.svg';\nexport { default as barPlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as linePlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as columnPlaceholder } from '../assets/svg/placeholder/column.svg';\nexport { default as basicPlaceholder } from '../assets/svg/placeholder/basic.svg';\nexport { default as donutPlaceholder } from '../assets/svg/placeholder/donut.svg';\nexport { default as textGridPlaceholder } from '../assets/svg/placeholder/grid.svg';\n\n// Placeholder //\n\n// Zoom //\n\nexport { default as fit } from '../assets/svg/fit_screen.svg';\n\n// Zoom //\n\n// Loading //\nexport { default as loadingCircle } from '../assets/svg/loading_circle.svg';\n\n// Error Boundary //\n\nexport { default as exclamationIcon } from '../assets/svg/exclamation.svg';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,20 @@
1
+ import { createElement } from 'react';
2
+
3
+ var _path;
4
+
5
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
+
7
+ function SvgExclamation(props) {
8
+ return /*#__PURE__*/createElement("svg", _extends({
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "currentColor",
11
+ viewBox: "0 0 24 24"
12
+ }, props), _path || (_path = /*#__PURE__*/createElement("path", {
13
+ fillRule: "evenodd",
14
+ d: "M13.78 3.101c-.737-1.474-2.84-1.473-3.576.001L2.21 19.106A2 2 0 003.998 22h15.996a2 2 0 001.788-2.894L13.78 3.1zM11.995 17a1 1 0 100 2 1 1 0 000-2zm-1-2a1 1 0 102 0V9a1 1 0 10-2 0v6z",
15
+ clipRule: "evenodd"
16
+ })));
17
+ }
18
+
19
+ export default SvgExclamation;
20
+ //# sourceMappingURL=exclamation.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclamation.svg.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -79,12 +79,18 @@ Builder.propTypes = {
79
79
  /** Function called upon removing a page */
80
80
  onPageRemove: PropTypes.func,
81
81
 
82
+ /** Function called upon page visibility changed */
83
+ onPageVisibilityChanged: PropTypes.func,
84
+
82
85
  /** Function called when the slides or the right panel is
83
86
  * toggled takes a boolean value to indicate whether or
84
87
  * not the panel is toggled open.
85
88
  */
86
89
  onRightPanelsToggled: PropTypes.func,
87
90
 
91
+ /** Function called upon selecting items */
92
+ onSelectedItemsChanged: PropTypes.func,
93
+
88
94
  /** Function called upon editing a general report setting */
89
95
  onSettingChange: PropTypes.func,
90
96
 
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.js","sources":["../../../../src/components/Builder/Builder.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport DndWrapper from './DndWrapper';\nimport Scene from './Scene';\nimport RightPanel from '../Panels/RightPanel';\nimport LeftPanel from '../Panels/LeftPanel';\nimport SlidesPanel from '../Panels/SlidesPanel';\nimport AllSlidesPanel from '../Panels/AllSlidesPanel';\nimport { leftPanelConfigPropType } from '../../constants/propTypes';\nimport '../../styles/jfReportsBundle.scss';\nimport BuilderWrapper from './BuilderWrapper';\nimport Providers from '../../contexts/Providers';\n\nconst Builder = props => {\n const { useExperimentalFeatures } = props;\n return (\n <Providers\n mode=\"customize\"\n {...props}\n >\n <BuilderWrapper>\n <DndWrapper>\n <LeftPanel />\n <Scene />\n </DndWrapper>\n <RightPanel />\n <SlidesPanel />\n {useExperimentalFeatures && (\n <AllSlidesPanel />\n )}\n </BuilderWrapper>\n </Providers>\n\n );\n};\n\nBuilder.propTypes = {\n /** Items for to render in the report */\n acceptedItems: PropTypes.shape({}),\n /** Array of React components to render statically on each page (eg. watermark) */\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n disableInteraction: PropTypes.arrayOf(PropTypes.string),\n /** To pass in extra props to items selectively */\n itemAccessor: PropTypes.func,\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n leftPanelConfig: leftPanelConfigPropType,\n /** To track and log user actions */\n onAnEventTrigger: PropTypes.func,\n /** Function called upon adding an item */\n onItemAdd: PropTypes.func,\n /** Function called upon editing an item */\n onItemChange: PropTypes.func,\n /** Function called upon moving an item */\n onItemMove: PropTypes.func,\n /** Function called upon removing an item */\n onItemRemove: PropTypes.func,\n /** Function called upon resizing an item */\n onItemResize: PropTypes.func,\n onItemsMove: PropTypes.func,\n /** Function called upon adding a page */\n onPageAdd: PropTypes.func,\n /** Function called upon editing a page */\n onPageChange: PropTypes.func,\n /** Function called upon duplicating a page */\n onPageDuplicate: PropTypes.func,\n /** Function called upon reordering pages */\n onPageOrdersChange: PropTypes.func,\n /** Function called upon removing a page */\n onPageRemove: PropTypes.func,\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** Function called upon editing a general report setting */\n onSettingChange: PropTypes.func,\n /** Array of pages with their settings and items */\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n /** General report settings such as layout size and background color */\n settings: PropTypes.shape({}),\n /** Theme */\n theme: PropTypes.oneOf(['lightMode', 'darkMode']),\n useExperimentalFeatures: PropTypes.bool,\n};\n\nexport default Builder;\n"],"names":["Builder","props","useExperimentalFeatures","_jsx","_jsxs","propTypes","acceptedItems","PropTypes","shape","additionalPageItems","arrayOf","node","disableInteraction","string","itemAccessor","func","lastScrollPosition","number","leftPanelConfig","leftPanelConfigPropType","onAnEventTrigger","onItemAdd","onItemChange","onItemMove","onItemRemove","onItemResize","onItemsMove","onPageAdd","onPageChange","onPageDuplicate","onPageOrdersChange","onPageRemove","onRightPanelsToggled","onSettingChange","pages","settings","theme","oneOf","bool"],"mappings":";;;;;;;;;;;;;;;;;;;IAYMA,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK,EAAI;AACvB,MAAQC,uBAAR,GAAoCD,KAApC,CAAQC,uBAAR;AACA,sBACEC,IAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEMF,KAFN;AAAA,2BAIEG,KAAC,cAAD;AAAA,8BACEA,KAAC,UAAD;AAAA,gCACED,IAAC,SAAD,KADF,eAEEA,IAAC,KAAD,KAFF;AAAA,QADF,eAKEA,IAAC,UAAD,KALF,eAMEA,IAAC,WAAD,KANF,EAOGD,uBAAuB,iBACtBC,IAAC,cAAD,KARJ;AAAA;AAJF,KADF;AAmBD;;AAEDH,OAAO,CAACK,SAAR,GAAoB;AAClB;AACAC,EAAAA,aAAa,EAAEC,SAAS,CAACC,KAAV,CAAgB,EAAhB,CAFG;;AAGlB;AACAC,EAAAA,mBAAmB,EAAEF,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACI,IAA5B,CAJH;AAKlBC,EAAAA,kBAAkB,EAAEL,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACM,MAA5B,CALF;;AAMlB;AACAC,EAAAA,YAAY,EAAEP,SAAS,CAACQ,IAPN;;AAQlB;AACAC,EAAAA,kBAAkB,EAAET,SAAS,CAACU,MATZ;AAUlBC,EAAAA,eAAe,EAAEC,uBAVC;;AAWlB;AACAC,EAAAA,gBAAgB,EAAEb,SAAS,CAACQ,IAZV;;AAalB;AACAM,EAAAA,SAAS,EAAEd,SAAS,CAACQ,IAdH;;AAelB;AACAO,EAAAA,YAAY,EAAEf,SAAS,CAACQ,IAhBN;;AAiBlB;AACAQ,EAAAA,UAAU,EAAEhB,SAAS,CAACQ,IAlBJ;;AAmBlB;AACAS,EAAAA,YAAY,EAAEjB,SAAS,CAACQ,IApBN;;AAqBlB;AACAU,EAAAA,YAAY,EAAElB,SAAS,CAACQ,IAtBN;AAuBlBW,EAAAA,WAAW,EAAEnB,SAAS,CAACQ,IAvBL;;AAwBlB;AACAY,EAAAA,SAAS,EAAEpB,SAAS,CAACQ,IAzBH;;AA0BlB;AACAa,EAAAA,YAAY,EAAErB,SAAS,CAACQ,IA3BN;;AA4BlB;AACAc,EAAAA,eAAe,EAAEtB,SAAS,CAACQ,IA7BT;;AA8BlB;AACAe,EAAAA,kBAAkB,EAAEvB,SAAS,CAACQ,IA/BZ;;AAgClB;AACAgB,EAAAA,YAAY,EAAExB,SAAS,CAACQ,IAjCN;;AAkClB;AACF;AACA;AACA;AACEiB,EAAAA,oBAAoB,EAAEzB,SAAS,CAACQ,IAtCd;;AAuClB;AACAkB,EAAAA,eAAe,EAAE1B,SAAS,CAACQ,IAxCT;;AAyClB;AACAmB,EAAAA,KAAK,EAAE3B,SAAS,CAACG,OAAV,CACLH,SAAS,CAACC,KAAV,CAAgB,EAAhB,CADK,CA1CW;;AA6ClB;AACA2B,EAAAA,QAAQ,EAAE5B,SAAS,CAACC,KAAV,CAAgB,EAAhB,CA9CQ;;AA+ClB;AACA4B,EAAAA,KAAK,EAAE7B,SAAS,CAAC8B,KAAV,CAAgB,CAAC,WAAD,EAAc,UAAd,CAAhB,CAhDW;AAiDlBnC,EAAAA,uBAAuB,EAAEK,SAAS,CAAC+B;AAjDjB,CAApB;;;;"}
1
+ {"version":3,"file":"Builder.js","sources":["../../../../src/components/Builder/Builder.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport DndWrapper from './DndWrapper';\nimport Scene from './Scene';\nimport RightPanel from '../Panels/RightPanel';\nimport LeftPanel from '../Panels/LeftPanel';\nimport SlidesPanel from '../Panels/SlidesPanel';\nimport AllSlidesPanel from '../Panels/AllSlidesPanel';\nimport { leftPanelConfigPropType } from '../../constants/propTypes';\nimport '../../styles/jfReportsBundle.scss';\nimport BuilderWrapper from './BuilderWrapper';\nimport Providers from '../../contexts/Providers';\n\nconst Builder = props => {\n const { useExperimentalFeatures } = props;\n return (\n <Providers\n mode=\"customize\"\n {...props}\n >\n <BuilderWrapper>\n <DndWrapper>\n <LeftPanel />\n <Scene />\n </DndWrapper>\n <RightPanel />\n <SlidesPanel />\n {useExperimentalFeatures && (\n <AllSlidesPanel />\n )}\n </BuilderWrapper>\n </Providers>\n\n );\n};\n\nBuilder.propTypes = {\n /** Items for to render in the report */\n acceptedItems: PropTypes.shape({}),\n /** Array of React components to render statically on each page (eg. watermark) */\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n disableInteraction: PropTypes.arrayOf(PropTypes.string),\n /** To pass in extra props to items selectively */\n itemAccessor: PropTypes.func,\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n leftPanelConfig: leftPanelConfigPropType,\n /** To track and log user actions */\n onAnEventTrigger: PropTypes.func,\n /** Function called upon adding an item */\n onItemAdd: PropTypes.func,\n /** Function called upon editing an item */\n onItemChange: PropTypes.func,\n /** Function called upon moving an item */\n onItemMove: PropTypes.func,\n /** Function called upon removing an item */\n onItemRemove: PropTypes.func,\n /** Function called upon resizing an item */\n onItemResize: PropTypes.func,\n onItemsMove: PropTypes.func,\n /** Function called upon adding a page */\n onPageAdd: PropTypes.func,\n /** Function called upon editing a page */\n onPageChange: PropTypes.func,\n /** Function called upon duplicating a page */\n onPageDuplicate: PropTypes.func,\n /** Function called upon reordering pages */\n onPageOrdersChange: PropTypes.func,\n /** Function called upon removing a page */\n onPageRemove: PropTypes.func,\n /** Function called upon page visibility changed */\n onPageVisibilityChanged: PropTypes.func,\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** Function called upon selecting items */\n onSelectedItemsChanged: PropTypes.func,\n /** Function called upon editing a general report setting */\n onSettingChange: PropTypes.func,\n /** Array of pages with their settings and items */\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n /** General report settings such as layout size and background color */\n settings: PropTypes.shape({}),\n /** Theme */\n theme: PropTypes.oneOf(['lightMode', 'darkMode']),\n useExperimentalFeatures: PropTypes.bool,\n};\n\nexport default Builder;\n"],"names":["Builder","props","useExperimentalFeatures","_jsx","_jsxs","propTypes","acceptedItems","PropTypes","shape","additionalPageItems","arrayOf","node","disableInteraction","string","itemAccessor","func","lastScrollPosition","number","leftPanelConfig","leftPanelConfigPropType","onAnEventTrigger","onItemAdd","onItemChange","onItemMove","onItemRemove","onItemResize","onItemsMove","onPageAdd","onPageChange","onPageDuplicate","onPageOrdersChange","onPageRemove","onPageVisibilityChanged","onRightPanelsToggled","onSelectedItemsChanged","onSettingChange","pages","settings","theme","oneOf","bool"],"mappings":";;;;;;;;;;;;;;;;;;;IAYMA,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK,EAAI;AACvB,MAAQC,uBAAR,GAAoCD,KAApC,CAAQC,uBAAR;AACA,sBACEC,IAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEMF,KAFN;AAAA,2BAIEG,KAAC,cAAD;AAAA,8BACEA,KAAC,UAAD;AAAA,gCACED,IAAC,SAAD,KADF,eAEEA,IAAC,KAAD,KAFF;AAAA,QADF,eAKEA,IAAC,UAAD,KALF,eAMEA,IAAC,WAAD,KANF,EAOGD,uBAAuB,iBACtBC,IAAC,cAAD,KARJ;AAAA;AAJF,KADF;AAmBD;;AAEDH,OAAO,CAACK,SAAR,GAAoB;AAClB;AACAC,EAAAA,aAAa,EAAEC,SAAS,CAACC,KAAV,CAAgB,EAAhB,CAFG;;AAGlB;AACAC,EAAAA,mBAAmB,EAAEF,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACI,IAA5B,CAJH;AAKlBC,EAAAA,kBAAkB,EAAEL,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACM,MAA5B,CALF;;AAMlB;AACAC,EAAAA,YAAY,EAAEP,SAAS,CAACQ,IAPN;;AAQlB;AACAC,EAAAA,kBAAkB,EAAET,SAAS,CAACU,MATZ;AAUlBC,EAAAA,eAAe,EAAEC,uBAVC;;AAWlB;AACAC,EAAAA,gBAAgB,EAAEb,SAAS,CAACQ,IAZV;;AAalB;AACAM,EAAAA,SAAS,EAAEd,SAAS,CAACQ,IAdH;;AAelB;AACAO,EAAAA,YAAY,EAAEf,SAAS,CAACQ,IAhBN;;AAiBlB;AACAQ,EAAAA,UAAU,EAAEhB,SAAS,CAACQ,IAlBJ;;AAmBlB;AACAS,EAAAA,YAAY,EAAEjB,SAAS,CAACQ,IApBN;;AAqBlB;AACAU,EAAAA,YAAY,EAAElB,SAAS,CAACQ,IAtBN;AAuBlBW,EAAAA,WAAW,EAAEnB,SAAS,CAACQ,IAvBL;;AAwBlB;AACAY,EAAAA,SAAS,EAAEpB,SAAS,CAACQ,IAzBH;;AA0BlB;AACAa,EAAAA,YAAY,EAAErB,SAAS,CAACQ,IA3BN;;AA4BlB;AACAc,EAAAA,eAAe,EAAEtB,SAAS,CAACQ,IA7BT;;AA8BlB;AACAe,EAAAA,kBAAkB,EAAEvB,SAAS,CAACQ,IA/BZ;;AAgClB;AACAgB,EAAAA,YAAY,EAAExB,SAAS,CAACQ,IAjCN;;AAkClB;AACAiB,EAAAA,uBAAuB,EAAEzB,SAAS,CAACQ,IAnCjB;;AAoClB;AACF;AACA;AACA;AACEkB,EAAAA,oBAAoB,EAAE1B,SAAS,CAACQ,IAxCd;;AAyClB;AACAmB,EAAAA,sBAAsB,EAAE3B,SAAS,CAACQ,IA1ChB;;AA2ClB;AACAoB,EAAAA,eAAe,EAAE5B,SAAS,CAACQ,IA5CT;;AA6ClB;AACAqB,EAAAA,KAAK,EAAE7B,SAAS,CAACG,OAAV,CACLH,SAAS,CAACC,KAAV,CAAgB,EAAhB,CADK,CA9CW;;AAiDlB;AACA6B,EAAAA,QAAQ,EAAE9B,SAAS,CAACC,KAAV,CAAgB,EAAhB,CAlDQ;;AAmDlB;AACA8B,EAAAA,KAAK,EAAE/B,SAAS,CAACgC,KAAV,CAAgB,CAAC,WAAD,EAAc,UAAd,CAAhB,CApDW;AAqDlBrC,EAAAA,uBAAuB,EAAEK,SAAS,CAACiC;AArDjB,CAApB;;;;"}
@@ -1,9 +1,10 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import isEqual from 'lodash.isequal';
3
4
  import ReportWrapper from '../ReportWrapper.js';
4
5
  import { usePropStore } from '../../contexts/PropContext.js';
5
6
  import { useBuilderStore } from '../../contexts/BuilderContext.js';
6
- import { useFitZoom } from '../../utils/hooks.js';
7
+ import { useSelectedElements, usePrevious, useFitZoom } from '../../utils/hooks.js';
7
8
  import { jsx } from 'react/jsx-runtime';
8
9
 
9
10
  var BuilderWrapper = function BuilderWrapper(_ref) {
@@ -24,6 +25,19 @@ var BuilderWrapper = function BuilderWrapper(_ref) {
24
25
  var setIsSlidesPanelOpen = useBuilderStore(function (state) {
25
26
  return state.setIsSlidesPanelOpen;
26
27
  });
28
+ var shouldShowRightPanelInitially = useBuilderStore(function (state) {
29
+ return state.shouldShowRightPanelInitially;
30
+ });
31
+ var onSelectedItemsChanged = usePropStore(function (state) {
32
+ return state.onSelectedItemsChanged;
33
+ });
34
+ var selectedItems = useSelectedElements();
35
+ var prevSelectedItems = usePrevious(selectedItems);
36
+ useEffect(function () {
37
+ if (prevSelectedItems && !isEqual(prevSelectedItems, selectedItems)) {
38
+ onSelectedItemsChanged(selectedItems);
39
+ }
40
+ }, [selectedItems, onSelectedItemsChanged, prevSelectedItems]);
27
41
  useFitZoom();
28
42
  useEffect(function () {
29
43
  if (!decidedWhichPanelToOpen.current) {
@@ -32,7 +46,7 @@ var BuilderWrapper = function BuilderWrapper(_ref) {
32
46
  setIsLeftPanelOpen(false);
33
47
  }
34
48
 
35
- setIsSlidesPanelOpen(true);
49
+ setIsSlidesPanelOpen(shouldShowRightPanelInitially);
36
50
  } else {
37
51
  if (isSlidesPanelOpen) {
38
52
  setIsSlidesPanelOpen(false);
@@ -43,7 +57,7 @@ var BuilderWrapper = function BuilderWrapper(_ref) {
43
57
 
44
58
  decidedWhichPanelToOpen.current = true;
45
59
  }
46
- }, [pageCount, isLeftPanelOpen, isSlidesPanelOpen, setIsLeftPanelOpen, setIsSlidesPanelOpen]);
60
+ }, [pageCount, isLeftPanelOpen, isSlidesPanelOpen, setIsLeftPanelOpen, setIsSlidesPanelOpen, shouldShowRightPanelInitially]);
47
61
  return /*#__PURE__*/jsx(ReportWrapper, {
48
62
  mode: "customize",
49
63
  children: children
@@ -1 +1 @@
1
- {"version":3,"file":"BuilderWrapper.js","sources":["../../../../src/components/Builder/BuilderWrapper.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ReportWrapper from '../ReportWrapper';\nimport { usePropStore } from '../../contexts/PropContext';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { useFitZoom } from '../../utils/hooks';\n\nconst BuilderWrapper = ({ children }) => {\n const decidedWhichPanelToOpen = useRef(false);\n\n const pageCount = usePropStore(state => state.pages.length);\n const isLeftPanelOpen = useBuilderStore(state => state.isLeftPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const setIsLeftPanelOpen = useBuilderStore(state => state.setIsLeftPanelOpen);\n const setIsSlidesPanelOpen = useBuilderStore(state => state.setIsSlidesPanelOpen);\n\n useFitZoom();\n\n useEffect(() => {\n if (!decidedWhichPanelToOpen.current) {\n if (pageCount > 1) {\n if (isLeftPanelOpen) {\n setIsLeftPanelOpen(false);\n }\n setIsSlidesPanelOpen(true);\n } else {\n if (isSlidesPanelOpen) {\n setIsSlidesPanelOpen(false);\n }\n setIsLeftPanelOpen(true);\n }\n\n decidedWhichPanelToOpen.current = true;\n }\n }, [\n pageCount,\n isLeftPanelOpen,\n isSlidesPanelOpen,\n setIsLeftPanelOpen,\n setIsSlidesPanelOpen,\n ]);\n\n return (\n <ReportWrapper mode=\"customize\">\n {children}\n </ReportWrapper>\n );\n};\n\nBuilderWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default BuilderWrapper;\n"],"names":["BuilderWrapper","children","decidedWhichPanelToOpen","useRef","pageCount","usePropStore","state","pages","length","isLeftPanelOpen","useBuilderStore","isSlidesPanelOpen","setIsLeftPanelOpen","setIsSlidesPanelOpen","useFitZoom","useEffect","current","_jsx","propTypes","PropTypes","node","isRequired"],"mappings":";;;;;;;;IAOMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkB;AAAA,MAAfC,QAAe,QAAfA,QAAe;AACvC,MAAMC,uBAAuB,GAAGC,MAAM,CAAC,KAAD,CAAtC;AAEA,MAAMC,SAAS,GAAGC,YAAY,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACC,KAAN,CAAYC,MAAhB;AAAA,GAAN,CAA9B;AACA,MAAMC,eAAe,GAAGC,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACG,eAAV;AAAA,GAAN,CAAvC;AACA,MAAME,iBAAiB,GAAGD,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACK,iBAAV;AAAA,GAAN,CAAzC;AACA,MAAMC,kBAAkB,GAAGF,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACM,kBAAV;AAAA,GAAN,CAA1C;AACA,MAAMC,oBAAoB,GAAGH,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACO,oBAAV;AAAA,GAAN,CAA5C;AAEAC,EAAAA,UAAU;AAEVC,EAAAA,SAAS,CAAC,YAAM;AACd,QAAI,CAACb,uBAAuB,CAACc,OAA7B,EAAsC;AACpC,UAAIZ,SAAS,GAAG,CAAhB,EAAmB;AACjB,YAAIK,eAAJ,EAAqB;AACnBG,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;;AACDC,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD,OALD,MAKO;AACL,YAAIF,iBAAJ,EAAuB;AACrBE,UAAAA,oBAAoB,CAAC,KAAD,CAApB;AACD;;AACDD,QAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD;;AAEDV,MAAAA,uBAAuB,CAACc,OAAxB,GAAkC,IAAlC;AACD;AACF,GAhBQ,EAgBN,CACDZ,SADC,EAEDK,eAFC,EAGDE,iBAHC,EAIDC,kBAJC,EAKDC,oBALC,CAhBM,CAAT;AAwBA,sBACEI,IAAC,aAAD;AAAe,IAAA,IAAI,EAAC,WAApB;AAAA,cACGhB;AADH,IADF;AAKD;;AAEDD,cAAc,CAACkB,SAAf,GAA2B;AACzBjB,EAAAA,QAAQ,EAAEkB,SAAS,CAACC,IAAV,CAAeC;AADA,CAA3B;;;;"}
1
+ {"version":3,"file":"BuilderWrapper.js","sources":["../../../../src/components/Builder/BuilderWrapper.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash.isequal';\nimport ReportWrapper from '../ReportWrapper';\nimport { usePropStore } from '../../contexts/PropContext';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { useFitZoom, usePrevious, useSelectedElements } from '../../utils/hooks';\n\nconst BuilderWrapper = ({ children }) => {\n const decidedWhichPanelToOpen = useRef(false);\n\n const pageCount = usePropStore(state => state.pages.length);\n const isLeftPanelOpen = useBuilderStore(state => state.isLeftPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const setIsLeftPanelOpen = useBuilderStore(state => state.setIsLeftPanelOpen);\n const setIsSlidesPanelOpen = useBuilderStore(state => state.setIsSlidesPanelOpen);\n const shouldShowRightPanelInitially = useBuilderStore(state => state.shouldShowRightPanelInitially);\n const onSelectedItemsChanged = usePropStore(state => state.onSelectedItemsChanged);\n const selectedItems = useSelectedElements();\n const prevSelectedItems = usePrevious(selectedItems);\n\n useEffect(() => {\n if (prevSelectedItems && !isEqual(prevSelectedItems, selectedItems)) {\n onSelectedItemsChanged(selectedItems);\n }\n }, [\n selectedItems,\n onSelectedItemsChanged,\n prevSelectedItems,\n ]);\n\n useFitZoom();\n\n useEffect(() => {\n if (!decidedWhichPanelToOpen.current) {\n if (pageCount > 1) {\n if (isLeftPanelOpen) {\n setIsLeftPanelOpen(false);\n }\n setIsSlidesPanelOpen(shouldShowRightPanelInitially);\n } else {\n if (isSlidesPanelOpen) {\n setIsSlidesPanelOpen(false);\n }\n setIsLeftPanelOpen(true);\n }\n\n decidedWhichPanelToOpen.current = true;\n }\n }, [\n pageCount,\n isLeftPanelOpen,\n isSlidesPanelOpen,\n setIsLeftPanelOpen,\n setIsSlidesPanelOpen,\n shouldShowRightPanelInitially,\n ]);\n\n return (\n <ReportWrapper mode=\"customize\">\n {children}\n </ReportWrapper>\n );\n};\n\nBuilderWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default BuilderWrapper;\n"],"names":["BuilderWrapper","children","decidedWhichPanelToOpen","useRef","pageCount","usePropStore","state","pages","length","isLeftPanelOpen","useBuilderStore","isSlidesPanelOpen","setIsLeftPanelOpen","setIsSlidesPanelOpen","shouldShowRightPanelInitially","onSelectedItemsChanged","selectedItems","useSelectedElements","prevSelectedItems","usePrevious","useEffect","isEqual","useFitZoom","current","_jsx","propTypes","PropTypes","node","isRequired"],"mappings":";;;;;;;;;IAQMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkB;AAAA,MAAfC,QAAe,QAAfA,QAAe;AACvC,MAAMC,uBAAuB,GAAGC,MAAM,CAAC,KAAD,CAAtC;AAEA,MAAMC,SAAS,GAAGC,YAAY,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACC,KAAN,CAAYC,MAAhB;AAAA,GAAN,CAA9B;AACA,MAAMC,eAAe,GAAGC,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACG,eAAV;AAAA,GAAN,CAAvC;AACA,MAAME,iBAAiB,GAAGD,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACK,iBAAV;AAAA,GAAN,CAAzC;AACA,MAAMC,kBAAkB,GAAGF,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACM,kBAAV;AAAA,GAAN,CAA1C;AACA,MAAMC,oBAAoB,GAAGH,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACO,oBAAV;AAAA,GAAN,CAA5C;AACA,MAAMC,6BAA6B,GAAGJ,eAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACQ,6BAAV;AAAA,GAAN,CAArD;AACA,MAAMC,sBAAsB,GAAGV,YAAY,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACS,sBAAV;AAAA,GAAN,CAA3C;AACA,MAAMC,aAAa,GAAGC,mBAAmB,EAAzC;AACA,MAAMC,iBAAiB,GAAGC,WAAW,CAACH,aAAD,CAArC;AAEAI,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIF,iBAAiB,IAAI,CAACG,OAAO,CAACH,iBAAD,EAAoBF,aAApB,CAAjC,EAAqE;AACnED,MAAAA,sBAAsB,CAACC,aAAD,CAAtB;AACD;AACF,GAJQ,EAIN,CACDA,aADC,EAEDD,sBAFC,EAGDG,iBAHC,CAJM,CAAT;AAUAI,EAAAA,UAAU;AAEVF,EAAAA,SAAS,CAAC,YAAM;AACd,QAAI,CAAClB,uBAAuB,CAACqB,OAA7B,EAAsC;AACpC,UAAInB,SAAS,GAAG,CAAhB,EAAmB;AACjB,YAAIK,eAAJ,EAAqB;AACnBG,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;;AACDC,QAAAA,oBAAoB,CAACC,6BAAD,CAApB;AACD,OALD,MAKO;AACL,YAAIH,iBAAJ,EAAuB;AACrBE,UAAAA,oBAAoB,CAAC,KAAD,CAApB;AACD;;AACDD,QAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD;;AAEDV,MAAAA,uBAAuB,CAACqB,OAAxB,GAAkC,IAAlC;AACD;AACF,GAhBQ,EAgBN,CACDnB,SADC,EAEDK,eAFC,EAGDE,iBAHC,EAIDC,kBAJC,EAKDC,oBALC,EAMDC,6BANC,CAhBM,CAAT;AAyBA,sBACEU,IAAC,aAAD;AAAe,IAAA,IAAI,EAAC,WAApB;AAAA,cACGvB;AADH,IADF;AAKD;;AAEDD,cAAc,CAACyB,SAAf,GAA2B;AACzBxB,EAAAA,QAAQ,EAAEyB,SAAS,CAACC,IAAV,CAAeC;AADA,CAA3B;;;;"}
@@ -11,7 +11,8 @@ import { getCorrectDroppedOffsetValue, roundPositionValues, getMatchesForItem, g
11
11
  import { pageContainer } from '../../constants/classNames.js';
12
12
  import generateId from '../../utils/generateId.js';
13
13
  import { useSelectedElements } from '../../utils/hooks.js';
14
- import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
14
+ import ErrorBoundary from '../ErrorBoundary/ErrorBoundary.js';
15
+ import { jsx, jsxs } from 'react/jsx-runtime';
15
16
 
16
17
  var _excluded = ["id", "itemType", "pageID"];
17
18
 
@@ -219,7 +220,8 @@ var Page = function Page(_ref) {
219
220
  var reportBackgroundColor = settings.reportBackgroundColor;
220
221
  var backgroundColor = page.backgroundColor;
221
222
  var bgColor = backgroundColor ? backgroundColor : reportBackgroundColor || '#fff';
222
- return /*#__PURE__*/jsx(Fragment, {
223
+ return /*#__PURE__*/jsx(ErrorBoundary, {
224
+ level: "page",
223
225
  children: /*#__PURE__*/jsx("div", {
224
226
  ref: combinedRef,
225
227
  className: pageContainer,
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sources":["../../../../src/components/Builder/Page.js"],"sourcesContent":["import {\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 findItemById,\n getMatchesForItem,\n roundPositionValues,\n getCoordinatesFromMatches,\n} from '../../utils/functions';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\nimport { useSelectedElements } from '../../utils/hooks';\n\nconst axes = ['x', 'y'];\n\nconst Page = ({\n items = [],\n page = {},\n style = {},\n}) => {\n const activeElements = useBuilderStore(state => state.activeElements);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n const isResize = useBuilderStore(state => state.isResize);\n const guides = useBuilderStore(state => state.guides);\n const matches = useBuilderStore(state => state.matches);\n const setMatches = useBuilderStore(state => state.setMatches);\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 requestRef = useRef();\n const dropRef = useRef(null); // for getting the bounding client rect\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 const newMatches = getMatchesForItem(activeItem, guides, zoom);\n setMatches(newMatches);\n }\n requestRef.current = undefined;\n } catch (error) {\n setMatches({});\n }\n };\n };\n\n const isMultipleItemSelected = activeElements.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 selectedElements = useSelectedElements();\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 setMatches({});\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 const roundedCoords = roundPositionValues(coords);\n onItemAdd({\n ...acceptedItems[itemType].details,\n id: itemID,\n pageID: page.id,\n ...roundedCoords,\n ...additionalData,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElements(itemID);\n setIsRightPanelOpen(true);\n newCoords[itemID] = roundedCoords;\n } else if (type === DRAGGABLE_ITEM_TYPE) {\n const newItem = { ...item, ...coords };\n const newMatches = getMatchesForItem(newItem, guides, zoom);\n const dragCoords = getCoordinatesFromMatches(newItem, newMatches, zoom);\n const roundedDragCoords = roundPositionValues(dragCoords);\n if (isMultipleItemSelected) {\n const leftDifference = additionalData.left - roundedDragCoords.left;\n const topDifference = additionalData.top - roundedDragCoords.top;\n const _items = activeElements.reduce((acc, curr) => {\n const tempItem = findItemById(curr, pages);\n const itemLeft = Math.round(tempItem.left - leftDifference);\n const itemTop = Math.round(tempItem.top - topDifference);\n acc[curr] = {\n id: curr,\n left: itemLeft,\n pageID: page.id,\n top: itemTop,\n };\n newCoords[curr] = {\n left: itemLeft,\n top: itemTop,\n };\n return acc;\n }, {});\n onItemsMove({ items: _items });\n } else {\n onItemMove({\n id,\n pageID: page.id,\n ...roundedDragCoords,\n });\n newCoords[id] = roundedDragCoords;\n }\n }\n\n return newCoords;\n },\n hover: onHover,\n });\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 items={items}\n />\n {additionalPageItems}\n {/* when isOver is true, the alignment guides are shown completely */}\n {/* when isResize is true, the alignment guides are shown only for the page of the selected element */}\n {(isOver || (isResize && selectedElements[0]?.pageID === page.id)) && axes.map(axis => {\n if (!matches[axis]) return null;\n return (\n <AlignmentGuides\n key={axis}\n axis={axis}\n guides={guides[page.id]}\n matches={matches[axis]}\n />\n );\n })}\n </div>\n </div>\n </>\n );\n};\n\nPage.propTypes = {\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":["axes","Page","items","page","style","activeElements","useBuilderStore","state","setActiveElements","setIsRightPanelOpen","zoom","isResize","guides","matches","setMatches","onItemAdd","usePropStore","onItemMove","onItemsMove","additionalPageItems","onAnEventTrigger","settings","acceptedItems","pages","requestRef","useRef","dropRef","drawAlignmentGuides","item","monitor","getSourceClientOffset","current","undefined","coords","getCorrectDroppedOffsetValue","getInitialSourceClientOffset","getBoundingClientRect","activeItem","id","pageID","newMatches","getMatchesForItem","error","isMultipleItemSelected","length","onHover","global","requestAnimationFrame","selectedElements","useSelectedElements","useDrop","accept","ACCEPTED_TYPES","collect","isOver","drop","type","getItemType","itemType","additionalData","newCoords","DROPPABLE_ITEM_TYPE","itemID","generateId","roundedCoords","roundPositionValues","details","DRAGGABLE_ITEM_TYPE","newItem","dragCoords","getCoordinatesFromMatches","roundedDragCoords","leftDifference","left","topDifference","top","_items","reduce","acc","curr","tempItem","findItemById","itemLeft","Math","round","itemTop","hover","combinedRef","useCallback","node","reportBackgroundColor","backgroundColor","bgColor","_jsx","classNames","_jsxs","map","axis","propTypes","PropTypes","arrayOf","shape","string","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Page.js","sources":["../../../../src/components/Builder/Page.js"],"sourcesContent":["import {\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 findItemById,\n getMatchesForItem,\n roundPositionValues,\n getCoordinatesFromMatches,\n} from '../../utils/functions';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\nimport { useSelectedElements } from '../../utils/hooks';\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary';\n\nconst axes = ['x', 'y'];\n\nconst Page = ({\n items = [],\n page = {},\n style = {},\n}) => {\n const activeElements = useBuilderStore(state => state.activeElements);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n const isResize = useBuilderStore(state => state.isResize);\n const guides = useBuilderStore(state => state.guides);\n const matches = useBuilderStore(state => state.matches);\n const setMatches = useBuilderStore(state => state.setMatches);\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 requestRef = useRef();\n const dropRef = useRef(null); // for getting the bounding client rect\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 const newMatches = getMatchesForItem(activeItem, guides, zoom);\n setMatches(newMatches);\n }\n requestRef.current = undefined;\n } catch (error) {\n setMatches({});\n }\n };\n };\n\n const isMultipleItemSelected = activeElements.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 selectedElements = useSelectedElements();\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 setMatches({});\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 const roundedCoords = roundPositionValues(coords);\n onItemAdd({\n ...acceptedItems[itemType].details,\n id: itemID,\n pageID: page.id,\n ...roundedCoords,\n ...additionalData,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElements(itemID);\n setIsRightPanelOpen(true);\n newCoords[itemID] = roundedCoords;\n } else if (type === DRAGGABLE_ITEM_TYPE) {\n const newItem = { ...item, ...coords };\n const newMatches = getMatchesForItem(newItem, guides, zoom);\n const dragCoords = getCoordinatesFromMatches(newItem, newMatches, zoom);\n const roundedDragCoords = roundPositionValues(dragCoords);\n if (isMultipleItemSelected) {\n const leftDifference = additionalData.left - roundedDragCoords.left;\n const topDifference = additionalData.top - roundedDragCoords.top;\n const _items = activeElements.reduce((acc, curr) => {\n const tempItem = findItemById(curr, pages);\n const itemLeft = Math.round(tempItem.left - leftDifference);\n const itemTop = Math.round(tempItem.top - topDifference);\n acc[curr] = {\n id: curr,\n left: itemLeft,\n pageID: page.id,\n top: itemTop,\n };\n newCoords[curr] = {\n left: itemLeft,\n top: itemTop,\n };\n return acc;\n }, {});\n onItemsMove({ items: _items });\n } else {\n onItemMove({\n id,\n pageID: page.id,\n ...roundedDragCoords,\n });\n newCoords[id] = roundedDragCoords;\n }\n }\n\n return newCoords;\n },\n hover: onHover,\n });\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 <ErrorBoundary level=\"page\">\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 items={items}\n />\n {additionalPageItems}\n {/* when isOver is true, the alignment guides are shown completely */}\n {/* when isResize is true, the alignment guides are shown only for the page of the selected element */}\n {(isOver || (isResize && selectedElements[0]?.pageID === page.id)) && axes.map(axis => {\n if (!matches[axis]) return null;\n return (\n <AlignmentGuides\n key={axis}\n axis={axis}\n guides={guides[page.id]}\n matches={matches[axis]}\n />\n );\n })}\n </div>\n </div>\n </ErrorBoundary>\n );\n};\n\nPage.propTypes = {\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":["axes","Page","items","page","style","activeElements","useBuilderStore","state","setActiveElements","setIsRightPanelOpen","zoom","isResize","guides","matches","setMatches","onItemAdd","usePropStore","onItemMove","onItemsMove","additionalPageItems","onAnEventTrigger","settings","acceptedItems","pages","requestRef","useRef","dropRef","drawAlignmentGuides","item","monitor","getSourceClientOffset","current","undefined","coords","getCorrectDroppedOffsetValue","getInitialSourceClientOffset","getBoundingClientRect","activeItem","id","pageID","newMatches","getMatchesForItem","error","isMultipleItemSelected","length","onHover","global","requestAnimationFrame","selectedElements","useSelectedElements","useDrop","accept","ACCEPTED_TYPES","collect","isOver","drop","type","getItemType","itemType","additionalData","newCoords","DROPPABLE_ITEM_TYPE","itemID","generateId","roundedCoords","roundPositionValues","details","DRAGGABLE_ITEM_TYPE","newItem","dragCoords","getCoordinatesFromMatches","roundedDragCoords","leftDifference","left","topDifference","top","_items","reduce","acc","curr","tempItem","findItemById","itemLeft","Math","round","itemTop","hover","combinedRef","useCallback","node","reportBackgroundColor","backgroundColor","bgColor","_jsx","classNames","_jsxs","map","axis","propTypes","PropTypes","arrayOf","shape","string","memo"],"mappings":"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"}
@@ -7,13 +7,13 @@ import ItemPositioner from '../ItemPositioner.js';
7
7
  import { DRAGGABLE_ITEM_TYPE } from '../../constants/itemTypes.js';
8
8
  import { isSelectedItem, getStyles, roundPositionValues, getMatchesForItem, getPosition } from '../../utils/functions.js';
9
9
  import PageItemResizer from '../PageItemResizer.js';
10
- import ErrorBoundry from '../ErrorBoundary.js';
10
+ import ErrorBoundary from '../ErrorBoundary/ErrorBoundary.js';
11
11
  import { reportItem } from '../../constants/classNames.js';
12
12
  import generateId from '../../utils/generateId.js';
13
13
  import { addEventListenerForSidebar, removeEventListenerForSidebar } from '../../utils/scrollZoneFunctions.js';
14
14
  import { useBuilderStore } from '../../contexts/BuilderContext.js';
15
15
  import { usePropStore } from '../../contexts/PropContext.js';
16
- import { jsxs, jsx } from 'react/jsx-runtime';
16
+ import { jsx, jsxs } from 'react/jsx-runtime';
17
17
 
18
18
  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; }
19
19
 
@@ -37,7 +37,7 @@ var reportItemStyle = {
37
37
  width: '100%'
38
38
  };
39
39
 
40
- var DraggableItem = function DraggableItem(_ref) {
40
+ var DraggableItemContent = function DraggableItemContent(_ref) {
41
41
  var _ref$children = _ref.children,
42
42
  children = _ref$children === void 0 ? null : _ref$children,
43
43
  _ref$item = _ref.item,
@@ -298,17 +298,18 @@ var DraggableItem = function DraggableItem(_ref) {
298
298
  width: stateWidth
299
299
  });
300
300
  }, [_item2, stateHeight, stateLeft, stateTop, stateWidth]);
301
- return /*#__PURE__*/jsxs(ErrorBoundry, {
302
- item: _item2,
303
- children: [/*#__PURE__*/jsx(ItemPositioner, {
304
- classNames: "reportItemWrapper".concat(isSelected ? ' isSelected' : ''),
305
- style: _objectSpread(_objectSpread({}, getStyles(left, top, isDragging)), {}, {
306
- height: stateHeight,
307
- left: stateLeft,
308
- top: stateTop,
309
- width: stateWidth
310
- }),
311
- children: /*#__PURE__*/jsx("div", {
301
+ return /*#__PURE__*/jsx(ItemPositioner, {
302
+ classNames: "reportItemWrapper".concat(isSelected ? ' isSelected' : ''),
303
+ style: _objectSpread(_objectSpread({}, getStyles(left, top, isDragging)), {}, {
304
+ height: stateHeight,
305
+ left: stateLeft,
306
+ top: stateTop,
307
+ width: stateWidth
308
+ }),
309
+ children: /*#__PURE__*/jsxs(ErrorBoundary, {
310
+ item: _item2,
311
+ level: "item",
312
+ children: [/*#__PURE__*/jsx("div", {
312
313
  ref: drag,
313
314
  className: "".concat(reportItem).concat(isLocked ? ' isLocked' : ''),
314
315
  onContextMenu: onContextMenuClick,
@@ -317,12 +318,21 @@ var DraggableItem = function DraggableItem(_ref) {
317
318
  onMouseDown: select,
318
319
  style: reportItemStyle,
319
320
  children: children
320
- })
321
- }), !isDragging && isSelected && /*#__PURE__*/jsx(PageItemResizer, {
322
- item: modifiedItem,
323
- onResize: onResize,
324
- onResizeStop: onResizeStop
325
- })]
321
+ }), !isDragging && isSelected && /*#__PURE__*/jsx(PageItemResizer, {
322
+ item: modifiedItem,
323
+ onResize: onResize,
324
+ onResizeStop: onResizeStop
325
+ })]
326
+ })
327
+ });
328
+ };
329
+
330
+ var DraggableItem = function DraggableItem(_ref2) {
331
+ var children = _ref2.children,
332
+ item = _ref2.item;
333
+ return /*#__PURE__*/jsx(DraggableItemContent, {
334
+ item: item,
335
+ children: children
326
336
  });
327
337
  };
328
338
 
@@ -339,6 +349,7 @@ DraggableItem.propTypes = {
339
349
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
340
350
  })
341
351
  };
352
+ DraggableItemContent.propTypes = DraggableItem.propTypes;
342
353
  var DraggableItem$1 = /*#__PURE__*/memo(DraggableItem);
343
354
 
344
355
  export default DraggableItem$1;
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableItem.js","sources":["../../../../src/components/DraggableItem/DraggableItem.js"],"sourcesContent":["import {\n useEffect, useState, memo, useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport ItemPositioner from '../ItemPositioner';\nimport { DRAGGABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getStyles, getPosition, isSelectedItem, getMatchesForItem, roundPositionValues,\n} from '../../utils/functions';\nimport PageItemResizer from '../PageItemResizer';\nimport ErrorBoundary from '../ErrorBoundary';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\nimport {\n addEventListenerForSidebar,\n removeEventListenerForSidebar,\n} from '../../utils/scrollZoneFunctions';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst reportItemStyle = {\n height: '100%',\n width: '100%',\n};\n\nconst DraggableItem = ({\n children = null,\n item = {},\n}) => {\n const {\n height,\n id,\n isLocked,\n left,\n pageID,\n top,\n width,\n } = item;\n\n const [\n {\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n },\n setResizeSize,\n ] = useState({\n height,\n left,\n top,\n width,\n });\n\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemResize = usePropStore(state => state.onItemResize);\n\n const activeElements = useBuilderStore(state => state.activeElements);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setContextMenuProps = useBuilderStore(state => state.setContextMenuProps);\n const isTextEditorOpen = useBuilderStore(state => state.isTextEditorOpen);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const setIsResize = useBuilderStore(state => state.setIsResize);\n const setMatches = useBuilderStore(state => state.setMatches);\n const guides = useBuilderStore(state => state.guides);\n const zoom = useBuilderStore(state => state.zoom);\n\n const isSelected = isSelectedItem(item.id, activeElements);\n\n const select = event => {\n if (!isSelected) {\n if (!event || !event.metaKey) { // Single item selected\n setActiveElements(id, true);\n if (isLocked) {\n setIsRightPanelOpen(false);\n }\n } else {\n // Multiple items selected\n setActiveElements(id, false, false);\n setIsRightPanelOpen(false);\n }\n }\n };\n\n const canDrag = !item.isLocked && !isTextEditorOpen;\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n canDrag: () => canDrag,\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n end: (_item, monitor) => {\n const dropResult = monitor.getDropResult();\n if (dropResult && dropResult[id]) {\n const { left: dropLeft, top: dropTop } = dropResult[id];\n setResizeSize(prev => {\n return {\n height: prev.height,\n left: dropLeft,\n top: dropTop,\n width: prev.width,\n };\n });\n }\n removeEventListenerForSidebar();\n },\n isDragging: () => isSelected,\n item: () => {\n select();\n addEventListenerForSidebar();\n return item;\n },\n type: DRAGGABLE_ITEM_TYPE,\n }), [\n item,\n canDrag,\n id,\n isSelected,\n ]);\n\n useEffect(() => {\n if (preview) {\n preview(getEmptyImage(), { captureDraggingState: true });\n }\n }, [preview]);\n\n useEffect(() => {\n setResizeSize(prev => {\n if (prev.left !== left || prev.top !== top || prev.width !== width || prev.height !== height) {\n return {\n ...prev,\n height,\n left,\n top,\n width,\n };\n }\n\n return prev;\n });\n }, [left, top, width, height]);\n\n const onResizeStop = () => {\n setIsResize(false);\n setMatches({});\n onItemResize(item, roundPositionValues({\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }));\n };\n\n const onResize = (deltaWidth, deltaHeight, direction) => {\n setIsResize(true);\n\n const isLeft = /left/i.test(direction);\n const isTop = /top/i.test(direction);\n const isRight = /right/i.test(direction);\n const isBottom = /bottom/i.test(direction);\n\n const activeItem = {\n ...item,\n height: item.height + deltaHeight,\n left: isLeft ? item.left - deltaWidth : item.left,\n top: isTop ? item.top - deltaHeight : item.top,\n width: item.width + deltaWidth,\n };\n\n const newMatches = getMatchesForItem(activeItem, guides, zoom, direction);\n setMatches(newMatches);\n\n const snapX = newMatches?.x?.intersection / zoom;\n const snapY = newMatches?.y?.intersection / zoom;\n\n const rightEdge = item.left + item.width;\n const bottomEdge = item.top + item.height;\n\n const getWidth = () => {\n if (!snapX) return activeItem.width;\n return isRight ? snapX - item.left : rightEdge - snapX;\n };\n\n const getHeight = () => {\n if (!snapY) return activeItem.height;\n return isBottom ? snapY - item.top : bottomEdge - snapY;\n };\n\n const getLeft = () => {\n if (snapX && isLeft) return snapX;\n return isLeft ? activeItem.left : item.left;\n };\n\n const getTop = () => {\n if (snapY && isTop) return snapY;\n return isTop ? activeItem.top : item.top;\n };\n\n setResizeSize({\n height: getHeight(),\n left: getLeft(),\n top: getTop(),\n width: getWidth(),\n });\n };\n\n const onContextMenuClick = e => {\n if (\n e.target.contentEditable === 'true'\n || isTextEditorOpen\n ) {\n // Dont override behaviour on text edits.\n return;\n }\n\n e.preventDefault();\n onAnEventTrigger('openContextMenu', item.itemType);\n setContextMenuProps({\n id,\n pageID,\n position: getPosition(e),\n });\n };\n\n const onDoubleClick = e => {\n if (\n e.target.contentEditable === 'true'\n || isTextEditorOpen\n ) {\n // Dont override behaviour on text edits.\n return;\n }\n\n setIsRightPanelOpen(true);\n };\n\n const duplicateWithAltKey = e => {\n if (e.altKey) {\n const itemID = generateId();\n const itemToAdd = item;\n setTimeout(() => {\n onItemAdd({\n ...itemToAdd,\n id: itemID,\n left: itemToAdd.left,\n top: itemToAdd.top,\n });\n onAnEventTrigger('duplicateItem', itemToAdd.itemType);\n });\n }\n };\n\n const modifiedItem = useMemo(() => ({\n ...item,\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }), [item, stateHeight, stateLeft, stateTop, stateWidth]);\n\n return (\n <ErrorBoundary item={item}>\n <ItemPositioner\n classNames={`reportItemWrapper${isSelected ? ' isSelected' : ''}`}\n style={{\n ...getStyles(left, top, isDragging),\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }}\n >\n <div\n ref={drag}\n className={`${classNames.reportItem}${isLocked ? ' isLocked' : ''}`}\n onContextMenu={onContextMenuClick}\n onDoubleClick={onDoubleClick}\n onDragStart={duplicateWithAltKey}\n onMouseDown={select}\n style={reportItemStyle}\n >\n {children}\n </div>\n </ItemPositioner>\n {!isDragging && isSelected && (\n <PageItemResizer\n item={modifiedItem}\n onResize={onResize}\n onResizeStop={onResizeStop}\n />\n )}\n </ErrorBoundary>\n );\n};\n\nDraggableItem.propTypes = {\n children: PropTypes.any,\n item: PropTypes.shape({\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n pageID: PropTypes.string,\n top: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }),\n};\n\nexport default memo(DraggableItem);\n"],"names":["reportItemStyle","height","width","DraggableItem","children","item","id","isLocked","left","pageID","top","useState","stateHeight","stateLeft","stateTop","stateWidth","setResizeSize","onAnEventTrigger","usePropStore","state","onItemAdd","onItemResize","activeElements","useBuilderStore","setActiveElements","setContextMenuProps","isTextEditorOpen","setIsRightPanelOpen","setIsResize","setMatches","guides","zoom","isSelected","isSelectedItem","select","event","metaKey","canDrag","useDrag","collect","monitor","isDragging","end","_item","dropResult","getDropResult","dropLeft","dropTop","prev","removeEventListenerForSidebar","addEventListenerForSidebar","type","DRAGGABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onResizeStop","roundPositionValues","onResize","deltaWidth","deltaHeight","direction","isLeft","test","isTop","isRight","isBottom","activeItem","newMatches","getMatchesForItem","snapX","x","intersection","snapY","y","rightEdge","bottomEdge","getWidth","getHeight","getLeft","getTop","onContextMenuClick","e","target","contentEditable","preventDefault","itemType","position","getPosition","onDoubleClick","duplicateWithAltKey","altKey","itemID","generateId","itemToAdd","setTimeout","modifiedItem","useMemo","_jsxs","ErrorBoundary","_jsx","getStyles","classNames","propTypes","PropTypes","any","shape","oneOfType","number","string","bool","memo"],"mappings":"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"}
1
+ {"version":3,"file":"DraggableItem.js","sources":["../../../../src/components/DraggableItem/DraggableItem.js"],"sourcesContent":["import {\n useEffect, useState, memo, useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport ItemPositioner from '../ItemPositioner';\nimport { DRAGGABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getStyles, getPosition, isSelectedItem, getMatchesForItem, roundPositionValues,\n} from '../../utils/functions';\nimport PageItemResizer from '../PageItemResizer';\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\nimport {\n addEventListenerForSidebar,\n removeEventListenerForSidebar,\n} from '../../utils/scrollZoneFunctions';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst reportItemStyle = {\n height: '100%',\n width: '100%',\n};\n\nconst DraggableItemContent = ({\n children = null,\n item = {},\n}) => {\n const {\n height,\n id,\n isLocked,\n left,\n pageID,\n top,\n width,\n } = item;\n\n const [\n {\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n },\n setResizeSize,\n ] = useState({\n height,\n left,\n top,\n width,\n });\n\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemResize = usePropStore(state => state.onItemResize);\n\n const activeElements = useBuilderStore(state => state.activeElements);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setContextMenuProps = useBuilderStore(state => state.setContextMenuProps);\n const isTextEditorOpen = useBuilderStore(state => state.isTextEditorOpen);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const setIsResize = useBuilderStore(state => state.setIsResize);\n const setMatches = useBuilderStore(state => state.setMatches);\n const guides = useBuilderStore(state => state.guides);\n const zoom = useBuilderStore(state => state.zoom);\n\n const isSelected = isSelectedItem(item.id, activeElements);\n\n const select = event => {\n if (!isSelected) {\n if (!event || !event.metaKey) { // Single item selected\n setActiveElements(id, true);\n if (isLocked) {\n setIsRightPanelOpen(false);\n }\n } else {\n // Multiple items selected\n setActiveElements(id, false, false);\n setIsRightPanelOpen(false);\n }\n }\n };\n\n const canDrag = !item.isLocked && !isTextEditorOpen;\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n canDrag: () => canDrag,\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n end: (_item, monitor) => {\n const dropResult = monitor.getDropResult();\n if (dropResult && dropResult[id]) {\n const { left: dropLeft, top: dropTop } = dropResult[id];\n setResizeSize(prev => {\n return {\n height: prev.height,\n left: dropLeft,\n top: dropTop,\n width: prev.width,\n };\n });\n }\n removeEventListenerForSidebar();\n },\n isDragging: () => isSelected,\n item: () => {\n select();\n addEventListenerForSidebar();\n return item;\n },\n type: DRAGGABLE_ITEM_TYPE,\n }), [\n item,\n canDrag,\n id,\n isSelected,\n ]);\n\n useEffect(() => {\n if (preview) {\n preview(getEmptyImage(), { captureDraggingState: true });\n }\n }, [preview]);\n\n useEffect(() => {\n setResizeSize(prev => {\n if (prev.left !== left || prev.top !== top || prev.width !== width || prev.height !== height) {\n return {\n ...prev,\n height,\n left,\n top,\n width,\n };\n }\n\n return prev;\n });\n }, [left, top, width, height]);\n\n const onResizeStop = () => {\n setIsResize(false);\n setMatches({});\n onItemResize(item, roundPositionValues({\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }));\n };\n\n const onResize = (deltaWidth, deltaHeight, direction) => {\n setIsResize(true);\n\n const isLeft = /left/i.test(direction);\n const isTop = /top/i.test(direction);\n const isRight = /right/i.test(direction);\n const isBottom = /bottom/i.test(direction);\n\n const activeItem = {\n ...item,\n height: item.height + deltaHeight,\n left: isLeft ? item.left - deltaWidth : item.left,\n top: isTop ? item.top - deltaHeight : item.top,\n width: item.width + deltaWidth,\n };\n\n const newMatches = getMatchesForItem(activeItem, guides, zoom, direction);\n setMatches(newMatches);\n\n const snapX = newMatches?.x?.intersection / zoom;\n const snapY = newMatches?.y?.intersection / zoom;\n\n const rightEdge = item.left + item.width;\n const bottomEdge = item.top + item.height;\n\n const getWidth = () => {\n if (!snapX) return activeItem.width;\n return isRight ? snapX - item.left : rightEdge - snapX;\n };\n\n const getHeight = () => {\n if (!snapY) return activeItem.height;\n return isBottom ? snapY - item.top : bottomEdge - snapY;\n };\n\n const getLeft = () => {\n if (snapX && isLeft) return snapX;\n return isLeft ? activeItem.left : item.left;\n };\n\n const getTop = () => {\n if (snapY && isTop) return snapY;\n return isTop ? activeItem.top : item.top;\n };\n\n setResizeSize({\n height: getHeight(),\n left: getLeft(),\n top: getTop(),\n width: getWidth(),\n });\n };\n\n const onContextMenuClick = e => {\n if (\n e.target.contentEditable === 'true'\n || isTextEditorOpen\n ) {\n // Dont override behaviour on text edits.\n return;\n }\n\n e.preventDefault();\n onAnEventTrigger('openContextMenu', item.itemType);\n setContextMenuProps({\n id,\n pageID,\n position: getPosition(e),\n });\n };\n\n const onDoubleClick = e => {\n if (\n e.target.contentEditable === 'true'\n || isTextEditorOpen\n ) {\n // Dont override behaviour on text edits.\n return;\n }\n\n setIsRightPanelOpen(true);\n };\n\n const duplicateWithAltKey = e => {\n if (e.altKey) {\n const itemID = generateId();\n const itemToAdd = item;\n setTimeout(() => {\n onItemAdd({\n ...itemToAdd,\n id: itemID,\n left: itemToAdd.left,\n top: itemToAdd.top,\n });\n onAnEventTrigger('duplicateItem', itemToAdd.itemType);\n });\n }\n };\n\n const modifiedItem = useMemo(() => ({\n ...item,\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }), [item, stateHeight, stateLeft, stateTop, stateWidth]);\n\n return (\n <ItemPositioner\n classNames={`reportItemWrapper${isSelected ? ' isSelected' : ''}`}\n style={{\n ...getStyles(left, top, isDragging),\n height: stateHeight,\n left: stateLeft,\n top: stateTop,\n width: stateWidth,\n }}\n >\n <ErrorBoundary\n item={item}\n level=\"item\"\n >\n <div\n ref={drag}\n className={`${classNames.reportItem}${isLocked ? ' isLocked' : ''}`}\n onContextMenu={onContextMenuClick}\n onDoubleClick={onDoubleClick}\n onDragStart={duplicateWithAltKey}\n onMouseDown={select}\n style={reportItemStyle}\n >\n {children}\n </div>\n {!isDragging && isSelected && (\n <PageItemResizer\n item={modifiedItem}\n onResize={onResize}\n onResizeStop={onResizeStop}\n />\n )}\n </ErrorBoundary>\n </ItemPositioner>\n );\n};\n\nconst DraggableItem = ({ children, item }) => (\n <DraggableItemContent item={item}>\n {children}\n </DraggableItemContent>\n);\n\nDraggableItem.propTypes = {\n children: PropTypes.any,\n item: PropTypes.shape({\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n pageID: PropTypes.string,\n top: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }),\n};\n\nDraggableItemContent.propTypes = DraggableItem.propTypes;\n\nexport default memo(DraggableItem);\n"],"names":["reportItemStyle","height","width","DraggableItemContent","children","item","id","isLocked","left","pageID","top","useState","stateHeight","stateLeft","stateTop","stateWidth","setResizeSize","onAnEventTrigger","usePropStore","state","onItemAdd","onItemResize","activeElements","useBuilderStore","setActiveElements","setContextMenuProps","isTextEditorOpen","setIsRightPanelOpen","setIsResize","setMatches","guides","zoom","isSelected","isSelectedItem","select","event","metaKey","canDrag","useDrag","collect","monitor","isDragging","end","_item","dropResult","getDropResult","dropLeft","dropTop","prev","removeEventListenerForSidebar","addEventListenerForSidebar","type","DRAGGABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onResizeStop","roundPositionValues","onResize","deltaWidth","deltaHeight","direction","isLeft","test","isTop","isRight","isBottom","activeItem","newMatches","getMatchesForItem","snapX","x","intersection","snapY","y","rightEdge","bottomEdge","getWidth","getHeight","getLeft","getTop","onContextMenuClick","e","target","contentEditable","preventDefault","itemType","position","getPosition","onDoubleClick","duplicateWithAltKey","altKey","itemID","generateId","itemToAdd","setTimeout","modifiedItem","useMemo","_jsx","getStyles","_jsxs","classNames","DraggableItem","propTypes","PropTypes","any","shape","oneOfType","number","string","bool","memo"],"mappings":"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"}