@gravity-ui/markdown-editor 14.12.4 → 14.12.6

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,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createDynamicModifiers = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ts_dedent_1 = tslib_1.__importDefault(require("ts-dedent"));
4
6
  const uuid_1 = require("uuid");
5
7
  const YFM_TABLE_TOKEN_ATTR = 'data-token-id';
6
8
  const YFM_TABLE_NODE_ATTR = 'data-node-id';
7
- const PARENTS_WITH_AFFECT = ['blockquote', 'yfm_tabs'];
8
9
  function createDynamicModifiers(markupManager) {
9
10
  return [
10
11
  {
@@ -17,10 +18,12 @@ function createDynamicModifiers(markupManager) {
17
18
  process: (token, _, rawMarkup) => {
18
19
  const { map } = token;
19
20
  if (map) {
20
- const content = rawMarkup.split('\n').slice(map[0], map[1]).join('\n');
21
+ const content = rawMarkup.split('\n').slice(map[0], map[1]).join('\n').trim();
21
22
  const tokenId = (0, uuid_1.v5)(content, markupManager.getNamespace());
22
- token.attrSet(YFM_TABLE_TOKEN_ATTR, tokenId);
23
- markupManager.setMarkup(tokenId, content);
23
+ if (/^\s*#\|/.test(content)) {
24
+ token.attrSet(YFM_TABLE_TOKEN_ATTR, tokenId);
25
+ markupManager.setMarkup(tokenId, (0, ts_dedent_1.default)(content));
26
+ }
24
27
  }
25
28
  return token;
26
29
  },
@@ -53,11 +56,15 @@ function createDynamicModifiers(markupManager) {
53
56
  * - Falls back to schema-based rendering if the node structure, attributes, or parent elements affect it.
54
57
  */
55
58
  process: (state, node, parent, index, callback) => {
56
- var _a;
57
59
  const nodeId = node.attrs[YFM_TABLE_NODE_ATTR];
58
60
  const savedNode = markupManager.getNode(nodeId);
59
- if (!PARENTS_WITH_AFFECT.includes((_a = parent === null || parent === void 0 ? void 0 : parent.type) === null || _a === void 0 ? void 0 : _a.name) && (savedNode === null || savedNode === void 0 ? void 0 : savedNode.eq(node))) {
60
- state.write(markupManager.getMarkup(nodeId) + '\n');
61
+ if (savedNode === null || savedNode === void 0 ? void 0 : savedNode.eq(node)) {
62
+ const content = markupManager.getMarkup(nodeId) || '';
63
+ state.ensureNewLine();
64
+ state.text(content, false);
65
+ state.ensureNewLine();
66
+ state.closeBlock();
67
+ state.write('\n');
61
68
  return;
62
69
  }
63
70
  callback === null || callback === void 0 ? void 0 : callback(state, node, parent, index);
@@ -2,7 +2,7 @@ import type { Action, ExtensionAuto } from '../../../../core';
2
2
  import { FileUploadHandler } from '../../../../utils/upload';
3
3
  import type { ImageWidgetDescriptorOpts } from './widget';
4
4
  declare const addImageWidgetAction = "addImageWidget";
5
- export declare type ImageWidgetOptions = Pick<ImageWidgetDescriptorOpts, 'needToSetDimensionsForUploadedImages'> & {
5
+ export declare type ImageWidgetOptions = Pick<ImageWidgetDescriptorOpts, 'needToSetDimensionsForUploadedImages' | 'enableNewImageSizeCalculation'> & {
6
6
  imageUploadHandler?: FileUploadHandler;
7
7
  };
8
8
  export declare const ImageWidget: ExtensionAuto<ImageWidgetOptions>;
@@ -7,6 +7,7 @@ const ImageWidget = (builder, opts) => {
7
7
  builder.addAction(addImageWidgetAction, (deps) => (0, actions_1.addImageWidget)(deps, {
8
8
  uploadImages: opts.imageUploadHandler,
9
9
  needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,
10
+ enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,
10
11
  }));
11
12
  };
12
13
  exports.ImageWidget = ImageWidget;
@@ -6,4 +6,5 @@ export declare const removeWidget: (tr: Transaction, id: string) => Transaction;
6
6
  export declare type ImageWidgetDescriptorOpts = {
7
7
  needToSetDimensionsForUploadedImages: boolean;
8
8
  uploadImages?: FileUploadHandler;
9
+ enableNewImageSizeCalculation?: boolean;
9
10
  };
@@ -22,6 +22,7 @@ class ImageWidgetDescriptor extends WidgetDecoration_1.ReactWidgetDescriptor {
22
22
  this.deps = deps;
23
23
  this.uploadImages = opts.uploadImages;
24
24
  this.needToSetDimensionsForUploadedImages = opts.needToSetDimensionsForUploadedImages;
25
+ this.enableNewImageSizeCalculation = opts.enableNewImageSizeCalculation;
25
26
  }
26
27
  getWidgetHandler(view, getPos) {
27
28
  if (!this.widgetHandler) {
@@ -31,6 +32,7 @@ class ImageWidgetDescriptor extends WidgetDecoration_1.ReactWidgetDescriptor {
31
32
  decoId: this.id,
32
33
  uploadImages: this.uploadImages,
33
34
  needToSetDimensionsForUploadedImages: this.needToSetDimensionsForUploadedImages,
35
+ enableNewImageSizeCalculation: this.enableNewImageSizeCalculation,
34
36
  }, this.deps);
35
37
  }
36
38
  return this.widgetHandler;
@@ -49,7 +51,7 @@ class ImageWidgetDescriptor extends WidgetDecoration_1.ReactWidgetDescriptor {
49
51
  }
50
52
  }
51
53
  class ImageWidgetHandler {
52
- constructor({ decoId, view, getPos, uploadImages, needToSetDimensionsForUploadedImages, }, deps) {
54
+ constructor({ decoId, view, getPos, uploadImages, needToSetDimensionsForUploadedImages, enableNewImageSizeCalculation, }, deps) {
53
55
  this.cancelled = false;
54
56
  this.onCancel = () => {
55
57
  this.cancelled = true;
@@ -79,6 +81,7 @@ class ImageWidgetHandler {
79
81
  const { view } = this;
80
82
  new upload_1.ImagesUploadProcess(view, files, this.uploadImages, this.getPos(), {
81
83
  needDimensions: this.needToSetDimensionsForUploadedImages,
84
+ enableNewImageSizeCalculation: this.enableNewImageSizeCalculation,
82
85
  }).run();
83
86
  view.dispatch((0, exports.removeWidget)(view.state.tr, this.decoId));
84
87
  view.focus();
@@ -89,6 +92,7 @@ class ImageWidgetHandler {
89
92
  this.uploadImages = uploadImages;
90
93
  this.normalizeUrl = (0, markdown_1.normalizeUrlFactory)(deps);
91
94
  this.needToSetDimensionsForUploadedImages = needToSetDimensionsForUploadedImages;
95
+ this.enableNewImageSizeCalculation = enableNewImageSizeCalculation;
92
96
  }
93
97
  destruct() {
94
98
  this.cancelled = true;
@@ -12,6 +12,7 @@ const ImgSize = (builder, opts) => {
12
12
  builder.use(ImageWidget_1.ImageWidget, {
13
13
  imageUploadHandler: opts.imageUploadHandler,
14
14
  needToSetDimensionsForUploadedImages: Boolean(opts.needToSetDimensionsForUploadedImages),
15
+ enableNewImageSizeCalculation: Boolean(opts.enableNewImageSizeCalculation),
15
16
  });
16
17
  if (opts.imageUploadHandler || opts.parseInsertedUrlAsImage) {
17
18
  builder.use(ImagePaste_1.ImagePaste, {
@@ -11,6 +11,6 @@
11
11
  .ProseMirror.yfm .yfm-cut .yfm-cut-title:focus {
12
12
  outline: 0;
13
13
  }
14
- .ProseMirror.yfm .yfm-cut.open .yfm-cut-title:before {
14
+ .ProseMirror.yfm .yfm-cut.open > .yfm-cut-title:before {
15
15
  transform: translateY(-50%);
16
16
  }
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  /** During build process, the current version will be injected here */
5
- exports.VERSION = typeof '14.12.4' !== 'undefined' ? '14.12.4' : 'unknown';
5
+ exports.VERSION = typeof '14.12.6' !== 'undefined' ? '14.12.6' : 'unknown';
@@ -1,7 +1,7 @@
1
+ import dedent from 'ts-dedent';
1
2
  import { v5 } from 'uuid';
2
3
  const YFM_TABLE_TOKEN_ATTR = 'data-token-id';
3
4
  const YFM_TABLE_NODE_ATTR = 'data-node-id';
4
- const PARENTS_WITH_AFFECT = ['blockquote', 'yfm_tabs'];
5
5
  export function createDynamicModifiers(markupManager) {
6
6
  return [
7
7
  {
@@ -14,10 +14,12 @@ export function createDynamicModifiers(markupManager) {
14
14
  process: (token, _, rawMarkup) => {
15
15
  const { map } = token;
16
16
  if (map) {
17
- const content = rawMarkup.split('\n').slice(map[0], map[1]).join('\n');
17
+ const content = rawMarkup.split('\n').slice(map[0], map[1]).join('\n').trim();
18
18
  const tokenId = v5(content, markupManager.getNamespace());
19
- token.attrSet(YFM_TABLE_TOKEN_ATTR, tokenId);
20
- markupManager.setMarkup(tokenId, content);
19
+ if (/^\s*#\|/.test(content)) {
20
+ token.attrSet(YFM_TABLE_TOKEN_ATTR, tokenId);
21
+ markupManager.setMarkup(tokenId, dedent(content));
22
+ }
21
23
  }
22
24
  return token;
23
25
  },
@@ -50,11 +52,15 @@ export function createDynamicModifiers(markupManager) {
50
52
  * - Falls back to schema-based rendering if the node structure, attributes, or parent elements affect it.
51
53
  */
52
54
  process: (state, node, parent, index, callback) => {
53
- var _a;
54
55
  const nodeId = node.attrs[YFM_TABLE_NODE_ATTR];
55
56
  const savedNode = markupManager.getNode(nodeId);
56
- if (!PARENTS_WITH_AFFECT.includes((_a = parent === null || parent === void 0 ? void 0 : parent.type) === null || _a === void 0 ? void 0 : _a.name) && (savedNode === null || savedNode === void 0 ? void 0 : savedNode.eq(node))) {
57
- state.write(markupManager.getMarkup(nodeId) + '\n');
57
+ if (savedNode === null || savedNode === void 0 ? void 0 : savedNode.eq(node)) {
58
+ const content = markupManager.getMarkup(nodeId) || '';
59
+ state.ensureNewLine();
60
+ state.text(content, false);
61
+ state.ensureNewLine();
62
+ state.closeBlock();
63
+ state.write('\n');
58
64
  return;
59
65
  }
60
66
  callback === null || callback === void 0 ? void 0 : callback(state, node, parent, index);
@@ -2,7 +2,7 @@ import type { Action, ExtensionAuto } from '../../../../core';
2
2
  import { FileUploadHandler } from '../../../../utils/upload';
3
3
  import type { ImageWidgetDescriptorOpts } from './widget';
4
4
  declare const addImageWidgetAction = "addImageWidget";
5
- export declare type ImageWidgetOptions = Pick<ImageWidgetDescriptorOpts, 'needToSetDimensionsForUploadedImages'> & {
5
+ export declare type ImageWidgetOptions = Pick<ImageWidgetDescriptorOpts, 'needToSetDimensionsForUploadedImages' | 'enableNewImageSizeCalculation'> & {
6
6
  imageUploadHandler?: FileUploadHandler;
7
7
  };
8
8
  export declare const ImageWidget: ExtensionAuto<ImageWidgetOptions>;
@@ -4,5 +4,6 @@ export const ImageWidget = (builder, opts) => {
4
4
  builder.addAction(addImageWidgetAction, (deps) => addImageWidget(deps, {
5
5
  uploadImages: opts.imageUploadHandler,
6
6
  needToSetDimensionsForUploadedImages: opts.needToSetDimensionsForUploadedImages,
7
+ enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,
7
8
  }));
8
9
  };
@@ -6,4 +6,5 @@ export declare const removeWidget: (tr: Transaction, id: string) => Transaction;
6
6
  export declare type ImageWidgetDescriptorOpts = {
7
7
  needToSetDimensionsForUploadedImages: boolean;
8
8
  uploadImages?: FileUploadHandler;
9
+ enableNewImageSizeCalculation?: boolean;
9
10
  };
@@ -17,6 +17,7 @@ class ImageWidgetDescriptor extends ReactWidgetDescriptor {
17
17
  this.deps = deps;
18
18
  this.uploadImages = opts.uploadImages;
19
19
  this.needToSetDimensionsForUploadedImages = opts.needToSetDimensionsForUploadedImages;
20
+ this.enableNewImageSizeCalculation = opts.enableNewImageSizeCalculation;
20
21
  }
21
22
  getWidgetHandler(view, getPos) {
22
23
  if (!this.widgetHandler) {
@@ -26,6 +27,7 @@ class ImageWidgetDescriptor extends ReactWidgetDescriptor {
26
27
  decoId: this.id,
27
28
  uploadImages: this.uploadImages,
28
29
  needToSetDimensionsForUploadedImages: this.needToSetDimensionsForUploadedImages,
30
+ enableNewImageSizeCalculation: this.enableNewImageSizeCalculation,
29
31
  }, this.deps);
30
32
  }
31
33
  return this.widgetHandler;
@@ -44,7 +46,7 @@ class ImageWidgetDescriptor extends ReactWidgetDescriptor {
44
46
  }
45
47
  }
46
48
  class ImageWidgetHandler {
47
- constructor({ decoId, view, getPos, uploadImages, needToSetDimensionsForUploadedImages, }, deps) {
49
+ constructor({ decoId, view, getPos, uploadImages, needToSetDimensionsForUploadedImages, enableNewImageSizeCalculation, }, deps) {
48
50
  this.cancelled = false;
49
51
  this.onCancel = () => {
50
52
  this.cancelled = true;
@@ -74,6 +76,7 @@ class ImageWidgetHandler {
74
76
  const { view } = this;
75
77
  new ImagesUploadProcess(view, files, this.uploadImages, this.getPos(), {
76
78
  needDimensions: this.needToSetDimensionsForUploadedImages,
79
+ enableNewImageSizeCalculation: this.enableNewImageSizeCalculation,
77
80
  }).run();
78
81
  view.dispatch(removeWidget(view.state.tr, this.decoId));
79
82
  view.focus();
@@ -84,6 +87,7 @@ class ImageWidgetHandler {
84
87
  this.uploadImages = uploadImages;
85
88
  this.normalizeUrl = normalizeUrlFactory(deps);
86
89
  this.needToSetDimensionsForUploadedImages = needToSetDimensionsForUploadedImages;
90
+ this.enableNewImageSizeCalculation = enableNewImageSizeCalculation;
87
91
  }
88
92
  destruct() {
89
93
  this.cancelled = true;
@@ -9,6 +9,7 @@ export const ImgSize = (builder, opts) => {
9
9
  builder.use(ImageWidget, {
10
10
  imageUploadHandler: opts.imageUploadHandler,
11
11
  needToSetDimensionsForUploadedImages: Boolean(opts.needToSetDimensionsForUploadedImages),
12
+ enableNewImageSizeCalculation: Boolean(opts.enableNewImageSizeCalculation),
12
13
  });
13
14
  if (opts.imageUploadHandler || opts.parseInsertedUrlAsImage) {
14
15
  builder.use(ImagePaste, {
@@ -11,6 +11,6 @@
11
11
  .ProseMirror.yfm .yfm-cut .yfm-cut-title:focus {
12
12
  outline: 0;
13
13
  }
14
- .ProseMirror.yfm .yfm-cut.open .yfm-cut-title:before {
14
+ .ProseMirror.yfm .yfm-cut.open > .yfm-cut-title:before {
15
15
  transform: translateY(-50%);
16
16
  }
@@ -1,2 +1,2 @@
1
1
  /** During build process, the current version will be injected here */
2
- export const VERSION = typeof '14.12.4' !== 'undefined' ? '14.12.4' : 'unknown';
2
+ export const VERSION = typeof '14.12.6' !== 'undefined' ? '14.12.6' : 'unknown';
package/build/styles.css CHANGED
@@ -1158,7 +1158,7 @@ body :has(.g-md-resizable_resizing) {
1158
1158
  .ProseMirror.yfm .yfm-cut .yfm-cut-title:focus {
1159
1159
  outline: 0;
1160
1160
  }
1161
- .ProseMirror.yfm .yfm-cut.open .yfm-cut-title:before {
1161
+ .ProseMirror.yfm .yfm-cut.open > .yfm-cut-title:before {
1162
1162
  transform: translateY(-50%);
1163
1163
  }
1164
1164
  .yfm-editor .yfm-file {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/markdown-editor",
3
- "version": "14.12.4",
3
+ "version": "14.12.6",
4
4
  "description": "Markdown wysiwyg and markup editor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -199,6 +199,7 @@
199
199
  "react-error-boundary": "^3.1.4",
200
200
  "react-hotkeys-hook": "4.5.0",
201
201
  "react-use": "^17.3.2",
202
+ "ts-dedent": "2.2.0",
202
203
  "tslib": "^2.3.1",
203
204
  "uuid": "11.0.5"
204
205
  },
@@ -264,7 +265,6 @@
264
265
  "sass": "^1.64.1",
265
266
  "sass-loader": "^13.3.2",
266
267
  "stylelint": "15.11.0",
267
- "ts-dedent": "2.2.0",
268
268
  "ts-jest": "^27.0.7",
269
269
  "typescript": "^4.5.2"
270
270
  },