@elliemae/ds-wysiwygeditor 3.14.13 → 3.14.14
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.
|
@@ -32,6 +32,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
32
32
|
var import_react = __toESM(require("react"));
|
|
33
33
|
var import_react_quill = __toESM(require("react-quill"));
|
|
34
34
|
var import_quill_blot_formatter = __toESM(require("quill-blot-formatter"));
|
|
35
|
+
var import_uid = require("uid");
|
|
35
36
|
var import_ImageLibraryModal = __toESM(require("./ImageLibraryModal"));
|
|
36
37
|
var import_InsertFieldModal = __toESM(require("./InsertFieldModal"));
|
|
37
38
|
var import_CustomToolbar = require("./CustomToolbar");
|
|
@@ -85,7 +86,6 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
|
|
|
85
86
|
};
|
|
86
87
|
this.getEditor = () => this.quill?.getEditor();
|
|
87
88
|
this.onChangeQuill = (html, delta, source, editor) => {
|
|
88
|
-
console.log("quill detected a change");
|
|
89
89
|
const { showRawHTML, onChange } = this.props;
|
|
90
90
|
if (!showRawHTML)
|
|
91
91
|
onChange(html, delta, source, editor);
|
|
@@ -121,9 +121,12 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
|
|
|
121
121
|
if (props.quillOverrides.length) {
|
|
122
122
|
props.quillOverrides.map((override) => import_react_quill.Quill.register(override, true));
|
|
123
123
|
}
|
|
124
|
+
const instanceUid = (0, import_uid.uid)(12);
|
|
124
125
|
this.state = {
|
|
125
126
|
isImageModalOpen: false,
|
|
126
|
-
isFieldModalOpen: false
|
|
127
|
+
isFieldModalOpen: false,
|
|
128
|
+
uid: instanceUid,
|
|
129
|
+
uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`
|
|
127
130
|
};
|
|
128
131
|
const { toolbar } = this.quillModules;
|
|
129
132
|
if (props.imagesData) {
|
|
@@ -162,16 +165,29 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
|
|
|
162
165
|
customFields,
|
|
163
166
|
imagesData,
|
|
164
167
|
customToolbar,
|
|
165
|
-
handleImageClick,
|
|
166
|
-
handleCustomFieldClick,
|
|
167
168
|
height,
|
|
168
169
|
value,
|
|
169
170
|
showRawHTML,
|
|
170
171
|
onShowHTML,
|
|
171
|
-
onChange,
|
|
172
172
|
hideItems,
|
|
173
|
+
bounds,
|
|
174
|
+
onChange,
|
|
175
|
+
handleImageClick,
|
|
176
|
+
handleCustomFieldClick,
|
|
173
177
|
...editorProps
|
|
174
178
|
} = this.props;
|
|
179
|
+
let finalBoundElement = document.body;
|
|
180
|
+
if (typeof bounds !== "undefined" && bounds?.classList && bounds?.classList instanceof DOMTokenList) {
|
|
181
|
+
finalBoundElement = bounds;
|
|
182
|
+
}
|
|
183
|
+
const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);
|
|
184
|
+
elementsWithClass.forEach((element) => {
|
|
185
|
+
element.classList.remove(this.state.uniqueClassName);
|
|
186
|
+
});
|
|
187
|
+
if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {
|
|
188
|
+
finalBoundElement.classList.add(this.state.uniqueClassName);
|
|
189
|
+
}
|
|
190
|
+
const boundsWorkaround = `.${this.state.uniqueClassName}`;
|
|
175
191
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
176
192
|
"div",
|
|
177
193
|
{
|
|
@@ -198,6 +214,7 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
|
|
|
198
214
|
height,
|
|
199
215
|
borderBottom: "1px solid #ccc"
|
|
200
216
|
},
|
|
217
|
+
bounds: boundsWorkaround,
|
|
201
218
|
...editorProps,
|
|
202
219
|
id: "wysiwyg-text-container"
|
|
203
220
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/DSWYSIWYGEditorImpl.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill, { Quill } from 'react-quill';\nimport BlotFormatter from 'quill-blot-formatter';\n\nimport ImageLibraryModal from './ImageLibraryModal';\nimport InsertFieldModal from './InsertFieldModal';\nimport { CustomToolbar } from './CustomToolbar';\nimport IndentStyle from '../quillOverrides/IndentStyle';\nimport LinkFormat from '../quillOverrides/LinkFormat';\nimport Image from '../quillOverrides/Image';\nimport { formatHTML } from '../utils';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher';\n\nQuill.register('modules/blotFormatter', BlotFormatter);\n\n// Fix block styled formats ----------------\nconst AlignStyle = Quill.import('attributors/style/align');\nconst FontStyle = Quill.import('attributors/style/font');\nFontStyle.whitelist = [\n // allow ONLY these fonts and the default\n 'serif',\n 'monospace',\n 'arial',\n 'comic-sans',\n 'courier-new',\n 'georgia',\n 'helvetica',\n 'lucida',\n];\nconst SizeStyle = Quill.import('attributors/style/size');\nSizeStyle.whitelist = [\n // allow ONLY these sizes and the default\n 'x-small',\n 'large',\n 'x-large',\n];\n\n// Fix Doc Viewer p tags extra margin issue ---------\nconst Block = Quill.import('blots/block');\nBlock.tagName = 'p';\nQuill.register(Block);\n\nQuill.register(AlignStyle, true);\nQuill.register(IndentStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(SizeStyle, true);\n// -----------------------------------------\nQuill.register(Image, true);\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : '#toolbar',\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n blotFormatter: {\n // options... https://github.com/Fandom-OSS/quill-blot-formatter\n },\n ...this.props.quillModules,\n };\n\n constructor(props) {\n super(props);\n Quill.register(LinkFormat, true);\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n };\n const { toolbar } = this.quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {\n // this.quill doesn't exist untill the full call-stack execute\n // we need to \"setTimeout\" so this componentDidMount work as expected\n setTimeout(() => {\n const quillDomRef = this.quill;\n this.props.getQuillRef(quillDomRef);\n\n const editor = quillDomRef?.getEditor();\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill, { Quill } from 'react-quill';\nimport BlotFormatter from 'quill-blot-formatter';\nimport { uid } from 'uid';\n\nimport ImageLibraryModal from './ImageLibraryModal';\nimport InsertFieldModal from './InsertFieldModal';\nimport { CustomToolbar } from './CustomToolbar';\nimport IndentStyle from '../quillOverrides/IndentStyle';\nimport LinkFormat from '../quillOverrides/LinkFormat';\nimport Image from '../quillOverrides/Image';\nimport { formatHTML } from '../utils';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher';\n\nQuill.register('modules/blotFormatter', BlotFormatter);\n\n// Fix block styled formats ----------------\nconst AlignStyle = Quill.import('attributors/style/align');\nconst FontStyle = Quill.import('attributors/style/font');\nFontStyle.whitelist = [\n // allow ONLY these fonts and the default\n 'serif',\n 'monospace',\n 'arial',\n 'comic-sans',\n 'courier-new',\n 'georgia',\n 'helvetica',\n 'lucida',\n];\nconst SizeStyle = Quill.import('attributors/style/size');\nSizeStyle.whitelist = [\n // allow ONLY these sizes and the default\n 'x-small',\n 'large',\n 'x-large',\n];\n\n// Fix Doc Viewer p tags extra margin issue ---------\nconst Block = Quill.import('blots/block');\nBlock.tagName = 'p';\nQuill.register(Block);\n\nQuill.register(AlignStyle, true);\nQuill.register(IndentStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(SizeStyle, true);\n// -----------------------------------------\nQuill.register(Image, true);\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : '#toolbar',\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n blotFormatter: {\n // options... https://github.com/Fandom-OSS/quill-blot-formatter\n },\n ...this.props.quillModules,\n };\n\n constructor(props) {\n super(props);\n Quill.register(LinkFormat, true);\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n const instanceUid = uid(12);\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n uid: instanceUid,\n uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`,\n };\n const { toolbar } = this.quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {\n // this.quill doesn't exist untill the full call-stack execute\n // we need to \"setTimeout\" so this componentDidMount work as expected\n setTimeout(() => {\n const quillDomRef = this.quill;\n this.props.getQuillRef(quillDomRef);\n\n const editor = quillDomRef?.getEditor();\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n // console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n height,\n value,\n showRawHTML,\n onShowHTML,\n hideItems,\n bounds,\n // a bunch of props we don't want to pass to the editor\n onChange,\n handleImageClick,\n handleCustomFieldClick,\n ...editorProps\n } = this.props;\n\n // workaround monkeypatch for quill bug, when bounds is set to element, it doesn't work\n // we force it to be a string instead and as such we make sure the css selector is present\n // by adding a class to the element if the bounds is set to element\n // adding a class to the body if the bounds is not set (default bounds is document.body)\n let finalBoundElement = document.body;\n if (\n typeof bounds !== 'undefined' &&\n // there is no sure-fire way to check if something is a DOM element\n // checking classList existance && that it's an instance of DOMTokenList is a close enough check for most cases\n bounds?.classList &&\n bounds?.classList instanceof DOMTokenList\n ) {\n finalBoundElement = bounds;\n }\n // we need to make sure only one element in the DOM has the class we are about to add\n // so we remove the class from all elements that have it before adding it to the finalBoundElement\n const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);\n elementsWithClass.forEach((element) => {\n element.classList.remove(this.state.uniqueClassName);\n });\n\n if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {\n finalBoundElement.classList.add(this.state.uniqueClassName);\n }\n // we need to set the bounds to the class name we just added\n const boundsWorkaround = `.${this.state.uniqueClassName}`;\n\n return (\n <div\n // data-testid=\"wysiwyg-text-container\"\n {...containerProps}\n className={`quill-wysiwyg-editor ${showRawHTML ? 'show-raw' : ''}`}\n >\n {customToolbar || (\n <CustomToolbar\n customFields={customFields}\n onShowHTML={onShowHTML}\n hideItems={hideItems}\n userProps={this.props}\n />\n )}\n <ReactQuill\n ref={this.quillRef}\n modules={this.quillModules}\n onChange={this.onChangeQuill}\n value={value}\n style={{\n height,\n borderBottom: '1px solid #ccc',\n }}\n bounds={boundsWorkaround}\n {...editorProps}\n id=\"wysiwyg-text-container\"\n />\n <textarea\n className=\"raw-editor ql-container ql-snow ql-editor\"\n style={{\n width: '100%',\n resize: 'none',\n height,\n minHeight: '200px',\n }}\n onChange={this.onChangeTextArea}\n value={formatHTML(value)}\n />\n {imagesData && imagesData.length && (\n <ImageLibraryModal\n imagesData={imagesData}\n isOpen={isImageModalOpen}\n onClose={this.onImageModalClose}\n onConfirm={this.onImageConfirm}\n />\n )}\n {customFields && customFields.length && (\n <InsertFieldModal\n customFields={customFields}\n isOpen={isFieldModalOpen}\n onClose={this.onFieldModalClose}\n onConfirm={this.onInserFieldConfirm}\n />\n )}\n </div>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["BlotFormatter", "IndentStyle", "Image", "React", "LinkFormat", "ReactQuill", "ImageLibraryModal", "InsertFieldModal"]
|
|
7
7
|
}
|
|
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import React2 from "react";
|
|
4
4
|
import ReactQuill, { Quill } from "react-quill";
|
|
5
5
|
import BlotFormatter from "quill-blot-formatter";
|
|
6
|
+
import { uid } from "uid";
|
|
6
7
|
import ImageLibraryModal from "./ImageLibraryModal";
|
|
7
8
|
import InsertFieldModal from "./InsertFieldModal";
|
|
8
9
|
import { CustomToolbar } from "./CustomToolbar";
|
|
@@ -56,7 +57,6 @@ class DSWYSIWYGEditorImpl extends React2.PureComponent {
|
|
|
56
57
|
};
|
|
57
58
|
this.getEditor = () => this.quill?.getEditor();
|
|
58
59
|
this.onChangeQuill = (html, delta, source, editor) => {
|
|
59
|
-
console.log("quill detected a change");
|
|
60
60
|
const { showRawHTML, onChange } = this.props;
|
|
61
61
|
if (!showRawHTML)
|
|
62
62
|
onChange(html, delta, source, editor);
|
|
@@ -92,9 +92,12 @@ class DSWYSIWYGEditorImpl extends React2.PureComponent {
|
|
|
92
92
|
if (props.quillOverrides.length) {
|
|
93
93
|
props.quillOverrides.map((override) => Quill.register(override, true));
|
|
94
94
|
}
|
|
95
|
+
const instanceUid = uid(12);
|
|
95
96
|
this.state = {
|
|
96
97
|
isImageModalOpen: false,
|
|
97
|
-
isFieldModalOpen: false
|
|
98
|
+
isFieldModalOpen: false,
|
|
99
|
+
uid: instanceUid,
|
|
100
|
+
uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`
|
|
98
101
|
};
|
|
99
102
|
const { toolbar } = this.quillModules;
|
|
100
103
|
if (props.imagesData) {
|
|
@@ -133,16 +136,29 @@ class DSWYSIWYGEditorImpl extends React2.PureComponent {
|
|
|
133
136
|
customFields,
|
|
134
137
|
imagesData,
|
|
135
138
|
customToolbar,
|
|
136
|
-
handleImageClick,
|
|
137
|
-
handleCustomFieldClick,
|
|
138
139
|
height,
|
|
139
140
|
value,
|
|
140
141
|
showRawHTML,
|
|
141
142
|
onShowHTML,
|
|
142
|
-
onChange,
|
|
143
143
|
hideItems,
|
|
144
|
+
bounds,
|
|
145
|
+
onChange,
|
|
146
|
+
handleImageClick,
|
|
147
|
+
handleCustomFieldClick,
|
|
144
148
|
...editorProps
|
|
145
149
|
} = this.props;
|
|
150
|
+
let finalBoundElement = document.body;
|
|
151
|
+
if (typeof bounds !== "undefined" && bounds?.classList && bounds?.classList instanceof DOMTokenList) {
|
|
152
|
+
finalBoundElement = bounds;
|
|
153
|
+
}
|
|
154
|
+
const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);
|
|
155
|
+
elementsWithClass.forEach((element) => {
|
|
156
|
+
element.classList.remove(this.state.uniqueClassName);
|
|
157
|
+
});
|
|
158
|
+
if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {
|
|
159
|
+
finalBoundElement.classList.add(this.state.uniqueClassName);
|
|
160
|
+
}
|
|
161
|
+
const boundsWorkaround = `.${this.state.uniqueClassName}`;
|
|
146
162
|
return /* @__PURE__ */ jsxs(
|
|
147
163
|
"div",
|
|
148
164
|
{
|
|
@@ -169,6 +185,7 @@ class DSWYSIWYGEditorImpl extends React2.PureComponent {
|
|
|
169
185
|
height,
|
|
170
186
|
borderBottom: "1px solid #ccc"
|
|
171
187
|
},
|
|
188
|
+
bounds: boundsWorkaround,
|
|
172
189
|
...editorProps,
|
|
173
190
|
id: "wysiwyg-text-container"
|
|
174
191
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/components/DSWYSIWYGEditorImpl.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill, { Quill } from 'react-quill';\nimport BlotFormatter from 'quill-blot-formatter';\n\nimport ImageLibraryModal from './ImageLibraryModal';\nimport InsertFieldModal from './InsertFieldModal';\nimport { CustomToolbar } from './CustomToolbar';\nimport IndentStyle from '../quillOverrides/IndentStyle';\nimport LinkFormat from '../quillOverrides/LinkFormat';\nimport Image from '../quillOverrides/Image';\nimport { formatHTML } from '../utils';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher';\n\nQuill.register('modules/blotFormatter', BlotFormatter);\n\n// Fix block styled formats ----------------\nconst AlignStyle = Quill.import('attributors/style/align');\nconst FontStyle = Quill.import('attributors/style/font');\nFontStyle.whitelist = [\n // allow ONLY these fonts and the default\n 'serif',\n 'monospace',\n 'arial',\n 'comic-sans',\n 'courier-new',\n 'georgia',\n 'helvetica',\n 'lucida',\n];\nconst SizeStyle = Quill.import('attributors/style/size');\nSizeStyle.whitelist = [\n // allow ONLY these sizes and the default\n 'x-small',\n 'large',\n 'x-large',\n];\n\n// Fix Doc Viewer p tags extra margin issue ---------\nconst Block = Quill.import('blots/block');\nBlock.tagName = 'p';\nQuill.register(Block);\n\nQuill.register(AlignStyle, true);\nQuill.register(IndentStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(SizeStyle, true);\n// -----------------------------------------\nQuill.register(Image, true);\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : '#toolbar',\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n blotFormatter: {\n // options... https://github.com/Fandom-OSS/quill-blot-formatter\n },\n ...this.props.quillModules,\n };\n\n constructor(props) {\n super(props);\n Quill.register(LinkFormat, true);\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n };\n const { toolbar } = this.quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {\n // this.quill doesn't exist untill the full call-stack execute\n // we need to \"setTimeout\" so this componentDidMount work as expected\n setTimeout(() => {\n const quillDomRef = this.quill;\n this.props.getQuillRef(quillDomRef);\n\n const editor = quillDomRef?.getEditor();\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill, { Quill } from 'react-quill';\nimport BlotFormatter from 'quill-blot-formatter';\nimport { uid } from 'uid';\n\nimport ImageLibraryModal from './ImageLibraryModal';\nimport InsertFieldModal from './InsertFieldModal';\nimport { CustomToolbar } from './CustomToolbar';\nimport IndentStyle from '../quillOverrides/IndentStyle';\nimport LinkFormat from '../quillOverrides/LinkFormat';\nimport Image from '../quillOverrides/Image';\nimport { formatHTML } from '../utils';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher';\n\nQuill.register('modules/blotFormatter', BlotFormatter);\n\n// Fix block styled formats ----------------\nconst AlignStyle = Quill.import('attributors/style/align');\nconst FontStyle = Quill.import('attributors/style/font');\nFontStyle.whitelist = [\n // allow ONLY these fonts and the default\n 'serif',\n 'monospace',\n 'arial',\n 'comic-sans',\n 'courier-new',\n 'georgia',\n 'helvetica',\n 'lucida',\n];\nconst SizeStyle = Quill.import('attributors/style/size');\nSizeStyle.whitelist = [\n // allow ONLY these sizes and the default\n 'x-small',\n 'large',\n 'x-large',\n];\n\n// Fix Doc Viewer p tags extra margin issue ---------\nconst Block = Quill.import('blots/block');\nBlock.tagName = 'p';\nQuill.register(Block);\n\nQuill.register(AlignStyle, true);\nQuill.register(IndentStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(SizeStyle, true);\n// -----------------------------------------\nQuill.register(Image, true);\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : '#toolbar',\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n blotFormatter: {\n // options... https://github.com/Fandom-OSS/quill-blot-formatter\n },\n ...this.props.quillModules,\n };\n\n constructor(props) {\n super(props);\n Quill.register(LinkFormat, true);\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n const instanceUid = uid(12);\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n uid: instanceUid,\n uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`,\n };\n const { toolbar } = this.quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {\n // this.quill doesn't exist untill the full call-stack execute\n // we need to \"setTimeout\" so this componentDidMount work as expected\n setTimeout(() => {\n const quillDomRef = this.quill;\n this.props.getQuillRef(quillDomRef);\n\n const editor = quillDomRef?.getEditor();\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n // console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n height,\n value,\n showRawHTML,\n onShowHTML,\n hideItems,\n bounds,\n // a bunch of props we don't want to pass to the editor\n onChange,\n handleImageClick,\n handleCustomFieldClick,\n ...editorProps\n } = this.props;\n\n // workaround monkeypatch for quill bug, when bounds is set to element, it doesn't work\n // we force it to be a string instead and as such we make sure the css selector is present\n // by adding a class to the element if the bounds is set to element\n // adding a class to the body if the bounds is not set (default bounds is document.body)\n let finalBoundElement = document.body;\n if (\n typeof bounds !== 'undefined' &&\n // there is no sure-fire way to check if something is a DOM element\n // checking classList existance && that it's an instance of DOMTokenList is a close enough check for most cases\n bounds?.classList &&\n bounds?.classList instanceof DOMTokenList\n ) {\n finalBoundElement = bounds;\n }\n // we need to make sure only one element in the DOM has the class we are about to add\n // so we remove the class from all elements that have it before adding it to the finalBoundElement\n const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);\n elementsWithClass.forEach((element) => {\n element.classList.remove(this.state.uniqueClassName);\n });\n\n if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {\n finalBoundElement.classList.add(this.state.uniqueClassName);\n }\n // we need to set the bounds to the class name we just added\n const boundsWorkaround = `.${this.state.uniqueClassName}`;\n\n return (\n <div\n // data-testid=\"wysiwyg-text-container\"\n {...containerProps}\n className={`quill-wysiwyg-editor ${showRawHTML ? 'show-raw' : ''}`}\n >\n {customToolbar || (\n <CustomToolbar\n customFields={customFields}\n onShowHTML={onShowHTML}\n hideItems={hideItems}\n userProps={this.props}\n />\n )}\n <ReactQuill\n ref={this.quillRef}\n modules={this.quillModules}\n onChange={this.onChangeQuill}\n value={value}\n style={{\n height,\n borderBottom: '1px solid #ccc',\n }}\n bounds={boundsWorkaround}\n {...editorProps}\n id=\"wysiwyg-text-container\"\n />\n <textarea\n className=\"raw-editor ql-container ql-snow ql-editor\"\n style={{\n width: '100%',\n resize: 'none',\n height,\n minHeight: '200px',\n }}\n onChange={this.onChangeTextArea}\n value={formatHTML(value)}\n />\n {imagesData && imagesData.length && (\n <ImageLibraryModal\n imagesData={imagesData}\n isOpen={isImageModalOpen}\n onClose={this.onImageModalClose}\n onConfirm={this.onImageConfirm}\n />\n )}\n {customFields && customFields.length && (\n <InsertFieldModal\n customFields={customFields}\n isOpen={isFieldModalOpen}\n onClose={this.onFieldModalClose}\n onConfirm={this.onInserFieldConfirm}\n />\n )}\n </div>\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-wysiwygeditor",
|
|
3
|
-
"version": "3.14.
|
|
3
|
+
"version": "3.14.14",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - WYSIWYG Editor",
|
|
6
6
|
"files": [
|
|
@@ -101,19 +101,17 @@
|
|
|
101
101
|
"dependencies": {
|
|
102
102
|
"prop-types": "~15.8.1",
|
|
103
103
|
"quill-blot-formatter": "~1.0.5",
|
|
104
|
+
"quill-delta": "5.0.0",
|
|
104
105
|
"react-quill": "2.0.0-beta.2",
|
|
105
|
-
"@elliemae/ds-
|
|
106
|
-
"@elliemae/ds-
|
|
107
|
-
"@elliemae/ds-imagelibrarymodal": "3.14.
|
|
108
|
-
"@elliemae/ds-modal": "3.14.
|
|
109
|
-
"@elliemae/ds-shared": "3.14.
|
|
110
|
-
"@elliemae/ds-tooltip": "3.14.
|
|
111
|
-
"@elliemae/ds-uploader": "3.14.
|
|
112
|
-
"@elliemae/ds-utilities": "3.14.
|
|
113
|
-
"@elliemae/ds-
|
|
114
|
-
},
|
|
115
|
-
"devDependencies": {
|
|
116
|
-
"quill-delta": "5.0.0"
|
|
106
|
+
"@elliemae/ds-dropdownmenu": "3.14.14",
|
|
107
|
+
"@elliemae/ds-icons": "3.14.14",
|
|
108
|
+
"@elliemae/ds-imagelibrarymodal": "3.14.14",
|
|
109
|
+
"@elliemae/ds-modal": "3.14.14",
|
|
110
|
+
"@elliemae/ds-shared": "3.14.14",
|
|
111
|
+
"@elliemae/ds-tooltip": "3.14.14",
|
|
112
|
+
"@elliemae/ds-uploader": "3.14.14",
|
|
113
|
+
"@elliemae/ds-utilities": "3.14.14",
|
|
114
|
+
"@elliemae/ds-button": "3.14.14"
|
|
117
115
|
},
|
|
118
116
|
"publishConfig": {
|
|
119
117
|
"access": "public",
|