@caperjs/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +62 -0
  3. package/cli/add.mjs +197 -0
  4. package/cli/audio/cc.mjs +128 -0
  5. package/cli/audio/index.mjs +42 -0
  6. package/cli/audio/utils.mjs +56 -0
  7. package/cli/create-caper.mjs +8 -0
  8. package/cli/create.mjs +351 -0
  9. package/cli/install-peerdeps.mjs +57 -0
  10. package/cli/update.mjs +9 -0
  11. package/cli/utils.mjs +81 -0
  12. package/cli/vite.mjs +55 -0
  13. package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
  14. package/cli/voiceover/index.mjs +1 -0
  15. package/cli.mjs +157 -0
  16. package/client.d.ts +7 -0
  17. package/config/assetpack.mjs +212 -0
  18. package/config/tsconfig.base.json +28 -0
  19. package/config/vite.mjs +2464 -0
  20. package/extras/css/accessibility.css +9 -0
  21. package/extras/css/fullscreen.css +28 -0
  22. package/extras/css/loader.css +67 -0
  23. package/extras/llms.txt +1602 -0
  24. package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
  25. package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
  26. package/lib/DataAdapter-BY2114sp.js +84 -0
  27. package/lib/DataAdapter-BY2114sp.js.map +1 -0
  28. package/lib/DebugRenderer-BJMLILqI.js +1385 -0
  29. package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
  30. package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
  31. package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
  32. package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
  33. package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
  34. package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
  35. package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
  36. package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
  37. package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
  38. package/lib/StatsPlugin-Cg82JMBD.js +70 -0
  39. package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
  40. package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
  41. package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
  42. package/lib/caper.mjs +1233 -0
  43. package/lib/caper.mjs.map +1 -0
  44. package/lib/core/Application.d.ts +268 -0
  45. package/lib/core/Application.d.ts.map +1 -0
  46. package/lib/core/config.d.ts +39 -0
  47. package/lib/core/config.d.ts.map +1 -0
  48. package/lib/core/create.d.ts +41 -0
  49. package/lib/core/create.d.ts.map +1 -0
  50. package/lib/core/globals.d.ts +51 -0
  51. package/lib/core/globals.d.ts.map +1 -0
  52. package/lib/core/index.d.ts +7 -0
  53. package/lib/core/index.d.ts.map +1 -0
  54. package/lib/core/interfaces/IApplication.d.ts +566 -0
  55. package/lib/core/interfaces/IApplication.d.ts.map +1 -0
  56. package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
  57. package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
  58. package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
  59. package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
  60. package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
  61. package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
  62. package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
  63. package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
  64. package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
  65. package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
  66. package/lib/core/interfaces/index.d.ts +7 -0
  67. package/lib/core/interfaces/index.d.ts.map +1 -0
  68. package/lib/core/registries.d.ts +8 -0
  69. package/lib/core/registries.d.ts.map +1 -0
  70. package/lib/core/types.d.ts +12 -0
  71. package/lib/core/types.d.ts.map +1 -0
  72. package/lib/display/AnimatedSprite.d.ts +40 -0
  73. package/lib/display/AnimatedSprite.d.ts.map +1 -0
  74. package/lib/display/Camera.d.ts +102 -0
  75. package/lib/display/Camera.d.ts.map +1 -0
  76. package/lib/display/Container.d.ts +115 -0
  77. package/lib/display/Container.d.ts.map +1 -0
  78. package/lib/display/Entity.d.ts +46 -0
  79. package/lib/display/Entity.d.ts.map +1 -0
  80. package/lib/display/ParticleContainer.d.ts +58 -0
  81. package/lib/display/ParticleContainer.d.ts.map +1 -0
  82. package/lib/display/Scene.d.ts +250 -0
  83. package/lib/display/Scene.d.ts.map +1 -0
  84. package/lib/display/SceneTransition.d.ts +41 -0
  85. package/lib/display/SceneTransition.d.ts.map +1 -0
  86. package/lib/display/SpineAnimation.d.ts +76 -0
  87. package/lib/display/SpineAnimation.d.ts.map +1 -0
  88. package/lib/display/Svg.d.ts +5 -0
  89. package/lib/display/Svg.d.ts.map +1 -0
  90. package/lib/display/index.d.ts +10 -0
  91. package/lib/display/index.d.ts.map +1 -0
  92. package/lib/env.d.ts +6 -0
  93. package/lib/hello.d.ts +2 -0
  94. package/lib/hello.d.ts.map +1 -0
  95. package/lib/index.d.ts +15 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/mixins/animated.d.ts +53 -0
  98. package/lib/mixins/animated.d.ts.map +1 -0
  99. package/lib/mixins/factory/Factory.d.ts +8 -0
  100. package/lib/mixins/factory/Factory.d.ts.map +1 -0
  101. package/lib/mixins/factory/const.d.ts +67 -0
  102. package/lib/mixins/factory/const.d.ts.map +1 -0
  103. package/lib/mixins/factory/index.d.ts +8 -0
  104. package/lib/mixins/factory/index.d.ts.map +1 -0
  105. package/lib/mixins/factory/methods.d.ts +3 -0
  106. package/lib/mixins/factory/methods.d.ts.map +1 -0
  107. package/lib/mixins/factory/props.d.ts +160 -0
  108. package/lib/mixins/factory/props.d.ts.map +1 -0
  109. package/lib/mixins/factory/registry.d.ts +27 -0
  110. package/lib/mixins/factory/registry.d.ts.map +1 -0
  111. package/lib/mixins/factory/registry.test.d.ts +2 -0
  112. package/lib/mixins/factory/registry.test.d.ts.map +1 -0
  113. package/lib/mixins/factory/schema.d.ts +71 -0
  114. package/lib/mixins/factory/schema.d.ts.map +1 -0
  115. package/lib/mixins/factory/ui-registry.d.ts +20 -0
  116. package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
  117. package/lib/mixins/factory/utils.d.ts +11 -0
  118. package/lib/mixins/factory/utils.d.ts.map +1 -0
  119. package/lib/mixins/focus.d.ts +15 -0
  120. package/lib/mixins/focus.d.ts.map +1 -0
  121. package/lib/mixins/index.d.ts +6 -0
  122. package/lib/mixins/index.d.ts.map +1 -0
  123. package/lib/mixins/interaction.d.ts +20 -0
  124. package/lib/mixins/interaction.d.ts.map +1 -0
  125. package/lib/mixins/signals.d.ts +15 -0
  126. package/lib/mixins/signals.d.ts.map +1 -0
  127. package/lib/plugins/AssetsPlugin.d.ts +79 -0
  128. package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
  129. package/lib/plugins/DataAdapter.d.ts +95 -0
  130. package/lib/plugins/DataAdapter.d.ts.map +1 -0
  131. package/lib/plugins/DevToolsPlugin.d.ts +97 -0
  132. package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
  133. package/lib/plugins/FullScreenPlugin.d.ts +240 -0
  134. package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
  135. package/lib/plugins/GSAPPlugin.d.ts +634 -0
  136. package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
  137. package/lib/plugins/KeyboardPlugin.d.ts +53 -0
  138. package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
  139. package/lib/plugins/LayoutPlugin.d.ts +100 -0
  140. package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
  141. package/lib/plugins/LookupPlugin.d.ts +223 -0
  142. package/lib/plugins/LookupPlugin.d.ts.map +1 -0
  143. package/lib/plugins/Plugin.d.ts +132 -0
  144. package/lib/plugins/Plugin.d.ts.map +1 -0
  145. package/lib/plugins/Plugin.test.d.ts +2 -0
  146. package/lib/plugins/Plugin.test.d.ts.map +1 -0
  147. package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
  148. package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
  149. package/lib/plugins/ResizerPlugin.d.ts +62 -0
  150. package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
  151. package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
  152. package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
  153. package/lib/plugins/StatsPlugin.d.ts +8 -0
  154. package/lib/plugins/StatsPlugin.d.ts.map +1 -0
  155. package/lib/plugins/TimerPlugin.d.ts +401 -0
  156. package/lib/plugins/TimerPlugin.d.ts.map +1 -0
  157. package/lib/plugins/WebEventsPlugin.d.ts +60 -0
  158. package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
  159. package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
  160. package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
  161. package/lib/plugins/actions/constants.d.ts +52 -0
  162. package/lib/plugins/actions/constants.d.ts.map +1 -0
  163. package/lib/plugins/actions/index.d.ts +5 -0
  164. package/lib/plugins/actions/index.d.ts.map +1 -0
  165. package/lib/plugins/actions/methods.d.ts +11 -0
  166. package/lib/plugins/actions/methods.d.ts.map +1 -0
  167. package/lib/plugins/actions/types.d.ts +25 -0
  168. package/lib/plugins/actions/types.d.ts.map +1 -0
  169. package/lib/plugins/audio/AudioChannel.d.ts +46 -0
  170. package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
  171. package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
  172. package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
  173. package/lib/plugins/audio/AudioInstance.d.ts +79 -0
  174. package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
  175. package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
  176. package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
  177. package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
  178. package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
  179. package/lib/plugins/audio/index.d.ts +4 -0
  180. package/lib/plugins/audio/index.d.ts.map +1 -0
  181. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
  182. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
  183. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
  184. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
  185. package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
  186. package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
  187. package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
  188. package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
  189. package/lib/plugins/breakpoints/index.d.ts +4 -0
  190. package/lib/plugins/breakpoints/index.d.ts.map +1 -0
  191. package/lib/plugins/breakpoints/methods.d.ts +23 -0
  192. package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
  193. package/lib/plugins/breakpoints/types.d.ts +70 -0
  194. package/lib/plugins/breakpoints/types.d.ts.map +1 -0
  195. package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
  196. package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
  197. package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
  198. package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
  199. package/lib/plugins/captions/index.d.ts +3 -0
  200. package/lib/plugins/captions/index.d.ts.map +1 -0
  201. package/lib/plugins/defaults.d.ts +4 -0
  202. package/lib/plugins/defaults.d.ts.map +1 -0
  203. package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
  204. package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
  205. package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
  206. package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
  207. package/lib/plugins/focus/index.d.ts +3 -0
  208. package/lib/plugins/focus/index.d.ts.map +1 -0
  209. package/lib/plugins/i18nPlugin.d.ts +128 -0
  210. package/lib/plugins/i18nPlugin.d.ts.map +1 -0
  211. package/lib/plugins/index.d.ts +18 -0
  212. package/lib/plugins/index.d.ts.map +1 -0
  213. package/lib/plugins/input/AbstractControls.d.ts +8 -0
  214. package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
  215. package/lib/plugins/input/Controls.d.ts +16 -0
  216. package/lib/plugins/input/Controls.d.ts.map +1 -0
  217. package/lib/plugins/input/InputPlugin.d.ts +52 -0
  218. package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
  219. package/lib/plugins/input/constants.d.ts +8 -0
  220. package/lib/plugins/input/constants.d.ts.map +1 -0
  221. package/lib/plugins/input/index.d.ts +10 -0
  222. package/lib/plugins/input/index.d.ts.map +1 -0
  223. package/lib/plugins/input/interfaces.d.ts +30 -0
  224. package/lib/plugins/input/interfaces.d.ts.map +1 -0
  225. package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
  226. package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
  227. package/lib/plugins/input/keyboard/index.d.ts +3 -0
  228. package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
  229. package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
  230. package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
  231. package/lib/plugins/input/methods.d.ts +4 -0
  232. package/lib/plugins/input/methods.d.ts.map +1 -0
  233. package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
  234. package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
  235. package/lib/plugins/input/touch/constants.d.ts +14 -0
  236. package/lib/plugins/input/touch/constants.d.ts.map +1 -0
  237. package/lib/plugins/input/touch/index.d.ts +4 -0
  238. package/lib/plugins/input/touch/index.d.ts.map +1 -0
  239. package/lib/plugins/input/touch/interfaces.d.ts +15 -0
  240. package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
  241. package/lib/plugins/input/types.d.ts +32 -0
  242. package/lib/plugins/input/types.d.ts.map +1 -0
  243. package/lib/plugins/input/utils.d.ts +23 -0
  244. package/lib/plugins/input/utils.d.ts.map +1 -0
  245. package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
  246. package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
  247. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
  248. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
  249. package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
  250. package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
  251. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
  252. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
  253. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
  254. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
  255. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
  256. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
  257. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
  258. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
  259. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
  260. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
  261. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
  262. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
  263. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
  264. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
  265. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
  266. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
  267. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
  268. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
  269. package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
  270. package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
  271. package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
  272. package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
  273. package/lib/registries-CYCaYKZI.js +6885 -0
  274. package/lib/registries-CYCaYKZI.js.map +1 -0
  275. package/lib/signals/Signal.d.ts +16 -0
  276. package/lib/signals/Signal.d.ts.map +1 -0
  277. package/lib/signals/Signal.test.d.ts +2 -0
  278. package/lib/signals/Signal.test.d.ts.map +1 -0
  279. package/lib/signals/index.d.ts +3 -0
  280. package/lib/signals/index.d.ts.map +1 -0
  281. package/lib/store/Store.d.ts +56 -0
  282. package/lib/store/Store.d.ts.map +1 -0
  283. package/lib/store/Store.test.d.ts +2 -0
  284. package/lib/store/Store.test.d.ts.map +1 -0
  285. package/lib/store/index.d.ts +2 -0
  286. package/lib/store/index.d.ts.map +1 -0
  287. package/lib/types/framework.d.ts +46 -0
  288. package/lib/types/gsap.d.ts +23 -0
  289. package/lib/ui/Button.d.ts +162 -0
  290. package/lib/ui/Button.d.ts.map +1 -0
  291. package/lib/ui/FlexContainer.d.ts +109 -0
  292. package/lib/ui/FlexContainer.d.ts.map +1 -0
  293. package/lib/ui/Input.d.ts +384 -0
  294. package/lib/ui/Input.d.ts.map +1 -0
  295. package/lib/ui/Joystick.d.ts +61 -0
  296. package/lib/ui/Joystick.d.ts.map +1 -0
  297. package/lib/ui/Popup.d.ts +109 -0
  298. package/lib/ui/Popup.d.ts.map +1 -0
  299. package/lib/ui/Toast.d.ts +131 -0
  300. package/lib/ui/Toast.d.ts.map +1 -0
  301. package/lib/ui/Toaster.d.ts +188 -0
  302. package/lib/ui/Toaster.d.ts.map +1 -0
  303. package/lib/ui/UICanvas.d.ts +155 -0
  304. package/lib/ui/UICanvas.d.ts.map +1 -0
  305. package/lib/ui/index.d.ts +9 -0
  306. package/lib/ui/index.d.ts.map +1 -0
  307. package/lib/utils/array.d.ts +11 -0
  308. package/lib/utils/array.d.ts.map +1 -0
  309. package/lib/utils/bind.d.ts +21 -0
  310. package/lib/utils/bind.d.ts.map +1 -0
  311. package/lib/utils/canvas.d.ts +2 -0
  312. package/lib/utils/canvas.d.ts.map +1 -0
  313. package/lib/utils/color.d.ts +66 -0
  314. package/lib/utils/color.d.ts.map +1 -0
  315. package/lib/utils/console/Logger.d.ts +15 -0
  316. package/lib/utils/console/Logger.d.ts.map +1 -0
  317. package/lib/utils/console/index.d.ts +2 -0
  318. package/lib/utils/console/index.d.ts.map +1 -0
  319. package/lib/utils/debug.d.ts +34 -0
  320. package/lib/utils/debug.d.ts.map +1 -0
  321. package/lib/utils/define.d.ts +100 -0
  322. package/lib/utils/define.d.ts.map +1 -0
  323. package/lib/utils/env.d.ts +4 -0
  324. package/lib/utils/env.d.ts.map +1 -0
  325. package/lib/utils/events.d.ts +12 -0
  326. package/lib/utils/events.d.ts.map +1 -0
  327. package/lib/utils/framework.d.ts +12 -0
  328. package/lib/utils/framework.d.ts.map +1 -0
  329. package/lib/utils/index.d.ts +28 -0
  330. package/lib/utils/index.d.ts.map +1 -0
  331. package/lib/utils/map.d.ts +31 -0
  332. package/lib/utils/map.d.ts.map +1 -0
  333. package/lib/utils/math.d.ts +15 -0
  334. package/lib/utils/math.d.ts.map +1 -0
  335. package/lib/utils/misc.d.ts +13 -0
  336. package/lib/utils/misc.d.ts.map +1 -0
  337. package/lib/utils/number.d.ts +2 -0
  338. package/lib/utils/number.d.ts.map +1 -0
  339. package/lib/utils/object.d.ts +21 -0
  340. package/lib/utils/object.d.ts.map +1 -0
  341. package/lib/utils/padding.d.ts +4 -0
  342. package/lib/utils/padding.d.ts.map +1 -0
  343. package/lib/utils/pixi.d.ts +42 -0
  344. package/lib/utils/pixi.d.ts.map +1 -0
  345. package/lib/utils/platform.d.ts +20 -0
  346. package/lib/utils/platform.d.ts.map +1 -0
  347. package/lib/utils/point.d.ts +66 -0
  348. package/lib/utils/point.d.ts.map +1 -0
  349. package/lib/utils/promise/Queue.d.ts +60 -0
  350. package/lib/utils/promise/Queue.d.ts.map +1 -0
  351. package/lib/utils/promise/functions.d.ts +14 -0
  352. package/lib/utils/promise/functions.d.ts.map +1 -0
  353. package/lib/utils/promise/index.d.ts +3 -0
  354. package/lib/utils/promise/index.d.ts.map +1 -0
  355. package/lib/utils/random.d.ts +42 -0
  356. package/lib/utils/random.d.ts.map +1 -0
  357. package/lib/utils/rect.d.ts +26 -0
  358. package/lib/utils/rect.d.ts.map +1 -0
  359. package/lib/utils/set.d.ts +15 -0
  360. package/lib/utils/set.d.ts.map +1 -0
  361. package/lib/utils/string.d.ts +3 -0
  362. package/lib/utils/string.d.ts.map +1 -0
  363. package/lib/utils/text.d.ts +3 -0
  364. package/lib/utils/text.d.ts.map +1 -0
  365. package/lib/utils/typefilters.d.ts +4 -0
  366. package/lib/utils/typefilters.d.ts.map +1 -0
  367. package/lib/utils/types.d.ts +209 -0
  368. package/lib/utils/types.d.ts.map +1 -0
  369. package/lib/utils/vite.d.ts +25 -0
  370. package/lib/utils/vite.d.ts.map +1 -0
  371. package/lib/utils/web.d.ts +3 -0
  372. package/lib/utils/web.d.ts.map +1 -0
  373. package/lib/version.d.ts +3 -0
  374. package/lib/version.d.ts.map +1 -0
  375. package/lib/webgl-check.d.ts +2 -0
  376. package/lib/webgl-check.d.ts.map +1 -0
  377. package/package.json +138 -0
  378. package/src/core/Application.ts +1091 -0
  379. package/src/core/config.ts +168 -0
  380. package/src/core/create.ts +186 -0
  381. package/src/core/globals.ts +299 -0
  382. package/src/core/index.ts +6 -0
  383. package/src/core/interfaces/IApplication.ts +628 -0
  384. package/src/core/interfaces/IApplicationOptions.ts +81 -0
  385. package/src/core/interfaces/ICoreFunctions.ts +86 -0
  386. package/src/core/interfaces/ICoreSignals.ts +77 -0
  387. package/src/core/interfaces/IStorageCapability.test.ts +27 -0
  388. package/src/core/interfaces/IStorageCapability.ts +26 -0
  389. package/src/core/interfaces/index.ts +6 -0
  390. package/src/core/registries.ts +7 -0
  391. package/src/core/types.ts +13 -0
  392. package/src/display/AnimatedSprite.ts +227 -0
  393. package/src/display/Camera.ts +371 -0
  394. package/src/display/Container.ts +240 -0
  395. package/src/display/Entity.ts +50 -0
  396. package/src/display/ParticleContainer.ts +107 -0
  397. package/src/display/Scene.ts +305 -0
  398. package/src/display/SceneTransition.ts +108 -0
  399. package/src/display/SpineAnimation.ts +170 -0
  400. package/src/display/Svg.ts +9 -0
  401. package/src/display/index.ts +11 -0
  402. package/src/env.d.ts +6 -0
  403. package/src/hello.ts +20 -0
  404. package/src/index.ts +17 -0
  405. package/src/mixins/animated.ts +340 -0
  406. package/src/mixins/factory/Factory.ts +24 -0
  407. package/src/mixins/factory/const.ts +363 -0
  408. package/src/mixins/factory/index.ts +7 -0
  409. package/src/mixins/factory/methods.ts +21 -0
  410. package/src/mixins/factory/props.ts +207 -0
  411. package/src/mixins/factory/registry.test.ts +83 -0
  412. package/src/mixins/factory/registry.ts +61 -0
  413. package/src/mixins/factory/schema.ts +153 -0
  414. package/src/mixins/factory/ui-registry.ts +54 -0
  415. package/src/mixins/factory/utils.ts +130 -0
  416. package/src/mixins/focus.ts +124 -0
  417. package/src/mixins/index.ts +5 -0
  418. package/src/mixins/interaction.ts +74 -0
  419. package/src/mixins/signals.ts +49 -0
  420. package/src/plugins/AssetsPlugin.ts +407 -0
  421. package/src/plugins/DataAdapter.ts +259 -0
  422. package/src/plugins/DevToolsPlugin.ts +103 -0
  423. package/src/plugins/FullScreenPlugin.ts +359 -0
  424. package/src/plugins/GSAPPlugin.ts +811 -0
  425. package/src/plugins/KeyboardPlugin.ts +160 -0
  426. package/src/plugins/LayoutPlugin.ts +127 -0
  427. package/src/plugins/LookupPlugin.ts +308 -0
  428. package/src/plugins/Plugin.test.ts +73 -0
  429. package/src/plugins/Plugin.ts +200 -0
  430. package/src/plugins/PopupManagerPlugin.ts +263 -0
  431. package/src/plugins/ResizerPlugin.ts +220 -0
  432. package/src/plugins/SceneManagerPlugin.ts +669 -0
  433. package/src/plugins/StatsPlugin.ts +24 -0
  434. package/src/plugins/TimerPlugin.ts +841 -0
  435. package/src/plugins/WebEventsPlugin.ts +132 -0
  436. package/src/plugins/actions/ActionsPlugin.ts +113 -0
  437. package/src/plugins/actions/constants.ts +45 -0
  438. package/src/plugins/actions/index.ts +4 -0
  439. package/src/plugins/actions/methods.ts +28 -0
  440. package/src/plugins/actions/types.ts +47 -0
  441. package/src/plugins/audio/AudioChannel.test.ts +101 -0
  442. package/src/plugins/audio/AudioChannel.ts +164 -0
  443. package/src/plugins/audio/AudioInstance.ts +228 -0
  444. package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
  445. package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
  446. package/src/plugins/audio/index.ts +3 -0
  447. package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
  448. package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
  449. package/src/plugins/breakpoints/evaluate.test.ts +239 -0
  450. package/src/plugins/breakpoints/evaluate.ts +201 -0
  451. package/src/plugins/breakpoints/index.ts +3 -0
  452. package/src/plugins/breakpoints/methods.ts +22 -0
  453. package/src/plugins/breakpoints/types.ts +86 -0
  454. package/src/plugins/captions/CaptionsPlugin.ts +468 -0
  455. package/src/plugins/captions/CaptionsRenderer.ts +184 -0
  456. package/src/plugins/captions/font/Sans.fnt +116 -0
  457. package/src/plugins/captions/font/Sans.png +0 -0
  458. package/src/plugins/captions/index.ts +2 -0
  459. package/src/plugins/defaults.ts +95 -0
  460. package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
  461. package/src/plugins/focus/FocusOutliner.ts +111 -0
  462. package/src/plugins/focus/index.ts +2 -0
  463. package/src/plugins/i18nPlugin.ts +284 -0
  464. package/src/plugins/index.ts +17 -0
  465. package/src/plugins/input/AbstractControls.ts +15 -0
  466. package/src/plugins/input/Controls.ts +55 -0
  467. package/src/plugins/input/InputPlugin.ts +168 -0
  468. package/src/plugins/input/constants.ts +12 -0
  469. package/src/plugins/input/index.ts +9 -0
  470. package/src/plugins/input/interfaces.ts +37 -0
  471. package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
  472. package/src/plugins/input/keyboard/index.ts +2 -0
  473. package/src/plugins/input/keyboard/interfaces.ts +21 -0
  474. package/src/plugins/input/methods.ts +9 -0
  475. package/src/plugins/input/touch/TouchControls.ts +237 -0
  476. package/src/plugins/input/touch/constants.ts +34 -0
  477. package/src/plugins/input/touch/index.ts +3 -0
  478. package/src/plugins/input/touch/interfaces.ts +15 -0
  479. package/src/plugins/input/types.ts +41 -0
  480. package/src/plugins/input/utils.ts +10 -0
  481. package/src/plugins/spine/SpinePlugin.ts +14 -0
  482. package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
  483. package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
  484. package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
  485. package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
  486. package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
  487. package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
  488. package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
  489. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
  490. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
  491. package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
  492. package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
  493. package/src/plugins/spine/pixi-spine/index.ts +43 -0
  494. package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
  495. package/src/signals/Signal.test.ts +54 -0
  496. package/src/signals/Signal.ts +68 -0
  497. package/src/signals/index.ts +10 -0
  498. package/src/store/Store.test.ts +146 -0
  499. package/src/store/Store.ts +192 -0
  500. package/src/store/index.ts +1 -0
  501. package/src/types/framework.d.ts +47 -0
  502. package/src/types/gsap.d.ts +26 -0
  503. package/src/ui/Button.ts +454 -0
  504. package/src/ui/FlexContainer.ts +526 -0
  505. package/src/ui/Input.ts +1274 -0
  506. package/src/ui/Joystick.ts +288 -0
  507. package/src/ui/Popup.ts +242 -0
  508. package/src/ui/Toast.ts +399 -0
  509. package/src/ui/Toaster.ts +409 -0
  510. package/src/ui/UICanvas.ts +812 -0
  511. package/src/ui/index.ts +8 -0
  512. package/src/utils/array.ts +24 -0
  513. package/src/utils/bind.ts +79 -0
  514. package/src/utils/canvas.ts +26 -0
  515. package/src/utils/color.ts +126 -0
  516. package/src/utils/console/Logger.ts +86 -0
  517. package/src/utils/console/index.ts +1 -0
  518. package/src/utils/debug.ts +69 -0
  519. package/src/utils/define.ts +120 -0
  520. package/src/utils/env.ts +3 -0
  521. package/src/utils/events.ts +10 -0
  522. package/src/utils/framework.ts +45 -0
  523. package/src/utils/index.ts +27 -0
  524. package/src/utils/map.ts +59 -0
  525. package/src/utils/math.ts +19 -0
  526. package/src/utils/misc.ts +45 -0
  527. package/src/utils/number.ts +3 -0
  528. package/src/utils/object.ts +43 -0
  529. package/src/utils/padding.ts +43 -0
  530. package/src/utils/pixi.ts +116 -0
  531. package/src/utils/platform.ts +33 -0
  532. package/src/utils/point.ts +123 -0
  533. package/src/utils/promise/Queue.ts +125 -0
  534. package/src/utils/promise/functions.ts +16 -0
  535. package/src/utils/promise/index.ts +2 -0
  536. package/src/utils/random.ts +69 -0
  537. package/src/utils/rect.ts +50 -0
  538. package/src/utils/set.ts +32 -0
  539. package/src/utils/string.ts +9 -0
  540. package/src/utils/text.ts +30 -0
  541. package/src/utils/typefilters.ts +29 -0
  542. package/src/utils/types.ts +426 -0
  543. package/src/utils/vite.ts +41 -0
  544. package/src/utils/web.ts +7 -0
  545. package/src/version.ts +3 -0
  546. package/src/webgl-check.ts +12 -0
  547. package/templates/app/default/.eslintrc.json +21 -0
  548. package/templates/app/default/.meta.json +4 -0
  549. package/templates/app/default/.nvmrc +1 -0
  550. package/templates/app/default/.prettierrc.json +7 -0
  551. package/templates/app/default/README.md +8 -0
  552. package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
  553. package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
  554. package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
  555. package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
  556. package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
  557. package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
  558. package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
  559. package/templates/app/default/assets/required{m}/caper.png +0 -0
  560. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
  561. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
  562. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
  563. package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
  564. package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
  565. package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
  566. package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
  567. package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
  568. package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
  569. package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
  570. package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
  571. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
  572. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
  573. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
  574. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
  575. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
  576. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
  577. package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
  578. package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
  579. package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
  580. package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
  581. package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
  582. package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
  583. package/templates/app/default/caper.config.ts +60 -0
  584. package/templates/app/default/index.html +23 -0
  585. package/templates/app/default/package.template.json +17 -0
  586. package/templates/app/default/public/favicon.ico +0 -0
  587. package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
  588. package/templates/app/default/src/main.ts +9 -0
  589. package/templates/app/default/src/scenes/Base.ts +39 -0
  590. package/templates/app/default/src/scenes/Game.ts +34 -0
  591. package/templates/app/default/src/scenes/Splash.ts +70 -0
  592. package/templates/app/default/src/scenes/Start.ts +90 -0
  593. package/templates/app/default/src/utils/Constants.ts +3 -0
  594. package/templates/app/default/tsconfig.json +1 -0
  595. package/templates/plugin/package.template.json +33 -0
  596. package/templates/plugin/src/Plugin.template.ts +24 -0
  597. package/templates/plugin/src/index.template.ts +3 -0
  598. package/templates/plugin/tsconfig.template.json +43 -0
  599. package/templates/plugin/vite-env.template.d.ts +16 -0
  600. package/templates/plugin/vite.config.template.ts +19 -0
@@ -0,0 +1,811 @@
1
+ import { gsap } from 'gsap';
2
+ import { PixiPlugin } from 'gsap/PixiPlugin';
3
+ import { BlurFilter, ColorMatrixFilter } from 'pixi.js';
4
+ import { IApplication } from '../core';
5
+ import { Signal } from '../signals';
6
+ import { type Eases } from '../utils';
7
+ import { Plugin, type IPlugin } from './Plugin';
8
+
9
+ /**
10
+ * Configuration options for the GSAP plugin.
11
+ */
12
+
13
+ export interface GSAPPluginOptions {
14
+ /** Custom easing functions to register with GSAP */
15
+ eases: Eases;
16
+ }
17
+
18
+ /**
19
+ * Interface for the GSAPPlugin, defining its public API for high-performance animations.
20
+ * Provides comprehensive GSAP integration with custom animation context management.
21
+ */
22
+ export interface IGSAPPlugin extends IPlugin {
23
+ /**
24
+ * Array of all registered custom ease names.
25
+ * @readonly
26
+ */
27
+ readonly easeNames: string[];
28
+
29
+ /**
30
+ * Object containing all registered custom eases, where keys are ease names and values are GSAP ease functions.
31
+ * @readonly
32
+ */
33
+ readonly eases: Eases;
34
+
35
+ /**
36
+ * The GSAP instance for creating animations.
37
+ * @readonly
38
+ */
39
+ readonly anim: typeof gsap;
40
+
41
+ /**
42
+ * Adds one or more GSAP tweens or timelines to a specified animation context.
43
+ * Animation contexts are custom collections (Set) of tweens/timelines managed by this plugin,
44
+ * NOT `gsap.Context` instances. If no contextId is provided, animations are added to the global context.
45
+ *
46
+ * @param animation - A single GSAP tween/timeline or an array of them
47
+ * @param contextId - Optional ID of the custom animation context. Defaults to the global context
48
+ * @returns The animation(s) that were added
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * // Add single animation to specific context
53
+ * const tween = gsap.to(mySprite, { x: 100, duration: 1 });
54
+ * gsapPlugin.addAnimation(tween, 'gameplayAnimations');
55
+ *
56
+ * // Add multiple animations to global context
57
+ * const tweens = [
58
+ * gsap.to(sprite1, { alpha: 0.5, duration: 1 }),
59
+ * gsap.to(sprite2, { rotation: Math.PI, duration: 2 })
60
+ * ];
61
+ * gsapPlugin.addAnimation(tweens);
62
+ * ```
63
+ */
64
+ addAnimation(
65
+ animation: gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[],
66
+ contextId?: string,
67
+ ): gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[];
68
+
69
+ /**
70
+ * Registers a custom ease function with GSAP.
71
+ *
72
+ * @param name - The name of the custom ease
73
+ * @param ease - The GSAP ease function
74
+ * @returns An object containing the registered ease
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * // Register a custom bounce ease
79
+ * gsapPlugin.registerCustomEase('myBounce', (progress) => {
80
+ * return progress < 0.5
81
+ * ? 2 * progress * progress
82
+ * : 1 - Math.pow(-2 * progress + 2, 3) / 2;
83
+ * });
84
+ *
85
+ * // Use the custom ease in animations
86
+ * gsap.to(mySprite, { x: 200, duration: 1, ease: 'myBounce' });
87
+ * ```
88
+ */
89
+ registerCustomEase(name: string, ease: gsap.EaseFunction): Record<string, gsap.EaseFunction>;
90
+
91
+ /**
92
+ * Registers multiple custom ease functions with GSAP in batch.
93
+ *
94
+ * @param eases - An object where keys are ease names and values are GSAP ease functions
95
+ * @returns The complete map of registered eases
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * gsapPlugin.registerEases({
100
+ * 'softBounce': (t) => t * t * (3 - 2 * t),
101
+ * 'sharpEase': (t) => t * t * t,
102
+ * 'customBack': (t) => t * t * (2.7 * t - 1.7)
103
+ * });
104
+ * ```
105
+ */
106
+ registerEases(eases: Eases): Eases;
107
+
108
+ /**
109
+ * Retrieves a custom animation context (a Set of tweens/timelines) by its ID.
110
+ * This is NOT a `gsap.Context` instance but rather a custom collection for grouping animations.
111
+ *
112
+ * @param contextId - The ID of the animation context
113
+ * @returns The animation context (a Set of tweens/timelines) or null if not found
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const menuAnimations = gsapPlugin.getContext('menuAnimations');
118
+ * if (menuAnimations) {
119
+ * console.log(`Menu has ${menuAnimations.size} active animations`);
120
+ * }
121
+ * ```
122
+ */
123
+ getContext(contextId: string): Set<gsap.core.Tween | gsap.core.Timeline> | null;
124
+
125
+ /**
126
+ * Plays all animations in a specified custom animation context, or all animations in all contexts.
127
+ *
128
+ * @param contextId - Optional ID of the animation context. If omitted, plays all animations
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Play all animations in a specific context
133
+ * gsapPlugin.playAll('gameplayAnimations');
134
+ *
135
+ * // Play all animations in all contexts
136
+ * gsapPlugin.playAll();
137
+ * ```
138
+ */
139
+ playAll(contextId?: string): void;
140
+
141
+ /**
142
+ * Pauses all animations in a specified custom animation context, or all animations in all contexts.
143
+ *
144
+ * @param contextId - Optional ID of the animation context. If omitted, pauses all animations
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * // Pause game animations when menu opens
149
+ * gsapPlugin.pauseAll('gameplayAnimations');
150
+ *
151
+ * // Pause everything when app loses focus
152
+ * gsapPlugin.pauseAll();
153
+ * ```
154
+ */
155
+ pauseAll(contextId?: string): void;
156
+
157
+ /**
158
+ * Kills (stops and removes) all animations in a specified custom animation context, or all animations.
159
+ * If all contexts are killed, the plugin's global animation collection is recreated.
160
+ *
161
+ * @param contextId - Optional ID of the animation context. If omitted, kills all animations
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * // Kill specific context when transitioning scenes
166
+ * gsapPlugin.killAll('oldSceneAnimations');
167
+ *
168
+ * // Emergency stop all animations
169
+ * gsapPlugin.killAll();
170
+ * ```
171
+ */
172
+ killAll(contextId?: string): void;
173
+
174
+ /**
175
+ * Reverts all animations in a specified custom animation context to their initial state.
176
+ *
177
+ * @param contextId - Optional ID of the animation context. If omitted, reverts all animations
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Reset UI animations to initial state
182
+ * gsapPlugin.revertAll('uiAnimations');
183
+ *
184
+ * // Reset everything for game restart
185
+ * gsapPlugin.revertAll();
186
+ * ```
187
+ */
188
+ revertAll(contextId?: string): void;
189
+
190
+ /**
191
+ * Clears (removes) a specific custom animation context and its tracked animations.
192
+ * If this results in no active contexts, the global collection is recreated if all contexts are cleared.
193
+ *
194
+ * @param contextId - The ID of the animation context to clear
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * // Clean up completed level animations
199
+ * gsapPlugin.clear('level1Animations');
200
+ * ```
201
+ */
202
+ clear(contextId: string): void;
203
+
204
+ /**
205
+ * Clears all custom animation contexts and recreates the plugin's global animation collection.
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * // Complete reset when restarting the game
210
+ * gsapPlugin.clearAll();
211
+ * ```
212
+ */
213
+ clearAll(): void;
214
+
215
+ /**
216
+ * Kills all animations within the global animation collection managed by this plugin.
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * // Stop only global animations, keep context-specific ones
221
+ * gsapPlugin.killGlobal();
222
+ * ```
223
+ */
224
+ killGlobal(): void;
225
+
226
+ /**
227
+ * Reverts all animations within the global animation collection to their initial state.
228
+ *
229
+ * @example
230
+ * ```typescript
231
+ * // Reset global animations without affecting contexts
232
+ * gsapPlugin.revertGlobal();
233
+ * ```
234
+ */
235
+ revertGlobal(): void;
236
+
237
+ /**
238
+ * Clears all animations from the global animation collection managed by this plugin.
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * // Clear global animations for cleanup
243
+ * gsapPlugin.clearGlobal();
244
+ * ```
245
+ */
246
+ clearGlobal(): void;
247
+
248
+ // signals
249
+ onPlayAll: Signal<(contextId: string) => void>;
250
+ onPauseAll: Signal<(contextId: string) => void>;
251
+ onKillAll: Signal<(contextId: string) => void>;
252
+ onRevertAll: Signal<(contextId: string) => void>;
253
+ onClear: Signal<(detail: { contextId: string; kill: boolean }) => void>;
254
+ onClearAll: Signal<(kill: boolean) => void>;
255
+ onKillGlobal: Signal<() => void>;
256
+ onRevertGlobal: Signal<() => void>;
257
+ onClearGlobal: Signal<(kill: boolean) => void>;
258
+ onEaseRegistered: Signal<(detail: { name: string; ease: gsap.EaseFunction }) => void>;
259
+ onEasesRegistered: Signal<(eases: Eases) => void>;
260
+ onAnimationAddded: Signal<(detail: { animation: gsap.core.Tween | gsap.core.Timeline; contextId: string }) => void>;
261
+ }
262
+
263
+ /**
264
+ * Type alias for animation context collections.
265
+ * Represents a Set containing GSAP tweens and timelines for grouped animation management.
266
+ */
267
+ export type AnimationContext = Set<gsap.core.Tween | gsap.core.Timeline>;
268
+
269
+ /**
270
+ * High-performance GSAP animation plugin for PIXI.js applications.
271
+ *
272
+ * Integrates the GreenSock Animation Platform (GSAP) into the application framework,
273
+ * providing powerful and flexible animation capabilities with optimized PIXI.js integration.
274
+ * Features custom animation context management for grouped animation control, custom easing
275
+ * registration, and automatic PIXI.js property animation support.
276
+ *
277
+ * Key Features:
278
+ * - Full GSAP integration with PIXI.js optimization
279
+ * - Custom animation contexts for grouped control (pause/play/kill by category)
280
+ * - Custom easing function registration and management
281
+ * - Automatic PIXI filter integration (BlurFilter, ColorMatrixFilter)
282
+ * - Memory-efficient animation tracking and cleanup
283
+ * - Global and context-specific animation management
284
+ *
285
+ * **Important:** Animation "contexts" in this plugin are custom collections (Sets) for grouping
286
+ * animations and are NOT the same as `gsap.Context` objects provided by GSAP itself.
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * // Basic setup and usage
291
+ * const gsapPlugin = app.plugins.get<IGSAPPlugin>('GSAPPlugin');
292
+ *
293
+ * // Create optimized PIXI animations
294
+ * const sprite = new PIXI.Sprite(texture);
295
+ * gsapPlugin.anim.to(sprite, {
296
+ * x: 100,
297
+ * y: 50,
298
+ * alpha: 0.8,
299
+ * duration: 1,
300
+ * ease: 'back.out(1.7)'
301
+ * });
302
+ *
303
+ * // Register custom eases for game feel
304
+ * gsapPlugin.registerCustomEase('gameJuice', (t) => {
305
+ * return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
306
+ * });
307
+ *
308
+ * // Context-based animation management
309
+ * const menuTween = gsapPlugin.anim.to(menuButton, { scale: 1.1, duration: 0.3 });
310
+ * gsapPlugin.addAnimation(menuTween, 'menuAnimations');
311
+ *
312
+ * // Later: pause all menu animations when game starts
313
+ * gsapPlugin.pauseAll('menuAnimations');
314
+ *
315
+ * // Animate PIXI filters
316
+ * const blurFilter = new PIXI.BlurFilter();
317
+ * sprite.filters = [blurFilter];
318
+ * gsapPlugin.anim.to(blurFilter, { blur: 10, duration: 2 });
319
+ * ```
320
+ *
321
+ * @remarks
322
+ * - Automatically registers PixiPlugin for optimized PIXI.js property animations
323
+ * - Includes ColorMatrixFilter and BlurFilter integration for advanced effects
324
+ * - Uses efficient Set-based tracking for O(1) animation context operations
325
+ * - Provides both global and context-specific animation lifecycle management
326
+ * - Custom eases are automatically registered with GSAP and stored for reference
327
+ */
328
+ export class GSAPPlugin extends Plugin implements IGSAPPlugin {
329
+ /** Internal identifier for the global animation context */
330
+ private static readonly GLOBAL_CONTEXT_ID = '__caper_global';
331
+
332
+ /** Plugin identifier for framework registration */
333
+ public readonly id = 'GSAPPlugin';
334
+
335
+ // signals
336
+ public onPlayAll = new Signal<(contextId: string) => void>();
337
+ public onPauseAll = new Signal<(contextId: string) => void>();
338
+ public onKillAll = new Signal<(contextId: string) => void>();
339
+ public onRevertAll = new Signal<(contextId: string) => void>();
340
+ public onClear = new Signal<(detail: { contextId: string; kill: boolean }) => void>();
341
+ public onClearAll = new Signal<(kill: boolean) => void>();
342
+ public onKillGlobal = new Signal<() => void>();
343
+ public onRevertGlobal = new Signal<() => void>();
344
+ public onClearGlobal = new Signal<(kill: boolean) => void>();
345
+ public onEaseRegistered = new Signal<(detail: { name: string; ease: gsap.EaseFunction }) => void>();
346
+ public onEasesRegistered = new Signal<(eases: Eases) => void>();
347
+ public onAnimationAddded = new Signal<
348
+ (detail: { animation: gsap.core.Tween | gsap.core.Timeline; contextId: string }) => void
349
+ >();
350
+
351
+ /** Global animation context reference for quick access */
352
+ private _globalContext: AnimationContext;
353
+
354
+ /** Map of all custom animation contexts by their string identifiers */
355
+ private _animationContexts: Map<string, AnimationContext> = new Map();
356
+
357
+ /**
358
+ * Array of all registered custom ease names.
359
+ * @readonly
360
+ */
361
+ public get easeNames(): string[] {
362
+ return Object.keys(this.eases);
363
+ }
364
+
365
+ /**
366
+ * Object containing all registered custom eases.
367
+ * @readonly
368
+ */
369
+ public get eases(): Eases {
370
+ return this.options.eases || {};
371
+ }
372
+
373
+ /**
374
+ * Initializes the GSAP plugin with PIXI.js integration and custom configurations.
375
+ * Sets up PixiPlugin, registers custom eases, and creates the global animation context.
376
+ *
377
+ * @param _ - Plugin options (currently unused, relies on app.config.gsap)
378
+ * @param app - The application instance providing configuration
379
+ *
380
+ * @example
381
+ * ```typescript
382
+ * // Plugin is automatically initialized by the framework
383
+ * // Configuration comes from app.config.gsap
384
+ * const config = {
385
+ * gsap: {
386
+ * eases: {
387
+ * 'customBounce': (t) => t * t * (3 - 2 * t),
388
+ * 'gameEase': (t) => Math.pow(t, 2.5)
389
+ * }
390
+ * }
391
+ * };
392
+ * ```
393
+ */
394
+ public async initialize(_: any, app: IApplication) {
395
+ this._options = app.config.gsap || {};
396
+
397
+ if (this._options.eases) {
398
+ this.registerEases(this._options.eases);
399
+ }
400
+ gsap.registerPlugin(PixiPlugin);
401
+
402
+ PixiPlugin.registerPIXI({
403
+ filters: {
404
+ ColorMatrixFilter,
405
+ BlurFilter,
406
+ },
407
+ });
408
+
409
+ this.createGlobalContext();
410
+ }
411
+
412
+ /**
413
+ * Creates and initializes the global animation context.
414
+ * Sets up the default context for animations not assigned to specific contexts.
415
+ * @protected
416
+ */
417
+ protected createGlobalContext(): void {
418
+ this._animationContexts.set(GSAPPlugin.GLOBAL_CONTEXT_ID, new Set());
419
+ }
420
+
421
+ /**
422
+ * Registers a single custom ease function with GSAP.
423
+ * The ease becomes available for use in all GSAP animations by name.
424
+ *
425
+ * @param name - Unique name identifier for the ease
426
+ * @param ease - GSAP-compatible easing function (takes progress 0-1, returns eased value)
427
+ * @returns Object containing the registered ease for chaining or reference
428
+ *
429
+ * @example
430
+ * ```typescript
431
+ * // Register a custom elastic ease
432
+ * gsapPlugin.registerCustomEase('elasticOut', (t) => {
433
+ * const c4 = (2 * Math.PI) / 3;
434
+ * return t === 0 ? 0 : t === 1 ? 1 :
435
+ * Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;
436
+ * });
437
+ *
438
+ * // Use in animations
439
+ * gsap.to(mySprite, { x: 100, duration: 1, ease: 'elasticOut' });
440
+ * ```
441
+ */
442
+ public registerCustomEase(name: string, ease: gsap.EaseFunction): Record<string, gsap.EaseFunction> {
443
+ gsap.registerEase(name, ease);
444
+
445
+ if (!this.options.eases) {
446
+ this.options.eases = {};
447
+ }
448
+ this.options.eases[name] = ease;
449
+ this.onEaseRegistered.emit({ name, ease });
450
+ return { [name]: ease };
451
+ }
452
+
453
+ /**
454
+ * Registers multiple custom ease functions with GSAP in a single operation.
455
+ * Efficient batch registration for multiple custom eases.
456
+ *
457
+ * @param eases - Object mapping ease names to ease functions
458
+ * @returns The complete map of all registered eases
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * // Register a suite of game-specific eases
463
+ * gsapPlugin.registerEases({
464
+ * 'jumpEase': (t) => t * t * (3 - 2 * t),
465
+ * 'impactEase': (t) => 1 - Math.cos(t * Math.PI / 2),
466
+ * 'floatEase': (t) => Math.sin(t * Math.PI / 2),
467
+ * 'snapEase': (t) => t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2
468
+ * });
469
+ * ```
470
+ */
471
+ public registerEases(eases: Eases): Eases {
472
+ for (const [name, ease] of Object.entries(eases)) {
473
+ this.registerCustomEase(name, ease);
474
+ }
475
+ this.onEasesRegistered.emit(eases);
476
+ return this.eases;
477
+ }
478
+
479
+ /**
480
+ * Gets the GSAP instance for creating animations.
481
+ * Provides access to the full GSAP API with PIXI.js optimizations enabled.
482
+ * @readonly
483
+ */
484
+ public get anim(): typeof gsap {
485
+ return gsap;
486
+ }
487
+
488
+ /**
489
+ * Adds animation(s) to a specified context for grouped management.
490
+ * Creates the context if it doesn't exist. Defaults to global context if no contextId provided.
491
+ *
492
+ * @param animation - Single animation or array of animations to track
493
+ * @param contextId - Context identifier (defaults to global context)
494
+ * @returns The same animation(s) passed in for chaining
495
+ *
496
+ * @example
497
+ * ```typescript
498
+ * // Add to specific context for scene management
499
+ * const levelTweens = [
500
+ * gsap.to(player, { x: 100, duration: 2 }),
501
+ * gsap.to(enemy, { rotation: Math.PI, duration: 1.5 }),
502
+ * gsap.to(powerup, { scale: 1.2, yoyo: true, repeat: -1, duration: 0.8 })
503
+ * ];
504
+ * gsapPlugin.addAnimation(levelTweens, 'level1Gameplay');
505
+ *
506
+ * // Add to global context (default)
507
+ * const bgTween = gsap.to(background, { alpha: 0.8, duration: 3 });
508
+ * gsapPlugin.addAnimation(bgTween);
509
+ * ```
510
+ */
511
+ public addAnimation(
512
+ animation: gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[],
513
+ contextId: string = GSAPPlugin.GLOBAL_CONTEXT_ID,
514
+ ): gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[] {
515
+ if (!this._animationContexts.has(contextId)) {
516
+ this._animationContexts.set(contextId, new Set());
517
+ }
518
+ const ctx = this._animationContexts.get(contextId);
519
+ if (ctx) {
520
+ if (Array.isArray(animation)) {
521
+ animation.forEach((anim) => {
522
+ ctx.add(anim);
523
+ this.onAnimationAddded.emit({ animation: anim, contextId });
524
+ });
525
+ } else {
526
+ ctx.add(animation);
527
+ this.onAnimationAddded.emit({ animation, contextId });
528
+ }
529
+ }
530
+
531
+ return animation;
532
+ }
533
+
534
+ /**
535
+ * Retrieves a custom animation context by its identifier.
536
+ * Returns null if the context doesn't exist.
537
+ *
538
+ * @param contextId - The context identifier to look up
539
+ * @returns The animation context Set or null if not found
540
+ *
541
+ * @example
542
+ * ```typescript
543
+ * // Check if context exists and get info
544
+ * const gameplayContext = gsapPlugin.getContext('gameplayAnimations');
545
+ * if (gameplayContext) {
546
+ * console.log(`Found ${gameplayContext.size} gameplay animations`);
547
+ *
548
+ * // Iterate through animations if needed
549
+ * gameplayContext.forEach(animation => {
550
+ * console.log('Animation progress:', animation.progress());
551
+ * });
552
+ * }
553
+ * ```
554
+ */
555
+ public getContext(contextId: string): AnimationContext | null {
556
+ return this._animationContexts.get(contextId) || null;
557
+ }
558
+
559
+ /**
560
+ * Plays all animations in the specified context or all contexts.
561
+ * Useful for resuming paused animations or ensuring all animations are active.
562
+ *
563
+ * @param contextId - Optional context identifier. If omitted, plays all animations in all contexts
564
+ *
565
+ * @example
566
+ * ```typescript
567
+ * // Resume specific context after pause
568
+ * gsapPlugin.playAll('menuAnimations');
569
+ *
570
+ * // Resume all animations (e.g., after app regains focus)
571
+ * gsapPlugin.playAll();
572
+ *
573
+ * // Conditional playback
574
+ * if (gameState === 'playing') {
575
+ * gsapPlugin.playAll('gameplayAnimations');
576
+ * }
577
+ * ```
578
+ */
579
+ public playAll(contextId?: string): void {
580
+ if (!contextId) {
581
+ this._animationContexts.forEach((context) =>
582
+ context.forEach((animation) => {
583
+ animation.play();
584
+ }),
585
+ );
586
+ } else {
587
+ this._animationContexts.get(contextId)?.forEach((animation) => {
588
+ animation.play();
589
+ });
590
+ }
591
+
592
+ this.onPlayAll.emit(contextId ?? 'all');
593
+ }
594
+
595
+ /**
596
+ * Pauses all animations in the specified context or all contexts.
597
+ * Animations retain their current progress and can be resumed with playAll().
598
+ *
599
+ * @param contextId - Optional context identifier. If omitted, pauses all animations in all contexts
600
+ *
601
+ * @example
602
+ * ```typescript
603
+ * // Pause game animations when menu opens
604
+ * gsapPlugin.pauseAll('gameplayAnimations');
605
+ *
606
+ * // Pause everything when app loses focus
607
+ * window.addEventListener('blur', () => {
608
+ * gsapPlugin.pauseAll();
609
+ * });
610
+ *
611
+ * // Conditional pausing
612
+ * if (gameState === 'paused') {
613
+ * gsapPlugin.pauseAll('gameplayAnimations');
614
+ * }
615
+ * ```
616
+ */
617
+ public pauseAll(contextId?: string): void {
618
+ if (!contextId) {
619
+ this._animationContexts.forEach((context) => context.forEach((animation) => animation.pause()));
620
+ } else {
621
+ this._animationContexts.get(contextId)?.forEach((animation) => animation.pause());
622
+ }
623
+
624
+ this.onPauseAll.emit(contextId ?? 'all');
625
+ }
626
+
627
+ /**
628
+ * Kills (stops and removes) all animations in the specified context or all contexts.
629
+ * Killed animations cannot be resumed and are removed from tracking.
630
+ * If killing all contexts, the global context is automatically recreated.
631
+ *
632
+ * @param contextId - Optional context identifier. If omitted, kills all animations in all contexts
633
+ *
634
+ * @example
635
+ * ```typescript
636
+ * // Kill animations when transitioning scenes
637
+ * gsapPlugin.killAll('currentSceneAnimations');
638
+ *
639
+ * // Emergency stop all animations
640
+ * gsapPlugin.killAll();
641
+ *
642
+ * // Clean up specific context before recreation
643
+ * gsapPlugin.killAll('temporaryEffects');
644
+ * ```
645
+ */
646
+ public killAll(contextId?: string): void {
647
+ if (!contextId) {
648
+ this._animationContexts.forEach((contextAnimations) => {
649
+ contextAnimations.forEach((animation) => animation.kill());
650
+ });
651
+ this._animationContexts.clear(); // Clear all tracked animations from all contexts
652
+ this.createGlobalContext(); // Re-initialize the global context and its tracking
653
+ } else {
654
+ const contextAnimations = this._animationContexts.get(contextId);
655
+ if (contextAnimations) {
656
+ contextAnimations.forEach((animation) => animation.kill());
657
+ }
658
+ this.clear(contextId); // Remove the specific context from tracking
659
+ }
660
+ this.onKillAll.emit(contextId ?? 'all');
661
+ }
662
+
663
+ /**
664
+ * Reverts all animations in the specified context or all contexts to their initial state.
665
+ * Animation targets return to their original property values before the animation started.
666
+ *
667
+ * @param contextId - Optional context identifier. If omitted, reverts all animations in all contexts
668
+ *
669
+ * @example
670
+ * ```typescript
671
+ * // Reset UI to initial state
672
+ * gsapPlugin.revertAll('uiAnimations');
673
+ *
674
+ * // Reset everything for game restart
675
+ * gsapPlugin.revertAll();
676
+ *
677
+ * // Reset temporary effects
678
+ * gsapPlugin.revertAll('screenEffects');
679
+ * ```
680
+ */
681
+ public revertAll(contextId?: string): void {
682
+ if (!contextId) {
683
+ this._animationContexts.forEach((context) => context.forEach((animation) => animation.revert()));
684
+ } else {
685
+ this._animationContexts.get(contextId)?.forEach((animation) => animation.revert());
686
+ }
687
+
688
+ this.onRevertAll.emit(contextId ?? 'all');
689
+ }
690
+
691
+ /**
692
+ * Clears (removes) a specific animation context from tracking.
693
+ * Optionally kills the animations before clearing the context.
694
+ *
695
+ * @param contextId - The context identifier to clear
696
+ * @param kill - Whether to kill animations before clearing (default: false)
697
+ *
698
+ * @example
699
+ * ```typescript
700
+ * // Clear completed level context
701
+ * gsapPlugin.clear('level1Animations');
702
+ *
703
+ * // Clear and kill animations simultaneously
704
+ * gsapPlugin.clear('temporaryEffects', true);
705
+ * ```
706
+ */
707
+ public clear(contextId: string, kill: boolean = false): void {
708
+ if (kill) {
709
+ this.killAll(contextId);
710
+ }
711
+ this._animationContexts.delete(contextId);
712
+
713
+ this.onClear.emit({ contextId, kill });
714
+ }
715
+
716
+ /**
717
+ * Clears all animation contexts and recreates the global context.
718
+ * Optionally kills all animations before clearing contexts.
719
+ *
720
+ * @param kill - Whether to kill all animations before clearing (default: false)
721
+ *
722
+ * @example
723
+ * ```typescript
724
+ * // Complete reset for new game
725
+ * gsapPlugin.clearAll(true);
726
+ *
727
+ * // Clear tracking without killing animations
728
+ * gsapPlugin.clearAll(false);
729
+ * ```
730
+ */
731
+ public clearAll(kill: boolean = false): void {
732
+ if (kill) {
733
+ this.killAll();
734
+ }
735
+ this._animationContexts.clear();
736
+ this.createGlobalContext(); // Re-initialize the global context tracking
737
+
738
+ this.onClearAll.emit(kill);
739
+ }
740
+
741
+ /**
742
+ * Kills all animations within the global animation context only.
743
+ * This affects only animations added to the global context, not other custom contexts.
744
+ *
745
+ * @example
746
+ * ```typescript
747
+ * // Kill only global animations, preserve context-specific ones
748
+ * gsapPlugin.killGlobal();
749
+ *
750
+ * // Useful for clearing background animations while keeping UI animations
751
+ * gsapPlugin.killGlobal();
752
+ * gsapPlugin.playAll('uiAnimations'); // UI animations continue
753
+ * ```
754
+ */
755
+ public killGlobal(): void {
756
+ const globalAnimations = this._animationContexts.get(GSAPPlugin.GLOBAL_CONTEXT_ID);
757
+ if (globalAnimations) {
758
+ globalAnimations.forEach((anim) => anim.kill());
759
+ globalAnimations.clear();
760
+ }
761
+
762
+ this.onKillGlobal.emit();
763
+ }
764
+
765
+ /**
766
+ * Reverts all animations within the global animation context to their initial state.
767
+ * Only affects animations in the global context, not custom contexts.
768
+ *
769
+ * @example
770
+ * ```typescript
771
+ * // Reset only global animations
772
+ * gsapPlugin.revertGlobal();
773
+ *
774
+ * // Reset global animations while preserving context states
775
+ * gsapPlugin.revertGlobal();
776
+ * // Context-specific animations remain unchanged
777
+ * ```
778
+ */
779
+ public revertGlobal(): void {
780
+ const globalAnimations = this._animationContexts.get(GSAPPlugin.GLOBAL_CONTEXT_ID);
781
+ if (globalAnimations) {
782
+ globalAnimations.forEach((anim) => anim.revert());
783
+ }
784
+
785
+ this.onRevertGlobal.emit();
786
+ }
787
+
788
+ /**
789
+ * Clears all animations from the global animation context.
790
+ * Optionally kills the animations before clearing from tracking.
791
+ *
792
+ * @param kill - Whether to kill animations before clearing (default: false)
793
+ *
794
+ * @example
795
+ * ```typescript
796
+ * // Clear global context without killing
797
+ * gsapPlugin.clearGlobal();
798
+ *
799
+ * // Clear and kill global animations
800
+ * gsapPlugin.clearGlobal(true);
801
+ * ```
802
+ */
803
+ public clearGlobal(kill: boolean = false): void {
804
+ if (kill) {
805
+ this.killGlobal();
806
+ }
807
+ this._globalContext.clear();
808
+
809
+ this.onClearGlobal.emit(kill);
810
+ }
811
+ }