@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.
Files changed (49) hide show
  1. package/README.md +50 -7
  2. package/lib/config.d.ts.map +1 -1
  3. package/lib/config.js +26 -14
  4. package/lib/config.js.map +1 -1
  5. package/lib/index.d.ts +14 -4
  6. package/lib/index.d.ts.map +1 -1
  7. package/lib/index.js +14 -12
  8. package/lib/index.js.map +1 -1
  9. package/lib/item.d.ts +2 -1
  10. package/lib/item.d.ts.map +1 -1
  11. package/lib/item.js +1 -0
  12. package/lib/item.js.map +1 -1
  13. package/lib/prose-plugin/dropdown.d.ts +4 -0
  14. package/lib/prose-plugin/dropdown.d.ts.map +1 -0
  15. package/lib/prose-plugin/dropdown.js +39 -0
  16. package/lib/prose-plugin/dropdown.js.map +1 -0
  17. package/lib/prose-plugin/index.d.ts +7 -0
  18. package/lib/prose-plugin/index.d.ts.map +1 -0
  19. package/lib/prose-plugin/index.js +16 -0
  20. package/lib/prose-plugin/index.js.map +1 -0
  21. package/lib/prose-plugin/input.d.ts +15 -0
  22. package/lib/prose-plugin/input.d.ts.map +1 -0
  23. package/lib/prose-plugin/input.js +101 -0
  24. package/lib/prose-plugin/input.js.map +1 -0
  25. package/lib/prose-plugin/props.d.ts +10 -0
  26. package/lib/prose-plugin/props.d.ts.map +1 -0
  27. package/lib/prose-plugin/props.js +80 -0
  28. package/lib/prose-plugin/props.js.map +1 -0
  29. package/lib/prose-plugin/status.d.ts +20 -0
  30. package/lib/prose-plugin/status.d.ts.map +1 -0
  31. package/lib/prose-plugin/status.js +34 -0
  32. package/lib/prose-plugin/status.js.map +1 -0
  33. package/lib/prose-plugin/view.d.ts +12 -0
  34. package/lib/prose-plugin/view.d.ts.map +1 -0
  35. package/lib/prose-plugin/view.js +56 -0
  36. package/lib/prose-plugin/view.js.map +1 -0
  37. package/lib/style.d.ts +3 -0
  38. package/lib/style.d.ts.map +1 -0
  39. package/lib/style.js +62 -0
  40. package/lib/style.js.map +1 -0
  41. package/lib/utility.d.ts +7 -6
  42. package/lib/utility.d.ts.map +1 -1
  43. package/lib/utility.js +11 -63
  44. package/lib/utility.js.map +1 -1
  45. package/package.json +2 -2
  46. package/lib/slash-plugin.d.ts +0 -5
  47. package/lib/slash-plugin.d.ts.map +0 -1
  48. package/lib/slash-plugin.js +0 -298
  49. package/lib/slash-plugin.js.map +0 -1
@@ -1,5 +0,0 @@
1
- import { Ctx } from '@milkdown/core';
2
- import { Plugin } from 'prosemirror-state';
3
- import { WrappedAction } from './item';
4
- export declare const slashPlugin: (ctx: Ctx, items: WrappedAction[]) => Plugin<any, any>;
5
- //# sourceMappingURL=slash-plugin.d.ts.map
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"slash-plugin.js","sourceRoot":"","sources":["../src/slash-plugin.ts"],"names":[],"mappings":"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"}