@diplodoc/mermaid-extension 1.3.6 → 1.4.1

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.
@@ -80,7 +80,7 @@ var registerTransforms = (md, {
80
80
  };
81
81
  try {
82
82
  md.core.ruler.after("fence", "mermaid", applyTransforms);
83
- } catch (e) {
83
+ } catch {
84
84
  md.core.ruler.push("mermaid", applyTransforms);
85
85
  }
86
86
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/plugin/index-node.ts", "../../src/plugin/transform-node.ts", "../../src/plugin/transform.ts"],
4
- "sourcesContent": ["export {transform} from './transform-node';\n", "import {copyFileSync, mkdirSync} from 'node:fs';\nimport {dirname, join} from 'node:path';\n\nimport {transform as baseTransform} from './transform';\nimport {PluginOptions} from './types';\n\nfunction copy(from: string, to: string) {\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n\nconst onBundle = (env: {bundled: Set<string>}, output: string, runtime: string) => {\n const file = join(PACKAGE, 'runtime');\n if (!env.bundled.has(file)) {\n env.bundled.add(file);\n\n copy(require.resolve(file), join(output, runtime));\n }\n};\n\nexport const transform = (options: Partial<Omit<PluginOptions, 'onBundle'>>) => {\n return baseTransform({...options, onBundle});\n};\n", "import type {\n MarkdownItPluginCb,\n MarkdownItPluginOpts,\n} from '@diplodoc/transform/lib/plugins/typings';\nimport type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\n\nimport MarkdownIt from 'markdown-it';\n\nimport {PluginOptions} from './types';\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V,\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & {[P in F]: V};\n}\n\nconst registerTransforms = (\n md: MarkdownIt,\n {\n classes,\n runtime,\n onBundle,\n bundle,\n output,\n updateTokens,\n }: PluginOptions & {\n output: string;\n updateTokens: boolean;\n },\n) => {\n const applyTransforms: ParserCore.RuleCore = ({tokens, env}) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${classes}`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle && onBundle) {\n onBundle(env, output, runtime);\n }\n }\n };\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch (e) {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n};\n\ntype InputOptions = MarkdownItPluginOpts & {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const {\n runtime = '_assets/mermaid-extension.js',\n classes = 'yfm-mermaid',\n bundle = true,\n onBundle,\n } = options;\n\n const plugin: MarkdownItPluginCb<{output: string}> = function (md: MarkdownIt, {output = '.'}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n onBundle,\n output,\n updateTokens: true,\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trimStart());\n\n return `<div class=\"mermaid\" data-content=\"${code}\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, {destRoot}: InputOptions) {\n const md = new MarkdownIt().use((md: MarkdownIt) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false,\n });\n });\n\n md.parse(input, {});\n },\n });\n\n return plugin;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export {transform} from './transform-node';\n", "import type {PluginOptions} from './types';\n\nimport {copyFileSync, mkdirSync} from 'node:fs';\nimport {dirname, join} from 'node:path';\n\nimport {transform as baseTransform} from './transform';\n\nfunction copy(from: string, to: string) {\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n\nconst onBundle = (env: {bundled: Set<string>}, output: string, runtime: string) => {\n const file = join(PACKAGE, 'runtime');\n if (!env.bundled.has(file)) {\n env.bundled.add(file);\n\n copy(require.resolve(file), join(output, runtime));\n }\n};\n\nexport const transform = (options: Partial<Omit<PluginOptions, 'onBundle'>>) => {\n return baseTransform({...options, onBundle});\n};\n", "import type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\nimport type {PluginOptions} from './types';\n\nimport MarkdownIt from 'markdown-it';\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V,\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & Record<F, V>;\n}\n\nconst registerTransforms = (\n md: MarkdownIt,\n {\n classes,\n runtime,\n onBundle,\n bundle,\n output,\n updateTokens,\n }: PluginOptions & {\n output: string;\n updateTokens: boolean;\n },\n) => {\n const applyTransforms: ParserCore.RuleCore = ({tokens, env}) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${classes}`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle && onBundle) {\n onBundle(env, output, runtime);\n }\n }\n };\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n};\n\ntype InputOptions = {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const {\n runtime = '_assets/mermaid-extension.js',\n classes = 'yfm-mermaid',\n bundle = true,\n onBundle,\n } = options;\n\n const plugin = function (md: MarkdownIt, {output = '.'}: {output: string}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n onBundle,\n output,\n updateTokens: true,\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trimStart());\n\n return `<div class=\"mermaid\" data-content=\"${code}\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, {destRoot}: InputOptions) {\n const md = new MarkdownIt().use((md: MarkdownIt) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false,\n });\n });\n\n md.parse(input, {});\n },\n });\n\n return plugin;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["transform", "onBundle", "MarkdownIt", "md", "transform"]
7
7
  }
@@ -40,7 +40,7 @@ var registerTransforms = (md, {
40
40
  };
41
41
  try {
42
42
  md.core.ruler.after("fence", "mermaid", applyTransforms);
43
- } catch (e) {
43
+ } catch {
44
44
  md.core.ruler.push("mermaid", applyTransforms);
45
45
  }
46
46
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/plugin/transform.ts"],
4
- "sourcesContent": ["import type {\n MarkdownItPluginCb,\n MarkdownItPluginOpts,\n} from '@diplodoc/transform/lib/plugins/typings';\nimport type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\n\nimport MarkdownIt from 'markdown-it';\n\nimport {PluginOptions} from './types';\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V,\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & {[P in F]: V};\n}\n\nconst registerTransforms = (\n md: MarkdownIt,\n {\n classes,\n runtime,\n onBundle,\n bundle,\n output,\n updateTokens,\n }: PluginOptions & {\n output: string;\n updateTokens: boolean;\n },\n) => {\n const applyTransforms: ParserCore.RuleCore = ({tokens, env}) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${classes}`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle && onBundle) {\n onBundle(env, output, runtime);\n }\n }\n };\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch (e) {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n};\n\ntype InputOptions = MarkdownItPluginOpts & {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const {\n runtime = '_assets/mermaid-extension.js',\n classes = 'yfm-mermaid',\n bundle = true,\n onBundle,\n } = options;\n\n const plugin: MarkdownItPluginCb<{output: string}> = function (md: MarkdownIt, {output = '.'}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n onBundle,\n output,\n updateTokens: true,\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trimStart());\n\n return `<div class=\"mermaid\" data-content=\"${code}\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, {destRoot}: InputOptions) {\n const md = new MarkdownIt().use((md: MarkdownIt) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false,\n });\n });\n\n md.parse(input, {});\n },\n });\n\n return plugin;\n}\n"],
5
- "mappings": ";AAOA,OAAO,gBAAgB;AAIvB,SAAS,eAAe,OAAc;AAClC,SAAO,MAAM,SAAS,WAAW,MAAM,KAAK,MAAM,oBAAoB;AAC1E;AAEA,SAAS,OACL,KACA,OACA,OACF;AACE,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,IAAM,qBAAqB,CACvB,IACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAIC;AACD,QAAM,kBAAuC,CAAC,EAAC,QAAQ,IAAG,MAAM;AAC5D,WAAO,KAAK,WAAW,oBAAI,IAAY,CAAC;AAExC,UAAM,SAAS,OAAO,OAAO,cAAc;AAE3C,QAAI,gBAAgB,OAAO,QAAQ;AAC/B,aAAO,QAAQ,CAAC,UAAU;AACtB,cAAM,OAAO;AACb,cAAM,QAAQ,SAAS,WAAW,OAAO,EAAE;AAAA,MAC/C,CAAC;AAAA,IACL;AAEA,QAAI,OAAO,QAAQ;AACf,UAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,UAAI,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC;AACtC,UAAI,KAAK,OAAO,KAAK,OAAO;AAE5B,UAAI,UAAU,UAAU;AACpB,iBAAS,KAAK,QAAQ,OAAO;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACA,OAAG,KAAK,MAAM,MAAM,SAAS,WAAW,eAAe;AAAA,EAC3D,SAAS,GAAG;AACR,OAAG,KAAK,MAAM,KAAK,WAAW,eAAe;AAAA,EACjD;AACJ;AAMO,SAAS,UAAU,UAAkC,CAAC,GAAG;AAC5D,QAAM;AAAA,IACF,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT;AAAA,EACJ,IAAI;AAEJ,QAAM,SAA+C,SAAU,IAAgB,EAAC,SAAS,IAAG,GAAG;AAC3F,uBAAmB,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAClB,CAAC;AAED,OAAG,SAAS,MAAM,UAAU,CAAC,QAAQ,QAAQ;AACzC,YAAM,QAAQ,OAAO,GAAG;AACxB,YAAM,OAAO,mBAAmB,MAAM,QAAQ,UAAU,CAAC;AAEzD,aAAO,sCAAsC,IAAI;AAAA,IACrD;AAAA,EACJ;AAEA,SAAO,OAAO,QAAQ;AAAA,IAClB,QAAQ,OAAe,EAAC,SAAQ,GAAiB;AAC7C,YAAM,KAAK,IAAI,WAAW,EAAE,IAAI,CAACA,QAAmB;AAChD,2BAAmBA,KAAI;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,cAAc;AAAA,QAClB,CAAC;AAAA,MACL,CAAC;AAED,SAAG,MAAM,OAAO,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
4
+ "sourcesContent": ["import type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\nimport type {PluginOptions} from './types';\n\nimport MarkdownIt from 'markdown-it';\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V,\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & Record<F, V>;\n}\n\nconst registerTransforms = (\n md: MarkdownIt,\n {\n classes,\n runtime,\n onBundle,\n bundle,\n output,\n updateTokens,\n }: PluginOptions & {\n output: string;\n updateTokens: boolean;\n },\n) => {\n const applyTransforms: ParserCore.RuleCore = ({tokens, env}) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${classes}`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle && onBundle) {\n onBundle(env, output, runtime);\n }\n }\n };\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n};\n\ntype InputOptions = {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const {\n runtime = '_assets/mermaid-extension.js',\n classes = 'yfm-mermaid',\n bundle = true,\n onBundle,\n } = options;\n\n const plugin = function (md: MarkdownIt, {output = '.'}: {output: string}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n onBundle,\n output,\n updateTokens: true,\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trimStart());\n\n return `<div class=\"mermaid\" data-content=\"${code}\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, {destRoot}: InputOptions) {\n const md = new MarkdownIt().use((md: MarkdownIt) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false,\n });\n });\n\n md.parse(input, {});\n },\n });\n\n return plugin;\n}\n"],
5
+ "mappings": ";AAIA,OAAO,gBAAgB;AAEvB,SAAS,eAAe,OAAc;AAClC,SAAO,MAAM,SAAS,WAAW,MAAM,KAAK,MAAM,oBAAoB;AAC1E;AAEA,SAAS,OACL,KACA,OACA,OACF;AACE,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,IAAM,qBAAqB,CACvB,IACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAIC;AACD,QAAM,kBAAuC,CAAC,EAAC,QAAQ,IAAG,MAAM;AAC5D,WAAO,KAAK,WAAW,oBAAI,IAAY,CAAC;AAExC,UAAM,SAAS,OAAO,OAAO,cAAc;AAE3C,QAAI,gBAAgB,OAAO,QAAQ;AAC/B,aAAO,QAAQ,CAAC,UAAU;AACtB,cAAM,OAAO;AACb,cAAM,QAAQ,SAAS,WAAW,OAAO,EAAE;AAAA,MAC/C,CAAC;AAAA,IACL;AAEA,QAAI,OAAO,QAAQ;AACf,UAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,UAAI,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC;AACtC,UAAI,KAAK,OAAO,KAAK,OAAO;AAE5B,UAAI,UAAU,UAAU;AACpB,iBAAS,KAAK,QAAQ,OAAO;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACA,OAAG,KAAK,MAAM,MAAM,SAAS,WAAW,eAAe;AAAA,EAC3D,QAAQ;AACJ,OAAG,KAAK,MAAM,KAAK,WAAW,eAAe;AAAA,EACjD;AACJ;AAMO,SAAS,UAAU,UAAkC,CAAC,GAAG;AAC5D,QAAM;AAAA,IACF,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT;AAAA,EACJ,IAAI;AAEJ,QAAM,SAAS,SAAU,IAAgB,EAAC,SAAS,IAAG,GAAqB;AACvE,uBAAmB,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAClB,CAAC;AAED,OAAG,SAAS,MAAM,UAAU,CAAC,QAAQ,QAAQ;AACzC,YAAM,QAAQ,OAAO,GAAG;AACxB,YAAM,OAAO,mBAAmB,MAAM,QAAQ,UAAU,CAAC;AAEzD,aAAO,sCAAsC,IAAI;AAAA,IACrD;AAAA,EACJ;AAEA,SAAO,OAAO,QAAQ;AAAA,IAClB,QAAQ,OAAe,EAAC,SAAQ,GAAiB;AAC7C,YAAM,KAAK,IAAI,WAAW,EAAE,IAAI,CAACA,QAAmB;AAChD,2BAAmBA,KAAI;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,cAAc;AAAA,QAClB,CAAC;AAAA,MACL,CAAC;AAED,SAAG,MAAM,OAAO,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
6
6
  "names": ["md"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import { PluginOptions } from './types';
2
- export declare const transform: (options: Partial<Omit<PluginOptions, 'onBundle'>>) => import("@diplodoc/transform/lib/plugins/typings").MarkdownItPluginCb<{
1
+ import type { PluginOptions } from './types';
2
+ export declare const transform: (options: Partial<Omit<PluginOptions, "onBundle">>) => (md: import("markdown-it"), { output }: {
3
3
  output: string;
4
- }>;
4
+ }) => void;
@@ -1,5 +1,5 @@
1
- import type { MarkdownItPluginCb } from '@diplodoc/transform/lib/plugins/typings';
2
- import { PluginOptions } from './types';
3
- export declare function transform(options?: Partial<PluginOptions>): MarkdownItPluginCb<{
1
+ import type { PluginOptions } from './types';
2
+ import MarkdownIt from 'markdown-it';
3
+ export declare function transform(options?: Partial<PluginOptions>): (md: MarkdownIt, { output }: {
4
4
  output: string;
5
- }>;
5
+ }) => void;
@@ -21,8 +21,8 @@ function omit(object, props) {
21
21
  }
22
22
  function MermaidRuntime(props) {
23
23
  const renderMermaid = useMermaid();
24
- const config = omit(props, ["querySelector", "nodes", "onError"]);
25
- const options = pick(props, ["querySelector", "nodes"]);
24
+ const config = omit(props, ["querySelector", "nodes", "nonce", "onError"]);
25
+ const options = pick(props, ["querySelector", "nodes", "nonce"]);
26
26
  useEffect(() => {
27
27
  renderMermaid(config, options).catch(props.onError || (() => {
28
28
  }));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/react/index.ts"],
4
- "sourcesContent": ["import type {InitConfig, RunOptions} from '../types';\n\nimport {useCallback, useEffect, useState} from 'react';\n\nexport type RuntimeOptions = {\n onError?: (error: unknown) => void;\n};\n\nfunction pick<\n O extends Hash,\n P extends string,\n R extends {\n [K in P]: O[K];\n },\n>(object: O, props: readonly P[]): R {\n return Object.keys(object).reduce((acc, key) => {\n if ((props as readonly string[]).includes(key)) {\n acc[key] = object[key];\n }\n\n return acc;\n }, {} as Hash) as R;\n}\n\nfunction omit<\n O extends Hash,\n P extends string,\n R extends {\n [K in keyof Omit<O, P>]: O[K];\n },\n>(object: O, props: readonly P[]): R {\n return Object.keys(object).reduce(\n (acc, key) => {\n if (!(props as readonly string[]).includes(key)) {\n acc[key] = object[key];\n }\n\n return acc;\n },\n {} as Record<string, unknown>,\n ) as R;\n}\n\nexport function MermaidRuntime(props: InitConfig & RunOptions & RuntimeOptions) {\n const renderMermaid = useMermaid();\n const config = omit(props as Hash, ['querySelector', 'nodes', 'onError']);\n const options = pick(props as Hash, ['querySelector', 'nodes']);\n\n useEffect(() => {\n renderMermaid(config, options as Hash).catch(props.onError || (() => {}));\n });\n\n return null;\n}\n\nexport function useMermaid() {\n const [mermaid, setMermaid] = useState<Parameters<Callback>[0] | null>(null);\n const render = useCallback(\n async (config: InitConfig, options?: RunOptions) => {\n if (mermaid) {\n mermaid.initialize(config);\n return mermaid.run(options);\n }\n },\n [mermaid],\n );\n\n useEffect(() => {\n (window.mermaidJsonp = window.mermaidJsonp || []).push(setMermaid);\n\n return () => {\n const index = window.mermaidJsonp.indexOf(setMermaid);\n if (index > -1) {\n window.mermaidJsonp.splice(index, 1);\n }\n };\n }, []);\n\n return render;\n}\n"],
5
- "mappings": ";AAEA,SAAQ,aAAa,WAAW,gBAAe;AAM/C,SAAS,KAMP,QAAW,OAAwB;AACjC,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ;AAC5C,QAAK,MAA4B,SAAS,GAAG,GAAG;AAC5C,UAAI,GAAG,IAAI,OAAO,GAAG;AAAA,IACzB;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,CAAS;AACjB;AAEA,SAAS,KAMP,QAAW,OAAwB;AACjC,SAAO,OAAO,KAAK,MAAM,EAAE;AAAA,IACvB,CAAC,KAAK,QAAQ;AACV,UAAI,CAAE,MAA4B,SAAS,GAAG,GAAG;AAC7C,YAAI,GAAG,IAAI,OAAO,GAAG;AAAA,MACzB;AAEA,aAAO;AAAA,IACX;AAAA,IACA,CAAC;AAAA,EACL;AACJ;AAEO,SAAS,eAAe,OAAiD;AAC5E,QAAM,gBAAgB,WAAW;AACjC,QAAM,SAAS,KAAK,OAAe,CAAC,iBAAiB,SAAS,SAAS,CAAC;AACxE,QAAM,UAAU,KAAK,OAAe,CAAC,iBAAiB,OAAO,CAAC;AAE9D,YAAU,MAAM;AACZ,kBAAc,QAAQ,OAAe,EAAE,MAAM,MAAM,YAAY,MAAM;AAAA,IAAC,EAAE;AAAA,EAC5E,CAAC;AAED,SAAO;AACX;AAEO,SAAS,aAAa;AACzB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAyC,IAAI;AAC3E,QAAM,SAAS;AAAA,IACX,OAAO,QAAoB,YAAyB;AAChD,UAAI,SAAS;AACT,gBAAQ,WAAW,MAAM;AACzB,eAAO,QAAQ,IAAI,OAAO;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA,CAAC,OAAO;AAAA,EACZ;AAEA,YAAU,MAAM;AACZ,KAAC,OAAO,eAAe,OAAO,gBAAgB,CAAC,GAAG,KAAK,UAAU;AAEjE,WAAO,MAAM;AACT,YAAM,QAAQ,OAAO,aAAa,QAAQ,UAAU;AACpD,UAAI,QAAQ,IAAI;AACZ,eAAO,aAAa,OAAO,OAAO,CAAC;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SAAO;AACX;",
4
+ "sourcesContent": ["import type {InitConfig, RunOptions} from '../types';\n\nimport {useCallback, useEffect, useState} from 'react';\n\nexport type RuntimeOptions = {\n onError?: (error: unknown) => void;\n};\n\nfunction pick<\n O extends Hash,\n P extends string,\n R extends {\n [K in P]: O[K];\n },\n>(object: O, props: readonly P[]): R {\n return Object.keys(object).reduce((acc, key) => {\n if ((props as readonly string[]).includes(key)) {\n acc[key] = object[key];\n }\n\n return acc;\n }, {} as Hash) as R;\n}\n\nfunction omit<\n O extends Hash,\n P extends string,\n R extends {\n [K in keyof Omit<O, P>]: O[K];\n },\n>(object: O, props: readonly P[]): R {\n return Object.keys(object).reduce(\n (acc, key) => {\n if (!(props as readonly string[]).includes(key)) {\n acc[key] = object[key];\n }\n\n return acc;\n },\n {} as Record<string, unknown>,\n ) as R;\n}\n\nexport function MermaidRuntime(props: InitConfig & RunOptions & RuntimeOptions) {\n const renderMermaid = useMermaid();\n const config = omit(props as Hash, ['querySelector', 'nodes', 'nonce', 'onError']);\n const options = pick(props as Hash, ['querySelector', 'nodes', 'nonce']);\n\n useEffect(() => {\n renderMermaid(config, options as Hash).catch(props.onError || (() => {}));\n });\n\n return null;\n}\n\nexport function useMermaid() {\n const [mermaid, setMermaid] = useState<Parameters<Callback>[0] | null>(null);\n const render = useCallback(\n async (config: InitConfig, options?: RunOptions) => {\n if (mermaid) {\n mermaid.initialize(config);\n return mermaid.run(options);\n }\n },\n [mermaid],\n );\n\n useEffect(() => {\n (window.mermaidJsonp = window.mermaidJsonp || []).push(setMermaid);\n\n return () => {\n const index = window.mermaidJsonp.indexOf(setMermaid);\n if (index > -1) {\n window.mermaidJsonp.splice(index, 1);\n }\n };\n }, []);\n\n return render;\n}\n"],
5
+ "mappings": ";AAEA,SAAQ,aAAa,WAAW,gBAAe;AAM/C,SAAS,KAMP,QAAW,OAAwB;AACjC,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ;AAC5C,QAAK,MAA4B,SAAS,GAAG,GAAG;AAC5C,UAAI,GAAG,IAAI,OAAO,GAAG;AAAA,IACzB;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,CAAS;AACjB;AAEA,SAAS,KAMP,QAAW,OAAwB;AACjC,SAAO,OAAO,KAAK,MAAM,EAAE;AAAA,IACvB,CAAC,KAAK,QAAQ;AACV,UAAI,CAAE,MAA4B,SAAS,GAAG,GAAG;AAC7C,YAAI,GAAG,IAAI,OAAO,GAAG;AAAA,MACzB;AAEA,aAAO;AAAA,IACX;AAAA,IACA,CAAC;AAAA,EACL;AACJ;AAEO,SAAS,eAAe,OAAiD;AAC5E,QAAM,gBAAgB,WAAW;AACjC,QAAM,SAAS,KAAK,OAAe,CAAC,iBAAiB,SAAS,SAAS,SAAS,CAAC;AACjF,QAAM,UAAU,KAAK,OAAe,CAAC,iBAAiB,SAAS,OAAO,CAAC;AAEvE,YAAU,MAAM;AACZ,kBAAc,QAAQ,OAAe,EAAE,MAAM,MAAM,YAAY,MAAM;AAAA,IAAC,EAAE;AAAA,EAC5E,CAAC;AAED,SAAO;AACX;AAEO,SAAS,aAAa;AACzB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAyC,IAAI;AAC3E,QAAM,SAAS;AAAA,IACX,OAAO,QAAoB,YAAyB;AAChD,UAAI,SAAS;AACT,gBAAQ,WAAW,MAAM;AACzB,eAAO,QAAQ,IAAI,OAAO;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA,CAAC,OAAO;AAAA,EACZ;AAEA,YAAU,MAAM;AACZ,KAAC,OAAO,eAAe,OAAO,gBAAgB,CAAC,GAAG,KAAK,UAAU;AAEjE,WAAO,MAAM;AACT,YAAM,QAAQ,OAAO,aAAa,QAAQ,UAAU;AACpD,UAAI,QAAQ,IAAI;AACZ,eAAO,aAAa,OAAO,OAAO,CAAC;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SAAO;AACX;",
6
6
  "names": []
7
7
  }