@bbl-digital/snorre 4.2.13 → 4.2.16
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/bundle.js +22 -156
- package/esm/core/Html/Html.stories.js +1 -1
- package/esm/core/Html/index.js +1 -3
- package/esm/core/Html/styles.js +7 -7
- package/esm/core/QuillEditor/classes/ListItem.js +0 -5
- package/esm/core/QuillEditor/index.js +9 -48
- package/lib/core/Html/Html.stories.js +1 -1
- package/lib/core/Html/index.d.ts +2 -4
- package/lib/core/Html/index.d.ts.map +1 -1
- package/lib/core/Html/index.js +1 -3
- package/lib/core/Html/styles.d.ts.map +1 -1
- package/lib/core/Html/styles.js +7 -7
- package/lib/core/QuillEditor/classes/ListItem.d.ts +0 -3
- package/lib/core/QuillEditor/classes/ListItem.d.ts.map +1 -1
- package/lib/core/QuillEditor/classes/ListItem.js +0 -5
- package/lib/core/QuillEditor/index.d.ts.map +1 -1
- package/lib/core/QuillEditor/index.js +9 -48
- package/lib/core/QuillEditor/models.d.ts +1 -1
- package/lib/core/QuillEditor/models.d.ts.map +1 -1
- package/package.json +1 -1
@@ -1,21 +1,17 @@
|
|
1
1
|
/** @jsxImportSource @emotion/react */
|
2
|
-
import { useRef, useState, useEffect, useCallback
|
2
|
+
import { useRef, useState, useEffect, useCallback } from 'react';
|
3
3
|
import Quill from 'quill';
|
4
4
|
import { basicToolbar, richToolbar } from './config';
|
5
5
|
import { ErrorWrapper, Label, styles } from './styles';
|
6
6
|
import Text from '../Text';
|
7
7
|
import IconErrorOutline from '../../icons/General/IconErrorOutline';
|
8
8
|
import { useTheme } from '@emotion/react';
|
9
|
-
import MyListItem from './classes/ListItem';
|
10
|
-
import { IndentAttributor } from './classes/IndentAttributor';
|
11
9
|
import { CustomLinkSanitizer } from './classes/LinkSanitizer';
|
12
|
-
import { MyListContainer } from './classes/ListContainer';
|
13
10
|
import DOMPurify from 'dompurify';
|
14
11
|
import 'quill/dist/quill.snow.css';
|
15
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
16
|
-
const Parchment = Quill.import('parchment');
|
17
12
|
|
18
13
|
// Colors
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
19
15
|
Quill.register(Quill.import('attributors/style/color'), true);
|
20
16
|
// Background colors
|
21
17
|
Quill.register(Quill.import('attributors/style/background'), true);
|
@@ -39,22 +35,11 @@ Quill.register('attributors/style/bold', true);
|
|
39
35
|
const Size = Quill.import('attributors/style/size');
|
40
36
|
Size.whitelist = ['0.75em', '1em', '1.5em', '2.5em'];
|
41
37
|
Quill.register(Size, true);
|
42
|
-
let IndentStyle = new IndentAttributor('indent', 'margin-left', {
|
43
|
-
scope: Parchment.Scope.BLOCK,
|
44
|
-
whitelist: ['1em', '2em', '3em', '4em', '5em', '6em', '7em', '8em', '9em']
|
45
|
-
});
|
46
38
|
|
47
39
|
// Font
|
48
40
|
const Font = Quill.import('formats/font');
|
49
41
|
Font.whitelist = ['Source Sans Pro', 'sans-serif'];
|
50
42
|
Quill.register(Font, true);
|
51
|
-
const Container = MyListContainer;
|
52
|
-
Container.allowedChildren = [MyListItem];
|
53
|
-
Quill.register(IndentStyle, true);
|
54
|
-
Quill.register({
|
55
|
-
'formats/list': Container,
|
56
|
-
'formats/ulist': MyListItem
|
57
|
-
}, true);
|
58
43
|
Quill.register(CustomLinkSanitizer, true);
|
59
44
|
const QuillEditor = ({
|
60
45
|
height,
|
@@ -87,7 +72,6 @@ const QuillEditor = ({
|
|
87
72
|
const isMounted = useRef(false);
|
88
73
|
const quillRef = useRef(null);
|
89
74
|
const defaultValueRef = useRef(initialValue);
|
90
|
-
const onTextChangeRef = useRef(onChange);
|
91
75
|
const editorId = useRef(new Date().getTime() + (100 * Math.random()).toFixed(0));
|
92
76
|
const {
|
93
77
|
alert
|
@@ -122,17 +106,6 @@ const QuillEditor = ({
|
|
122
106
|
}
|
123
107
|
return true;
|
124
108
|
}, [quill]);
|
125
|
-
const handleAutoidentList = useCallback((range, _context, quill) => {
|
126
|
-
if (!quill) return true;
|
127
|
-
const [line] = quill.getLine(range.index);
|
128
|
-
const formats = line.formats();
|
129
|
-
if (formats.list) {
|
130
|
-
const indent = formats.indent ? parseInt(formats.indent, 10) : 0;
|
131
|
-
quill.format('indent', indent + 1);
|
132
|
-
return false;
|
133
|
-
}
|
134
|
-
return true;
|
135
|
-
}, [quill]);
|
136
109
|
const modules = {
|
137
110
|
toolbar: toolbars[type || 'basic'],
|
138
111
|
clipboard: {
|
@@ -149,20 +122,15 @@ const QuillEditor = ({
|
|
149
122
|
}
|
150
123
|
}
|
151
124
|
};
|
152
|
-
const handleChange = useCallback(
|
125
|
+
const handleChange = useCallback(quill => {
|
153
126
|
if (!quill) return;
|
154
|
-
const html = sanitizeHtml ? DOMPurify.sanitize(quill.
|
127
|
+
const html = sanitizeHtml ? DOMPurify.sanitize(quill.getSemanticHTML(), {
|
155
128
|
USE_PROFILES: {
|
156
129
|
html: true
|
157
130
|
}
|
158
131
|
}) : quill.root.innerHTML;
|
159
|
-
|
160
|
-
onChange(html, delta, source, quill);
|
161
|
-
}
|
132
|
+
onChange?.(html);
|
162
133
|
}, [onChange, quill]);
|
163
|
-
useLayoutEffect(() => {
|
164
|
-
onTextChangeRef.current = onChange;
|
165
|
-
});
|
166
134
|
useEffect(() => {
|
167
135
|
if (isMounted.current) return;
|
168
136
|
quillRef.current = new Quill(`#editor${editorId.current}`, {
|
@@ -189,16 +157,6 @@ const QuillEditor = ({
|
|
189
157
|
}, (range, context) => {
|
190
158
|
return handleBackspaceWithIndentetList(range, context, quillRef.current);
|
191
159
|
});
|
192
|
-
// Tabbing within a list should indent the list item
|
193
|
-
quillRef.current.keyboard.addBinding({
|
194
|
-
key: 'Tab'
|
195
|
-
}, {
|
196
|
-
format: {
|
197
|
-
list: true
|
198
|
-
}
|
199
|
-
}, (range, context) => {
|
200
|
-
return handleAutoidentList(range, context, quillRef.current);
|
201
|
-
});
|
202
160
|
quillRef.current.root.style.touchAction = 'pan-y';
|
203
161
|
quillRef.current.root.style.overflowY = 'auto';
|
204
162
|
quillRef.current.disable();
|
@@ -224,7 +182,6 @@ const QuillEditor = ({
|
|
224
182
|
});
|
225
183
|
quillRef.current.setContents(formattedDelta);
|
226
184
|
}
|
227
|
-
quillRef.current.on(Quill.events.TEXT_CHANGE, (...args) => handleChange(...args, quillRef.current));
|
228
185
|
if (onFocus || onBlur) {
|
229
186
|
quillRef.current.on(Quill.events.SELECTION_CHANGE, (range, oldRange, source) => {
|
230
187
|
const hasFocus = range && !oldRange;
|
@@ -239,6 +196,10 @@ const QuillEditor = ({
|
|
239
196
|
quillRef.current = null;
|
240
197
|
};
|
241
198
|
}, [quillRef]);
|
199
|
+
useEffect(() => {
|
200
|
+
if (!quill) return;
|
201
|
+
quill.on(Quill.events.TEXT_CHANGE, _args => handleChange(quill));
|
202
|
+
}, [quill, handleChange]);
|
242
203
|
useEffect(() => {
|
243
204
|
if (!quill) return;
|
244
205
|
quill.clipboard.addMatcher(Node.ELEMENT_NODE, (node, delta) => {
|
@@ -60,7 +60,7 @@ interface QuillEditorProps {
|
|
60
60
|
resize?: boolean | 'both';
|
61
61
|
formats?: string[];
|
62
62
|
bounds?: string | HTMLElement;
|
63
|
-
onChange?: (content: string
|
63
|
+
onChange?: (content: string) => void;
|
64
64
|
onFocus?: (html: string) => void;
|
65
65
|
onBlur?: (html: string) => void;
|
66
66
|
invalidMessage?: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/packages/core/QuillEditor/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,UAAU,kBAAkB;IAE1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IAGtB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAGhE,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,CAAA;IAGD,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,OAAO,CAAA;QACb,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;IAGD,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;IAGD,SAAS,CAAC,EAAE;QACV,GAAG,CAAC,EAAE,OAAO,CAAA;KACd,CAAA;IAGD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAGrD,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAA;IAG/B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAA;IAGzB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAGtD,KAAK,CAAC,EAAE,OAAO,CAAA;IAGf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IAC3C,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;KAC/B,CAAA;IACD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC7B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/packages/core/QuillEditor/models.ts"],"names":[],"mappings":"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"}
|