@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.
Files changed (125) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/index.d.ts +428 -0
  3. package/lib/cjs/components/AlignmentGuides.js +28 -18
  4. package/lib/cjs/components/AlignmentGuides.js.map +1 -1
  5. package/lib/cjs/components/Builder/ContextMenu.js +4 -1
  6. package/lib/cjs/components/Builder/ContextMenu.js.map +1 -1
  7. package/lib/cjs/components/Builder/DraggableLayer.js +1 -5
  8. package/lib/cjs/components/Builder/DraggableLayer.js.map +1 -1
  9. package/lib/cjs/components/Builder/Element.js +7 -4
  10. package/lib/cjs/components/Builder/Element.js.map +1 -1
  11. package/lib/cjs/components/Builder/Page.js +56 -62
  12. package/lib/cjs/components/Builder/Page.js.map +1 -1
  13. package/lib/cjs/components/Builder/Scene.js +30 -251
  14. package/lib/cjs/components/Builder/Scene.js.map +1 -1
  15. package/lib/cjs/components/Builder/SelectionBox.js +48 -0
  16. package/lib/cjs/components/Builder/SelectionBox.js.map +1 -0
  17. package/lib/cjs/components/DraggableItem/DraggableItem.js +78 -135
  18. package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
  19. package/lib/cjs/components/DraggableItem/DraggableItemActions.js +69 -29
  20. package/lib/cjs/components/DraggableItem/DraggableItemActions.js.map +1 -1
  21. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +8 -8
  22. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  23. package/lib/cjs/components/PageItemResizer.js +37 -43
  24. package/lib/cjs/components/PageItemResizer.js.map +1 -1
  25. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js +1 -3
  26. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  27. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js +0 -6
  28. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  29. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js +1 -4
  30. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  31. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  32. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  33. package/lib/cjs/components/Panels/RightPanel/RightPanel.js +7 -7
  34. package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
  35. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  36. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  37. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js +1 -3
  38. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  39. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  40. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  41. package/lib/cjs/components/ReportItemsWrapper.js +5 -11
  42. package/lib/cjs/components/ReportItemsWrapper.js.map +1 -1
  43. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  44. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  45. package/lib/cjs/components/Settings/PageLayer/LayerItem.js +12 -7
  46. package/lib/cjs/components/Settings/PageLayer/LayerItem.js.map +1 -1
  47. package/lib/cjs/components/Settings/PageLayer/PageLayer.js +2 -4
  48. package/lib/cjs/components/Settings/PageLayer/PageLayer.js.map +1 -1
  49. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  50. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  51. package/lib/cjs/constants/texts.js +0 -1
  52. package/lib/cjs/constants/texts.js.map +1 -1
  53. package/lib/cjs/contexts/BuilderContext.js +47 -23
  54. package/lib/cjs/contexts/BuilderContext.js.map +1 -1
  55. package/lib/cjs/styles/_jfReportsPages.scss +8 -1
  56. package/lib/cjs/utils/functions.js +124 -34
  57. package/lib/cjs/utils/functions.js.map +1 -1
  58. package/lib/cjs/utils/hooks.js +7 -7
  59. package/lib/cjs/utils/hooks.js.map +1 -1
  60. package/lib/cjs/utils/useKeyboardActions.js +263 -0
  61. package/lib/cjs/utils/useKeyboardActions.js.map +1 -0
  62. package/lib/cjs/utils/useMarqueeSelection.js +156 -0
  63. package/lib/cjs/utils/useMarqueeSelection.js.map +1 -0
  64. package/lib/esm/components/AlignmentGuides.js +28 -18
  65. package/lib/esm/components/AlignmentGuides.js.map +1 -1
  66. package/lib/esm/components/Builder/ContextMenu.js +4 -1
  67. package/lib/esm/components/Builder/ContextMenu.js.map +1 -1
  68. package/lib/esm/components/Builder/DraggableLayer.js +1 -5
  69. package/lib/esm/components/Builder/DraggableLayer.js.map +1 -1
  70. package/lib/esm/components/Builder/Element.js +7 -4
  71. package/lib/esm/components/Builder/Element.js.map +1 -1
  72. package/lib/esm/components/Builder/Page.js +58 -64
  73. package/lib/esm/components/Builder/Page.js.map +1 -1
  74. package/lib/esm/components/Builder/Scene.js +32 -253
  75. package/lib/esm/components/Builder/Scene.js.map +1 -1
  76. package/lib/esm/components/Builder/SelectionBox.js +42 -0
  77. package/lib/esm/components/Builder/SelectionBox.js.map +1 -0
  78. package/lib/esm/components/DraggableItem/DraggableItem.js +80 -137
  79. package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
  80. package/lib/esm/components/DraggableItem/DraggableItemActions.js +72 -28
  81. package/lib/esm/components/DraggableItem/DraggableItemActions.js.map +1 -1
  82. package/lib/esm/components/DraggableItem/DraggableItemLayer.js +9 -9
  83. package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  84. package/lib/esm/components/PageItemResizer.js +38 -44
  85. package/lib/esm/components/PageItemResizer.js.map +1 -1
  86. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js +2 -4
  87. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  88. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js +0 -6
  89. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  90. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js +3 -6
  91. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  92. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  93. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  94. package/lib/esm/components/Panels/RightPanel/RightPanel.js +7 -7
  95. package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
  96. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  97. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  98. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js +2 -4
  99. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  100. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  101. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  102. package/lib/esm/components/ReportItemsWrapper.js +5 -11
  103. package/lib/esm/components/ReportItemsWrapper.js.map +1 -1
  104. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  105. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  106. package/lib/esm/components/Settings/PageLayer/LayerItem.js +12 -7
  107. package/lib/esm/components/Settings/PageLayer/LayerItem.js.map +1 -1
  108. package/lib/esm/components/Settings/PageLayer/PageLayer.js +2 -4
  109. package/lib/esm/components/Settings/PageLayer/PageLayer.js.map +1 -1
  110. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  111. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  112. package/lib/esm/constants/texts.js +0 -1
  113. package/lib/esm/constants/texts.js.map +1 -1
  114. package/lib/esm/contexts/BuilderContext.js +47 -23
  115. package/lib/esm/contexts/BuilderContext.js.map +1 -1
  116. package/lib/esm/styles/_jfReportsPages.scss +8 -1
  117. package/lib/esm/utils/functions.js +121 -34
  118. package/lib/esm/utils/functions.js.map +1 -1
  119. package/lib/esm/utils/hooks.js +7 -7
  120. package/lib/esm/utils/hooks.js.map +1 -1
  121. package/lib/esm/utils/useKeyboardActions.js +261 -0
  122. package/lib/esm/utils/useKeyboardActions.js.map +1 -0
  123. package/lib/esm/utils/useMarqueeSelection.js +154 -0
  124. package/lib/esm/utils/useMarqueeSelection.js.map +1 -0
  125. package/package.json +11 -7
@@ -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 guides = {},\n pageRefs = {},\n}) => {\n const collectedProps = useDragLayer(monitor => ({\n currentOffset: monitor.getSourceClientOffset(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n isDragging: monitor.isDragging(),\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n }));\n\n if (!collectedProps.currentOffset || !collectedProps.isDragging) {\n return null;\n }\n\n return (\n <DraggableItemLayer\n collectedProps={collectedProps}\n guides={guides}\n pageRefs={pageRefs}\n />\n );\n};\n\nDraggableLayer.propTypes = {\n guides: PropTypes.shape({}),\n pageRefs: PropTypes.shape({}),\n};\n\nexport default DraggableLayer;\n"],"names":["DraggableLayer","guides","pageRefs","collectedProps","useDragLayer","monitor","currentOffset","getSourceClientOffset","initialOffset","getInitialSourceClientOffset","isDragging","item","getItem","itemType","getItemType","_jsx","propTypes","PropTypes","shape"],"mappings":";;;;;;;;;;;IAIMA,cAAc,GAAG,SAAjBA,cAAiB,OAGjB;AAAA,yBAFJC,MAEI;AAAA,MAFJA,MAEI,4BAFK,EAEL;AAAA,2BADJC,QACI;AAAA,MADJA,QACI,8BADO,EACP;AACJ,MAAMC,cAAc,GAAGC,qBAAY,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,eAAC,kBAAD;AACE,IAAA,cAAc,EAAEZ,cADlB;AAEE,IAAA,MAAM,EAAEF,MAFV;AAGE,IAAA,QAAQ,EAAEC;AAHZ,IADF;AAOD;;AAEDF,cAAc,CAACgB,SAAf,GAA2B;AACzBf,EAAAA,MAAM,EAAEgB,6BAAS,CAACC,KAAV,CAAgB,EAAhB,CADiB;AAEzBhB,EAAAA,QAAQ,EAAEe,6BAAS,CAACC,KAAV,CAAgB,EAAhB;AAFe,CAA3B;;;;"}
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,qBAAY,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,eAAC,kBAAD;AACE,IAAA,cAAc,EAAEZ,cADlB;AAEE,IAAA,QAAQ,EAAED;AAFZ,IADF;AAMD;;AAEDD,cAAc,CAACe,SAAf,GAA2B;AACzBd,EAAAA,QAAQ,EAAEe,6BAAS,CAACC,KAAV,CAAgB,EAAhB;AADe,CAA3B;;;;"}
@@ -61,8 +61,11 @@ var Element = function Element(_ref) {
61
61
  var onItemAdd = PropContext.usePropStore(function (state) {
62
62
  return state.onItemAdd;
63
63
  });
64
- var setActiveElement = BuilderContext.useBuilderStore(function (state) {
65
- return state.setActiveElement;
64
+ var resetActiveElements = BuilderContext.useBuilderStore(function (state) {
65
+ return state.resetActiveElements;
66
+ });
67
+ var setActiveElements = BuilderContext.useBuilderStore(function (state) {
68
+ return state.setActiveElements;
66
69
  });
67
70
  var setIsRightPanelOpen = BuilderContext.useBuilderStore(function (state) {
68
71
  return state.setIsRightPanelOpen;
@@ -79,7 +82,7 @@ var Element = function Element(_ref) {
79
82
  };
80
83
  },
81
84
  item: function item() {
82
- setActiveElement(null);
85
+ resetActiveElements();
83
86
  return _objectSpread({
84
87
  itemType: itemType,
85
88
  type: itemTypes.DROPPABLE_ITEM_TYPE
@@ -122,7 +125,7 @@ var Element = function Element(_ref) {
122
125
  top: top
123
126
  }));
124
127
  onAnEventTrigger('reportItemAdd', itemType);
125
- setActiveElement(itemID);
128
+ setActiveElements(itemID, true);
126
129
  setIsRightPanelOpen(true);
127
130
  };
128
131
 
@@ -1 +1 @@
1
- {"version":3,"file":"Element.js","sources":["../../../../src/components/Builder/Element.js"],"sourcesContent":["import { useEffect, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { DROPPABLE_ITEM_TYPE } from '../../constants/itemTypes';\nimport {\n getMostVisiblePage, getExactIconType, getAvailableCoordinate,\n} from '../../utils/functions';\nimport generateId from '../../utils/generateId';\nimport * as icons from '../../utils/icons';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst Element = ({\n icon = null,\n iconType = '',\n itemType = '',\n title = '',\n ...additionalData\n}) => {\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const setActiveElement = useBuilderStore(state => state.setActiveElement);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const zoom = useBuilderStore(state => state.zoom);\n\n const [{ isDragging }, drag, preview] = useDrag(() => ({\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n\n item: () => {\n setActiveElement(null);\n return {\n itemType,\n type: DROPPABLE_ITEM_TYPE,\n ...additionalData,\n };\n },\n\n type: DROPPABLE_ITEM_TYPE,\n }), [itemType, additionalData]);\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n const onElementClick = () => {\n const itemID = generateId();\n const page = getMostVisiblePage();\n let left = 0;\n let top = 0;\n if (page) { // for test\n [left, top] = getAvailableCoordinate(page, zoom);\n }\n onItemAdd({\n ...acceptedItems[itemType].details,\n ...additionalData,\n id: itemID,\n left,\n pageID: page.id,\n top,\n });\n onAnEventTrigger('reportItemAdd', itemType);\n setActiveElement(itemID);\n setIsRightPanelOpen(true);\n };\n\n const onElementOtherActions = () => {};\n\n const exactIconType = getExactIconType(iconType);\n const Icon = icons[exactIconType] ? icons[exactIconType] : icons.label;\n return (\n <>\n <div\n ref={drag}\n className=\"toolItem d-flex a-center js-toolItem\"\n onClick={onElementClick}\n onKeyDown={onElementOtherActions}\n style={{ cursor: isDragging ? 'grabbing' : 'pointer', opacity: isDragging ? 0.5 : 1 }}\n title={title}\n >\n <span className=\"toolItem-icon d-flex j-center a-center\">\n {icon ? icon : (\n <Icon className={`jfReportSVG icon-question icon-${iconType}`} />\n )}\n </span>\n <span className=\"js-toolItemName toolItem-name d-flex a-center\">\n { title }\n </span>\n </div>\n </>\n );\n};\n\nElement.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n iconType: PropTypes.string,\n itemType: PropTypes.string,\n title: PropTypes.string,\n};\n\nexport default memo(Element);\n"],"names":["Element","icon","iconType","itemType","title","additionalData","acceptedItems","usePropStore","state","onAnEventTrigger","onItemAdd","setActiveElement","useBuilderStore","setIsRightPanelOpen","zoom","useDrag","collect","monitor","isDragging","item","type","DROPPABLE_ITEM_TYPE","drag","preview","useEffect","getEmptyImage","captureDraggingState","onElementClick","itemID","generateId","page","getMostVisiblePage","left","top","getAvailableCoordinate","details","id","pageID","onElementOtherActions","exactIconType","getExactIconType","Icon","icons","_jsx","_jsxs","cursor","opacity","propTypes","PropTypes","oneOfType","element","func","string","memo"],"mappings":"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"}
1
+ {"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,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ require('core-js/modules/es.array.map.js');
3
4
  var React = require('react');
4
5
  var PropTypes = require('prop-types');
5
6
  var reactDnd = require('react-dnd');
@@ -11,6 +12,7 @@ var PropContext = require('../../contexts/PropContext.js');
11
12
  var functions = require('../../utils/functions.js');
12
13
  var classNames = require('../../constants/classNames.js');
13
14
  var generateId = require('../../utils/generateId.js');
15
+ var hooks = require('../../utils/hooks.js');
14
16
  var jsxRuntime = require('react/jsx-runtime');
15
17
 
16
18
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -23,12 +25,6 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
23
25
 
24
26
  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; }
25
27
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
-
28
- 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; }
29
-
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
-
32
28
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
29
 
34
30
  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."); }
@@ -41,20 +37,27 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
41
37
 
42
38
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
43
39
 
40
+ 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; }
41
+
42
+ 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; }
43
+
44
+ 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; }
45
+ var axes = ['x', 'y'];
46
+
44
47
  var Page = function Page(_ref) {
45
- var _ref$guides = _ref.guides,
46
- guides = _ref$guides === void 0 ? {} : _ref$guides,
47
- _ref$items = _ref.items,
48
+ var _selectedElements$;
49
+
50
+ var _ref$items = _ref.items,
48
51
  items = _ref$items === void 0 ? [] : _ref$items,
49
52
  _ref$page = _ref.page,
50
53
  page = _ref$page === void 0 ? {} : _ref$page,
51
54
  _ref$style = _ref.style,
52
55
  style = _ref$style === void 0 ? {} : _ref$style;
53
- var activeElement = BuilderContext.useBuilderStore(function (state) {
54
- return state.activeElement;
56
+ var activeElements = BuilderContext.useBuilderStore(function (state) {
57
+ return state.activeElements;
55
58
  });
56
- var setActiveElement = BuilderContext.useBuilderStore(function (state) {
57
- return state.setActiveElement;
59
+ var setActiveElements = BuilderContext.useBuilderStore(function (state) {
60
+ return state.setActiveElements;
58
61
  });
59
62
  var setIsRightPanelOpen = BuilderContext.useBuilderStore(function (state) {
60
63
  return state.setIsRightPanelOpen;
@@ -65,6 +68,15 @@ var Page = function Page(_ref) {
65
68
  var isResize = BuilderContext.useBuilderStore(function (state) {
66
69
  return state.isResize;
67
70
  });
71
+ var guides = BuilderContext.useBuilderStore(function (state) {
72
+ return state.guides;
73
+ });
74
+ var matches = BuilderContext.useBuilderStore(function (state) {
75
+ return state.matches;
76
+ });
77
+ var setMatches = BuilderContext.useBuilderStore(function (state) {
78
+ return state.setMatches;
79
+ });
68
80
  var onItemAdd = PropContext.usePropStore(function (state) {
69
81
  return state.onItemAdd;
70
82
  });
@@ -89,20 +101,9 @@ var Page = function Page(_ref) {
89
101
  var pages = PropContext.usePropStore(function (state) {
90
102
  return state.pages;
91
103
  });
92
-
93
- var _useState = React.useState({}),
94
- _useState2 = _slicedToArray(_useState, 2),
95
- matches = _useState2[0],
96
- setMatches = _useState2[1];
97
-
98
104
  var requestRef = React.useRef();
99
105
  var dropRef = React.useRef(null); // for getting the bounding client rect
100
106
 
101
- var handleMatches = React.useCallback(function (item) {
102
- var newMatches = functions.getMatchesForItem(item, guides, zoom);
103
- setMatches(newMatches);
104
- }, [guides, zoom]);
105
-
106
107
  var drawAlignmentGuides = function drawAlignmentGuides(item, monitor) {
107
108
  return function () {
108
109
  try {
@@ -116,7 +117,8 @@ var Page = function Page(_ref) {
116
117
  var activeItem = _objectSpread(_objectSpread({}, item), coords);
117
118
 
118
119
  if (activeItem.id && activeItem.pageID) {
119
- handleMatches(activeItem);
120
+ var newMatches = functions.getMatchesForItem(activeItem, guides, zoom);
121
+ setMatches(newMatches);
120
122
  }
121
123
 
122
124
  requestRef.current = undefined;
@@ -126,7 +128,7 @@ var Page = function Page(_ref) {
126
128
  };
127
129
  };
128
130
 
129
- var isMultipleItemSelected = activeElement !== null && activeElement.length > 1;
131
+ var isMultipleItemSelected = activeElements.length > 1;
130
132
 
131
133
  var onHover = function onHover(item, monitor) {
132
134
  if (!requestRef.current) {
@@ -134,6 +136,8 @@ var Page = function Page(_ref) {
134
136
  }
135
137
  };
136
138
 
139
+ var selectedElements = hooks.useSelectedElements();
140
+
137
141
  var _useDrop = reactDnd.useDrop({
138
142
  accept: itemTypes.ACCEPTED_TYPES,
139
143
  collect: function collect(monitor) {
@@ -144,6 +148,7 @@ var Page = function Page(_ref) {
144
148
  drop: function drop(item, monitor) {
145
149
  var _dropRef$current;
146
150
 
151
+ setMatches({});
147
152
  var coords = functions.getCorrectDroppedOffsetValue(monitor.getSourceClientOffset(), monitor.getInitialSourceClientOffset(), (_dropRef$current = dropRef.current) === null || _dropRef$current === void 0 ? void 0 : _dropRef$current.getBoundingClientRect(), zoom);
148
153
  var type = monitor.getItemType();
149
154
 
@@ -156,34 +161,39 @@ var Page = function Page(_ref) {
156
161
 
157
162
  if (type === itemTypes.DROPPABLE_ITEM_TYPE) {
158
163
  var itemID = generateId();
164
+ var roundedCoords = functions.roundPositionValues(coords);
159
165
  onItemAdd(_objectSpread(_objectSpread(_objectSpread({}, acceptedItems[itemType].details), {}, {
160
166
  id: itemID,
161
167
  pageID: page.id
162
- }, coords), additionalData));
168
+ }, roundedCoords), additionalData));
163
169
  onAnEventTrigger('reportItemAdd', itemType);
164
- setActiveElement(itemID);
170
+ setActiveElements(itemID);
165
171
  setIsRightPanelOpen(true);
166
- newCoords[itemID] = coords;
172
+ newCoords[itemID] = roundedCoords;
167
173
  } else if (type === itemTypes.DRAGGABLE_ITEM_TYPE) {
168
174
  var newItem = _objectSpread(_objectSpread({}, item), coords);
169
175
 
170
- var dragCoords = functions.getCorrectDroppedOffsetValueBySnap(newItem, guides, zoom);
176
+ var newMatches = functions.getMatchesForItem(newItem, guides, zoom);
177
+ var dragCoords = functions.getCoordinatesFromMatches(newItem, newMatches, zoom);
178
+ var roundedDragCoords = functions.roundPositionValues(dragCoords);
171
179
 
172
180
  if (isMultipleItemSelected) {
173
- var leftDifference = additionalData.left - dragCoords.left;
174
- var topDifference = additionalData.top - dragCoords.top;
181
+ var leftDifference = additionalData.left - roundedDragCoords.left;
182
+ var topDifference = additionalData.top - roundedDragCoords.top;
175
183
 
176
- var _items = activeElement.reduce(function (acc, curr) {
184
+ var _items = activeElements.reduce(function (acc, curr) {
177
185
  var tempItem = functions.findItemById(curr, pages);
186
+ var itemLeft = Math.round(tempItem.left - leftDifference);
187
+ var itemTop = Math.round(tempItem.top - topDifference);
178
188
  acc[curr] = {
179
189
  id: curr,
180
- left: tempItem.left - leftDifference,
190
+ left: itemLeft,
181
191
  pageID: page.id,
182
- top: tempItem.top - topDifference
192
+ top: itemTop
183
193
  };
184
194
  newCoords[curr] = {
185
- left: tempItem.left - leftDifference,
186
- top: tempItem.top - topDifference
195
+ left: itemLeft,
196
+ top: itemTop
187
197
  };
188
198
  return acc;
189
199
  }, {});
@@ -195,8 +205,8 @@ var Page = function Page(_ref) {
195
205
  onItemMove(_objectSpread({
196
206
  id: id,
197
207
  pageID: page.id
198
- }, dragCoords));
199
- newCoords[id] = dragCoords;
208
+ }, roundedDragCoords));
209
+ newCoords[id] = roundedDragCoords;
200
210
  }
201
211
  }
202
212
 
@@ -208,16 +218,6 @@ var Page = function Page(_ref) {
208
218
  isOver = _useDrop2[0].isOver,
209
219
  drop = _useDrop2[1];
210
220
 
211
- var getIntersectionsFromMatches = React.useCallback(function (item) {
212
- var _getCoordinatesFromMa = functions.getCoordinatesFromMatches(item, matches),
213
- newActiveBoxLeft = _getCoordinatesFromMa.left,
214
- newActiveBoxTop = _getCoordinatesFromMa.top;
215
-
216
- return {
217
- newActiveBoxLeft: newActiveBoxLeft,
218
- newActiveBoxTop: newActiveBoxTop
219
- };
220
- }, [matches]);
221
221
  var combinedRef = React.useCallback(function (node) {
222
222
  dropRef.current = node;
223
223
  drop(node);
@@ -235,19 +235,14 @@ var Page = function Page(_ref) {
235
235
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
236
236
  className: "jfReport-hider o-hidden f-all p-relative",
237
237
  children: [/*#__PURE__*/jsxRuntime.jsx(ReportItemsWrapper, {
238
- getIntersectionsFromMatches: getIntersectionsFromMatches,
239
- handleMatches: handleMatches,
240
238
  items: items
241
- }), additionalPageItems, /*#__PURE__*/jsxRuntime.jsx(AlignmentGuides, {
242
- axis: "x",
243
- guides: guides[page.id],
244
- matches: matches,
245
- show: isOver || isResize
246
- }), /*#__PURE__*/jsxRuntime.jsx(AlignmentGuides, {
247
- axis: "y",
248
- guides: guides[page.id],
249
- matches: matches,
250
- show: isOver || isResize
239
+ }), additionalPageItems, (isOver || isResize && ((_selectedElements$ = selectedElements[0]) === null || _selectedElements$ === void 0 ? void 0 : _selectedElements$.pageID) === page.id) && axes.map(function (axis) {
240
+ if (!matches[axis]) return null;
241
+ return /*#__PURE__*/jsxRuntime.jsx(AlignmentGuides, {
242
+ axis: axis,
243
+ guides: guides[page.id],
244
+ matches: matches[axis]
245
+ }, axis);
251
246
  })]
252
247
  })
253
248
  })
@@ -255,7 +250,6 @@ var Page = function Page(_ref) {
255
250
  };
256
251
 
257
252
  Page.propTypes = {
258
- guides: PropTypes__default['default'].shape({}),
259
253
  items: PropTypes__default['default'].arrayOf(PropTypes__default['default'].shape({})),
260
254
  page: PropTypes__default['default'].shape({
261
255
  backgroundColor: PropTypes__default['default'].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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"}