@sveltia/ui 0.15.7 → 0.15.9
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/package/components/text-editor/core.js +49 -0
- package/package/components/text-editor/lexical-root.svelte +3 -0
- package/package/components/text-editor/text-editor.svelte +2 -2
- package/package/components/text-editor/toolbar/insert-link-button.svelte +1 -1
- package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte +5 -0
- package/package.json +15 -12
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
INSERT_UNORDERED_LIST_COMMAND,
|
|
12
12
|
ListItemNode,
|
|
13
13
|
ListNode,
|
|
14
|
+
$handleListInsertParagraph as handleListInsertParagraph,
|
|
14
15
|
insertList,
|
|
15
16
|
$isListItemNode as isListItemNode,
|
|
16
17
|
$isListNode as isListNode,
|
|
@@ -32,6 +33,9 @@ import { $getNearestNodeOfType as getNearestNodeOfType } from '@lexical/utils';
|
|
|
32
33
|
import {
|
|
33
34
|
COMMAND_PRIORITY_NORMAL,
|
|
34
35
|
ElementNode,
|
|
36
|
+
INDENT_CONTENT_COMMAND,
|
|
37
|
+
INSERT_PARAGRAPH_COMMAND,
|
|
38
|
+
OUTDENT_CONTENT_COMMAND,
|
|
35
39
|
createEditor,
|
|
36
40
|
$getSelection as getSelection,
|
|
37
41
|
$isRangeSelection as isRangeSelection,
|
|
@@ -64,6 +68,11 @@ const editorConfig = {
|
|
|
64
68
|
*/
|
|
65
69
|
italic: 'italic',
|
|
66
70
|
},
|
|
71
|
+
list: {
|
|
72
|
+
nested: {
|
|
73
|
+
listitem: 'nested',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
67
76
|
},
|
|
68
77
|
};
|
|
69
78
|
|
|
@@ -176,6 +185,13 @@ export const initEditor = () => {
|
|
|
176
185
|
COMMAND_PRIORITY_NORMAL,
|
|
177
186
|
);
|
|
178
187
|
|
|
188
|
+
// https://github.com/facebook/lexical/blob/main/packages/lexical-react/src/shared/useList.ts
|
|
189
|
+
editor.registerCommand(
|
|
190
|
+
INSERT_PARAGRAPH_COMMAND,
|
|
191
|
+
() => handleListInsertParagraph(),
|
|
192
|
+
COMMAND_PRIORITY_NORMAL,
|
|
193
|
+
);
|
|
194
|
+
|
|
179
195
|
editor.registerUpdateListener(({ editorState }) => {
|
|
180
196
|
if (editor?.isComposing()) {
|
|
181
197
|
return;
|
|
@@ -186,6 +202,39 @@ export const initEditor = () => {
|
|
|
186
202
|
});
|
|
187
203
|
});
|
|
188
204
|
|
|
205
|
+
// `editor.registerCommand(KEY_TAB_COMMAND, listener, priority)` doesn’t work for some reason, so
|
|
206
|
+
// use another method
|
|
207
|
+
editor.registerRootListener((root) => {
|
|
208
|
+
if (root) {
|
|
209
|
+
root.addEventListener('keydown', (event) => {
|
|
210
|
+
editor.update(() => {
|
|
211
|
+
if (event.key === 'Tab') {
|
|
212
|
+
const selection = getSelection();
|
|
213
|
+
|
|
214
|
+
if (!isRangeSelection(selection)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const anchor = selection.anchor.getNode();
|
|
219
|
+
|
|
220
|
+
const parent =
|
|
221
|
+
anchor instanceof ElementNode ? anchor : getNearestNodeOfType(anchor, ElementNode);
|
|
222
|
+
|
|
223
|
+
if (isListItemNode(parent) && parent.canIndent()) {
|
|
224
|
+
if (!event.shiftKey) {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);
|
|
227
|
+
} else if (parent.getIndent() > 0) {
|
|
228
|
+
event.preventDefault();
|
|
229
|
+
editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
|
|
189
238
|
return editor;
|
|
190
239
|
};
|
|
191
240
|
|
|
@@ -95,11 +95,11 @@
|
|
|
95
95
|
* Update {@link inputValue} based on {@link value}.
|
|
96
96
|
*/
|
|
97
97
|
const setInputValue = () => {
|
|
98
|
-
const newValue = value
|
|
98
|
+
const newValue = value;
|
|
99
99
|
|
|
100
100
|
// Avoid a cycle dependency & infinite loop
|
|
101
101
|
if (inputValue !== newValue) {
|
|
102
|
-
inputValue = newValue;
|
|
102
|
+
inputValue = newValue ?? '';
|
|
103
103
|
|
|
104
104
|
if ($useRichText) {
|
|
105
105
|
convertMarkdown();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltia/ui",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -33,36 +33,39 @@
|
|
|
33
33
|
"@lexical/table": "^0.16.0",
|
|
34
34
|
"@lexical/utils": "^0.16.0",
|
|
35
35
|
"@sveltia/utils": "^0.4.0",
|
|
36
|
-
"lexical": "^0.16.0"
|
|
37
|
-
|
|
36
|
+
"lexical": "^0.16.0"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"svelte": "^4.0.0"
|
|
38
40
|
},
|
|
39
41
|
"devDependencies": {
|
|
40
42
|
"@playwright/test": "^1.44.1",
|
|
41
|
-
"@sveltejs/adapter-auto": "^3.2.
|
|
42
|
-
"@sveltejs/kit": "^2.5.
|
|
43
|
-
"@sveltejs/package": "^2.3.
|
|
43
|
+
"@sveltejs/adapter-auto": "^3.2.2",
|
|
44
|
+
"@sveltejs/kit": "^2.5.16",
|
|
45
|
+
"@sveltejs/package": "^2.3.2",
|
|
44
46
|
"@sveltejs/vite-plugin-svelte": "^3.1.1",
|
|
45
47
|
"cspell": "^8.8.4",
|
|
46
48
|
"eslint": "^8.57.0",
|
|
47
49
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
48
50
|
"eslint-config-prettier": "^9.1.0",
|
|
49
51
|
"eslint-plugin-import": "^2.29.1",
|
|
50
|
-
"eslint-plugin-jsdoc": "^48.2.
|
|
51
|
-
"eslint-plugin-svelte": "^2.39.
|
|
52
|
+
"eslint-plugin-jsdoc": "^48.2.12",
|
|
53
|
+
"eslint-plugin-svelte": "^2.39.4",
|
|
52
54
|
"npm-run-all": "^4.1.5",
|
|
53
55
|
"postcss": "^8.4.38",
|
|
54
56
|
"postcss-html": "^1.7.0",
|
|
55
|
-
"prettier": "^3.3.
|
|
57
|
+
"prettier": "^3.3.2",
|
|
56
58
|
"prettier-plugin-svelte": "^3.2.4",
|
|
57
|
-
"sass": "^1.77.
|
|
59
|
+
"sass": "^1.77.5",
|
|
58
60
|
"stylelint": "^16.6.1",
|
|
59
61
|
"stylelint-config-recommended-scss": "^14.0.0",
|
|
60
62
|
"stylelint-scss": "^6.3.1",
|
|
63
|
+
"svelte": "^4.2.18",
|
|
61
64
|
"svelte-check": "^3.8.0",
|
|
62
65
|
"svelte-i18n": "^4.0.0",
|
|
63
|
-
"svelte-preprocess": "^
|
|
66
|
+
"svelte-preprocess": "^6.0.1",
|
|
64
67
|
"tslib": "^2.6.3",
|
|
65
|
-
"vite": "^5.
|
|
68
|
+
"vite": "^5.3.1",
|
|
66
69
|
"vitest": "^1.6.0"
|
|
67
70
|
},
|
|
68
71
|
"exports": {
|