@jotforminc/dnd-builder 3.2.1 → 3.3.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 +13 -0
- package/lib/cjs/components/Builder/Builder.js +6 -0
- package/lib/cjs/components/Builder/Builder.js.map +1 -1
- package/lib/cjs/components/Builder/BuilderWrapper.js +12 -0
- package/lib/cjs/components/Builder/BuilderWrapper.js.map +1 -1
- package/lib/cjs/components/Panels/LeftPanel/LeftPanelCloser.js +1 -4
- package/lib/cjs/components/Panels/LeftPanel/LeftPanelCloser.js.map +1 -1
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js +1 -3
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/cjs/components/Panels/SlidesPanel/ListWrapper.js +9 -7
- package/lib/cjs/components/Panels/SlidesPanel/ListWrapper.js.map +1 -1
- package/lib/cjs/contexts/PropContext.js +15 -20
- package/lib/cjs/contexts/PropContext.js.map +1 -1
- package/lib/cjs/utils/hooks.js +17 -3
- package/lib/cjs/utils/hooks.js.map +1 -1
- package/lib/esm/components/Builder/Builder.js +6 -0
- package/lib/esm/components/Builder/Builder.js.map +1 -1
- package/lib/esm/components/Builder/BuilderWrapper.js +12 -1
- package/lib/esm/components/Builder/BuilderWrapper.js.map +1 -1
- package/lib/esm/components/Panels/LeftPanel/Elements.js +2 -2
- package/lib/esm/components/Panels/LeftPanel/Elements.js.map +1 -1
- package/lib/esm/components/Panels/LeftPanel/LeftPanelCloser.js +1 -4
- package/lib/esm/components/Panels/LeftPanel/LeftPanelCloser.js.map +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanel.js +2 -4
- package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/esm/components/Panels/SlidesPanel/ListWrapper.js +10 -8
- package/lib/esm/components/Panels/SlidesPanel/ListWrapper.js.map +1 -1
- package/lib/esm/contexts/PropContext.js +14 -20
- package/lib/esm/contexts/PropContext.js.map +1 -1
- package/lib/esm/utils/hooks.js +17 -4
- package/lib/esm/utils/hooks.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [3.3.0](https://github.com/jotform/dnd-builder/compare/v3.2.1...v3.3.0) (2026-02-12)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* adds callback for page visibility changes ([543a49e](https://github.com/jotform/dnd-builder/commit/543a49e62e3be52907d40df6de8f86dc09ae917c))
|
|
11
|
+
* passes selected items to a callback function ([22e801b](https://github.com/jotform/dnd-builder/commit/22e801b27f980b7aae39ce85fe35c02c3f7d9ab9))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* renames and memoizes selected items handler ([78d347b](https://github.com/jotform/dnd-builder/commit/78d347b04009a5d880b827356a0ad29e44f058e1))
|
|
17
|
+
|
|
5
18
|
### [3.2.1](https://github.com/jotform/dnd-builder/compare/v3.2.0...v3.2.1) (2026-02-10)
|
|
6
19
|
|
|
7
20
|
|
|
@@ -85,12 +85,18 @@ Builder.propTypes = {
|
|
|
85
85
|
/** Function called upon removing a page */
|
|
86
86
|
onPageRemove: PropTypes__default['default'].func,
|
|
87
87
|
|
|
88
|
+
/** Function called upon page visibility changed */
|
|
89
|
+
onPageVisibilityChanged: PropTypes__default['default'].func,
|
|
90
|
+
|
|
88
91
|
/** Function called when the slides or the right panel is
|
|
89
92
|
* toggled takes a boolean value to indicate whether or
|
|
90
93
|
* not the panel is toggled open.
|
|
91
94
|
*/
|
|
92
95
|
onRightPanelsToggled: PropTypes__default['default'].func,
|
|
93
96
|
|
|
97
|
+
/** Function called upon selecting items */
|
|
98
|
+
onSelectedItemsChanged: PropTypes__default['default'].func,
|
|
99
|
+
|
|
94
100
|
/** Function called upon editing a general report setting */
|
|
95
101
|
onSettingChange: PropTypes__default['default'].func,
|
|
96
102
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sources":["../../../../src/components/Builder/Builder.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport DndWrapper from './DndWrapper';\nimport Scene from './Scene';\nimport RightPanel from '../Panels/RightPanel';\nimport LeftPanel from '../Panels/LeftPanel';\nimport SlidesPanel from '../Panels/SlidesPanel';\nimport AllSlidesPanel from '../Panels/AllSlidesPanel';\nimport { leftPanelConfigPropType } from '../../constants/propTypes';\nimport '../../styles/jfReportsBundle.scss';\nimport BuilderWrapper from './BuilderWrapper';\nimport Providers from '../../contexts/Providers';\n\nconst Builder = props => {\n const { useExperimentalFeatures } = props;\n return (\n <Providers\n mode=\"customize\"\n {...props}\n >\n <BuilderWrapper>\n <DndWrapper>\n <LeftPanel />\n <Scene />\n </DndWrapper>\n <RightPanel />\n <SlidesPanel />\n {useExperimentalFeatures && (\n <AllSlidesPanel />\n )}\n </BuilderWrapper>\n </Providers>\n\n );\n};\n\nBuilder.propTypes = {\n /** Items for to render in the report */\n acceptedItems: PropTypes.shape({}),\n /** Array of React components to render statically on each page (eg. watermark) */\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n disableInteraction: PropTypes.arrayOf(PropTypes.string),\n /** To pass in extra props to items selectively */\n itemAccessor: PropTypes.func,\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n leftPanelConfig: leftPanelConfigPropType,\n /** To track and log user actions */\n onAnEventTrigger: PropTypes.func,\n /** Function called upon adding an item */\n onItemAdd: PropTypes.func,\n /** Function called upon editing an item */\n onItemChange: PropTypes.func,\n /** Function called upon moving an item */\n onItemMove: PropTypes.func,\n /** Function called upon removing an item */\n onItemRemove: PropTypes.func,\n /** Function called upon resizing an item */\n onItemResize: PropTypes.func,\n onItemsMove: PropTypes.func,\n /** Function called upon adding a page */\n onPageAdd: PropTypes.func,\n /** Function called upon editing a page */\n onPageChange: PropTypes.func,\n /** Function called upon duplicating a page */\n onPageDuplicate: PropTypes.func,\n /** Function called upon reordering pages */\n onPageOrdersChange: PropTypes.func,\n /** Function called upon removing a page */\n onPageRemove: PropTypes.func,\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** Function called upon editing a general report setting */\n onSettingChange: PropTypes.func,\n /** Array of pages with their settings and items */\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n /** General report settings such as layout size and background color */\n settings: PropTypes.shape({}),\n /** Theme */\n theme: PropTypes.oneOf(['lightMode', 'darkMode']),\n useExperimentalFeatures: PropTypes.bool,\n};\n\nexport default Builder;\n"],"names":["Builder","props","useExperimentalFeatures","_jsx","_jsxs","propTypes","acceptedItems","PropTypes","shape","additionalPageItems","arrayOf","node","disableInteraction","string","itemAccessor","func","lastScrollPosition","number","leftPanelConfig","leftPanelConfigPropType","onAnEventTrigger","onItemAdd","onItemChange","onItemMove","onItemRemove","onItemResize","onItemsMove","onPageAdd","onPageChange","onPageDuplicate","onPageOrdersChange","onPageRemove","onRightPanelsToggled","onSettingChange","pages","settings","theme","oneOf","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAYMA,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK,EAAI;AACvB,MAAQC,uBAAR,GAAoCD,KAApC,CAAQC,uBAAR;AACA,sBACEC,eAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEMF,KAFN;AAAA,2BAIEG,gBAAC,cAAD;AAAA,8BACEA,gBAAC,UAAD;AAAA,gCACED,eAAC,SAAD,KADF,eAEEA,eAAC,KAAD,KAFF;AAAA,QADF,eAKEA,eAAC,UAAD,KALF,eAMEA,eAAC,WAAD,KANF,EAOGD,uBAAuB,iBACtBC,eAAC,cAAD,KARJ;AAAA;AAJF,KADF;AAmBD;;AAEDH,OAAO,CAACK,SAAR,GAAoB;AAClB;AACAC,EAAAA,aAAa,EAAEC,6BAAS,CAACC,KAAV,CAAgB,EAAhB,CAFG;;AAGlB;AACAC,EAAAA,mBAAmB,EAAEF,6BAAS,CAACG,OAAV,CAAkBH,6BAAS,CAACI,IAA5B,CAJH;AAKlBC,EAAAA,kBAAkB,EAAEL,6BAAS,CAACG,OAAV,CAAkBH,6BAAS,CAACM,MAA5B,CALF;;AAMlB;AACAC,EAAAA,YAAY,EAAEP,6BAAS,CAACQ,IAPN;;AAQlB;AACAC,EAAAA,kBAAkB,EAAET,6BAAS,CAACU,MATZ;AAUlBC,EAAAA,eAAe,EAAEC,iCAVC;;AAWlB;AACAC,EAAAA,gBAAgB,EAAEb,6BAAS,CAACQ,IAZV;;AAalB;AACAM,EAAAA,SAAS,EAAEd,6BAAS,CAACQ,IAdH;;AAelB;AACAO,EAAAA,YAAY,EAAEf,6BAAS,CAACQ,IAhBN;;AAiBlB;AACAQ,EAAAA,UAAU,EAAEhB,6BAAS,CAACQ,IAlBJ;;AAmBlB;AACAS,EAAAA,YAAY,EAAEjB,6BAAS,CAACQ,IApBN;;AAqBlB;AACAU,EAAAA,YAAY,EAAElB,6BAAS,CAACQ,IAtBN;AAuBlBW,EAAAA,WAAW,EAAEnB,6BAAS,CAACQ,IAvBL;;AAwBlB;AACAY,EAAAA,SAAS,EAAEpB,6BAAS,CAACQ,IAzBH;;AA0BlB;AACAa,EAAAA,YAAY,EAAErB,6BAAS,CAACQ,IA3BN;;AA4BlB;AACAc,EAAAA,eAAe,EAAEtB,6BAAS,CAACQ,IA7BT;;AA8BlB;AACAe,EAAAA,kBAAkB,EAAEvB,6BAAS,CAACQ,IA/BZ;;AAgClB;AACAgB,EAAAA,YAAY,EAAExB,6BAAS,CAACQ,IAjCN;;AAkClB;AACF;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"Builder.js","sources":["../../../../src/components/Builder/Builder.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport DndWrapper from './DndWrapper';\nimport Scene from './Scene';\nimport RightPanel from '../Panels/RightPanel';\nimport LeftPanel from '../Panels/LeftPanel';\nimport SlidesPanel from '../Panels/SlidesPanel';\nimport AllSlidesPanel from '../Panels/AllSlidesPanel';\nimport { leftPanelConfigPropType } from '../../constants/propTypes';\nimport '../../styles/jfReportsBundle.scss';\nimport BuilderWrapper from './BuilderWrapper';\nimport Providers from '../../contexts/Providers';\n\nconst Builder = props => {\n const { useExperimentalFeatures } = props;\n return (\n <Providers\n mode=\"customize\"\n {...props}\n >\n <BuilderWrapper>\n <DndWrapper>\n <LeftPanel />\n <Scene />\n </DndWrapper>\n <RightPanel />\n <SlidesPanel />\n {useExperimentalFeatures && (\n <AllSlidesPanel />\n )}\n </BuilderWrapper>\n </Providers>\n\n );\n};\n\nBuilder.propTypes = {\n /** Items for to render in the report */\n acceptedItems: PropTypes.shape({}),\n /** Array of React components to render statically on each page (eg. watermark) */\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n disableInteraction: PropTypes.arrayOf(PropTypes.string),\n /** To pass in extra props to items selectively */\n itemAccessor: PropTypes.func,\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n leftPanelConfig: leftPanelConfigPropType,\n /** To track and log user actions */\n onAnEventTrigger: PropTypes.func,\n /** Function called upon adding an item */\n onItemAdd: PropTypes.func,\n /** Function called upon editing an item */\n onItemChange: PropTypes.func,\n /** Function called upon moving an item */\n onItemMove: PropTypes.func,\n /** Function called upon removing an item */\n onItemRemove: PropTypes.func,\n /** Function called upon resizing an item */\n onItemResize: PropTypes.func,\n onItemsMove: PropTypes.func,\n /** Function called upon adding a page */\n onPageAdd: PropTypes.func,\n /** Function called upon editing a page */\n onPageChange: PropTypes.func,\n /** Function called upon duplicating a page */\n onPageDuplicate: PropTypes.func,\n /** Function called upon reordering pages */\n onPageOrdersChange: PropTypes.func,\n /** Function called upon removing a page */\n onPageRemove: PropTypes.func,\n /** Function called upon page visibility changed */\n onPageVisibilityChanged: PropTypes.func,\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** Function called upon selecting items */\n onSelectedItemsChanged: PropTypes.func,\n /** Function called upon editing a general report setting */\n onSettingChange: PropTypes.func,\n /** Array of pages with their settings and items */\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n /** General report settings such as layout size and background color */\n settings: PropTypes.shape({}),\n /** Theme */\n theme: PropTypes.oneOf(['lightMode', 'darkMode']),\n useExperimentalFeatures: PropTypes.bool,\n};\n\nexport default Builder;\n"],"names":["Builder","props","useExperimentalFeatures","_jsx","_jsxs","propTypes","acceptedItems","PropTypes","shape","additionalPageItems","arrayOf","node","disableInteraction","string","itemAccessor","func","lastScrollPosition","number","leftPanelConfig","leftPanelConfigPropType","onAnEventTrigger","onItemAdd","onItemChange","onItemMove","onItemRemove","onItemResize","onItemsMove","onPageAdd","onPageChange","onPageDuplicate","onPageOrdersChange","onPageRemove","onPageVisibilityChanged","onRightPanelsToggled","onSelectedItemsChanged","onSettingChange","pages","settings","theme","oneOf","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAYMA,OAAO,GAAG,SAAVA,OAAU,CAAAC,KAAK,EAAI;AACvB,MAAQC,uBAAR,GAAoCD,KAApC,CAAQC,uBAAR;AACA,sBACEC,eAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEMF,KAFN;AAAA,2BAIEG,gBAAC,cAAD;AAAA,8BACEA,gBAAC,UAAD;AAAA,gCACED,eAAC,SAAD,KADF,eAEEA,eAAC,KAAD,KAFF;AAAA,QADF,eAKEA,eAAC,UAAD,KALF,eAMEA,eAAC,WAAD,KANF,EAOGD,uBAAuB,iBACtBC,eAAC,cAAD,KARJ;AAAA;AAJF,KADF;AAmBD;;AAEDH,OAAO,CAACK,SAAR,GAAoB;AAClB;AACAC,EAAAA,aAAa,EAAEC,6BAAS,CAACC,KAAV,CAAgB,EAAhB,CAFG;;AAGlB;AACAC,EAAAA,mBAAmB,EAAEF,6BAAS,CAACG,OAAV,CAAkBH,6BAAS,CAACI,IAA5B,CAJH;AAKlBC,EAAAA,kBAAkB,EAAEL,6BAAS,CAACG,OAAV,CAAkBH,6BAAS,CAACM,MAA5B,CALF;;AAMlB;AACAC,EAAAA,YAAY,EAAEP,6BAAS,CAACQ,IAPN;;AAQlB;AACAC,EAAAA,kBAAkB,EAAET,6BAAS,CAACU,MATZ;AAUlBC,EAAAA,eAAe,EAAEC,iCAVC;;AAWlB;AACAC,EAAAA,gBAAgB,EAAEb,6BAAS,CAACQ,IAZV;;AAalB;AACAM,EAAAA,SAAS,EAAEd,6BAAS,CAACQ,IAdH;;AAelB;AACAO,EAAAA,YAAY,EAAEf,6BAAS,CAACQ,IAhBN;;AAiBlB;AACAQ,EAAAA,UAAU,EAAEhB,6BAAS,CAACQ,IAlBJ;;AAmBlB;AACAS,EAAAA,YAAY,EAAEjB,6BAAS,CAACQ,IApBN;;AAqBlB;AACAU,EAAAA,YAAY,EAAElB,6BAAS,CAACQ,IAtBN;AAuBlBW,EAAAA,WAAW,EAAEnB,6BAAS,CAACQ,IAvBL;;AAwBlB;AACAY,EAAAA,SAAS,EAAEpB,6BAAS,CAACQ,IAzBH;;AA0BlB;AACAa,EAAAA,YAAY,EAAErB,6BAAS,CAACQ,IA3BN;;AA4BlB;AACAc,EAAAA,eAAe,EAAEtB,6BAAS,CAACQ,IA7BT;;AA8BlB;AACAe,EAAAA,kBAAkB,EAAEvB,6BAAS,CAACQ,IA/BZ;;AAgClB;AACAgB,EAAAA,YAAY,EAAExB,6BAAS,CAACQ,IAjCN;;AAkClB;AACAiB,EAAAA,uBAAuB,EAAEzB,6BAAS,CAACQ,IAnCjB;;AAoClB;AACF;AACA;AACA;AACEkB,EAAAA,oBAAoB,EAAE1B,6BAAS,CAACQ,IAxCd;;AAyClB;AACAmB,EAAAA,sBAAsB,EAAE3B,6BAAS,CAACQ,IA1ChB;;AA2ClB;AACAoB,EAAAA,eAAe,EAAE5B,6BAAS,CAACQ,IA5CT;;AA6ClB;AACAqB,EAAAA,KAAK,EAAE7B,6BAAS,CAACG,OAAV,CACLH,6BAAS,CAACC,KAAV,CAAgB,EAAhB,CADK,CA9CW;;AAiDlB;AACA6B,EAAAA,QAAQ,EAAE9B,6BAAS,CAACC,KAAV,CAAgB,EAAhB,CAlDQ;;AAmDlB;AACA8B,EAAAA,KAAK,EAAE/B,6BAAS,CAACgC,KAAV,CAAgB,CAAC,WAAD,EAAc,UAAd,CAAhB,CApDW;AAqDlBrC,EAAAA,uBAAuB,EAAEK,6BAAS,CAACiC;AArDjB,CAApB;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var PropTypes = require('prop-types');
|
|
5
|
+
var isEqual = require('lodash.isequal');
|
|
5
6
|
var ReportWrapper = require('../ReportWrapper.js');
|
|
6
7
|
var PropContext = require('../../contexts/PropContext.js');
|
|
7
8
|
var BuilderContext = require('../../contexts/BuilderContext.js');
|
|
@@ -11,6 +12,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
11
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
13
|
|
|
13
14
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
15
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
14
16
|
|
|
15
17
|
var BuilderWrapper = function BuilderWrapper(_ref) {
|
|
16
18
|
var children = _ref.children;
|
|
@@ -30,6 +32,16 @@ var BuilderWrapper = function BuilderWrapper(_ref) {
|
|
|
30
32
|
var setIsSlidesPanelOpen = BuilderContext.useBuilderStore(function (state) {
|
|
31
33
|
return state.setIsSlidesPanelOpen;
|
|
32
34
|
});
|
|
35
|
+
var onSelectedItemsChanged = PropContext.usePropStore(function (state) {
|
|
36
|
+
return state.onSelectedItemsChanged;
|
|
37
|
+
});
|
|
38
|
+
var selectedItems = hooks.useSelectedElements();
|
|
39
|
+
var prevSelectedItems = hooks.usePrevious(selectedItems);
|
|
40
|
+
React.useEffect(function () {
|
|
41
|
+
if (prevSelectedItems && !isEqual__default['default'](prevSelectedItems, selectedItems)) {
|
|
42
|
+
onSelectedItemsChanged(selectedItems);
|
|
43
|
+
}
|
|
44
|
+
}, [selectedItems, onSelectedItemsChanged, prevSelectedItems]);
|
|
33
45
|
hooks.useFitZoom();
|
|
34
46
|
React.useEffect(function () {
|
|
35
47
|
if (!decidedWhichPanelToOpen.current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderWrapper.js","sources":["../../../../src/components/Builder/BuilderWrapper.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ReportWrapper from '../ReportWrapper';\nimport { usePropStore } from '../../contexts/PropContext';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { useFitZoom } from '../../utils/hooks';\n\nconst BuilderWrapper = ({ children }) => {\n const decidedWhichPanelToOpen = useRef(false);\n\n const pageCount = usePropStore(state => state.pages.length);\n const isLeftPanelOpen = useBuilderStore(state => state.isLeftPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const setIsLeftPanelOpen = useBuilderStore(state => state.setIsLeftPanelOpen);\n const setIsSlidesPanelOpen = useBuilderStore(state => state.setIsSlidesPanelOpen);\n\n useFitZoom();\n\n useEffect(() => {\n if (!decidedWhichPanelToOpen.current) {\n if (pageCount > 1) {\n if (isLeftPanelOpen) {\n setIsLeftPanelOpen(false);\n }\n setIsSlidesPanelOpen(true);\n } else {\n if (isSlidesPanelOpen) {\n setIsSlidesPanelOpen(false);\n }\n setIsLeftPanelOpen(true);\n }\n\n decidedWhichPanelToOpen.current = true;\n }\n }, [\n pageCount,\n isLeftPanelOpen,\n isSlidesPanelOpen,\n setIsLeftPanelOpen,\n setIsSlidesPanelOpen,\n ]);\n\n return (\n <ReportWrapper mode=\"customize\">\n {children}\n </ReportWrapper>\n );\n};\n\nBuilderWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default BuilderWrapper;\n"],"names":["BuilderWrapper","children","decidedWhichPanelToOpen","useRef","pageCount","usePropStore","state","pages","length","isLeftPanelOpen","useBuilderStore","isSlidesPanelOpen","setIsLeftPanelOpen","setIsSlidesPanelOpen","
|
|
1
|
+
{"version":3,"file":"BuilderWrapper.js","sources":["../../../../src/components/Builder/BuilderWrapper.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash.isequal';\nimport ReportWrapper from '../ReportWrapper';\nimport { usePropStore } from '../../contexts/PropContext';\nimport { useBuilderStore } from '../../contexts/BuilderContext';\nimport { useFitZoom, usePrevious, useSelectedElements } from '../../utils/hooks';\n\nconst BuilderWrapper = ({ children }) => {\n const decidedWhichPanelToOpen = useRef(false);\n\n const pageCount = usePropStore(state => state.pages.length);\n const isLeftPanelOpen = useBuilderStore(state => state.isLeftPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const setIsLeftPanelOpen = useBuilderStore(state => state.setIsLeftPanelOpen);\n const setIsSlidesPanelOpen = useBuilderStore(state => state.setIsSlidesPanelOpen);\n const onSelectedItemsChanged = usePropStore(state => state.onSelectedItemsChanged);\n const selectedItems = useSelectedElements();\n const prevSelectedItems = usePrevious(selectedItems);\n\n useEffect(() => {\n if (prevSelectedItems && !isEqual(prevSelectedItems, selectedItems)) {\n onSelectedItemsChanged(selectedItems);\n }\n }, [\n selectedItems,\n onSelectedItemsChanged,\n prevSelectedItems,\n ]);\n\n useFitZoom();\n\n useEffect(() => {\n if (!decidedWhichPanelToOpen.current) {\n if (pageCount > 1) {\n if (isLeftPanelOpen) {\n setIsLeftPanelOpen(false);\n }\n setIsSlidesPanelOpen(true);\n } else {\n if (isSlidesPanelOpen) {\n setIsSlidesPanelOpen(false);\n }\n setIsLeftPanelOpen(true);\n }\n\n decidedWhichPanelToOpen.current = true;\n }\n }, [\n pageCount,\n isLeftPanelOpen,\n isSlidesPanelOpen,\n setIsLeftPanelOpen,\n setIsSlidesPanelOpen,\n ]);\n\n return (\n <ReportWrapper mode=\"customize\">\n {children}\n </ReportWrapper>\n );\n};\n\nBuilderWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default BuilderWrapper;\n"],"names":["BuilderWrapper","children","decidedWhichPanelToOpen","useRef","pageCount","usePropStore","state","pages","length","isLeftPanelOpen","useBuilderStore","isSlidesPanelOpen","setIsLeftPanelOpen","setIsSlidesPanelOpen","onSelectedItemsChanged","selectedItems","useSelectedElements","prevSelectedItems","usePrevious","useEffect","isEqual","useFitZoom","current","_jsx","propTypes","PropTypes","node","isRequired"],"mappings":";;;;;;;;;;;;;;;;IAQMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkB;AAAA,MAAfC,QAAe,QAAfA,QAAe;AACvC,MAAMC,uBAAuB,GAAGC,YAAM,CAAC,KAAD,CAAtC;AAEA,MAAMC,SAAS,GAAGC,wBAAY,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACC,KAAN,CAAYC,MAAhB;AAAA,GAAN,CAA9B;AACA,MAAMC,eAAe,GAAGC,8BAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACG,eAAV;AAAA,GAAN,CAAvC;AACA,MAAME,iBAAiB,GAAGD,8BAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACK,iBAAV;AAAA,GAAN,CAAzC;AACA,MAAMC,kBAAkB,GAAGF,8BAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACM,kBAAV;AAAA,GAAN,CAA1C;AACA,MAAMC,oBAAoB,GAAGH,8BAAe,CAAC,UAAAJ,KAAK;AAAA,WAAIA,KAAK,CAACO,oBAAV;AAAA,GAAN,CAA5C;AACA,MAAMC,sBAAsB,GAAGT,wBAAY,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACQ,sBAAV;AAAA,GAAN,CAA3C;AACA,MAAMC,aAAa,GAAGC,yBAAmB,EAAzC;AACA,MAAMC,iBAAiB,GAAGC,iBAAW,CAACH,aAAD,CAArC;AAEAI,EAAAA,eAAS,CAAC,YAAM;AACd,QAAIF,iBAAiB,IAAI,CAACG,2BAAO,CAACH,iBAAD,EAAoBF,aAApB,CAAjC,EAAqE;AACnED,MAAAA,sBAAsB,CAACC,aAAD,CAAtB;AACD;AACF,GAJQ,EAIN,CACDA,aADC,EAEDD,sBAFC,EAGDG,iBAHC,CAJM,CAAT;AAUAI,EAAAA,gBAAU;AAEVF,EAAAA,eAAS,CAAC,YAAM;AACd,QAAI,CAACjB,uBAAuB,CAACoB,OAA7B,EAAsC;AACpC,UAAIlB,SAAS,GAAG,CAAhB,EAAmB;AACjB,YAAIK,eAAJ,EAAqB;AACnBG,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;;AACDC,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD,OALD,MAKO;AACL,YAAIF,iBAAJ,EAAuB;AACrBE,UAAAA,oBAAoB,CAAC,KAAD,CAApB;AACD;;AACDD,QAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD;;AAEDV,MAAAA,uBAAuB,CAACoB,OAAxB,GAAkC,IAAlC;AACD;AACF,GAhBQ,EAgBN,CACDlB,SADC,EAEDK,eAFC,EAGDE,iBAHC,EAIDC,kBAJC,EAKDC,oBALC,CAhBM,CAAT;AAwBA,sBACEU,eAAC,aAAD;AAAe,IAAA,IAAI,EAAC,WAApB;AAAA,cACGtB;AADH,IADF;AAKD;;AAEDD,cAAc,CAACwB,SAAf,GAA2B;AACzBvB,EAAAA,QAAQ,EAAEwB,6BAAS,CAACC,IAAV,CAAeC;AADA,CAA3B;;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var React = require('react');
|
|
4
3
|
var BuilderContext = require('../../../contexts/BuilderContext.js');
|
|
5
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
5
|
var close = require('../../../assets/svg/close.svg.js');
|
|
@@ -23,7 +22,5 @@ var LeftPanelToggler = function LeftPanelToggler() {
|
|
|
23
22
|
});
|
|
24
23
|
};
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
module.exports = LeftPanelCloser;
|
|
25
|
+
module.exports = LeftPanelToggler;
|
|
29
26
|
//# sourceMappingURL=LeftPanelCloser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftPanelCloser.js","sources":["../../../../../src/components/Panels/LeftPanel/LeftPanelCloser.js"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"LeftPanelCloser.js","sources":["../../../../../src/components/Panels/LeftPanel/LeftPanelCloser.js"],"sourcesContent":["import { useBuilderStore } from '../../../contexts/BuilderContext';\nimport * as icons from '../../../utils/icons';\n\nconst LeftPanelToggler = () => {\n const setIsLeftPanelOpen = useBuilderStore(state => state.setIsLeftPanelOpen);\n return (\n <>\n <button\n className=\"paneClose p-absolute\"\n onClick={() => { setIsLeftPanelOpen(false); }}\n type=\"button\"\n >\n <icons.close className=\"jfReportSVG\" />\n </button>\n </>\n );\n};\n\nexport default LeftPanelToggler;\n"],"names":["LeftPanelToggler","setIsLeftPanelOpen","useBuilderStore","state","_jsx","icons.close"],"mappings":";;;;;;IAGMA,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC7B,MAAMC,kBAAkB,GAAGC,8BAAe,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACF,kBAAV;AAAA,GAAN,CAA1C;AACA,sBACEG;AAAA,2BACEA;AACE,MAAA,SAAS,EAAC,sBADZ;AAEE,MAAA,OAAO,EAAE,mBAAM;AAAEH,QAAAA,kBAAkB,CAAC,KAAD,CAAlB;AAA4B,OAF/C;AAGE,MAAA,IAAI,EAAC,QAHP;AAAA,6BAKEG,eAACC,KAAD;AAAa,QAAA,SAAS,EAAC;AAAvB;AALF;AADF,IADF;AAWD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport classNames from 'classnames';\nimport Panel from '../../Builder/Panel';\nimport Section from '../../Builder/Section';\nimport Layout from '../../../constants/reportSettings';\nimport Page from '../../../constants/pageSettings';\nimport { useBuilderStore } from '../../../contexts/BuilderContext';\nimport { usePropStore } from '../../../contexts/PropContext';\nimport { findItemById, getTabsWithSettings } from '../../../utils/functions';\nimport { useTranslatedTexts } from '../../../utils/hooks';\nimport {\n REPORT_SETTINGS_ITEM_TYPE, PAGE_SETTINGS_ITEM_TYPE,\n} from '../../../constants/itemTypes';\nimport Tabs from '../../Builder/Tabs';\nimport Settings from './Settings';\nimport RightPanelToggler from './RightPanelToggler';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = () => {\n const activeTab = useBuilderStore(state => state.activeTab);\n const editedElement = useBuilderStore(state => state.editedElement);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const resetActiveElements = useBuilderStore(state => state.resetActiveElements);\n const setActiveTab = useBuilderStore(state => state.setActiveTab);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const layoutSettings = usePropStore(state => state.settings);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onPageChange = usePropStore(state => state.onPageChange);\n const onSettingChange = usePropStore(state => state.onSettingChange);\n const pages = usePropStore(state => state.pages);\n const itemAccessor = usePropStore(state => state.itemAccessor);\n\n const panelRef = useRef(null);\n const translatedTexts = useTranslatedTexts();\n\n const settingMap = useMemo(() => ({\n i_: {\n details: id => {\n const item = findItemById(id, pages);\n return item;\n },\n settings: item => {\n return acceptedItems[item.itemType];\n },\n title: item => {\n const textKey = `${(acceptedItems[item.itemType].title || item.itemType).toLocaleUpperCase()}_SETTINGS`;\n return translatedTexts[textKey] || acceptedItems[item.itemType].title;\n },\n updater: onItemChange,\n },\n l_: {\n details: () => {\n return {\n ...layoutSettings,\n id: REPORT_SETTINGS_ITEM_TYPE,\n itemType: REPORT_SETTINGS_ITEM_TYPE,\n };\n },\n settings: () => {\n return acceptedItems[REPORT_SETTINGS_ITEM_TYPE] || Layout;\n },\n title: () => translatedTexts.LAYOUT_SETTINGS,\n updater: onSettingChange,\n },\n p_: {\n details: id => {\n return {\n backgroundColor: layoutSettings.reportBackgroundColor,\n ...pages.find(page => page.id === id),\n itemType: PAGE_SETTINGS_ITEM_TYPE,\n };\n },\n settings: () => {\n const pageItem = acceptedItems[PAGE_SETTINGS_ITEM_TYPE] || Page;\n return {\n ...pageItem,\n settings: pageItem.settings.map(setting => {\n if (setting.key === 'pageLayer') {\n return { ...setting, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => translatedTexts.PAGE_SETTINGS,\n updater: onPageChange,\n },\n }), [\n acceptedItems,\n layoutSettings,\n onItemChange,\n onPageChange,\n onSettingChange,\n translatedTexts,\n pages,\n ]);\n\n const editedEl = useMemo(() => {\n return settingMap[editedElement.substr(0, 2)] || settingMap.l_;\n }, [editedElement, settingMap]);\n\n const {\n element, selectedItem, title, updateFunc,\n } = useMemo(() => {\n const editedElId = editedElement.substr(2);\n const _selectedItem = editedEl.details(editedElId);\n\n if (!_selectedItem) {\n const fallbackEditedEl = settingMap.l_;\n return {\n element: fallbackEditedEl.settings(),\n selectedItem: fallbackEditedEl.details(),\n title: fallbackEditedEl.title(),\n updateFunc: fallbackEditedEl.updater,\n };\n }\n\n return {\n element: editedEl.settings(_selectedItem),\n selectedItem: _selectedItem,\n title: editedEl.title(_selectedItem),\n updateFunc: editedEl.updater,\n };\n }, [editedEl, editedElement, settingMap.l_]);\n\n // Tabs\n const tabsWithSettings = getTabsWithSettings(element, selectedItem, itemAccessor);\n const tabs = Object.keys(tabsWithSettings);\n\n useEffect(() => {\n const currentTab = tabs[activeTab.right];\n if (!tabsWithSettings[currentTab]) {\n // This is due to conditionaly hiding tabs\n setActiveTab('right', 0);\n }\n }, [activeTab, tabs, tabsWithSettings, setActiveTab]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSettings f-height',\n {\n isIdle: !isRightPanelOpen,\n otherOpened: isSlidesPanelOpen,\n },\n );\n\n const onClickOutsideForPanel = useCallback(e => {\n if (editedElement.substr(0, 2) === 'i_'\n || panelRef.current.contains(e.target)\n || panelRef.current.contains(document.activeElement)\n || Array.from(e.target.classList).some(xClass => exceptionalClasses.includes(xClass))\n || exceptionalClasses.some(xClass => e.target.closest(`.${xClass}`))\n ) {\n return;\n }\n setIsRightPanelOpen(false);\n resetActiveElements();\n }, [editedElement, setIsRightPanelOpen, resetActiveElements]);\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen, onClickOutsideForPanel]);\n\n return (\n <>\n <Panel\n ref={panelRef}\n additionalClassName={panelAdditionalClassName}\n >\n {isSlidesPanelOpen ? null : <RightPanelToggler />}\n <div className=\"toolItemWrapper f-height d-flex dir-col\">\n <Section title={title}>\n <Tabs\n panel=\"right\"\n tabs={tabs}\n />\n <Settings\n key={selectedItem.id}\n element={element}\n item={selectedItem}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nexport default memo(RightPanel);\n"],"names":["exceptionalClasses","RightPanel","activeTab","useBuilderStore","state","editedElement","isRightPanelOpen","isSlidesPanelOpen","resetActiveElements","setActiveTab","setIsRightPanelOpen","acceptedItems","usePropStore","layoutSettings","settings","onItemChange","onPageChange","onSettingChange","pages","itemAccessor","panelRef","useRef","translatedTexts","useTranslatedTexts","settingMap","useMemo","i_","details","id","item","findItemById","itemType","title","textKey","toLocaleUpperCase","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","LAYOUT_SETTINGS","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","PAGE_SETTINGS","editedEl","substr","editedElId","_selectedItem","fallbackEditedEl","element","selectedItem","updateFunc","tabsWithSettings","getTabsWithSettings","tabs","Object","keys","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","useCallback","e","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport classNames from 'classnames';\nimport Panel from '../../Builder/Panel';\nimport Section from '../../Builder/Section';\nimport Layout from '../../../constants/reportSettings';\nimport Page from '../../../constants/pageSettings';\nimport { useBuilderStore } from '../../../contexts/BuilderContext';\nimport { usePropStore } from '../../../contexts/PropContext';\nimport { findItemById, getTabsWithSettings } from '../../../utils/functions';\nimport { useTranslatedTexts } from '../../../utils/hooks';\nimport {\n REPORT_SETTINGS_ITEM_TYPE, PAGE_SETTINGS_ITEM_TYPE,\n} from '../../../constants/itemTypes';\nimport Tabs from '../../Builder/Tabs';\nimport Settings from './Settings';\nimport RightPanelToggler from './RightPanelToggler';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = () => {\n const activeTab = useBuilderStore(state => state.activeTab);\n const editedElement = useBuilderStore(state => state.editedElement);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const isSlidesPanelOpen = useBuilderStore(state => state.isSlidesPanelOpen);\n const resetActiveElements = useBuilderStore(state => state.resetActiveElements);\n const setActiveTab = useBuilderStore(state => state.setActiveTab);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n\n const acceptedItems = usePropStore(state => state.acceptedItems);\n const layoutSettings = usePropStore(state => state.settings);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onPageChange = usePropStore(state => state.onPageChange);\n const onSettingChange = usePropStore(state => state.onSettingChange);\n const pages = usePropStore(state => state.pages);\n const itemAccessor = usePropStore(state => state.itemAccessor);\n\n const panelRef = useRef(null);\n const translatedTexts = useTranslatedTexts();\n\n const settingMap = useMemo(() => ({\n i_: {\n details: id => {\n const item = findItemById(id, pages);\n return item;\n },\n settings: item => {\n return acceptedItems[item.itemType];\n },\n title: item => {\n const textKey = `${(acceptedItems[item.itemType].title || item.itemType).toLocaleUpperCase()}_SETTINGS`;\n return translatedTexts[textKey] || acceptedItems[item.itemType].title;\n },\n updater: onItemChange,\n },\n l_: {\n details: () => {\n return {\n ...layoutSettings,\n id: REPORT_SETTINGS_ITEM_TYPE,\n itemType: REPORT_SETTINGS_ITEM_TYPE,\n };\n },\n settings: () => {\n return acceptedItems[REPORT_SETTINGS_ITEM_TYPE] || Layout;\n },\n title: () => translatedTexts.LAYOUT_SETTINGS,\n updater: onSettingChange,\n },\n p_: {\n details: id => {\n return {\n backgroundColor: layoutSettings.reportBackgroundColor,\n ...pages.find(page => page.id === id),\n itemType: PAGE_SETTINGS_ITEM_TYPE,\n };\n },\n settings: () => {\n const pageItem = acceptedItems[PAGE_SETTINGS_ITEM_TYPE] || Page;\n return {\n ...pageItem,\n settings: pageItem.settings.map(setting => {\n if (setting.key === 'pageLayer') {\n return { ...setting, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => translatedTexts.PAGE_SETTINGS,\n updater: onPageChange,\n },\n }), [\n acceptedItems,\n layoutSettings,\n onItemChange,\n onPageChange,\n onSettingChange,\n translatedTexts,\n pages,\n ]);\n\n const editedEl = useMemo(() => {\n return settingMap[editedElement.substr(0, 2)] || settingMap.l_;\n }, [editedElement, settingMap]);\n\n const {\n element, selectedItem, title, updateFunc,\n } = useMemo(() => {\n const editedElId = editedElement.substr(2);\n const _selectedItem = editedEl.details(editedElId);\n\n if (!_selectedItem) {\n const fallbackEditedEl = settingMap.l_;\n return {\n element: fallbackEditedEl.settings(),\n selectedItem: fallbackEditedEl.details(),\n title: fallbackEditedEl.title(),\n updateFunc: fallbackEditedEl.updater,\n };\n }\n\n return {\n element: editedEl.settings(_selectedItem),\n selectedItem: _selectedItem,\n title: editedEl.title(_selectedItem),\n updateFunc: editedEl.updater,\n };\n }, [editedEl, editedElement, settingMap.l_]);\n\n // Tabs\n const tabsWithSettings = getTabsWithSettings(element, selectedItem, itemAccessor);\n const tabs = Object.keys(tabsWithSettings);\n\n useEffect(() => {\n const currentTab = tabs[activeTab.right];\n if (!tabsWithSettings[currentTab]) {\n // This is due to conditionaly hiding tabs\n setActiveTab('right', 0);\n }\n }, [activeTab, tabs, tabsWithSettings, setActiveTab]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSettings f-height',\n {\n isIdle: !isRightPanelOpen,\n otherOpened: isSlidesPanelOpen,\n },\n );\n\n const onClickOutsideForPanel = useCallback(e => {\n if (editedElement.substr(0, 2) === 'i_'\n || panelRef.current.contains(e.target)\n || panelRef.current.contains(document.activeElement)\n || Array.from(e.target.classList).some(xClass => exceptionalClasses.includes(xClass))\n || exceptionalClasses.some(xClass => e.target.closest(`.${xClass}`))\n ) {\n return;\n }\n setIsRightPanelOpen(false);\n resetActiveElements();\n }, [editedElement, setIsRightPanelOpen, resetActiveElements]);\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen, onClickOutsideForPanel]);\n\n return (\n <>\n <Panel\n ref={panelRef}\n additionalClassName={panelAdditionalClassName}\n >\n {isSlidesPanelOpen ? null : <RightPanelToggler />}\n <div className=\"toolItemWrapper f-height d-flex dir-col\">\n <Section title={title}>\n <Tabs\n panel=\"right\"\n tabs={tabs}\n />\n <Settings\n key={selectedItem.id}\n element={element}\n item={selectedItem}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nexport default RightPanel;\n"],"names":["exceptionalClasses","RightPanel","activeTab","useBuilderStore","state","editedElement","isRightPanelOpen","isSlidesPanelOpen","resetActiveElements","setActiveTab","setIsRightPanelOpen","acceptedItems","usePropStore","layoutSettings","settings","onItemChange","onPageChange","onSettingChange","pages","itemAccessor","panelRef","useRef","translatedTexts","useTranslatedTexts","settingMap","useMemo","i_","details","id","item","findItemById","itemType","title","textKey","toLocaleUpperCase","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","LAYOUT_SETTINGS","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","PAGE_SETTINGS","editedEl","substr","editedElId","_selectedItem","fallbackEditedEl","element","selectedItem","updateFunc","tabsWithSettings","getTabsWithSettings","tabs","Object","keys","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","useCallback","e","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -33,12 +33,9 @@ var ListWrapper = function ListWrapper(_ref) {
|
|
|
33
33
|
onSortEnd = _ref$onSortEnd === void 0 ? function () {} : _ref$onSortEnd,
|
|
34
34
|
_ref$pageGetter = _ref.pageGetter,
|
|
35
35
|
pageGetter = _ref$pageGetter === void 0 ? function () {} : _ref$pageGetter;
|
|
36
|
-
var
|
|
37
|
-
return state.pages;
|
|
36
|
+
var pageCount = PropContext.usePropStore(function (state) {
|
|
37
|
+
return state.pages.length;
|
|
38
38
|
});
|
|
39
|
-
var pageCount = React.useMemo(function () {
|
|
40
|
-
return pages.length;
|
|
41
|
-
}, [pages]);
|
|
42
39
|
var onPageAdd = PropContext.usePropStore(function (state) {
|
|
43
40
|
return state.onPageAdd;
|
|
44
41
|
});
|
|
@@ -51,6 +48,9 @@ var ListWrapper = function ListWrapper(_ref) {
|
|
|
51
48
|
var reportSettings = PropContext.usePropStore(function (state) {
|
|
52
49
|
return state.settings;
|
|
53
50
|
});
|
|
51
|
+
var onPageVisibilityChanged = PropContext.usePropStore(function (state) {
|
|
52
|
+
return state.onPageVisibilityChanged;
|
|
53
|
+
});
|
|
54
54
|
var listRef = React.useRef(null);
|
|
55
55
|
|
|
56
56
|
var _useState = React.useState(-1),
|
|
@@ -100,7 +100,7 @@ var ListWrapper = function ListWrapper(_ref) {
|
|
|
100
100
|
listRef.current = outerRef;
|
|
101
101
|
}
|
|
102
102
|
}, []);
|
|
103
|
-
|
|
103
|
+
var handlePageVisibility = React.useCallback(function (index) {
|
|
104
104
|
if (index && !Number.isNaN(index)) {
|
|
105
105
|
var _listRef$current;
|
|
106
106
|
|
|
@@ -118,9 +118,11 @@ var ListWrapper = function ListWrapper(_ref) {
|
|
|
118
118
|
|
|
119
119
|
if (nextSelectedThumbnail) {
|
|
120
120
|
nextSelectedThumbnail.classList.add('isSelected');
|
|
121
|
+
onPageVisibilityChanged(index);
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
|
-
},
|
|
124
|
+
}, [onPageVisibilityChanged]);
|
|
125
|
+
hooks.usePageVisibility(handlePageVisibility, pageCount, selectedPageIndex); // TODO: could be better than now. scrollend listener is a choice for some cases
|
|
124
126
|
|
|
125
127
|
var resetSelectedPageIndex = React.useCallback(function () {
|
|
126
128
|
setTimeout(function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListWrapper.js","sources":["../../../../../src/components/Panels/SlidesPanel/ListWrapper.js"],"sourcesContent":["import {\n memo, useCallback, useRef, useState, useMemo, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport PageAdder from '../../Builder/PageAdder';\nimport { getScaleForPageThumbnail, scrollToTarget } from '../../../utils/functions';\nimport { usePageVisibility } from '../../../utils/hooks';\nimport { usePropStore } from '../../../contexts/PropContext';\n\nconst ListWrapper = ({\n component: Component = null,\n onSortEnd = () => {},\n pageGetter = () => {},\n}) => {\n const pages = usePropStore(state => state.pages);\n const pageCount = useMemo(() => pages.length, [pages]);\n const onPageAdd = usePropStore(state => state.onPageAdd);\n const onPageDuplicate = usePropStore(state => state.onPageDuplicate);\n const onPageRemove = usePropStore(state => state.onPageRemove);\n const reportSettings = usePropStore(state => state.settings);\n\n const listRef = useRef(null);\n const [selectedPageIndex, setSelectedPageIndex] = useState(-1);\n const {\n reportBackgroundColor,\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n } = reportSettings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n const { left, scale, top } = getScaleForPageThumbnail(width, height);\n\n const pageContainerStyles = useMemo(() => ({\n backgroundColor: reportBackgroundColor || '#fff',\n height: height,\n left,\n top,\n transform: `scale(${scale})`,\n transformOrigin: '0 0',\n width: width,\n }), [height, left, scale, top, width, reportBackgroundColor]);\n\n const _onSortEnd = useCallback(({ newIndex, oldIndex }) => {\n if (onSortEnd) {\n onSortEnd({ newIndex, oldIndex }, null, listRef.current);\n }\n }, [onSortEnd]);\n\n const refSetter = useCallback(outerRef => {\n if (outerRef) {\n listRef.current = outerRef;\n }\n }, []);\n\n usePageVisibility(index => {\n if (index && !Number.isNaN(index)) {\n if (listRef.current?.scrollToIndex) {\n listRef.current.scrollToIndex(index, 'center');\n }\n\n const prevSelectedThumbnail = document.querySelector('.thumbnailWrapper.isSelected');\n if (prevSelectedThumbnail) {\n prevSelectedThumbnail.classList.remove('isSelected');\n }\n\n const nextSelectedThumbnail = document\n .querySelector(`.thumbnailWrapper[data-order=\"${index}\"]`);\n if (nextSelectedThumbnail) {\n nextSelectedThumbnail.classList.add('isSelected');\n }\n }\n }, pageCount, selectedPageIndex);\n\n // TODO: could be better than now. scrollend listener is a choice for some cases\n const resetSelectedPageIndex = useCallback(() => {\n setTimeout(() => {\n setSelectedPageIndex(-1);\n }, 1000);\n }, []);\n\n const onPageClick = useCallback(e => {\n const order = e.target.getAttribute('data-order');\n setSelectedPageIndex(parseInt(order, 10));\n if (!e.target.classList.contains('controllerItem')) { // for page thumbnails actions\n scrollToTarget(`pageActions-id-${order}`);\n }\n resetSelectedPageIndex();\n }, [resetSelectedPageIndex]);\n\n const handlePageAdd = useCallback(index => {\n setSelectedPageIndex(index);\n onPageAdd(index);\n }, [onPageAdd]);\n\n const handlePageDuplicate = useCallback(index => {\n setSelectedPageIndex(index);\n onPageDuplicate(index);\n }, [onPageDuplicate]);\n\n const handlePageRemove = useCallback(index => {\n setSelectedPageIndex(index);\n onPageRemove(index);\n }, [onPageRemove]);\n\n useEffect(() => { // after new page added\n scrollToTarget(`pageActions-id-${selectedPageIndex}`, 0, { behavior: 'smooth' });\n resetSelectedPageIndex();\n }, [resetSelectedPageIndex, selectedPageIndex]);\n\n return (\n <>\n <div\n style={{\n height: '100%', margin: '25px 10px', position: 'relative', width: '100%',\n }}\n >\n <Component\n ref={refSetter}\n height=\"100%\"\n onPageAdd={handlePageAdd}\n onPageClick={onPageClick}\n onPageDuplicate={handlePageDuplicate}\n onPageRemove={handlePageRemove}\n onSortEnd={_onSortEnd}\n pageContainerStyle={pageContainerStyles}\n pageCount={pageCount}\n pageGetter={pageGetter}\n width=\"100%\"\n />\n </div>\n <div className=\"jfReport-pane-footer\">\n <PageAdder additionalClass=\"forOptions\" />\n </div>\n </>\n );\n};\n\nListWrapper.propTypes = {\n component: PropTypes.any,\n onSortEnd: PropTypes.func,\n pageGetter: PropTypes.func,\n};\n\nexport default memo(ListWrapper);\n"],"names":["ListWrapper","component","Component","onSortEnd","pageGetter","pages","usePropStore","state","pageCount","useMemo","length","onPageAdd","onPageDuplicate","onPageRemove","reportSettings","settings","listRef","useRef","useState","selectedPageIndex","setSelectedPageIndex","reportBackgroundColor","reportLayoutHeight","reportLayoutWidth","width","parseInt","height","getScaleForPageThumbnail","left","scale","top","pageContainerStyles","backgroundColor","transform","transformOrigin","_onSortEnd","useCallback","newIndex","oldIndex","current","refSetter","outerRef","usePageVisibility","index","Number","isNaN","scrollToIndex","prevSelectedThumbnail","document","querySelector","classList","remove","nextSelectedThumbnail","add","resetSelectedPageIndex","setTimeout","onPageClick","e","order","target","getAttribute","contains","scrollToTarget","handlePageAdd","handlePageDuplicate","handlePageRemove","useEffect","behavior","_jsxs","_jsx","margin","position","propTypes","PropTypes","any","func","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListWrapper.js","sources":["../../../../../src/components/Panels/SlidesPanel/ListWrapper.js"],"sourcesContent":["import {\n memo, useCallback, useRef, useState, useMemo, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport PageAdder from '../../Builder/PageAdder';\nimport { getScaleForPageThumbnail, scrollToTarget } from '../../../utils/functions';\nimport { usePageVisibility } from '../../../utils/hooks';\nimport { usePropStore } from '../../../contexts/PropContext';\n\nconst ListWrapper = ({\n component: Component = null,\n onSortEnd = () => {},\n pageGetter = () => {},\n}) => {\n const pageCount = usePropStore(state => state.pages.length);\n const onPageAdd = usePropStore(state => state.onPageAdd);\n const onPageDuplicate = usePropStore(state => state.onPageDuplicate);\n const onPageRemove = usePropStore(state => state.onPageRemove);\n const reportSettings = usePropStore(state => state.settings);\n const onPageVisibilityChanged = usePropStore(state => state.onPageVisibilityChanged);\n\n const listRef = useRef(null);\n const [selectedPageIndex, setSelectedPageIndex] = useState(-1);\n const {\n reportBackgroundColor,\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n } = reportSettings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n const { left, scale, top } = getScaleForPageThumbnail(width, height);\n\n const pageContainerStyles = useMemo(() => ({\n backgroundColor: reportBackgroundColor || '#fff',\n height: height,\n left,\n top,\n transform: `scale(${scale})`,\n transformOrigin: '0 0',\n width: width,\n }), [height, left, scale, top, width, reportBackgroundColor]);\n\n const _onSortEnd = useCallback(({ newIndex, oldIndex }) => {\n if (onSortEnd) {\n onSortEnd({ newIndex, oldIndex }, null, listRef.current);\n }\n }, [onSortEnd]);\n\n const refSetter = useCallback(outerRef => {\n if (outerRef) {\n listRef.current = outerRef;\n }\n }, []);\n\n const handlePageVisibility = useCallback(index => {\n if (index && !Number.isNaN(index)) {\n if (listRef.current?.scrollToIndex) {\n listRef.current.scrollToIndex(index, 'center');\n }\n\n const prevSelectedThumbnail = document.querySelector('.thumbnailWrapper.isSelected');\n if (prevSelectedThumbnail) {\n prevSelectedThumbnail.classList.remove('isSelected');\n }\n\n const nextSelectedThumbnail = document\n .querySelector(`.thumbnailWrapper[data-order=\"${index}\"]`);\n if (nextSelectedThumbnail) {\n nextSelectedThumbnail.classList.add('isSelected');\n onPageVisibilityChanged(index);\n }\n }\n }, [onPageVisibilityChanged]);\n\n usePageVisibility(handlePageVisibility, pageCount, selectedPageIndex);\n\n // TODO: could be better than now. scrollend listener is a choice for some cases\n const resetSelectedPageIndex = useCallback(() => {\n setTimeout(() => {\n setSelectedPageIndex(-1);\n }, 1000);\n }, []);\n\n const onPageClick = useCallback(e => {\n const order = e.target.getAttribute('data-order');\n setSelectedPageIndex(parseInt(order, 10));\n if (!e.target.classList.contains('controllerItem')) { // for page thumbnails actions\n scrollToTarget(`pageActions-id-${order}`);\n }\n resetSelectedPageIndex();\n }, [resetSelectedPageIndex]);\n\n const handlePageAdd = useCallback(index => {\n setSelectedPageIndex(index);\n onPageAdd(index);\n }, [onPageAdd]);\n\n const handlePageDuplicate = useCallback(index => {\n setSelectedPageIndex(index);\n onPageDuplicate(index);\n }, [onPageDuplicate]);\n\n const handlePageRemove = useCallback(index => {\n setSelectedPageIndex(index);\n onPageRemove(index);\n }, [onPageRemove]);\n\n useEffect(() => { // after new page added\n scrollToTarget(`pageActions-id-${selectedPageIndex}`, 0, { behavior: 'smooth' });\n resetSelectedPageIndex();\n }, [resetSelectedPageIndex, selectedPageIndex]);\n\n return (\n <>\n <div\n style={{\n height: '100%', margin: '25px 10px', position: 'relative', width: '100%',\n }}\n >\n <Component\n ref={refSetter}\n height=\"100%\"\n onPageAdd={handlePageAdd}\n onPageClick={onPageClick}\n onPageDuplicate={handlePageDuplicate}\n onPageRemove={handlePageRemove}\n onSortEnd={_onSortEnd}\n pageContainerStyle={pageContainerStyles}\n pageCount={pageCount}\n pageGetter={pageGetter}\n width=\"100%\"\n />\n </div>\n <div className=\"jfReport-pane-footer\">\n <PageAdder additionalClass=\"forOptions\" />\n </div>\n </>\n );\n};\n\nListWrapper.propTypes = {\n component: PropTypes.any,\n onSortEnd: PropTypes.func,\n pageGetter: PropTypes.func,\n};\n\nexport default memo(ListWrapper);\n"],"names":["ListWrapper","component","Component","onSortEnd","pageGetter","pageCount","usePropStore","state","pages","length","onPageAdd","onPageDuplicate","onPageRemove","reportSettings","settings","onPageVisibilityChanged","listRef","useRef","useState","selectedPageIndex","setSelectedPageIndex","reportBackgroundColor","reportLayoutHeight","reportLayoutWidth","width","parseInt","height","getScaleForPageThumbnail","left","scale","top","pageContainerStyles","useMemo","backgroundColor","transform","transformOrigin","_onSortEnd","useCallback","newIndex","oldIndex","current","refSetter","outerRef","handlePageVisibility","index","Number","isNaN","scrollToIndex","prevSelectedThumbnail","document","querySelector","classList","remove","nextSelectedThumbnail","add","usePageVisibility","resetSelectedPageIndex","setTimeout","onPageClick","e","order","target","getAttribute","contains","scrollToTarget","handlePageAdd","handlePageDuplicate","handlePageRemove","useEffect","behavior","_jsxs","_jsx","margin","position","propTypes","PropTypes","any","func","memo"],"mappings":"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"}
|
|
@@ -4,12 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var PropTypes = require('prop-types');
|
|
7
|
+
var isEqual = require('lodash.isequal');
|
|
7
8
|
var zustand = require('zustand');
|
|
8
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
10
|
|
|
10
11
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
12
|
|
|
12
13
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
14
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
13
15
|
|
|
14
16
|
var _excluded = ["children"];
|
|
15
17
|
|
|
@@ -40,6 +42,8 @@ var propStore = function propStore(props) {
|
|
|
40
42
|
onPageDuplicate: props.onPageDuplicate || fn,
|
|
41
43
|
onPageOrdersChange: props.onPageOrdersChange || fn,
|
|
42
44
|
onPageRemove: props.onPageRemove || fn,
|
|
45
|
+
onPageVisibilityChanged: props.onPageVisibilityChanged || fn,
|
|
46
|
+
onSelectedItemsChanged: props.onSelectedItemsChanged || fn,
|
|
43
47
|
onSettingChange: props.onSettingChange || fn,
|
|
44
48
|
pages: props.pages || [],
|
|
45
49
|
setAcceptedItems: function setAcceptedItems(acceptedItems) {
|
|
@@ -87,34 +91,25 @@ var PropProvider = function PropProvider(_ref) {
|
|
|
87
91
|
pages = props.pages,
|
|
88
92
|
settings = props.settings;
|
|
89
93
|
React.useEffect(function () {
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (pages) {
|
|
94
|
-
setPages(pages);
|
|
95
|
-
}
|
|
94
|
+
var state = storeRef.current.getState();
|
|
95
|
+
if (!pages || isEqual__default['default'](state.pages, pages)) return;
|
|
96
|
+
state.setPages(pages);
|
|
96
97
|
}, [pages]);
|
|
97
98
|
React.useEffect(function () {
|
|
98
|
-
var _storeRef$current$
|
|
99
|
-
setItemAccessor = _storeRef$current$
|
|
99
|
+
var _storeRef$current$get = storeRef.current.getState(),
|
|
100
|
+
setItemAccessor = _storeRef$current$get.setItemAccessor;
|
|
100
101
|
|
|
101
102
|
setItemAccessor(itemAccessor);
|
|
102
103
|
}, [itemAccessor]);
|
|
103
104
|
React.useEffect(function () {
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (acceptedItems) {
|
|
108
|
-
setAcceptedItems(acceptedItems);
|
|
109
|
-
}
|
|
105
|
+
var state = storeRef.current.getState();
|
|
106
|
+
if (!acceptedItems || isEqual__default['default'](state.acceptedItems, acceptedItems)) return;
|
|
107
|
+
state.setAcceptedItems(acceptedItems);
|
|
110
108
|
}, [acceptedItems]);
|
|
111
109
|
React.useEffect(function () {
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (settings) {
|
|
116
|
-
setSettings(settings);
|
|
117
|
-
}
|
|
110
|
+
var state = storeRef.current.getState();
|
|
111
|
+
if (!settings || isEqual__default['default'](state.settings, settings)) return;
|
|
112
|
+
state.setSettings(settings);
|
|
118
113
|
}, [settings]);
|
|
119
114
|
return /*#__PURE__*/jsxRuntime.jsx(PropContext.Provider, {
|
|
120
115
|
value: storeRef.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropContext.js","sources":["../../../src/contexts/PropContext.js"],"sourcesContent":["import {\n createContext, useContext, useEffect, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createStore, useStore } from 'zustand';\n\nconst fn = () => {};\n\nconst propStore = props => {\n // eslint-disable-next-line complexity\n return createStore(set => ({\n acceptedItems: props.acceptedItems || {},\n additionalPageItems: props.additionalPageItems || [],\n disableInteraction: props.disableInteraction || [],\n itemAccessor: props.itemAccessor || fn,\n leftPanelConfig: props.leftPanelConfig || [],\n onAnEventTrigger: props.onAnEventTrigger || (() => {}),\n onItemAdd: props.onItemAdd || fn,\n onItemChange: props.onItemChange || fn,\n onItemMove: props.onItemMove || fn,\n onItemRemove: props.onItemRemove || fn,\n onItemResize: props.onItemResize || fn,\n onItemsMove: props.onItemsMove || fn,\n onPageAdd: props.onPageAdd || fn,\n onPageChange: props.onPageChange || fn,\n onPageDuplicate: props.onPageDuplicate || fn,\n onPageOrdersChange: props.onPageOrdersChange || fn,\n onPageRemove: props.onPageRemove || fn,\n onSettingChange: props.onSettingChange || fn,\n pages: props.pages || [],\n setAcceptedItems: acceptedItems => { set({ acceptedItems }); },\n setItemAccessor: itemAccessor => { set({ itemAccessor }); },\n setPages: pages => { set({ pages }); },\n setSettings: settings => { set({ settings }); },\n settings: props.settings || {\n reportLayout: 'A4 Landscape',\n },\n theme: props.theme || 'lightMode',\n useExperimentalFeatures: props.useExperimentalFeatures || false,\n }));\n};\n\nconst PropContext = createContext(null);\n\nexport const PropProvider = ({ children, ...props }) => {\n const storeRef = useRef();\n if (!storeRef.current) {\n storeRef.current = propStore(props);\n }\n\n const {\n acceptedItems, itemAccessor, pages, settings,\n } = props;\n\n useEffect(() => {\n const
|
|
1
|
+
{"version":3,"file":"PropContext.js","sources":["../../../src/contexts/PropContext.js"],"sourcesContent":["import {\n createContext, useContext, useEffect, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash.isequal';\nimport { createStore, useStore } from 'zustand';\n\nconst fn = () => {};\n\nconst propStore = props => {\n // eslint-disable-next-line complexity\n return createStore(set => ({\n acceptedItems: props.acceptedItems || {},\n additionalPageItems: props.additionalPageItems || [],\n disableInteraction: props.disableInteraction || [],\n itemAccessor: props.itemAccessor || fn,\n leftPanelConfig: props.leftPanelConfig || [],\n onAnEventTrigger: props.onAnEventTrigger || (() => {}),\n onItemAdd: props.onItemAdd || fn,\n onItemChange: props.onItemChange || fn,\n onItemMove: props.onItemMove || fn,\n onItemRemove: props.onItemRemove || fn,\n onItemResize: props.onItemResize || fn,\n onItemsMove: props.onItemsMove || fn,\n onPageAdd: props.onPageAdd || fn,\n onPageChange: props.onPageChange || fn,\n onPageDuplicate: props.onPageDuplicate || fn,\n onPageOrdersChange: props.onPageOrdersChange || fn,\n onPageRemove: props.onPageRemove || fn,\n onPageVisibilityChanged: props.onPageVisibilityChanged || fn,\n onSelectedItemsChanged: props.onSelectedItemsChanged || fn,\n onSettingChange: props.onSettingChange || fn,\n pages: props.pages || [],\n setAcceptedItems: acceptedItems => { set({ acceptedItems }); },\n setItemAccessor: itemAccessor => { set({ itemAccessor }); },\n setPages: pages => { set({ pages }); },\n setSettings: settings => { set({ settings }); },\n settings: props.settings || {\n reportLayout: 'A4 Landscape',\n },\n theme: props.theme || 'lightMode',\n useExperimentalFeatures: props.useExperimentalFeatures || false,\n }));\n};\n\nconst PropContext = createContext(null);\n\nexport const PropProvider = ({ children, ...props }) => {\n const storeRef = useRef();\n if (!storeRef.current) {\n storeRef.current = propStore(props);\n }\n\n const {\n acceptedItems, itemAccessor, pages, settings,\n } = props;\n\n useEffect(() => {\n const state = storeRef.current.getState();\n if (!pages || isEqual(state.pages, pages)) return;\n state.setPages(pages);\n }, [pages]);\n\n useEffect(() => {\n const { setItemAccessor } = storeRef.current.getState();\n setItemAccessor(itemAccessor);\n }, [itemAccessor]);\n\n useEffect(() => {\n const state = storeRef.current.getState();\n if (!acceptedItems || isEqual(state.acceptedItems, acceptedItems)) return;\n state.setAcceptedItems(acceptedItems);\n }, [acceptedItems]);\n\n useEffect(() => {\n const state = storeRef.current.getState();\n if (!settings || isEqual(state.settings, settings)) return;\n state.setSettings(settings);\n }, [settings]);\n\n return (\n <PropContext.Provider value={storeRef.current}>\n {children}\n </PropContext.Provider>\n );\n};\n\nPropProvider.propTypes = {\n acceptedItems: PropTypes.shape({}),\n children: PropTypes.any,\n itemAccessor: PropTypes.func,\n pages: PropTypes.arrayOf(PropTypes.object),\n settings: PropTypes.shape({}),\n};\n\nexport const PropConsumer = PropContext.Consumer;\n\nexport const usePropStore = selector => {\n const context = useContext(PropContext);\n if (!context) {\n throw new Error('usePropStore must be used with PropProvider!');\n }\n return useStore(context, selector);\n};\n"],"names":["fn","propStore","props","createStore","set","acceptedItems","additionalPageItems","disableInteraction","itemAccessor","leftPanelConfig","onAnEventTrigger","onItemAdd","onItemChange","onItemMove","onItemRemove","onItemResize","onItemsMove","onPageAdd","onPageChange","onPageDuplicate","onPageOrdersChange","onPageRemove","onPageVisibilityChanged","onSelectedItemsChanged","onSettingChange","pages","setAcceptedItems","setItemAccessor","setPages","setSettings","settings","reportLayout","theme","useExperimentalFeatures","PropContext","createContext","PropProvider","children","storeRef","useRef","current","useEffect","state","getState","isEqual","_jsx","propTypes","PropTypes","shape","any","func","arrayOf","object","Consumer","usePropStore","selector","context","useContext","Error","useStore"],"mappings":"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"}
|
package/lib/cjs/utils/hooks.js
CHANGED
|
@@ -53,6 +53,13 @@ var useEventListener = function useEventListener(eventName, handler) {
|
|
|
53
53
|
};
|
|
54
54
|
}, [eventName, element]);
|
|
55
55
|
};
|
|
56
|
+
var usePrevious = function usePrevious(value) {
|
|
57
|
+
var ref = React.useRef();
|
|
58
|
+
React.useEffect(function () {
|
|
59
|
+
ref.current = value;
|
|
60
|
+
});
|
|
61
|
+
return ref.current;
|
|
62
|
+
};
|
|
56
63
|
var useFitZoom = function useFitZoom() {
|
|
57
64
|
var settings = PropContext.usePropStore(function (state) {
|
|
58
65
|
return state.settings;
|
|
@@ -73,6 +80,7 @@ var useFitZoom = function useFitZoom() {
|
|
|
73
80
|
};
|
|
74
81
|
var usePageVisibility = function usePageVisibility(callback, pageCount, selectedPageIndex) {
|
|
75
82
|
var ratio = React.useRef({});
|
|
83
|
+
var prevVisiblePageIndex = React.useRef(-1);
|
|
76
84
|
var pageRefs = React.useRef([]);
|
|
77
85
|
var observer = React.useMemo(function () {
|
|
78
86
|
return new window.IntersectionObserver(function (entries) {
|
|
@@ -85,13 +93,18 @@ var usePageVisibility = function usePageVisibility(callback, pageCount, selected
|
|
|
85
93
|
delete ratio.current[order];
|
|
86
94
|
}
|
|
87
95
|
});
|
|
88
|
-
|
|
96
|
+
var visiblePageIndex = parseInt(Object.keys(ratio.current).find(function (key) {
|
|
89
97
|
return ratio.current[key] === Math.max.apply(Math, _toConsumableArray(Object.values(ratio.current)));
|
|
90
|
-
}), 10)
|
|
98
|
+
}), 10);
|
|
99
|
+
|
|
100
|
+
if (visiblePageIndex !== prevVisiblePageIndex.current) {
|
|
101
|
+
prevVisiblePageIndex.current = visiblePageIndex;
|
|
102
|
+
callback(visiblePageIndex);
|
|
103
|
+
}
|
|
91
104
|
}, {
|
|
92
105
|
delay: 100,
|
|
93
106
|
root: document.querySelector('.jfReport-viewport'),
|
|
94
|
-
threshold: [0, 0.5, 1]
|
|
107
|
+
threshold: [0, 0.25, 0.5, 0.75, 1]
|
|
95
108
|
});
|
|
96
109
|
}, [callback]);
|
|
97
110
|
React.useEffect(function () {
|
|
@@ -222,6 +235,7 @@ exports.useFitZoom = useFitZoom;
|
|
|
222
235
|
exports.useFullscreenChange = useFullscreenChange;
|
|
223
236
|
exports.usePageTransition = usePageTransition;
|
|
224
237
|
exports.usePageVisibility = usePageVisibility;
|
|
238
|
+
exports.usePrevious = usePrevious;
|
|
225
239
|
exports.useSelectedElements = useSelectedElements;
|
|
226
240
|
exports.useTranslatedTexts = useTranslatedTexts;
|
|
227
241
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../src/utils/hooks.js"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n useMemo,\n useCallback,\n} from 'react';\nimport { getZoomValue } from './functions';\nimport { SharingTextsModule } from '../constants/texts';\nimport { usePropStore } from '../contexts/PropContext';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePresentationStore } from '../contexts/PresentationContext';\n\nexport const useStateWithCallback = (initialState, callback) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => callback(state), [state, callback]);\n\n return [state, setState];\n};\n\nexport const useEventListener = (eventName, handler, element = global) => {\n const savedHandler = useRef();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = event => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element],\n );\n};\n\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const useFitZoom = () => {\n const settings = usePropStore(state => state.settings);\n const setZoom = useBuilderStore(state => state.setZoom);\n\n useEffect(() => {\n const newZoom = getZoomValue({\n limitZoom: true,\n settings: {\n reportLayoutHeight: settings.reportLayoutHeight,\n reportLayoutWidth: settings.reportLayoutWidth,\n },\n });\n setZoom(newZoom, settings.reportLayoutWidth);\n }, [\n settings.reportLayoutHeight,\n settings.reportLayoutWidth,\n setZoom,\n ]);\n};\n\nexport const usePageVisibility = (callback, pageCount, selectedPageIndex) => {\n const ratio = useRef({});\n const pageRefs = useRef([]);\n const observer = useMemo(() => new window.IntersectionObserver(entries => {\n entries.forEach(entry => {\n const order = entry.target.getAttribute('data-order');\n if (entry.intersectionRatio !== 0) {\n ratio.current[order] = entry.intersectionRatio;\n } else {\n delete ratio.current[order];\n }\n });\n callback(parseInt(\n Object.keys(ratio.current)\n .find(key => ratio.current[key] === Math.max(...Object.values(ratio.current))),\n 10,\n ));\n },\n {\n delay: 100,\n root: document.querySelector('.jfReport-viewport'),\n threshold: [0, 0.5, 1],\n }), [callback]);\n\n useEffect(() => {\n ratio.current = {};\n pageRefs.current = document.querySelectorAll('.jfReport-page');\n }, [pageCount]);\n\n useEffect(() => {\n if (selectedPageIndex === -1) {\n pageRefs.current.forEach(page => {\n observer.observe(page);\n });\n }\n\n return () => {\n pageRefs.current.forEach(page => {\n observer.unobserve(page);\n });\n };\n }, [selectedPageIndex, observer]);\n};\n\nexport const useFullscreenChange = (isFullscreen, fitToScreen) => {\n /**\n * All this is just to cover if the user exits fullscreen via ESC key :(\n */\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const setIsFullscreen = usePresentationStore(state => state.setIsFullscreen);\n\n const onFullscreenChange = useCallback(() => {\n if (!(\n document.fullScreen\n || document.mozFullScreen\n || document.webkitIsFullScreen\n )) {\n onAnEventTrigger('clickedFullscreen');\n setIsFullscreen(false);\n fitToScreen(500);\n } else {\n setIsFullscreen(true);\n fitToScreen(600);\n }\n }, [fitToScreen, setIsFullscreen, onAnEventTrigger]);\n\n useEventListener('fullscreenchange', onFullscreenChange);\n useEventListener('webkitfullscreenchange', onFullscreenChange);\n useEventListener('mozfullscreenchange', onFullscreenChange);\n useEventListener('MSFullscreenChange', onFullscreenChange);\n};\n\nexport const useTranslatedTexts = () => {\n return useMemo(() => SharingTextsModule.Texts, []);\n};\n\nexport const useClickOutsideListener = (classes, conditionValue, onClose) => {\n const onClickOutsideForPanel = useCallback(({ target: { classList } }) => {\n const shouldClose = classes.some(c => classList.contains(c));\n if (shouldClose) {\n onClose();\n }\n }, [classes, onClose]);\n\n useEffect(() => {\n if (conditionValue) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => window.removeEventListener('click', onClickOutsideForPanel, false);\n }, [conditionValue, onClickOutsideForPanel]);\n};\n\nexport const usePageTransition = (style, currentPage) => {\n const finalStyle = useMemo(() => {\n switch (style) {\n case 'verticalSlide':\n return { transform: `translateY(-${(currentPage * 100).toString()}%)` };\n case 'scaleAndFade':\n return {};\n case 'rotate':\n return { '-webkit-perspective': 1000 };\n case 'scaleAndSlide':\n case 'horizontalSlide':\n default:\n return { transform: `translateX(-${(currentPage * 100).toString()}%)` };\n }\n }, [style, currentPage]);\n\n return finalStyle;\n};\n\nexport const useSelectedElements = () => {\n const pages = usePropStore(state => state.pages);\n const activeElements = useBuilderStore(state => state.activeElements);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n\n return useMemo(() => {\n if (activeElements.length === 0) return [];\n const items = activeElements.map(itemID => {\n let foundItem = [];\n pages.forEach(page => {\n const item = page.items.find(el => el.id === itemID);\n if (item) {\n foundItem = item;\n }\n });\n const defItem = (acceptedItems[foundItem.itemType] && acceptedItems[foundItem.itemType].defaultItem) || {};\n return { ...defItem, ...foundItem };\n });\n return items;\n }, [pages, activeElements, acceptedItems]);\n};\n"],"names":["useEventListener","eventName","handler","element","global","savedHandler","useRef","useEffect","current","isSupported","addEventListener","eventListener","event","removeEventListener","useFitZoom","settings","usePropStore","state","setZoom","useBuilderStore","newZoom","getZoomValue","limitZoom","reportLayoutHeight","reportLayoutWidth","usePageVisibility","callback","pageCount","selectedPageIndex","ratio","pageRefs","observer","useMemo","window","IntersectionObserver","entries","forEach","entry","order","target","getAttribute","intersectionRatio","parseInt","Object","keys","find","key","Math","max","values","delay","root","document","querySelector","threshold","querySelectorAll","page","observe","unobserve","useFullscreenChange","isFullscreen","fitToScreen","onAnEventTrigger","setIsFullscreen","usePresentationStore","onFullscreenChange","useCallback","fullScreen","mozFullScreen","webkitIsFullScreen","useTranslatedTexts","SharingTextsModule","Texts","useClickOutsideListener","classes","conditionValue","onClose","onClickOutsideForPanel","classList","shouldClose","some","c","contains","usePageTransition","style","currentPage","finalStyle","transform","toString","useSelectedElements","pages","activeElements","acceptedItems","length","items","map","itemID","foundItem","item","el","id","defItem","itemType","defaultItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../src/utils/hooks.js"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n useMemo,\n useCallback,\n} from 'react';\nimport { getZoomValue } from './functions';\nimport { SharingTextsModule } from '../constants/texts';\nimport { usePropStore } from '../contexts/PropContext';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePresentationStore } from '../contexts/PresentationContext';\n\nexport const useStateWithCallback = (initialState, callback) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => callback(state), [state, callback]);\n\n return [state, setState];\n};\n\nexport const useEventListener = (eventName, handler, element = global) => {\n const savedHandler = useRef();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = event => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element],\n );\n};\n\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const useFitZoom = () => {\n const settings = usePropStore(state => state.settings);\n const setZoom = useBuilderStore(state => state.setZoom);\n\n useEffect(() => {\n const newZoom = getZoomValue({\n limitZoom: true,\n settings: {\n reportLayoutHeight: settings.reportLayoutHeight,\n reportLayoutWidth: settings.reportLayoutWidth,\n },\n });\n setZoom(newZoom, settings.reportLayoutWidth);\n }, [\n settings.reportLayoutHeight,\n settings.reportLayoutWidth,\n setZoom,\n ]);\n};\n\nexport const usePageVisibility = (callback, pageCount, selectedPageIndex) => {\n const ratio = useRef({});\n const prevVisiblePageIndex = useRef(-1);\n const pageRefs = useRef([]);\n const observer = useMemo(() => new window.IntersectionObserver(entries => {\n entries.forEach(entry => {\n const order = entry.target.getAttribute('data-order');\n if (entry.intersectionRatio !== 0) {\n ratio.current[order] = entry.intersectionRatio;\n } else {\n delete ratio.current[order];\n }\n });\n const visiblePageIndex = parseInt(\n Object.keys(ratio.current)\n .find(key => ratio.current[key] === Math.max(...Object.values(ratio.current))),\n 10,\n );\n if (visiblePageIndex !== prevVisiblePageIndex.current) {\n prevVisiblePageIndex.current = visiblePageIndex;\n callback(visiblePageIndex);\n }\n },\n {\n delay: 100,\n root: document.querySelector('.jfReport-viewport'),\n threshold: [0, 0.25, 0.5, 0.75, 1],\n }), [callback]);\n\n useEffect(() => {\n ratio.current = {};\n pageRefs.current = document.querySelectorAll('.jfReport-page');\n }, [pageCount]);\n\n useEffect(() => {\n if (selectedPageIndex === -1) {\n pageRefs.current.forEach(page => {\n observer.observe(page);\n });\n }\n\n return () => {\n pageRefs.current.forEach(page => {\n observer.unobserve(page);\n });\n };\n }, [selectedPageIndex, observer]);\n};\n\nexport const useFullscreenChange = (isFullscreen, fitToScreen) => {\n /**\n * All this is just to cover if the user exits fullscreen via ESC key :(\n */\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const setIsFullscreen = usePresentationStore(state => state.setIsFullscreen);\n\n const onFullscreenChange = useCallback(() => {\n if (!(\n document.fullScreen\n || document.mozFullScreen\n || document.webkitIsFullScreen\n )) {\n onAnEventTrigger('clickedFullscreen');\n setIsFullscreen(false);\n fitToScreen(500);\n } else {\n setIsFullscreen(true);\n fitToScreen(600);\n }\n }, [fitToScreen, setIsFullscreen, onAnEventTrigger]);\n\n useEventListener('fullscreenchange', onFullscreenChange);\n useEventListener('webkitfullscreenchange', onFullscreenChange);\n useEventListener('mozfullscreenchange', onFullscreenChange);\n useEventListener('MSFullscreenChange', onFullscreenChange);\n};\n\nexport const useTranslatedTexts = () => {\n return useMemo(() => SharingTextsModule.Texts, []);\n};\n\nexport const useClickOutsideListener = (classes, conditionValue, onClose) => {\n const onClickOutsideForPanel = useCallback(({ target: { classList } }) => {\n const shouldClose = classes.some(c => classList.contains(c));\n if (shouldClose) {\n onClose();\n }\n }, [classes, onClose]);\n\n useEffect(() => {\n if (conditionValue) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => window.removeEventListener('click', onClickOutsideForPanel, false);\n }, [conditionValue, onClickOutsideForPanel]);\n};\n\nexport const usePageTransition = (style, currentPage) => {\n const finalStyle = useMemo(() => {\n switch (style) {\n case 'verticalSlide':\n return { transform: `translateY(-${(currentPage * 100).toString()}%)` };\n case 'scaleAndFade':\n return {};\n case 'rotate':\n return { '-webkit-perspective': 1000 };\n case 'scaleAndSlide':\n case 'horizontalSlide':\n default:\n return { transform: `translateX(-${(currentPage * 100).toString()}%)` };\n }\n }, [style, currentPage]);\n\n return finalStyle;\n};\n\nexport const useSelectedElements = () => {\n const pages = usePropStore(state => state.pages);\n const activeElements = useBuilderStore(state => state.activeElements);\n const acceptedItems = usePropStore(state => state.acceptedItems);\n\n return useMemo(() => {\n if (activeElements.length === 0) return [];\n const items = activeElements.map(itemID => {\n let foundItem = [];\n pages.forEach(page => {\n const item = page.items.find(el => el.id === itemID);\n if (item) {\n foundItem = item;\n }\n });\n const defItem = (acceptedItems[foundItem.itemType] && acceptedItems[foundItem.itemType].defaultItem) || {};\n return { ...defItem, ...foundItem };\n });\n return items;\n }, [pages, activeElements, acceptedItems]);\n};\n"],"names":["useEventListener","eventName","handler","element","global","savedHandler","useRef","useEffect","current","isSupported","addEventListener","eventListener","event","removeEventListener","usePrevious","value","ref","useFitZoom","settings","usePropStore","state","setZoom","useBuilderStore","newZoom","getZoomValue","limitZoom","reportLayoutHeight","reportLayoutWidth","usePageVisibility","callback","pageCount","selectedPageIndex","ratio","prevVisiblePageIndex","pageRefs","observer","useMemo","window","IntersectionObserver","entries","forEach","entry","order","target","getAttribute","intersectionRatio","visiblePageIndex","parseInt","Object","keys","find","key","Math","max","values","delay","root","document","querySelector","threshold","querySelectorAll","page","observe","unobserve","useFullscreenChange","isFullscreen","fitToScreen","onAnEventTrigger","setIsFullscreen","usePresentationStore","onFullscreenChange","useCallback","fullScreen","mozFullScreen","webkitIsFullScreen","useTranslatedTexts","SharingTextsModule","Texts","useClickOutsideListener","classes","conditionValue","onClose","onClickOutsideForPanel","classList","shouldClose","some","c","contains","usePageTransition","style","currentPage","finalStyle","transform","toString","useSelectedElements","pages","activeElements","acceptedItems","length","items","map","itemID","foundItem","item","el","id","defItem","itemType","defaultItem"],"mappings":"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"}
|