@jotforminc/dnd-builder 2.4.6 → 2.5.1

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 CHANGED
@@ -2,6 +2,26 @@
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
+ ### [2.5.1](https://github.com/jotform/dnd-builder/compare/v2.5.0...v2.5.1) (2023-03-01)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **static-scene:** fix transform values for print mode ([931dae7](https://github.com/jotform/dnd-builder/commit/931dae759392d6c700be969ab6f8ae0edfe39816))
11
+
12
+ ## [2.5.0](https://github.com/jotform/dnd-builder/compare/v2.4.6...v2.5.0) (2023-02-28)
13
+
14
+
15
+ ### Features
16
+
17
+ * **static-scene:** zoom-pan-pinch feature is supported now by dnd-builder ([55644e9](https://github.com/jotform/dnd-builder/commit/55644e9aead43ca2655906e0beab984a756b4d28))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **presentation-wrapper:** gesture should work for only fit case ([f1c2cc2](https://github.com/jotform/dnd-builder/commit/f1c2cc2d38a0bfc0352a7ea4f65852ae8e827cf0))
23
+ * **presentation-wrapper:** when isFullScreen is set, fitToScreen should recalculate ([055c746](https://github.com/jotform/dnd-builder/commit/055c74665706742d134bc6a988af282656cea714))
24
+
5
25
  ### [2.4.6](https://github.com/jotform/dnd-builder/compare/v2.4.4...v2.4.6) (2023-02-27)
6
26
 
7
27
  ### [2.4.5](https://github.com/jotform/dnd-builder/compare/v2.4.4...v2.4.5) (2023-02-01)
@@ -43,9 +43,11 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
43
43
 
44
44
  var _usePresentationConte = presentationContext.usePresentationContext(),
45
45
  currentPage = _usePresentationConte.currentPage,
46
+ fittedZoom = _usePresentationConte.fittedZoom,
46
47
  isFullscreen = _usePresentationConte.isFullscreen,
47
48
  pageCount = _usePresentationConte.pageCount,
48
49
  setCurrentPage = _usePresentationConte.setCurrentPage,
50
+ setFittedZoom = _usePresentationConte.setFittedZoom,
49
51
  setIsFullscreen = _usePresentationConte.setIsFullscreen,
50
52
  setShowControlsInFullScreen = _usePresentationConte.setShowControlsInFullScreen,
51
53
  showControlsInFullScreen = _usePresentationConte.showControlsInFullScreen;
@@ -54,11 +56,6 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
54
56
  setZoom = _useBuilderContext.setZoom,
55
57
  zoom = _useBuilderContext.zoom;
56
58
 
57
- var _useState = React.useState(1),
58
- _useState2 = _slicedToArray(_useState, 2),
59
- fittedZoom = _useState2[0],
60
- setFittedZoom = _useState2[1];
61
-
62
59
  var fitToScreen = React.useCallback(function () {
63
60
  var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
64
61
  return setTimeout(function () {
@@ -75,8 +72,8 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
75
72
  }, delay);
76
73
  }, [settings, isFullscreen, useFixedPresentationBar, pageCount]);
77
74
  React.useEffect(function () {
78
- fitToScreen();
79
- }, []);
75
+ fitToScreen(100);
76
+ }, [isFullscreen]);
80
77
  React.useEffect(function () {
81
78
  if (isFullscreen) {
82
79
  setShowControlsInFullScreen(true);
@@ -132,10 +129,13 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
132
129
  event = _ref2.event;
133
130
 
134
131
  event.preventDefault();
135
- var clientWidth = event.target.clientWidth;
136
132
 
137
- if (axis === 'x' && window.innerWidth / 4 < distance && clientWidth * zoom < window.innerWidth) {
138
- return v < 0 ? pageChanger(1)() : pageChanger(-1)();
133
+ if (fittedZoom === zoom) {
134
+ var clientWidth = event.target.clientWidth;
135
+
136
+ if (axis === 'x' && window.innerWidth / 4 < distance && clientWidth * zoom < window.innerWidth) {
137
+ return v < 0 ? pageChanger(1)() : pageChanger(-1)();
138
+ }
139
139
  }
140
140
  } // onPinchEnd: ({ movement: [d] }) => {
141
141
  // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationWrapper.js","sources":["../../../../src/components/Presentation/PresentationWrapper.js"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport classNames from 'classnames';\nimport { useGesture } from 'react-use-gesture';\nimport PresentationBar from './PresentationBar';\nimport ProgressBar from './ProgressBar';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { useEventListener, useFullscreenChange } from '../../utils/hooks';\nimport {\n changePage,\n throttle,\n zoomHandler,\n} from '../../utils/functions';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport { usePropContext } from '../../utils/propContext';\n// import { ZOOM_MIN, ZOOM_MAX } from '../../constants/zoom';\n\nconst PresentationWrapper = ({\n children,\n presentationBarActions,\n useFixedPresentationBar,\n}) => {\n const { onAnEventTrigger, settings } = usePropContext();\n const {\n currentPage,\n isFullscreen,\n pageCount,\n setCurrentPage,\n setIsFullscreen,\n setShowControlsInFullScreen,\n showControlsInFullScreen,\n } = usePresentationContext();\n\n const { setZoom, zoom } = useBuilderContext();\n const [fittedZoom, setFittedZoom] = useState(1);\n\n const fitToScreen = useCallback((delay = 0) => setTimeout(() => {\n const newZoom = zoomHandler({\n handler: setZoom,\n isFullscreen,\n isModeCustomize: false,\n limitZoom: false,\n settings,\n useFixedPresentationBar,\n useProgressBar: pageCount > 2,\n });\n setFittedZoom(newZoom);\n }, delay), [settings, isFullscreen, useFixedPresentationBar, pageCount]);\n\n useEffect(() => { fitToScreen(); }, []);\n\n useEffect(() => {\n if (isFullscreen) {\n setShowControlsInFullScreen(true);\n setTimeout(() => setShowControlsInFullScreen(false), 1500);\n }\n }, [isFullscreen]);\n\n const pageChanger = action => changePage({\n action,\n currentPage,\n pageCount,\n setCurrentPage,\n });\n\n const handleKeyboardEvent = useCallback(e => {\n if (e.keyCode === 39) {\n pageChanger(1)();\n } else if (e.keyCode === 37) {\n pageChanger(-1)();\n }\n });\n\n const setControlVisibility = e => {\n // TODO :: timeout in n out for better ux\n if (!isFullscreen) return;\n if (showControlsInFullScreen && window.innerHeight - e.clientY >= 200) {\n setShowControlsInFullScreen(false);\n } else if (!showControlsInFullScreen && window.innerHeight - e.clientY < 200) {\n setShowControlsInFullScreen(true);\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('mousemove', throttle(setControlVisibility, 150));\n useEventListener('gesturestart', e => e.preventDefault());\n useEventListener('gesturechange', e => e.preventDefault());\n useFullscreenChange(isFullscreen, setIsFullscreen, fitToScreen);\n\n const gesture = useGesture({\n onDragEnd: ({\n axis, direction: [v], distance, event,\n }) => {\n event.preventDefault();\n const { clientWidth } = event.target;\n if (axis === 'x'\n && window.innerWidth / 4 < distance\n && clientWidth * zoom < window.innerWidth) {\n return v < 0 ? pageChanger(1)() : pageChanger(-1)();\n }\n },\n // onPinchEnd: ({ movement: [d] }) => {\n // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));\n // const newZoomValue = Number(((Math.round((zoom + zoomStep) * 10)) / 10).toFixed(2));\n // if (zoom !== newZoomValue && newZoomValue <= ZOOM_MAX) {\n // const minZoom = Math.min(fittedZoom, ZOOM_MIN);\n // setZoom(Math.max(newZoomValue, minZoom));\n // }\n // },\n });\n\n return (\n <>\n <Modal\n appElement={document.getElementById('root')}\n className={classNames('jfPresentation jfFields', { black: isFullscreen })}\n closeTimeoutMS={300}\n contentLabel=\"Report Presentation\"\n id=\"presentationModal\"\n isOpen={true}\n overlayClassName={classNames(\n 'jfPresentation-overlay',\n { fixedPresentationBar: useFixedPresentationBar, isFullscreen },\n )}\n portalClassName=\"PresentationModal\"\n shouldCloseOnEsc={false}\n shouldFocusAfterRender={false}\n >\n {children(currentPage - 1, gesture)}\n <PresentationBar\n currentPage={currentPage}\n fittedZoom={fittedZoom}\n fitToScreen={fitToScreen}\n isFullscreen={isFullscreen}\n isVisible={(!isFullscreen || (isFullscreen && showControlsInFullScreen))}\n onAnEventTrigger={onAnEventTrigger}\n pageCount={pageCount}\n presentationBarActions={presentationBarActions}\n setCurrentPage={setCurrentPage}\n setIsFullscreen={setIsFullscreen}\n settings={settings}\n setZoom={setZoom}\n zoom={zoom}\n />\n <ProgressBar\n currentPage={currentPage}\n pageCount={pageCount}\n />\n </Modal>\n </>\n );\n};\n\nPresentationWrapper.propTypes = {\n children: PropTypes.any,\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n useFixedPresentationBar: PropTypes.bool,\n};\n\nPresentationWrapper.defaultProps = {\n children: () => {},\n presentationBarActions: [],\n useFixedPresentationBar: false,\n};\n\nexport default PresentationWrapper;\n"],"names":["PresentationWrapper","children","presentationBarActions","useFixedPresentationBar","usePropContext","onAnEventTrigger","settings","usePresentationContext","currentPage","isFullscreen","pageCount","setCurrentPage","setIsFullscreen","setShowControlsInFullScreen","showControlsInFullScreen","useBuilderContext","setZoom","zoom","useState","fittedZoom","setFittedZoom","fitToScreen","useCallback","delay","setTimeout","newZoom","zoomHandler","handler","isModeCustomize","limitZoom","useProgressBar","useEffect","pageChanger","action","changePage","handleKeyboardEvent","e","keyCode","setControlVisibility","window","innerHeight","clientY","useEventListener","throttle","preventDefault","useFullscreenChange","gesture","useGesture","onDragEnd","axis","direction","v","distance","event","clientWidth","target","innerWidth","_jsx","_jsxs","Modal","document","getElementById","classNames","black","fixedPresentationBar","propTypes","PropTypes","any","arrayOf","shape","bool","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"PresentationWrapper.js","sources":["../../../../src/components/Presentation/PresentationWrapper.js"],"sourcesContent":["import {\n useCallback,\n useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport classNames from 'classnames';\nimport { useGesture } from 'react-use-gesture';\nimport PresentationBar from './PresentationBar';\nimport ProgressBar from './ProgressBar';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { useEventListener, useFullscreenChange } from '../../utils/hooks';\nimport {\n changePage,\n throttle,\n zoomHandler,\n} from '../../utils/functions';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport { usePropContext } from '../../utils/propContext';\n// import { ZOOM_MIN, ZOOM_MAX } from '../../constants/zoom';\n\nconst PresentationWrapper = ({\n children,\n presentationBarActions,\n useFixedPresentationBar,\n}) => {\n const { onAnEventTrigger, settings } = usePropContext();\n const {\n currentPage,\n fittedZoom,\n isFullscreen,\n pageCount,\n setCurrentPage,\n setFittedZoom,\n setIsFullscreen,\n setShowControlsInFullScreen,\n showControlsInFullScreen,\n } = usePresentationContext();\n\n const { setZoom, zoom } = useBuilderContext();\n\n const fitToScreen = useCallback((delay = 0) => setTimeout(() => {\n const newZoom = zoomHandler({\n handler: setZoom,\n isFullscreen,\n isModeCustomize: false,\n limitZoom: false,\n settings,\n useFixedPresentationBar,\n useProgressBar: pageCount > 2,\n });\n setFittedZoom(newZoom);\n }, delay), [settings, isFullscreen, useFixedPresentationBar, pageCount]);\n\n useEffect(() => { fitToScreen(100); }, [isFullscreen]);\n\n useEffect(() => {\n if (isFullscreen) {\n setShowControlsInFullScreen(true);\n setTimeout(() => setShowControlsInFullScreen(false), 1500);\n }\n }, [isFullscreen]);\n\n const pageChanger = action => changePage({\n action,\n currentPage,\n pageCount,\n setCurrentPage,\n });\n\n const handleKeyboardEvent = useCallback(e => {\n if (e.keyCode === 39) {\n pageChanger(1)();\n } else if (e.keyCode === 37) {\n pageChanger(-1)();\n }\n });\n\n const setControlVisibility = e => {\n // TODO :: timeout in n out for better ux\n if (!isFullscreen) return;\n if (showControlsInFullScreen && window.innerHeight - e.clientY >= 200) {\n setShowControlsInFullScreen(false);\n } else if (!showControlsInFullScreen && window.innerHeight - e.clientY < 200) {\n setShowControlsInFullScreen(true);\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('mousemove', throttle(setControlVisibility, 150));\n useEventListener('gesturestart', e => e.preventDefault());\n useEventListener('gesturechange', e => e.preventDefault());\n useFullscreenChange(isFullscreen, setIsFullscreen, fitToScreen);\n\n const gesture = useGesture({\n onDragEnd: ({\n axis, direction: [v], distance, event,\n }) => {\n event.preventDefault();\n if (fittedZoom === zoom) {\n const { clientWidth } = event.target;\n if (axis === 'x'\n && window.innerWidth / 4 < distance\n && clientWidth * zoom < window.innerWidth) {\n return v < 0 ? pageChanger(1)() : pageChanger(-1)();\n }\n }\n },\n // onPinchEnd: ({ movement: [d] }) => {\n // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));\n // const newZoomValue = Number(((Math.round((zoom + zoomStep) * 10)) / 10).toFixed(2));\n // if (zoom !== newZoomValue && newZoomValue <= ZOOM_MAX) {\n // const minZoom = Math.min(fittedZoom, ZOOM_MIN);\n // setZoom(Math.max(newZoomValue, minZoom));\n // }\n // },\n });\n\n return (\n <>\n <Modal\n appElement={document.getElementById('root')}\n className={classNames('jfPresentation jfFields', { black: isFullscreen })}\n closeTimeoutMS={300}\n contentLabel=\"Report Presentation\"\n id=\"presentationModal\"\n isOpen={true}\n overlayClassName={classNames(\n 'jfPresentation-overlay',\n { fixedPresentationBar: useFixedPresentationBar, isFullscreen },\n )}\n portalClassName=\"PresentationModal\"\n shouldCloseOnEsc={false}\n shouldFocusAfterRender={false}\n >\n {children(currentPage - 1, gesture)}\n <PresentationBar\n currentPage={currentPage}\n fittedZoom={fittedZoom}\n fitToScreen={fitToScreen}\n isFullscreen={isFullscreen}\n isVisible={(!isFullscreen || (isFullscreen && showControlsInFullScreen))}\n onAnEventTrigger={onAnEventTrigger}\n pageCount={pageCount}\n presentationBarActions={presentationBarActions}\n setCurrentPage={setCurrentPage}\n setIsFullscreen={setIsFullscreen}\n settings={settings}\n setZoom={setZoom}\n zoom={zoom}\n />\n <ProgressBar\n currentPage={currentPage}\n pageCount={pageCount}\n />\n </Modal>\n </>\n );\n};\n\nPresentationWrapper.propTypes = {\n children: PropTypes.any,\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n useFixedPresentationBar: PropTypes.bool,\n};\n\nPresentationWrapper.defaultProps = {\n children: () => {},\n presentationBarActions: [],\n useFixedPresentationBar: false,\n};\n\nexport default PresentationWrapper;\n"],"names":["PresentationWrapper","children","presentationBarActions","useFixedPresentationBar","usePropContext","onAnEventTrigger","settings","usePresentationContext","currentPage","fittedZoom","isFullscreen","pageCount","setCurrentPage","setFittedZoom","setIsFullscreen","setShowControlsInFullScreen","showControlsInFullScreen","useBuilderContext","setZoom","zoom","fitToScreen","useCallback","delay","setTimeout","newZoom","zoomHandler","handler","isModeCustomize","limitZoom","useProgressBar","useEffect","pageChanger","action","changePage","handleKeyboardEvent","e","keyCode","setControlVisibility","window","innerHeight","clientY","useEventListener","throttle","preventDefault","useFullscreenChange","gesture","useGesture","onDragEnd","axis","direction","v","distance","event","clientWidth","target","innerWidth","_jsx","_jsxs","Modal","document","getElementById","classNames","black","fixedPresentationBar","propTypes","PropTypes","any","arrayOf","shape","bool","defaultProps"],"mappings":"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"}
@@ -2,11 +2,14 @@
2
2
 
3
3
  require('core-js/modules/es.array.concat.js');
4
4
  require('core-js/modules/es.array.map.js');
5
+ require('core-js/modules/es.array.slice.js');
5
6
  require('core-js/modules/es.number.to-fixed.js');
6
7
  require('core-js/modules/es.object.to-string.js');
7
8
  require('core-js/modules/es.regexp.to-string.js');
8
9
  var React = require('react');
9
10
  var PropTypes = require('prop-types');
11
+ var classNames$1 = require('classnames');
12
+ var reactZoomPanPinch = require('react-zoom-pan-pinch');
10
13
  var classNames = require('../../constants/classNames.js');
11
14
  var StaticPage = require('./StaticPage.js');
12
15
  var propContext = require('../../utils/propContext.js');
@@ -20,6 +23,7 @@ var jsxRuntime = require('react/jsx-runtime');
20
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
24
 
22
25
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
26
+ var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames$1);
23
27
 
24
28
  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; }
25
29
 
@@ -39,6 +43,7 @@ var StaticScene = function StaticScene(_ref) {
39
43
  presentationPage = _ref.presentationPage;
40
44
 
41
45
  var _usePresentationConte = presentationContext.usePresentationContext(),
46
+ fittedZoom = _usePresentationConte.fittedZoom,
42
47
  isFullscreen = _usePresentationConte.isFullscreen,
43
48
  showControlsInFullScreen = _usePresentationConte.showControlsInFullScreen;
44
49
 
@@ -47,19 +52,11 @@ var StaticScene = function StaticScene(_ref) {
47
52
  settings = _usePropContext.settings;
48
53
 
49
54
  var _useBuilderContext = builderContext.useBuilderContext(),
55
+ setZoom = _useBuilderContext.setZoom,
50
56
  zoom = _useBuilderContext.zoom;
51
57
 
52
58
  var viewPortRef = React.useRef({});
53
- var pageStyles = React.useRef({});
54
- var pageContainerStyles = React.useRef({});
55
- var zoomAdjusterStyles = React.useRef({});
56
- zoom = mode === 'print' ? 1 : zoom;
57
- React.useEffect(function () {
58
- if (viewPortRef.current) {
59
- viewPortRef.current.scrollTop = lastScrollPosition;
60
- }
61
- }, []); // set last scroll position after changing mode
62
-
59
+ var transformRefs = React.useRef([]);
63
60
  var reportBackgroundColor = settings.reportBackgroundColor,
64
61
  _settings$reportLayou = settings.reportLayout,
65
62
  reportLayout = _settings$reportLayou === void 0 ? 'A4 Landscape' : _settings$reportLayou,
@@ -71,31 +68,41 @@ var StaticScene = function StaticScene(_ref) {
71
68
  reportPageTransition = _settings$reportPageT === void 0 ? 'noAnimation' : _settings$reportPageT;
72
69
  var width = parseInt(reportLayoutWidth, 10);
73
70
  var height = parseInt(reportLayoutHeight, 10);
74
- pageStyles.current = {
75
- alignItems: 'center',
76
- justifyContent: 'center'
77
- };
78
- pageContainerStyles.current = {
79
- height: height,
80
- transform: "scale(".concat(zoom, ")"),
81
- transformOrigin: '0 0',
82
- width: width
83
- };
84
- zoomAdjusterStyles.current = {
85
- height: parseFloat((height * zoom).toFixed(1)),
86
- margin: '0',
87
- width: parseFloat((width * zoom).toFixed(1))
88
- };
89
-
90
- if (viewPortRef.current.clientWidth < zoomAdjusterStyles.current.width) {
91
- delete pageStyles.current.justifyContent;
92
- }
93
-
94
- if (viewPortRef.current.clientHeight < zoomAdjusterStyles.current.height) {
95
- delete pageStyles.current.alignItems;
96
- }
71
+ React.useEffect(function () {
72
+ if (viewPortRef.current) {
73
+ viewPortRef.current.scrollTop = lastScrollPosition;
74
+ }
75
+ }, []); // set last scroll position after changing mode
97
76
 
77
+ React.useEffect(function () {
78
+ transformRefs.current = transformRefs.current.slice(0, pages.length);
79
+ }, [pages]);
80
+ var pageContainerStyles = React.useMemo(function () {
81
+ return {
82
+ height: height,
83
+ width: width
84
+ };
85
+ }, [width, height]);
98
86
  var transitionStyle = hooks.usePageTransition(reportPageTransition, presentationPage);
87
+ var handleZoom = React.useCallback(function (zoomPanPinch) {
88
+ var fixedValue = parseFloat(zoomPanPinch.state.scale.toFixed(2));
89
+ var roundValue = parseFloat((Math.round(fixedValue * 100) / 100).toFixed(1));
90
+
91
+ if (roundValue <= 2 && roundValue >= 0.5) {
92
+ setZoom(roundValue);
93
+ }
94
+ }, []);
95
+ React.useEffect(function () {
96
+ if (transformRefs.current.length > 0) {
97
+ for (var i = 0; i < pages.length; i++) {
98
+ if (mode !== 'print') {
99
+ transformRefs.current[i].centerView(zoom);
100
+ } else {
101
+ transformRefs.current[i].setTransform(0, 0, 1);
102
+ }
103
+ }
104
+ }
105
+ }, [pages.length, zoom, isFullscreen, mode]);
99
106
  return /*#__PURE__*/jsxRuntime.jsxs("main", {
100
107
  className: classNames.mainWrapper,
101
108
  children: [/*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
@@ -106,25 +113,49 @@ var StaticScene = function StaticScene(_ref) {
106
113
  className: "".concat(classNames.canvas, " ").concat(reportPageTransition),
107
114
  style: transitionStyle,
108
115
  children: pages.map(function (page, index) {
116
+ var _cNames;
117
+
109
118
  var backgroundColor = page.backgroundColor;
110
119
 
111
- var style = _objectSpread(_objectSpread({}, pageContainerStyles.current), {}, {
120
+ var style = _objectSpread(_objectSpread({}, pageContainerStyles), {}, {
112
121
  backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff'
113
122
  });
114
123
 
115
124
  return /*#__PURE__*/jsxRuntime.jsx("div", {
116
- className: "".concat(classNames.page, " ").concat(string.slugify(reportLayout), " ").concat(index === presentationPage ? 'activePage' : ''),
117
- style: pageStyles.current,
118
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
119
- className: "jfReport-zoomAdjuster ".concat(mode !== 'preview' ? 'd-flex' : ''),
120
- style: zoomAdjusterStyles.current,
121
- children: /*#__PURE__*/jsxRuntime.jsx(StaticPage, {
122
- acceptedItems: acceptedItems,
123
- additionalPageItems: additionalPageItems,
124
- hashCode: hashCode,
125
- itemAccessor: itemAccessor,
126
- items: page.items,
127
- style: style
125
+ className: classNames__default['default']((_cNames = {}, _defineProperty(_cNames, classNames.page, true), _defineProperty(_cNames, string.slugify(reportLayout), true), _defineProperty(_cNames, "activePage", index === presentationPage), _cNames)),
126
+ children: /*#__PURE__*/jsxRuntime.jsx(reactZoomPanPinch.TransformWrapper, {
127
+ ref: function ref(element) {
128
+ transformRefs.current[index] = element;
129
+ },
130
+ centerOnInit: true,
131
+ centerZoomedOut: true,
132
+ disablePadding: true,
133
+ doubleClick: {
134
+ step: 0.2
135
+ },
136
+ initialScale: zoom,
137
+ maxScale: 2,
138
+ minScale: 0.5,
139
+ onZoom: handleZoom,
140
+ panning: {
141
+ disabled: zoom <= fittedZoom
142
+ },
143
+ pinch: {
144
+ step: 1
145
+ },
146
+ children: /*#__PURE__*/jsxRuntime.jsx(reactZoomPanPinch.TransformComponent, {
147
+ wrapperStyle: {
148
+ height: '100%',
149
+ width: '100%'
150
+ },
151
+ children: /*#__PURE__*/jsxRuntime.jsx(StaticPage, {
152
+ acceptedItems: acceptedItems,
153
+ additionalPageItems: additionalPageItems,
154
+ hashCode: hashCode,
155
+ itemAccessor: itemAccessor,
156
+ items: page.items,
157
+ style: style
158
+ })
128
159
  })
129
160
  })
130
161
  }, "page_".concat(index.toString()));
@@ -1 +1 @@
1
- {"version":3,"file":"StaticScene.js","sources":["../../../../src/components/Preview/StaticScene.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport * as classNames from '../../constants/classNames';\nimport StaticPage from './StaticPage';\nimport { usePropContext } from '../../utils/propContext';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { slugify } from '../../utils/string';\nimport { usePageTransition } from '../../utils/hooks';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport ZoomControls from '../Builder/ZoomControls';\n\nconst StaticScene = ({\n additionalPageItems,\n gesture,\n hashCode,\n hideZoom,\n itemAccessor,\n lastScrollPosition,\n mode,\n pages,\n presentationPage,\n}) => {\n const { isFullscreen, showControlsInFullScreen } = usePresentationContext();\n const { acceptedItems, settings } = usePropContext();\n let { zoom } = useBuilderContext();\n const viewPortRef = useRef({});\n const pageStyles = useRef({});\n const pageContainerStyles = useRef({});\n const zoomAdjusterStyles = useRef({});\n zoom = mode === 'print' ? 1 : zoom;\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, []); // set last scroll position after changing mode\n\n const {\n reportBackgroundColor,\n reportLayout = 'A4 Landscape',\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n reportPageTransition = 'noAnimation',\n } = settings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n pageStyles.current = {\n alignItems: 'center',\n justifyContent: 'center',\n };\n pageContainerStyles.current = {\n height,\n transform: `scale(${zoom})`,\n transformOrigin: '0 0',\n width,\n };\n zoomAdjusterStyles.current = {\n height: parseFloat((height * zoom).toFixed(1)),\n margin: '0',\n width: parseFloat((width * zoom).toFixed(1)),\n };\n\n if (viewPortRef.current.clientWidth < zoomAdjusterStyles.current.width) {\n delete pageStyles.current.justifyContent;\n }\n\n if (viewPortRef.current.clientHeight < zoomAdjusterStyles.current.height) {\n delete pageStyles.current.alignItems;\n }\n\n const transitionStyle = usePageTransition(reportPageTransition, presentationPage);\n\n return (\n <main\n className={classNames.mainWrapper}\n >\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n {...gesture()}\n >\n <div\n className={`${classNames.canvas} ${reportPageTransition}`}\n style={transitionStyle}\n >\n {pages.map((page, index) => {\n const { backgroundColor } = page;\n const style = {\n ...pageContainerStyles.current,\n backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff',\n };\n return (\n <div\n key={`page_${index.toString()}`}\n className={`${\n classNames.page\n } ${\n slugify(reportLayout)\n } ${\n index === presentationPage ? 'activePage' : ''\n }`}\n style={pageStyles.current}\n >\n <div\n className={`jfReport-zoomAdjuster ${mode !== 'preview' ? 'd-flex' : ''}`}\n style={zoomAdjusterStyles.current}\n >\n <StaticPage\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n items={page.items}\n style={style}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n <ZoomControls\n pages={pages}\n showZoom={(!isFullscreen || (isFullscreen && showControlsInFullScreen)) && !hideZoom}\n />\n </main>\n );\n};\n\nStaticScene.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n gesture: PropTypes.func,\n hashCode: PropTypes.string,\n hideZoom: PropTypes.bool,\n itemAccessor: PropTypes.func,\n lastScrollPosition: PropTypes.number,\n mode: PropTypes.string,\n pages: PropTypes.arrayOf(PropTypes.shape({})),\n presentationPage: PropTypes.number,\n};\n\nStaticScene.defaultProps = {\n additionalPageItems: [],\n gesture: () => {},\n hashCode: '',\n hideZoom: false,\n itemAccessor: () => {},\n lastScrollPosition: 0,\n mode: 'preview',\n pages: [],\n presentationPage: 0,\n};\n\nexport default StaticScene;\n"],"names":["StaticScene","additionalPageItems","gesture","hashCode","hideZoom","itemAccessor","lastScrollPosition","mode","pages","presentationPage","usePresentationContext","isFullscreen","showControlsInFullScreen","usePropContext","acceptedItems","settings","useBuilderContext","zoom","viewPortRef","useRef","pageStyles","pageContainerStyles","zoomAdjusterStyles","useEffect","current","scrollTop","reportBackgroundColor","reportLayout","reportLayoutHeight","reportLayoutWidth","reportPageTransition","width","parseInt","height","alignItems","justifyContent","transform","transformOrigin","parseFloat","toFixed","margin","clientWidth","clientHeight","transitionStyle","usePageTransition","_jsxs","classNames","_jsx","map","page","index","backgroundColor","style","slugify","items","toString","propTypes","PropTypes","arrayOf","node","func","string","bool","number","shape","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"StaticScene.js","sources":["../../../../src/components/Preview/StaticScene.js"],"sourcesContent":["import {\n useCallback, useEffect, useMemo, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport cNames from 'classnames';\nimport { TransformWrapper, TransformComponent } from 'react-zoom-pan-pinch';\nimport * as classNames from '../../constants/classNames';\nimport StaticPage from './StaticPage';\nimport { usePropContext } from '../../utils/propContext';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { slugify } from '../../utils/string';\nimport { usePageTransition } from '../../utils/hooks';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport ZoomControls from '../Builder/ZoomControls';\n\nconst StaticScene = ({\n additionalPageItems,\n gesture,\n hashCode,\n hideZoom,\n itemAccessor,\n lastScrollPosition,\n mode,\n pages,\n presentationPage,\n}) => {\n const { fittedZoom, isFullscreen, showControlsInFullScreen } = usePresentationContext();\n const { acceptedItems, settings } = usePropContext();\n const { setZoom, zoom } = useBuilderContext();\n const viewPortRef = useRef({});\n const transformRefs = useRef([]);\n\n const {\n reportBackgroundColor,\n reportLayout = 'A4 Landscape',\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n reportPageTransition = 'noAnimation',\n } = settings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, []); // set last scroll position after changing mode\n\n useEffect(() => {\n transformRefs.current = transformRefs.current.slice(0, pages.length);\n }, [pages]);\n\n const pageContainerStyles = useMemo(() => ({\n height,\n width,\n }), [width, height]);\n\n const transitionStyle = usePageTransition(reportPageTransition, presentationPage);\n\n const handleZoom = useCallback(zoomPanPinch => {\n const fixedValue = parseFloat(zoomPanPinch.state.scale.toFixed(2));\n const roundValue = parseFloat((Math.round((fixedValue * 100)) / 100).toFixed(1));\n if (roundValue <= 2 && roundValue >= 0.5) {\n setZoom(roundValue);\n }\n }, []);\n\n useEffect(() => {\n if (transformRefs.current.length > 0) {\n for (let i = 0; i < pages.length; i++) {\n if (mode !== 'print') {\n transformRefs.current[i].centerView(zoom);\n } else {\n transformRefs.current[i].setTransform(0, 0, 1);\n }\n }\n }\n }, [pages.length, zoom, isFullscreen, mode]);\n\n return (\n <main\n className={classNames.mainWrapper}\n >\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n {...gesture()}\n >\n <div\n className={`${classNames.canvas} ${reportPageTransition}`}\n style={transitionStyle}\n >\n {pages.map((page, index) => {\n const { backgroundColor } = page;\n const style = {\n ...pageContainerStyles,\n backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff',\n };\n return (\n <div\n key={`page_${index.toString()}`}\n className={cNames({\n [classNames.page]: true,\n [slugify(reportLayout)]: true,\n activePage: index === presentationPage,\n })}\n >\n <TransformWrapper\n ref={element => { transformRefs.current[index] = element; }}\n centerOnInit={true}\n centerZoomedOut={true}\n disablePadding={true}\n doubleClick={{\n step: 0.2,\n }}\n initialScale={zoom}\n maxScale={2}\n minScale={0.5}\n onZoom={handleZoom}\n panning={{\n disabled: zoom <= fittedZoom,\n }}\n pinch={{\n step: 1,\n }}\n >\n <TransformComponent\n wrapperStyle={{ height: '100%', width: '100%' }}\n >\n <StaticPage\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n items={page.items}\n style={style}\n />\n </TransformComponent>\n </TransformWrapper>\n </div>\n );\n })}\n </div>\n </div>\n <ZoomControls\n pages={pages}\n showZoom={(!isFullscreen || (isFullscreen && showControlsInFullScreen)) && !hideZoom}\n />\n </main>\n );\n};\n\nStaticScene.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n gesture: PropTypes.func,\n hashCode: PropTypes.string,\n hideZoom: PropTypes.bool,\n itemAccessor: PropTypes.func,\n lastScrollPosition: PropTypes.number,\n mode: PropTypes.string,\n pages: PropTypes.arrayOf(PropTypes.shape({})),\n presentationPage: PropTypes.number,\n};\n\nStaticScene.defaultProps = {\n additionalPageItems: [],\n gesture: () => {},\n hashCode: '',\n hideZoom: false,\n itemAccessor: () => {},\n lastScrollPosition: 0,\n mode: 'preview',\n pages: [],\n presentationPage: 0,\n};\n\nexport default StaticScene;\n"],"names":["StaticScene","additionalPageItems","gesture","hashCode","hideZoom","itemAccessor","lastScrollPosition","mode","pages","presentationPage","usePresentationContext","fittedZoom","isFullscreen","showControlsInFullScreen","usePropContext","acceptedItems","settings","useBuilderContext","setZoom","zoom","viewPortRef","useRef","transformRefs","reportBackgroundColor","reportLayout","reportLayoutHeight","reportLayoutWidth","reportPageTransition","width","parseInt","height","useEffect","current","scrollTop","slice","length","pageContainerStyles","useMemo","transitionStyle","usePageTransition","handleZoom","useCallback","zoomPanPinch","fixedValue","parseFloat","state","scale","toFixed","roundValue","Math","round","i","centerView","setTransform","_jsxs","classNames","_jsx","map","page","index","backgroundColor","style","cNames","slugify","TransformWrapper","element","step","disabled","TransformComponent","items","toString","propTypes","PropTypes","arrayOf","node","func","string","bool","number","shape","defaultProps"],"mappings":"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"}
@@ -36,6 +36,7 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
36
36
  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; }
37
37
  var PresentationContext = /*#__PURE__*/React.createContext({
38
38
  currentPage: 1,
39
+ fittedZoom: 1,
39
40
  isFullscreen: false,
40
41
  pageCount: 0,
41
42
  showZoomInFullScreen: false
@@ -80,11 +81,18 @@ var PresentationProvider = /*#__PURE__*/function (_React$Component) {
80
81
  });
81
82
  });
82
83
 
84
+ _defineProperty(_assertThisInitialized(_this), "setFittedZoom", function (fittedZoom) {
85
+ _this.setState({
86
+ fittedZoom: fittedZoom
87
+ });
88
+ });
89
+
83
90
  _this.state = {
84
91
  currentPage: props.currentPage,
85
92
  isFullscreen: props.isFullscreen,
86
93
  pageCount: props.pageCount,
87
94
  setCurrentPage: _this.setCurrentPage,
95
+ setFittedZoom: _this.setFittedZoom,
88
96
  setIsFullscreen: _this.setIsFullscreen,
89
97
  setShowControlsInFullScreen: _this.setShowControlsInFullScreen
90
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"presentationContext.js","sources":["../../../src/utils/presentationContext.js"],"sourcesContent":["/* eslint-disable react/no-unused-state */\nimport React, { createContext, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PresentationContext = createContext({\n currentPage: 1,\n isFullscreen: false,\n pageCount: 0,\n showZoomInFullScreen: false,\n});\n\nexport const usePresentationContext = () => {\n const context = useContext(PresentationContext);\n if (!context) {\n throw new Error('PresentationContext must be used with PresentationProvider!');\n }\n return context;\n};\n\nexport class PresentationProvider extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n const updates = {};\n const {\n pageCount,\n } = prevState;\n\n if (nextProps.pageCount !== pageCount) {\n updates.pageCount = nextProps.pageCount;\n }\n\n return updates;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n currentPage: props.currentPage,\n isFullscreen: props.isFullscreen,\n pageCount: props.pageCount,\n setCurrentPage: this.setCurrentPage,\n setIsFullscreen: this.setIsFullscreen,\n setShowControlsInFullScreen: this.setShowControlsInFullScreen,\n };\n }\n\n setCurrentPage = currentPage => {\n this.setState({ currentPage });\n };\n\n setIsFullscreen = isFullscreen => {\n this.setState({ isFullscreen, showControlsInFullScreen: false });\n };\n\n setShowControlsInFullScreen = showControlsInFullScreen => {\n this.setState({ showControlsInFullScreen });\n }\n\n render() {\n const { children } = this.props;\n return (\n <PresentationContext.Provider value={this.state}>\n {children}\n </PresentationContext.Provider>\n );\n }\n}\n\nPresentationProvider.propTypes = {\n children: PropTypes.any,\n currentPage: PropTypes.number,\n isFullscreen: PropTypes.bool,\n pageCount: PropTypes.number,\n};\n\nPresentationProvider.defaultProps = {\n children: null,\n currentPage: 1,\n isFullscreen: false,\n pageCount: 1,\n};\n\nexport const PresentationConsumer = PresentationContext.Consumer;\n"],"names":["PresentationContext","createContext","currentPage","isFullscreen","pageCount","showZoomInFullScreen","usePresentationContext","context","useContext","Error","PresentationProvider","props","setState","showControlsInFullScreen","state","setCurrentPage","setIsFullscreen","setShowControlsInFullScreen","children","_jsx","nextProps","prevState","updates","React","Component","propTypes","PropTypes","any","number","bool","defaultProps","Consumer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,mBAAmB,gBAAGC,mBAAa,CAAC;AAC/CC,EAAAA,WAAW,EAAE,CADkC;AAE/CC,EAAAA,YAAY,EAAE,KAFiC;AAG/CC,EAAAA,SAAS,EAAE,CAHoC;AAI/CC,EAAAA,oBAAoB,EAAE;AAJyB,CAAD;IAOnCC,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAM;AAC1C,MAAMC,OAAO,GAAGC,gBAAU,CAACR,mBAAD,CAA1B;;AACA,MAAI,CAACO,OAAL,EAAc;AACZ,UAAM,IAAIE,KAAJ,CAAU,6DAAV,CAAN;AACD;;AACD,SAAOF,OAAP;AACD;IAEYG,oBAAb;AAAA;;AAAA;;AAcE,gCAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,qEAYF,UAAAT,WAAW,EAAI;AAC9B,YAAKU,QAAL,CAAc;AAAEV,QAAAA,WAAW,EAAXA;AAAF,OAAd;AACD,KAdkB;;AAAA,sEAgBD,UAAAC,YAAY,EAAI;AAChC,YAAKS,QAAL,CAAc;AAAET,QAAAA,YAAY,EAAZA,YAAF;AAAgBU,QAAAA,wBAAwB,EAAE;AAA1C,OAAd;AACD,KAlBkB;;AAAA,kFAoBW,UAAAA,wBAAwB,EAAI;AACxD,YAAKD,QAAL,CAAc;AAAEC,QAAAA,wBAAwB,EAAxBA;AAAF,OAAd;AACD,KAtBkB;;AAEjB,UAAKC,KAAL,GAAa;AACXZ,MAAAA,WAAW,EAAES,KAAK,CAACT,WADR;AAEXC,MAAAA,YAAY,EAAEQ,KAAK,CAACR,YAFT;AAGXC,MAAAA,SAAS,EAAEO,KAAK,CAACP,SAHN;AAIXW,MAAAA,cAAc,EAAE,MAAKA,cAJV;AAKXC,MAAAA,eAAe,EAAE,MAAKA,eALX;AAMXC,MAAAA,2BAA2B,EAAE,MAAKA;AANvB,KAAb;AAFiB;AAUlB;;AAxBH;AAAA;AAAA,WAsCE,kBAAS;AACP,UAAQC,QAAR,GAAqB,KAAKP,KAA1B,CAAQO,QAAR;AACA,0BACEC,eAAC,mBAAD,CAAqB,QAArB;AAA8B,QAAA,KAAK,EAAE,KAAKL,KAA1C;AAAA,kBACGI;AADH,QADF;AAKD;AA7CH;AAAA;AAAA,WACE,kCAAgCE,SAAhC,EAA2CC,SAA3C,EAAsD;AACpD,UAAMC,OAAO,GAAG,EAAhB;AACA,UACElB,SADF,GAEIiB,SAFJ,CACEjB,SADF;;AAIA,UAAIgB,SAAS,CAAChB,SAAV,KAAwBA,SAA5B,EAAuC;AACrCkB,QAAAA,OAAO,CAAClB,SAAR,GAAoBgB,SAAS,CAAChB,SAA9B;AACD;;AAED,aAAOkB,OAAP;AACD;AAZH;;AAAA;AAAA,EAA0CC,yBAAK,CAACC,SAAhD;AAgDAd,oBAAoB,CAACe,SAArB,GAAiC;AAC/BP,EAAAA,QAAQ,EAAEQ,6BAAS,CAACC,GADW;AAE/BzB,EAAAA,WAAW,EAAEwB,6BAAS,CAACE,MAFQ;AAG/BzB,EAAAA,YAAY,EAAEuB,6BAAS,CAACG,IAHO;AAI/BzB,EAAAA,SAAS,EAAEsB,6BAAS,CAACE;AAJU,CAAjC;AAOAlB,oBAAoB,CAACoB,YAArB,GAAoC;AAClCZ,EAAAA,QAAQ,EAAE,IADwB;AAElChB,EAAAA,WAAW,EAAE,CAFqB;AAGlCC,EAAAA,YAAY,EAAE,KAHoB;AAIlCC,EAAAA,SAAS,EAAE;AAJuB,CAApC;AAOoCJ,mBAAmB,CAAC+B;;;;;;"}
1
+ {"version":3,"file":"presentationContext.js","sources":["../../../src/utils/presentationContext.js"],"sourcesContent":["/* eslint-disable react/no-unused-state */\nimport React, { createContext, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PresentationContext = createContext({\n currentPage: 1,\n fittedZoom: 1,\n isFullscreen: false,\n pageCount: 0,\n showZoomInFullScreen: false,\n});\n\nexport const usePresentationContext = () => {\n const context = useContext(PresentationContext);\n if (!context) {\n throw new Error('PresentationContext must be used with PresentationProvider!');\n }\n return context;\n};\n\nexport class PresentationProvider extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n const updates = {};\n const {\n pageCount,\n } = prevState;\n\n if (nextProps.pageCount !== pageCount) {\n updates.pageCount = nextProps.pageCount;\n }\n\n return updates;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n currentPage: props.currentPage,\n isFullscreen: props.isFullscreen,\n pageCount: props.pageCount,\n setCurrentPage: this.setCurrentPage,\n setFittedZoom: this.setFittedZoom,\n setIsFullscreen: this.setIsFullscreen,\n setShowControlsInFullScreen: this.setShowControlsInFullScreen,\n };\n }\n\n setCurrentPage = currentPage => {\n this.setState({ currentPage });\n };\n\n setIsFullscreen = isFullscreen => {\n this.setState({ isFullscreen, showControlsInFullScreen: false });\n };\n\n setShowControlsInFullScreen = showControlsInFullScreen => {\n this.setState({ showControlsInFullScreen });\n }\n\n setFittedZoom = fittedZoom => {\n this.setState({ fittedZoom });\n }\n\n render() {\n const { children } = this.props;\n return (\n <PresentationContext.Provider value={this.state}>\n {children}\n </PresentationContext.Provider>\n );\n }\n}\n\nPresentationProvider.propTypes = {\n children: PropTypes.any,\n currentPage: PropTypes.number,\n isFullscreen: PropTypes.bool,\n pageCount: PropTypes.number,\n};\n\nPresentationProvider.defaultProps = {\n children: null,\n currentPage: 1,\n isFullscreen: false,\n pageCount: 1,\n};\n\nexport const PresentationConsumer = PresentationContext.Consumer;\n"],"names":["PresentationContext","createContext","currentPage","fittedZoom","isFullscreen","pageCount","showZoomInFullScreen","usePresentationContext","context","useContext","Error","PresentationProvider","props","setState","showControlsInFullScreen","state","setCurrentPage","setFittedZoom","setIsFullscreen","setShowControlsInFullScreen","children","_jsx","nextProps","prevState","updates","React","Component","propTypes","PropTypes","any","number","bool","defaultProps","Consumer"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { useState, useCallback, useEffect } from 'react';
1
+ import { useCallback, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Modal from 'react-modal';
4
4
  import classNames from 'classnames';
@@ -35,9 +35,11 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
35
35
 
36
36
  var _usePresentationConte = usePresentationContext(),
37
37
  currentPage = _usePresentationConte.currentPage,
38
+ fittedZoom = _usePresentationConte.fittedZoom,
38
39
  isFullscreen = _usePresentationConte.isFullscreen,
39
40
  pageCount = _usePresentationConte.pageCount,
40
41
  setCurrentPage = _usePresentationConte.setCurrentPage,
42
+ setFittedZoom = _usePresentationConte.setFittedZoom,
41
43
  setIsFullscreen = _usePresentationConte.setIsFullscreen,
42
44
  setShowControlsInFullScreen = _usePresentationConte.setShowControlsInFullScreen,
43
45
  showControlsInFullScreen = _usePresentationConte.showControlsInFullScreen;
@@ -46,11 +48,6 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
46
48
  setZoom = _useBuilderContext.setZoom,
47
49
  zoom = _useBuilderContext.zoom;
48
50
 
49
- var _useState = useState(1),
50
- _useState2 = _slicedToArray(_useState, 2),
51
- fittedZoom = _useState2[0],
52
- setFittedZoom = _useState2[1];
53
-
54
51
  var fitToScreen = useCallback(function () {
55
52
  var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
56
53
  return setTimeout(function () {
@@ -67,8 +64,8 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
67
64
  }, delay);
68
65
  }, [settings, isFullscreen, useFixedPresentationBar, pageCount]);
69
66
  useEffect(function () {
70
- fitToScreen();
71
- }, []);
67
+ fitToScreen(100);
68
+ }, [isFullscreen]);
72
69
  useEffect(function () {
73
70
  if (isFullscreen) {
74
71
  setShowControlsInFullScreen(true);
@@ -124,10 +121,13 @@ var PresentationWrapper = function PresentationWrapper(_ref) {
124
121
  event = _ref2.event;
125
122
 
126
123
  event.preventDefault();
127
- var clientWidth = event.target.clientWidth;
128
124
 
129
- if (axis === 'x' && window.innerWidth / 4 < distance && clientWidth * zoom < window.innerWidth) {
130
- return v < 0 ? pageChanger(1)() : pageChanger(-1)();
125
+ if (fittedZoom === zoom) {
126
+ var clientWidth = event.target.clientWidth;
127
+
128
+ if (axis === 'x' && window.innerWidth / 4 < distance && clientWidth * zoom < window.innerWidth) {
129
+ return v < 0 ? pageChanger(1)() : pageChanger(-1)();
130
+ }
131
131
  }
132
132
  } // onPinchEnd: ({ movement: [d] }) => {
133
133
  // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationWrapper.js","sources":["../../../../src/components/Presentation/PresentationWrapper.js"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport classNames from 'classnames';\nimport { useGesture } from 'react-use-gesture';\nimport PresentationBar from './PresentationBar';\nimport ProgressBar from './ProgressBar';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { useEventListener, useFullscreenChange } from '../../utils/hooks';\nimport {\n changePage,\n throttle,\n zoomHandler,\n} from '../../utils/functions';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport { usePropContext } from '../../utils/propContext';\n// import { ZOOM_MIN, ZOOM_MAX } from '../../constants/zoom';\n\nconst PresentationWrapper = ({\n children,\n presentationBarActions,\n useFixedPresentationBar,\n}) => {\n const { onAnEventTrigger, settings } = usePropContext();\n const {\n currentPage,\n isFullscreen,\n pageCount,\n setCurrentPage,\n setIsFullscreen,\n setShowControlsInFullScreen,\n showControlsInFullScreen,\n } = usePresentationContext();\n\n const { setZoom, zoom } = useBuilderContext();\n const [fittedZoom, setFittedZoom] = useState(1);\n\n const fitToScreen = useCallback((delay = 0) => setTimeout(() => {\n const newZoom = zoomHandler({\n handler: setZoom,\n isFullscreen,\n isModeCustomize: false,\n limitZoom: false,\n settings,\n useFixedPresentationBar,\n useProgressBar: pageCount > 2,\n });\n setFittedZoom(newZoom);\n }, delay), [settings, isFullscreen, useFixedPresentationBar, pageCount]);\n\n useEffect(() => { fitToScreen(); }, []);\n\n useEffect(() => {\n if (isFullscreen) {\n setShowControlsInFullScreen(true);\n setTimeout(() => setShowControlsInFullScreen(false), 1500);\n }\n }, [isFullscreen]);\n\n const pageChanger = action => changePage({\n action,\n currentPage,\n pageCount,\n setCurrentPage,\n });\n\n const handleKeyboardEvent = useCallback(e => {\n if (e.keyCode === 39) {\n pageChanger(1)();\n } else if (e.keyCode === 37) {\n pageChanger(-1)();\n }\n });\n\n const setControlVisibility = e => {\n // TODO :: timeout in n out for better ux\n if (!isFullscreen) return;\n if (showControlsInFullScreen && window.innerHeight - e.clientY >= 200) {\n setShowControlsInFullScreen(false);\n } else if (!showControlsInFullScreen && window.innerHeight - e.clientY < 200) {\n setShowControlsInFullScreen(true);\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('mousemove', throttle(setControlVisibility, 150));\n useEventListener('gesturestart', e => e.preventDefault());\n useEventListener('gesturechange', e => e.preventDefault());\n useFullscreenChange(isFullscreen, setIsFullscreen, fitToScreen);\n\n const gesture = useGesture({\n onDragEnd: ({\n axis, direction: [v], distance, event,\n }) => {\n event.preventDefault();\n const { clientWidth } = event.target;\n if (axis === 'x'\n && window.innerWidth / 4 < distance\n && clientWidth * zoom < window.innerWidth) {\n return v < 0 ? pageChanger(1)() : pageChanger(-1)();\n }\n },\n // onPinchEnd: ({ movement: [d] }) => {\n // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));\n // const newZoomValue = Number(((Math.round((zoom + zoomStep) * 10)) / 10).toFixed(2));\n // if (zoom !== newZoomValue && newZoomValue <= ZOOM_MAX) {\n // const minZoom = Math.min(fittedZoom, ZOOM_MIN);\n // setZoom(Math.max(newZoomValue, minZoom));\n // }\n // },\n });\n\n return (\n <>\n <Modal\n appElement={document.getElementById('root')}\n className={classNames('jfPresentation jfFields', { black: isFullscreen })}\n closeTimeoutMS={300}\n contentLabel=\"Report Presentation\"\n id=\"presentationModal\"\n isOpen={true}\n overlayClassName={classNames(\n 'jfPresentation-overlay',\n { fixedPresentationBar: useFixedPresentationBar, isFullscreen },\n )}\n portalClassName=\"PresentationModal\"\n shouldCloseOnEsc={false}\n shouldFocusAfterRender={false}\n >\n {children(currentPage - 1, gesture)}\n <PresentationBar\n currentPage={currentPage}\n fittedZoom={fittedZoom}\n fitToScreen={fitToScreen}\n isFullscreen={isFullscreen}\n isVisible={(!isFullscreen || (isFullscreen && showControlsInFullScreen))}\n onAnEventTrigger={onAnEventTrigger}\n pageCount={pageCount}\n presentationBarActions={presentationBarActions}\n setCurrentPage={setCurrentPage}\n setIsFullscreen={setIsFullscreen}\n settings={settings}\n setZoom={setZoom}\n zoom={zoom}\n />\n <ProgressBar\n currentPage={currentPage}\n pageCount={pageCount}\n />\n </Modal>\n </>\n );\n};\n\nPresentationWrapper.propTypes = {\n children: PropTypes.any,\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n useFixedPresentationBar: PropTypes.bool,\n};\n\nPresentationWrapper.defaultProps = {\n children: () => {},\n presentationBarActions: [],\n useFixedPresentationBar: false,\n};\n\nexport default PresentationWrapper;\n"],"names":["PresentationWrapper","children","presentationBarActions","useFixedPresentationBar","usePropContext","onAnEventTrigger","settings","usePresentationContext","currentPage","isFullscreen","pageCount","setCurrentPage","setIsFullscreen","setShowControlsInFullScreen","showControlsInFullScreen","useBuilderContext","setZoom","zoom","useState","fittedZoom","setFittedZoom","fitToScreen","useCallback","delay","setTimeout","newZoom","zoomHandler","handler","isModeCustomize","limitZoom","useProgressBar","useEffect","pageChanger","action","changePage","handleKeyboardEvent","e","keyCode","setControlVisibility","window","innerHeight","clientY","useEventListener","throttle","preventDefault","useFullscreenChange","gesture","useGesture","onDragEnd","axis","direction","v","distance","event","clientWidth","target","innerWidth","_jsx","_jsxs","document","getElementById","classNames","black","fixedPresentationBar","propTypes","PropTypes","any","arrayOf","shape","bool","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"PresentationWrapper.js","sources":["../../../../src/components/Presentation/PresentationWrapper.js"],"sourcesContent":["import {\n useCallback,\n useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport classNames from 'classnames';\nimport { useGesture } from 'react-use-gesture';\nimport PresentationBar from './PresentationBar';\nimport ProgressBar from './ProgressBar';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { useEventListener, useFullscreenChange } from '../../utils/hooks';\nimport {\n changePage,\n throttle,\n zoomHandler,\n} from '../../utils/functions';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport { usePropContext } from '../../utils/propContext';\n// import { ZOOM_MIN, ZOOM_MAX } from '../../constants/zoom';\n\nconst PresentationWrapper = ({\n children,\n presentationBarActions,\n useFixedPresentationBar,\n}) => {\n const { onAnEventTrigger, settings } = usePropContext();\n const {\n currentPage,\n fittedZoom,\n isFullscreen,\n pageCount,\n setCurrentPage,\n setFittedZoom,\n setIsFullscreen,\n setShowControlsInFullScreen,\n showControlsInFullScreen,\n } = usePresentationContext();\n\n const { setZoom, zoom } = useBuilderContext();\n\n const fitToScreen = useCallback((delay = 0) => setTimeout(() => {\n const newZoom = zoomHandler({\n handler: setZoom,\n isFullscreen,\n isModeCustomize: false,\n limitZoom: false,\n settings,\n useFixedPresentationBar,\n useProgressBar: pageCount > 2,\n });\n setFittedZoom(newZoom);\n }, delay), [settings, isFullscreen, useFixedPresentationBar, pageCount]);\n\n useEffect(() => { fitToScreen(100); }, [isFullscreen]);\n\n useEffect(() => {\n if (isFullscreen) {\n setShowControlsInFullScreen(true);\n setTimeout(() => setShowControlsInFullScreen(false), 1500);\n }\n }, [isFullscreen]);\n\n const pageChanger = action => changePage({\n action,\n currentPage,\n pageCount,\n setCurrentPage,\n });\n\n const handleKeyboardEvent = useCallback(e => {\n if (e.keyCode === 39) {\n pageChanger(1)();\n } else if (e.keyCode === 37) {\n pageChanger(-1)();\n }\n });\n\n const setControlVisibility = e => {\n // TODO :: timeout in n out for better ux\n if (!isFullscreen) return;\n if (showControlsInFullScreen && window.innerHeight - e.clientY >= 200) {\n setShowControlsInFullScreen(false);\n } else if (!showControlsInFullScreen && window.innerHeight - e.clientY < 200) {\n setShowControlsInFullScreen(true);\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('mousemove', throttle(setControlVisibility, 150));\n useEventListener('gesturestart', e => e.preventDefault());\n useEventListener('gesturechange', e => e.preventDefault());\n useFullscreenChange(isFullscreen, setIsFullscreen, fitToScreen);\n\n const gesture = useGesture({\n onDragEnd: ({\n axis, direction: [v], distance, event,\n }) => {\n event.preventDefault();\n if (fittedZoom === zoom) {\n const { clientWidth } = event.target;\n if (axis === 'x'\n && window.innerWidth / 4 < distance\n && clientWidth * zoom < window.innerWidth) {\n return v < 0 ? pageChanger(1)() : pageChanger(-1)();\n }\n }\n },\n // onPinchEnd: ({ movement: [d] }) => {\n // const zoomStep = Number(parseFloat(d / 1000).toFixed(1));\n // const newZoomValue = Number(((Math.round((zoom + zoomStep) * 10)) / 10).toFixed(2));\n // if (zoom !== newZoomValue && newZoomValue <= ZOOM_MAX) {\n // const minZoom = Math.min(fittedZoom, ZOOM_MIN);\n // setZoom(Math.max(newZoomValue, minZoom));\n // }\n // },\n });\n\n return (\n <>\n <Modal\n appElement={document.getElementById('root')}\n className={classNames('jfPresentation jfFields', { black: isFullscreen })}\n closeTimeoutMS={300}\n contentLabel=\"Report Presentation\"\n id=\"presentationModal\"\n isOpen={true}\n overlayClassName={classNames(\n 'jfPresentation-overlay',\n { fixedPresentationBar: useFixedPresentationBar, isFullscreen },\n )}\n portalClassName=\"PresentationModal\"\n shouldCloseOnEsc={false}\n shouldFocusAfterRender={false}\n >\n {children(currentPage - 1, gesture)}\n <PresentationBar\n currentPage={currentPage}\n fittedZoom={fittedZoom}\n fitToScreen={fitToScreen}\n isFullscreen={isFullscreen}\n isVisible={(!isFullscreen || (isFullscreen && showControlsInFullScreen))}\n onAnEventTrigger={onAnEventTrigger}\n pageCount={pageCount}\n presentationBarActions={presentationBarActions}\n setCurrentPage={setCurrentPage}\n setIsFullscreen={setIsFullscreen}\n settings={settings}\n setZoom={setZoom}\n zoom={zoom}\n />\n <ProgressBar\n currentPage={currentPage}\n pageCount={pageCount}\n />\n </Modal>\n </>\n );\n};\n\nPresentationWrapper.propTypes = {\n children: PropTypes.any,\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n useFixedPresentationBar: PropTypes.bool,\n};\n\nPresentationWrapper.defaultProps = {\n children: () => {},\n presentationBarActions: [],\n useFixedPresentationBar: false,\n};\n\nexport default PresentationWrapper;\n"],"names":["PresentationWrapper","children","presentationBarActions","useFixedPresentationBar","usePropContext","onAnEventTrigger","settings","usePresentationContext","currentPage","fittedZoom","isFullscreen","pageCount","setCurrentPage","setFittedZoom","setIsFullscreen","setShowControlsInFullScreen","showControlsInFullScreen","useBuilderContext","setZoom","zoom","fitToScreen","useCallback","delay","setTimeout","newZoom","zoomHandler","handler","isModeCustomize","limitZoom","useProgressBar","useEffect","pageChanger","action","changePage","handleKeyboardEvent","e","keyCode","setControlVisibility","window","innerHeight","clientY","useEventListener","throttle","preventDefault","useFullscreenChange","gesture","useGesture","onDragEnd","axis","direction","v","distance","event","clientWidth","target","innerWidth","_jsx","_jsxs","document","getElementById","classNames","black","fixedPresentationBar","propTypes","PropTypes","any","arrayOf","shape","bool","defaultProps"],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import 'core-js/modules/es.array.concat.js';
2
2
  import 'core-js/modules/es.array.map.js';
3
+ import 'core-js/modules/es.array.slice.js';
3
4
  import 'core-js/modules/es.number.to-fixed.js';
4
5
  import 'core-js/modules/es.object.to-string.js';
5
6
  import 'core-js/modules/es.regexp.to-string.js';
6
- import { useRef, useEffect } from 'react';
7
+ import { useRef, useEffect, useMemo, useCallback } from 'react';
7
8
  import PropTypes from 'prop-types';
8
- import { mainWrapper, canvas, page, viewport } from '../../constants/classNames.js';
9
+ import classNames from 'classnames';
10
+ import { TransformWrapper, TransformComponent } from 'react-zoom-pan-pinch';
11
+ import { mainWrapper, canvas, viewport, page } from '../../constants/classNames.js';
9
12
  import StaticPage from './StaticPage.js';
10
13
  import { usePropContext } from '../../utils/propContext.js';
11
14
  import { useBuilderContext } from '../../utils/builderContext.js';
@@ -33,6 +36,7 @@ var StaticScene = function StaticScene(_ref) {
33
36
  presentationPage = _ref.presentationPage;
34
37
 
35
38
  var _usePresentationConte = usePresentationContext(),
39
+ fittedZoom = _usePresentationConte.fittedZoom,
36
40
  isFullscreen = _usePresentationConte.isFullscreen,
37
41
  showControlsInFullScreen = _usePresentationConte.showControlsInFullScreen;
38
42
 
@@ -41,19 +45,11 @@ var StaticScene = function StaticScene(_ref) {
41
45
  settings = _usePropContext.settings;
42
46
 
43
47
  var _useBuilderContext = useBuilderContext(),
48
+ setZoom = _useBuilderContext.setZoom,
44
49
  zoom = _useBuilderContext.zoom;
45
50
 
46
51
  var viewPortRef = useRef({});
47
- var pageStyles = useRef({});
48
- var pageContainerStyles = useRef({});
49
- var zoomAdjusterStyles = useRef({});
50
- zoom = mode === 'print' ? 1 : zoom;
51
- useEffect(function () {
52
- if (viewPortRef.current) {
53
- viewPortRef.current.scrollTop = lastScrollPosition;
54
- }
55
- }, []); // set last scroll position after changing mode
56
-
52
+ var transformRefs = useRef([]);
57
53
  var reportBackgroundColor = settings.reportBackgroundColor,
58
54
  _settings$reportLayou = settings.reportLayout,
59
55
  reportLayout = _settings$reportLayou === void 0 ? 'A4 Landscape' : _settings$reportLayou,
@@ -65,31 +61,41 @@ var StaticScene = function StaticScene(_ref) {
65
61
  reportPageTransition = _settings$reportPageT === void 0 ? 'noAnimation' : _settings$reportPageT;
66
62
  var width = parseInt(reportLayoutWidth, 10);
67
63
  var height = parseInt(reportLayoutHeight, 10);
68
- pageStyles.current = {
69
- alignItems: 'center',
70
- justifyContent: 'center'
71
- };
72
- pageContainerStyles.current = {
73
- height: height,
74
- transform: "scale(".concat(zoom, ")"),
75
- transformOrigin: '0 0',
76
- width: width
77
- };
78
- zoomAdjusterStyles.current = {
79
- height: parseFloat((height * zoom).toFixed(1)),
80
- margin: '0',
81
- width: parseFloat((width * zoom).toFixed(1))
82
- };
83
-
84
- if (viewPortRef.current.clientWidth < zoomAdjusterStyles.current.width) {
85
- delete pageStyles.current.justifyContent;
86
- }
87
-
88
- if (viewPortRef.current.clientHeight < zoomAdjusterStyles.current.height) {
89
- delete pageStyles.current.alignItems;
90
- }
64
+ useEffect(function () {
65
+ if (viewPortRef.current) {
66
+ viewPortRef.current.scrollTop = lastScrollPosition;
67
+ }
68
+ }, []); // set last scroll position after changing mode
91
69
 
70
+ useEffect(function () {
71
+ transformRefs.current = transformRefs.current.slice(0, pages.length);
72
+ }, [pages]);
73
+ var pageContainerStyles = useMemo(function () {
74
+ return {
75
+ height: height,
76
+ width: width
77
+ };
78
+ }, [width, height]);
92
79
  var transitionStyle = usePageTransition(reportPageTransition, presentationPage);
80
+ var handleZoom = useCallback(function (zoomPanPinch) {
81
+ var fixedValue = parseFloat(zoomPanPinch.state.scale.toFixed(2));
82
+ var roundValue = parseFloat((Math.round(fixedValue * 100) / 100).toFixed(1));
83
+
84
+ if (roundValue <= 2 && roundValue >= 0.5) {
85
+ setZoom(roundValue);
86
+ }
87
+ }, []);
88
+ useEffect(function () {
89
+ if (transformRefs.current.length > 0) {
90
+ for (var i = 0; i < pages.length; i++) {
91
+ if (mode !== 'print') {
92
+ transformRefs.current[i].centerView(zoom);
93
+ } else {
94
+ transformRefs.current[i].setTransform(0, 0, 1);
95
+ }
96
+ }
97
+ }
98
+ }, [pages.length, zoom, isFullscreen, mode]);
93
99
  return /*#__PURE__*/jsxs("main", {
94
100
  className: mainWrapper,
95
101
  children: [/*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
@@ -100,25 +106,49 @@ var StaticScene = function StaticScene(_ref) {
100
106
  className: "".concat(canvas, " ").concat(reportPageTransition),
101
107
  style: transitionStyle,
102
108
  children: pages.map(function (page$1, index) {
109
+ var _cNames;
110
+
103
111
  var backgroundColor = page$1.backgroundColor;
104
112
 
105
- var style = _objectSpread(_objectSpread({}, pageContainerStyles.current), {}, {
113
+ var style = _objectSpread(_objectSpread({}, pageContainerStyles), {}, {
106
114
  backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff'
107
115
  });
108
116
 
109
117
  return /*#__PURE__*/jsx("div", {
110
- className: "".concat(page, " ").concat(slugify(reportLayout), " ").concat(index === presentationPage ? 'activePage' : ''),
111
- style: pageStyles.current,
112
- children: /*#__PURE__*/jsx("div", {
113
- className: "jfReport-zoomAdjuster ".concat(mode !== 'preview' ? 'd-flex' : ''),
114
- style: zoomAdjusterStyles.current,
115
- children: /*#__PURE__*/jsx(StaticPage, {
116
- acceptedItems: acceptedItems,
117
- additionalPageItems: additionalPageItems,
118
- hashCode: hashCode,
119
- itemAccessor: itemAccessor,
120
- items: page$1.items,
121
- style: style
118
+ className: classNames((_cNames = {}, _defineProperty(_cNames, page, true), _defineProperty(_cNames, slugify(reportLayout), true), _defineProperty(_cNames, "activePage", index === presentationPage), _cNames)),
119
+ children: /*#__PURE__*/jsx(TransformWrapper, {
120
+ ref: function ref(element) {
121
+ transformRefs.current[index] = element;
122
+ },
123
+ centerOnInit: true,
124
+ centerZoomedOut: true,
125
+ disablePadding: true,
126
+ doubleClick: {
127
+ step: 0.2
128
+ },
129
+ initialScale: zoom,
130
+ maxScale: 2,
131
+ minScale: 0.5,
132
+ onZoom: handleZoom,
133
+ panning: {
134
+ disabled: zoom <= fittedZoom
135
+ },
136
+ pinch: {
137
+ step: 1
138
+ },
139
+ children: /*#__PURE__*/jsx(TransformComponent, {
140
+ wrapperStyle: {
141
+ height: '100%',
142
+ width: '100%'
143
+ },
144
+ children: /*#__PURE__*/jsx(StaticPage, {
145
+ acceptedItems: acceptedItems,
146
+ additionalPageItems: additionalPageItems,
147
+ hashCode: hashCode,
148
+ itemAccessor: itemAccessor,
149
+ items: page$1.items,
150
+ style: style
151
+ })
122
152
  })
123
153
  })
124
154
  }, "page_".concat(index.toString()));
@@ -1 +1 @@
1
- {"version":3,"file":"StaticScene.js","sources":["../../../../src/components/Preview/StaticScene.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport * as classNames from '../../constants/classNames';\nimport StaticPage from './StaticPage';\nimport { usePropContext } from '../../utils/propContext';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { slugify } from '../../utils/string';\nimport { usePageTransition } from '../../utils/hooks';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport ZoomControls from '../Builder/ZoomControls';\n\nconst StaticScene = ({\n additionalPageItems,\n gesture,\n hashCode,\n hideZoom,\n itemAccessor,\n lastScrollPosition,\n mode,\n pages,\n presentationPage,\n}) => {\n const { isFullscreen, showControlsInFullScreen } = usePresentationContext();\n const { acceptedItems, settings } = usePropContext();\n let { zoom } = useBuilderContext();\n const viewPortRef = useRef({});\n const pageStyles = useRef({});\n const pageContainerStyles = useRef({});\n const zoomAdjusterStyles = useRef({});\n zoom = mode === 'print' ? 1 : zoom;\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, []); // set last scroll position after changing mode\n\n const {\n reportBackgroundColor,\n reportLayout = 'A4 Landscape',\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n reportPageTransition = 'noAnimation',\n } = settings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n pageStyles.current = {\n alignItems: 'center',\n justifyContent: 'center',\n };\n pageContainerStyles.current = {\n height,\n transform: `scale(${zoom})`,\n transformOrigin: '0 0',\n width,\n };\n zoomAdjusterStyles.current = {\n height: parseFloat((height * zoom).toFixed(1)),\n margin: '0',\n width: parseFloat((width * zoom).toFixed(1)),\n };\n\n if (viewPortRef.current.clientWidth < zoomAdjusterStyles.current.width) {\n delete pageStyles.current.justifyContent;\n }\n\n if (viewPortRef.current.clientHeight < zoomAdjusterStyles.current.height) {\n delete pageStyles.current.alignItems;\n }\n\n const transitionStyle = usePageTransition(reportPageTransition, presentationPage);\n\n return (\n <main\n className={classNames.mainWrapper}\n >\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n {...gesture()}\n >\n <div\n className={`${classNames.canvas} ${reportPageTransition}`}\n style={transitionStyle}\n >\n {pages.map((page, index) => {\n const { backgroundColor } = page;\n const style = {\n ...pageContainerStyles.current,\n backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff',\n };\n return (\n <div\n key={`page_${index.toString()}`}\n className={`${\n classNames.page\n } ${\n slugify(reportLayout)\n } ${\n index === presentationPage ? 'activePage' : ''\n }`}\n style={pageStyles.current}\n >\n <div\n className={`jfReport-zoomAdjuster ${mode !== 'preview' ? 'd-flex' : ''}`}\n style={zoomAdjusterStyles.current}\n >\n <StaticPage\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n items={page.items}\n style={style}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n <ZoomControls\n pages={pages}\n showZoom={(!isFullscreen || (isFullscreen && showControlsInFullScreen)) && !hideZoom}\n />\n </main>\n );\n};\n\nStaticScene.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n gesture: PropTypes.func,\n hashCode: PropTypes.string,\n hideZoom: PropTypes.bool,\n itemAccessor: PropTypes.func,\n lastScrollPosition: PropTypes.number,\n mode: PropTypes.string,\n pages: PropTypes.arrayOf(PropTypes.shape({})),\n presentationPage: PropTypes.number,\n};\n\nStaticScene.defaultProps = {\n additionalPageItems: [],\n gesture: () => {},\n hashCode: '',\n hideZoom: false,\n itemAccessor: () => {},\n lastScrollPosition: 0,\n mode: 'preview',\n pages: [],\n presentationPage: 0,\n};\n\nexport default StaticScene;\n"],"names":["StaticScene","additionalPageItems","gesture","hashCode","hideZoom","itemAccessor","lastScrollPosition","mode","pages","presentationPage","usePresentationContext","isFullscreen","showControlsInFullScreen","usePropContext","acceptedItems","settings","useBuilderContext","zoom","viewPortRef","useRef","pageStyles","pageContainerStyles","zoomAdjusterStyles","useEffect","current","scrollTop","reportBackgroundColor","reportLayout","reportLayoutHeight","reportLayoutWidth","reportPageTransition","width","parseInt","height","alignItems","justifyContent","transform","transformOrigin","parseFloat","toFixed","margin","clientWidth","clientHeight","transitionStyle","usePageTransition","_jsxs","classNames","_jsx","map","page","index","backgroundColor","style","slugify","items","toString","propTypes","PropTypes","arrayOf","node","func","string","bool","number","shape","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;IAWMA,WAAW,GAAG,SAAdA,WAAc,OAUd;AAAA,MATJC,mBASI,QATJA,mBASI;AAAA,MARJC,OAQI,QARJA,OAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,QAMI,QANJA,QAMI;AAAA,MALJC,YAKI,QALJA,YAKI;AAAA,MAJJC,kBAII,QAJJA,kBAII;AAAA,MAHJC,IAGI,QAHJA,IAGI;AAAA,MAFJC,KAEI,QAFJA,KAEI;AAAA,MADJC,gBACI,QADJA,gBACI;;AACJ,8BAAmDC,sBAAsB,EAAzE;AAAA,MAAQC,YAAR,yBAAQA,YAAR;AAAA,MAAsBC,wBAAtB,yBAAsBA,wBAAtB;;AACA,wBAAoCC,cAAc,EAAlD;AAAA,MAAQC,aAAR,mBAAQA,aAAR;AAAA,MAAuBC,QAAvB,mBAAuBA,QAAvB;;AACA,2BAAeC,iBAAiB,EAAhC;AAAA,MAAMC,IAAN,sBAAMA,IAAN;;AACA,MAAMC,WAAW,GAAGC,MAAM,CAAC,EAAD,CAA1B;AACA,MAAMC,UAAU,GAAGD,MAAM,CAAC,EAAD,CAAzB;AACA,MAAME,mBAAmB,GAAGF,MAAM,CAAC,EAAD,CAAlC;AACA,MAAMG,kBAAkB,GAAGH,MAAM,CAAC,EAAD,CAAjC;AACAF,EAAAA,IAAI,GAAGV,IAAI,KAAK,OAAT,GAAmB,CAAnB,GAAuBU,IAA9B;AACAM,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIL,WAAW,CAACM,OAAhB,EAAyB;AACvBN,MAAAA,WAAW,CAACM,OAAZ,CAAoBC,SAApB,GAAgCnB,kBAAhC;AACD;AACF,GAJQ,EAIN,EAJM,CAAT,CATI;;AAeJ,MACEoB,qBADF,GAMIX,QANJ,CACEW,qBADF;AAAA,8BAMIX,QANJ,CAEEY,YAFF;AAAA,MAEEA,YAFF,sCAEiB,cAFjB;AAAA,+BAMIZ,QANJ,CAGEa,kBAHF;AAAA,MAGEA,kBAHF,uCAGuB,GAHvB;AAAA,+BAMIb,QANJ,CAIEc,iBAJF;AAAA,MAIEA,iBAJF,uCAIsB,IAJtB;AAAA,8BAMId,QANJ,CAKEe,oBALF;AAAA,MAKEA,oBALF,sCAKyB,aALzB;AAOA,MAAMC,KAAK,GAAGC,QAAQ,CAACH,iBAAD,EAAoB,EAApB,CAAtB;AACA,MAAMI,MAAM,GAAGD,QAAQ,CAACJ,kBAAD,EAAqB,EAArB,CAAvB;AACAR,EAAAA,UAAU,CAACI,OAAX,GAAqB;AACnBU,IAAAA,UAAU,EAAE,QADO;AAEnBC,IAAAA,cAAc,EAAE;AAFG,GAArB;AAIAd,EAAAA,mBAAmB,CAACG,OAApB,GAA8B;AAC5BS,IAAAA,MAAM,EAANA,MAD4B;AAE5BG,IAAAA,SAAS,kBAAWnB,IAAX,MAFmB;AAG5BoB,IAAAA,eAAe,EAAE,KAHW;AAI5BN,IAAAA,KAAK,EAALA;AAJ4B,GAA9B;AAMAT,EAAAA,kBAAkB,CAACE,OAAnB,GAA6B;AAC3BS,IAAAA,MAAM,EAAEK,UAAU,CAAC,CAACL,MAAM,GAAGhB,IAAV,EAAgBsB,OAAhB,CAAwB,CAAxB,CAAD,CADS;AAE3BC,IAAAA,MAAM,EAAE,GAFmB;AAG3BT,IAAAA,KAAK,EAAEO,UAAU,CAAC,CAACP,KAAK,GAAGd,IAAT,EAAesB,OAAf,CAAuB,CAAvB,CAAD;AAHU,GAA7B;;AAMA,MAAIrB,WAAW,CAACM,OAAZ,CAAoBiB,WAApB,GAAkCnB,kBAAkB,CAACE,OAAnB,CAA2BO,KAAjE,EAAwE;AACtE,WAAOX,UAAU,CAACI,OAAX,CAAmBW,cAA1B;AACD;;AAED,MAAIjB,WAAW,CAACM,OAAZ,CAAoBkB,YAApB,GAAmCpB,kBAAkB,CAACE,OAAnB,CAA2BS,MAAlE,EAA0E;AACxE,WAAOb,UAAU,CAACI,OAAX,CAAmBU,UAA1B;AACD;;AAED,MAAMS,eAAe,GAAGC,iBAAiB,CAACd,oBAAD,EAAuBrB,gBAAvB,CAAzC;AAEA,sBACEoC;AACE,IAAA,SAAS,EAAEC,WADb;AAAA,4BAGEC;AACE,MAAA,GAAG,EAAE7B,WADP;AAEE,MAAA,SAAS,EAAE4B;AAFb,OAGM5C,OAAO,EAHb;AAAA,6BAKE6C;AACE,QAAA,SAAS,YAAKD,MAAL,cAA0BhB,oBAA1B,CADX;AAEE,QAAA,KAAK,EAAEa,eAFT;AAAA,kBAIGnC,KAAK,CAACwC,GAAN,CAAU,UAACC,MAAD,EAAOC,KAAP,EAAiB;AAC1B,cAAQC,eAAR,GAA4BF,MAA5B,CAAQE,eAAR;;AACA,cAAMC,KAAK,mCACN/B,mBAAmB,CAACG,OADd;AAET2B,YAAAA,eAAe,EAAEA,eAAe,GAAGA,eAAH,GAAqBzB,qBAAqB,IAAI;AAFrE,YAAX;;AAIA,8BACEqB;AAEE,YAAA,SAAS,YACPD,IADO,cAGPO,OAAO,CAAC1B,YAAD,CAHA,cAKPuB,KAAK,KAAKzC,gBAAV,GAA6B,YAA7B,GAA4C,EALrC,CAFX;AASE,YAAA,KAAK,EAAEW,UAAU,CAACI,OATpB;AAAA,mCAWEuB;AACE,cAAA,SAAS,kCAA2BxC,IAAI,KAAK,SAAT,GAAqB,QAArB,GAAgC,EAA3D,CADX;AAEE,cAAA,KAAK,EAAEe,kBAAkB,CAACE,OAF5B;AAAA,qCAIEuB,IAAC,UAAD;AACE,gBAAA,aAAa,EAAEjC,aADjB;AAEE,gBAAA,mBAAmB,EAAEb,mBAFvB;AAGE,gBAAA,QAAQ,EAAEE,QAHZ;AAIE,gBAAA,YAAY,EAAEE,YAJhB;AAKE,gBAAA,KAAK,EAAE4C,MAAI,CAACK,KALd;AAME,gBAAA,KAAK,EAAEF;AANT;AAJF;AAXF,4BACeF,KAAK,CAACK,QAAN,EADf,EADF;AA2BD,SAjCA;AAJH;AALF,OAHF,eAgDER,IAAC,YAAD;AACE,MAAA,KAAK,EAAEvC,KADT;AAEE,MAAA,QAAQ,EAAE,CAAC,CAACG,YAAD,IAAkBA,YAAY,IAAIC,wBAAnC,KAAiE,CAACR;AAF9E,MAhDF;AAAA,IADF;AAuDD;;AAEDJ,WAAW,CAACwD,SAAZ,GAAwB;AACtBvD,EAAAA,mBAAmB,EAAEwD,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,IAA5B,CADC;AAEtBzD,EAAAA,OAAO,EAAEuD,SAAS,CAACG,IAFG;AAGtBzD,EAAAA,QAAQ,EAAEsD,SAAS,CAACI,MAHE;AAItBzD,EAAAA,QAAQ,EAAEqD,SAAS,CAACK,IAJE;AAKtBzD,EAAAA,YAAY,EAAEoD,SAAS,CAACG,IALF;AAMtBtD,EAAAA,kBAAkB,EAAEmD,SAAS,CAACM,MANR;AAOtBxD,EAAAA,IAAI,EAAEkD,SAAS,CAACI,MAPM;AAQtBrD,EAAAA,KAAK,EAAEiD,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACO,KAAV,CAAgB,EAAhB,CAAlB,CARe;AAStBvD,EAAAA,gBAAgB,EAAEgD,SAAS,CAACM;AATN,CAAxB;AAYA/D,WAAW,CAACiE,YAAZ,GAA2B;AACzBhE,EAAAA,mBAAmB,EAAE,EADI;AAEzBC,EAAAA,OAAO,EAAE,mBAAM,EAFU;AAGzBC,EAAAA,QAAQ,EAAE,EAHe;AAIzBC,EAAAA,QAAQ,EAAE,KAJe;AAKzBC,EAAAA,YAAY,EAAE,wBAAM,EALK;AAMzBC,EAAAA,kBAAkB,EAAE,CANK;AAOzBC,EAAAA,IAAI,EAAE,SAPmB;AAQzBC,EAAAA,KAAK,EAAE,EARkB;AASzBC,EAAAA,gBAAgB,EAAE;AATO,CAA3B;;;;"}
1
+ {"version":3,"file":"StaticScene.js","sources":["../../../../src/components/Preview/StaticScene.js"],"sourcesContent":["import {\n useCallback, useEffect, useMemo, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport cNames from 'classnames';\nimport { TransformWrapper, TransformComponent } from 'react-zoom-pan-pinch';\nimport * as classNames from '../../constants/classNames';\nimport StaticPage from './StaticPage';\nimport { usePropContext } from '../../utils/propContext';\nimport { useBuilderContext } from '../../utils/builderContext';\nimport { slugify } from '../../utils/string';\nimport { usePageTransition } from '../../utils/hooks';\nimport { usePresentationContext } from '../../utils/presentationContext';\nimport ZoomControls from '../Builder/ZoomControls';\n\nconst StaticScene = ({\n additionalPageItems,\n gesture,\n hashCode,\n hideZoom,\n itemAccessor,\n lastScrollPosition,\n mode,\n pages,\n presentationPage,\n}) => {\n const { fittedZoom, isFullscreen, showControlsInFullScreen } = usePresentationContext();\n const { acceptedItems, settings } = usePropContext();\n const { setZoom, zoom } = useBuilderContext();\n const viewPortRef = useRef({});\n const transformRefs = useRef([]);\n\n const {\n reportBackgroundColor,\n reportLayout = 'A4 Landscape',\n reportLayoutHeight = 794,\n reportLayoutWidth = 1123,\n reportPageTransition = 'noAnimation',\n } = settings;\n const width = parseInt(reportLayoutWidth, 10);\n const height = parseInt(reportLayoutHeight, 10);\n\n useEffect(() => {\n if (viewPortRef.current) {\n viewPortRef.current.scrollTop = lastScrollPosition;\n }\n }, []); // set last scroll position after changing mode\n\n useEffect(() => {\n transformRefs.current = transformRefs.current.slice(0, pages.length);\n }, [pages]);\n\n const pageContainerStyles = useMemo(() => ({\n height,\n width,\n }), [width, height]);\n\n const transitionStyle = usePageTransition(reportPageTransition, presentationPage);\n\n const handleZoom = useCallback(zoomPanPinch => {\n const fixedValue = parseFloat(zoomPanPinch.state.scale.toFixed(2));\n const roundValue = parseFloat((Math.round((fixedValue * 100)) / 100).toFixed(1));\n if (roundValue <= 2 && roundValue >= 0.5) {\n setZoom(roundValue);\n }\n }, []);\n\n useEffect(() => {\n if (transformRefs.current.length > 0) {\n for (let i = 0; i < pages.length; i++) {\n if (mode !== 'print') {\n transformRefs.current[i].centerView(zoom);\n } else {\n transformRefs.current[i].setTransform(0, 0, 1);\n }\n }\n }\n }, [pages.length, zoom, isFullscreen, mode]);\n\n return (\n <main\n className={classNames.mainWrapper}\n >\n <div\n ref={viewPortRef}\n className={classNames.viewport}\n {...gesture()}\n >\n <div\n className={`${classNames.canvas} ${reportPageTransition}`}\n style={transitionStyle}\n >\n {pages.map((page, index) => {\n const { backgroundColor } = page;\n const style = {\n ...pageContainerStyles,\n backgroundColor: backgroundColor ? backgroundColor : reportBackgroundColor || '#fff',\n };\n return (\n <div\n key={`page_${index.toString()}`}\n className={cNames({\n [classNames.page]: true,\n [slugify(reportLayout)]: true,\n activePage: index === presentationPage,\n })}\n >\n <TransformWrapper\n ref={element => { transformRefs.current[index] = element; }}\n centerOnInit={true}\n centerZoomedOut={true}\n disablePadding={true}\n doubleClick={{\n step: 0.2,\n }}\n initialScale={zoom}\n maxScale={2}\n minScale={0.5}\n onZoom={handleZoom}\n panning={{\n disabled: zoom <= fittedZoom,\n }}\n pinch={{\n step: 1,\n }}\n >\n <TransformComponent\n wrapperStyle={{ height: '100%', width: '100%' }}\n >\n <StaticPage\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n items={page.items}\n style={style}\n />\n </TransformComponent>\n </TransformWrapper>\n </div>\n );\n })}\n </div>\n </div>\n <ZoomControls\n pages={pages}\n showZoom={(!isFullscreen || (isFullscreen && showControlsInFullScreen)) && !hideZoom}\n />\n </main>\n );\n};\n\nStaticScene.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n gesture: PropTypes.func,\n hashCode: PropTypes.string,\n hideZoom: PropTypes.bool,\n itemAccessor: PropTypes.func,\n lastScrollPosition: PropTypes.number,\n mode: PropTypes.string,\n pages: PropTypes.arrayOf(PropTypes.shape({})),\n presentationPage: PropTypes.number,\n};\n\nStaticScene.defaultProps = {\n additionalPageItems: [],\n gesture: () => {},\n hashCode: '',\n hideZoom: false,\n itemAccessor: () => {},\n lastScrollPosition: 0,\n mode: 'preview',\n pages: [],\n presentationPage: 0,\n};\n\nexport default StaticScene;\n"],"names":["StaticScene","additionalPageItems","gesture","hashCode","hideZoom","itemAccessor","lastScrollPosition","mode","pages","presentationPage","usePresentationContext","fittedZoom","isFullscreen","showControlsInFullScreen","usePropContext","acceptedItems","settings","useBuilderContext","setZoom","zoom","viewPortRef","useRef","transformRefs","reportBackgroundColor","reportLayout","reportLayoutHeight","reportLayoutWidth","reportPageTransition","width","parseInt","height","useEffect","current","scrollTop","slice","length","pageContainerStyles","useMemo","transitionStyle","usePageTransition","handleZoom","useCallback","zoomPanPinch","fixedValue","parseFloat","state","scale","toFixed","roundValue","Math","round","i","centerView","setTransform","_jsxs","classNames","_jsx","map","page","index","backgroundColor","style","cNames","slugify","element","step","disabled","items","toString","propTypes","PropTypes","arrayOf","node","func","string","bool","number","shape","defaultProps"],"mappings":"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"}
@@ -27,6 +27,7 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
27
27
  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; }
28
28
  var PresentationContext = /*#__PURE__*/createContext({
29
29
  currentPage: 1,
30
+ fittedZoom: 1,
30
31
  isFullscreen: false,
31
32
  pageCount: 0,
32
33
  showZoomInFullScreen: false
@@ -71,11 +72,18 @@ var PresentationProvider = /*#__PURE__*/function (_React$Component) {
71
72
  });
72
73
  });
73
74
 
75
+ _defineProperty(_assertThisInitialized(_this), "setFittedZoom", function (fittedZoom) {
76
+ _this.setState({
77
+ fittedZoom: fittedZoom
78
+ });
79
+ });
80
+
74
81
  _this.state = {
75
82
  currentPage: props.currentPage,
76
83
  isFullscreen: props.isFullscreen,
77
84
  pageCount: props.pageCount,
78
85
  setCurrentPage: _this.setCurrentPage,
86
+ setFittedZoom: _this.setFittedZoom,
79
87
  setIsFullscreen: _this.setIsFullscreen,
80
88
  setShowControlsInFullScreen: _this.setShowControlsInFullScreen
81
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"presentationContext.js","sources":["../../../src/utils/presentationContext.js"],"sourcesContent":["/* eslint-disable react/no-unused-state */\nimport React, { createContext, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PresentationContext = createContext({\n currentPage: 1,\n isFullscreen: false,\n pageCount: 0,\n showZoomInFullScreen: false,\n});\n\nexport const usePresentationContext = () => {\n const context = useContext(PresentationContext);\n if (!context) {\n throw new Error('PresentationContext must be used with PresentationProvider!');\n }\n return context;\n};\n\nexport class PresentationProvider extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n const updates = {};\n const {\n pageCount,\n } = prevState;\n\n if (nextProps.pageCount !== pageCount) {\n updates.pageCount = nextProps.pageCount;\n }\n\n return updates;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n currentPage: props.currentPage,\n isFullscreen: props.isFullscreen,\n pageCount: props.pageCount,\n setCurrentPage: this.setCurrentPage,\n setIsFullscreen: this.setIsFullscreen,\n setShowControlsInFullScreen: this.setShowControlsInFullScreen,\n };\n }\n\n setCurrentPage = currentPage => {\n this.setState({ currentPage });\n };\n\n setIsFullscreen = isFullscreen => {\n this.setState({ isFullscreen, showControlsInFullScreen: false });\n };\n\n setShowControlsInFullScreen = showControlsInFullScreen => {\n this.setState({ showControlsInFullScreen });\n }\n\n render() {\n const { children } = this.props;\n return (\n <PresentationContext.Provider value={this.state}>\n {children}\n </PresentationContext.Provider>\n );\n }\n}\n\nPresentationProvider.propTypes = {\n children: PropTypes.any,\n currentPage: PropTypes.number,\n isFullscreen: PropTypes.bool,\n pageCount: PropTypes.number,\n};\n\nPresentationProvider.defaultProps = {\n children: null,\n currentPage: 1,\n isFullscreen: false,\n pageCount: 1,\n};\n\nexport const PresentationConsumer = PresentationContext.Consumer;\n"],"names":["PresentationContext","createContext","currentPage","isFullscreen","pageCount","showZoomInFullScreen","usePresentationContext","context","useContext","Error","PresentationProvider","props","setState","showControlsInFullScreen","state","setCurrentPage","setIsFullscreen","setShowControlsInFullScreen","children","_jsx","nextProps","prevState","updates","React","Component","propTypes","PropTypes","any","number","bool","defaultProps","Consumer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,mBAAmB,gBAAGC,aAAa,CAAC;AAC/CC,EAAAA,WAAW,EAAE,CADkC;AAE/CC,EAAAA,YAAY,EAAE,KAFiC;AAG/CC,EAAAA,SAAS,EAAE,CAHoC;AAI/CC,EAAAA,oBAAoB,EAAE;AAJyB,CAAD;IAOnCC,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAM;AAC1C,MAAMC,OAAO,GAAGC,UAAU,CAACR,mBAAD,CAA1B;;AACA,MAAI,CAACO,OAAL,EAAc;AACZ,UAAM,IAAIE,KAAJ,CAAU,6DAAV,CAAN;AACD;;AACD,SAAOF,OAAP;AACD;IAEYG,oBAAb;AAAA;;AAAA;;AAcE,gCAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,qEAYF,UAAAT,WAAW,EAAI;AAC9B,YAAKU,QAAL,CAAc;AAAEV,QAAAA,WAAW,EAAXA;AAAF,OAAd;AACD,KAdkB;;AAAA,sEAgBD,UAAAC,YAAY,EAAI;AAChC,YAAKS,QAAL,CAAc;AAAET,QAAAA,YAAY,EAAZA,YAAF;AAAgBU,QAAAA,wBAAwB,EAAE;AAA1C,OAAd;AACD,KAlBkB;;AAAA,kFAoBW,UAAAA,wBAAwB,EAAI;AACxD,YAAKD,QAAL,CAAc;AAAEC,QAAAA,wBAAwB,EAAxBA;AAAF,OAAd;AACD,KAtBkB;;AAEjB,UAAKC,KAAL,GAAa;AACXZ,MAAAA,WAAW,EAAES,KAAK,CAACT,WADR;AAEXC,MAAAA,YAAY,EAAEQ,KAAK,CAACR,YAFT;AAGXC,MAAAA,SAAS,EAAEO,KAAK,CAACP,SAHN;AAIXW,MAAAA,cAAc,EAAE,MAAKA,cAJV;AAKXC,MAAAA,eAAe,EAAE,MAAKA,eALX;AAMXC,MAAAA,2BAA2B,EAAE,MAAKA;AANvB,KAAb;AAFiB;AAUlB;;AAxBH;AAAA;AAAA,WAsCE,kBAAS;AACP,UAAQC,QAAR,GAAqB,KAAKP,KAA1B,CAAQO,QAAR;AACA,0BACEC,IAAC,mBAAD,CAAqB,QAArB;AAA8B,QAAA,KAAK,EAAE,KAAKL,KAA1C;AAAA,kBACGI;AADH,QADF;AAKD;AA7CH;AAAA;AAAA,WACE,kCAAgCE,SAAhC,EAA2CC,SAA3C,EAAsD;AACpD,UAAMC,OAAO,GAAG,EAAhB;AACA,UACElB,SADF,GAEIiB,SAFJ,CACEjB,SADF;;AAIA,UAAIgB,SAAS,CAAChB,SAAV,KAAwBA,SAA5B,EAAuC;AACrCkB,QAAAA,OAAO,CAAClB,SAAR,GAAoBgB,SAAS,CAAChB,SAA9B;AACD;;AAED,aAAOkB,OAAP;AACD;AAZH;;AAAA;AAAA,EAA0CC,KAAK,CAACC,SAAhD;AAgDAd,oBAAoB,CAACe,SAArB,GAAiC;AAC/BP,EAAAA,QAAQ,EAAEQ,SAAS,CAACC,GADW;AAE/BzB,EAAAA,WAAW,EAAEwB,SAAS,CAACE,MAFQ;AAG/BzB,EAAAA,YAAY,EAAEuB,SAAS,CAACG,IAHO;AAI/BzB,EAAAA,SAAS,EAAEsB,SAAS,CAACE;AAJU,CAAjC;AAOAlB,oBAAoB,CAACoB,YAArB,GAAoC;AAClCZ,EAAAA,QAAQ,EAAE,IADwB;AAElChB,EAAAA,WAAW,EAAE,CAFqB;AAGlCC,EAAAA,YAAY,EAAE,KAHoB;AAIlCC,EAAAA,SAAS,EAAE;AAJuB,CAApC;AAOoCJ,mBAAmB,CAAC+B;;;;"}
1
+ {"version":3,"file":"presentationContext.js","sources":["../../../src/utils/presentationContext.js"],"sourcesContent":["/* eslint-disable react/no-unused-state */\nimport React, { createContext, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PresentationContext = createContext({\n currentPage: 1,\n fittedZoom: 1,\n isFullscreen: false,\n pageCount: 0,\n showZoomInFullScreen: false,\n});\n\nexport const usePresentationContext = () => {\n const context = useContext(PresentationContext);\n if (!context) {\n throw new Error('PresentationContext must be used with PresentationProvider!');\n }\n return context;\n};\n\nexport class PresentationProvider extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n const updates = {};\n const {\n pageCount,\n } = prevState;\n\n if (nextProps.pageCount !== pageCount) {\n updates.pageCount = nextProps.pageCount;\n }\n\n return updates;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n currentPage: props.currentPage,\n isFullscreen: props.isFullscreen,\n pageCount: props.pageCount,\n setCurrentPage: this.setCurrentPage,\n setFittedZoom: this.setFittedZoom,\n setIsFullscreen: this.setIsFullscreen,\n setShowControlsInFullScreen: this.setShowControlsInFullScreen,\n };\n }\n\n setCurrentPage = currentPage => {\n this.setState({ currentPage });\n };\n\n setIsFullscreen = isFullscreen => {\n this.setState({ isFullscreen, showControlsInFullScreen: false });\n };\n\n setShowControlsInFullScreen = showControlsInFullScreen => {\n this.setState({ showControlsInFullScreen });\n }\n\n setFittedZoom = fittedZoom => {\n this.setState({ fittedZoom });\n }\n\n render() {\n const { children } = this.props;\n return (\n <PresentationContext.Provider value={this.state}>\n {children}\n </PresentationContext.Provider>\n );\n }\n}\n\nPresentationProvider.propTypes = {\n children: PropTypes.any,\n currentPage: PropTypes.number,\n isFullscreen: PropTypes.bool,\n pageCount: PropTypes.number,\n};\n\nPresentationProvider.defaultProps = {\n children: null,\n currentPage: 1,\n isFullscreen: false,\n pageCount: 1,\n};\n\nexport const PresentationConsumer = PresentationContext.Consumer;\n"],"names":["PresentationContext","createContext","currentPage","fittedZoom","isFullscreen","pageCount","showZoomInFullScreen","usePresentationContext","context","useContext","Error","PresentationProvider","props","setState","showControlsInFullScreen","state","setCurrentPage","setFittedZoom","setIsFullscreen","setShowControlsInFullScreen","children","_jsx","nextProps","prevState","updates","React","Component","propTypes","PropTypes","any","number","bool","defaultProps","Consumer"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jotforminc/dnd-builder",
3
- "version": "2.4.6",
3
+ "version": "2.5.1",
4
4
  "files": [
5
5
  "lib"
6
6
  ],
@@ -31,6 +31,7 @@
31
31
  "react-sortable-hoc": "2.0.0",
32
32
  "react-use-gesture": "9.0.4",
33
33
  "react-window": "1.8.6",
34
+ "react-zoom-pan-pinch": "^3.0.1",
34
35
  "recharts": "2.0.7",
35
36
  "regenerator-runtime": "0.13.7"
36
37
  },