@elliemae/ds-wysiwygeditor 2.3.0-alpha.8 → 2.3.0-next.2
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/cjs/DSWYSIWYGEditor.js +82 -0
- package/cjs/components/CustomImageUploader.js +125 -0
- package/cjs/components/CustomToolbar.js +282 -0
- package/cjs/components/DSWYSIWYGEditorImpl.js +256 -0
- package/cjs/components/ImageLibraryModal.js +72 -0
- package/cjs/components/InsertFieldModal.js +218 -0
- package/cjs/components/TippedButton.js +56 -0
- package/cjs/components/TippedSelect.js +46 -0
- package/cjs/components/colors.js +30 -0
- package/cjs/components/customFields.js +57 -0
- package/cjs/constants.js +40 -0
- package/cjs/index.js +21 -0
- package/cjs/quillMatchers/clipboardLinkWithTagMatcher.js +33 -0
- package/cjs/quillOverrides/IndentStyle.js +29 -0
- package/cjs/quillOverrides/LinkFormat.js +68 -0
- package/cjs/quillOverrides/PlainClipboard.js +27 -0
- package/cjs/utils.js +27 -0
- package/esm/DSWYSIWYGEditor.js +72 -0
- package/esm/components/CustomImageUploader.js +115 -0
- package/esm/components/CustomToolbar.js +271 -0
- package/esm/components/DSWYSIWYGEditorImpl.js +245 -0
- package/esm/components/ImageLibraryModal.js +64 -0
- package/esm/components/InsertFieldModal.js +208 -0
- package/esm/components/TippedButton.js +46 -0
- package/esm/components/TippedSelect.js +38 -0
- package/esm/components/colors.js +26 -0
- package/esm/components/customFields.js +49 -0
- package/esm/constants.js +32 -0
- package/esm/index.js +4 -0
- package/esm/quillMatchers/clipboardLinkWithTagMatcher.js +29 -0
- package/esm/quillOverrides/IndentStyle.js +27 -0
- package/esm/quillOverrides/LinkFormat.js +66 -0
- package/esm/quillOverrides/PlainClipboard.js +25 -0
- package/esm/utils.js +23 -0
- package/package.json +56 -58
- package/types/DSWYSIWYGEditor.d.ts +75 -0
- package/types/components/CustomImageUploader.d.ts +8 -0
- package/types/components/CustomToolbar.d.ts +21 -0
- package/types/components/DSWYSIWYGEditorImpl.d.ts +15 -0
- package/types/components/ImageLibraryModal.d.ts +31 -0
- package/types/components/InsertFieldModal.d.ts +41 -0
- package/types/components/TippedButton.d.ts +12 -0
- package/types/components/TippedSelect.d.ts +13 -0
- package/types/components/colors.d.ts +1 -0
- package/types/components/customFields.d.ts +36 -0
- package/types/constants.d.ts +26 -0
- package/types/index.d.ts +4 -0
- package/types/quillMatchers/clipboardLinkWithTagMatcher.d.ts +2 -0
- package/types/quillOverrides/IndentStyle.d.ts +10 -0
- package/types/quillOverrides/LinkFormat.d.ts +12 -0
- package/types/quillOverrides/PlainClipboard.d.ts +8 -0
- package/types/utils.d.ts +1 -0
- package/dist/cjs/DSWYSIWYGEditor.js +0 -93
- package/dist/cjs/DSWYSIWYGEditor.js.map +0 -7
- package/dist/cjs/components/CustomImageUploader.js +0 -123
- package/dist/cjs/components/CustomImageUploader.js.map +0 -7
- package/dist/cjs/components/CustomToolbar.js +0 -261
- package/dist/cjs/components/CustomToolbar.js.map +0 -7
- package/dist/cjs/components/DSWYSIWYGEditorImpl.js +0 -218
- package/dist/cjs/components/DSWYSIWYGEditorImpl.js.map +0 -7
- package/dist/cjs/components/ImageLibraryModal.js +0 -92
- package/dist/cjs/components/ImageLibraryModal.js.map +0 -7
- package/dist/cjs/components/InsertFieldModal.js +0 -185
- package/dist/cjs/components/InsertFieldModal.js.map +0 -7
- package/dist/cjs/components/TippedButton.js +0 -58
- package/dist/cjs/components/TippedButton.js.map +0 -7
- package/dist/cjs/components/TippedSelect.js +0 -57
- package/dist/cjs/components/TippedSelect.js.map +0 -7
- package/dist/cjs/components/colors.js +0 -50
- package/dist/cjs/components/colors.js.map +0 -7
- package/dist/cjs/components/customFields.js +0 -76
- package/dist/cjs/components/customFields.js.map +0 -7
- package/dist/cjs/constants.js +0 -114
- package/dist/cjs/constants.js.map +0 -7
- package/dist/cjs/index.js +0 -39
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/quillMatchers/clipboardLinkWithTagMatcher.js +0 -48
- package/dist/cjs/quillMatchers/clipboardLinkWithTagMatcher.js.map +0 -7
- package/dist/cjs/quillOverrides/IndentStyle.js +0 -51
- package/dist/cjs/quillOverrides/IndentStyle.js.map +0 -7
- package/dist/cjs/quillOverrides/LinkFormat.js +0 -86
- package/dist/cjs/quillOverrides/LinkFormat.js.map +0 -7
- package/dist/cjs/quillOverrides/PlainClipboard.js +0 -47
- package/dist/cjs/quillOverrides/PlainClipboard.js.map +0 -7
- package/dist/cjs/utils.js +0 -50
- package/dist/cjs/utils.js.map +0 -7
- package/dist/esm/DSWYSIWYGEditor.js +0 -64
- package/dist/esm/DSWYSIWYGEditor.js.map +0 -7
- package/dist/esm/components/CustomImageUploader.js +0 -94
- package/dist/esm/components/CustomImageUploader.js.map +0 -7
- package/dist/esm/components/CustomToolbar.js +0 -232
- package/dist/esm/components/CustomToolbar.js.map +0 -7
- package/dist/esm/components/DSWYSIWYGEditorImpl.js +0 -189
- package/dist/esm/components/DSWYSIWYGEditorImpl.js.map +0 -7
- package/dist/esm/components/ImageLibraryModal.js +0 -63
- package/dist/esm/components/ImageLibraryModal.js.map +0 -7
- package/dist/esm/components/InsertFieldModal.js +0 -156
- package/dist/esm/components/InsertFieldModal.js.map +0 -7
- package/dist/esm/components/TippedButton.js +0 -29
- package/dist/esm/components/TippedButton.js.map +0 -7
- package/dist/esm/components/TippedSelect.js +0 -28
- package/dist/esm/components/TippedSelect.js.map +0 -7
- package/dist/esm/components/colors.js +0 -21
- package/dist/esm/components/colors.js.map +0 -7
- package/dist/esm/components/customFields.js +0 -47
- package/dist/esm/components/customFields.js.map +0 -7
- package/dist/esm/constants.js +0 -85
- package/dist/esm/constants.js.map +0 -7
- package/dist/esm/index.js +0 -10
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/quillMatchers/clipboardLinkWithTagMatcher.js +0 -19
- package/dist/esm/quillMatchers/clipboardLinkWithTagMatcher.js.map +0 -7
- package/dist/esm/quillOverrides/IndentStyle.js +0 -22
- package/dist/esm/quillOverrides/IndentStyle.js.map +0 -7
- package/dist/esm/quillOverrides/LinkFormat.js +0 -57
- package/dist/esm/quillOverrides/LinkFormat.js.map +0 -7
- package/dist/esm/quillOverrides/PlainClipboard.js +0 -18
- package/dist/esm/quillOverrides/PlainClipboard.js.map +0 -7
- package/dist/esm/utils.js +0 -21
- package/dist/esm/utils.js.map +0 -7
|
@@ -0,0 +1,256 @@
|
|
|
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 {
|
|
58
|
+
constructor(props) {
|
|
59
|
+
super(props);
|
|
60
|
+
this.quillModules = _objectSpread({
|
|
61
|
+
toolbar: {
|
|
62
|
+
container: this.props.toolbarContainer ? "#".concat(this.props.toolbarContainer) : '#toolbar',
|
|
63
|
+
handlers: _objectSpread({}, this.props.toolbarHandlers)
|
|
64
|
+
},
|
|
65
|
+
clipboard: {
|
|
66
|
+
// toggle to add extra line breaks when pasting HTML:
|
|
67
|
+
matchVisual: false
|
|
68
|
+
},
|
|
69
|
+
blotFormatter: {// options... https://github.com/Fandom-OSS/quill-blot-formatter
|
|
70
|
+
}
|
|
71
|
+
}, this.props.quillModules);
|
|
72
|
+
|
|
73
|
+
this.onChangeQuill = (html, delta, source, editor) => {
|
|
74
|
+
const {
|
|
75
|
+
showRawHTML,
|
|
76
|
+
onChange
|
|
77
|
+
} = this.props;
|
|
78
|
+
if (!showRawHTML) onChange(html, delta, source, editor);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
this.onChangeTextArea = e => {
|
|
82
|
+
const {
|
|
83
|
+
showRawHTML,
|
|
84
|
+
onChange
|
|
85
|
+
} = this.props;
|
|
86
|
+
if (showRawHTML) onChange(e.target.value);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
this.onInserFieldConfirm = fieldCode => {
|
|
90
|
+
const editor = this.getEditor();
|
|
91
|
+
const range = editor.getSelection(true);
|
|
92
|
+
editor.insertText(range.index, fieldCode);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
this.onImageConfirm = image => {
|
|
96
|
+
if (!image) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const editor = this.getEditor();
|
|
101
|
+
const range = editor.getSelection(true);
|
|
102
|
+
editor.insertEmbed(range.index, 'image', image.url);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
this.onFieldModalClose = () => {
|
|
106
|
+
this.setState({
|
|
107
|
+
isFieldModalOpen: false
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
this.onImageModalClose = () => {
|
|
112
|
+
this.setState({
|
|
113
|
+
isImageModalOpen: false
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
this.quillRef = ref => {
|
|
118
|
+
this.quill = ref;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
ReactQuill.Quill.register(LinkFormat, true);
|
|
122
|
+
|
|
123
|
+
if (props.quillOverrides.length) {
|
|
124
|
+
props.quillOverrides.map(override => ReactQuill.Quill.register(override, true));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this.state = {
|
|
128
|
+
isImageModalOpen: false,
|
|
129
|
+
isFieldModalOpen: false
|
|
130
|
+
};
|
|
131
|
+
const {
|
|
132
|
+
toolbar
|
|
133
|
+
} = this.quillModules;
|
|
134
|
+
|
|
135
|
+
if (props.imagesData) {
|
|
136
|
+
toolbar.handlers.image = value => {
|
|
137
|
+
const {
|
|
138
|
+
imagesData,
|
|
139
|
+
handleImageClick
|
|
140
|
+
} = this.props;
|
|
141
|
+
|
|
142
|
+
if (!imagesData.length) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
this.setState({
|
|
147
|
+
isImageModalOpen: !!value
|
|
148
|
+
});
|
|
149
|
+
handleImageClick(value);
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (props.customFields) {
|
|
154
|
+
toolbar.handlers.customFields = value => {
|
|
155
|
+
const {
|
|
156
|
+
customFields,
|
|
157
|
+
handleCustomFieldClick
|
|
158
|
+
} = this.props;
|
|
159
|
+
|
|
160
|
+
if (!customFields.length) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
this.setState({
|
|
165
|
+
isFieldModalOpen: !!value
|
|
166
|
+
});
|
|
167
|
+
handleCustomFieldClick(value);
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
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
|
+
setTimeout(() => {
|
|
176
|
+
const quillDomRef = this.quill;
|
|
177
|
+
const editor = quillDomRef.getEditor();
|
|
178
|
+
this.props.getQuillRef(quillDomRef); // https://github.com/quilljs/quill/issues/2677
|
|
179
|
+
|
|
180
|
+
editor.clipboard.addMatcher('a', clipboardLinkWithTagMatcher.clipboardLinkWithTagMatcher);
|
|
181
|
+
});
|
|
182
|
+
} // eslint-disable-next-line max-params
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
getEditor() {
|
|
186
|
+
return this.quill.getEditor();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
render() {
|
|
190
|
+
const {
|
|
191
|
+
isFieldModalOpen,
|
|
192
|
+
isImageModalOpen
|
|
193
|
+
} = this.state;
|
|
194
|
+
|
|
195
|
+
const _this$props = this.props,
|
|
196
|
+
{
|
|
197
|
+
containerProps = {},
|
|
198
|
+
customFields,
|
|
199
|
+
imagesData,
|
|
200
|
+
customToolbar,
|
|
201
|
+
handleImageClick,
|
|
202
|
+
handleCustomFieldClick,
|
|
203
|
+
height,
|
|
204
|
+
value,
|
|
205
|
+
showRawHTML,
|
|
206
|
+
onShowHTML,
|
|
207
|
+
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
|
+
})]
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
module.exports = DSWYSIWYGEditorImpl;
|
|
@@ -0,0 +1,72 @@
|
|
|
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 {
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super(props);
|
|
25
|
+
|
|
26
|
+
this.onSelect = selectedImage => {
|
|
27
|
+
this.setState({
|
|
28
|
+
selectedImage
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
this.onConfirm = () => {
|
|
33
|
+
const {
|
|
34
|
+
selectedImage
|
|
35
|
+
} = this.state;
|
|
36
|
+
const {
|
|
37
|
+
onConfirm,
|
|
38
|
+
onClose
|
|
39
|
+
} = this.props;
|
|
40
|
+
onConfirm(selectedImage);
|
|
41
|
+
onClose();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
this.state = {
|
|
45
|
+
selectedImage: undefined
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
render() {
|
|
50
|
+
return /*#__PURE__*/jsxRuntime.jsx(DSImageLibraryModal__default["default"], _objectSpread(_objectSpread({}, this.props), {}, {
|
|
51
|
+
onConfirm: this.onConfirm,
|
|
52
|
+
onSelect: this.onSelect
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
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
|
+
}]
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
module.exports = ImageLibraryModal;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
4
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
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 DSModal = require('@elliemae/ds-modal');
|
|
15
|
+
var constants = require('@elliemae/ds-shared/constants');
|
|
16
|
+
var lodash = require('lodash');
|
|
17
|
+
var customFields = require('./customFields.js');
|
|
18
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
19
|
+
|
|
20
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
21
|
+
|
|
22
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
23
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
24
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
25
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
26
|
+
var DSModal__default = /*#__PURE__*/_interopDefaultLegacy(DSModal);
|
|
27
|
+
|
|
28
|
+
const _excluded = ["customFields", "onSelect"];
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
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; }
|
|
33
|
+
const modalTypes = Object.values(DSModal.MODAL_TYPE);
|
|
34
|
+
const elementClassName = 'insertfieldmodal-element';
|
|
35
|
+
class InsertFieldModal extends React__default["default"].PureComponent {
|
|
36
|
+
constructor(props) {
|
|
37
|
+
super(props);
|
|
38
|
+
|
|
39
|
+
this.onConfirm = () => {
|
|
40
|
+
const {
|
|
41
|
+
onConfirm,
|
|
42
|
+
onClose
|
|
43
|
+
} = this.props;
|
|
44
|
+
const {
|
|
45
|
+
selectedFieldCode
|
|
46
|
+
} = this.state;
|
|
47
|
+
onConfirm(selectedFieldCode);
|
|
48
|
+
onClose();
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
this.onReject = () => {
|
|
52
|
+
const {
|
|
53
|
+
onReject,
|
|
54
|
+
onClose
|
|
55
|
+
} = this.props;
|
|
56
|
+
|
|
57
|
+
if (onReject) {
|
|
58
|
+
onReject();
|
|
59
|
+
} else {
|
|
60
|
+
onClose();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
this.drawDiv = (className, content, content2) => /*#__PURE__*/_jsx__default["default"]("div", {
|
|
65
|
+
className: className
|
|
66
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("span", {}, void 0, content), /*#__PURE__*/_jsx__default["default"]("span", {}, void 0, content2));
|
|
67
|
+
|
|
68
|
+
this.drawLabel = (className, label, value) => /*#__PURE__*/_jsx__default["default"]("div", {
|
|
69
|
+
className: className
|
|
70
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("span", {
|
|
71
|
+
className: "label"
|
|
72
|
+
}, void 0, label), /*#__PURE__*/_jsx__default["default"]("span", {
|
|
73
|
+
className: "value"
|
|
74
|
+
}, void 0, value));
|
|
75
|
+
|
|
76
|
+
this.handleElementClick = (e, selectedFieldCode) => {
|
|
77
|
+
if (e.key && e.key !== ' ') {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const {
|
|
82
|
+
selectedFieldCode: fCode
|
|
83
|
+
} = this.state;
|
|
84
|
+
const {
|
|
85
|
+
disableDoubleClick
|
|
86
|
+
} = this.props;
|
|
87
|
+
|
|
88
|
+
if (selectedFieldCode === fCode && !disableDoubleClick) {
|
|
89
|
+
this.onConfirm();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
this.setState({
|
|
94
|
+
selectedFieldCode
|
|
95
|
+
});
|
|
96
|
+
const {
|
|
97
|
+
onSelect
|
|
98
|
+
} = this.props;
|
|
99
|
+
|
|
100
|
+
if (onSelect) {
|
|
101
|
+
onSelect(selectedFieldCode);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
this.preventSpacebarScroll = () => {
|
|
106
|
+
document.onkeypress = function (e) {
|
|
107
|
+
if (!lodash.includes(e.target.className, elementClassName)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
e = e || window.event;
|
|
112
|
+
const charCode = e.keyCode || e.which;
|
|
113
|
+
|
|
114
|
+
if (charCode === 32) {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return true;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
this.renderElements = () => {
|
|
124
|
+
const {
|
|
125
|
+
customFields: customFields$1
|
|
126
|
+
} = this.props;
|
|
127
|
+
|
|
128
|
+
if (!customFields$1) {
|
|
129
|
+
return 'Empty';
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const {
|
|
133
|
+
selectedFieldCode
|
|
134
|
+
} = this.state;
|
|
135
|
+
return customFields$1.map((customField, idx) => {
|
|
136
|
+
const extras = {};
|
|
137
|
+
const fieldCode = customFields.getFieldCode(customField);
|
|
138
|
+
|
|
139
|
+
if (this.focusFirst && idx === 0) {
|
|
140
|
+
extras.ref = element => element && element.focus();
|
|
141
|
+
|
|
142
|
+
this.focusFirst = undefined;
|
|
143
|
+
} else if (fieldCode === selectedFieldCode) {
|
|
144
|
+
extras.ref = element => element && element.focus();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
|
|
148
|
+
className: elementClassName,
|
|
149
|
+
onClick: e => this.handleElementClick(e, fieldCode),
|
|
150
|
+
onKeyUp: e => this.handleElementClick(e, fieldCode),
|
|
151
|
+
role: "button",
|
|
152
|
+
tabIndex: 0
|
|
153
|
+
}, extras), {}, {
|
|
154
|
+
children: this.drawLabel('content', customFields.getFieldName(customField), fieldCode)
|
|
155
|
+
}), fieldCode);
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
this.state = {
|
|
160
|
+
selectedFieldCode: customFields.getFieldCode(customFields.fields[0])
|
|
161
|
+
};
|
|
162
|
+
this.preventSpacebarScroll();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
componentDidMount() {
|
|
166
|
+
const {
|
|
167
|
+
customFields
|
|
168
|
+
} = this.props;
|
|
169
|
+
|
|
170
|
+
if (customFields) {
|
|
171
|
+
this.handleElementClick({}, customFields[0]);
|
|
172
|
+
this.focusFirst = true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
getDerivedStateFromProps(nextProps) {
|
|
177
|
+
const {
|
|
178
|
+
customFields
|
|
179
|
+
} = this.props;
|
|
180
|
+
|
|
181
|
+
if (!customFields && nextProps.customFields) {
|
|
182
|
+
this.setState({
|
|
183
|
+
selectedFieldCode: customFields[0]
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
render() {
|
|
189
|
+
const _this$props = this.props,
|
|
190
|
+
modalProps = _objectWithoutProperties__default["default"](_this$props, _excluded);
|
|
191
|
+
|
|
192
|
+
return /*#__PURE__*/jsxRuntime.jsx(DSModal__default["default"], _objectSpread(_objectSpread({}, modalProps), {}, {
|
|
193
|
+
className: "insert-field-modal",
|
|
194
|
+
onConfirm: this.onConfirm,
|
|
195
|
+
onReject: this.onReject,
|
|
196
|
+
children: /*#__PURE__*/_jsx__default["default"]("div", {
|
|
197
|
+
className: "wrapper"
|
|
198
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("div", {
|
|
199
|
+
className: "col-1"
|
|
200
|
+
}, void 0, this.drawDiv('title', 'Field Name', '« Field ID »'), this.renderElements()))
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
}
|
|
205
|
+
InsertFieldModal.defaultProps = {
|
|
206
|
+
confirmLabel: 'Add',
|
|
207
|
+
customFields: customFields.fields,
|
|
208
|
+
disableDoubleClick: false,
|
|
209
|
+
isOpen: true,
|
|
210
|
+
modalTitle: 'Add Field',
|
|
211
|
+
modalType: modalTypes[1],
|
|
212
|
+
rejectLabel: 'Cancel',
|
|
213
|
+
shouldCloseOnOverlayClick: true,
|
|
214
|
+
size: constants.sizeOptions[1],
|
|
215
|
+
onSelect: undefined
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
module.exports = InsertFieldModal;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
11
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
12
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
13
|
+
require('react');
|
|
14
|
+
var dsTooltip = require('@elliemae/ds-tooltip');
|
|
15
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
16
|
+
|
|
17
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
18
|
+
|
|
19
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
20
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
21
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
22
|
+
|
|
23
|
+
const _excluded = ["className", "tip", "children", "onClick", "zIndex"];
|
|
24
|
+
|
|
25
|
+
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; }
|
|
26
|
+
|
|
27
|
+
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; }
|
|
28
|
+
const TippedButton = _ref => {
|
|
29
|
+
let {
|
|
30
|
+
className,
|
|
31
|
+
tip,
|
|
32
|
+
children,
|
|
33
|
+
onClick = () => null,
|
|
34
|
+
zIndex = 1
|
|
35
|
+
} = _ref,
|
|
36
|
+
rest = _objectWithoutProperties__default["default"](_ref, _excluded);
|
|
37
|
+
|
|
38
|
+
return /*#__PURE__*/_jsx__default["default"]("div", {
|
|
39
|
+
className: "tooltip"
|
|
40
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](dsTooltip.DSTooltipV3, {
|
|
41
|
+
text: tip,
|
|
42
|
+
zIndex: zIndex,
|
|
43
|
+
withoutPortal: false
|
|
44
|
+
}, void 0, /*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
|
|
45
|
+
type: "button",
|
|
46
|
+
className: className,
|
|
47
|
+
onClick: e => {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
onClick(e);
|
|
50
|
+
}
|
|
51
|
+
}, rest), {}, {
|
|
52
|
+
children: children
|
|
53
|
+
}))));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.TippedButton = TippedButton;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
9
|
+
require('react');
|
|
10
|
+
var dsTooltip = require('@elliemae/ds-tooltip');
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
15
|
+
|
|
16
|
+
const TippedSelect = props => {
|
|
17
|
+
const {
|
|
18
|
+
tip,
|
|
19
|
+
onChange = () => null,
|
|
20
|
+
className,
|
|
21
|
+
options,
|
|
22
|
+
defaultValue = '',
|
|
23
|
+
values,
|
|
24
|
+
zIndex,
|
|
25
|
+
children
|
|
26
|
+
} = props;
|
|
27
|
+
const fallBackChildren = values && values.map((value, index) => /*#__PURE__*/_jsx__default["default"]("option", {
|
|
28
|
+
value: value === 'normal' ? '' : value
|
|
29
|
+
}, value, options ? options[index] : null));
|
|
30
|
+
return /*#__PURE__*/_jsx__default["default"]("div", {
|
|
31
|
+
className: "tooltip"
|
|
32
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](dsTooltip.DSTooltipV3, {
|
|
33
|
+
text: tip,
|
|
34
|
+
zIndex: zIndex,
|
|
35
|
+
withoutPortal: false
|
|
36
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("div", {}, void 0, /*#__PURE__*/_jsx__default["default"]("select", {
|
|
37
|
+
className: className,
|
|
38
|
+
defaultValue: defaultValue,
|
|
39
|
+
onChange: e => {
|
|
40
|
+
e.persist();
|
|
41
|
+
onChange(e);
|
|
42
|
+
}
|
|
43
|
+
}, void 0, children || fallBackChildren))));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.TippedSelect = TippedSelect;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
7
|
+
|
|
8
|
+
function sinToHex(i, size, phase) {
|
|
9
|
+
const sin = Math.sin(Math.PI / size * 2 * i + phase);
|
|
10
|
+
const int = Math.floor(sin * 127) + 128;
|
|
11
|
+
const hex = int.toString(16);
|
|
12
|
+
return hex.length === 1 ? "0".concat(hex) : hex;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function getRainbowColors() {
|
|
16
|
+
let size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 28;
|
|
17
|
+
const colors = new Array(size).fill(undefined);
|
|
18
|
+
return colors.map((color, idx) => {
|
|
19
|
+
const red = sinToHex(idx, size, 0 * Math.PI * 2 / 3); // 0 deg
|
|
20
|
+
|
|
21
|
+
const blue = sinToHex(idx, size, 1 * Math.PI * 2 / 3); // 120 deg
|
|
22
|
+
|
|
23
|
+
const green = sinToHex(idx, size, 2 * Math.PI * 2 / 3); // 240 deg
|
|
24
|
+
|
|
25
|
+
color = "#".concat(red).concat(green).concat(blue);
|
|
26
|
+
return color;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exports.getRainbowColors = getRainbowColors;
|