Initial
This commit is contained in:
commit
b089105102
19 changed files with 1306 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
1
.prettierignore
Normal file
1
.prettierignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
bundle.js
|
7
.prettierrc.json5
Normal file
7
.prettierrc.json5
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
useTabs: false,
|
||||||
|
tabWidth: 2,
|
||||||
|
singleQuote: false,
|
||||||
|
trailingComma: "all",
|
||||||
|
printWidth: 100,
|
||||||
|
}
|
112
bundle.js
Normal file
112
bundle.js
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
(() => {
|
||||||
|
// src/constants.ts
|
||||||
|
var PI = Math.PI;
|
||||||
|
var TAU = 2 * PI;
|
||||||
|
var DEFAULT_DOT_RADIUS = 0.08;
|
||||||
|
|
||||||
|
// src/mobject/geometry.ts
|
||||||
|
var Arc = class {
|
||||||
|
constructor(radius, startAngle, angle) {
|
||||||
|
this.radius = radius;
|
||||||
|
this.startAngle = startAngle;
|
||||||
|
this.angle = angle;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var Circle = class extends Arc {
|
||||||
|
constructor(radius) {
|
||||||
|
super(radius, 0, TAU);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var Dot = class extends Circle {
|
||||||
|
constructor(radius) {
|
||||||
|
super(radius != null ? radius : DEFAULT_DOT_RADIUS);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/renderer/index.ts
|
||||||
|
var Canvas2DRenderer = class {
|
||||||
|
constructor(context) {
|
||||||
|
this.context = context;
|
||||||
|
this.skipAnimations = false;
|
||||||
|
this.animationStartTime = new Date();
|
||||||
|
this.animationElapsedTime = 0;
|
||||||
|
}
|
||||||
|
init_scene(scene) {
|
||||||
|
}
|
||||||
|
render(scene) {
|
||||||
|
this.updateFrame(scene);
|
||||||
|
if (this.skipAnimations)
|
||||||
|
return;
|
||||||
|
for (let mobject of scene.mobjects) {
|
||||||
|
if (!mobject.shouldRender)
|
||||||
|
continue;
|
||||||
|
this.renderMobject(mobject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renderMobject(mobject) {
|
||||||
|
}
|
||||||
|
updateFrame(scene) {
|
||||||
|
for (let mobject of scene.mobjects) {
|
||||||
|
if (!mobject.shouldRender)
|
||||||
|
continue;
|
||||||
|
this.renderMobject(mobject);
|
||||||
|
}
|
||||||
|
this.animationElapsedTime = +new Date() - +this.animationStartTime;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/scene/index.ts
|
||||||
|
var Scene = class {
|
||||||
|
constructor() {
|
||||||
|
this.animations = [];
|
||||||
|
this.mobjects = [];
|
||||||
|
}
|
||||||
|
construct() {
|
||||||
|
}
|
||||||
|
add(...mobjects) {
|
||||||
|
this.mobjects.push(...mobjects);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/utils/tex.ts
|
||||||
|
function texToSvg(expression) {
|
||||||
|
let el2 = MathJax.tex2svg(expression);
|
||||||
|
let child = el2.children[0];
|
||||||
|
return child.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/index.ts
|
||||||
|
function init(scene, el2) {
|
||||||
|
let canvasEl = document.createElement("canvas");
|
||||||
|
canvasEl.width = 640;
|
||||||
|
canvasEl.height = 480;
|
||||||
|
let contextOrNull = canvasEl.getContext("2d");
|
||||||
|
if (contextOrNull == null)
|
||||||
|
return;
|
||||||
|
let context = contextOrNull;
|
||||||
|
let renderer = new Canvas2DRenderer(context);
|
||||||
|
let lastTime;
|
||||||
|
let step = function(time) {
|
||||||
|
let timeDelta = time - (lastTime != null ? lastTime : 0);
|
||||||
|
renderer.render(scene);
|
||||||
|
requestAnimationFrame(step);
|
||||||
|
lastTime = time;
|
||||||
|
};
|
||||||
|
requestAnimationFrame(step);
|
||||||
|
el2.appendChild(canvasEl);
|
||||||
|
}
|
||||||
|
var ExampleScene = class extends Scene {
|
||||||
|
construct() {
|
||||||
|
let dot = new Dot([-2, -1, 0]);
|
||||||
|
let dot2 = new Dot([2, 1, 0]);
|
||||||
|
let line = new Line(dot.getCenter(), dot2.getCenter());
|
||||||
|
let b1 = new Brace(line);
|
||||||
|
this.add(line, dot, dot2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
texToSvg("x + 1");
|
||||||
|
var el = document.getElementById("manim");
|
||||||
|
if (el)
|
||||||
|
init(new ExampleScene(), el);
|
||||||
|
})();
|
||||||
|
//# sourceMappingURL=bundle.js.map
|
7
bundle.js.map
Normal file
7
bundle.js.map
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"sources": ["src/constants.ts", "src/mobject/geometry.ts", "src/renderer/index.ts", "src/scene/index.ts", "src/utils/tex.ts", "src/index.ts"],
|
||||||
|
"sourcesContent": ["export const PI = Math.PI;\nexport const TAU = 2 * PI;\n\nexport const DEFAULT_DOT_RADIUS = 0.08;\n", "import { DEFAULT_DOT_RADIUS, TAU } from \"../constants\";\n\nexport class Arc {\n constructor(public radius: number, public startAngle: number, public angle: number) {}\n}\n\nexport class Circle extends Arc {\n constructor(radius: number) {\n super(radius, 0, TAU);\n }\n}\n\nexport class Dot extends Circle {\n constructor(radius?: number) {\n super(radius ?? DEFAULT_DOT_RADIUS);\n }\n}\n", "import { Mobject } from \"../mobject\";\nimport { Scene } from \"../scene\";\n\nexport class Canvas2DRenderer {\n context: CanvasRenderingContext2D;\n\n skipAnimations: boolean;\n animationStartTime: Date;\n animationElapsedTime: number;\n\n constructor(context: CanvasRenderingContext2D) {\n this.context = context;\n\n this.skipAnimations = false;\n this.animationStartTime = new Date();\n this.animationElapsedTime = 0;\n }\n\n init_scene(scene: Scene) {}\n\n public render(scene: Scene) {\n this.updateFrame(scene);\n if (this.skipAnimations) return;\n\n for (let mobject of scene.mobjects) {\n if (!mobject.shouldRender) continue;\n this.renderMobject(mobject);\n }\n }\n\n renderMobject(mobject: Mobject) {\n // for (let shaderWrapper of mobject.getShaderWrapperList()) {\n // let mesh = new Mesh();\n // }\n }\n\n updateFrame(scene: Scene) {\n for (let mobject of scene.mobjects) {\n if (!mobject.shouldRender) continue;\n this.renderMobject(mobject);\n }\n\n this.animationElapsedTime = +new Date() - +this.animationStartTime;\n }\n}\n", "import { Animation } from \"../animation\";\nimport { Mobject } from \"../mobject\";\n\nexport class Scene {\n animations: Animation[];\n mobjects: Mobject[];\n\n constructor() {\n this.animations = [];\n this.mobjects = [];\n }\n\n public construct() {}\n\n /**\n * Add Mobjects to this scene, from background to foreground in the order\n * they're added.\n */\n public add(...mobjects: Mobject[]) {\n this.mobjects.push(...mobjects);\n }\n}\n", "declare namespace MathJax {\n function tex2svg(expression: string): HTMLElement;\n};\n\n/**\n * Convert TeX expression to an SVG string.\n */\nexport function texToSvg(expression: string): string {\n let el = <HTMLElement>MathJax.tex2svg(expression);\n let child = <SVGElement>el.children[0];\n return child.innerHTML;\n}\n", "import { Dot } from \"./mobject/geometry\";\nimport { Canvas2DRenderer } from \"./renderer\";\nimport { Scene } from \"./scene\";\nimport { texToSvg } from \"./utils/tex\";\n\nexport function init(scene: Scene, el: HTMLElement) {\n let canvasEl = document.createElement(\"canvas\");\n canvasEl.width = 640;\n canvasEl.height = 480;\n\n let contextOrNull = canvasEl.getContext(\"2d\");\n if (contextOrNull == null) return;\n let context = contextOrNull;\n\n let renderer = new Canvas2DRenderer(context);\n\n let lastTime: DOMHighResTimeStamp | null;\n let step = function (time: DOMHighResTimeStamp): void {\n let timeDelta = time - (lastTime ?? 0);\n renderer.render(scene);\n requestAnimationFrame(step);\n lastTime = time;\n };\n requestAnimationFrame(step);\n\n el.appendChild(canvasEl);\n}\n\nclass ExampleScene extends Scene {\n override construct() {\n let dot = new Dot([-2, -1, 0]);\n let dot2 = new Dot([2, 1, 0]);\n let line = new Line(dot.getCenter(), dot2.getCenter());\n let b1 = new Brace(line);\n this.add(line, dot, dot2);\n }\n}\n\ntexToSvg(\"x + 1\");\n\nlet el = document.getElementById(\"manim\");\nif (el) init(new ExampleScene(), el);\n"],
|
||||||
|
"mappings": ";;AAAO,MAAM,KAAK,KAAK;AAChB,MAAM,MAAM,IAAI;AAEhB,MAAM,qBAAqB;;;ACD3B,kBAAU;AAAA,IACf,YAAmB,QAAuB,YAA2B,OAAe;AAAjE;AAAuB;AAA2B;AAAA;AAAA;AAGhE,6BAAqB,IAAI;AAAA,IAC9B,YAAY,QAAgB;AAC1B,YAAM,QAAQ,GAAG;AAAA;AAAA;AAId,0BAAkB,OAAO;AAAA,IAC9B,YAAY,QAAiB;AAC3B,YAAM,0BAAU;AAAA;AAAA;;;ACXb,+BAAuB;AAAA,IAO5B,YAAY,SAAmC;AAC7C,WAAK,UAAU;AAEf,WAAK,iBAAiB;AACtB,WAAK,qBAAqB,IAAI;AAC9B,WAAK,uBAAuB;AAAA;AAAA,IAG9B,WAAW,OAAc;AAAA;AAAA,IAElB,OAAO,OAAc;AAC1B,WAAK,YAAY;AACjB,UAAI,KAAK;AAAgB;AAEzB,eAAS,WAAW,MAAM,UAAU;AAClC,YAAI,CAAC,QAAQ;AAAc;AAC3B,aAAK,cAAc;AAAA;AAAA;AAAA,IAIvB,cAAc,SAAkB;AAAA;AAAA,IAMhC,YAAY,OAAc;AACxB,eAAS,WAAW,MAAM,UAAU;AAClC,YAAI,CAAC,QAAQ;AAAc;AAC3B,aAAK,cAAc;AAAA;AAGrB,WAAK,uBAAuB,CAAC,IAAI,SAAS,CAAC,KAAK;AAAA;AAAA;;;ACvC7C,oBAAY;AAAA,IAIjB,cAAc;AACZ,WAAK,aAAa;AAClB,WAAK,WAAW;AAAA;AAAA,IAGX,YAAY;AAAA;AAAA,IAMZ,OAAO,UAAqB;AACjC,WAAK,SAAS,KAAK,GAAG;AAAA;AAAA;;;ACZnB,oBAAkB,YAA4B;AACnD,QAAI,MAAkB,QAAQ,QAAQ;AACtC,QAAI,QAAoB,IAAG,SAAS;AACpC,WAAO,MAAM;AAAA;;;ACLR,gBAAc,OAAc,KAAiB;AAClD,QAAI,WAAW,SAAS,cAAc;AACtC,aAAS,QAAQ;AACjB,aAAS,SAAS;AAElB,QAAI,gBAAgB,SAAS,WAAW;AACxC,QAAI,iBAAiB;AAAM;AAC3B,QAAI,UAAU;AAEd,QAAI,WAAW,IAAI,iBAAiB;AAEpC,QAAI;AACJ,QAAI,OAAO,SAAU,MAAiC;AACpD,UAAI,YAAY,OAAQ,+BAAY;AACpC,eAAS,OAAO;AAChB,4BAAsB;AACtB,iBAAW;AAAA;AAEb,0BAAsB;AAEtB,QAAG,YAAY;AAAA;AAGjB,mCAA2B,MAAM;AAAA,IACtB,YAAY;AACnB,UAAI,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI;AAC3B,UAAI,OAAO,IAAI,IAAI,CAAC,GAAG,GAAG;AAC1B,UAAI,OAAO,IAAI,KAAK,IAAI,aAAa,KAAK;AAC1C,UAAI,KAAK,IAAI,MAAM;AACnB,WAAK,IAAI,MAAM,KAAK;AAAA;AAAA;AAIxB,WAAS;AAET,MAAI,KAAK,SAAS,eAAe;AACjC,MAAI;AAAI,SAAK,IAAI,gBAAgB;",
|
||||||
|
"names": []
|
||||||
|
}
|
15
index.html
Normal file
15
index.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="manim"></div>
|
||||||
|
<script
|
||||||
|
src="https://unpkg.com/mathjax@3.2.0/es5/tex-svg-full.js"
|
||||||
|
integrity="sha384-k13NcpPC0V9zRQ24+/m6CeP5t+OvYNPGQLGj5pY3t64DU6SutAI3bf3w6GLeS/Xv"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
></script>
|
||||||
|
<script type="text/javascript" src="bundle.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
940
package-lock.json
generated
Normal file
940
package-lock.json
generated
Normal file
|
@ -0,0 +1,940 @@
|
||||||
|
{
|
||||||
|
"name": "manim",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"mathjax-full": "^3.2.0",
|
||||||
|
"rollup": "^2.62.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@rollup/plugin-node-resolve": "^13.1.2",
|
||||||
|
"@rollup/plugin-typescript": "^8.3.0",
|
||||||
|
"esbuild": "^0.14.10",
|
||||||
|
"prettier": "^2.5.1",
|
||||||
|
"typescript": "^4.5.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-node-resolve": {
|
||||||
|
"version": "13.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz",
|
||||||
|
"integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/pluginutils": "^3.1.0",
|
||||||
|
"@types/resolve": "1.17.1",
|
||||||
|
"builtin-modules": "^3.1.0",
|
||||||
|
"deepmerge": "^4.2.2",
|
||||||
|
"is-module": "^1.0.0",
|
||||||
|
"resolve": "^1.19.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.42.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-typescript": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/pluginutils": "^3.1.0",
|
||||||
|
"resolve": "^1.17.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.14.0",
|
||||||
|
"tslib": "*",
|
||||||
|
"typescript": ">=3.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/pluginutils": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "0.0.39",
|
||||||
|
"estree-walker": "^1.0.1",
|
||||||
|
"picomatch": "^2.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^1.20.0||^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/estree": {
|
||||||
|
"version": "0.0.39",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
||||||
|
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "17.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
|
||||||
|
"integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/@types/resolve": {
|
||||||
|
"version": "1.17.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
|
||||||
|
"integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/builtin-modules": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/commander": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/deepmerge": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/esbuild": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-ibZb+NwFqBwHHJlpnFMtg4aNmVK+LUtYMFC9CuKs6lDCBEvCHpqCFZFEirpqt1jOugwKGx8gALNGvX56lQyfew==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"bin": {
|
||||||
|
"esbuild": "bin/esbuild"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"esbuild-android-arm64": "0.14.10",
|
||||||
|
"esbuild-darwin-64": "0.14.10",
|
||||||
|
"esbuild-darwin-arm64": "0.14.10",
|
||||||
|
"esbuild-freebsd-64": "0.14.10",
|
||||||
|
"esbuild-freebsd-arm64": "0.14.10",
|
||||||
|
"esbuild-linux-32": "0.14.10",
|
||||||
|
"esbuild-linux-64": "0.14.10",
|
||||||
|
"esbuild-linux-arm": "0.14.10",
|
||||||
|
"esbuild-linux-arm64": "0.14.10",
|
||||||
|
"esbuild-linux-mips64le": "0.14.10",
|
||||||
|
"esbuild-linux-ppc64le": "0.14.10",
|
||||||
|
"esbuild-linux-s390x": "0.14.10",
|
||||||
|
"esbuild-netbsd-64": "0.14.10",
|
||||||
|
"esbuild-openbsd-64": "0.14.10",
|
||||||
|
"esbuild-sunos-64": "0.14.10",
|
||||||
|
"esbuild-windows-32": "0.14.10",
|
||||||
|
"esbuild-windows-64": "0.14.10",
|
||||||
|
"esbuild-windows-arm64": "0.14.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-android-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-vzkTafHKoiMX4uIN1kBnE/HXYLpNT95EgGanVk6DHGeYgDolU0NBxjO7yZpq4ZGFPOx8384eAdDrBYhO11TAlQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-darwin-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-DJwzFVB95ZV7C3PQbf052WqaUuuMFXJeZJ0LKdnP1w+QOU0rlbKfX0tzuhoS//rOXUj1TFIwRuRsd0FX6skR7A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-darwin-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-RNaaoZDg3nsqs5z56vYCjk/VJ76npf752W0rOaCl5lO5TsgV9zecfdYgt7dtUrIx8b7APhVaNYud+tGsDOVC9g==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-freebsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-10B3AzW894u6bGZZhWiJOHw1uEHb4AFbUuBdyml1Ht0vIqd+KqWW+iY/yMwQAzILr2WJZqEhbOXRkJtY8aRqOw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-freebsd-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-mSQrKB7UaWvuryBTCo9leOfY2uEUSimAvcKIaUWbk5Hth9Sg+Try+qNA/NibPgs/vHkX0KFo/Rce6RPea+P15g==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-32": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-lktF09JgJLZ63ANYHIPdYe339PDuVn19Q/FcGKkXWf+jSPkn5xkYzAabboNGZNUgNqSJ/vY7VrOn6UrBbJjgYA==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-K+gCQz2oLIIBI8ZM77e9sYD5/DwEpeYCrOQ2SYXx+R4OU2CT9QjJDi4/OpE7ko4AcYMlMW7qrOCuLSgAlEj4Wg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-arm": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-BYa60dZ/KPmNKYxtHa3LSEdfKWHcm/RzP0MjB4AeBPhjS0D6/okhaBesZIY9kVIGDyeenKsJNOmnVt4+dhNnvQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-+qocQuQvcp5wo/V+OLXxqHPc+gxHttJEvbU/xrCGE03vIMqraL4wMua8JQx0SWEnJCWP+Nhf//v8OSwz1Xr5kA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-mips64le": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-nmUd2xoBXpGo4NJCEWoaBj+n4EtDoLEvEYc8Z3aSJrY0Oa6s04czD1flmhd0I/d6QEU8b7GQ9U0g/rtBfhtxBg==",
|
||||||
|
"cpu": [
|
||||||
|
"mips64el"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-ppc64le": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-vsOWZjm0rZix7HSmqwPph9arRVCyPtUpcURdayQDuIhMG2/UxJxpbdRaa//w4zYqcJzAWwuyH2PAlyy0ZNuxqQ==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-linux-s390x": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-knArKKZm0ypIYWOWyOT7+accVwbVV1LZnl2FWWy05u9Tyv5oqJ2F5+X2Vqe/gqd61enJXQWqoufXopvG3zULOg==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-netbsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-6Gg8neVcLeyq0yt9bZpReb8ntZ8LBEjthxrcYWVrBElcltnDjIy1hrzsujt0+sC2rL+TlSsE9dzgyuvlDdPp2w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"netbsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-openbsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-9rkHZzp10zI90CfKbFrwmQjqZaeDmyQ6s9/hvCwRkbOCHuto6RvMYH9ghQpcr5cUxD5OQIA+sHXi0zokRNXjcg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-sunos-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-mEU+pqkhkhbwpJj5DiN3vL0GUFR/yrL3qj8ER1amIVyRibKbj02VM1QaIuk1sy5DRVIKiFXXgCaHvH3RNWCHIw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"sunos"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-windows-32": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-Z5DieUL1N6s78dOSdL95KWf8Y89RtPGxIoMF+LEy8ChDsX+pZpz6uAVCn+YaWpqQXO+2TnrcbgBIoprq2Mco1g==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-windows-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-LE5Mm62y0Bilu7RDryBhHIX8rK3at5VwJ6IGM3BsASidCfOBTzqcs7Yy0/Vkq39VKeTmy9/66BAfVoZRNznoDw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esbuild-windows-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-OJOyxDtabvcUYTc+O4dR0JMzLBz6G9+gXIHA7Oc5d5Fv1xiYa0nUeo8+W5s2e6ZkPRdIwOseYoL70rZz80S5BA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/esm": {
|
||||||
|
"version": "3.2.25",
|
||||||
|
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
|
||||||
|
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/estree-walker": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/function-bind": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/has": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-core-module": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
|
||||||
|
"integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"has": "^1.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-module": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/mathjax-full": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-D2EBNvUG+mJyhn+M1C858k0f2Fc4KxXvbEX2WCMXroV10212JwfYqaBJ336ECBSz5X9L5LRoamxb7AJtg3KaJA==",
|
||||||
|
"dependencies": {
|
||||||
|
"esm": "^3.2.25",
|
||||||
|
"mhchemparser": "^4.1.0",
|
||||||
|
"mj-context-menu": "^0.6.1",
|
||||||
|
"speech-rule-engine": "^3.3.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mhchemparser": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA=="
|
||||||
|
},
|
||||||
|
"node_modules/mj-context-menu": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA=="
|
||||||
|
},
|
||||||
|
"node_modules/path-parse": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/prettier": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"prettier": "bin-prettier.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/resolve": {
|
||||||
|
"version": "1.20.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||||
|
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"is-core-module": "^2.2.0",
|
||||||
|
"path-parse": "^1.0.6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "2.62.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz",
|
||||||
|
"integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==",
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/speech-rule-engine": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-0exWw+0XauLjat+f/aFeo5T8SiDsO1JtwpY3qgJE4cWt+yL/Stl0WP4VNDWdh7lzGkubUD9lWP4J1ASnORXfyQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"commander": ">=7.0.0",
|
||||||
|
"wicked-good-xpath": "^1.3.0",
|
||||||
|
"xmldom-sre": "^0.1.31"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"sre": "bin/sre"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
||||||
|
"dev": true,
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "4.5.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
||||||
|
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/wicked-good-xpath": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-gbDpXoZQ5JyUsiKY//hoa1VTz2w="
|
||||||
|
},
|
||||||
|
"node_modules/xmldom-sre": {
|
||||||
|
"version": "0.1.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz",
|
||||||
|
"integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/plugin-node-resolve": {
|
||||||
|
"version": "13.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz",
|
||||||
|
"integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@rollup/pluginutils": "^3.1.0",
|
||||||
|
"@types/resolve": "1.17.1",
|
||||||
|
"builtin-modules": "^3.1.0",
|
||||||
|
"deepmerge": "^4.2.2",
|
||||||
|
"is-module": "^1.0.0",
|
||||||
|
"resolve": "^1.19.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@rollup/plugin-typescript": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@rollup/pluginutils": "^3.1.0",
|
||||||
|
"resolve": "^1.17.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@rollup/pluginutils": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/estree": "0.0.39",
|
||||||
|
"estree-walker": "^1.0.1",
|
||||||
|
"picomatch": "^2.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/estree": {
|
||||||
|
"version": "0.0.39",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
||||||
|
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@types/node": {
|
||||||
|
"version": "17.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
|
||||||
|
"integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@types/resolve": {
|
||||||
|
"version": "1.17.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
|
||||||
|
"integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"builtin-modules": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"commander": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
|
||||||
|
},
|
||||||
|
"deepmerge": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"esbuild": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-ibZb+NwFqBwHHJlpnFMtg4aNmVK+LUtYMFC9CuKs6lDCBEvCHpqCFZFEirpqt1jOugwKGx8gALNGvX56lQyfew==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"esbuild-android-arm64": "0.14.10",
|
||||||
|
"esbuild-darwin-64": "0.14.10",
|
||||||
|
"esbuild-darwin-arm64": "0.14.10",
|
||||||
|
"esbuild-freebsd-64": "0.14.10",
|
||||||
|
"esbuild-freebsd-arm64": "0.14.10",
|
||||||
|
"esbuild-linux-32": "0.14.10",
|
||||||
|
"esbuild-linux-64": "0.14.10",
|
||||||
|
"esbuild-linux-arm": "0.14.10",
|
||||||
|
"esbuild-linux-arm64": "0.14.10",
|
||||||
|
"esbuild-linux-mips64le": "0.14.10",
|
||||||
|
"esbuild-linux-ppc64le": "0.14.10",
|
||||||
|
"esbuild-linux-s390x": "0.14.10",
|
||||||
|
"esbuild-netbsd-64": "0.14.10",
|
||||||
|
"esbuild-openbsd-64": "0.14.10",
|
||||||
|
"esbuild-sunos-64": "0.14.10",
|
||||||
|
"esbuild-windows-32": "0.14.10",
|
||||||
|
"esbuild-windows-64": "0.14.10",
|
||||||
|
"esbuild-windows-arm64": "0.14.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"esbuild-android-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-vzkTafHKoiMX4uIN1kBnE/HXYLpNT95EgGanVk6DHGeYgDolU0NBxjO7yZpq4ZGFPOx8384eAdDrBYhO11TAlQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-darwin-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-DJwzFVB95ZV7C3PQbf052WqaUuuMFXJeZJ0LKdnP1w+QOU0rlbKfX0tzuhoS//rOXUj1TFIwRuRsd0FX6skR7A==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-darwin-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-RNaaoZDg3nsqs5z56vYCjk/VJ76npf752W0rOaCl5lO5TsgV9zecfdYgt7dtUrIx8b7APhVaNYud+tGsDOVC9g==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-freebsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-10B3AzW894u6bGZZhWiJOHw1uEHb4AFbUuBdyml1Ht0vIqd+KqWW+iY/yMwQAzILr2WJZqEhbOXRkJtY8aRqOw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-freebsd-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-mSQrKB7UaWvuryBTCo9leOfY2uEUSimAvcKIaUWbk5Hth9Sg+Try+qNA/NibPgs/vHkX0KFo/Rce6RPea+P15g==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-32": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-lktF09JgJLZ63ANYHIPdYe339PDuVn19Q/FcGKkXWf+jSPkn5xkYzAabboNGZNUgNqSJ/vY7VrOn6UrBbJjgYA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-K+gCQz2oLIIBI8ZM77e9sYD5/DwEpeYCrOQ2SYXx+R4OU2CT9QjJDi4/OpE7ko4AcYMlMW7qrOCuLSgAlEj4Wg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-arm": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-BYa60dZ/KPmNKYxtHa3LSEdfKWHcm/RzP0MjB4AeBPhjS0D6/okhaBesZIY9kVIGDyeenKsJNOmnVt4+dhNnvQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-+qocQuQvcp5wo/V+OLXxqHPc+gxHttJEvbU/xrCGE03vIMqraL4wMua8JQx0SWEnJCWP+Nhf//v8OSwz1Xr5kA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-mips64le": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-nmUd2xoBXpGo4NJCEWoaBj+n4EtDoLEvEYc8Z3aSJrY0Oa6s04czD1flmhd0I/d6QEU8b7GQ9U0g/rtBfhtxBg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-ppc64le": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-vsOWZjm0rZix7HSmqwPph9arRVCyPtUpcURdayQDuIhMG2/UxJxpbdRaa//w4zYqcJzAWwuyH2PAlyy0ZNuxqQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-linux-s390x": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-knArKKZm0ypIYWOWyOT7+accVwbVV1LZnl2FWWy05u9Tyv5oqJ2F5+X2Vqe/gqd61enJXQWqoufXopvG3zULOg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-netbsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-6Gg8neVcLeyq0yt9bZpReb8ntZ8LBEjthxrcYWVrBElcltnDjIy1hrzsujt0+sC2rL+TlSsE9dzgyuvlDdPp2w==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-openbsd-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-9rkHZzp10zI90CfKbFrwmQjqZaeDmyQ6s9/hvCwRkbOCHuto6RvMYH9ghQpcr5cUxD5OQIA+sHXi0zokRNXjcg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-sunos-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-mEU+pqkhkhbwpJj5DiN3vL0GUFR/yrL3qj8ER1amIVyRibKbj02VM1QaIuk1sy5DRVIKiFXXgCaHvH3RNWCHIw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-windows-32": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-Z5DieUL1N6s78dOSdL95KWf8Y89RtPGxIoMF+LEy8ChDsX+pZpz6uAVCn+YaWpqQXO+2TnrcbgBIoprq2Mco1g==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-windows-64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-LE5Mm62y0Bilu7RDryBhHIX8rK3at5VwJ6IGM3BsASidCfOBTzqcs7Yy0/Vkq39VKeTmy9/66BAfVoZRNznoDw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild-windows-arm64": {
|
||||||
|
"version": "0.14.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.10.tgz",
|
||||||
|
"integrity": "sha512-OJOyxDtabvcUYTc+O4dR0JMzLBz6G9+gXIHA7Oc5d5Fv1xiYa0nUeo8+W5s2e6ZkPRdIwOseYoL70rZz80S5BA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esm": {
|
||||||
|
"version": "3.2.25",
|
||||||
|
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
|
||||||
|
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
|
||||||
|
},
|
||||||
|
"estree-walker": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"function-bind": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"has": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-core-module": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
|
||||||
|
"integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-module": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"mathjax-full": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-D2EBNvUG+mJyhn+M1C858k0f2Fc4KxXvbEX2WCMXroV10212JwfYqaBJ336ECBSz5X9L5LRoamxb7AJtg3KaJA==",
|
||||||
|
"requires": {
|
||||||
|
"esm": "^3.2.25",
|
||||||
|
"mhchemparser": "^4.1.0",
|
||||||
|
"mj-context-menu": "^0.6.1",
|
||||||
|
"speech-rule-engine": "^3.3.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mhchemparser": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA=="
|
||||||
|
},
|
||||||
|
"mj-context-menu": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA=="
|
||||||
|
},
|
||||||
|
"path-parse": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"picomatch": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"prettier": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"resolve": {
|
||||||
|
"version": "1.20.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||||
|
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-core-module": "^2.2.0",
|
||||||
|
"path-parse": "^1.0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rollup": {
|
||||||
|
"version": "2.62.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz",
|
||||||
|
"integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==",
|
||||||
|
"requires": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"speech-rule-engine": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-0exWw+0XauLjat+f/aFeo5T8SiDsO1JtwpY3qgJE4cWt+yL/Stl0WP4VNDWdh7lzGkubUD9lWP4J1ASnORXfyQ==",
|
||||||
|
"requires": {
|
||||||
|
"commander": ">=7.0.0",
|
||||||
|
"wicked-good-xpath": "^1.3.0",
|
||||||
|
"xmldom-sre": "^0.1.31"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
||||||
|
"dev": true,
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"typescript": {
|
||||||
|
"version": "4.5.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
||||||
|
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"wicked-good-xpath": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-gbDpXoZQ5JyUsiKY//hoa1VTz2w="
|
||||||
|
},
|
||||||
|
"xmldom-sre": {
|
||||||
|
"version": "0.1.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz",
|
||||||
|
"integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
package.json
Normal file
17
package.json
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"build": "esbuild src/index.ts --bundle --external:mathjax-full --sourcemap --outfile=bundle.js",
|
||||||
|
"pretty": "prettier --write --list-different ."
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"mathjax-full": "^3.2.0",
|
||||||
|
"rollup": "^2.62.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@rollup/plugin-node-resolve": "^13.1.2",
|
||||||
|
"@rollup/plugin-typescript": "^8.3.0",
|
||||||
|
"esbuild": "^0.14.10",
|
||||||
|
"prettier": "^2.5.1",
|
||||||
|
"typescript": "^4.5.4"
|
||||||
|
}
|
||||||
|
}
|
3
src/animation/creation.ts
Normal file
3
src/animation/creation.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { Animation } from ".";
|
||||||
|
|
||||||
|
export class DrawBorderThenFill extends Animation {}
|
14
src/animation/index.ts
Normal file
14
src/animation/index.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import { Mobject } from "../mobject";
|
||||||
|
|
||||||
|
export const DEFAULT_ANIMATION_RUN_TIME = 1.0;
|
||||||
|
export const DEFAULT_ANIMATION_LAG_RATIO = 0.0;
|
||||||
|
|
||||||
|
export class Animation {
|
||||||
|
mobject: Mobject | null;
|
||||||
|
runTime: number;
|
||||||
|
|
||||||
|
constructor(runTime: number = DEFAULT_ANIMATION_RUN_TIME) {
|
||||||
|
this.mobject = null;
|
||||||
|
this.runTime = runTime;
|
||||||
|
}
|
||||||
|
}
|
4
src/constants.ts
Normal file
4
src/constants.ts
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
export const PI = Math.PI;
|
||||||
|
export const TAU = 2 * PI;
|
||||||
|
|
||||||
|
export const DEFAULT_DOT_RADIUS = 0.08;
|
41
src/index.ts
Normal file
41
src/index.ts
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import { Dot } from "./mobject/geometry";
|
||||||
|
import { Point } from "./point";
|
||||||
|
import { Canvas2DRenderer } from "./renderer";
|
||||||
|
import { Scene } from "./scene";
|
||||||
|
import { texToSvg } from "./utils/tex";
|
||||||
|
|
||||||
|
export function init(scene: Scene, el: HTMLElement) {
|
||||||
|
let canvasEl = document.createElement("canvas");
|
||||||
|
canvasEl.width = 640;
|
||||||
|
canvasEl.height = 480;
|
||||||
|
|
||||||
|
let contextOrNull = canvasEl.getContext("2d");
|
||||||
|
if (contextOrNull == null) return;
|
||||||
|
let context = contextOrNull;
|
||||||
|
|
||||||
|
let renderer = new Canvas2DRenderer(context);
|
||||||
|
|
||||||
|
let lastTime: DOMHighResTimeStamp | null;
|
||||||
|
let step = function (time: DOMHighResTimeStamp): void {
|
||||||
|
let timeDelta = time - (lastTime ?? 0);
|
||||||
|
renderer.render(scene);
|
||||||
|
requestAnimationFrame(step);
|
||||||
|
lastTime = time;
|
||||||
|
};
|
||||||
|
requestAnimationFrame(step);
|
||||||
|
|
||||||
|
el.appendChild(canvasEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ExampleScene extends Scene {
|
||||||
|
override construct() {
|
||||||
|
let dot = new Dot(new Point(-2, -1));
|
||||||
|
let dot2 = new Dot(new Point(2, 1));
|
||||||
|
let line = new Line(dot.getCenter(), dot2.getCenter());
|
||||||
|
let b1 = new Brace(line);
|
||||||
|
this.add(line, dot, dot2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let el = document.getElementById("manim");
|
||||||
|
if (el) init(new ExampleScene(), el);
|
28
src/mobject/geometry.ts
Normal file
28
src/mobject/geometry.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_DOT_RADIUS, TAU } from "../constants";
|
||||||
|
import { Point } from "./primitive";
|
||||||
|
|
||||||
|
export class Arc {
|
||||||
|
constructor(
|
||||||
|
public center: Point,
|
||||||
|
public radius: number,
|
||||||
|
public startAngle: number,
|
||||||
|
public angle: number,
|
||||||
|
) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Circle extends Arc {
|
||||||
|
constructor(center: Point, radius: number) {
|
||||||
|
super(center, radius, 0, TAU);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Dot extends Circle {
|
||||||
|
constructor(point: Point, radius?: number) {
|
||||||
|
super(point, radius ?? DEFAULT_DOT_RADIUS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Line {
|
||||||
|
constructor(a: Point, b: Point) {
|
||||||
|
}
|
||||||
|
}
|
17
src/mobject/index.ts
Normal file
17
src/mobject/index.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import {Point} from "../point";
|
||||||
|
|
||||||
|
export class Path {
|
||||||
|
constructor(public points: Point[]) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Mobject {
|
||||||
|
submobjects: Mobject[];
|
||||||
|
shouldRender: boolean;
|
||||||
|
paths: Path[];
|
||||||
|
|
||||||
|
constructor(paths: Path[] = []) {
|
||||||
|
this.submobjects = [];
|
||||||
|
this.shouldRender = true;
|
||||||
|
this.paths = paths;
|
||||||
|
}
|
||||||
|
}
|
5
src/mobject/primitive.ts
Normal file
5
src/mobject/primitive.ts
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
export abstract class Primitive {}
|
||||||
|
|
||||||
|
export class Point extends Primitive {
|
||||||
|
constructor(public x: number, public y: number) { super(); }
|
||||||
|
}
|
46
src/renderer/index.ts
Normal file
46
src/renderer/index.ts
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
import { Mobject } from "../mobject";
|
||||||
|
import { Scene } from "../scene";
|
||||||
|
|
||||||
|
export class Canvas2DRenderer {
|
||||||
|
context: CanvasRenderingContext2D;
|
||||||
|
|
||||||
|
skipAnimations: boolean;
|
||||||
|
animationStartTime: Date;
|
||||||
|
animationElapsedTime: number;
|
||||||
|
|
||||||
|
constructor(context: CanvasRenderingContext2D) {
|
||||||
|
this.context = context;
|
||||||
|
|
||||||
|
this.skipAnimations = false;
|
||||||
|
this.animationStartTime = new Date();
|
||||||
|
this.animationElapsedTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
init_scene(scene: Scene) {}
|
||||||
|
|
||||||
|
public render(scene: Scene) {
|
||||||
|
this.updateFrame(scene);
|
||||||
|
if (this.skipAnimations) return;
|
||||||
|
|
||||||
|
for (let mobject of scene.mobjects) {
|
||||||
|
if (!mobject.shouldRender) continue;
|
||||||
|
this.renderMobject(mobject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
renderMobject(mobject: Mobject) {
|
||||||
|
for (let path of mobject.paths) {
|
||||||
|
this.context.beginPath();
|
||||||
|
let first = true;
|
||||||
|
for (let point of path.points) {
|
||||||
|
if (first) this.context.moveTo(point.x, point.y);
|
||||||
|
else this.context.lineTo(point.x, point.y);
|
||||||
|
}
|
||||||
|
this.context.stroke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateFrame(scene: Scene) {
|
||||||
|
this.animationElapsedTime = +new Date() - +this.animationStartTime;
|
||||||
|
}
|
||||||
|
}
|
22
src/scene/index.ts
Normal file
22
src/scene/index.ts
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import { Animation } from "../animation";
|
||||||
|
import { Mobject } from "../mobject";
|
||||||
|
|
||||||
|
export abstract class Scene {
|
||||||
|
animations: Animation[];
|
||||||
|
mobjects: Mobject[];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.animations = [];
|
||||||
|
this.mobjects = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract construct(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Mobjects to this scene, from background to foreground in the order
|
||||||
|
* they're added.
|
||||||
|
*/
|
||||||
|
public add(...mobjects: Mobject[]) {
|
||||||
|
this.mobjects.push(...mobjects);
|
||||||
|
}
|
||||||
|
}
|
12
src/utils/tex.ts
Normal file
12
src/utils/tex.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
declare namespace MathJax {
|
||||||
|
function tex2svg(expression: string): HTMLElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert TeX expression to an SVG string.
|
||||||
|
*/
|
||||||
|
export function texToSvg(expression: string): string {
|
||||||
|
let el = <HTMLElement>MathJax.tex2svg(expression);
|
||||||
|
let child = <SVGElement>el.children[0];
|
||||||
|
return child.innerHTML;
|
||||||
|
}
|
14
tsconfig.json
Normal file
14
tsconfig.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es2018",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"noEmitOnError": true,
|
||||||
|
"lib": ["es2017", "dom"],
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": false,
|
||||||
|
"outDir": "out-tsc",
|
||||||
|
"rootDir": "./"
|
||||||
|
},
|
||||||
|
"include": ["./src/**/*.ts"]
|
||||||
|
}
|
Loading…
Reference in a new issue