@caperjs/core 0.7.0 → 0.7.2

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.
Files changed (64) hide show
  1. package/build/assetpack.mjs +35 -3
  2. package/build/defaults.mjs +39 -1
  3. package/build/index.mjs +13 -2
  4. package/build/internal/outputMarker.mjs +52 -0
  5. package/cli/doctor.mjs +205 -2
  6. package/cli/doctor.test.mjs +522 -1
  7. package/cli/native.mjs +808 -0
  8. package/cli/native.test.mjs +1039 -0
  9. package/cli.mjs +4 -0
  10. package/extras/css/fullscreen.css +8 -0
  11. package/extras/llms.txt +18 -0
  12. package/extras/skills/caper/SKILL.md +1 -0
  13. package/lib/{CaptionsPlugin-Boj-gm3A.js → CaptionsPlugin-COrofpHN.js} +2 -2
  14. package/lib/{CaptionsPlugin-Boj-gm3A.js.map → CaptionsPlugin-COrofpHN.js.map} +1 -1
  15. package/lib/{DataAdapter-Cra9dJ6W.js → DataAdapter-T-22-_D1.js} +2 -2
  16. package/lib/{DataAdapter-Cra9dJ6W.js.map → DataAdapter-T-22-_D1.js.map} +1 -1
  17. package/lib/{DebugRenderer-19S58S4h.js → DebugRenderer-ZN692Pbg.js} +4 -4
  18. package/lib/{DebugRenderer-19S58S4h.js.map → DebugRenderer-ZN692Pbg.js.map} +1 -1
  19. package/lib/{DevToolsPlugin-BTSkRsdS.js → DevToolsPlugin-CQXFoj1T.js} +3 -3
  20. package/lib/{DevToolsPlugin-BTSkRsdS.js.map → DevToolsPlugin-CQXFoj1T.js.map} +1 -1
  21. package/lib/{GSAPPlugin-BcL7vjyw.js → GSAPPlugin-CNkncyXS.js} +2 -2
  22. package/lib/{GSAPPlugin-BcL7vjyw.js.map → GSAPPlugin-CNkncyXS.js.map} +1 -1
  23. package/lib/{LayoutPlugin-BDhSngz_.js → LayoutPlugin-BuJgr9bd.js} +26 -26
  24. package/lib/{LayoutPlugin-BDhSngz_.js.map → LayoutPlugin-BuJgr9bd.js.map} +1 -1
  25. package/lib/{ScreenDebugPlugin-C6pxs_3O.js → ScreenDebugPlugin-kz9Mr6j1.js} +2 -2
  26. package/lib/{ScreenDebugPlugin-C6pxs_3O.js.map → ScreenDebugPlugin-kz9Mr6j1.js.map} +1 -1
  27. package/lib/{SpinePlugin-CrQhaK6r.js → SpinePlugin-DDzD-Qxd.js} +1099 -877
  28. package/lib/SpinePlugin-DDzD-Qxd.js.map +1 -0
  29. package/lib/{StatsPlugin-Cu625dmk.js → StatsPlugin-tyFGzVjy.js} +2 -2
  30. package/lib/{StatsPlugin-Cu625dmk.js.map → StatsPlugin-tyFGzVjy.js.map} +1 -1
  31. package/lib/{VoiceOverPlugin-D4rfHFyJ.js → VoiceOverPlugin-rTNz_9eb.js} +2 -2
  32. package/lib/{VoiceOverPlugin-D4rfHFyJ.js.map → VoiceOverPlugin-rTNz_9eb.js.map} +1 -1
  33. package/lib/caper.mjs +51 -51
  34. package/lib/caper.mjs.map +1 -1
  35. package/lib/{const-BQ2iMCtc.js → const-Cj14a5U2.js} +5 -3
  36. package/lib/const-Cj14a5U2.js.map +1 -0
  37. package/lib/plugins/FullScreenPlugin.d.ts +65 -0
  38. package/lib/plugins/FullScreenPlugin.d.ts.map +1 -1
  39. package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -1
  40. package/lib/plugins/spine/SpinePlugin.test.d.ts +2 -0
  41. package/lib/plugins/spine/SpinePlugin.test.d.ts.map +1 -0
  42. package/lib/{registries-BmDw_GV1.js → registries-DmNGVLAi.js} +489 -446
  43. package/lib/registries-DmNGVLAi.js.map +1 -0
  44. package/lib/ui/Button.d.ts.map +1 -1
  45. package/lib/utils/platform.d.ts +5 -0
  46. package/lib/utils/platform.d.ts.map +1 -1
  47. package/lib/utils/platform.test.d.ts +2 -0
  48. package/lib/utils/platform.test.d.ts.map +1 -0
  49. package/lib/utils/types.d.ts +1 -1
  50. package/lib/utils/types.d.ts.map +1 -1
  51. package/package.json +3 -3
  52. package/src/plugins/FullScreenPlugin.test.ts +138 -0
  53. package/src/plugins/FullScreenPlugin.ts +132 -0
  54. package/src/plugins/spine/SpinePlugin.test.ts +31 -0
  55. package/src/plugins/spine/SpinePlugin.ts +9 -2
  56. package/src/ui/Button.test.ts +22 -0
  57. package/src/ui/Button.ts +7 -0
  58. package/src/utils/platform.test.ts +20 -0
  59. package/src/utils/platform.ts +6 -0
  60. package/src/utils/types.ts +5 -1
  61. package/src/version.ts +2 -2
  62. package/lib/SpinePlugin-CrQhaK6r.js.map +0 -1
  63. package/lib/const-BQ2iMCtc.js.map +0 -1
  64. package/lib/registries-BmDw_GV1.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Kt as e, W as t, Wt as n, r } from "./registries-BmDw_GV1.js";
1
+ import { Kt as e, W as t, Wt as n, r } from "./registries-DmNGVLAi.js";
2
2
  import { UPDATE_PRIORITY as i } from "pixi.js";
3
3
  //#endregion
4
4
  //#region src/plugins/StatsPlugin.ts
@@ -67,4 +67,4 @@ var a = /* @__PURE__ */ e((/* @__PURE__ */ n(((e, t) => {
67
67
  //#endregion
68
68
  export { o as StatsPlugin };
69
69
 
70
- //# sourceMappingURL=StatsPlugin-Cu625dmk.js.map
70
+ //# sourceMappingURL=StatsPlugin-tyFGzVjy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatsPlugin-Cu625dmk.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 { 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 this.addDisposer(() => this.stats.dom.remove());\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 this.addTickerCallback(this.stats.update, this.stats, UPDATE_PRIORITY.UTILITY);\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"StatsPlugin-tyFGzVjy.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 { 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 this.addDisposer(() => this.stats.dom.remove());\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 this.addTickerCallback(this.stats.update, this.stats, UPDATE_PRIORITY.UTILITY);\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { W as e, kt as t, q as n } from "./registries-BmDw_GV1.js";
1
+ import { W as e, kt as t, q as n } from "./registries-DmNGVLAi.js";
2
2
  import { gsap as r } from "gsap";
3
3
  //#region src/plugins/audio/VoiceOverPlugin.ts
4
4
  var i = class extends e {
@@ -112,4 +112,4 @@ var i = class extends e {
112
112
  //#endregion
113
113
  export { i as VoiceOverPlugin };
114
114
 
115
- //# sourceMappingURL=VoiceOverPlugin-D4rfHFyJ.js.map
115
+ //# sourceMappingURL=VoiceOverPlugin-rTNz_9eb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceOverPlugin-D4rfHFyJ.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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"}
1
+ {"version":3,"file":"VoiceOverPlugin-rTNz_9eb.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,8 +1,8 @@
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, Ht as ne, I as re, It as ie, J as p, K as ae, L as oe, Lt as se, M as ce, Mt as le, N as ue, Nt as de, O as fe, Ot as pe, P as me, Pt as he, Q as ge, R as m, Rt as _e, S as h, St as ve, T as ye, Tt as be, U as xe, Ut as Se, V as Ce, Vt as g, 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 _, bt as Me, c as Ne, ct as v, d as y, dt as b, et as Pe, f as Fe, ft as Ie, g as Le, gt as Re, h as ze, ht as Be, i as Ve, it as He, j as Ue, jt as We, k as Ge, kt as x, l as Ke, lt as qe, m as Je, mt as Ye, n as Xe, nt as Ze, o as Qe, ot as $e, p as S, pt as et, q as C, r as w, 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-BmDw_GV1.js";
2
- import { A as vt, C as yt, D as bt, E as xt, F as St, I as Ct, L as wt, M as Tt, N as Et, O as Dt, P as Ot, S as kt, T as At, _ as T, a as jt, b as Mt, c as Nt, d as Pt, f as Ft, g as E, h as It, i as Lt, j as Rt, k as zt, l as Bt, m as Vt, n as Ht, o as Ut, p as Wt, r as Gt, s as Kt, u as qt, v as Jt, w as Yt, x as Xt, y as Zt } from "./const-BQ2iMCtc.js";
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, Ht as ne, I as re, It as ie, J as p, K as ae, L as oe, Lt as se, M as ce, Mt as le, N as ue, Nt as de, O as fe, Ot as pe, P as me, Pt as he, Q as ge, R as m, Rt as _e, S as h, St as ve, T as ye, Tt as be, U as xe, Ut as Se, V as Ce, Vt as g, 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 _, bt as Me, c as Ne, ct as v, d as y, dt as b, et as Pe, f as Fe, ft as Ie, g as Le, gt as Re, h as ze, ht as Be, i as Ve, it as He, j as Ue, jt as We, k as Ge, kt as x, l as Ke, lt as qe, m as Je, mt as Ye, n as Xe, nt as Ze, o as Qe, ot as $e, p as S, pt as et, q as C, r as w, 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-DmNGVLAi.js";
2
+ import { A as vt, C as yt, D as bt, E as xt, F as St, I as Ct, L as wt, M as Tt, N as Et, O as Dt, P as Ot, S as kt, T as At, _ as T, a as jt, b as Mt, c as Nt, d as Pt, f as Ft, g as E, h as It, i as Lt, j as Rt, k as zt, l as Bt, m as Vt, n as Ht, o as Ut, p as Wt, r as Gt, s as Kt, u as qt, v as Jt, w as Yt, x as Xt, y as Zt } from "./const-Cj14a5U2.js";
3
3
  import { n as Qt, t as D } from "./padding-1kHDpGlQ.js";
4
- import { r as $t, t as en } from "./DataAdapter-Cra9dJ6W.js";
5
- import { t as tn } from "./ScreenDebugPlugin-C6pxs_3O.js";
4
+ import { r as $t, t as en } from "./DataAdapter-T-22-_D1.js";
5
+ import { t as tn } from "./ScreenDebugPlugin-kz9Mr6j1.js";
6
6
  import { CanvasTextMetrics as O, Container as nn, Graphics as k, Point as A, Polygon as rn, Rectangle as an, Sprite as on, Texture as j, isMobile as M } from "pixi.js";
7
7
  import { gsap as N } from "gsap";
8
8
  //#region src/utils/array.ts
@@ -159,32 +159,32 @@ function wn(e, t, n = "width") {
159
159
  }
160
160
  //#endregion
161
161
  //#region src/utils/platform.ts
162
- var Tn = 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, L = typeof window < "u" ? "ontouchstart" in window || navigator.maxTouchPoints > 0 : !1, R = M.any, z = M.android.device, En = M.apple.device;
162
+ var Tn = 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, L = typeof window < "u" ? "ontouchstart" in window || navigator.maxTouchPoints > 0 : !1, En = typeof window < "u" ? "__TAURI_INTERNALS__" in window : !1, R = M.any, z = M.android.device, Dn = M.apple.device;
163
163
  //#endregion
164
164
  //#region src/utils/rect.ts
165
- function Dn(e, t) {
165
+ function On(e, t) {
166
166
  return e.x += t.x, e.y += t.y, e;
167
167
  }
168
- function On(e, t) {
168
+ function kn(e, t) {
169
169
  return t === void 0 && (t = new A()), t.set(e.x + e.width * .5, e.y + e.height * .5), t;
170
170
  }
171
- function kn(e, t) {
171
+ function An(e, t) {
172
172
  return e.x *= t, e.y *= t, e.width *= t, e.height *= t, e;
173
173
  }
174
- function An(e, t) {
174
+ function jn(e, t) {
175
175
  return t === void 0 && (t = new A()), t.set(e.width, e.height), t;
176
176
  }
177
177
  //#endregion
178
178
  //#region src/utils/set.ts
179
- function jn(e, t) {
179
+ function Mn(e, t) {
180
180
  let n = /* @__PURE__ */ new Set();
181
181
  for (let r of e) t(r) && n.add(r);
182
182
  return n;
183
183
  }
184
- function Mn(e) {
184
+ function Nn(e) {
185
185
  return e?.values().next().value;
186
186
  }
187
- function Nn(e) {
187
+ function Pn(e) {
188
188
  let t;
189
189
  for (let n of e) t = n;
190
190
  return t;
@@ -205,35 +205,35 @@ function B(e, t) {
205
205
  }
206
206
  //#endregion
207
207
  //#region src/version.ts
208
- var V = "0.7.0", H = "8.20.0", Pn = " ........ ..... ............ ............. ........... \n ............. ....... ................ ............. .............. \n .............. ......... ............... ............. .............. \n ..... ........... .............. ............ .............. \n ..... ...... ...... .............. ............. ............. \n .............. ...... ..... ............ ............. ..... ...... \n ................... ..... ..... ............. ..... ....... \n ................ .......... ............. ..... ..... ";
208
+ var V = "0.7.2", H = "8.22.0", Fn = " ........ ..... ............ ............. ........... \n ............. ....... ................ ............. .............. \n .............. ......... ............... ............. .............. \n ..... ........... .............. ............ .............. \n ..... ...... ...... .............. ............. ............. \n .............. ...... ..... ............ ............. ..... ...... \n ................... ..... ..... ............. ..... ....... \n ................ .......... ............. ..... ..... ";
209
209
  function U() {
210
- let e = `\n${Pn}\n\n v${V} | %cPixi.js v${H} %c| %chttps://github.com/anthonysapp/caper\n\n`;
210
+ let e = `\n${Fn}\n\n v${V} | %cPixi.js v${H} %c| %chttps://github.com/anthonysapp/caper\n\n`;
211
211
  console.log(e, "color: #E91E63; font-weight: 600;", "color: inherit;", "color: #00BCD4; text-decoration: underline;");
212
212
  }
213
213
  //#endregion
214
214
  //#region src/webgl-check.ts
215
- function Fn() {
215
+ function In() {
216
216
  if (typeof document > "u") return;
217
217
  let e = document.createElement("canvas");
218
218
  e.getContext("webgl") || e.getContext("experimental-webgl") || console.error("Your browser does not support WebGL.");
219
219
  }
220
220
  //#endregion
221
221
  //#region src/plugins/actions/methods.ts
222
- function In(e) {
222
+ function Ln(e) {
223
223
  return e ?? d;
224
224
  }
225
- function Ln(e, t, n = !0) {
225
+ function Rn(e, t, n = !0) {
226
226
  return n && (t = {
227
227
  ...m,
228
228
  ...t
229
229
  }), t;
230
230
  }
231
- function Rn(e) {
231
+ function zn(e) {
232
232
  return e || [];
233
233
  }
234
234
  //#endregion
235
235
  //#region src/plugins/breakpoints/methods.ts
236
- function zn(e) {
236
+ function Bn(e) {
237
237
  return {
238
238
  tiers: e.tiers,
239
239
  modes: e.modes ?? {}
@@ -243,7 +243,7 @@ function zn(e) {
243
243
  //#region src/plugins/input/touch/constants.ts
244
244
  var W = /* @__PURE__ */ function(e) {
245
245
  return e.None = "none", e.Left = "left", e.Top = "top", e.Bottom = "bottom", e.Right = "right", e.TopLeft = "top_left", e.TopRight = "top_right", e.BottomLeft = "bottom_left", e.BottomRight = "bottom_right", e;
246
- }({}), Bn = [
246
+ }({}), Vn = [
247
247
  W.None,
248
248
  W.Left,
249
249
  W.Top,
@@ -256,20 +256,20 @@ var W = /* @__PURE__ */ function(e) {
256
256
  ];
257
257
  //#endregion
258
258
  //#region src/plugins/input/methods.ts
259
- function Vn(e, t, n) {
259
+ function Hn(e, t, n) {
260
260
  return n || [];
261
261
  }
262
262
  //#endregion
263
263
  //#region src/core/globals.ts
264
- var G = 200, Hn = "CaperApplication";
265
- function Un() {
264
+ var G = 200, Un = "CaperApplication";
265
+ function Wn() {
266
266
  try {
267
267
  return globalThis.Caper?.__dev === !0;
268
268
  } catch {
269
269
  return !1;
270
270
  }
271
271
  }
272
- function Wn() {
272
+ function Gn() {
273
273
  try {
274
274
  return !1;
275
275
  } catch {
@@ -299,13 +299,13 @@ function q() {
299
299
  return a.promise;
300
300
  }), t;
301
301
  }
302
- function Gn() {
302
+ function Kn() {
303
303
  q();
304
304
  }
305
305
  function J(e) {
306
- return e.config?.id || Hn;
306
+ return e.config?.id || Un;
307
307
  }
308
- function Kn(e) {
308
+ function qn(e) {
309
309
  let t = J(e), n = [], r, i = [], a = (e) => {
310
310
  n.push(e), n.length > G && n.splice(0, n.length - G);
311
311
  }, o = () => r ? r() : void 0, s = (e) => {
@@ -379,8 +379,8 @@ function Kn(e) {
379
379
  }
380
380
  function Y(e) {
381
381
  let t = q(), n = J(e);
382
- if (t.apps.set(n, e), t.app = e, Un() || e.config?.automation === !0 || Wn()) {
383
- let r = Kn(e);
382
+ if (t.apps.set(n, e), t.app = e, Wn() || e.config?.automation === !0 || Gn()) {
383
+ let r = qn(e);
384
384
  t.automation[n] = r, e.automation = r;
385
385
  }
386
386
  }
@@ -394,21 +394,21 @@ function X(e) {
394
394
  }
395
395
  //#endregion
396
396
  //#region src/core/create.ts
397
- var qn = "caper-game-container";
397
+ var Jn = "caper-game-container";
398
398
  function Z(e) {
399
399
  let t = document.createElement("div");
400
400
  return t.setAttribute("id", e), document.body.appendChild(t), t;
401
401
  }
402
- async function Jn() {
402
+ async function Q() {
403
403
  return new Promise((e) => {
404
404
  document.readyState === "complete" || document.readyState === "interactive" ? e(!0) : document.addEventListener("DOMContentLoaded", () => {
405
405
  e(!0);
406
406
  });
407
407
  });
408
408
  }
409
- async function Q(e = { id: "CaperApplication" }, t = qn, n = !0) {
410
- let { defaultFactoryMethods: r } = await import("./const-BQ2iMCtc.js").then((e) => e.t);
411
- Te(r), await Jn(), Fn(), n && U();
409
+ async function Yn(e = { id: "CaperApplication" }, t = Jn, n = !0) {
410
+ let { defaultFactoryMethods: r } = await import("./const-Cj14a5U2.js").then((e) => e.t);
411
+ Te(r), await Q(), In(), n && U();
412
412
  let i = null;
413
413
  if (typeof t == "string" ? (i = document.getElementById(t), i ||= Z(t)) : t instanceof HTMLElement ? i = t : t === window && (i = document.body), !i) throw Error("You passed in a DOM Element, but none was found. If you instead pass in a string, a container will be created for you, using the string for its id.");
414
414
  e.resizeToContainer && (e.resizeTo = i), e.useLayout && (e.layout = {
@@ -426,11 +426,11 @@ async function Q(e = { id: "CaperApplication" }, t = qn, n = !0) {
426
426
  }
427
427
  //#endregion
428
428
  //#region src/display/Entity.ts
429
- var Yn = class extends S {
429
+ var Xn = class extends S {
430
430
  constructor(e) {
431
431
  super(), this.props = e ?? {};
432
432
  }
433
- }, Xn = class extends S {
433
+ }, Zn = class extends S {
434
434
  get animationContext() {
435
435
  return this._animationContext ?? `__scene_${this.id}`;
436
436
  }
@@ -465,7 +465,7 @@ var Yn = class extends S {
465
465
  }
466
466
  onPause(e) {}
467
467
  onResume(e) {}
468
- }, Zn = class extends S {
468
+ }, Qn = class extends S {
469
469
  get active() {
470
470
  return this._active;
471
471
  }
@@ -506,7 +506,7 @@ var Yn = class extends S {
506
506
  _update(e) {
507
507
  this.active && this.initialized && this.update(e);
508
508
  }
509
- }, Qn = class extends nn {
509
+ }, $n = class extends nn {
510
510
  constructor(e) {
511
511
  return super({ isRenderGroup: !0 }), this.config = e, this.onZoom = new C(), this.onZoomComplete = new C(), this.minX = 0, this.minY = 0, this._zooming = !1, this._zoomLerp = .1, this._targetPivot = new A(0, 0), this._targetScale = new A(1, 1), this._lerp = 0, this._target = null, this._followOffset = new A(0, 0), f(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;
512
512
  }
@@ -579,7 +579,7 @@ var Yn = class extends S {
579
579
  } else this.pivot.set(this._targetPivot.x, this._targetPivot.y);
580
580
  this.position.set(this.viewportWidth / 2, this.viewportHeight / 2);
581
581
  }
582
- }, $n = class {
582
+ }, er = class {
583
583
  constructor(e, t) {
584
584
  this.camera = e, this.interactiveArea = t, this.dragging = !1, this.previousPointerPosition = null, f(this), this.camera = e, this.interactiveArea = t, this.app.keyboard.onKeyDown().connect(this.handleKeyDown), this.interactiveArea.on("pointerdown", this.onPointerDown.bind(this)), this.interactiveArea.on("pointermove", this.onPointerMove.bind(this)), this.app.stage.on("pointerup", this.onPointerUp.bind(this)), this.app.stage.on("pointerupoutside", this.onPointerUp.bind(this)), this.interactiveArea.on("touchstart", this.onPointerDown.bind(this)), this.interactiveArea.on("touchmove", this.onPointerMove.bind(this)), this.interactiveArea.on("touchend", this.onPointerUp.bind(this));
585
585
  }
@@ -626,7 +626,7 @@ var Yn = class extends S {
626
626
  getEventPosition(e) {
627
627
  return e instanceof TouchEvent ? new A(e.touches[0].clientX, e.touches[0].clientY) : new A(e.clientX, e.clientY);
628
628
  }
629
- }, er = [
629
+ }, tr = [
630
630
  "text",
631
631
  "anchor",
632
632
  "roundPixels",
@@ -671,14 +671,14 @@ var Yn = class extends S {
671
671
  scale: 1,
672
672
  marginTop: 60
673
673
  }
674
- }, tr = [
674
+ }, nr = [
675
675
  "text",
676
676
  "password",
677
677
  "number",
678
678
  "email",
679
679
  "tel",
680
680
  "url"
681
- ], nr = class e extends T(E(h(S))) {
681
+ ], rr = class e extends T(E(h(S))) {
682
682
  constructor(e, t = !1, n = null) {
683
683
  if (super({
684
684
  autoUpdate: !0,
@@ -958,7 +958,7 @@ var Yn = class extends S {
958
958
  this.domElement = this.clone.domElement, this._addDomElementListeners();
959
959
  return;
960
960
  }
961
- clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer), this.domElement = document.createElement("input"), this.domElement.type = "text", this.options.type && tr.includes(this.options.type) && (this.domElement.type = this.options.type), this.options.pattern && (this.domElement.pattern = this.options.pattern), this.options.regex && (this._regex = this.options.regex);
961
+ clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer), this.domElement = document.createElement("input"), this.domElement.type = "text", this.options.type && nr.includes(this.options.type) && (this.domElement.type = this.options.type), this.options.pattern && (this.domElement.pattern = this.options.pattern), this.options.regex && (this._regex = this.options.regex);
962
962
  let t = this.getGlobalPosition(), n = this.getBounds();
963
963
  n.x = t.x, n.y = t.y, n.width = this.width - this.options.padding.left, this.domElement.style.position = "fixed", this.domElement.style.border = "none", this.domElement.style.outline = "none", this.domElement.style.left = z ? "0" : `${n.left}px`, this.domElement.style.top = z ? "0" : `${n.top}px`, this.domElement.style.width = `${n.width}px`, this.domElement.style.height = `${n.height}px`, this.domElement.style.padding = "0", this.options.debug ? this.domElement.style.opacity = "0.8" : this.domElement.style.opacity = "0.0000001", this.app.canvas.parentElement?.appendChild(this.domElement), this.domElement.value = this.value, this.domElement.setAttribute("placeholder", this.options?.placeholder?.text ?? ""), this.options?.maxLength && this.domElement.setAttribute("maxLength", this.options.maxLength.toString()), this._addDomElementListeners(), this._focusDomElement(e);
964
964
  }
@@ -1093,7 +1093,7 @@ var Yn = class extends S {
1093
1093
  let e = this._inputContainer.getBounds();
1094
1094
  return e.width = this._lastWidth, e.height = this._lastHeight, e;
1095
1095
  }
1096
- }, rr = class extends S {
1096
+ }, ir = class extends S {
1097
1097
  constructor(e) {
1098
1098
  if (super(), this.onChange = new C(), this.onStart = new C(), this.onEnd = new C(), this.onDestroy = new C(), this.outerRadius = 0, this.innerRadius = 0, this.innerAlphaStandby = .5, this.dragging = !1, this.pointData = new A(), this.direction = W.None, this.settings = Object.assign({
1099
1099
  outerScale: 1,
@@ -1163,22 +1163,22 @@ var Yn = class extends S {
1163
1163
  let t = Math.atan2(e.y, e.x);
1164
1164
  return t >= -Math.PI / 8 && t < 0 || t >= 0 && t < Math.PI / 8 ? W.Right : t >= Math.PI / 8 && t < 3 * Math.PI / 8 ? W.BottomRight : t >= 3 * Math.PI / 8 && t < 5 * Math.PI / 8 ? W.Bottom : t >= 5 * Math.PI / 8 && t < 7 * Math.PI / 8 ? W.BottomLeft : t >= 7 * Math.PI / 8 && t < Math.PI || t >= -Math.PI && t < -7 * Math.PI / 8 ? W.Left : t >= -7 * Math.PI / 8 && t < -5 * Math.PI / 8 ? W.TopLeft : t >= -5 * Math.PI / 8 && t < -3 * Math.PI / 8 ? W.Top : W.TopRight;
1165
1165
  }
1166
- }, ir = {
1166
+ }, ar = {
1167
1167
  color: 0,
1168
1168
  alpha: .75
1169
- }, ar = {
1169
+ }, or = {
1170
1170
  backing: !0,
1171
1171
  closeOnEscape: !0,
1172
1172
  closeOnPointerDownOutside: !0,
1173
1173
  actionContext: "popup"
1174
- }, or = class e extends S {
1174
+ }, sr = class e extends S {
1175
1175
  get actionContext() {
1176
1176
  return this.config.actionContext;
1177
1177
  }
1178
1178
  constructor(e, t = {}) {
1179
1179
  super(), this.id = e, this.isShowing = !1, this._storedActionContext = void 0, this.config = Object.assign({
1180
1180
  id: e,
1181
- ...ar
1181
+ ...or
1182
1182
  }, t), this._initialize();
1183
1183
  }
1184
1184
  get data() {
@@ -1187,7 +1187,7 @@ var Yn = class extends S {
1187
1187
  static makeBacking(e, t) {
1188
1188
  let n = {};
1189
1189
  typeof e == "object" && (n = e);
1190
- let r = Object.assign({ ...ir }, n), i = new on(j.WHITE);
1190
+ let r = Object.assign({ ...ar }, n), i = new on(j.WHITE);
1191
1191
  return i.anchor.set(.5), i.alpha = r.alpha, i.tint = r.color, i.width = t.width, i.height = t.height, i;
1192
1192
  }
1193
1193
  initialize() {}
@@ -1229,7 +1229,7 @@ var Yn = class extends S {
1229
1229
  restoreActionContext() {
1230
1230
  this._storedActionContext && (x.log("Popup", "Restoring action context", this._storedActionContext), this.app.actionContext = this._storedActionContext), this._storedActionContext = void 0;
1231
1231
  }
1232
- }, sr = p.Collector, cr = p.CollectorArray, lr = p.CollectorLast, ur = p.CollectorUntil0, dr = p.CollectorWhile0, fr = p.SignalConnections;
1233
- export { gt as ActionsPlugin, Oe as Animated, Zt as AnimatedSprite, w as Application, xe as AssetsPlugin, Ue as AudioChannel, t as AudioInstance, Ge as AudioManagerPlugin, ce as BreakpointPlugin, Vt as Button, It as ButtonConfigKeys, Qn as Camera, $n as CameraController, pe as CaperEvent, sr as Collector, cr as CollectorArray, lr as CollectorLast, ur as CollectorUntil0, dr as CollectorWhile0, fn as Color, S as Container, Je as ContainerConfigKeys, mt as Controls, en as DataAdapter, Rt as DebugAlpha, Tt as DebugColors, me as DefaultActionContexts, d as DefaultActionContextsArray, re as DefaultActions, oe as DefaultButtonIds, Yn as Entity, Le as Factory, Pt as FlexContainer, Ft as FlexContainerConfigKeys, s as FocusManagerPlugin, fe as FocusOutliner, T as Focusable, te as FullScreenPlugin, ye as GesturePlugin, nr as Input, a as InputControllerTypes, ct as InputPlugin, E as Interactive, Bn as JOYSTICK_DIRECTIONS, rr as Joystick, W as JoystickDirection, ft as KeyboardControls, r as KeyboardPlugin, x as Logger, Ve as LookupPlugin, Dt as ParticleContainer, zt as ParticleContainerConfigKeys, we as Plugin, or as Popup, Fe as PopupManagerPlugin, o as Queue, y as ResizerPlugin, Xn as Scene, Ke as SceneManagerPlugin, Zn as SceneTransition, tn as ScreenDebugPlugin, C as Signal, fr as SignalConnections, Jt as SpineAnimation, ae as Store, bt as Svg, er as TextPropsKeys, Qe as Timer, nt as TimerPlugin, Bt as Toast, Nt as Toaster, _ as TouchControls, _ as VirtualControls, jt as UICanvas, Ut as UICanvasConfigKeys, Ae as WebEventsPlugin, ze as WithLifecycle, h as WithSignals, at as add, Ze as addToPoint, f as bindAllMethods, ie as bindMethods, _e as bool, n as capitalize, We as capitalizeWords, On as center, se as checkAndInvokeMethod, Re as clamp, Kt as computeEffectivePadding, it as coreFunctionRegistry, Xe as coreSignalRegistry, Q as create, Z as createContainer, Et as createDebugGraphics, Ot as createDebugLabel, ee as createFactoryMethods, dt as createQueue, Ye as debounce, b as deepMerge, m as defaultActionsList, ue as defaultBreakpoints, Ht as defaultFactoryMethods, l as defaultGestureOptions, qt as defaultToastConfig, Ln as defineActions, zn as defineBreakpoints, Rn as defineButtons, De as defineConfig, In as defineContexts, Vn as defineControls, $t as defineData, gn as defineEntity, mn as definePlugin, hn as definePopup, pn as defineScene, _n as defineUI, be as delay, ln as destroyCanvas, tt as distance, He as distanceSq, D as ensurePadding, le as env, jn as filterSet, Mn as firstFromSet, _t as floatBetween, i as floatBetweenPoint, Ne as formatTime, ge as generatePluginList, St as getDebugRegistry, ve as getDynamicModuleFromImportListItem, Mt as getErrorTexture, lt as getFirstMapEntry, ht as getLastMapEntry, B as getNearestCharacterIndex, Me as getNextMapEntry, Pe as getOrientation, pt as getPreviousMapEntry, cn as getRandomElement, Lt as getRegisteredEntityIds, Gt as getRegisteredUIIds, vt as getZeroPaddedNumber, ut as i18nPlugin, Gn as installCaperGlobal, g as intBetween, ne as intBetweenPoint, z as isAndroid, de as isDev, En as isIos, R as isMobile, he as isProduction, u as isPromise, Tn as isRetina, Ee as isStorageCapable, Wt as isText, L as isTouch, Nn as lastFromSet, ke as lerp, je as lerpPoint, $e as magnitude, rt as multiply, Ce as normalizeKey, yn as objectDiagonal, Dn as offset, Sn as offsetShape, Cn as offsetSimpleShape, Ie as omitKeys, H as pixiVersion, et as pluck, Se as randomUUID, vn as reParent, Y as registerCaperApp, Ct as registerDebug, Xt as resolveAnchor, Qt as resolvePadding, kt as resolvePivot, v as resolvePointLike, yt as resolvePosition, Yt as resolveScale, Be as resolveSizeLike, At as resolveTexture, xt as resolveUnknownKeys, U as sayHello, kn as scale, I as scaleToHeight, wn as scaleToSize, F as scaleToWidth, P as scaleUniform, xn as sendToBack, bn as sendToFront, ot as shouldEnableScreenDebug, sn as shuffle, X as signalCaperReady, An as size, e as sortPluginsByRequires, qe as subtract, st as subtractFromPoint, un as toHex, dn as toRgb, wt as unregisterDebug, V as version, c as wait };
1232
+ }, cr = p.Collector, lr = p.CollectorArray, ur = p.CollectorLast, dr = p.CollectorUntil0, fr = p.CollectorWhile0, pr = p.SignalConnections;
1233
+ export { gt as ActionsPlugin, Oe as Animated, Zt as AnimatedSprite, w as Application, xe as AssetsPlugin, Ue as AudioChannel, t as AudioInstance, Ge as AudioManagerPlugin, ce as BreakpointPlugin, Vt as Button, It as ButtonConfigKeys, $n as Camera, er as CameraController, pe as CaperEvent, cr as Collector, lr as CollectorArray, ur as CollectorLast, dr as CollectorUntil0, fr as CollectorWhile0, fn as Color, S as Container, Je as ContainerConfigKeys, mt as Controls, en as DataAdapter, Rt as DebugAlpha, Tt as DebugColors, me as DefaultActionContexts, d as DefaultActionContextsArray, re as DefaultActions, oe as DefaultButtonIds, Xn as Entity, Le as Factory, Pt as FlexContainer, Ft as FlexContainerConfigKeys, s as FocusManagerPlugin, fe as FocusOutliner, T as Focusable, te as FullScreenPlugin, ye as GesturePlugin, rr as Input, a as InputControllerTypes, ct as InputPlugin, E as Interactive, Vn as JOYSTICK_DIRECTIONS, ir as Joystick, W as JoystickDirection, ft as KeyboardControls, r as KeyboardPlugin, x as Logger, Ve as LookupPlugin, Dt as ParticleContainer, zt as ParticleContainerConfigKeys, we as Plugin, sr as Popup, Fe as PopupManagerPlugin, o as Queue, y as ResizerPlugin, Zn as Scene, Ke as SceneManagerPlugin, Qn as SceneTransition, tn as ScreenDebugPlugin, C as Signal, pr as SignalConnections, Jt as SpineAnimation, ae as Store, bt as Svg, tr as TextPropsKeys, Qe as Timer, nt as TimerPlugin, Bt as Toast, Nt as Toaster, _ as TouchControls, _ as VirtualControls, jt as UICanvas, Ut as UICanvasConfigKeys, Ae as WebEventsPlugin, ze as WithLifecycle, h as WithSignals, at as add, Ze as addToPoint, f as bindAllMethods, ie as bindMethods, _e as bool, n as capitalize, We as capitalizeWords, kn as center, se as checkAndInvokeMethod, Re as clamp, Kt as computeEffectivePadding, it as coreFunctionRegistry, Xe as coreSignalRegistry, Yn as create, Z as createContainer, Et as createDebugGraphics, Ot as createDebugLabel, ee as createFactoryMethods, dt as createQueue, Ye as debounce, b as deepMerge, m as defaultActionsList, ue as defaultBreakpoints, Ht as defaultFactoryMethods, l as defaultGestureOptions, qt as defaultToastConfig, Rn as defineActions, Bn as defineBreakpoints, zn as defineButtons, De as defineConfig, Ln as defineContexts, Hn as defineControls, $t as defineData, gn as defineEntity, mn as definePlugin, hn as definePopup, pn as defineScene, _n as defineUI, be as delay, ln as destroyCanvas, tt as distance, He as distanceSq, D as ensurePadding, le as env, Mn as filterSet, Nn as firstFromSet, _t as floatBetween, i as floatBetweenPoint, Ne as formatTime, ge as generatePluginList, St as getDebugRegistry, ve as getDynamicModuleFromImportListItem, Mt as getErrorTexture, lt as getFirstMapEntry, ht as getLastMapEntry, B as getNearestCharacterIndex, Me as getNextMapEntry, Pe as getOrientation, pt as getPreviousMapEntry, cn as getRandomElement, Lt as getRegisteredEntityIds, Gt as getRegisteredUIIds, vt as getZeroPaddedNumber, ut as i18nPlugin, Kn as installCaperGlobal, g as intBetween, ne as intBetweenPoint, z as isAndroid, de as isDev, Dn as isIos, R as isMobile, he as isProduction, u as isPromise, Tn as isRetina, Ee as isStorageCapable, En as isTauri, Wt as isText, L as isTouch, Pn as lastFromSet, ke as lerp, je as lerpPoint, $e as magnitude, rt as multiply, Ce as normalizeKey, yn as objectDiagonal, On as offset, Sn as offsetShape, Cn as offsetSimpleShape, Ie as omitKeys, H as pixiVersion, et as pluck, Se as randomUUID, vn as reParent, Y as registerCaperApp, Ct as registerDebug, Xt as resolveAnchor, Qt as resolvePadding, kt as resolvePivot, v as resolvePointLike, yt as resolvePosition, Yt as resolveScale, Be as resolveSizeLike, At as resolveTexture, xt as resolveUnknownKeys, U as sayHello, An as scale, I as scaleToHeight, wn as scaleToSize, F as scaleToWidth, P as scaleUniform, xn as sendToBack, bn as sendToFront, ot as shouldEnableScreenDebug, sn as shuffle, X as signalCaperReady, jn as size, e as sortPluginsByRequires, qe as subtract, st as subtractFromPoint, un as toHex, dn as toRgb, wt as unregisterDebug, V as version, c as wait };
1234
1234
 
1235
1235
  //# sourceMappingURL=caper.mjs.map