@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/prose-plugin/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Utils } from '@milkdown/utils';
2
+ import { EditorState } from 'prosemirror-state';
3
+ import { DecorationSet, EditorView } from 'prosemirror-view';
4
+ import { CursorStatus, Status } from './status';
5
+ export declare type Props = ReturnType<typeof createProps>;
6
+ export declare const createProps: (status: Status, utils: Utils, placeholder: Record<CursorStatus, string>) => {
7
+ handleKeyDown: (_: EditorView, event: Event) => boolean;
8
+ decorations: (state: EditorState) => DecorationSet<any> | null | undefined;
9
+ };
10
+ //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAc,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEhD,oBAAY,KAAK,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAuBnD,eAAO,MAAM,WAAW,WAAY,MAAM,SAAS,KAAK,eAAe,OAAO,YAAY,EAAE,MAAM,CAAC;uBAKxE,UAAU,SAAS,KAAK;yBAetB,WAAW;CA4CvC,CAAC"}
@@ -0,0 +1,80 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { css } from '@emotion/css';
3
+ import { findParentNode } from '@milkdown/utils';
4
+ import { Decoration, DecorationSet } from 'prosemirror-view';
5
+ import { CursorStatus } from './status';
6
+ const createEmptyStyle = ({ font, palette }) => css `
7
+ position: relative;
8
+ &::before {
9
+ position: absolute;
10
+ cursor: text;
11
+ font-family: ${font.typography};
12
+ font-size: 0.875rem;
13
+ color: ${palette('neutral', 0.6)};
14
+ content: attr(data-text);
15
+ height: 100%;
16
+ display: flex;
17
+ align-items: center;
18
+ }
19
+ `;
20
+ const createSlashStyle = () => css `
21
+ &::before {
22
+ left: 0.5rem;
23
+ }
24
+ `;
25
+ export const createProps = (status, utils, placeholder) => {
26
+ const emptyStyle = utils.getStyle(createEmptyStyle);
27
+ const slashStyle = utils.getStyle(createSlashStyle);
28
+ return {
29
+ handleKeyDown: (_, event) => {
30
+ const { cursorStatus, activeActions } = status.get();
31
+ if (cursorStatus !== CursorStatus.Slash || activeActions.length === 0) {
32
+ return false;
33
+ }
34
+ if (!(event instanceof KeyboardEvent)) {
35
+ return false;
36
+ }
37
+ if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(event.key)) {
38
+ return false;
39
+ }
40
+ return true;
41
+ },
42
+ decorations: (state) => {
43
+ const parent = findParentNode(({ type }) => type.name === 'paragraph')(state.selection);
44
+ const isTopLevel = state.selection.$from.depth === 1;
45
+ if (!parent || parent.node.childCount > 1 || !isTopLevel) {
46
+ status.clearStatus();
47
+ return;
48
+ }
49
+ const isEmpty = parent.node.content.size === 0;
50
+ const isSlash = parent.node.textContent === '/' && state.selection.$from.parentOffset > 0;
51
+ const isSearch = parent.node.textContent.startsWith('/') && state.selection.$from.parentOffset > 1;
52
+ const createDecoration = (text, className) => {
53
+ const pos = parent.pos;
54
+ return DecorationSet.create(state.doc, [
55
+ Decoration.node(pos, pos + parent.node.nodeSize, {
56
+ class: className.filter((x) => x).join(' '),
57
+ 'data-text': text,
58
+ }),
59
+ ]);
60
+ };
61
+ if (isEmpty) {
62
+ status.clearStatus();
63
+ const text = placeholder[CursorStatus.Empty];
64
+ return createDecoration(text, [emptyStyle, 'empty-node']);
65
+ }
66
+ if (isSlash) {
67
+ status.setSlash();
68
+ const text = placeholder[CursorStatus.Slash];
69
+ return createDecoration(text, [emptyStyle, slashStyle, 'empty-node', 'is-slash']);
70
+ }
71
+ if (isSearch) {
72
+ status.setSlash(parent.node.textContent.slice(1));
73
+ return null;
74
+ }
75
+ status.clearStatus();
76
+ return null;
77
+ },
78
+ };
79
+ };
80
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAS,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAU,MAAM,UAAU,CAAC;AAIhD,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAa,EAAE,EAAE,CAAC,GAAG,CAAA;;;;;uBAKvC,IAAI,CAAC,UAAU;;iBAErB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;;;;;;CAMvC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;;;;CAIjC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,KAAY,EAAE,WAAyC,EAAE,EAAE;IACnG,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEpD,OAAO;QACH,aAAa,EAAE,CAAC,CAAa,EAAE,KAAY,EAAE,EAAE;YAC3C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACrD,IAAI,YAAY,KAAK,YAAY,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnE,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC,EAAE;gBACnC,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACxD,OAAO,KAAK,CAAC;aAChB;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,CAAC,KAAkB,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxF,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;gBACtD,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO;aACV;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YAC1F,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YAEnG,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,SAAiC,EAAE,EAAE;gBACzE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACvB,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBACnC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;wBAC7C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBAC3C,WAAW,EAAE,IAAI;qBACpB,CAAC;iBACL,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,IAAI,OAAO,EAAE;gBACT,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;aAC7D;YAED,IAAI,OAAO,EAAE;gBACT,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;aACrF;YAED,IAAI,QAAQ,EAAE;gBACV,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;aACf;YAED,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Action } from '../item';
2
+ export declare enum CursorStatus {
3
+ Empty = "empty",
4
+ Slash = "slash"
5
+ }
6
+ export declare type StatusCtx = {
7
+ cursorStatus: CursorStatus;
8
+ filter: string;
9
+ activeActions: Action[];
10
+ };
11
+ export declare type Status = ReturnType<typeof createStatus>;
12
+ export declare const createStatus: () => {
13
+ clearStatus: () => void;
14
+ setSlash: (filter?: string) => void;
15
+ setActions: (actions: Action[]) => void;
16
+ get: () => StatusCtx;
17
+ isEmpty: () => boolean;
18
+ isSlash: () => boolean;
19
+ };
20
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,oBAAY,YAAY;IACpB,KAAK,UAAU;IACf,KAAK,UAAU;CAClB;AAED,oBAAY,SAAS,GAAG;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAoBF,oBAAY,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD,eAAO,MAAM,YAAY;;;0BAKK,MAAM,EAAE;;;;CAOrC,CAAC"}
@@ -0,0 +1,34 @@
1
+ export var CursorStatus;
2
+ (function (CursorStatus) {
3
+ CursorStatus["Empty"] = "empty";
4
+ CursorStatus["Slash"] = "slash";
5
+ })(CursorStatus || (CursorStatus = {}));
6
+ const createStatusCtx = () => {
7
+ return {
8
+ cursorStatus: CursorStatus.Empty,
9
+ filter: '',
10
+ activeActions: [],
11
+ };
12
+ };
13
+ const clearStatus = (status) => {
14
+ status.cursorStatus = CursorStatus.Empty;
15
+ status.filter = '';
16
+ };
17
+ const setSlash = (status, filter = '') => {
18
+ status.cursorStatus = CursorStatus.Slash;
19
+ status.filter = filter;
20
+ };
21
+ export const createStatus = () => {
22
+ const statusCtx = createStatusCtx();
23
+ return {
24
+ clearStatus: () => clearStatus(statusCtx),
25
+ setSlash: (filter = '') => setSlash(statusCtx, filter),
26
+ setActions: (actions) => {
27
+ statusCtx.activeActions = actions;
28
+ },
29
+ get: () => statusCtx,
30
+ isEmpty: () => statusCtx.cursorStatus === CursorStatus.Empty,
31
+ isSlash: () => statusCtx.cursorStatus === CursorStatus.Slash,
32
+ };
33
+ };
34
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/prose-plugin/status.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,+BAAe,CAAA;IACf,+BAAe,CAAA;AACnB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAQD,MAAM,eAAe,GAAG,GAAc,EAAE;IACpC,OAAO;QACH,YAAY,EAAE,YAAY,CAAC,KAAK;QAChC,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KACpB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAiB,EAAE,EAAE;IACtC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;IACzC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,MAAiB,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE;IAChD,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;IACzC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,OAAO;QACH,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;QACzC,QAAQ,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QACtD,UAAU,EAAE,CAAC,OAAiB,EAAE,EAAE;YAC9B,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC;QACtC,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK;QAC5D,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK;KAC/D,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Utils } from '@milkdown/utils';
2
+ import { EditorView } from 'prosemirror-view';
3
+ import { Action } from '../item';
4
+ import { Status } from './status';
5
+ export declare const createView: (status: Status, items: Action[], view: EditorView, utils: Utils) => {
6
+ update?: undefined;
7
+ destroy?: undefined;
8
+ } | {
9
+ update: (view: EditorView) => void;
10
+ destroy: () => void;
11
+ };
12
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAWjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAkBlC,eAAO,MAAM,UAAU,WAAY,MAAM,SAAS,MAAM,EAAE,QAAQ,UAAU,SAAS,KAAK;;;;mBA0BnE,UAAU;;CAehC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { calculateNodePosition } from '@milkdown/utils';
3
+ import { createDropdown } from '../utility';
4
+ import { renderDropdown } from './dropdown';
5
+ import { createMouseManager, handleClick, handleKeydown, handleMouseEnter, handleMouseLeave, handleMouseMove, } from './input';
6
+ const calculatePosition = (view, dropdownElement) => {
7
+ calculateNodePosition(view, dropdownElement, (selected, target, parent) => {
8
+ let left = selected.left - parent.left;
9
+ let top = selected.bottom - parent.top + 14;
10
+ if (left < 0) {
11
+ left = 0;
12
+ }
13
+ if (window.innerHeight - selected.bottom < target.height) {
14
+ top = selected.top - parent.top - target.height - 14;
15
+ }
16
+ return [top, left];
17
+ });
18
+ };
19
+ export const createView = (status, items, view, utils) => {
20
+ const wrapper = view.dom.parentNode;
21
+ if (!wrapper)
22
+ return {};
23
+ const dropdownElement = createDropdown(utils);
24
+ const mouseManager = createMouseManager();
25
+ wrapper.appendChild(dropdownElement);
26
+ const _mouseMove = handleMouseMove(mouseManager);
27
+ const _mouseDown = handleClick(status, items, view, dropdownElement);
28
+ const _keydown = handleKeydown(status, view, dropdownElement, mouseManager);
29
+ const _mouseEnter = handleMouseEnter(status, mouseManager);
30
+ const _mouseLeave = handleMouseLeave();
31
+ items
32
+ .filter((item) => item.enable(view.state.schema))
33
+ .forEach(({ $ }) => {
34
+ $.addEventListener('mouseenter', _mouseEnter);
35
+ $.addEventListener('mouseleave', _mouseLeave);
36
+ dropdownElement.appendChild($);
37
+ });
38
+ wrapper.addEventListener('mousemove', _mouseMove);
39
+ wrapper.addEventListener('mousedown', _mouseDown);
40
+ wrapper.addEventListener('keydown', _keydown);
41
+ return {
42
+ update: (view) => {
43
+ const show = renderDropdown(status, dropdownElement, items);
44
+ if (!show)
45
+ return;
46
+ calculatePosition(view, dropdownElement);
47
+ },
48
+ destroy: () => {
49
+ wrapper.removeEventListener('mousemove', _mouseMove);
50
+ wrapper.removeEventListener('mousedown', _mouseDown);
51
+ wrapper.removeEventListener('keydown', _keydown);
52
+ dropdownElement.remove();
53
+ },
54
+ };
55
+ };
56
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/prose-plugin/view.ts"],"names":[],"mappings":"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"}
package/lib/style.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { ThemeTool } from '@milkdown/core';
2
+ export declare const injectStyle: (themeTool: ThemeTool) => string;
3
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAsC3C,eAAO,MAAM,WAAW,cAAe,SAAS,WAsB/C,CAAC"}
package/lib/style.js ADDED
@@ -0,0 +1,62 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { css } from '@emotion/css';
3
+ const itemStyle = ({ font, palette }) => {
4
+ return css `
5
+ .slash-dropdown-item {
6
+ display: flex;
7
+ gap: 2rem;
8
+ height: 3rem;
9
+ padding: 0 1rem;
10
+ align-items: center;
11
+ justify-content: flex-start;
12
+ cursor: pointer;
13
+ line-height: 2;
14
+ font-family: ${font.typography};
15
+ font-size: 0.875rem;
16
+
17
+ transition: all 0.2s ease-in-out;
18
+
19
+ &,
20
+ .icon {
21
+ color: ${palette('neutral', 0.87)};
22
+ transition: all 0.2s ease-in-out;
23
+ }
24
+
25
+ &.hide {
26
+ display: none;
27
+ }
28
+
29
+ &.active {
30
+ background: ${palette('secondary', 0.12)};
31
+ &,
32
+ .icon {
33
+ color: ${palette('primary')};
34
+ }
35
+ }
36
+ `;
37
+ };
38
+ export const injectStyle = (themeTool) => {
39
+ var _a, _b, _c;
40
+ const { mixin, size, palette } = themeTool;
41
+ const style = css `
42
+ width: 20.5rem;
43
+ max-height: 20.5rem;
44
+ overflow-y: auto;
45
+ ${(_a = mixin.border) === null || _a === void 0 ? void 0 : _a.call(mixin)};
46
+ border-radius: ${size.radius};
47
+ position: absolute;
48
+ background: ${palette('surface')};
49
+
50
+ ${(_b = mixin.shadow) === null || _b === void 0 ? void 0 : _b.call(mixin)};
51
+
52
+ &.hide {
53
+ display: none;
54
+ }
55
+
56
+ ${(_c = mixin.scrollbar) === null || _c === void 0 ? void 0 : _c.call(mixin)};
57
+
58
+ ${itemStyle(themeTool)}
59
+ `;
60
+ return style;
61
+ };
62
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAa,EAAE,EAAE;IAC/C,OAAO,GAAG,CAAA;;;;;;;;;;2BAUa,IAAI,CAAC,UAAU;;;;;;;yBAOjB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;;;;;;;;;8BASnB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;;;6BAG3B,OAAO,CAAC,SAAS,CAAC;;;aAGlC,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE;;IAChD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAA;;;;UAIX,MAAA,KAAK,CAAC,MAAM,+CAAZ,KAAK,CAAW;yBACD,IAAI,CAAC,MAAM;;sBAEd,OAAO,CAAC,SAAS,CAAC;;UAE9B,MAAA,KAAK,CAAC,MAAM,+CAAZ,KAAK,CAAW;;;;;;UAMhB,MAAA,KAAK,CAAC,SAAS,+CAAf,KAAK,CAAc;;UAEnB,SAAS,CAAC,SAAS,CAAC;KACzB,CAAC;IACF,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
package/lib/utility.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { Ctx } from '@milkdown/core';
2
- import { Command } from 'prosemirror-commands';
3
- import { Node, Schema } from 'prosemirror-model';
4
- export declare const createDropdown: (ctx: Ctx) => HTMLDivElement;
1
+ import type { ThemeTool } from '@milkdown/core';
2
+ import type { Icon } from '@milkdown/design-system';
3
+ import type { Utils } from '@milkdown/utils';
4
+ import type { Command } from 'prosemirror-commands';
5
+ import type { Node, Schema } from 'prosemirror-model';
6
+ export declare const createDropdown: (utils: Utils) => HTMLDivElement;
5
7
  declare type ItemOptions = {
6
- iconClassName: string;
7
8
  textClassName: string;
8
9
  };
9
- export declare const createDropdownItem: (text: string, icon: string, options?: Partial<ItemOptions> | undefined) => HTMLDivElement;
10
+ export declare const createDropdownItem: (themeTool: ThemeTool, text: string, icon: Icon, options?: Partial<ItemOptions> | undefined) => HTMLDivElement;
10
11
  export declare const getDepth: (node: Node) => number;
11
12
  export declare const cleanUpAndCreateNode: (createCommand: () => void) => Command;
12
13
  export declare const nodeExists: (name: string) => (schema: Schema) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,cAAc,QAAS,GAAG,mBA0DtC,CAAC;AAEF,aAAK,WAAW,GAAG;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,kBAAkB,SAAU,MAAM,QAAQ,MAAM,+DAoB5D,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,IAAI,WASlC,CAAC;AAUF,eAAO,MAAM,oBAAoB,kBACb,MAAM,IAAI,KAAG,OAO5B,CAAC;AAEN,eAAO,MAAM,UAAU,SAAU,MAAM,cAAc,MAAM,YAAgC,CAAC"}
1
+ {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,eAAO,MAAM,cAAc,UAAW,KAAK,mBAa1C,CAAC;AAEF,aAAK,WAAW,GAAG;IACf,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,kBAAkB,cAAe,SAAS,QAAQ,MAAM,QAAQ,IAAI,+DAiBhF,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,IAAI,WASlC,CAAC;AAUF,eAAO,MAAM,oBAAoB,kBACb,MAAM,IAAI,KAAG,OAO5B,CAAC;AAEN,eAAO,MAAM,UAAU,SAAU,MAAM,cAAc,MAAM,YAAgC,CAAC"}
package/lib/utility.js CHANGED
@@ -1,74 +1,22 @@
1
- import { css } from '@emotion/css';
2
- import { themeToolCtx } from '@milkdown/core';
3
- export const createDropdown = (ctx) => {
4
- var _a, _b, _c, _d, _e, _f;
1
+ import { injectStyle } from './style';
2
+ export const createDropdown = (utils) => {
5
3
  const div = document.createElement('div');
6
4
  div.setAttribute('role', 'listbox');
7
5
  div.setAttribute('tabindex', '-1');
8
- const themeTool = ctx.get(themeToolCtx);
9
- const style = css `
10
- width: 20.5rem;
11
- max-height: 20.5rem;
12
- overflow-y: auto;
13
- ${(_b = (_a = themeTool.widget).border) === null || _b === void 0 ? void 0 : _b.call(_a)};
14
- border-radius: ${themeTool.size.radius};
15
- position: absolute;
16
- background: ${themeTool.palette('surface')};
17
-
18
- ${(_d = (_c = themeTool.widget).shadow) === null || _d === void 0 ? void 0 : _d.call(_c)};
19
-
20
- &.hide {
21
- display: none;
22
- }
23
-
24
- ${(_f = (_e = themeTool.widget).scrollbar) === null || _f === void 0 ? void 0 : _f.call(_e)};
25
-
26
- .slash-dropdown-item {
27
- display: flex;
28
- gap: 2rem;
29
- height: 3rem;
30
- padding: 0 1rem;
31
- align-items: center;
32
- justify-content: flex-start;
33
- cursor: pointer;
34
- line-height: 2;
35
- font-family: ${themeTool.font.font};
36
- font-size: 0.875rem;
37
-
38
- transition: all 0.4s ease-in-out;
39
-
40
- &,
41
- .icon {
42
- color: ${themeTool.palette('neutral', 0.87)};
43
- transition: all 0.4s ease-in-out;
44
- }
45
-
46
- &.hide {
47
- display: none;
48
- }
49
-
50
- &.active {
51
- background: ${themeTool.palette('secondary', 0.12)};
52
- &,
53
- .icon {
54
- color: ${themeTool.palette('primary')};
55
- }
56
- }
57
- }
58
- `;
59
- div.classList.add('slash-dropdown', style, 'hide');
6
+ const style = utils.getStyle(injectStyle);
7
+ if (style) {
8
+ div.classList.add(style);
9
+ }
10
+ div.classList.add('slash-dropdown', 'hide');
60
11
  return div;
61
12
  };
62
- export const createDropdownItem = (text, icon, options) => {
63
- var _a, _b;
64
- const iconClassName = (_a = options === null || options === void 0 ? void 0 : options.iconClassName) !== null && _a !== void 0 ? _a : 'icon material-icons material-icons-outlined';
65
- const textClassName = (_b = options === null || options === void 0 ? void 0 : options.textClassName) !== null && _b !== void 0 ? _b : 'text';
13
+ export const createDropdownItem = (themeTool, text, icon, options) => {
14
+ var _a;
15
+ const textClassName = (_a = options === null || options === void 0 ? void 0 : options.textClassName) !== null && _a !== void 0 ? _a : 'text';
66
16
  const div = document.createElement('div');
67
17
  div.setAttribute('role', 'option');
68
18
  div.classList.add('slash-dropdown-item');
69
- const iconSpan = document.createElement('span');
70
- iconSpan.textContent = icon;
71
- iconSpan.className = iconClassName;
19
+ const iconSpan = themeTool.slots.icon(icon);
72
20
  const textSpan = document.createElement('span');
73
21
  textSpan.textContent = text;
74
22
  textSpan.className = textClassName;
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAO,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,EAAE;;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;UAIX,MAAA,MAAA,SAAS,CAAC,MAAM,EAAC,MAAM,kDAAI;yBACZ,SAAS,CAAC,IAAI,CAAC,MAAM;;sBAExB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;;UAExC,MAAA,MAAA,SAAS,CAAC,MAAM,EAAC,MAAM,kDAAI;;;;;;UAM3B,MAAA,MAAA,SAAS,CAAC,MAAM,EAAC,SAAS,kDAAI;;;;;;;;;;;2BAWb,SAAS,CAAC,IAAI,CAAC,IAAI;;;;;;;yBAOrB,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;;;;;;;;;8BAS7B,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;;;6BAGrC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;;;;KAIpD,CAAC;IACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,OAA8B,EAAE,EAAE;;IAC7F,MAAM,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,mCAAI,6CAA6C,CAAC;IAC9F,MAAM,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,mCAAI,MAAM,CAAC;IAEvD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;IAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;IAEnC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1B,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,EAAE;IACnC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC,UAAU,EAAE;QACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC;KACd;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACzC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAC7B,CAAC,aAAyB,EAAW,EAAE,CACvC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IACtB,IAAI,IAAI,EAAE;QACN,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,aAAa,EAAE,CAAC;KACnB;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milkdown/plugin-slash",
3
- "version": "4.10.5",
3
+ "version": "4.12.0",
4
4
  "main": "lib/index.js",
5
5
  "module": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@emotion/css": "^11.1.3",
22
- "@milkdown/utils": "4.10.5",
22
+ "@milkdown/utils": "4.12.0",
23
23
  "smooth-scroll-into-view-if-needed": "^1.1.32",
24
24
  "tslib": "^2.2.0"
25
25
  },