@diplodoc/mermaid-extension 1.2.3 → 1.3.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.
@@ -0,0 +1 @@
1
+ export { transform } from './transform-node';
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,16 +17,29 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
- // src/plugin/index.ts
21
- var plugin_exports = {};
22
- __export(plugin_exports, {
23
- transform: () => transform
30
+ // src/plugin/index-node.ts
31
+ var index_node_exports = {};
32
+ __export(index_node_exports, {
33
+ transform: () => transform2
24
34
  });
25
- module.exports = __toCommonJS(plugin_exports);
35
+ module.exports = __toCommonJS(index_node_exports);
36
+
37
+ // src/plugin/transform-node.ts
38
+ var import_node_fs = require("node:fs");
39
+ var import_node_path = require("node:path");
26
40
 
27
41
  // src/plugin/transform.ts
42
+ var import_markdown_it = __toESM(require("markdown-it"));
28
43
  function isMermaidBlock(token) {
29
44
  return token.type === "fence" && token.info.match(/^\s*mermaid(\s*|$)/);
30
45
  }
@@ -37,18 +52,10 @@ function hidden(box, field, value) {
37
52
  }
38
53
  return box;
39
54
  }
40
- function copy(from, to) {
41
- const { mkdirSync, copyFileSync } = dynrequire("node:fs");
42
- const { dirname } = dynrequire("node:path");
43
- mkdirSync(dirname(to), { recursive: true });
44
- copyFileSync(from, to);
45
- }
46
- function dynrequire(module) {
47
- return eval(`require('${module}')`);
48
- }
49
55
  var registerTransforms = (md, {
50
56
  classes,
51
57
  runtime,
58
+ onBundle: onBundle2,
52
59
  bundle,
53
60
  output,
54
61
  updateTokens
@@ -66,13 +73,8 @@ var registerTransforms = (md, {
66
73
  env.meta = env.meta || {};
67
74
  env.meta.script = env.meta.script || [];
68
75
  env.meta.script.push(runtime);
69
- if (bundle) {
70
- const { join } = dynrequire("node:path");
71
- const file = join("@diplodoc/mermaid-extension", "runtime");
72
- if (!env.bundled.has(file)) {
73
- env.bundled.add(file);
74
- copy(require.resolve(file), join(output, runtime));
75
- }
76
+ if (bundle && onBundle2) {
77
+ onBundle2(env, output, runtime);
76
78
  }
77
79
  }
78
80
  };
@@ -104,8 +106,7 @@ function transform(options = {}) {
104
106
  };
105
107
  Object.assign(plugin, {
106
108
  collect(input, { destRoot }) {
107
- const MdIt = dynrequire("markdown-it");
108
- const md = new MdIt().use((md2) => {
109
+ const md = new import_markdown_it.default().use((md2) => {
109
110
  registerTransforms(md2, {
110
111
  classes,
111
112
  runtime,
@@ -119,8 +120,24 @@ function transform(options = {}) {
119
120
  });
120
121
  return plugin;
121
122
  }
123
+
124
+ // src/plugin/transform-node.ts
125
+ function copy(from, to) {
126
+ (0, import_node_fs.mkdirSync)((0, import_node_path.dirname)(to), { recursive: true });
127
+ (0, import_node_fs.copyFileSync)(from, to);
128
+ }
129
+ var onBundle = (env, output, runtime) => {
130
+ const file = (0, import_node_path.join)("@diplodoc/mermaid-extension", "runtime");
131
+ if (!env.bundled.has(file)) {
132
+ env.bundled.add(file);
133
+ copy(require.resolve(file), (0, import_node_path.join)(output, runtime));
134
+ }
135
+ };
136
+ var transform2 = (options) => {
137
+ return transform({ ...options, onBundle });
138
+ };
122
139
  // Annotate the CommonJS export names for ESM import in node:
123
140
  0 && (module.exports = {
124
141
  transform
125
142
  });
126
- //# sourceMappingURL=index.js.map
143
+ //# sourceMappingURL=index-node.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 } = options;\n\n const plugin: MarkdownItPluginCb<{output: string}> = function (md: MarkdownIt, {output = '.'}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\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
+ "names": ["transform", "onBundle", "MarkdownIt", "md", "transform"]
7
+ }
@@ -0,0 +1,86 @@
1
+ // src/plugin/transform.ts
2
+ import MarkdownIt from "markdown-it";
3
+ function isMermaidBlock(token) {
4
+ return token.type === "fence" && token.info.match(/^\s*mermaid(\s*|$)/);
5
+ }
6
+ function hidden(box, field, value) {
7
+ if (!(field in box)) {
8
+ Object.defineProperty(box, field, {
9
+ enumerable: false,
10
+ value
11
+ });
12
+ }
13
+ return box;
14
+ }
15
+ var registerTransforms = (md, {
16
+ classes,
17
+ runtime,
18
+ onBundle,
19
+ bundle,
20
+ output,
21
+ updateTokens
22
+ }) => {
23
+ const applyTransforms = ({ tokens, env }) => {
24
+ hidden(env, "bundled", /* @__PURE__ */ new Set());
25
+ const blocks = tokens.filter(isMermaidBlock);
26
+ if (updateTokens && blocks.length) {
27
+ blocks.forEach((token) => {
28
+ token.type = "mermaid";
29
+ token.attrSet("class", `mermaid ${classes}`);
30
+ });
31
+ }
32
+ if (blocks.length) {
33
+ env.meta = env.meta || {};
34
+ env.meta.script = env.meta.script || [];
35
+ env.meta.script.push(runtime);
36
+ if (bundle && onBundle) {
37
+ onBundle(env, output, runtime);
38
+ }
39
+ }
40
+ };
41
+ try {
42
+ md.core.ruler.after("fence", "mermaid", applyTransforms);
43
+ } catch (e) {
44
+ md.core.ruler.push("mermaid", applyTransforms);
45
+ }
46
+ };
47
+ function transform(options = {}) {
48
+ const {
49
+ runtime = "_assets/mermaid-extension.js",
50
+ classes = "yfm-mermaid",
51
+ bundle = true
52
+ } = options;
53
+ const plugin = function(md, { output = "." }) {
54
+ registerTransforms(md, {
55
+ classes,
56
+ runtime,
57
+ bundle,
58
+ output,
59
+ updateTokens: true
60
+ });
61
+ md.renderer.rules.mermaid = (tokens, idx) => {
62
+ const token = tokens[idx];
63
+ const code = encodeURIComponent(token.content.trimStart());
64
+ return `<div class="mermaid" data-content="${code}"></div>`;
65
+ };
66
+ };
67
+ Object.assign(plugin, {
68
+ collect(input, { destRoot }) {
69
+ const md = new MarkdownIt().use((md2) => {
70
+ registerTransforms(md2, {
71
+ classes,
72
+ runtime,
73
+ bundle,
74
+ output: destRoot,
75
+ updateTokens: false
76
+ });
77
+ });
78
+ md.parse(input, {});
79
+ }
80
+ });
81
+ return plugin;
82
+ }
83
+ export {
84
+ transform
85
+ };
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 } = options;\n\n const plugin: MarkdownItPluginCb<{output: string}> = function (md: MarkdownIt, {output = '.'}) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\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,EACb,IAAI;AAEJ,QAAM,SAA+C,SAAU,IAAgB,EAAC,SAAS,IAAG,GAAG;AAC3F,uBAAmB,IAAI;AAAA,MACnB;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
+ "names": ["md"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import { PluginOptions } from './types';
2
+ export declare const transform: (options: Partial<Omit<PluginOptions, 'onBundle'>>) => import("@diplodoc/transform/lib/plugins/typings").MarkdownItPluginCb<{
3
+ output: string;
4
+ }>;
@@ -1,9 +1,5 @@
1
1
  import type { MarkdownItPluginCb } from '@diplodoc/transform/lib/plugins/typings';
2
- export type PluginOptions = {
3
- runtime: string;
4
- classes: string;
5
- bundle: boolean;
6
- };
2
+ import { PluginOptions } from './types';
7
3
  export declare function transform(options?: Partial<PluginOptions>): MarkdownItPluginCb<{
8
4
  output: string;
9
5
  }>;
@@ -0,0 +1,8 @@
1
+ export type PluginOptions = {
2
+ runtime: string;
3
+ classes: string;
4
+ bundle: boolean;
5
+ onBundle?: (env: {
6
+ bundled: Set<string>;
7
+ }, output: string, runtime: string) => void;
8
+ };
@@ -1,6 +1,6 @@
1
1
  import type { InitConfig, RunOptions } from '../types';
2
2
  export type RuntimeOptions = {
3
- onError?: (error: any) => void;
3
+ onError?: (error: unknown) => void;
4
4
  };
5
5
  export declare function MermaidRuntime(props: InitConfig & RunOptions & RuntimeOptions): null;
6
6
  export declare function useMermaid(): (config: InitConfig, options?: RunOptions) => Promise<void>;
@@ -1,15 +1,12 @@
1
1
  // src/react/index.ts
2
2
  import { useCallback, useEffect, useState } from "react";
3
3
  function pick(object, props) {
4
- return Object.keys(object).reduce(
5
- (acc, key) => {
6
- if (props.includes(key)) {
7
- acc[key] = object[key];
8
- }
9
- return acc;
10
- },
11
- {}
12
- );
4
+ return Object.keys(object).reduce((acc, key) => {
5
+ if (props.includes(key)) {
6
+ acc[key] = object[key];
7
+ }
8
+ return acc;
9
+ }, {});
13
10
  }
14
11
  function omit(object, props) {
15
12
  return Object.keys(object).reduce(
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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;",
6
+ "names": []
7
+ }