@caperjs/core 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.mjs +3 -1
- package/build/internal/discovery.mjs +1 -1
- package/build/internal/manifest.mjs +8 -3
- package/build/internal/validate.mjs +3 -1
- package/build/plugins/assetTypes.mjs +4 -4
- package/build/plugins/caperConfig.mjs +12 -5
- package/build/plugins/lists.mjs +29 -9
- package/cli/create.mjs +57 -6
- package/cli/create.test.mjs +36 -0
- package/cli/update.mjs +1 -1
- package/lib/{CaptionsPlugin-WPAcfAkx.js → CaptionsPlugin-BLbLl3WB.js} +3 -3
- package/lib/{CaptionsPlugin-WPAcfAkx.js.map → CaptionsPlugin-BLbLl3WB.js.map} +1 -1
- package/lib/{DataAdapter-DS-twowe.js → DataAdapter-aHSNM_26.js} +12 -7
- package/lib/DataAdapter-aHSNM_26.js.map +1 -0
- package/lib/{DebugRenderer-D1ryrRYx.js → DebugRenderer-8LjHtBzA.js} +2 -2
- package/lib/{DebugRenderer-D1ryrRYx.js.map → DebugRenderer-8LjHtBzA.js.map} +1 -1
- package/lib/{DevToolsPlugin-DH7zX7HU.js → DevToolsPlugin-Vrk6aOtS.js} +2 -2
- package/lib/{DevToolsPlugin-DH7zX7HU.js.map → DevToolsPlugin-Vrk6aOtS.js.map} +1 -1
- package/lib/{GSAPPlugin-BBtRjUqe.js → GSAPPlugin-Hm3F4zdg.js} +3 -3
- package/lib/{GSAPPlugin-BBtRjUqe.js.map → GSAPPlugin-Hm3F4zdg.js.map} +1 -1
- package/lib/{LayoutPlugin-Co6vcoV4.js → LayoutPlugin-Dpgeawfw.js} +4 -4
- package/lib/{LayoutPlugin-Co6vcoV4.js.map → LayoutPlugin-Dpgeawfw.js.map} +1 -1
- package/lib/{SpinePlugin-uN641Hmk.js → SpinePlugin-B08yAw1S.js} +690 -793
- package/lib/SpinePlugin-B08yAw1S.js.map +1 -0
- package/lib/{StatsPlugin-vZQRm6wh.js → StatsPlugin-D2Xa5j97.js} +5 -2
- package/lib/StatsPlugin-D2Xa5j97.js.map +1 -0
- package/lib/{VoiceOverPlugin-KlZdGj1G.js → VoiceOverPlugin-qtFlqpRn.js} +6 -5
- package/lib/VoiceOverPlugin-qtFlqpRn.js.map +1 -0
- package/lib/caper.mjs +37 -19
- package/lib/caper.mjs.map +1 -1
- package/lib/core/Application.d.ts +8 -3
- package/lib/core/Application.d.ts.map +1 -1
- package/lib/core/Application.test.d.ts +2 -0
- package/lib/core/Application.test.d.ts.map +1 -0
- package/lib/core/config.d.ts +6 -1
- package/lib/core/config.d.ts.map +1 -1
- package/lib/core/config.test.d.ts +2 -0
- package/lib/core/config.test.d.ts.map +1 -0
- package/lib/core/interfaces/IApplication.d.ts +6 -6
- package/lib/core/interfaces/IApplication.d.ts.map +1 -1
- package/lib/core/interfaces/ICoreSignals.d.ts +2 -1
- package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -1
- package/lib/display/Camera.test.d.ts +2 -0
- package/lib/display/Camera.test.d.ts.map +1 -0
- package/lib/display/Entity.d.ts +2 -2
- package/lib/display/SceneTransition.test.d.ts +1 -0
- package/lib/display/SceneTransition.test.d.ts.map +1 -0
- package/lib/display/SpineAnimation.d.ts +3 -3
- package/lib/mixins/factory/methods.d.ts.map +1 -1
- package/lib/plugins/AssetsPlugin.d.ts.map +1 -1
- package/lib/plugins/AssetsPlugin.test.d.ts +2 -0
- package/lib/plugins/AssetsPlugin.test.d.ts.map +1 -0
- package/lib/plugins/DataAdapter.d.ts.map +1 -1
- package/lib/plugins/DataAdapter.test.d.ts +2 -0
- package/lib/plugins/DataAdapter.test.d.ts.map +1 -0
- package/lib/plugins/FullScreenPlugin.d.ts.map +1 -1
- package/lib/plugins/FullScreenPlugin.test.d.ts +2 -0
- package/lib/plugins/FullScreenPlugin.test.d.ts.map +1 -0
- package/lib/plugins/GSAPPlugin.d.ts +0 -2
- package/lib/plugins/GSAPPlugin.d.ts.map +1 -1
- package/lib/plugins/GSAPPlugin.test.d.ts +2 -0
- package/lib/plugins/GSAPPlugin.test.d.ts.map +1 -0
- package/lib/plugins/LookupPlugin.d.ts +6 -1
- package/lib/plugins/LookupPlugin.d.ts.map +1 -1
- package/lib/plugins/LookupPlugin.test.d.ts +2 -0
- package/lib/plugins/LookupPlugin.test.d.ts.map +1 -0
- package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -1
- package/lib/plugins/PopupManagerPlugin.test.d.ts +1 -0
- package/lib/plugins/PopupManagerPlugin.test.d.ts.map +1 -0
- package/lib/plugins/SceneManagerPlugin.d.ts +1 -0
- package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -1
- package/lib/plugins/SceneManagerPlugin.test.d.ts +2 -0
- package/lib/plugins/SceneManagerPlugin.test.d.ts.map +1 -0
- package/lib/plugins/StatsPlugin.d.ts +1 -0
- package/lib/plugins/StatsPlugin.d.ts.map +1 -1
- package/lib/plugins/WebEventsPlugin.d.ts.map +1 -1
- package/lib/plugins/actions/ActionsPlugin.test.d.ts +2 -0
- package/lib/plugins/actions/ActionsPlugin.test.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.d.ts.map +1 -1
- package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -1
- package/lib/plugins/audio/AudioManagerPlugin.test.d.ts +2 -0
- package/lib/plugins/audio/AudioManagerPlugin.test.d.ts.map +1 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -1
- package/lib/plugins/captions/CaptionsPlugin.test.d.ts +2 -0
- package/lib/plugins/captions/CaptionsPlugin.test.d.ts.map +1 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -1
- package/lib/plugins/focus/FocusManagerPlugin.test.d.ts +2 -0
- package/lib/plugins/focus/FocusManagerPlugin.test.d.ts.map +1 -0
- package/lib/plugins/input/AbstractControls.d.ts +5 -0
- package/lib/plugins/input/AbstractControls.d.ts.map +1 -1
- package/lib/plugins/input/Controls.test.d.ts +2 -0
- package/lib/plugins/input/Controls.test.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts +5 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -1
- package/lib/plugins/input/touch/VirtualControls.d.ts +6 -0
- package/lib/plugins/input/touch/VirtualControls.d.ts.map +1 -1
- package/lib/plugins/input/touch/VirtualControls.test.d.ts +2 -0
- package/lib/plugins/input/touch/VirtualControls.test.d.ts.map +1 -0
- package/lib/{registries-BLrxALZ0.js → registries-m2vKTIih.js} +156 -101
- package/lib/registries-m2vKTIih.js.map +1 -0
- package/lib/store/Store.d.ts.map +1 -1
- package/lib/ui/Button.d.ts +8 -1
- package/lib/ui/Button.d.ts.map +1 -1
- package/lib/ui/Button.test.d.ts +2 -0
- package/lib/ui/Button.test.d.ts.map +1 -0
- package/lib/ui/UICanvas.d.ts +10 -1
- package/lib/ui/UICanvas.d.ts.map +1 -1
- package/lib/ui/UICanvas.test.d.ts +0 -1
- package/lib/ui/UICanvas.test.d.ts.map +1 -1
- package/lib/utils/color.d.ts.map +1 -1
- package/lib/utils/color.test.d.ts +2 -0
- package/lib/utils/color.test.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/core/Application.test.ts +168 -0
- package/src/core/Application.ts +37 -27
- package/src/core/config.test.ts +79 -0
- package/src/core/config.ts +28 -6
- package/src/core/interfaces/IApplication.ts +6 -6
- package/src/core/interfaces/ICoreSignals.ts +2 -0
- package/src/display/Camera.test.ts +40 -0
- package/src/display/Camera.ts +3 -3
- package/src/display/Entity.ts +2 -2
- package/src/display/SceneTransition.test.ts +58 -0
- package/src/display/SceneTransition.ts +1 -1
- package/src/display/SpineAnimation.ts +4 -4
- package/src/mixins/factory/methods.ts +0 -1
- package/src/plugins/AssetsPlugin.test.ts +48 -0
- package/src/plugins/AssetsPlugin.ts +3 -1
- package/src/plugins/DataAdapter.test.ts +32 -0
- package/src/plugins/DataAdapter.ts +5 -1
- package/src/plugins/FullScreenPlugin.test.ts +48 -0
- package/src/plugins/FullScreenPlugin.ts +5 -1
- package/src/plugins/GSAPPlugin.test.ts +31 -0
- package/src/plugins/GSAPPlugin.ts +1 -4
- package/src/plugins/LookupPlugin.test.ts +42 -0
- package/src/plugins/LookupPlugin.ts +15 -3
- package/src/plugins/PopupManagerPlugin.test.ts +53 -0
- package/src/plugins/PopupManagerPlugin.ts +5 -3
- package/src/plugins/SceneManagerPlugin.test.ts +76 -0
- package/src/plugins/SceneManagerPlugin.ts +21 -11
- package/src/plugins/StatsPlugin.ts +8 -0
- package/src/plugins/WebEventsPlugin.test.ts +32 -0
- package/src/plugins/WebEventsPlugin.ts +2 -0
- package/src/plugins/actions/ActionsPlugin.test.ts +68 -0
- package/src/plugins/actions/ActionsPlugin.ts +5 -5
- package/src/plugins/audio/AudioChannel.test.ts +19 -0
- package/src/plugins/audio/AudioChannel.ts +8 -1
- package/src/plugins/audio/AudioManagerPlugin.test.ts +41 -0
- package/src/plugins/audio/AudioManagerPlugin.ts +3 -2
- package/src/plugins/audio/VoiceOverPlugin.ts +1 -0
- package/src/plugins/captions/CaptionsPlugin.test.ts +40 -0
- package/src/plugins/captions/CaptionsPlugin.ts +1 -1
- package/src/plugins/focus/FocusManagerPlugin.test.ts +71 -0
- package/src/plugins/focus/FocusManagerPlugin.ts +7 -0
- package/src/plugins/input/AbstractControls.ts +6 -0
- package/src/plugins/input/Controls.test.ts +149 -0
- package/src/plugins/input/keyboard/KeyboardContols.ts +29 -5
- package/src/plugins/input/touch/VirtualControls.test.ts +38 -0
- package/src/plugins/input/touch/VirtualControls.ts +44 -10
- package/src/plugins/spine/SpinePlugin.ts +2 -2
- package/src/store/Store.test.ts +15 -0
- package/src/store/Store.ts +4 -1
- package/src/ui/Button.test.ts +248 -0
- package/src/ui/Button.ts +42 -10
- package/src/ui/UICanvas.test.ts +109 -6
- package/src/ui/UICanvas.ts +41 -3
- package/src/utils/color.test.ts +16 -0
- package/src/utils/color.ts +2 -1
- package/src/utils/platform.ts +1 -1
- package/src/version.ts +1 -1
- package/lib/DataAdapter-DS-twowe.js.map +0 -1
- package/lib/SpinePlugin-uN641Hmk.js.map +0 -1
- package/lib/StatsPlugin-vZQRm6wh.js.map +0 -1
- package/lib/VoiceOverPlugin-KlZdGj1G.js.map +0 -1
- package/lib/registries-BLrxALZ0.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { H as e, Ht as t, Wt as n, r } from "./registries-
|
|
1
|
+
import { H as e, Ht as t, Wt as n, r } from "./registries-m2vKTIih.js";
|
|
2
2
|
import { Ticker as i, UPDATE_PRIORITY as a } from "pixi.js";
|
|
3
3
|
//#endregion
|
|
4
4
|
//#region src/plugins/StatsPlugin.ts
|
|
@@ -63,8 +63,11 @@ var o = /* @__PURE__ */ n((/* @__PURE__ */ t(((e, t) => {
|
|
|
63
63
|
async initialize() {
|
|
64
64
|
this.stats = new o.default(), this.stats.dom.id = "stats", r.containerElement?.appendChild(this.stats.dom), this.stats.dom.style.position = "absolute", this.stats.dom.style.top = "auto", this.stats.dom.style.bottom = "0", this.stats.dom.style.right = "0", this.stats.dom.style.left = "auto", i.shared.add(this.stats.update, this.stats, a.UTILITY);
|
|
65
65
|
}
|
|
66
|
+
destroy() {
|
|
67
|
+
this.stats && (i.shared.remove(this.stats.update, this.stats), this.stats.dom.remove()), super.destroy();
|
|
68
|
+
}
|
|
66
69
|
};
|
|
67
70
|
//#endregion
|
|
68
71
|
export { s as StatsPlugin };
|
|
69
72
|
|
|
70
|
-
//# sourceMappingURL=StatsPlugin-
|
|
73
|
+
//# sourceMappingURL=StatsPlugin-D2Xa5j97.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatsPlugin-D2Xa5j97.js","names":[],"sources":["../../../node_modules/.pnpm/stats.js@0.17.0/node_modules/stats.js/build/stats.min.js","../src/plugins/StatsPlugin.ts"],"sourcesContent":["// stats.js - http://github.com/mrdoob/stats.js\n(function(f,e){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?\"block\":\"none\";l=a}var l=0,c=document.createElement(\"div\");c.style.cssText=\"position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000\";c.addEventListener(\"click\",function(a){a.preventDefault();\nu(++l%c.children.length)},!1);var k=(performance||Date).now(),g=k,a=0,r=e(new f.Panel(\"FPS\",\"#0ff\",\"#002\")),h=e(new f.Panel(\"MS\",\"#0f0\",\"#020\"));if(self.performance&&self.performance.memory)var t=e(new f.Panel(\"MB\",\"#f08\",\"#201\"));u(0);return{REVISION:16,dom:c,addPanel:e,showPanel:u,begin:function(){k=(performance||Date).now()},end:function(){a++;var c=(performance||Date).now();h.update(c-k,200);if(c>g+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/\n1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement(\"canvas\");q.width=r;q.height=h;q.style.cssText=\"width:80px;height:48px\";var b=q.getContext(\"2d\");b.font=\"bold \"+9*a+\"px Helvetica,Arial,sans-serif\";b.textBaseline=\"top\";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v);\nb.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+\" \"+e+\" (\"+g(c)+\"-\"+g(k)+\")\",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f});\n","import { Ticker, UPDATE_PRIORITY } from 'pixi.js';\nimport Stats from 'stats.js';\nimport { Application } from '../core/Application';\nimport { Plugin } from './Plugin';\n\nexport class StatsPlugin extends Plugin {\n public readonly id = 'StatsPlugin';\n public stats: Stats;\n\n public async initialize() {\n this.stats = new Stats();\n this.stats.dom.id = 'stats';\n\n Application.containerElement?.appendChild(this.stats.dom);\n\n this.stats.dom.style.position = 'absolute';\n this.stats.dom.style.top = 'auto';\n this.stats.dom.style.bottom = '0';\n this.stats.dom.style.right = '0';\n this.stats.dom.style.left = 'auto';\n\n Ticker.shared.add(this.stats.update, this.stats, UPDATE_PRIORITY.UTILITY);\n }\n\n public destroy(): void {\n if (this.stats) {\n Ticker.shared.remove(this.stats.update, this.stats);\n this.stats.dom.remove();\n }\n super.destroy();\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Dt as e, H as t, K as n } from "./registries-
|
|
1
|
+
import { Dt as e, H as t, K as n } from "./registries-m2vKTIih.js";
|
|
2
|
+
import { gsap as r } from "gsap";
|
|
2
3
|
//#region src/plugins/audio/VoiceOverPlugin.ts
|
|
3
|
-
var
|
|
4
|
+
var i = class extends t {
|
|
4
5
|
constructor(...e) {
|
|
5
6
|
super(...e), this.id = "voiceover", this.fadeOutDuration = .15, this.debug = !1, this.onVoiceOverStart = new n(), this.onVoiceOverPaused = new n(), this.onVoiceOverComplete = new n(), this.onVoiceOverResumed = new n(), this.onVoiceOverStopped = new n(), this._queue = [], this._pausedQueue = [], this._paused = !1;
|
|
6
7
|
}
|
|
@@ -73,7 +74,7 @@ var r = class extends t {
|
|
|
73
74
|
let t = this._queue[0];
|
|
74
75
|
if (t.delay !== void 0) {
|
|
75
76
|
if (this.activeTimeout?.kill(), this._queue.length === 1) return e.log("⌛ Skipping delay because there are no more items in queue"), this._queue.shift(), t.callback && t.callback(!0), this.playNext();
|
|
76
|
-
e.log("⏳ Waiting %s seconds before next VO", t.delay), t.timeout =
|
|
77
|
+
e.log("⏳ Waiting %s seconds before next VO", t.delay), t.timeout = r.delayedCall(t.delay, () => (this._queue.shift(), t.callback && t.callback(!0), this.playNext()));
|
|
77
78
|
} else {
|
|
78
79
|
let n = this.app.audio.getAudioInstance(t.key, "voiceover");
|
|
79
80
|
n ? n.isPlaying && (e.warn("🛑 Stopping VO %c%s%c (no fade out)", n.id), n.stop(), this.onVoiceOverComplete.emit(n)) : e.log("📂 Loading VO %c%s%c", t.key);
|
|
@@ -109,6 +110,6 @@ var r = class extends t {
|
|
|
109
110
|
}
|
|
110
111
|
};
|
|
111
112
|
//#endregion
|
|
112
|
-
export {
|
|
113
|
+
export { i as VoiceOverPlugin };
|
|
113
114
|
|
|
114
|
-
//# sourceMappingURL=VoiceOverPlugin-
|
|
115
|
+
//# sourceMappingURL=VoiceOverPlugin-qtFlqpRn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceOverPlugin-qtFlqpRn.js","names":[],"sources":["../src/plugins/audio/VoiceOverPlugin.ts"],"sourcesContent":["import { gsap } from 'gsap';\nimport { Signal } from '../../signals';\nimport { Logger } from '../../utils';\nimport type { IPlugin } from '../Plugin';\nimport { Plugin } from '../Plugin';\nimport { IAudioInstance } from './AudioInstance';\n\nexport type PlayMode = 'append' | 'override' | 'new';\nexport type VoCallback = (didPlay: boolean) => void;\nexport type VoKey = string | number;\n\nexport type Caption = {\n id: string;\n args?: { [key: string]: string };\n};\n\nexport interface IPlayVoiceOverOptions {\n mode?: PlayMode;\n priority?: number;\n callback?: VoCallback;\n localized?: boolean;\n}\n\ninterface IQueueItem extends IPlayVoiceOverOptions {\n key: string;\n delay?: number;\n timeout?: gsap.core.Tween;\n}\n\nexport interface IVoiceOverPlugin extends IPlugin {\n fadeOutDuration: number;\n debug: boolean;\n onVoiceOverStart: Signal<(instance: IAudioInstance) => void>;\n onVoiceOverPaused: Signal<(instance: IAudioInstance) => void>;\n onVoiceOverResumed: Signal<(instance: IAudioInstance) => void>;\n onVoiceOverComplete: Signal<(instance: IAudioInstance) => void>;\n onVoiceOverStopped: Signal<(instance?: IAudioInstance) => void>;\n paused: boolean;\n\n playVO(key: VoKey | VoKey[], mode?: PlayMode, callback?: VoCallback): Promise<IAudioInstance>;\n\n playVO(key: VoKey | VoKey[], callback?: VoCallback): Promise<IAudioInstance>;\n\n playVO(key: VoKey | VoKey[], options?: IPlayVoiceOverOptions): Promise<IAudioInstance>;\n\n stopVO(): Promise<void>;\n\n pauseVO(): void;\n\n resumeVO(): void;\n}\n\nexport class VoiceOverPlugin extends Plugin implements IVoiceOverPlugin {\n public readonly id = 'voiceover';\n public fadeOutDuration = 0.15;\n public debug = false;\n public onVoiceOverStart: Signal<(instance: IAudioInstance) => void> = new Signal<\n (instance: IAudioInstance) => void\n >();\n public onVoiceOverPaused: Signal<(instance: IAudioInstance) => void> = new Signal<\n (instance: IAudioInstance) => void\n >();\n public onVoiceOverComplete: Signal<(instance: IAudioInstance) => void> = new Signal<\n (instance: IAudioInstance) => void\n >();\n public onVoiceOverResumed: Signal<(instance: IAudioInstance) => void> = new Signal<\n (instance: IAudioInstance) => void\n >();\n public onVoiceOverStopped: Signal<(instance?: IAudioInstance) => void> = new Signal<\n (instance: IAudioInstance) => void\n >();\n private readonly _queue: IQueueItem[] = [];\n private readonly _pausedQueue: IQueueItem[] = [];\n private _paused: boolean = false;\n\n get paused() {\n return this._paused;\n }\n\n get activeTimeout(): gsap.core.Tween | undefined {\n return this._queue[0]?.timeout;\n }\n\n get activeVO(): IAudioInstance | undefined {\n if (this._queue.length > 0 && this._queue[0].key) {\n return this.app.audio.getAudioInstance(this._queue[0].key, 'voiceover') as IAudioInstance | undefined;\n }\n return undefined;\n }\n\n async initialize() {\n this.app.actions('pause').connect(this.onPause);\n this.app.actions('unpause').connect(this.onResume);\n this.app.scenes.onSceneChangeStart.connect(this.stopVO);\n }\n\n playVO(key: VoKey | VoKey[], mode?: PlayMode, callback?: VoCallback): Promise<IAudioInstance>;\n\n playVO(key: VoKey | VoKey[], callback?: VoCallback): Promise<IAudioInstance>;\n\n playVO(key: VoKey | VoKey[], options?: IPlayVoiceOverOptions): Promise<IAudioInstance>;\n\n async playVO(\n key: VoKey | VoKey[],\n modeOrCallbackOrOptions?: PlayMode | VoCallback | IPlayVoiceOverOptions,\n callback?: VoCallback,\n ): Promise<IAudioInstance | void> {\n if (!Array.isArray(key)) {\n key = [key];\n }\n\n let priority = 0;\n let mode: string | undefined = 'override';\n let locale: string = '';\n\n if (typeof modeOrCallbackOrOptions === 'function') {\n callback = modeOrCallbackOrOptions;\n } else if (typeof modeOrCallbackOrOptions === 'object') {\n const modeAsOptions = modeOrCallbackOrOptions as IPlayVoiceOverOptions;\n priority = modeAsOptions.priority ?? 0;\n callback = modeAsOptions.callback;\n mode = modeAsOptions.mode ?? 'override';\n if (modeAsOptions.localized) {\n locale = this.app.i18n.locale;\n key = key.map((k) => `${k}_${locale}`);\n }\n }\n\n if (typeof modeOrCallbackOrOptions === 'string') {\n mode = modeOrCallbackOrOptions;\n }\n this._paused = false;\n if (key.length === 1 && this._queue.length === 1 && this._queue[0].key === key[0]) {\n Logger.warn(`🔇 Skipped VO ${key[0]} because it is already playing`);\n if (callback) {\n callback(false);\n }\n } else if (\n this._queue.length === 0 ||\n (mode === 'override' && priority >= this._queue[0].priority!) ||\n (mode === 'new' && priority > this._queue[0].priority!)\n ) {\n await this.stopVO();\n this.addToQueue(key, callback, priority);\n return this.playNext();\n } else if (mode === 'append') {\n this.addToQueue(key, callback, priority);\n } else if (callback) {\n Logger.warn(`🎟🔇 Firing callback without playing VO(s) ${key.join(', ')}`);\n callback(false);\n } else {\n Logger.warn(`🔇 Skipped VO(s) ${key.join(', ')} because it is lower priority than what was already playing`);\n }\n }\n\n public async stopVO(): Promise<void> {\n const activeVO: IAudioInstance | undefined = this.activeVO;\n const activeItem: IQueueItem | undefined = this._queue[0];\n this._queue.splice(0, this._queue.length);\n this._pausedQueue.splice(0, this._pausedQueue.length);\n activeItem?.timeout?.kill();\n if (activeVO) {\n if (!activeVO.media) {\n Logger.warn(`🛑 Stopping VO %c%s%c while it is still loading ${activeVO.id}`);\n activeVO.remove();\n } else if (activeVO.isPlaying) {\n Logger.log(`🤫 Fading out VO ${activeVO.id} (duration:${this.fadeOutDuration})`);\n await activeVO.fadeTo(0, this.fadeOutDuration);\n activeVO.stop();\n } else {\n activeVO.stop();\n }\n } else {\n Logger.warn('🛑 No active VO to stop');\n this.activeTimeout?.kill();\n }\n this.clearSignalConnections();\n this._paused = false;\n this.onVoiceOverStopped.emit(activeVO);\n }\n\n pauseVO() {\n if (this._paused) return;\n if (this._queue.length > 0) {\n this._paused = true;\n this._pausedQueue.push(...this._queue);\n const activeVO = this.activeVO;\n const activeTimeout = this.activeTimeout;\n activeVO?.pause();\n activeTimeout?.pause();\n this._queue.splice(0, this._queue.length);\n }\n }\n\n resumeVO() {\n if (!this._paused) return;\n this._paused = false;\n if (this._pausedQueue.length > 0) {\n this._queue.push(...this._pausedQueue);\n this._pausedQueue.splice(0, this._pausedQueue.length);\n const activeVO = this.activeVO;\n const activeTimeout = this.activeTimeout;\n activeVO?.resume();\n activeTimeout?.resume();\n if (activeVO) {\n this.onVoiceOverStart.emit(activeVO);\n }\n }\n }\n\n protected getCoreSignals(): string[] {\n return ['onVoiceOverStart', 'onVoiceOverPaused', 'onVoiceOverComplete', 'onVoiceOverResumed', 'onVoiceOverStopped'];\n }\n\n private addToQueue(keys: VoKey[], cb?: VoCallback, priority?: number) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (typeof key === 'number') {\n Logger.log(`➕ Queueing delay ${key}`);\n } else {\n Logger.log(`➕ Queueing VO ${key}`);\n }\n\n this._queue.push({\n key: typeof key === 'string' ? key : '',\n delay: typeof key === 'number' ? key : undefined,\n callback: i === keys.length - 1 ? cb : undefined,\n priority,\n });\n }\n const toLoad = keys.filter((it) => typeof it === 'string') as string[];\n Logger.log(`📂 Loading VO(s) ${toLoad.join(', ')}`);\n this.app.audio.load(toLoad, 'voiceover');\n }\n\n private async playNext(): Promise<IAudioInstance | void> {\n if (this._queue.length > 0) {\n const item = this._queue[0];\n if (item.delay !== undefined) {\n this.activeTimeout?.kill();\n if (this._queue.length === 1) {\n // skip delay if last item in queue\n Logger.log('⌛ Skipping delay because there are no more items in queue');\n this._queue.shift();\n if (item.callback) {\n item.callback(true);\n }\n return this.playNext();\n } else {\n Logger.log('⏳ Waiting %s seconds before next VO', item.delay);\n item.timeout = gsap.delayedCall(item.delay, () => {\n this._queue.shift();\n if (item.callback) {\n item.callback(true);\n }\n return this.playNext();\n });\n }\n } else {\n const existing = this.app.audio.getAudioInstance(item.key, 'voiceover');\n if (existing) {\n if (existing.isPlaying) {\n Logger.warn('🛑 Stopping VO %c%s%c (no fade out)', existing.id);\n existing.stop();\n this.onVoiceOverComplete.emit(existing);\n }\n } else {\n Logger.log('📂 Loading VO %c%s%c', item.key);\n }\n const instance = await this.app.audio.play(item.key, 'voiceover', { singleInstance: true });\n if (this.activeVO) {\n this.onVoiceOverStart.emit(this.activeVO);\n }\n if (this._queue[0] !== item) {\n return;\n }\n Logger.log(`▶️▶️ Playing VO ${item.key}`);\n Logger.log('ℹ️ Queue length:', this._queue.length);\n\n if (this.activeVO) {\n this.addSignalConnection(\n this.activeVO.onEnd.connectOnce(this._handleActiveVOEnded),\n this.activeVO.onPaused.connectOnce(this._handleActiveVOPaused),\n this.activeVO.onResumed.connectOnce(this._handleActiveVOResumed),\n this.activeVO.onStart.connectOnce(this._handleActiveVOStarted),\n );\n } else {\n Logger.error('⚠️ Vo %c%s%c completed early (did not play?)', item.key);\n this._handleActiveVOEndedWithoutPlaying(instance);\n }\n return instance;\n }\n } else {\n Logger.log('✅ Nothing left in queue');\n }\n }\n\n private _handleActiveVOStarted(instance: IAudioInstance) {\n this.onVoiceOverStart.emit(this.activeVO || instance);\n }\n\n private _handleActiveVOPaused(instance: IAudioInstance) {\n this.onVoiceOverPaused.emit(this.activeVO || instance);\n }\n\n private _handleActiveVOResumed(instance: IAudioInstance) {\n this.onVoiceOverResumed.emit(this.activeVO || instance);\n }\n\n private _handleActiveVOEndedWithoutPlaying(instance: IAudioInstance) {\n this.onVoiceOverComplete.emit(this.activeVO || instance);\n this.activeTimeout?.kill();\n this._currentItemCallback(false);\n this._queue.shift();\n this.playNext();\n }\n\n private _handleActiveVOEnded(instance: IAudioInstance) {\n this.onVoiceOverComplete.emit(this.activeVO || instance);\n this.activeTimeout?.kill();\n this._currentItemCallback();\n this._queue.shift();\n this.playNext();\n }\n\n private _currentItemCallback(didPlay: boolean = true) {\n const item = this._queue[0];\n if (!item) {\n return;\n }\n Logger.log(`🏁 Completed VO ${item.key}`);\n if (item.callback) {\n Logger.log(`'🎟 Firing callback for`, item.key);\n item.callback(didPlay);\n }\n }\n\n private onPause() {\n if (this.activeVO !== undefined && this.activeVO.isPlaying) {\n Logger.log('⏸ Pausing VO', this.activeVO.id);\n this.activeVO.pause();\n this.onVoiceOverComplete.emit(this.activeVO);\n }\n this.activeTimeout?.pause();\n }\n\n private onResume() {\n if (this.activeVO !== undefined && !this.activeVO.isPlaying) {\n Logger.log('⏯ Resuming VO', this.activeVO.id);\n this.activeVO.resume();\n this.onVoiceOverStart.emit(this.activeVO);\n }\n this.activeTimeout?.resume();\n }\n}\n"],"mappings":"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"}
|
package/lib/caper.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as e, A as t, At as n, B as r, Bt as i, C as a, Ct as o, D as s, Dt as c, E as l, Et as u, F as d, Ft as f, G as ee, H as te, I as ne, It as re, J as ie, K as p, L as ae, Lt as oe, M as se, Mt as ce, N as le, Nt as m, O as ue, Ot as de, P as fe, Pt as pe, Q as me, R as he, Rt as ge, S as _e, St as ve, T as ye, Tt as be, U as xe, V as Se, Vt as Ce, W as we, X as Te, Y as Ee, Z as De, _ as Oe, _t as ke, a as Ae, at as je, b as h, bt as Me, c as Ne, ct as Pe, d as Fe, dt as g, et as Ie, f as _, ft as Le, g as Re, gt as ze, h as Be, ht as Ve, i as He, it as Ue, j as We, jt as Ge, k as Ke, kt as qe, l as Je, lt as Ye, m as v, mt as Xe, n as Ze, nt as Qe, o as $e, ot as y, p as b, pt as et, q as x, r as S, rt as tt, s as nt, st as rt, t as it, tt as at, u as ot, ut as st, v as ct, vt as lt, w as ut, wt as dt, x as ft, xt as pt, y as mt, yt as ht, z as gt, zt as _t } from "./registries-
|
|
2
|
-
import { r as vt, t as yt } from "./DataAdapter-
|
|
1
|
+
import { $ as e, A as t, At as n, B as r, Bt as i, C as a, Ct as o, D as s, Dt as c, E as l, Et as u, F as d, Ft as f, G as ee, H as te, I as ne, It as re, J as ie, K as p, L as ae, Lt as oe, M as se, Mt as ce, N as le, Nt as m, O as ue, Ot as de, P as fe, Pt as pe, Q as me, R as he, Rt as ge, S as _e, St as ve, T as ye, Tt as be, U as xe, V as Se, Vt as Ce, W as we, X as Te, Y as Ee, Z as De, _ as Oe, _t as ke, a as Ae, at as je, b as h, bt as Me, c as Ne, ct as Pe, d as Fe, dt as g, et as Ie, f as _, ft as Le, g as Re, gt as ze, h as Be, ht as Ve, i as He, it as Ue, j as We, jt as Ge, k as Ke, kt as qe, l as Je, lt as Ye, m as v, mt as Xe, n as Ze, nt as Qe, o as $e, ot as y, p as b, pt as et, q as x, r as S, rt as tt, s as nt, st as rt, t as it, tt as at, u as ot, ut as st, v as ct, vt as lt, w as ut, wt as dt, x as ft, xt as pt, y as mt, yt as ht, z as gt, zt as _t } from "./registries-m2vKTIih.js";
|
|
2
|
+
import { r as vt, t as yt } from "./DataAdapter-aHSNM_26.js";
|
|
3
3
|
import { AnimatedSprite as bt, Assets as C, BitmapText as w, CanvasTextMetrics as T, Container as xt, Graphics as E, HTMLText as St, ParticleContainer as Ct, Point as D, Polygon as wt, Rectangle as Tt, Sprite as Et, Text as O, Texture as k, TilingSprite as Dt, isMobile as Ot } from "pixi.js";
|
|
4
4
|
import { gsap as A } from "gsap";
|
|
5
5
|
//#region src/utils/array.ts
|
|
@@ -67,7 +67,7 @@ var Pt = class e {
|
|
|
67
67
|
return e << 16 | t << 8 | n;
|
|
68
68
|
}
|
|
69
69
|
static rgbToHexString(e) {
|
|
70
|
-
let t = Number(e).toString(16);
|
|
70
|
+
let t = Math.max(0, Math.min(255, Math.round(Number(e)))).toString(16);
|
|
71
71
|
return t.length < 2 && (t = "0" + t), t;
|
|
72
72
|
}
|
|
73
73
|
static rgbToFullHexString(t, n, r) {
|
|
@@ -243,7 +243,7 @@ function Zt(e, t, n = "width") {
|
|
|
243
243
|
}
|
|
244
244
|
//#endregion
|
|
245
245
|
//#region src/utils/platform.ts
|
|
246
|
-
var Qt = typeof window < "u" ? window.devicePixelRatio > 1 || window.matchMedia && window.matchMedia("(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)").matches : !1, B = typeof window < "u" ? "ontouchstart" in window || navigator.maxTouchPoints > 0
|
|
246
|
+
var Qt = typeof window < "u" ? window.devicePixelRatio > 1 || window.matchMedia && window.matchMedia("(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)").matches : !1, B = typeof window < "u" ? "ontouchstart" in window || navigator.maxTouchPoints > 0 : !1, $t = Ot.any, en = Ot.android.device, tn = Ot.apple.device;
|
|
247
247
|
//#endregion
|
|
248
248
|
//#region src/utils/rect.ts
|
|
249
249
|
function nn(e, t) {
|
|
@@ -289,7 +289,7 @@ function un(e, t) {
|
|
|
289
289
|
}
|
|
290
290
|
//#endregion
|
|
291
291
|
//#region src/version.ts
|
|
292
|
-
var dn = "0.
|
|
292
|
+
var dn = "0.3.0", fn = "8.19.0", pn = " ........ ..... ............ ............. ........... \n ............. ....... ................ ............. .............. \n .............. ......... ............... ............. .............. \n ..... ........... .............. ............ .............. \n ..... ...... ...... .............. ............. ............. \n .............. ...... ..... ............ ............. ..... ...... \n ................... ..... ..... ............. ..... ....... \n ................ .......... ............. ..... ..... ";
|
|
293
293
|
function mn() {
|
|
294
294
|
let e = `\n${pn}\n\n v${dn} | %cPixi.js v${fn} %c| %chttps://github.com/anthonysapp/caper\n\n`;
|
|
295
295
|
console.log(e, "color: #E91E63; font-weight: 600;", "color: inherit;", "color: #00BCD4; text-decoration: underline;");
|
|
@@ -595,7 +595,7 @@ var Ln = class extends _ {
|
|
|
595
595
|
autoResize: !0,
|
|
596
596
|
autoUpdate: !1,
|
|
597
597
|
priority: -9999
|
|
598
|
-
}), this.initialized = !1, this._active = !1, e && this.app.ticker.add(this._update), this.addSignalConnection(this.app.assets.onLoadStart.connect(this.handleLoadStart), this.app.assets.onLoadProgress.connect(this.handleLoadProgress), this.app.assets.
|
|
598
|
+
}), this.initialized = !1, this._active = !1, e && this.app.ticker.add(this._update), this.addSignalConnection(this.app.assets.onLoadStart.connect(this.handleLoadStart), this.app.assets.onLoadProgress.connect(this.handleLoadProgress), this.app.assets.onLoadComplete.connect(this.handleLoadComplete));
|
|
599
599
|
}
|
|
600
600
|
async initialize() {
|
|
601
601
|
return Promise.resolve();
|
|
@@ -774,7 +774,7 @@ var Kn = class e extends bt {
|
|
|
774
774
|
}
|
|
775
775
|
}, qn = class extends xt {
|
|
776
776
|
constructor(e) {
|
|
777
|
-
return super({ isRenderGroup: !0 }), this.config = e, this.onZoom = new p(), this.onZoomComplete = new p(), this.minX = 0, this.minY = 0, this._zooming = !1, this._zoomLerp = .1, this._targetPivot = new D(0, 0), this._targetScale = new D(1, 1), this._lerp = 0, this._target = null, this._followOffset = new D(0, 0), m(this), e && (this.container = e.container, this.addChild(this.container), e.minX && (this.minX = e.minX), e.maxX && (this.maxX = e.maxX), e.minY && (this.minY = e.minY), this.viewportWidth = e.viewportWidth ?? this.app.size.width, this.viewportHeight = e.viewportHeight ?? this.app.size.
|
|
777
|
+
return super({ isRenderGroup: !0 }), this.config = e, this.onZoom = new p(), this.onZoomComplete = new p(), this.minX = 0, this.minY = 0, this._zooming = !1, this._zoomLerp = .1, this._targetPivot = new D(0, 0), this._targetScale = new D(1, 1), this._lerp = 0, this._target = null, this._followOffset = new D(0, 0), m(this), e && (this.container = e.container, this.addChild(this.container), e.minX && (this.minX = e.minX), e.maxX && (this.maxX = e.maxX), e.minY && (this.minY = e.minY), this.viewportWidth = e.viewportWidth ?? this.app.size.width, this.viewportHeight = e.viewportHeight ?? this.app.size.height, this.worldWidth = e.worldWidth ?? this.viewportWidth, this.worldHeight = e.worldHeight ?? this.viewportHeight, this.maxX = e.maxX ?? this.worldWidth - this.viewportWidth, this.maxY = e.maxY ?? this.worldHeight - this.viewportHeight), this._targetPivot.set(this.viewportWidth * .5, this.viewportHeight * .5), e.target && (this.target = e.target), this._lerp = 1, this.update(), e.lerp && (this.lerp = e.lerp), this;
|
|
778
778
|
}
|
|
779
779
|
get zooming() {
|
|
780
780
|
return this._zooming;
|
|
@@ -786,7 +786,7 @@ var Kn = class e extends bt {
|
|
|
786
786
|
return this._targetPivot;
|
|
787
787
|
}
|
|
788
788
|
get targetScale() {
|
|
789
|
-
return this.
|
|
789
|
+
return this._targetScale;
|
|
790
790
|
}
|
|
791
791
|
get lerp() {
|
|
792
792
|
return this._lerp;
|
|
@@ -1060,17 +1060,20 @@ var Qn = [
|
|
|
1060
1060
|
}, e), this.id = this.config.id, e.layout === void 0 ? this.layout = !1 : this.layout = e.layout, this.view = this.add.sprite({
|
|
1061
1061
|
asset: this.config.textures.default,
|
|
1062
1062
|
sheet: this.config.sheet ?? void 0
|
|
1063
|
-
}), this.cursor = this.config.cursor, this.enabled = e.enabled !== !1, this.layout?.style.transformOrigin !== "top left" && (this.layout = { transformOrigin: "top left" }, this.app.renderer.layout && this.app.renderer.layout.update(this)), this.config.textLabel && this.addLabel(this.config.textLabel), this.addSignalConnection(this.onInteraction("pointerover").connect(this.handlePointerOver, -1), this.onInteraction("pointerout").connect(this.handlePointerOut, -1), this.onInteraction("pointerup").connect(this.handlePointerUp, -1), this.onInteraction("click").connect(this.handleClick, -1), this.onInteraction("tap").connect(this.handleClick, -1), this.onInteraction("pointerdown").connect(this.handlePointerDown, -1));
|
|
1063
|
+
}), this.cursor = this.config.cursor, this.enabled = e.enabled !== !1, this.layout?.style.transformOrigin !== "top left" && (this.layout = { transformOrigin: "top left" }, this.app.renderer.layout && this.app.renderer.layout.update(this)), this.config.textLabel && this.addLabel(this.config.textLabel), this.addSignalConnection(this.onInteraction("pointerover").connect(this.handlePointerOver, -1), this.onInteraction("pointerout").connect(this.handlePointerOut, -1), this.onInteraction("pointerup").connect(this.handlePointerUp, -1), this.onInteraction("click").connect(this.handleClick, -1), this.onInteraction("tap").connect(this.handleClick, -1), this.onInteraction("pointerdown").connect(this.handlePointerDown, -1)), this.on("removed", this._resetPressState);
|
|
1064
1064
|
}
|
|
1065
1065
|
set enabled(e) {
|
|
1066
1066
|
this._enabled !== e && (this._enabled = e, this.cursor = this._enabled ? this.config.cursor : this.config.disabledCursor, this.focusEnabled = e, this._enabled ? (this.view.texture = this.make.texture({
|
|
1067
1067
|
asset: this.config.textures.default,
|
|
1068
1068
|
sheet: this.config.sheet ?? void 0
|
|
1069
|
-
}), this.onEnabled.emit()) : (this.view.texture = this.make.texture({
|
|
1069
|
+
}), this.onEnabled.emit()) : (this._resetPressState(), this.view.texture = this.make.texture({
|
|
1070
1070
|
asset: this.config.textures.disabled || this.config.textures.default,
|
|
1071
1071
|
sheet: this.config.sheet ?? void 0
|
|
1072
1072
|
}), this.onDisabled.emit()));
|
|
1073
1073
|
}
|
|
1074
|
+
_resetPressState() {
|
|
1075
|
+
window.removeEventListener("pointerup", this.handlePointerUpOutside), this.off("pointerupoutside", this.handlePointerUpOutside), this.isDown = !1, this._pointerId = void 0;
|
|
1076
|
+
}
|
|
1074
1077
|
addLabel(e) {
|
|
1075
1078
|
if (e instanceof O || e instanceof St || e instanceof w) e.anchor.set(.5, .5), this._textLabel = this.add.existing(e), this._textLabel.layout = !1;
|
|
1076
1079
|
else switch (e.anchor = .5, e.type) {
|
|
@@ -1105,7 +1108,7 @@ var Qn = [
|
|
|
1105
1108
|
return S.getInstance();
|
|
1106
1109
|
}
|
|
1107
1110
|
destroy(e) {
|
|
1108
|
-
this.onDestroy.emit(), super.destroy(e);
|
|
1111
|
+
this.onDestroy.emit(), this._resetPressState(), this._isDownListenerAdded &&= (this.app.ticker.remove(this._handleIsDownCallbacks), !1), super.destroy(e);
|
|
1109
1112
|
}
|
|
1110
1113
|
focusOut() {
|
|
1111
1114
|
super.focusOut(), this.isDown = !1, this.isOver = !1;
|
|
@@ -1120,7 +1123,7 @@ var Qn = [
|
|
|
1120
1123
|
this._isDownCallbacks.set(e, t), this._checkIsDownCallbacks();
|
|
1121
1124
|
}
|
|
1122
1125
|
removeIsDownCallback(e) {
|
|
1123
|
-
this._isDownCallbacks.delete(e);
|
|
1126
|
+
this._isDownCallbacks.delete(e), this._checkIsDownCallbacks();
|
|
1124
1127
|
}
|
|
1125
1128
|
setTexture(e, t) {
|
|
1126
1129
|
this.config.textures[e] = t, e === "default" && (this.view.texture = this.make.texture({
|
|
@@ -1152,20 +1155,22 @@ var Qn = [
|
|
|
1152
1155
|
sheet: this.config.sheet
|
|
1153
1156
|
}), this.onUp.emit(), this._pointerId = void 0);
|
|
1154
1157
|
}
|
|
1155
|
-
handleClick() {
|
|
1156
|
-
this._enabled && (this.isDown = !1, this.onClick.emit(), this.config.sounds?.click && this.app.audio.play(this.config.sounds.click, "sfx"), this.config.actions?.click && this._doAction(this.config.actions.click));
|
|
1158
|
+
handleClick(e) {
|
|
1159
|
+
this._enabled && (e?.pointerId !== void 0 && !this.isDown || e !== void 0 && e === this._lastClickEvent || (this._lastClickEvent = e, this.isDown = !1, this.onClick.emit(), this.config.sounds?.click && this.app.audio.play(this.config.sounds.click, "sfx"), this.config.actions?.click && this._doAction(this.config.actions.click)));
|
|
1157
1160
|
}
|
|
1158
1161
|
handlePointerUpOutside(e) {
|
|
1159
|
-
|
|
1162
|
+
if (e.pointerId !== this._pointerId) return;
|
|
1163
|
+
let t = this._enabled;
|
|
1164
|
+
this._resetPressState(), this.isOver = !1, t && (this.view.texture = this.make.texture({
|
|
1160
1165
|
asset: this.config.textures.default,
|
|
1161
1166
|
sheet: this.config.sheet
|
|
1162
|
-
}), this.
|
|
1167
|
+
}), this.onUpOutside.emit());
|
|
1163
1168
|
}
|
|
1164
1169
|
_doAction(e) {
|
|
1165
|
-
typeof e == "function" ? e() : (e.data.button || (e.data.button = this), this.app.action(e.id, e.data));
|
|
1170
|
+
typeof e == "function" ? e() : (e.data ??= {}, e.data.button || (e.data.button = this), this.app.action(e.id, e.data));
|
|
1166
1171
|
}
|
|
1167
1172
|
_checkIsDownCallbacks() {
|
|
1168
|
-
!this._isDownListenerAdded && this._isDownCallbacks.size > 0 ? (this._isDownListenerAdded = !0, this.app.ticker.add(this._handleIsDownCallbacks)) : (this.app.ticker.remove(this._handleIsDownCallbacks), this._isDownListenerAdded = !1);
|
|
1173
|
+
!this._isDownListenerAdded && this._isDownCallbacks.size > 0 ? (this._isDownListenerAdded = !0, this.app.ticker.add(this._handleIsDownCallbacks)) : this._isDownListenerAdded && this._isDownCallbacks.size === 0 && (this.app.ticker.remove(this._handleIsDownCallbacks), this._isDownListenerAdded = !1);
|
|
1169
1174
|
}
|
|
1170
1175
|
_handleIsDownCallbacks() {
|
|
1171
1176
|
this.isDown && this._isDownCallbacks.forEach((e) => {
|
|
@@ -1737,7 +1742,7 @@ var dr = {
|
|
|
1737
1742
|
if (super(), this.settingsMap = /* @__PURE__ */ new Map(), this._childMap = /* @__PURE__ */ new Map(), this._debugGraphics = null, this._debugLabel = null, this._regionLabels = [], this._disableAddChildError = !1, this._bindings = [], this._canvasChildren = [], this.removeChildren = (e, t) => super.removeChildren(e, t), this.removeChildAt = (e) => super.removeChildAt(e), this.addChildAt = (e, t) => {
|
|
1738
1743
|
throw Error("UICanvas: Do not call addChildAt() directly. Use addElement(child, { align }) instead.\nExample: uiCanvas.addElement(myChild, { align: 'top right' })");
|
|
1739
1744
|
}, this.setChildIndex = (e, t) => {
|
|
1740
|
-
|
|
1745
|
+
throw Error("UICanvas: Do not call setChildIndex() directly. Use reorderElement(child, index), bringToFront(child), or sendToBack(child) instead.\nExample: uiCanvas.reorderElement(myChild, 0)");
|
|
1741
1746
|
}, this.getChildIndex = (e) => super.getChildIndex(e), this.getChildAt = (e) => super.getChildAt(e), !this.app.config.useLayout) throw Error("You must set useLayout to true in your app config to use UICanvas");
|
|
1742
1747
|
m(this), this._positionContainers = /* @__PURE__ */ new Map(), this.config = {
|
|
1743
1748
|
debug: e.debug === !0,
|
|
@@ -1962,6 +1967,19 @@ var dr = {
|
|
|
1962
1967
|
if (!t) throw Error(`UICanvas: Cannot remove element — it was not added via addElement().\nChild label: "${e.label ?? "(unlabeled)"}"`);
|
|
1963
1968
|
return t.removeChild(e), e.off("layout", this._updateLayout), this.settingsMap.delete(e), this._childMap.delete(e), this._canvasChildren = Array.from(this._childMap.keys()), this._updateLayout(), e;
|
|
1964
1969
|
}
|
|
1970
|
+
reorderElement(e, t) {
|
|
1971
|
+
let n = this._childMap.get(e);
|
|
1972
|
+
if (!n) throw Error(`UICanvas: Cannot reorder element — it was not added via addElement().\nChild label: "${e.label ?? "(unlabeled)"}"`);
|
|
1973
|
+
return n.setChildIndex(e, t), this._updateLayout(), e;
|
|
1974
|
+
}
|
|
1975
|
+
bringToFront(e) {
|
|
1976
|
+
let t = this._childMap.get(e);
|
|
1977
|
+
if (!t) throw Error(`UICanvas: Cannot reorder element — it was not added via addElement().\nChild label: "${e.label ?? "(unlabeled)"}"`);
|
|
1978
|
+
return this.reorderElement(e, t.children.length - 1);
|
|
1979
|
+
}
|
|
1980
|
+
sendToBack(e) {
|
|
1981
|
+
return this.reorderElement(e, 0);
|
|
1982
|
+
}
|
|
1965
1983
|
_childAdded(e) {
|
|
1966
1984
|
this.config.autoLayoutChildren && (e.layout ||= !0, e.layout?.style?.width || (e.layout = { width: "auto" }), e.layout?.style?.height || (e.layout = { height: "auto" })), e.on("layout", this._updateLayout), _.childAdded(e), this._updateLayout();
|
|
1967
1985
|
}
|