@jupyterlab/mermaid 4.4.0-alpha.0 → 4.4.0-alpha.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/manager.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { PromiseDelegate } from '@lumino/coreutils';
4
4
  import { LruCache } from '@jupyterlab/coreutils';
5
- import { DETAILS_CLASS, MERMAID_CLASS, MERMAID_CODE_CLASS, MERMAID_DARK_THEME, MERMAID_DEFAULT_THEME, SUMMARY_CLASS, WARNING_CLASS } from './tokens';
5
+ import { DETAILS_CLASS, MERMAID_CLASS, MERMAID_CODE_CLASS, MERMAID_DARK_THEME, MERMAID_DEFAULT_THEME, RE_DEFAULT_RENDERER, SUMMARY_CLASS, WARNING_CLASS } from './tokens';
6
6
  /**
7
7
  * A mermaid diagram manager with cache.
8
8
  */
@@ -19,7 +19,8 @@ export class MermaidManager {
19
19
  * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
20
20
  */
21
21
  static cleanMermaidSvg(svg) {
22
- return svg.replace(Private.RE_VOID_ELEMENT, Private.replaceVoidElement);
22
+ svg = svg.replace(Private.RE_VOID_ELEMENT, Private.replaceVoidElement);
23
+ return `${Private.SVG_XML_HEADER}${svg}`;
23
24
  }
24
25
  /**
25
26
  * Handle (re)-initializing mermaid based on external values.
@@ -54,6 +55,7 @@ export class MermaidManager {
54
55
  */
55
56
  async renderSvg(text) {
56
57
  const _mermaid = await this.getMermaid();
58
+ await Private.ensureRenderers(text);
57
59
  const id = `jp-mermaid-${Private.nextMermaidId()}`;
58
60
  // create temporary element into which to render
59
61
  const el = document.createElement('div');
@@ -184,7 +186,9 @@ var Private;
184
186
  (function (Private) {
185
187
  let _themes = null;
186
188
  let _mermaid = null;
189
+ let _mermaidElk = null;
187
190
  let _loading = null;
191
+ let _loadingElk = null;
188
192
  let _nextMermaidId = 0;
189
193
  let _version = null;
190
194
  /**
@@ -204,8 +208,9 @@ var Private;
204
208
  /**
205
209
  * (Re-)initialize mermaid with lab-specific theme information
206
210
  */
207
- function initMermaid() {
208
- if (!_mermaid) {
211
+ function initMermaid(mermaid = null) {
212
+ mermaid = _mermaid;
213
+ if (!mermaid) {
209
214
  return false;
210
215
  }
211
216
  let theme = MERMAID_DEFAULT_THEME;
@@ -219,8 +224,7 @@ var Private;
219
224
  const fontFamily = window
220
225
  .getComputedStyle(document.body)
221
226
  .getPropertyValue('--jp-ui-font-family');
222
- _mermaid.mermaidAPI.globalReset();
223
- _mermaid.mermaidAPI.initialize({
227
+ mermaid.initialize({
224
228
  theme,
225
229
  fontFamily,
226
230
  securityLevel: 'strict',
@@ -257,12 +261,50 @@ var Private;
257
261
  }
258
262
  _loading = new PromiseDelegate();
259
263
  _version = (await import('mermaid/package.json')).version;
260
- _mermaid = (await import('mermaid')).default;
261
- initMermaid();
264
+ const tmpMermaid = (_mermaid = (await import('mermaid')).default);
265
+ initMermaid(tmpMermaid);
266
+ _mermaid = tmpMermaid;
262
267
  _loading.resolve(_mermaid);
263
268
  return _mermaid;
264
269
  }
265
270
  Private.ensureMermaid = ensureMermaid;
271
+ /** Detect and load any renderers configured via `%init` or YAML front matter.
272
+ *
273
+ * The current upstream behavior appears to be last-in wins, but check all.
274
+ */
275
+ async function ensureRenderers(text) {
276
+ let promises = [];
277
+ for (const match of [...text.matchAll(RE_DEFAULT_RENDERER)]) {
278
+ switch ((match && match[2]) || null) {
279
+ case 'elk':
280
+ promises.push(Private.ensureMermaidElk());
281
+ break;
282
+ }
283
+ }
284
+ if (promises.length) {
285
+ await Promise.all(promises);
286
+ }
287
+ }
288
+ Private.ensureRenderers = ensureRenderers;
289
+ /**
290
+ * Ensure mermaid-elk has been lazily loaded once, initialized, and cached.
291
+ */
292
+ async function ensureMermaidElk() {
293
+ if (_mermaidElk != null) {
294
+ return _mermaidElk;
295
+ }
296
+ if (_loadingElk) {
297
+ return _loadingElk.promise;
298
+ }
299
+ _loadingElk = new PromiseDelegate();
300
+ const _mermaid = await ensureMermaid();
301
+ const tmpElk = (await import('@mermaid-js/layout-elk')).default;
302
+ _mermaid.registerLayoutLoaders(tmpElk);
303
+ _mermaidElk = tmpElk;
304
+ _loadingElk.resolve(_mermaidElk);
305
+ return _mermaidElk;
306
+ }
307
+ Private.ensureMermaidElk = ensureMermaidElk;
266
308
  /**
267
309
  * A regular expression for all void elements, which may include attributes and
268
310
  * a slash.
@@ -284,5 +326,278 @@ var Private;
284
326
  return `<${tag} ${rest}>`;
285
327
  }
286
328
  Private.replaceVoidElement = replaceVoidElement;
329
+ /**
330
+ * Named HTML entities with their decimal equivalent codes.
331
+ *
332
+ * @see https://www.w3.org/TR/WD-html40-970708/sgml/entities.html
333
+ * */
334
+ Private.HTML_ENTITIES = `<!ENTITY Aacute "&#193;">
335
+ <!ENTITY aacute "&#225;">
336
+ <!ENTITY Acirc "&#194;">
337
+ <!ENTITY acirc "&#226;">
338
+ <!ENTITY acute "&#180;">
339
+ <!ENTITY AElig "&#198;">
340
+ <!ENTITY aelig "&#230;">
341
+ <!ENTITY Agrave "&#192;">
342
+ <!ENTITY agrave "&#224;">
343
+ <!ENTITY alefsym "&#8501;">
344
+ <!ENTITY Alpha "&#913;">
345
+ <!ENTITY alpha "&#945;">
346
+ <!ENTITY amp "&#38;">
347
+ <!ENTITY and "&#8869;">
348
+ <!ENTITY ang "&#8736;">
349
+ <!ENTITY Aring "&#197;">
350
+ <!ENTITY aring "&#229;">
351
+ <!ENTITY asymp "&#8776;">
352
+ <!ENTITY Atilde "&#195;">
353
+ <!ENTITY atilde "&#227;">
354
+ <!ENTITY Auml "&#196;">
355
+ <!ENTITY auml "&#228;">
356
+ <!ENTITY bdquo "&#8222;">
357
+ <!ENTITY Beta "&#914;">
358
+ <!ENTITY beta "&#946;">
359
+ <!ENTITY brvbar "&#166;">
360
+ <!ENTITY bull "&#8226;">
361
+ <!ENTITY cap "&#8745;">
362
+ <!ENTITY Ccedil "&#199;">
363
+ <!ENTITY ccedil "&#231;">
364
+ <!ENTITY cedil "&#184;">
365
+ <!ENTITY cent "&#162;">
366
+ <!ENTITY Chi "&#935;">
367
+ <!ENTITY chi "&#967;">
368
+ <!ENTITY circ "&#710;">
369
+ <!ENTITY clubs "&#9827;">
370
+ <!ENTITY cong "&#8773;">
371
+ <!ENTITY copy "&#169;">
372
+ <!ENTITY crarr "&#8629;">
373
+ <!ENTITY cup "&#8746;">
374
+ <!ENTITY curren "&#164;">
375
+ <!ENTITY dagger "&#8224;">
376
+ <!ENTITY Dagger "&#8225;">
377
+ <!ENTITY darr "&#8595;">
378
+ <!ENTITY dArr "&#8659;">
379
+ <!ENTITY deg "&#176;">
380
+ <!ENTITY Delta "&#916;">
381
+ <!ENTITY delta "&#948;">
382
+ <!ENTITY diams "&#9830;">
383
+ <!ENTITY divide "&#247;">
384
+ <!ENTITY Eacute "&#201;">
385
+ <!ENTITY eacute "&#233;">
386
+ <!ENTITY Ecirc "&#202;">
387
+ <!ENTITY ecirc "&#234;">
388
+ <!ENTITY Egrave "&#200;">
389
+ <!ENTITY egrave "&#232;">
390
+ <!ENTITY empty "&#8709;">
391
+ <!ENTITY emsp "&#8195;">
392
+ <!ENTITY ensp "&#8194;">
393
+ <!ENTITY epsilon "&#949;">
394
+ <!ENTITY Epsilon "&#917;">
395
+ <!ENTITY equiv "&#8801;">
396
+ <!ENTITY Eta "&#919;">
397
+ <!ENTITY eta "&#951;">
398
+ <!ENTITY ETH "&#208;">
399
+ <!ENTITY eth "&#240;">
400
+ <!ENTITY Euml "&#203;">
401
+ <!ENTITY euml "&#235;">
402
+ <!ENTITY exist "&#8707;">
403
+ <!ENTITY fnof "&#402;">
404
+ <!ENTITY forall "&#8704;">
405
+ <!ENTITY frac12 "&#189;">
406
+ <!ENTITY frac14 "&#188;">
407
+ <!ENTITY frac34 "&#190;">
408
+ <!ENTITY frasl "&#8260;">
409
+ <!ENTITY Gamma "&#915;">
410
+ <!ENTITY gamma "&#947;">
411
+ <!ENTITY ge "&#8805;">
412
+ <!ENTITY gt "&#62;">
413
+ <!ENTITY harr "&#8596;">
414
+ <!ENTITY hArr "&#8660;">
415
+ <!ENTITY hearts "&#9829;">
416
+ <!ENTITY hellip "&#8230;">
417
+ <!ENTITY Iacute "&#205;">
418
+ <!ENTITY iacute "&#237;">
419
+ <!ENTITY Icirc "&#206;">
420
+ <!ENTITY icirc "&#238;">
421
+ <!ENTITY iexcl "&#161;">
422
+ <!ENTITY Igrave "&#204;">
423
+ <!ENTITY igrave "&#236;">
424
+ <!ENTITY image "&#8465;">
425
+ <!ENTITY infin "&#8734;">
426
+ <!ENTITY int "&#8747;">
427
+ <!ENTITY Iota "&#921;">
428
+ <!ENTITY iota "&#953;">
429
+ <!ENTITY iquest "&#191;">
430
+ <!ENTITY isin "&#8712;">
431
+ <!ENTITY Iuml "&#207;">
432
+ <!ENTITY iuml "&#239;">
433
+ <!ENTITY Kappa "&#922;">
434
+ <!ENTITY kappa "&#954;">
435
+ <!ENTITY Lambda "&#923;">
436
+ <!ENTITY lambda "&#955;">
437
+ <!ENTITY lang "&#9001;">
438
+ <!ENTITY laquo "&#171;">
439
+ <!ENTITY larr "&#8592;">
440
+ <!ENTITY lArr "&#8656;">
441
+ <!ENTITY lceil "&#8968;">
442
+ <!ENTITY ldquo "&#8220;">
443
+ <!ENTITY le "&#8804;">
444
+ <!ENTITY lfloor "&#8970;">
445
+ <!ENTITY lowast "&#8727;">
446
+ <!ENTITY loz "&#9674;">
447
+ <!ENTITY lrm "&#8206;">
448
+ <!ENTITY lsaquo "&#8249;">
449
+ <!ENTITY lsquo "&#8216;">
450
+ <!ENTITY lt "&#60;">
451
+ <!ENTITY macr "&#175;">
452
+ <!ENTITY mdash "&#8212;">
453
+ <!ENTITY micro "&#181;">
454
+ <!ENTITY middot "&#183;">
455
+ <!ENTITY minus "&#8722;">
456
+ <!ENTITY Mu "&#924;">
457
+ <!ENTITY mu "&#956;">
458
+ <!ENTITY nabla "&#8711;">
459
+ <!ENTITY nbsp "&#160;">
460
+ <!ENTITY ndash "&#8211;">
461
+ <!ENTITY ne "&#8800;">
462
+ <!ENTITY ni "&#8715;">
463
+ <!ENTITY not "&#172;">
464
+ <!ENTITY notin "&#8713;">
465
+ <!ENTITY nsub "&#8836;">
466
+ <!ENTITY Ntilde "&#209;">
467
+ <!ENTITY ntilde "&#241;">
468
+ <!ENTITY Nu "&#925;">
469
+ <!ENTITY nu "&#957;">
470
+ <!ENTITY Oacute "&#211;">
471
+ <!ENTITY oacute "&#243;">
472
+ <!ENTITY Ocirc "&#212;">
473
+ <!ENTITY ocirc "&#244;">
474
+ <!ENTITY OElig "&#338;">
475
+ <!ENTITY oelig "&#339;">
476
+ <!ENTITY Ograve "&#210;">
477
+ <!ENTITY ograve "&#242;">
478
+ <!ENTITY oline "&#8254;">
479
+ <!ENTITY Omega "&#937;">
480
+ <!ENTITY omega "&#969;">
481
+ <!ENTITY Omicron "&#927;">
482
+ <!ENTITY omicron "&#959;">
483
+ <!ENTITY oplus "&#8853;">
484
+ <!ENTITY or "&#8870;">
485
+ <!ENTITY ordf "&#170;">
486
+ <!ENTITY ordm "&#186;">
487
+ <!ENTITY Oslash "&#216;">
488
+ <!ENTITY oslash "&#248;">
489
+ <!ENTITY Otilde "&#213;">
490
+ <!ENTITY otilde "&#245;">
491
+ <!ENTITY otimes "&#8855;">
492
+ <!ENTITY Ouml "&#214;">
493
+ <!ENTITY ouml "&#246;">
494
+ <!ENTITY para "&#182;">
495
+ <!ENTITY part "&#8706;">
496
+ <!ENTITY permil "&#8240;">
497
+ <!ENTITY perp "&#8869;">
498
+ <!ENTITY Phi "&#934;">
499
+ <!ENTITY phi "&#966;">
500
+ <!ENTITY Pi "&#928;">
501
+ <!ENTITY pi "&#960;">
502
+ <!ENTITY piv "&#982;">
503
+ <!ENTITY plusmn "&#177;">
504
+ <!ENTITY pound "&#163;">
505
+ <!ENTITY prime "&#8242;">
506
+ <!ENTITY Prime "&#8243;">
507
+ <!ENTITY prod "&#8719;">
508
+ <!ENTITY prop "&#8733;">
509
+ <!ENTITY Psi "&#936;">
510
+ <!ENTITY psi "&#968;">
511
+ <!ENTITY quot "&#34;">
512
+ <!ENTITY radic "&#8730;">
513
+ <!ENTITY rang "&#9002;">
514
+ <!ENTITY raquo "&#187;">
515
+ <!ENTITY rarr "&#8594;">
516
+ <!ENTITY rArr "&#8658;">
517
+ <!ENTITY rceil "&#8969;">
518
+ <!ENTITY rdquo "&#8221;">
519
+ <!ENTITY real "&#8476;">
520
+ <!ENTITY reg "&#174;">
521
+ <!ENTITY rfloor "&#8971;">
522
+ <!ENTITY Rho "&#929;">
523
+ <!ENTITY rho "&#961;">
524
+ <!ENTITY rlm "&#8207;">
525
+ <!ENTITY rsaquo "&#8250;">
526
+ <!ENTITY rsquo "&#8217;">
527
+ <!ENTITY sbquo "&#8218;">
528
+ <!ENTITY Scaron "&#352;">
529
+ <!ENTITY scaron "&#353;">
530
+ <!ENTITY sdot "&#8901;">
531
+ <!ENTITY sect "&#167;">
532
+ <!ENTITY shy "&#173;">
533
+ <!ENTITY Sigma "&#931;">
534
+ <!ENTITY sigma "&#963;">
535
+ <!ENTITY sigmaf "&#962;">
536
+ <!ENTITY sim "&#8764;">
537
+ <!ENTITY spades "&#9824;">
538
+ <!ENTITY sub "&#8834;">
539
+ <!ENTITY sube "&#8838;">
540
+ <!ENTITY sum "&#8721;">
541
+ <!ENTITY sup "&#8835;">
542
+ <!ENTITY sup1 "&#185;">
543
+ <!ENTITY sup2 "&#178;">
544
+ <!ENTITY sup3 "&#179;">
545
+ <!ENTITY supe "&#8839;">
546
+ <!ENTITY szlig "&#223;">
547
+ <!ENTITY Tau "&#932;">
548
+ <!ENTITY tau "&#964;">
549
+ <!ENTITY there4 "&#8756;">
550
+ <!ENTITY Theta "&#920;">
551
+ <!ENTITY theta "&#952;">
552
+ <!ENTITY thetasym "&#977;">
553
+ <!ENTITY thinsp "&#8201;">
554
+ <!ENTITY THORN "&#222;">
555
+ <!ENTITY thorn "&#254;">
556
+ <!ENTITY tilde "&#732;">
557
+ <!ENTITY times "&#215;">
558
+ <!ENTITY trade "&#8482;">
559
+ <!ENTITY Uacute "&#218;">
560
+ <!ENTITY uacute "&#250;">
561
+ <!ENTITY uarr "&#8593;">
562
+ <!ENTITY uArr "&#8657;">
563
+ <!ENTITY Ucirc "&#219;">
564
+ <!ENTITY ucirc "&#251;">
565
+ <!ENTITY Ugrave "&#217;">
566
+ <!ENTITY ugrave "&#249;">
567
+ <!ENTITY uml "&#168;">
568
+ <!ENTITY upsih "&#978;">
569
+ <!ENTITY Upsilon "&#933;">
570
+ <!ENTITY upsilon "&#965;">
571
+ <!ENTITY Uuml "&#220;">
572
+ <!ENTITY uuml "&#252;">
573
+ <!ENTITY weierp "&#8472;">
574
+ <!ENTITY Xi "&#926;">
575
+ <!ENTITY xi "&#958;">
576
+ <!ENTITY Yacute "&#221;">
577
+ <!ENTITY yacute "&#253;">
578
+ <!ENTITY yen "&#165;">
579
+ <!ENTITY Yuml "&#376;">
580
+ <!ENTITY yuml "&#255;">
581
+ <!ENTITY Zeta "&#918;">
582
+ <!ENTITY zeta "&#950;">
583
+ <!ENTITY zwj "&#8205;">
584
+ <!ENTITY zwnj "&#8204;">`.replace(/\n/g, ' ');
585
+ /**
586
+ * A reasonably strict xml declaration.
587
+ */
588
+ const XML_DECL = '<?xml version="1.0" standalone="no"?>';
589
+ /**
590
+ * The beginning of the XML doctype declaration.
591
+ */
592
+ const DOCTYPE_START = `<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [`;
593
+ /**
594
+ * The end of the XML docype declaration.
595
+ */
596
+ const DOCTYPE_END = ']>';
597
+ /**
598
+ * A full header for an SVG XML document.
599
+ */
600
+ Private.SVG_XML_HEADER = `${XML_DECL}
601
+ ${DOCTYPE_START}${Private.HTML_ENTITIES}${DOCTYPE_END}`;
287
602
  })(Private || (Private = {}));
288
603
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
package/lib/tokens.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { Token } from '@lumino/coreutils';
2
2
  import type MermaidType from 'mermaid';
3
+ import type { MermaidConfig } from 'mermaid/dist/config.type';
3
4
  export declare const MERMAID_MIME_TYPE = "text/vnd.mermaid";
4
5
  export declare const MERMAID_FILE_EXTENSIONS: string[];
5
- export declare const MERMAID_DEFAULT_THEME = "default";
6
- export declare const MERMAID_DARK_THEME = "dark";
6
+ export declare const RE_DEFAULT_RENDERER: RegExp;
7
+ export declare const MERMAID_DEFAULT_THEME: MermaidConfig['theme'];
8
+ export declare const MERMAID_DARK_THEME: MermaidConfig['theme'];
7
9
  export declare const MERMAID_CLASS = "jp-RenderedMermaid";
8
10
  export declare const MERMAID_CODE_CLASS = "mermaid";
9
11
  export declare const WARNING_CLASS = "jp-mod-warning";
package/lib/tokens.js CHANGED
@@ -4,6 +4,8 @@ import { Token } from '@lumino/coreutils';
4
4
  // documented upstream constants
5
5
  export const MERMAID_MIME_TYPE = 'text/vnd.mermaid';
6
6
  export const MERMAID_FILE_EXTENSIONS = ['.mmd', '.mermaid'];
7
+ // layout sniffing
8
+ export const RE_DEFAULT_RENDERER = /\bdefaultRenderer["']?\s*:\s*(["']?)(\b[^"'\s]+\b)(\1)/gm;
7
9
  // mermaid themes
8
10
  export const MERMAID_DEFAULT_THEME = 'default';
9
11
  export const MERMAID_DARK_THEME = 'dark';
package/lib/tokens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,gCAAgC;AAChC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE5D,iBAAiB;AACjB,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,MAAM;AACN,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CACtC,qCAAqC,EACrC,qDAAqD,CACtD,CAAC;AAqDF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,sCAAsC,EACtC,oFAAoF,CACrF,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,gCAAgC;AAChC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE5D,kBAAkB;AAClB,MAAM,CAAC,MAAM,mBAAmB,GAC9B,0DAA0D,CAAC;AAE7D,iBAAiB;AACjB,MAAM,CAAC,MAAM,qBAAqB,GAA2B,SAAS,CAAC;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAA2B,MAAM,CAAC;AAEjE,MAAM;AACN,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CACtC,qCAAqC,EACrC,qDAAqD,CACtD,CAAC;AAqDF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,sCAAsC,EACtC,oFAAoF,CACrF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/mermaid",
3
- "version": "4.4.0-alpha.0",
3
+ "version": "4.4.0-alpha.2",
4
4
  "description": "JupyterLab - Mermaid Renderer",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -41,12 +41,13 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
- "@jupyterlab/apputils": "^4.5.0-alpha.0",
45
- "@jupyterlab/coreutils": "^6.4.0-alpha.0",
46
- "@jupyterlab/rendermime-interfaces": "^3.12.0-alpha.0",
44
+ "@jupyterlab/apputils": "^4.5.0-alpha.2",
45
+ "@jupyterlab/coreutils": "^6.4.0-alpha.2",
46
+ "@jupyterlab/rendermime-interfaces": "^3.12.0-alpha.2",
47
47
  "@lumino/coreutils": "^2.2.0",
48
48
  "@lumino/widgets": "^2.5.0",
49
- "mermaid": "^10.7.0"
49
+ "@mermaid-js/layout-elk": "^0.1.7",
50
+ "mermaid": "^11.4.1"
50
51
  },
51
52
  "devDependencies": {
52
53
  "@types/jest": "^29.2.0",
package/src/manager.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
 
4
4
  import type MermaidType from 'mermaid';
5
+ import type MermaidElkType from '@mermaid-js/layout-elk';
5
6
 
6
7
  import { PromiseDelegate } from '@lumino/coreutils';
7
8
 
@@ -16,6 +17,7 @@ import {
16
17
  MERMAID_CODE_CLASS,
17
18
  MERMAID_DARK_THEME,
18
19
  MERMAID_DEFAULT_THEME,
20
+ RE_DEFAULT_RENDERER,
19
21
  SUMMARY_CLASS,
20
22
  WARNING_CLASS
21
23
  } from './tokens';
@@ -41,7 +43,8 @@ export class MermaidManager implements IMermaidManager {
41
43
  * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
42
44
  */
43
45
  static cleanMermaidSvg(svg: string): string {
44
- return svg.replace(Private.RE_VOID_ELEMENT, Private.replaceVoidElement);
46
+ svg = svg.replace(Private.RE_VOID_ELEMENT, Private.replaceVoidElement);
47
+ return `${Private.SVG_XML_HEADER}${svg}`;
45
48
  }
46
49
 
47
50
  /**
@@ -81,6 +84,7 @@ export class MermaidManager implements IMermaidManager {
81
84
  */
82
85
  async renderSvg(text: string): Promise<IMermaidManager.IRenderInfo> {
83
86
  const _mermaid = await this.getMermaid();
87
+ await Private.ensureRenderers(text);
84
88
 
85
89
  const id = `jp-mermaid-${Private.nextMermaidId()}`;
86
90
 
@@ -250,7 +254,9 @@ export namespace MermaidManager {
250
254
  namespace Private {
251
255
  let _themes: IThemeManager | null = null;
252
256
  let _mermaid: typeof MermaidType | null = null;
257
+ let _mermaidElk: typeof MermaidElkType | null = null;
253
258
  let _loading: PromiseDelegate<typeof MermaidType> | null = null;
259
+ let _loadingElk: PromiseDelegate<typeof MermaidElkType> | null = null;
254
260
  let _nextMermaidId = 0;
255
261
  let _version: string | null = null;
256
262
 
@@ -271,8 +277,12 @@ namespace Private {
271
277
  /**
272
278
  * (Re-)initialize mermaid with lab-specific theme information
273
279
  */
274
- export function initMermaid(): boolean {
275
- if (!_mermaid) {
280
+ export function initMermaid(
281
+ mermaid: typeof MermaidType | null = null
282
+ ): boolean {
283
+ mermaid = _mermaid;
284
+
285
+ if (!mermaid) {
276
286
  return false;
277
287
  }
278
288
 
@@ -290,8 +300,7 @@ namespace Private {
290
300
  .getComputedStyle(document.body)
291
301
  .getPropertyValue('--jp-ui-font-family');
292
302
 
293
- _mermaid.mermaidAPI.globalReset();
294
- _mermaid.mermaidAPI.initialize({
303
+ mermaid.initialize({
295
304
  theme,
296
305
  fontFamily,
297
306
  securityLevel: 'strict',
@@ -328,12 +337,55 @@ namespace Private {
328
337
  }
329
338
  _loading = new PromiseDelegate();
330
339
  _version = (await import('mermaid/package.json')).version;
331
- _mermaid = (await import('mermaid')).default;
332
- initMermaid();
340
+ const tmpMermaid = (_mermaid = (await import('mermaid')).default);
341
+ initMermaid(tmpMermaid);
342
+ _mermaid = tmpMermaid;
333
343
  _loading.resolve(_mermaid);
334
344
  return _mermaid;
335
345
  }
336
346
 
347
+ /** Detect and load any renderers configured via `%init` or YAML front matter.
348
+ *
349
+ * The current upstream behavior appears to be last-in wins, but check all.
350
+ */
351
+ export async function ensureRenderers(text: string): Promise<void> {
352
+ let promises: Promise<any>[] = [];
353
+
354
+ for (const match of [...text.matchAll(RE_DEFAULT_RENDERER)]) {
355
+ switch ((match && match[2]) || null) {
356
+ case 'elk':
357
+ promises.push(Private.ensureMermaidElk());
358
+ break;
359
+ }
360
+ }
361
+
362
+ if (promises.length) {
363
+ await Promise.all(promises);
364
+ }
365
+ }
366
+
367
+ /**
368
+ * Ensure mermaid-elk has been lazily loaded once, initialized, and cached.
369
+ */
370
+ export async function ensureMermaidElk(): Promise<typeof MermaidElkType> {
371
+ if (_mermaidElk != null) {
372
+ return _mermaidElk;
373
+ }
374
+ if (_loadingElk) {
375
+ return _loadingElk.promise;
376
+ }
377
+
378
+ _loadingElk = new PromiseDelegate();
379
+
380
+ const _mermaid = await ensureMermaid();
381
+
382
+ const tmpElk = (await import('@mermaid-js/layout-elk')).default;
383
+ _mermaid.registerLayoutLoaders(tmpElk);
384
+ _mermaidElk = tmpElk;
385
+ _loadingElk.resolve(_mermaidElk);
386
+ return _mermaidElk;
387
+ }
388
+
337
389
  /**
338
390
  * A regular expression for all void elements, which may include attributes and
339
391
  * a slash.
@@ -356,4 +408,282 @@ namespace Private {
356
408
  }
357
409
  return `<${tag} ${rest}>`;
358
410
  }
411
+
412
+ /**
413
+ * Named HTML entities with their decimal equivalent codes.
414
+ *
415
+ * @see https://www.w3.org/TR/WD-html40-970708/sgml/entities.html
416
+ * */
417
+ export const HTML_ENTITIES = `<!ENTITY Aacute "&#193;">
418
+ <!ENTITY aacute "&#225;">
419
+ <!ENTITY Acirc "&#194;">
420
+ <!ENTITY acirc "&#226;">
421
+ <!ENTITY acute "&#180;">
422
+ <!ENTITY AElig "&#198;">
423
+ <!ENTITY aelig "&#230;">
424
+ <!ENTITY Agrave "&#192;">
425
+ <!ENTITY agrave "&#224;">
426
+ <!ENTITY alefsym "&#8501;">
427
+ <!ENTITY Alpha "&#913;">
428
+ <!ENTITY alpha "&#945;">
429
+ <!ENTITY amp "&#38;">
430
+ <!ENTITY and "&#8869;">
431
+ <!ENTITY ang "&#8736;">
432
+ <!ENTITY Aring "&#197;">
433
+ <!ENTITY aring "&#229;">
434
+ <!ENTITY asymp "&#8776;">
435
+ <!ENTITY Atilde "&#195;">
436
+ <!ENTITY atilde "&#227;">
437
+ <!ENTITY Auml "&#196;">
438
+ <!ENTITY auml "&#228;">
439
+ <!ENTITY bdquo "&#8222;">
440
+ <!ENTITY Beta "&#914;">
441
+ <!ENTITY beta "&#946;">
442
+ <!ENTITY brvbar "&#166;">
443
+ <!ENTITY bull "&#8226;">
444
+ <!ENTITY cap "&#8745;">
445
+ <!ENTITY Ccedil "&#199;">
446
+ <!ENTITY ccedil "&#231;">
447
+ <!ENTITY cedil "&#184;">
448
+ <!ENTITY cent "&#162;">
449
+ <!ENTITY Chi "&#935;">
450
+ <!ENTITY chi "&#967;">
451
+ <!ENTITY circ "&#710;">
452
+ <!ENTITY clubs "&#9827;">
453
+ <!ENTITY cong "&#8773;">
454
+ <!ENTITY copy "&#169;">
455
+ <!ENTITY crarr "&#8629;">
456
+ <!ENTITY cup "&#8746;">
457
+ <!ENTITY curren "&#164;">
458
+ <!ENTITY dagger "&#8224;">
459
+ <!ENTITY Dagger "&#8225;">
460
+ <!ENTITY darr "&#8595;">
461
+ <!ENTITY dArr "&#8659;">
462
+ <!ENTITY deg "&#176;">
463
+ <!ENTITY Delta "&#916;">
464
+ <!ENTITY delta "&#948;">
465
+ <!ENTITY diams "&#9830;">
466
+ <!ENTITY divide "&#247;">
467
+ <!ENTITY Eacute "&#201;">
468
+ <!ENTITY eacute "&#233;">
469
+ <!ENTITY Ecirc "&#202;">
470
+ <!ENTITY ecirc "&#234;">
471
+ <!ENTITY Egrave "&#200;">
472
+ <!ENTITY egrave "&#232;">
473
+ <!ENTITY empty "&#8709;">
474
+ <!ENTITY emsp "&#8195;">
475
+ <!ENTITY ensp "&#8194;">
476
+ <!ENTITY epsilon "&#949;">
477
+ <!ENTITY Epsilon "&#917;">
478
+ <!ENTITY equiv "&#8801;">
479
+ <!ENTITY Eta "&#919;">
480
+ <!ENTITY eta "&#951;">
481
+ <!ENTITY ETH "&#208;">
482
+ <!ENTITY eth "&#240;">
483
+ <!ENTITY Euml "&#203;">
484
+ <!ENTITY euml "&#235;">
485
+ <!ENTITY exist "&#8707;">
486
+ <!ENTITY fnof "&#402;">
487
+ <!ENTITY forall "&#8704;">
488
+ <!ENTITY frac12 "&#189;">
489
+ <!ENTITY frac14 "&#188;">
490
+ <!ENTITY frac34 "&#190;">
491
+ <!ENTITY frasl "&#8260;">
492
+ <!ENTITY Gamma "&#915;">
493
+ <!ENTITY gamma "&#947;">
494
+ <!ENTITY ge "&#8805;">
495
+ <!ENTITY gt "&#62;">
496
+ <!ENTITY harr "&#8596;">
497
+ <!ENTITY hArr "&#8660;">
498
+ <!ENTITY hearts "&#9829;">
499
+ <!ENTITY hellip "&#8230;">
500
+ <!ENTITY Iacute "&#205;">
501
+ <!ENTITY iacute "&#237;">
502
+ <!ENTITY Icirc "&#206;">
503
+ <!ENTITY icirc "&#238;">
504
+ <!ENTITY iexcl "&#161;">
505
+ <!ENTITY Igrave "&#204;">
506
+ <!ENTITY igrave "&#236;">
507
+ <!ENTITY image "&#8465;">
508
+ <!ENTITY infin "&#8734;">
509
+ <!ENTITY int "&#8747;">
510
+ <!ENTITY Iota "&#921;">
511
+ <!ENTITY iota "&#953;">
512
+ <!ENTITY iquest "&#191;">
513
+ <!ENTITY isin "&#8712;">
514
+ <!ENTITY Iuml "&#207;">
515
+ <!ENTITY iuml "&#239;">
516
+ <!ENTITY Kappa "&#922;">
517
+ <!ENTITY kappa "&#954;">
518
+ <!ENTITY Lambda "&#923;">
519
+ <!ENTITY lambda "&#955;">
520
+ <!ENTITY lang "&#9001;">
521
+ <!ENTITY laquo "&#171;">
522
+ <!ENTITY larr "&#8592;">
523
+ <!ENTITY lArr "&#8656;">
524
+ <!ENTITY lceil "&#8968;">
525
+ <!ENTITY ldquo "&#8220;">
526
+ <!ENTITY le "&#8804;">
527
+ <!ENTITY lfloor "&#8970;">
528
+ <!ENTITY lowast "&#8727;">
529
+ <!ENTITY loz "&#9674;">
530
+ <!ENTITY lrm "&#8206;">
531
+ <!ENTITY lsaquo "&#8249;">
532
+ <!ENTITY lsquo "&#8216;">
533
+ <!ENTITY lt "&#60;">
534
+ <!ENTITY macr "&#175;">
535
+ <!ENTITY mdash "&#8212;">
536
+ <!ENTITY micro "&#181;">
537
+ <!ENTITY middot "&#183;">
538
+ <!ENTITY minus "&#8722;">
539
+ <!ENTITY Mu "&#924;">
540
+ <!ENTITY mu "&#956;">
541
+ <!ENTITY nabla "&#8711;">
542
+ <!ENTITY nbsp "&#160;">
543
+ <!ENTITY ndash "&#8211;">
544
+ <!ENTITY ne "&#8800;">
545
+ <!ENTITY ni "&#8715;">
546
+ <!ENTITY not "&#172;">
547
+ <!ENTITY notin "&#8713;">
548
+ <!ENTITY nsub "&#8836;">
549
+ <!ENTITY Ntilde "&#209;">
550
+ <!ENTITY ntilde "&#241;">
551
+ <!ENTITY Nu "&#925;">
552
+ <!ENTITY nu "&#957;">
553
+ <!ENTITY Oacute "&#211;">
554
+ <!ENTITY oacute "&#243;">
555
+ <!ENTITY Ocirc "&#212;">
556
+ <!ENTITY ocirc "&#244;">
557
+ <!ENTITY OElig "&#338;">
558
+ <!ENTITY oelig "&#339;">
559
+ <!ENTITY Ograve "&#210;">
560
+ <!ENTITY ograve "&#242;">
561
+ <!ENTITY oline "&#8254;">
562
+ <!ENTITY Omega "&#937;">
563
+ <!ENTITY omega "&#969;">
564
+ <!ENTITY Omicron "&#927;">
565
+ <!ENTITY omicron "&#959;">
566
+ <!ENTITY oplus "&#8853;">
567
+ <!ENTITY or "&#8870;">
568
+ <!ENTITY ordf "&#170;">
569
+ <!ENTITY ordm "&#186;">
570
+ <!ENTITY Oslash "&#216;">
571
+ <!ENTITY oslash "&#248;">
572
+ <!ENTITY Otilde "&#213;">
573
+ <!ENTITY otilde "&#245;">
574
+ <!ENTITY otimes "&#8855;">
575
+ <!ENTITY Ouml "&#214;">
576
+ <!ENTITY ouml "&#246;">
577
+ <!ENTITY para "&#182;">
578
+ <!ENTITY part "&#8706;">
579
+ <!ENTITY permil "&#8240;">
580
+ <!ENTITY perp "&#8869;">
581
+ <!ENTITY Phi "&#934;">
582
+ <!ENTITY phi "&#966;">
583
+ <!ENTITY Pi "&#928;">
584
+ <!ENTITY pi "&#960;">
585
+ <!ENTITY piv "&#982;">
586
+ <!ENTITY plusmn "&#177;">
587
+ <!ENTITY pound "&#163;">
588
+ <!ENTITY prime "&#8242;">
589
+ <!ENTITY Prime "&#8243;">
590
+ <!ENTITY prod "&#8719;">
591
+ <!ENTITY prop "&#8733;">
592
+ <!ENTITY Psi "&#936;">
593
+ <!ENTITY psi "&#968;">
594
+ <!ENTITY quot "&#34;">
595
+ <!ENTITY radic "&#8730;">
596
+ <!ENTITY rang "&#9002;">
597
+ <!ENTITY raquo "&#187;">
598
+ <!ENTITY rarr "&#8594;">
599
+ <!ENTITY rArr "&#8658;">
600
+ <!ENTITY rceil "&#8969;">
601
+ <!ENTITY rdquo "&#8221;">
602
+ <!ENTITY real "&#8476;">
603
+ <!ENTITY reg "&#174;">
604
+ <!ENTITY rfloor "&#8971;">
605
+ <!ENTITY Rho "&#929;">
606
+ <!ENTITY rho "&#961;">
607
+ <!ENTITY rlm "&#8207;">
608
+ <!ENTITY rsaquo "&#8250;">
609
+ <!ENTITY rsquo "&#8217;">
610
+ <!ENTITY sbquo "&#8218;">
611
+ <!ENTITY Scaron "&#352;">
612
+ <!ENTITY scaron "&#353;">
613
+ <!ENTITY sdot "&#8901;">
614
+ <!ENTITY sect "&#167;">
615
+ <!ENTITY shy "&#173;">
616
+ <!ENTITY Sigma "&#931;">
617
+ <!ENTITY sigma "&#963;">
618
+ <!ENTITY sigmaf "&#962;">
619
+ <!ENTITY sim "&#8764;">
620
+ <!ENTITY spades "&#9824;">
621
+ <!ENTITY sub "&#8834;">
622
+ <!ENTITY sube "&#8838;">
623
+ <!ENTITY sum "&#8721;">
624
+ <!ENTITY sup "&#8835;">
625
+ <!ENTITY sup1 "&#185;">
626
+ <!ENTITY sup2 "&#178;">
627
+ <!ENTITY sup3 "&#179;">
628
+ <!ENTITY supe "&#8839;">
629
+ <!ENTITY szlig "&#223;">
630
+ <!ENTITY Tau "&#932;">
631
+ <!ENTITY tau "&#964;">
632
+ <!ENTITY there4 "&#8756;">
633
+ <!ENTITY Theta "&#920;">
634
+ <!ENTITY theta "&#952;">
635
+ <!ENTITY thetasym "&#977;">
636
+ <!ENTITY thinsp "&#8201;">
637
+ <!ENTITY THORN "&#222;">
638
+ <!ENTITY thorn "&#254;">
639
+ <!ENTITY tilde "&#732;">
640
+ <!ENTITY times "&#215;">
641
+ <!ENTITY trade "&#8482;">
642
+ <!ENTITY Uacute "&#218;">
643
+ <!ENTITY uacute "&#250;">
644
+ <!ENTITY uarr "&#8593;">
645
+ <!ENTITY uArr "&#8657;">
646
+ <!ENTITY Ucirc "&#219;">
647
+ <!ENTITY ucirc "&#251;">
648
+ <!ENTITY Ugrave "&#217;">
649
+ <!ENTITY ugrave "&#249;">
650
+ <!ENTITY uml "&#168;">
651
+ <!ENTITY upsih "&#978;">
652
+ <!ENTITY Upsilon "&#933;">
653
+ <!ENTITY upsilon "&#965;">
654
+ <!ENTITY Uuml "&#220;">
655
+ <!ENTITY uuml "&#252;">
656
+ <!ENTITY weierp "&#8472;">
657
+ <!ENTITY Xi "&#926;">
658
+ <!ENTITY xi "&#958;">
659
+ <!ENTITY Yacute "&#221;">
660
+ <!ENTITY yacute "&#253;">
661
+ <!ENTITY yen "&#165;">
662
+ <!ENTITY Yuml "&#376;">
663
+ <!ENTITY yuml "&#255;">
664
+ <!ENTITY Zeta "&#918;">
665
+ <!ENTITY zeta "&#950;">
666
+ <!ENTITY zwj "&#8205;">
667
+ <!ENTITY zwnj "&#8204;">`.replace(/\n/g, ' ');
668
+
669
+ /**
670
+ * A reasonably strict xml declaration.
671
+ */
672
+ const XML_DECL = '<?xml version="1.0" standalone="no"?>';
673
+
674
+ /**
675
+ * The beginning of the XML doctype declaration.
676
+ */
677
+ const DOCTYPE_START = `<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [`;
678
+
679
+ /**
680
+ * The end of the XML docype declaration.
681
+ */
682
+ const DOCTYPE_END = ']>';
683
+
684
+ /**
685
+ * A full header for an SVG XML document.
686
+ */
687
+ export const SVG_XML_HEADER = `${XML_DECL}
688
+ ${DOCTYPE_START}${HTML_ENTITIES}${DOCTYPE_END}`;
359
689
  }
package/src/tokens.ts CHANGED
@@ -3,14 +3,19 @@
3
3
 
4
4
  import { Token } from '@lumino/coreutils';
5
5
  import type MermaidType from 'mermaid';
6
+ import type { MermaidConfig } from 'mermaid/dist/config.type';
6
7
 
7
8
  // documented upstream constants
8
9
  export const MERMAID_MIME_TYPE = 'text/vnd.mermaid';
9
10
  export const MERMAID_FILE_EXTENSIONS = ['.mmd', '.mermaid'];
10
11
 
12
+ // layout sniffing
13
+ export const RE_DEFAULT_RENDERER =
14
+ /\bdefaultRenderer["']?\s*:\s*(["']?)(\b[^"'\s]+\b)(\1)/gm;
15
+
11
16
  // mermaid themes
12
- export const MERMAID_DEFAULT_THEME = 'default';
13
- export const MERMAID_DARK_THEME = 'dark';
17
+ export const MERMAID_DEFAULT_THEME: MermaidConfig['theme'] = 'default';
18
+ export const MERMAID_DARK_THEME: MermaidConfig['theme'] = 'dark';
14
19
 
15
20
  // DOM
16
21
  export const MERMAID_CLASS = 'jp-RenderedMermaid';