@motion-script/core 0.2.5 → 1.0.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/assets/index.d.ts +2 -1
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/manager.d.ts +15 -0
- package/dist/assets/manager.d.ts.map +1 -1
- package/dist/assets/manager.js +61 -0
- package/dist/assets/manager.js.map +1 -1
- package/dist/assets/record.d.ts +22 -2
- package/dist/assets/record.d.ts.map +1 -1
- package/dist/assets/tracker.d.ts +10 -8
- package/dist/assets/tracker.d.ts.map +1 -1
- package/dist/assets/tracker.js +16 -8
- package/dist/assets/tracker.js.map +1 -1
- package/dist/attributes/index.d.ts +1 -1
- package/dist/attributes/index.d.ts.map +1 -1
- package/dist/attributes/index.js +1 -1
- package/dist/attributes/index.js.map +1 -1
- package/dist/attributes/shape/fill/blend.d.ts +3 -3
- package/dist/attributes/shape/fill/blend.d.ts.map +1 -1
- package/dist/attributes/shape/fill/blend.js +2 -2
- package/dist/attributes/shape/fill/blend.js.map +1 -1
- package/dist/attributes/shape/fill/index.d.ts +1 -1
- package/dist/attributes/shape/fill/index.d.ts.map +1 -1
- package/dist/attributes/shape/fill/index.js +1 -1
- package/dist/attributes/shape/fill/index.js.map +1 -1
- package/dist/attributes/shape/stroke/index.d.ts +2 -2
- package/dist/attributes/shape/stroke/index.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/index.js +1 -1
- package/dist/attributes/shape/stroke/index.js.map +1 -1
- package/dist/attributes/shape/stroke/lerp.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/lerp.js +1 -0
- package/dist/attributes/shape/stroke/lerp.js.map +1 -1
- package/dist/attributes/shape/stroke/mapper.d.ts +18 -0
- package/dist/attributes/shape/stroke/mapper.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/mapper.js +14 -0
- package/dist/attributes/shape/stroke/mapper.js.map +1 -1
- package/dist/layout/flex.d.ts +12 -0
- package/dist/layout/flex.d.ts.map +1 -1
- package/dist/layout/flex.js +31 -18
- package/dist/layout/flex.js.map +1 -1
- package/dist/layout/grid.d.ts +1 -1
- package/dist/layout/grid.d.ts.map +1 -1
- package/dist/layout/grid.js +24 -6
- package/dist/layout/grid.js.map +1 -1
- package/dist/nodes/base/node.d.ts +28 -0
- package/dist/nodes/base/node.d.ts.map +1 -1
- package/dist/nodes/base/node.js +40 -1
- package/dist/nodes/base/node.js.map +1 -1
- package/dist/nodes/base/scene-node.d.ts +11 -0
- package/dist/nodes/base/scene-node.d.ts.map +1 -1
- package/dist/nodes/base/scene-node.js +31 -0
- package/dist/nodes/base/scene-node.js.map +1 -1
- package/dist/nodes/geometry/grid-node.d.ts.map +1 -1
- package/dist/nodes/geometry/grid-node.js +8 -4
- package/dist/nodes/geometry/grid-node.js.map +1 -1
- package/dist/nodes/geometry/rect-node.d.ts +2 -0
- package/dist/nodes/geometry/rect-node.d.ts.map +1 -1
- package/dist/nodes/geometry/rect-node.js +35 -15
- package/dist/nodes/geometry/rect-node.js.map +1 -1
- package/dist/nodes/geometry/shape-node.d.ts +2 -0
- package/dist/nodes/geometry/shape-node.d.ts.map +1 -1
- package/dist/nodes/geometry/shape-node.js +19 -7
- package/dist/nodes/geometry/shape-node.js.map +1 -1
- package/dist/platform/storage-adapter.d.ts.map +1 -1
- package/dist/platform/storage-adapter.js +4 -0
- package/dist/platform/storage-adapter.js.map +1 -1
- package/dist/runtime/playback-controller.d.ts +2 -0
- package/dist/runtime/playback-controller.d.ts.map +1 -1
- package/dist/runtime/playback-controller.js +17 -0
- package/dist/runtime/playback-controller.js.map +1 -1
- package/dist/runtime/precompisition.js +10 -0
- package/dist/runtime/precompisition.js.map +1 -1
- package/package.json +6 -5
- package/dist/assets/manager.test.d.ts +0 -2
- package/dist/assets/manager.test.d.ts.map +0 -1
- package/dist/assets/manager.test.js +0 -133
- package/dist/assets/manager.test.js.map +0 -1
- package/dist/attributes/layout/padding.test.d.ts +0 -2
- package/dist/attributes/layout/padding.test.d.ts.map +0 -1
- package/dist/attributes/layout/padding.test.js +0 -32
- package/dist/attributes/layout/padding.test.js.map +0 -1
- package/dist/attributes/layout/vector2.test.d.ts +0 -2
- package/dist/attributes/layout/vector2.test.d.ts.map +0 -1
- package/dist/attributes/layout/vector2.test.js +0 -23
- package/dist/attributes/layout/vector2.test.js.map +0 -1
- package/dist/attributes/properties/decorator.test.d.ts +0 -2
- package/dist/attributes/properties/decorator.test.d.ts.map +0 -1
- package/dist/attributes/properties/decorator.test.js +0 -52
- package/dist/attributes/properties/decorator.test.js.map +0 -1
- package/dist/attributes/shape/corners/border-radius.test.d.ts +0 -2
- package/dist/attributes/shape/corners/border-radius.test.d.ts.map +0 -1
- package/dist/attributes/shape/corners/border-radius.test.js +0 -52
- package/dist/attributes/shape/corners/border-radius.test.js.map +0 -1
- package/dist/attributes/shape/effects/chain.test.d.ts +0 -2
- package/dist/attributes/shape/effects/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/effects/chain.test.js +0 -63
- package/dist/attributes/shape/effects/chain.test.js.map +0 -1
- package/dist/attributes/shape/fill/blend.test.d.ts +0 -2
- package/dist/attributes/shape/fill/blend.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/blend.test.js +0 -18
- package/dist/attributes/shape/fill/blend.test.js.map +0 -1
- package/dist/attributes/shape/fill/chain.test.d.ts +0 -2
- package/dist/attributes/shape/fill/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/chain.test.js +0 -92
- package/dist/attributes/shape/fill/chain.test.js.map +0 -1
- package/dist/attributes/shape/fill/color/parser.test.d.ts +0 -2
- package/dist/attributes/shape/fill/color/parser.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/color/parser.test.js +0 -99
- package/dist/attributes/shape/fill/color/parser.test.js.map +0 -1
- package/dist/attributes/shape/fill/lerp.test.d.ts +0 -2
- package/dist/attributes/shape/fill/lerp.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/lerp.test.js +0 -18
- package/dist/attributes/shape/fill/lerp.test.js.map +0 -1
- package/dist/attributes/shape/filters/chain.test.d.ts +0 -2
- package/dist/attributes/shape/filters/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/filters/chain.test.js +0 -49
- package/dist/attributes/shape/filters/chain.test.js.map +0 -1
- package/dist/attributes/shape/filters/registry.test.d.ts +0 -5
- package/dist/attributes/shape/filters/registry.test.d.ts.map +0 -1
- package/dist/attributes/shape/filters/registry.test.js +0 -75
- package/dist/attributes/shape/filters/registry.test.js.map +0 -1
- package/dist/attributes/shape/path/bezier.test.d.ts +0 -2
- package/dist/attributes/shape/path/bezier.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/bezier.test.js +0 -85
- package/dist/attributes/shape/path/bezier.test.js.map +0 -1
- package/dist/attributes/shape/path/dash.test.d.ts +0 -2
- package/dist/attributes/shape/path/dash.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/dash.test.js +0 -36
- package/dist/attributes/shape/path/dash.test.js.map +0 -1
- package/dist/attributes/shape/path/length.test.d.ts +0 -2
- package/dist/attributes/shape/path/length.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/length.test.js +0 -56
- package/dist/attributes/shape/path/length.test.js.map +0 -1
- package/dist/attributes/shape/path/subpath.test.d.ts +0 -2
- package/dist/attributes/shape/path/subpath.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/subpath.test.js +0 -54
- package/dist/attributes/shape/path/subpath.test.js.map +0 -1
- package/dist/attributes/text/lerp.test.d.ts +0 -2
- package/dist/attributes/text/lerp.test.d.ts.map +0 -1
- package/dist/attributes/text/lerp.test.js +0 -39
- package/dist/attributes/text/lerp.test.js.map +0 -1
- package/dist/layout/flex.test.d.ts +0 -2
- package/dist/layout/flex.test.d.ts.map +0 -1
- package/dist/layout/flex.test.js +0 -336
- package/dist/layout/flex.test.js.map +0 -1
- package/dist/layout/padding.test.d.ts +0 -2
- package/dist/layout/padding.test.d.ts.map +0 -1
- package/dist/layout/padding.test.js +0 -39
- package/dist/layout/padding.test.js.map +0 -1
- package/dist/layout/size-resolver.test.d.ts +0 -2
- package/dist/layout/size-resolver.test.d.ts.map +0 -1
- package/dist/layout/size-resolver.test.js +0 -24
- package/dist/layout/size-resolver.test.js.map +0 -1
- package/dist/layout/tweens.test.d.ts +0 -2
- package/dist/layout/tweens.test.d.ts.map +0 -1
- package/dist/layout/tweens.test.js +0 -26
- package/dist/layout/tweens.test.js.map +0 -1
- package/dist/project/config.test.d.ts +0 -2
- package/dist/project/config.test.d.ts.map +0 -1
- package/dist/project/config.test.js +0 -28
- package/dist/project/config.test.js.map +0 -1
- package/dist/render/descriptors/path.test.d.ts +0 -2
- package/dist/render/descriptors/path.test.d.ts.map +0 -1
- package/dist/render/descriptors/path.test.js +0 -40
- package/dist/render/descriptors/path.test.js.map +0 -1
- package/dist/runtime/playback-controller.test.d.ts +0 -2
- package/dist/runtime/playback-controller.test.d.ts.map +0 -1
- package/dist/runtime/playback-controller.test.js +0 -148
- package/dist/runtime/playback-controller.test.js.map +0 -1
- package/dist/runtime/precompisition.test.d.ts +0 -2
- package/dist/runtime/precompisition.test.d.ts.map +0 -1
- package/dist/runtime/precompisition.test.js +0 -138
- package/dist/runtime/precompisition.test.js.map +0 -1
- package/dist/runtime/runtime.fixtures.d.ts +0 -158
- package/dist/runtime/runtime.fixtures.d.ts.map +0 -1
- package/dist/runtime/runtime.fixtures.js +0 -264
- package/dist/runtime/runtime.fixtures.js.map +0 -1
- package/dist/runtime/state-evaluator.test.d.ts +0 -2
- package/dist/runtime/state-evaluator.test.d.ts.map +0 -1
- package/dist/runtime/state-evaluator.test.js +0 -122
- package/dist/runtime/state-evaluator.test.js.map +0 -1
- package/dist/signals/create.test.d.ts +0 -2
- package/dist/signals/create.test.d.ts.map +0 -1
- package/dist/signals/create.test.js +0 -81
- package/dist/signals/create.test.js.map +0 -1
- package/dist/signals/signal-cell.test.d.ts +0 -2
- package/dist/signals/signal-cell.test.d.ts.map +0 -1
- package/dist/signals/signal-cell.test.js +0 -202
- package/dist/signals/signal-cell.test.js.map +0 -1
- package/dist/signals/signal.test.d.ts +0 -2
- package/dist/signals/signal.test.d.ts.map +0 -1
- package/dist/signals/signal.test.js +0 -192
- package/dist/signals/signal.test.js.map +0 -1
- package/dist/tween/eases.test.d.ts +0 -2
- package/dist/tween/eases.test.d.ts.map +0 -1
- package/dist/tween/eases.test.js +0 -91
- package/dist/tween/eases.test.js.map +0 -1
- package/dist/tween/lerp.test.d.ts +0 -2
- package/dist/tween/lerp.test.d.ts.map +0 -1
- package/dist/tween/lerp.test.js +0 -22
- package/dist/tween/lerp.test.js.map +0 -1
- package/dist/tween/prepare.test.d.ts +0 -2
- package/dist/tween/prepare.test.d.ts.map +0 -1
- package/dist/tween/prepare.test.js +0 -44
- package/dist/tween/prepare.test.js.map +0 -1
- package/dist/tween/sequence.test.d.ts +0 -2
- package/dist/tween/sequence.test.d.ts.map +0 -1
- package/dist/tween/sequence.test.js +0 -68
- package/dist/tween/sequence.test.js.map +0 -1
- package/dist/tween/tests/batched-parallel.test.d.ts +0 -2
- package/dist/tween/tests/batched-parallel.test.d.ts.map +0 -1
- package/dist/tween/tests/batched-parallel.test.js +0 -76
- package/dist/tween/tests/batched-parallel.test.js.map +0 -1
- package/dist/tween/tests/parallel.test.d.ts +0 -2
- package/dist/tween/tests/parallel.test.d.ts.map +0 -1
- package/dist/tween/tests/parallel.test.js +0 -129
- package/dist/tween/tests/parallel.test.js.map +0 -1
- package/dist/tween/tests/realtime.test.d.ts +0 -2
- package/dist/tween/tests/realtime.test.d.ts.map +0 -1
- package/dist/tween/tests/realtime.test.js +0 -76
- package/dist/tween/tests/realtime.test.js.map +0 -1
- package/dist/tween/tween.test.d.ts +0 -2
- package/dist/tween/tween.test.d.ts.map +0 -1
- package/dist/tween/tween.test.js +0 -38
- package/dist/tween/tween.test.js.map +0 -1
- package/dist/tween/wait.test.d.ts +0 -2
- package/dist/tween/wait.test.d.ts.map +0 -1
- package/dist/tween/wait.test.js +0 -35
- package/dist/tween/wait.test.js.map +0 -1
- package/dist/util/clamp.test.d.ts +0 -2
- package/dist/util/clamp.test.d.ts.map +0 -1
- package/dist/util/clamp.test.js +0 -31
- package/dist/util/clamp.test.js.map +0 -1
- package/dist/util/random.test.d.ts +0 -2
- package/dist/util/random.test.d.ts.map +0 -1
- package/dist/util/random.test.js +0 -42
- package/dist/util/random.test.js.map +0 -1
- package/dist/util/reference.test.d.ts +0 -2
- package/dist/util/reference.test.d.ts.map +0 -1
- package/dist/util/reference.test.js +0 -32
- package/dist/util/reference.test.js.map +0 -1
package/dist/assets/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { AssetCatalog } from "./catalog";
|
|
2
2
|
export type { ImageMeta, VideoMeta, AudioMeta, FontMeta, AssetMeta, AssetManifest } from "./manifest";
|
|
3
|
-
export { AssetTracker
|
|
3
|
+
export { AssetTracker } from "./tracker";
|
|
4
|
+
export type { LoaderFn, Disposer } from "./record";
|
|
4
5
|
export { AssetManager } from "./manager";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/assets/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/assets/manager.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export declare class AssetManager {
|
|
|
12
12
|
private lastAudioRequestKey;
|
|
13
13
|
private lastAudioSrcs;
|
|
14
14
|
private audioFetching;
|
|
15
|
+
/** Disposers for loaders whose load has resolved, keyed by loader key. */
|
|
16
|
+
private loaderDisposers;
|
|
17
|
+
/** In-flight loader runs, keyed by loader key, to dedupe concurrent calls. */
|
|
18
|
+
private loaderInFlight;
|
|
15
19
|
constructor(precomp: PrecompResult, storageAdapter: StorageAdapter, audioDevice: AudioDevice);
|
|
16
20
|
/**
|
|
17
21
|
* Blocking load for seek and initial render. Waits for every asset whose
|
|
@@ -23,6 +27,17 @@ export declare class AssetManager {
|
|
|
23
27
|
* loads for assets whose cacheAt window has been reached without blocking.
|
|
24
28
|
*/
|
|
25
29
|
prefetch(frame: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Drive a single loader track toward the state `frame` requires. If `frame`
|
|
32
|
+
* is inside the loader's `[cacheAt, discardAt]` window, run its callback
|
|
33
|
+
* (deduped — at most one in-flight run, skipped once loaded) and return the
|
|
34
|
+
* pending job, if any. If `frame` is outside the window and the loader was
|
|
35
|
+
* loaded, dispose it. Returns the in-flight load promise so a blocking
|
|
36
|
+
* caller can await it; `undefined` when there's nothing to wait for.
|
|
37
|
+
*/
|
|
38
|
+
private syncLoader;
|
|
39
|
+
/** Run every outstanding loader disposer and clear loader state. */
|
|
40
|
+
dispose(): void;
|
|
26
41
|
/**
|
|
27
42
|
* Push the current audio working set to the AudioDevice. Called after each
|
|
28
43
|
* render tick so the device stays in sync with the scene's audio requests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAc,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAErE;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAoC;IAEzD,0EAA0E;IAC1E,OAAO,CAAC,eAAe,CAA+B;IACtD,8EAA8E;IAC9E,OAAO,CAAC,cAAc,CAAoC;gBAGtD,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW;IAS5B;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB7B;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IA+BlB,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CA4CjC"}
|
package/dist/assets/manager.js
CHANGED
|
@@ -9,6 +9,10 @@ export class AssetManager {
|
|
|
9
9
|
lastAudioRequestKey = "";
|
|
10
10
|
lastAudioSrcs = new Set();
|
|
11
11
|
audioFetching = new Map();
|
|
12
|
+
/** Disposers for loaders whose load has resolved, keyed by loader key. */
|
|
13
|
+
loaderDisposers = new Map();
|
|
14
|
+
/** In-flight loader runs, keyed by loader key, to dedupe concurrent calls. */
|
|
15
|
+
loaderInFlight = new Map();
|
|
12
16
|
constructor(precomp, storageAdapter, audioDevice) {
|
|
13
17
|
this.precomp = precomp;
|
|
14
18
|
this.storageAdapter = storageAdapter;
|
|
@@ -22,6 +26,12 @@ export class AssetManager {
|
|
|
22
26
|
async loadAt(frame) {
|
|
23
27
|
const jobs = [];
|
|
24
28
|
for (const [key, track] of this.precomp.assets) {
|
|
29
|
+
if (track.record.type === 'loader') {
|
|
30
|
+
const job = this.syncLoader(key, track, frame);
|
|
31
|
+
if (job)
|
|
32
|
+
jobs.push(job);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
25
35
|
if (track.cacheAt <= frame && track.record.endFrame >= frame) {
|
|
26
36
|
jobs.push(this.storageAdapter.loadAsset(key, track.record));
|
|
27
37
|
}
|
|
@@ -35,6 +45,12 @@ export class AssetManager {
|
|
|
35
45
|
*/
|
|
36
46
|
prefetch(frame) {
|
|
37
47
|
for (const [key, track] of this.precomp.assets) {
|
|
48
|
+
if (track.record.type === 'loader') {
|
|
49
|
+
this.syncLoader(key, track, frame)?.catch(err => {
|
|
50
|
+
console.error(`[AssetManager] loader failed for ${key}:`, err);
|
|
51
|
+
});
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
38
54
|
if (track.cacheAt <= frame && track.record.endFrame >= frame) {
|
|
39
55
|
this.storageAdapter.loadAsset(key, track.record).catch(err => {
|
|
40
56
|
console.error(`[AssetManager] prefetch failed for ${key}:`, err);
|
|
@@ -42,6 +58,51 @@ export class AssetManager {
|
|
|
42
58
|
}
|
|
43
59
|
}
|
|
44
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Drive a single loader track toward the state `frame` requires. If `frame`
|
|
63
|
+
* is inside the loader's `[cacheAt, discardAt]` window, run its callback
|
|
64
|
+
* (deduped — at most one in-flight run, skipped once loaded) and return the
|
|
65
|
+
* pending job, if any. If `frame` is outside the window and the loader was
|
|
66
|
+
* loaded, dispose it. Returns the in-flight load promise so a blocking
|
|
67
|
+
* caller can await it; `undefined` when there's nothing to wait for.
|
|
68
|
+
*/
|
|
69
|
+
syncLoader(key, track, frame) {
|
|
70
|
+
if (track.record.type !== 'loader')
|
|
71
|
+
return undefined;
|
|
72
|
+
const discardAt = track.discardAt ?? Infinity;
|
|
73
|
+
const inWindow = track.cacheAt <= frame && frame <= discardAt;
|
|
74
|
+
if (!inWindow) {
|
|
75
|
+
const dispose = this.loaderDisposers.get(key);
|
|
76
|
+
if (dispose) {
|
|
77
|
+
this.loaderDisposers.delete(key);
|
|
78
|
+
dispose();
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
// Already loaded for this window, or a run is already in flight.
|
|
83
|
+
if (this.loaderDisposers.has(key))
|
|
84
|
+
return undefined;
|
|
85
|
+
const existing = this.loaderInFlight.get(key);
|
|
86
|
+
if (existing)
|
|
87
|
+
return existing;
|
|
88
|
+
const load = track.record.load;
|
|
89
|
+
const job = load()
|
|
90
|
+
.then(disposer => {
|
|
91
|
+
this.loaderDisposers.set(key, disposer);
|
|
92
|
+
})
|
|
93
|
+
.finally(() => {
|
|
94
|
+
this.loaderInFlight.delete(key);
|
|
95
|
+
});
|
|
96
|
+
this.loaderInFlight.set(key, job);
|
|
97
|
+
return job;
|
|
98
|
+
}
|
|
99
|
+
/** Run every outstanding loader disposer and clear loader state. */
|
|
100
|
+
dispose() {
|
|
101
|
+
for (const dispose of this.loaderDisposers.values())
|
|
102
|
+
dispose();
|
|
103
|
+
this.loaderDisposers.clear();
|
|
104
|
+
this.loaderInFlight.clear();
|
|
105
|
+
}
|
|
45
106
|
/**
|
|
46
107
|
* Push the current audio working set to the AudioDevice. Called after each
|
|
47
108
|
* render tick so the device stays in sync with the scene's audio requests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/assets/record.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export type AssetType = 'image' | 'font' | 'video' | 'audio';
|
|
1
|
+
export type AssetType = 'image' | 'font' | 'video' | 'audio' | 'loader';
|
|
2
|
+
/** Frees whatever a {@link LoaderFn} loaded. Called when its window is evicted. */
|
|
3
|
+
export type Disposer = () => void;
|
|
4
|
+
/**
|
|
5
|
+
* An opaque async load owned by the requesting package. Runs the load and
|
|
6
|
+
* resolves with a {@link Disposer} that frees it. The core never inspects what
|
|
7
|
+
* was loaded — this is how a component package (e.g. the code component's Shiki
|
|
8
|
+
* highlighter) loads its own resources without core depending on it.
|
|
9
|
+
*/
|
|
10
|
+
export type LoaderFn = () => Promise<Disposer>;
|
|
2
11
|
/** Frame-range entry tracked by {@link AssetTracker} for a single asset. */
|
|
3
12
|
interface BaseAssetRecord {
|
|
4
13
|
type: AssetType;
|
|
@@ -34,7 +43,18 @@ export interface AudioRecord extends BaseAssetRecord {
|
|
|
34
43
|
trimStart: number;
|
|
35
44
|
trimEnd: number;
|
|
36
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* A generic, opaque async load tracked on the timeline like any other asset.
|
|
48
|
+
* Unlike images/fonts/etc. it isn't dispatched by {@link StorageAdapter}; the
|
|
49
|
+
* {@link AssetManager} runs {@link load} directly when the frame window opens
|
|
50
|
+
* and calls the returned {@link Disposer} when it evicts. `src` is the dedupe
|
|
51
|
+
* key (e.g. `lang:java|github-dark`).
|
|
52
|
+
*/
|
|
53
|
+
export interface LoaderRecord extends BaseAssetRecord {
|
|
54
|
+
type: 'loader';
|
|
55
|
+
load: LoaderFn;
|
|
56
|
+
}
|
|
37
57
|
/** Union of all per-type cached entry shapes. */
|
|
38
|
-
export type AssetRecord = ImageRecord | FontRecord | VideoRecord | AudioRecord;
|
|
58
|
+
export type AssetRecord = ImageRecord | FontRecord | VideoRecord | AudioRecord | LoaderRecord;
|
|
39
59
|
export {};
|
|
40
60
|
//# sourceMappingURL=record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/assets/record.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/assets/record.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExE,mFAAmF;AACnF,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AAI/C,4EAA4E;AAC5E,UAAU,eAAe;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,eAAe;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAa,SAAQ,eAAe;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC"}
|
package/dist/assets/tracker.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { AssetRecord } from "../assets/record";
|
|
1
|
+
import { AssetRecord, LoaderFn } from "../assets/record";
|
|
2
2
|
import { AssetCatalog } from "./catalog";
|
|
3
3
|
import type { AudioRequest } from "../attributes/audio/request";
|
|
4
|
-
/** A thunk that performs an async asset load and resolves when the asset is ready. */
|
|
5
|
-
export type LoaderFunction = () => Promise<unknown>;
|
|
6
4
|
/**
|
|
7
5
|
* Collects asset requests emitted during a frame render pass and maintains their
|
|
8
6
|
* frame-range entries. Call {@link start} before rendering a frame and {@link end}
|
|
@@ -12,15 +10,19 @@ export declare class AssetTracker {
|
|
|
12
10
|
private readonly _catalog;
|
|
13
11
|
constructor(assetCatalog: AssetCatalog);
|
|
14
12
|
get catalog(): AssetCatalog;
|
|
15
|
-
/**
|
|
16
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Register an opaque async loader needed at the current frame, tracked on the
|
|
15
|
+
* timeline by `key` so the {@link AssetManager} runs it once its cache window
|
|
16
|
+
* opens and disposes it when the window closes. Deduped by `key` (like
|
|
17
|
+
* {@link requestFont} by family): the first registration's `load` callback is
|
|
18
|
+
* kept and its frame range extends as later frames re-request the same key.
|
|
19
|
+
*/
|
|
20
|
+
requestLoader(key: string, load: LoaderFn): void;
|
|
17
21
|
/** Pending requests collected during the current frame's load pass. */
|
|
18
22
|
private requestedAssets;
|
|
19
|
-
private loaders;
|
|
20
23
|
private _audioRequests;
|
|
21
24
|
private _audioIds;
|
|
22
25
|
get assets(): ReadonlyMap<string, AssetRecord>;
|
|
23
|
-
get pendingLoaders(): readonly LoaderFunction[];
|
|
24
26
|
get audioRequests(): readonly AudioRequest[];
|
|
25
27
|
/**
|
|
26
28
|
* Add an audio playback request. Stored by reference so mutations from stop()
|
|
@@ -61,7 +63,7 @@ export declare class AssetTracker {
|
|
|
61
63
|
requestFont(fontFamily: string, fontWeight: string): void;
|
|
62
64
|
/** Remove all tracked entries whose frame ranges fall entirely outside [startFrame, endFrame]. */
|
|
63
65
|
discardOutside(startFrame: number, endFrame: number): void;
|
|
64
|
-
/** Clear all tracked entries
|
|
66
|
+
/** Clear all tracked entries (including loaders) without releasing the instance. */
|
|
65
67
|
clear(): void;
|
|
66
68
|
/** Release all state; the instance should not be used after this call. */
|
|
67
69
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/assets/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/assets/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAC5B,YAAY,EAAE,YAAY;IAItC,IAAI,OAAO,IAAI,YAAY,CAA0B;IAErD;;;;;;OAMG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAUhD,uEAAuE;IACvE,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,SAAS,CAAqB;IAEtC,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAiC;IAC/E,IAAI,aAAa,IAAI,SAAS,YAAY,EAAE,CAAgC;IAE5E;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAMxC,wGAAwG;IACxG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW/B,+GAA+G;IAC/G,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,YAAY,CAAC,CAAS;IAE9B,2FAA2F;IAC3F,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,2CAA2C;IAC3C,GAAG,IAAI,IAAI;IAMX,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB,+FAA+F;IAC/F,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,GAAG,IAAI;IAuBtE,8FAA8F;IAC9F,YAAY,CACR,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAAU,EACjB,MAAM,GAAE,MAAU,EAClB,SAAS,GAAE,MAAU,EACrB,OAAO,CAAC,EAAE,MAAM,GACjB,IAAI;IAyBP;;;;;;;;;;OAUG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAYzD,kGAAkG;IAClG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ1D,oFAAoF;IACpF,KAAK;IAUL,0EAA0E;IAC1E,OAAO,IAAI,IAAI;CAKlB"}
|
package/dist/assets/tracker.js
CHANGED
|
@@ -9,17 +9,27 @@ export class AssetTracker {
|
|
|
9
9
|
this._catalog = assetCatalog;
|
|
10
10
|
}
|
|
11
11
|
get catalog() { return this._catalog; }
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Register an opaque async loader needed at the current frame, tracked on the
|
|
14
|
+
* timeline by `key` so the {@link AssetManager} runs it once its cache window
|
|
15
|
+
* opens and disposes it when the window closes. Deduped by `key` (like
|
|
16
|
+
* {@link requestFont} by family): the first registration's `load` callback is
|
|
17
|
+
* kept and its frame range extends as later frames re-request the same key.
|
|
18
|
+
*/
|
|
19
|
+
requestLoader(key, load) {
|
|
20
|
+
this.upsertAsset(key, (frame) => ({
|
|
21
|
+
type: 'loader',
|
|
22
|
+
src: key,
|
|
23
|
+
startFrame: frame,
|
|
24
|
+
endFrame: frame,
|
|
25
|
+
load,
|
|
26
|
+
}));
|
|
15
27
|
}
|
|
16
28
|
/** Pending requests collected during the current frame's load pass. */
|
|
17
29
|
requestedAssets = new Map();
|
|
18
|
-
loaders = [];
|
|
19
30
|
_audioRequests = [];
|
|
20
31
|
_audioIds = new Set();
|
|
21
32
|
get assets() { return this.requestedAssets; }
|
|
22
|
-
get pendingLoaders() { return this.loaders; }
|
|
23
33
|
get audioRequests() { return this._audioRequests; }
|
|
24
34
|
/**
|
|
25
35
|
* Add an audio playback request. Stored by reference so mutations from stop()
|
|
@@ -159,10 +169,9 @@ export class AssetTracker {
|
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
171
|
}
|
|
162
|
-
/** Clear all tracked entries
|
|
172
|
+
/** Clear all tracked entries (including loaders) without releasing the instance. */
|
|
163
173
|
clear() {
|
|
164
174
|
this.requestedAssets.clear();
|
|
165
|
-
this.loaders.length = 0;
|
|
166
175
|
this._audioRequests.length = 0;
|
|
167
176
|
this._audioIds.clear();
|
|
168
177
|
}
|
|
@@ -170,7 +179,6 @@ export class AssetTracker {
|
|
|
170
179
|
/** Release all state; the instance should not be used after this call. */
|
|
171
180
|
dispose() {
|
|
172
181
|
this.requestedAssets.clear();
|
|
173
|
-
this.loaders.length = 0;
|
|
174
182
|
this._audioRequests.length = 0;
|
|
175
183
|
this._audioIds.clear();
|
|
176
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/assets/tracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/assets/tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,5 +14,5 @@ export * from './mask/mask';
|
|
|
14
14
|
export * from './text/align';
|
|
15
15
|
export * from './text/lerp';
|
|
16
16
|
export * from './text/span';
|
|
17
|
-
export
|
|
17
|
+
export { property, PropOptions } from './properties/decorator';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attributes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attributes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/attributes/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attributes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAc,MAAM,eAAe,CAAC;AAElD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attributes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAc,MAAM,eAAe,CAAC;AAElD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAe,MAAM,wBAAwB,CAAC"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* to an integer hash for fast uniform uploads.
|
|
6
6
|
*/
|
|
7
7
|
/** Every supported blend mode, in hash-index order. */
|
|
8
|
-
export declare const
|
|
9
|
-
/** CSS `mix-blend-mode` keyword — derived from {@link
|
|
10
|
-
export type BlendMode = typeof
|
|
8
|
+
export declare const BlendModes: readonly ["multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal"];
|
|
9
|
+
/** CSS `mix-blend-mode` keyword — derived from {@link BlendModes}. */
|
|
10
|
+
export type BlendMode = typeof BlendModes[number];
|
|
11
11
|
/** Returns the integer hash for a blend mode, used as a shader uniform. */
|
|
12
12
|
export declare function getBlendModeHash(blend: BlendMode): number;
|
|
13
13
|
//# sourceMappingURL=blend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blend.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/blend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"blend.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/blend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,eAAO,MAAM,UAAU,2MAiBb,CAAC;AAEX,sEAAsE;AACtE,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAQlD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAEzD"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* to an integer hash for fast uniform uploads.
|
|
6
6
|
*/
|
|
7
7
|
/** Every supported blend mode, in hash-index order. */
|
|
8
|
-
export const
|
|
8
|
+
export const BlendModes = [
|
|
9
9
|
"multiply",
|
|
10
10
|
"screen",
|
|
11
11
|
"overlay",
|
|
@@ -24,7 +24,7 @@ export const BLEND_MODES_LIST = [
|
|
|
24
24
|
"normal"
|
|
25
25
|
];
|
|
26
26
|
// Pre-built reverse lookup so getBlendModeHash is O(1).
|
|
27
|
-
const BLEND_MODE_HASH = Object.fromEntries(
|
|
27
|
+
const BLEND_MODE_HASH = Object.fromEntries(BlendModes.map((mode, i) => [mode, i]));
|
|
28
28
|
/** Returns the integer hash for a blend mode, used as a shader uniform. */
|
|
29
29
|
export function getBlendModeHash(blend) {
|
|
30
30
|
return BLEND_MODE_HASH[blend];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blend.js","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/blend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"blend.js","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/blend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,KAAK;IACL,YAAY;IACZ,OAAO;IACP,YAAY;IACZ,QAAQ;CACF,CAAC;AAKX,wDAAwD;AACxD,MAAM,eAAe,GACjB,MAAM,CAAC,WAAW,CACd,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACZ,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BLEND_MODES_LIST, getBlendModeHash } from './blend';
|
|
1
|
+
export { BlendModes as BLEND_MODES_LIST, getBlendModeHash } from './blend';
|
|
2
2
|
export type { BlendMode } from './blend';
|
|
3
3
|
export { setTheme, parseColor } from './color/parser';
|
|
4
4
|
export type { NormalizedColor, Color } from './color/parser';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE7D,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7G,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AACzG,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/G,YAAY,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC5G,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC5G,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BLEND_MODES_LIST, getBlendModeHash } from './blend';
|
|
1
|
+
export { BlendModes as BLEND_MODES_LIST, getBlendModeHash } from './blend';
|
|
2
2
|
export { setTheme, parseColor } from './color/parser';
|
|
3
3
|
export { Fill, FillChain, resolveChainFill } from './chain';
|
|
4
4
|
export { resolveFill, resolveFillArray, lerpFill, lerpFillArray, updateFill, prepareFill } from './registry';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/attributes/shape/fill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI5D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Stroke prop and resolved types, resolver, and array lerp. */
|
|
2
|
-
export type { StrokeProp, StrokeResolved } from './mapper';
|
|
3
|
-
export { resolveStroke, resolveStrokeArray } from './mapper';
|
|
2
|
+
export type { StrokeProp, StrokeResolved, StrokeAlign } from './mapper';
|
|
3
|
+
export { resolveStroke, resolveStrokeArray, resolveStrokeAlign } from './mapper';
|
|
4
4
|
export { lerpStrokeArray } from './lerp';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lerp.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/lerp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"lerp.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/lerp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAalE,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAYzG"}
|
|
@@ -5,6 +5,7 @@ function lerpStroke(from, to, t) {
|
|
|
5
5
|
fill: lerpFill(from.fill, to.fill, t),
|
|
6
6
|
dash: t < 0.5 ? from.dash : to.dash,
|
|
7
7
|
dashOffset: (from.dashOffset) + ((to.dashOffset) - (from.dashOffset)) * t,
|
|
8
|
+
align: (from.align) + ((to.align) - (from.align)) * t,
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
11
|
export function lerpStrokeArray(from, to, t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lerp.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/lerp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,SAAS,UAAU,CAAC,IAAoB,EAAE,EAAkB,EAAE,CAAS;IACnE,OAAO;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;QACzD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;QACnC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"lerp.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/lerp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,SAAS,UAAU,CAAC,IAAoB,EAAE,EAAkB,EAAE,CAAS;IACnE,OAAO;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;QACzD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;QACnC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;QACzE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;KACxD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB,EAAE,EAAoB,EAAE,CAAS;IACnF,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACtC,IAAI,CAAC,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { FillProp, FillResolved } from '../fill/union';
|
|
2
|
+
/**
|
|
3
|
+
* Where the stroke sits relative to the shape's edge. Resolves to a number in
|
|
4
|
+
* [-1, 1]: -1 = fully inside the outline, 0 = centered (straddles the edge,
|
|
5
|
+
* half in/half out), +1 = fully outside. Named values map to the endpoints;
|
|
6
|
+
* intermediate numbers bias the stroke partway, like Figma's stroke alignment.
|
|
7
|
+
*/
|
|
8
|
+
export type StrokeAlign = number | 'inside' | 'center' | 'outside';
|
|
9
|
+
/** Resolve a loose `align` prop to a clamped number in [-1, 1]. */
|
|
10
|
+
export declare function resolveStrokeAlign(align: StrokeAlign | undefined, fallback: number): number;
|
|
2
11
|
export interface StrokeProp {
|
|
3
12
|
/** Stroke width in pixels. Defaults to 1. */
|
|
4
13
|
weight?: number;
|
|
@@ -7,6 +16,13 @@ export interface StrokeProp {
|
|
|
7
16
|
/** Dash pattern. A single number `n` becomes `[n, n]`. */
|
|
8
17
|
dash?: number | number[];
|
|
9
18
|
dashOffset?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Where the stroke sits relative to the edge: a number in [-1, 1] or one of
|
|
21
|
+
* `'inside'` (-1), `'center'` (0), `'outside'` (1). Defaults to `'inside'`,
|
|
22
|
+
* so the stroke stays within the shape's measured bounds (like a CSS border)
|
|
23
|
+
* rather than leaking half its width outside.
|
|
24
|
+
*/
|
|
25
|
+
align?: StrokeAlign;
|
|
10
26
|
}
|
|
11
27
|
/**
|
|
12
28
|
* Fully resolved stroke — all fields normalised with defaults applied.
|
|
@@ -18,6 +34,8 @@ export interface StrokeResolved {
|
|
|
18
34
|
fill: FillResolved;
|
|
19
35
|
dash?: number[];
|
|
20
36
|
dashOffset: number;
|
|
37
|
+
/** Stroke placement in [-1, 1]: -1 inside, 0 center, +1 outside. */
|
|
38
|
+
align: number;
|
|
21
39
|
}
|
|
22
40
|
export declare function resolveStroke(prop: StrokeProp, previous?: StrokeResolved): StrokeResolved;
|
|
23
41
|
export declare function resolveStrokeArray(prop: StrokeProp | StrokeProp[] | undefined, previous?: StrokeResolved[]): StrokeResolved[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/mapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIvD,MAAM,WAAW,UAAU;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/mapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIvD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS3F;AAID,MAAM,WAAW,UAAU;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,cAAc,CAezF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAI7H"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { resolveFill } from '../../../attributes/shape/fill/registry';
|
|
2
|
+
/** Resolve a loose `align` prop to a clamped number in [-1, 1]. */
|
|
3
|
+
export function resolveStrokeAlign(align, fallback) {
|
|
4
|
+
if (align == null)
|
|
5
|
+
return fallback;
|
|
6
|
+
if (typeof align === 'number')
|
|
7
|
+
return Math.max(-1, Math.min(1, align));
|
|
8
|
+
switch (align) {
|
|
9
|
+
case 'inside': return -1;
|
|
10
|
+
case 'center': return 0;
|
|
11
|
+
case 'outside': return 1;
|
|
12
|
+
}
|
|
13
|
+
return fallback;
|
|
14
|
+
}
|
|
2
15
|
// ── Mapper ───────────────────────────────────────────────────────────────────
|
|
3
16
|
export function resolveStroke(prop, previous) {
|
|
4
17
|
let dash;
|
|
@@ -14,6 +27,7 @@ export function resolveStroke(prop, previous) {
|
|
|
14
27
|
fill: prop.fill != null ? resolveFill(prop.fill) : (previous?.fill ?? resolveFill('transparent')),
|
|
15
28
|
dash,
|
|
16
29
|
dashOffset: prop.dashOffset ?? previous?.dashOffset ?? 0,
|
|
30
|
+
align: resolveStrokeAlign(prop.align, previous?.align ?? -1),
|
|
17
31
|
};
|
|
18
32
|
}
|
|
19
33
|
export function resolveStrokeArray(prop, previous) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../src/attributes/shape/stroke/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAa/D,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,KAA8B,EAAE,QAAgB;IAC/E,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzB,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAoCD,gFAAgF;AAEhF,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,QAAyB;IACrE,IAAI,IAA0B,CAAC;IAC/B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO;QACH,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;QAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QACjG,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,UAAU,IAAI,CAAC;QACxD,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;KAC/D,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA2C,EAAE,QAA2B;IACvG,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/layout/flex.d.ts
CHANGED
|
@@ -13,6 +13,12 @@ export type GapSize = number | "auto";
|
|
|
13
13
|
export interface FlexChild {
|
|
14
14
|
widthMode: SizeInput;
|
|
15
15
|
heightMode: SizeInput;
|
|
16
|
+
/**
|
|
17
|
+
* Proportional weight for dividing the main-axis free space among `fill`
|
|
18
|
+
* children. Only consulted when this child fills the main axis; ignored
|
|
19
|
+
* otherwise. Undefined is treated as 1.
|
|
20
|
+
*/
|
|
21
|
+
mainFlex?: number;
|
|
16
22
|
measure(constraints: SizeConstraints): Partial<Size2D>;
|
|
17
23
|
}
|
|
18
24
|
export interface FlexMeasureEntry<C extends FlexChild = FlexChild> {
|
|
@@ -20,6 +26,12 @@ export interface FlexMeasureEntry<C extends FlexChild = FlexChild> {
|
|
|
20
26
|
width: number;
|
|
21
27
|
height: number;
|
|
22
28
|
isFlexibleMain: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Sanitized main-axis flex weight; 0 for non-flexible-main entries. Set by
|
|
31
|
+
* `measureFlex`; `layoutFlex` never reads it, so callers that construct
|
|
32
|
+
* entries directly for layout may omit it.
|
|
33
|
+
*/
|
|
34
|
+
flex?: number;
|
|
23
35
|
}
|
|
24
36
|
export interface FlexMeasureResult<C extends FlexChild = FlexChild> {
|
|
25
37
|
entries: FlexMeasureEntry<C>[];
|