@jotforminc/dnd-builder 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/index.d.ts +428 -0
- package/lib/cjs/components/AlignmentGuides.js +28 -18
- package/lib/cjs/components/AlignmentGuides.js.map +1 -1
- package/lib/cjs/components/Builder/ContextMenu.js +4 -1
- package/lib/cjs/components/Builder/ContextMenu.js.map +1 -1
- package/lib/cjs/components/Builder/DraggableLayer.js +1 -5
- package/lib/cjs/components/Builder/DraggableLayer.js.map +1 -1
- package/lib/cjs/components/Builder/Element.js +7 -4
- package/lib/cjs/components/Builder/Element.js.map +1 -1
- package/lib/cjs/components/Builder/Page.js +56 -62
- package/lib/cjs/components/Builder/Page.js.map +1 -1
- package/lib/cjs/components/Builder/Scene.js +30 -251
- package/lib/cjs/components/Builder/Scene.js.map +1 -1
- package/lib/cjs/components/Builder/SelectionBox.js +48 -0
- package/lib/cjs/components/Builder/SelectionBox.js.map +1 -0
- package/lib/cjs/components/DraggableItem/DraggableItem.js +78 -135
- package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
- package/lib/cjs/components/DraggableItem/DraggableItemActions.js +69 -29
- package/lib/cjs/components/DraggableItem/DraggableItemActions.js.map +1 -1
- package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +8 -8
- package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
- package/lib/cjs/components/PageItemResizer.js +37 -43
- package/lib/cjs/components/PageItemResizer.js.map +1 -1
- package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js +1 -3
- package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
- package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js +0 -6
- package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
- package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js +1 -4
- package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
- package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
- package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js +7 -7
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js +9 -10
- package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js +1 -3
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
- package/lib/cjs/components/ReportItemsWrapper.js +5 -11
- package/lib/cjs/components/ReportItemsWrapper.js.map +1 -1
- package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
- package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
- package/lib/cjs/components/Settings/PageLayer/LayerItem.js +12 -7
- package/lib/cjs/components/Settings/PageLayer/LayerItem.js.map +1 -1
- package/lib/cjs/components/Settings/PageLayer/PageLayer.js +2 -4
- package/lib/cjs/components/Settings/PageLayer/PageLayer.js.map +1 -1
- package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
- package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
- package/lib/cjs/constants/texts.js +0 -1
- package/lib/cjs/constants/texts.js.map +1 -1
- package/lib/cjs/contexts/BuilderContext.js +47 -23
- package/lib/cjs/contexts/BuilderContext.js.map +1 -1
- package/lib/cjs/styles/_jfReportsPages.scss +8 -1
- package/lib/cjs/utils/functions.js +124 -34
- package/lib/cjs/utils/functions.js.map +1 -1
- package/lib/cjs/utils/hooks.js +7 -7
- package/lib/cjs/utils/hooks.js.map +1 -1
- package/lib/cjs/utils/useKeyboardActions.js +263 -0
- package/lib/cjs/utils/useKeyboardActions.js.map +1 -0
- package/lib/cjs/utils/useMarqueeSelection.js +156 -0
- package/lib/cjs/utils/useMarqueeSelection.js.map +1 -0
- package/lib/esm/components/AlignmentGuides.js +28 -18
- package/lib/esm/components/AlignmentGuides.js.map +1 -1
- package/lib/esm/components/Builder/ContextMenu.js +4 -1
- package/lib/esm/components/Builder/ContextMenu.js.map +1 -1
- package/lib/esm/components/Builder/DraggableLayer.js +1 -5
- package/lib/esm/components/Builder/DraggableLayer.js.map +1 -1
- package/lib/esm/components/Builder/Element.js +7 -4
- package/lib/esm/components/Builder/Element.js.map +1 -1
- package/lib/esm/components/Builder/Page.js +58 -64
- package/lib/esm/components/Builder/Page.js.map +1 -1
- package/lib/esm/components/Builder/Scene.js +32 -253
- package/lib/esm/components/Builder/Scene.js.map +1 -1
- package/lib/esm/components/Builder/SelectionBox.js +42 -0
- package/lib/esm/components/Builder/SelectionBox.js.map +1 -0
- package/lib/esm/components/DraggableItem/DraggableItem.js +80 -137
- package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
- package/lib/esm/components/DraggableItem/DraggableItemActions.js +72 -28
- package/lib/esm/components/DraggableItem/DraggableItemActions.js.map +1 -1
- package/lib/esm/components/DraggableItem/DraggableItemLayer.js +9 -9
- package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
- package/lib/esm/components/PageItemResizer.js +38 -44
- package/lib/esm/components/PageItemResizer.js.map +1 -1
- package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js +2 -4
- package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
- package/lib/esm/components/Panels/AllSlidesPanel/PageList.js +0 -6
- package/lib/esm/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
- package/lib/esm/components/Panels/LeftPanel/LeftPanel.js +3 -6
- package/lib/esm/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
- package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
- package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanel.js +7 -7
- package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js +9 -10
- package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js +2 -4
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
- package/lib/esm/components/ReportItemsWrapper.js +5 -11
- package/lib/esm/components/ReportItemsWrapper.js.map +1 -1
- package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
- package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
- package/lib/esm/components/Settings/PageLayer/LayerItem.js +12 -7
- package/lib/esm/components/Settings/PageLayer/LayerItem.js.map +1 -1
- package/lib/esm/components/Settings/PageLayer/PageLayer.js +2 -4
- package/lib/esm/components/Settings/PageLayer/PageLayer.js.map +1 -1
- package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
- package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
- package/lib/esm/constants/texts.js +0 -1
- package/lib/esm/constants/texts.js.map +1 -1
- package/lib/esm/contexts/BuilderContext.js +47 -23
- package/lib/esm/contexts/BuilderContext.js.map +1 -1
- package/lib/esm/styles/_jfReportsPages.scss +8 -1
- package/lib/esm/utils/functions.js +121 -34
- package/lib/esm/utils/functions.js.map +1 -1
- package/lib/esm/utils/hooks.js +7 -7
- package/lib/esm/utils/hooks.js.map +1 -1
- package/lib/esm/utils/useKeyboardActions.js +261 -0
- package/lib/esm/utils/useKeyboardActions.js.map +1 -0
- package/lib/esm/utils/useMarqueeSelection.js +154 -0
- package/lib/esm/utils/useMarqueeSelection.js.map +1 -0
- package/package.json +11 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","sources":["../../../../src/components/Builder/ContextMenu.js"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useEventListener, useTranslatedTexts } from '../../utils/hooks';\nimport {\n collisionCheck,\n getContainerPositions,\n moveArrayItem,\n} from '../../utils/functions';\nimport * as icons from '../../utils/icons';\n\nimport withClickOutside from '../withClickOutside';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst ContextMenu = ({\n height = 1,\n item = {},\n items = [],\n onClickOutside = () => {},\n position = {},\n width = 1,\n}) => {\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onPageChange = usePropStore(state => state.onPageChange);\n const [positions, setPositions] = useState(position);\n const container = useRef(null);\n const itemIndex = items.findIndex(_item => _item.id === item.id);\n // Will be mutated.\n const orderArray = items.map(_item => _item.id);\n\n const removeFunc = () => {\n // TODO :: should listen to scroll event, not wheel\n onClickOutside();\n };\n\n useEventListener('wheel', removeFunc);\n\n useLayoutEffect(() => {\n setPositions(prev => {\n const newPosition = getContainerPositions(container.current, prev);\n return {\n ...prev,\n x: newPosition.x,\n y: newPosition.y,\n };\n });\n }, []);\n\n const moveToFront = () => {\n if (items.length !== itemIndex + 1) {\n moveArrayItem(orderArray, itemIndex, items.length - 1);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveToBack = () => {\n if (itemIndex !== 0) {\n moveArrayItem(orderArray, itemIndex, 0);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveForward = () => {\n if (items.length !== itemIndex + 1) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, 1);\n if (colluddedItemIndex !== null) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex + 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveBackward = () => {\n if (itemIndex !== 0) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, -1);\n if (colluddedItemIndex) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex - 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n\n onClickOutside();\n };\n\n const deleteItem = () => {\n onItemRemove(item);\n onClickOutside();\n onAnEventTrigger('removeItem', item.itemType);\n };\n\n const lockOrUnlockItem = () => {\n onItemChange({ id: item.id }, { isLocked: item.isLocked ? false : true });\n onClickOutside();\n };\n\n const fitToPage = () => {\n let _height = height;\n let _width = width;\n // Keep image ratio on fit\n if (item.itemType === 'image') {\n if (item.height > item.width) {\n _width = (item.width * _height) / item.height;\n } else if (item.width > item.height) {\n _height = (item.height * _width) / item.width;\n }\n }\n\n onItemChange({ id: item.id }, {\n height: _height,\n left: 0,\n top: 0,\n width: _width,\n });\n\n onClickOutside();\n onAnEventTrigger('fitToPage', item.itemType);\n };\n\n const {\n DELETE, FIT_TO_PAGE, LOCK_ITEM,\n MOVE_BACKWARDS, MOVE_FORWARDS,\n MOVE_TO_BACK, MOVE_TO_FRONT, UNLOCK_ITEM,\n } = useTranslatedTexts();\n\n const menuItems = [\n { func: moveToFront, icon: <icons.moveToFront />, text: MOVE_TO_FRONT },\n { func: moveForward, icon: <icons.moveToForward />, text: MOVE_FORWARDS },\n { func: moveBackward, icon: <icons.moveToBackward />, text: MOVE_BACKWARDS },\n { func: moveToBack, icon: <icons.moveToBack />, text: MOVE_TO_BACK },\n {\n func: lockOrUnlockItem,\n icon: item.isLocked ? (\n <icons.unlock className=\"icon-lock\" />\n ) : (\n <icons.lock className=\"icon-lock\" />\n ),\n text: item.isLocked ? UNLOCK_ITEM : LOCK_ITEM,\n },\n {\n func: fitToPage, icon: <icons.enterFullscreen className=\"icon-lock\" />, text: FIT_TO_PAGE,\n },\n {\n class: ' isDanger', func: deleteItem, icon: <icons.trash />, text: DELETE,\n },\n ];\n\n return (\n <div\n ref={container}\n className=\"contextMenu-wrapper\"\n style={{\n left: positions.x,\n top: positions.y,\n }}\n >\n {menuItems.map(menuItem => {\n const btnClass = `contextMenu-button jfReportButton${menuItem.class ? menuItem.class : ''}`;\n return (\n <button\n key={menuItem.text}\n className={btnClass}\n onClick={menuItem.func}\n type=\"button\"\n >\n <span className=\"contextMenu-icon\">\n {menuItem.icon}\n </span>\n {menuItem.text}\n </button>\n );\n })}\n </div>\n );\n};\n\nContextMenu.propTypes = {\n height: PropTypes.number,\n item: PropTypes.shape({\n height: PropTypes.number,\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.number,\n pageID: PropTypes.string,\n top: PropTypes.number,\n width: PropTypes.number,\n }),\n items: PropTypes.arrayOf(PropTypes.shape({\n height: PropTypes.number,\n // id: PropTypes.string,\n left: PropTypes.number,\n top: PropTypes.number,\n width: PropTypes.number,\n })),\n onClickOutside: PropTypes.func,\n position: PropTypes.shape({}),\n width: PropTypes.number,\n};\n\nconst PortalContext = props => createPortal(<ContextMenu {...props} />, document.body);\n\nexport default withClickOutside(PortalContext);\n"],"names":["ContextMenu","height","item","items","onClickOutside","position","width","onAnEventTrigger","usePropStore","state","onItemChange","onItemRemove","onPageChange","useState","positions","setPositions","container","useRef","itemIndex","findIndex","_item","id","orderArray","map","removeFunc","useEventListener","useLayoutEffect","prev","newPosition","getContainerPositions","current","x","y","moveToFront","length","moveArrayItem","pageID","JSON","stringify","moveToBack","moveForward","colluddedItemIndex","collisionCheck","moveBackward","deleteItem","itemType","lockOrUnlockItem","isLocked","fitToPage","_height","_width","left","top","useTranslatedTexts","DELETE","FIT_TO_PAGE","LOCK_ITEM","MOVE_BACKWARDS","MOVE_FORWARDS","MOVE_TO_BACK","MOVE_TO_FRONT","UNLOCK_ITEM","menuItems","func","icon","_jsx","icons.moveToFront","text","icons.moveToForward","icons.moveToBackward","icons.moveToBack","icons.unlock","icons.lock","icons.enterFullscreen","class","icons.trash","menuItem","btnClass","_jsxs","propTypes","PropTypes","number","shape","string","bool","arrayOf","PortalContext","props","createPortal","document","body","withClickOutside"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","sources":["../../../../src/components/Builder/ContextMenu.js"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useEventListener, useTranslatedTexts } from '../../utils/hooks';\nimport {\n collisionCheck,\n getContainerPositions,\n moveArrayItem,\n} from '../../utils/functions';\nimport * as icons from '../../utils/icons';\n\nimport withClickOutside from '../withClickOutside';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst ContextMenu = ({\n height = 1,\n item = {},\n items = [],\n onClickOutside = () => {},\n position = {},\n width = 1,\n}) => {\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onPageChange = usePropStore(state => state.onPageChange);\n const [positions, setPositions] = useState(position);\n const container = useRef(null);\n const itemIndex = items.findIndex(_item => _item.id === item.id);\n // Will be mutated.\n const orderArray = items.map(_item => _item.id);\n\n const removeFunc = () => {\n // TODO :: should listen to scroll event, not wheel\n onClickOutside();\n };\n\n useEventListener('wheel', removeFunc);\n\n useLayoutEffect(() => {\n setPositions(prev => {\n const newPosition = getContainerPositions(container.current, prev);\n return {\n ...prev,\n x: newPosition.x,\n y: newPosition.y,\n };\n });\n }, []);\n\n const moveToFront = () => {\n if (items.length !== itemIndex + 1) {\n moveArrayItem(orderArray, itemIndex, items.length - 1);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveToBack = () => {\n if (itemIndex !== 0) {\n moveArrayItem(orderArray, itemIndex, 0);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveForward = () => {\n if (items.length !== itemIndex + 1) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, 1);\n if (colluddedItemIndex !== null) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex + 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveBackward = () => {\n if (itemIndex !== 0) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, -1);\n if (colluddedItemIndex) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex - 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n\n onClickOutside();\n };\n\n const deleteItem = () => {\n onItemRemove(item);\n onClickOutside();\n onAnEventTrigger('removeItem', item.itemType);\n };\n\n const lockOrUnlockItem = () => {\n onItemChange({ id: item.id }, { isLocked: item.isLocked ? false : true });\n onClickOutside();\n };\n\n const fitToPage = () => {\n let _height = height;\n let _width = width;\n // Keep image ratio on fit\n if (item.itemType === 'image') {\n if (item.height > item.width) {\n _width = (item.width * _height) / item.height;\n } else if (item.width > item.height) {\n _height = (item.height * _width) / item.width;\n }\n }\n\n onItemChange({ id: item.id }, {\n height: _height,\n left: 0,\n top: 0,\n width: _width,\n });\n\n onClickOutside();\n onAnEventTrigger('fitToPage', item.itemType);\n };\n\n const {\n DELETE, FIT_TO_PAGE, LOCK_ITEM,\n MOVE_BACKWARDS, MOVE_FORWARDS,\n MOVE_TO_BACK, MOVE_TO_FRONT, UNLOCK_ITEM,\n } = useTranslatedTexts();\n\n const menuItems = [\n { func: moveToFront, icon: <icons.moveToFront />, text: MOVE_TO_FRONT },\n { func: moveForward, icon: <icons.moveToForward />, text: MOVE_FORWARDS },\n { func: moveBackward, icon: <icons.moveToBackward />, text: MOVE_BACKWARDS },\n { func: moveToBack, icon: <icons.moveToBack />, text: MOVE_TO_BACK },\n {\n func: lockOrUnlockItem,\n icon: item.isLocked ? (\n <icons.unlock className=\"icon-lock\" />\n ) : (\n <icons.lock className=\"icon-lock\" />\n ),\n text: item.isLocked ? UNLOCK_ITEM : LOCK_ITEM,\n },\n {\n func: fitToPage, icon: <icons.enterFullscreen className=\"icon-lock\" />, text: FIT_TO_PAGE,\n },\n {\n class: ' isDanger', func: deleteItem, icon: <icons.trash />, text: DELETE,\n },\n ];\n\n return (\n <div\n ref={container}\n className=\"contextMenu-wrapper\"\n style={{\n left: positions.x,\n top: positions.y,\n }}\n >\n {menuItems.map(menuItem => {\n const btnClass = `contextMenu-button jfReportButton${menuItem.class ? menuItem.class : ''}`;\n return (\n <button\n key={menuItem.text}\n className={btnClass}\n onClick={menuItem.func}\n type=\"button\"\n >\n <span className=\"contextMenu-icon\">\n {menuItem.icon}\n </span>\n <span className=\"contextMenu-text\">\n {menuItem.text}\n </span>\n </button>\n );\n })}\n </div>\n );\n};\n\nContextMenu.propTypes = {\n height: PropTypes.number,\n item: PropTypes.shape({\n height: PropTypes.number,\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.number,\n pageID: PropTypes.string,\n top: PropTypes.number,\n width: PropTypes.number,\n }),\n items: PropTypes.arrayOf(PropTypes.shape({\n height: PropTypes.number,\n // id: PropTypes.string,\n left: PropTypes.number,\n top: PropTypes.number,\n width: PropTypes.number,\n })),\n onClickOutside: PropTypes.func,\n position: PropTypes.shape({}),\n width: PropTypes.number,\n};\n\nconst PortalContext = props => createPortal(<ContextMenu {...props} />, document.body);\n\nexport default withClickOutside(PortalContext);\n"],"names":["ContextMenu","height","item","items","onClickOutside","position","width","onAnEventTrigger","usePropStore","state","onItemChange","onItemRemove","onPageChange","useState","positions","setPositions","container","useRef","itemIndex","findIndex","_item","id","orderArray","map","removeFunc","useEventListener","useLayoutEffect","prev","newPosition","getContainerPositions","current","x","y","moveToFront","length","moveArrayItem","pageID","JSON","stringify","moveToBack","moveForward","colluddedItemIndex","collisionCheck","moveBackward","deleteItem","itemType","lockOrUnlockItem","isLocked","fitToPage","_height","_width","left","top","useTranslatedTexts","DELETE","FIT_TO_PAGE","LOCK_ITEM","MOVE_BACKWARDS","MOVE_FORWARDS","MOVE_TO_BACK","MOVE_TO_FRONT","UNLOCK_ITEM","menuItems","func","icon","_jsx","icons.moveToFront","text","icons.moveToForward","icons.moveToBackward","icons.moveToBack","icons.unlock","icons.lock","icons.enterFullscreen","class","icons.trash","menuItem","btnClass","_jsxs","propTypes","PropTypes","number","shape","string","bool","arrayOf","PortalContext","props","createPortal","document","body","withClickOutside"],"mappings":"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"}
|
|
@@ -4,9 +4,7 @@ import DraggableItemLayer from '../DraggableItem/DraggableItemLayer.js';
|
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
var DraggableLayer = function DraggableLayer(_ref) {
|
|
7
|
-
var _ref$
|
|
8
|
-
guides = _ref$guides === void 0 ? {} : _ref$guides,
|
|
9
|
-
_ref$pageRefs = _ref.pageRefs,
|
|
7
|
+
var _ref$pageRefs = _ref.pageRefs,
|
|
10
8
|
pageRefs = _ref$pageRefs === void 0 ? {} : _ref$pageRefs;
|
|
11
9
|
var collectedProps = useDragLayer(function (monitor) {
|
|
12
10
|
return {
|
|
@@ -24,13 +22,11 @@ var DraggableLayer = function DraggableLayer(_ref) {
|
|
|
24
22
|
|
|
25
23
|
return /*#__PURE__*/jsx(DraggableItemLayer, {
|
|
26
24
|
collectedProps: collectedProps,
|
|
27
|
-
guides: guides,
|
|
28
25
|
pageRefs: pageRefs
|
|
29
26
|
});
|
|
30
27
|
};
|
|
31
28
|
|
|
32
29
|
DraggableLayer.propTypes = {
|
|
33
|
-
guides: PropTypes.shape({}),
|
|
34
30
|
pageRefs: PropTypes.shape({})
|
|
35
31
|
};
|
|
36
32
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DraggableLayer.js","sources":["../../../../src/components/Builder/DraggableLayer.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useDragLayer } from 'react-dnd';\nimport DraggableItemLayer from '../DraggableItem/DraggableItemLayer';\n\nconst DraggableLayer = ({\n
|
|
1
|
+
{"version":3,"file":"DraggableLayer.js","sources":["../../../../src/components/Builder/DraggableLayer.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useDragLayer } from 'react-dnd';\nimport DraggableItemLayer from '../DraggableItem/DraggableItemLayer';\n\nconst DraggableLayer = ({\n pageRefs = {},\n}) => {\n const collectedProps = useDragLayer(monitor => ({\n currentOffset: monitor.getSourceClientOffset(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n isDragging: monitor.isDragging(),\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n }));\n\n if (!collectedProps.currentOffset || !collectedProps.isDragging) {\n return null;\n }\n\n return (\n <DraggableItemLayer\n collectedProps={collectedProps}\n pageRefs={pageRefs}\n />\n );\n};\n\nDraggableLayer.propTypes = {\n pageRefs: PropTypes.shape({}),\n};\n\nexport default DraggableLayer;\n"],"names":["DraggableLayer","pageRefs","collectedProps","useDragLayer","monitor","currentOffset","getSourceClientOffset","initialOffset","getInitialSourceClientOffset","isDragging","item","getItem","itemType","getItemType","_jsx","propTypes","PropTypes","shape"],"mappings":";;;;;IAIMA,cAAc,GAAG,SAAjBA,cAAiB,OAEjB;AAAA,2BADJC,QACI;AAAA,MADJA,QACI,8BADO,EACP;AACJ,MAAMC,cAAc,GAAGC,YAAY,CAAC,UAAAC,OAAO;AAAA,WAAK;AAC9CC,MAAAA,aAAa,EAAED,OAAO,CAACE,qBAAR,EAD+B;AAE9CC,MAAAA,aAAa,EAAEH,OAAO,CAACI,4BAAR,EAF+B;AAG9CC,MAAAA,UAAU,EAAEL,OAAO,CAACK,UAAR,EAHkC;AAI9CC,MAAAA,IAAI,EAAEN,OAAO,CAACO,OAAR,EAJwC;AAK9CC,MAAAA,QAAQ,EAAER,OAAO,CAACS,WAAR;AALoC,KAAL;AAAA,GAAR,CAAnC;;AAQA,MAAI,CAACX,cAAc,CAACG,aAAhB,IAAiC,CAACH,cAAc,CAACO,UAArD,EAAiE;AAC/D,WAAO,IAAP;AACD;;AAED,sBACEK,IAAC,kBAAD;AACE,IAAA,cAAc,EAAEZ,cADlB;AAEE,IAAA,QAAQ,EAAED;AAFZ,IADF;AAMD;;AAEDD,cAAc,CAACe,SAAf,GAA2B;AACzBd,EAAAA,QAAQ,EAAEe,SAAS,CAACC,KAAV,CAAgB,EAAhB;AADe,CAA3B;;;;"}
|
|
@@ -55,8 +55,11 @@ var Element = function Element(_ref) {
|
|
|
55
55
|
var onItemAdd = usePropStore(function (state) {
|
|
56
56
|
return state.onItemAdd;
|
|
57
57
|
});
|
|
58
|
-
var
|
|
59
|
-
return state.
|
|
58
|
+
var resetActiveElements = useBuilderStore(function (state) {
|
|
59
|
+
return state.resetActiveElements;
|
|
60
|
+
});
|
|
61
|
+
var setActiveElements = useBuilderStore(function (state) {
|
|
62
|
+
return state.setActiveElements;
|
|
60
63
|
});
|
|
61
64
|
var setIsRightPanelOpen = useBuilderStore(function (state) {
|
|
62
65
|
return state.setIsRightPanelOpen;
|
|
@@ -73,7 +76,7 @@ var Element = function Element(_ref) {
|
|
|
73
76
|
};
|
|
74
77
|
},
|
|
75
78
|
item: function item() {
|
|
76
|
-
|
|
79
|
+
resetActiveElements();
|
|
77
80
|
return _objectSpread({
|
|
78
81
|
itemType: itemType,
|
|
79
82
|
type: DROPPABLE_ITEM_TYPE
|
|
@@ -116,7 +119,7 @@ var Element = function Element(_ref) {
|
|
|
116
119
|
top: top
|
|
117
120
|
}));
|
|
118
121
|
onAnEventTrigger('reportItemAdd', itemType);
|
|
119
|
-
|
|
122
|
+
setActiveElements(itemID, true);
|
|
120
123
|
setIsRightPanelOpen(true);
|
|
121
124
|
};
|
|
122
125
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Element.js","sources":["../../../../src/components/Builder/Element.js"],"sourcesContent":["import { useEffect, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { DROPPABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getMostVisiblePage, getExactIconType, getAvailableCoordinate,\n} from '../../utils/functions';\nimport generateId from '../../utils/generateId';\nimport * as icons from '../../utils/icons';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst Element = ({\n icon = null,\n iconType = '',\n itemType = '',\n title = '',\n ...additionalData\n}) => {\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const
|
|
1
|
+
{"version":3,"file":"Element.js","sources":["../../../../src/components/Builder/Element.js"],"sourcesContent":["import { useEffect, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { DROPPABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getMostVisiblePage, getExactIconType, getAvailableCoordinate,\n} from '../../utils/functions';\nimport generateId from '../../utils/generateId';\nimport * as icons from '../../utils/icons';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst Element = ({\n icon = null,\n iconType = '',\n itemType = '',\n title = '',\n ...additionalData\n}) => {\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const resetActiveElements = useBuilderStore(state => state.resetActiveElements);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n\n item: () => {\n resetActiveElements();\n return {\n itemType,\n type: DROPPABLE_ITEM_TYPE,\n ...additionalData,\n };\n },\n\n type: DROPPABLE_ITEM_TYPE,\n }), [itemType, additionalData]);\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n const onElementClick = () => {\n const itemID = generateId();\n const page = getMostVisiblePage();\n let left = 0;\n let top = 0;\n if (page) { // for test\n [left, top] = getAvailableCoordinate(page, zoom);\n }\n onItemAdd({\n ...acceptedItems[itemType].details,\n ...additionalData,\n id: itemID,\n left,\n pageID: page.id,\n top,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElements(itemID, true);\n setIsRightPanelOpen(true);\n };\n\n const onElementOtherActions = () => {};\n\n const exactIconType = getExactIconType(iconType);\n const Icon = icons[exactIconType] ? icons[exactIconType] : icons.label;\n return (\n <>\n <div\n ref={drag}\n className=\"toolItem d-flex a-center js-toolItem\"\n onClick={onElementClick}\n onKeyDown={onElementOtherActions}\n style={{ cursor: isDragging ? 'grabbing' : 'pointer', opacity: isDragging ? 0.5 : 1 }}\n title={title}\n >\n <span className=\"toolItem-icon d-flex j-center a-center\">\n {icon ? icon : (\n <Icon className={`jfReportSVG icon-question icon-${iconType}`} />\n )}\n </span>\n <span className=\"js-toolItemName toolItem-name d-flex a-center\">\n { title }\n </span>\n </div>\n </>\n );\n};\n\nElement.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n iconType: PropTypes.string,\n itemType: PropTypes.string,\n title: PropTypes.string,\n};\n\nexport default memo(Element);\n"],"names":["Element","icon","iconType","itemType","title","additionalData","acceptedItems","usePropStore","state","onAnEventTrigger","onItemAdd","resetActiveElements","useBuilderStore","setActiveElements","setIsRightPanelOpen","zoom","useDrag","collect","monitor","isDragging","item","type","DROPPABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onElementClick","itemID","generateId","page","getMostVisiblePage","left","top","getAvailableCoordinate","details","id","pageID","onElementOtherActions","exactIconType","getExactIconType","Icon","icons","_jsx","_jsxs","cursor","opacity","propTypes","PropTypes","oneOfType","element","func","string","memo"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import 'core-js/modules/es.array.map.js';
|
|
2
|
+
import { memo, useRef, useCallback } from 'react';
|
|
2
3
|
import PropTypes from 'prop-types';
|
|
3
4
|
import { useDrop } from 'react-dnd';
|
|
4
5
|
import { ACCEPTED_TYPES, DROPPABLE_ITEM_TYPE, DRAGGABLE_ITEM_TYPE } from '../../constants/itemTypes.js';
|
|
@@ -6,9 +7,10 @@ import AlignmentGuides from '../AlignmentGuides.js';
|
|
|
6
7
|
import ReportItemsWrapper from '../ReportItemsWrapper.js';
|
|
7
8
|
import { useBuilderStore } from '../../contexts/BuilderContext.js';
|
|
8
9
|
import { usePropStore } from '../../contexts/PropContext.js';
|
|
9
|
-
import {
|
|
10
|
+
import { getCorrectDroppedOffsetValue, roundPositionValues, getMatchesForItem, getCoordinatesFromMatches, findItemById } from '../../utils/functions.js';
|
|
10
11
|
import { pageContainer } from '../../constants/classNames.js';
|
|
11
12
|
import generateId from '../../utils/generateId.js';
|
|
13
|
+
import { useSelectedElements } from '../../utils/hooks.js';
|
|
12
14
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
13
15
|
|
|
14
16
|
var _excluded = ["id", "itemType", "pageID"];
|
|
@@ -17,12 +19,6 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
17
19
|
|
|
18
20
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
19
21
|
|
|
20
|
-
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; }
|
|
21
|
-
|
|
22
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
23
|
-
|
|
24
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
-
|
|
26
22
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
27
23
|
|
|
28
24
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -35,20 +31,27 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
35
31
|
|
|
36
32
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
37
33
|
|
|
34
|
+
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; }
|
|
35
|
+
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
37
|
+
|
|
38
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
39
|
+
var axes = ['x', 'y'];
|
|
40
|
+
|
|
38
41
|
var Page = function Page(_ref) {
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
var _selectedElements$;
|
|
43
|
+
|
|
44
|
+
var _ref$items = _ref.items,
|
|
42
45
|
items = _ref$items === void 0 ? [] : _ref$items,
|
|
43
46
|
_ref$page = _ref.page,
|
|
44
47
|
page = _ref$page === void 0 ? {} : _ref$page,
|
|
45
48
|
_ref$style = _ref.style,
|
|
46
49
|
style = _ref$style === void 0 ? {} : _ref$style;
|
|
47
|
-
var
|
|
48
|
-
return state.
|
|
50
|
+
var activeElements = useBuilderStore(function (state) {
|
|
51
|
+
return state.activeElements;
|
|
49
52
|
});
|
|
50
|
-
var
|
|
51
|
-
return state.
|
|
53
|
+
var setActiveElements = useBuilderStore(function (state) {
|
|
54
|
+
return state.setActiveElements;
|
|
52
55
|
});
|
|
53
56
|
var setIsRightPanelOpen = useBuilderStore(function (state) {
|
|
54
57
|
return state.setIsRightPanelOpen;
|
|
@@ -59,6 +62,15 @@ var Page = function Page(_ref) {
|
|
|
59
62
|
var isResize = useBuilderStore(function (state) {
|
|
60
63
|
return state.isResize;
|
|
61
64
|
});
|
|
65
|
+
var guides = useBuilderStore(function (state) {
|
|
66
|
+
return state.guides;
|
|
67
|
+
});
|
|
68
|
+
var matches = useBuilderStore(function (state) {
|
|
69
|
+
return state.matches;
|
|
70
|
+
});
|
|
71
|
+
var setMatches = useBuilderStore(function (state) {
|
|
72
|
+
return state.setMatches;
|
|
73
|
+
});
|
|
62
74
|
var onItemAdd = usePropStore(function (state) {
|
|
63
75
|
return state.onItemAdd;
|
|
64
76
|
});
|
|
@@ -83,20 +95,9 @@ var Page = function Page(_ref) {
|
|
|
83
95
|
var pages = usePropStore(function (state) {
|
|
84
96
|
return state.pages;
|
|
85
97
|
});
|
|
86
|
-
|
|
87
|
-
var _useState = useState({}),
|
|
88
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
89
|
-
matches = _useState2[0],
|
|
90
|
-
setMatches = _useState2[1];
|
|
91
|
-
|
|
92
98
|
var requestRef = useRef();
|
|
93
99
|
var dropRef = useRef(null); // for getting the bounding client rect
|
|
94
100
|
|
|
95
|
-
var handleMatches = useCallback(function (item) {
|
|
96
|
-
var newMatches = getMatchesForItem(item, guides, zoom);
|
|
97
|
-
setMatches(newMatches);
|
|
98
|
-
}, [guides, zoom]);
|
|
99
|
-
|
|
100
101
|
var drawAlignmentGuides = function drawAlignmentGuides(item, monitor) {
|
|
101
102
|
return function () {
|
|
102
103
|
try {
|
|
@@ -110,7 +111,8 @@ var Page = function Page(_ref) {
|
|
|
110
111
|
var activeItem = _objectSpread(_objectSpread({}, item), coords);
|
|
111
112
|
|
|
112
113
|
if (activeItem.id && activeItem.pageID) {
|
|
113
|
-
|
|
114
|
+
var newMatches = getMatchesForItem(activeItem, guides, zoom);
|
|
115
|
+
setMatches(newMatches);
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
requestRef.current = undefined;
|
|
@@ -120,7 +122,7 @@ var Page = function Page(_ref) {
|
|
|
120
122
|
};
|
|
121
123
|
};
|
|
122
124
|
|
|
123
|
-
var isMultipleItemSelected =
|
|
125
|
+
var isMultipleItemSelected = activeElements.length > 1;
|
|
124
126
|
|
|
125
127
|
var onHover = function onHover(item, monitor) {
|
|
126
128
|
if (!requestRef.current) {
|
|
@@ -128,6 +130,8 @@ var Page = function Page(_ref) {
|
|
|
128
130
|
}
|
|
129
131
|
};
|
|
130
132
|
|
|
133
|
+
var selectedElements = useSelectedElements();
|
|
134
|
+
|
|
131
135
|
var _useDrop = useDrop({
|
|
132
136
|
accept: ACCEPTED_TYPES,
|
|
133
137
|
collect: function collect(monitor) {
|
|
@@ -138,6 +142,7 @@ var Page = function Page(_ref) {
|
|
|
138
142
|
drop: function drop(item, monitor) {
|
|
139
143
|
var _dropRef$current;
|
|
140
144
|
|
|
145
|
+
setMatches({});
|
|
141
146
|
var coords = getCorrectDroppedOffsetValue(monitor.getSourceClientOffset(), monitor.getInitialSourceClientOffset(), (_dropRef$current = dropRef.current) === null || _dropRef$current === void 0 ? void 0 : _dropRef$current.getBoundingClientRect(), zoom);
|
|
142
147
|
var type = monitor.getItemType();
|
|
143
148
|
|
|
@@ -150,34 +155,39 @@ var Page = function Page(_ref) {
|
|
|
150
155
|
|
|
151
156
|
if (type === DROPPABLE_ITEM_TYPE) {
|
|
152
157
|
var itemID = generateId();
|
|
158
|
+
var roundedCoords = roundPositionValues(coords);
|
|
153
159
|
onItemAdd(_objectSpread(_objectSpread(_objectSpread({}, acceptedItems[itemType].details), {}, {
|
|
154
160
|
id: itemID,
|
|
155
161
|
pageID: page.id
|
|
156
|
-
},
|
|
162
|
+
}, roundedCoords), additionalData));
|
|
157
163
|
onAnEventTrigger('reportItemAdd', itemType);
|
|
158
|
-
|
|
164
|
+
setActiveElements(itemID);
|
|
159
165
|
setIsRightPanelOpen(true);
|
|
160
|
-
newCoords[itemID] =
|
|
166
|
+
newCoords[itemID] = roundedCoords;
|
|
161
167
|
} else if (type === DRAGGABLE_ITEM_TYPE) {
|
|
162
168
|
var newItem = _objectSpread(_objectSpread({}, item), coords);
|
|
163
169
|
|
|
164
|
-
var
|
|
170
|
+
var newMatches = getMatchesForItem(newItem, guides, zoom);
|
|
171
|
+
var dragCoords = getCoordinatesFromMatches(newItem, newMatches, zoom);
|
|
172
|
+
var roundedDragCoords = roundPositionValues(dragCoords);
|
|
165
173
|
|
|
166
174
|
if (isMultipleItemSelected) {
|
|
167
|
-
var leftDifference = additionalData.left -
|
|
168
|
-
var topDifference = additionalData.top -
|
|
175
|
+
var leftDifference = additionalData.left - roundedDragCoords.left;
|
|
176
|
+
var topDifference = additionalData.top - roundedDragCoords.top;
|
|
169
177
|
|
|
170
|
-
var _items =
|
|
178
|
+
var _items = activeElements.reduce(function (acc, curr) {
|
|
171
179
|
var tempItem = findItemById(curr, pages);
|
|
180
|
+
var itemLeft = Math.round(tempItem.left - leftDifference);
|
|
181
|
+
var itemTop = Math.round(tempItem.top - topDifference);
|
|
172
182
|
acc[curr] = {
|
|
173
183
|
id: curr,
|
|
174
|
-
left:
|
|
184
|
+
left: itemLeft,
|
|
175
185
|
pageID: page.id,
|
|
176
|
-
top:
|
|
186
|
+
top: itemTop
|
|
177
187
|
};
|
|
178
188
|
newCoords[curr] = {
|
|
179
|
-
left:
|
|
180
|
-
top:
|
|
189
|
+
left: itemLeft,
|
|
190
|
+
top: itemTop
|
|
181
191
|
};
|
|
182
192
|
return acc;
|
|
183
193
|
}, {});
|
|
@@ -189,8 +199,8 @@ var Page = function Page(_ref) {
|
|
|
189
199
|
onItemMove(_objectSpread({
|
|
190
200
|
id: id,
|
|
191
201
|
pageID: page.id
|
|
192
|
-
},
|
|
193
|
-
newCoords[id] =
|
|
202
|
+
}, roundedDragCoords));
|
|
203
|
+
newCoords[id] = roundedDragCoords;
|
|
194
204
|
}
|
|
195
205
|
}
|
|
196
206
|
|
|
@@ -202,16 +212,6 @@ var Page = function Page(_ref) {
|
|
|
202
212
|
isOver = _useDrop2[0].isOver,
|
|
203
213
|
drop = _useDrop2[1];
|
|
204
214
|
|
|
205
|
-
var getIntersectionsFromMatches = useCallback(function (item) {
|
|
206
|
-
var _getCoordinatesFromMa = getCoordinatesFromMatches(item, matches),
|
|
207
|
-
newActiveBoxLeft = _getCoordinatesFromMa.left,
|
|
208
|
-
newActiveBoxTop = _getCoordinatesFromMa.top;
|
|
209
|
-
|
|
210
|
-
return {
|
|
211
|
-
newActiveBoxLeft: newActiveBoxLeft,
|
|
212
|
-
newActiveBoxTop: newActiveBoxTop
|
|
213
|
-
};
|
|
214
|
-
}, [matches]);
|
|
215
215
|
var combinedRef = useCallback(function (node) {
|
|
216
216
|
dropRef.current = node;
|
|
217
217
|
drop(node);
|
|
@@ -229,19 +229,14 @@ var Page = function Page(_ref) {
|
|
|
229
229
|
children: /*#__PURE__*/jsxs("div", {
|
|
230
230
|
className: "jfReport-hider o-hidden f-all p-relative",
|
|
231
231
|
children: [/*#__PURE__*/jsx(ReportItemsWrapper, {
|
|
232
|
-
getIntersectionsFromMatches: getIntersectionsFromMatches,
|
|
233
|
-
handleMatches: handleMatches,
|
|
234
232
|
items: items
|
|
235
|
-
}), additionalPageItems,
|
|
236
|
-
axis
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
axis
|
|
242
|
-
guides: guides[page.id],
|
|
243
|
-
matches: matches,
|
|
244
|
-
show: isOver || isResize
|
|
233
|
+
}), additionalPageItems, (isOver || isResize && ((_selectedElements$ = selectedElements[0]) === null || _selectedElements$ === void 0 ? void 0 : _selectedElements$.pageID) === page.id) && axes.map(function (axis) {
|
|
234
|
+
if (!matches[axis]) return null;
|
|
235
|
+
return /*#__PURE__*/jsx(AlignmentGuides, {
|
|
236
|
+
axis: axis,
|
|
237
|
+
guides: guides[page.id],
|
|
238
|
+
matches: matches[axis]
|
|
239
|
+
}, axis);
|
|
245
240
|
})]
|
|
246
241
|
})
|
|
247
242
|
})
|
|
@@ -249,7 +244,6 @@ var Page = function Page(_ref) {
|
|
|
249
244
|
};
|
|
250
245
|
|
|
251
246
|
Page.propTypes = {
|
|
252
|
-
guides: PropTypes.shape({}),
|
|
253
247
|
items: PropTypes.arrayOf(PropTypes.shape({})),
|
|
254
248
|
page: PropTypes.shape({
|
|
255
249
|
backgroundColor: PropTypes.string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.js","sources":["../../../../src/components/Builder/Page.js"],"sourcesContent":["import {\n useState,\n useRef,\n memo,\n useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrop } from 'react-dnd';\nimport {\n ACCEPTED_TYPES,\n DRAGGABLE_ITEM_TYPE,\n DROPPABLE_ITEM_TYPE,\n} from '../../constants/itemTypes';\nimport AlignmentGuides from '../AlignmentGuides';\nimport ReportItemsWrapper from '../ReportItemsWrapper';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\nimport {\n getCorrectDroppedOffsetValue,\n getCorrectDroppedOffsetValueBySnap,\n findItemById,\n getMatchesForItem,\n getCoordinatesFromMatches,\n} from '../../utils/functions';\nimport * as classNames from '../../constants/classNames';\nimport generateId from '../../utils/generateId';\n\nconst Page = ({\n guides = {},\n items = [],\n page = {},\n style = {},\n}) => {\n const activeElement = useBuilderStore(state => state.activeElement);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n const isResize = useBuilderStore(state => state.isResize);\n\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemMove = usePropStore(state => state.onItemMove);\n const onItemsMove = usePropStore(state => state.onItemsMove);\n const additionalPageItems = usePropStore(state => state.additionalPageItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const settings = usePropStore(state => state.settings);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const pages = usePropStore(state => state.pages);\n\n const [matches, setMatches] = useState({});\n const requestRef = useRef();\n const dropRef = useRef(null); // for getting the bounding client rect\n\n const handleMatches = useCallback(item => {\n const newMatches = getMatchesForItem(item, guides, zoom);\n setMatches(newMatches);\n }, [guides, zoom]);\n\n const drawAlignmentGuides = (item, monitor) => {\n return () => {\n try {\n if (!monitor || monitor.getSourceClientOffset() === null) {\n requestRef.current = undefined;\n return;\n }\n const coords = getCorrectDroppedOffsetValue(\n monitor.getSourceClientOffset(),\n monitor.getInitialSourceClientOffset(),\n dropRef.current.getBoundingClientRect(),\n zoom,\n );\n const activeItem = {\n ...item, ...coords,\n };\n if (activeItem.id && activeItem.pageID) {\n handleMatches(activeItem);\n }\n requestRef.current = undefined;\n } catch (error) {\n setMatches({});\n }\n };\n };\n\n const isMultipleItemSelected = activeElement !== null && activeElement.length > 1;\n\n const onHover = (item, monitor) => {\n if (!requestRef.current) {\n requestRef.current = global.requestAnimationFrame(drawAlignmentGuides(item, monitor));\n }\n };\n\n const [{ isOver }, drop] = useDrop({\n accept: ACCEPTED_TYPES,\n collect: monitor => {\n return {\n isOver: monitor.isOver(),\n };\n },\n drop: (item, monitor) => {\n const coords = getCorrectDroppedOffsetValue(\n monitor.getSourceClientOffset(),\n monitor.getInitialSourceClientOffset(),\n dropRef.current?.getBoundingClientRect(),\n zoom,\n );\n const type = monitor.getItemType();\n const {\n id, itemType, pageID, ...additionalData\n } = item;\n const newCoords = {};\n if (type === DROPPABLE_ITEM_TYPE) {\n const itemID = generateId();\n onItemAdd({\n ...acceptedItems[itemType].details,\n id: itemID,\n pageID: page.id,\n ...coords,\n ...additionalData,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n newCoords[itemID] = coords;\n } else if (type === DRAGGABLE_ITEM_TYPE) {\n const newItem = { ...item, ...coords };\n const dragCoords = getCorrectDroppedOffsetValueBySnap(newItem, guides, zoom);\n if (isMultipleItemSelected) {\n const leftDifference = additionalData.left - dragCoords.left;\n const topDifference = additionalData.top - dragCoords.top;\n const _items = activeElement.reduce((acc, curr) => {\n const tempItem = findItemById(curr, pages);\n acc[curr] = {\n id: curr,\n left: tempItem.left - leftDifference,\n pageID: page.id,\n top: tempItem.top - topDifference,\n };\n newCoords[curr] = {\n left: tempItem.left - leftDifference,\n top: tempItem.top - topDifference,\n };\n return acc;\n }, {});\n onItemsMove({ items: _items });\n } else {\n onItemMove({\n id,\n pageID: page.id,\n ...dragCoords,\n });\n newCoords[id] = dragCoords;\n }\n }\n\n return newCoords;\n },\n hover: onHover,\n });\n\n const getIntersectionsFromMatches = useCallback(item => {\n const {\n left: newActiveBoxLeft,\n top: newActiveBoxTop,\n } = getCoordinatesFromMatches(item, matches);\n\n return { newActiveBoxLeft, newActiveBoxTop };\n }, [matches]);\n\n const combinedRef = useCallback(node => {\n dropRef.current = node;\n drop(node);\n }, [drop]);\n\n const { reportBackgroundColor } = settings;\n const { backgroundColor } = page;\n const bgColor = backgroundColor ? backgroundColor : reportBackgroundColor || '#fff';\n\n return (\n <>\n <div\n ref={combinedRef}\n className={classNames.pageContainer}\n style={{\n backgroundColor: bgColor,\n ...style,\n }}\n >\n <div className=\"jfReport-hider o-hidden f-all p-relative\">\n <ReportItemsWrapper\n getIntersectionsFromMatches={getIntersectionsFromMatches}\n handleMatches={handleMatches}\n items={items}\n />\n {additionalPageItems}\n <AlignmentGuides\n axis=\"x\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n <AlignmentGuides\n axis=\"y\"\n guides={guides[page.id]}\n matches={matches}\n show={(isOver || isResize)}\n />\n </div>\n </div>\n </>\n );\n};\n\nPage.propTypes = {\n guides: PropTypes.shape({}),\n items: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n page: PropTypes.shape({\n backgroundColor: PropTypes.string,\n }),\n style: PropTypes.shape({}),\n};\n\nexport default memo(Page);\n"],"names":["Page","guides","items","page","style","activeElement","useBuilderStore","state","setActiveElement","setIsRightPanelOpen","zoom","isResize","onItemAdd","usePropStore","onItemMove","onItemsMove","additionalPageItems","onAnEventTrigger","settings","acceptedItems","pages","useState","matches","setMatches","requestRef","useRef","dropRef","handleMatches","useCallback","item","newMatches","getMatchesForItem","drawAlignmentGuides","monitor","getSourceClientOffset","current","undefined","coords","getCorrectDroppedOffsetValue","getInitialSourceClientOffset","getBoundingClientRect","activeItem","id","pageID","error","isMultipleItemSelected","length","onHover","global","requestAnimationFrame","useDrop","accept","ACCEPTED_TYPES","collect","isOver","drop","type","getItemType","itemType","additionalData","newCoords","DROPPABLE_ITEM_TYPE","itemID","generateId","details","DRAGGABLE_ITEM_TYPE","newItem","dragCoords","getCorrectDroppedOffsetValueBySnap","leftDifference","left","topDifference","top","_items","reduce","acc","curr","tempItem","findItemById","hover","getIntersectionsFromMatches","getCoordinatesFromMatches","newActiveBoxLeft","newActiveBoxTop","combinedRef","node","reportBackgroundColor","backgroundColor","bgColor","_jsx","classNames","_jsxs","propTypes","PropTypes","shape","arrayOf","string","memo"],"mappings":"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"}
|
|
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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"}
|