@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
package/lib/caper.mjs ADDED
@@ -0,0 +1,1233 @@
1
+ import { $ as e, $t as t, A as n, At as r, B as i, Bt as a, C as o, Ct as s, D as c, Dt as l, E as u, Et as d, F as f, Ft as ee, G as te, Gt as ne, H as re, Ht as ie, I as ae, It as oe, J as se, Jt as ce, K as p, Kt as le, L as ue, Lt as de, M as fe, Mt as pe, N as me, Nt as m, O as he, Ot as ge, P as _e, Pt as ve, Q as ye, Qt as be, R as xe, Rt as Se, S as Ce, St as we, T as Te, Tt as Ee, U as De, Ut as Oe, V as ke, Vt as Ae, W as je, Wt as Me, X as Ne, Xt as Pe, Y as h, Yt as Fe, Z as Ie, Zt as g, _, _n as Le, _t as v, a as Re, an as ze, at as Be, b as Ve, bn as He, bt as Ue, c as We, cn as Ge, ct as y, d as Ke, dn as qe, dt as b, en as Je, et as Ye, f as Xe, fn as Ze, ft as x, g as Qe, gn as $e, gt as S, h as et, hn as tt, ht as nt, i as rt, in as it, it as at, j as ot, jt as st, k as ct, kt as lt, l as ut, ln as dt, lt as ft, m as pt, mn as mt, mt as C, n as ht, nn as gt, nt as _t, o as vt, on as yt, ot as bt, p as xt, pn as w, pt as St, q as Ct, qt as wt, r as T, rn as Tt, rt as Et, s as Dt, sn as E, st as Ot, t as kt, tn as At, tt as jt, u as Mt, un as Nt, ut as Pt, v as Ft, vn as It, vt as Lt, w as Rt, wt as zt, x as Bt, xn as Vt, xt as Ht, y as Ut, yn as D, yt as Wt, z as Gt, zt as Kt } from "./registries-CYCaYKZI.js";
2
+ import { r as qt, t as Jt } from "./DataAdapter-BY2114sp.js";
3
+ import { CanvasTextMetrics as O, Container as Yt, Graphics as k, Point as A, Polygon as Xt, Rectangle as Zt, Sprite as Qt, Texture as j, isMobile as M } from "pixi.js";
4
+ import { gsap as N } from "gsap";
5
+ //#region src/utils/array.ts
6
+ function $t(e) {
7
+ let t, n;
8
+ for (let r = 0; r < e.length; ++r) n = D(0, e.length), t = e[r], e[r] = e[n], e[n] = t;
9
+ }
10
+ function en(e) {
11
+ return e[D(0, e.length)];
12
+ }
13
+ //#endregion
14
+ //#region src/utils/canvas.ts
15
+ function tn(e) {
16
+ let t = e.getContext("webgl");
17
+ if (t) {
18
+ let e = t.getExtension("WEBGL_lose_context");
19
+ e && e.loseContext();
20
+ }
21
+ let n = e.getContext("2d");
22
+ n && n.clearRect(0, 0, e.width, e.height), e instanceof OffscreenCanvas || e.parentNode && e.parentNode.removeChild(e), e.width = 0, e.height = 0, e = null;
23
+ }
24
+ //#endregion
25
+ //#region src/utils/color.ts
26
+ function nn(e) {
27
+ return `#${e.toString(16)}`;
28
+ }
29
+ function rn(e) {
30
+ return parseInt(e.replace(/^#/, ""), 16);
31
+ }
32
+ var an = class e {
33
+ static {
34
+ this.WHITE = new e(255, 255, 255);
35
+ }
36
+ static {
37
+ this.BLACK = new e(0, 0, 0);
38
+ }
39
+ static {
40
+ this.GREY = new e(127, 127, 127);
41
+ }
42
+ static {
43
+ this.RED = new e(255, 0, 0);
44
+ }
45
+ static {
46
+ this.GREEN = new e(0, 255, 0);
47
+ }
48
+ static {
49
+ this.BLUE = new e(0, 0, 255);
50
+ }
51
+ static {
52
+ this.YELLOW = new e(255, 255, 0);
53
+ }
54
+ static {
55
+ this.MAGENTA = new e(255, 0, 255);
56
+ }
57
+ static {
58
+ this.CYAN = new e(0, 255, 255);
59
+ }
60
+ constructor(e, t, n) {
61
+ e !== void 0 && t === void 0 ? (this.r = (e & 255 << 16) >> 16, this.g = (e & 65280) >> 8, this.b = e & 255) : (this.r = e || 0, this.g = t || 0, this.b = n || 0);
62
+ }
63
+ static random() {
64
+ return new e(Math.random() * 255, Math.random() * 255, Math.random() * 255);
65
+ }
66
+ static rgbToHex(e, t, n) {
67
+ return e << 16 | t << 8 | n;
68
+ }
69
+ static rgbToHexString(e) {
70
+ let t = Number(e).toString(16);
71
+ return t.length < 2 && (t = "0" + t), t;
72
+ }
73
+ static rgbToFullHexString(t, n, r) {
74
+ let i = e.rgbToHexString(t), a = e.rgbToHexString(n), o = e.rgbToHexString(r);
75
+ return i + a + o;
76
+ }
77
+ static lerp(t, n, r) {
78
+ return new e(t.r + r * (n.r - t.r), t.g + r * (n.g - t.g), t.b + r * (n.b - t.b));
79
+ }
80
+ static lerpHex(t, n, r) {
81
+ let i = new e(t), a = new e(n);
82
+ return e.lerp(i, a, r).toHex();
83
+ }
84
+ toHex() {
85
+ return e.rgbToHex(this.r, this.g, this.b);
86
+ }
87
+ toHexString() {
88
+ return e.rgbToFullHexString(this.r, this.g, this.b);
89
+ }
90
+ toWebGL() {
91
+ return [
92
+ this.r / 255,
93
+ this.g / 255,
94
+ this.b / 255
95
+ ];
96
+ }
97
+ };
98
+ //#endregion
99
+ //#region src/utils/define.ts
100
+ function on(e) {
101
+ return e;
102
+ }
103
+ function sn(e) {
104
+ return e;
105
+ }
106
+ function cn(e) {
107
+ return e;
108
+ }
109
+ function ln(e) {
110
+ return e;
111
+ }
112
+ function un(e) {
113
+ return e;
114
+ }
115
+ //#endregion
116
+ //#region src/utils/pixi.ts
117
+ function dn(e, t) {
118
+ e.parent && e.parent.worldTransform.apply(e.position, e.position), t.worldTransform.applyInverse(e.position, e.position), e.parent?.removeChild(e), t.addChild(e);
119
+ }
120
+ function fn(e) {
121
+ return Math.sqrt(e.width * e.width + e.height * e.height);
122
+ }
123
+ function pn(e) {
124
+ let t = e.parent;
125
+ t && (t.removeChild(e), t.addChild(e));
126
+ }
127
+ function mn(e) {
128
+ let t = e.parent;
129
+ t && (t.removeChild(e), t.addChildAt(e, 0));
130
+ }
131
+ function hn(e, t) {
132
+ if (e instanceof Xt) {
133
+ for (let n = 0; n < e.points.length; n += 2) e.points[n] += t.x, e.points[n + 1] += t.y;
134
+ return e;
135
+ } else return e.x += t.x, e.y += t.y, e;
136
+ }
137
+ function gn(e, t) {
138
+ return e.x += t.x, e.y += t.y, e;
139
+ }
140
+ function P(e, t, n = "width") {
141
+ let r = n === "width" ? "y" : "x", i = n === "width" ? "x" : "y";
142
+ e[n] = t, e.scale[r] = e.scale[i];
143
+ }
144
+ function F(e, t) {
145
+ P(e, t, "width");
146
+ }
147
+ function I(e, t) {
148
+ P(e, t, "height");
149
+ }
150
+ function _n(e, t, n = "width") {
151
+ let i;
152
+ i = t?.width && t?.height ? {
153
+ x: t.width,
154
+ y: t.height
155
+ } : r(t), n === "width" ? (F(e, i.x), e.height < i.y && I(e, i.y)) : (I(e, i.y), e.width < i.x && F(e, i.x));
156
+ }
157
+ //#endregion
158
+ //#region src/utils/platform.ts
159
+ var vn = 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 || navigator?.maxTouchPoints > 0 : !1, R = M.any, z = M.android.device, yn = M.apple.device;
160
+ //#endregion
161
+ //#region src/utils/rect.ts
162
+ function bn(e, t) {
163
+ return e.x += t.x, e.y += t.y, e;
164
+ }
165
+ function xn(e, t) {
166
+ return t === void 0 && (t = new A()), t.set(e.x + e.width * .5, e.y + e.height * .5), t;
167
+ }
168
+ function Sn(e, t) {
169
+ return e.x *= t, e.y *= t, e.width *= t, e.height *= t, e;
170
+ }
171
+ function Cn(e, t) {
172
+ return t === void 0 && (t = new A()), t.set(e.width, e.height), t;
173
+ }
174
+ //#endregion
175
+ //#region src/utils/set.ts
176
+ function wn(e, t) {
177
+ let n = /* @__PURE__ */ new Set();
178
+ for (let r of e) t(r) && n.add(r);
179
+ return n;
180
+ }
181
+ function Tn(e) {
182
+ return e?.values().next().value;
183
+ }
184
+ function En(e) {
185
+ let t;
186
+ for (let n of e) t = n;
187
+ return t;
188
+ }
189
+ //#endregion
190
+ //#region src/utils/text.ts
191
+ function B(e, t) {
192
+ let n = O.measureText(e.text, e.style), r = n.lines, i = n.lineHeight, a = e.toLocal(new A(t.pageX, t.pageY)), o = 0, s = Infinity, c = 0;
193
+ for (let t = 0; t < r.length; t++) {
194
+ let n = r[t];
195
+ for (let r = 0; r <= n.length; r++) {
196
+ let l = n.substring(0, r), u = O.measureText(l, e.style).width, d = t * i, f = Math.hypot(u - a.x, d - a.y);
197
+ f < s && (s = f, o = c + r);
198
+ }
199
+ c += n.length;
200
+ }
201
+ return o;
202
+ }
203
+ //#endregion
204
+ //#region src/version.ts
205
+ var V = "0.1.0", H = "8.19.0", Dn = " ........ ..... ............ ............. ........... \n ............. ....... ................ ............. .............. \n .............. ......... ............... ............. .............. \n ..... ........... .............. ............ .............. \n ..... ...... ...... .............. ............. ............. \n .............. ...... ..... ............ ............. ..... ...... \n ................... ..... ..... ............. ..... ....... \n ................ .......... ............. ..... ..... ";
206
+ function U() {
207
+ let e = `\n${Dn}\n\n v${V} | %cPixi.js v${H} %c| %chttps://github.com/anthonysapp/caper\n\n`;
208
+ console.log(e, "color: #E91E63; font-weight: 600;", "color: inherit;", "color: #00BCD4; text-decoration: underline;");
209
+ }
210
+ //#endregion
211
+ //#region src/webgl-check.ts
212
+ function On() {
213
+ if (typeof document > "u") return;
214
+ let e = document.createElement("canvas");
215
+ e.getContext("webgl") || e.getContext("experimental-webgl") || console.error("Your browser does not support WebGL.");
216
+ }
217
+ //#endregion
218
+ //#region src/display/Entity.ts
219
+ var kn = class extends y {
220
+ constructor(e) {
221
+ super(), this.props = e ?? {};
222
+ }
223
+ }, An = class extends y {
224
+ get animationContext() {
225
+ return this._animationContext ?? `__scene_${this.id}`;
226
+ }
227
+ set animationContext(e) {
228
+ this._animationContext = e;
229
+ }
230
+ constructor() {
231
+ super({
232
+ autoResize: !0,
233
+ autoUpdate: !0,
234
+ priority: "highest"
235
+ }), this.autoUnloadAssets = !1;
236
+ }
237
+ get assets() {
238
+ return this._assets;
239
+ }
240
+ set assets(e) {
241
+ this._assets = e;
242
+ }
243
+ async initialize() {}
244
+ enter() {
245
+ return Promise.resolve();
246
+ }
247
+ exit() {
248
+ return Promise.resolve();
249
+ }
250
+ async start() {}
251
+ update(e) {}
252
+ resize(e) {}
253
+ destroy() {
254
+ this.app.ticker.remove(this.update), super.destroy({ children: !0 });
255
+ }
256
+ onPause(e) {}
257
+ onResume(e) {}
258
+ }, jn = class extends y {
259
+ get active() {
260
+ return this._active;
261
+ }
262
+ set active(e) {
263
+ this._active = e;
264
+ }
265
+ get progress() {
266
+ return this._progress;
267
+ }
268
+ set progress(e) {
269
+ this._progress = e;
270
+ }
271
+ constructor(e = !1) {
272
+ super({
273
+ autoResize: !0,
274
+ autoUpdate: !1,
275
+ priority: -9999
276
+ }), this.initialized = !1, this._active = !1, e && this.app.ticker.add(this._update), this.addSignalConnection(this.app.assets.onLoadStart.connect(this.handleLoadStart), this.app.assets.onLoadProgress.connect(this.handleLoadProgress), this.app.assets.onLoadProgress.connect(this.handleLoadComplete));
277
+ }
278
+ async initialize() {
279
+ return Promise.resolve();
280
+ }
281
+ resize(e) {}
282
+ destroy() {
283
+ this.app.ticker.remove(this._update), this.initialized = !1, this._active = !1, this._progress = 0, super.destroy();
284
+ }
285
+ async enter() {
286
+ return Promise.resolve();
287
+ }
288
+ async exit() {
289
+ return Promise.resolve();
290
+ }
291
+ handleLoadStart() {}
292
+ handleLoadProgress(e) {
293
+ this._progress = e;
294
+ }
295
+ handleLoadComplete() {}
296
+ _update(e) {
297
+ this.active && this.initialized && this.update(e);
298
+ }
299
+ }, Mn = class extends Yt {
300
+ constructor(e) {
301
+ return super({ isRenderGroup: !0 }), this.config = e, this.onZoom = new S(), this.onZoomComplete = new S(), 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), w(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.width, 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;
302
+ }
303
+ get zooming() {
304
+ return this._zooming;
305
+ }
306
+ get zoomLerp() {
307
+ return this._zoomLerp;
308
+ }
309
+ get targetPivot() {
310
+ return this._targetPivot;
311
+ }
312
+ get targetScale() {
313
+ return this._targetPivot;
314
+ }
315
+ get lerp() {
316
+ return this._lerp;
317
+ }
318
+ set lerp(e) {
319
+ if (e < 0 || e > 1) throw Error("Camera lerp value must be in the range [0, 1]");
320
+ this._lerp = Math.max(0, Math.min(e, 1));
321
+ }
322
+ get target() {
323
+ return this._target;
324
+ }
325
+ set target(e) {
326
+ this._target = e, this._target && this.focusOn(this._target);
327
+ }
328
+ get followOffset() {
329
+ return this._followOffset;
330
+ }
331
+ set followOffset(e) {
332
+ this._followOffset = r(e, !0);
333
+ }
334
+ get app() {
335
+ return T.getInstance();
336
+ }
337
+ follow(e, t) {
338
+ t ||= {
339
+ x: 0,
340
+ y: 0
341
+ }, this.followOffset = t, this.target = e;
342
+ }
343
+ pan(e, t) {
344
+ let n = this.pivot.x + e, r = this.pivot.y + t;
345
+ n = Math.max(this.minX, Math.min(n, this.maxX)), r = Math.max(this.minY, Math.min(r, this.maxY)), this._targetPivot.set(n, r);
346
+ }
347
+ zoom(e, t = .1) {
348
+ this._zoomLerp = t, this._zooming = !0, this._targetScale.set(e, e);
349
+ }
350
+ update() {
351
+ this.updateZoom(), this._target && this.focusOn(this._target), this.updatePosition(this._zooming), this._zooming && Math.abs(this.scale.x - this._targetScale.x) < .001 && Math.abs(this.scale.y - this._targetScale.y) < .001 ? (this.onZoom.emit(this), this._zooming = !1, this.scale.set(this._targetScale.x, this._targetScale.y), this.onZoomComplete.emit(this)) : this._zooming && this.onZoom.emit(this);
352
+ }
353
+ focusOn(e) {
354
+ let t = e.getGlobalPosition(), n = this.toLocal(t), r = this.position.x / this.scale.x - this.viewportWidth / 2, i = this.position.y / this.scale.y - this.viewportHeight / 2, a = this.followOffset.x / this.scale.x, o = this.followOffset.y / this.scale.y;
355
+ this._targetPivot.x = (n.x * this.scale.x + this.viewportWidth / 2) * (1 / this.scale.x) + a;
356
+ let s = this.viewportWidth / this.scale.x / 2 + r + this.minX - a, c = this.worldWidth - this.viewportWidth / this.scale.x / 2 + r + this.maxX + a;
357
+ this._targetPivot.x < s ? this._targetPivot.x = s : this._targetPivot.x > c && (this._targetPivot.x = c), this._targetPivot.y = (n.y * this.scale.y + this.viewportHeight / 2) * (1 / this.scale.y) + o;
358
+ let l = this.viewportHeight / this.scale.y / 2 + i + this.minY - o, u = this.worldHeight - this.viewportHeight / this.scale.y / 2 + i + this.maxY - o;
359
+ this._targetPivot.y < l ? this._targetPivot.y = l : this._targetPivot.y > u && (this._targetPivot.y = u);
360
+ }
361
+ updateZoom() {
362
+ let e = this.scale.x, t = this.scale.y, n = e + this._zoomLerp * (this._targetScale.x - e), r = t + this._zoomLerp * (this._targetScale.y - t);
363
+ this.scale.set(Math.max(0, n), Math.max(0, r));
364
+ }
365
+ updatePosition(e = !1) {
366
+ if (this.lerp > 0 && !e) {
367
+ let e = this.pivot.x, t = this.pivot.y, n = e + this.lerp * (this._targetPivot.x - e), r = t + this.lerp * (this._targetPivot.y - t);
368
+ this.pivot.set(n, r);
369
+ } else this.pivot.set(this._targetPivot.x, this._targetPivot.y);
370
+ this.position.set(this.viewportWidth / 2, this.viewportHeight / 2);
371
+ }
372
+ }, Nn = class {
373
+ constructor(e, t) {
374
+ this.camera = e, this.interactiveArea = t, this.dragging = !1, this.previousPointerPosition = null, w(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));
375
+ }
376
+ get app() {
377
+ return T.getInstance();
378
+ }
379
+ destroy() {
380
+ this.interactiveArea.removeAllListeners(), this.app.stage.off("pointerup", this.onPointerUp.bind(this)), this.app.stage.off("pointerupoutside", this.onPointerUp.bind(this));
381
+ }
382
+ handleKeyDown(e) {
383
+ let t = 1.1;
384
+ switch (e.event.key) {
385
+ case "ArrowUp":
386
+ this.camera.pan(0, -10);
387
+ break;
388
+ case "ArrowDown":
389
+ this.camera.pan(0, 10);
390
+ break;
391
+ case "ArrowLeft":
392
+ this.camera.pan(-10, 0);
393
+ break;
394
+ case "ArrowRight":
395
+ this.camera.pan(10, 0);
396
+ break;
397
+ case "+":
398
+ this.camera.zoom(t);
399
+ break;
400
+ case "-":
401
+ this.camera.zoom(1 / t);
402
+ break;
403
+ }
404
+ }
405
+ onPointerDown(e) {
406
+ this.dragging = !0, this.previousPointerPosition = this.getEventPosition(e);
407
+ }
408
+ onPointerMove(e) {
409
+ if (!this.dragging || !this.previousPointerPosition) return;
410
+ let t = this.getEventPosition(e), n = t.x - this.previousPointerPosition.x, r = t.y - this.previousPointerPosition.y;
411
+ this.camera.pan(n, r), this.previousPointerPosition = t;
412
+ }
413
+ onPointerUp() {
414
+ this.dragging = !1, this.previousPointerPosition = null;
415
+ }
416
+ getEventPosition(e) {
417
+ return e instanceof TouchEvent ? new A(e.touches[0].clientX, e.touches[0].clientY) : new A(e.clientX, e.clientY);
418
+ }
419
+ }, W = {
420
+ value: "",
421
+ type: "text",
422
+ fixed: !0,
423
+ pattern: "",
424
+ debug: !1,
425
+ minWidth: 200,
426
+ padding: {
427
+ top: 0,
428
+ left: 0,
429
+ bottom: 0,
430
+ right: 0
431
+ },
432
+ blurOnEnter: !0,
433
+ style: {
434
+ fontFamily: "Arial",
435
+ fill: "#000000",
436
+ fontSize: 20,
437
+ fontWeight: "bold"
438
+ },
439
+ bg: {
440
+ radius: 5,
441
+ fill: { color: 16777215 },
442
+ stroke: {
443
+ width: 1,
444
+ color: 0
445
+ }
446
+ },
447
+ placeholder: {},
448
+ selection: { color: 65280 },
449
+ caret: {
450
+ color: 0,
451
+ alpha: .8
452
+ },
453
+ focusOverlay: {
454
+ activeFilter: !1,
455
+ scale: 1,
456
+ marginTop: 60
457
+ }
458
+ }, Pn = [
459
+ "text",
460
+ "password",
461
+ "number",
462
+ "email",
463
+ "tel",
464
+ "url"
465
+ ], Fn = class e extends x(b(C(y))) {
466
+ constructor(e, t = !1, n = null) {
467
+ if (super({
468
+ autoUpdate: !0,
469
+ autoResize: !t
470
+ }), this.isClone = t, this.clone = n, this.onEnter = new S(), this.onChange = new S(), this.onError = new S(), this._lastWidth = 0, this._lastHeight = 0, this._placeholderPositioned = !1, this._placeholderAnimating = !1, this._caretPosition = -1, this._value = "", this.options = {
471
+ ...W,
472
+ ...e,
473
+ style: {
474
+ ...W.style,
475
+ ...e?.style ?? {}
476
+ },
477
+ padding: m(e.padding ?? W.padding),
478
+ bg: {
479
+ ...W.bg,
480
+ ...e.bg ?? {}
481
+ },
482
+ focusOverlay: {
483
+ ...W.focusOverlay,
484
+ ...e.focusOverlay ?? {}
485
+ }
486
+ }, this.options.layout && typeof this.options.layout == "object" ? this.layout = { ...this.options.layout } : this.layout = { transformOrigin: "top left" }, this.options.placeholder || (this.options.placeholder = { color: Number(this.options.style?.fill) ?? 6710886 }), this._inner = this.add.container({ layout: {
487
+ position: "relative",
488
+ top: 0,
489
+ left: 0,
490
+ width: "100%",
491
+ height: "100%"
492
+ } }), this.addBg(), this._inputContainer = this._inner.add.container({
493
+ y: -2,
494
+ layout: {
495
+ position: "absolute",
496
+ transformOrigin: "top left",
497
+ inset: 0,
498
+ width: "100%",
499
+ height: "100%"
500
+ }
501
+ }), this._placeholderContainer = this._inner.add.container({
502
+ y: -2,
503
+ layout: {
504
+ position: "absolute",
505
+ inset: 0,
506
+ transformOrigin: "top left",
507
+ width: "100%",
508
+ height: "100%"
509
+ }
510
+ }), this._placeholderContainer.eventMode = "none", this.addSelection(), this.addCaret(), this.addInput(), this.addPlaceholder(), this.placeholder.text = this.options.placeholder.text || `Enter ${this.options.type}`, this.input.eventMode = this.placeholder.eventMode = "none", L && this.addSignalConnection(this.onInteraction("pointertap").connect(this.handleClick, -1)), this.addSignalConnection(this.onInteraction("click").connect(this.handleClick, -1)), this.options.fixed) {
511
+ let e = this.isClone ? this.clone?.options?.focusOverlay?.scale ?? 1 : 1;
512
+ this._mask = this._inner.add.graphics().rect(0, 0, this.bg.width * e - this.options.padding.left - this.options.padding.right, this.bg.height * e - this.options.padding.top - this.options.padding.bottom).fill({ color: 0 }), this._inputContainer.mask = this._mask;
513
+ }
514
+ }
515
+ get caretPosition() {
516
+ return this._caretPosition;
517
+ }
518
+ get selectionRect() {
519
+ return this._selectionRect;
520
+ }
521
+ set regex(e) {
522
+ this._regex = e;
523
+ }
524
+ get isValid() {
525
+ let e = !1;
526
+ if (this.domElement) if (this._regex) e = this._regex.test(this._value);
527
+ else {
528
+ if (this.options.type === "text") return !0;
529
+ this.domElement.required = !0, e = this.domElement.checkValidity(), this.domElement.required = !1;
530
+ }
531
+ return e;
532
+ }
533
+ get value() {
534
+ return this._value?.trim() ?? "";
535
+ }
536
+ set value(e) {
537
+ if (this.domElement) {
538
+ this.domElement.value = e;
539
+ let t = new Event("input", {
540
+ bubbles: !0,
541
+ cancelable: !0
542
+ });
543
+ this.domElement.dispatchEvent(t);
544
+ } else this._value = e, this.input.text = e;
545
+ }
546
+ resize() {
547
+ super.resize(), this.cloneOverlay && this._positionCloneOverlay();
548
+ }
549
+ resetBg() {
550
+ this.drawBg();
551
+ }
552
+ added() {
553
+ super.added(), this.isClone && this.showCursor();
554
+ }
555
+ handleClick(e) {
556
+ if (e?.originalEvent?.key) return;
557
+ clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer);
558
+ let t = e ? B(this.input, e) : this.input.text?.length ?? 0;
559
+ this.createDomElement(t);
560
+ }
561
+ focusIn() {
562
+ this.handleClick();
563
+ }
564
+ _focusDomElement(e) {
565
+ this._focusTimer = setTimeout(() => {
566
+ this._triggerFocusAndSelection(e);
567
+ }, 100);
568
+ }
569
+ _triggerFocusAndSelection(e) {
570
+ if (this.domElement) {
571
+ try {
572
+ this.domElement.focus(), this.domElement.click(), e === void 0 ? this.domElement.selectionStart = this.domElement?.value?.length : this.domElement.setSelectionRange(e, e, "none");
573
+ } catch {}
574
+ this._updateCaretAndSelection();
575
+ }
576
+ }
577
+ _checkPointerDownOutside(e) {
578
+ let t = this.toLocal(e.data.global);
579
+ this.getBounds().rectangle.contains(t.x, t.y) ? this.focusIn() : this.focusOut();
580
+ }
581
+ focusOut() {
582
+ this.domElement?.blur();
583
+ }
584
+ update() {
585
+ this.bg.x = 0, this.bg.y = 0;
586
+ let e = this.input.getLocalBounds().y + this.input.style.fontSize + this.options.padding.top + this.options.padding.bottom, t = this.options.fixed ? this.options.minWidth : Math.max(this.options.minWidth, this.input.width) + this.options.padding.left + this.options.padding.right, n = this.options.minWidth - t + this.options.padding.left + this.options.padding.right, i = t - this.options.padding.left - this.options.padding.right;
587
+ switch (this.input.style.align) {
588
+ case "center":
589
+ if (this.input.x = t / 2 - this.input.width / 2, this._placeholderPositioned || (this.placeholder.x = t / 2 - this.placeholder.width / 2), this._inner.x = n >= 0 ? 0 : n / 2, this.options.fixed) {
590
+ let e = this.input.width - i;
591
+ e > 0 && (this.input.x -= e / 2);
592
+ }
593
+ break;
594
+ case "right":
595
+ this.input.x = t - this.options.padding.right - this.input.width, this._placeholderPositioned || (this.placeholder.x = t - this.options.padding.right - this.placeholder.width), this._inner.x = n >= 0 ? 0 : n;
596
+ break;
597
+ default:
598
+ if (this.input.x = this.options.padding.left, this._placeholderPositioned || (this.placeholder.x = this.options.padding.left), this._inner.x = 0, this.options.fixed) {
599
+ let e = this.input.width - i;
600
+ e > 0 && (this.input.x -= e);
601
+ }
602
+ break;
603
+ }
604
+ if (this.input.y = this.options.padding.top, this._placeholderPositioned || (this.placeholder.y = this.input.y), this.isClone && this.clone) {
605
+ let e = this.clone.options?.focusOverlay?.scale ?? 1;
606
+ this.error = this.clone.error, this._value = this.clone.input.text, this.input.text = this._value, this._selectionRect = this.clone.selectionRect.clone(), this._selectionRect.x *= e, this._selectionRect.y *= e, this._selectionRect.width *= e, this._selectionRect.height *= e, this._caretPosition = this.clone.caretPosition * e;
607
+ }
608
+ if (this.caret.x = this._caretPosition >= 0 ? this.input.x + this._caretPosition : this.input.x + this.input.width + 1, this.caret.y = this.input.y - 2, this.caret.height = this.input.style.fontSize * 1.15, this.value === "") {
609
+ if (this.placeholder.visible = !0, !this.isClone && this._placeholderPositioned && !this._placeholderAnimating) {
610
+ this._placeholderAnimating = !0;
611
+ let e = this.input.x, t = this.input.y;
612
+ this.options.placeholder.animationOnType ? this.addAnimation([N.to(this.placeholder, {
613
+ x: e,
614
+ y: t,
615
+ tint: 16777215,
616
+ alpha: this.options.placeholder.alpha ?? 1,
617
+ duration: this.options.placeholder.animationOnType.duration || .4,
618
+ ease: this.options.placeholder.animationOnType.ease || "sine.in",
619
+ overwrite: !0,
620
+ onComplete: () => {
621
+ this._placeholderPositioned = !1, this._placeholderAnimating = !1;
622
+ }
623
+ }), N.to(this.placeholder.scale, {
624
+ x: 1,
625
+ y: 1,
626
+ duration: this.options.placeholder.animationOnType.duration || .4,
627
+ ease: this.options.placeholder.animationOnType.ease || "sine.out",
628
+ overwrite: !0
629
+ })]) : (this.placeholder.x = e, this.placeholder.y = t, this.placeholder.scale.set(1, 1), this._placeholderPositioned = !1, this._placeholderAnimating = !1);
630
+ }
631
+ } else if (!this.isClone && this.options.placeholder.positionOnType) {
632
+ if (this.placeholder.visible = !0, !this._placeholderPositioned) {
633
+ this._placeholderPositioned = !0;
634
+ let e = this.placeholder.x, t = this.placeholder.y;
635
+ switch (this.options.placeholder.positionOnType) {
636
+ case "top":
637
+ t = this.input.y - this.placeholder.height - this.options.padding.top;
638
+ break;
639
+ case "bottom":
640
+ t = this.input.y + this.input.height + this.options.padding.bottom;
641
+ break;
642
+ }
643
+ if (this.options.placeholder.offsetOnType) {
644
+ let n = r(this.options.placeholder.offsetOnType);
645
+ e += n.x, t += n.y;
646
+ }
647
+ if (this.options.placeholder.animationOnType) {
648
+ if (this.addAnimation(N.to(this.placeholder, {
649
+ x: e,
650
+ y: t,
651
+ duration: this.options.placeholder.animationOnType.duration || .4,
652
+ ease: this.options.placeholder.animationOnType.ease || "none",
653
+ tint: this.options.placeholder.animationOnType.tint ?? null,
654
+ alpha: this.options.placeholder.animationOnType.alpha ?? this.options.placeholder.alpha ?? 1,
655
+ overwrite: !0
656
+ })), this.options.placeholder.scaleOnType) {
657
+ let e = r(this.options.placeholder.scaleOnType);
658
+ this.addAnimation(N.to(this.placeholder.scale, {
659
+ x: e.x,
660
+ y: e.y,
661
+ duration: this.options.placeholder.animationOnType.duration || .4,
662
+ ease: this.options.placeholder.animationOnType.ease || "none",
663
+ overwrite: !0
664
+ }));
665
+ }
666
+ } else this.placeholder.x = e, this.placeholder.y = t;
667
+ }
668
+ } else this.placeholder.visible = !1;
669
+ if (this.options.fixed) {
670
+ let n = this.isClone ? this.options?.focusOverlay?.scale ?? 1 : 1;
671
+ this._mask && (this._mask.clear().rect(0, 0, (t - this.options.padding.left - this.options.padding.right) * n, e * n).fill({ color: 0 }), this._mask.position.set(this.options.padding.left * n, 0));
672
+ }
673
+ t !== this._lastWidth && this.drawBg(t, e), this._selectionRect ? this.drawSelection() : this.selectionGraphics?.clear(), this.cloneOverlay && this._positionCloneOverlay();
674
+ }
675
+ drawSelection() {
676
+ let e = this._selectionRect;
677
+ if (!e) {
678
+ this.selectionGraphics?.clear();
679
+ return;
680
+ }
681
+ this.selectionGraphics?.clear(), this.selectionGraphics.rect(e.left + this.input.x, this.caret.y, e.width, this.caret.height).fill({ color: this.options.selection.color });
682
+ }
683
+ drawBg(e = this._lastWidth, t = this._lastHeight) {
684
+ let n = (this.error || this.isClone && this.clone?.error) && this.options?.error?.bg ? {
685
+ ...this.options.bg,
686
+ ...this.options.error.bg
687
+ } : this.options.bg;
688
+ this.bg.clear().roundRect(0, 0, e, t, n?.radius ?? 0).fill(n.fill).stroke({
689
+ ...n?.stroke || {},
690
+ alignment: 0
691
+ }), this._lastWidth = e, this._lastHeight = t;
692
+ }
693
+ destroy() {
694
+ console.log("input destroy", this), clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer), this.app.stage.off("pointerdown", this._checkPointerDownOutside), this.hideCursor(), this.destroyDomElement(), super.destroy();
695
+ }
696
+ addBg() {
697
+ this.bg = this._inner.add.graphics().roundRect(0, 0, 100, 50, this.options?.bg?.radius ?? 0).fill(this.options.bg.fill);
698
+ }
699
+ addSelection() {
700
+ this.selectionGraphics = this._inputContainer.add.graphics();
701
+ }
702
+ addCaret() {
703
+ this.caret = this._inputContainer.add.sprite({
704
+ asset: j.WHITE,
705
+ width: 3,
706
+ height: 10,
707
+ tint: this.options.caret.color ?? 0,
708
+ alpha: 0,
709
+ visible: !1
710
+ });
711
+ }
712
+ addInput() {
713
+ this._value = this.options.value ?? "", this.input = this._inputContainer.add.text({
714
+ ...this.options,
715
+ style: {
716
+ ...this.options?.style || {},
717
+ padding: 2
718
+ },
719
+ text: this.options.value ?? "",
720
+ label: "input",
721
+ resolution: 2,
722
+ roundPixels: !0,
723
+ layout: !1
724
+ });
725
+ }
726
+ addPlaceholder() {
727
+ this.placeholder = this._placeholderContainer.add.text({
728
+ ...this.options,
729
+ ...this.options.placeholder,
730
+ style: {
731
+ ...this.options.style,
732
+ fill: this.options.placeholder?.color ?? 6710886
733
+ },
734
+ resolution: 2,
735
+ label: "placeholder",
736
+ roundPixels: !0,
737
+ layout: !0
738
+ }), this.placeholder.style.align = this.input.style.align;
739
+ }
740
+ createDomElement(e) {
741
+ if (this.isClone && this.clone?.domElement) {
742
+ this.domElement = this.clone.domElement, this._addDomElementListeners();
743
+ return;
744
+ }
745
+ clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer), this.domElement = document.createElement("input"), this.domElement.type = "text", this.options.type && Pn.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);
746
+ let t = this.getGlobalPosition(), n = this.getBounds();
747
+ 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);
748
+ }
749
+ destroyDomElement() {
750
+ this.isClone || (this.domElement &&= (this._removeDomElementListeners(), this.domElement.remove(), this.domElement.parentNode && this.domElement.parentNode.removeChild(this.domElement), null));
751
+ }
752
+ showCursor() {
753
+ this.caret.visible = !0, this.blinkCaret();
754
+ }
755
+ hideCursor() {
756
+ this.cursorAnimation?.kill(), this.caret.visible = !1;
757
+ }
758
+ blinkCaret() {
759
+ this.cursorAnimation && this.cursorAnimation.kill(), this.cursorAnimation = N.fromTo(this.caret, { alpha: 0 }, {
760
+ duration: .5,
761
+ alpha: 1,
762
+ yoyo: !0,
763
+ repeat: -1,
764
+ overwrite: !0
765
+ }), this.addAnimation(this.cursorAnimation);
766
+ }
767
+ validate() {
768
+ let e = this.error;
769
+ this.isClone ? this.error = this.clone?.error || !1 : (this.error = !this.isValid, this.error && this.error !== e && this.onError.emit({
770
+ input: this,
771
+ domElement: this.domElement,
772
+ value: this._value
773
+ })), this.error !== e && (this.error && this.error !== e ? this.input.style.fill = this.options?.error?.input?.fill || 0 : this.input.style.fill = this.options.input?.style?.fill || 0, this.drawBg()), this.cloneOverlay && this.cloneOverlay.validate();
774
+ }
775
+ _removeDomElementListeners() {
776
+ this.domElement.removeEventListener("focus", this._handleDomElementFocus, !1), this.domElement.removeEventListener("blur", this._handleDomElementBlur, !1), this.domElement.removeEventListener("input", this._handleDomElementChange, !1), this.domElement.removeEventListener("keyup", this._handleDomElementKeyup, !1), this.domElement.removeEventListener("keydown", this._handleDomElementKeydown, !1);
777
+ }
778
+ _addDomElementListeners() {
779
+ this.isClone || (this._removeDomElementListeners(), this.domElement.addEventListener("focus", this._handleDomElementFocus, !1), this.domElement.addEventListener("blur", this._handleDomElementBlur, !1), this.domElement.addEventListener("input", this._handleDomElementChange, !1), this.domElement.addEventListener("keyup", this._handleDomElementKeyup, !1), this.domElement.addEventListener("keydown", this._handleDomElementKeydown, !1));
780
+ }
781
+ _handleFocus() {
782
+ if (this._caretPosition = -1, this.showCursor(), clearTimeout(this._pointerDownTimer), !this.isClone) {
783
+ this._pointerDownTimer = setTimeout(() => {
784
+ this.app.stage.on("pointerdown", this._checkPointerDownOutside);
785
+ }, 250);
786
+ let t = !!this.options.focusOverlay.activeFilter;
787
+ if (t) {
788
+ this.cloneOverlay && this._removeCloneOverlay();
789
+ let n = Array.isArray(this.options.focusOverlay.activeFilter), r = !1;
790
+ if (n) {
791
+ let e = this.options.focusOverlay.activeFilter;
792
+ (R && e.includes("mobile") || L && e.includes("touch") || !R && !L && e.includes("desktop")) && (r = !0);
793
+ } else r = typeof this.options.focusOverlay.activeFilter == "function" ? this.options.focusOverlay.activeFilter() : t;
794
+ if (r) {
795
+ let t = structuredClone(this.options), n = this.options.focusOverlay?.scale || 1;
796
+ t.focusOverlay = { activeFilter: !1 };
797
+ let r = Number(t.style?.fontSize || W.style?.fontSize || 20) * n;
798
+ if (t.style ||= {}, t.style.fontSize = r, t.padding && (t.padding.left *= n, t.padding.top *= n, t.padding.right *= n, t.padding.bottom *= n), t.bg?.radius && (t.bg.radius *= n), t.bg?.stroke?.width && (t.bg.stroke.width *= n), t.minWidth && (t.minWidth *= n, t.minWidth > this.app.size.width && (t.minWidth = this.app.size.width - (t.bg?.stroke?.width ? t.bg.stroke.width * 2 + 20 : 20))), this.options.focusOverlay?.backing?.active) {
799
+ let e = this.make.sprite({
800
+ asset: j.WHITE,
801
+ tint: this.options.focusOverlay.backing.options?.color ?? 0,
802
+ alpha: this.options.focusOverlay.backing.options?.alpha ?? .8,
803
+ width: this.app.size.width,
804
+ height: this.app.size.height,
805
+ eventMode: "static"
806
+ });
807
+ this.overlayBacking = this.app.stage.addChild(e);
808
+ }
809
+ this.cloneOverlay = new e(t, !0, this), this.cloneOverlay.label = `${this.label} -- clone`, this.cloneOverlay.alpha = 0, this.cloneOverlay.input.text = this.value, this.cloneOverlay.validate(), this.app.stage.addChild(this.cloneOverlay), this._positionCloneOverlay(), this._showCloneOverlay();
810
+ }
811
+ }
812
+ }
813
+ }
814
+ _showCloneOverlay() {
815
+ this.cloneOverlay.pivot.y = -20, this.addAnimation(N.to(this.cloneOverlay, {
816
+ duration: .5,
817
+ alpha: .8,
818
+ ease: "sine.out",
819
+ delay: .1
820
+ })), this.addAnimation(N.to(this.cloneOverlay.pivot, {
821
+ duration: .5,
822
+ y: 0,
823
+ ease: "sine.out",
824
+ delay: .1
825
+ }));
826
+ }
827
+ _positionCloneOverlay() {
828
+ if (!this.cloneOverlay) return;
829
+ let e = this.cloneOverlay.options.minWidth;
830
+ this.cloneOverlay.x = this.app.size.width * .5 - e * .5, this.cloneOverlay.y = this.options.focusOverlay?.marginTop || 20, this.overlayBacking && (this.overlayBacking.width = this.app.size.width, this.overlayBacking.height = this.app.size.height);
831
+ }
832
+ _removeCloneOverlay() {
833
+ this.overlayBacking?.destroy(), this.overlayBacking?.parent?.removeChild(this.overlayBacking), this.overlayBacking = null, this.cloneOverlay?.destroy(), this.cloneOverlay?.parent?.removeChild(this.cloneOverlay), this.cloneOverlay = null;
834
+ }
835
+ _handleDomElementFocus() {
836
+ this.app.stage.off("pointerdown", this._checkPointerDownOutside), this._handleFocus();
837
+ }
838
+ _handleDomElementBlur() {
839
+ this.isClone || (clearTimeout(this._focusTimer), clearTimeout(this._pointerDownTimer), this.hideCursor(), this._removeCloneOverlay(), this.destroyDomElement());
840
+ }
841
+ _handleDomElementKeyup() {
842
+ this._updateCaretAndSelection();
843
+ }
844
+ _handleDomElementKeydown(e) {
845
+ this._updateCaretAndSelection(), !this.isClone && e.key === "Enter" && (this.options.blurOnEnter && this.domElement.blur(), this.onEnter.emit({
846
+ input: this,
847
+ value: this._value,
848
+ domElement: this.domElement
849
+ }));
850
+ }
851
+ _updateCaretAndSelection() {
852
+ if (!this.domElement) {
853
+ E.warn(this.label, "No dom element");
854
+ return;
855
+ }
856
+ let e = this.domElement.selectionStart || 0, t = this.domElement.selectionEnd || -1, n = this.domElement.selectionDirection, r = "", i = this.options.type === "password" ? this.input.text : this._value;
857
+ if (t === void 0) r = i.substring(0, e), this._caretPosition = O.measureText(r, this.input.style).width, this._selectionRect = null;
858
+ else {
859
+ r = i.substring(e > t ? t : e, e > t ? e : t);
860
+ let a = i.substring(0, e > t ? t : e), o = O.measureText(a, this.input.style), s = O.measureText(r, this.input.style);
861
+ this._selectionRect = new Zt(o.width, 0, s.width, this.input.height), this._caretPosition = n === "backward" ? this._selectionRect.left : this._selectionRect.left + this._selectionRect.width;
862
+ }
863
+ }
864
+ _handleDomElementChange(e) {
865
+ let t = e.target;
866
+ if (t && !this.domElement && (this.domElement = t), this.options.pattern !== "") {
867
+ let e = t.value.replace(new RegExp(this.options.pattern, "g"), "");
868
+ t.value = e, this._value = e;
869
+ } else this._value = t.value;
870
+ this.input.text = this.options.type === "password" ? this._value?.split("").map(() => "*").join("") : this._value, this._updateCaretAndSelection(), this.isClone || (this.onChange.emit({
871
+ input: this,
872
+ domElement: this.domElement,
873
+ value: this._value
874
+ }), this.validate());
875
+ }
876
+ getFocusArea() {
877
+ let e = this._inputContainer.getBounds();
878
+ return e.width = this._lastWidth, e.height = this._lastHeight, e;
879
+ }
880
+ };
881
+ //#endregion
882
+ //#region src/plugins/actions/methods.ts
883
+ function In(e) {
884
+ return e ?? p;
885
+ }
886
+ function Ln(e, t, n = !0) {
887
+ return n && (t = {
888
+ ...h,
889
+ ...t
890
+ }), t;
891
+ }
892
+ function Rn(e) {
893
+ return e || [];
894
+ }
895
+ //#endregion
896
+ //#region src/plugins/breakpoints/methods.ts
897
+ function zn(e) {
898
+ return {
899
+ tiers: e.tiers,
900
+ modes: e.modes ?? {}
901
+ };
902
+ }
903
+ //#endregion
904
+ //#region src/plugins/input/touch/constants.ts
905
+ var G = /* @__PURE__ */ function(e) {
906
+ 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;
907
+ }({}), Bn = [
908
+ G.None,
909
+ G.Left,
910
+ G.Top,
911
+ G.Bottom,
912
+ G.Right,
913
+ G.TopLeft,
914
+ G.TopRight,
915
+ G.BottomLeft,
916
+ G.BottomRight
917
+ ];
918
+ //#endregion
919
+ //#region src/plugins/input/methods.ts
920
+ function Vn(e, t, n) {
921
+ return n || [];
922
+ }
923
+ //#endregion
924
+ //#region src/ui/Joystick.ts
925
+ var Hn = class extends y {
926
+ constructor(e) {
927
+ if (super(), this.onChange = new S(), this.onStart = new S(), this.onEnd = new S(), this.onDestroy = new S(), this.outerRadius = 0, this.innerRadius = 0, this.innerAlphaStandby = .5, this.dragging = !1, this.pointData = new A(), this.direction = G.None, this.settings = Object.assign({
928
+ outerScale: 1,
929
+ innerScale: 1
930
+ }, e), !this.settings.outer) {
931
+ let e = new k();
932
+ e.circle(0, 0, 60).fill({ color: 0 }), e.alpha = .5, this.settings.outer = e;
933
+ }
934
+ if (!this.settings.inner) {
935
+ let e = new k();
936
+ e.circle(0, 0, 35).fill({ color: 0 }), e.alpha = this.innerAlphaStandby, this.settings.inner = e;
937
+ }
938
+ this.threshold = this.settings.threshold ?? .01, this.initialize();
939
+ }
940
+ initialize() {
941
+ this.outer = this.settings.outer, this.inner = this.settings.inner, this.outer.scale.set(this.settings.outerScale, this.settings.outerScale), this.inner.scale.set(this.settings.innerScale, this.settings.innerScale), "anchor" in this.outer && this.outer.anchor.set(.5), "anchor" in this.inner && this.inner.anchor.set(.5), this.add.existing(this.outer), this.add.existing(this.inner), this.outerRadius = this.width / 2.5, this.innerRadius = this.inner.width / 2, this.bindEvents();
942
+ }
943
+ handleDragMove(e) {
944
+ if (!this.dragging || e.pointerId !== this._pointerId) return;
945
+ let t = this.toLocal(e.global), n = t.x - this.startPosition.x, r = t.y - this.startPosition.y, i = new A(0, 0), a = 0, o = G.None;
946
+ if (n == 0 && r == 0) {
947
+ this.direction = o;
948
+ return;
949
+ }
950
+ if (n === 0 && (r > 0 ? (i.set(0, r > this.outerRadius ? this.outerRadius : r), a = 270, o = G.Bottom) : (i.set(0, -(Math.abs(r) > this.outerRadius ? this.outerRadius : Math.abs(r))), a = 90, o = G.Top), this.inner.position.set(i.x, i.y), this.power = this.getPower(i), this.power >= this.threshold)) {
951
+ this.direction = o, this.onChange.emit({
952
+ angle: a,
953
+ direction: o,
954
+ power: this.power
955
+ });
956
+ return;
957
+ }
958
+ if (r === 0 && (n > 0 ? (i.set(Math.abs(n) > this.outerRadius ? this.outerRadius : Math.abs(n), 0), a = 0, o = G.Right) : (i.set(-(Math.abs(n) > this.outerRadius ? this.outerRadius : Math.abs(n)), 0), a = 180, o = G.Left), this.inner.position.set(i.x, i.y), this.power = this.getPower(i), this.power >= this.threshold)) {
959
+ this.direction = o, this.onChange.emit({
960
+ angle: a,
961
+ direction: o,
962
+ power: this.power
963
+ });
964
+ return;
965
+ }
966
+ let s = Math.abs(r / n), c = Math.atan(s);
967
+ a = c * 180 / Math.PI;
968
+ let l = 0, u = 0;
969
+ n * n + r * r >= this.outerRadius * this.outerRadius ? (l = this.outerRadius * Math.cos(c), u = this.outerRadius * Math.sin(c)) : (l = Math.abs(n) > this.outerRadius ? this.outerRadius : Math.abs(n), u = Math.abs(r) > this.outerRadius ? this.outerRadius : Math.abs(r)), r < 0 && (u = -Math.abs(u)), n < 0 && (l = -Math.abs(l)), n > 0 && r < 0 || (n < 0 && r < 0 ? a = 180 - a : n < 0 && r > 0 ? a += 180 : n > 0 && r > 0 && (a = 360 - a)), i.set(l, u), this.power = this.getPower(i), this.power >= this.threshold && (o = this.getDirection(i), this.direction = o, this.inner.position.set(i.x, i.y), this.onChange.emit({
970
+ angle: a,
971
+ direction: o,
972
+ power: this.power
973
+ }));
974
+ }
975
+ destroy(e) {
976
+ this.off("pointerdown", this.handleDragStart).off("pointerup", this.handleDragEnd).off("pointerupoutside", this.handleDragEnd).off("pointermove", this.handleDragMove), window.removeEventListener("pointerup", this.handleDragEnd), this.onDestroy.emit(), super.destroy(e);
977
+ }
978
+ handleDragStart(e) {
979
+ this._pointerId === void 0 && (this._pointerId = e.pointerId, this.startPosition = this.toLocal(e.global), this.dragging = !0, this.inner.alpha = 1, this.onStart.emit());
980
+ }
981
+ handleDragEnd(e) {
982
+ this._pointerId === e.pointerId && (this.direction = G.None, this.inner.position.set(0, 0), this.dragging = !1, this.inner.alpha = this.innerAlphaStandby, this.onEnd.emit(), this._pointerId = void 0);
983
+ }
984
+ bindEvents() {
985
+ this.eventMode = "static", this.on("pointerdown", this.handleDragStart).on("pointerup", this.handleDragEnd).on("pointerupoutside", this.handleDragEnd).on("pointermove", this.handleDragMove), window.addEventListener("pointerup", this.handleDragEnd);
986
+ }
987
+ getPower(e) {
988
+ let t = e.x, n = e.y;
989
+ return Math.min(1, Math.sqrt(t * t + n * n) / this.outerRadius);
990
+ }
991
+ getDirection(e) {
992
+ let t = Math.atan2(e.y, e.x);
993
+ return t >= -Math.PI / 8 && t < 0 || t >= 0 && t < Math.PI / 8 ? G.Right : t >= Math.PI / 8 && t < 3 * Math.PI / 8 ? G.BottomRight : t >= 3 * Math.PI / 8 && t < 5 * Math.PI / 8 ? G.Bottom : t >= 5 * Math.PI / 8 && t < 7 * Math.PI / 8 ? G.BottomLeft : t >= 7 * Math.PI / 8 && t < Math.PI || t >= -Math.PI && t < -7 * Math.PI / 8 ? G.Left : t >= -7 * Math.PI / 8 && t < -5 * Math.PI / 8 ? G.TopLeft : t >= -5 * Math.PI / 8 && t < -3 * Math.PI / 8 ? G.Top : G.TopRight;
994
+ }
995
+ }, Un = {
996
+ color: 0,
997
+ alpha: .75
998
+ }, Wn = {
999
+ backing: !0,
1000
+ closeOnEscape: !0,
1001
+ closeOnPointerDownOutside: !0,
1002
+ actionContext: "popup"
1003
+ }, Gn = class e extends y {
1004
+ get actionContext() {
1005
+ return this.config.actionContext;
1006
+ }
1007
+ constructor(e, t = {}) {
1008
+ super(), this.id = e, this.isShowing = !1, this._storedActionContext = void 0, this.config = Object.assign({
1009
+ id: e,
1010
+ ...Wn
1011
+ }, t), this._initialize();
1012
+ }
1013
+ get data() {
1014
+ return this.config.data;
1015
+ }
1016
+ static makeBacking(e, t) {
1017
+ let n = {};
1018
+ typeof e == "object" && (n = e);
1019
+ let r = Object.assign({ ...Un }, n), i = new Qt(j.WHITE);
1020
+ return i.anchor.set(.5), i.alpha = r.alpha, i.tint = r.color, i.width = t.width, i.height = t.height, i;
1021
+ }
1022
+ initialize() {}
1023
+ beforeShow() {
1024
+ this.storeActionContext(), this.setActionContext();
1025
+ }
1026
+ beforeHide() {
1027
+ this.app.focus.removeFocusLayer(this.id);
1028
+ }
1029
+ destroy(e) {
1030
+ this.app.focus.removeFocusLayer(this.id), this._storedActionContext = void 0, super.destroy(e);
1031
+ }
1032
+ async hide() {
1033
+ return this.visible = !1, Promise.resolve();
1034
+ }
1035
+ async show() {
1036
+ return this.resize(), this.visible = !0, Promise.resolve();
1037
+ }
1038
+ async start() {}
1039
+ afterShow() {
1040
+ this.firstFocusableEntity && (this.app.focus.add(this.firstFocusableEntity, this.id, !0), this.app.focus.setFocus(this.firstFocusableEntity));
1041
+ }
1042
+ end() {}
1043
+ async close() {
1044
+ this.app.popups.hidePopup(this.id, this.config.data);
1045
+ }
1046
+ resize() {
1047
+ this.backing?.setSize(this.app.size.width, this.app.size.height);
1048
+ }
1049
+ _initialize() {
1050
+ this.app.focus.addFocusLayer(this.id, !1), this.config.backing && (this.backing = this.add.existing(e.makeBacking(this.config.backing, this.app.size)), this.backing.eventMode = "static", this.config.closeOnPointerDownOutside && (this.backing.once("click", this.close), this.backing.once("tap", this.close))), this.view = this.add.container(), this.view.eventMode = "static";
1051
+ }
1052
+ setActionContext() {
1053
+ this.actionContext && (this.app.actionContext = this.actionContext, E.log("Popup", "Setting action context", this.app.actionContext));
1054
+ }
1055
+ storeActionContext() {
1056
+ this._storedActionContext = this.app.actionContext, E.log("Popup", "Storing action context", this._storedActionContext);
1057
+ }
1058
+ restoreActionContext() {
1059
+ this._storedActionContext && (E.log("Popup", "Restoring action context", this._storedActionContext), this.app.actionContext = this._storedActionContext), this._storedActionContext = void 0;
1060
+ }
1061
+ }, Kn = [
1062
+ "text",
1063
+ "anchor",
1064
+ "roundPixels",
1065
+ "style",
1066
+ "pivot"
1067
+ ], K = 200, q = "CaperApplication";
1068
+ function qn() {
1069
+ try {
1070
+ return globalThis.Caper?.__dev === !0;
1071
+ } catch {
1072
+ return !1;
1073
+ }
1074
+ }
1075
+ function Jn() {
1076
+ try {
1077
+ return !1;
1078
+ } catch {
1079
+ return !1;
1080
+ }
1081
+ }
1082
+ var J = "__first__";
1083
+ function Y() {
1084
+ let e = globalThis, t = e.Caper ||= {};
1085
+ return t.apps instanceof Map || (t.apps = /* @__PURE__ */ new Map()), (typeof t.automation != "object" || t.automation === null) && (t.automation = {}), t.__readyResolvers instanceof Map || (t.__readyResolvers = /* @__PURE__ */ new Map()), t.__readyApps instanceof Set || (t.__readyApps = /* @__PURE__ */ new Set()), typeof t.ready != "function" && (t.ready = (e) => {
1086
+ let n = t.__readyResolvers, r = t.__readyApps;
1087
+ if (e && r.has(e)) return Promise.resolve(t.apps.get(e));
1088
+ if (!e && r.size > 0) {
1089
+ let e = r.values().next().value;
1090
+ return Promise.resolve(t.apps.get(e));
1091
+ }
1092
+ let i = e ?? J, a = n.get(i);
1093
+ if (!a) {
1094
+ let e, t = new Promise((t) => {
1095
+ e = t;
1096
+ });
1097
+ a = {
1098
+ resolve: e,
1099
+ promise: t
1100
+ }, n.set(i, a);
1101
+ }
1102
+ return a.promise;
1103
+ }), t;
1104
+ }
1105
+ function Yn() {
1106
+ Y();
1107
+ }
1108
+ function X(e) {
1109
+ return e.config?.id || q;
1110
+ }
1111
+ function Xn(e) {
1112
+ let t = X(e), n = [], r, i = [], a = (e) => {
1113
+ n.push(e), n.length > K && n.splice(0, n.length - K);
1114
+ }, o = () => r ? r() : void 0, s = (e) => {
1115
+ if (i.length !== 0) for (let t = i.length - 1; t >= 0; t--) {
1116
+ let n = !1;
1117
+ try {
1118
+ n = i[t].predicate(e);
1119
+ } catch {
1120
+ n = !1;
1121
+ }
1122
+ if (n) {
1123
+ let [n] = i.splice(t, 1);
1124
+ n.resolve(e);
1125
+ }
1126
+ }
1127
+ }, c = {
1128
+ appId: t,
1129
+ get log() {
1130
+ return n;
1131
+ },
1132
+ action(t, n) {
1133
+ e.sendAction(t, n);
1134
+ },
1135
+ getContext() {
1136
+ return String(e.actionContext);
1137
+ },
1138
+ getState: o,
1139
+ registerStateGetter(e) {
1140
+ r = e;
1141
+ },
1142
+ notifyStateChanged(e) {
1143
+ a({
1144
+ t: Date.now(),
1145
+ kind: "state",
1146
+ data: e
1147
+ }), s(e);
1148
+ },
1149
+ waitFor(e, t) {
1150
+ let n = o();
1151
+ try {
1152
+ if (e(n)) return Promise.resolve(n);
1153
+ } catch {}
1154
+ return new Promise((n, r) => {
1155
+ let a, o = {
1156
+ predicate: e,
1157
+ resolve: (e) => {
1158
+ a && clearTimeout(a), n(e);
1159
+ }
1160
+ };
1161
+ i.push(o), t?.timeoutMs != null && (a = setTimeout(() => {
1162
+ let e = i.indexOf(o);
1163
+ e >= 0 && i.splice(e, 1), r(/* @__PURE__ */ Error(`waitFor timed out after ${t.timeoutMs}ms`));
1164
+ }, t.timeoutMs));
1165
+ });
1166
+ }
1167
+ }, l = e.getPlugin("actions");
1168
+ return l && (l.onActionDispatched?.connect((e) => {
1169
+ a({
1170
+ t: Date.now(),
1171
+ kind: "action",
1172
+ name: String(e.id),
1173
+ data: e.data
1174
+ }), s(o());
1175
+ }), l.onActionContextChanged.connect((e) => {
1176
+ a({
1177
+ t: Date.now(),
1178
+ kind: "context",
1179
+ name: String(e)
1180
+ });
1181
+ })), c;
1182
+ }
1183
+ function Z(e) {
1184
+ let t = Y(), n = X(e);
1185
+ if (t.apps.set(n, e), t.app = e, qn() || e.config?.automation === !0 || Jn()) {
1186
+ let r = Xn(e);
1187
+ t.automation[n] = r, e.automation = r;
1188
+ }
1189
+ }
1190
+ function Q(e) {
1191
+ let t = Y(), n = X(e);
1192
+ t.__readyApps.add(n);
1193
+ let r = t.__readyResolvers, i = r.get(n);
1194
+ i && (i.resolve(e), r.delete(n));
1195
+ let a = r.get(J);
1196
+ a && (a.resolve(e), r.delete(J));
1197
+ }
1198
+ //#endregion
1199
+ //#region src/core/create.ts
1200
+ var Zn = "caper-game-container";
1201
+ function $(e) {
1202
+ let t = document.createElement("div");
1203
+ return t.setAttribute("id", e), document.body.appendChild(t), t;
1204
+ }
1205
+ async function Qn() {
1206
+ return new Promise((e) => {
1207
+ document.readyState === "complete" || document.readyState === "interactive" ? e(!0) : document.addEventListener("DOMContentLoaded", () => {
1208
+ e(!0);
1209
+ });
1210
+ });
1211
+ }
1212
+ async function $n(e = { id: "CaperApplication" }, t = Zn, n = !0) {
1213
+ await Qn(), On(), n && U();
1214
+ let r = null;
1215
+ if (typeof t == "string" ? (r = document.getElementById(t), r ||= $(t)) : t instanceof HTMLElement ? r = t : t === window && (r = document.body), !r) 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.");
1216
+ e.resizeToContainer && (e.resizeTo = r), e.useLayout && (e.layout = {
1217
+ autoUpdate: !1,
1218
+ enableDebug: !1,
1219
+ debugModificationCount: 0,
1220
+ throttle: 100
1221
+ }), e.container = r;
1222
+ let i = new (e.application || T)();
1223
+ return await i.initialize(e, r), e.useLayout && (i.stage.layout = {
1224
+ position: "absolute",
1225
+ width: "100%",
1226
+ height: "100%"
1227
+ }), await i._postInitialize(), Z(i), globalThis.Caper?.__runtimeManaged || Q(i), i;
1228
+ }
1229
+ //#endregion
1230
+ var er = v.Collector, tr = v.CollectorArray, nr = v.CollectorLast, rr = v.CollectorUntil0, ir = v.CollectorWhile0, ar = v.SignalConnections;
1231
+ export { Ne as ActionsPlugin, St as Animated, at as AnimatedSprite, T as Application, je as AssetsPlugin, ke as AudioChannel, i as AudioInstance, Gt as AudioManagerPlugin, re as BreakpointPlugin, jt as Button, _t as ButtonConfigKeys, Mn as Camera, Nn as CameraController, t as CaperEvent, er as Collector, tr as CollectorArray, nr as CollectorLast, rr as CollectorUntil0, ir as CollectorWhile0, an as Color, y as Container, ft as ContainerConfigKeys, ct as Controls, Jt as DataAdapter, Je as DebugAlpha, At as DebugColors, te as DefaultActionContexts, p as DefaultActionContextsArray, Ct as DefaultActions, se as DefaultButtonIds, kn as Entity, rt as Factory, ye as FlexContainer, e as FlexContainerConfigKeys, ue as FocusManagerPlugin, xe as FocusOutliner, x as Focusable, ae as FullScreenPlugin, Fn as Input, _e as InputControllerTypes, he as InputPlugin, b as Interactive, Bn as JOYSTICK_DIRECTIONS, Hn as Joystick, G as JoystickDirection, ot as KeyboardControls, fe as KeyboardPlugin, E as Logger, c as LookupPlugin, bt as ParticleContainer, Ot as ParticleContainerConfigKeys, Ie as Plugin, Gn as Popup, u as PopupManagerPlugin, ce as Queue, Te as ResizerPlugin, An as Scene, Rt as SceneManagerPlugin, jn as SceneTransition, S as Signal, ar as SignalConnections, Et as SpineAnimation, nt as Store, Be as Svg, Kn as TextPropsKeys, Bt as Timer, Ce as TimerPlugin, Ft as Toast, _ as Toaster, n as TouchControls, et as UICanvas, Qe as UICanvasConfigKeys, Ve as WebEventsPlugin, C as WithSignals, s as add, zt as addToPoint, w as bindAllMethods, mt as bindMethods, $e as bool, Ge as capitalize, dt as capitalizeWords, xn as center, tt as checkAndInvokeMethod, Ae as clamp, kt as coreFunctionRegistry, ht as coreSignalRegistry, $n as create, $ as createContainer, gt as createDebugGraphics, Tt as createDebugLabel, Pt as createFactoryMethods, Fe as createQueue, Kt as debounce, ee as deepMerge, h as defaultActionsList, De as defaultBreakpoints, Re as defaultFactoryMethods, Ut as defaultToastConfig, Ln as defineActions, zn as defineBreakpoints, Rn as defineButtons, Wt as defineConfig, In as defineContexts, Vn as defineControls, qt as defineData, ln as defineEntity, sn as definePlugin, cn as definePopup, on as defineScene, un as defineUI, Pe as delay, tn as destroyCanvas, Ee as distance, d as distanceSq, m as ensurePadding, Nt as env, wn as filterSet, Tn as firstFromSet, Le as floatBetween, It as floatBetweenPoint, o as formatTime, Ue as generatePluginList, it as getDebugRegistry, wt as getDynamicModuleFromImportListItem, vt as getErrorTexture, Oe as getFirstMapEntry, Me as getLastMapEntry, B as getNearestCharacterIndex, ne as getNextMapEntry, we as getOrientation, le as getPreviousMapEntry, en as getRandomElement, pt as getRegisteredEntityIds, xt as getRegisteredUIIds, Se as getZeroPaddedNumber, f as i18nPlugin, Yn as installCaperGlobal, D as intBetween, He as intBetweenPoint, z as isAndroid, qe as isDev, yn as isIos, R as isMobile, Ze as isProduction, g as isPromise, vn as isRetina, Lt as isStorageCapable, Ye as isText, L as isTouch, En as lastFromSet, ie as lerp, l as lerpPoint, ge as magnitude, lt as multiply, me as normalizeKey, fn as objectDiagonal, bn as offset, hn as offsetShape, gn as offsetSimpleShape, oe as omitKeys, H as pixiVersion, de as pluck, Vt as randomUUID, dn as reParent, Z as registerCaperApp, ze as registerDebug, Dt as resolveAnchor, ve as resolvePadding, We as resolvePivot, r as resolvePointLike, ut as resolvePosition, Mt as resolveScale, a as resolveSizeLike, Ke as resolveTexture, Xe as resolveUnknownKeys, U as sayHello, Sn as scale, I as scaleToHeight, _n as scaleToSize, F as scaleToWidth, P as scaleUniform, mn as sendToBack, pn as sendToFront, $t as shuffle, Q as signalCaperReady, Cn as size, Ht as sortPluginsByRequires, st as subtract, pe as subtractFromPoint, nn as toHex, rn as toRgb, yt as unregisterDebug, V as version, be as wait };
1232
+
1233
+ //# sourceMappingURL=caper.mjs.map