@pixi-ui-editor/runtime-pixi 0.1.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/fonts.d.ts +5 -0
- package/dist/assets/fonts.d.ts.map +1 -0
- package/dist/assets/fonts.js +50 -0
- package/dist/assets/fonts.js.map +1 -0
- package/dist/assets/sounds.d.ts +14 -0
- package/dist/assets/sounds.d.ts.map +1 -0
- package/dist/assets/sounds.js +156 -0
- package/dist/assets/sounds.js.map +1 -0
- package/dist/assets/spine.d.ts +18 -0
- package/dist/assets/spine.d.ts.map +1 -0
- package/dist/assets/spine.js +82 -0
- package/dist/assets/spine.js.map +1 -0
- package/dist/assets/textures.d.ts +15 -0
- package/dist/assets/textures.d.ts.map +1 -0
- package/dist/assets/textures.js +86 -0
- package/dist/assets/textures.js.map +1 -0
- package/dist/controls.d.ts +19 -0
- package/dist/controls.d.ts.map +1 -0
- package/dist/controls.js +55 -0
- package/dist/controls.js.map +1 -0
- package/dist/document.d.ts +8 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +22 -0
- package/dist/document.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +315 -0
- package/dist/index.test.js.map +1 -0
- package/dist/layout.d.ts +32 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +43 -0
- package/dist/layout.js.map +1 -0
- package/dist/layoutGroups.d.ts +31 -0
- package/dist/layoutGroups.d.ts.map +1 -0
- package/dist/layoutGroups.js +139 -0
- package/dist/layoutGroups.js.map +1 -0
- package/dist/particles.d.ts +139 -0
- package/dist/particles.d.ts.map +1 -0
- package/dist/particles.js +275 -0
- package/dist/particles.js.map +1 -0
- package/dist/particles.test.d.ts +2 -0
- package/dist/particles.test.d.ts.map +1 -0
- package/dist/particles.test.js +210 -0
- package/dist/particles.test.js.map +1 -0
- package/dist/scene.d.ts +41 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +147 -0
- package/dist/scene.js.map +1 -0
- package/dist/scrollView.d.ts +28 -0
- package/dist/scrollView.d.ts.map +1 -0
- package/dist/scrollView.js +38 -0
- package/dist/scrollView.js.map +1 -0
- package/dist/test.setup.d.ts +2 -0
- package/dist/test.setup.d.ts.map +1 -0
- package/dist/test.setup.js +6 -0
- package/dist/test.setup.js.map +1 -0
- package/dist/views/ButtonNodeView.d.ts +36 -0
- package/dist/views/ButtonNodeView.d.ts.map +1 -0
- package/dist/views/ButtonNodeView.js +104 -0
- package/dist/views/ButtonNodeView.js.map +1 -0
- package/dist/views/InputNodeView.d.ts +36 -0
- package/dist/views/InputNodeView.d.ts.map +1 -0
- package/dist/views/InputNodeView.js +170 -0
- package/dist/views/InputNodeView.js.map +1 -0
- package/dist/views/NodeView.d.ts +53 -0
- package/dist/views/NodeView.d.ts.map +1 -0
- package/dist/views/NodeView.js +86 -0
- package/dist/views/NodeView.js.map +1 -0
- package/dist/views/ParticleEmitterNodeView.d.ts +26 -0
- package/dist/views/ParticleEmitterNodeView.d.ts.map +1 -0
- package/dist/views/ParticleEmitterNodeView.js +101 -0
- package/dist/views/ParticleEmitterNodeView.js.map +1 -0
- package/dist/views/ParticleEmitterNodeView.test.d.ts +2 -0
- package/dist/views/ParticleEmitterNodeView.test.d.ts.map +1 -0
- package/dist/views/ParticleEmitterNodeView.test.js +148 -0
- package/dist/views/ParticleEmitterNodeView.test.js.map +1 -0
- package/dist/views/ScrollViewNodeView.d.ts +29 -0
- package/dist/views/ScrollViewNodeView.d.ts.map +1 -0
- package/dist/views/ScrollViewNodeView.js +67 -0
- package/dist/views/ScrollViewNodeView.js.map +1 -0
- package/dist/views/SpineNodeView.d.ts +8 -0
- package/dist/views/SpineNodeView.d.ts.map +1 -0
- package/dist/views/SpineNodeView.js +30 -0
- package/dist/views/SpineNodeView.js.map +1 -0
- package/dist/views/ValueControlNodeViews.d.ts +37 -0
- package/dist/views/ValueControlNodeViews.d.ts.map +1 -0
- package/dist/views/ValueControlNodeViews.js +179 -0
- package/dist/views/ValueControlNodeViews.js.map +1 -0
- package/dist/views/basic.d.ts +29 -0
- package/dist/views/basic.d.ts.map +1 -0
- package/dist/views/basic.js +92 -0
- package/dist/views/basic.js.map +1 -0
- package/dist/views/createNodeView.d.ts +13 -0
- package/dist/views/createNodeView.d.ts.map +1 -0
- package/dist/views/createNodeView.js +89 -0
- package/dist/views/createNodeView.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticleEmitterNodeView.test.d.ts","sourceRoot":"","sources":["../../src/views/ParticleEmitterNodeView.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { Texture } from "pixi.js";
|
|
3
|
+
import { ParticleEmitterNodeView } from "./ParticleEmitterNodeView.js";
|
|
4
|
+
const assetIds = { a: "10000000-0000-4000-8000-000000000001", b: "10000000-0000-4000-8000-000000000002" };
|
|
5
|
+
const textures = new Map([[assetIds.a, Texture.WHITE], [assetIds.b, Texture.EMPTY]]);
|
|
6
|
+
function effect(overrides = {}) {
|
|
7
|
+
return {
|
|
8
|
+
id: "effect-1", name: "Effect", type: "particles", maxParticles: 30, seed: 7,
|
|
9
|
+
emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 24 }] },
|
|
10
|
+
particle: {
|
|
11
|
+
lifetime: { min: 100, max: 100 },
|
|
12
|
+
spawnShape: { type: "point" },
|
|
13
|
+
movement: { speed: { min: 0, max: 0 }, directionDegrees: 0, spreadDegrees: 0, accelerationX: 0, accelerationY: 0, drag: 0 },
|
|
14
|
+
visual: {
|
|
15
|
+
source: { type: "single", assetId: assetIds.a },
|
|
16
|
+
alpha: { start: 1, end: 0 },
|
|
17
|
+
scale: { start: { min: 2, max: 2 }, end: { min: 0.5, max: 0.5 } },
|
|
18
|
+
tint: { start: "#FFFFFF", end: "#FFFFFF" },
|
|
19
|
+
rotation: { initialDegrees: { min: 0, max: 0 }, angularVelocityDegrees: { min: 0, max: 0 } },
|
|
20
|
+
blendMode: "normal",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
...overrides,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function emitterNode(overrides = {}) {
|
|
27
|
+
return {
|
|
28
|
+
id: "node-1", name: "Emitter", parentId: null, children: [], visible: true,
|
|
29
|
+
transform: { x: 0, y: 0, width: 100, height: 60, scaleX: 1, scaleY: 1, rotation: 0 },
|
|
30
|
+
type: "particle-emitter", effectId: "effect-1", autoplay: true, simulationSpace: "local",
|
|
31
|
+
...overrides,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function spawnedSprites(view) {
|
|
35
|
+
const contentRoot = view.children[0];
|
|
36
|
+
return contentRoot.children.filter((sprite) => sprite.visible);
|
|
37
|
+
}
|
|
38
|
+
function build(def, node, size = { width: 1000, height: 1000 }) {
|
|
39
|
+
const view = new ParticleEmitterNodeView(def, textures);
|
|
40
|
+
view.update(node, "desktop", size);
|
|
41
|
+
return view;
|
|
42
|
+
}
|
|
43
|
+
describe("ParticleEmitterNodeView spawn shapes and appearance", () => {
|
|
44
|
+
it("samples rectangle spawn points inside the node's logical rect", () => {
|
|
45
|
+
const view = build(effect({ particle: { ...effect().particle, spawnShape: { type: "rectangle" } } }), emitterNode());
|
|
46
|
+
view.step();
|
|
47
|
+
const sprites = spawnedSprites(view);
|
|
48
|
+
expect(sprites).toHaveLength(24);
|
|
49
|
+
for (const sprite of sprites) {
|
|
50
|
+
expect(sprite.position.x).toBeGreaterThanOrEqual(0);
|
|
51
|
+
expect(sprite.position.x).toBeLessThanOrEqual(100);
|
|
52
|
+
expect(sprite.position.y).toBeGreaterThanOrEqual(0);
|
|
53
|
+
expect(sprite.position.y).toBeLessThanOrEqual(60);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
it("samples circle spawn points inside the ellipse inscribed in the rect", () => {
|
|
57
|
+
const view = build(effect({ particle: { ...effect().particle, spawnShape: { type: "circle" } } }), emitterNode());
|
|
58
|
+
view.step();
|
|
59
|
+
for (const sprite of spawnedSprites(view)) {
|
|
60
|
+
const nx = (sprite.position.x - 50) / 50, ny = (sprite.position.y - 30) / 30;
|
|
61
|
+
expect(nx * nx + ny * ny).toBeLessThanOrEqual(1 + 1e-9);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
it("picks among random source assets and interpolates alpha/scale toward their end values by the particle's last frame", () => {
|
|
65
|
+
const random = effect({
|
|
66
|
+
particle: { ...effect().particle, lifetime: { min: 1, max: 1 }, visual: { ...effect().particle.visual, source: { type: "random", assetIds: [assetIds.a, assetIds.b] } } },
|
|
67
|
+
});
|
|
68
|
+
const view = build(random, emitterNode());
|
|
69
|
+
view.step();
|
|
70
|
+
const seen = new Set(spawnedSprites(view).map((sprite) => sprite.texture));
|
|
71
|
+
expect(seen.has(Texture.WHITE)).toBe(true);
|
|
72
|
+
expect(seen.has(Texture.EMPTY)).toBe(true);
|
|
73
|
+
// Advance by fixed steps (update()'s per-call catch-up cap would otherwise clip a large single
|
|
74
|
+
// delta) to 60% through the 1s lifetime, and check the interpolated end values from above.
|
|
75
|
+
for (let i = 0; i < 36; i++)
|
|
76
|
+
view.step();
|
|
77
|
+
const [sprite] = spawnedSprites(view);
|
|
78
|
+
expect(sprite.alpha).toBeCloseTo(0.4, 5); // 60% through life: lerp(1, 0, 0.6) = 0.4
|
|
79
|
+
expect(sprite.scale.x).toBeCloseTo(1.1, 5); // lerp(2, 0.5, 0.6) = 1.1
|
|
80
|
+
});
|
|
81
|
+
it("keeps a non-loop sequence on its last frame once the sequence has fully played", () => {
|
|
82
|
+
const sequence = effect({
|
|
83
|
+
emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 1 }] },
|
|
84
|
+
particle: { ...effect().particle, visual: { ...effect().particle.visual, source: { type: "sequence", assetIds: [assetIds.a, assetIds.b], fps: 10, loop: false, randomStartFrame: false } } },
|
|
85
|
+
});
|
|
86
|
+
const view = build(sequence, emitterNode());
|
|
87
|
+
view.step();
|
|
88
|
+
for (let i = 0; i < 30; i++)
|
|
89
|
+
view.updateParticles(1 / 10); // far more than 2 frames at 10fps
|
|
90
|
+
const [sprite] = spawnedSprites(view);
|
|
91
|
+
expect(sprite.texture).toBe(Texture.EMPTY); // stays on the last frame (assetIds[1])
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe("ParticleEmitterNodeView local/world space", () => {
|
|
95
|
+
it("keeps a local particle following the emitter, while a world particle keeps its world trajectory", () => {
|
|
96
|
+
const def = effect({ emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 1 }] } });
|
|
97
|
+
const localView = build(def, emitterNode({ simulationSpace: "local" }));
|
|
98
|
+
localView.step();
|
|
99
|
+
const worldView = build(def, emitterNode({ simulationSpace: "world" }));
|
|
100
|
+
worldView.step();
|
|
101
|
+
const worldPositionOf = (view) => {
|
|
102
|
+
const [sprite] = spawnedSprites(view);
|
|
103
|
+
return view.worldTransform.apply({ x: sprite.position.x, y: sprite.position.y });
|
|
104
|
+
};
|
|
105
|
+
const localPositionOf = (view) => {
|
|
106
|
+
const [sprite] = spawnedSprites(view);
|
|
107
|
+
return { x: sprite.position.x, y: sprite.position.y };
|
|
108
|
+
};
|
|
109
|
+
const localBefore = localPositionOf(localView);
|
|
110
|
+
const worldBefore = worldPositionOf(worldView);
|
|
111
|
+
// Move both emitters, then resync render (a zero-delta tick just re-projects, it doesn't age).
|
|
112
|
+
localView.update(emitterNode({ simulationSpace: "local", transform: { x: 400, y: 250, width: 100, height: 60, scaleX: 1, scaleY: 1, rotation: 0 } }), "desktop", { width: 1000, height: 1000 });
|
|
113
|
+
worldView.update(emitterNode({ simulationSpace: "world", transform: { x: 400, y: 250, width: 100, height: 60, scaleX: 1, scaleY: 1, rotation: 0 } }), "desktop", { width: 1000, height: 1000 });
|
|
114
|
+
localView.updateParticles(0);
|
|
115
|
+
worldView.updateParticles(0);
|
|
116
|
+
// Local: the particle's own local coordinates are untouched by the emitter's move.
|
|
117
|
+
expect(localPositionOf(localView)).toEqual(localBefore);
|
|
118
|
+
// World: local coordinates are recomputed so the particle's world position stays put.
|
|
119
|
+
const worldAfter = worldPositionOf(worldView);
|
|
120
|
+
expect(worldAfter.x).toBeCloseTo(worldBefore.x, 5);
|
|
121
|
+
expect(worldAfter.y).toBeCloseTo(worldBefore.y, 5);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("ParticleEmitterNodeView incremental sync and disposal", () => {
|
|
125
|
+
it("does not restart on an unrelated definition clone and adopts a new maxParticles live", () => {
|
|
126
|
+
const def = effect({ maxParticles: 2, emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 2 }] } });
|
|
127
|
+
const view = build(def, emitterNode());
|
|
128
|
+
view.step();
|
|
129
|
+
expect(spawnedSprites(view)).toHaveLength(2);
|
|
130
|
+
const renamed = structuredClone(def);
|
|
131
|
+
renamed.name = "Renamed";
|
|
132
|
+
view.syncEffect(renamed);
|
|
133
|
+
expect(spawnedSprites(view)).toHaveLength(2); // untouched by the sync
|
|
134
|
+
expect(view.getDiagnostics()).toMatchObject({ active: 2, dropped: 0 });
|
|
135
|
+
});
|
|
136
|
+
it("dispose() removes every prewarmed sprite from the render tree and is safe to call from destroy()", () => {
|
|
137
|
+
const def = effect({ maxParticles: 4 });
|
|
138
|
+
const view = build(def, emitterNode());
|
|
139
|
+
view.step();
|
|
140
|
+
expect(spawnedSprites(view)).toHaveLength(24 > 4 ? 4 : 24); // burst count clamps to maxParticles
|
|
141
|
+
const contentRoot = view.children[0];
|
|
142
|
+
expect(contentRoot.children.length).toBeGreaterThan(0);
|
|
143
|
+
view.destroy();
|
|
144
|
+
expect(contentRoot.children).toHaveLength(0);
|
|
145
|
+
expect(view.getDiagnostics()).toMatchObject({ active: 0, disposed: true });
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=ParticleEmitterNodeView.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticleEmitterNodeView.test.js","sourceRoot":"","sources":["../../src/views/ParticleEmitterNodeView.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ScrollViewNode, type UINode } from "@pixi-ui-editor/schema";
|
|
2
|
+
import { ScrollBox } from "@pixi/ui";
|
|
3
|
+
import { Container, Texture } from "pixi.js";
|
|
4
|
+
import { NodeView, type SceneInteractionMode } from "./NodeView.js";
|
|
5
|
+
/**
|
|
6
|
+
* Adapts a scroll-view node to `@pixi/ui`'s `ScrollBox`, which already implements the
|
|
7
|
+
* viewport/content/mask contract on its own: `scrollBox.list` is the content container that moves,
|
|
8
|
+
* and its own mask clips overflow — this class never reimplements clipping or drag/wheel scrolling.
|
|
9
|
+
* `direction`, `cornerRadius`, `easingEnabled` and `shiftWheelHorizontal` have no safe public API for
|
|
10
|
+
* live updates in `@pixi/ui` 2.3.2 (they live on a protected `options` field, and `easingEnabled` is
|
|
11
|
+
* captured once into an internal `Trackpad`), so changing them rebuilds the scene like Spine's
|
|
12
|
+
* `animation`/`loop` do; padding, item spacing, background color and the view's own size stay
|
|
13
|
+
* incremental through `syncContent`.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ScrollViewNodeView extends NodeView {
|
|
16
|
+
private readonly scrollBox;
|
|
17
|
+
constructor(node: ScrollViewNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode);
|
|
18
|
+
addScrollItem<T extends Container[]>(...children: T): T[0];
|
|
19
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
20
|
+
get scrollX(): number;
|
|
21
|
+
set scrollX(value: number);
|
|
22
|
+
get scrollY(): number;
|
|
23
|
+
set scrollY(value: number);
|
|
24
|
+
scrollTo(elementId: number): void;
|
|
25
|
+
scrollTop(): void;
|
|
26
|
+
scrollBottom(): void;
|
|
27
|
+
get onScroll(): ScrollBox["onScroll"];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ScrollViewNodeView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollViewNodeView.d.ts","sourceRoot":"","sources":["../../src/views/ScrollViewNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEpE;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,oBAAoB;IAwBvH,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAI1D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;IAezE,IAAI,OAAO,IAAI,MAAM,CAAmC;IACxD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAqC;IAC9D,IAAI,OAAO,IAAI,MAAM,CAAmC;IACxD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAqC;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IACjC,SAAS,IAAI,IAAI;IACjB,YAAY,IAAI,IAAI;IACpB,IAAI,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,CAAoC;CAC1E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ScrollBox } from "@pixi/ui";
|
|
2
|
+
import { SCROLL_DIRECTION_TO_LIST_TYPE } from "../scrollView.js";
|
|
3
|
+
import { NodeView } from "./NodeView.js";
|
|
4
|
+
/**
|
|
5
|
+
* Adapts a scroll-view node to `@pixi/ui`'s `ScrollBox`, which already implements the
|
|
6
|
+
* viewport/content/mask contract on its own: `scrollBox.list` is the content container that moves,
|
|
7
|
+
* and its own mask clips overflow — this class never reimplements clipping or drag/wheel scrolling.
|
|
8
|
+
* `direction`, `cornerRadius`, `easingEnabled` and `shiftWheelHorizontal` have no safe public API for
|
|
9
|
+
* live updates in `@pixi/ui` 2.3.2 (they live on a protected `options` field, and `easingEnabled` is
|
|
10
|
+
* captured once into an internal `Trackpad`), so changing them rebuilds the scene like Spine's
|
|
11
|
+
* `animation`/`loop` do; padding, item spacing, background color and the view's own size stay
|
|
12
|
+
* incremental through `syncContent`.
|
|
13
|
+
*/
|
|
14
|
+
export class ScrollViewNodeView extends NodeView {
|
|
15
|
+
scrollBox;
|
|
16
|
+
constructor(node, textures, interaction) {
|
|
17
|
+
super(textures);
|
|
18
|
+
const settings = node.scrollView;
|
|
19
|
+
this.scrollBox = new ScrollBox({
|
|
20
|
+
width: node.transform.width,
|
|
21
|
+
height: node.transform.height,
|
|
22
|
+
type: SCROLL_DIRECTION_TO_LIST_TYPE[settings.direction],
|
|
23
|
+
background: settings.backgroundColor,
|
|
24
|
+
radius: settings.cornerRadius,
|
|
25
|
+
disableEasing: !settings.easingEnabled,
|
|
26
|
+
// Зафиксировано решением: скролл никогда не перехватывает wheel вне компонента.
|
|
27
|
+
globalScroll: false,
|
|
28
|
+
shiftScroll: settings.shiftWheelHorizontal ?? false,
|
|
29
|
+
leftPadding: settings.padding.left,
|
|
30
|
+
rightPadding: settings.padding.right,
|
|
31
|
+
topPadding: settings.padding.top,
|
|
32
|
+
bottomPadding: settings.padding.bottom,
|
|
33
|
+
elementsMargin: settings.itemSpacing,
|
|
34
|
+
});
|
|
35
|
+
// Authoring-канвас инертен: selection и drag идут через grab-прямоугольник базового NodeView.
|
|
36
|
+
if (interaction === "authoring")
|
|
37
|
+
this.scrollBox.eventMode = "none";
|
|
38
|
+
this.setContent(this.scrollBox);
|
|
39
|
+
}
|
|
40
|
+
addScrollItem(...children) {
|
|
41
|
+
return this.scrollBox.addItem(...children);
|
|
42
|
+
}
|
|
43
|
+
syncContent(node, transform) {
|
|
44
|
+
if (node.type !== "scroll-view")
|
|
45
|
+
return;
|
|
46
|
+
this.scrollBox.setSize(transform.width, transform.height);
|
|
47
|
+
this.scrollBox.setBackground(node.scrollView.backgroundColor);
|
|
48
|
+
const list = this.scrollBox.list;
|
|
49
|
+
if (list !== undefined) {
|
|
50
|
+
list.leftPadding = node.scrollView.padding.left;
|
|
51
|
+
list.rightPadding = node.scrollView.padding.right;
|
|
52
|
+
list.topPadding = node.scrollView.padding.top;
|
|
53
|
+
list.bottomPadding = node.scrollView.padding.bottom;
|
|
54
|
+
list.elementsMargin = node.scrollView.itemSpacing;
|
|
55
|
+
}
|
|
56
|
+
this.scrollBox.resize(true);
|
|
57
|
+
}
|
|
58
|
+
get scrollX() { return this.scrollBox.scrollX; }
|
|
59
|
+
set scrollX(value) { this.scrollBox.scrollX = value; }
|
|
60
|
+
get scrollY() { return this.scrollBox.scrollY; }
|
|
61
|
+
set scrollY(value) { this.scrollBox.scrollY = value; }
|
|
62
|
+
scrollTo(elementId) { this.scrollBox.scrollTo(elementId); }
|
|
63
|
+
scrollTop() { this.scrollBox.scrollTop(); }
|
|
64
|
+
scrollBottom() { this.scrollBox.scrollBottom(); }
|
|
65
|
+
get onScroll() { return this.scrollBox.onScroll; }
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=ScrollViewNodeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollViewNodeView.js","sourceRoot":"","sources":["../../src/views/ScrollViewNodeView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SkeletonData } from "@esotericsoftware/spine-pixi-v8";
|
|
2
|
+
import { type UINode } from "@pixi-ui-editor/schema";
|
|
3
|
+
import { NodeView } from "./NodeView.js";
|
|
4
|
+
export declare class SpineNodeView extends NodeView {
|
|
5
|
+
constructor(skeletonData: SkeletonData | undefined, animation: string | undefined, loop: boolean);
|
|
6
|
+
protected syncContent(_node: UINode, transform: UINode["transform"]): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=SpineNodeView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpineNodeView.d.ts","sourceRoot":"","sources":["../../src/views/SpineNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO;IAWhG,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAW3E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Spine } from "@esotericsoftware/spine-pixi-v8";
|
|
2
|
+
import { Graphics } from "pixi.js";
|
|
3
|
+
import { fitSpineToTransform } from "../layout.js";
|
|
4
|
+
import { NodeView } from "./NodeView.js";
|
|
5
|
+
export class SpineNodeView extends NodeView {
|
|
6
|
+
constructor(skeletonData, animation, loop) {
|
|
7
|
+
super();
|
|
8
|
+
if (skeletonData === undefined) {
|
|
9
|
+
this.setContent(new Graphics());
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const spine = new Spine(skeletonData);
|
|
13
|
+
if (animation !== undefined && skeletonData.findAnimation(animation) !== null)
|
|
14
|
+
spine.state.setAnimation(0, animation, loop);
|
|
15
|
+
this.setContent(spine);
|
|
16
|
+
}
|
|
17
|
+
syncContent(_node, transform) {
|
|
18
|
+
if (this.content instanceof Spine) {
|
|
19
|
+
const fit = fitSpineToTransform(this.content.skeleton.data, transform);
|
|
20
|
+
if (fit !== undefined) {
|
|
21
|
+
this.content.scale.set(fit.scaleX, fit.scaleY);
|
|
22
|
+
this.content.position.set(fit.x, fit.y);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (this.content instanceof Graphics) {
|
|
26
|
+
this.content.clear().rect(0, 0, transform.width, transform.height).fill(0xff00ff);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=SpineNodeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpineNodeView.js","sourceRoot":"","sources":["../../src/views/SpineNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,YAAsC,EAAE,SAA6B,EAAE,IAAa;QAC9F,KAAK,EAAE,CAAC;QACR,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,IAAI;YAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5H,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,SAA8B;QACjE,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,YAAY,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ProgressBarNode, type SliderNode, type UINode } from "@pixi-ui-editor/schema";
|
|
2
|
+
import { Slider } from "@pixi/ui";
|
|
3
|
+
import { Texture } from "pixi.js";
|
|
4
|
+
import { NodeView, type SceneInteractionMode } from "./NodeView.js";
|
|
5
|
+
/** Horizontal live-value control backed by `@pixi/ui` Slider. */
|
|
6
|
+
export declare class SliderNodeView extends NodeView {
|
|
7
|
+
private readonly control;
|
|
8
|
+
private readonly fonts;
|
|
9
|
+
private backgroundTexture;
|
|
10
|
+
private fillTexture;
|
|
11
|
+
private handleTexture;
|
|
12
|
+
private paddingKey;
|
|
13
|
+
constructor(node: SliderNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode, fonts: ReadonlyMap<string, string> | undefined);
|
|
14
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
15
|
+
get value(): number;
|
|
16
|
+
set value(value: number);
|
|
17
|
+
get min(): number;
|
|
18
|
+
set min(value: number);
|
|
19
|
+
get max(): number;
|
|
20
|
+
set max(value: number);
|
|
21
|
+
get step(): number;
|
|
22
|
+
set step(value: number);
|
|
23
|
+
get onUpdate(): Slider["onUpdate"];
|
|
24
|
+
get onChange(): Slider["onChange"];
|
|
25
|
+
}
|
|
26
|
+
/** Left-to-right runtime progress backed by `@pixi/ui` ProgressBar. */
|
|
27
|
+
export declare class ProgressBarNodeView extends NodeView {
|
|
28
|
+
private readonly control;
|
|
29
|
+
private backgroundTexture;
|
|
30
|
+
private fillTexture;
|
|
31
|
+
private paddingKey;
|
|
32
|
+
constructor(node: ProgressBarNode, textures: ReadonlyMap<string, Texture> | undefined);
|
|
33
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
34
|
+
get progress(): number;
|
|
35
|
+
set progress(value: number);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ValueControlNodeViews.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueControlNodeViews.d.ts","sourceRoot":"","sources":["../../src/views/ValueControlNodeViews.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,eAAe,EAAE,KAAK,UAAU,EAA4B,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC1I,OAAO,EAAe,MAAM,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAU,OAAO,EAAqD,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAyEpE,iEAAiE;AACjE,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,UAAU,CAAM;gBAEZ,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAwBnK,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;IAkBzE,IAAI,KAAK,IAAI,MAAM,CAA+B;IAClD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAiC;IACxD,IAAI,GAAG,IAAI,MAAM,CAA6B;IAC9C,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAwE;IAC7F,IAAI,GAAG,IAAI,MAAM,CAA6B;IAC9C,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAwE;IAC7F,IAAI,IAAI,IAAI,MAAM,CAA8B;IAChD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAyE;IAC/F,IAAI,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAAkC;IACpE,IAAI,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAAkC;CACrE;AAED,uEAAuE;AACvE,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,UAAU,CAAM;gBAEZ,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAcrF,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;IAUzE,IAAI,QAAQ,IAAI,MAAM,CAAkC;IACxD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAoC;CAC/D"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { ProgressBar, Slider } from "@pixi/ui";
|
|
2
|
+
import { Sprite, Texture } from "pixi.js";
|
|
3
|
+
import { NodeView } from "./NodeView.js";
|
|
4
|
+
const ZERO_NINE_SLICE = { bg: [0, 0, 0, 0], fill: [0, 0, 0, 0] };
|
|
5
|
+
function textStyle(style, fonts) {
|
|
6
|
+
const resolved = style ?? { fontFamily: "Arial", fontSize: 18, fontWeight: "normal", fontStyle: "normal", fill: "#FFFFFF", align: "center", verticalAlign: "middle", wordWrap: false, breakWords: false, letterSpacing: 0 };
|
|
7
|
+
return {
|
|
8
|
+
fontFamily: resolved.fontAssetId === undefined ? resolved.fontFamily : fonts?.get(resolved.fontAssetId) ?? resolved.fontFamily,
|
|
9
|
+
fontSize: resolved.fontSize,
|
|
10
|
+
fontWeight: resolved.fontWeight,
|
|
11
|
+
fontStyle: resolved.fontStyle,
|
|
12
|
+
fill: resolved.fill,
|
|
13
|
+
align: resolved.align,
|
|
14
|
+
wordWrap: resolved.wordWrap,
|
|
15
|
+
breakWords: resolved.breakWords,
|
|
16
|
+
lineHeight: resolved.lineHeight,
|
|
17
|
+
letterSpacing: resolved.letterSpacing,
|
|
18
|
+
stroke: resolved.stroke === undefined ? undefined : { color: resolved.stroke.color, width: resolved.stroke.width },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
class SliderControl extends Slider {
|
|
22
|
+
get value() { return super.value; }
|
|
23
|
+
set value(value) {
|
|
24
|
+
const clamped = Math.min(this.max, Math.max(this.min, value));
|
|
25
|
+
const steps = Math.round((clamped - this.min) / this.step);
|
|
26
|
+
const snapped = this.min + steps * this.step;
|
|
27
|
+
// Floating-point steps such as 0.1 should not leak 0.30000000000000004 to game code.
|
|
28
|
+
const precision = Math.max(0, (String(this.step).split(".")[1]?.length ?? 0));
|
|
29
|
+
super.value = Number(Math.min(this.max, Math.max(this.min, snapped)).toFixed(precision));
|
|
30
|
+
}
|
|
31
|
+
/** `@pixi/ui` snaps around zero; authored steps are anchored at min (min, min + step, ...). */
|
|
32
|
+
update(event) {
|
|
33
|
+
if (!this.dragging)
|
|
34
|
+
return;
|
|
35
|
+
const target = event.currentTarget;
|
|
36
|
+
if (target.parent === null)
|
|
37
|
+
return;
|
|
38
|
+
const localX = target.parent.worldTransform.applyInverse(event.global).x;
|
|
39
|
+
const ratio = localX / (this.bg?.width || 1);
|
|
40
|
+
this.value = this.min + ratio * (this.max - this.min);
|
|
41
|
+
}
|
|
42
|
+
setValueLabel(show, style) {
|
|
43
|
+
if (this.value1Text === undefined)
|
|
44
|
+
return;
|
|
45
|
+
this.value1Text.visible = show;
|
|
46
|
+
this.value1Text.style = style;
|
|
47
|
+
this.updateSlider();
|
|
48
|
+
}
|
|
49
|
+
setHandle(texture) {
|
|
50
|
+
this.slider = new Sprite(texture);
|
|
51
|
+
}
|
|
52
|
+
setFillConfig(texture, padding) {
|
|
53
|
+
this.options.fillPaddings = padding;
|
|
54
|
+
this.setFill(texture, padding);
|
|
55
|
+
}
|
|
56
|
+
sizeHandle(height) {
|
|
57
|
+
const handle = this.slider1?.children[0];
|
|
58
|
+
if (handle instanceof Sprite)
|
|
59
|
+
handle.setSize(height, height);
|
|
60
|
+
this.updateSlider();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
class ProgressControl extends ProgressBar {
|
|
64
|
+
setFillConfig(texture, padding) {
|
|
65
|
+
this.options.fillPaddings = padding;
|
|
66
|
+
this.setFill(texture, padding);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Horizontal live-value control backed by `@pixi/ui` Slider. */
|
|
70
|
+
export class SliderNodeView extends NodeView {
|
|
71
|
+
control;
|
|
72
|
+
fonts;
|
|
73
|
+
backgroundTexture;
|
|
74
|
+
fillTexture;
|
|
75
|
+
handleTexture;
|
|
76
|
+
paddingKey = "";
|
|
77
|
+
constructor(node, textures, interaction, fonts) {
|
|
78
|
+
super(textures);
|
|
79
|
+
this.fonts = fonts;
|
|
80
|
+
this.backgroundTexture = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;
|
|
81
|
+
this.fillTexture = this.textureFor(node.fillAssetId) ?? Texture.WHITE;
|
|
82
|
+
this.handleTexture = this.textureFor(node.handleAssetId) ?? Texture.WHITE;
|
|
83
|
+
this.control = new SliderControl({
|
|
84
|
+
bg: this.backgroundTexture,
|
|
85
|
+
fill: this.fillTexture,
|
|
86
|
+
slider: new Sprite(this.handleTexture),
|
|
87
|
+
fillPaddings: node.fillPadding,
|
|
88
|
+
nineSliceSprite: ZERO_NINE_SLICE,
|
|
89
|
+
min: node.min,
|
|
90
|
+
max: node.max,
|
|
91
|
+
step: node.step,
|
|
92
|
+
value: node.defaultValue,
|
|
93
|
+
// Keep the library label allocated so show/style can change incrementally.
|
|
94
|
+
showValue: true,
|
|
95
|
+
valueTextStyle: textStyle(node.valueTextStyle, fonts),
|
|
96
|
+
});
|
|
97
|
+
if (interaction === "authoring")
|
|
98
|
+
this.control.eventMode = "none";
|
|
99
|
+
this.setContent(this.control);
|
|
100
|
+
}
|
|
101
|
+
syncContent(node, transform) {
|
|
102
|
+
if (node.type !== "slider")
|
|
103
|
+
return;
|
|
104
|
+
const background = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;
|
|
105
|
+
const fill = this.textureFor(node.fillAssetId) ?? Texture.WHITE;
|
|
106
|
+
const handle = this.textureFor(node.handleAssetId) ?? Texture.WHITE;
|
|
107
|
+
const paddingKey = `${node.fillPadding.left}/${node.fillPadding.right}/${node.fillPadding.top}/${node.fillPadding.bottom}`;
|
|
108
|
+
if (background !== this.backgroundTexture) {
|
|
109
|
+
this.backgroundTexture = background;
|
|
110
|
+
this.control.setBackground(background);
|
|
111
|
+
}
|
|
112
|
+
if (fill !== this.fillTexture || paddingKey !== this.paddingKey) {
|
|
113
|
+
this.fillTexture = fill;
|
|
114
|
+
this.paddingKey = paddingKey;
|
|
115
|
+
this.control.setFillConfig(fill, node.fillPadding);
|
|
116
|
+
}
|
|
117
|
+
if (handle !== this.handleTexture) {
|
|
118
|
+
this.handleTexture = handle;
|
|
119
|
+
this.control.setHandle(handle);
|
|
120
|
+
}
|
|
121
|
+
this.control.min = node.min;
|
|
122
|
+
this.control.max = node.max;
|
|
123
|
+
this.control.step = node.step;
|
|
124
|
+
this.control.value = this.control.value;
|
|
125
|
+
this.control.setSize(transform.width, transform.height);
|
|
126
|
+
this.control.sizeHandle(transform.height);
|
|
127
|
+
this.control.setValueLabel(node.showValue ?? false, textStyle(node.valueTextStyle, this.fonts));
|
|
128
|
+
}
|
|
129
|
+
get value() { return this.control.value; }
|
|
130
|
+
set value(value) { this.control.value = value; }
|
|
131
|
+
get min() { return this.control.min; }
|
|
132
|
+
set min(value) { this.control.min = value; this.control.value = this.control.value; }
|
|
133
|
+
get max() { return this.control.max; }
|
|
134
|
+
set max(value) { this.control.max = value; this.control.value = this.control.value; }
|
|
135
|
+
get step() { return this.control.step; }
|
|
136
|
+
set step(value) { this.control.step = value; this.control.value = this.control.value; }
|
|
137
|
+
get onUpdate() { return this.control.onUpdate; }
|
|
138
|
+
get onChange() { return this.control.onChange; }
|
|
139
|
+
}
|
|
140
|
+
/** Left-to-right runtime progress backed by `@pixi/ui` ProgressBar. */
|
|
141
|
+
export class ProgressBarNodeView extends NodeView {
|
|
142
|
+
control;
|
|
143
|
+
backgroundTexture;
|
|
144
|
+
fillTexture;
|
|
145
|
+
paddingKey = "";
|
|
146
|
+
constructor(node, textures) {
|
|
147
|
+
super(textures);
|
|
148
|
+
this.backgroundTexture = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;
|
|
149
|
+
this.fillTexture = this.textureFor(node.fillAssetId) ?? Texture.WHITE;
|
|
150
|
+
this.control = new ProgressControl({
|
|
151
|
+
bg: this.backgroundTexture,
|
|
152
|
+
fill: this.fillTexture,
|
|
153
|
+
fillPaddings: node.fillPadding,
|
|
154
|
+
nineSliceSprite: ZERO_NINE_SLICE,
|
|
155
|
+
progress: node.defaultProgress,
|
|
156
|
+
});
|
|
157
|
+
this.setContent(this.control);
|
|
158
|
+
}
|
|
159
|
+
syncContent(node, transform) {
|
|
160
|
+
if (node.type !== "progress-bar")
|
|
161
|
+
return;
|
|
162
|
+
const background = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;
|
|
163
|
+
const fill = this.textureFor(node.fillAssetId) ?? Texture.WHITE;
|
|
164
|
+
const paddingKey = `${node.fillPadding.left}/${node.fillPadding.right}/${node.fillPadding.top}/${node.fillPadding.bottom}`;
|
|
165
|
+
if (background !== this.backgroundTexture) {
|
|
166
|
+
this.backgroundTexture = background;
|
|
167
|
+
this.control.setBackground(background);
|
|
168
|
+
}
|
|
169
|
+
if (fill !== this.fillTexture || paddingKey !== this.paddingKey) {
|
|
170
|
+
this.fillTexture = fill;
|
|
171
|
+
this.paddingKey = paddingKey;
|
|
172
|
+
this.control.setFillConfig(fill, node.fillPadding);
|
|
173
|
+
}
|
|
174
|
+
this.control.setSize(transform.width, transform.height);
|
|
175
|
+
}
|
|
176
|
+
get progress() { return this.control.progress; }
|
|
177
|
+
set progress(value) { this.control.progress = value; }
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=ValueControlNodeViews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueControlNodeViews.js","sourceRoot":"","sources":["../../src/views/ValueControlNodeViews.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type UINode } from "@pixi-ui-editor/schema";
|
|
2
|
+
import { Container, Texture } from "pixi.js";
|
|
3
|
+
import { NodeView } from "./NodeView.js";
|
|
4
|
+
export declare class ContainerNodeView extends NodeView {
|
|
5
|
+
protected syncContent(): void;
|
|
6
|
+
}
|
|
7
|
+
/** Layout groups may optionally paint one image behind their managed children. No asset means no content/view at all. */
|
|
8
|
+
export declare class LayoutGroupNodeView extends NodeView {
|
|
9
|
+
private readonly layoutContent;
|
|
10
|
+
private background?;
|
|
11
|
+
constructor(textures: ReadonlyMap<string, Texture> | undefined);
|
|
12
|
+
get layoutTarget(): Container;
|
|
13
|
+
addLayoutChild<T extends Container[]>(...children: T): T[0];
|
|
14
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class ImageNodeView extends NodeView {
|
|
17
|
+
constructor(assetId: string, textures: ReadonlyMap<string, Texture> | undefined);
|
|
18
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
19
|
+
}
|
|
20
|
+
export declare class TextNodeView extends NodeView {
|
|
21
|
+
private readonly fonts?;
|
|
22
|
+
constructor(text: string, fonts?: ReadonlyMap<string, string> | undefined);
|
|
23
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
24
|
+
}
|
|
25
|
+
export declare class PrefabInstanceNodeView extends NodeView {
|
|
26
|
+
constructor(expanded: Container | undefined);
|
|
27
|
+
protected syncContent(_node: UINode, transform: UINode["transform"]): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/views/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAA0B,OAAO,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,SAAS,CAAC,WAAW,IAAI,IAAI;CAC9B;AAED,yHAAyH;AACzH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAO9D,IAAI,YAAY,IAAI,SAAS,CAA+B;IAE5D,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAI3D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAW1E;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAM/E,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAQ1E;AAED,qBAAa,YAAa,SAAQ,QAAQ;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAArC,IAAI,EAAE,MAAM,EAAmB,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA;IAK9E,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAY1E;AAED,qBAAa,sBAAuB,SAAQ,QAAQ;gBACtC,QAAQ,EAAE,SAAS,GAAG,SAAS;IAK3C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAG3E"}
|