@milkdown/preset-commonmark 4.12.0 → 4.13.3

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.
@@ -1,6 +1,7 @@
1
1
  export declare const ModifyImage: import("@milkdown/core").CmdKey<string>;
2
2
  export declare const InsertImage: import("@milkdown/core").CmdKey<string>;
3
3
  export declare type ImageOptions = {
4
+ isBlock: boolean;
4
5
  placeholder: {
5
6
  loading: string;
6
7
  empty: string;
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/node/image.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,yCAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,yCAAyB,CAAC;AAElD,oBAAY,YAAY,GAAG;IACvB,WAAW,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL,CAAC;AACF,eAAO,MAAM,KAAK,sGA2ShB,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/node/image.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,yCAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,yCAAyB,CAAC;AAElD,oBAAY,YAAY,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL,CAAC;AACF,eAAO,MAAM,KAAK,sGA2ThB,CAAC"}
package/lib/node/image.js CHANGED
@@ -3,24 +3,30 @@ import { css } from '@emotion/css';
3
3
  import { createCmd, createCmdKey, themeToolCtx } from '@milkdown/core';
4
4
  import { createNode, findSelectedNodeOfType } from '@milkdown/utils';
5
5
  import { InputRule } from 'prosemirror-inputrules';
6
- import { NodeSelection } from 'prosemirror-state';
7
6
  export const ModifyImage = createCmdKey();
8
7
  export const InsertImage = createCmdKey();
9
8
  const id = 'image';
10
9
  export const image = createNode((options, utils) => {
11
- var _a;
10
+ var _a, _b;
12
11
  const placeholder = Object.assign({ loading: 'Loading...', empty: 'Add an Image', failed: 'Image loads failed' }, ((_a = options === null || options === void 0 ? void 0 : options.placeholder) !== null && _a !== void 0 ? _a : {}));
12
+ const isBlock = (_b = options === null || options === void 0 ? void 0 : options.isBlock) !== null && _b !== void 0 ? _b : false;
13
13
  const containerStyle = utils.getStyle((themeTool) => css `
14
14
  display: inline-block;
15
- margin: 0 auto;
16
15
  position: relative;
17
16
  text-align: center;
18
17
  font-size: 0;
18
+ vertical-align: text-bottom;
19
+ ${isBlock
20
+ ? `
19
21
  width: 100%;
22
+ margin: 0 auto;
23
+ `
24
+ : ''}
20
25
  img {
21
- width: 100%;
26
+ max-width: 100%;
22
27
  height: auto;
23
28
  object-fit: contain;
29
+ margin: 0 2px;
24
30
  }
25
31
  .icon,
26
32
  .placeholder {
@@ -28,10 +34,13 @@ export const image = createNode((options, utils) => {
28
34
  }
29
35
 
30
36
  &.system {
37
+ width: 100%;
38
+ padding: 0 2rem;
39
+
31
40
  img {
32
41
  width: 0;
33
42
  height: 0;
34
- visibility: hidden;
43
+ display: none;
35
44
  }
36
45
 
37
46
  .icon,
@@ -49,6 +58,7 @@ export const image = createNode((options, utils) => {
49
58
  align-items: center;
50
59
  .placeholder {
51
60
  margin: 0;
61
+ line-height: 1;
52
62
  &::before {
53
63
  content: '';
54
64
  font-size: 0.875rem;
@@ -96,14 +106,17 @@ export const image = createNode((options, utils) => {
96
106
  inline: true,
97
107
  group: 'inline',
98
108
  draggable: true,
99
- selectable: true,
100
109
  marks: '',
110
+ atom: true,
111
+ defining: true,
112
+ isolating: true,
101
113
  attrs: {
102
114
  src: { default: '' },
103
115
  alt: { default: null },
104
116
  title: { default: null },
105
117
  failed: { default: false },
106
118
  loading: { default: true },
119
+ width: { default: 0 },
107
120
  },
108
121
  parseDOM: [
109
122
  {
@@ -117,7 +130,8 @@ export const image = createNode((options, utils) => {
117
130
  loading: dom.classList.contains('loading'),
118
131
  src: dom.getAttribute('src') || '',
119
132
  alt: dom.getAttribute('alt'),
120
- title: dom.getAttribute('title'),
133
+ title: dom.getAttribute('title') || dom.getAttribute('alt'),
134
+ width: dom.getAttribute('width') || 0,
121
135
  };
122
136
  },
123
137
  },
@@ -152,7 +166,7 @@ export const image = createNode((options, utils) => {
152
166
  });
153
167
  },
154
168
  },
155
- commands: (nodeType, schema) => [
169
+ commands: (nodeType) => [
156
170
  createCmd(InsertImage, (src = '') => (state, dispatch) => {
157
171
  if (!dispatch)
158
172
  return true;
@@ -162,11 +176,7 @@ export const image = createNode((options, utils) => {
162
176
  return true;
163
177
  }
164
178
  const _tr = tr.replaceSelectionWith(node);
165
- const { $from } = _tr.selection;
166
- const start = $from.start();
167
- const __tr = _tr.replaceSelectionWith(schema.node('paragraph'));
168
- const sel = NodeSelection.create(__tr.doc, start);
169
- dispatch(__tr.setSelection(sel));
179
+ dispatch(_tr.scrollIntoView());
170
180
  return true;
171
181
  }),
172
182
  createCmd(ModifyImage, (src = '') => (state, dispatch) => {
@@ -179,7 +189,7 @@ export const image = createNode((options, utils) => {
179
189
  }),
180
190
  ],
181
191
  inputRules: (nodeType) => [
182
- new InputRule(/!\[(?<alt>.*?)]\((?<filename>.*?)(?=“|\))"?(?<title>[^"]+)?"?\)/, (state, match, start, end) => {
192
+ new InputRule(/!\[(?<alt>.*?)]\((?<filename>.*?)\s*(?="|\))"?(?<title>[^"]+)?"?\)/, (state, match, start, end) => {
183
193
  const [okay, alt, src = '', title] = match;
184
194
  const { tr } = state;
185
195
  if (okay) {
@@ -190,9 +200,11 @@ export const image = createNode((options, utils) => {
190
200
  ],
191
201
  view: (_editor, nodeType, node, view, getPos) => {
192
202
  const createIcon = utils.ctx.get(themeToolCtx).slots.icon;
193
- const container = document.createElement('div');
203
+ const container = document.createElement('span');
194
204
  container.className = utils.getClassName(node.attrs, id, containerStyle);
205
+ container.contentEditable = 'false';
195
206
  const content = document.createElement('img');
207
+ content.contentEditable = 'true';
196
208
  container.append(content);
197
209
  let icon = createIcon('image');
198
210
  const placeholder = document.createElement('span');
@@ -215,14 +227,15 @@ export const image = createNode((options, utils) => {
215
227
  };
216
228
  img.onload = () => {
217
229
  const { tr } = view.state;
218
- const _tr = tr.setNodeMarkup(getPos(), nodeType, Object.assign(Object.assign({}, node.attrs), { src, loading: false, failed: false }));
230
+ const _tr = tr.setNodeMarkup(getPos(), nodeType, Object.assign(Object.assign({}, node.attrs), { width: img.width, src, loading: false, failed: false }));
219
231
  view.dispatch(_tr);
220
232
  };
221
233
  };
222
- const { src, loading, title, alt } = node.attrs;
234
+ const { src, loading, title, alt, width } = node.attrs;
223
235
  content.src = src;
224
- content.title = title;
236
+ content.title = title || alt;
225
237
  content.alt = alt;
238
+ content.width = width;
226
239
  if (src.length === 0) {
227
240
  container.classList.add('system', 'empty');
228
241
  setIcon('image');
@@ -232,14 +245,14 @@ export const image = createNode((options, utils) => {
232
245
  }
233
246
  return {
234
247
  dom: container,
235
- contentDOM: content,
236
248
  update: (updatedNode) => {
237
249
  if (updatedNode.type.name !== id)
238
250
  return false;
239
- const { src, alt, title, loading, failed } = updatedNode.attrs;
251
+ const { src, alt, title, loading, failed, width } = updatedNode.attrs;
240
252
  content.src = src;
241
253
  content.alt = alt;
242
- content.title = title;
254
+ content.title = title || alt;
255
+ content.width = width;
243
256
  if (loading) {
244
257
  loadImage(src);
245
258
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/node/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/node/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Node } from 'unist';
2
+ export declare const filterHTMLPlugin: () => (tree: Node) => void;
3
+ //# sourceMappingURL=filter-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-html.d.ts","sourceRoot":"","sources":["../../src/plugin/filter-html.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,IAAI,EAAU,MAAM,OAAO,CAAC;AA0B9C,eAAO,MAAM,gBAAgB,eACE,IAAI,SAUlC,CAAC"}
@@ -0,0 +1,32 @@
1
+ const isParent = (node) => !!node.children;
2
+ const isHTML = (node) => node.type === 'html';
3
+ function flatMapWithDepth(ast, fn) {
4
+ return transform(ast, 0, null)[0];
5
+ function transform(node, index, parent) {
6
+ if (isParent(node)) {
7
+ const out = [];
8
+ for (let i = 0, n = node.children.length; i < n; i++) {
9
+ const xs = transform(node.children[i], i, node);
10
+ if (xs) {
11
+ for (let j = 0, m = xs.length; j < m; j++) {
12
+ out.push(xs[j]);
13
+ }
14
+ }
15
+ }
16
+ node.children = out;
17
+ }
18
+ return fn(node, index, parent);
19
+ }
20
+ }
21
+ export const filterHTMLPlugin = () => {
22
+ function transformer(tree) {
23
+ flatMapWithDepth(tree, (node) => {
24
+ if (!isHTML(node)) {
25
+ return [node];
26
+ }
27
+ return [];
28
+ });
29
+ }
30
+ return transformer;
31
+ };
32
+ //# sourceMappingURL=filter-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-html.js","sourceRoot":"","sources":["../../src/plugin/filter-html.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAkB,EAAE,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,CAAC;AAC7E,MAAM,MAAM,GAAG,CAAC,IAAU,EAA2B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAE7E,SAAS,gBAAgB,CAAC,GAAS,EAAE,EAA8D;IAC/F,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,SAAS,SAAS,CAAC,IAAU,EAAE,KAAa,EAAE,MAAmB;QAC7D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,EAAE,EAAE;oBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnB;iBACJ;aACJ;YACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACvB;QAED,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACjC,SAAS,WAAW,CAAC,IAAU;QAC3B,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,iBAAiB,2CAAmD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,2CAAmD,CAAC"}
@@ -1,36 +1,6 @@
1
1
  /* Copyright 2021, Milkdown by Mirone. */
2
2
  import { remarkPluginFactory } from '@milkdown/core';
3
3
  import links from 'remark-inline-links';
4
- const isParent = (node) => !!node.children;
5
- const isHTML = (node) => node.type === 'html';
6
- function flatMapWithDepth(ast, fn) {
7
- return transform(ast, 0, null)[0];
8
- function transform(node, index, parent) {
9
- if (isParent(node)) {
10
- const out = [];
11
- for (let i = 0, n = node.children.length; i < n; i++) {
12
- const xs = transform(node.children[i], i, node);
13
- if (xs) {
14
- for (let j = 0, m = xs.length; j < m; j++) {
15
- out.push(xs[j]);
16
- }
17
- }
18
- }
19
- node.children = out;
20
- }
21
- return fn(node, index, parent);
22
- }
23
- }
24
- const filterHTMLPlugin = () => {
25
- function transformer(tree) {
26
- flatMapWithDepth(tree, (node) => {
27
- if (!isHTML(node)) {
28
- return [node];
29
- }
30
- return [];
31
- });
32
- }
33
- return transformer;
34
- };
4
+ import { filterHTMLPlugin } from './filter-html';
35
5
  export const commonmarkPlugins = [remarkPluginFactory([links, filterHTMLPlugin])];
36
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAGxC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAkB,EAAE,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,CAAC;AAC7E,MAAM,MAAM,GAAG,CAAC,IAAU,EAA2B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAE7E,SAAS,gBAAgB,CAAC,GAAS,EAAE,EAA8D;IAC/F,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,SAAS,SAAS,CAAC,IAAU,EAAE,KAAa,EAAE,MAAmB;QAC7D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,EAAE,EAAE;oBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnB;iBACJ;aACJ;YACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACvB;QAED,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,SAAS,WAAW,CAAC,IAAU;QAC3B,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@milkdown/preset-commonmark",
3
- "version": "4.12.0",
3
+ "version": "4.13.3",
4
4
  "main": "lib/index.js",
5
5
  "module": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "sideEffects": false,
8
8
  "license": "MIT",
9
9
  "files": [
10
- "lib"
10
+ "lib",
11
+ "src"
11
12
  ],
12
13
  "keywords": [
13
14
  "milkdown",
package/src/index.ts ADDED
@@ -0,0 +1,56 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { AtomList } from '@milkdown/utils';
3
+
4
+ import { marks, ModifyLink, ToggleBold, ToggleInlineCode, ToggleItalic, ToggleLink } from './mark';
5
+ import {
6
+ InsertHardbreak,
7
+ InsertHr,
8
+ InsertImage,
9
+ LiftListItem,
10
+ ModifyImage,
11
+ nodes,
12
+ SinkListItem,
13
+ SplitListItem,
14
+ TurnIntoCodeFence,
15
+ TurnIntoHeading,
16
+ TurnIntoText,
17
+ WrapInBlockquote,
18
+ WrapInBulletList,
19
+ WrapInOrderedList,
20
+ } from './node';
21
+ import { commonmarkPlugins } from './plugin';
22
+
23
+ export * from './mark';
24
+ export * from './node';
25
+ export * from './supported-keys';
26
+
27
+ export const commonmarkNodes = AtomList.create([...nodes, ...marks]);
28
+ export { commonmarkPlugins };
29
+ export const commonmark = AtomList.create([...commonmarkPlugins, ...commonmarkNodes]);
30
+
31
+ export const commands = {
32
+ ToggleInlineCode,
33
+ ToggleItalic,
34
+ ToggleLink,
35
+ ToggleBold,
36
+
37
+ ModifyLink,
38
+ ModifyImage,
39
+
40
+ WrapInBlockquote,
41
+ WrapInBulletList,
42
+ WrapInOrderedList,
43
+
44
+ TurnIntoCodeFence,
45
+ TurnIntoHeading,
46
+ TurnIntoText,
47
+
48
+ InsertHardbreak,
49
+ InsertHr,
50
+ InsertImage,
51
+
52
+ SplitListItem,
53
+ SinkListItem,
54
+ LiftListItem,
55
+ } as const;
56
+ export type Commands = typeof commands;
@@ -0,0 +1,55 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { css } from '@emotion/css';
3
+ import { createCmd, createCmdKey } from '@milkdown/core';
4
+ import { createMark, createShortcut, markRule } from '@milkdown/utils';
5
+ import { toggleMark } from 'prosemirror-commands';
6
+
7
+ import { SupportedKeys } from '../supported-keys';
8
+
9
+ type Keys = SupportedKeys['CodeInline'];
10
+ const id = 'code_inline';
11
+
12
+ export const ToggleInlineCode = createCmdKey();
13
+
14
+ export const codeInline = createMark<Keys>((_, utils) => {
15
+ const style = utils.getStyle(
16
+ ({ palette, size, font }) =>
17
+ css`
18
+ background-color: ${palette('neutral')};
19
+ color: ${palette('background')};
20
+ border-radius: ${size.radius};
21
+ font-weight: 500;
22
+ font-family: ${font.code};
23
+ padding: 0 0.2rem;
24
+ `,
25
+ );
26
+ return {
27
+ id,
28
+ schema: {
29
+ excludes: '_',
30
+ parseDOM: [{ tag: 'code' }],
31
+ toDOM: (mark) => ['code', { class: utils.getClassName(mark.attrs, 'code-inline', style) }],
32
+ },
33
+ parser: {
34
+ match: (node) => node.type === 'inlineCode',
35
+ runner: (state, node, markType) => {
36
+ state.openMark(markType);
37
+ state.addText(node.value as string);
38
+ state.closeMark(markType);
39
+ },
40
+ },
41
+ serializer: {
42
+ match: (mark) => mark.type.name === id,
43
+ runner: (state, _, node) => {
44
+ state.addNode('inlineCode', undefined, node.text || '');
45
+
46
+ return true;
47
+ },
48
+ },
49
+ inputRules: (markType) => [markRule(/(?:^|[^`])(`([^`]+)`)$/, markType)],
50
+ commands: (markType) => [createCmd(ToggleInlineCode, () => toggleMark(markType))],
51
+ shortcuts: {
52
+ [SupportedKeys.CodeInline]: createShortcut(ToggleInlineCode, 'Mod-e'),
53
+ },
54
+ };
55
+ });
package/src/mark/em.ts ADDED
@@ -0,0 +1,46 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { createCmd, createCmdKey } from '@milkdown/core';
3
+ import { createMark, createShortcut, markRule } from '@milkdown/utils';
4
+ import { toggleMark } from 'prosemirror-commands';
5
+
6
+ import { SupportedKeys } from '../supported-keys';
7
+
8
+ type Keys = SupportedKeys['Em'];
9
+
10
+ const id = 'em';
11
+
12
+ export const ToggleItalic = createCmdKey();
13
+
14
+ export const em = createMark<Keys>((_, utils) => ({
15
+ id,
16
+ schema: {
17
+ parseDOM: [
18
+ { tag: 'i' },
19
+ { tag: 'em' },
20
+ { style: 'font-style', getAttrs: (value) => (value === 'italic') as false },
21
+ ],
22
+ toDOM: (mark) => ['em', { class: utils.getClassName(mark.attrs, id) }],
23
+ },
24
+ parser: {
25
+ match: (node) => node.type === 'emphasis',
26
+ runner: (state, node, markType) => {
27
+ state.openMark(markType);
28
+ state.next(node.children);
29
+ state.closeMark(markType);
30
+ },
31
+ },
32
+ serializer: {
33
+ match: (mark) => mark.type.name === id,
34
+ runner: (state, mark) => {
35
+ state.withMark(mark, 'emphasis');
36
+ },
37
+ },
38
+ inputRules: (markType) => [
39
+ markRule(/(?:^|[^_])(_([^_]+)_)$/, markType),
40
+ markRule(/(?:^|[^*])(\*([^*]+)\*)$/, markType),
41
+ ],
42
+ commands: (markType) => [createCmd(ToggleItalic, () => toggleMark(markType))],
43
+ shortcuts: {
44
+ [SupportedKeys.Em]: createShortcut(ToggleItalic, 'Mod-i'),
45
+ },
46
+ }));
@@ -0,0 +1,12 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { codeInline } from './code-inline';
3
+ import { em } from './em';
4
+ import { link } from './link';
5
+ import { strong } from './strong';
6
+
7
+ export const marks = [codeInline(), em(), strong(), link()];
8
+
9
+ export * from './code-inline';
10
+ export * from './em';
11
+ export * from './link';
12
+ export * from './strong';
@@ -0,0 +1,123 @@
1
+ /* Copyright 2021, Milkdown by Mirone. */
2
+ import { css } from '@emotion/css';
3
+ import { createCmd, createCmdKey } from '@milkdown/core';
4
+ import { createMark } from '@milkdown/utils';
5
+ import { toggleMark } from 'prosemirror-commands';
6
+ import { InputRule } from 'prosemirror-inputrules';
7
+ import { Node as ProseNode } from 'prosemirror-model';
8
+ import { TextSelection } from 'prosemirror-state';
9
+
10
+ export const ToggleLink = createCmdKey<string>();
11
+ export const ModifyLink = createCmdKey<string>();
12
+ const id = 'link';
13
+ export const link = createMark((_, utils) => {
14
+ const style = utils.getStyle((themeTool) => {
15
+ const lineColor = themeTool.palette('line');
16
+
17
+ return css`
18
+ color: ${themeTool.palette('secondary')};
19
+ cursor: pointer;
20
+ transition: all 0.4s ease-in-out;
21
+ font-weight: 500;
22
+ &:hover {
23
+ background-color: ${lineColor};
24
+ box-shadow: 0 0.2rem ${lineColor}, 0 -0.2rem ${lineColor};
25
+ }
26
+ `;
27
+ });
28
+ return {
29
+ id,
30
+ schema: {
31
+ attrs: {
32
+ href: {},
33
+ title: { default: null },
34
+ },
35
+ inclusive: false,
36
+ parseDOM: [
37
+ {
38
+ tag: 'a[href]',
39
+ getAttrs: (dom) => {
40
+ if (!(dom instanceof HTMLElement)) {
41
+ throw new Error();
42
+ }
43
+ return { href: dom.getAttribute('href'), title: dom.getAttribute('title') };
44
+ },
45
+ },
46
+ ],
47
+ toDOM: (mark) => ['a', { ...mark.attrs, class: utils.getClassName(mark.attrs, id, style) }],
48
+ },
49
+ parser: {
50
+ match: (node) => node.type === 'link',
51
+ runner: (state, node, markType) => {
52
+ const url = node.url as string;
53
+ const title = node.title as string;
54
+ state.openMark(markType, { href: url, title });
55
+ state.next(node.children);
56
+ state.closeMark(markType);
57
+ },
58
+ },
59
+ serializer: {
60
+ match: (mark) => mark.type.name === id,
61
+ runner: (state, mark) => {
62
+ state.withMark(mark, 'link', undefined, {
63
+ title: mark.attrs.title,
64
+ url: mark.attrs.href,
65
+ });
66
+ },
67
+ },
68
+ commands: (markType) => [
69
+ createCmd(ToggleLink, (href = '') => toggleMark(markType, { href })),
70
+ createCmd(ModifyLink, (href = '') => (state, dispatch) => {
71
+ if (!dispatch) return false;
72
+
73
+ const { marks } = state.schema;
74
+
75
+ let node: ProseNode | undefined;
76
+ let pos = -1;
77
+ const { selection } = state;
78
+ state.doc.nodesBetween(selection.from, selection.to, (n, p) => {
79
+ if (marks.link.isInSet(n.marks)) {
80
+ node = n;
81
+ pos = p;
82
+ return false;
83
+ }
84
+ return;
85
+ });
86
+ if (!node) return false;
87
+
88
+ const mark = node.marks.find(({ type }) => type === markType);
89
+ if (!mark) return false;
90
+
91
+ const start = pos;
92
+ const end = pos + node.nodeSize;
93
+ const { tr } = state;
94
+ const linkMark = marks.link.create({ ...mark.attrs, href });
95
+ dispatch(
96
+ tr
97
+ .removeMark(start, end, mark)
98
+ .addMark(start, end, linkMark)
99
+ .setSelection(new TextSelection(tr.selection.$anchor))
100
+ .scrollIntoView(),
101
+ );
102
+
103
+ return true;
104
+ }),
105
+ ],
106
+ inputRules: (markType, schema) => [
107
+ new InputRule(/\[(?<text>.*?)]\((?<href>.*?)(?=“|\))"?(?<title>[^"]+)?"?\)/, (state, match, start, end) => {
108
+ const [okay, text = '', href, title] = match;
109
+ const { tr } = state;
110
+ if (okay) {
111
+ const content = text || 'link';
112
+ tr.replaceWith(start, end, schema.text(content)).addMark(
113
+ start,
114
+ content.length + start,
115
+ markType.create({ title, href }),
116
+ );
117
+ }
118
+
119
+ return tr;
120
+ }),
121
+ ],
122
+ };
123
+ });