@elliemae/ds-wysiwygeditor 2.2.0 → 2.3.0-alpha.3

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.
Files changed (69) hide show
  1. package/cjs/DSWYSIWYGEditor.js +83 -72
  2. package/cjs/DSWYSIWYGEditor.js.map +7 -0
  3. package/cjs/components/CustomImageUploader.js +92 -94
  4. package/cjs/components/CustomImageUploader.js.map +7 -0
  5. package/cjs/components/CustomToolbar.js +172 -193
  6. package/cjs/components/CustomToolbar.js.map +7 -0
  7. package/cjs/components/DSWYSIWYGEditorImpl.js +147 -185
  8. package/cjs/components/DSWYSIWYGEditorImpl.js.map +7 -0
  9. package/cjs/components/ImageLibraryModal.js +75 -55
  10. package/cjs/components/ImageLibraryModal.js.map +7 -0
  11. package/cjs/components/InsertFieldModal.js +109 -142
  12. package/cjs/components/InsertFieldModal.js.map +7 -0
  13. package/cjs/components/TippedButton.js +56 -54
  14. package/cjs/components/TippedButton.js.map +7 -0
  15. package/cjs/components/TippedSelect.js +50 -39
  16. package/cjs/components/TippedSelect.js.map +7 -0
  17. package/cjs/components/colors.js +41 -21
  18. package/cjs/components/colors.js.map +7 -0
  19. package/cjs/components/customFields.js +66 -47
  20. package/cjs/components/customFields.js.map +7 -0
  21. package/cjs/constants.js +112 -38
  22. package/cjs/constants.js.map +7 -0
  23. package/cjs/index.js +39 -21
  24. package/cjs/index.js.map +7 -0
  25. package/cjs/quillMatchers/clipboardLinkWithTagMatcher.js +37 -22
  26. package/cjs/quillMatchers/clipboardLinkWithTagMatcher.js.map +7 -0
  27. package/cjs/quillOverrides/IndentStyle.js +41 -19
  28. package/cjs/quillOverrides/IndentStyle.js.map +7 -0
  29. package/cjs/quillOverrides/LinkFormat.js +57 -39
  30. package/cjs/quillOverrides/LinkFormat.js.map +7 -0
  31. package/cjs/quillOverrides/PlainClipboard.js +41 -21
  32. package/cjs/quillOverrides/PlainClipboard.js.map +7 -0
  33. package/cjs/utils.js +41 -18
  34. package/cjs/utils.js.map +7 -0
  35. package/esm/DSWYSIWYGEditor.js +50 -58
  36. package/esm/DSWYSIWYGEditor.js.map +7 -0
  37. package/esm/components/CustomImageUploader.js +60 -81
  38. package/esm/components/CustomImageUploader.js.map +7 -0
  39. package/esm/components/CustomToolbar.js +145 -184
  40. package/esm/components/CustomToolbar.js.map +7 -0
  41. package/esm/components/DSWYSIWYGEditorImpl.js +113 -169
  42. package/esm/components/DSWYSIWYGEditorImpl.js.map +7 -0
  43. package/esm/components/ImageLibraryModal.js +46 -47
  44. package/esm/components/ImageLibraryModal.js.map +7 -0
  45. package/esm/components/InsertFieldModal.js +72 -124
  46. package/esm/components/InsertFieldModal.js.map +7 -0
  47. package/esm/components/TippedButton.js +27 -44
  48. package/esm/components/TippedButton.js.map +7 -0
  49. package/esm/components/TippedSelect.js +21 -31
  50. package/esm/components/TippedSelect.js.map +7 -0
  51. package/esm/components/colors.js +12 -17
  52. package/esm/components/colors.js.map +7 -0
  53. package/esm/components/customFields.js +38 -40
  54. package/esm/components/customFields.js.map +7 -0
  55. package/esm/constants.js +83 -30
  56. package/esm/constants.js.map +7 -0
  57. package/esm/index.js +10 -4
  58. package/esm/index.js.map +7 -0
  59. package/esm/quillMatchers/clipboardLinkWithTagMatcher.js +8 -18
  60. package/esm/quillMatchers/clipboardLinkWithTagMatcher.js.map +7 -0
  61. package/esm/quillOverrides/IndentStyle.js +12 -17
  62. package/esm/quillOverrides/IndentStyle.js.map +7 -0
  63. package/esm/quillOverrides/LinkFormat.js +28 -37
  64. package/esm/quillOverrides/LinkFormat.js.map +7 -0
  65. package/esm/quillOverrides/PlainClipboard.js +12 -19
  66. package/esm/quillOverrides/PlainClipboard.js.map +7 -0
  67. package/esm/utils.js +12 -14
  68. package/esm/utils.js.map +7 -0
  69. package/package.json +9 -9
@@ -1,199 +1,163 @@
1
- 'use strict';
2
-
3
- var _jsx = require('@babel/runtime/helpers/jsx');
4
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- require('core-js/modules/esnext.async-iterator.map.js');
7
- require('core-js/modules/esnext.iterator.map.js');
8
- require('core-js/modules/esnext.async-iterator.filter.js');
9
- require('core-js/modules/esnext.iterator.constructor.js');
10
- require('core-js/modules/esnext.iterator.filter.js');
11
- require('core-js/modules/esnext.async-iterator.for-each.js');
12
- require('core-js/modules/esnext.iterator.for-each.js');
13
- var React = require('react');
14
- var ReactQuill = require('react-quill');
15
- var BlotFormatter = require('quill-blot-formatter');
16
- var ImageLibraryModal = require('./ImageLibraryModal.js');
17
- var InsertFieldModal = require('./InsertFieldModal.js');
18
- var CustomToolbar = require('./CustomToolbar.js');
19
- var IndentStyle = require('../quillOverrides/IndentStyle.js');
20
- var LinkFormat = require('../quillOverrides/LinkFormat.js');
21
- var utils = require('../utils.js');
22
- var clipboardLinkWithTagMatcher = require('../quillMatchers/clipboardLinkWithTagMatcher.js');
23
- var jsxRuntime = require('react/jsx-runtime');
24
-
25
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
-
27
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
28
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
29
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
30
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
31
- var ReactQuill__default = /*#__PURE__*/_interopDefaultLegacy(ReactQuill);
32
- var BlotFormatter__default = /*#__PURE__*/_interopDefaultLegacy(BlotFormatter);
33
-
34
- const _excluded = ["containerProps", "customFields", "imagesData", "customToolbar", "handleImageClick", "handleCustomFieldClick", "height", "value", "showRawHTML", "onShowHTML", "onChange", "hideItems"];
35
-
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
-
38
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
39
- ReactQuill.Quill.register('modules/blotFormatter', BlotFormatter__default["default"]); // Fix block styled formats ----------------
40
-
41
- const AlignStyle = ReactQuill.Quill.import('attributors/style/align');
42
- const FontStyle = ReactQuill.Quill.import('attributors/style/font');
43
- FontStyle.whitelist = [// allow ONLY these fonts and the default
44
- 'serif', 'monospace', 'arial', 'comic-sans', 'courier-new', 'georgia', 'helvetica', 'lucida'];
45
- const SizeStyle = ReactQuill.Quill.import('attributors/style/size');
46
- SizeStyle.whitelist = [// allow ONLY these sizes and the default
47
- 'x-small', 'large', 'x-large']; // Fix Doc Viewer p tags extra margin issue ---------
48
-
49
- const Block = ReactQuill.Quill.import('blots/block');
50
- Block.tagName = 'p';
51
- ReactQuill.Quill.register(Block);
52
- ReactQuill.Quill.register(AlignStyle, true);
53
- ReactQuill.Quill.register(IndentStyle, true);
54
- ReactQuill.Quill.register(FontStyle, true);
55
- ReactQuill.Quill.register(SizeStyle, true); // -----------------------------------------
56
-
57
- class DSWYSIWYGEditorImpl extends React__default["default"].PureComponent {
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var DSWYSIWYGEditorImpl_exports = {};
29
+ __export(DSWYSIWYGEditorImpl_exports, {
30
+ default: () => DSWYSIWYGEditorImpl
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_react_quill = __toESM(require("react-quill"));
35
+ var import_quill_blot_formatter = __toESM(require("quill-blot-formatter"));
36
+ var import_ImageLibraryModal = __toESM(require("./ImageLibraryModal"));
37
+ var import_InsertFieldModal = __toESM(require("./InsertFieldModal"));
38
+ var import_CustomToolbar = require("./CustomToolbar");
39
+ var import_IndentStyle = __toESM(require("../quillOverrides/IndentStyle"));
40
+ var import_LinkFormat = __toESM(require("../quillOverrides/LinkFormat"));
41
+ var import_utils = require("../utils");
42
+ var import_clipboardLinkWithTagMatcher = require("../quillMatchers/clipboardLinkWithTagMatcher");
43
+ import_react_quill.Quill.register("modules/blotFormatter", import_quill_blot_formatter.default);
44
+ const AlignStyle = import_react_quill.Quill.import("attributors/style/align");
45
+ const FontStyle = import_react_quill.Quill.import("attributors/style/font");
46
+ FontStyle.whitelist = [
47
+ "serif",
48
+ "monospace",
49
+ "arial",
50
+ "comic-sans",
51
+ "courier-new",
52
+ "georgia",
53
+ "helvetica",
54
+ "lucida"
55
+ ];
56
+ const SizeStyle = import_react_quill.Quill.import("attributors/style/size");
57
+ SizeStyle.whitelist = [
58
+ "x-small",
59
+ "large",
60
+ "x-large"
61
+ ];
62
+ const Block = import_react_quill.Quill.import("blots/block");
63
+ Block.tagName = "p";
64
+ import_react_quill.Quill.register(Block);
65
+ import_react_quill.Quill.register(AlignStyle, true);
66
+ import_react_quill.Quill.register(import_IndentStyle.default, true);
67
+ import_react_quill.Quill.register(FontStyle, true);
68
+ import_react_quill.Quill.register(SizeStyle, true);
69
+ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
58
70
  constructor(props) {
59
71
  super(props);
60
- this.quillModules = _objectSpread({
72
+ this.quillModules = {
61
73
  toolbar: {
62
- container: this.props.toolbarContainer ? "#".concat(this.props.toolbarContainer) : '#toolbar',
63
- handlers: _objectSpread({}, this.props.toolbarHandlers)
74
+ container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : "#toolbar",
75
+ handlers: {
76
+ ...this.props.toolbarHandlers
77
+ }
64
78
  },
65
79
  clipboard: {
66
- // toggle to add extra line breaks when pasting HTML:
67
80
  matchVisual: false
68
81
  },
69
- blotFormatter: {// options... https://github.com/Fandom-OSS/quill-blot-formatter
70
- }
71
- }, this.props.quillModules);
72
-
82
+ blotFormatter: {},
83
+ ...this.props.quillModules
84
+ };
73
85
  this.onChangeQuill = (html, delta, source, editor) => {
74
- const {
75
- showRawHTML,
76
- onChange
77
- } = this.props;
78
- if (!showRawHTML) onChange(html, delta, source, editor);
86
+ const { showRawHTML, onChange } = this.props;
87
+ if (!showRawHTML)
88
+ onChange(html, delta, source, editor);
79
89
  };
80
-
81
- this.onChangeTextArea = e => {
82
- const {
83
- showRawHTML,
84
- onChange
85
- } = this.props;
86
- if (showRawHTML) onChange(e.target.value);
90
+ this.onChangeTextArea = (e) => {
91
+ const { showRawHTML, onChange } = this.props;
92
+ if (showRawHTML)
93
+ onChange(e.target.value);
87
94
  };
88
-
89
- this.onInserFieldConfirm = fieldCode => {
95
+ this.onInserFieldConfirm = (fieldCode) => {
90
96
  const editor = this.getEditor();
91
97
  const range = editor.getSelection(true);
92
98
  editor.insertText(range.index, fieldCode);
93
99
  };
94
-
95
- this.onImageConfirm = image => {
100
+ this.onImageConfirm = (image) => {
96
101
  if (!image) {
97
102
  return;
98
103
  }
99
-
100
104
  const editor = this.getEditor();
101
105
  const range = editor.getSelection(true);
102
- editor.insertEmbed(range.index, 'image', image.url);
106
+ editor.insertEmbed(range.index, "image", image.url);
103
107
  };
104
-
105
108
  this.onFieldModalClose = () => {
106
- this.setState({
107
- isFieldModalOpen: false
108
- });
109
+ this.setState({ isFieldModalOpen: false });
109
110
  };
110
-
111
111
  this.onImageModalClose = () => {
112
- this.setState({
113
- isImageModalOpen: false
114
- });
112
+ this.setState({ isImageModalOpen: false });
115
113
  };
116
-
117
- this.quillRef = ref => {
114
+ this.quillRef = (ref) => {
118
115
  this.quill = ref;
119
116
  };
120
-
121
- ReactQuill.Quill.register(LinkFormat, true);
122
-
117
+ import_react_quill.Quill.register(import_LinkFormat.default, true);
123
118
  if (props.quillOverrides.length) {
124
- props.quillOverrides.map(override => ReactQuill.Quill.register(override, true));
119
+ props.quillOverrides.map((override) => import_react_quill.Quill.register(override, true));
125
120
  }
126
-
127
121
  this.state = {
128
122
  isImageModalOpen: false,
129
123
  isFieldModalOpen: false
130
124
  };
131
- const {
132
- toolbar
133
- } = this.quillModules;
134
-
125
+ const { toolbar } = this.quillModules;
135
126
  if (props.imagesData) {
136
- toolbar.handlers.image = value => {
137
- const {
138
- imagesData,
139
- handleImageClick
140
- } = this.props;
141
-
127
+ toolbar.handlers.image = (value) => {
128
+ const { imagesData, handleImageClick } = this.props;
142
129
  if (!imagesData.length) {
143
130
  return;
144
131
  }
145
-
146
- this.setState({
147
- isImageModalOpen: !!value
148
- });
132
+ this.setState({ isImageModalOpen: !!value });
149
133
  handleImageClick(value);
150
134
  };
151
135
  }
152
-
153
136
  if (props.customFields) {
154
- toolbar.handlers.customFields = value => {
155
- const {
156
- customFields,
157
- handleCustomFieldClick
158
- } = this.props;
159
-
137
+ toolbar.handlers.customFields = (value) => {
138
+ const { customFields, handleCustomFieldClick } = this.props;
160
139
  if (!customFields.length) {
161
140
  return;
162
141
  }
163
-
164
- this.setState({
165
- isFieldModalOpen: !!value
166
- });
142
+ this.setState({ isFieldModalOpen: !!value });
167
143
  handleCustomFieldClick(value);
168
144
  };
169
145
  }
170
146
  }
171
-
172
147
  componentDidMount() {
173
- // this.quill doesn't exist untill the full call-stack execute
174
- // we need to "setTimeout" so this componentDidMount work as expected
175
148
  setTimeout(() => {
176
149
  const quillDomRef = this.quill;
177
150
  const editor = quillDomRef.getEditor();
178
- this.props.getQuillRef(quillDomRef); // https://github.com/quilljs/quill/issues/2677
179
-
180
- editor.clipboard.addMatcher('a', clipboardLinkWithTagMatcher.clipboardLinkWithTagMatcher);
151
+ this.props.getQuillRef(quillDomRef);
152
+ editor.clipboard.addMatcher("a", import_clipboardLinkWithTagMatcher.clipboardLinkWithTagMatcher);
181
153
  });
182
- } // eslint-disable-next-line max-params
183
-
184
-
154
+ }
185
155
  getEditor() {
186
156
  return this.quill.getEditor();
187
157
  }
188
-
189
158
  render() {
159
+ const { isFieldModalOpen, isImageModalOpen } = this.state;
190
160
  const {
191
- isFieldModalOpen,
192
- isImageModalOpen
193
- } = this.state;
194
-
195
- const _this$props = this.props,
196
- {
197
161
  containerProps = {},
198
162
  customFields,
199
163
  imagesData,
@@ -205,52 +169,50 @@ class DSWYSIWYGEditorImpl extends React__default["default"].PureComponent {
205
169
  showRawHTML,
206
170
  onShowHTML,
207
171
  onChange,
208
- hideItems
209
- } = _this$props,
210
- editorProps = _objectWithoutProperties__default["default"](_this$props, _excluded);
211
-
212
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, containerProps), {}, {
213
- className: "quill-wysiwyg-editor ".concat(showRawHTML ? 'show-raw' : ''),
214
- children: [customToolbar || /*#__PURE__*/_jsx__default["default"](CustomToolbar.CustomToolbar, {
215
- customFields: customFields,
216
- onShowHTML: onShowHTML,
217
- hideItems: hideItems,
218
- userProps: this.props
219
- }), /*#__PURE__*/jsxRuntime.jsx(ReactQuill__default["default"], _objectSpread(_objectSpread({
220
- ref: this.quillRef,
221
- modules: this.quillModules,
222
- onChange: this.onChangeQuill,
223
- value: value,
224
- style: {
225
- height,
226
- borderBottom: '1px solid #ccc'
227
- }
228
- }, editorProps), {}, {
229
- id: "wysiwyg-text-container"
230
- })), /*#__PURE__*/_jsx__default["default"]("textarea", {
231
- className: "raw-editor ql-container ql-snow ql-editor",
232
- style: {
233
- width: '100%',
234
- resize: 'none',
235
- height,
236
- minHeight: '200px'
237
- },
238
- onChange: this.onChangeTextArea,
239
- value: utils.formatHTML(value)
240
- }), imagesData && imagesData.length && /*#__PURE__*/_jsx__default["default"](ImageLibraryModal, {
241
- imagesData: imagesData,
242
- isOpen: isImageModalOpen,
243
- onClose: this.onImageModalClose,
244
- onConfirm: this.onImageConfirm
245
- }), customFields && customFields.length && /*#__PURE__*/_jsx__default["default"](InsertFieldModal, {
246
- customFields: customFields,
247
- isOpen: isFieldModalOpen,
248
- onClose: this.onFieldModalClose,
249
- onConfirm: this.onInserFieldConfirm
250
- })]
172
+ hideItems,
173
+ ...editorProps
174
+ } = this.props;
175
+ return /* @__PURE__ */ import_react.default.createElement("div", {
176
+ ...containerProps,
177
+ className: `quill-wysiwyg-editor ${showRawHTML ? "show-raw" : ""}`
178
+ }, customToolbar || /* @__PURE__ */ import_react.default.createElement(import_CustomToolbar.CustomToolbar, {
179
+ customFields,
180
+ onShowHTML,
181
+ hideItems,
182
+ userProps: this.props
183
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_quill.default, {
184
+ ref: this.quillRef,
185
+ modules: this.quillModules,
186
+ onChange: this.onChangeQuill,
187
+ value,
188
+ style: {
189
+ height,
190
+ borderBottom: "1px solid #ccc"
191
+ },
192
+ ...editorProps,
193
+ id: "wysiwyg-text-container"
194
+ }), /* @__PURE__ */ import_react.default.createElement("textarea", {
195
+ className: "raw-editor ql-container ql-snow ql-editor",
196
+ style: {
197
+ width: "100%",
198
+ resize: "none",
199
+ height,
200
+ minHeight: "200px"
201
+ },
202
+ onChange: this.onChangeTextArea,
203
+ value: (0, import_utils.formatHTML)(value)
204
+ }), imagesData && imagesData.length && /* @__PURE__ */ import_react.default.createElement(import_ImageLibraryModal.default, {
205
+ imagesData,
206
+ isOpen: isImageModalOpen,
207
+ onClose: this.onImageModalClose,
208
+ onConfirm: this.onImageConfirm
209
+ }), customFields && customFields.length && /* @__PURE__ */ import_react.default.createElement(import_InsertFieldModal.default, {
210
+ customFields,
211
+ isOpen: isFieldModalOpen,
212
+ onClose: this.onFieldModalClose,
213
+ onConfirm: this.onInserFieldConfirm
251
214
  }));
252
215
  }
253
-
254
216
  }
255
-
256
- module.exports = DSWYSIWYGEditorImpl;
217
+ module.exports = __toCommonJS(DSWYSIWYGEditorImpl_exports);
218
+ //# sourceMappingURL=DSWYSIWYGEditorImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 { 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// -----------------------------------------\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 const editor = quillDomRef.getEditor();\n this.props.getQuillRef(quillDomRef);\n // https://github.com/quilljs/quill/issues/2677\n editor.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\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 getEditor() {\n return this.quill.getEditor();\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 handleImageClick,\n handleCustomFieldClick,\n height,\n value,\n showRawHTML,\n onShowHTML,\n onChange,\n hideItems,\n ...editorProps\n } = this.props;\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 {...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
+ "names": []
7
+ }
@@ -1,72 +1,92 @@
1
- 'use strict';
2
-
3
- require('core-js/modules/esnext.async-iterator.filter.js');
4
- require('core-js/modules/esnext.iterator.constructor.js');
5
- require('core-js/modules/esnext.iterator.filter.js');
6
- require('core-js/modules/esnext.async-iterator.for-each.js');
7
- require('core-js/modules/esnext.iterator.for-each.js');
8
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
9
- var React = require('react');
10
- var DSImageLibraryModal = require('@elliemae/ds-imagelibrarymodal');
11
- var jsxRuntime = require('react/jsx-runtime');
12
-
13
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
-
15
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
16
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
- var DSImageLibraryModal__default = /*#__PURE__*/_interopDefaultLegacy(DSImageLibraryModal);
18
-
19
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
-
21
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
- class ImageLibraryModal extends React__default["default"].PureComponent {
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var ImageLibraryModal_exports = {};
29
+ __export(ImageLibraryModal_exports, {
30
+ default: () => ImageLibraryModal
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_ds_imagelibrarymodal = __toESM(require("@elliemae/ds-imagelibrarymodal"));
35
+ var import_prop_types = __toESM(require("prop-types"));
36
+ class ImageLibraryModal extends import_react.default.PureComponent {
23
37
  constructor(props) {
24
38
  super(props);
25
-
26
- this.onSelect = selectedImage => {
27
- this.setState({
28
- selectedImage
29
- });
39
+ this.onSelect = (selectedImage) => {
40
+ this.setState({ selectedImage });
30
41
  };
31
-
32
42
  this.onConfirm = () => {
33
- const {
34
- selectedImage
35
- } = this.state;
36
- const {
37
- onConfirm,
38
- onClose
39
- } = this.props;
43
+ const { selectedImage } = this.state;
44
+ const { onConfirm, onClose } = this.props;
40
45
  onConfirm(selectedImage);
41
46
  onClose();
42
47
  };
43
-
44
48
  this.state = {
45
- selectedImage: undefined
49
+ selectedImage: void 0
46
50
  };
47
51
  }
48
-
49
52
  render() {
50
- return /*#__PURE__*/jsxRuntime.jsx(DSImageLibraryModal__default["default"], _objectSpread(_objectSpread({}, this.props), {}, {
53
+ return /* @__PURE__ */ import_react.default.createElement(import_ds_imagelibrarymodal.default, {
54
+ ...this.props,
51
55
  onConfirm: this.onConfirm,
52
56
  onSelect: this.onSelect
53
- }));
57
+ });
54
58
  }
55
-
56
59
  }
60
+ ImageLibraryModal.propTypes = {
61
+ onConfirm: import_prop_types.default.func.isRequired,
62
+ onClose: import_prop_types.default.func.isRequired,
63
+ onReject: import_prop_types.default.func,
64
+ imagesData: import_prop_types.default.arrayOf(import_prop_types.default.shape({
65
+ id: import_prop_types.default.string,
66
+ url: import_prop_types.default.string.isRequired,
67
+ name: import_prop_types.default.string.isRequired,
68
+ description: import_prop_types.default.string,
69
+ createdBy: import_prop_types.default.string.isRequired,
70
+ createdDate: import_prop_types.default.string.isRequired
71
+ })),
72
+ isOpen: import_prop_types.default.bool.isRequired
73
+ };
57
74
  ImageLibraryModal.defaultProps = {
58
- onReject: undefined,
59
- imagesData: [{
60
- url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',
61
- name: 'no image',
62
- createdBy: 'user:John Doe',
63
- createdDate: '0000-01-01 00:00 AM UTC'
64
- }, {
65
- url: 'https://asset-service-bucket-int.s3.us-west-2.amazonaws.com/bd527d8c-472f-4dff-b8c5-1c90d5bae01e',
66
- name: 'no image 2',
67
- createdBy: 'user:Jane Doe',
68
- createdDate: '0000-01-01 00:00 AM UTC'
69
- }]
75
+ onReject: void 0,
76
+ imagesData: [
77
+ {
78
+ url: "https://www.freeiconspng.com/minicovers/no-image-icon-6.png",
79
+ name: "no image",
80
+ createdBy: "user:John Doe",
81
+ createdDate: "0000-01-01 00:00 AM UTC"
82
+ },
83
+ {
84
+ url: "https://asset-service-bucket-int.s3.us-west-2.amazonaws.com/bd527d8c-472f-4dff-b8c5-1c90d5bae01e",
85
+ name: "no image 2",
86
+ createdBy: "user:Jane Doe",
87
+ createdDate: "0000-01-01 00:00 AM UTC"
88
+ }
89
+ ]
70
90
  };
71
-
72
- module.exports = ImageLibraryModal;
91
+ module.exports = __toCommonJS(ImageLibraryModal_exports);
92
+ //# sourceMappingURL=ImageLibraryModal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ImageLibraryModal.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React from 'react';\nimport DSImageLibraryModal from '@elliemae/ds-imagelibrarymodal';\nimport PropTypes from 'prop-types';\n\nexport default class ImageLibraryModal extends React.PureComponent {\n static propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onReject: PropTypes.func,\n imagesData: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string,\n createdBy: PropTypes.string.isRequired,\n createdDate: PropTypes.string.isRequired,\n }),\n ),\n isOpen: PropTypes.bool.isRequired,\n };\n\n static defaultProps = {\n onReject: undefined,\n imagesData: [\n {\n url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',\n name: 'no image',\n createdBy: 'user:John Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n {\n url:\n 'https://asset-service-bucket-int.s3.us-west-2.amazonaws.com/bd527d8c-472f-4dff-b8c5-1c90d5bae01e',\n name: 'no image 2',\n createdBy: 'user:Jane Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n ],\n };\n\n constructor(props) {\n super(props);\n this.state = {\n selectedImage: undefined,\n };\n }\n\n onSelect = selectedImage => {\n this.setState({ selectedImage });\n };\n\n onConfirm = () => {\n const { selectedImage } = this.state;\n const { onConfirm, onClose } = this.props;\n onConfirm(selectedImage);\n onClose();\n };\n\n render() {\n return (\n <DSImageLibraryModal\n {...this.props}\n onConfirm={this.onConfirm}\n onSelect={this.onSelect}\n />\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAClB,kCAAgC;AAChC,wBAAsB;AAEtB,gCAA+C,qBAAM,cAAc;AAAA,EAqCjE,YAAY,OAAO;AACjB,UAAM;AAMR,oBAAW,mBAAiB;AAC1B,WAAK,SAAS,EAAE;AAAA;AAGlB,qBAAY,MAAM;AAChB,YAAM,EAAE,kBAAkB,KAAK;AAC/B,YAAM,EAAE,WAAW,YAAY,KAAK;AACpC,gBAAU;AACV;AAAA;AAbA,SAAK,QAAQ;AAAA,MACX,eAAe;AAAA;AAAA;AAAA,EAenB,SAAS;AACP,WACE,mDAAC,qCAAD;AAAA,SACM,KAAK;AAAA,MACT,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA;AAAA;AAAA;AA3Dd,AADT,kBACS,YAAY;AAAA,EACjB,WAAW,0BAAU,KAAK;AAAA,EAC1B,SAAS,0BAAU,KAAK;AAAA,EACxB,UAAU,0BAAU;AAAA,EACpB,YAAY,0BAAU,QACpB,0BAAU,MAAM;AAAA,IACd,IAAI,0BAAU;AAAA,IACd,KAAK,0BAAU,OAAO;AAAA,IACtB,MAAM,0BAAU,OAAO;AAAA,IACvB,aAAa,0BAAU;AAAA,IACvB,WAAW,0BAAU,OAAO;AAAA,IAC5B,aAAa,0BAAU,OAAO;AAAA;AAAA,EAGlC,QAAQ,0BAAU,KAAK;AAAA;AAGlB,AAlBT,kBAkBS,eAAe;AAAA,EACpB,UAAU;AAAA,EACV,YAAY;AAAA,IACV;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA;AAAA,IAEf;AAAA,MACE,KACE;AAAA,MACF,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }