@pixi-ui-editor/runtime-pixi 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SceneViewport.js.map +1 -1
- package/dist/assets/bitmapFonts.d.ts +22 -0
- package/dist/assets/bitmapFonts.d.ts.map +1 -0
- package/dist/assets/bitmapFonts.js +75 -0
- package/dist/assets/bitmapFonts.js.map +1 -0
- package/dist/assets/cache.d.ts +5 -1
- package/dist/assets/cache.d.ts.map +1 -1
- package/dist/assets/cache.js +3 -0
- package/dist/assets/cache.js.map +1 -1
- package/dist/assets/fonts.js.map +1 -1
- package/dist/assets/loadTexture.d.ts +9 -0
- package/dist/assets/loadTexture.d.ts.map +1 -0
- package/dist/assets/loadTexture.js +14 -0
- package/dist/assets/loadTexture.js.map +1 -0
- package/dist/assets/sounds.js.map +1 -1
- package/dist/assets/spine.js.map +1 -1
- package/dist/assets/spine.test.js.map +1 -1
- package/dist/assets/textures.d.ts +4 -5
- package/dist/assets/textures.d.ts.map +1 -1
- package/dist/assets/textures.js +31 -20
- package/dist/assets/textures.js.map +1 -1
- package/dist/controls.d.ts +4 -0
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +12 -1
- package/dist/controls.js.map +1 -1
- package/dist/document.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +2 -0
- package/dist/index.test.js.map +1 -1
- package/dist/layout.js.map +1 -1
- package/dist/layoutGroups.js.map +1 -1
- package/dist/localization.js.map +1 -1
- package/dist/particles.js.map +1 -1
- package/dist/particles.test.js.map +1 -1
- package/dist/scene.d.ts +1 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +7 -5
- package/dist/scene.js.map +1 -1
- package/dist/scrollView.js.map +1 -1
- package/dist/test.setup.js.map +1 -1
- package/dist/views/ButtonNodeView.js.map +1 -1
- package/dist/views/CheckboxNodeView.js.map +1 -1
- package/dist/views/InputNodeView.js.map +1 -1
- package/dist/views/NodeView.d.ts +8 -0
- package/dist/views/NodeView.d.ts.map +1 -1
- package/dist/views/NodeView.js +8 -0
- package/dist/views/NodeView.js.map +1 -1
- package/dist/views/ParticleEmitterNodeView.js.map +1 -1
- package/dist/views/ParticleEmitterNodeView.test.js.map +1 -1
- package/dist/views/ScrollViewNodeView.js.map +1 -1
- package/dist/views/SpineNodeView.js.map +1 -1
- package/dist/views/StagedButtonNodeView.d.ts +81 -0
- package/dist/views/StagedButtonNodeView.d.ts.map +1 -0
- package/dist/views/StagedButtonNodeView.js +275 -0
- package/dist/views/StagedButtonNodeView.js.map +1 -0
- package/dist/views/ValueControlNodeViews.js.map +1 -1
- package/dist/views/basic.d.ts +52 -0
- package/dist/views/basic.d.ts.map +1 -1
- package/dist/views/basic.js +158 -2
- package/dist/views/basic.js.map +1 -1
- package/dist/views/createNodeView.d.ts +1 -1
- package/dist/views/createNodeView.d.ts.map +1 -1
- package/dist/views/createNodeView.js +15 -2
- package/dist/views/createNodeView.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleEmitterNodeView.test.js","sourceRoot":"","sources":["../../src/views/ParticleEmitterNodeView.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ParticleEmitterNodeView.test.js","sourceRoot":"","sources":["../../src/views/ParticleEmitterNodeView.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"vitest\";\r\nimport type { ParticleEffectDefinition, UINode } from \"@pixi-ui-editor/schema\";\r\nimport { Sprite, Texture } from \"pixi.js\";\r\nimport { ParticleEmitterNodeView } from \"./ParticleEmitterNodeView.js\";\r\n\r\nconst assetIds = { a: \"10000000-0000-4000-8000-000000000001\", b: \"10000000-0000-4000-8000-000000000002\" };\r\nconst textures = new Map([[assetIds.a, Texture.WHITE], [assetIds.b, Texture.EMPTY]]);\r\n\r\nfunction effect(overrides: Partial<ParticleEffectDefinition> = {}): ParticleEffectDefinition {\r\n return {\r\n id: \"effect-1\", name: \"Effect\", type: \"particles\", maxParticles: 30, seed: 7,\r\n emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 24 }] },\r\n particle: {\r\n lifetime: { min: 100, max: 100 },\r\n spawnShape: { type: \"point\" },\r\n movement: { speed: { min: 0, max: 0 }, directionDegrees: 0, spreadDegrees: 0, accelerationX: 0, accelerationY: 0, drag: 0 },\r\n visual: {\r\n source: { type: \"single\", assetId: assetIds.a },\r\n alpha: { start: 1, end: 0 },\r\n scale: { start: { min: 2, max: 2 }, end: { min: 0.5, max: 0.5 } },\r\n tint: { start: \"#FFFFFF\", end: \"#FFFFFF\" },\r\n rotation: { initialDegrees: { min: 0, max: 0 }, angularVelocityDegrees: { min: 0, max: 0 } },\r\n blendMode: \"normal\",\r\n },\r\n },\r\n ...overrides,\r\n } as ParticleEffectDefinition;\r\n}\r\n\r\nfunction emitterNode(overrides: Partial<Extract<UINode, { type: \"particle-emitter\" }>> = {}): UINode {\r\n return {\r\n id: \"node-1\", name: \"Emitter\", parentId: null, children: [], visible: true,\r\n transform: { x: 0, y: 0, width: 100, height: 60, scaleX: 1, scaleY: 1, rotation: 0 },\r\n type: \"particle-emitter\", effectId: \"effect-1\", autoplay: true, simulationSpace: \"local\",\r\n ...overrides,\r\n } as UINode;\r\n}\r\n\r\nfunction spawnedSprites(view: ParticleEmitterNodeView): Sprite[] {\r\n const contentRoot = view.children[0] as unknown as { children: Sprite[] };\r\n return contentRoot.children.filter((sprite) => sprite.visible);\r\n}\r\n\r\nfunction build(def: ParticleEffectDefinition, node: UINode, size = { width: 1000, height: 1000 }): ParticleEmitterNodeView {\r\n const view = new ParticleEmitterNodeView(def, textures);\r\n view.update(node, \"desktop\", size);\r\n return view;\r\n}\r\n\r\ndescribe(\"ParticleEmitterNodeView spawn shapes and appearance\", () => {\r\n it(\"samples rectangle spawn points inside the node's logical rect\", () => {\r\n const view = build(effect({ particle: { ...effect().particle, spawnShape: { type: \"rectangle\" } } }), emitterNode());\r\n view.step();\r\n const sprites = spawnedSprites(view);\r\n expect(sprites).toHaveLength(24);\r\n for (const sprite of sprites) {\r\n expect(sprite.position.x).toBeGreaterThanOrEqual(0);\r\n expect(sprite.position.x).toBeLessThanOrEqual(100);\r\n expect(sprite.position.y).toBeGreaterThanOrEqual(0);\r\n expect(sprite.position.y).toBeLessThanOrEqual(60);\r\n }\r\n });\r\n\r\n it(\"samples circle spawn points inside the ellipse inscribed in the rect\", () => {\r\n const view = build(effect({ particle: { ...effect().particle, spawnShape: { type: \"circle\" } } }), emitterNode());\r\n view.step();\r\n for (const sprite of spawnedSprites(view)) {\r\n const nx = (sprite.position.x - 50) / 50, ny = (sprite.position.y - 30) / 30;\r\n expect(nx * nx + ny * ny).toBeLessThanOrEqual(1 + 1e-9);\r\n }\r\n });\r\n\r\n it(\"picks among random source assets and interpolates alpha/scale toward their end values by the particle's last frame\", () => {\r\n const random = effect({\r\n particle: { ...effect().particle, lifetime: { min: 1, max: 1 }, visual: { ...effect().particle.visual, source: { type: \"random\", assetIds: [assetIds.a, assetIds.b] } } },\r\n });\r\n const view = build(random, emitterNode());\r\n view.step();\r\n const seen = new Set(spawnedSprites(view).map((sprite) => sprite.texture));\r\n expect(seen.has(Texture.WHITE)).toBe(true);\r\n expect(seen.has(Texture.EMPTY)).toBe(true);\r\n\r\n // Advance by fixed steps (update()'s per-call catch-up cap would otherwise clip a large single\r\n // delta) to 60% through the 1s lifetime, and check the interpolated end values from above.\r\n for (let i = 0; i < 36; i++) view.step();\r\n const [sprite] = spawnedSprites(view);\r\n expect(sprite!.alpha).toBeCloseTo(0.4, 5); // 60% through life: lerp(1, 0, 0.6) = 0.4\r\n expect(sprite!.scale.x).toBeCloseTo(1.1, 5); // lerp(2, 0.5, 0.6) = 1.1\r\n });\r\n\r\n it(\"keeps a non-loop sequence on its last frame once the sequence has fully played\", () => {\r\n const sequence = effect({\r\n emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 1 }] },\r\n particle: { ...effect().particle, visual: { ...effect().particle.visual, source: { type: \"sequence\", assetIds: [assetIds.a, assetIds.b], fps: 10, loop: false, randomStartFrame: false } } },\r\n });\r\n const view = build(sequence, emitterNode());\r\n view.step();\r\n for (let i = 0; i < 30; i++) view.updateParticles(1 / 10); // far more than 2 frames at 10fps\r\n const [sprite] = spawnedSprites(view);\r\n expect(sprite!.texture).toBe(Texture.EMPTY); // stays on the last frame (assetIds[1])\r\n });\r\n});\r\n\r\ndescribe(\"ParticleEmitterNodeView local/world space\", () => {\r\n it(\"keeps a local particle following the emitter, while a world particle keeps its world trajectory\", () => {\r\n const def = effect({ emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 1 }] } });\r\n\r\n const localView = build(def, emitterNode({ simulationSpace: \"local\" }));\r\n localView.step();\r\n const worldView = build(def, emitterNode({ simulationSpace: \"world\" }));\r\n worldView.step();\r\n\r\n const worldPositionOf = (view: ParticleEmitterNodeView) => {\r\n const [sprite] = spawnedSprites(view);\r\n return view.worldTransform.apply({ x: sprite!.position.x, y: sprite!.position.y });\r\n };\r\n const localPositionOf = (view: ParticleEmitterNodeView) => {\r\n const [sprite] = spawnedSprites(view);\r\n return { x: sprite!.position.x, y: sprite!.position.y };\r\n };\r\n\r\n const localBefore = localPositionOf(localView);\r\n const worldBefore = worldPositionOf(worldView);\r\n\r\n // Move both emitters, then resync render (a zero-delta tick just re-projects, it doesn't age).\r\n 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 });\r\n 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 });\r\n localView.updateParticles(0);\r\n worldView.updateParticles(0);\r\n\r\n // Local: the particle's own local coordinates are untouched by the emitter's move.\r\n expect(localPositionOf(localView)).toEqual(localBefore);\r\n // World: local coordinates are recomputed so the particle's world position stays put.\r\n const worldAfter = worldPositionOf(worldView);\r\n expect(worldAfter.x).toBeCloseTo(worldBefore.x, 5);\r\n expect(worldAfter.y).toBeCloseTo(worldBefore.y, 5);\r\n });\r\n});\r\n\r\ndescribe(\"ParticleEmitterNodeView incremental sync and disposal\", () => {\r\n it(\"does not restart on an unrelated definition clone and adopts a new maxParticles live\", () => {\r\n const def = effect({ maxParticles: 2, emission: { delay: 0, duration: 10, loop: true, rate: 0, bursts: [{ time: 0, count: 2 }] } });\r\n const view = build(def, emitterNode());\r\n view.step();\r\n expect(spawnedSprites(view)).toHaveLength(2);\r\n\r\n const renamed = structuredClone(def);\r\n renamed.name = \"Renamed\";\r\n view.syncEffect(renamed);\r\n expect(spawnedSprites(view)).toHaveLength(2); // untouched by the sync\r\n\r\n expect(view.getDiagnostics()).toMatchObject({ active: 2, dropped: 0 });\r\n });\r\n\r\n it(\"dispose() removes every prewarmed sprite from the render tree and is safe to call from destroy()\", () => {\r\n const def = effect({ maxParticles: 4 });\r\n const view = build(def, emitterNode());\r\n view.step();\r\n expect(spawnedSprites(view)).toHaveLength(24 > 4 ? 4 : 24); // burst count clamps to maxParticles\r\n\r\n const contentRoot = view.children[0] as unknown as { children: Sprite[] };\r\n expect(contentRoot.children.length).toBeGreaterThan(0);\r\n view.destroy();\r\n expect(contentRoot.children).toHaveLength(0);\r\n expect(view.getDiagnostics()).toMatchObject({ active: 0, disposed: true });\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollViewNodeView.js","sourceRoot":"","sources":["../../src/views/ScrollViewNodeView.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScrollViewNodeView.js","sourceRoot":"","sources":["../../src/views/ScrollViewNodeView.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ScrollViewNode, type UINode } from \"@pixi-ui-editor/schema\";\r\nimport { ScrollBox } from \"@pixi/ui\";\r\nimport { Container, Texture } from \"pixi.js\";\r\nimport { SCROLL_DIRECTION_TO_LIST_TYPE } from \"../scrollView.js\";\r\nimport { NodeView, type SceneInteractionMode } from \"./NodeView.js\";\r\n\r\n/**\r\n * Adapts a scroll-view node to `@pixi/ui`'s `ScrollBox`, which already implements the\r\n * viewport/content/mask contract on its own: `scrollBox.list` is the content container that moves,\r\n * and its own mask clips overflow — this class never reimplements clipping or drag/wheel scrolling.\r\n * `direction`, `cornerRadius`, `easingEnabled` and `shiftWheelHorizontal` have no safe public API for\r\n * live updates in `@pixi/ui` 2.3.2 (they live on a protected `options` field, and `easingEnabled` is\r\n * captured once into an internal `Trackpad`), so changing them rebuilds the scene like Spine's\r\n * `animation`/`loop` do; padding, item spacing, background color and the view's own size stay\r\n * incremental through `syncContent`.\r\n */\r\nexport class ScrollViewNodeView extends NodeView {\r\n private readonly scrollBox: ScrollBox;\r\n\r\n constructor(node: ScrollViewNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode) {\r\n super(textures);\r\n const settings = node.scrollView;\r\n this.scrollBox = new ScrollBox({\r\n width: node.transform.width,\r\n height: node.transform.height,\r\n type: SCROLL_DIRECTION_TO_LIST_TYPE[settings.direction],\r\n background: settings.backgroundColor,\r\n radius: settings.cornerRadius,\r\n disableEasing: !settings.easingEnabled,\r\n // Зафиксировано решением: скролл никогда не перехватывает wheel вне компонента.\r\n globalScroll: false,\r\n shiftScroll: settings.shiftWheelHorizontal ?? false,\r\n leftPadding: settings.padding.left,\r\n rightPadding: settings.padding.right,\r\n topPadding: settings.padding.top,\r\n bottomPadding: settings.padding.bottom,\r\n elementsMargin: settings.itemSpacing,\r\n });\r\n // Authoring-канвас инертен: selection и drag идут через grab-прямоугольник базового NodeView.\r\n if (interaction === \"authoring\") this.scrollBox.eventMode = \"none\";\r\n this.setContent(this.scrollBox);\r\n }\r\n\r\n addScrollItem<T extends Container[]>(...children: T): T[0] {\r\n return this.scrollBox.addItem(...children);\r\n }\r\n\r\n protected syncContent(node: UINode, transform: UINode[\"transform\"]): void {\r\n if (node.type !== \"scroll-view\") return;\r\n this.scrollBox.setSize(transform.width, transform.height);\r\n this.scrollBox.setBackground(node.scrollView.backgroundColor);\r\n const list = this.scrollBox.list;\r\n if (list !== undefined) {\r\n list.leftPadding = node.scrollView.padding.left;\r\n list.rightPadding = node.scrollView.padding.right;\r\n list.topPadding = node.scrollView.padding.top;\r\n list.bottomPadding = node.scrollView.padding.bottom;\r\n list.elementsMargin = node.scrollView.itemSpacing;\r\n }\r\n this.scrollBox.resize(true);\r\n }\r\n\r\n get scrollX(): number { return this.scrollBox.scrollX; }\r\n set scrollX(value: number) { this.scrollBox.scrollX = value; }\r\n get scrollY(): number { return this.scrollBox.scrollY; }\r\n set scrollY(value: number) { this.scrollBox.scrollY = value; }\r\n scrollTo(elementId: number): void { this.scrollBox.scrollTo(elementId); }\r\n scrollTop(): void { this.scrollBox.scrollTop(); }\r\n scrollBottom(): void { this.scrollBox.scrollBottom(); }\r\n get onScroll(): ScrollBox[\"onScroll\"] { return this.scrollBox.onScroll; }\r\n}\r\n"]}
|
|
@@ -1 +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;AAChD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACjC,cAAc,CAAkC;IACvC,sBAAsB,CAAU;IAEjD,YAAY,YAAsC,EAAE,SAA6B,EAAE,QAAiB,EAAE,IAAa,EAAE,cAAsB,EAAE,sBAA+B,EAAE,cAAoC,EAAE,MAAe;QACjO,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,qFAAqF;QACrF,4FAA4F;QAC5F,0BAA0B;QAC1B,EAAE;QACF,yFAAyF;QACzF,yFAAyF;QACzF,8FAA8F;QAC9F,sFAAsF;QACtF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7I,iGAAiG;QACjG,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,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,SAAS,GAAG,cAAc,CAAC;QAC/L,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,iBAAiB,CAAC,cAA+C;QAC/D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAES,WAAW,CAAC,IAAY,EAAE,SAA8B,EAAE,OAAwB;QAC1F,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,QAAQ,CAAC,SAAS,CAAC;gBACvE,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;gBAC1F,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;oBAC7F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;wBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9E,CAAC;qBAAM,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAC5G,CAAC;qBAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjD,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5F,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;YACD,wFAAwF;YACxF,0FAA0F;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,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"}
|
|
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;AAChD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACjC,cAAc,CAAkC;IACvC,sBAAsB,CAAU;IAEjD,YAAY,YAAsC,EAAE,SAA6B,EAAE,QAAiB,EAAE,IAAa,EAAE,cAAsB,EAAE,sBAA+B,EAAE,cAAoC,EAAE,MAAe;QACjO,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,qFAAqF;QACrF,4FAA4F;QAC5F,0BAA0B;QAC1B,EAAE;QACF,yFAAyF;QACzF,yFAAyF;QACzF,8FAA8F;QAC9F,sFAAsF;QACtF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7I,iGAAiG;QACjG,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,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,SAAS,GAAG,cAAc,CAAC;QAC/L,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,iBAAiB,CAAC,cAA+C;QAC/D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAES,WAAW,CAAC,IAAY,EAAE,SAA8B,EAAE,OAAwB;QAC1F,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,QAAQ,CAAC,SAAS,CAAC;gBACvE,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;gBAC1F,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;oBAC7F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;wBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9E,CAAC;qBAAM,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAC5G,CAAC;qBAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjD,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5F,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;YACD,wFAAwF;YACxF,0FAA0F;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,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","sourcesContent":["import { Spine, type SkeletonData } from \"@esotericsoftware/spine-pixi-v8\";\r\nimport { type LayoutProfileId, type SpineReferenceFrame, type UINode } from \"@pixi-ui-editor/schema\";\nimport { Graphics, type Ticker } from \"pixi.js\";\r\nimport { fitSpineToTransform, resolveSpineSettings } from \"../layout.js\";\nimport { NodeView } from \"./NodeView.js\";\r\n\r\nexport class SpineNodeView extends NodeView {\n private referenceFrame: SpineReferenceFrame | undefined;\n private readonly initializeForAuthoring: boolean;\n\r\n constructor(skeletonData: SkeletonData | undefined, animation: string | undefined, autoplay: boolean, loop: boolean, animationSpeed: number, initializeForAuthoring: boolean, referenceFrame?: SpineReferenceFrame, ticker?: Ticker) {\r\n super();\n this.referenceFrame = referenceFrame;\n this.initializeForAuthoring = initializeForAuthoring;\n if (skeletonData === undefined) {\r\n this.setContent(new Graphics());\r\n return;\r\n }\r\n // The host's own Application ticker, when it passed one: a Spine left on the default\r\n // `Ticker.shared` advances its skeleton in a second rAF loop, out of band with the renderer\r\n // that actually draws it.\r\n //\r\n // An authoring view starts at the node's own autoplay setting, so a scene full of paused\r\n // skeletons subscribes to no ticker at all — the editor toggles `autoUpdate` from there.\r\n // A runtime view always keeps it on: it carries no track until game code starts an animation,\r\n // and that animation must then advance without the game touching `autoUpdate` itself.\r\n const spine = new Spine({ skeletonData, autoUpdate: initializeForAuthoring ? autoplay : true, ...(ticker === undefined ? {} : { ticker }) });\r\n // Runtime leaves a disabled animation without a track, ready for game code to start on an event.\r\n // Authoring still creates the track so its frame scrubber can inspect either initial state.\r\n if ((autoplay || initializeForAuthoring) && animation !== undefined && skeletonData.findAnimation(animation) !== null) spine.state.setAnimation(0, animation, loop).timeScale = animationSpeed;\r\n this.setContent(spine);\r\n }\r\n\r\n setReferenceFrame(referenceFrame: SpineReferenceFrame | undefined): void {\r\n this.referenceFrame = referenceFrame;\r\n }\r\n\r\n protected syncContent(node: UINode, transform: UINode[\"transform\"], profile: LayoutProfileId): void {\n if (this.content instanceof Spine) {\n if (node.type === \"spine\") {\n const settings = resolveSpineSettings(node, profile);\n const track = this.content.state.tracks[0];\n const animationChanged = track?.animation?.name !== settings.animation;\n const loopChanged = track !== null && track !== undefined && track.loop !== settings.loop;\n if (settings.animation === undefined || (!settings.autoplay && !this.initializeForAuthoring)) {\n if (track !== null && track !== undefined) this.content.state.clearTrack(0);\n } else if ((animationChanged || loopChanged) && this.content.skeleton.data.findAnimation(settings.animation) !== null) {\n this.content.state.setAnimation(0, settings.animation, settings.loop).timeScale = settings.animationSpeed;\n } else if (track !== null && track !== undefined) {\n track.timeScale = settings.animationSpeed;\n }\n }\n const fit = fitSpineToTransform(this.content.skeleton.data, transform, this.referenceFrame);\r\n if (fit !== undefined) {\r\n this.content.scale.set(fit.scaleX, fit.scaleY);\r\n this.content.position.set(fit.x, fit.y);\r\n }\r\n // A paused Spine does not receive a ticker update. Refresh its world transforms after a\r\n // layout/viewport change so its displayed pose immediately matches the new fitted bounds.\r\n this.content.update(0);\r\n } else if (this.content instanceof Graphics) {\r\n this.content.clear().rect(0, 0, transform.width, transform.height).fill(0xff00ff);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type ButtonStateKey, type LayoutPadding, type StagedButtonNode, type UINode } from "@pixi-ui-editor/schema";
|
|
2
|
+
import type { Sound } from "@pixi/sound";
|
|
3
|
+
import { Texture } from "pixi.js";
|
|
4
|
+
import { Signal } from "typed-signals";
|
|
5
|
+
import { NodeView, type SceneInteractionMode } from "./NodeView.js";
|
|
6
|
+
export type { StagedButtonNode };
|
|
7
|
+
/**
|
|
8
|
+
* Adapts a staged-button node to `@pixi/ui`'s `FancyButton`, exactly like `ButtonNodeView` does for a
|
|
9
|
+
* plain button — this class never reimplements its pointer state machine either. It is a deliberately
|
|
10
|
+
* separate component (see TASK-057): it does not extend or share behavior with `ButtonNodeView`.
|
|
11
|
+
*
|
|
12
|
+
* A click at runtime advances the current stage (`next()`), which respects `wrap`. Four state views
|
|
13
|
+
* are created once and reused across stages: changing stage only reassigns their textures/size, never
|
|
14
|
+
* replacing the view type — a full `FancyButton` rebuild only happens when a view's required *type*
|
|
15
|
+
* changes (nine-slice toggled, or a texture just finished loading), because `FancyButton` gives no way
|
|
16
|
+
* to swap a view after construction.
|
|
17
|
+
*/
|
|
18
|
+
export declare class StagedButtonNodeView extends NodeView {
|
|
19
|
+
private button;
|
|
20
|
+
private stateViews;
|
|
21
|
+
private readonly interaction;
|
|
22
|
+
private readonly sounds;
|
|
23
|
+
private soundAssetIds;
|
|
24
|
+
private nineSlice;
|
|
25
|
+
private stagesData;
|
|
26
|
+
private currentStageId;
|
|
27
|
+
private defaultStageId;
|
|
28
|
+
private wrapState;
|
|
29
|
+
private enabledState;
|
|
30
|
+
/** Последнее editor-only визуальное состояние из `setState`: переживает пересборку `FancyButton`. */
|
|
31
|
+
private forcedState;
|
|
32
|
+
readonly onStageChange: Signal<(stage: {
|
|
33
|
+
index: number;
|
|
34
|
+
value: string;
|
|
35
|
+
}) => void>;
|
|
36
|
+
constructor(node: StagedButtonNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode, sounds?: ReadonlyMap<string, Sound>);
|
|
37
|
+
private currentStage;
|
|
38
|
+
private static createStateView;
|
|
39
|
+
/**
|
|
40
|
+
* (Re)builds `FancyButton` and its four state views for the current stage. `size`, when provided,
|
|
41
|
+
* sizes the freshly built views immediately — needed because a stage change may happen well outside
|
|
42
|
+
* a `syncContent` pass (e.g. a runtime click), where nothing else would resize them afterwards.
|
|
43
|
+
*/
|
|
44
|
+
private buildButton;
|
|
45
|
+
/**
|
|
46
|
+
* Sizes the four state views to the resolved layout rectangle without touching their textures.
|
|
47
|
+
*
|
|
48
|
+
* `NineSliceSprite` проверяется отдельно: в PixiJS 8 он наследуется от `ViewContainer`, а не от
|
|
49
|
+
* `Sprite`, поэтому одна ветка `instanceof Sprite` его молча пропускает.
|
|
50
|
+
*/
|
|
51
|
+
private applySizes;
|
|
52
|
+
/**
|
|
53
|
+
* Applies the current stage's textures/border to the existing state views (or rebuilds them if a
|
|
54
|
+
* view's required type no longer matches, the same rule `ButtonNodeView.syncContent` follows).
|
|
55
|
+
*/
|
|
56
|
+
private refreshStateViews;
|
|
57
|
+
private applyStage;
|
|
58
|
+
/** In authoring mode `enabled` may only drive the visuals: `FancyButton` couples it to `eventMode`. */
|
|
59
|
+
private applyEnabled;
|
|
60
|
+
protected syncContent(node: UINode, transform: UINode["transform"]): void;
|
|
61
|
+
/** Editor-only live preview of nine-slice border edits while dragging the canvas gizmo. */
|
|
62
|
+
previewNineSlice(nineSlice: LayoutPadding): void;
|
|
63
|
+
get enabled(): boolean;
|
|
64
|
+
set enabled(value: boolean);
|
|
65
|
+
get stage(): number;
|
|
66
|
+
get value(): string;
|
|
67
|
+
get stageCount(): number;
|
|
68
|
+
/** Moves to the stage at `index` and emits `onStageChange`; an out-of-range index is a no-op. */
|
|
69
|
+
setStage(index: number): void;
|
|
70
|
+
/** Moves to the stage at `index` without emitting — used by editor preview to avoid feedback loops. */
|
|
71
|
+
forceStage(index: number): void;
|
|
72
|
+
/** Moves to the first stage whose `value` matches; an unknown value is ignored. */
|
|
73
|
+
setValue(value: string): void;
|
|
74
|
+
/** Advances one stage, as a click does; respects `wrap` at the last stage. */
|
|
75
|
+
next(): void;
|
|
76
|
+
/** Returns to `defaultStageId`, emitting `onStageChange`. */
|
|
77
|
+
reset(): void;
|
|
78
|
+
/** Forces an editor-only visual state without changing `enabled`, mirroring `ButtonNodeView.setState`. */
|
|
79
|
+
setState(state: ButtonStateKey): void;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=StagedButtonNodeView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StagedButtonNodeView.d.ts","sourceRoot":"","sources":["../../src/views/StagedButtonNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAgD,OAAO,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEpE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAKjC;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,YAAY,CAAU;IAC9B,qGAAqG;IACrG,OAAO,CAAC,WAAW,CAA6B;IAEhD,QAAQ,CAAC,aAAa,iBAAsB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,EAAI;gBAE7E,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;IAc9J,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,MAAM,CAAC,eAAe;IAO9B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA6CnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IASlB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,UAAU;IAMlB,uGAAuG;IACvG,OAAO,CAAC,YAAY;IAMpB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;IAsBzE,2FAA2F;IAC3F,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAWhD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,iGAAiG;IACjG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7B,uGAAuG;IACvG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM/B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,8EAA8E;IAC9E,IAAI,IAAI,IAAI;IAUZ,6DAA6D;IAC7D,KAAK,IAAI,IAAI;IAKb,0GAA0G;IAC1G,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAItC"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { BUTTON_STATE_KEYS } from "@pixi-ui-editor/schema";
|
|
2
|
+
import { FancyButton } from "@pixi/ui";
|
|
3
|
+
import { Graphics, NineSliceSprite, Sprite } from "pixi.js";
|
|
4
|
+
import { Signal } from "typed-signals";
|
|
5
|
+
import { NodeView } from "./NodeView.js";
|
|
6
|
+
const FANCY_STATE_BY_KEY = { normal: "default", hover: "hover", pressed: "pressed", disabled: "disabled" };
|
|
7
|
+
/**
|
|
8
|
+
* Adapts a staged-button node to `@pixi/ui`'s `FancyButton`, exactly like `ButtonNodeView` does for a
|
|
9
|
+
* plain button — this class never reimplements its pointer state machine either. It is a deliberately
|
|
10
|
+
* separate component (see TASK-057): it does not extend or share behavior with `ButtonNodeView`.
|
|
11
|
+
*
|
|
12
|
+
* A click at runtime advances the current stage (`next()`), which respects `wrap`. Four state views
|
|
13
|
+
* are created once and reused across stages: changing stage only reassigns their textures/size, never
|
|
14
|
+
* replacing the view type — a full `FancyButton` rebuild only happens when a view's required *type*
|
|
15
|
+
* changes (nine-slice toggled, or a texture just finished loading), because `FancyButton` gives no way
|
|
16
|
+
* to swap a view after construction.
|
|
17
|
+
*/
|
|
18
|
+
export class StagedButtonNodeView extends NodeView {
|
|
19
|
+
button;
|
|
20
|
+
stateViews;
|
|
21
|
+
interaction;
|
|
22
|
+
sounds;
|
|
23
|
+
soundAssetIds;
|
|
24
|
+
nineSlice;
|
|
25
|
+
stagesData;
|
|
26
|
+
currentStageId;
|
|
27
|
+
defaultStageId;
|
|
28
|
+
wrapState;
|
|
29
|
+
enabledState;
|
|
30
|
+
/** Последнее editor-only визуальное состояние из `setState`: переживает пересборку `FancyButton`. */
|
|
31
|
+
forcedState;
|
|
32
|
+
onStageChange = new Signal();
|
|
33
|
+
constructor(node, textures, interaction, sounds) {
|
|
34
|
+
super(textures);
|
|
35
|
+
this.interaction = interaction;
|
|
36
|
+
this.sounds = sounds;
|
|
37
|
+
this.soundAssetIds = node.sounds;
|
|
38
|
+
this.nineSlice = node.nineSlice;
|
|
39
|
+
this.stagesData = node.stages;
|
|
40
|
+
this.wrapState = node.wrap;
|
|
41
|
+
this.defaultStageId = node.defaultStageId;
|
|
42
|
+
this.currentStageId = node.stages.some((stage) => stage.id === node.defaultStageId) ? node.defaultStageId : node.stages[0].id;
|
|
43
|
+
this.enabledState = node.enabled;
|
|
44
|
+
this.buildButton();
|
|
45
|
+
}
|
|
46
|
+
currentStage() {
|
|
47
|
+
return this.stagesData.find((stage) => stage.id === this.currentStageId) ?? this.stagesData[0];
|
|
48
|
+
}
|
|
49
|
+
static createStateView(texture, nineSlice) {
|
|
50
|
+
if (texture === undefined)
|
|
51
|
+
return new Graphics();
|
|
52
|
+
return nineSlice === undefined
|
|
53
|
+
? new Sprite(texture)
|
|
54
|
+
: new NineSliceSprite({ texture, leftWidth: nineSlice.left, topHeight: nineSlice.top, rightWidth: nineSlice.right, bottomHeight: nineSlice.bottom });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* (Re)builds `FancyButton` and its four state views for the current stage. `size`, when provided,
|
|
58
|
+
* sizes the freshly built views immediately — needed because a stage change may happen well outside
|
|
59
|
+
* a `syncContent` pass (e.g. a runtime click), where nothing else would resize them afterwards.
|
|
60
|
+
*/
|
|
61
|
+
buildButton(size) {
|
|
62
|
+
const stage = this.currentStage();
|
|
63
|
+
const normalTexture = this.textureFor(stage.states.normalAssetId);
|
|
64
|
+
const stateViews = {};
|
|
65
|
+
const viewFor = (state, assetId) => {
|
|
66
|
+
const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;
|
|
67
|
+
const view = StagedButtonNodeView.createStateView(texture, this.nineSlice);
|
|
68
|
+
stateViews[state] = view;
|
|
69
|
+
return view;
|
|
70
|
+
};
|
|
71
|
+
const button = new FancyButton({
|
|
72
|
+
defaultView: viewFor("normal", stage.states.normalAssetId),
|
|
73
|
+
hoverView: viewFor("hover", stage.states.hoverAssetId),
|
|
74
|
+
pressedView: viewFor("pressed", stage.states.pressedAssetId),
|
|
75
|
+
disabledView: viewFor("disabled", stage.states.disabledAssetId),
|
|
76
|
+
});
|
|
77
|
+
// Authoring-сцена инертна, как и у обычной кнопки: клики не должны крутить стадию, а попадание по
|
|
78
|
+
// ноде остаётся ответственностью NodeView.containsPoint.
|
|
79
|
+
if (this.interaction === "authoring")
|
|
80
|
+
button.eventMode = "none";
|
|
81
|
+
else {
|
|
82
|
+
button.onPress.connect(() => {
|
|
83
|
+
this.next();
|
|
84
|
+
const result = this.soundAssetIds?.pressAssetId === undefined ? undefined : this.sounds?.get(this.soundAssetIds.pressAssetId)?.play();
|
|
85
|
+
if (result instanceof Promise)
|
|
86
|
+
void result.catch(() => undefined);
|
|
87
|
+
});
|
|
88
|
+
button.onHover.connect(() => {
|
|
89
|
+
const result = this.soundAssetIds?.hoverAssetId === undefined ? undefined : this.sounds?.get(this.soundAssetIds.hoverAssetId)?.play();
|
|
90
|
+
if (result instanceof Promise)
|
|
91
|
+
void result.catch(() => undefined);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
this.button = button;
|
|
95
|
+
this.stateViews = stateViews;
|
|
96
|
+
this.setContent(button);
|
|
97
|
+
const resolved = size ?? this.layoutRectangle;
|
|
98
|
+
this.applySizes(resolved.width, resolved.height);
|
|
99
|
+
// Пересборка — деталь реализации `FancyButton`, а не действие пользователя: transient enabled и
|
|
100
|
+
// визуальное состояние восстанавливаются на новом инстансе, иначе переключение nine-slice или
|
|
101
|
+
// догрузка текстуры сбрасывали бы их.
|
|
102
|
+
this.applyEnabled(this.enabledState);
|
|
103
|
+
if (this.forcedState !== undefined)
|
|
104
|
+
this.button.setState(FANCY_STATE_BY_KEY[this.forcedState]);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sizes the four state views to the resolved layout rectangle without touching their textures.
|
|
108
|
+
*
|
|
109
|
+
* `NineSliceSprite` проверяется отдельно: в PixiJS 8 он наследуется от `ViewContainer`, а не от
|
|
110
|
+
* `Sprite`, поэтому одна ветка `instanceof Sprite` его молча пропускает.
|
|
111
|
+
*/
|
|
112
|
+
applySizes(width, height) {
|
|
113
|
+
for (const state of BUTTON_STATE_KEYS) {
|
|
114
|
+
const view = this.stateViews[state];
|
|
115
|
+
if (view instanceof NineSliceSprite)
|
|
116
|
+
view.setSize(width, height);
|
|
117
|
+
else if (view instanceof Sprite)
|
|
118
|
+
view.setSize(width, height);
|
|
119
|
+
else if (view instanceof Graphics)
|
|
120
|
+
view.clear().rect(0, 0, width, height).fill(0x4a5568).stroke({ width: 1, color: 0x94a3b8 });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Applies the current stage's textures/border to the existing state views (or rebuilds them if a
|
|
125
|
+
* view's required type no longer matches, the same rule `ButtonNodeView.syncContent` follows).
|
|
126
|
+
*/
|
|
127
|
+
refreshStateViews(width, height) {
|
|
128
|
+
const stage = this.currentStage();
|
|
129
|
+
const normalTexture = this.textureFor(stage.states.normalAssetId);
|
|
130
|
+
let needsRebuild = false;
|
|
131
|
+
for (const state of BUTTON_STATE_KEYS) {
|
|
132
|
+
const assetId = stage.states[`${state}AssetId`];
|
|
133
|
+
const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;
|
|
134
|
+
const view = this.stateViews[state];
|
|
135
|
+
const wantsNineSlice = texture !== undefined && this.nineSlice !== undefined;
|
|
136
|
+
// `NineSliceSprite` не наследуется от `Sprite` в PixiJS 8, поэтому ветки не пересекаются.
|
|
137
|
+
const matches = texture === undefined ? view instanceof Graphics : wantsNineSlice ? view instanceof NineSliceSprite : view instanceof Sprite;
|
|
138
|
+
if (!matches) {
|
|
139
|
+
needsRebuild = true;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (needsRebuild) {
|
|
144
|
+
this.buildButton({ width, height });
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
for (const state of BUTTON_STATE_KEYS) {
|
|
148
|
+
const view = this.stateViews[state];
|
|
149
|
+
const assetId = stage.states[`${state}AssetId`];
|
|
150
|
+
const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;
|
|
151
|
+
// Set the texture before the layout size: Sprite/NineSliceSprite preserve scale when their
|
|
152
|
+
// texture changes, so sizing first would shift visual bounds for a differently-sized source.
|
|
153
|
+
if (view instanceof NineSliceSprite) {
|
|
154
|
+
if (texture !== undefined && view.texture !== texture)
|
|
155
|
+
view.texture = texture;
|
|
156
|
+
if (this.nineSlice !== undefined) {
|
|
157
|
+
view.leftWidth = this.nineSlice.left;
|
|
158
|
+
view.topHeight = this.nineSlice.top;
|
|
159
|
+
view.rightWidth = this.nineSlice.right;
|
|
160
|
+
view.bottomHeight = this.nineSlice.bottom;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (view instanceof Sprite) {
|
|
164
|
+
if (texture !== undefined && view.texture !== texture)
|
|
165
|
+
view.texture = texture;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
this.applySizes(width, height);
|
|
169
|
+
}
|
|
170
|
+
applyStage(stageId) {
|
|
171
|
+
this.currentStageId = stageId;
|
|
172
|
+
const { width, height } = this.layoutRectangle;
|
|
173
|
+
this.refreshStateViews(width, height);
|
|
174
|
+
}
|
|
175
|
+
/** In authoring mode `enabled` may only drive the visuals: `FancyButton` couples it to `eventMode`. */
|
|
176
|
+
applyEnabled(enabled) {
|
|
177
|
+
this.enabledState = enabled;
|
|
178
|
+
if (this.interaction === "runtime")
|
|
179
|
+
this.button.enabled = enabled;
|
|
180
|
+
else
|
|
181
|
+
this.button.setState(enabled ? "default" : "disabled");
|
|
182
|
+
}
|
|
183
|
+
syncContent(node, transform) {
|
|
184
|
+
if (node.type !== "staged-button")
|
|
185
|
+
return;
|
|
186
|
+
this.soundAssetIds = node.sounds;
|
|
187
|
+
this.nineSlice = node.nineSlice;
|
|
188
|
+
this.wrapState = node.wrap;
|
|
189
|
+
this.defaultStageId = node.defaultStageId;
|
|
190
|
+
// Сохраняет текущую стадию, если она ещё существует после изменения документа; если стадию
|
|
191
|
+
// удалили — переходит на ближайшую валидную по прежнему индексу.
|
|
192
|
+
const previousIndex = this.stagesData.findIndex((stage) => stage.id === this.currentStageId);
|
|
193
|
+
this.stagesData = node.stages;
|
|
194
|
+
if (!node.stages.some((stage) => stage.id === this.currentStageId)) {
|
|
195
|
+
const clampedIndex = Math.min(Math.max(previousIndex, 0), node.stages.length - 1);
|
|
196
|
+
this.currentStageId = node.stages[clampedIndex].id;
|
|
197
|
+
}
|
|
198
|
+
this.refreshStateViews(transform.width, transform.height);
|
|
199
|
+
// Только на изменение документа: иначе любой пересчёт layout сбрасывал бы transient preview state.
|
|
200
|
+
if (node.enabled !== this.enabledState)
|
|
201
|
+
this.applyEnabled(node.enabled);
|
|
202
|
+
}
|
|
203
|
+
/** Editor-only live preview of nine-slice border edits while dragging the canvas gizmo. */
|
|
204
|
+
previewNineSlice(nineSlice) {
|
|
205
|
+
for (const state of BUTTON_STATE_KEYS) {
|
|
206
|
+
const view = this.stateViews[state];
|
|
207
|
+
if (!(view instanceof NineSliceSprite))
|
|
208
|
+
continue;
|
|
209
|
+
view.leftWidth = nineSlice.left;
|
|
210
|
+
view.topHeight = nineSlice.top;
|
|
211
|
+
view.rightWidth = nineSlice.right;
|
|
212
|
+
view.bottomHeight = nineSlice.bottom;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
get enabled() {
|
|
216
|
+
return this.enabledState;
|
|
217
|
+
}
|
|
218
|
+
set enabled(value) {
|
|
219
|
+
this.applyEnabled(value);
|
|
220
|
+
}
|
|
221
|
+
get stage() {
|
|
222
|
+
const index = this.stagesData.findIndex((stage) => stage.id === this.currentStageId);
|
|
223
|
+
return index === -1 ? 0 : index;
|
|
224
|
+
}
|
|
225
|
+
get value() {
|
|
226
|
+
return this.currentStage().value;
|
|
227
|
+
}
|
|
228
|
+
get stageCount() {
|
|
229
|
+
return this.stagesData.length;
|
|
230
|
+
}
|
|
231
|
+
/** Moves to the stage at `index` and emits `onStageChange`; an out-of-range index is a no-op. */
|
|
232
|
+
setStage(index) {
|
|
233
|
+
const target = this.stagesData[index];
|
|
234
|
+
if (target === undefined)
|
|
235
|
+
return;
|
|
236
|
+
this.applyStage(target.id);
|
|
237
|
+
this.onStageChange.emit({ index, value: target.value });
|
|
238
|
+
}
|
|
239
|
+
/** Moves to the stage at `index` without emitting — used by editor preview to avoid feedback loops. */
|
|
240
|
+
forceStage(index) {
|
|
241
|
+
const target = this.stagesData[index];
|
|
242
|
+
if (target === undefined)
|
|
243
|
+
return;
|
|
244
|
+
this.applyStage(target.id);
|
|
245
|
+
}
|
|
246
|
+
/** Moves to the first stage whose `value` matches; an unknown value is ignored. */
|
|
247
|
+
setValue(value) {
|
|
248
|
+
const index = this.stagesData.findIndex((stage) => stage.value === value);
|
|
249
|
+
if (index === -1)
|
|
250
|
+
return;
|
|
251
|
+
this.setStage(index);
|
|
252
|
+
}
|
|
253
|
+
/** Advances one stage, as a click does; respects `wrap` at the last stage. */
|
|
254
|
+
next() {
|
|
255
|
+
const nextIndex = this.stage + 1;
|
|
256
|
+
if (nextIndex >= this.stagesData.length) {
|
|
257
|
+
if (!this.wrapState)
|
|
258
|
+
return;
|
|
259
|
+
this.setStage(0);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
this.setStage(nextIndex);
|
|
263
|
+
}
|
|
264
|
+
/** Returns to `defaultStageId`, emitting `onStageChange`. */
|
|
265
|
+
reset() {
|
|
266
|
+
const index = this.stagesData.findIndex((stage) => stage.id === this.defaultStageId);
|
|
267
|
+
this.setStage(index === -1 ? 0 : index);
|
|
268
|
+
}
|
|
269
|
+
/** Forces an editor-only visual state without changing `enabled`, mirroring `ButtonNodeView.setState`. */
|
|
270
|
+
setState(state) {
|
|
271
|
+
this.forcedState = state;
|
|
272
|
+
this.button.setState(FANCY_STATE_BY_KEY[state]);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=StagedButtonNodeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StagedButtonNodeView.js","sourceRoot":"","sources":["../../src/views/StagedButtonNodeView.ts"],"names":[],"mappings":"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","sourcesContent":["import { BUTTON_STATE_KEYS, type ButtonStateKey, type LayoutPadding, type StagedButtonNode, type UINode } from \"@pixi-ui-editor/schema\";\nimport { FancyButton } from \"@pixi/ui\";\nimport type { Sound } from \"@pixi/sound\";\nimport { Container, Graphics, NineSliceSprite, Sprite, Texture } from \"pixi.js\";\nimport { Signal } from \"typed-signals\";\nimport { NodeView, type SceneInteractionMode } from \"./NodeView.js\";\n\nexport type { StagedButtonNode };\ntype StagedButtonStage = StagedButtonNode[\"stages\"][number];\n\nconst FANCY_STATE_BY_KEY = { normal: \"default\", hover: \"hover\", pressed: \"pressed\", disabled: \"disabled\" } as const;\n\n/**\n * Adapts a staged-button node to `@pixi/ui`'s `FancyButton`, exactly like `ButtonNodeView` does for a\n * plain button — this class never reimplements its pointer state machine either. It is a deliberately\n * separate component (see TASK-057): it does not extend or share behavior with `ButtonNodeView`.\n *\n * A click at runtime advances the current stage (`next()`), which respects `wrap`. Four state views\n * are created once and reused across stages: changing stage only reassigns their textures/size, never\n * replacing the view type — a full `FancyButton` rebuild only happens when a view's required *type*\n * changes (nine-slice toggled, or a texture just finished loading), because `FancyButton` gives no way\n * to swap a view after construction.\n */\nexport class StagedButtonNodeView extends NodeView {\n private button!: FancyButton;\n private stateViews!: Record<ButtonStateKey, Container>;\n private readonly interaction: SceneInteractionMode;\n private readonly sounds: ReadonlyMap<string, Sound> | undefined;\n private soundAssetIds: StagedButtonNode[\"sounds\"];\n private nineSlice: LayoutPadding | undefined;\n private stagesData: StagedButtonStage[];\n private currentStageId: string;\n private defaultStageId: string;\n private wrapState: boolean;\n private enabledState: boolean;\n /** Последнее editor-only визуальное состояние из `setState`: переживает пересборку `FancyButton`. */\n private forcedState: ButtonStateKey | undefined;\n\n readonly onStageChange = new Signal<(stage: { index: number; value: string }) => void>();\n\n constructor(node: StagedButtonNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode, sounds?: ReadonlyMap<string, Sound>) {\n super(textures);\n this.interaction = interaction;\n this.sounds = sounds;\n this.soundAssetIds = node.sounds;\n this.nineSlice = node.nineSlice;\n this.stagesData = node.stages;\n this.wrapState = node.wrap;\n this.defaultStageId = node.defaultStageId;\n this.currentStageId = node.stages.some((stage) => stage.id === node.defaultStageId) ? node.defaultStageId : node.stages[0]!.id;\n this.enabledState = node.enabled;\n this.buildButton();\n }\n\n private currentStage(): StagedButtonStage {\n return this.stagesData.find((stage) => stage.id === this.currentStageId) ?? this.stagesData[0]!;\n }\n\n private static createStateView(texture: Texture | undefined, nineSlice: LayoutPadding | undefined): Container {\n if (texture === undefined) return new Graphics();\n return nineSlice === undefined\n ? new Sprite(texture)\n : new NineSliceSprite({ texture, leftWidth: nineSlice.left, topHeight: nineSlice.top, rightWidth: nineSlice.right, bottomHeight: nineSlice.bottom });\n }\n\n /**\n * (Re)builds `FancyButton` and its four state views for the current stage. `size`, when provided,\n * sizes the freshly built views immediately — needed because a stage change may happen well outside\n * a `syncContent` pass (e.g. a runtime click), where nothing else would resize them afterwards.\n */\n private buildButton(size?: { width: number; height: number }): void {\n const stage = this.currentStage();\n const normalTexture = this.textureFor(stage.states.normalAssetId);\n const stateViews = {} as Record<ButtonStateKey, Container>;\n const viewFor = (state: ButtonStateKey, assetId: string | undefined): Container => {\n const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;\n const view = StagedButtonNodeView.createStateView(texture, this.nineSlice);\n stateViews[state] = view;\n return view;\n };\n\n const button = new FancyButton({\n defaultView: viewFor(\"normal\", stage.states.normalAssetId),\n hoverView: viewFor(\"hover\", stage.states.hoverAssetId),\n pressedView: viewFor(\"pressed\", stage.states.pressedAssetId),\n disabledView: viewFor(\"disabled\", stage.states.disabledAssetId),\n });\n // Authoring-сцена инертна, как и у обычной кнопки: клики не должны крутить стадию, а попадание по\n // ноде остаётся ответственностью NodeView.containsPoint.\n if (this.interaction === \"authoring\") button.eventMode = \"none\";\n else {\n button.onPress.connect(() => {\n this.next();\n const result = this.soundAssetIds?.pressAssetId === undefined ? undefined : this.sounds?.get(this.soundAssetIds.pressAssetId)?.play();\n if (result instanceof Promise) void result.catch(() => undefined);\n });\n button.onHover.connect(() => {\n const result = this.soundAssetIds?.hoverAssetId === undefined ? undefined : this.sounds?.get(this.soundAssetIds.hoverAssetId)?.play();\n if (result instanceof Promise) void result.catch(() => undefined);\n });\n }\n this.button = button;\n this.stateViews = stateViews;\n this.setContent(button);\n\n const resolved = size ?? this.layoutRectangle;\n this.applySizes(resolved.width, resolved.height);\n\n // Пересборка — деталь реализации `FancyButton`, а не действие пользователя: transient enabled и\n // визуальное состояние восстанавливаются на новом инстансе, иначе переключение nine-slice или\n // догрузка текстуры сбрасывали бы их.\n this.applyEnabled(this.enabledState);\n if (this.forcedState !== undefined) this.button.setState(FANCY_STATE_BY_KEY[this.forcedState]);\n }\n\n /**\n * Sizes the four state views to the resolved layout rectangle without touching their textures.\n *\n * `NineSliceSprite` проверяется отдельно: в PixiJS 8 он наследуется от `ViewContainer`, а не от\n * `Sprite`, поэтому одна ветка `instanceof Sprite` его молча пропускает.\n */\n private applySizes(width: number, height: number): void {\n for (const state of BUTTON_STATE_KEYS) {\n const view = this.stateViews[state];\n if (view instanceof NineSliceSprite) view.setSize(width, height);\n else if (view instanceof Sprite) view.setSize(width, height);\n else if (view instanceof Graphics) view.clear().rect(0, 0, width, height).fill(0x4a5568).stroke({ width: 1, color: 0x94a3b8 });\n }\n }\n\n /**\n * Applies the current stage's textures/border to the existing state views (or rebuilds them if a\n * view's required type no longer matches, the same rule `ButtonNodeView.syncContent` follows).\n */\n private refreshStateViews(width: number, height: number): void {\n const stage = this.currentStage();\n const normalTexture = this.textureFor(stage.states.normalAssetId);\n\n let needsRebuild = false;\n for (const state of BUTTON_STATE_KEYS) {\n const assetId = stage.states[`${state}AssetId`];\n const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;\n const view = this.stateViews[state];\n const wantsNineSlice = texture !== undefined && this.nineSlice !== undefined;\n // `NineSliceSprite` не наследуется от `Sprite` в PixiJS 8, поэтому ветки не пересекаются.\n const matches = texture === undefined ? view instanceof Graphics : wantsNineSlice ? view instanceof NineSliceSprite : view instanceof Sprite;\n if (!matches) { needsRebuild = true; break; }\n }\n\n if (needsRebuild) {\n this.buildButton({ width, height });\n return;\n }\n\n for (const state of BUTTON_STATE_KEYS) {\n const view = this.stateViews[state];\n const assetId = stage.states[`${state}AssetId`];\n const texture = (assetId === undefined ? undefined : this.textureFor(assetId)) ?? normalTexture;\n // Set the texture before the layout size: Sprite/NineSliceSprite preserve scale when their\n // texture changes, so sizing first would shift visual bounds for a differently-sized source.\n if (view instanceof NineSliceSprite) {\n if (texture !== undefined && view.texture !== texture) view.texture = texture;\n if (this.nineSlice !== undefined) {\n view.leftWidth = this.nineSlice.left;\n view.topHeight = this.nineSlice.top;\n view.rightWidth = this.nineSlice.right;\n view.bottomHeight = this.nineSlice.bottom;\n }\n } else if (view instanceof Sprite) {\n if (texture !== undefined && view.texture !== texture) view.texture = texture;\n }\n }\n this.applySizes(width, height);\n }\n\n private applyStage(stageId: string): void {\n this.currentStageId = stageId;\n const { width, height } = this.layoutRectangle;\n this.refreshStateViews(width, height);\n }\n\n /** In authoring mode `enabled` may only drive the visuals: `FancyButton` couples it to `eventMode`. */\n private applyEnabled(enabled: boolean): void {\n this.enabledState = enabled;\n if (this.interaction === \"runtime\") this.button.enabled = enabled;\n else this.button.setState(enabled ? \"default\" : \"disabled\");\n }\n\n protected syncContent(node: UINode, transform: UINode[\"transform\"]): void {\n if (node.type !== \"staged-button\") return;\n this.soundAssetIds = node.sounds;\n this.nineSlice = node.nineSlice;\n this.wrapState = node.wrap;\n this.defaultStageId = node.defaultStageId;\n\n // Сохраняет текущую стадию, если она ещё существует после изменения документа; если стадию\n // удалили — переходит на ближайшую валидную по прежнему индексу.\n const previousIndex = this.stagesData.findIndex((stage) => stage.id === this.currentStageId);\n this.stagesData = node.stages;\n if (!node.stages.some((stage) => stage.id === this.currentStageId)) {\n const clampedIndex = Math.min(Math.max(previousIndex, 0), node.stages.length - 1);\n this.currentStageId = node.stages[clampedIndex]!.id;\n }\n\n this.refreshStateViews(transform.width, transform.height);\n\n // Только на изменение документа: иначе любой пересчёт layout сбрасывал бы transient preview state.\n if (node.enabled !== this.enabledState) this.applyEnabled(node.enabled);\n }\n\n /** Editor-only live preview of nine-slice border edits while dragging the canvas gizmo. */\n previewNineSlice(nineSlice: LayoutPadding): void {\n for (const state of BUTTON_STATE_KEYS) {\n const view = this.stateViews[state];\n if (!(view instanceof NineSliceSprite)) continue;\n view.leftWidth = nineSlice.left;\n view.topHeight = nineSlice.top;\n view.rightWidth = nineSlice.right;\n view.bottomHeight = nineSlice.bottom;\n }\n }\n\n get enabled(): boolean {\n return this.enabledState;\n }\n\n set enabled(value: boolean) {\n this.applyEnabled(value);\n }\n\n get stage(): number {\n const index = this.stagesData.findIndex((stage) => stage.id === this.currentStageId);\n return index === -1 ? 0 : index;\n }\n\n get value(): string {\n return this.currentStage().value;\n }\n\n get stageCount(): number {\n return this.stagesData.length;\n }\n\n /** Moves to the stage at `index` and emits `onStageChange`; an out-of-range index is a no-op. */\n setStage(index: number): void {\n const target = this.stagesData[index];\n if (target === undefined) return;\n this.applyStage(target.id);\n this.onStageChange.emit({ index, value: target.value });\n }\n\n /** Moves to the stage at `index` without emitting — used by editor preview to avoid feedback loops. */\n forceStage(index: number): void {\n const target = this.stagesData[index];\n if (target === undefined) return;\n this.applyStage(target.id);\n }\n\n /** Moves to the first stage whose `value` matches; an unknown value is ignored. */\n setValue(value: string): void {\n const index = this.stagesData.findIndex((stage) => stage.value === value);\n if (index === -1) return;\n this.setStage(index);\n }\n\n /** Advances one stage, as a click does; respects `wrap` at the last stage. */\n next(): void {\n const nextIndex = this.stage + 1;\n if (nextIndex >= this.stagesData.length) {\n if (!this.wrapState) return;\n this.setStage(0);\n return;\n }\n this.setStage(nextIndex);\n }\n\n /** Returns to `defaultStageId`, emitting `onStageChange`. */\n reset(): void {\n const index = this.stagesData.findIndex((stage) => stage.id === this.defaultStageId);\n this.setStage(index === -1 ? 0 : index);\n }\n\n /** Forces an editor-only visual state without changing `enabled`, mirroring `ButtonNodeView.setState`. */\n setState(state: ButtonStateKey): void {\n this.forcedState = state;\n this.button.setState(FANCY_STATE_BY_KEY[state]);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueControlNodeViews.js","sourceRoot":"","sources":["../../src/views/ValueControlNodeViews.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ValueControlNodeViews.js","sourceRoot":"","sources":["../../src/views/ValueControlNodeViews.ts"],"names":[],"mappings":"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","sourcesContent":["import { type LayoutPadding, type ProgressBarNode, type SliderNode, type TextStyleDefinition, type UINode } from \"@pixi-ui-editor/schema\";\r\nimport { ProgressBar, Slider } from \"@pixi/ui\";\r\nimport { Sprite, Texture, type FederatedPointerEvent, type TextStyleOptions } from \"pixi.js\";\r\nimport { NodeView, type SceneInteractionMode } from \"./NodeView.js\";\r\n\r\nconst ZERO_NINE_SLICE = { bg: [0, 0, 0, 0], fill: [0, 0, 0, 0] } as const;\r\n\r\nfunction textStyle(style: TextStyleDefinition | undefined, fonts: ReadonlyMap<string, string> | undefined): Partial<TextStyleOptions> {\r\n const resolved = style ?? { fontFamily: \"Arial\", fontSize: 18, fontWeight: \"normal\", fontStyle: \"normal\", fill: \"#FFFFFF\", align: \"center\", verticalAlign: \"middle\", wordWrap: false, breakWords: false, letterSpacing: 0 };\r\n return {\r\n fontFamily: resolved.fontAssetId === undefined ? resolved.fontFamily : fonts?.get(resolved.fontAssetId) ?? resolved.fontFamily,\r\n fontSize: resolved.fontSize,\r\n fontWeight: resolved.fontWeight,\r\n fontStyle: resolved.fontStyle,\r\n fill: resolved.fill,\r\n align: resolved.align,\r\n wordWrap: resolved.wordWrap,\r\n breakWords: resolved.breakWords,\r\n lineHeight: resolved.lineHeight,\r\n letterSpacing: resolved.letterSpacing,\r\n stroke: resolved.stroke === undefined ? undefined : { color: resolved.stroke.color, width: resolved.stroke.width },\r\n };\r\n}\r\n\r\nclass SliderControl extends Slider {\r\n override get value(): number { return super.value; }\r\n\r\n override set value(value: number) {\r\n const clamped = Math.min(this.max, Math.max(this.min, value));\r\n const steps = Math.round((clamped - this.min) / this.step);\r\n const snapped = this.min + steps * this.step;\r\n // Floating-point steps such as 0.1 should not leak 0.30000000000000004 to game code.\r\n const precision = Math.max(0, (String(this.step).split(\".\")[1]?.length ?? 0));\r\n super.value = Number(Math.min(this.max, Math.max(this.min, snapped)).toFixed(precision));\r\n }\r\n\r\n /** `@pixi/ui` snaps around zero; authored steps are anchored at min (min, min + step, ...). */\r\n protected override update(event: FederatedPointerEvent): void {\r\n if (!this.dragging) return;\r\n const target = event.currentTarget;\r\n if (target.parent === null) return;\r\n const localX = target.parent.worldTransform.applyInverse(event.global).x;\r\n const ratio = localX / (this.bg?.width || 1);\r\n this.value = this.min + ratio * (this.max - this.min);\r\n }\r\n\r\n setValueLabel(show: boolean, style: Partial<TextStyleOptions>): void {\r\n if (this.value1Text === undefined) return;\r\n this.value1Text.visible = show;\r\n this.value1Text.style = style as never;\r\n this.updateSlider();\r\n }\r\n\r\n setHandle(texture: Texture): void {\r\n this.slider = new Sprite(texture);\r\n }\r\n\r\n setFillConfig(texture: Texture, padding: LayoutPadding): void {\r\n this.options.fillPaddings = padding;\r\n this.setFill(texture, padding);\r\n }\r\n\r\n sizeHandle(height: number): void {\r\n const handle = this.slider1?.children[0];\r\n if (handle instanceof Sprite) handle.setSize(height, height);\r\n this.updateSlider();\r\n }\r\n}\r\n\r\nclass ProgressControl extends ProgressBar {\r\n setFillConfig(texture: Texture, padding: LayoutPadding): void {\r\n this.options.fillPaddings = padding;\r\n this.setFill(texture, padding);\r\n }\r\n}\r\n\r\n/** Horizontal live-value control backed by `@pixi/ui` Slider. */\r\nexport class SliderNodeView extends NodeView {\r\n private readonly control: SliderControl;\r\n private readonly fonts: ReadonlyMap<string, string> | undefined;\r\n private backgroundTexture: Texture;\r\n private fillTexture: Texture;\r\n private handleTexture: Texture;\r\n private paddingKey = \"\";\r\n\r\n constructor(node: SliderNode, textures: ReadonlyMap<string, Texture> | undefined, interaction: SceneInteractionMode, fonts: ReadonlyMap<string, string> | undefined) {\r\n super(textures);\r\n this.fonts = fonts;\r\n this.backgroundTexture = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;\r\n this.fillTexture = this.textureFor(node.fillAssetId) ?? Texture.WHITE;\r\n this.handleTexture = this.textureFor(node.handleAssetId) ?? Texture.WHITE;\r\n this.control = new SliderControl({\r\n bg: this.backgroundTexture,\r\n fill: this.fillTexture,\r\n slider: new Sprite(this.handleTexture),\r\n fillPaddings: node.fillPadding,\r\n nineSliceSprite: ZERO_NINE_SLICE as unknown as { bg: [number, number, number, number]; fill: [number, number, number, number] },\r\n min: node.min,\r\n max: node.max,\r\n step: node.step,\r\n value: node.defaultValue,\r\n // Keep the library label allocated so show/style can change incrementally.\r\n showValue: true,\r\n valueTextStyle: textStyle(node.valueTextStyle, fonts),\r\n });\r\n if (interaction === \"authoring\") this.control.eventMode = \"none\";\r\n this.setContent(this.control);\r\n }\r\n\r\n protected syncContent(node: UINode, transform: UINode[\"transform\"]): void {\r\n if (node.type !== \"slider\") return;\r\n const background = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;\r\n const fill = this.textureFor(node.fillAssetId) ?? Texture.WHITE;\r\n const handle = this.textureFor(node.handleAssetId) ?? Texture.WHITE;\r\n const paddingKey = `${node.fillPadding.left}/${node.fillPadding.right}/${node.fillPadding.top}/${node.fillPadding.bottom}`;\r\n if (background !== this.backgroundTexture) { this.backgroundTexture = background; this.control.setBackground(background); }\r\n if (fill !== this.fillTexture || paddingKey !== this.paddingKey) { this.fillTexture = fill; this.paddingKey = paddingKey; this.control.setFillConfig(fill, node.fillPadding); }\r\n if (handle !== this.handleTexture) { this.handleTexture = handle; this.control.setHandle(handle); }\r\n this.control.min = node.min;\r\n this.control.max = node.max;\r\n this.control.step = node.step;\r\n this.control.value = this.control.value;\r\n this.control.setSize(transform.width, transform.height);\r\n this.control.sizeHandle(transform.height);\r\n this.control.setValueLabel(node.showValue ?? false, textStyle(node.valueTextStyle, this.fonts));\r\n }\r\n\r\n get value(): number { return this.control.value; }\r\n set value(value: number) { this.control.value = value; }\r\n get min(): number { return this.control.min; }\r\n set min(value: number) { this.control.min = value; this.control.value = this.control.value; }\r\n get max(): number { return this.control.max; }\r\n set max(value: number) { this.control.max = value; this.control.value = this.control.value; }\r\n get step(): number { return this.control.step; }\r\n set step(value: number) { this.control.step = value; this.control.value = this.control.value; }\r\n get onUpdate(): Slider[\"onUpdate\"] { return this.control.onUpdate; }\r\n get onChange(): Slider[\"onChange\"] { return this.control.onChange; }\r\n}\r\n\r\n/** Left-to-right runtime progress backed by `@pixi/ui` ProgressBar. */\r\nexport class ProgressBarNodeView extends NodeView {\r\n private readonly control: ProgressControl;\r\n private backgroundTexture: Texture;\r\n private fillTexture: Texture;\r\n private paddingKey = \"\";\r\n\r\n constructor(node: ProgressBarNode, textures: ReadonlyMap<string, Texture> | undefined) {\r\n super(textures);\r\n this.backgroundTexture = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;\r\n this.fillTexture = this.textureFor(node.fillAssetId) ?? Texture.WHITE;\r\n this.control = new ProgressControl({\r\n bg: this.backgroundTexture,\r\n fill: this.fillTexture,\r\n fillPaddings: node.fillPadding,\r\n nineSliceSprite: ZERO_NINE_SLICE as unknown as { bg: [number, number, number, number]; fill: [number, number, number, number] },\r\n progress: node.defaultProgress,\r\n });\r\n this.setContent(this.control);\r\n }\r\n\r\n protected syncContent(node: UINode, transform: UINode[\"transform\"]): void {\r\n if (node.type !== \"progress-bar\") return;\r\n const background = this.textureFor(node.backgroundAssetId) ?? Texture.WHITE;\r\n const fill = this.textureFor(node.fillAssetId) ?? Texture.WHITE;\r\n const paddingKey = `${node.fillPadding.left}/${node.fillPadding.right}/${node.fillPadding.top}/${node.fillPadding.bottom}`;\r\n if (background !== this.backgroundTexture) { this.backgroundTexture = background; this.control.setBackground(background); }\r\n if (fill !== this.fillTexture || paddingKey !== this.paddingKey) { this.fillTexture = fill; this.paddingKey = paddingKey; this.control.setFillConfig(fill, node.fillPadding); }\r\n this.control.setSize(transform.width, transform.height);\r\n }\r\n\r\n get progress(): number { return this.control.progress; }\r\n set progress(value: number) { this.control.progress = value; }\r\n}\r\n"]}
|