@diplodoc/transform 4.61.1 → 4.63.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.
@@ -1,11 +1,17 @@
1
1
  import type { MarkdownItPluginCb, MarkdownItPluginOpts } from '../typings';
2
+ import type { ImageOptions } from '../../typings';
2
3
  interface ImageOpts extends MarkdownItPluginOpts {
3
4
  assetsPublicPath: string;
4
5
  inlineSvg?: boolean;
5
6
  }
6
7
  interface SVGOpts extends MarkdownItPluginOpts {
7
8
  notFoundCb: (s: string) => void;
9
+ imageOpts: ImageOptions;
8
10
  }
9
11
  declare type Opts = SVGOpts & ImageOpts;
10
12
  declare const index: MarkdownItPluginCb<Opts>;
11
- export = index;
13
+ declare function replaceSvgContent(content: string, options: ImageOptions): string;
14
+ declare const imagesPlugin: typeof index & {
15
+ replaceSvgContent: typeof replaceSvgContent;
16
+ };
17
+ export = imagesPlugin;
@@ -5,6 +5,7 @@ const svgo_1 = require("svgo");
5
5
  const fs_1 = require("fs");
6
6
  const utilsFS_1 = require("../../utilsFS");
7
7
  const utils_1 = require("../../utils");
8
+ const sanitizeAttribute = (value) => value.replace(/(\d*[%a-z]{0,5}).*/gi, '$1');
8
9
  function replaceImageSrc(token, state, { assetsPublicPath = path_1.sep, root = '', path: optsPath, log }) {
9
10
  var _a;
10
11
  const src = (0, utils_1.getSrcTokenAttr)(token);
@@ -23,27 +24,12 @@ function replaceImageSrc(token, state, { assetsPublicPath = path_1.sep, root = '
23
24
  const publicSrc = (0, path_1.join)(assetsPublicPath, relativeToRoot);
24
25
  token.attrSet('src', publicSrc);
25
26
  }
26
- function prefix() {
27
- const value = Math.floor(Math.random() * 1e9);
28
- return 'rnd-' + value.toString(16);
29
- }
30
- function convertSvg(token, state, { path: optsPath, log, notFoundCb, root }) {
27
+ function convertSvg(token, state, { path: optsPath, log, notFoundCb, root, imageOpts }) {
31
28
  const currentPath = state.env.path || optsPath;
32
29
  const path = (0, utilsFS_1.resolveRelativePath)(currentPath, (0, utils_1.getSrcTokenAttr)(token));
33
30
  try {
34
31
  const raw = (0, fs_1.readFileSync)(path).toString();
35
- const result = (0, svgo_1.optimize)(raw, {
36
- plugins: [
37
- {
38
- name: 'prefixIds',
39
- params: {
40
- prefix: prefix(),
41
- prefixClassNames: false,
42
- },
43
- },
44
- ],
45
- });
46
- const content = result.data;
32
+ const content = raw === '' ? '' : replaceSvgContent(raw, imageOpts);
47
33
  const svgToken = new state.Token('image_svg', '', 0);
48
34
  svgToken.attrSet('content', content);
49
35
  return svgToken;
@@ -75,7 +61,10 @@ const index = (md, opts) => {
75
61
  return;
76
62
  }
77
63
  const imgSrc = (0, utils_1.getSrcTokenAttr)(childrenTokens[j]);
78
- const shouldInlineSvg = opts.inlineSvg !== false && !(0, utils_1.isExternalHref)(imgSrc);
64
+ const shouldInlineSvg = (childrenTokens[j].attrGet('inline') === null
65
+ ? opts.inlineSvg !== false
66
+ : childrenTokens[j].attrGet('inline') === 'true') &&
67
+ !(0, utils_1.isExternalHref)(imgSrc);
79
68
  if (imgSrc.endsWith('.svg') && shouldInlineSvg) {
80
69
  childrenTokens[j] = convertSvg(childrenTokens[j], state, opts);
81
70
  }
@@ -100,5 +89,46 @@ const index = (md, opts) => {
100
89
  return token.attrGet('content') || '';
101
90
  };
102
91
  };
103
- module.exports = index;
92
+ function replaceSvgContent(content, options) {
93
+ var _a;
94
+ // monoline
95
+ content = content.replace(/\n/g, '');
96
+ // width, height
97
+ let svgRoot = content.replace(/<svg([^>]*)>.*/g, '$1');
98
+ const { width, height } = ((_a = svgRoot
99
+ .match(/(?:width="(.*?)")|(?:height="(.*?)")/g)) === null || _a === void 0 ? void 0 : _a.reduce((acc, val) => {
100
+ const [key, value] = val.split('=');
101
+ acc[key] = value;
102
+ return acc;
103
+ }, {})) || { width: undefined, height: undefined };
104
+ if (!width && options.width) {
105
+ const sanitizedWidth = sanitizeAttribute(options.width.toString());
106
+ svgRoot = `${svgRoot} width="${sanitizedWidth}"`;
107
+ }
108
+ if (!height && options.height) {
109
+ const sanitizedHeight = sanitizeAttribute(options.height.toString());
110
+ svgRoot = `${svgRoot} height="${sanitizedHeight}"`;
111
+ }
112
+ if ((!width && options.width) || (!height && options.height)) {
113
+ content = content.replace(/<svg([^>]*)>/, `<svg${svgRoot}>`);
114
+ }
115
+ // randomize ids
116
+ content = (0, svgo_1.optimize)(content, {
117
+ plugins: [
118
+ {
119
+ name: 'prefixIds',
120
+ params: {
121
+ prefix: 'rnd-' + Math.floor(Math.random() * 1e9).toString(16),
122
+ prefixClassNames: false,
123
+ },
124
+ },
125
+ ],
126
+ }).data;
127
+ return content;
128
+ }
129
+ // Create an object that is the index function with an additional replaceSvgContent property
130
+ const imagesPlugin = Object.assign(index, {
131
+ replaceSvgContent,
132
+ });
133
+ module.exports = imagesPlugin;
104
134
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/images/index.ts"],"names":[],"mappings":";AAIA,+BAA+B;AAC/B,iCAA2B;AAC3B,+BAA8B;AAC9B,2BAAgC;AAEhC,2CAAgE;AAChE,uCAAwE;AAOxE,SAAS,eAAe,CACpB,KAAY,EACZ,KAAgB,EAChB,EAAC,gBAAgB,GAAG,UAAG,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAY;;IAEnE,MAAM,GAAG,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC;IAE/C,IAAI,CAAC,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE;QAClB,OAAO;KACV;IAED,MAAM,IAAI,GAAG,IAAA,6BAAmB,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,IAAI,IAAA,sBAAY,EAAC,IAAI,CAAC,EAAE;QACpB,MAAA,KAAK,CAAC,EAAE,CAAC,MAAM,0CAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9B;SAAM;QACH,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAA,YAAI,EAAC,GAAG,CAAC,OAAO,IAAA,YAAI,EAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACtE;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,UAAG,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAEzD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAMD,SAAS,MAAM;IACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAE9C,OAAO,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CACf,KAAY,EACZ,KAAgB,EAChB,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAU;IAEhD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,6BAAmB,EAAC,WAAW,EAAE,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,IAAI;QACA,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,eAAQ,EAAC,GAAG,EAAE;YACzB,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE;wBACJ,MAAM,EAAE,MAAM,EAAE;wBAChB,gBAAgB,EAAE,KAAK;qBAC1B;iBACJ;aACJ;SACJ,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErC,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,CAAU,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,WAAW,YAAY,CAAC,CAAC;QAEvD,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAID,MAAM,KAAK,GAA6B,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;IACjD,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;YACtB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC7B,CAAC,EAAE,CAAC;gBACJ,SAAS;aACZ;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,CAAC;YAEV,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE;gBAC9B,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;oBACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;oBAEnE,IAAI,QAAQ,EAAE;wBACV,OAAO;qBACV;oBAED,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;oBAE5E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,EAAE;wBAC5C,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;qBAClE;yBAAM;wBACH,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;qBACnD;oBAED,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;iBACjD;gBAED,CAAC,EAAE,CAAC;aACP;YAED,CAAC,EAAE,CAAC;SACP;IACL,CAAC,CAAC;IAEF,IAAI;QACA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KACtD;IAAC,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KACxC;IAED,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,iBAAS,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/images/index.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ export declare enum ImsizeAttr {
4
4
  Title = "title",
5
5
  Width = "width",
6
6
  Height = "height",
7
- Style = "style"
7
+ Style = "style",
8
+ Inline = "inline"
8
9
  }
@@ -9,5 +9,6 @@ var ImsizeAttr;
9
9
  ImsizeAttr["Width"] = "width";
10
10
  ImsizeAttr["Height"] = "height";
11
11
  ImsizeAttr["Style"] = "style";
12
+ ImsizeAttr["Inline"] = "inline";
12
13
  })(ImsizeAttr = exports.ImsizeAttr || (exports.ImsizeAttr = {}));
13
14
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/transform/plugins/imsize/const.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,yBAAW,CAAA;IACX,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,6BAAe,CAAA;AACnB,CAAC,EAPW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAOrB"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/transform/plugins/imsize/const.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,yBAAW,CAAA;IACX,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,+BAAiB,CAAA;AACrB,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB"}
@@ -171,6 +171,19 @@ const imageWithSize = (md, opts) => {
171
171
  [const_1.ImsizeAttr.Src, href],
172
172
  [const_1.ImsizeAttr.Alt, ''],
173
173
  ];
174
+ // Handle inline attribute from curly braces
175
+ if (state.src.slice(Math.max(0, pos), max).includes('{')) {
176
+ const result = parseInlineAttributes(state.src.slice(Math.max(0, pos) + 1, max - 1));
177
+ if (result.width !== '') {
178
+ width = result.width;
179
+ }
180
+ if (result.height !== '') {
181
+ height = result.height;
182
+ }
183
+ if (result.inline !== '') {
184
+ token.attrs.push([const_1.ImsizeAttr.Inline, result.inline]);
185
+ }
186
+ }
174
187
  if (title) {
175
188
  token.attrs.push([const_1.ImsizeAttr.Title, title]);
176
189
  }
@@ -210,4 +223,26 @@ const imageWithSize = (md, opts) => {
210
223
  };
211
224
  };
212
225
  exports.imageWithSize = imageWithSize;
226
+ function parseInlineAttributes(attrsStr) {
227
+ // Parse key=value pairs
228
+ const attrRegex = /(\w+)=(?:'([^']*)'|"([^"]*)"|(\S+))/g;
229
+ const result = {
230
+ width: '',
231
+ height: '',
232
+ inline: '',
233
+ };
234
+ let match;
235
+ while ((match = attrRegex.exec(attrsStr)) !== null) {
236
+ const key = match[1];
237
+ const value = match[2] || match[3] || match[4];
238
+ switch (key) {
239
+ case 'width':
240
+ case 'height':
241
+ case 'inline':
242
+ result[key] = value;
243
+ break;
244
+ }
245
+ }
246
+ return result;
247
+ }
213
248
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/transform/plugins/imsize/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/transform/plugins/imsize/plugin.ts"],"names":[],"mappings":"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"}
package/lib/typings.d.ts CHANGED
@@ -109,3 +109,8 @@ export declare type MarkdownItPreprocessorCb<T extends unknown = {}> = {
109
109
  export declare type CssWhiteList = {
110
110
  [property: string]: boolean;
111
111
  };
112
+ export declare type ImageOptions = {
113
+ width: string | undefined | null;
114
+ height: string | undefined | null;
115
+ inline: boolean | undefined | null;
116
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.61.1",
3
+ "version": "4.63.0",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -190,15 +190,14 @@
190
190
  z-index: 1;
191
191
 
192
192
  box-sizing: border-box;
193
- border: 1px solid var(--yfm-color-border);
193
+ border: 1px solid var(--yfm-color-table-border);
194
194
  border-radius: 8px;
195
195
  border-collapse: collapse;
196
196
  border-spacing: 0;
197
- background: var(--yfm-color-base);
197
+ background: var(--yfm-color-table-background);
198
198
 
199
- thead,
200
- tr:nth-child(2n) {
201
- background-color: var(--yfm-color-table-row-background);
199
+ thead {
200
+ background-color: var(--yfm-color-table-head-background);
202
201
  }
203
202
 
204
203
  tr:first-child {
@@ -220,7 +219,7 @@
220
219
  padding: 10px 20px;
221
220
  overflow: hidden;
222
221
  text-overflow: ellipsis;
223
- border: 1px solid var(--yfm-color-border);
222
+ border: 1px solid var(--yfm-color-table-border);
224
223
 
225
224
  @include removeMarginForEdgeChildren();
226
225
  }
@@ -245,6 +244,10 @@
245
244
  }
246
245
  }
247
246
 
247
+ &:not(.yfm_no-stripe-table) table tr:nth-child(2n) {
248
+ background-color: var(--yfm-color-table-stripe-row-background);
249
+ }
250
+
248
251
  hr {
249
252
  box-sizing: content-box;
250
253
  height: 0.25em;
@@ -44,7 +44,7 @@
44
44
  td::before,
45
45
  th::before {
46
46
  content: '';
47
- background: var(--yfm-color-base);
47
+ background: var(--yfm-color-table-background);
48
48
  position: absolute;
49
49
  inset: 0;
50
50
  z-index: -2;
@@ -53,7 +53,7 @@
53
53
  td::after,
54
54
  th::after {
55
55
  content: '';
56
- background: var(--yfm-color-table-row-background);
56
+ background: var(--yfm-color-table-head-background);
57
57
  position: absolute;
58
58
  inset: 0;
59
59
  z-index: -1;
@@ -5,10 +5,6 @@
5
5
  --yfm-color-link: var(--yfm-color-link-private);
6
6
  --yfm-color-link-hover: var(--yfm-color-link-hover-private);
7
7
 
8
- --yfm-color-table: var(--yfm-color-table-private);
9
- --yfm-color-table-row-background: var(--yfm-color-table-row-background-private);
10
- --yfm-color-table-row-header-background: var(--yfm-color-table-row-header-background-private);
11
-
12
8
  --yfm-color-border: var(--yfm-color-border-private);
13
9
 
14
10
  --yfm-color-accent: var(--yfm-color-accent-private);
@@ -48,4 +44,13 @@
48
44
  --yfm-color-modal-actions-hover: var(--yfm-color-modal-actions-hover-private);
49
45
  --yfm-color-modal-wide-content: var(--yfm-color-modal-wide-content-private);
50
46
  --yfm-color-modal-wide-content-overlay: var(--yfm-color-modal-wide-content-overlay-private);
47
+
48
+ // table
49
+ --yfm-color-table: var(--yfm-color-table-private);
50
+ --yfm-color-table-border: var(--yfm-color-border);
51
+ --yfm-color-table-background: var(--yfm-color-base);
52
+ --yfm-color-table-head-background: var(--yfm-color-table-row-background);
53
+ --yfm-color-table-stripe-row-background: var(--yfm-color-table-row-background);
54
+ // TODO: next var is deprecated, need to remove later
55
+ --yfm-color-table-row-background: var(--yfm-color-table-row-background-private);
51
56
  }
@@ -6,7 +6,6 @@
6
6
  --yfm-color-table-private: #333;
7
7
  --yfm-color-border-private: rgba(0, 0, 0, 0.07);
8
8
  --yfm-color-table-row-background-private: rgba(0, 0, 0, 0.02);
9
- --yfm-color-table-row-header-background-private: rgba(247, 247, 247, 1);
10
9
  --yfm-color-accent-private: #027bf3;
11
10
 
12
11
  --yfm-color-inline-code-private: rgba(59, 96, 128, 1);
@@ -1,6 +1,6 @@
1
1
  import type Token from 'markdown-it/lib/token';
2
2
  import type {MarkdownItPluginCb, MarkdownItPluginOpts} from '../typings';
3
- import type {StateCore} from '../../typings';
3
+ import type {ImageOptions, StateCore} from '../../typings';
4
4
 
5
5
  import {join, sep} from 'path';
6
6
  import {bold} from 'chalk';
@@ -10,6 +10,8 @@ import {readFileSync} from 'fs';
10
10
  import {isFileExists, resolveRelativePath} from '../../utilsFS';
11
11
  import {getSrcTokenAttr, isExternalHref, isLocalUrl} from '../../utils';
12
12
 
13
+ const sanitizeAttribute = (value: string): string => value.replace(/(\d*[%a-z]{0,5}).*/gi, '$1');
14
+
13
15
  interface ImageOpts extends MarkdownItPluginOpts {
14
16
  assetsPublicPath: string;
15
17
  inlineSvg?: boolean;
@@ -43,37 +45,20 @@ function replaceImageSrc(
43
45
 
44
46
  interface SVGOpts extends MarkdownItPluginOpts {
45
47
  notFoundCb: (s: string) => void;
46
- }
47
-
48
- function prefix() {
49
- const value = Math.floor(Math.random() * 1e9);
50
-
51
- return 'rnd-' + value.toString(16);
48
+ imageOpts: ImageOptions;
52
49
  }
53
50
 
54
51
  function convertSvg(
55
52
  token: Token,
56
53
  state: StateCore,
57
- {path: optsPath, log, notFoundCb, root}: SVGOpts,
54
+ {path: optsPath, log, notFoundCb, root, imageOpts}: SVGOpts,
58
55
  ) {
59
56
  const currentPath = state.env.path || optsPath;
60
57
  const path = resolveRelativePath(currentPath, getSrcTokenAttr(token));
61
58
 
62
59
  try {
63
60
  const raw = readFileSync(path).toString();
64
- const result = optimize(raw, {
65
- plugins: [
66
- {
67
- name: 'prefixIds',
68
- params: {
69
- prefix: prefix(),
70
- prefixClassNames: false,
71
- },
72
- },
73
- ],
74
- });
75
-
76
- const content = result.data;
61
+ const content = raw === '' ? '' : replaceSvgContent(raw, imageOpts);
77
62
  const svgToken = new state.Token('image_svg', '', 0);
78
63
  svgToken.attrSet('content', content);
79
64
 
@@ -116,7 +101,11 @@ const index: MarkdownItPluginCb<Opts> = (md, opts) => {
116
101
  }
117
102
 
118
103
  const imgSrc = getSrcTokenAttr(childrenTokens[j]);
119
- const shouldInlineSvg = opts.inlineSvg !== false && !isExternalHref(imgSrc);
104
+ const shouldInlineSvg =
105
+ (childrenTokens[j].attrGet('inline') === null
106
+ ? opts.inlineSvg !== false
107
+ : childrenTokens[j].attrGet('inline') === 'true') &&
108
+ !isExternalHref(imgSrc);
120
109
 
121
110
  if (imgSrc.endsWith('.svg') && shouldInlineSvg) {
122
111
  childrenTokens[j] = convertSvg(childrenTokens[j], state, opts);
@@ -147,4 +136,55 @@ const index: MarkdownItPluginCb<Opts> = (md, opts) => {
147
136
  };
148
137
  };
149
138
 
150
- export = index;
139
+ function replaceSvgContent(content: string, options: ImageOptions) {
140
+ // monoline
141
+ content = content.replace(/\n/g, '');
142
+
143
+ // width, height
144
+ let svgRoot = content.replace(/<svg([^>]*)>.*/g, '$1');
145
+
146
+ const {width, height} = svgRoot
147
+ .match(/(?:width="(.*?)")|(?:height="(.*?)")/g)
148
+ ?.reduce((acc: {[key: string]: string}, val) => {
149
+ const [key, value] = val.split('=');
150
+ acc[key] = value;
151
+ return acc;
152
+ }, {}) || {width: undefined, height: undefined};
153
+
154
+ if (!width && options.width) {
155
+ const sanitizedWidth = sanitizeAttribute(options.width.toString());
156
+ svgRoot = `${svgRoot} width="${sanitizedWidth}"`;
157
+ }
158
+ if (!height && options.height) {
159
+ const sanitizedHeight = sanitizeAttribute(options.height.toString());
160
+ svgRoot = `${svgRoot} height="${sanitizedHeight}"`;
161
+ }
162
+ if ((!width && options.width) || (!height && options.height)) {
163
+ content = content.replace(/<svg([^>]*)>/, `<svg${svgRoot}>`);
164
+ }
165
+
166
+ // randomize ids
167
+ content = optimize(content, {
168
+ plugins: [
169
+ {
170
+ name: 'prefixIds',
171
+ params: {
172
+ prefix: 'rnd-' + Math.floor(Math.random() * 1e9).toString(16),
173
+ prefixClassNames: false,
174
+ },
175
+ },
176
+ ],
177
+ }).data;
178
+
179
+ return content;
180
+ }
181
+
182
+ // Create an object that is the index function with an additional replaceSvgContent property
183
+ const imagesPlugin: typeof index & {replaceSvgContent: typeof replaceSvgContent} = Object.assign(
184
+ index,
185
+ {
186
+ replaceSvgContent,
187
+ },
188
+ );
189
+
190
+ export = imagesPlugin;
@@ -5,4 +5,5 @@ export enum ImsizeAttr {
5
5
  Width = 'width',
6
6
  Height = 'height',
7
7
  Style = 'style',
8
+ Inline = 'inline',
8
9
  }
@@ -199,6 +199,23 @@ export const imageWithSize = (md: MarkdownIt, opts?: ImsizeOptions): ParserInlin
199
199
  [ImsizeAttr.Alt, ''],
200
200
  ];
201
201
 
202
+ // Handle inline attribute from curly braces
203
+ if (state.src.slice(Math.max(0, pos), max).includes('{')) {
204
+ const result = parseInlineAttributes(
205
+ state.src.slice(Math.max(0, pos) + 1, max - 1),
206
+ );
207
+
208
+ if (result.width !== '') {
209
+ width = result.width;
210
+ }
211
+ if (result.height !== '') {
212
+ height = result.height;
213
+ }
214
+ if (result.inline !== '') {
215
+ token.attrs.push([ImsizeAttr.Inline, result.inline]);
216
+ }
217
+ }
218
+
202
219
  if (title) {
203
220
  token.attrs.push([ImsizeAttr.Title, title]);
204
221
  }
@@ -244,3 +261,28 @@ export const imageWithSize = (md: MarkdownIt, opts?: ImsizeOptions): ParserInlin
244
261
  return true;
245
262
  };
246
263
  };
264
+
265
+ function parseInlineAttributes(attrsStr: string): {width: string; height: string; inline: string} {
266
+ // Parse key=value pairs
267
+ const attrRegex = /(\w+)=(?:'([^']*)'|"([^"]*)"|(\S+))/g;
268
+ const result: {width: string; height: string; inline: string} = {
269
+ width: '',
270
+ height: '',
271
+ inline: '',
272
+ };
273
+ let match;
274
+
275
+ while ((match = attrRegex.exec(attrsStr)) !== null) {
276
+ const key = match[1];
277
+ const value = match[2] || match[3] || match[4];
278
+
279
+ switch (key) {
280
+ case 'width':
281
+ case 'height':
282
+ case 'inline':
283
+ result[key] = value;
284
+ break;
285
+ }
286
+ }
287
+ return result;
288
+ }
@@ -147,3 +147,9 @@ export type MarkdownItPreprocessorCb<T extends unknown = {}> = {
147
147
  };
148
148
 
149
149
  export type CssWhiteList = {[property: string]: boolean};
150
+
151
+ export type ImageOptions = {
152
+ width: string | undefined | null;
153
+ height: string | undefined | null;
154
+ inline: boolean | undefined | null;
155
+ };