@rasamjs/core 0.1.2 → 0.3.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/API.md +29 -9
- package/CHANGELOG.md +98 -1
- package/COMPONENTS.md +229 -0
- package/README.md +178 -25
- package/RELEASING.md +31 -21
- package/dist/advanced.d.ts +1 -1
- package/dist/advanced.d.ts.map +1 -1
- package/dist/catalog/fragment.d.ts +2 -2
- package/dist/catalog/fragment.d.ts.map +1 -1
- package/dist/catalog/fragment.js.map +1 -1
- package/dist/changes/derived.d.ts +10 -0
- package/dist/changes/derived.d.ts.map +1 -0
- package/dist/changes/derived.js +14 -0
- package/dist/changes/derived.js.map +1 -0
- package/dist/changes/restore.d.ts.map +1 -1
- package/dist/changes/restore.js +22 -4
- package/dist/changes/restore.js.map +1 -1
- package/dist/changes/service.d.ts +10 -2
- package/dist/changes/service.d.ts.map +1 -1
- package/dist/changes/service.js +45 -6
- package/dist/changes/service.js.map +1 -1
- package/dist/changes/types.d.ts +9 -0
- package/dist/changes/types.d.ts.map +1 -1
- package/dist/changes/types.js.map +1 -1
- package/dist/changes.d.ts +5 -3
- package/dist/changes.d.ts.map +1 -1
- package/dist/changes.js +103 -2
- package/dist/changes.js.map +1 -1
- package/dist/components/changes.d.ts +34 -0
- package/dist/components/changes.d.ts.map +1 -0
- package/dist/components/changes.js +119 -0
- package/dist/components/changes.js.map +1 -0
- package/dist/components/component.d.ts +62 -0
- package/dist/components/component.d.ts.map +1 -0
- package/dist/components/component.js +355 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/decorators.d.ts +7 -0
- package/dist/components/decorators.d.ts.map +1 -0
- package/dist/components/decorators.js +81 -0
- package/dist/components/decorators.js.map +1 -0
- package/dist/components/metadata.d.ts +10 -0
- package/dist/components/metadata.d.ts.map +1 -0
- package/dist/components/metadata.js +85 -0
- package/dist/components/metadata.js.map +1 -0
- package/dist/components/registry.d.ts +24 -0
- package/dist/components/registry.d.ts.map +1 -0
- package/dist/components/registry.js +78 -0
- package/dist/components/registry.js.map +1 -0
- package/dist/components/types.d.ts +54 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +2 -0
- package/dist/components/types.js.map +1 -0
- package/dist/components/view.d.ts +9 -0
- package/dist/components/view.d.ts.map +1 -0
- package/dist/components/view.js +104 -0
- package/dist/components/view.js.map +1 -0
- package/dist/components.d.ts +6 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +5 -0
- package/dist/components.js.map +1 -0
- package/dist/core/node.d.ts +7 -0
- package/dist/core/node.d.ts.map +1 -1
- package/dist/core/node.js +30 -0
- package/dist/core/node.js.map +1 -1
- package/dist/dom/images.d.ts.map +1 -1
- package/dist/dom/images.js +3 -1
- package/dist/dom/images.js.map +1 -1
- package/dist/elements/image.d.ts.map +1 -1
- package/dist/elements/image.js +4 -1
- package/dist/elements/image.js.map +1 -1
- package/dist/interchange/clone.d.ts.map +1 -1
- package/dist/interchange/clone.js +4 -3
- package/dist/interchange/clone.js.map +1 -1
- package/dist/interchange/dom.d.ts +3 -1
- package/dist/interchange/dom.d.ts.map +1 -1
- package/dist/interchange/dom.js +29 -5
- package/dist/interchange/dom.js.map +1 -1
- package/dist/interchange/markup.d.ts.map +1 -1
- package/dist/interchange/markup.js +71 -3
- package/dist/interchange/markup.js.map +1 -1
- package/dist/interchange/policy.d.ts.map +1 -1
- package/dist/interchange/policy.js +4 -0
- package/dist/interchange/policy.js.map +1 -1
- package/dist/interchange/reconstruct.d.ts.map +1 -1
- package/dist/interchange/reconstruct.js +16 -12
- package/dist/interchange/reconstruct.js.map +1 -1
- package/dist/interchange/references.d.ts.map +1 -1
- package/dist/interchange/references.js +10 -4
- package/dist/interchange/references.js.map +1 -1
- package/dist/interchange/types.d.ts +10 -1
- package/dist/interchange/types.d.ts.map +1 -1
- package/dist/mixins/parent-internals.d.ts +6 -0
- package/dist/mixins/parent-internals.d.ts.map +1 -1
- package/dist/mixins/parent-internals.js +34 -0
- package/dist/mixins/parent-internals.js.map +1 -1
- package/dist/mixins/parent.d.ts.map +1 -1
- package/dist/mixins/parent.js +6 -1
- package/dist/mixins/parent.js.map +1 -1
- package/dist/mixins/transformable.d.ts.map +1 -1
- package/dist/mixins/transformable.js +25 -27
- package/dist/mixins/transformable.js.map +1 -1
- package/dist/mixins/types.d.ts +2 -2
- package/dist/mixins/types.d.ts.map +1 -1
- package/dist/raster/frame.d.ts +12 -0
- package/dist/raster/frame.d.ts.map +1 -0
- package/dist/raster/frame.js +43 -0
- package/dist/raster/frame.js.map +1 -0
- package/dist/raster/images.d.ts +2 -0
- package/dist/raster/images.d.ts.map +1 -0
- package/dist/raster/images.js +60 -0
- package/dist/raster/images.js.map +1 -0
- package/dist/raster/render.d.ts +3 -0
- package/dist/raster/render.d.ts.map +1 -0
- package/dist/raster/render.js +40 -0
- package/dist/raster/render.js.map +1 -0
- package/dist/raster/types.d.ts +10 -0
- package/dist/raster/types.d.ts.map +1 -0
- package/dist/raster/types.js +2 -0
- package/dist/raster/types.js.map +1 -0
- package/dist/raster.d.ts +6 -0
- package/dist/raster.d.ts.map +1 -0
- package/dist/raster.js +10 -0
- package/dist/raster.js.map +1 -0
- package/dist/resources/references.d.ts +2 -0
- package/dist/resources/references.d.ts.map +1 -1
- package/dist/resources/references.js +3 -1
- package/dist/resources/references.js.map +1 -1
- package/dist/services/catalog.d.ts.map +1 -1
- package/dist/services/catalog.js +5 -3
- package/dist/services/catalog.js.map +1 -1
- package/dist/services/defs-manager.d.ts +2 -0
- package/dist/services/defs-manager.d.ts.map +1 -1
- package/dist/services/defs-manager.js +4 -0
- package/dist/services/defs-manager.js.map +1 -1
- package/dist/services/element-key.d.ts +4 -0
- package/dist/services/element-key.d.ts.map +1 -0
- package/dist/services/element-key.js +12 -0
- package/dist/services/element-key.js.map +1 -0
- package/dist/services/initialization.d.ts +7 -0
- package/dist/services/initialization.d.ts.map +1 -0
- package/dist/services/initialization.js +27 -0
- package/dist/services/initialization.js.map +1 -0
- package/dist/services/registry.d.ts +8 -0
- package/dist/services/registry.d.ts.map +1 -1
- package/dist/services/registry.js +45 -10
- package/dist/services/registry.js.map +1 -1
- package/dist/services/types.d.ts +17 -0
- package/dist/services/types.d.ts.map +1 -1
- package/dist/services/viewport.d.ts +2 -0
- package/dist/services/viewport.d.ts.map +1 -1
- package/dist/services/viewport.js +4 -3
- package/dist/services/viewport.js.map +1 -1
- package/dist/template/parts.d.ts +12 -6
- package/dist/template/parts.d.ts.map +1 -1
- package/dist/template/parts.js +36 -29
- package/dist/template/parts.js.map +1 -1
- package/dist/template/render.d.ts +6 -7
- package/dist/template/render.d.ts.map +1 -1
- package/dist/template/render.js +188 -44
- package/dist/template/render.js.map +1 -1
- package/dist/template/svg-tag.d.ts +5 -1
- package/dist/template/svg-tag.d.ts.map +1 -1
- package/dist/template/svg-tag.js.map +1 -1
- package/dist/text/content.d.ts +0 -2
- package/dist/text/content.d.ts.map +1 -1
- package/dist/text/content.js +4 -10
- package/dist/text/content.js.map +1 -1
- package/dist/text/internals.d.ts +1 -0
- package/dist/text/internals.d.ts.map +1 -1
- package/dist/text/policies.d.ts +7 -0
- package/dist/text/policies.d.ts.map +1 -0
- package/dist/text/policies.js +13 -0
- package/dist/text/policies.js.map +1 -0
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -1
- package/package.json +156 -143
- package/reports/adoption.json +20 -20
- package/reports/animation-benchmark.json +616 -616
- package/reports/benchmark.json +65 -65
- package/reports/components-benchmark-before.json +10 -0
- package/reports/components-benchmark.json +10 -0
- package/reports/creation.json +26 -26
- package/reports/interchange-benchmark.json +85 -85
- package/reports/public-api-contract.json +353 -23
- package/reports/public-api-review.md +23 -0
- package/reports/size-components.json +102 -0
- package/reports/size-parity.json +82 -34
- package/reports/size.json +6 -4
- package/reports/svgjs-comparison.json +3466 -3466
- package/reports/svgjs-comparison.md +19 -19
- package/reports/svgjs-parity-current.json +177 -60
- package/src/advanced.ts +1 -1
- package/src/catalog/fragment.ts +2 -2
- package/src/changes/derived.ts +19 -0
- package/src/changes/restore.ts +27 -4
- package/src/changes/service.ts +60 -11
- package/src/changes/types.ts +9 -0
- package/src/changes.ts +93 -4
- package/src/components/changes.ts +131 -0
- package/src/components/component.ts +401 -0
- package/src/components/decorators.ts +104 -0
- package/src/components/metadata.ts +111 -0
- package/src/components/registry.ts +79 -0
- package/src/components/types.ts +66 -0
- package/src/components/view.ts +123 -0
- package/src/components.ts +15 -0
- package/src/core/node.ts +32 -1
- package/src/dom/images.ts +2 -1
- package/src/elements/image.ts +4 -1
- package/src/interchange/clone.ts +4 -3
- package/src/interchange/dom.ts +34 -5
- package/src/interchange/markup.ts +77 -3
- package/src/interchange/policy.ts +6 -0
- package/src/interchange/reconstruct.ts +16 -12
- package/src/interchange/references.ts +12 -4
- package/src/interchange/types.ts +10 -1
- package/src/mixins/parent-internals.ts +37 -0
- package/src/mixins/parent.ts +13 -4
- package/src/mixins/transformable.ts +23 -25
- package/src/mixins/types.ts +2 -2
- package/src/raster/frame.ts +53 -0
- package/src/raster/images.ts +73 -0
- package/src/raster/render.ts +45 -0
- package/src/raster/types.ts +9 -0
- package/src/raster.ts +13 -0
- package/src/resources/references.ts +5 -1
- package/src/services/catalog.ts +5 -3
- package/src/services/defs-manager.ts +5 -0
- package/src/services/element-key.ts +14 -0
- package/src/services/initialization.ts +25 -0
- package/src/services/registry.ts +47 -10
- package/src/services/types.ts +21 -0
- package/src/services/viewport.ts +5 -4
- package/src/template/parts.ts +54 -39
- package/src/template/render.ts +211 -54
- package/src/template/svg-tag.ts +6 -1
- package/src/text/content.ts +4 -14
- package/src/text/internals.ts +1 -0
- package/src/text/policies.ts +18 -0
- package/src/types/common.ts +29 -0
package/dist/services/types.d.ts
CHANGED
|
@@ -4,6 +4,19 @@ import type { DrawingContext } from './context.js';
|
|
|
4
4
|
import type { AttributeValue } from '../types/common.js';
|
|
5
5
|
import { validateAttributeValue } from '../core/attribute-validation.js';
|
|
6
6
|
import { validateNativeElement } from '../core/native-validation.js';
|
|
7
|
+
/** Type-only capability for constructors whose options come from instance fields. */
|
|
8
|
+
export declare const creationOptions: unique symbol;
|
|
9
|
+
export type CreationOptions<Options, Instance> = Instance extends {
|
|
10
|
+
readonly [creationOptions]: infer Fields;
|
|
11
|
+
} ? Fields : Options;
|
|
12
|
+
/**
|
|
13
|
+
* Selects a subclass for elements that share a tag, by the exact value of one `data-*`
|
|
14
|
+
* attribute. Instances always carry that value, and it can't change.
|
|
15
|
+
*/
|
|
16
|
+
export interface ElementVariant {
|
|
17
|
+
readonly attribute: string;
|
|
18
|
+
readonly value: string;
|
|
19
|
+
}
|
|
7
20
|
export interface ElementClass<Options = any, Result extends AnyNode = AnyNode> {
|
|
8
21
|
readonly tag: string;
|
|
9
22
|
readonly attributeNames: readonly string[];
|
|
@@ -12,6 +25,10 @@ export interface ElementClass<Options = any, Result extends AnyNode = AnyNode> {
|
|
|
12
25
|
readonly childTags?: readonly string[] | undefined;
|
|
13
26
|
readonly forbiddenDescendantTags?: readonly string[] | undefined;
|
|
14
27
|
readonly opaqueContent?: boolean;
|
|
28
|
+
/** Registers the class for one attribute value of its tag instead of the whole tag. */
|
|
29
|
+
readonly variant?: ElementVariant | undefined;
|
|
30
|
+
/** Children belong to the class: outside structural edits throw. */
|
|
31
|
+
readonly ownsChildren?: boolean;
|
|
15
32
|
[validateAttributeValue]?(name: string, value: AttributeValue): void;
|
|
16
33
|
[validateNativeElement]?(element: SVGElement): void;
|
|
17
34
|
new (context: DrawingContext, options: Options, existing?: any): Result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrE,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,KAAK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CACzE;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,qFAAqF;AACrF,MAAM,CAAC,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AACpD,MAAM,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,SAAS;IAChE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;CAC1C,GACG,MAAM,GACN,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrE,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,KAAK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CACzE;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
@@ -6,6 +6,8 @@ type Axis = 'width' | 'height';
|
|
|
6
6
|
export declare const isNestedViewport: (node: AnyNode) => boolean;
|
|
7
7
|
/** Reports unresolved viewport geometry as unavailable bounds; other failures propagate. */
|
|
8
8
|
export declare function unresolved(error: unknown): Bounds;
|
|
9
|
+
/** Resolve an authored viewport length against its original ancestor viewport. */
|
|
10
|
+
export declare function viewportLength(node: AnyNode, name: string, axis: Axis, fallback: unknown): number;
|
|
9
11
|
/** A viewport's width or height in its parent's user units; omitted sizes are 100%. */
|
|
10
12
|
export declare function viewportSize(node: AnyNode, axis: Axis): number;
|
|
11
13
|
/** Placement and viewBox transform from a nested viewport's user space to its parent's. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../src/services/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,KAAK,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;AAI/B,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,SAAU,OAAO,YAAmD,CAAC;AAElG,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../src/services/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,KAAK,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;AAI/B,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,SAAU,OAAO,YAAmD,CAAC;AAElG,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CASjG;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAI9D;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAWrD"}
|
|
@@ -10,7 +10,8 @@ export function unresolved(error) {
|
|
|
10
10
|
return BBox.unavailable(error.message);
|
|
11
11
|
throw error;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/** Resolve an authored viewport length against its original ancestor viewport. */
|
|
14
|
+
export function viewportLength(node, name, axis, fallback) {
|
|
14
15
|
return userLength(node.getAttributeValue(name) ?? fallback, () => {
|
|
15
16
|
// Percentages use the nearest ancestor viewport's viewBox, or its size without one.
|
|
16
17
|
let viewport = node === node.context.root ? null : node.parent;
|
|
@@ -24,14 +25,14 @@ function length(node, name, axis, fallback) {
|
|
|
24
25
|
}
|
|
25
26
|
/** A viewport's width or height in its parent's user units; omitted sizes are 100%. */
|
|
26
27
|
export function viewportSize(node, axis) {
|
|
27
|
-
const size =
|
|
28
|
+
const size = viewportLength(node, axis, axis, '100%');
|
|
28
29
|
if (size < 0)
|
|
29
30
|
throw new ViewportError('Negative viewport size');
|
|
30
31
|
return size;
|
|
31
32
|
}
|
|
32
33
|
/** Placement and viewBox transform from a nested viewport's user space to its parent's. */
|
|
33
34
|
export function viewportMapping(node) {
|
|
34
|
-
const x =
|
|
35
|
+
const x = viewportLength(node, 'x', 'width', 0), y = viewportLength(node, 'y', 'height', 0), viewBox = node.getAttributeValue('viewBox');
|
|
35
36
|
return viewBox === undefined
|
|
36
37
|
? Matrix.translation(x, y)
|
|
37
38
|
: viewportMatrix({ x, y, width: viewportSize(node, 'width'), height: viewportSize(node, 'height') }, viewBoxValue(viewBox), String(node.getAttributeValue('preserveAspectRatio') ?? 'xMidYMid'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../src/services/viewport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK9F,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC;AAE9E,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAElG,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,YAAY,aAAa;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,KAAK,CAAC;AACd,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../src/services/viewport.ts"],"names":[],"mappings":"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"}
|
package/dist/template/parts.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AnyNode } from '../core/types.js';
|
|
2
2
|
import type { DomFactory } from '../dom/create.js';
|
|
3
3
|
import type { Registry } from '../services/registry.js';
|
|
4
|
+
import type { ElementClass } from '../services/types.js';
|
|
4
5
|
import type { TemplateValue } from './svg-tag.js';
|
|
5
6
|
import type { TextBinding } from '../text/internals.js';
|
|
6
7
|
export type PartValue = string | number;
|
|
@@ -9,16 +10,22 @@ export interface TemplateDescription {
|
|
|
9
10
|
readonly attributes: Readonly<Record<string, readonly PartValue[]>>;
|
|
10
11
|
readonly children: readonly TemplateDescription[];
|
|
11
12
|
readonly text: readonly PartValue[];
|
|
12
|
-
readonly content: readonly
|
|
13
|
-
readonly parts: readonly PartValue[];
|
|
14
|
-
})[];
|
|
13
|
+
readonly content: readonly ContentItem[];
|
|
15
14
|
}
|
|
15
|
+
/** An element, or a text run whose number parts are hole indexes (child holes outside text). */
|
|
16
|
+
export type ContentItem = TemplateDescription | {
|
|
17
|
+
readonly parts: readonly PartValue[];
|
|
18
|
+
};
|
|
16
19
|
export declare class TemplateCompiler {
|
|
17
20
|
private static readonly cache;
|
|
18
21
|
private readonly counts;
|
|
19
22
|
private constructor();
|
|
23
|
+
/** Top-level elements; templates with top-level child holes need `content()`. */
|
|
20
24
|
static compile(dom: DomFactory, strings: TemplateStringsArray): readonly TemplateDescription[];
|
|
21
|
-
|
|
25
|
+
/** Top-level content in order: elements and text runs that may hold child holes. */
|
|
26
|
+
static content(dom: DomFactory, strings: TemplateStringsArray): readonly ContentItem[];
|
|
27
|
+
/** `parent` is the container class that receives `content`, for its child rules. */
|
|
28
|
+
static validate(content: readonly ContentItem[], registry: Registry, forbidden?: ReadonlySet<string>, parent?: ElementClass): void;
|
|
22
29
|
private split;
|
|
23
30
|
private describe;
|
|
24
31
|
}
|
|
@@ -27,11 +34,10 @@ export declare class BindingPart {
|
|
|
27
34
|
private readonly name;
|
|
28
35
|
private readonly parts;
|
|
29
36
|
private readonly textBinding?;
|
|
30
|
-
private previous;
|
|
31
37
|
constructor(node: AnyNode, name: string | null, parts: readonly PartValue[], textBinding?: TextBinding);
|
|
32
38
|
evaluate(values: readonly TemplateValue[]): string | undefined;
|
|
33
39
|
validate(value: string | undefined): void;
|
|
34
|
-
commit(value: string | undefined
|
|
40
|
+
commit(value: string | undefined): void;
|
|
35
41
|
private static primitive;
|
|
36
42
|
}
|
|
37
43
|
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,mBAAmB,GAAG;
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAC;AAEzF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA+D;IAC5F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAElC,OAAO,eAEN;IAED,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,mBAAmB,EAAE,CAW7F;IAED,oFAAoF;IACpF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,WAAW,EAAE,CAgBrF;IAED,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CACb,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,WAAW,CAAC,MAAM,CAAa,EAC1C,MAAM,CAAC,EAAE,YAAY,GACpB,IAAI,CAoCN;IAED,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,QAAQ;CA8BjB;AAED,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAJ/B,YACmB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,WAAW,CAAC,EAAE,WAAW,EACxC;IAEJ,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,SAAS,CAa7D;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAiBxC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAYtC;IAED,OAAO,CAAC,MAAM,CAAC,SAAS;CAMzB"}
|
package/dist/template/parts.js
CHANGED
|
@@ -7,7 +7,16 @@ export class TemplateCompiler {
|
|
|
7
7
|
constructor(strings) {
|
|
8
8
|
this.counts = new Array(strings.length - 1).fill(0);
|
|
9
9
|
}
|
|
10
|
+
/** Top-level elements; templates with top-level child holes need `content()`. */
|
|
10
11
|
static compile(dom, strings) {
|
|
12
|
+
const content = TemplateCompiler.content(dom, strings);
|
|
13
|
+
if (content.some((item) => !('tag' in item) &&
|
|
14
|
+
item.parts.some((part) => part !== '' && (typeof part == 'number' || part.trim()))))
|
|
15
|
+
throw new TypeError('Template text must be inside a text element');
|
|
16
|
+
return content.filter((item) => 'tag' in item);
|
|
17
|
+
}
|
|
18
|
+
/** Top-level content in order: elements and text runs that may hold child holes. */
|
|
19
|
+
static content(dom, strings) {
|
|
11
20
|
const cached = TemplateCompiler.cache.get(strings);
|
|
12
21
|
if (cached)
|
|
13
22
|
return cached;
|
|
@@ -18,38 +27,41 @@ export class TemplateCompiler {
|
|
|
18
27
|
.map((part, index) => part + (index < strings.length - 1 ? `rasamHole${index}End` : ''))
|
|
19
28
|
.join('');
|
|
20
29
|
const result = [];
|
|
21
|
-
for (const node of dom.parse(source))
|
|
22
|
-
|
|
23
|
-
if (description)
|
|
24
|
-
result.push(description);
|
|
25
|
-
}
|
|
30
|
+
for (const node of dom.parse(source))
|
|
31
|
+
result.push('text' in node ? { parts: compiler.split(node.text) } : compiler.describe(node));
|
|
26
32
|
if (compiler.counts.some((count) => count !== 1))
|
|
27
33
|
throw new TypeError('Bindings must appear in attribute values or text elements');
|
|
28
34
|
TemplateCompiler.cache.set(strings, result);
|
|
29
35
|
return result;
|
|
30
36
|
}
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
/** `parent` is the container class that receives `content`, for its child rules. */
|
|
38
|
+
static validate(content, registry, forbidden = new Set(), parent) {
|
|
39
|
+
for (const description of content) {
|
|
40
|
+
if (!('tag' in description)) {
|
|
41
|
+
if (description.parts.some((part) => typeof part == 'string' && part.trim()))
|
|
42
|
+
throw new TypeError('Template text must be inside a text element');
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
33
45
|
const Constructor = registry.get(description.tag);
|
|
34
46
|
if (forbidden.has(description.tag))
|
|
35
47
|
throw new TypeError('Nested links or forbidden descendants are unsupported');
|
|
36
48
|
if (!Constructor)
|
|
37
49
|
throw new TypeError(`Unsupported template tag: ${description.tag}`);
|
|
50
|
+
if (parent?.childTags && !parent.childTags.includes(description.tag))
|
|
51
|
+
throw new TypeError(`${parent.tag} only accepts ${parent.childTags.join(', ')} children`);
|
|
38
52
|
for (const name of Object.keys(description.attributes)) {
|
|
39
53
|
if (!Constructor.attributeNames.includes(name) && !/^(?:data|aria)-[\w-]+$/.test(name))
|
|
40
54
|
throw new TypeError(`Unsupported template attribute: ${name}`);
|
|
41
55
|
}
|
|
42
56
|
if (description.children.length > 0 && !Constructor.isContainer)
|
|
43
57
|
throw new TypeError('Only containers may have element children');
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (description.text.some((part) => typeof part === 'number' || part.trim()) &&
|
|
48
|
-
!Constructor.isText)
|
|
58
|
+
// Outside text elements, holes between children are child holes, so only containers take them.
|
|
59
|
+
if (!Constructor.isText &&
|
|
60
|
+
description.text.some((part) => typeof part == 'number' ? !Constructor.isContainer : part.trim()))
|
|
49
61
|
throw new TypeError('Text bindings require a text element');
|
|
50
|
-
TemplateCompiler.validate(description.children, registry, Constructor.forbiddenDescendantTags
|
|
62
|
+
TemplateCompiler.validate(Constructor.isText ? description.children : description.content, registry, Constructor.forbiddenDescendantTags
|
|
51
63
|
? new Set([...forbidden, ...Constructor.forbiddenDescendantTags])
|
|
52
|
-
: forbidden);
|
|
64
|
+
: forbidden, Constructor);
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
67
|
split(value) {
|
|
@@ -67,11 +79,6 @@ export class TemplateCompiler {
|
|
|
67
79
|
return parts;
|
|
68
80
|
}
|
|
69
81
|
describe(node) {
|
|
70
|
-
if ('text' in node) {
|
|
71
|
-
if (node.text.trim())
|
|
72
|
-
throw new TypeError('Template text must be inside a text element');
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
82
|
if (/rasamHole\d+End/.test(node.tag))
|
|
76
83
|
throw new TypeError('Dynamic tag names are unsupported');
|
|
77
84
|
const attributes = {};
|
|
@@ -97,10 +104,8 @@ export class TemplateCompiler {
|
|
|
97
104
|
}
|
|
98
105
|
else {
|
|
99
106
|
const description = this.describe(child);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
content.push(description);
|
|
103
|
-
}
|
|
107
|
+
children.push(description);
|
|
108
|
+
content.push(description);
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
return { tag: node.tag, attributes, children, text, content };
|
|
@@ -111,7 +116,6 @@ export class BindingPart {
|
|
|
111
116
|
name;
|
|
112
117
|
parts;
|
|
113
118
|
textBinding;
|
|
114
|
-
previous;
|
|
115
119
|
constructor(node, name, parts, textBinding) {
|
|
116
120
|
this.node = node;
|
|
117
121
|
this.name = name;
|
|
@@ -150,20 +154,23 @@ export class BindingPart {
|
|
|
150
154
|
throw new TypeError('Templates support only local url(#id) references');
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
|
-
commit(value
|
|
154
|
-
if (!initial && value === this.previous)
|
|
155
|
-
return;
|
|
157
|
+
commit(value) {
|
|
156
158
|
if (this.name === null) {
|
|
157
159
|
if (!Guards.isTextual(this.node))
|
|
158
160
|
throw new TypeError('Text binding requires the Textual mixin');
|
|
161
|
+
if ((this.textBinding ? this.textBinding.value : this.node.text()) === (value ?? ''))
|
|
162
|
+
return;
|
|
159
163
|
if (this.textBinding)
|
|
160
164
|
this.textBinding.set(value ?? '');
|
|
161
165
|
else
|
|
162
166
|
this.node.text(value ?? '');
|
|
163
167
|
}
|
|
164
|
-
else
|
|
168
|
+
else {
|
|
169
|
+
const current = this.node.getAttributeValue(this.name);
|
|
170
|
+
if ((current === undefined ? undefined : String(current)) === value)
|
|
171
|
+
return;
|
|
165
172
|
this.node.setAttributeValue(this.name, value);
|
|
166
|
-
|
|
173
|
+
}
|
|
167
174
|
}
|
|
168
175
|
static primitive(value) {
|
|
169
176
|
if (value == null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,19 +2,18 @@ import type { AnyNode } from '../core/types.js';
|
|
|
2
2
|
import type { ParentNode } from '../mixins/types.js';
|
|
3
3
|
import { Group } from '../elements/group.js';
|
|
4
4
|
import type { Registry } from '../services/registry.js';
|
|
5
|
-
import type {
|
|
6
|
-
import
|
|
5
|
+
import type { ContentItem } from './parts.js';
|
|
6
|
+
import { SvgTemplate } from './svg-tag.js';
|
|
7
7
|
export declare class TemplateInstance {
|
|
8
8
|
readonly template: SvgTemplate;
|
|
9
9
|
readonly host: Group;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
private readonly mount;
|
|
11
|
+
constructor(parent: ParentNode, template: SvgTemplate, registry: Registry, content: readonly ContentItem[]);
|
|
12
|
+
/** The current top-level nodes, including those that child holes render. */
|
|
13
|
+
get nodes(): readonly AnyNode[];
|
|
13
14
|
get isDestroyed(): boolean;
|
|
14
15
|
update(template: SvgTemplate): this;
|
|
15
16
|
destroy(): void;
|
|
16
|
-
private instantiate;
|
|
17
|
-
private bind;
|
|
18
17
|
}
|
|
19
18
|
export declare class Renderer {
|
|
20
19
|
private readonly parent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/template/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/template/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAkM3C,qBAAa,gBAAgB;IAMzB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IALhC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,YACE,MAAM,EAAE,UAAU,EACT,QAAQ,EAAE,WAAW,EAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,SAAS,WAAW,EAAE,EAShC;IAED,4EAA4E;IAC5E,IAAI,KAAK,IAAI,SAAS,OAAO,EAAE,CAE9B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQlC;IAED,OAAO,IAAI,IAAI,CAEd;CACF;AAED,qBAAa,QAAQ;IAKjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,YACmB,MAAM,EAAE,UAAU,EAClB,QAAQ,WAA0B,EAMpD;IAED,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,WAAW,EACrB,QAAQ,WAA0B,GACjC,gBAAgB,CAOlB;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAuB9C;CACF"}
|