@plasmicpkgs/react-quill 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +8 -0
- package/dist/react-quill.cjs.development.js +391 -0
- package/dist/react-quill.cjs.development.js.map +1 -0
- package/dist/react-quill.cjs.production.min.js +2 -0
- package/dist/react-quill.cjs.production.min.js.map +1 -0
- package/dist/react-quill.esm.js +383 -0
- package/dist/react-quill.esm.js.map +1 -0
- package/dist/useIsClient.d.ts +3 -0
- package/dist/utils.d.ts +24 -0
- package/package.json +52 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Plasmic
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Plasmic registration call for react-quill WYSIWYG Editor
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactQuillProps } from "react-quill";
|
|
2
|
+
import { Registerable } from "./utils";
|
|
3
|
+
declare type ToolbarOptionsType = "textStyle" | "script" | "fontFamily" | "heading" | "fontSizes" | "colors" | "formatting" | "inputTypes";
|
|
4
|
+
export declare function Quill(props: ReactQuillProps & {
|
|
5
|
+
containerClassName: string;
|
|
6
|
+
customToolbar: any[];
|
|
7
|
+
toolbar: Record<ToolbarOptionsType, any>;
|
|
8
|
+
}): JSX.Element | null;
|
|
9
|
+
export declare function registerQuill(loader?: Registerable): void;
|
|
10
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
6
|
+
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var React__default = _interopDefault(React);
|
|
9
|
+
var registerComponent = _interopDefault(require('@plasmicapp/host/registerComponent'));
|
|
10
|
+
require('@plasmicapp/host/registerGlobalContext');
|
|
11
|
+
|
|
12
|
+
function _extends() {
|
|
13
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
14
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
15
|
+
var source = arguments[i];
|
|
16
|
+
for (var key in source) {
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
18
|
+
target[key] = source[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return target;
|
|
23
|
+
};
|
|
24
|
+
return _extends.apply(this, arguments);
|
|
25
|
+
}
|
|
26
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
27
|
+
if (source == null) return {};
|
|
28
|
+
var target = {};
|
|
29
|
+
var sourceKeys = Object.keys(source);
|
|
30
|
+
var key, i;
|
|
31
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
32
|
+
key = sourceKeys[i];
|
|
33
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
34
|
+
target[key] = source[key];
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function registerComponentHelper(loader, component, meta) {
|
|
40
|
+
if (loader) {
|
|
41
|
+
loader.registerComponent(component, meta);
|
|
42
|
+
} else {
|
|
43
|
+
registerComponent(component, meta);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function useIsClient() {
|
|
48
|
+
var _React$useState = React__default.useState(false),
|
|
49
|
+
loaded = _React$useState[0],
|
|
50
|
+
setLoaded = _React$useState[1];
|
|
51
|
+
useIsomorphicLayoutEffect(function () {
|
|
52
|
+
setLoaded(true);
|
|
53
|
+
});
|
|
54
|
+
return loaded;
|
|
55
|
+
}
|
|
56
|
+
var isBrowser = typeof window !== "undefined";
|
|
57
|
+
var useIsomorphicLayoutEffect = isBrowser ? React__default.useLayoutEffect : React__default.useEffect;
|
|
58
|
+
|
|
59
|
+
var _excluded = ["containerClassName", "toolbar", "customToolbar"];
|
|
60
|
+
var ReactQuill = typeof window !== "undefined" ? /*#__PURE__*/require("react-quill") : null;
|
|
61
|
+
var TEXT_STYLE_DICT = {
|
|
62
|
+
"bold": "bold",
|
|
63
|
+
"italic": "italic",
|
|
64
|
+
"underline": "underline",
|
|
65
|
+
"strikethrough": "strike"
|
|
66
|
+
};
|
|
67
|
+
var HEADING_TYPES_DICT = {
|
|
68
|
+
"Heading 1": 1,
|
|
69
|
+
"Heading 2": 2,
|
|
70
|
+
"Heading 3": 3,
|
|
71
|
+
"Heading 4": 4,
|
|
72
|
+
"Heading 5": 5,
|
|
73
|
+
"Heading 6": 6,
|
|
74
|
+
"Body": "normal"
|
|
75
|
+
};
|
|
76
|
+
var FONT_SIZES = ["small", "medium", "large", "huge"];
|
|
77
|
+
var COLOR_TYPE_DICT = {
|
|
78
|
+
"text color": "color",
|
|
79
|
+
"text background": "background"
|
|
80
|
+
};
|
|
81
|
+
var FORMATTING_TYPES_DICT = {
|
|
82
|
+
"alignment": "align",
|
|
83
|
+
"list": "list",
|
|
84
|
+
"indentation": "indent",
|
|
85
|
+
"text direction": "direction",
|
|
86
|
+
"clear formatting": "clean"
|
|
87
|
+
};
|
|
88
|
+
var INPUT_TYPES = ["link", "blockquote", "image", "video", "code-block", "formula"];
|
|
89
|
+
function Quill(props) {
|
|
90
|
+
var isClient = useIsClient();
|
|
91
|
+
var containerClassName = props.containerClassName,
|
|
92
|
+
toolbar = props.toolbar,
|
|
93
|
+
customToolbar = props.customToolbar,
|
|
94
|
+
rest = _objectWithoutPropertiesLoose(props, _excluded);
|
|
95
|
+
var modules = React.useMemo(function () {
|
|
96
|
+
if (customToolbar) {
|
|
97
|
+
return {
|
|
98
|
+
toolbar: customToolbar
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
var textStyle = toolbar.textStyle,
|
|
102
|
+
fontFamily = toolbar.fontFamily,
|
|
103
|
+
heading = toolbar.heading,
|
|
104
|
+
fontSizes = toolbar.fontSizes,
|
|
105
|
+
colors = toolbar.colors,
|
|
106
|
+
script = toolbar.script,
|
|
107
|
+
formatting = toolbar.formatting,
|
|
108
|
+
inputTypes = toolbar.inputTypes;
|
|
109
|
+
var textStyleControls = Object.keys(TEXT_STYLE_DICT).filter(function (key) {
|
|
110
|
+
return textStyle.includes(key);
|
|
111
|
+
}).map(function (key) {
|
|
112
|
+
return TEXT_STYLE_DICT[key];
|
|
113
|
+
});
|
|
114
|
+
var colorControls = Object.keys(COLOR_TYPE_DICT).filter(function (key) {
|
|
115
|
+
return colors.includes(key);
|
|
116
|
+
}).map(function (key) {
|
|
117
|
+
var _ref;
|
|
118
|
+
return _ref = {}, _ref[COLOR_TYPE_DICT[key]] = [], _ref;
|
|
119
|
+
});
|
|
120
|
+
var scriptControls = script ? [{
|
|
121
|
+
'script': 'super'
|
|
122
|
+
}, {
|
|
123
|
+
'script': 'sub'
|
|
124
|
+
}] : undefined;
|
|
125
|
+
var fontControls = [fontFamily ? {
|
|
126
|
+
font: []
|
|
127
|
+
} : undefined, heading.length ? {
|
|
128
|
+
header: Object.keys(HEADING_TYPES_DICT).filter(function (key) {
|
|
129
|
+
return heading.includes(key);
|
|
130
|
+
}).map(function (key) {
|
|
131
|
+
return HEADING_TYPES_DICT[key];
|
|
132
|
+
})
|
|
133
|
+
} : undefined, fontSizes.length ? {
|
|
134
|
+
size: FONT_SIZES.filter(function (fs) {
|
|
135
|
+
return fontSizes.includes(fs);
|
|
136
|
+
})
|
|
137
|
+
} : undefined].filter(function (i) {
|
|
138
|
+
return i;
|
|
139
|
+
});
|
|
140
|
+
var listControlsGroup = [];
|
|
141
|
+
var indentationControlsGroup = [];
|
|
142
|
+
var otherFormattingControlsGroup = [];
|
|
143
|
+
formatting == null ? void 0 : formatting.map(function (f) {
|
|
144
|
+
var _listControlsGroup$pu, _listControlsGroup$pu2, _otherFormattingContr, _indentationControlsG, _indentationControlsG2, _otherFormattingContr2;
|
|
145
|
+
switch (f) {
|
|
146
|
+
case "list":
|
|
147
|
+
listControlsGroup.push((_listControlsGroup$pu = {}, _listControlsGroup$pu[FORMATTING_TYPES_DICT["list"]] = 'ordered', _listControlsGroup$pu));
|
|
148
|
+
listControlsGroup.push((_listControlsGroup$pu2 = {}, _listControlsGroup$pu2[FORMATTING_TYPES_DICT["list"]] = 'bullet', _listControlsGroup$pu2));
|
|
149
|
+
break;
|
|
150
|
+
case "alignment":
|
|
151
|
+
otherFormattingControlsGroup.push((_otherFormattingContr = {}, _otherFormattingContr[FORMATTING_TYPES_DICT["alignment"]] = [], _otherFormattingContr));
|
|
152
|
+
break;
|
|
153
|
+
case "indentation":
|
|
154
|
+
indentationControlsGroup.push((_indentationControlsG = {}, _indentationControlsG[FORMATTING_TYPES_DICT["indentation"]] = '-1', _indentationControlsG));
|
|
155
|
+
indentationControlsGroup.push((_indentationControlsG2 = {}, _indentationControlsG2[FORMATTING_TYPES_DICT["indentation"]] = '+1', _indentationControlsG2));
|
|
156
|
+
break;
|
|
157
|
+
case "text direction":
|
|
158
|
+
otherFormattingControlsGroup.push((_otherFormattingContr2 = {}, _otherFormattingContr2[FORMATTING_TYPES_DICT["text direction"]] = 'rtl', _otherFormattingContr2));
|
|
159
|
+
break;
|
|
160
|
+
case "clear formatting":
|
|
161
|
+
otherFormattingControlsGroup.push(FORMATTING_TYPES_DICT["clear formatting"]);
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
var otherInputControls = inputTypes.length ? INPUT_TYPES.filter(function (inp) {
|
|
166
|
+
return inputTypes.includes(inp);
|
|
167
|
+
}) : undefined;
|
|
168
|
+
return {
|
|
169
|
+
toolbar: [textStyleControls, colorControls, scriptControls, fontControls, listControlsGroup, indentationControlsGroup, otherFormattingControlsGroup, otherInputControls].filter(function (i) {
|
|
170
|
+
return i == null ? void 0 : i.length;
|
|
171
|
+
})
|
|
172
|
+
};
|
|
173
|
+
}, [toolbar, customToolbar]);
|
|
174
|
+
var key = React.useMemo(function () {
|
|
175
|
+
return JSON.stringify(modules) + String(rest.preserveWhitespace);
|
|
176
|
+
}, [rest.preserveWhitespace, modules]);
|
|
177
|
+
if (!isClient) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
return React__default.createElement("div", {
|
|
181
|
+
className: containerClassName
|
|
182
|
+
}, React__default.createElement(ReactQuill, Object.assign({
|
|
183
|
+
key: key,
|
|
184
|
+
modules: modules
|
|
185
|
+
}, rest)));
|
|
186
|
+
}
|
|
187
|
+
var quillHelpers_ = {
|
|
188
|
+
states: {
|
|
189
|
+
value: {
|
|
190
|
+
onChangeArgsToValue: function onChangeArgsToValue(content, _delta, _source, _editor) {
|
|
191
|
+
return content;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
var toolbarFields = {
|
|
197
|
+
textStyle: {
|
|
198
|
+
type: "choice",
|
|
199
|
+
multiSelect: true,
|
|
200
|
+
options: /*#__PURE__*/Object.keys(TEXT_STYLE_DICT),
|
|
201
|
+
defaultValue: /*#__PURE__*/Object.keys(TEXT_STYLE_DICT)
|
|
202
|
+
},
|
|
203
|
+
colors: {
|
|
204
|
+
type: "choice",
|
|
205
|
+
multiSelect: true,
|
|
206
|
+
options: /*#__PURE__*/Object.keys(COLOR_TYPE_DICT),
|
|
207
|
+
defaultValue: /*#__PURE__*/Object.keys(COLOR_TYPE_DICT)
|
|
208
|
+
},
|
|
209
|
+
script: {
|
|
210
|
+
displayName: "Super/Sub Script",
|
|
211
|
+
type: "boolean",
|
|
212
|
+
defaultValue: true
|
|
213
|
+
},
|
|
214
|
+
fontFamily: {
|
|
215
|
+
type: "boolean",
|
|
216
|
+
defaultValue: true
|
|
217
|
+
},
|
|
218
|
+
heading: {
|
|
219
|
+
type: "choice",
|
|
220
|
+
multiSelect: true,
|
|
221
|
+
options: /*#__PURE__*/Object.keys(HEADING_TYPES_DICT),
|
|
222
|
+
defaultValue: /*#__PURE__*/Object.keys(HEADING_TYPES_DICT)
|
|
223
|
+
},
|
|
224
|
+
fontSizes: {
|
|
225
|
+
type: "choice",
|
|
226
|
+
multiSelect: true,
|
|
227
|
+
options: FONT_SIZES,
|
|
228
|
+
defaultValue: FONT_SIZES
|
|
229
|
+
},
|
|
230
|
+
formatting: {
|
|
231
|
+
type: "choice",
|
|
232
|
+
multiSelect: true,
|
|
233
|
+
options: /*#__PURE__*/Object.keys(FORMATTING_TYPES_DICT),
|
|
234
|
+
defaultValue: /*#__PURE__*/Object.keys(FORMATTING_TYPES_DICT)
|
|
235
|
+
},
|
|
236
|
+
inputTypes: {
|
|
237
|
+
type: "choice",
|
|
238
|
+
multiSelect: true,
|
|
239
|
+
options: INPUT_TYPES,
|
|
240
|
+
defaultValue: INPUT_TYPES
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var importName = "ReactQuill";
|
|
244
|
+
function registerQuill(loader) {
|
|
245
|
+
registerComponentHelper(loader, Quill, {
|
|
246
|
+
name: "hostless-react-quill",
|
|
247
|
+
displayName: "Rich Text Editor",
|
|
248
|
+
classNameProp: "containerClassName",
|
|
249
|
+
defaultStyles: {
|
|
250
|
+
width: "stretch"
|
|
251
|
+
},
|
|
252
|
+
props: {
|
|
253
|
+
value: {
|
|
254
|
+
type: "string",
|
|
255
|
+
displayName: "HTML Value",
|
|
256
|
+
editOnly: true,
|
|
257
|
+
uncontrolledProp: "defaultValue",
|
|
258
|
+
description: "Contents of the editor"
|
|
259
|
+
},
|
|
260
|
+
toolbar: {
|
|
261
|
+
type: "object",
|
|
262
|
+
fields: _extends({}, toolbarFields),
|
|
263
|
+
defaultValue: Object.keys(toolbarFields).reduce(function (acc, key) {
|
|
264
|
+
acc[key] = toolbarFields[key].defaultValue;
|
|
265
|
+
return acc;
|
|
266
|
+
}, {}),
|
|
267
|
+
description: "Customize the toolbar to show/hide controls"
|
|
268
|
+
},
|
|
269
|
+
customToolbar: {
|
|
270
|
+
type: "array",
|
|
271
|
+
advanced: true,
|
|
272
|
+
description: "Custom toolbar configuration for Quill editor. Overrides the existing toolbar."
|
|
273
|
+
},
|
|
274
|
+
placeholder: "string",
|
|
275
|
+
preserveWhitespace: {
|
|
276
|
+
type: "boolean",
|
|
277
|
+
description: "Prevents Quill from collapsing continuous whitespaces on paste",
|
|
278
|
+
advanced: true,
|
|
279
|
+
defaultValue: true
|
|
280
|
+
},
|
|
281
|
+
readOnly: {
|
|
282
|
+
type: "boolean",
|
|
283
|
+
description: "Prevents user from changing the contents of the editor",
|
|
284
|
+
defaultValue: false,
|
|
285
|
+
advanced: true
|
|
286
|
+
},
|
|
287
|
+
onChange: {
|
|
288
|
+
type: "eventHandler",
|
|
289
|
+
advanced: true,
|
|
290
|
+
argTypes: [{
|
|
291
|
+
name: "content",
|
|
292
|
+
type: "string"
|
|
293
|
+
}, {
|
|
294
|
+
name: "delta",
|
|
295
|
+
type: "object"
|
|
296
|
+
}, {
|
|
297
|
+
name: "source",
|
|
298
|
+
type: "string"
|
|
299
|
+
}, {
|
|
300
|
+
name: "editor",
|
|
301
|
+
type: "object"
|
|
302
|
+
}]
|
|
303
|
+
},
|
|
304
|
+
onChangeSelection: {
|
|
305
|
+
type: "eventHandler",
|
|
306
|
+
advanced: true,
|
|
307
|
+
argTypes: [{
|
|
308
|
+
name: "range",
|
|
309
|
+
type: "object"
|
|
310
|
+
}, {
|
|
311
|
+
name: "source",
|
|
312
|
+
type: "string"
|
|
313
|
+
}, {
|
|
314
|
+
name: "editor",
|
|
315
|
+
type: "object"
|
|
316
|
+
}]
|
|
317
|
+
},
|
|
318
|
+
onFocus: {
|
|
319
|
+
type: "eventHandler",
|
|
320
|
+
advanced: true,
|
|
321
|
+
argTypes: [{
|
|
322
|
+
name: "range",
|
|
323
|
+
type: "object"
|
|
324
|
+
}, {
|
|
325
|
+
name: "source",
|
|
326
|
+
type: "string"
|
|
327
|
+
}, {
|
|
328
|
+
name: "editor",
|
|
329
|
+
type: "object"
|
|
330
|
+
}]
|
|
331
|
+
},
|
|
332
|
+
onBlur: {
|
|
333
|
+
type: "eventHandler",
|
|
334
|
+
advanced: true,
|
|
335
|
+
argTypes: [{
|
|
336
|
+
name: "previousRange",
|
|
337
|
+
type: "object"
|
|
338
|
+
}, {
|
|
339
|
+
name: "source",
|
|
340
|
+
type: "string"
|
|
341
|
+
}, {
|
|
342
|
+
name: "editor",
|
|
343
|
+
type: "object"
|
|
344
|
+
}]
|
|
345
|
+
},
|
|
346
|
+
onKeyPress: {
|
|
347
|
+
type: "eventHandler",
|
|
348
|
+
advanced: true,
|
|
349
|
+
argTypes: [{
|
|
350
|
+
name: "event",
|
|
351
|
+
type: "object"
|
|
352
|
+
}]
|
|
353
|
+
},
|
|
354
|
+
onKeyDown: {
|
|
355
|
+
type: "eventHandler",
|
|
356
|
+
advanced: true,
|
|
357
|
+
argTypes: [{
|
|
358
|
+
name: "event",
|
|
359
|
+
type: "object"
|
|
360
|
+
}]
|
|
361
|
+
},
|
|
362
|
+
onKeyUp: {
|
|
363
|
+
type: "eventHandler",
|
|
364
|
+
advanced: true,
|
|
365
|
+
argTypes: [{
|
|
366
|
+
name: "event",
|
|
367
|
+
type: "object"
|
|
368
|
+
}]
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
states: {
|
|
372
|
+
value: _extends({
|
|
373
|
+
type: "writable",
|
|
374
|
+
valueProp: "value",
|
|
375
|
+
onChangeProp: "onChange",
|
|
376
|
+
variableType: "text"
|
|
377
|
+
}, quillHelpers_.states.value)
|
|
378
|
+
},
|
|
379
|
+
componentHelpers: {
|
|
380
|
+
helpers: quillHelpers_,
|
|
381
|
+
importName: importName,
|
|
382
|
+
importPath: "@plasmicpkgs/react-quill"
|
|
383
|
+
},
|
|
384
|
+
importName: importName,
|
|
385
|
+
importPath: "@plasmicpkgs/react-quill"
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
exports.Quill = Quill;
|
|
390
|
+
exports.registerQuill = registerQuill;
|
|
391
|
+
//# sourceMappingURL=react-quill.cjs.development.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-quill.cjs.development.js","sources":["../src/utils.ts","../src/useIsClient.ts","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import React from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;","import React, { useMemo } from \"react\";\nimport { ReactQuillProps } from \"react-quill\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\nimport { PropType } from \"@plasmicapp/host\";\nimport { useIsClient } from \"./useIsClient\";\nconst ReactQuill =\n typeof window !== \"undefined\" ? require(\"react-quill\") : null;\n\n\ntype ToolbarOptionsType = \"textStyle\" | \"script\" | \"fontFamily\" | \"heading\" | \"fontSizes\" | \"colors\" | \"formatting\" | \"inputTypes\";\n\nconst TEXT_STYLE_DICT = {\n \"bold\": \"bold\",\n \"italic\": \"italic\",\n \"underline\": \"underline\",\n \"strikethrough\": \"strike\",\n}\n\nconst HEADING_TYPES_DICT = {\n \"Heading 1\": 1,\n \"Heading 2\": 2,\n \"Heading 3\": 3,\n \"Heading 4\": 4,\n \"Heading 5\": 5,\n \"Heading 6\": 6,\n \"Body\": \"normal\",\n}\n\nconst FONT_SIZES = [\n \"small\",\n \"medium\",\n \"large\",\n \"huge\",\n];\n\nconst COLOR_TYPE_DICT = {\n \"text color\": \"color\",\n \"text background\": \"background\"\n}\n\nconst FORMATTING_TYPES_DICT = {\n \"alignment\": \"align\",\n \"list\": \"list\",\n \"indentation\": \"indent\",\n \"text direction\": \"direction\",\n \"clear formatting\": \"clean\"\n};\n\nconst INPUT_TYPES = [\n \"link\",\"blockquote\",\"image\",\"video\",\"code-block\",\"formula\"\n]\n\nexport function Quill(props: ReactQuillProps & {\n containerClassName: string;\n customToolbar: any[];\n toolbar: Record<ToolbarOptionsType, any>;\n}) {\n const isClient = useIsClient();\n \n const {containerClassName, toolbar, customToolbar, ...rest} = props;\n\n const modules = useMemo(() => {\n\n if (customToolbar) {\n return {\n toolbar: customToolbar,\n }\n }\n\n const {\n textStyle,\n fontFamily,\n heading,\n fontSizes,\n colors,\n script,\n formatting,\n inputTypes,\n } = toolbar;\n \n const textStyleControls = Object.keys(TEXT_STYLE_DICT)\n .filter(key => textStyle.includes(key))\n .map((key) => TEXT_STYLE_DICT[key as keyof typeof TEXT_STYLE_DICT]);\n \n const colorControls = Object.keys(COLOR_TYPE_DICT)\n .filter(key => colors.includes(key))\n .map((key) => ({ [COLOR_TYPE_DICT[key as keyof typeof COLOR_TYPE_DICT]]: [] }));\n \n const scriptControls = script \n ? [{ 'script': 'super'}, { 'script': 'sub'}] : undefined;\n \n const fontControls = [\n fontFamily ?{font: []} : undefined,\n heading.length\n ? {\n header: Object.keys(HEADING_TYPES_DICT)\n .filter(key => heading.includes(key))\n .map((key) => HEADING_TYPES_DICT[key as keyof typeof HEADING_TYPES_DICT])}\n : undefined,\n fontSizes.length\n ? {size: FONT_SIZES.filter(fs => fontSizes.includes(fs))}\n : undefined,\n ].filter(i => i);\n \n const listControlsGroup: any[] = [];\n const indentationControlsGroup: any[] = [];\n const otherFormattingControlsGroup: any[] = [];\n \n formatting?.map((f: keyof typeof FORMATTING_TYPES_DICT) => {\n switch(f) {\n case \"list\":\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'ordered'});\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'bullet' });\n break;\n case \"alignment\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"alignment\"]]: []});\n break;\n case \"indentation\":\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '-1'});\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '+1'});\n break;\n case \"text direction\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"text direction\"]]: 'rtl' });\n break;\n case \"clear formatting\":\n otherFormattingControlsGroup.push(FORMATTING_TYPES_DICT[\"clear formatting\"]);\n break;\n }\n });\n \n const otherInputControls = inputTypes.length ? INPUT_TYPES.filter(inp => inputTypes.includes(inp)) : undefined;\n \n return {\n toolbar: [\n textStyleControls,\n colorControls,\n scriptControls,\n fontControls,\n listControlsGroup,\n indentationControlsGroup,\n otherFormattingControlsGroup,\n otherInputControls,\n ].filter(i => i?.length)\n }\n }, [toolbar, customToolbar]);\n\n const key = useMemo(() => JSON.stringify(modules) + String(rest.preserveWhitespace), [rest.preserveWhitespace, modules]);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={containerClassName}>\n <ReactQuill \n key={key} \n modules={modules}\n {...rest}\n />\n </div>\n )\n}\n\nconst quillHelpers_ = {\n states: {\n value: {\n onChangeArgsToValue: ((content, _delta, _source, _editor) => {\n return content;\n }) as ReactQuillProps[\"onChange\"],\n }\n }\n}\n\nconst toolbarFields: Record<ToolbarOptionsType, PropType<any>> = {\n textStyle: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(TEXT_STYLE_DICT),\n defaultValue: Object.keys(TEXT_STYLE_DICT)\n },\n colors: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(COLOR_TYPE_DICT),\n defaultValue: Object.keys(COLOR_TYPE_DICT),\n },\n script: {\n displayName: \"Super/Sub Script\",\n type: \"boolean\",\n defaultValue: true,\n },\n fontFamily: {\n type: \"boolean\",\n defaultValue: true,\n },\n heading: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(HEADING_TYPES_DICT),\n defaultValue: Object.keys(HEADING_TYPES_DICT),\n },\n fontSizes: {\n type: \"choice\",\n multiSelect: true,\n options: FONT_SIZES,\n defaultValue: FONT_SIZES,\n },\n formatting: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(FORMATTING_TYPES_DICT),\n defaultValue: Object.keys(FORMATTING_TYPES_DICT),\n },\n inputTypes: {\n type: \"choice\",\n multiSelect: true,\n options:INPUT_TYPES,\n defaultValue:INPUT_TYPES,\n },\n} as const;\n\nconst importName = \"ReactQuill\";\n\nexport function registerQuill(loader?: Registerable) {\n registerComponentHelper(loader, Quill, {\n name: \"hostless-react-quill\",\n displayName: \"Rich Text Editor\",\n classNameProp: \"containerClassName\",\n defaultStyles: {\n width: \"stretch\"\n },\n props: {\n value: {\n type: \"string\",\n displayName: \"HTML Value\",\n editOnly: true,\n uncontrolledProp: \"defaultValue\",\n description: \"Contents of the editor\",\n },\n toolbar: {\n type: \"object\",\n fields: {...toolbarFields}, \n defaultValue: Object.keys(toolbarFields)\n .reduce((acc: any, key) => {\n acc[key] = (toolbarFields[key as keyof typeof toolbarFields] as any).defaultValue;\n return acc;\n }, {}),\n description: \"Customize the toolbar to show/hide controls\",\n },\n customToolbar: {\n type: \"array\",\n advanced: true,\n description: \"Custom toolbar configuration for Quill editor. Overrides the existing toolbar.\"\n },\n placeholder: \"string\",\n preserveWhitespace: {\n type: \"boolean\",\n description: \"Prevents Quill from collapsing continuous whitespaces on paste\",\n advanced: true, \n defaultValue: true,\n },\n readOnly: {\n type: \"boolean\",\n description: \"Prevents user from changing the contents of the editor\",\n defaultValue: false,\n advanced: true,\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"delta\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onChangeSelection: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onFocus: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onBlur: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"previousRange\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onKeyPress: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyDown: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyUp: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n } as any,\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n // initVal: \"\",\n ...quillHelpers_.states.value,\n },\n },\n componentHelpers: {\n helpers: quillHelpers_,\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n },\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n });\n}"],"names":["registerComponentHelper","loader","component","meta","registerComponent","useIsClient","React","useState","loaded","setLoaded","useIsomorphicLayoutEffect","isBrowser","window","useLayoutEffect","useEffect","ReactQuill","require","TEXT_STYLE_DICT","HEADING_TYPES_DICT","FONT_SIZES","COLOR_TYPE_DICT","FORMATTING_TYPES_DICT","INPUT_TYPES","Quill","props","isClient","containerClassName","toolbar","customToolbar","rest","modules","useMemo","textStyle","fontFamily","heading","fontSizes","colors","script","formatting","inputTypes","textStyleControls","Object","keys","filter","key","includes","map","colorControls","scriptControls","undefined","fontControls","font","length","header","size","fs","i","listControlsGroup","indentationControlsGroup","otherFormattingControlsGroup","f","push","otherInputControls","inp","JSON","stringify","String","preserveWhitespace","className","quillHelpers_","states","value","onChangeArgsToValue","content","_delta","_source","_editor","toolbarFields","type","multiSelect","options","defaultValue","displayName","importName","registerQuill","name","classNameProp","defaultStyles","width","editOnly","uncontrolledProp","description","fields","reduce","acc","advanced","placeholder","readOnly","onChange","argTypes","onChangeSelection","onFocus","onBlur","onKeyPress","onKeyDown","onKeyUp","valueProp","onChangeProp","variableType","componentHelpers","helpers","importPath"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),a=e(require("@plasmicapp/host/registerComponent"));function r(){return(r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}require("@plasmicapp/host/registerGlobalContext");var o="undefined"!=typeof window?n.useLayoutEffect:n.useEffect,i=["containerClassName","toolbar","customToolbar"],l="undefined"!=typeof window?require("react-quill"):null,s={bold:"bold",italic:"italic",underline:"underline",strikethrough:"strike"},c={"Heading 1":1,"Heading 2":2,"Heading 3":3,"Heading 4":4,"Heading 5":5,"Heading 6":6,Body:"normal"},u=["small","medium","large","huge"],p={"text color":"color","text background":"background"},d={alignment:"align",list:"list",indentation:"indent","text direction":"direction","clear formatting":"clean"},y=["link","blockquote","image","video","code-block","formula"];function f(e){var a,r,f,m=(r=(a=n.useState(!1))[0],f=a[1],o((function(){f(!0)})),r),g=e.containerClassName,b=e.toolbar,h=e.customToolbar,v=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)t.indexOf(n=o[a])>=0||(r[n]=e[n]);return r}(e,i),j=t.useMemo((function(){if(h)return{toolbar:h};var e=b.textStyle,t=b.fontFamily,n=b.heading,a=b.fontSizes,r=b.colors,o=b.script,i=b.formatting,l=b.inputTypes,f=Object.keys(s).filter((function(t){return e.includes(t)})).map((function(e){return s[e]})),m=Object.keys(p).filter((function(e){return r.includes(e)})).map((function(e){var t;return(t={})[p[e]]=[],t})),g=o?[{script:"super"},{script:"sub"}]:void 0,v=[t?{font:[]}:void 0,n.length?{header:Object.keys(c).filter((function(e){return n.includes(e)})).map((function(e){return c[e]}))}:void 0,a.length?{size:u.filter((function(e){return a.includes(e)}))}:void 0].filter((function(e){return e})),j=[],k=[],O=[];null==i||i.map((function(e){var t,n,a,r,o,i;switch(e){case"list":j.push(((t={})[d.list]="ordered",t)),j.push(((n={})[d.list]="bullet",n));break;case"alignment":O.push(((a={})[d.alignment]=[],a));break;case"indentation":k.push(((r={})[d.indentation]="-1",r)),k.push(((o={})[d.indentation]="+1",o));break;case"text direction":O.push(((i={})[d["text direction"]]="rtl",i));break;case"clear formatting":O.push(d["clear formatting"])}}));var S=l.length?y.filter((function(e){return l.includes(e)})):void 0;return{toolbar:[f,m,g,v,j,k,O,S].filter((function(e){return null==e?void 0:e.length}))}}),[b,h]),k=t.useMemo((function(){return JSON.stringify(j)+String(v.preserveWhitespace)}),[v.preserveWhitespace,j]);return m?n.createElement("div",{className:g},n.createElement(l,Object.assign({key:k,modules:j},v))):null}var m={states:{value:{onChangeArgsToValue:function(e,t,n,a){return e}}}},g={textStyle:{type:"choice",multiSelect:!0,options:Object.keys(s),defaultValue:Object.keys(s)},colors:{type:"choice",multiSelect:!0,options:Object.keys(p),defaultValue:Object.keys(p)},script:{displayName:"Super/Sub Script",type:"boolean",defaultValue:!0},fontFamily:{type:"boolean",defaultValue:!0},heading:{type:"choice",multiSelect:!0,options:Object.keys(c),defaultValue:Object.keys(c)},fontSizes:{type:"choice",multiSelect:!0,options:u,defaultValue:u},formatting:{type:"choice",multiSelect:!0,options:Object.keys(d),defaultValue:Object.keys(d)},inputTypes:{type:"choice",multiSelect:!0,options:y,defaultValue:y}};exports.Quill=f,exports.registerQuill=function(e){!function(e,t,n){e?e.registerComponent(t,n):a(t,n)}(e,f,{name:"hostless-react-quill",displayName:"Rich Text Editor",classNameProp:"containerClassName",defaultStyles:{width:"stretch"},props:{value:{type:"string",displayName:"HTML Value",editOnly:!0,uncontrolledProp:"defaultValue",description:"Contents of the editor"},toolbar:{type:"object",fields:r({},g),defaultValue:Object.keys(g).reduce((function(e,t){return e[t]=g[t].defaultValue,e}),{}),description:"Customize the toolbar to show/hide controls"},customToolbar:{type:"array",advanced:!0,description:"Custom toolbar configuration for Quill editor. Overrides the existing toolbar."},placeholder:"string",preserveWhitespace:{type:"boolean",description:"Prevents Quill from collapsing continuous whitespaces on paste",advanced:!0,defaultValue:!0},readOnly:{type:"boolean",description:"Prevents user from changing the contents of the editor",defaultValue:!1,advanced:!0},onChange:{type:"eventHandler",advanced:!0,argTypes:[{name:"content",type:"string"},{name:"delta",type:"object"},{name:"source",type:"string"},{name:"editor",type:"object"}]},onChangeSelection:{type:"eventHandler",advanced:!0,argTypes:[{name:"range",type:"object"},{name:"source",type:"string"},{name:"editor",type:"object"}]},onFocus:{type:"eventHandler",advanced:!0,argTypes:[{name:"range",type:"object"},{name:"source",type:"string"},{name:"editor",type:"object"}]},onBlur:{type:"eventHandler",advanced:!0,argTypes:[{name:"previousRange",type:"object"},{name:"source",type:"string"},{name:"editor",type:"object"}]},onKeyPress:{type:"eventHandler",advanced:!0,argTypes:[{name:"event",type:"object"}]},onKeyDown:{type:"eventHandler",advanced:!0,argTypes:[{name:"event",type:"object"}]},onKeyUp:{type:"eventHandler",advanced:!0,argTypes:[{name:"event",type:"object"}]}},states:{value:r({type:"writable",valueProp:"value",onChangeProp:"onChange",variableType:"text"},m.states.value)},componentHelpers:{helpers:m,importName:"ReactQuill",importPath:"@plasmicpkgs/react-quill"},importName:"ReactQuill",importPath:"@plasmicpkgs/react-quill"})};
|
|
2
|
+
//# sourceMappingURL=react-quill.cjs.production.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-quill.cjs.production.min.js","sources":["../src/useIsClient.ts","../src/index.tsx","../src/utils.ts"],"sourcesContent":["import React from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;","import React, { useMemo } from \"react\";\nimport { ReactQuillProps } from \"react-quill\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\nimport { PropType } from \"@plasmicapp/host\";\nimport { useIsClient } from \"./useIsClient\";\nconst ReactQuill =\n typeof window !== \"undefined\" ? require(\"react-quill\") : null;\n\n\ntype ToolbarOptionsType = \"textStyle\" | \"script\" | \"fontFamily\" | \"heading\" | \"fontSizes\" | \"colors\" | \"formatting\" | \"inputTypes\";\n\nconst TEXT_STYLE_DICT = {\n \"bold\": \"bold\",\n \"italic\": \"italic\",\n \"underline\": \"underline\",\n \"strikethrough\": \"strike\",\n}\n\nconst HEADING_TYPES_DICT = {\n \"Heading 1\": 1,\n \"Heading 2\": 2,\n \"Heading 3\": 3,\n \"Heading 4\": 4,\n \"Heading 5\": 5,\n \"Heading 6\": 6,\n \"Body\": \"normal\",\n}\n\nconst FONT_SIZES = [\n \"small\",\n \"medium\",\n \"large\",\n \"huge\",\n];\n\nconst COLOR_TYPE_DICT = {\n \"text color\": \"color\",\n \"text background\": \"background\"\n}\n\nconst FORMATTING_TYPES_DICT = {\n \"alignment\": \"align\",\n \"list\": \"list\",\n \"indentation\": \"indent\",\n \"text direction\": \"direction\",\n \"clear formatting\": \"clean\"\n};\n\nconst INPUT_TYPES = [\n \"link\",\"blockquote\",\"image\",\"video\",\"code-block\",\"formula\"\n]\n\nexport function Quill(props: ReactQuillProps & {\n containerClassName: string;\n customToolbar: any[];\n toolbar: Record<ToolbarOptionsType, any>;\n}) {\n const isClient = useIsClient();\n \n const {containerClassName, toolbar, customToolbar, ...rest} = props;\n\n const modules = useMemo(() => {\n\n if (customToolbar) {\n return {\n toolbar: customToolbar,\n }\n }\n\n const {\n textStyle,\n fontFamily,\n heading,\n fontSizes,\n colors,\n script,\n formatting,\n inputTypes,\n } = toolbar;\n \n const textStyleControls = Object.keys(TEXT_STYLE_DICT)\n .filter(key => textStyle.includes(key))\n .map((key) => TEXT_STYLE_DICT[key as keyof typeof TEXT_STYLE_DICT]);\n \n const colorControls = Object.keys(COLOR_TYPE_DICT)\n .filter(key => colors.includes(key))\n .map((key) => ({ [COLOR_TYPE_DICT[key as keyof typeof COLOR_TYPE_DICT]]: [] }));\n \n const scriptControls = script \n ? [{ 'script': 'super'}, { 'script': 'sub'}] : undefined;\n \n const fontControls = [\n fontFamily ?{font: []} : undefined,\n heading.length\n ? {\n header: Object.keys(HEADING_TYPES_DICT)\n .filter(key => heading.includes(key))\n .map((key) => HEADING_TYPES_DICT[key as keyof typeof HEADING_TYPES_DICT])}\n : undefined,\n fontSizes.length\n ? {size: FONT_SIZES.filter(fs => fontSizes.includes(fs))}\n : undefined,\n ].filter(i => i);\n \n const listControlsGroup: any[] = [];\n const indentationControlsGroup: any[] = [];\n const otherFormattingControlsGroup: any[] = [];\n \n formatting?.map((f: keyof typeof FORMATTING_TYPES_DICT) => {\n switch(f) {\n case \"list\":\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'ordered'});\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'bullet' });\n break;\n case \"alignment\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"alignment\"]]: []});\n break;\n case \"indentation\":\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '-1'});\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '+1'});\n break;\n case \"text direction\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"text direction\"]]: 'rtl' });\n break;\n case \"clear formatting\":\n otherFormattingControlsGroup.push(FORMATTING_TYPES_DICT[\"clear formatting\"]);\n break;\n }\n });\n \n const otherInputControls = inputTypes.length ? INPUT_TYPES.filter(inp => inputTypes.includes(inp)) : undefined;\n \n return {\n toolbar: [\n textStyleControls,\n colorControls,\n scriptControls,\n fontControls,\n listControlsGroup,\n indentationControlsGroup,\n otherFormattingControlsGroup,\n otherInputControls,\n ].filter(i => i?.length)\n }\n }, [toolbar, customToolbar]);\n\n const key = useMemo(() => JSON.stringify(modules) + String(rest.preserveWhitespace), [rest.preserveWhitespace, modules]);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={containerClassName}>\n <ReactQuill \n key={key} \n modules={modules}\n {...rest}\n />\n </div>\n )\n}\n\nconst quillHelpers_ = {\n states: {\n value: {\n onChangeArgsToValue: ((content, _delta, _source, _editor) => {\n return content;\n }) as ReactQuillProps[\"onChange\"],\n }\n }\n}\n\nconst toolbarFields: Record<ToolbarOptionsType, PropType<any>> = {\n textStyle: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(TEXT_STYLE_DICT),\n defaultValue: Object.keys(TEXT_STYLE_DICT)\n },\n colors: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(COLOR_TYPE_DICT),\n defaultValue: Object.keys(COLOR_TYPE_DICT),\n },\n script: {\n displayName: \"Super/Sub Script\",\n type: \"boolean\",\n defaultValue: true,\n },\n fontFamily: {\n type: \"boolean\",\n defaultValue: true,\n },\n heading: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(HEADING_TYPES_DICT),\n defaultValue: Object.keys(HEADING_TYPES_DICT),\n },\n fontSizes: {\n type: \"choice\",\n multiSelect: true,\n options: FONT_SIZES,\n defaultValue: FONT_SIZES,\n },\n formatting: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(FORMATTING_TYPES_DICT),\n defaultValue: Object.keys(FORMATTING_TYPES_DICT),\n },\n inputTypes: {\n type: \"choice\",\n multiSelect: true,\n options:INPUT_TYPES,\n defaultValue:INPUT_TYPES,\n },\n} as const;\n\nconst importName = \"ReactQuill\";\n\nexport function registerQuill(loader?: Registerable) {\n registerComponentHelper(loader, Quill, {\n name: \"hostless-react-quill\",\n displayName: \"Rich Text Editor\",\n classNameProp: \"containerClassName\",\n defaultStyles: {\n width: \"stretch\"\n },\n props: {\n value: {\n type: \"string\",\n displayName: \"HTML Value\",\n editOnly: true,\n uncontrolledProp: \"defaultValue\",\n description: \"Contents of the editor\",\n },\n toolbar: {\n type: \"object\",\n fields: {...toolbarFields}, \n defaultValue: Object.keys(toolbarFields)\n .reduce((acc: any, key) => {\n acc[key] = (toolbarFields[key as keyof typeof toolbarFields] as any).defaultValue;\n return acc;\n }, {}),\n description: \"Customize the toolbar to show/hide controls\",\n },\n customToolbar: {\n type: \"array\",\n advanced: true,\n description: \"Custom toolbar configuration for Quill editor. Overrides the existing toolbar.\"\n },\n placeholder: \"string\",\n preserveWhitespace: {\n type: \"boolean\",\n description: \"Prevents Quill from collapsing continuous whitespaces on paste\",\n advanced: true, \n defaultValue: true,\n },\n readOnly: {\n type: \"boolean\",\n description: \"Prevents user from changing the contents of the editor\",\n defaultValue: false,\n advanced: true,\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"delta\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onChangeSelection: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onFocus: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onBlur: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"previousRange\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onKeyPress: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyDown: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyUp: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n } as any,\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n // initVal: \"\",\n ...quillHelpers_.states.value,\n },\n },\n componentHelpers: {\n helpers: quillHelpers_,\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n },\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n });\n}","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","ReactQuill","require","TEXT_STYLE_DICT","bold","italic","underline","strikethrough","HEADING_TYPES_DICT","Heading 1","Heading 2","Heading 3","Heading 4","Heading 5","Heading 6","Body","FONT_SIZES","COLOR_TYPE_DICT","text color","text background","FORMATTING_TYPES_DICT","alignment","list","indentation","text direction","clear formatting","INPUT_TYPES","Quill","props","loaded","setLoaded","isClient","useState","containerClassName","toolbar","customToolbar","rest","modules","useMemo","textStyle","fontFamily","heading","fontSizes","colors","script","formatting","inputTypes","textStyleControls","Object","keys","filter","key","includes","map","colorControls","scriptControls","undefined","fontControls","font","length","header","size","fs","i","listControlsGroup","indentationControlsGroup","otherFormattingControlsGroup","f","push","otherInputControls","inp","JSON","stringify","String","preserveWhitespace","className","quillHelpers_","states","value","onChangeArgsToValue","content","_delta","_source","_editor","toolbarFields","type","multiSelect","options","defaultValue","displayName","loader","component","meta","registerComponent","registerComponentHelper","name","classNameProp","defaultStyles","width","editOnly","uncontrolledProp","description","fields","reduce","acc","advanced","placeholder","readOnly","onChange","argTypes","onChangeSelection","onFocus","onBlur","onKeyPress","onKeyDown","onKeyUp","valueProp","onChangeProp","variableType","componentHelpers","helpers","importName","importPath"],"mappings":"gfAUA,IACaA,EADuB,oBAAXC,OAEnBC,EAAMC,gBACND,EAAME,6DCRNC,EACc,oBAAXJ,OAAyBK,QAAQ,eAAiB,KAKrDC,EAAkB,CACtBC,KAAQ,OACRC,OAAU,SACVC,UAAa,YACbC,cAAiB,UAGbC,EAAqB,CACzBC,YAAa,EACbC,YAAa,EACbC,YAAa,EACbC,YAAa,EACbC,YAAa,EACbC,YAAa,EACbC,KAAQ,UAGJC,EAAa,CACjB,QACA,SACA,QACA,QAGIC,EAAkB,CACtBC,aAAc,QACdC,kBAAmB,cAGfC,EAAwB,CAC5BC,UAAa,QACbC,KAAQ,OACRC,YAAe,SACfC,iBAAkB,YAClBC,mBAAoB,SAGhBC,EAAc,CAClB,OAAO,aAAa,QAAQ,QAAQ,aAAa,oBAGnCC,EAAMC,GAKpB,MDtDSC,EAAQC,ECsDXC,GDtDGF,KAAqB/B,EAAMkC,UAAS,OAA5BF,OACflC,GAA0B,WACtBkC,GAAU,MAEPD,GCoDFI,EAAuDL,EAAvDK,mBAAoBC,EAAmCN,EAAnCM,QAASC,EAA0BP,EAA1BO,cAAkBC,qIAAQR,KAExDS,EAAUC,WAAQ,WAEtB,GAAIH,EACF,MAAO,CACLD,QAASC,GAIb,IACEI,EAQEL,EARFK,UACAC,EAOEN,EAPFM,WACAC,EAMEP,EANFO,QACAC,EAKER,EALFQ,UACAC,EAIET,EAJFS,OACAC,EAGEV,EAHFU,OACAC,EAEEX,EAFFW,WACAC,EACEZ,EADFY,WAGIC,EAAoBC,OAAOC,KAAK9C,GACnC+C,QAAO,SAAAC,GAAG,OAAIZ,EAAUa,SAASD,MACjCE,KAAI,SAACF,GAAG,OAAKhD,EAAgBgD,MAE1BG,EAAgBN,OAAOC,KAAKhC,GAC/BiC,QAAO,SAAAC,GAAG,OAAIR,EAAOS,SAASD,MAC9BE,KAAI,SAACF,GAAG,MAAA,aAASlC,EAAgBkC,IAAuC,QAErEI,EAAiBX,EACrB,CAAC,CAAEA,OAAU,SAAU,CAAEA,OAAU,aAAUY,EAEzCC,EAAe,CACnBjB,EAAY,CAACkB,KAAM,SAAMF,EACzBf,EAAQkB,OACJ,CACEC,OAAQZ,OAAOC,KAAKzC,GACjB0C,QAAO,SAAAC,GAAG,OAAIV,EAAQW,SAASD,MAC/BE,KAAI,SAACF,GAAG,OAAK3C,EAAmB2C,YACrCK,EACJd,EAAUiB,OACN,CAACE,KAAM7C,EAAWkC,QAAO,SAAAY,GAAE,OAAIpB,EAAUU,SAASU,YAClDN,GACJN,QAAO,SAAAa,GAAC,OAAIA,KAERC,EAA2B,GAC3BC,EAAkC,GAClCC,EAAsC,SAE5CrB,GAAAA,EAAYQ,KAAI,SAACc,mBACf,OAAOA,GACL,IAAK,OACHH,EAAkBI,aAAShD,EAA4B,MAAI,cAC3D4C,EAAkBI,aAAShD,EAA4B,MAAI,aAC3D,MACF,IAAK,YACH8C,EAA6BE,aAAQhD,EAAiC,WAAI,OAC1E,MACA,IAAK,cACH6C,EAAyBG,aAAQhD,EAAmC,aAAI,SACxE6C,EAAyBG,aAAQhD,EAAmC,aAAI,SAC1E,MACF,IAAK,iBACH8C,EAA6BE,aAAQhD,EAAsB,mBAAoB,UAC/E,MACF,IAAK,mBACH8C,EAA6BE,KAAKhD,EAAsB,yBAK9D,IAAMiD,EAAqBvB,EAAWa,OAASjC,EAAYwB,QAAO,SAAAoB,GAAG,OAAIxB,EAAWM,SAASkB,WAAQd,EAErG,MAAO,CACLtB,QAAS,CACPa,EACAO,EACAC,EACAE,EACAO,EACAC,EACAC,EACAG,GACAnB,QAAO,SAAAa,GAAC,aAAIA,SAAAA,EAAGJ,aAElB,CAACzB,EAASC,IAEPgB,EAAMb,WAAQ,WAAA,OAAMiC,KAAKC,UAAUnC,GAAWoC,OAAOrC,EAAKsC,sBAAqB,CAACtC,EAAKsC,mBAAoBrC,IAE/G,OAAKN,EAKHjC,uBAAK6E,UAAW1C,GACdnC,gBAACG,iBACCkD,IAAKA,EACLd,QAASA,GACLD,KARD,KAcX,IAAMwC,EAAgB,CACpBC,OAAQ,CACNC,MAAO,CACLC,oBAAsB,SAACC,EAASC,EAAQC,EAASC,GAC/C,OAAOH,MAMTI,EAA2D,CAC/D7C,UAAW,CACT8C,KAAM,SACNC,aAAa,EACbC,QAASvC,OAAOC,KAAK9C,GACrBqF,aAAcxC,OAAOC,KAAK9C,IAE5BwC,OAAQ,CACN0C,KAAM,SACNC,aAAa,EACbC,QAASvC,OAAOC,KAAKhC,GACrBuE,aAAcxC,OAAOC,KAAKhC,IAE5B2B,OAAQ,CACN6C,YAAa,mBACbJ,KAAM,UACNG,cAAc,GAEhBhD,WAAY,CACV6C,KAAM,UACNG,cAAc,GAEhB/C,QAAS,CACP4C,KAAM,SACNC,aAAa,EACbC,QAASvC,OAAOC,KAAKzC,GACrBgF,aAAcxC,OAAOC,KAAKzC,IAE5BkC,UAAW,CACT2C,KAAM,SACNC,aAAa,EACbC,QAASvE,EACTwE,aAAcxE,GAEhB6B,WAAY,CACVwC,KAAM,SACNC,aAAa,EACbC,QAASvC,OAAOC,KAAK7B,GACrBoE,aAAcxC,OAAOC,KAAK7B,IAE5B0B,WAAY,CACVuC,KAAM,SACNC,aAAa,EACbC,QAAQ7D,EACR8D,aAAa9D,mDAMagE,aCvL5BA,EACAC,EACAC,GAEIF,EACFA,EAAOG,kBAAkBF,EAAWC,GAEpCC,EAAkBF,EAAWC,GDiL/BE,CAAwBJ,EAAQ/D,EAAO,CACrCoE,KAAM,uBACNN,YAAa,mBACbO,cAAe,qBACfC,cAAe,CACbC,MAAO,WAETtE,MAAO,CACLkD,MAAO,CACLO,KAAM,SACNI,YAAa,aACbU,UAAU,EACVC,iBAAkB,eAClBC,YAAa,0BAEfnE,QAAS,CACPmD,KAAM,SACNiB,YAAYlB,GACZI,aAAcxC,OAAOC,KAAKmC,GACvBmB,QAAO,SAACC,EAAUrD,GAEjB,OADAqD,EAAIrD,GAAQiC,EAAcjC,GAA2CqC,aAC9DgB,IACN,IACLH,YAAa,+CAEflE,cAAe,CACbkD,KAAM,QACNoB,UAAU,EACVJ,YAAa,kFAEfK,YAAa,SACbhC,mBAAoB,CAClBW,KAAM,UACNgB,YAAa,iEACbI,UAAU,EACVjB,cAAc,GAEhBmB,SAAU,CACRtB,KAAM,UACNgB,YAAa,yDACbb,cAAc,EACdiB,UAAU,GAEZG,SAAU,CACRvB,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,UACNV,KAAM,UAER,CACEU,KAAM,QACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,YAIZyB,kBAAmB,CACjBzB,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,QACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,YAIZ0B,QAAS,CACP1B,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,QACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,YAIZ2B,OAAQ,CACN3B,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,gBACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,UAER,CACEU,KAAM,SACNV,KAAM,YAIZ4B,WAAY,CACV5B,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,QACNV,KAAM,YAIZ6B,UAAW,CACT7B,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,QACNV,KAAM,YAIZ8B,QAAS,CACP9B,KAAM,eACNoB,UAAU,EACVI,SAAU,CACR,CACEd,KAAM,QACNV,KAAM,aAKdR,OAAQ,CACJC,SACEO,KAAM,WACN+B,UAAW,QACXC,aAAc,WACdC,aAAc,QAEX1C,EAAcC,OAAOC,QAG9ByC,iBAAkB,CAChBC,QAAS5C,EACT6C,WArKa,aAsKbC,WAAY,4BAEdD,WAxKe,aAyKfC,WAAY"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import registerComponent from '@plasmicapp/host/registerComponent';
|
|
3
|
+
import '@plasmicapp/host/registerGlobalContext';
|
|
4
|
+
|
|
5
|
+
function _extends() {
|
|
6
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
7
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
8
|
+
var source = arguments[i];
|
|
9
|
+
for (var key in source) {
|
|
10
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
11
|
+
target[key] = source[key];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return target;
|
|
16
|
+
};
|
|
17
|
+
return _extends.apply(this, arguments);
|
|
18
|
+
}
|
|
19
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
20
|
+
if (source == null) return {};
|
|
21
|
+
var target = {};
|
|
22
|
+
var sourceKeys = Object.keys(source);
|
|
23
|
+
var key, i;
|
|
24
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
25
|
+
key = sourceKeys[i];
|
|
26
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
27
|
+
target[key] = source[key];
|
|
28
|
+
}
|
|
29
|
+
return target;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function registerComponentHelper(loader, component, meta) {
|
|
33
|
+
if (loader) {
|
|
34
|
+
loader.registerComponent(component, meta);
|
|
35
|
+
} else {
|
|
36
|
+
registerComponent(component, meta);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function useIsClient() {
|
|
41
|
+
var _React$useState = React.useState(false),
|
|
42
|
+
loaded = _React$useState[0],
|
|
43
|
+
setLoaded = _React$useState[1];
|
|
44
|
+
useIsomorphicLayoutEffect(function () {
|
|
45
|
+
setLoaded(true);
|
|
46
|
+
});
|
|
47
|
+
return loaded;
|
|
48
|
+
}
|
|
49
|
+
var isBrowser = typeof window !== "undefined";
|
|
50
|
+
var useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;
|
|
51
|
+
|
|
52
|
+
var _excluded = ["containerClassName", "toolbar", "customToolbar"];
|
|
53
|
+
var ReactQuill = typeof window !== "undefined" ? /*#__PURE__*/require("react-quill") : null;
|
|
54
|
+
var TEXT_STYLE_DICT = {
|
|
55
|
+
"bold": "bold",
|
|
56
|
+
"italic": "italic",
|
|
57
|
+
"underline": "underline",
|
|
58
|
+
"strikethrough": "strike"
|
|
59
|
+
};
|
|
60
|
+
var HEADING_TYPES_DICT = {
|
|
61
|
+
"Heading 1": 1,
|
|
62
|
+
"Heading 2": 2,
|
|
63
|
+
"Heading 3": 3,
|
|
64
|
+
"Heading 4": 4,
|
|
65
|
+
"Heading 5": 5,
|
|
66
|
+
"Heading 6": 6,
|
|
67
|
+
"Body": "normal"
|
|
68
|
+
};
|
|
69
|
+
var FONT_SIZES = ["small", "medium", "large", "huge"];
|
|
70
|
+
var COLOR_TYPE_DICT = {
|
|
71
|
+
"text color": "color",
|
|
72
|
+
"text background": "background"
|
|
73
|
+
};
|
|
74
|
+
var FORMATTING_TYPES_DICT = {
|
|
75
|
+
"alignment": "align",
|
|
76
|
+
"list": "list",
|
|
77
|
+
"indentation": "indent",
|
|
78
|
+
"text direction": "direction",
|
|
79
|
+
"clear formatting": "clean"
|
|
80
|
+
};
|
|
81
|
+
var INPUT_TYPES = ["link", "blockquote", "image", "video", "code-block", "formula"];
|
|
82
|
+
function Quill(props) {
|
|
83
|
+
var isClient = useIsClient();
|
|
84
|
+
var containerClassName = props.containerClassName,
|
|
85
|
+
toolbar = props.toolbar,
|
|
86
|
+
customToolbar = props.customToolbar,
|
|
87
|
+
rest = _objectWithoutPropertiesLoose(props, _excluded);
|
|
88
|
+
var modules = useMemo(function () {
|
|
89
|
+
if (customToolbar) {
|
|
90
|
+
return {
|
|
91
|
+
toolbar: customToolbar
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
var textStyle = toolbar.textStyle,
|
|
95
|
+
fontFamily = toolbar.fontFamily,
|
|
96
|
+
heading = toolbar.heading,
|
|
97
|
+
fontSizes = toolbar.fontSizes,
|
|
98
|
+
colors = toolbar.colors,
|
|
99
|
+
script = toolbar.script,
|
|
100
|
+
formatting = toolbar.formatting,
|
|
101
|
+
inputTypes = toolbar.inputTypes;
|
|
102
|
+
var textStyleControls = Object.keys(TEXT_STYLE_DICT).filter(function (key) {
|
|
103
|
+
return textStyle.includes(key);
|
|
104
|
+
}).map(function (key) {
|
|
105
|
+
return TEXT_STYLE_DICT[key];
|
|
106
|
+
});
|
|
107
|
+
var colorControls = Object.keys(COLOR_TYPE_DICT).filter(function (key) {
|
|
108
|
+
return colors.includes(key);
|
|
109
|
+
}).map(function (key) {
|
|
110
|
+
var _ref;
|
|
111
|
+
return _ref = {}, _ref[COLOR_TYPE_DICT[key]] = [], _ref;
|
|
112
|
+
});
|
|
113
|
+
var scriptControls = script ? [{
|
|
114
|
+
'script': 'super'
|
|
115
|
+
}, {
|
|
116
|
+
'script': 'sub'
|
|
117
|
+
}] : undefined;
|
|
118
|
+
var fontControls = [fontFamily ? {
|
|
119
|
+
font: []
|
|
120
|
+
} : undefined, heading.length ? {
|
|
121
|
+
header: Object.keys(HEADING_TYPES_DICT).filter(function (key) {
|
|
122
|
+
return heading.includes(key);
|
|
123
|
+
}).map(function (key) {
|
|
124
|
+
return HEADING_TYPES_DICT[key];
|
|
125
|
+
})
|
|
126
|
+
} : undefined, fontSizes.length ? {
|
|
127
|
+
size: FONT_SIZES.filter(function (fs) {
|
|
128
|
+
return fontSizes.includes(fs);
|
|
129
|
+
})
|
|
130
|
+
} : undefined].filter(function (i) {
|
|
131
|
+
return i;
|
|
132
|
+
});
|
|
133
|
+
var listControlsGroup = [];
|
|
134
|
+
var indentationControlsGroup = [];
|
|
135
|
+
var otherFormattingControlsGroup = [];
|
|
136
|
+
formatting == null ? void 0 : formatting.map(function (f) {
|
|
137
|
+
var _listControlsGroup$pu, _listControlsGroup$pu2, _otherFormattingContr, _indentationControlsG, _indentationControlsG2, _otherFormattingContr2;
|
|
138
|
+
switch (f) {
|
|
139
|
+
case "list":
|
|
140
|
+
listControlsGroup.push((_listControlsGroup$pu = {}, _listControlsGroup$pu[FORMATTING_TYPES_DICT["list"]] = 'ordered', _listControlsGroup$pu));
|
|
141
|
+
listControlsGroup.push((_listControlsGroup$pu2 = {}, _listControlsGroup$pu2[FORMATTING_TYPES_DICT["list"]] = 'bullet', _listControlsGroup$pu2));
|
|
142
|
+
break;
|
|
143
|
+
case "alignment":
|
|
144
|
+
otherFormattingControlsGroup.push((_otherFormattingContr = {}, _otherFormattingContr[FORMATTING_TYPES_DICT["alignment"]] = [], _otherFormattingContr));
|
|
145
|
+
break;
|
|
146
|
+
case "indentation":
|
|
147
|
+
indentationControlsGroup.push((_indentationControlsG = {}, _indentationControlsG[FORMATTING_TYPES_DICT["indentation"]] = '-1', _indentationControlsG));
|
|
148
|
+
indentationControlsGroup.push((_indentationControlsG2 = {}, _indentationControlsG2[FORMATTING_TYPES_DICT["indentation"]] = '+1', _indentationControlsG2));
|
|
149
|
+
break;
|
|
150
|
+
case "text direction":
|
|
151
|
+
otherFormattingControlsGroup.push((_otherFormattingContr2 = {}, _otherFormattingContr2[FORMATTING_TYPES_DICT["text direction"]] = 'rtl', _otherFormattingContr2));
|
|
152
|
+
break;
|
|
153
|
+
case "clear formatting":
|
|
154
|
+
otherFormattingControlsGroup.push(FORMATTING_TYPES_DICT["clear formatting"]);
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
var otherInputControls = inputTypes.length ? INPUT_TYPES.filter(function (inp) {
|
|
159
|
+
return inputTypes.includes(inp);
|
|
160
|
+
}) : undefined;
|
|
161
|
+
return {
|
|
162
|
+
toolbar: [textStyleControls, colorControls, scriptControls, fontControls, listControlsGroup, indentationControlsGroup, otherFormattingControlsGroup, otherInputControls].filter(function (i) {
|
|
163
|
+
return i == null ? void 0 : i.length;
|
|
164
|
+
})
|
|
165
|
+
};
|
|
166
|
+
}, [toolbar, customToolbar]);
|
|
167
|
+
var key = useMemo(function () {
|
|
168
|
+
return JSON.stringify(modules) + String(rest.preserveWhitespace);
|
|
169
|
+
}, [rest.preserveWhitespace, modules]);
|
|
170
|
+
if (!isClient) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
return React.createElement("div", {
|
|
174
|
+
className: containerClassName
|
|
175
|
+
}, React.createElement(ReactQuill, Object.assign({
|
|
176
|
+
key: key,
|
|
177
|
+
modules: modules
|
|
178
|
+
}, rest)));
|
|
179
|
+
}
|
|
180
|
+
var quillHelpers_ = {
|
|
181
|
+
states: {
|
|
182
|
+
value: {
|
|
183
|
+
onChangeArgsToValue: function onChangeArgsToValue(content, _delta, _source, _editor) {
|
|
184
|
+
return content;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
var toolbarFields = {
|
|
190
|
+
textStyle: {
|
|
191
|
+
type: "choice",
|
|
192
|
+
multiSelect: true,
|
|
193
|
+
options: /*#__PURE__*/Object.keys(TEXT_STYLE_DICT),
|
|
194
|
+
defaultValue: /*#__PURE__*/Object.keys(TEXT_STYLE_DICT)
|
|
195
|
+
},
|
|
196
|
+
colors: {
|
|
197
|
+
type: "choice",
|
|
198
|
+
multiSelect: true,
|
|
199
|
+
options: /*#__PURE__*/Object.keys(COLOR_TYPE_DICT),
|
|
200
|
+
defaultValue: /*#__PURE__*/Object.keys(COLOR_TYPE_DICT)
|
|
201
|
+
},
|
|
202
|
+
script: {
|
|
203
|
+
displayName: "Super/Sub Script",
|
|
204
|
+
type: "boolean",
|
|
205
|
+
defaultValue: true
|
|
206
|
+
},
|
|
207
|
+
fontFamily: {
|
|
208
|
+
type: "boolean",
|
|
209
|
+
defaultValue: true
|
|
210
|
+
},
|
|
211
|
+
heading: {
|
|
212
|
+
type: "choice",
|
|
213
|
+
multiSelect: true,
|
|
214
|
+
options: /*#__PURE__*/Object.keys(HEADING_TYPES_DICT),
|
|
215
|
+
defaultValue: /*#__PURE__*/Object.keys(HEADING_TYPES_DICT)
|
|
216
|
+
},
|
|
217
|
+
fontSizes: {
|
|
218
|
+
type: "choice",
|
|
219
|
+
multiSelect: true,
|
|
220
|
+
options: FONT_SIZES,
|
|
221
|
+
defaultValue: FONT_SIZES
|
|
222
|
+
},
|
|
223
|
+
formatting: {
|
|
224
|
+
type: "choice",
|
|
225
|
+
multiSelect: true,
|
|
226
|
+
options: /*#__PURE__*/Object.keys(FORMATTING_TYPES_DICT),
|
|
227
|
+
defaultValue: /*#__PURE__*/Object.keys(FORMATTING_TYPES_DICT)
|
|
228
|
+
},
|
|
229
|
+
inputTypes: {
|
|
230
|
+
type: "choice",
|
|
231
|
+
multiSelect: true,
|
|
232
|
+
options: INPUT_TYPES,
|
|
233
|
+
defaultValue: INPUT_TYPES
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
var importName = "ReactQuill";
|
|
237
|
+
function registerQuill(loader) {
|
|
238
|
+
registerComponentHelper(loader, Quill, {
|
|
239
|
+
name: "hostless-react-quill",
|
|
240
|
+
displayName: "Rich Text Editor",
|
|
241
|
+
classNameProp: "containerClassName",
|
|
242
|
+
defaultStyles: {
|
|
243
|
+
width: "stretch"
|
|
244
|
+
},
|
|
245
|
+
props: {
|
|
246
|
+
value: {
|
|
247
|
+
type: "string",
|
|
248
|
+
displayName: "HTML Value",
|
|
249
|
+
editOnly: true,
|
|
250
|
+
uncontrolledProp: "defaultValue",
|
|
251
|
+
description: "Contents of the editor"
|
|
252
|
+
},
|
|
253
|
+
toolbar: {
|
|
254
|
+
type: "object",
|
|
255
|
+
fields: _extends({}, toolbarFields),
|
|
256
|
+
defaultValue: Object.keys(toolbarFields).reduce(function (acc, key) {
|
|
257
|
+
acc[key] = toolbarFields[key].defaultValue;
|
|
258
|
+
return acc;
|
|
259
|
+
}, {}),
|
|
260
|
+
description: "Customize the toolbar to show/hide controls"
|
|
261
|
+
},
|
|
262
|
+
customToolbar: {
|
|
263
|
+
type: "array",
|
|
264
|
+
advanced: true,
|
|
265
|
+
description: "Custom toolbar configuration for Quill editor. Overrides the existing toolbar."
|
|
266
|
+
},
|
|
267
|
+
placeholder: "string",
|
|
268
|
+
preserveWhitespace: {
|
|
269
|
+
type: "boolean",
|
|
270
|
+
description: "Prevents Quill from collapsing continuous whitespaces on paste",
|
|
271
|
+
advanced: true,
|
|
272
|
+
defaultValue: true
|
|
273
|
+
},
|
|
274
|
+
readOnly: {
|
|
275
|
+
type: "boolean",
|
|
276
|
+
description: "Prevents user from changing the contents of the editor",
|
|
277
|
+
defaultValue: false,
|
|
278
|
+
advanced: true
|
|
279
|
+
},
|
|
280
|
+
onChange: {
|
|
281
|
+
type: "eventHandler",
|
|
282
|
+
advanced: true,
|
|
283
|
+
argTypes: [{
|
|
284
|
+
name: "content",
|
|
285
|
+
type: "string"
|
|
286
|
+
}, {
|
|
287
|
+
name: "delta",
|
|
288
|
+
type: "object"
|
|
289
|
+
}, {
|
|
290
|
+
name: "source",
|
|
291
|
+
type: "string"
|
|
292
|
+
}, {
|
|
293
|
+
name: "editor",
|
|
294
|
+
type: "object"
|
|
295
|
+
}]
|
|
296
|
+
},
|
|
297
|
+
onChangeSelection: {
|
|
298
|
+
type: "eventHandler",
|
|
299
|
+
advanced: true,
|
|
300
|
+
argTypes: [{
|
|
301
|
+
name: "range",
|
|
302
|
+
type: "object"
|
|
303
|
+
}, {
|
|
304
|
+
name: "source",
|
|
305
|
+
type: "string"
|
|
306
|
+
}, {
|
|
307
|
+
name: "editor",
|
|
308
|
+
type: "object"
|
|
309
|
+
}]
|
|
310
|
+
},
|
|
311
|
+
onFocus: {
|
|
312
|
+
type: "eventHandler",
|
|
313
|
+
advanced: true,
|
|
314
|
+
argTypes: [{
|
|
315
|
+
name: "range",
|
|
316
|
+
type: "object"
|
|
317
|
+
}, {
|
|
318
|
+
name: "source",
|
|
319
|
+
type: "string"
|
|
320
|
+
}, {
|
|
321
|
+
name: "editor",
|
|
322
|
+
type: "object"
|
|
323
|
+
}]
|
|
324
|
+
},
|
|
325
|
+
onBlur: {
|
|
326
|
+
type: "eventHandler",
|
|
327
|
+
advanced: true,
|
|
328
|
+
argTypes: [{
|
|
329
|
+
name: "previousRange",
|
|
330
|
+
type: "object"
|
|
331
|
+
}, {
|
|
332
|
+
name: "source",
|
|
333
|
+
type: "string"
|
|
334
|
+
}, {
|
|
335
|
+
name: "editor",
|
|
336
|
+
type: "object"
|
|
337
|
+
}]
|
|
338
|
+
},
|
|
339
|
+
onKeyPress: {
|
|
340
|
+
type: "eventHandler",
|
|
341
|
+
advanced: true,
|
|
342
|
+
argTypes: [{
|
|
343
|
+
name: "event",
|
|
344
|
+
type: "object"
|
|
345
|
+
}]
|
|
346
|
+
},
|
|
347
|
+
onKeyDown: {
|
|
348
|
+
type: "eventHandler",
|
|
349
|
+
advanced: true,
|
|
350
|
+
argTypes: [{
|
|
351
|
+
name: "event",
|
|
352
|
+
type: "object"
|
|
353
|
+
}]
|
|
354
|
+
},
|
|
355
|
+
onKeyUp: {
|
|
356
|
+
type: "eventHandler",
|
|
357
|
+
advanced: true,
|
|
358
|
+
argTypes: [{
|
|
359
|
+
name: "event",
|
|
360
|
+
type: "object"
|
|
361
|
+
}]
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
states: {
|
|
365
|
+
value: _extends({
|
|
366
|
+
type: "writable",
|
|
367
|
+
valueProp: "value",
|
|
368
|
+
onChangeProp: "onChange",
|
|
369
|
+
variableType: "text"
|
|
370
|
+
}, quillHelpers_.states.value)
|
|
371
|
+
},
|
|
372
|
+
componentHelpers: {
|
|
373
|
+
helpers: quillHelpers_,
|
|
374
|
+
importName: importName,
|
|
375
|
+
importPath: "@plasmicpkgs/react-quill"
|
|
376
|
+
},
|
|
377
|
+
importName: importName,
|
|
378
|
+
importPath: "@plasmicpkgs/react-quill"
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export { Quill, registerQuill };
|
|
383
|
+
//# sourceMappingURL=react-quill.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-quill.esm.js","sources":["../src/utils.ts","../src/useIsClient.ts","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import React from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;","import React, { useMemo } from \"react\";\nimport { ReactQuillProps } from \"react-quill\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\nimport { PropType } from \"@plasmicapp/host\";\nimport { useIsClient } from \"./useIsClient\";\nconst ReactQuill =\n typeof window !== \"undefined\" ? require(\"react-quill\") : null;\n\n\ntype ToolbarOptionsType = \"textStyle\" | \"script\" | \"fontFamily\" | \"heading\" | \"fontSizes\" | \"colors\" | \"formatting\" | \"inputTypes\";\n\nconst TEXT_STYLE_DICT = {\n \"bold\": \"bold\",\n \"italic\": \"italic\",\n \"underline\": \"underline\",\n \"strikethrough\": \"strike\",\n}\n\nconst HEADING_TYPES_DICT = {\n \"Heading 1\": 1,\n \"Heading 2\": 2,\n \"Heading 3\": 3,\n \"Heading 4\": 4,\n \"Heading 5\": 5,\n \"Heading 6\": 6,\n \"Body\": \"normal\",\n}\n\nconst FONT_SIZES = [\n \"small\",\n \"medium\",\n \"large\",\n \"huge\",\n];\n\nconst COLOR_TYPE_DICT = {\n \"text color\": \"color\",\n \"text background\": \"background\"\n}\n\nconst FORMATTING_TYPES_DICT = {\n \"alignment\": \"align\",\n \"list\": \"list\",\n \"indentation\": \"indent\",\n \"text direction\": \"direction\",\n \"clear formatting\": \"clean\"\n};\n\nconst INPUT_TYPES = [\n \"link\",\"blockquote\",\"image\",\"video\",\"code-block\",\"formula\"\n]\n\nexport function Quill(props: ReactQuillProps & {\n containerClassName: string;\n customToolbar: any[];\n toolbar: Record<ToolbarOptionsType, any>;\n}) {\n const isClient = useIsClient();\n \n const {containerClassName, toolbar, customToolbar, ...rest} = props;\n\n const modules = useMemo(() => {\n\n if (customToolbar) {\n return {\n toolbar: customToolbar,\n }\n }\n\n const {\n textStyle,\n fontFamily,\n heading,\n fontSizes,\n colors,\n script,\n formatting,\n inputTypes,\n } = toolbar;\n \n const textStyleControls = Object.keys(TEXT_STYLE_DICT)\n .filter(key => textStyle.includes(key))\n .map((key) => TEXT_STYLE_DICT[key as keyof typeof TEXT_STYLE_DICT]);\n \n const colorControls = Object.keys(COLOR_TYPE_DICT)\n .filter(key => colors.includes(key))\n .map((key) => ({ [COLOR_TYPE_DICT[key as keyof typeof COLOR_TYPE_DICT]]: [] }));\n \n const scriptControls = script \n ? [{ 'script': 'super'}, { 'script': 'sub'}] : undefined;\n \n const fontControls = [\n fontFamily ?{font: []} : undefined,\n heading.length\n ? {\n header: Object.keys(HEADING_TYPES_DICT)\n .filter(key => heading.includes(key))\n .map((key) => HEADING_TYPES_DICT[key as keyof typeof HEADING_TYPES_DICT])}\n : undefined,\n fontSizes.length\n ? {size: FONT_SIZES.filter(fs => fontSizes.includes(fs))}\n : undefined,\n ].filter(i => i);\n \n const listControlsGroup: any[] = [];\n const indentationControlsGroup: any[] = [];\n const otherFormattingControlsGroup: any[] = [];\n \n formatting?.map((f: keyof typeof FORMATTING_TYPES_DICT) => {\n switch(f) {\n case \"list\":\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'ordered'});\n listControlsGroup.push({ [FORMATTING_TYPES_DICT[\"list\"]]: 'bullet' });\n break;\n case \"alignment\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"alignment\"]]: []});\n break;\n case \"indentation\":\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '-1'});\n indentationControlsGroup.push({ [FORMATTING_TYPES_DICT[\"indentation\"]]: '+1'});\n break;\n case \"text direction\":\n otherFormattingControlsGroup.push({ [FORMATTING_TYPES_DICT[\"text direction\"]]: 'rtl' });\n break;\n case \"clear formatting\":\n otherFormattingControlsGroup.push(FORMATTING_TYPES_DICT[\"clear formatting\"]);\n break;\n }\n });\n \n const otherInputControls = inputTypes.length ? INPUT_TYPES.filter(inp => inputTypes.includes(inp)) : undefined;\n \n return {\n toolbar: [\n textStyleControls,\n colorControls,\n scriptControls,\n fontControls,\n listControlsGroup,\n indentationControlsGroup,\n otherFormattingControlsGroup,\n otherInputControls,\n ].filter(i => i?.length)\n }\n }, [toolbar, customToolbar]);\n\n const key = useMemo(() => JSON.stringify(modules) + String(rest.preserveWhitespace), [rest.preserveWhitespace, modules]);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={containerClassName}>\n <ReactQuill \n key={key} \n modules={modules}\n {...rest}\n />\n </div>\n )\n}\n\nconst quillHelpers_ = {\n states: {\n value: {\n onChangeArgsToValue: ((content, _delta, _source, _editor) => {\n return content;\n }) as ReactQuillProps[\"onChange\"],\n }\n }\n}\n\nconst toolbarFields: Record<ToolbarOptionsType, PropType<any>> = {\n textStyle: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(TEXT_STYLE_DICT),\n defaultValue: Object.keys(TEXT_STYLE_DICT)\n },\n colors: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(COLOR_TYPE_DICT),\n defaultValue: Object.keys(COLOR_TYPE_DICT),\n },\n script: {\n displayName: \"Super/Sub Script\",\n type: \"boolean\",\n defaultValue: true,\n },\n fontFamily: {\n type: \"boolean\",\n defaultValue: true,\n },\n heading: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(HEADING_TYPES_DICT),\n defaultValue: Object.keys(HEADING_TYPES_DICT),\n },\n fontSizes: {\n type: \"choice\",\n multiSelect: true,\n options: FONT_SIZES,\n defaultValue: FONT_SIZES,\n },\n formatting: {\n type: \"choice\",\n multiSelect: true,\n options: Object.keys(FORMATTING_TYPES_DICT),\n defaultValue: Object.keys(FORMATTING_TYPES_DICT),\n },\n inputTypes: {\n type: \"choice\",\n multiSelect: true,\n options:INPUT_TYPES,\n defaultValue:INPUT_TYPES,\n },\n} as const;\n\nconst importName = \"ReactQuill\";\n\nexport function registerQuill(loader?: Registerable) {\n registerComponentHelper(loader, Quill, {\n name: \"hostless-react-quill\",\n displayName: \"Rich Text Editor\",\n classNameProp: \"containerClassName\",\n defaultStyles: {\n width: \"stretch\"\n },\n props: {\n value: {\n type: \"string\",\n displayName: \"HTML Value\",\n editOnly: true,\n uncontrolledProp: \"defaultValue\",\n description: \"Contents of the editor\",\n },\n toolbar: {\n type: \"object\",\n fields: {...toolbarFields}, \n defaultValue: Object.keys(toolbarFields)\n .reduce((acc: any, key) => {\n acc[key] = (toolbarFields[key as keyof typeof toolbarFields] as any).defaultValue;\n return acc;\n }, {}),\n description: \"Customize the toolbar to show/hide controls\",\n },\n customToolbar: {\n type: \"array\",\n advanced: true,\n description: \"Custom toolbar configuration for Quill editor. Overrides the existing toolbar.\"\n },\n placeholder: \"string\",\n preserveWhitespace: {\n type: \"boolean\",\n description: \"Prevents Quill from collapsing continuous whitespaces on paste\",\n advanced: true, \n defaultValue: true,\n },\n readOnly: {\n type: \"boolean\",\n description: \"Prevents user from changing the contents of the editor\",\n defaultValue: false,\n advanced: true,\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"delta\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onChangeSelection: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onFocus: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"range\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onBlur: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"previousRange\",\n type: \"object\",\n },\n {\n name: \"source\",\n type: \"string\"\n },\n {\n name: \"editor\",\n type: \"object\"\n }\n ],\n },\n onKeyPress: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyDown: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n onKeyUp: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n {\n name: \"event\",\n type: \"object\",\n }\n ],\n },\n } as any,\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n // initVal: \"\",\n ...quillHelpers_.states.value,\n },\n },\n componentHelpers: {\n helpers: quillHelpers_,\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n },\n importName,\n importPath: \"@plasmicpkgs/react-quill\",\n });\n}"],"names":["registerComponentHelper","loader","component","meta","registerComponent","useIsClient","React","useState","loaded","setLoaded","useIsomorphicLayoutEffect","isBrowser","window","useLayoutEffect","useEffect","ReactQuill","require","TEXT_STYLE_DICT","HEADING_TYPES_DICT","FONT_SIZES","COLOR_TYPE_DICT","FORMATTING_TYPES_DICT","INPUT_TYPES","Quill","props","isClient","containerClassName","toolbar","customToolbar","rest","modules","useMemo","textStyle","fontFamily","heading","fontSizes","colors","script","formatting","inputTypes","textStyleControls","Object","keys","filter","key","includes","map","colorControls","scriptControls","undefined","fontControls","font","length","header","size","fs","i","listControlsGroup","indentationControlsGroup","otherFormattingControlsGroup","f","push","otherInputControls","inp","JSON","stringify","String","preserveWhitespace","className","quillHelpers_","states","value","onChangeArgsToValue","content","_delta","_source","_editor","toolbarFields","type","multiSelect","options","defaultValue","displayName","importName","registerQuill","name","classNameProp","defaultStyles","width","editOnly","uncontrolledProp","description","fields","reduce","acc","advanced","placeholder","readOnly","onChange","argTypes","onChangeSelection","onFocus","onBlur","onKeyPress","onKeyDown","onKeyUp","valueProp","onChangeProp","variableType","componentHelpers","helpers","importPath"],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ComponentMeta, default as registerComponent } from "@plasmicapp/host/registerComponent";
|
|
2
|
+
import { default as registerGlobalContext, GlobalContextMeta } from "@plasmicapp/host/registerGlobalContext";
|
|
3
|
+
import { default as registerToken } from "@plasmicapp/host/registerToken";
|
|
4
|
+
import React from "react";
|
|
5
|
+
export declare type Registerable = {
|
|
6
|
+
registerComponent: typeof registerComponent;
|
|
7
|
+
registerGlobalContext: typeof registerGlobalContext;
|
|
8
|
+
registerToken: typeof registerToken;
|
|
9
|
+
};
|
|
10
|
+
export declare function makeRegisterComponent<T extends React.ComponentType<any>>(component: T, meta: ComponentMeta<React.ComponentProps<T>>): (loader?: Registerable | undefined) => void;
|
|
11
|
+
export declare function makeRegisterGlobalContext<T extends React.ComponentType<any>>(component: T, meta: GlobalContextMeta<React.ComponentProps<T>>): (loader?: Registerable | undefined) => void;
|
|
12
|
+
export declare function registerComponentHelper<T extends React.ComponentType<any>>(loader: Registerable | undefined, component: T, meta: ComponentMeta<React.ComponentProps<T>>): void;
|
|
13
|
+
declare type ReactElt = {
|
|
14
|
+
children: ReactElt | ReactElt[];
|
|
15
|
+
props: {
|
|
16
|
+
children: ReactElt | ReactElt[];
|
|
17
|
+
[prop: string]: any;
|
|
18
|
+
} | null;
|
|
19
|
+
type: React.ComponentType<any> | null;
|
|
20
|
+
key: string | null;
|
|
21
|
+
} | null;
|
|
22
|
+
export declare function traverseReactEltTree(children: React.ReactNode, callback: (elt: ReactElt) => void): void;
|
|
23
|
+
export declare function asArray<T>(x: T[] | T | undefined | null): T[];
|
|
24
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@plasmicpkgs/react-quill",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Plasmic registration call for react-quill WYSIWYG Editor",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"module": "dist/react-quill.esm.js",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"size-limit": [
|
|
12
|
+
{
|
|
13
|
+
"path": "dist/react-quill.cjs.production.min.js",
|
|
14
|
+
"limit": "10 KB"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"path": "dist/react-quill.esm.js",
|
|
18
|
+
"limit": "10 KB"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsdx build",
|
|
23
|
+
"start": "tsdx watch",
|
|
24
|
+
"test": "yarn --cwd=../.. test --passWithNoTests",
|
|
25
|
+
"lint": "tsdx lint",
|
|
26
|
+
"prepare": "if-env PREPARE_NO_BUILD=true || yarn build",
|
|
27
|
+
"size": "size-limit",
|
|
28
|
+
"analyze": "size-limit --why"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@plasmicapp/data-sources": "0.1.105",
|
|
32
|
+
"@plasmicapp/host": "1.0.159",
|
|
33
|
+
"@size-limit/preset-small-lib": "^4.11.0",
|
|
34
|
+
"@types/node": "^14.0.26",
|
|
35
|
+
"size-limit": "^4.11.0",
|
|
36
|
+
"tsdx": "^0.14.1",
|
|
37
|
+
"tslib": "^2.2.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"@plasmicapp/data-sources": ">=0.1.52",
|
|
41
|
+
"@plasmicapp/host": ">=1.0.0",
|
|
42
|
+
"react": ">=16.8.0",
|
|
43
|
+
"react-dom": ">=16.8.0"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"react-quill": "^2.0.0"
|
|
50
|
+
},
|
|
51
|
+
"gitHead": "f1d5f4fddc0f8d528cffb91a803501e51c877b42"
|
|
52
|
+
}
|