manim-web 0.28.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/signals.d.ts +137 -0
- package/dist/core/signals.d.ts.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/integrations/notebook.js +11 -11
- package/dist/integrations/react.js +17 -17
- package/dist/integrations/vue.js +16 -16
- package/dist/interaction/StateMachine.d.ts +243 -0
- package/dist/interaction/StateMachine.d.ts.map +1 -0
- package/dist/interaction/index.d.ts +1 -0
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/manim-web.browser.js +2121 -1346
- package/dist/mobjects/chemistry/MoleculeMobject.d.ts +64 -0
- package/dist/mobjects/chemistry/MoleculeMobject.d.ts.map +1 -0
- package/dist/mobjects/chemistry/chemistryTypes.d.ts +79 -0
- package/dist/mobjects/chemistry/chemistryTypes.d.ts.map +1 -0
- package/dist/mobjects/chemistry/cpkColors.d.ts +36 -0
- package/dist/mobjects/chemistry/cpkColors.d.ts.map +1 -0
- package/dist/mobjects/chemistry/index.d.ts +12 -0
- package/dist/mobjects/chemistry/index.d.ts.map +1 -0
- package/dist/mobjects/chemistry/molecules.d.ts +19 -0
- package/dist/mobjects/chemistry/molecules.d.ts.map +1 -0
- package/dist/mobjects/effects/dropShadow.d.ts +30 -0
- package/dist/mobjects/effects/dropShadow.d.ts.map +1 -0
- package/dist/mobjects/effects/index.d.ts +5 -0
- package/dist/mobjects/effects/index.d.ts.map +1 -0
- package/dist/serialization/index.d.ts +1 -0
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/parametrized.d.ts +152 -0
- package/dist/serialization/parametrized.d.ts.map +1 -0
- package/dist/{src-D7e_dgYz.js → src-BGT84Qli.js} +2103 -1328
- package/package.json +1 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { VGroup } from '../../core/VGroup';
|
|
2
|
+
import { Mobject, Vector3Tuple } from '../../core/Mobject';
|
|
3
|
+
import { AtomSpec, BondSpec, BondOrder, BondStyle, MoleculeOptions, AtomRender, BondRender } from './chemistryTypes';
|
|
4
|
+
export declare class MoleculeMobject extends VGroup {
|
|
5
|
+
/** The atom specs as given, scaled to world coordinates. */
|
|
6
|
+
protected _atomSpecs: AtomSpec[];
|
|
7
|
+
/** The bond specs as given. */
|
|
8
|
+
protected _bondSpecs: BondSpec[];
|
|
9
|
+
/** Resolved atoms, parallel to _atomSpecs. */
|
|
10
|
+
protected _atoms: AtomRender[];
|
|
11
|
+
/** Resolved bonds, parallel to _bondSpecs. */
|
|
12
|
+
protected _bonds: BondRender[];
|
|
13
|
+
protected _bondLength: number;
|
|
14
|
+
protected _colors: Record<string, string>;
|
|
15
|
+
protected _showCarbonLabels: boolean;
|
|
16
|
+
protected _labelFontSize: number;
|
|
17
|
+
protected _bondColor: string;
|
|
18
|
+
protected _bondSpacing: number;
|
|
19
|
+
/** The bond line mobjects, drawn behind the atoms. */
|
|
20
|
+
readonly bondsGroup: VGroup;
|
|
21
|
+
/** The atom label mobjects, drawn in front of the bonds. */
|
|
22
|
+
readonly atomsGroup: VGroup;
|
|
23
|
+
constructor(options: MoleculeOptions);
|
|
24
|
+
/** World position of an atom spec after the bond-length scale. */
|
|
25
|
+
protected _atomPosition(spec: AtomSpec): Vector3Tuple;
|
|
26
|
+
/** Whether an element should carry a label. Carbons are implicit by default. */
|
|
27
|
+
protected _hasLabel(element: string): boolean;
|
|
28
|
+
/** Resolve each atom spec into an AtomRender (position and color; label added later). */
|
|
29
|
+
protected _resolveAtoms(): void;
|
|
30
|
+
/** Create a label Text for every atom that needs one, and add it to atomsGroup. */
|
|
31
|
+
protected _buildAtomLabels(): void;
|
|
32
|
+
/** Build every bond and add its line mobjects to bondsGroup. */
|
|
33
|
+
protected _buildBonds(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Build the line mobjects for one bond.
|
|
36
|
+
*
|
|
37
|
+
* A bond that references a missing atom produces no lines (handled
|
|
38
|
+
* gracefully, no throw). A wedge or dash bond produces one mobject. A normal
|
|
39
|
+
* bond produces `order` parallel lines.
|
|
40
|
+
*/
|
|
41
|
+
protected _buildBondLines(spec: BondSpec, order: BondOrder, type: BondStyle): Mobject[];
|
|
42
|
+
/** Trim the bond endpoints inward at labeled atoms so the line clears the label. */
|
|
43
|
+
protected _trimForLabels(fromAtom: AtomRender, toAtom: AtomRender): [Vector3Tuple, Vector3Tuple];
|
|
44
|
+
/** Unit perpendicular to the segment, in the XY plane. */
|
|
45
|
+
protected _perpendicular(start: Vector3Tuple, end: Vector3Tuple): Vector3Tuple;
|
|
46
|
+
/** Build `order` parallel lines, evenly offset about the bond axis. */
|
|
47
|
+
protected _buildParallelLines(start: Vector3Tuple, end: Vector3Tuple, order: BondOrder): Mobject[];
|
|
48
|
+
/** Build a filled triangle wedge from `start` (point) to `end` (wide base). */
|
|
49
|
+
protected _buildWedge(start: Vector3Tuple, end: Vector3Tuple): Mobject;
|
|
50
|
+
/** Get all resolved atoms, in input order. */
|
|
51
|
+
getAtoms(): AtomRender[];
|
|
52
|
+
/** Get all resolved bonds, in input order. */
|
|
53
|
+
getBonds(): BondRender[];
|
|
54
|
+
/** Get the resolved atom at an index, or undefined. */
|
|
55
|
+
getAtom(index: number): AtomRender | undefined;
|
|
56
|
+
/** Get the resolved bond at an index, or undefined. */
|
|
57
|
+
getBond(index: number): BondRender | undefined;
|
|
58
|
+
/** The number of atoms. */
|
|
59
|
+
get numAtoms(): number;
|
|
60
|
+
/** The number of bonds. */
|
|
61
|
+
get numBonds(): number;
|
|
62
|
+
copy(): MoleculeMobject;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=MoleculeMobject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeMobject.d.ts","sourceRoot":"","sources":["../../../src/mobjects/chemistry/MoleculeMobject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ3D,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,kBAAkB,CAAC;AAK1B,qBAAa,eAAgB,SAAQ,MAAM;IACzC,4DAA4D;IAC5D,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACjC,+BAA+B;IAC/B,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACjC,8CAA8C;IAC9C,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IACpC,8CAA8C;IAC9C,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEpC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAE/B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,eAAe;IAoCpC,kEAAkE;IAClE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY;IAIrD,gFAAgF;IAChF,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO7C,yFAAyF;IACzF,SAAS,CAAC,aAAa,IAAI,IAAI;IAS/B,mFAAmF;IACnF,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAgBlC,gEAAgE;IAChE,SAAS,CAAC,WAAW,IAAI,IAAI;IAY7B;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE;IAkBvF,oFAAoF;IACpF,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;IAwBhG,0DAA0D;IAC1D,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,YAAY;IAU9E,uEAAuE;IACvE,SAAS,CAAC,mBAAmB,CAC3B,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,SAAS,GACf,OAAO,EAAE;IAwBZ,+EAA+E;IAC/E,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAetE,8CAA8C;IAC9C,QAAQ,IAAI,UAAU,EAAE;IAIxB,8CAA8C;IAC9C,QAAQ,IAAI,UAAU,EAAE;IAIxB,uDAAuD;IACvD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI9C,uDAAuD;IACvD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI9C,2BAA2B;IAC3B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,2BAA2B;IAC3B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEQ,IAAI,IAAI,eAAe;CAcjC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Vector3Tuple, Mobject } from '../../core/Mobject';
|
|
2
|
+
import { Text } from '../text/Text';
|
|
3
|
+
/** Bond multiplicity. 1 = single, 2 = double, 3 = triple. */
|
|
4
|
+
export type BondOrder = 1 | 2 | 3;
|
|
5
|
+
/**
|
|
6
|
+
* Bond drawing style.
|
|
7
|
+
* - 'normal' draws plain parallel lines by order.
|
|
8
|
+
* - 'wedge' draws a filled triangle (a bond toward the viewer).
|
|
9
|
+
* - 'dash' draws a dashed line (a bond away from the viewer).
|
|
10
|
+
*/
|
|
11
|
+
export type BondStyle = 'normal' | 'wedge' | 'dash';
|
|
12
|
+
/** One atom in the input: an element symbol and 2D coordinates. */
|
|
13
|
+
export interface AtomSpec {
|
|
14
|
+
/** Element symbol, e.g. 'C', 'O', 'Cl'. */
|
|
15
|
+
element: string;
|
|
16
|
+
/** X coordinate in bond-length units. */
|
|
17
|
+
x: number;
|
|
18
|
+
/** Y coordinate in bond-length units. */
|
|
19
|
+
y: number;
|
|
20
|
+
}
|
|
21
|
+
/** One bond in the input: two atom indices and an optional order/style. */
|
|
22
|
+
export interface BondSpec {
|
|
23
|
+
/** Index of the first atom in the atoms array. */
|
|
24
|
+
from: number;
|
|
25
|
+
/** Index of the second atom in the atoms array. */
|
|
26
|
+
to: number;
|
|
27
|
+
/** Bond order. Default: 1. */
|
|
28
|
+
order?: BondOrder;
|
|
29
|
+
/** Bond style. Default: 'normal'. */
|
|
30
|
+
type?: BondStyle;
|
|
31
|
+
}
|
|
32
|
+
/** Options for a {@link MoleculeMobject}. */
|
|
33
|
+
export interface MoleculeOptions {
|
|
34
|
+
/** The atoms of the molecule. */
|
|
35
|
+
atoms: AtomSpec[];
|
|
36
|
+
/** The bonds between atoms. Default: []. */
|
|
37
|
+
bonds?: BondSpec[];
|
|
38
|
+
/** Scale applied to every atom coordinate. Default: 1. */
|
|
39
|
+
bondLength?: number;
|
|
40
|
+
/** Per-element color overrides, e.g. { C: '#000000' }. Merged over the CPK palette. */
|
|
41
|
+
colors?: Record<string, string>;
|
|
42
|
+
/** Whether to draw a label on carbon atoms. Default: false (skeletal convention). */
|
|
43
|
+
showCarbonLabels?: boolean;
|
|
44
|
+
/** Font size for atom labels. Default: 28. */
|
|
45
|
+
labelFontSize?: number;
|
|
46
|
+
/** Color of the bond lines. Default: white. */
|
|
47
|
+
bondColor?: string;
|
|
48
|
+
/** Distance between the parallel lines of a double or triple bond. Default: 0.08. */
|
|
49
|
+
bondSpacing?: number;
|
|
50
|
+
}
|
|
51
|
+
/** A resolved atom: its element, world position, color and optional label. */
|
|
52
|
+
export interface AtomRender {
|
|
53
|
+
/** Element symbol. */
|
|
54
|
+
element: string;
|
|
55
|
+
/** Position after the bond-length scale. */
|
|
56
|
+
position: Vector3Tuple;
|
|
57
|
+
/** Resolved CPK (or overridden) color. */
|
|
58
|
+
color: string;
|
|
59
|
+
/** The label mobject, or null for an implicit (unlabeled) carbon. */
|
|
60
|
+
label: Text | null;
|
|
61
|
+
}
|
|
62
|
+
/** A resolved bond: its endpoints, order, style and line mobjects. */
|
|
63
|
+
export interface BondRender {
|
|
64
|
+
/** Index of the first atom. */
|
|
65
|
+
from: number;
|
|
66
|
+
/** Index of the second atom. */
|
|
67
|
+
to: number;
|
|
68
|
+
/** Bond order. */
|
|
69
|
+
order: BondOrder;
|
|
70
|
+
/** Bond style. */
|
|
71
|
+
type: BondStyle;
|
|
72
|
+
/**
|
|
73
|
+
* The mobjects that draw this bond. A normal bond of order N has N line
|
|
74
|
+
* mobjects; a wedge or dash bond has one. A bond that references a missing
|
|
75
|
+
* atom has none.
|
|
76
|
+
*/
|
|
77
|
+
lines: Mobject[];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=chemistryTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chemistryTypes.d.ts","sourceRoot":"","sources":["../../../src/mobjects/chemistry/chemistryTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpD,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,CAAC,EAAE,MAAM,CAAC;IACV,yCAAyC;IACzC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,YAAY,CAAC;IACvB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CPK / Jmol color palette for chemical elements.
|
|
3
|
+
*
|
|
4
|
+
* The CPK coloring convention assigns a standard color to each element
|
|
5
|
+
* (oxygen red, nitrogen blue, and so on). These hex values follow the Jmol
|
|
6
|
+
* palette, which is the de-facto standard used by most molecular viewers.
|
|
7
|
+
*/
|
|
8
|
+
/** Fallback color for an element that is not in the palette. */
|
|
9
|
+
export declare const DEFAULT_ELEMENT_COLOR = "#DDDDDD";
|
|
10
|
+
/**
|
|
11
|
+
* Element symbol to hex color (CPK / Jmol convention).
|
|
12
|
+
*
|
|
13
|
+
* Carbon uses a visible mid-gray rather than pure black so it reads on a dark
|
|
14
|
+
* background; callers can override any element through MoleculeOptions.colors.
|
|
15
|
+
*/
|
|
16
|
+
export declare const CPK_COLORS: Readonly<Record<string, string>>;
|
|
17
|
+
/**
|
|
18
|
+
* Normalize an element symbol to its canonical case.
|
|
19
|
+
*
|
|
20
|
+
* A symbol is an uppercase first letter and a lowercase second letter, so
|
|
21
|
+
* 'cl', 'CL' and 'Cl' all resolve to 'Cl'. The input is trimmed first.
|
|
22
|
+
* @param element - The raw element symbol.
|
|
23
|
+
* @returns The canonical symbol.
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeElement(element: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the color for an element.
|
|
28
|
+
*
|
|
29
|
+
* The lookup order is: caller overrides, then the CPK palette, then the
|
|
30
|
+
* default color. Overrides are matched on the canonical symbol.
|
|
31
|
+
* @param element - The element symbol (any case).
|
|
32
|
+
* @param overrides - Optional per-element color overrides.
|
|
33
|
+
* @returns The hex color string.
|
|
34
|
+
*/
|
|
35
|
+
export declare function cpkColor(element: string, overrides?: Record<string, string>): string;
|
|
36
|
+
//# sourceMappingURL=cpkColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpkColors.d.ts","sourceRoot":"","sources":["../../../src/mobjects/chemistry/cpkColors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBvD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAWpF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chemistry mobjects for manim-web.
|
|
3
|
+
*
|
|
4
|
+
* 2D skeletal molecule structures: atoms as element labels, bonds as
|
|
5
|
+
* single/double/triple lines with optional wedge/dash stereochemistry, plus
|
|
6
|
+
* prebuilt example molecules and the CPK color palette.
|
|
7
|
+
*/
|
|
8
|
+
export { MoleculeMobject } from './MoleculeMobject';
|
|
9
|
+
export { water, methane, benzene, ethanol, type MoleculeBuilderOptions } from './molecules';
|
|
10
|
+
export { cpkColor, normalizeElement, CPK_COLORS, DEFAULT_ELEMENT_COLOR } from './cpkColors';
|
|
11
|
+
export { type AtomSpec, type BondSpec, type BondOrder, type BondStyle, type MoleculeOptions, type AtomRender, type BondRender, } from './chemistryTypes';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/chemistry/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MoleculeMobject } from './MoleculeMobject';
|
|
2
|
+
import { MoleculeOptions } from './chemistryTypes';
|
|
3
|
+
/** Style overrides a builder forwards to the MoleculeMobject (no atoms/bonds). */
|
|
4
|
+
export type MoleculeBuilderOptions = Partial<Omit<MoleculeOptions, 'atoms' | 'bonds'>>;
|
|
5
|
+
/** Water, H2O. An oxygen with two hydrogens at the bent 104.5 degree angle. */
|
|
6
|
+
export declare function water(options?: MoleculeBuilderOptions): MoleculeMobject;
|
|
7
|
+
/** Methane, CH4. A central carbon with four hydrogens; the carbon is labeled. */
|
|
8
|
+
export declare function methane(options?: MoleculeBuilderOptions): MoleculeMobject;
|
|
9
|
+
/**
|
|
10
|
+
* Benzene, C6H6. Six carbons in a regular hexagon ring with alternating single
|
|
11
|
+
* and double bonds (Kekule structure). Carbons stay implicit (skeletal).
|
|
12
|
+
*/
|
|
13
|
+
export declare function benzene(options?: MoleculeBuilderOptions): MoleculeMobject;
|
|
14
|
+
/**
|
|
15
|
+
* Ethanol, C2H5OH. Two carbons and a hydroxyl group, drawn skeletal: the
|
|
16
|
+
* carbons are implicit, the oxygen and its hydrogen are labeled.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ethanol(options?: MoleculeBuilderOptions): MoleculeMobject;
|
|
19
|
+
//# sourceMappingURL=molecules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"molecules.d.ts","sourceRoot":"","sources":["../../../src/mobjects/chemistry/molecules.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AAEvF,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAa3E;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAkB7E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAW7E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAe7E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { VGroup } from '../../core/VGroup';
|
|
2
|
+
import { VMobject } from '../../core/VMobject';
|
|
3
|
+
/** Options for {@link withDropShadow}. */
|
|
4
|
+
export interface DropShadowOptions {
|
|
5
|
+
/** Shadow offset `[dx, dy]` in scene units. Default `[0.1, -0.1]` (down-right). */
|
|
6
|
+
offset?: [number, number];
|
|
7
|
+
/** Shadow color. Default black `#000000`. */
|
|
8
|
+
color?: string;
|
|
9
|
+
/** Shadow opacity of the strongest layer (0..1). Default `0.5`. */
|
|
10
|
+
opacity?: number;
|
|
11
|
+
/** Number of shadow copies. More copies fake a softer edge. Default `1`. */
|
|
12
|
+
layers?: number;
|
|
13
|
+
/** Extra outward spread of the outer layers, as a fraction of `offset`. */
|
|
14
|
+
blur?: number;
|
|
15
|
+
/** Uniform scale of each shadow copy about its center. Default `1`. */
|
|
16
|
+
scale?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Return a VGroup with a drop shadow behind `mobject`.
|
|
20
|
+
*
|
|
21
|
+
* The source is copied for every shadow layer, so it is never recolored,
|
|
22
|
+
* moved, or scaled. The returned group holds the shadow layers first (drawn
|
|
23
|
+
* behind) and the original last (drawn in front).
|
|
24
|
+
*
|
|
25
|
+
* @param mobject - Source VMobject (shape, text, group, ...)
|
|
26
|
+
* @param options - Shadow options; see {@link DropShadowOptions}
|
|
27
|
+
* @returns A VGroup = `[shadow layers..., original]`
|
|
28
|
+
*/
|
|
29
|
+
export declare function withDropShadow<T extends VMobject>(mobject: T, options?: DropShadowOptions): VGroup;
|
|
30
|
+
//# sourceMappingURL=dropShadow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropShadow.d.ts","sourceRoot":"","sources":["../../../src/mobjects/effects/dropShadow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsCD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC/C,OAAO,EAAE,CAAC,EACV,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CA4BR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/effects/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -14,4 +14,5 @@ export { registerSerializableMobject, unregisterSerializableMobject, getSerializ
|
|
|
14
14
|
export type { SerializedScene, SerializedMobject, SerializedTransform, SerializedStyle, MobjectSerializer, SceneLike, ContainerLike, Vec3, } from './types';
|
|
15
15
|
export { encodeStateToHash, decodeStateFromHash, writeStateToUrl, readStateFromUrl, onUrlStateChange, bindStateToUrl, } from './urlState';
|
|
16
16
|
export type { WriteStateOptions, BindUrlStateOptions, UrlStateBinding, UrlStateController, } from './urlState';
|
|
17
|
+
export { defineParametrizedScene, resolveProps, renderParametrized, propsFromUrl, type PropsRecord, type PropTypeTag, type PropsSchema, type DataFetcher, type SceneMetadata, type MetadataContext, type CalculateMetadataResult, type CalculateMetadata, type SceneBuilder, type ParametrizedSceneDefinition, type ResolvedMetadata, type ParametrizedRenderResult, type RenderParametrizedOptions, } from './parametrized';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,IAAI,GACL,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,IAAI,GACL,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Scene, SceneOptions } from '../core/Scene';
|
|
2
|
+
/** A JSON-safe props bag. Each definition owns the shape of its own props. */
|
|
3
|
+
export type PropsRecord = Record<string, unknown>;
|
|
4
|
+
/** The runtime type tag a prop is validated and coerced against. */
|
|
5
|
+
export type PropTypeTag = 'number' | 'string' | 'boolean' | 'vec3' | 'array' | 'object';
|
|
6
|
+
/**
|
|
7
|
+
* Optional explicit schema: a type tag per prop key. When omitted, the tag of
|
|
8
|
+
* each prop is inferred from the type of its default value.
|
|
9
|
+
*/
|
|
10
|
+
export type PropsSchema<P extends object> = Partial<Record<keyof P, PropTypeTag>>;
|
|
11
|
+
/**
|
|
12
|
+
* Fetches render-time data. The default implementation calls the global
|
|
13
|
+
* `fetch` and returns parsed JSON; tests inject a stub so they never touch the
|
|
14
|
+
* network. This is the dependency-injection seam for {@link renderParametrized}.
|
|
15
|
+
*/
|
|
16
|
+
export type DataFetcher = (url: string, init?: RequestInit) => Promise<unknown>;
|
|
17
|
+
/** Scene config a {@link CalculateMetadata} hook may override before render. */
|
|
18
|
+
export interface SceneMetadata {
|
|
19
|
+
/** Clip duration in seconds, for downstream export. Carried through as-is. */
|
|
20
|
+
duration?: number;
|
|
21
|
+
/** Render width in pixels. */
|
|
22
|
+
width?: number;
|
|
23
|
+
/** Render height in pixels. */
|
|
24
|
+
height?: number;
|
|
25
|
+
/** Target frame rate in fps. */
|
|
26
|
+
fps?: number;
|
|
27
|
+
}
|
|
28
|
+
/** Context passed to {@link CalculateMetadata}: resolved props and the fetcher. */
|
|
29
|
+
export interface MetadataContext<P extends object> {
|
|
30
|
+
/** The props resolved from defaults + input (input wins). */
|
|
31
|
+
props: P;
|
|
32
|
+
/** The injected data fetcher (see {@link DataFetcher}). */
|
|
33
|
+
fetch: DataFetcher;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* What {@link CalculateMetadata} returns: optional scene-config overrides, an
|
|
37
|
+
* optional patch of props (which wins over the input props), and the fetched
|
|
38
|
+
* `data` that reaches {@link SceneBuilder}.
|
|
39
|
+
*/
|
|
40
|
+
export interface CalculateMetadataResult<P extends object, D> extends SceneMetadata {
|
|
41
|
+
/** Props to override after the fetch (e.g. values computed from the data). */
|
|
42
|
+
props?: Partial<P>;
|
|
43
|
+
/** Data to pass to the build step. */
|
|
44
|
+
data?: D;
|
|
45
|
+
}
|
|
46
|
+
/** The async pre-render hook. Runs once, before the scene is built. */
|
|
47
|
+
export type CalculateMetadata<P extends object, D> = (context: MetadataContext<P>) => CalculateMetadataResult<P, D> | Promise<CalculateMetadataResult<P, D>>;
|
|
48
|
+
/** Builds the scene from the resolved props and the fetched data. */
|
|
49
|
+
export type SceneBuilder<P extends object, D> = (scene: Scene, props: P, data: D | undefined) => void | Promise<void>;
|
|
50
|
+
/** A parametrized scene definition. See {@link defineParametrizedScene}. */
|
|
51
|
+
export interface ParametrizedSceneDefinition<P extends object, D = unknown> {
|
|
52
|
+
/** Optional stable id for logging or registry use. */
|
|
53
|
+
id?: string;
|
|
54
|
+
/** The default props. Also the source of the inferred prop schema. */
|
|
55
|
+
defaultProps: P;
|
|
56
|
+
/** Optional explicit per-prop type tags; inferred from defaults when absent. */
|
|
57
|
+
schema?: PropsSchema<P>;
|
|
58
|
+
/** Optional async hook that fetches data and overrides scene config. */
|
|
59
|
+
calculateMetadata?: CalculateMetadata<P, D>;
|
|
60
|
+
/** Builds the scene from resolved props + data. */
|
|
61
|
+
build: SceneBuilder<P, D>;
|
|
62
|
+
}
|
|
63
|
+
/** The resolved render metadata reported by {@link renderParametrized}. */
|
|
64
|
+
export interface ResolvedMetadata {
|
|
65
|
+
/** Duration in seconds, as returned by the metadata hook (may be undefined). */
|
|
66
|
+
duration?: number;
|
|
67
|
+
/** The scene's actual render width in pixels. */
|
|
68
|
+
width: number;
|
|
69
|
+
/** The scene's actual render height in pixels. */
|
|
70
|
+
height: number;
|
|
71
|
+
/** The scene's actual target fps. */
|
|
72
|
+
fps: number;
|
|
73
|
+
}
|
|
74
|
+
/** The result of {@link renderParametrized}. */
|
|
75
|
+
export interface ParametrizedRenderResult<P extends object, D> {
|
|
76
|
+
/** The built scene. */
|
|
77
|
+
scene: Scene;
|
|
78
|
+
/** The fully resolved props (defaults + input + metadata patch). */
|
|
79
|
+
props: P;
|
|
80
|
+
/** The data returned by the metadata hook, or undefined. */
|
|
81
|
+
data: D | undefined;
|
|
82
|
+
/** The resolved render metadata. */
|
|
83
|
+
metadata: ResolvedMetadata;
|
|
84
|
+
/** A shareable, URL-safe hash of the resolved props (reuses the URL codec). */
|
|
85
|
+
url: string;
|
|
86
|
+
}
|
|
87
|
+
/** Options for {@link renderParametrized}. */
|
|
88
|
+
export interface RenderParametrizedOptions {
|
|
89
|
+
/** Build into this scene instead of a fresh headless one. */
|
|
90
|
+
scene?: Scene;
|
|
91
|
+
/** Scene options for the created scene when `scene` is not supplied. */
|
|
92
|
+
sceneOptions?: SceneOptions;
|
|
93
|
+
/** Injected data fetcher. Defaults to the global `fetch` + JSON parse. */
|
|
94
|
+
fetch?: DataFetcher;
|
|
95
|
+
/** Write the resolved props to the URL hash (no-op headless). Default false. */
|
|
96
|
+
writeUrl?: boolean;
|
|
97
|
+
/** Use `history.replaceState` when writing the URL. Default true. */
|
|
98
|
+
urlReplace?: boolean;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Define a parametrized scene. This is a typed identity helper: it infers the
|
|
102
|
+
* props and data generics from the definition and returns it unchanged.
|
|
103
|
+
*
|
|
104
|
+
* @param definition - The scene definition (defaults, optional schema, optional
|
|
105
|
+
* metadata hook, build function).
|
|
106
|
+
* @returns The same definition, typed.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* const bar = defineParametrizedScene({
|
|
111
|
+
* defaultProps: { label: 'A', value: 1, color: '#58C4DD' },
|
|
112
|
+
* calculateMetadata: async ({ props, fetch }) => {
|
|
113
|
+
* const data = await fetch(`/api/series/${props.label}`);
|
|
114
|
+
* return { data, duration: 3, width: 1920, height: 1080, fps: 60 };
|
|
115
|
+
* },
|
|
116
|
+
* build: (scene, props, data) => {
|
|
117
|
+
* // ...assemble the scene from props + data
|
|
118
|
+
* },
|
|
119
|
+
* });
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function defineParametrizedScene<P extends object, D = unknown>(definition: ParametrizedSceneDefinition<P, D>): ParametrizedSceneDefinition<P, D>;
|
|
123
|
+
/**
|
|
124
|
+
* Resolve the effective props for a definition: a clone of the defaults with
|
|
125
|
+
* the input props merged over them (input wins). Each input value is coerced to
|
|
126
|
+
* the type of its default; an uncoercible or unknown key falls back to the
|
|
127
|
+
* default. Reused by {@link renderParametrized} and {@link propsFromUrl}.
|
|
128
|
+
*
|
|
129
|
+
* @param definition - The parametrized scene definition.
|
|
130
|
+
* @param inputProps - Partial input props (unknown keys are ignored).
|
|
131
|
+
* @returns The fully resolved props.
|
|
132
|
+
*/
|
|
133
|
+
export declare function resolveProps<P extends object, D>(definition: ParametrizedSceneDefinition<P, D>, inputProps?: PropsRecord): P;
|
|
134
|
+
/** Read props from the current URL hash and resolve them against the defaults. */
|
|
135
|
+
export declare function propsFromUrl<P extends object, D>(definition: ParametrizedSceneDefinition<P, D>): P;
|
|
136
|
+
/**
|
|
137
|
+
* Render a parametrized scene: merge input props over defaults (input wins),
|
|
138
|
+
* run `calculateMetadata` (which may fetch data and override size/fps/duration),
|
|
139
|
+
* apply the metadata to the scene, build the scene, and expose the resolved
|
|
140
|
+
* props as a shareable URL hash.
|
|
141
|
+
*
|
|
142
|
+
* Headless-safe: with no `scene` and no DOM it builds a headless scene and the
|
|
143
|
+
* URL write is a no-op. The data fetch goes through the injectable
|
|
144
|
+
* {@link DataFetcher} seam, so tests never touch the network.
|
|
145
|
+
*
|
|
146
|
+
* @param definition - The parametrized scene definition.
|
|
147
|
+
* @param inputProps - Partial input props (merged over the defaults).
|
|
148
|
+
* @param options - Scene, fetcher and URL-write options.
|
|
149
|
+
* @returns The built scene, resolved props, data, metadata and shareable URL.
|
|
150
|
+
*/
|
|
151
|
+
export declare function renderParametrized<P extends object, D = unknown>(definition: ParametrizedSceneDefinition<P, D>, inputProps?: PropsRecord, options?: RenderParametrizedOptions): Promise<ParametrizedRenderResult<P, D>>;
|
|
152
|
+
//# sourceMappingURL=parametrized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parametrized.d.ts","sourceRoot":"","sources":["../../src/serialization/parametrized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKzD,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExF;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAElF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhF,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM;IAC/C,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC;IACT,2DAA2D;IAC3D,KAAK,EAAE,WAAW,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAE,SAAQ,aAAa;IACjF,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,sCAAsC;IACtC,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CACnD,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,KACxB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5E,qEAAqE;AACrE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,CAAC,GAAG,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,4EAA4E;AAC5E,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO;IACxE,sDAAsD;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,YAAY,EAAE,CAAC,CAAC;IAChB,gFAAgF;IAChF,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,mDAAmD;IACnD,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAC3D,uBAAuB;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,oEAAoE;IACpE,KAAK,EAAE,CAAC,CAAC;IACT,4DAA4D;IAC5D,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wEAAwE;IACxE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAqFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,EACnE,UAAU,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5C,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAEnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC9C,UAAU,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7C,UAAU,CAAC,EAAE,WAAW,GACvB,CAAC,CAEH;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC9C,UAAU,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5C,CAAC,CAIH;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,EACpE,UAAU,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7C,UAAU,CAAC,EAAE,WAAW,EACxB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CA+CzC"}
|