@milkdown/plugin-slash 4.10.5 → 4.12.0
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/README.md +50 -7
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +26 -14
- package/lib/config.js.map +1 -1
- package/lib/index.d.ts +14 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +14 -12
- package/lib/index.js.map +1 -1
- package/lib/item.d.ts +2 -1
- package/lib/item.d.ts.map +1 -1
- package/lib/item.js +1 -0
- package/lib/item.js.map +1 -1
- package/lib/prose-plugin/dropdown.d.ts +4 -0
- package/lib/prose-plugin/dropdown.d.ts.map +1 -0
- package/lib/prose-plugin/dropdown.js +39 -0
- package/lib/prose-plugin/dropdown.js.map +1 -0
- package/lib/prose-plugin/index.d.ts +7 -0
- package/lib/prose-plugin/index.d.ts.map +1 -0
- package/lib/prose-plugin/index.js +16 -0
- package/lib/prose-plugin/index.js.map +1 -0
- package/lib/prose-plugin/input.d.ts +15 -0
- package/lib/prose-plugin/input.d.ts.map +1 -0
- package/lib/prose-plugin/input.js +101 -0
- package/lib/prose-plugin/input.js.map +1 -0
- package/lib/prose-plugin/props.d.ts +10 -0
- package/lib/prose-plugin/props.d.ts.map +1 -0
- package/lib/prose-plugin/props.js +80 -0
- package/lib/prose-plugin/props.js.map +1 -0
- package/lib/prose-plugin/status.d.ts +20 -0
- package/lib/prose-plugin/status.d.ts.map +1 -0
- package/lib/prose-plugin/status.js +34 -0
- package/lib/prose-plugin/status.js.map +1 -0
- package/lib/prose-plugin/view.d.ts +12 -0
- package/lib/prose-plugin/view.d.ts.map +1 -0
- package/lib/prose-plugin/view.js +56 -0
- package/lib/prose-plugin/view.js.map +1 -0
- package/lib/style.d.ts +3 -0
- package/lib/style.d.ts.map +1 -0
- package/lib/style.js +62 -0
- package/lib/style.js.map +1 -0
- package/lib/utility.d.ts +7 -6
- package/lib/utility.d.ts.map +1 -1
- package/lib/utility.js +11 -63
- package/lib/utility.js.map +1 -1
- package/package.json +2 -2
- package/lib/slash-plugin.d.ts +0 -5
- package/lib/slash-plugin.d.ts.map +0 -1
- package/lib/slash-plugin.js +0 -298
- package/lib/slash-plugin.js.map +0 -1
package/lib/slash-plugin.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slash-plugin.d.ts","sourceRoot":"","sources":["../src/slash-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAe,MAAM,EAAyB,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAA2B,aAAa,EAAE,MAAM,QAAQ,CAAC;AA6UhE,eAAO,MAAM,WAAW,QAAS,GAAG,SAAS,aAAa,EAAE,qBAA4C,CAAC"}
|
package/lib/slash-plugin.js
DELETED
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
var _Status_cursorStatus, _Status_filter, _View_dropdownElement, _View_wrapper, _View_status, _View_view, _View_items, _View_mouseLock, _View_handleClick, _View_handleKeydown, _View_handleMouseEnter, _View_handleMouseLeave, _View_handleMouseMove;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { css } from '@emotion/css';
|
|
4
|
-
import { themeToolCtx } from '@milkdown/core';
|
|
5
|
-
import { calculateNodePosition, findParentNode } from '@milkdown/utils';
|
|
6
|
-
import { Plugin, PluginKey } from 'prosemirror-state';
|
|
7
|
-
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
8
|
-
import scrollIntoView from 'smooth-scroll-into-view-if-needed';
|
|
9
|
-
import { transformAction } from './item';
|
|
10
|
-
import { createDropdown } from './utility';
|
|
11
|
-
var CursorStatus;
|
|
12
|
-
(function (CursorStatus) {
|
|
13
|
-
CursorStatus[CursorStatus["Empty"] = 0] = "Empty";
|
|
14
|
-
CursorStatus[CursorStatus["Slash"] = 1] = "Slash";
|
|
15
|
-
})(CursorStatus || (CursorStatus = {}));
|
|
16
|
-
class SlashPlugin {
|
|
17
|
-
constructor(ctx, items) {
|
|
18
|
-
this.key = new PluginKey('milkdown-prosemirror-slash-plugin');
|
|
19
|
-
this.view = (editorView) => new View(this.status, this.items, editorView, this.ctx);
|
|
20
|
-
this.items = items.map(transformAction);
|
|
21
|
-
this.status = new Status(this.items);
|
|
22
|
-
this.props = new Props(this.status, ctx);
|
|
23
|
-
this.ctx = ctx;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
class Status {
|
|
27
|
-
constructor(items) {
|
|
28
|
-
_Status_cursorStatus.set(this, CursorStatus.Empty);
|
|
29
|
-
_Status_filter.set(this, '');
|
|
30
|
-
this.activeActions = items;
|
|
31
|
-
}
|
|
32
|
-
clearStatus() {
|
|
33
|
-
__classPrivateFieldSet(this, _Status_cursorStatus, CursorStatus.Empty, "f");
|
|
34
|
-
__classPrivateFieldSet(this, _Status_filter, '', "f");
|
|
35
|
-
}
|
|
36
|
-
setSlash(filter = '') {
|
|
37
|
-
__classPrivateFieldSet(this, _Status_cursorStatus, CursorStatus.Slash, "f");
|
|
38
|
-
__classPrivateFieldSet(this, _Status_filter, filter, "f");
|
|
39
|
-
}
|
|
40
|
-
get cursorStatus() {
|
|
41
|
-
return __classPrivateFieldGet(this, _Status_cursorStatus, "f");
|
|
42
|
-
}
|
|
43
|
-
get filter() {
|
|
44
|
-
return __classPrivateFieldGet(this, _Status_filter, "f");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
_Status_cursorStatus = new WeakMap(), _Status_filter = new WeakMap();
|
|
48
|
-
class Props {
|
|
49
|
-
constructor(status, ctx) {
|
|
50
|
-
this.status = status;
|
|
51
|
-
this.ctx = ctx;
|
|
52
|
-
this.handleKeyDown = (_, event) => {
|
|
53
|
-
const { cursorStatus, activeActions } = this.status;
|
|
54
|
-
if (cursorStatus !== CursorStatus.Slash || activeActions.length === 0) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
if (!(event instanceof KeyboardEvent)) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(event.key)) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
};
|
|
65
|
-
this.decorations = (state) => {
|
|
66
|
-
const { status } = this;
|
|
67
|
-
const parent = findParentNode(({ type }) => type.name === 'paragraph')(state.selection);
|
|
68
|
-
const isTopLevel = state.selection.$from.depth === 1;
|
|
69
|
-
if (!parent || parent.node.childCount > 1 || !isTopLevel) {
|
|
70
|
-
status.clearStatus();
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const pos = parent.pos;
|
|
74
|
-
const isEmpty = parent.node.content.size === 0;
|
|
75
|
-
const isSlash = parent.node.textContent === '/' && state.selection.$from.parentOffset > 0;
|
|
76
|
-
const isSearch = parent.node.textContent.startsWith('/') && state.selection.$from.parentOffset > 1;
|
|
77
|
-
const themeTool = this.ctx.get(themeToolCtx);
|
|
78
|
-
const emptyStyle = css `
|
|
79
|
-
position: relative;
|
|
80
|
-
&::before {
|
|
81
|
-
position: absolute;
|
|
82
|
-
cursor: text;
|
|
83
|
-
font-family: ${themeTool.font.font};
|
|
84
|
-
font-size: 0.875rem;
|
|
85
|
-
color: ${themeTool.palette('neutral', 0.6)};
|
|
86
|
-
content: attr(data-text);
|
|
87
|
-
height: 100%;
|
|
88
|
-
display: flex;
|
|
89
|
-
align-items: center;
|
|
90
|
-
}
|
|
91
|
-
`;
|
|
92
|
-
const slashStyle = css `
|
|
93
|
-
&::before {
|
|
94
|
-
left: 0.5rem;
|
|
95
|
-
}
|
|
96
|
-
`;
|
|
97
|
-
if (isEmpty) {
|
|
98
|
-
status.clearStatus();
|
|
99
|
-
const text = 'Type / to use the slash commands...';
|
|
100
|
-
return DecorationSet.create(state.doc, [
|
|
101
|
-
Decoration.node(pos, pos + parent.node.nodeSize, {
|
|
102
|
-
class: emptyStyle + ' empty-node',
|
|
103
|
-
'data-text': text,
|
|
104
|
-
}),
|
|
105
|
-
]);
|
|
106
|
-
}
|
|
107
|
-
if (isSlash) {
|
|
108
|
-
status.setSlash();
|
|
109
|
-
const text = 'Type to filter...';
|
|
110
|
-
return DecorationSet.create(state.doc, [
|
|
111
|
-
Decoration.node(pos, pos + parent.node.nodeSize, {
|
|
112
|
-
class: [emptyStyle, slashStyle, 'empty-node', 'is-slash'].join(' '),
|
|
113
|
-
'data-text': text,
|
|
114
|
-
}),
|
|
115
|
-
]);
|
|
116
|
-
}
|
|
117
|
-
if (isSearch) {
|
|
118
|
-
status.setSlash(parent.node.textContent.slice(1));
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
status.clearStatus();
|
|
122
|
-
return null;
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
class View {
|
|
127
|
-
constructor(status, items, editorView, ctx) {
|
|
128
|
-
_View_dropdownElement.set(this, void 0);
|
|
129
|
-
_View_wrapper.set(this, void 0);
|
|
130
|
-
_View_status.set(this, void 0);
|
|
131
|
-
_View_view.set(this, void 0);
|
|
132
|
-
_View_items.set(this, void 0);
|
|
133
|
-
_View_mouseLock.set(this, void 0);
|
|
134
|
-
_View_handleClick.set(this, (e) => {
|
|
135
|
-
const { target } = e;
|
|
136
|
-
if (!(target instanceof HTMLElement)) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const view = __classPrivateFieldGet(this, _View_view, "f");
|
|
140
|
-
if (!view)
|
|
141
|
-
return;
|
|
142
|
-
const el = Object.values(__classPrivateFieldGet(this, _View_items, "f")).find(({ $ }) => $.contains(target));
|
|
143
|
-
if (!el) {
|
|
144
|
-
if (__classPrivateFieldGet(this, _View_status, "f").cursorStatus === CursorStatus.Empty) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
__classPrivateFieldGet(this, _View_status, "f").clearStatus();
|
|
148
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").classList.add('hide');
|
|
149
|
-
e.stopPropagation();
|
|
150
|
-
e.preventDefault();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
e.stopPropagation();
|
|
154
|
-
e.preventDefault();
|
|
155
|
-
el.command(view.state, view.dispatch, view);
|
|
156
|
-
});
|
|
157
|
-
_View_handleKeydown.set(this, (e) => {
|
|
158
|
-
if (!__classPrivateFieldGet(this, _View_mouseLock, "f")) {
|
|
159
|
-
__classPrivateFieldSet(this, _View_mouseLock, true, "f");
|
|
160
|
-
}
|
|
161
|
-
const { key } = e;
|
|
162
|
-
if (__classPrivateFieldGet(this, _View_status, "f").cursorStatus !== CursorStatus.Slash) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
if (!['ArrowDown', 'ArrowUp', 'Enter'].includes(key)) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
let active = __classPrivateFieldGet(this, _View_status, "f").activeActions.findIndex((x) => x.$.classList.contains('active'));
|
|
169
|
-
if (active < 0)
|
|
170
|
-
active = 0;
|
|
171
|
-
if (key === 'ArrowDown') {
|
|
172
|
-
const next = active === __classPrivateFieldGet(this, _View_status, "f").activeActions.length - 1 ? 0 : active + 1;
|
|
173
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[active].$.classList.remove('active');
|
|
174
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[next].$.classList.add('active');
|
|
175
|
-
scrollIntoView(__classPrivateFieldGet(this, _View_status, "f").activeActions[next].$, {
|
|
176
|
-
scrollMode: 'if-needed',
|
|
177
|
-
block: 'nearest',
|
|
178
|
-
inline: 'nearest',
|
|
179
|
-
});
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
if (key === 'ArrowUp') {
|
|
183
|
-
const next = active === 0 ? __classPrivateFieldGet(this, _View_status, "f").activeActions.length - 1 : active - 1;
|
|
184
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[active].$.classList.remove('active');
|
|
185
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[next].$.classList.add('active');
|
|
186
|
-
scrollIntoView(__classPrivateFieldGet(this, _View_status, "f").activeActions[next].$, {
|
|
187
|
-
scrollMode: 'if-needed',
|
|
188
|
-
block: 'nearest',
|
|
189
|
-
inline: 'nearest',
|
|
190
|
-
});
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[active].command(__classPrivateFieldGet(this, _View_view, "f").state, __classPrivateFieldGet(this, _View_view, "f").dispatch, __classPrivateFieldGet(this, _View_view, "f"));
|
|
194
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[active].$.classList.remove('active');
|
|
195
|
-
});
|
|
196
|
-
_View_handleMouseEnter.set(this, (e) => {
|
|
197
|
-
if (__classPrivateFieldGet(this, _View_mouseLock, "f"))
|
|
198
|
-
return;
|
|
199
|
-
const active = __classPrivateFieldGet(this, _View_status, "f").activeActions.findIndex((x) => x.$.classList.contains('active'));
|
|
200
|
-
if (active >= 0) {
|
|
201
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions[active].$.classList.remove('active');
|
|
202
|
-
}
|
|
203
|
-
const { target } = e;
|
|
204
|
-
if (!(target instanceof HTMLElement))
|
|
205
|
-
return;
|
|
206
|
-
target.classList.add('active');
|
|
207
|
-
});
|
|
208
|
-
_View_handleMouseLeave.set(this, (e) => {
|
|
209
|
-
const { target } = e;
|
|
210
|
-
if (!(target instanceof HTMLElement))
|
|
211
|
-
return;
|
|
212
|
-
target.classList.remove('active');
|
|
213
|
-
});
|
|
214
|
-
_View_handleMouseMove.set(this, () => {
|
|
215
|
-
if (__classPrivateFieldGet(this, _View_mouseLock, "f")) {
|
|
216
|
-
__classPrivateFieldSet(this, _View_mouseLock, false, "f");
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
__classPrivateFieldSet(this, _View_status, status, "f");
|
|
220
|
-
__classPrivateFieldSet(this, _View_dropdownElement, createDropdown(ctx), "f");
|
|
221
|
-
__classPrivateFieldSet(this, _View_view, editorView, "f");
|
|
222
|
-
__classPrivateFieldSet(this, _View_mouseLock, false, "f");
|
|
223
|
-
__classPrivateFieldSet(this, _View_items, items, "f");
|
|
224
|
-
const { parentNode } = editorView.dom;
|
|
225
|
-
if (!parentNode) {
|
|
226
|
-
throw new Error();
|
|
227
|
-
}
|
|
228
|
-
__classPrivateFieldSet(this, _View_wrapper, parentNode, "f");
|
|
229
|
-
parentNode.appendChild(__classPrivateFieldGet(this, _View_dropdownElement, "f"));
|
|
230
|
-
__classPrivateFieldGet(this, _View_wrapper, "f").addEventListener('mousemove', __classPrivateFieldGet(this, _View_handleMouseMove, "f"));
|
|
231
|
-
items
|
|
232
|
-
.filter((item) => item.enable(__classPrivateFieldGet(this, _View_view, "f").state.schema))
|
|
233
|
-
.forEach(({ $ }) => {
|
|
234
|
-
$.addEventListener('mouseenter', __classPrivateFieldGet(this, _View_handleMouseEnter, "f"));
|
|
235
|
-
$.addEventListener('mouseleave', __classPrivateFieldGet(this, _View_handleMouseLeave, "f"));
|
|
236
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").appendChild($);
|
|
237
|
-
});
|
|
238
|
-
__classPrivateFieldGet(this, _View_wrapper, "f").addEventListener('mousedown', __classPrivateFieldGet(this, _View_handleClick, "f"));
|
|
239
|
-
__classPrivateFieldGet(this, _View_wrapper, "f").addEventListener('keydown', __classPrivateFieldGet(this, _View_handleKeydown, "f"));
|
|
240
|
-
}
|
|
241
|
-
update(view) {
|
|
242
|
-
const show = this.renderDropdown();
|
|
243
|
-
if (!show) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
this.calculatePosition(view);
|
|
247
|
-
}
|
|
248
|
-
destroy() {
|
|
249
|
-
__classPrivateFieldGet(this, _View_wrapper, "f").removeEventListener('mousedown', __classPrivateFieldGet(this, _View_handleClick, "f"));
|
|
250
|
-
__classPrivateFieldGet(this, _View_wrapper, "f").removeEventListener('keydown', __classPrivateFieldGet(this, _View_handleKeydown, "f"));
|
|
251
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").remove();
|
|
252
|
-
}
|
|
253
|
-
renderDropdown() {
|
|
254
|
-
const { cursorStatus, filter } = __classPrivateFieldGet(this, _View_status, "f");
|
|
255
|
-
if (cursorStatus !== CursorStatus.Slash) {
|
|
256
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").classList.add('hide');
|
|
257
|
-
return false;
|
|
258
|
-
}
|
|
259
|
-
const activeList = __classPrivateFieldGet(this, _View_items, "f")
|
|
260
|
-
.filter((item) => {
|
|
261
|
-
item.$.classList.remove('active');
|
|
262
|
-
const result = item.keyword.some((key) => key.includes(filter.toLocaleLowerCase()));
|
|
263
|
-
if (result) {
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
item.$.classList.add('hide');
|
|
267
|
-
return false;
|
|
268
|
-
})
|
|
269
|
-
.map((item) => {
|
|
270
|
-
item.$.classList.remove('hide');
|
|
271
|
-
return item;
|
|
272
|
-
});
|
|
273
|
-
__classPrivateFieldGet(this, _View_status, "f").activeActions = activeList;
|
|
274
|
-
if (activeList.length === 0) {
|
|
275
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").classList.add('hide');
|
|
276
|
-
return false;
|
|
277
|
-
}
|
|
278
|
-
activeList[0].$.classList.add('active');
|
|
279
|
-
__classPrivateFieldGet(this, _View_dropdownElement, "f").classList.remove('hide');
|
|
280
|
-
return true;
|
|
281
|
-
}
|
|
282
|
-
calculatePosition(view) {
|
|
283
|
-
calculateNodePosition(view, __classPrivateFieldGet(this, _View_dropdownElement, "f"), (selected, target, parent) => {
|
|
284
|
-
let left = selected.left - parent.left;
|
|
285
|
-
let top = selected.bottom - parent.top + 14;
|
|
286
|
-
if (left < 0) {
|
|
287
|
-
left = 0;
|
|
288
|
-
}
|
|
289
|
-
if (window.innerHeight - selected.bottom < target.height) {
|
|
290
|
-
top = selected.top - parent.top - target.height - 14;
|
|
291
|
-
}
|
|
292
|
-
return [top, left];
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
_View_dropdownElement = new WeakMap(), _View_wrapper = new WeakMap(), _View_status = new WeakMap(), _View_view = new WeakMap(), _View_items = new WeakMap(), _View_mouseLock = new WeakMap(), _View_handleClick = new WeakMap(), _View_handleKeydown = new WeakMap(), _View_handleMouseEnter = new WeakMap(), _View_handleMouseLeave = new WeakMap(), _View_handleMouseMove = new WeakMap();
|
|
297
|
-
export const slashPlugin = (ctx, items) => new Plugin(new SlashPlugin(ctx, items));
|
|
298
|
-
//# sourceMappingURL=slash-plugin.js.map
|
package/lib/slash-plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slash-plugin.js","sourceRoot":"","sources":["../src/slash-plugin.ts"],"names":[],"mappings":"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"}
|