@rasamjs/core 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API.md +14 -4
- package/CHANGELOG.md +71 -0
- package/COMPONENTS.md +229 -0
- package/README.md +46 -6
- package/RELEASING.md +4 -2
- 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 +76 -28
- package/dist/changes/restore.js.map +1 -1
- package/dist/changes/service.d.ts +5 -0
- package/dist/changes/service.d.ts.map +1 -1
- package/dist/changes/service.js +18 -4
- package/dist/changes/service.js.map +1 -1
- package/dist/changes/state.d.ts.map +1 -1
- package/dist/changes/state.js +33 -27
- package/dist/changes/state.js.map +1 -1
- package/dist/changes.d.ts.map +1 -1
- package/dist/changes.js +20 -4
- 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 +83 -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/interchange/clone.d.ts.map +1 -1
- package/dist/interchange/clone.js +3 -2
- package/dist/interchange/clone.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/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/types.d.ts +2 -2
- package/dist/mixins/types.d.ts.map +1 -1
- package/dist/resources/references.d.ts +2 -0
- package/dist/resources/references.d.ts.map +1 -1
- package/dist/resources/references.js +3 -3
- 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/claims.d.ts +7 -0
- package/dist/services/claims.d.ts.map +1 -0
- package/dist/services/claims.js +11 -0
- package/dist/services/claims.js.map +1 -0
- 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 +47 -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/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/internals.d.ts +1 -0
- package/dist/text/internals.d.ts.map +1 -1
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -1
- package/package.json +10 -1
- package/reports/adoption.json +20 -20
- package/reports/animation-benchmark.json +613 -613
- package/reports/benchmark.json +27 -27
- package/reports/change-groups-benchmark.json +471 -0
- 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/phase-3-core-after.json +40 -0
- package/reports/phase-3-core-before.json +40 -0
- package/reports/public-api-contract.json +335 -17
- package/reports/size-components.json +103 -0
- package/reports/size-parity.json +50 -34
- package/reports/size.json +7 -4
- package/reports/svgjs-comparison.json +3049 -3049
- package/reports/svgjs-comparison.md +15 -15
- package/reports/svgjs-parity-current.json +133 -46
- 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 +78 -36
- package/src/changes/service.ts +23 -8
- package/src/changes/state.ts +37 -28
- package/src/changes.ts +24 -5
- package/src/components/changes.ts +131 -0
- package/src/components/component.ts +401 -0
- package/src/components/decorators.ts +106 -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/interchange/clone.ts +3 -2
- package/src/interchange/reconstruct.ts +16 -12
- package/src/interchange/references.ts +12 -4
- package/src/mixins/parent-internals.ts +37 -0
- package/src/mixins/parent.ts +13 -4
- package/src/mixins/types.ts +2 -2
- package/src/resources/references.ts +5 -5
- package/src/services/catalog.ts +5 -3
- package/src/services/claims.ts +14 -0
- 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 +49 -10
- package/src/services/types.ts +21 -0
- 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/internals.ts +1 -0
- package/src/types/common.ts +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/components/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Component } from './component.js';
|
|
2
|
+
import type { ComponentClass, ComponentOptions, PropOptions } from './types.js';
|
|
3
|
+
export declare function component(options: ComponentOptions): <Class extends ComponentClass>(target: Class, _context: ClassDecoratorContext<Class>) => Class;
|
|
4
|
+
export declare function prop(options?: PropOptions): <Host extends Component, Value>(_target: undefined, context: ClassFieldDecoratorContext<Host, Value>) => (this: Host, value: Value) => Value;
|
|
5
|
+
export declare function state(): <Host extends Component, Value>(_target: undefined, context: ClassFieldDecoratorContext<Host, Value>) => (this: Host, value: Value) => Value;
|
|
6
|
+
export declare function action(label: string): <Host extends Component, Args extends unknown[], Result>(method: (this: Host, ...args: Args) => Result, context: ClassMethodDecoratorContext<Host, (this: Host, ...args: Args) => Result>) => (this: Host, ...args: Args) => Result;
|
|
7
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/components/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAKV,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,IACzC,KAAK,SAAS,cAAc,UAC1B,KAAK,YACH,qBAAqB,CAAC,KAAK,CAAC,KACrC,KAAK,CAmCT;AAwBD,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,IArBpC,IAAI,SAAS,SAAS,EAAE,KAAK,WAC1B,SAAS,WACT,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAYzB,IAAI,SAAS,KAAK,KAAG,KAAK,CASpD;AACD,wBAAgB,KAAK,KAxBX,IAAI,SAAS,SAAS,EAAE,KAAK,WAC1B,SAAS,WACT,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAYzB,IAAI,SAAS,KAAK,KAAG,KAAK,CAYpD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,IAC1B,IAAI,SAAS,SAAS,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,UACpD,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,WACpC,2BAA2B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,YAc1D,IAAI,WAAW,IAAI,KAAG,MAAM,CAItD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Component, installField, assertField, editComponent, registerAction, } from './component.js';
|
|
2
|
+
import { defineComponent } from './metadata.js';
|
|
3
|
+
import { initializeElement } from '../services/initialization.js';
|
|
4
|
+
import { destroySubtrees } from '../core/destruction.js';
|
|
5
|
+
import { claims, claimedSince } from '../services/claims.js';
|
|
6
|
+
import { withInternalStructure } from '../mixins/parent-internals.js';
|
|
7
|
+
export function component(options) {
|
|
8
|
+
return (target, _context) => {
|
|
9
|
+
if (!(target.prototype instanceof Component))
|
|
10
|
+
throw new TypeError('@component requires extends Component');
|
|
11
|
+
const Base = target;
|
|
12
|
+
const Decorated = class extends Base {
|
|
13
|
+
constructor(...args) {
|
|
14
|
+
// A marker, not a copy of every node: construction runs once per component.
|
|
15
|
+
const context = args[0], mark = claims;
|
|
16
|
+
try {
|
|
17
|
+
super(...args);
|
|
18
|
+
if (new.target === Decorated && !this.adopting)
|
|
19
|
+
this[initializeElement]();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const created = claimedSince(context.registry.nodes, mark);
|
|
23
|
+
if (created.length) {
|
|
24
|
+
try {
|
|
25
|
+
withInternalStructure(() => created[0][destroySubtrees](created));
|
|
26
|
+
}
|
|
27
|
+
catch (cleanup) {
|
|
28
|
+
throw new AggregateError([error, cleanup], 'Component construction and cleanup failed');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
// Inherit edit rules from the decorated application base, not this wrapper's implementation base.
|
|
36
|
+
defineComponent(Decorated, options);
|
|
37
|
+
Object.defineProperty(Decorated, 'variant', {
|
|
38
|
+
value: Object.freeze({ attribute: 'data-rasam-component', value: options.type }),
|
|
39
|
+
});
|
|
40
|
+
return Decorated;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function field(kind, options) {
|
|
44
|
+
return (_target, context) => {
|
|
45
|
+
if (context.kind !== 'field' ||
|
|
46
|
+
context.private ||
|
|
47
|
+
context.static ||
|
|
48
|
+
typeof context.name !== 'string')
|
|
49
|
+
throw new TypeError(`@${kind} requires a public instance field`);
|
|
50
|
+
context.addInitializer(function () {
|
|
51
|
+
this[installField](context.name, kind, options, context.access.get(this));
|
|
52
|
+
});
|
|
53
|
+
return function (value) {
|
|
54
|
+
// Validate before the JS field definition can overwrite a base instance member.
|
|
55
|
+
this[assertField](context.name);
|
|
56
|
+
return value;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function prop(options = {}) {
|
|
61
|
+
return field('prop', options);
|
|
62
|
+
}
|
|
63
|
+
export function state() {
|
|
64
|
+
return field('state', {});
|
|
65
|
+
}
|
|
66
|
+
export function action(label) {
|
|
67
|
+
return (method, context) => {
|
|
68
|
+
if (context.static ||
|
|
69
|
+
context.private ||
|
|
70
|
+
typeof context.name !== 'string' ||
|
|
71
|
+
!label.trim() ||
|
|
72
|
+
method.constructor.name === 'AsyncFunction')
|
|
73
|
+
throw new TypeError('@action requires a synchronous public instance method and label');
|
|
74
|
+
const name = context.name;
|
|
75
|
+
context.addInitializer(function () {
|
|
76
|
+
this[registerAction](name, label);
|
|
77
|
+
});
|
|
78
|
+
return function (...args) {
|
|
79
|
+
return this[editComponent](label, () => method.apply(this, args));
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/components/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PortDefinition } from '../types/common.js';
|
|
2
|
+
import type { ComponentClass, ComponentDefinition, ComponentOptions, PropOptions, PropValue } from './types.js';
|
|
3
|
+
export declare function definition(Constructor: object): ComponentDefinition;
|
|
4
|
+
export declare function defineComponent(Constructor: ComponentClass, options: ComponentOptions): void;
|
|
5
|
+
/** A saved size of a `resize: 'props'` component, in user units. */
|
|
6
|
+
export declare const isSize: (value: unknown) => value is number;
|
|
7
|
+
export declare function validateProp(value: unknown, initial: PropValue, options: PropOptions, name: string): asserts value is PropValue;
|
|
8
|
+
/** Checks what `ports()` returned and freezes a copy with only the known fields. */
|
|
9
|
+
export declare function validatePorts(ports: unknown): readonly PortDefinition[];
|
|
10
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACV,MAAM,YAAY,CAAC;AAIpB,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAInE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CA4C5F;AAED,oEAAoE;AACpE,eAAO,MAAM,MAAM,UAAW,OAAO,KAAG,KAAK,IAAI,MACiB,CAAC;AAEnE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,IAAI,SAAS,CAc5B;AAID,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,cAAc,EAAE,CAmBvE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const definitions = new WeakMap();
|
|
2
|
+
export function definition(Constructor) {
|
|
3
|
+
const result = definitions.get(Constructor);
|
|
4
|
+
if (!result)
|
|
5
|
+
throw new TypeError('Component classes require their own @component decorator');
|
|
6
|
+
return result;
|
|
7
|
+
}
|
|
8
|
+
export function defineComponent(Constructor, options) {
|
|
9
|
+
let parent = Object.getPrototypeOf(Constructor);
|
|
10
|
+
while (parent && !definitions.has(parent))
|
|
11
|
+
parent = Object.getPrototypeOf(parent);
|
|
12
|
+
const inherited = definitions.get(parent);
|
|
13
|
+
const result = {
|
|
14
|
+
category: 'General',
|
|
15
|
+
version: 1,
|
|
16
|
+
rotate: 'free',
|
|
17
|
+
flip: true,
|
|
18
|
+
resize: 'scale',
|
|
19
|
+
...(inherited
|
|
20
|
+
? {
|
|
21
|
+
rotate: inherited.rotate,
|
|
22
|
+
flip: inherited.flip,
|
|
23
|
+
resize: inherited.resize,
|
|
24
|
+
width: inherited.width,
|
|
25
|
+
height: inherited.height,
|
|
26
|
+
}
|
|
27
|
+
: {}),
|
|
28
|
+
...options,
|
|
29
|
+
};
|
|
30
|
+
if (result.resize === 'props')
|
|
31
|
+
Object.assign(result, { width: result.width ?? 100, height: result.height ?? 100 });
|
|
32
|
+
if (!/^[a-z][a-z0-9-]*$/.test(result.type) || !result.name?.trim() || !result.category?.trim())
|
|
33
|
+
throw new TypeError('Components need a lowercase type, display name and category');
|
|
34
|
+
if (!Number.isInteger(result.version) || result.version < 1)
|
|
35
|
+
throw new TypeError('Component version must be a positive integer');
|
|
36
|
+
if (result.rotate !== 'free' &&
|
|
37
|
+
result.rotate !== false &&
|
|
38
|
+
(!Number.isFinite(result.rotate) ||
|
|
39
|
+
result.rotate <= 0 ||
|
|
40
|
+
Math.abs(360 / result.rotate - Math.round(360 / result.rotate)) > 1e-8))
|
|
41
|
+
throw new TypeError('Rotation steps must be positive divisors of 360');
|
|
42
|
+
if (typeof result.flip !== 'boolean' || !['scale', 'props', false].includes(result.resize))
|
|
43
|
+
throw new TypeError('Invalid component flip or resize rule');
|
|
44
|
+
if (result.resize === 'props'
|
|
45
|
+
? !isSize(result.width) || !isSize(result.height)
|
|
46
|
+
: result.width !== undefined || result.height !== undefined)
|
|
47
|
+
throw new TypeError("Default sizes need resize: 'props' and positive finite numbers");
|
|
48
|
+
definitions.set(Constructor, Object.freeze(result));
|
|
49
|
+
}
|
|
50
|
+
/** A saved size of a `resize: 'props'` component, in user units. */
|
|
51
|
+
export const isSize = (value) => typeof value === 'number' && Number.isFinite(value) && value > 0;
|
|
52
|
+
export function validateProp(value, initial, options, name) {
|
|
53
|
+
if (value !== null && !['string', 'number', 'boolean'].includes(typeof value))
|
|
54
|
+
throw new TypeError(`Invalid component prop: ${name}`);
|
|
55
|
+
if (value !== null && initial !== null && typeof value !== typeof initial)
|
|
56
|
+
throw new TypeError(`Wrong type for component prop: ${name}`);
|
|
57
|
+
if (typeof value === 'number' &&
|
|
58
|
+
(!Number.isFinite(value) ||
|
|
59
|
+
value < (options.min ?? -Infinity) ||
|
|
60
|
+
value > (options.max ?? Infinity)))
|
|
61
|
+
throw new RangeError(`Component prop is outside its limits: ${name}`);
|
|
62
|
+
if (options.options && !options.options.includes(value))
|
|
63
|
+
throw new RangeError(`Unknown option for component prop: ${name}`);
|
|
64
|
+
}
|
|
65
|
+
const sides = ['left', 'right', 'top', 'bottom'];
|
|
66
|
+
/** Checks what `ports()` returned and freezes a copy with only the known fields. */
|
|
67
|
+
export function validatePorts(ports) {
|
|
68
|
+
if (!Array.isArray(ports))
|
|
69
|
+
throw new TypeError('Component ports() must return an array');
|
|
70
|
+
const names = new Set();
|
|
71
|
+
return Object.freeze(ports.map((port) => {
|
|
72
|
+
const { name, x, y, side } = port ?? {};
|
|
73
|
+
if (typeof name !== 'string' || !name)
|
|
74
|
+
throw new TypeError('Component port names must be non-empty strings');
|
|
75
|
+
if (names.has(name))
|
|
76
|
+
throw new TypeError(`Duplicate component port: ${name}`);
|
|
77
|
+
names.add(name);
|
|
78
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
79
|
+
throw new RangeError(`Component port ${name} needs finite x and y`);
|
|
80
|
+
if (side !== undefined && !sides.includes(side))
|
|
81
|
+
throw new TypeError(`Unknown side for component port ${name}: ${String(side)}`);
|
|
82
|
+
return Object.freeze(side === undefined ? { name, x: x, y: y } : { name, x: x, y: y, side });
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/components/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AnyNode } from '../core/types.js';
|
|
2
|
+
import type { ParentNode } from '../mixins/types.js';
|
|
3
|
+
import { Component } from './component.js';
|
|
4
|
+
import type { ComponentClass, ComponentDefinition } from './types.js';
|
|
5
|
+
/** Per-drawing type registration, palette metadata, icons and unknown-type warnings. */
|
|
6
|
+
export declare class ComponentTypes {
|
|
7
|
+
private readonly drawing;
|
|
8
|
+
private readonly types;
|
|
9
|
+
private readonly warned;
|
|
10
|
+
private readonly seen;
|
|
11
|
+
private readonly stop;
|
|
12
|
+
constructor(drawing: AnyNode, types?: readonly ComponentClass[]);
|
|
13
|
+
private inspect;
|
|
14
|
+
private warn;
|
|
15
|
+
register(Constructor: ComponentClass): this;
|
|
16
|
+
list(category?: string): readonly ComponentDefinition[];
|
|
17
|
+
get(type: string): ComponentClass | undefined;
|
|
18
|
+
icon(type: string, parent: ParentNode): Component;
|
|
19
|
+
resetState(): void;
|
|
20
|
+
destroy(): void;
|
|
21
|
+
}
|
|
22
|
+
/** Compose with selection's existing filter to keep rendered children closed. */
|
|
23
|
+
export declare function isComponentChild(node: AnyNode): boolean;
|
|
24
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/components/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtE,wFAAwF;AACxF,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,YACmB,OAAO,EAAE,OAAO,EACjC,KAAK,GAAE,SAAS,cAAc,EAAO,EAStC;IACD,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,IAAI;IAOZ,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI,CAQ1C;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,mBAAmB,EAAE,CAOtD;IACD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE5C;IACD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAIhD;IACD,UAAU,IAAI,IAAI,CAEjB;IACD,OAAO,IAAI,IAAI,CAEd;CACF;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAIvD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Guards } from '../mixins/guards.js';
|
|
2
|
+
import { ComponentChanges } from './changes.js';
|
|
3
|
+
import { Component } from './component.js';
|
|
4
|
+
import { definition } from './metadata.js';
|
|
5
|
+
/** Per-drawing type registration, palette metadata, icons and unknown-type warnings. */
|
|
6
|
+
export class ComponentTypes {
|
|
7
|
+
drawing;
|
|
8
|
+
types = new Map();
|
|
9
|
+
warned = new Set();
|
|
10
|
+
seen = new WeakSet();
|
|
11
|
+
stop;
|
|
12
|
+
constructor(drawing, types = []) {
|
|
13
|
+
this.drawing = drawing;
|
|
14
|
+
for (const Constructor of types)
|
|
15
|
+
this.register(Constructor);
|
|
16
|
+
this.stop = ComponentChanges.for(drawing).discover({
|
|
17
|
+
added: (node) => this.inspect(node),
|
|
18
|
+
identityChanged: (node) => this.warn(node),
|
|
19
|
+
});
|
|
20
|
+
drawing.onDispose(() => this.destroy());
|
|
21
|
+
this.inspect(drawing);
|
|
22
|
+
}
|
|
23
|
+
inspect(node) {
|
|
24
|
+
if (this.seen.has(node) || node.isDestroyed)
|
|
25
|
+
return;
|
|
26
|
+
this.seen.add(node);
|
|
27
|
+
this.warn(node);
|
|
28
|
+
if (Guards.isParent(node))
|
|
29
|
+
for (const child of node.children)
|
|
30
|
+
this.inspect(child);
|
|
31
|
+
}
|
|
32
|
+
warn(node) {
|
|
33
|
+
const type = node.getAttributeValue('data-rasam-component');
|
|
34
|
+
if (type !== undefined && !(node instanceof Component) && !this.warned.has(String(type))) {
|
|
35
|
+
this.warned.add(String(type));
|
|
36
|
+
console.warn(`Unknown rasam component type: ${type}; loaded as a plain group`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
register(Constructor) {
|
|
40
|
+
const metadata = definition(Constructor), previous = this.types.get(metadata.type);
|
|
41
|
+
if (previous && previous !== Constructor)
|
|
42
|
+
throw new Error(`Component type already registered: ${metadata.type}`);
|
|
43
|
+
this.drawing.context.registry.register(Constructor);
|
|
44
|
+
this.types.set(metadata.type, Constructor);
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
list(category) {
|
|
48
|
+
return Object.freeze([...this.types.values()]
|
|
49
|
+
.map((Constructor) => definition(Constructor))
|
|
50
|
+
.filter((metadata) => category === undefined || metadata.category === category)
|
|
51
|
+
.sort((a, b) => a.category.localeCompare(b.category) || a.name.localeCompare(b.name)));
|
|
52
|
+
}
|
|
53
|
+
get(type) {
|
|
54
|
+
return this.types.get(type);
|
|
55
|
+
}
|
|
56
|
+
icon(type, parent) {
|
|
57
|
+
const Constructor = this.get(type);
|
|
58
|
+
if (!Constructor)
|
|
59
|
+
throw new TypeError(`Unknown component type: ${type}`);
|
|
60
|
+
return parent.create(Constructor, {});
|
|
61
|
+
}
|
|
62
|
+
resetState() {
|
|
63
|
+
for (const node of this.drawing.descendants())
|
|
64
|
+
if (node instanceof Component)
|
|
65
|
+
node.resetState();
|
|
66
|
+
}
|
|
67
|
+
destroy() {
|
|
68
|
+
this.stop();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Compose with selection's existing filter to keep rendered children closed. */
|
|
72
|
+
export function isComponentChild(node) {
|
|
73
|
+
for (let parent = node.parent; parent; parent = parent.parent)
|
|
74
|
+
if (parent instanceof Component)
|
|
75
|
+
return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/components/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,wFAAwF;AACxF,MAAM,OAAO,cAAc;IAMN,OAAO;IALT,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1C,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3B,IAAI,GAAG,IAAI,OAAO,EAAW,CAAC;IAC9B,IAAI,CAAa;IAClC,YACmB,OAAgB,EACjC,KAAK,GAA8B,EAAE;uBADpB,OAAO;QAGxB,KAAK,MAAM,WAAW,IAAI,KAAK;YAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACjD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACnC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACO,OAAO,CAAC,IAAa;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IACO,IAAI,CAAC,IAAa;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QAC5D,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,2BAA2B,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,WAA2B;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,EACtC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,QAAQ,IAAI,QAAQ,KAAK,WAAW;YACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAA2B,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAiB;QACpB,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACrB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;aAC9E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxF,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAY,EAAE,MAAkB;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,MAAM,CAAC,WAA0C,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,UAAU;QACR,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,IAAI,YAAY,SAAS;gBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClG,CAAC;IACD,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;QAC3D,IAAI,MAAM,YAAY,SAAS;YAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { EditRules } from '../types/common.js';
|
|
2
|
+
import type { Component } from './component.js';
|
|
3
|
+
import type { DrawingContext } from '../services/context.js';
|
|
4
|
+
import type { ElementClass } from '../services/types.js';
|
|
5
|
+
export type PropValue = string | number | boolean | null;
|
|
6
|
+
export type ComponentProps = Readonly<Record<string, PropValue>>;
|
|
7
|
+
/** Standard decorators cannot distinguish props from other fields in the TS type system. */
|
|
8
|
+
export type ComponentFields<Instance extends Component> = {
|
|
9
|
+
[Key in Exclude<keyof Instance, keyof Component> as Instance[Key] extends PropValue ? Key : never]?: Instance[Key];
|
|
10
|
+
} & {
|
|
11
|
+
/** The saved size of a `resize: 'props'` component; other components reject it. */
|
|
12
|
+
readonly width?: number;
|
|
13
|
+
readonly height?: number;
|
|
14
|
+
};
|
|
15
|
+
export interface PropOptions {
|
|
16
|
+
readonly label?: string;
|
|
17
|
+
readonly unit?: string;
|
|
18
|
+
readonly min?: number;
|
|
19
|
+
readonly max?: number;
|
|
20
|
+
readonly step?: number;
|
|
21
|
+
readonly options?: readonly PropValue[];
|
|
22
|
+
readonly type?: 'color';
|
|
23
|
+
readonly notation?: 'si';
|
|
24
|
+
}
|
|
25
|
+
export interface ComponentOptions extends EditRules {
|
|
26
|
+
readonly type: string;
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly category?: string;
|
|
29
|
+
readonly version?: number;
|
|
30
|
+
readonly migrate?: (props: ComponentProps, version: number) => ComponentProps;
|
|
31
|
+
/** Default size for `resize: 'props'`, in user units. Defaults to 100. */
|
|
32
|
+
readonly width?: number;
|
|
33
|
+
readonly height?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ComponentDefinition extends ComponentOptions {
|
|
36
|
+
readonly category: string;
|
|
37
|
+
readonly version: number;
|
|
38
|
+
readonly rotate: NonNullable<EditRules['rotate']>;
|
|
39
|
+
readonly flip: boolean;
|
|
40
|
+
readonly resize: NonNullable<EditRules['resize']>;
|
|
41
|
+
}
|
|
42
|
+
export interface ComponentClass<Instance extends Component = Component> extends ElementClass<ComponentProps, Instance> {
|
|
43
|
+
new (context: DrawingContext, props?: ComponentProps, existing?: SVGGElement): Instance;
|
|
44
|
+
}
|
|
45
|
+
/** An `@action` method: its name and undo label. */
|
|
46
|
+
export interface ActionDefinition {
|
|
47
|
+
readonly name: string;
|
|
48
|
+
readonly label: string;
|
|
49
|
+
}
|
|
50
|
+
export interface PropDefinition extends PropOptions {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly initial: PropValue;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SvgTemplate } from '../template/svg-tag.js';
|
|
2
|
+
import type { Component } from './component.js';
|
|
3
|
+
/** Reuses saved wrappers when their structure matches the class's current template. */
|
|
4
|
+
export declare class ComponentView {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(owner: Component);
|
|
7
|
+
render(template: SvgTemplate): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/components/view.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,uFAAuF;AACvF,qBAAa,aAAa;;IAMxB,YAAY,KAAK,EAAE,SAAS,EAE3B;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CA8ClC;CAkDF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Group } from '../elements/group.js';
|
|
2
|
+
import { Renderer } from '../template/render.js';
|
|
3
|
+
import { BindingPart, TemplateCompiler, } from '../template/parts.js';
|
|
4
|
+
import { Guards } from '../mixins/guards.js';
|
|
5
|
+
import { destroySubtrees } from '../core/destruction.js';
|
|
6
|
+
import { Attributes } from '../dom/attributes.js';
|
|
7
|
+
/** Reuses saved wrappers when their structure matches the class's current template. */
|
|
8
|
+
export class ComponentView {
|
|
9
|
+
#instance;
|
|
10
|
+
#host;
|
|
11
|
+
#strings;
|
|
12
|
+
#parts = [];
|
|
13
|
+
#owner;
|
|
14
|
+
constructor(owner) {
|
|
15
|
+
this.#owner = owner;
|
|
16
|
+
}
|
|
17
|
+
render(template) {
|
|
18
|
+
if (this.#instance &&
|
|
19
|
+
!this.#instance.isDestroyed &&
|
|
20
|
+
this.#instance.host.parent === this.#owner &&
|
|
21
|
+
this.#instance.template.strings === template.strings) {
|
|
22
|
+
this.#instance.update(template);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (this.#host &&
|
|
26
|
+
!this.#host.isDestroyed &&
|
|
27
|
+
this.#host.parent === this.#owner &&
|
|
28
|
+
this.#strings === template.strings) {
|
|
29
|
+
this.#update(template);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.#parts = [];
|
|
33
|
+
// The first template-power phase owns structural holes; rebuild saved dynamic trees
|
|
34
|
+
// through its renderer instead of trying to infer their binding layout here.
|
|
35
|
+
const content = TemplateCompiler.content(this.#owner.context.dom, template.strings);
|
|
36
|
+
TemplateCompiler.validate(content, this.#owner.context.registry);
|
|
37
|
+
const descriptions = this.#hasChildHoles(content)
|
|
38
|
+
? undefined
|
|
39
|
+
: content.filter((item) => 'tag' in item);
|
|
40
|
+
const host = this.#owner.children.length === 1 ? this.#owner.children[0] : undefined;
|
|
41
|
+
if (descriptions &&
|
|
42
|
+
host instanceof Group &&
|
|
43
|
+
this.#attributesMatch(host, {}) &&
|
|
44
|
+
this.#matches(host.children, descriptions)) {
|
|
45
|
+
this.#bind(host.children, descriptions);
|
|
46
|
+
this.#host = host;
|
|
47
|
+
this.#strings = template.strings;
|
|
48
|
+
this.#instance = undefined;
|
|
49
|
+
this.#update(template);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const previous = [...this.#owner.children];
|
|
53
|
+
this.#instance = new Renderer(this.#owner).render(template);
|
|
54
|
+
if (previous.length)
|
|
55
|
+
this.#owner[destroySubtrees](previous);
|
|
56
|
+
this.#host = undefined;
|
|
57
|
+
this.#strings = undefined;
|
|
58
|
+
}
|
|
59
|
+
#attributesMatch(node, attributes) {
|
|
60
|
+
const names = node.attributes.entries().map(([name]) => name);
|
|
61
|
+
names.push(...node.el.getAttributeNames().map(Attributes.normalizeName));
|
|
62
|
+
return names.every((name) => Object.hasOwn(attributes, name));
|
|
63
|
+
}
|
|
64
|
+
#hasChildHoles(content) {
|
|
65
|
+
return content.some((item) => {
|
|
66
|
+
if (!('tag' in item))
|
|
67
|
+
return item.parts.some((part) => typeof part === 'number');
|
|
68
|
+
const Constructor = this.#owner.context.registry.get(item.tag);
|
|
69
|
+
return this.#hasChildHoles(Constructor?.isText ? item.children : item.content);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
#matches(nodes, descriptions) {
|
|
73
|
+
return (nodes.length === descriptions.length &&
|
|
74
|
+
nodes.every((node, index) => {
|
|
75
|
+
const description = descriptions[index];
|
|
76
|
+
return (!(Guards.isTextual(node) && description.text.length && description.children.length) &&
|
|
77
|
+
node.el.localName === description.tag &&
|
|
78
|
+
this.#attributesMatch(node, description.attributes) &&
|
|
79
|
+
(Guards.isParent(node)
|
|
80
|
+
? this.#matches(node.children, description.children)
|
|
81
|
+
: description.children.length === 0));
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
#bind(nodes, descriptions) {
|
|
85
|
+
nodes.forEach((node, index) => {
|
|
86
|
+
const description = descriptions[index];
|
|
87
|
+
for (const [name, parts] of Object.entries(description.attributes))
|
|
88
|
+
this.#parts.push(new BindingPart(node, name, parts));
|
|
89
|
+
if (description.text.length && Guards.isTextual(node)) {
|
|
90
|
+
this.#parts.push(new BindingPart(node, null, description.text));
|
|
91
|
+
}
|
|
92
|
+
if (Guards.isParent(node))
|
|
93
|
+
this.#bind(node.children, description.children);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
#update(template) {
|
|
97
|
+
const changes = this.#parts.map((part) => ({ part, value: part.evaluate(template.values) }));
|
|
98
|
+
for (const { part, value } of changes)
|
|
99
|
+
part.validate(value);
|
|
100
|
+
for (const { part, value } of changes)
|
|
101
|
+
part.commit(value);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/components/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Opt-in class component rendering, saved props and temporary live state. */
|
|
2
|
+
export { Component } from './components/component.js';
|
|
3
|
+
export { component, prop, state, action } from './components/decorators.js';
|
|
4
|
+
export { ComponentTypes, isComponentChild } from './components/registry.js';
|
|
5
|
+
export type { ActionDefinition, ComponentClass, ComponentDefinition, ComponentFields, ComponentOptions, ComponentProps, PropValue, PropOptions, PropDefinition, } from './components/types.js';
|
|
6
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Opt-in class component rendering, saved props and temporary live state. */
|
|
2
|
+
export { Component } from './components/component.js';
|
|
3
|
+
export { component, prop, state, action } from './components/decorators.js';
|
|
4
|
+
export { ComponentTypes, isComponentChild } from './components/registry.js';
|
|
5
|
+
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/core/node.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Attributes } from '../dom/attributes.js';
|
|
2
2
|
import { Emitter } from '../events/emitter.js';
|
|
3
3
|
import type { DrawingContext } from '../services/context.js';
|
|
4
|
+
import type { ElementVariant } from '../services/types.js';
|
|
4
5
|
import type { ParentNode } from '../mixins/types.js';
|
|
5
6
|
import type { AttributeValue, Bounds, CommonAttributes } from '../types/common.js';
|
|
6
7
|
import type { AnyNode, NodeEvents } from './types.js';
|
|
@@ -15,6 +16,10 @@ export declare class Node<Element extends SVGElement = SVGElement, Properties ex
|
|
|
15
16
|
static readonly isText: boolean;
|
|
16
17
|
static readonly childTags: readonly string[] | undefined;
|
|
17
18
|
static readonly forbiddenDescendantTags: readonly string[] | undefined;
|
|
19
|
+
/** See `ElementVariant`: one `data-*` attribute value selects this class for its tag. */
|
|
20
|
+
static readonly variant: ElementVariant | undefined;
|
|
21
|
+
/** When true, only the class itself changes its children, through `withOwnChildren()`. */
|
|
22
|
+
static readonly ownsChildren: boolean;
|
|
18
23
|
readonly el: Element;
|
|
19
24
|
readonly attributes: Attributes;
|
|
20
25
|
private eventEmitter?;
|
|
@@ -37,6 +42,8 @@ export declare class Node<Element extends SVGElement = SVGElement, Properties ex
|
|
|
37
42
|
[validateModelState](_state: ModelFeatures): void;
|
|
38
43
|
defineAttribute(name: string): void;
|
|
39
44
|
validateAttribute(name: string, value: AttributeValue): void;
|
|
45
|
+
/** For classes with `static ownsChildren`: change this node's own children. */
|
|
46
|
+
protected withOwnChildren<Result>(callback: () => Result): Result;
|
|
40
47
|
getAttributeValue(name: string): string | number | undefined;
|
|
41
48
|
attr<Key extends keyof Properties & string>(name: Key): Properties[Key] | undefined;
|
|
42
49
|
attr<Key extends keyof Properties & string>(name: Key, value: Properties[Key] | null | undefined): this;
|