@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.
Files changed (120) hide show
  1. package/cjs/DSWYSIWYGEditor.js +82 -0
  2. package/cjs/components/CustomImageUploader.js +125 -0
  3. package/cjs/components/CustomToolbar.js +282 -0
  4. package/cjs/components/DSWYSIWYGEditorImpl.js +256 -0
  5. package/cjs/components/ImageLibraryModal.js +72 -0
  6. package/cjs/components/InsertFieldModal.js +218 -0
  7. package/cjs/components/TippedButton.js +56 -0
  8. package/cjs/components/TippedSelect.js +46 -0
  9. package/cjs/components/colors.js +30 -0
  10. package/cjs/components/customFields.js +57 -0
  11. package/cjs/constants.js +40 -0
  12. package/cjs/index.js +21 -0
  13. package/cjs/quillMatchers/clipboardLinkWithTagMatcher.js +33 -0
  14. package/cjs/quillOverrides/IndentStyle.js +29 -0
  15. package/cjs/quillOverrides/LinkFormat.js +68 -0
  16. package/cjs/quillOverrides/PlainClipboard.js +27 -0
  17. package/cjs/utils.js +27 -0
  18. package/esm/DSWYSIWYGEditor.js +72 -0
  19. package/esm/components/CustomImageUploader.js +115 -0
  20. package/esm/components/CustomToolbar.js +271 -0
  21. package/esm/components/DSWYSIWYGEditorImpl.js +245 -0
  22. package/esm/components/ImageLibraryModal.js +64 -0
  23. package/esm/components/InsertFieldModal.js +208 -0
  24. package/esm/components/TippedButton.js +46 -0
  25. package/esm/components/TippedSelect.js +38 -0
  26. package/esm/components/colors.js +26 -0
  27. package/esm/components/customFields.js +49 -0
  28. package/esm/constants.js +32 -0
  29. package/esm/index.js +4 -0
  30. package/esm/quillMatchers/clipboardLinkWithTagMatcher.js +29 -0
  31. package/esm/quillOverrides/IndentStyle.js +27 -0
  32. package/esm/quillOverrides/LinkFormat.js +66 -0
  33. package/esm/quillOverrides/PlainClipboard.js +25 -0
  34. package/esm/utils.js +23 -0
  35. package/package.json +56 -58
  36. package/types/DSWYSIWYGEditor.d.ts +75 -0
  37. package/types/components/CustomImageUploader.d.ts +8 -0
  38. package/types/components/CustomToolbar.d.ts +21 -0
  39. package/types/components/DSWYSIWYGEditorImpl.d.ts +15 -0
  40. package/types/components/ImageLibraryModal.d.ts +31 -0
  41. package/types/components/InsertFieldModal.d.ts +41 -0
  42. package/types/components/TippedButton.d.ts +12 -0
  43. package/types/components/TippedSelect.d.ts +13 -0
  44. package/types/components/colors.d.ts +1 -0
  45. package/types/components/customFields.d.ts +36 -0
  46. package/types/constants.d.ts +26 -0
  47. package/types/index.d.ts +4 -0
  48. package/types/quillMatchers/clipboardLinkWithTagMatcher.d.ts +2 -0
  49. package/types/quillOverrides/IndentStyle.d.ts +10 -0
  50. package/types/quillOverrides/LinkFormat.d.ts +12 -0
  51. package/types/quillOverrides/PlainClipboard.d.ts +8 -0
  52. package/types/utils.d.ts +1 -0
  53. package/dist/cjs/DSWYSIWYGEditor.js +0 -93
  54. package/dist/cjs/DSWYSIWYGEditor.js.map +0 -7
  55. package/dist/cjs/components/CustomImageUploader.js +0 -123
  56. package/dist/cjs/components/CustomImageUploader.js.map +0 -7
  57. package/dist/cjs/components/CustomToolbar.js +0 -261
  58. package/dist/cjs/components/CustomToolbar.js.map +0 -7
  59. package/dist/cjs/components/DSWYSIWYGEditorImpl.js +0 -218
  60. package/dist/cjs/components/DSWYSIWYGEditorImpl.js.map +0 -7
  61. package/dist/cjs/components/ImageLibraryModal.js +0 -92
  62. package/dist/cjs/components/ImageLibraryModal.js.map +0 -7
  63. package/dist/cjs/components/InsertFieldModal.js +0 -185
  64. package/dist/cjs/components/InsertFieldModal.js.map +0 -7
  65. package/dist/cjs/components/TippedButton.js +0 -58
  66. package/dist/cjs/components/TippedButton.js.map +0 -7
  67. package/dist/cjs/components/TippedSelect.js +0 -57
  68. package/dist/cjs/components/TippedSelect.js.map +0 -7
  69. package/dist/cjs/components/colors.js +0 -50
  70. package/dist/cjs/components/colors.js.map +0 -7
  71. package/dist/cjs/components/customFields.js +0 -76
  72. package/dist/cjs/components/customFields.js.map +0 -7
  73. package/dist/cjs/constants.js +0 -114
  74. package/dist/cjs/constants.js.map +0 -7
  75. package/dist/cjs/index.js +0 -39
  76. package/dist/cjs/index.js.map +0 -7
  77. package/dist/cjs/quillMatchers/clipboardLinkWithTagMatcher.js +0 -48
  78. package/dist/cjs/quillMatchers/clipboardLinkWithTagMatcher.js.map +0 -7
  79. package/dist/cjs/quillOverrides/IndentStyle.js +0 -51
  80. package/dist/cjs/quillOverrides/IndentStyle.js.map +0 -7
  81. package/dist/cjs/quillOverrides/LinkFormat.js +0 -86
  82. package/dist/cjs/quillOverrides/LinkFormat.js.map +0 -7
  83. package/dist/cjs/quillOverrides/PlainClipboard.js +0 -47
  84. package/dist/cjs/quillOverrides/PlainClipboard.js.map +0 -7
  85. package/dist/cjs/utils.js +0 -50
  86. package/dist/cjs/utils.js.map +0 -7
  87. package/dist/esm/DSWYSIWYGEditor.js +0 -64
  88. package/dist/esm/DSWYSIWYGEditor.js.map +0 -7
  89. package/dist/esm/components/CustomImageUploader.js +0 -94
  90. package/dist/esm/components/CustomImageUploader.js.map +0 -7
  91. package/dist/esm/components/CustomToolbar.js +0 -232
  92. package/dist/esm/components/CustomToolbar.js.map +0 -7
  93. package/dist/esm/components/DSWYSIWYGEditorImpl.js +0 -189
  94. package/dist/esm/components/DSWYSIWYGEditorImpl.js.map +0 -7
  95. package/dist/esm/components/ImageLibraryModal.js +0 -63
  96. package/dist/esm/components/ImageLibraryModal.js.map +0 -7
  97. package/dist/esm/components/InsertFieldModal.js +0 -156
  98. package/dist/esm/components/InsertFieldModal.js.map +0 -7
  99. package/dist/esm/components/TippedButton.js +0 -29
  100. package/dist/esm/components/TippedButton.js.map +0 -7
  101. package/dist/esm/components/TippedSelect.js +0 -28
  102. package/dist/esm/components/TippedSelect.js.map +0 -7
  103. package/dist/esm/components/colors.js +0 -21
  104. package/dist/esm/components/colors.js.map +0 -7
  105. package/dist/esm/components/customFields.js +0 -47
  106. package/dist/esm/components/customFields.js.map +0 -7
  107. package/dist/esm/constants.js +0 -85
  108. package/dist/esm/constants.js.map +0 -7
  109. package/dist/esm/index.js +0 -10
  110. package/dist/esm/index.js.map +0 -7
  111. package/dist/esm/quillMatchers/clipboardLinkWithTagMatcher.js +0 -19
  112. package/dist/esm/quillMatchers/clipboardLinkWithTagMatcher.js.map +0 -7
  113. package/dist/esm/quillOverrides/IndentStyle.js +0 -22
  114. package/dist/esm/quillOverrides/IndentStyle.js.map +0 -7
  115. package/dist/esm/quillOverrides/LinkFormat.js +0 -57
  116. package/dist/esm/quillOverrides/LinkFormat.js.map +0 -7
  117. package/dist/esm/quillOverrides/PlainClipboard.js +0 -18
  118. package/dist/esm/quillOverrides/PlainClipboard.js.map +0 -7
  119. package/dist/esm/utils.js +0 -21
  120. 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;