@jotforminc/dnd-builder 2.2.0 → 2.2.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,15 @@
|
|
|
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.2.1](https://github.com/jotform/dnd-builder/compare/v2.0.2...v2.2.1) (2022-06-24)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* changed withclickoutside logic ([5b0cac3](https://github.com/jotform/dnd-builder/commit/5b0cac338e740ede76de9bfe04eebe13bfb135ef))
|
|
11
|
+
* **readme:** readme img height fix ([18cf8cb](https://github.com/jotform/dnd-builder/commit/18cf8cbf2c653caebc7d7a6f6a17e8a3b2c4dc20))
|
|
12
|
+
* **TextEditor:** fix for content ([f0a8327](https://github.com/jotform/dnd-builder/commit/f0a83275905ec98ff200c34237e6f88793cdde22))
|
|
13
|
+
|
|
5
14
|
## [2.2.0](https://github.com/jotform/dnd-builder/compare/v2.0.3...v2.2.0) (2022-06-14)
|
|
6
15
|
|
|
7
16
|
### [2.0.3](https://github.com/jotform/dnd-builder/compare/v2.0.2...v2.0.3) (2022-03-10)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var PropTypes = require('prop-types');
|
|
5
|
+
var domPurify = require('dompurify');
|
|
5
6
|
var QuillEditor = require('./QuillEditor.js');
|
|
6
7
|
var builderContext = require('../../utils/builderContext.js');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -9,6 +10,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
9
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
11
|
|
|
11
12
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
13
|
+
var domPurify__default = /*#__PURE__*/_interopDefaultLegacy(domPurify);
|
|
12
14
|
|
|
13
15
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
16
|
|
|
@@ -45,7 +47,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
45
47
|
}, [isSelected, isLocked]);
|
|
46
48
|
var isNotEmpty = React.useMemo(function () {
|
|
47
49
|
var el = document.createElement('div');
|
|
48
|
-
el.innerHTML = _content;
|
|
50
|
+
el.innerHTML = domPurify__default['default'].sanitize(_content);
|
|
49
51
|
return !!el.innerText;
|
|
50
52
|
}, [_content]);
|
|
51
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 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 = _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","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","innerText","_jsx","__html","propTypes","PropTypes","string","func","bool","defaultProps"],"mappings":"
|
|
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 = domPurify.sanitize(_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","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","domPurify","sanitize","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,CAACL,OAAD,CAAvC;AAAA;AAAA,MAAOM,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,QAAIT,UAAU,IAAI,CAACD,QAAnB,EAA6B;AAC3BQ,MAAAA,mBAAmB,CAAC,IAAD,CAAnB;AACD;AACF,GAJ0B,EAIxB,CAACP,UAAD,EAAaD,QAAb,CAJwB,CAA3B;AAMA,MAAMW,UAAU,GAAGC,aAAO,CAAC,YAAM;AAC/B,QAAMC,EAAE,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAX;AACAF,IAAAA,EAAE,CAACG,SAAH,GAAeC,6BAAS,CAACC,QAAV,CAAmBd,QAAnB,CAAf;AACA,WAAO,CAAC,CAACS,EAAE,CAACM,SAAZ;AACD,GAJyB,EAIvB,CAACf,QAAD,CAJuB,CAA1B;AAMA,SAAOH,UAAU,IAAIM,gBAAd,gBACLa,eAAC,WAAD;AACE,IAAA,OAAO,EAAEhB,QADX;AAEE,IAAA,UAAU,EAAEL,UAFd;AAGE,IAAA,WAAW,EAAEG,WAHf;AAIE,IAAA,UAAU,EAAEG,UAJd;AAKE,IAAA,mBAAmB,EAAEG;AALvB,IADK,gBASLY;AACE,IAAA,SAAS,2BAAoBT,UAAU,GAAG,EAAH,GAAQ,qBAAtC,CADX;AAEE,IAAA,uBAAuB,EAAE;AACvBU,MAAAA,MAAM,EAAEV,UAAU,GAAGP,QAAH,GAAcF;AADT,KAF3B;AAKE,IAAA,OAAO,EAAEO,OALX;AAME,IAAA,SAAS,EAAE,qBAAM;AANnB,IATF;AAkBD;;AAEDZ,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;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useState, useCallback, useMemo } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
+
import domPurify from 'dompurify';
|
|
3
4
|
import QuillEditor from './QuillEditor.js';
|
|
4
5
|
import { useBuilderContext } from '../../utils/builderContext.js';
|
|
5
6
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -39,7 +40,7 @@ var TextEditor = function TextEditor(_ref) {
|
|
|
39
40
|
}, [isSelected, isLocked]);
|
|
40
41
|
var isNotEmpty = useMemo(function () {
|
|
41
42
|
var el = document.createElement('div');
|
|
42
|
-
el.innerHTML = _content;
|
|
43
|
+
el.innerHTML = domPurify.sanitize(_content);
|
|
43
44
|
return !!el.innerText;
|
|
44
45
|
}, [_content]);
|
|
45
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 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 = _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","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","innerText","_jsx","__html","propTypes","PropTypes","string","func","bool","defaultProps"],"mappings":"
|
|
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 = domPurify.sanitize(_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","_content","setContent","useBuilderContext","isTextEditorOpen","setIsTextEditorOpen","onClick","useCallback","isNotEmpty","useMemo","el","document","createElement","innerHTML","domPurify","sanitize","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,CAACL,OAAD,CAAvC;AAAA;AAAA,MAAOM,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,QAAIT,UAAU,IAAI,CAACD,QAAnB,EAA6B;AAC3BQ,MAAAA,mBAAmB,CAAC,IAAD,CAAnB;AACD;AACF,GAJ0B,EAIxB,CAACP,UAAD,EAAaD,QAAb,CAJwB,CAA3B;AAMA,MAAMW,UAAU,GAAGC,OAAO,CAAC,YAAM;AAC/B,QAAMC,EAAE,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAX;AACAF,IAAAA,EAAE,CAACG,SAAH,GAAeC,SAAS,CAACC,QAAV,CAAmBd,QAAnB,CAAf;AACA,WAAO,CAAC,CAACS,EAAE,CAACM,SAAZ;AACD,GAJyB,EAIvB,CAACf,QAAD,CAJuB,CAA1B;AAMA,SAAOH,UAAU,IAAIM,gBAAd,gBACLa,IAAC,WAAD;AACE,IAAA,OAAO,EAAEhB,QADX;AAEE,IAAA,UAAU,EAAEL,UAFd;AAGE,IAAA,WAAW,EAAEG,WAHf;AAIE,IAAA,UAAU,EAAEG,UAJd;AAKE,IAAA,mBAAmB,EAAEG;AALvB,IADK,gBASLY;AACE,IAAA,SAAS,2BAAoBT,UAAU,GAAG,EAAH,GAAQ,qBAAtC,CADX;AAEE,IAAA,uBAAuB,EAAE;AACvBU,MAAAA,MAAM,EAAEV,UAAU,GAAGP,QAAH,GAAcF;AADT,KAF3B;AAKE,IAAA,OAAO,EAAEO,OALX;AAME,IAAA,SAAS,EAAE,qBAAM;AANnB,IATF;AAkBD;;AAEDZ,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;;;;"}
|