Skip to content

Commit 6750a3f

Browse files
authored
feat: support image loading attribute (#165)
1 parent e8c2f84 commit 6750a3f

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

src/extensions/markdown/Image/ImageSpecs/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const ImageAttr = {
88
Src: 'src',
99
Alt: 'alt',
1010
Title: 'title',
11+
Loading: 'loading',
1112
} as const;
1213

1314
export const ImageSpecs: ExtensionAuto = (builder) => {
@@ -18,6 +19,7 @@ export const ImageSpecs: ExtensionAuto = (builder) => {
1819
[ImageAttr.Src]: {},
1920
[ImageAttr.Alt]: {default: null},
2021
[ImageAttr.Title]: {default: null},
22+
[ImageAttr.Loading]: {default: null},
2123
},
2224
group: 'inline',
2325
draggable: true,
@@ -29,6 +31,7 @@ export const ImageSpecs: ExtensionAuto = (builder) => {
2931
[ImageAttr.Src]: (dom as Element).getAttribute(ImageAttr.Src),
3032
[ImageAttr.Alt]: (dom as Element).getAttribute(ImageAttr.Alt),
3133
[ImageAttr.Title]: (dom as Element).getAttribute(ImageAttr.Title),
34+
[ImageAttr.Loading]: (dom as Element).getAttribute(ImageAttr.Loading),
3235
};
3336
},
3437
},
@@ -44,6 +47,7 @@ export const ImageSpecs: ExtensionAuto = (builder) => {
4447
getAttrs: (tok) => ({
4548
[ImageAttr.Src]: tok.attrGet('src'),
4649
[ImageAttr.Title]: tok.attrGet('title') || null,
50+
[ImageAttr.Loading]: tok.attrGet(ImageAttr.Loading) || null,
4751
[ImageAttr.Alt]: tok.children?.[0]?.content || null,
4852
}),
4953
},
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import {ImsizeAttr} from '@diplodoc/transform/lib/plugins/imsize/const';
2+
3+
export const ImgSizeAttr = {
4+
Alt: ImsizeAttr.Alt,
5+
Src: ImsizeAttr.Src,
6+
Title: ImsizeAttr.Title,
7+
Width: ImsizeAttr.Width,
8+
Height: ImsizeAttr.Height,
9+
Loading: 'loading',
10+
} as const;

src/extensions/yfm/ImgSize/ImgSizeSpecs/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import isNumber from 'is-number';
22
import type {NodeSpec} from 'prosemirror-model';
33
import imsize from '@diplodoc/transform/lib/plugins/imsize';
4-
import {ImsizeAttr as ImgSizeAttr} from '@diplodoc/transform/lib/plugins/imsize/const';
54
import log from '@diplodoc/transform/lib/log';
65

76
import type {ExtensionAuto} from '../../../../core';
87
import {imageNodeName} from '../../../markdown/Image/const';
8+
import {ImgSizeAttr} from './const';
99

1010
type ImsizeTypedAttributes = {
1111
[ImgSizeAttr.Src]: string;
1212
[ImgSizeAttr.Title]: string | null;
1313
[ImgSizeAttr.Alt]: string | null;
1414
[ImgSizeAttr.Width]: string | null;
1515
[ImgSizeAttr.Height]: string | null;
16+
[ImgSizeAttr.Loading]: string | null;
1617
};
1718

1819
export {ImgSizeAttr};
@@ -37,6 +38,7 @@ export const ImgSizeSpecs: ExtensionAuto<ImgSizeSpecsOptions> = (builder, opts)
3738
[ImgSizeAttr.Title]: {default: null},
3839
[ImgSizeAttr.Height]: {default: null},
3940
[ImgSizeAttr.Width]: {default: null},
41+
[ImgSizeAttr.Loading]: {default: null},
4042
},
4143
placeholder: placeholderContent ? {content: placeholderContent} : opts.placeholder,
4244
group: 'inline',
@@ -52,6 +54,9 @@ export const ImgSizeSpecs: ExtensionAuto<ImgSizeSpecsOptions> = (builder, opts)
5254
[ImgSizeAttr.Src]: (dom as Element).getAttribute(ImgSizeAttr.Src),
5355
[ImgSizeAttr.Alt]: (dom as Element).getAttribute(ImgSizeAttr.Alt),
5456
[ImgSizeAttr.Title]: (dom as Element).getAttribute(ImgSizeAttr.Title),
57+
[ImgSizeAttr.Loading]: (dom as Element).getAttribute(
58+
ImgSizeAttr.Loading,
59+
),
5560
[ImgSizeAttr.Height]: isNumber(height) ? height : null,
5661
[ImgSizeAttr.Width]: isNumber(width) ? height : null,
5762
};
@@ -71,6 +76,7 @@ export const ImgSizeSpecs: ExtensionAuto<ImgSizeSpecsOptions> = (builder, opts)
7176
[ImgSizeAttr.Title]: tok.attrGet(ImgSizeAttr.Title),
7277
[ImgSizeAttr.Height]: tok.attrGet(ImgSizeAttr.Height),
7378
[ImgSizeAttr.Width]: tok.attrGet(ImgSizeAttr.Width),
79+
[ImgSizeAttr.Loading]: tok.attrGet(ImgSizeAttr.Loading),
7480
[ImgSizeAttr.Alt]: tok.children?.[0]?.content || null,
7581
}),
7682
},

0 commit comments

Comments
 (0)