@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 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
@@ -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,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./react-quill.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./react-quill.cjs.development.js')
8
+ }
@@ -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":"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"}
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare function useIsClient(): boolean;
3
+ export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
@@ -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
+ }