@milkdown/plugin-slash 5.0.0 → 5.1.2

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/lib/config.d.ts CHANGED
@@ -2,9 +2,10 @@
2
2
  import type { Ctx } from '@milkdown/ctx';
3
3
  import { EditorState, Node } from '@milkdown/prose';
4
4
  import { WrappedAction } from './item';
5
+ declare type Nullable<T> = T | null | undefined;
5
6
  export declare type StatusConfig = {
6
- placeholder?: string;
7
- actions?: WrappedAction[];
7
+ placeholder?: Nullable<string>;
8
+ actions?: Nullable<WrappedAction[]>;
8
9
  };
9
10
  export declare type StatusConfigBuilderParams = {
10
11
  content: string;
@@ -12,8 +13,9 @@ export declare type StatusConfigBuilderParams = {
12
13
  parentNode: Node;
13
14
  state: EditorState;
14
15
  };
15
- export declare type StatusConfigBuilder = (params: StatusConfigBuilderParams) => StatusConfig | null | undefined;
16
+ export declare type StatusConfigBuilder = (params: StatusConfigBuilderParams) => Nullable<StatusConfig>;
16
17
  export declare type Config = (ctx: Ctx) => StatusConfigBuilder;
17
- export declare const defaultActions: (ctx: Ctx) => WrappedAction[];
18
+ export declare const defaultActions: (ctx: Ctx, input?: string) => WrappedAction[];
18
19
  export declare const defaultConfig: Config;
20
+ export {};
19
21
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAYzC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,oBAAY,YAAY,GAAG;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,oBAAY,mBAAmB,GAAG,CAAC,MAAM,EAAE,yBAAyB,KAAK,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;AAEzG,oBAAY,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,mBAAmB,CAAC;AAEvD,eAAO,MAAM,cAAc,QAAS,GAAG,KAAG,aAAa,EA8EtD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAyB3B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAYzC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,aAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAExC,oBAAY,YAAY,GAAG;IACvB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;CACvC,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,oBAAY,mBAAmB,GAAG,CAAC,MAAM,EAAE,yBAAyB,KAAK,QAAQ,CAAC,YAAY,CAAC,CAAC;AAEhG,oBAAY,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,mBAAmB,CAAC;AAEvD,eAAO,MAAM,cAAc,QAAS,GAAG,qBAAgB,aAAa,EAuFnE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAqB3B,CAAC"}
package/lib/config.js CHANGED
@@ -1,88 +1,98 @@
1
+ import { __rest } from "tslib";
1
2
  /* Copyright 2021, Milkdown by Mirone. */
2
- import { commandsCtx, themeToolCtx } from '@milkdown/core';
3
+ import { commandsCtx, schemaCtx, themeToolCtx } from '@milkdown/core';
3
4
  import { InsertHr, InsertImage, InsertTable, TurnIntoCodeFence, TurnIntoHeading, TurnIntoTaskList, WrapInBlockquote, WrapInBulletList, WrapInOrderedList, } from '@milkdown/preset-gfm';
4
- import { createDropdownItem, nodeExists } from './utility';
5
- export const defaultActions = (ctx) => [
6
- {
7
- id: 'h1',
8
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Large Heading', 'h1'),
9
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 1),
10
- keyword: ['h1', 'large heading'],
11
- enable: nodeExists('heading'),
12
- },
13
- {
14
- id: 'h2',
15
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Medium Heading', 'h2'),
16
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 2),
17
- keyword: ['h2', 'medium heading'],
18
- enable: nodeExists('heading'),
19
- },
20
- {
21
- id: 'h3',
22
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Small Heading', 'h3'),
23
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 3),
24
- keyword: ['h3', 'small heading'],
25
- enable: nodeExists('heading'),
26
- },
27
- {
28
- id: 'bulletList',
29
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Bullet List', 'bulletList'),
30
- command: () => ctx.get(commandsCtx).call(WrapInBulletList),
31
- keyword: ['bullet list', 'ul'],
32
- enable: nodeExists('bullet_list'),
33
- },
34
- {
35
- id: 'orderedList',
36
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Ordered List', 'orderedList'),
37
- command: () => ctx.get(commandsCtx).call(WrapInOrderedList),
38
- keyword: ['ordered list', 'ol'],
39
- enable: nodeExists('ordered_list'),
40
- },
41
- {
42
- id: 'taskList',
43
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Task List', 'taskList'),
44
- command: () => ctx.get(commandsCtx).call(TurnIntoTaskList),
45
- keyword: ['task list', 'task'],
46
- enable: nodeExists('task_list_item'),
47
- },
48
- {
49
- id: 'image',
50
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Image', 'image'),
51
- command: () => ctx.get(commandsCtx).call(InsertImage),
52
- keyword: ['image'],
53
- enable: nodeExists('image'),
54
- },
55
- {
56
- id: 'blockquote',
57
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Quote', 'quote'),
58
- command: () => ctx.get(commandsCtx).call(WrapInBlockquote),
59
- keyword: ['quote', 'blockquote'],
60
- enable: nodeExists('blockquote'),
61
- },
62
- {
63
- id: 'table',
64
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Table', 'table'),
65
- command: () => ctx.get(commandsCtx).call(InsertTable),
66
- keyword: ['table'],
67
- enable: nodeExists('table'),
68
- },
69
- {
70
- id: 'code',
71
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Code Fence', 'code'),
72
- command: () => ctx.get(commandsCtx).call(TurnIntoCodeFence),
73
- keyword: ['code'],
74
- enable: nodeExists('fence'),
75
- },
76
- {
77
- id: 'divider',
78
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Divide Line', 'divider'),
79
- command: () => ctx.get(commandsCtx).call(InsertHr),
80
- keyword: ['divider', 'hr'],
81
- enable: nodeExists('hr'),
82
- },
83
- ];
5
+ import { createDropdownItem } from './utility';
6
+ export const defaultActions = (ctx, input = '/') => {
7
+ const { nodes } = ctx.get(schemaCtx);
8
+ const actions = [
9
+ {
10
+ id: 'h1',
11
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Large Heading', 'h1'),
12
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 1),
13
+ keyword: ['h1', 'large heading'],
14
+ typeName: 'heading',
15
+ },
16
+ {
17
+ id: 'h2',
18
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Medium Heading', 'h2'),
19
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 2),
20
+ keyword: ['h2', 'medium heading'],
21
+ typeName: 'heading',
22
+ },
23
+ {
24
+ id: 'h3',
25
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Small Heading', 'h3'),
26
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 3),
27
+ keyword: ['h3', 'small heading'],
28
+ typeName: 'heading',
29
+ },
30
+ {
31
+ id: 'bulletList',
32
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Bullet List', 'bulletList'),
33
+ command: () => ctx.get(commandsCtx).call(WrapInBulletList),
34
+ keyword: ['bullet list', 'ul'],
35
+ typeName: 'bullet_list',
36
+ },
37
+ {
38
+ id: 'orderedList',
39
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Ordered List', 'orderedList'),
40
+ command: () => ctx.get(commandsCtx).call(WrapInOrderedList),
41
+ keyword: ['ordered list', 'ol'],
42
+ typeName: 'ordered_list',
43
+ },
44
+ {
45
+ id: 'taskList',
46
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Task List', 'taskList'),
47
+ command: () => ctx.get(commandsCtx).call(TurnIntoTaskList),
48
+ keyword: ['task list', 'task'],
49
+ typeName: 'task_list_item',
50
+ },
51
+ {
52
+ id: 'image',
53
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Image', 'image'),
54
+ command: () => ctx.get(commandsCtx).call(InsertImage),
55
+ keyword: ['image'],
56
+ typeName: 'image',
57
+ },
58
+ {
59
+ id: 'blockquote',
60
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Quote', 'quote'),
61
+ command: () => ctx.get(commandsCtx).call(WrapInBlockquote),
62
+ keyword: ['quote', 'blockquote'],
63
+ typeName: 'blockquote',
64
+ },
65
+ {
66
+ id: 'table',
67
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Table', 'table'),
68
+ command: () => ctx.get(commandsCtx).call(InsertTable),
69
+ keyword: ['table'],
70
+ typeName: 'table',
71
+ },
72
+ {
73
+ id: 'code',
74
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Code Fence', 'code'),
75
+ command: () => ctx.get(commandsCtx).call(TurnIntoCodeFence),
76
+ keyword: ['code'],
77
+ typeName: 'fence',
78
+ },
79
+ {
80
+ id: 'divider',
81
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Divide Line', 'divider'),
82
+ command: () => ctx.get(commandsCtx).call(InsertHr),
83
+ keyword: ['divider', 'hr'],
84
+ typeName: 'hr',
85
+ },
86
+ ];
87
+ const userInput = input.slice(1).toLocaleLowerCase();
88
+ return actions
89
+ .filter((action) => !!nodes[action.typeName] && action.keyword.some((keyword) => keyword.includes(userInput)))
90
+ .map((_a) => {
91
+ var { keyword, typeName } = _a, action = __rest(_a, ["keyword", "typeName"]);
92
+ return action;
93
+ });
94
+ };
84
95
  export const defaultConfig = (ctx) => {
85
- const actions = defaultActions(ctx);
86
96
  return ({ content, isTopLevel }) => {
87
97
  if (!isTopLevel)
88
98
  return null;
@@ -93,10 +103,10 @@ export const defaultConfig = (ctx) => {
93
103
  return content === '/'
94
104
  ? {
95
105
  placeholder: 'Type to filter...',
96
- actions,
106
+ actions: defaultActions(ctx),
97
107
  }
98
108
  : {
99
- actions: actions.filter(({ keyword }) => keyword.some((key) => key.includes(content.slice(1).toLocaleLowerCase()))),
109
+ actions: defaultActions(ctx, content),
100
110
  };
101
111
  }
102
112
  return null;
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -2,10 +2,24 @@ import { AtomList } from '@milkdown/utils';
2
2
  import type { Config } from './config';
3
3
  export type { Config, StatusConfig, StatusConfigBuilder, StatusConfigBuilderParams } from './config';
4
4
  export { defaultActions, defaultConfig } from './config';
5
- export { createDropdownItem, nodeExists } from './utility';
5
+ export { createDropdownItem } from './utility';
6
6
  export declare type Options = {
7
7
  config: Config;
8
8
  };
9
- export declare const slashPlugin: import("@milkdown/utils/src/types").AddMetadata<(options?: Partial<import("@milkdown/utils").CommonOptions<string, Options>> | undefined) => import("@milkdown/ctx").MilkdownPlugin>;
10
- export declare const slash: AtomList<import("@milkdown/utils/src/types").Metadata<(options?: Partial<import("@milkdown/utils").CommonOptions<string, Options>> | undefined) => import("@milkdown/ctx").MilkdownPlugin> & import("@milkdown/ctx").MilkdownPlugin>;
9
+ export declare const slashPlugin: import("@milkdown/utils/lib/types").WithExtend<string, Options, {
10
+ [x: string]: import("prosemirror-model").NodeType<any>;
11
+ } & {
12
+ [x: string]: import("prosemirror-model").MarkType<any>;
13
+ }, {
14
+ schema?: ((ctx: import("@milkdown/ctx").Ctx) => {
15
+ node?: Record<string, import("@milkdown/core").NodeSchema> | undefined;
16
+ mark?: Record<string, import("@milkdown/core").MarkSchema> | undefined;
17
+ }) | undefined;
18
+ view?: ((ctx: import("@milkdown/ctx").Ctx) => Partial<{
19
+ [x: string]: import("@milkdown/prose").NodeViewFactory;
20
+ } & {
21
+ [x: string]: import("@milkdown/prose").MarkViewFactory;
22
+ }>) | undefined;
23
+ }>;
24
+ export declare const slash: AtomList<import("@milkdown/utils/lib/types").Metadata<import("@milkdown/utils/lib/types").GetPlugin<string, Options>> & import("@milkdown/ctx").MilkdownPlugin>;
11
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,oBAAY,OAAO,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,WAAW,sLAYtB,CAAC;AAEH,eAAO,MAAM,KAAK,sOAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,oBAAY,OAAO,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;EAYtB,CAAC;AAEH,eAAO,MAAM,KAAK,iKAAmC,CAAC"}
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ import { AtomList, createPlugin } from '@milkdown/utils';
3
3
  import { defaultConfig } from './config';
4
4
  import { createSlashPlugin } from './prose-plugin';
5
5
  export { defaultActions, defaultConfig } from './config';
6
- export { createDropdownItem, nodeExists } from './utility';
6
+ export { createDropdownItem } from './utility';
7
7
  export const slashPlugin = createPlugin((utils, options) => {
8
8
  var _a;
9
9
  const slashConfig = (_a = options === null || options === void 0 ? void 0 : options.config) !== null && _a !== void 0 ? _a : defaultConfig;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM3D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;;IACxE,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;IAErD,OAAO;QACH,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAEhC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEhD,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;KACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAM/C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;;IACxE,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;IAErD,OAAO;QACH,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAEhC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEhD,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;KACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC"}
package/lib/item.d.ts CHANGED
@@ -1,13 +1,10 @@
1
- import type { Command, Schema } from '@milkdown/prose';
1
+ import type { Command } from '@milkdown/prose';
2
2
  export declare type Action = {
3
3
  id: string;
4
4
  $: HTMLElement;
5
- keyword: string[];
6
5
  command: Command;
7
- enable: (schema: Schema) => boolean;
8
6
  };
9
- export declare type WrappedAction = Pick<Action, 'keyword' | 'id'> & {
10
- enable: (schema: Schema) => boolean;
7
+ export declare type WrappedAction = Pick<Action, 'id'> & {
11
8
  command: () => void;
12
9
  dom: HTMLElement;
13
10
  };
package/lib/item.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIvD,oBAAY,MAAM,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,WAAW,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC,CAAC;AAEF,oBAAY,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG;IACzD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,aAAa,KAAG,MAMtD,CAAC"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,oBAAY,MAAM,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,WAAW,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,oBAAY,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,aAAa,KAAG,MAItD,CAAC"}
package/lib/item.js CHANGED
@@ -1,9 +1,7 @@
1
1
  import { cleanUpAndCreateNode } from './utility';
2
2
  export const transformAction = (action) => ({
3
3
  id: action.id,
4
- keyword: action.keyword,
5
4
  $: action.dom,
6
5
  command: cleanUpAndCreateNode(action.command),
7
- enable: action.enable,
8
6
  });
9
7
  //# sourceMappingURL=item.js.map
package/lib/item.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAgBjD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,CAAC,EAAE,MAAM,CAAC,GAAG;IACb,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;CACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAajD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,CAAC,EAAE,MAAM,CAAC,GAAG;IACb,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;CAChD,CAAC,CAAC"}
@@ -40,7 +40,7 @@ export const createProps = (status, utils) => {
40
40
  const paragraph = findParentNode(({ type }) => type.name === 'paragraph')(state.selection);
41
41
  if (!paragraph ||
42
42
  paragraph.node.childCount > 1 ||
43
- state.selection.$from.parentOffset < paragraph.node.textContent.length) {
43
+ state.selection.$from.parentOffset !== paragraph.node.textContent.length) {
44
44
  status.clear();
45
45
  return;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"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"}
package/lib/utility.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { ThemeTool } from '@milkdown/core';
2
2
  import type { Icon } from '@milkdown/design-system';
3
- import type { Command, Node, Schema } from '@milkdown/prose';
3
+ import type { Command, Node } from '@milkdown/prose';
4
4
  import type { Utils } from '@milkdown/utils';
5
5
  export declare const createDropdown: (utils: Utils) => HTMLDivElement;
6
6
  declare type ItemOptions = {
@@ -9,6 +9,5 @@ declare type ItemOptions = {
9
9
  export declare const createDropdownItem: (themeTool: ThemeTool, text: string, icon: Icon, options?: Partial<ItemOptions> | undefined) => HTMLDivElement;
10
10
  export declare const getDepth: (node: Node) => number;
11
11
  export declare const cleanUpAndCreateNode: (createCommand: () => void) => Command;
12
- export declare const nodeExists: (name: string) => (schema: Schema) => boolean;
13
12
  export {};
14
13
  //# sourceMappingURL=utility.d.ts.map
@@ -1 +1 @@
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,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,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"}
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,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,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"}
package/lib/utility.js CHANGED
@@ -47,5 +47,4 @@ export const cleanUpAndCreateNode = (createCommand) => (state, dispatch, view) =
47
47
  }
48
48
  return true;
49
49
  };
50
- export const nodeExists = (name) => (schema) => Boolean(schema.nodes[name]);
51
50
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,EAAE;IAC3C,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,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE1C,IAAI,KAAK,EAAE;QACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAE,IAAY,EAAE,IAAU,EAAE,OAA8B,EAAE,EAAE;;IACjH,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,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5C,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milkdown/plugin-slash",
3
- "version": "5.0.0",
3
+ "version": "5.1.2",
4
4
  "main": "lib/index.js",
5
5
  "module": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@emotion/css": "^11.1.3",
23
- "@milkdown/utils": "5.0.0",
23
+ "@milkdown/utils": "5.1.2",
24
24
  "smooth-scroll-into-view-if-needed": "^1.1.32",
25
25
  "tslib": "^2.3.1"
26
26
  },
package/src/config.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2021, Milkdown by Mirone. */
2
- import { commandsCtx, themeToolCtx } from '@milkdown/core';
2
+ import { commandsCtx, schemaCtx, themeToolCtx } from '@milkdown/core';
3
3
  import type { Ctx } from '@milkdown/ctx';
4
4
  import {
5
5
  InsertHr,
@@ -15,11 +15,13 @@ import {
15
15
  import { EditorState, Node } from '@milkdown/prose';
16
16
 
17
17
  import { WrappedAction } from './item';
18
- import { createDropdownItem, nodeExists } from './utility';
18
+ import { createDropdownItem } from './utility';
19
+
20
+ type Nullable<T> = T | null | undefined;
19
21
 
20
22
  export type StatusConfig = {
21
- placeholder?: string;
22
- actions?: WrappedAction[];
23
+ placeholder?: Nullable<string>;
24
+ actions?: Nullable<WrappedAction[]>;
23
25
  };
24
26
 
25
27
  export type StatusConfigBuilderParams = {
@@ -29,93 +31,100 @@ export type StatusConfigBuilderParams = {
29
31
  state: EditorState;
30
32
  };
31
33
 
32
- export type StatusConfigBuilder = (params: StatusConfigBuilderParams) => StatusConfig | null | undefined;
34
+ export type StatusConfigBuilder = (params: StatusConfigBuilderParams) => Nullable<StatusConfig>;
33
35
 
34
36
  export type Config = (ctx: Ctx) => StatusConfigBuilder;
35
37
 
36
- export const defaultActions = (ctx: Ctx): WrappedAction[] => [
37
- {
38
- id: 'h1',
39
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Large Heading', 'h1'),
40
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 1),
41
- keyword: ['h1', 'large heading'],
42
- enable: nodeExists('heading'),
43
- },
44
- {
45
- id: 'h2',
46
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Medium Heading', 'h2'),
47
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 2),
48
- keyword: ['h2', 'medium heading'],
49
- enable: nodeExists('heading'),
50
- },
51
- {
52
- id: 'h3',
53
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Small Heading', 'h3'),
54
- command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 3),
55
- keyword: ['h3', 'small heading'],
56
- enable: nodeExists('heading'),
57
- },
58
- {
59
- id: 'bulletList',
60
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Bullet List', 'bulletList'),
61
- command: () => ctx.get(commandsCtx).call(WrapInBulletList),
62
- keyword: ['bullet list', 'ul'],
63
- enable: nodeExists('bullet_list'),
64
- },
65
- {
66
- id: 'orderedList',
67
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Ordered List', 'orderedList'),
68
- command: () => ctx.get(commandsCtx).call(WrapInOrderedList),
69
- keyword: ['ordered list', 'ol'],
70
- enable: nodeExists('ordered_list'),
71
- },
72
- {
73
- id: 'taskList',
74
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Task List', 'taskList'),
75
- command: () => ctx.get(commandsCtx).call(TurnIntoTaskList),
76
- keyword: ['task list', 'task'],
77
- enable: nodeExists('task_list_item'),
78
- },
79
- {
80
- id: 'image',
81
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Image', 'image'),
82
- command: () => ctx.get(commandsCtx).call(InsertImage),
83
- keyword: ['image'],
84
- enable: nodeExists('image'),
85
- },
86
- {
87
- id: 'blockquote',
88
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Quote', 'quote'),
89
- command: () => ctx.get(commandsCtx).call(WrapInBlockquote),
90
- keyword: ['quote', 'blockquote'],
91
- enable: nodeExists('blockquote'),
92
- },
93
- {
94
- id: 'table',
95
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Table', 'table'),
96
- command: () => ctx.get(commandsCtx).call(InsertTable),
97
- keyword: ['table'],
98
- enable: nodeExists('table'),
99
- },
100
- {
101
- id: 'code',
102
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Code Fence', 'code'),
103
- command: () => ctx.get(commandsCtx).call(TurnIntoCodeFence),
104
- keyword: ['code'],
105
- enable: nodeExists('fence'),
106
- },
107
- {
108
- id: 'divider',
109
- dom: createDropdownItem(ctx.get(themeToolCtx), 'Divide Line', 'divider'),
110
- command: () => ctx.get(commandsCtx).call(InsertHr),
111
- keyword: ['divider', 'hr'],
112
- enable: nodeExists('hr'),
113
- },
114
- ];
38
+ export const defaultActions = (ctx: Ctx, input = '/'): WrappedAction[] => {
39
+ const { nodes } = ctx.get(schemaCtx);
40
+ const actions: Array<WrappedAction & { keyword: string[]; typeName: string }> = [
41
+ {
42
+ id: 'h1',
43
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Large Heading', 'h1'),
44
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 1),
45
+ keyword: ['h1', 'large heading'],
46
+ typeName: 'heading',
47
+ },
48
+ {
49
+ id: 'h2',
50
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Medium Heading', 'h2'),
51
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 2),
52
+ keyword: ['h2', 'medium heading'],
53
+ typeName: 'heading',
54
+ },
55
+ {
56
+ id: 'h3',
57
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Small Heading', 'h3'),
58
+ command: () => ctx.get(commandsCtx).call(TurnIntoHeading, 3),
59
+ keyword: ['h3', 'small heading'],
60
+ typeName: 'heading',
61
+ },
62
+ {
63
+ id: 'bulletList',
64
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Bullet List', 'bulletList'),
65
+ command: () => ctx.get(commandsCtx).call(WrapInBulletList),
66
+ keyword: ['bullet list', 'ul'],
67
+ typeName: 'bullet_list',
68
+ },
69
+ {
70
+ id: 'orderedList',
71
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Ordered List', 'orderedList'),
72
+ command: () => ctx.get(commandsCtx).call(WrapInOrderedList),
73
+ keyword: ['ordered list', 'ol'],
74
+ typeName: 'ordered_list',
75
+ },
76
+ {
77
+ id: 'taskList',
78
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Task List', 'taskList'),
79
+ command: () => ctx.get(commandsCtx).call(TurnIntoTaskList),
80
+ keyword: ['task list', 'task'],
81
+ typeName: 'task_list_item',
82
+ },
83
+ {
84
+ id: 'image',
85
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Image', 'image'),
86
+ command: () => ctx.get(commandsCtx).call(InsertImage),
87
+ keyword: ['image'],
88
+ typeName: 'image',
89
+ },
90
+ {
91
+ id: 'blockquote',
92
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Quote', 'quote'),
93
+ command: () => ctx.get(commandsCtx).call(WrapInBlockquote),
94
+ keyword: ['quote', 'blockquote'],
95
+ typeName: 'blockquote',
96
+ },
97
+ {
98
+ id: 'table',
99
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Table', 'table'),
100
+ command: () => ctx.get(commandsCtx).call(InsertTable),
101
+ keyword: ['table'],
102
+ typeName: 'table',
103
+ },
104
+ {
105
+ id: 'code',
106
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Code Fence', 'code'),
107
+ command: () => ctx.get(commandsCtx).call(TurnIntoCodeFence),
108
+ keyword: ['code'],
109
+ typeName: 'fence',
110
+ },
111
+ {
112
+ id: 'divider',
113
+ dom: createDropdownItem(ctx.get(themeToolCtx), 'Divide Line', 'divider'),
114
+ command: () => ctx.get(commandsCtx).call(InsertHr),
115
+ keyword: ['divider', 'hr'],
116
+ typeName: 'hr',
117
+ },
118
+ ];
115
119
 
116
- export const defaultConfig: Config = (ctx) => {
117
- const actions = defaultActions(ctx);
120
+ const userInput = input.slice(1).toLocaleLowerCase();
118
121
 
122
+ return actions
123
+ .filter((action) => !!nodes[action.typeName] && action.keyword.some((keyword) => keyword.includes(userInput)))
124
+ .map(({ keyword, typeName, ...action }) => action);
125
+ };
126
+
127
+ export const defaultConfig: Config = (ctx) => {
119
128
  return ({ content, isTopLevel }) => {
120
129
  if (!isTopLevel) return null;
121
130
 
@@ -127,12 +136,10 @@ export const defaultConfig: Config = (ctx) => {
127
136
  return content === '/'
128
137
  ? {
129
138
  placeholder: 'Type to filter...',
130
- actions,
139
+ actions: defaultActions(ctx),
131
140
  }
132
141
  : {
133
- actions: actions.filter(({ keyword }) =>
134
- keyword.some((key) => key.includes(content.slice(1).toLocaleLowerCase())),
135
- ),
142
+ actions: defaultActions(ctx, content),
136
143
  };
137
144
  }
138
145
 
package/src/index.ts CHANGED
@@ -7,7 +7,7 @@ import { createSlashPlugin } from './prose-plugin';
7
7
 
8
8
  export type { Config, StatusConfig, StatusConfigBuilder, StatusConfigBuilderParams } from './config';
9
9
  export { defaultActions, defaultConfig } from './config';
10
- export { createDropdownItem, nodeExists } from './utility';
10
+ export { createDropdownItem } from './utility';
11
11
 
12
12
  export type Options = {
13
13
  config: Config;
package/src/item.ts CHANGED
@@ -1,26 +1,21 @@
1
1
  /* Copyright 2021, Milkdown by Mirone. */
2
- import type { Command, Schema } from '@milkdown/prose';
2
+ import type { Command } from '@milkdown/prose';
3
3
 
4
4
  import { cleanUpAndCreateNode } from './utility';
5
5
 
6
6
  export type Action = {
7
7
  id: string;
8
8
  $: HTMLElement;
9
- keyword: string[];
10
9
  command: Command;
11
- enable: (schema: Schema) => boolean;
12
10
  };
13
11
 
14
- export type WrappedAction = Pick<Action, 'keyword' | 'id'> & {
15
- enable: (schema: Schema) => boolean;
12
+ export type WrappedAction = Pick<Action, 'id'> & {
16
13
  command: () => void;
17
14
  dom: HTMLElement;
18
15
  };
19
16
 
20
17
  export const transformAction = (action: WrappedAction): Action => ({
21
18
  id: action.id,
22
- keyword: action.keyword,
23
19
  $: action.dom,
24
20
  command: cleanUpAndCreateNode(action.command),
25
- enable: action.enable,
26
21
  });
@@ -54,7 +54,7 @@ export const createProps = (status: Status, utils: Utils) => {
54
54
  if (
55
55
  !paragraph ||
56
56
  paragraph.node.childCount > 1 ||
57
- state.selection.$from.parentOffset < paragraph.node.textContent.length
57
+ state.selection.$from.parentOffset !== paragraph.node.textContent.length
58
58
  ) {
59
59
  status.clear();
60
60
  return;
package/src/utility.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /* Copyright 2021, Milkdown by Mirone. */
2
2
  import type { ThemeTool } from '@milkdown/core';
3
3
  import type { Icon } from '@milkdown/design-system';
4
- import type { Command, Node, Schema } from '@milkdown/prose';
4
+ import type { Command, Node } from '@milkdown/prose';
5
5
  import type { Utils } from '@milkdown/utils';
6
6
 
7
7
  import { injectStyle } from './style';
@@ -71,5 +71,3 @@ export const cleanUpAndCreateNode =
71
71
  }
72
72
  return true;
73
73
  };
74
-
75
- export const nodeExists = (name: string) => (schema: Schema) => Boolean(schema.nodes[name]);