@jotforminc/dnd-builder 2.3.0 → 2.4.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 +20 -0
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js +1 -1
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js +1 -1
- package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
- package/lib/cjs/components/TextEditor/QuillEditor.js +9 -3
- package/lib/cjs/components/TextEditor/QuillEditor.js.map +1 -1
- package/lib/cjs/components/TextEditor/TextEditor.js +2 -2
- package/lib/cjs/components/TextEditor/TextEditor.js.map +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanel.js +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js +1 -1
- package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
- package/lib/esm/components/TextEditor/QuillEditor.js +8 -3
- package/lib/esm/components/TextEditor/QuillEditor.js.map +1 -1
- package/lib/esm/components/TextEditor/TextEditor.js +2 -2
- package/lib/esm/components/TextEditor/TextEditor.js.map +1 -1
- package/package.json +2 -2
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.4.1](https://github.com/jotform/dnd-builder/compare/v2.4.0...v2.4.1) (2022-06-29)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **panels:** return close button ([9094afe](https://github.com/jotform/dnd-builder/commit/9094afe680b32720441e51949665b24b550d96eb))
|
|
11
|
+
|
|
12
|
+
## [2.4.0](https://github.com/jotform/dnd-builder/compare/v2.2.1...v2.4.0) (2022-06-29)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **buildercontext:** add callback for right panel ([1dde660](https://github.com/jotform/dnd-builder/commit/1dde66089df4846ff973fcc99620cec6f3cf6e82))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* hide toggle panel buttons when panel is open ([3081e80](https://github.com/jotform/dnd-builder/commit/3081e8000613acb68d42837fb99b5bfd8d8ec2b2))
|
|
23
|
+
* **TextEditor:** purify about content ([0fcad20](https://github.com/jotform/dnd-builder/commit/0fcad2075116cf5365fc42facbd5aa6adae25db8))
|
|
24
|
+
|
|
5
25
|
### [2.3.0](https://github.com/jotform/dnd-builder/compare/v2.2.1...v2.3.0) (2022-06-24)
|
|
6
26
|
|
|
7
27
|
|
|
@@ -199,7 +199,7 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
199
199
|
children: /*#__PURE__*/jsxRuntime.jsxs(Panel, {
|
|
200
200
|
ref: panelRef,
|
|
201
201
|
additionalClassName: panelAdditionalClassName,
|
|
202
|
-
children: [isSlidesPanelOpen
|
|
202
|
+
children: [isSlidesPanelOpen ? null : /*#__PURE__*/jsxRuntime.jsx(RightPanelToggler, {}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
203
203
|
className: "toolItemWrapper f-height d-flex dir-col",
|
|
204
204
|
children: /*#__PURE__*/jsxRuntime.jsxs(Section, {
|
|
205
205
|
title: title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\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 { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/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';\nimport { capitalize } from '../../../utils/string';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = ({\n itemAccessor,\n onItemChange,\n onPageChange,\n onSettingChange,\n pages,\n}) => {\n const {\n activeTab,\n editedElement,\n isRightPanelOpen,\n isSlidesPanelOpen,\n setActiveElement,\n setActiveTab,\n setIsRightPanelOpen,\n } = useBuilderContext();\n const { acceptedItems, settings: layoutSettings } = usePropContext();\n const panelRef = useRef(null);\n const { LAYOUT_SETTINGS, PAGE_SETTINGS, SETTINGS } = useTranslatedTexts();\n const settingMap = {\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 return `${capitalize(acceptedItems[item.itemType].title || item.itemType)} ${SETTINGS}`;\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: () => 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, setActiveElement, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => PAGE_SETTINGS,\n updater: onPageChange,\n },\n };\n\n let editedEl;\n let editedElId;\n let selectedItem;\n let element;\n let updateFunc;\n let title;\n\n const panelConfig = () => {\n selectedItem = editedEl.details(editedElId);\n element = editedEl.settings(selectedItem);\n updateFunc = editedEl.updater;\n title = editedEl.title(selectedItem);\n };\n\n const fallback = () => {\n setActiveElement(null);\n editedEl = settingMap.l_;\n editedElId = editedElement.substr(2);\n panelConfig();\n };\n\n try {\n editedEl = settingMap[editedElement.substr(0, 2)];\n editedElId = editedElement.substr(2);\n const checkSelectedItem = editedEl.details(editedElId);\n if (Object.keys(checkSelectedItem).length === 0) {\n fallback();\n } else {\n panelConfig();\n }\n } catch (e) {\n fallback();\n }\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]);\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 = 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 setActiveElement(null);\n };\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen]);\n\n return (\n <>\n <Panel\n ref={panelRef}\n additionalClassName={panelAdditionalClassName}\n >\n {(isSlidesPanelOpen || isRightPanelOpen) ? 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 itemAccessor={itemAccessor}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nRightPanel.propTypes = {\n itemAccessor: PropTypes.func,\n onItemChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nRightPanel.defaultProps = {\n itemAccessor: () => { },\n onItemChange: () => { },\n onPageChange: () => { },\n onSettingChange: () => { },\n pages: [],\n};\n\nexport default memo(RightPanel);\n"],"names":["exceptionalClasses","RightPanel","itemAccessor","onItemChange","onPageChange","onSettingChange","pages","useBuilderContext","activeTab","editedElement","isRightPanelOpen","isSlidesPanelOpen","setActiveElement","setActiveTab","setIsRightPanelOpen","usePropContext","acceptedItems","layoutSettings","settings","panelRef","useRef","useTranslatedTexts","LAYOUT_SETTINGS","PAGE_SETTINGS","SETTINGS","settingMap","i_","details","id","item","findItemById","itemType","title","capitalize","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","editedEl","editedElId","selectedItem","element","updateFunc","panelConfig","fallback","substr","checkSelectedItem","Object","keys","length","e","tabsWithSettings","getTabsWithSettings","tabs","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs","propTypes","PropTypes","func","arrayOf","shape","defaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\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 { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/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';\nimport { capitalize } from '../../../utils/string';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = ({\n itemAccessor,\n onItemChange,\n onPageChange,\n onSettingChange,\n pages,\n}) => {\n const {\n activeTab,\n editedElement,\n isRightPanelOpen,\n isSlidesPanelOpen,\n setActiveElement,\n setActiveTab,\n setIsRightPanelOpen,\n } = useBuilderContext();\n const { acceptedItems, settings: layoutSettings } = usePropContext();\n const panelRef = useRef(null);\n const { LAYOUT_SETTINGS, PAGE_SETTINGS, SETTINGS } = useTranslatedTexts();\n const settingMap = {\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 return `${capitalize(acceptedItems[item.itemType].title || item.itemType)} ${SETTINGS}`;\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: () => 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, setActiveElement, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => PAGE_SETTINGS,\n updater: onPageChange,\n },\n };\n\n let editedEl;\n let editedElId;\n let selectedItem;\n let element;\n let updateFunc;\n let title;\n\n const panelConfig = () => {\n selectedItem = editedEl.details(editedElId);\n element = editedEl.settings(selectedItem);\n updateFunc = editedEl.updater;\n title = editedEl.title(selectedItem);\n };\n\n const fallback = () => {\n setActiveElement(null);\n editedEl = settingMap.l_;\n editedElId = editedElement.substr(2);\n panelConfig();\n };\n\n try {\n editedEl = settingMap[editedElement.substr(0, 2)];\n editedElId = editedElement.substr(2);\n const checkSelectedItem = editedEl.details(editedElId);\n if (Object.keys(checkSelectedItem).length === 0) {\n fallback();\n } else {\n panelConfig();\n }\n } catch (e) {\n fallback();\n }\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]);\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 = 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 setActiveElement(null);\n };\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen]);\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 itemAccessor={itemAccessor}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nRightPanel.propTypes = {\n itemAccessor: PropTypes.func,\n onItemChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nRightPanel.defaultProps = {\n itemAccessor: () => { },\n onItemChange: () => { },\n onPageChange: () => { },\n onSettingChange: () => { },\n pages: [],\n};\n\nexport default memo(RightPanel);\n"],"names":["exceptionalClasses","RightPanel","itemAccessor","onItemChange","onPageChange","onSettingChange","pages","useBuilderContext","activeTab","editedElement","isRightPanelOpen","isSlidesPanelOpen","setActiveElement","setActiveTab","setIsRightPanelOpen","usePropContext","acceptedItems","layoutSettings","settings","panelRef","useRef","useTranslatedTexts","LAYOUT_SETTINGS","PAGE_SETTINGS","SETTINGS","settingMap","i_","details","id","item","findItemById","itemType","title","capitalize","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","editedEl","editedElId","selectedItem","element","updateFunc","panelConfig","fallback","substr","checkSelectedItem","Object","keys","length","e","tabsWithSettings","getTabsWithSettings","tabs","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs","propTypes","PropTypes","func","arrayOf","shape","defaultProps","memo"],"mappings":"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"}
|
|
@@ -103,7 +103,7 @@ var SlidesPanel = function SlidesPanel(_ref) {
|
|
|
103
103
|
return /*#__PURE__*/jsxRuntime.jsxs(Panel, {
|
|
104
104
|
additionalClassName: panelAdditionalClassName,
|
|
105
105
|
onAnimationEnd: onAnimationEnd,
|
|
106
|
-
children: [
|
|
106
|
+
children: [isRightPanelOpen ? null : /*#__PURE__*/jsxRuntime.jsx(SlidesPanelToggler, {
|
|
107
107
|
onClosePanel: onClosePanel
|
|
108
108
|
}), (isSlidesPanelOpen || !isSlidesPanelOpen && !animationEnd) && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
109
109
|
className: "toolItemWrapper f-height d-flex dir-col",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlidesPanel.js","sources":["../../../../../src/components/Panels/SlidesPanel/SlidesPanel.js"],"sourcesContent":["import { memo, useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FixedSizeList } from 'react-window';\nimport Panel from '../../Builder/Panel';\nimport SortablePageList from './SortablePageList';\nimport Section from '../../Builder/Section';\nimport { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/propContext';\nimport { arrayMove } from '../../../utils/functions';\nimport SlidesPanelToggler from './SlidesPanelToggler';\nimport ListWrapper from './ListWrapper';\nimport Button from '../../Settings/Button';\nimport { useClickOutsideListener, useTranslatedTexts } from '../../../utils/hooks';\n\nconst SlidesPanel = ({\n additionalPageItems,\n hashCode,\n itemAccessor,\n onPageAdd,\n onPageDuplicate,\n onPageOrdersChange,\n onPageRemove,\n pages,\n}) => {\n const {\n isRightPanelOpen,\n isSlidesPanelOpen,\n setIsAllSlidesPanelOpen,\n setIsSlidesPanelOpen,\n } = useBuilderContext();\n const {\n acceptedItems,\n disableInteraction,\n onAnEventTrigger,\n settings: reportSettings,\n useExperimentalFeatures,\n } = usePropContext();\n const [animationEnd, setAnimationEnd] = useState(true);\n\n const pageGetter = useCallback(index => {\n return pages[index];\n }, [pages]);\n\n const onPageSort = useCallback(({ newIndex, oldIndex }, nativeEvent, ref) => {\n const instance = ref.getWrappedInstance();\n const list = instance.sortablePageListRef.current;\n\n const newPageOrders = arrayMove(pages, oldIndex, newIndex).reduce((acc, page, index) => {\n acc[page.id] = { order: index + 1 };\n return acc;\n }, {});\n\n onPageOrdersChange(newPageOrders);\n onAnEventTrigger('sortPageFromSlides');\n\n list.forceUpdate();\n }, [pages]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSlides f-height',\n {\n isIdle: !isSlidesPanelOpen,\n otherOpened: isRightPanelOpen,\n },\n );\n\n const onClosePanel = () => {\n setAnimationEnd(false);\n setIsSlidesPanelOpen(false);\n };\n\n const onAnimationEnd = useCallback(() => {\n if (!isSlidesPanelOpen) {\n setAnimationEnd(true);\n }\n }, [isSlidesPanelOpen]);\n\n useClickOutsideListener(\n ['jfReport-canvas', 'jfReport-viewport', 'jfReport-pageInfo'],\n isSlidesPanelOpen,\n onClosePanel,\n );\n\n const { SLIDES } = useTranslatedTexts();\n\n return (\n <Panel\n additionalClassName={panelAdditionalClassName}\n onAnimationEnd={onAnimationEnd}\n >\n {
|
|
1
|
+
{"version":3,"file":"SlidesPanel.js","sources":["../../../../../src/components/Panels/SlidesPanel/SlidesPanel.js"],"sourcesContent":["import { memo, useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FixedSizeList } from 'react-window';\nimport Panel from '../../Builder/Panel';\nimport SortablePageList from './SortablePageList';\nimport Section from '../../Builder/Section';\nimport { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/propContext';\nimport { arrayMove } from '../../../utils/functions';\nimport SlidesPanelToggler from './SlidesPanelToggler';\nimport ListWrapper from './ListWrapper';\nimport Button from '../../Settings/Button';\nimport { useClickOutsideListener, useTranslatedTexts } from '../../../utils/hooks';\n\nconst SlidesPanel = ({\n additionalPageItems,\n hashCode,\n itemAccessor,\n onPageAdd,\n onPageDuplicate,\n onPageOrdersChange,\n onPageRemove,\n pages,\n}) => {\n const {\n isRightPanelOpen,\n isSlidesPanelOpen,\n setIsAllSlidesPanelOpen,\n setIsSlidesPanelOpen,\n } = useBuilderContext();\n const {\n acceptedItems,\n disableInteraction,\n onAnEventTrigger,\n settings: reportSettings,\n useExperimentalFeatures,\n } = usePropContext();\n const [animationEnd, setAnimationEnd] = useState(true);\n\n const pageGetter = useCallback(index => {\n return pages[index];\n }, [pages]);\n\n const onPageSort = useCallback(({ newIndex, oldIndex }, nativeEvent, ref) => {\n const instance = ref.getWrappedInstance();\n const list = instance.sortablePageListRef.current;\n\n const newPageOrders = arrayMove(pages, oldIndex, newIndex).reduce((acc, page, index) => {\n acc[page.id] = { order: index + 1 };\n return acc;\n }, {});\n\n onPageOrdersChange(newPageOrders);\n onAnEventTrigger('sortPageFromSlides');\n\n list.forceUpdate();\n }, [pages]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSlides f-height',\n {\n isIdle: !isSlidesPanelOpen,\n otherOpened: isRightPanelOpen,\n },\n );\n\n const onClosePanel = () => {\n setAnimationEnd(false);\n setIsSlidesPanelOpen(false);\n };\n\n const onAnimationEnd = useCallback(() => {\n if (!isSlidesPanelOpen) {\n setAnimationEnd(true);\n }\n }, [isSlidesPanelOpen]);\n\n useClickOutsideListener(\n ['jfReport-canvas', 'jfReport-viewport', 'jfReport-pageInfo'],\n isSlidesPanelOpen,\n onClosePanel,\n );\n\n const { SLIDES } = useTranslatedTexts();\n\n return (\n <Panel\n additionalClassName={panelAdditionalClassName}\n onAnimationEnd={onAnimationEnd}\n >\n {isRightPanelOpen\n ? null\n : <SlidesPanelToggler onClosePanel={onClosePanel} />}\n {(isSlidesPanelOpen || (!isSlidesPanelOpen && !animationEnd)) && (\n <div className=\"toolItemWrapper f-height d-flex dir-col\">\n <Section\n additionalComponent={useExperimentalFeatures ? (\n <Button\n classNames=\"jfReportButton isAccent showAll\"\n icon=\"allSlides\"\n onClick={() => setIsAllSlidesPanelOpen(true)}\n title=\"Show All\"\n />\n ) : null}\n icon=\"slides\"\n title={SLIDES}\n >\n <div className=\"toolItem-tabContent hasInnerScroll\">\n <ListWrapper\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n component={SortablePageList(FixedSizeList)}\n disableInteraction={disableInteraction}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n onAnEventTrigger={onAnEventTrigger}\n onPageAdd={onPageAdd}\n onPageDuplicate={onPageDuplicate}\n onPageRemove={onPageRemove}\n onSortEnd={onPageSort}\n pageCount={pages.length}\n pageGetter={pageGetter}\n reportSettings={reportSettings}\n />\n </div>\n </Section>\n </div>\n )}\n </Panel>\n );\n};\n\nSlidesPanel.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n hashCode: PropTypes.string,\n itemAccessor: PropTypes.func,\n onPageAdd: PropTypes.func,\n onPageDuplicate: PropTypes.func,\n onPageOrdersChange: PropTypes.func,\n onPageRemove: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nSlidesPanel.defaultProps = {\n additionalPageItems: [],\n hashCode: '',\n itemAccessor: () => { },\n onPageAdd: () => { },\n onPageDuplicate: () => { },\n onPageOrdersChange: () => { },\n onPageRemove: () => { },\n pages: [],\n};\n\nexport default memo(SlidesPanel);\n"],"names":["SlidesPanel","additionalPageItems","hashCode","itemAccessor","onPageAdd","onPageDuplicate","onPageOrdersChange","onPageRemove","pages","useBuilderContext","isRightPanelOpen","isSlidesPanelOpen","setIsAllSlidesPanelOpen","setIsSlidesPanelOpen","usePropContext","acceptedItems","disableInteraction","onAnEventTrigger","reportSettings","settings","useExperimentalFeatures","useState","animationEnd","setAnimationEnd","pageGetter","useCallback","index","onPageSort","nativeEvent","ref","newIndex","oldIndex","instance","getWrappedInstance","list","sortablePageListRef","current","newPageOrders","arrayMove","reduce","acc","page","id","order","forceUpdate","panelAdditionalClassName","classNames","isIdle","otherOpened","onClosePanel","onAnimationEnd","useClickOutsideListener","useTranslatedTexts","SLIDES","_jsxs","_jsx","SortablePageList","FixedSizeList","length","propTypes","PropTypes","arrayOf","node","string","func","shape","defaultProps","memo"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require('core-js/modules/es.array.map.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var ReactQuill = require('react-quill');
|
|
6
|
+
var domPurify = require('dompurify');
|
|
6
7
|
var PropTypes = require('prop-types');
|
|
7
8
|
var textEditorConstants = require('./textEditorConstants.js');
|
|
8
9
|
var fonts = require('../../constants/fonts.js');
|
|
@@ -13,6 +14,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
13
14
|
|
|
14
15
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
15
16
|
var ReactQuill__default = /*#__PURE__*/_interopDefaultLegacy(ReactQuill);
|
|
17
|
+
var domPurify__default = /*#__PURE__*/_interopDefaultLegacy(domPurify);
|
|
16
18
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
17
19
|
|
|
18
20
|
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
@@ -73,6 +75,11 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
73
75
|
}
|
|
74
76
|
});
|
|
75
77
|
|
|
78
|
+
_defineProperty(_assertThisInitialized(_this), "handleSetContent", function (value) {
|
|
79
|
+
var setContent = _this.props.setContent;
|
|
80
|
+
setContent(domPurify__default['default'].sanitize(value));
|
|
81
|
+
});
|
|
82
|
+
|
|
76
83
|
_this.quill = /*#__PURE__*/React__default['default'].createRef();
|
|
77
84
|
return _this;
|
|
78
85
|
}
|
|
@@ -96,8 +103,7 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
96
103
|
value: function render() {
|
|
97
104
|
var _this$props2 = this.props,
|
|
98
105
|
content = _this$props2.content,
|
|
99
|
-
placeholder = _this$props2.placeholder
|
|
100
|
-
setContent = _this$props2.setContent;
|
|
106
|
+
placeholder = _this$props2.placeholder;
|
|
101
107
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
102
108
|
className: "f-all",
|
|
103
109
|
onKeyDown: this.handleKeyDown,
|
|
@@ -105,7 +111,7 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
105
111
|
ref: this.quill,
|
|
106
112
|
formats: QuillEditor.formats,
|
|
107
113
|
modules: QuillEditor.modules,
|
|
108
|
-
onChange:
|
|
114
|
+
onChange: this.handleSetContent,
|
|
109
115
|
placeholder: placeholder,
|
|
110
116
|
preserveWhitespace: true,
|
|
111
117
|
value: content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillEditor.js","sources":["../../../../src/components/TextEditor/QuillEditor.js"],"sourcesContent":["import React from 'react';\nimport ReactQuill from 'react-quill';\nimport PropTypes from 'prop-types';\nimport { formats, modules } from './textEditorConstants';\nimport { fontSizes } from '../../constants/fonts';\nimport 'react-quill/dist/quill.snow.css';\n\nconst Size = ReactQuill.Quill.import('attributors/style/size');\nSize.whitelist = fontSizes.map(s => `${s}px`);\nReactQuill.Quill.register(Size, true);\n\nclass QuillEditor extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.quill = React.createRef();\n }\n\n componentDidMount() {\n if (this.quill.current !== null) {\n const { content } = this.props;\n const editor = this.quill.current.getEditor();\n editor.setSelection(0, content.length);\n }\n }\n\n componentWillUnmount() {\n this.saveAndQuit();\n }\n\n saveAndQuit = () => {\n const { content, handleSave, setIsTextEditorOpen } = this.props;\n setIsTextEditorOpen(false);\n handleSave(content);\n }\n\n handleKeyDown = e => {\n e.stopPropagation();\n if (e.keyCode === 27) {\n this.saveAndQuit();\n }\n }\n\n render() {\n const {
|
|
1
|
+
{"version":3,"file":"QuillEditor.js","sources":["../../../../src/components/TextEditor/QuillEditor.js"],"sourcesContent":["import React from 'react';\nimport ReactQuill from 'react-quill';\nimport domPurify from 'dompurify';\nimport PropTypes from 'prop-types';\nimport { formats, modules } from './textEditorConstants';\nimport { fontSizes } from '../../constants/fonts';\nimport 'react-quill/dist/quill.snow.css';\n\nconst Size = ReactQuill.Quill.import('attributors/style/size');\nSize.whitelist = fontSizes.map(s => `${s}px`);\nReactQuill.Quill.register(Size, true);\n\nclass QuillEditor extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.quill = React.createRef();\n }\n\n componentDidMount() {\n if (this.quill.current !== null) {\n const { content } = this.props;\n const editor = this.quill.current.getEditor();\n editor.setSelection(0, content.length);\n }\n }\n\n componentWillUnmount() {\n this.saveAndQuit();\n }\n\n saveAndQuit = () => {\n const { content, handleSave, setIsTextEditorOpen } = this.props;\n setIsTextEditorOpen(false);\n handleSave(content);\n }\n\n handleKeyDown = e => {\n e.stopPropagation();\n if (e.keyCode === 27) {\n this.saveAndQuit();\n }\n }\n\n handleSetContent = value => {\n const { setContent } = this.props;\n setContent(domPurify.sanitize(value));\n }\n\n render() {\n const { content, placeholder } = this.props;\n\n return (\n <div\n className=\"f-all\"\n onKeyDown={this.handleKeyDown}\n >\n <ReactQuill\n ref={this.quill}\n formats={QuillEditor.formats}\n modules={QuillEditor.modules}\n onChange={this.handleSetContent}\n placeholder={placeholder}\n preserveWhitespace\n value={content}\n />\n </div>\n );\n }\n}\n\nQuillEditor.modules = modules;\nQuillEditor.formats = formats;\n\nQuillEditor.propTypes = {\n content: PropTypes.string,\n handleSave: PropTypes.func,\n placeholder: PropTypes.string,\n setContent: PropTypes.func,\n setIsTextEditorOpen: PropTypes.func,\n};\n\nQuillEditor.defaultProps = {\n content: '',\n handleSave: () => {},\n placeholder: 'Click to edit text',\n setContent: () => {},\n setIsTextEditorOpen: () => {},\n};\n\nexport default QuillEditor;\n"],"names":["Size","ReactQuill","Quill","import","whitelist","fontSizes","map","s","register","QuillEditor","props","content","handleSave","setIsTextEditorOpen","e","stopPropagation","keyCode","saveAndQuit","value","setContent","domPurify","sanitize","quill","React","createRef","current","editor","getEditor","setSelection","length","placeholder","_jsx","handleKeyDown","formats","modules","handleSetContent","PureComponent","propTypes","PropTypes","string","func","defaultProps"],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
31
31
|
isSelected = _ref.isSelected,
|
|
32
32
|
placeholder = _ref.placeholder;
|
|
33
33
|
|
|
34
|
-
var _useState = React.useState(content),
|
|
34
|
+
var _useState = React.useState(domPurify__default['default'].sanitize(content)),
|
|
35
35
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36
36
|
_content = _useState2[0],
|
|
37
37
|
setContent = _useState2[1];
|
|
@@ -47,7 +47,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
47
47
|
}, [isSelected, isLocked]);
|
|
48
48
|
var isNotEmpty = React.useMemo(function () {
|
|
49
49
|
var el = document.createElement('div');
|
|
50
|
-
el.innerHTML =
|
|
50
|
+
el.innerHTML = _content;
|
|
51
51
|
return !!el.innerText;
|
|
52
52
|
}, [_content]);
|
|
53
53
|
return isSelected && isTextEditorOpen ? /*#__PURE__*/jsxRuntime.jsx(QuillEditor, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextEditor.js","sources":["../../../../src/components/TextEditor/TextEditor.js"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport domPurify from 'dompurify';\nimport QuillEditor from './QuillEditor';\nimport { useBuilderContext } from '../../utils/builderContext';\n\nconst TextEditor = ({\n content,\n handleSave,\n isLocked,\n isSelected,\n placeholder,\n}) => {\n const [_content, setContent] = useState(content);\n\n const { isTextEditorOpen, setIsTextEditorOpen } = useBuilderContext();\n\n const onClick = useCallback(() => {\n if (isSelected && !isLocked) {\n setIsTextEditorOpen(true);\n }\n }, [isSelected, isLocked]);\n\n const isNotEmpty = useMemo(() => {\n const el = document.createElement('div');\n el.innerHTML =
|
|
1
|
+
{"version":3,"file":"TextEditor.js","sources":["../../../../src/components/TextEditor/TextEditor.js"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport domPurify from 'dompurify';\nimport QuillEditor from './QuillEditor';\nimport { useBuilderContext } from '../../utils/builderContext';\n\nconst TextEditor = ({\n content,\n handleSave,\n isLocked,\n isSelected,\n placeholder,\n}) => {\n const [_content, setContent] = useState(domPurify.sanitize(content));\n\n const { isTextEditorOpen, setIsTextEditorOpen } = useBuilderContext();\n\n const onClick = useCallback(() => {\n if (isSelected && !isLocked) {\n setIsTextEditorOpen(true);\n }\n }, [isSelected, isLocked]);\n\n const isNotEmpty = useMemo(() => {\n const el = document.createElement('div');\n el.innerHTML = _content;\n return !!el.innerText;\n }, [_content]);\n\n return isSelected && isTextEditorOpen ? (\n <QuillEditor\n content={_content}\n handleSave={handleSave}\n placeholder={placeholder}\n setContent={setContent}\n setIsTextEditorOpen={setIsTextEditorOpen}\n />\n ) : (\n <div\n className={`f-all ql-editor${isNotEmpty ? '' : ' isEmptyTextElement'}`}\n dangerouslySetInnerHTML={{\n __html: isNotEmpty ? _content : placeholder,\n }}\n onClick={onClick}\n onKeyDown={() => {}}\n />\n );\n};\n\nTextEditor.propTypes = {\n content: PropTypes.string,\n handleSave: PropTypes.func,\n isLocked: PropTypes.bool,\n isSelected: PropTypes.bool,\n placeholder: PropTypes.string,\n};\n\nTextEditor.defaultProps = {\n content: '',\n handleSave: () => {},\n isLocked: false,\n isSelected: false,\n placeholder: 'Click to edit text',\n};\n\nexport default TextEditor;\n"],"names":["TextEditor","content","handleSave","isLocked","isSelected","placeholder","useState","domPurify","sanitize","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","innerText","_jsx","__html","propTypes","PropTypes","string","func","bool","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;IAMMA,UAAU,GAAG,SAAbA,UAAa,OAMb;AAAA,MALJC,OAKI,QALJA,OAKI;AAAA,MAJJC,UAII,QAJJA,UAII;AAAA,MAHJC,QAGI,QAHJA,QAGI;AAAA,MAFJC,UAEI,QAFJA,UAEI;AAAA,MADJC,WACI,QADJA,WACI;;AACJ,kBAA+BC,cAAQ,CAACC,6BAAS,CAACC,QAAV,CAAmBP,OAAnB,CAAD,CAAvC;AAAA;AAAA,MAAOQ,QAAP;AAAA,MAAiBC,UAAjB;;AAEA,2BAAkDC,gCAAiB,EAAnE;AAAA,MAAQC,gBAAR,sBAAQA,gBAAR;AAAA,MAA0BC,mBAA1B,sBAA0BA,mBAA1B;;AAEA,MAAMC,OAAO,GAAGC,iBAAW,CAAC,YAAM;AAChC,QAAIX,UAAU,IAAI,CAACD,QAAnB,EAA6B;AAC3BU,MAAAA,mBAAmB,CAAC,IAAD,CAAnB;AACD;AACF,GAJ0B,EAIxB,CAACT,UAAD,EAAaD,QAAb,CAJwB,CAA3B;AAMA,MAAMa,UAAU,GAAGC,aAAO,CAAC,YAAM;AAC/B,QAAMC,EAAE,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAX;AACAF,IAAAA,EAAE,CAACG,SAAH,GAAeZ,QAAf;AACA,WAAO,CAAC,CAACS,EAAE,CAACI,SAAZ;AACD,GAJyB,EAIvB,CAACb,QAAD,CAJuB,CAA1B;AAMA,SAAOL,UAAU,IAAIQ,gBAAd,gBACLW,eAAC,WAAD;AACE,IAAA,OAAO,EAAEd,QADX;AAEE,IAAA,UAAU,EAAEP,UAFd;AAGE,IAAA,WAAW,EAAEG,WAHf;AAIE,IAAA,UAAU,EAAEK,UAJd;AAKE,IAAA,mBAAmB,EAAEG;AALvB,IADK,gBASLU;AACE,IAAA,SAAS,2BAAoBP,UAAU,GAAG,EAAH,GAAQ,qBAAtC,CADX;AAEE,IAAA,uBAAuB,EAAE;AACvBQ,MAAAA,MAAM,EAAER,UAAU,GAAGP,QAAH,GAAcJ;AADT,KAF3B;AAKE,IAAA,OAAO,EAAES,OALX;AAME,IAAA,SAAS,EAAE,qBAAM;AANnB,IATF;AAkBD;;AAEDd,UAAU,CAACyB,SAAX,GAAuB;AACrBxB,EAAAA,OAAO,EAAEyB,6BAAS,CAACC,MADE;AAErBzB,EAAAA,UAAU,EAAEwB,6BAAS,CAACE,IAFD;AAGrBzB,EAAAA,QAAQ,EAAEuB,6BAAS,CAACG,IAHC;AAIrBzB,EAAAA,UAAU,EAAEsB,6BAAS,CAACG,IAJD;AAKrBxB,EAAAA,WAAW,EAAEqB,6BAAS,CAACC;AALF,CAAvB;AAQA3B,UAAU,CAAC8B,YAAX,GAA0B;AACxB7B,EAAAA,OAAO,EAAE,EADe;AAExBC,EAAAA,UAAU,EAAE,sBAAM,EAFM;AAGxBC,EAAAA,QAAQ,EAAE,KAHc;AAIxBC,EAAAA,UAAU,EAAE,KAJY;AAKxBC,EAAAA,WAAW,EAAE;AALW,CAA1B;;;;"}
|
|
@@ -192,7 +192,7 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
192
192
|
children: /*#__PURE__*/jsxs(Panel, {
|
|
193
193
|
ref: panelRef,
|
|
194
194
|
additionalClassName: panelAdditionalClassName,
|
|
195
|
-
children: [isSlidesPanelOpen
|
|
195
|
+
children: [isSlidesPanelOpen ? null : /*#__PURE__*/jsx(RightPanelToggler, {}), /*#__PURE__*/jsx("div", {
|
|
196
196
|
className: "toolItemWrapper f-height d-flex dir-col",
|
|
197
197
|
children: /*#__PURE__*/jsxs(Section, {
|
|
198
198
|
title: title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\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 { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/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';\nimport { capitalize } from '../../../utils/string';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = ({\n itemAccessor,\n onItemChange,\n onPageChange,\n onSettingChange,\n pages,\n}) => {\n const {\n activeTab,\n editedElement,\n isRightPanelOpen,\n isSlidesPanelOpen,\n setActiveElement,\n setActiveTab,\n setIsRightPanelOpen,\n } = useBuilderContext();\n const { acceptedItems, settings: layoutSettings } = usePropContext();\n const panelRef = useRef(null);\n const { LAYOUT_SETTINGS, PAGE_SETTINGS, SETTINGS } = useTranslatedTexts();\n const settingMap = {\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 return `${capitalize(acceptedItems[item.itemType].title || item.itemType)} ${SETTINGS}`;\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: () => 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, setActiveElement, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => PAGE_SETTINGS,\n updater: onPageChange,\n },\n };\n\n let editedEl;\n let editedElId;\n let selectedItem;\n let element;\n let updateFunc;\n let title;\n\n const panelConfig = () => {\n selectedItem = editedEl.details(editedElId);\n element = editedEl.settings(selectedItem);\n updateFunc = editedEl.updater;\n title = editedEl.title(selectedItem);\n };\n\n const fallback = () => {\n setActiveElement(null);\n editedEl = settingMap.l_;\n editedElId = editedElement.substr(2);\n panelConfig();\n };\n\n try {\n editedEl = settingMap[editedElement.substr(0, 2)];\n editedElId = editedElement.substr(2);\n const checkSelectedItem = editedEl.details(editedElId);\n if (Object.keys(checkSelectedItem).length === 0) {\n fallback();\n } else {\n panelConfig();\n }\n } catch (e) {\n fallback();\n }\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]);\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 = 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 setActiveElement(null);\n };\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen]);\n\n return (\n <>\n <Panel\n ref={panelRef}\n additionalClassName={panelAdditionalClassName}\n >\n {(isSlidesPanelOpen || isRightPanelOpen) ? 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 itemAccessor={itemAccessor}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nRightPanel.propTypes = {\n itemAccessor: PropTypes.func,\n onItemChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nRightPanel.defaultProps = {\n itemAccessor: () => { },\n onItemChange: () => { },\n onPageChange: () => { },\n onSettingChange: () => { },\n pages: [],\n};\n\nexport default memo(RightPanel);\n"],"names":["exceptionalClasses","RightPanel","itemAccessor","onItemChange","onPageChange","onSettingChange","pages","useBuilderContext","activeTab","editedElement","isRightPanelOpen","isSlidesPanelOpen","setActiveElement","setActiveTab","setIsRightPanelOpen","usePropContext","acceptedItems","layoutSettings","settings","panelRef","useRef","useTranslatedTexts","LAYOUT_SETTINGS","PAGE_SETTINGS","SETTINGS","settingMap","i_","details","id","item","findItemById","itemType","title","capitalize","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","editedEl","editedElId","selectedItem","element","updateFunc","panelConfig","fallback","substr","checkSelectedItem","Object","keys","length","e","tabsWithSettings","getTabsWithSettings","tabs","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs","propTypes","PropTypes","func","arrayOf","shape","defaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/Panels/RightPanel/RightPanel.js"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\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 { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/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';\nimport { capitalize } from '../../../utils/string';\n\nconst exceptionalClasses = [\n 'pageSettingSideBtn', 'paneClose', 'paneToggler', 'forZoom', 'jSheetContextMenu',\n];\n\nconst RightPanel = ({\n itemAccessor,\n onItemChange,\n onPageChange,\n onSettingChange,\n pages,\n}) => {\n const {\n activeTab,\n editedElement,\n isRightPanelOpen,\n isSlidesPanelOpen,\n setActiveElement,\n setActiveTab,\n setIsRightPanelOpen,\n } = useBuilderContext();\n const { acceptedItems, settings: layoutSettings } = usePropContext();\n const panelRef = useRef(null);\n const { LAYOUT_SETTINGS, PAGE_SETTINGS, SETTINGS } = useTranslatedTexts();\n const settingMap = {\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 return `${capitalize(acceptedItems[item.itemType].title || item.itemType)} ${SETTINGS}`;\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: () => 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, setActiveElement, updater: onItemChange };\n }\n return setting;\n }) || Page.settings,\n };\n },\n title: () => PAGE_SETTINGS,\n updater: onPageChange,\n },\n };\n\n let editedEl;\n let editedElId;\n let selectedItem;\n let element;\n let updateFunc;\n let title;\n\n const panelConfig = () => {\n selectedItem = editedEl.details(editedElId);\n element = editedEl.settings(selectedItem);\n updateFunc = editedEl.updater;\n title = editedEl.title(selectedItem);\n };\n\n const fallback = () => {\n setActiveElement(null);\n editedEl = settingMap.l_;\n editedElId = editedElement.substr(2);\n panelConfig();\n };\n\n try {\n editedEl = settingMap[editedElement.substr(0, 2)];\n editedElId = editedElement.substr(2);\n const checkSelectedItem = editedEl.details(editedElId);\n if (Object.keys(checkSelectedItem).length === 0) {\n fallback();\n } else {\n panelConfig();\n }\n } catch (e) {\n fallback();\n }\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]);\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 = 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 setActiveElement(null);\n };\n\n useEffect(() => {\n if (isRightPanelOpen) window.addEventListener('click', onClickOutsideForPanel, false);\n return () => {\n window.removeEventListener('click', onClickOutsideForPanel, false);\n };\n }, [isRightPanelOpen]);\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 itemAccessor={itemAccessor}\n onChange={updateFunc}\n settings={tabsWithSettings}\n tabs={tabs}\n />\n </Section>\n </div>\n </Panel>\n </>\n );\n};\n\nRightPanel.propTypes = {\n itemAccessor: PropTypes.func,\n onItemChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nRightPanel.defaultProps = {\n itemAccessor: () => { },\n onItemChange: () => { },\n onPageChange: () => { },\n onSettingChange: () => { },\n pages: [],\n};\n\nexport default memo(RightPanel);\n"],"names":["exceptionalClasses","RightPanel","itemAccessor","onItemChange","onPageChange","onSettingChange","pages","useBuilderContext","activeTab","editedElement","isRightPanelOpen","isSlidesPanelOpen","setActiveElement","setActiveTab","setIsRightPanelOpen","usePropContext","acceptedItems","layoutSettings","settings","panelRef","useRef","useTranslatedTexts","LAYOUT_SETTINGS","PAGE_SETTINGS","SETTINGS","settingMap","i_","details","id","item","findItemById","itemType","title","capitalize","updater","l_","REPORT_SETTINGS_ITEM_TYPE","Layout","p_","backgroundColor","reportBackgroundColor","find","page","PAGE_SETTINGS_ITEM_TYPE","pageItem","Page","map","setting","key","editedEl","editedElId","selectedItem","element","updateFunc","panelConfig","fallback","substr","checkSelectedItem","Object","keys","length","e","tabsWithSettings","getTabsWithSettings","tabs","useEffect","currentTab","right","panelAdditionalClassName","classNames","isIdle","otherOpened","onClickOutsideForPanel","current","contains","target","document","activeElement","Array","from","classList","some","xClass","includes","closest","window","addEventListener","removeEventListener","_jsx","_jsxs","propTypes","PropTypes","func","arrayOf","shape","defaultProps","memo"],"mappings":"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"}
|
|
@@ -96,7 +96,7 @@ var SlidesPanel = function SlidesPanel(_ref) {
|
|
|
96
96
|
return /*#__PURE__*/jsxs(Panel, {
|
|
97
97
|
additionalClassName: panelAdditionalClassName,
|
|
98
98
|
onAnimationEnd: onAnimationEnd,
|
|
99
|
-
children: [
|
|
99
|
+
children: [isRightPanelOpen ? null : /*#__PURE__*/jsx(SlidesPanelToggler, {
|
|
100
100
|
onClosePanel: onClosePanel
|
|
101
101
|
}), (isSlidesPanelOpen || !isSlidesPanelOpen && !animationEnd) && /*#__PURE__*/jsx("div", {
|
|
102
102
|
className: "toolItemWrapper f-height d-flex dir-col",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlidesPanel.js","sources":["../../../../../src/components/Panels/SlidesPanel/SlidesPanel.js"],"sourcesContent":["import { memo, useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FixedSizeList } from 'react-window';\nimport Panel from '../../Builder/Panel';\nimport SortablePageList from './SortablePageList';\nimport Section from '../../Builder/Section';\nimport { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/propContext';\nimport { arrayMove } from '../../../utils/functions';\nimport SlidesPanelToggler from './SlidesPanelToggler';\nimport ListWrapper from './ListWrapper';\nimport Button from '../../Settings/Button';\nimport { useClickOutsideListener, useTranslatedTexts } from '../../../utils/hooks';\n\nconst SlidesPanel = ({\n additionalPageItems,\n hashCode,\n itemAccessor,\n onPageAdd,\n onPageDuplicate,\n onPageOrdersChange,\n onPageRemove,\n pages,\n}) => {\n const {\n isRightPanelOpen,\n isSlidesPanelOpen,\n setIsAllSlidesPanelOpen,\n setIsSlidesPanelOpen,\n } = useBuilderContext();\n const {\n acceptedItems,\n disableInteraction,\n onAnEventTrigger,\n settings: reportSettings,\n useExperimentalFeatures,\n } = usePropContext();\n const [animationEnd, setAnimationEnd] = useState(true);\n\n const pageGetter = useCallback(index => {\n return pages[index];\n }, [pages]);\n\n const onPageSort = useCallback(({ newIndex, oldIndex }, nativeEvent, ref) => {\n const instance = ref.getWrappedInstance();\n const list = instance.sortablePageListRef.current;\n\n const newPageOrders = arrayMove(pages, oldIndex, newIndex).reduce((acc, page, index) => {\n acc[page.id] = { order: index + 1 };\n return acc;\n }, {});\n\n onPageOrdersChange(newPageOrders);\n onAnEventTrigger('sortPageFromSlides');\n\n list.forceUpdate();\n }, [pages]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSlides f-height',\n {\n isIdle: !isSlidesPanelOpen,\n otherOpened: isRightPanelOpen,\n },\n );\n\n const onClosePanel = () => {\n setAnimationEnd(false);\n setIsSlidesPanelOpen(false);\n };\n\n const onAnimationEnd = useCallback(() => {\n if (!isSlidesPanelOpen) {\n setAnimationEnd(true);\n }\n }, [isSlidesPanelOpen]);\n\n useClickOutsideListener(\n ['jfReport-canvas', 'jfReport-viewport', 'jfReport-pageInfo'],\n isSlidesPanelOpen,\n onClosePanel,\n );\n\n const { SLIDES } = useTranslatedTexts();\n\n return (\n <Panel\n additionalClassName={panelAdditionalClassName}\n onAnimationEnd={onAnimationEnd}\n >\n {
|
|
1
|
+
{"version":3,"file":"SlidesPanel.js","sources":["../../../../../src/components/Panels/SlidesPanel/SlidesPanel.js"],"sourcesContent":["import { memo, useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FixedSizeList } from 'react-window';\nimport Panel from '../../Builder/Panel';\nimport SortablePageList from './SortablePageList';\nimport Section from '../../Builder/Section';\nimport { useBuilderContext } from '../../../utils/builderContext';\nimport { usePropContext } from '../../../utils/propContext';\nimport { arrayMove } from '../../../utils/functions';\nimport SlidesPanelToggler from './SlidesPanelToggler';\nimport ListWrapper from './ListWrapper';\nimport Button from '../../Settings/Button';\nimport { useClickOutsideListener, useTranslatedTexts } from '../../../utils/hooks';\n\nconst SlidesPanel = ({\n additionalPageItems,\n hashCode,\n itemAccessor,\n onPageAdd,\n onPageDuplicate,\n onPageOrdersChange,\n onPageRemove,\n pages,\n}) => {\n const {\n isRightPanelOpen,\n isSlidesPanelOpen,\n setIsAllSlidesPanelOpen,\n setIsSlidesPanelOpen,\n } = useBuilderContext();\n const {\n acceptedItems,\n disableInteraction,\n onAnEventTrigger,\n settings: reportSettings,\n useExperimentalFeatures,\n } = usePropContext();\n const [animationEnd, setAnimationEnd] = useState(true);\n\n const pageGetter = useCallback(index => {\n return pages[index];\n }, [pages]);\n\n const onPageSort = useCallback(({ newIndex, oldIndex }, nativeEvent, ref) => {\n const instance = ref.getWrappedInstance();\n const list = instance.sortablePageListRef.current;\n\n const newPageOrders = arrayMove(pages, oldIndex, newIndex).reduce((acc, page, index) => {\n acc[page.id] = { order: index + 1 };\n return acc;\n }, {});\n\n onPageOrdersChange(newPageOrders);\n onAnEventTrigger('sortPageFromSlides');\n\n list.forceUpdate();\n }, [pages]);\n\n // Panel className\n const panelAdditionalClassName = classNames(\n 'jfReport-settings forSlides f-height',\n {\n isIdle: !isSlidesPanelOpen,\n otherOpened: isRightPanelOpen,\n },\n );\n\n const onClosePanel = () => {\n setAnimationEnd(false);\n setIsSlidesPanelOpen(false);\n };\n\n const onAnimationEnd = useCallback(() => {\n if (!isSlidesPanelOpen) {\n setAnimationEnd(true);\n }\n }, [isSlidesPanelOpen]);\n\n useClickOutsideListener(\n ['jfReport-canvas', 'jfReport-viewport', 'jfReport-pageInfo'],\n isSlidesPanelOpen,\n onClosePanel,\n );\n\n const { SLIDES } = useTranslatedTexts();\n\n return (\n <Panel\n additionalClassName={panelAdditionalClassName}\n onAnimationEnd={onAnimationEnd}\n >\n {isRightPanelOpen\n ? null\n : <SlidesPanelToggler onClosePanel={onClosePanel} />}\n {(isSlidesPanelOpen || (!isSlidesPanelOpen && !animationEnd)) && (\n <div className=\"toolItemWrapper f-height d-flex dir-col\">\n <Section\n additionalComponent={useExperimentalFeatures ? (\n <Button\n classNames=\"jfReportButton isAccent showAll\"\n icon=\"allSlides\"\n onClick={() => setIsAllSlidesPanelOpen(true)}\n title=\"Show All\"\n />\n ) : null}\n icon=\"slides\"\n title={SLIDES}\n >\n <div className=\"toolItem-tabContent hasInnerScroll\">\n <ListWrapper\n acceptedItems={acceptedItems}\n additionalPageItems={additionalPageItems}\n component={SortablePageList(FixedSizeList)}\n disableInteraction={disableInteraction}\n hashCode={hashCode}\n itemAccessor={itemAccessor}\n onAnEventTrigger={onAnEventTrigger}\n onPageAdd={onPageAdd}\n onPageDuplicate={onPageDuplicate}\n onPageRemove={onPageRemove}\n onSortEnd={onPageSort}\n pageCount={pages.length}\n pageGetter={pageGetter}\n reportSettings={reportSettings}\n />\n </div>\n </Section>\n </div>\n )}\n </Panel>\n );\n};\n\nSlidesPanel.propTypes = {\n additionalPageItems: PropTypes.arrayOf(PropTypes.node),\n hashCode: PropTypes.string,\n itemAccessor: PropTypes.func,\n onPageAdd: PropTypes.func,\n onPageDuplicate: PropTypes.func,\n onPageOrdersChange: PropTypes.func,\n onPageRemove: PropTypes.func,\n pages: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n};\n\nSlidesPanel.defaultProps = {\n additionalPageItems: [],\n hashCode: '',\n itemAccessor: () => { },\n onPageAdd: () => { },\n onPageDuplicate: () => { },\n onPageOrdersChange: () => { },\n onPageRemove: () => { },\n pages: [],\n};\n\nexport default memo(SlidesPanel);\n"],"names":["SlidesPanel","additionalPageItems","hashCode","itemAccessor","onPageAdd","onPageDuplicate","onPageOrdersChange","onPageRemove","pages","useBuilderContext","isRightPanelOpen","isSlidesPanelOpen","setIsAllSlidesPanelOpen","setIsSlidesPanelOpen","usePropContext","acceptedItems","disableInteraction","onAnEventTrigger","reportSettings","settings","useExperimentalFeatures","useState","animationEnd","setAnimationEnd","pageGetter","useCallback","index","onPageSort","nativeEvent","ref","newIndex","oldIndex","instance","getWrappedInstance","list","sortablePageListRef","current","newPageOrders","arrayMove","reduce","acc","page","id","order","forceUpdate","panelAdditionalClassName","classNames","isIdle","otherOpened","onClosePanel","onAnimationEnd","useClickOutsideListener","useTranslatedTexts","SLIDES","_jsxs","_jsx","SortablePageList","FixedSizeList","length","propTypes","PropTypes","arrayOf","node","string","func","shape","defaultProps","memo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAMA,WAAW,GAAG,SAAdA,WAAc,OASd;AAAA,MARJC,mBAQI,QARJA,mBAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,YAMI,QANJA,YAMI;AAAA,MALJC,SAKI,QALJA,SAKI;AAAA,MAJJC,eAII,QAJJA,eAII;AAAA,MAHJC,kBAGI,QAHJA,kBAGI;AAAA,MAFJC,YAEI,QAFJA,YAEI;AAAA,MADJC,KACI,QADJA,KACI;;AACJ,2BAKIC,iBAAiB,EALrB;AAAA,MACEC,gBADF,sBACEA,gBADF;AAAA,MAEEC,iBAFF,sBAEEA,iBAFF;AAAA,MAGEC,uBAHF,sBAGEA,uBAHF;AAAA,MAIEC,oBAJF,sBAIEA,oBAJF;;AAMA,wBAMIC,cAAc,EANlB;AAAA,MACEC,aADF,mBACEA,aADF;AAAA,MAEEC,kBAFF,mBAEEA,kBAFF;AAAA,MAGEC,gBAHF,mBAGEA,gBAHF;AAAA,MAIYC,cAJZ,mBAIEC,QAJF;AAAA,MAKEC,uBALF,mBAKEA,uBALF;;AAOA,kBAAwCC,QAAQ,CAAC,IAAD,CAAhD;AAAA;AAAA,MAAOC,YAAP;AAAA,MAAqBC,eAArB;;AAEA,MAAMC,UAAU,GAAGC,WAAW,CAAC,UAAAC,KAAK,EAAI;AACtC,WAAOlB,KAAK,CAACkB,KAAD,CAAZ;AACD,GAF6B,EAE3B,CAAClB,KAAD,CAF2B,CAA9B;AAIA,MAAMmB,UAAU,GAAGF,WAAW,CAAC,iBAAyBG,WAAzB,EAAsCC,GAAtC,EAA8C;AAAA,QAA3CC,QAA2C,SAA3CA,QAA2C;AAAA,QAAjCC,QAAiC,SAAjCA,QAAiC;AAC3E,QAAMC,QAAQ,GAAGH,GAAG,CAACI,kBAAJ,EAAjB;AACA,QAAMC,IAAI,GAAGF,QAAQ,CAACG,mBAAT,CAA6BC,OAA1C;AAEA,QAAMC,aAAa,GAAGC,SAAS,CAAC9B,KAAD,EAAQuB,QAAR,EAAkBD,QAAlB,CAAT,CAAqCS,MAArC,CAA4C,UAACC,GAAD,EAAMC,IAAN,EAAYf,KAAZ,EAAsB;AACtFc,MAAAA,GAAG,CAACC,IAAI,CAACC,EAAN,CAAH,GAAe;AAAEC,QAAAA,KAAK,EAAEjB,KAAK,GAAG;AAAjB,OAAf;AACA,aAAOc,GAAP;AACD,KAHqB,EAGnB,EAHmB,CAAtB;AAKAlC,IAAAA,kBAAkB,CAAC+B,aAAD,CAAlB;AACApB,IAAAA,gBAAgB,CAAC,oBAAD,CAAhB;AAEAiB,IAAAA,IAAI,CAACU,WAAL;AACD,GAb6B,EAa3B,CAACpC,KAAD,CAb2B,CAA9B,CApBI;;AAoCJ,MAAMqC,wBAAwB,GAAGC,UAAU,CACzC,sCADyC,EAEzC;AACEC,IAAAA,MAAM,EAAE,CAACpC,iBADX;AAEEqC,IAAAA,WAAW,EAAEtC;AAFf,GAFyC,CAA3C;;AAQA,MAAMuC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB1B,IAAAA,eAAe,CAAC,KAAD,CAAf;AACAV,IAAAA,oBAAoB,CAAC,KAAD,CAApB;AACD,GAHD;;AAKA,MAAMqC,cAAc,GAAGzB,WAAW,CAAC,YAAM;AACvC,QAAI,CAACd,iBAAL,EAAwB;AACtBY,MAAAA,eAAe,CAAC,IAAD,CAAf;AACD;AACF,GAJiC,EAI/B,CAACZ,iBAAD,CAJ+B,CAAlC;AAMAwC,EAAAA,uBAAuB,CACrB,CAAC,iBAAD,EAAoB,mBAApB,EAAyC,mBAAzC,CADqB,EAErBxC,iBAFqB,EAGrBsC,YAHqB,CAAvB;;AAMA,4BAAmBG,kBAAkB,EAArC;AAAA,MAAQC,MAAR,uBAAQA,MAAR;;AAEA,sBACEC,KAAC,KAAD;AACE,IAAA,mBAAmB,EAAET,wBADvB;AAEE,IAAA,cAAc,EAAEK,cAFlB;AAAA,eAIGxC,gBAAgB,GACb,IADa,gBAEb6C,IAAC,kBAAD;AAAoB,MAAA,YAAY,EAAEN;AAAlC,MANN,EAOG,CAACtC,iBAAiB,IAAK,CAACA,iBAAD,IAAsB,CAACW,YAA9C,kBACCiC;AAAK,MAAA,SAAS,EAAC,yCAAf;AAAA,6BACEA,IAAC,OAAD;AACE,QAAA,mBAAmB,EAAEnC,uBAAuB,gBAC1CmC,IAAC,MAAD;AACE,UAAA,UAAU,EAAC,iCADb;AAEE,UAAA,IAAI,EAAC,WAFP;AAGE,UAAA,OAAO,EAAE;AAAA,mBAAM3C,uBAAuB,CAAC,IAAD,CAA7B;AAAA,WAHX;AAIE,UAAA,KAAK,EAAC;AAJR,UAD0C,GAOxC,IARN;AASE,QAAA,IAAI,EAAC,QATP;AAUE,QAAA,KAAK,EAAEyC,MAVT;AAAA,+BAYEE;AAAK,UAAA,SAAS,EAAC,oCAAf;AAAA,iCACEA,IAAC,WAAD;AACE,YAAA,aAAa,EAAExC,aADjB;AAEE,YAAA,mBAAmB,EAAEd,mBAFvB;AAGE,YAAA,SAAS,EAAEuD,gBAAgB,CAACC,aAAD,CAH7B;AAIE,YAAA,kBAAkB,EAAEzC,kBAJtB;AAKE,YAAA,QAAQ,EAAEd,QALZ;AAME,YAAA,YAAY,EAAEC,YANhB;AAOE,YAAA,gBAAgB,EAAEc,gBAPpB;AAQE,YAAA,SAAS,EAAEb,SARb;AASE,YAAA,eAAe,EAAEC,eATnB;AAUE,YAAA,YAAY,EAAEE,YAVhB;AAWE,YAAA,SAAS,EAAEoB,UAXb;AAYE,YAAA,SAAS,EAAEnB,KAAK,CAACkD,MAZnB;AAaE,YAAA,UAAU,EAAElC,UAbd;AAcE,YAAA,cAAc,EAAEN;AAdlB;AADF;AAZF;AADF,MARJ;AAAA,IADF;AA6CD,CArHD;;AAuHAlB,WAAW,CAAC2D,SAAZ,GAAwB;AACtB1D,EAAAA,mBAAmB,EAAE2D,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,IAA5B,CADC;AAEtB5D,EAAAA,QAAQ,EAAE0D,SAAS,CAACG,MAFE;AAGtB5D,EAAAA,YAAY,EAAEyD,SAAS,CAACI,IAHF;AAItB5D,EAAAA,SAAS,EAAEwD,SAAS,CAACI,IAJC;AAKtB3D,EAAAA,eAAe,EAAEuD,SAAS,CAACI,IALL;AAMtB1D,EAAAA,kBAAkB,EAAEsD,SAAS,CAACI,IANR;AAOtBzD,EAAAA,YAAY,EAAEqD,SAAS,CAACI,IAPF;AAQtBxD,EAAAA,KAAK,EAAEoD,SAAS,CAACC,OAAV,CACLD,SAAS,CAACK,KAAV,CAAgB,EAAhB,CADK;AARe,CAAxB;AAaAjE,WAAW,CAACkE,YAAZ,GAA2B;AACzBjE,EAAAA,mBAAmB,EAAE,EADI;AAEzBC,EAAAA,QAAQ,EAAE,EAFe;AAGzBC,EAAAA,YAAY,EAAE,wBAAM,EAHK;AAIzBC,EAAAA,SAAS,EAAE,qBAAM,EAJQ;AAKzBC,EAAAA,eAAe,EAAE,2BAAM,EALE;AAMzBC,EAAAA,kBAAkB,EAAE,8BAAM,EAND;AAOzBC,EAAAA,YAAY,EAAE,wBAAM,EAPK;AAQzBC,EAAAA,KAAK,EAAE;AARkB,CAA3B;AAWA,iCAAe2D,IAAI,CAACnE,WAAD,CAAnB;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import 'core-js/modules/es.array.map.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import ReactQuill from 'react-quill';
|
|
4
|
+
import domPurify from 'dompurify';
|
|
4
5
|
import PropTypes from 'prop-types';
|
|
5
6
|
import { modules, formats } from './textEditorConstants.js';
|
|
6
7
|
import { fontSizes } from '../../constants/fonts.js';
|
|
@@ -65,6 +66,11 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
65
66
|
}
|
|
66
67
|
});
|
|
67
68
|
|
|
69
|
+
_defineProperty(_assertThisInitialized(_this), "handleSetContent", function (value) {
|
|
70
|
+
var setContent = _this.props.setContent;
|
|
71
|
+
setContent(domPurify.sanitize(value));
|
|
72
|
+
});
|
|
73
|
+
|
|
68
74
|
_this.quill = /*#__PURE__*/React.createRef();
|
|
69
75
|
return _this;
|
|
70
76
|
}
|
|
@@ -88,8 +94,7 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
88
94
|
value: function render() {
|
|
89
95
|
var _this$props2 = this.props,
|
|
90
96
|
content = _this$props2.content,
|
|
91
|
-
placeholder = _this$props2.placeholder
|
|
92
|
-
setContent = _this$props2.setContent;
|
|
97
|
+
placeholder = _this$props2.placeholder;
|
|
93
98
|
return /*#__PURE__*/jsx("div", {
|
|
94
99
|
className: "f-all",
|
|
95
100
|
onKeyDown: this.handleKeyDown,
|
|
@@ -97,7 +102,7 @@ var QuillEditor = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
97
102
|
ref: this.quill,
|
|
98
103
|
formats: QuillEditor.formats,
|
|
99
104
|
modules: QuillEditor.modules,
|
|
100
|
-
onChange:
|
|
105
|
+
onChange: this.handleSetContent,
|
|
101
106
|
placeholder: placeholder,
|
|
102
107
|
preserveWhitespace: true,
|
|
103
108
|
value: content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillEditor.js","sources":["../../../../src/components/TextEditor/QuillEditor.js"],"sourcesContent":["import React from 'react';\nimport ReactQuill from 'react-quill';\nimport PropTypes from 'prop-types';\nimport { formats, modules } from './textEditorConstants';\nimport { fontSizes } from '../../constants/fonts';\nimport 'react-quill/dist/quill.snow.css';\n\nconst Size = ReactQuill.Quill.import('attributors/style/size');\nSize.whitelist = fontSizes.map(s => `${s}px`);\nReactQuill.Quill.register(Size, true);\n\nclass QuillEditor extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.quill = React.createRef();\n }\n\n componentDidMount() {\n if (this.quill.current !== null) {\n const { content } = this.props;\n const editor = this.quill.current.getEditor();\n editor.setSelection(0, content.length);\n }\n }\n\n componentWillUnmount() {\n this.saveAndQuit();\n }\n\n saveAndQuit = () => {\n const { content, handleSave, setIsTextEditorOpen } = this.props;\n setIsTextEditorOpen(false);\n handleSave(content);\n }\n\n handleKeyDown = e => {\n e.stopPropagation();\n if (e.keyCode === 27) {\n this.saveAndQuit();\n }\n }\n\n render() {\n const {
|
|
1
|
+
{"version":3,"file":"QuillEditor.js","sources":["../../../../src/components/TextEditor/QuillEditor.js"],"sourcesContent":["import React from 'react';\nimport ReactQuill from 'react-quill';\nimport domPurify from 'dompurify';\nimport PropTypes from 'prop-types';\nimport { formats, modules } from './textEditorConstants';\nimport { fontSizes } from '../../constants/fonts';\nimport 'react-quill/dist/quill.snow.css';\n\nconst Size = ReactQuill.Quill.import('attributors/style/size');\nSize.whitelist = fontSizes.map(s => `${s}px`);\nReactQuill.Quill.register(Size, true);\n\nclass QuillEditor extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.quill = React.createRef();\n }\n\n componentDidMount() {\n if (this.quill.current !== null) {\n const { content } = this.props;\n const editor = this.quill.current.getEditor();\n editor.setSelection(0, content.length);\n }\n }\n\n componentWillUnmount() {\n this.saveAndQuit();\n }\n\n saveAndQuit = () => {\n const { content, handleSave, setIsTextEditorOpen } = this.props;\n setIsTextEditorOpen(false);\n handleSave(content);\n }\n\n handleKeyDown = e => {\n e.stopPropagation();\n if (e.keyCode === 27) {\n this.saveAndQuit();\n }\n }\n\n handleSetContent = value => {\n const { setContent } = this.props;\n setContent(domPurify.sanitize(value));\n }\n\n render() {\n const { content, placeholder } = this.props;\n\n return (\n <div\n className=\"f-all\"\n onKeyDown={this.handleKeyDown}\n >\n <ReactQuill\n ref={this.quill}\n formats={QuillEditor.formats}\n modules={QuillEditor.modules}\n onChange={this.handleSetContent}\n placeholder={placeholder}\n preserveWhitespace\n value={content}\n />\n </div>\n );\n }\n}\n\nQuillEditor.modules = modules;\nQuillEditor.formats = formats;\n\nQuillEditor.propTypes = {\n content: PropTypes.string,\n handleSave: PropTypes.func,\n placeholder: PropTypes.string,\n setContent: PropTypes.func,\n setIsTextEditorOpen: PropTypes.func,\n};\n\nQuillEditor.defaultProps = {\n content: '',\n handleSave: () => {},\n placeholder: 'Click to edit text',\n setContent: () => {},\n setIsTextEditorOpen: () => {},\n};\n\nexport default QuillEditor;\n"],"names":["Size","ReactQuill","Quill","import","whitelist","fontSizes","map","s","register","QuillEditor","props","content","handleSave","setIsTextEditorOpen","e","stopPropagation","keyCode","saveAndQuit","value","setContent","domPurify","sanitize","quill","React","createRef","current","editor","getEditor","setSelection","length","placeholder","_jsx","handleKeyDown","formats","modules","handleSetContent","PureComponent","propTypes","PropTypes","string","func","defaultProps"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
24
24
|
isSelected = _ref.isSelected,
|
|
25
25
|
placeholder = _ref.placeholder;
|
|
26
26
|
|
|
27
|
-
var _useState = useState(content),
|
|
27
|
+
var _useState = useState(domPurify.sanitize(content)),
|
|
28
28
|
_useState2 = _slicedToArray(_useState, 2),
|
|
29
29
|
_content = _useState2[0],
|
|
30
30
|
setContent = _useState2[1];
|
|
@@ -40,7 +40,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
40
40
|
}, [isSelected, isLocked]);
|
|
41
41
|
var isNotEmpty = useMemo(function () {
|
|
42
42
|
var el = document.createElement('div');
|
|
43
|
-
el.innerHTML =
|
|
43
|
+
el.innerHTML = _content;
|
|
44
44
|
return !!el.innerText;
|
|
45
45
|
}, [_content]);
|
|
46
46
|
return isSelected && isTextEditorOpen ? /*#__PURE__*/jsx(QuillEditor, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextEditor.js","sources":["../../../../src/components/TextEditor/TextEditor.js"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport domPurify from 'dompurify';\nimport QuillEditor from './QuillEditor';\nimport { useBuilderContext } from '../../utils/builderContext';\n\nconst TextEditor = ({\n content,\n handleSave,\n isLocked,\n isSelected,\n placeholder,\n}) => {\n const [_content, setContent] = useState(content);\n\n const { isTextEditorOpen, setIsTextEditorOpen } = useBuilderContext();\n\n const onClick = useCallback(() => {\n if (isSelected && !isLocked) {\n setIsTextEditorOpen(true);\n }\n }, [isSelected, isLocked]);\n\n const isNotEmpty = useMemo(() => {\n const el = document.createElement('div');\n el.innerHTML =
|
|
1
|
+
{"version":3,"file":"TextEditor.js","sources":["../../../../src/components/TextEditor/TextEditor.js"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport domPurify from 'dompurify';\nimport QuillEditor from './QuillEditor';\nimport { useBuilderContext } from '../../utils/builderContext';\n\nconst TextEditor = ({\n content,\n handleSave,\n isLocked,\n isSelected,\n placeholder,\n}) => {\n const [_content, setContent] = useState(domPurify.sanitize(content));\n\n const { isTextEditorOpen, setIsTextEditorOpen } = useBuilderContext();\n\n const onClick = useCallback(() => {\n if (isSelected && !isLocked) {\n setIsTextEditorOpen(true);\n }\n }, [isSelected, isLocked]);\n\n const isNotEmpty = useMemo(() => {\n const el = document.createElement('div');\n el.innerHTML = _content;\n return !!el.innerText;\n }, [_content]);\n\n return isSelected && isTextEditorOpen ? (\n <QuillEditor\n content={_content}\n handleSave={handleSave}\n placeholder={placeholder}\n setContent={setContent}\n setIsTextEditorOpen={setIsTextEditorOpen}\n />\n ) : (\n <div\n className={`f-all ql-editor${isNotEmpty ? '' : ' isEmptyTextElement'}`}\n dangerouslySetInnerHTML={{\n __html: isNotEmpty ? _content : placeholder,\n }}\n onClick={onClick}\n onKeyDown={() => {}}\n />\n );\n};\n\nTextEditor.propTypes = {\n content: PropTypes.string,\n handleSave: PropTypes.func,\n isLocked: PropTypes.bool,\n isSelected: PropTypes.bool,\n placeholder: PropTypes.string,\n};\n\nTextEditor.defaultProps = {\n content: '',\n handleSave: () => {},\n isLocked: false,\n isSelected: false,\n placeholder: 'Click to edit text',\n};\n\nexport default TextEditor;\n"],"names":["TextEditor","content","handleSave","isLocked","isSelected","placeholder","useState","domPurify","sanitize","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","innerText","_jsx","__html","propTypes","PropTypes","string","func","bool","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;IAMMA,UAAU,GAAG,SAAbA,UAAa,OAMb;AAAA,MALJC,OAKI,QALJA,OAKI;AAAA,MAJJC,UAII,QAJJA,UAII;AAAA,MAHJC,QAGI,QAHJA,QAGI;AAAA,MAFJC,UAEI,QAFJA,UAEI;AAAA,MADJC,WACI,QADJA,WACI;;AACJ,kBAA+BC,QAAQ,CAACC,SAAS,CAACC,QAAV,CAAmBP,OAAnB,CAAD,CAAvC;AAAA;AAAA,MAAOQ,QAAP;AAAA,MAAiBC,UAAjB;;AAEA,2BAAkDC,iBAAiB,EAAnE;AAAA,MAAQC,gBAAR,sBAAQA,gBAAR;AAAA,MAA0BC,mBAA1B,sBAA0BA,mBAA1B;;AAEA,MAAMC,OAAO,GAAGC,WAAW,CAAC,YAAM;AAChC,QAAIX,UAAU,IAAI,CAACD,QAAnB,EAA6B;AAC3BU,MAAAA,mBAAmB,CAAC,IAAD,CAAnB;AACD;AACF,GAJ0B,EAIxB,CAACT,UAAD,EAAaD,QAAb,CAJwB,CAA3B;AAMA,MAAMa,UAAU,GAAGC,OAAO,CAAC,YAAM;AAC/B,QAAMC,EAAE,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAX;AACAF,IAAAA,EAAE,CAACG,SAAH,GAAeZ,QAAf;AACA,WAAO,CAAC,CAACS,EAAE,CAACI,SAAZ;AACD,GAJyB,EAIvB,CAACb,QAAD,CAJuB,CAA1B;AAMA,SAAOL,UAAU,IAAIQ,gBAAd,gBACLW,IAAC,WAAD;AACE,IAAA,OAAO,EAAEd,QADX;AAEE,IAAA,UAAU,EAAEP,UAFd;AAGE,IAAA,WAAW,EAAEG,WAHf;AAIE,IAAA,UAAU,EAAEK,UAJd;AAKE,IAAA,mBAAmB,EAAEG;AALvB,IADK,gBASLU;AACE,IAAA,SAAS,2BAAoBP,UAAU,GAAG,EAAH,GAAQ,qBAAtC,CADX;AAEE,IAAA,uBAAuB,EAAE;AACvBQ,MAAAA,MAAM,EAAER,UAAU,GAAGP,QAAH,GAAcJ;AADT,KAF3B;AAKE,IAAA,OAAO,EAAES,OALX;AAME,IAAA,SAAS,EAAE,qBAAM;AANnB,IATF;AAkBD;;AAEDd,UAAU,CAACyB,SAAX,GAAuB;AACrBxB,EAAAA,OAAO,EAAEyB,SAAS,CAACC,MADE;AAErBzB,EAAAA,UAAU,EAAEwB,SAAS,CAACE,IAFD;AAGrBzB,EAAAA,QAAQ,EAAEuB,SAAS,CAACG,IAHC;AAIrBzB,EAAAA,UAAU,EAAEsB,SAAS,CAACG,IAJD;AAKrBxB,EAAAA,WAAW,EAAEqB,SAAS,CAACC;AALF,CAAvB;AAQA3B,UAAU,CAAC8B,YAAX,GAA0B;AACxB7B,EAAAA,OAAO,EAAE,EADe;AAExBC,EAAAA,UAAU,EAAE,sBAAM,EAFM;AAGxBC,EAAAA,QAAQ,EAAE,KAHc;AAIxBC,EAAAA,UAAU,EAAE,KAJY;AAKxBC,EAAAA,WAAW,EAAE;AALW,CAA1B;;;;"}
|