@hellpig/anarchy-engine 22.0.2 → 22.0.4

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 (397) hide show
  1. package/dist/Abstract/Entities/AbstractEntity.js.map +1 -1
  2. package/dist/Abstract/Factories/AbstractFactory.js.map +1 -1
  3. package/dist/Abstract/Factories/ReactiveFactory.js.map +1 -1
  4. package/dist/Abstract/Loaders/AbstractLoader.js.map +1 -1
  5. package/dist/Abstract/Mixins/WithWrapperIdMixin.js.map +1 -1
  6. package/dist/Abstract/Models/THtmlElementStyleDeclaration.d.ts +4 -4
  7. package/dist/Abstract/Registries/AbstractEntityAsyncRegistry.js.map +1 -1
  8. package/dist/Abstract/Registries/AbstractEntityRegistry.js.map +1 -1
  9. package/dist/Abstract/Registries/AbstractResourceAsyncRegistry.js.map +1 -1
  10. package/dist/Abstract/Registries/AbstractSimpleRegistry.js.map +1 -1
  11. package/dist/Abstract/Registries/AbstractWatcherRegistry.js.map +1 -1
  12. package/dist/Abstract/Registries/Mixin/Registry/WithBaseAccessorsRegistry.js.map +1 -1
  13. package/dist/Abstract/Registries/Mixin/Registry/WithReactiveRegistry.js.map +1 -1
  14. package/dist/Abstract/Services/AbstractService.js.map +1 -1
  15. package/dist/Abstract/Watchers/AbstractWatcher.js.map +1 -1
  16. package/dist/Abstract/Watchers/AbstractWatcherWithState.js.map +1 -1
  17. package/dist/Abstract/Wrappers/AbstractWrapper.js.map +1 -1
  18. package/dist/Actor/Adapters/ConfigToParams.js.map +1 -1
  19. package/dist/Actor/Adapters/EntityToConfig.js.map +1 -1
  20. package/dist/Actor/Adapters/Helpers/ActorStatesConfigToParams.js.map +1 -1
  21. package/dist/Actor/Adapters/Helpers/Model3dSettingsConfigToParams.js.map +1 -1
  22. package/dist/Actor/Entities/Actor/Actor.js.map +1 -1
  23. package/dist/Actor/Factories/ActorFactory.js.map +1 -1
  24. package/dist/Actor/Mixins/WithActorStates.js.map +1 -1
  25. package/dist/Actor/Registries/ActorRegistry.js.map +1 -1
  26. package/dist/Actor/Registries/Model3dToActorConnectionRegistry.js.map +1 -1
  27. package/dist/Actor/Services/ActorService.js.map +1 -1
  28. package/dist/Actor/TransformDrive/ActorTransformDrive.js.map +1 -1
  29. package/dist/Actor/Utils/ActorUtils.js.map +1 -1
  30. package/dist/Animations/Adapters/EntityToConfig.js.map +1 -1
  31. package/dist/Animations/Loader/AnimationsLoader.js.map +1 -1
  32. package/dist/Animations/Registries/AnimationsMetaInfoRegistry.js.map +1 -1
  33. package/dist/Animations/Registries/AnimationsResourceAsyncRegistry.js.map +1 -1
  34. package/dist/Animations/Services/AnimationsService.js.map +1 -1
  35. package/dist/Animations/Utils/SerializationUtils.js.map +1 -1
  36. package/dist/Audio/Adapters/AudioConfigToParams.js.map +1 -1
  37. package/dist/Audio/Adapters/EntityToConfig.js.map +1 -1
  38. package/dist/Audio/Factories/AudioFactory.js.map +1 -1
  39. package/dist/Audio/Loader/AudioLoader.js.map +1 -1
  40. package/dist/Audio/Registries/AudioListenersRegistry.js.map +1 -1
  41. package/dist/Audio/Registries/AudioMetaInfoRegistry.js.map +1 -1
  42. package/dist/Audio/Registries/AudioRegistry.js.map +1 -1
  43. package/dist/Audio/Registries/AudioResourceAsyncRegistry.js.map +1 -1
  44. package/dist/Audio/Services/AudioService.js.map +1 -1
  45. package/dist/Audio/TransformDrive/Audio3dTransformDrive.js.map +1 -1
  46. package/dist/Audio/Utils/AudioUtils.js.map +1 -1
  47. package/dist/Audio/Utils/DebugAudioRenderer.js.map +1 -1
  48. package/dist/Audio/Wrappers/AbstractAudioWrapper.js.map +1 -1
  49. package/dist/Audio/Wrappers/Audio3dWrapper.js.map +1 -1
  50. package/dist/Audio/Wrappers/AudioWrapper.js.map +1 -1
  51. package/dist/Camera/Adapters/ConfigToParams.js.map +1 -1
  52. package/dist/Camera/Adapters/EntityToConfig.js.map +1 -1
  53. package/dist/Camera/Factories/CameraFactory.js.map +1 -1
  54. package/dist/Camera/Registries/AbstractCameraRegistry.js.map +1 -1
  55. package/dist/Camera/Services/CameraService.js.map +1 -1
  56. package/dist/Camera/TransformDrive/CameraTransformDrive.js.map +1 -1
  57. package/dist/Camera/Utils/CameraUtils.js.map +1 -1
  58. package/dist/Camera/Wrappers/Accessors.js.map +1 -1
  59. package/dist/Camera/Wrappers/OrthographicCameraWrapper.js.map +1 -1
  60. package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js.map +1 -1
  61. package/dist/Collisions/Mixins/WithCollisions.js.map +1 -1
  62. package/dist/Collisions/Services/BvhService.js.map +1 -1
  63. package/dist/Collisions/Services/CollisionsService.js.map +1 -1
  64. package/dist/Color/Adapters/EntityToConfig.js.map +1 -1
  65. package/dist/Color/Wrappers/ColorWrapper.js.map +1 -1
  66. package/dist/Context/AmbientContext/AmbientContext.js.map +1 -1
  67. package/dist/Controls/Adapters/ConfigToParams.js.map +1 -1
  68. package/dist/Controls/Adapters/EntityToConfig.js.map +1 -1
  69. package/dist/Controls/Factories/ControlsFactory.js.map +1 -1
  70. package/dist/Controls/Loop/ControlsLoopEffect.js.map +1 -1
  71. package/dist/Controls/Models/TFpsControlsWrapper.d.ts +1 -1
  72. package/dist/Controls/Models/TOrbitControlsWrapper.d.ts +1 -1
  73. package/dist/Controls/Registries/ControlsRegistry.js.map +1 -1
  74. package/dist/Controls/Services/ControlsService.js.map +1 -1
  75. package/dist/Controls/Utils/ControlsUtils.js.map +1 -1
  76. package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.d.ts +1 -1
  77. package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.js.map +1 -1
  78. package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapper.js.map +1 -1
  79. package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapperHelper.js.map +1 -1
  80. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.d.ts +1 -1
  81. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.js.map +1 -1
  82. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapper.js.map +1 -1
  83. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapperHelper.js.map +1 -1
  84. package/dist/Distance/Utils/DistanceUtils.js.map +1 -1
  85. package/dist/EnvMap/Adapters/ConfigToParams.js.map +1 -1
  86. package/dist/EnvMap/Adapters/EntityToConfig.js.map +1 -1
  87. package/dist/EnvMap/Factories/EnvMapFactory.js.map +1 -1
  88. package/dist/EnvMap/Loader/EnvMapLoader.js.map +1 -1
  89. package/dist/EnvMap/Registries/EnvMapMetaInfoRegistry.js.map +1 -1
  90. package/dist/EnvMap/Registries/EnvMapRegistry.js.map +1 -1
  91. package/dist/EnvMap/Registries/EnvMapTextureAsyncRegistry.js.map +1 -1
  92. package/dist/EnvMap/Services/EnvMapService.js.map +1 -1
  93. package/dist/EnvMap/Wrappers/EnvMapWrapper.js.map +1 -1
  94. package/dist/Fog/Adapters/ConfigToParams.js.map +1 -1
  95. package/dist/Fog/Adapters/EntityToConfig.js.map +1 -1
  96. package/dist/Fog/Factories/FogFactory.js.map +1 -1
  97. package/dist/Fog/Registries/FogRegistry.js.map +1 -1
  98. package/dist/Fog/Services/FogService.js.map +1 -1
  99. package/dist/Fog/Wrappers/FogWrapper.js.map +1 -1
  100. package/dist/Fsm/Adapters/ConfigToParams.js.map +1 -1
  101. package/dist/Fsm/Adapters/EntityToConfig.js.map +1 -1
  102. package/dist/Fsm/Entities/FsmSource.js.map +1 -1
  103. package/dist/Fsm/Factories/FsmInstanceFactory.js.map +1 -1
  104. package/dist/Fsm/Factories/FsmSourceFactory.js.map +1 -1
  105. package/dist/Fsm/Registries/FsmInstanceRegistry.js.map +1 -1
  106. package/dist/Fsm/Registries/FsmSourceRegistry.js.map +1 -1
  107. package/dist/Fsm/Services/FsmInstanceService.js.map +1 -1
  108. package/dist/Fsm/Services/FsmService.js.map +1 -1
  109. package/dist/Fsm/Services/FsmSourceService.js.map +1 -1
  110. package/dist/Fsm/Wrappers/FsmWrapper.js.map +1 -1
  111. package/dist/Global/Decorators/ContainerDecorator.js.map +1 -1
  112. package/dist/Global/Utils/ContainerUtils.js.map +1 -1
  113. package/dist/Intersections/Adapters/ConfigToParams.js.map +1 -1
  114. package/dist/Intersections/Adapters/EntityToConfig.js.map +1 -1
  115. package/dist/Intersections/Factories/IntersectionsWatcherFactory.js.map +1 -1
  116. package/dist/Intersections/Models/TIntersectionsDirectionWatcher.d.ts +1 -1
  117. package/dist/Intersections/Registries/IntersectionsWatcherRegistry.js.map +1 -1
  118. package/dist/Intersections/Services/IntersectionsWatcherService.js.map +1 -1
  119. package/dist/Intersections/Utils/IntersectionsWatcherUtils.js.map +1 -1
  120. package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js.map +1 -1
  121. package/dist/Intersections/Watchers/IntersectionsCameraWatcher.js.map +1 -1
  122. package/dist/Intersections/Watchers/IntersectionsDirectionWatcher.js.map +1 -1
  123. package/dist/Keyboard/Factories/KeyWatcherFactory.js.map +1 -1
  124. package/dist/Keyboard/Registries/KeyWatcherRegistry.js.map +1 -1
  125. package/dist/Keyboard/Services/KeyboardService.js.map +1 -1
  126. package/dist/Keyboard/Utils/KeysRxJsUtils.js.map +1 -1
  127. package/dist/Keyboard/Utils/KeysUtils.js.map +1 -1
  128. package/dist/Keyboard/Watchers/KeyComboWatcher.js.map +1 -1
  129. package/dist/Keyboard/Watchers/KeyPressWatcher.js.map +1 -1
  130. package/dist/Keyboard/Watchers/KeyReleaseWatcher.js.map +1 -1
  131. package/dist/Kinematic/Adapters/ConfigToParams.js.map +1 -1
  132. package/dist/Kinematic/Adapters/EntityToConfig.js.map +1 -1
  133. package/dist/Kinematic/Constants/KinematicConstants.js.map +1 -1
  134. package/dist/Kinematic/Utils/KinematicUtils.js.map +1 -1
  135. package/dist/Light/Adapters/ConfigToParams.js.map +1 -1
  136. package/dist/Light/Adapters/EntityToConfig.js.map +1 -1
  137. package/dist/Light/Factories/LightFactory.js.map +1 -1
  138. package/dist/Light/Registries/LightRegistry.js.map +1 -1
  139. package/dist/Light/Services/LightService.js.map +1 -1
  140. package/dist/Light/TransformDrive/LightTransformDrive.js.map +1 -1
  141. package/dist/Light/Utils/Utils.js.map +1 -1
  142. package/dist/Light/Wrappers/AbstractLightWrapper.js.map +1 -1
  143. package/dist/Light/Wrappers/AmbientLightWrapper.js.map +1 -1
  144. package/dist/Light/Wrappers/DirectionalLightWrapper.js.map +1 -1
  145. package/dist/Light/Wrappers/HemisphereLightWrapper.js.map +1 -1
  146. package/dist/Light/Wrappers/LightWrapperHelper.js.map +1 -1
  147. package/dist/Light/Wrappers/PointLightWrapper.js.map +1 -1
  148. package/dist/Light/Wrappers/RectAreaLightWrapper.js.map +1 -1
  149. package/dist/Light/Wrappers/SpotLightWrapper.js.map +1 -1
  150. package/dist/LoadingManager/Factories/LoadingManagerFactory.js.map +1 -1
  151. package/dist/LoadingManager/Registries/LoadingManagerRegistry.js.map +1 -1
  152. package/dist/LoadingManager/Services/LoadingManagerService.js.map +1 -1
  153. package/dist/LoadingManager/Wrappers/LoadingManagerWrapper.js.map +1 -1
  154. package/dist/Loop/Constants/LoopsDefaultSettings.js.map +1 -1
  155. package/dist/Loop/Entities/DeltaCalculator.js.map +1 -1
  156. package/dist/Loop/Entities/Loop.js.map +1 -1
  157. package/dist/Loop/Factories/LoopFactory.js.map +1 -1
  158. package/dist/Loop/Registries/LoopRegistry.js.map +1 -1
  159. package/dist/Loop/Services/LoopService.js.map +1 -1
  160. package/dist/Loop/Utils/LoopDebugUtils.js.map +1 -1
  161. package/dist/Loop/Utils/LoopUtils.js.map +1 -1
  162. package/dist/Material/Adapters/ConfigToParams.js.map +1 -1
  163. package/dist/Material/Adapters/EntityToConfig.js.map +1 -1
  164. package/dist/Material/Constants/Material/MaterialMap.js.map +1 -1
  165. package/dist/Material/Factories/MaterialFactory.js.map +1 -1
  166. package/dist/Material/Mixins/WithMaterial.d.ts +1 -1
  167. package/dist/Material/Mixins/WithMaterial.js.map +1 -1
  168. package/dist/Material/Models/TMaterialParamsOptions.d.ts +1 -4
  169. package/dist/Material/Registries/MaterialRegistry.js.map +1 -1
  170. package/dist/Material/Services/MaterialService.js.map +1 -1
  171. package/dist/Material/Utils/MaterialUtils.js.map +1 -1
  172. package/dist/Material/Wrappers/MaterialWrapper.js.map +1 -1
  173. package/dist/Math/Utils/AnglesUtils.js +1 -1
  174. package/dist/Math/Utils/AnglesUtils.js.map +1 -1
  175. package/dist/Math/Utils/DistanceUtils.js.map +1 -1
  176. package/dist/Measurements/Constants/Distance.js.map +1 -1
  177. package/dist/Measurements/Constants/Time.js.map +1 -1
  178. package/dist/Measurements/Utils/MeasurementsUtils.d.ts +1 -1
  179. package/dist/Measurements/Utils/MeasurementsUtils.js.map +1 -1
  180. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy2dMixin.js.map +1 -1
  181. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy3dMixin.js.map +1 -1
  182. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy4dMixin.js.map +1 -1
  183. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByWMixin.js.map +1 -1
  184. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByXMixin.js.map +1 -1
  185. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByYMixin.js.map +1 -1
  186. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByZMixin.js.map +1 -1
  187. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition2dMixin.js.map +1 -1
  188. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition3dMixin.js.map +1 -1
  189. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition4dMixin.js.map +1 -1
  190. package/dist/Mixins/GameObjects/Mixins/Position/WithPositionMixin.js.map +1 -1
  191. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByWMixin.js.map +1 -1
  192. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXMixin.js.map +1 -1
  193. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXyzMixin.js.map +1 -1
  194. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByYMixin.js.map +1 -1
  195. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByZMixin.js.map +1 -1
  196. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationMixin.js.map +1 -1
  197. package/dist/Mixins/GameObjects/Mixins/Scalable/WithScaleMixin.js.map +1 -1
  198. package/dist/Mixins/GameObjects/Mixins/WithObject3D.js.map +1 -1
  199. package/dist/Mixins/Generics/DestroyableMixin.js.map +1 -1
  200. package/dist/Mixins/Generics/ExtractSerializableRegistrableFields.js.map +1 -1
  201. package/dist/Mixins/Generics/WithActiveEntityServiceMixin.js.map +1 -1
  202. package/dist/Mixins/Generics/WithActiveMixin.js.map +1 -1
  203. package/dist/Mixins/Generics/WithNameAndNameAccessorsMixin.js.map +1 -1
  204. package/dist/Mixins/Services/WithCreateFromConfigService.js.map +1 -1
  205. package/dist/Mixins/Services/WithCreateService.js.map +1 -1
  206. package/dist/Mixins/Services/WithFactoryService.js.map +1 -1
  207. package/dist/Mixins/Services/WithRegistryService.js.map +1 -1
  208. package/dist/Mixins/Services/WithSceneGetterService.js.map +1 -1
  209. package/dist/Mixins/Services/WithSerializableEntities.js.map +1 -1
  210. package/dist/Mixins/Services/WithSerializeAllResources.js.map +1 -1
  211. package/dist/Models3d/Adapters/ConfigToParams.js.map +1 -1
  212. package/dist/Models3d/Adapters/EntityToConfig.js.map +1 -1
  213. package/dist/Models3d/Entities/Model3d.js.map +1 -1
  214. package/dist/Models3d/Factories/Models3dFactory.js.map +1 -1
  215. package/dist/Models3d/Loaders/Loader3dCore.js.map +1 -1
  216. package/dist/Models3d/Loaders/Models3dLoader.js.map +1 -1
  217. package/dist/Models3d/Mixins/WithModel3dEntities.js.map +1 -1
  218. package/dist/Models3d/Models/TModel3dParams.d.ts +1 -1
  219. package/dist/Models3d/Models/TModels3dLoader.d.ts +1 -1
  220. package/dist/Models3d/Models/TModels3dResourceAsyncRegistry.d.ts +1 -1
  221. package/dist/Models3d/Models/TModels3dService.d.ts +1 -1
  222. package/dist/Models3d/Registries/Model3dRawToModel3dConnectionRegistry.js.map +1 -1
  223. package/dist/Models3d/Registries/Models3dMetaInfoRegistry.js.map +1 -1
  224. package/dist/Models3d/Registries/Models3dRegistry.js.map +1 -1
  225. package/dist/Models3d/Registries/Models3dResourceAsyncRegistry.js.map +1 -1
  226. package/dist/Models3d/Services/Models3dService.js.map +1 -1
  227. package/dist/Models3d/Utils/SerializationUtils.js.map +1 -1
  228. package/dist/Models3d/Utils/UtilsModel3d.d.ts +1 -1
  229. package/dist/Models3d/Utils/UtilsModel3d.js.map +1 -1
  230. package/dist/Models3d/Utils/UtilsModels3dService.js.map +1 -1
  231. package/dist/Models3d/Utils/UtilsPrimitiveModels3d.d.ts +1 -1
  232. package/dist/Models3d/Utils/UtilsPrimitiveModels3d.js.map +1 -1
  233. package/dist/Mouse/Factories/MouseClickWatcherFactory.js.map +1 -1
  234. package/dist/Mouse/Factories/MousePositionWatcherFactory.js.map +1 -1
  235. package/dist/Mouse/Registries/MouseClickWatcherRegistry.js.map +1 -1
  236. package/dist/Mouse/Registries/MousePositionWatcherRegistry.js.map +1 -1
  237. package/dist/Mouse/Services/MouseService.js.map +1 -1
  238. package/dist/Mouse/Utils/MouseUtils.js.map +1 -1
  239. package/dist/Mouse/Watchers/MouseClickWatcher.js.map +1 -1
  240. package/dist/Mouse/Watchers/MousePositionWatcher.js.map +1 -1
  241. package/dist/Particles/Adapters/ConfigToParams.js.map +1 -1
  242. package/dist/Particles/Adapters/EntityToConfig.js.map +1 -1
  243. package/dist/Particles/Factories/ParticlesFactory.js.map +1 -1
  244. package/dist/Particles/Registries/ParticlesRegistry.js.map +1 -1
  245. package/dist/Particles/Services/ParticlesService.js.map +1 -1
  246. package/dist/Particles/TransformDrive/ParticlesTransformDrive.js.map +1 -1
  247. package/dist/Particles/Wrappers/ParticlesWrapper.js.map +1 -1
  248. package/dist/Physics/Adapters/EntityToConfig.d.ts +1 -1
  249. package/dist/Physics/Adapters/EntityToConfig.js.map +1 -1
  250. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js +1 -1
  251. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js.map +1 -1
  252. package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js.map +1 -1
  253. package/dist/Physics/Constants/RigidBodyTypesMap.d.ts +1 -1
  254. package/dist/Physics/Constants/RigidBodyTypesMap.js +1 -1
  255. package/dist/Physics/Constants/RigidBodyTypesMap.js.map +1 -1
  256. package/dist/Physics/Entities/PhysicsBody.js.map +1 -1
  257. package/dist/Physics/Entities/PhysicsBodyUtils.d.ts +1 -1
  258. package/dist/Physics/Entities/PhysicsBodyUtils.js +1 -1
  259. package/dist/Physics/Entities/PhysicsBodyUtils.js.map +1 -1
  260. package/dist/Physics/Factories/PhysicsBodyFactory.js.map +1 -1
  261. package/dist/Physics/Mixins/WithPhysicsBodyEntities.js.map +1 -1
  262. package/dist/Physics/Models/TPhysicsWorldService.d.ts +1 -1
  263. package/dist/Physics/Registries/PhysicsBodyRegistry.js.map +1 -1
  264. package/dist/Physics/Renderers/PhysicsDebugRenderer.d.ts +1 -1
  265. package/dist/Physics/Renderers/PhysicsDebugRenderer.js.map +1 -1
  266. package/dist/Physics/Services/PhysicsBodyService.js.map +1 -1
  267. package/dist/Physics/Services/PhysicsWorldService.js +1 -1
  268. package/dist/Physics/Services/PhysicsWorldService.js.map +1 -1
  269. package/dist/Physics/Utils/ParamsUtils.js.map +1 -1
  270. package/dist/Physics/Utils/PhysicsMovementUtils.d.ts +2 -2
  271. package/dist/Physics/Utils/PhysicsMovementUtils.js +1 -1
  272. package/dist/Physics/Utils/PhysicsMovementUtils.js.map +1 -1
  273. package/dist/Renderer/Adapters/ConfigToParams.js.map +1 -1
  274. package/dist/Renderer/Adapters/EntityToConfig.js.map +1 -1
  275. package/dist/Renderer/Factories/RendererFactory.js.map +1 -1
  276. package/dist/Renderer/Loop/RendererLoopEffect.js.map +1 -1
  277. package/dist/Renderer/Mixins/WithThreeJsRendererParamsAccessors.js.map +1 -1
  278. package/dist/Renderer/Mixins/WithThreeJsRendererPropsAccessors.js.map +1 -1
  279. package/dist/Renderer/Registries/RendererRegistry.js.map +1 -1
  280. package/dist/Renderer/Services/RendererService.js.map +1 -1
  281. package/dist/Renderer/Wrappers/Accessors.js.map +1 -1
  282. package/dist/Renderer/Wrappers/RendererWrapper.js.map +1 -1
  283. package/dist/Scene/Adapters/ConfigToParams.js.map +1 -1
  284. package/dist/Scene/Adapters/EntityToConfig.js.map +1 -1
  285. package/dist/Scene/Factories/SceneFactory.js.map +1 -1
  286. package/dist/Scene/Registries/SceneRegistry.js.map +1 -1
  287. package/dist/Scene/Services/ScenesService.js.map +1 -1
  288. package/dist/Scene/Wrappers/SceneWrapper.js.map +1 -1
  289. package/dist/Space/Adapters/ConfigToParams.js.map +1 -1
  290. package/dist/Space/Adapters/EntityToConfig.js.map +1 -1
  291. package/dist/Space/Entities/Space.js.map +1 -1
  292. package/dist/Space/Entities/SpaceFromConfig.js.map +1 -1
  293. package/dist/Space/Factories/SpaceFactory.js.map +1 -1
  294. package/dist/Space/Registries/SpaceRegistry.js.map +1 -1
  295. package/dist/Space/Services/SpaceService.js.map +1 -1
  296. package/dist/Space/Utils/CanvasUtils.js.map +1 -1
  297. package/dist/Space/Utils/CreateEntitiesUtils.js.map +1 -1
  298. package/dist/Space/Utils/CreateLoopsUtils.js.map +1 -1
  299. package/dist/Space/Utils/LoadResourcesUtils.js.map +1 -1
  300. package/dist/Space/Utils/PrepareServicesUtils.js.map +1 -1
  301. package/dist/Space/Utils/SchemaValidationUtils.js.map +1 -1
  302. package/dist/Space/Validators/SchemasValidator.js.map +1 -1
  303. package/dist/Space/Validators/ValidateConfig.js.map +1 -1
  304. package/dist/Space/Validators/ValidateSpace.js.map +1 -1
  305. package/dist/Spatial/Adapters/ConfigToParams.js.map +1 -1
  306. package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js.map +1 -1
  307. package/dist/Spatial/Adapters/EntityToConfig.js.map +1 -1
  308. package/dist/Spatial/Factories/SpatialGridFactory.js.map +1 -1
  309. package/dist/Spatial/Mixins/WithReactivePosition.js.map +1 -1
  310. package/dist/Spatial/Mixins/WithReactiveRotation.js.map +1 -1
  311. package/dist/Spatial/Mixins/WithSpatial.js.map +1 -1
  312. package/dist/Spatial/Mixins/WithUpdateSpatialCell.js.map +1 -1
  313. package/dist/Spatial/Registries/SpatialGridRegistry.js.map +1 -1
  314. package/dist/Spatial/Services/SpatialGridService.js.map +1 -1
  315. package/dist/Spatial/Services/SpatialHelper.d.ts +1 -1
  316. package/dist/Spatial/Services/SpatialHelper.js.map +1 -1
  317. package/dist/Spatial/Wrappers/SpatialCellWrapper.js.map +1 -1
  318. package/dist/Spatial/Wrappers/SpatialGridWrapper.js.map +1 -1
  319. package/dist/Text/Adapters/ConfigToParams.js.map +1 -1
  320. package/dist/Text/Adapters/EntityToConfig.js.map +1 -1
  321. package/dist/Text/Factories/TextFactory.js.map +1 -1
  322. package/dist/Text/Loop/TextLoopEffect.js.map +1 -1
  323. package/dist/Text/Models/TText2dRenderer.d.ts +1 -1
  324. package/dist/Text/Models/TText2dWrapper.d.ts +1 -1
  325. package/dist/Text/Models/TText3dRenderer.d.ts +1 -1
  326. package/dist/Text/Models/TText3dWrapper.d.ts +1 -1
  327. package/dist/Text/Models/TTextRenderer.d.ts +2 -2
  328. package/dist/Text/Models/TTextWrapper.d.ts +2 -2
  329. package/dist/Text/Registries/Text2dRegistry.js.map +1 -1
  330. package/dist/Text/Registries/Text2dRendererRegistry.js.map +1 -1
  331. package/dist/Text/Registries/Text3dRegistry.js.map +1 -1
  332. package/dist/Text/Registries/Text3dRendererRegistry.js.map +1 -1
  333. package/dist/Text/Registries/Text3dTextureRegistry.js.map +1 -1
  334. package/dist/Text/Renderers/Text2dRenderer.js.map +1 -1
  335. package/dist/Text/Renderers/Text3dRenderer.js.map +1 -1
  336. package/dist/Text/Renderers/TextRendererBuilder.d.ts +2 -2
  337. package/dist/Text/Renderers/TextRendererBuilder.js.map +1 -1
  338. package/dist/Text/Services/TextService.js.map +1 -1
  339. package/dist/Text/TransformDrive/TextTransformDrive.js.map +1 -1
  340. package/dist/Text/Utils/TextUtils.js.map +1 -1
  341. package/dist/Text/Wrappers/Accessors.js.map +1 -1
  342. package/dist/Text/Wrappers/Text2dWrapper.js.map +1 -1
  343. package/dist/Text/Wrappers/Text3dTextureWrapper.js.map +1 -1
  344. package/dist/Text/Wrappers/Text3dWrapper.js.map +1 -1
  345. package/dist/Text/Wrappers/TextTextureWrapper.js.map +1 -1
  346. package/dist/Text/Wrappers/TextWrapper.d.ts +2 -2
  347. package/dist/Text/Wrappers/TextWrapper.js.map +1 -1
  348. package/dist/Text/Wrappers/TextWrapperBuilder.js.map +1 -1
  349. package/dist/Text/Wrappers/TextWrapperHelper.js.map +1 -1
  350. package/dist/Texture/Loaders/TexturesLoader.js.map +1 -1
  351. package/dist/Texture/Registries/TextureMetaInfoRegistry.js.map +1 -1
  352. package/dist/Texture/Registries/TextureResourceAsyncRegistry.js.map +1 -1
  353. package/dist/Texture/Services/TextureService.js.map +1 -1
  354. package/dist/Texture/Utils/TextureServiceHelper.js.map +1 -1
  355. package/dist/ThreeLib/Utils/Object3dUtils.js.map +1 -1
  356. package/dist/TransformDrive/Adapters/EntityToConfig.js.map +1 -1
  357. package/dist/TransformDrive/Entities/Agents/AbstractTransformAgent.js.map +1 -1
  358. package/dist/TransformDrive/Entities/Agents/ConnectedTransformAgent.js.map +1 -1
  359. package/dist/TransformDrive/Entities/Agents/DefaultTransformAgent.js.map +1 -1
  360. package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js.map +1 -1
  361. package/dist/TransformDrive/Entities/Agents/PhysicsTransformAgent.js.map +1 -1
  362. package/dist/TransformDrive/Entities/Connectors/DriveToTargetConnector.js.map +1 -1
  363. package/dist/TransformDrive/Entities/Drive/TransformDrive.js.map +1 -1
  364. package/dist/TransformDrive/Factories/TransformDriveFactory.js.map +1 -1
  365. package/dist/TransformDrive/Mixins/WithMutablePositionConnector.js.map +1 -1
  366. package/dist/TransformDrive/Mixins/WithMutableRotationConnector.js.map +1 -1
  367. package/dist/TransformDrive/Mixins/WithMutableScaleConnector.js.map +1 -1
  368. package/dist/TransformDrive/Mixins/WithProxyTransform.js.map +1 -1
  369. package/dist/TransformDrive/Registries/TransformDriveRegistry.js.map +1 -1
  370. package/dist/TransformDrive/Services/TransformDriveService.js.map +1 -1
  371. package/dist/TransformDrive/Utils/ActorDriveUtils.js.map +1 -1
  372. package/dist/TransformDrive/Utils/AgentUtils.js.map +1 -1
  373. package/dist/TransformDrive/Utils/KinematicAgentUtils.js.map +1 -1
  374. package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.d.ts +1 -1
  375. package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.js.map +1 -1
  376. package/dist/TransformDrive/Utils/TransformDriveUtils.js.map +1 -1
  377. package/dist/Utils/CheckUtils.js.map +1 -1
  378. package/dist/Utils/CoordsUtils.js.map +1 -1
  379. package/dist/Utils/DateTimeUtils.d.ts +1 -1
  380. package/dist/Utils/DestroyUtils.js.map +1 -1
  381. package/dist/Utils/DomUtils.js.map +1 -1
  382. package/dist/Utils/EntityUtils.js.map +1 -1
  383. package/dist/Utils/RegistryAsyncUtils.js.map +1 -1
  384. package/dist/Utils/RegistryUtils.js.map +1 -1
  385. package/dist/Utils/RxJsUtils.js.map +1 -1
  386. package/dist/Utils/ScreenUtils.js.map +1 -1
  387. package/dist/Utils/TagsUtils.js.map +1 -1
  388. package/dist/Utils/TransformUtils.js.map +1 -1
  389. package/dist/Utils/WrapperHelpers.d.ts +1 -1
  390. package/dist/Utils/WrapperHelpers.js.map +1 -1
  391. package/dist/assets/Loop.worker-D1bMWlsN.js.map +1 -1
  392. package/dist/packages/anarchy-shared/src/Utils/AsyncUtils.js.map +1 -1
  393. package/dist/packages/anarchy-shared/src/Utils/CssUtils.js.map +1 -1
  394. package/dist/packages/anarchy-shared/src/Utils/ObjectUtils.js.map +1 -1
  395. package/legal/NOTICE.md +1 -1
  396. package/legal/THIRD_PARTY_LICENSES.md +1 -1
  397. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CheckUtils.js","sources":["../../src/Utils/CheckUtils.ts"],"sourcesContent":["import type { TAbstractAsyncEntityRegistry, TAbstractEntityRegistry, TWithUserData, TWithWrapperId, TWithWrapperIdEntity } from '@Anarchy/Engine/Abstract/Models';\nimport type { TColorWrapper } from '@Anarchy/Engine/Color';\nimport type { TDestroyable, TWithPosition2dProperty, TWithPosition3dProperty, TWithPosition4dProperty, TWithPositionProperty } from '@Anarchy/Engine/Mixins';\nimport type { TEulerLike } from '@Anarchy/Engine/ThreeLib';\nimport type { TTransformDriveCompatibleEntity, TWithTransformDrive } from '@Anarchy/Engine/TransformDrive';\nimport { isDefined, isNotDefined, isObject } from '@Anarchy/Shared/Utils';\nimport type { BufferGeometry, Euler, Material, Quaternion, QuaternionLike, Vector2, Vector2Like, Vector3, Vector3Like, Vector4, Vector4Like } from 'three';\nimport { Color } from 'three';\n\nexport function isDestroyable(obj: unknown): obj is TDestroyable {\n return isDefined((obj as TDestroyable).destroy$);\n}\n\nexport const isColorWrapper = (obj: unknown): obj is TColorWrapper => isDefined((obj as TColorWrapper).entity) && (obj as TColorWrapper).entity instanceof Color;\n\nexport const isWithUserData = (entity: any): entity is TWithUserData => isDefined((entity as TWithUserData).userData);\n\nexport const isWithWrapperIdAccessors = (entity: any): entity is TWithWrapperId => isDefined((entity as TWithWrapperId).setWrapperId) && isDefined((entity as TWithWrapperId).getWrapperId);\n\nexport function isWithWrapperId<T extends TWithUserData>(obj: unknown): obj is TWithWrapperIdEntity<T> {\n return isDefined(obj) && isObject(obj) && isDefined((obj as TWithWrapperIdEntity<T>).userData) && isDefined((obj as TWithWrapperIdEntity<T>).userData.wrapperId);\n}\n\ntype TMetrics = Vector2 | Vector3 | Vector4 | Vector2Like | Vector3Like | Vector4Like | Quaternion | Euler | QuaternionLike | TEulerLike;\nexport const isVector2Like = (obj: TMetrics): obj is Vector2Like => isDefined(obj.x) && isDefined(obj.x) && isNotDefined((obj as Vector3).z) && isNotDefined((obj as Vector4).w);\nexport const isVector3Like = (obj: TMetrics): obj is Vector3Like => isDefined(obj.x) && isDefined(obj.x) && isDefined((obj as Vector3).z) && isNotDefined((obj as Vector4).w);\nexport const isVector4Like = (obj: TMetrics): obj is Vector4Like => isDefined(obj.x) && isDefined(obj.x) && isDefined((obj as Vector4).z) && isDefined((obj as Vector4).w);\n\n// TODO add unit tests\nexport const isQuaternionLike = (obj: TMetrics): obj is QuaternionLike => isVector4Like(obj as Vector4);\n// TODO add unit tests\nexport const isEulerLike = (obj: TMetrics): obj is Euler => isVector3Like(obj as Vector3);\n\nexport const isEntityWith2dPosition = (obj: TWithPositionProperty): obj is TWithPosition2dProperty => isVector2Like(obj.position as Vector2);\nexport const isEntityWith3dPosition = (obj: TWithPositionProperty): obj is TWithPosition3dProperty => isVector3Like(obj.position as Vector3);\nexport const isEntityWith4dPosition = (obj: TWithPositionProperty): obj is TWithPosition4dProperty => isVector4Like(obj.position as Vector4);\n\nexport const isAsyncEntityRegistry = (registry: TAbstractEntityRegistry<any> | TAbstractAsyncEntityRegistry<any>): registry is TAbstractAsyncEntityRegistry<any> =>\n isDefined((registry as TAbstractAsyncEntityRegistry<any>).findByTagsAsync) && isDefined((registry as TAbstractAsyncEntityRegistry<any>).findByTagAsync);\n\nexport const hasMaterial = (entity: unknown): entity is { material?: Material | Array<Material> | null } => isDefined((entity as any).material);\n\nexport const hasGeometry = (entity: unknown): entity is { geometry?: BufferGeometry | null } => isDefined((entity as any).geometry);\n\nexport function hasTransformDrive<T extends TTransformDriveCompatibleEntity>(entity: unknown): entity is TWithTransformDrive<T> {\n return isDefined((entity as TWithTransformDrive<T>).drive) && isDefined((entity as TWithTransformDrive<T>).driveToTargetConnector);\n}\n"],"names":["isDestroyable","obj","isDefined","destroy$","isColorWrapper","entity","Color","isWithUserData","userData","isWithWrapperIdAccessors","setWrapperId","getWrapperId","isWithWrapperId","isObject","wrapperId","isVector2Like","x","isNotDefined","z","w","isVector3Like","isVector4Like","isQuaternionLike","isEulerLike","isEntityWith2dPosition","position","isEntityWith3dPosition","isEntityWith4dPosition","isAsyncEntityRegistry","registry","findByTagsAsync","findByTagAsync","hasMaterial","material","hasGeometry","geometry","hasTransformDrive","drive","driveToTargetConnector"],"mappings":"0LASO,SAASA,cAAcC,KAC5B,OAAOC,UAAWD,IAAqBE,SACzC,CAEO,MAAMC,eAAkBH,KAAuCC,UAAWD,IAAsBI,SAAYJ,IAAsBI,kBAAkBC,MAE9IC,eAAkBF,QAAyCH,UAAWG,OAAyBG,UAE/FC,yBAA4BJ,QAA0CH,UAAWG,OAA0BK,eAAiBR,UAAWG,OAA0BM,cAEvK,SAASC,gBAAyCX,KACvD,OAAOC,UAAUD,MAAQY,SAASZ,MAAQC,UAAWD,IAAgCO,WAAaN,UAAWD,IAAgCO,SAASM,UACxJ,CAGO,MAAMC,cAAiBd,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMC,aAAchB,IAAgBiB,IAAMD,aAAchB,IAAgBkB,GACjKC,cAAiBnB,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMd,UAAWD,IAAgBiB,IAAMD,aAAchB,IAAgBkB,GAC9JE,cAAiBpB,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMd,UAAWD,IAAgBiB,IAAMhB,UAAWD,IAAgBkB,GAG3JG,iBAAoBrB,KAAyCoB,cAAcpB,KAE3EsB,YAAetB,KAAgCmB,cAAcnB,KAE7DuB,uBAA0BvB,KAA+Dc,cAAcd,IAAIwB,UAC3GC,uBAA0BzB,KAA+DmB,cAAcnB,IAAIwB,UAC3GE,uBAA0B1B,KAA+DoB,cAAcpB,IAAIwB,UAE3GG,sBAAyBC,UACpC3B,UAAW2B,SAA+CC,kBAAoB5B,UAAW2B,SAA+CE,gBAE7HC,YAAe3B,QAAgFH,UAAWG,OAAe4B,UAEzHC,YAAe7B,QAAoEH,UAAWG,OAAe8B,UAEnH,SAASC,kBAA6D/B,QAC3E,OAAOH,UAAWG,OAAkCgC,QAAUnC,UAAWG,OAAkCiC,uBAC7G"}
1
+ {"version":3,"file":"CheckUtils.js","sources":["../../src/Utils/CheckUtils.ts"],"sourcesContent":["import type { TAbstractAsyncEntityRegistry, TAbstractEntityRegistry, TWithUserData, TWithWrapperId, TWithWrapperIdEntity } from '@hellpig/anarchy-engine/Abstract/Models';\nimport type { TColorWrapper } from '@hellpig/anarchy-engine/Color';\nimport type { TDestroyable, TWithPosition2dProperty, TWithPosition3dProperty, TWithPosition4dProperty, TWithPositionProperty } from '@hellpig/anarchy-engine/Mixins';\nimport type { TEulerLike } from '@hellpig/anarchy-engine/ThreeLib';\nimport type { TTransformDriveCompatibleEntity, TWithTransformDrive } from '@hellpig/anarchy-engine/TransformDrive';\nimport { isDefined, isNotDefined, isObject } from '@hellpig/anarchy-shared/Utils';\nimport type { BufferGeometry, Euler, Material, Quaternion, QuaternionLike, Vector2, Vector2Like, Vector3, Vector3Like, Vector4, Vector4Like } from 'three';\nimport { Color } from 'three';\n\nexport function isDestroyable(obj: unknown): obj is TDestroyable {\n return isDefined((obj as TDestroyable).destroy$);\n}\n\nexport const isColorWrapper = (obj: unknown): obj is TColorWrapper => isDefined((obj as TColorWrapper).entity) && (obj as TColorWrapper).entity instanceof Color;\n\nexport const isWithUserData = (entity: any): entity is TWithUserData => isDefined((entity as TWithUserData).userData);\n\nexport const isWithWrapperIdAccessors = (entity: any): entity is TWithWrapperId => isDefined((entity as TWithWrapperId).setWrapperId) && isDefined((entity as TWithWrapperId).getWrapperId);\n\nexport function isWithWrapperId<T extends TWithUserData>(obj: unknown): obj is TWithWrapperIdEntity<T> {\n return isDefined(obj) && isObject(obj) && isDefined((obj as TWithWrapperIdEntity<T>).userData) && isDefined((obj as TWithWrapperIdEntity<T>).userData.wrapperId);\n}\n\ntype TMetrics = Vector2 | Vector3 | Vector4 | Vector2Like | Vector3Like | Vector4Like | Quaternion | Euler | QuaternionLike | TEulerLike;\nexport const isVector2Like = (obj: TMetrics): obj is Vector2Like => isDefined(obj.x) && isDefined(obj.x) && isNotDefined((obj as Vector3).z) && isNotDefined((obj as Vector4).w);\nexport const isVector3Like = (obj: TMetrics): obj is Vector3Like => isDefined(obj.x) && isDefined(obj.x) && isDefined((obj as Vector3).z) && isNotDefined((obj as Vector4).w);\nexport const isVector4Like = (obj: TMetrics): obj is Vector4Like => isDefined(obj.x) && isDefined(obj.x) && isDefined((obj as Vector4).z) && isDefined((obj as Vector4).w);\n\n// TODO add unit tests\nexport const isQuaternionLike = (obj: TMetrics): obj is QuaternionLike => isVector4Like(obj as Vector4);\n// TODO add unit tests\nexport const isEulerLike = (obj: TMetrics): obj is Euler => isVector3Like(obj as Vector3);\n\nexport const isEntityWith2dPosition = (obj: TWithPositionProperty): obj is TWithPosition2dProperty => isVector2Like(obj.position as Vector2);\nexport const isEntityWith3dPosition = (obj: TWithPositionProperty): obj is TWithPosition3dProperty => isVector3Like(obj.position as Vector3);\nexport const isEntityWith4dPosition = (obj: TWithPositionProperty): obj is TWithPosition4dProperty => isVector4Like(obj.position as Vector4);\n\nexport const isAsyncEntityRegistry = (registry: TAbstractEntityRegistry<any> | TAbstractAsyncEntityRegistry<any>): registry is TAbstractAsyncEntityRegistry<any> =>\n isDefined((registry as TAbstractAsyncEntityRegistry<any>).findByTagsAsync) && isDefined((registry as TAbstractAsyncEntityRegistry<any>).findByTagAsync);\n\nexport const hasMaterial = (entity: unknown): entity is { material?: Material | Array<Material> | null } => isDefined((entity as any).material);\n\nexport const hasGeometry = (entity: unknown): entity is { geometry?: BufferGeometry | null } => isDefined((entity as any).geometry);\n\nexport function hasTransformDrive<T extends TTransformDriveCompatibleEntity>(entity: unknown): entity is TWithTransformDrive<T> {\n return isDefined((entity as TWithTransformDrive<T>).drive) && isDefined((entity as TWithTransformDrive<T>).driveToTargetConnector);\n}\n"],"names":["isDestroyable","obj","isDefined","destroy$","isColorWrapper","entity","Color","isWithUserData","userData","isWithWrapperIdAccessors","setWrapperId","getWrapperId","isWithWrapperId","isObject","wrapperId","isVector2Like","x","isNotDefined","z","w","isVector3Like","isVector4Like","isQuaternionLike","isEulerLike","isEntityWith2dPosition","position","isEntityWith3dPosition","isEntityWith4dPosition","isAsyncEntityRegistry","registry","findByTagsAsync","findByTagAsync","hasMaterial","material","hasGeometry","geometry","hasTransformDrive","drive","driveToTargetConnector"],"mappings":"0LASO,SAASA,cAAcC,KAC5B,OAAOC,UAAWD,IAAqBE,SACzC,CAEO,MAAMC,eAAkBH,KAAuCC,UAAWD,IAAsBI,SAAYJ,IAAsBI,kBAAkBC,MAE9IC,eAAkBF,QAAyCH,UAAWG,OAAyBG,UAE/FC,yBAA4BJ,QAA0CH,UAAWG,OAA0BK,eAAiBR,UAAWG,OAA0BM,cAEvK,SAASC,gBAAyCX,KACvD,OAAOC,UAAUD,MAAQY,SAASZ,MAAQC,UAAWD,IAAgCO,WAAaN,UAAWD,IAAgCO,SAASM,UACxJ,CAGO,MAAMC,cAAiBd,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMC,aAAchB,IAAgBiB,IAAMD,aAAchB,IAAgBkB,GACjKC,cAAiBnB,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMd,UAAWD,IAAgBiB,IAAMD,aAAchB,IAAgBkB,GAC9JE,cAAiBpB,KAAsCC,UAAUD,IAAIe,IAAMd,UAAUD,IAAIe,IAAMd,UAAWD,IAAgBiB,IAAMhB,UAAWD,IAAgBkB,GAG3JG,iBAAoBrB,KAAyCoB,cAAcpB,KAE3EsB,YAAetB,KAAgCmB,cAAcnB,KAE7DuB,uBAA0BvB,KAA+Dc,cAAcd,IAAIwB,UAC3GC,uBAA0BzB,KAA+DmB,cAAcnB,IAAIwB,UAC3GE,uBAA0B1B,KAA+DoB,cAAcpB,IAAIwB,UAE3GG,sBAAyBC,UACpC3B,UAAW2B,SAA+CC,kBAAoB5B,UAAW2B,SAA+CE,gBAE7HC,YAAe3B,QAAgFH,UAAWG,OAAe4B,UAEzHC,YAAe7B,QAAoEH,UAAWG,OAAe8B,UAEnH,SAASC,kBAA6D/B,QAC3E,OAAOH,UAAWG,OAAkCgC,QAAUnC,UAAWG,OAAkCiC,uBAC7G"}
@@ -1 +1 @@
1
- {"version":3,"file":"CoordsUtils.js","sources":["../../src/Utils/CoordsUtils.ts"],"sourcesContent":["import type { TMeters, TRadians } from '@Anarchy/Engine/Math';\nimport { getAzimuthFromDirection, getElevationFromDirection } from '@Anarchy/Engine/Math';\nimport type { TReadonlyVector3 } from '@Anarchy/Engine/ThreeLib';\nimport { Vector3 } from 'three';\n\ntype TTempCoords = Readonly<{\n coord1: number;\n coord2: number;\n}>;\n\n//Generates an array of angles that could be used for circular movement\nexport function generateAnglesForCircle(numberOfPoints: number, numberOfCircles: number = 1, startAngle: number = 0): ReadonlyArray<TRadians> {\n let angleArray: ReadonlyArray<TRadians> = [];\n const fullCircle: TRadians = (2 * Math.PI * numberOfCircles) as TRadians;\n const angleStep: TRadians = (fullCircle / numberOfPoints) as TRadians;\n\n // eslint-disable-next-line functional/no-loop-statements\n for (let i: number = 0; i <= numberOfPoints; i++) {\n angleArray = [...angleArray, (startAngle + i * angleStep) as TRadians];\n }\n\n return angleArray;\n}\n\n// Generates coords for circular movement\nfunction createCirclePath(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: TTempCoords): ReadonlyArray<TTempCoords> {\n return angleArray.map((angle: TRadians) => {\n return {\n coord1: Math.cos(angle) * radius + circleCenter.coord1,\n coord2: Math.sin(angle) * radius + circleCenter.coord2\n };\n });\n}\n\nexport function createCirclePathXY(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.x, coord2: circleCenter.y }).map((coords: TTempCoords): Vector3 => new Vector3(coords.coord1, coords.coord2, circleCenter.z));\n}\n\nexport function createCirclePathXZ(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.x, coord2: circleCenter.z }).map((coords: TTempCoords): Vector3 => new Vector3(coords.coord1, circleCenter.y, coords.coord2));\n}\n\nexport function createCirclePathYZ(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.y, coord2: circleCenter.z }).map((coords: TTempCoords): Vector3 => new Vector3(circleCenter.x, coords.coord1, coords.coord2));\n}\n\nexport function getMouseAzimuthAndElevation(mousePosition: TReadonlyVector3, playerPosition: TReadonlyVector3): Readonly<{ azimuth: TRadians; elevation: TRadians }> {\n const direction: TReadonlyVector3 = mousePosition.clone().sub(playerPosition).normalize();\n const azimuth: TRadians = getAzimuthFromDirection(direction);\n const elevation: TRadians = getElevationFromDirection(direction);\n\n return { azimuth, elevation };\n}\n"],"names":["generateAnglesForCircle","numberOfPoints","numberOfCircles","startAngle","angleArray","angleStep","Math","PI","i","createCirclePath","radius","circleCenter","map","angle","coord1","cos","coord2","sin","createCirclePathXY","x","y","coords","Vector3","z","createCirclePathXZ","createCirclePathYZ","getMouseAzimuthAndElevation","mousePosition","playerPosition","direction","clone","sub","normalize","azimuth","getAzimuthFromDirection","elevation","getElevationFromDirection"],"mappings":"uHAWO,SAASA,wBAAwBC,eAAwBC,gBAA0B,EAAGC,WAAqB,GAChH,IAAIC,WAAsC,GAC1C,MACMC,UADwB,EAAIC,KAAKC,GAAKL,gBACFD,eAG1C,IAAA,IAASO,EAAY,EAAGA,GAAKP,eAAgBO,IAC3CJ,WAAa,IAAIA,WAAaD,WAAaK,EAAIH,WAGjD,OAAOD,UACT,CAGA,SAASK,iBAAiBL,WAAqCM,OAAiBC,cAC9E,OAAOP,WAAWQ,IAAKC,QACd,CACLC,OAAQR,KAAKS,IAAIF,OAASH,OAASC,aAAaG,OAChDE,OAAQV,KAAKW,IAAIJ,OAASH,OAASC,aAAaK,SAGtD,CAEO,SAASE,mBAAmBd,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaQ,EAAGH,OAAQL,aAAaS,IAAKR,IAAKS,QAAiC,IAAIC,QAAQD,OAAOP,OAAQO,OAAOL,OAAQL,aAAaY,GAC/L,CAEO,SAASC,mBAAmBpB,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaQ,EAAGH,OAAQL,aAAaY,IAAKX,IAAKS,QAAiC,IAAIC,QAAQD,OAAOP,OAAQH,aAAaS,EAAGC,OAAOL,QAC1L,CAEO,SAASS,mBAAmBrB,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaS,EAAGJ,OAAQL,aAAaY,IAAKX,IAAKS,QAAiC,IAAIC,QAAQX,aAAaQ,EAAGE,OAAOP,OAAQO,OAAOL,QAC1L,CAEO,SAASU,4BAA4BC,cAAiCC,gBAC3E,MAAMC,UAA8BF,cAAcG,QAAQC,IAAIH,gBAAgBI,YAI9E,MAAO,CAAEC,QAHiBC,wBAAwBL,WAGhCM,UAFUC,0BAA0BP,WAGxD"}
1
+ {"version":3,"file":"CoordsUtils.js","sources":["../../src/Utils/CoordsUtils.ts"],"sourcesContent":["import type { TMeters, TRadians } from '@hellpig/anarchy-engine/Math';\nimport { getAzimuthFromDirection, getElevationFromDirection } from '@hellpig/anarchy-engine/Math';\nimport type { TReadonlyVector3 } from '@hellpig/anarchy-engine/ThreeLib';\nimport { Vector3 } from 'three';\n\ntype TTempCoords = Readonly<{\n coord1: number;\n coord2: number;\n}>;\n\n//Generates an array of angles that could be used for circular movement\nexport function generateAnglesForCircle(numberOfPoints: number, numberOfCircles: number = 1, startAngle: number = 0): ReadonlyArray<TRadians> {\n let angleArray: ReadonlyArray<TRadians> = [];\n const fullCircle: TRadians = (2 * Math.PI * numberOfCircles) as TRadians;\n const angleStep: TRadians = (fullCircle / numberOfPoints) as TRadians;\n\n // eslint-disable-next-line functional/no-loop-statements\n for (let i: number = 0; i <= numberOfPoints; i++) {\n angleArray = [...angleArray, (startAngle + i * angleStep) as TRadians];\n }\n\n return angleArray;\n}\n\n// Generates coords for circular movement\nfunction createCirclePath(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: TTempCoords): ReadonlyArray<TTempCoords> {\n return angleArray.map((angle: TRadians) => {\n return {\n coord1: Math.cos(angle) * radius + circleCenter.coord1,\n coord2: Math.sin(angle) * radius + circleCenter.coord2\n };\n });\n}\n\nexport function createCirclePathXY(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.x, coord2: circleCenter.y }).map((coords: TTempCoords): Vector3 => new Vector3(coords.coord1, coords.coord2, circleCenter.z));\n}\n\nexport function createCirclePathXZ(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.x, coord2: circleCenter.z }).map((coords: TTempCoords): Vector3 => new Vector3(coords.coord1, circleCenter.y, coords.coord2));\n}\n\nexport function createCirclePathYZ(angleArray: ReadonlyArray<TRadians>, radius: TMeters, circleCenter: Vector3): ReadonlyArray<Vector3> {\n return createCirclePath(angleArray, radius, { coord1: circleCenter.y, coord2: circleCenter.z }).map((coords: TTempCoords): Vector3 => new Vector3(circleCenter.x, coords.coord1, coords.coord2));\n}\n\nexport function getMouseAzimuthAndElevation(mousePosition: TReadonlyVector3, playerPosition: TReadonlyVector3): Readonly<{ azimuth: TRadians; elevation: TRadians }> {\n const direction: TReadonlyVector3 = mousePosition.clone().sub(playerPosition).normalize();\n const azimuth: TRadians = getAzimuthFromDirection(direction);\n const elevation: TRadians = getElevationFromDirection(direction);\n\n return { azimuth, elevation };\n}\n"],"names":["generateAnglesForCircle","numberOfPoints","numberOfCircles","startAngle","angleArray","angleStep","Math","PI","i","createCirclePath","radius","circleCenter","map","angle","coord1","cos","coord2","sin","createCirclePathXY","x","y","coords","Vector3","z","createCirclePathXZ","createCirclePathYZ","getMouseAzimuthAndElevation","mousePosition","playerPosition","direction","clone","sub","normalize","azimuth","getAzimuthFromDirection","elevation","getElevationFromDirection"],"mappings":"uHAWO,SAASA,wBAAwBC,eAAwBC,gBAA0B,EAAGC,WAAqB,GAChH,IAAIC,WAAsC,GAC1C,MACMC,UADwB,EAAIC,KAAKC,GAAKL,gBACFD,eAG1C,IAAA,IAASO,EAAY,EAAGA,GAAKP,eAAgBO,IAC3CJ,WAAa,IAAIA,WAAaD,WAAaK,EAAIH,WAGjD,OAAOD,UACT,CAGA,SAASK,iBAAiBL,WAAqCM,OAAiBC,cAC9E,OAAOP,WAAWQ,IAAKC,QACd,CACLC,OAAQR,KAAKS,IAAIF,OAASH,OAASC,aAAaG,OAChDE,OAAQV,KAAKW,IAAIJ,OAASH,OAASC,aAAaK,SAGtD,CAEO,SAASE,mBAAmBd,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaQ,EAAGH,OAAQL,aAAaS,IAAKR,IAAKS,QAAiC,IAAIC,QAAQD,OAAOP,OAAQO,OAAOL,OAAQL,aAAaY,GAC/L,CAEO,SAASC,mBAAmBpB,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaQ,EAAGH,OAAQL,aAAaY,IAAKX,IAAKS,QAAiC,IAAIC,QAAQD,OAAOP,OAAQH,aAAaS,EAAGC,OAAOL,QAC1L,CAEO,SAASS,mBAAmBrB,WAAqCM,OAAiBC,cACvF,OAAOF,iBAAiBL,WAAYM,OAAQ,CAAEI,OAAQH,aAAaS,EAAGJ,OAAQL,aAAaY,IAAKX,IAAKS,QAAiC,IAAIC,QAAQX,aAAaQ,EAAGE,OAAOP,OAAQO,OAAOL,QAC1L,CAEO,SAASU,4BAA4BC,cAAiCC,gBAC3E,MAAMC,UAA8BF,cAAcG,QAAQC,IAAIH,gBAAgBI,YAI9E,MAAO,CAAEC,QAHiBC,wBAAwBL,WAGhCM,UAFUC,0BAA0BP,WAGxD"}
@@ -1,4 +1,4 @@
1
- import { Locale } from 'date-fns/locale/types';
1
+ import { Locale } from '../../../../node_modules/date-fns/locale/types.d.ts';
2
2
  export declare function getDuration(minutes: number, locale: string, unit?: 'long' | 'short' | 'narrow'): string;
3
3
  export declare const toDate: (date: string, locale: Locale) => string;
4
4
  export declare const toTime: (date: string, locale: Locale) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"DestroyUtils.js","sources":["../../src/Utils/DestroyUtils.ts"],"sourcesContent":["import type { TAbstractEntity } from '@Anarchy/Engine/Abstract';\nimport type { TAnyAudio } from '@Anarchy/Engine/Audio';\nimport type { TAnyMaterialWrapper, TMaterials } from '@Anarchy/Engine/Material';\nimport type { TWithModel3d, TWithModel3dEntities } from '@Anarchy/Engine/Models3d';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { AnimationAction, AnimationClip, Material, Object3D, PositionalAudio } from 'three';\nimport { Mesh, Texture } from 'three';\n\nimport { hasGeometry, hasMaterial, hasTransformDrive } from './CheckUtils';\nimport { isWrapper } from './WrapperHelpers';\n\nexport function disposeGltf(gltf: Object3D | null): void {\n if (!gltf) return;\n\n gltf.removeFromParent();\n\n gltf.traverse((child: Object3D): void => {\n if (child instanceof Mesh) {\n if (child.geometry) (child as any).geometry?.dispose();\n\n const materials: ReadonlyArray<Material> = Array.isArray(child.material) ? child.material : [child.material];\n disposeMaterialDeep(materials);\n }\n });\n\n // eslint-disable-next-line functional/immutable-data\n if (isDefined((gltf as any).animations)) gltf.animations.length = 0;\n // eslint-disable-next-line functional/immutable-data\n gltf.userData = {};\n gltf.clear?.();\n // eslint-disable-next-line functional/immutable-data\n gltf.children.length = 0;\n gltf = null;\n}\n\nexport function destroyTransformDriveInEntity(entity: unknown): void {\n if (!hasTransformDrive(entity)) return;\n entity.drive.destroy$.next();\n entity.driveToTargetConnector.destroy$.next();\n}\n\nexport function destroyMaterialInEntity<T extends { material: TMaterials | TAnyMaterialWrapper | ReadonlyArray<TMaterials> | ReadonlyArray<TAnyMaterialWrapper> }>(entity: T): void {\n if (isNotDefined(entity)) return;\n if (!hasMaterial(entity)) return;\n if (isNotDefined(entity.material)) return;\n\n const materials = Array.isArray(entity.material) ? entity.material : [entity.material];\n disposeMaterialDeep(materials);\n\n // eslint-disable-next-line functional/immutable-data\n entity.material = null as any;\n}\n\nexport function disposeMaterialDeep(material: Material | TAnyMaterialWrapper | ReadonlyArray<Material> | ReadonlyArray<TAnyMaterialWrapper> | undefined | null): void {\n if (isNotDefined(material)) return;\n const materials: ReadonlyArray<Material> | ReadonlyArray<TAnyMaterialWrapper> = Array.isArray(material) ? material : [material];\n\n materials.forEach((material: Material | TAnyMaterialWrapper | null): void => {\n if (isNotDefined(material)) return;\n if (isWrapper(material)) {\n material.destroy$.next();\n return;\n }\n\n Object.values(material).forEach((value: any): void => {\n if (value instanceof Texture) value.dispose();\n });\n\n material.dispose();\n });\n}\n\nexport function destroyGeometryInEntity(entity: unknown): void {\n if (!hasGeometry(entity)) return;\n\n entity.geometry?.dispose?.();\n (entity as any).skeleton?.dispose?.();\n // eslint-disable-next-line functional/immutable-data\n entity.geometry = null;\n}\n\nexport function removeFromParent(entity: any): void {\n if (isDefined(entity.removeFromParent)) return entity.removeFromParent();\n return entity.parent?.remove(entity);\n}\n\nexport function stopParenting(entity: any): void {\n if (typeof entity.traverse === 'function') {\n entity.children?.forEach((child: any | undefined): void => {\n try {\n child?.traverse((descendant: any): void => {\n if (descendant.parent?.remove) descendant.parent.remove(descendant);\n });\n } catch (e: unknown) {\n console.log('Destroy: [stopParenting] Failed to traverse child:', e);\n }\n });\n }\n}\n\nexport function destroyModel3dAnimationEntities({ model3dSource, mixer, actions }: TAbstractEntity<TWithModel3dEntities>): void {\n if (isNotDefined(mixer)) return;\n\n Object.values(actions).forEach((action: AnimationAction): void => {\n action.stop();\n action.reset();\n mixer.uncacheAction(action.getClip(), action.getRoot());\n });\n\n mixer.stopAllAction();\n\n mixer.uncacheRoot(model3dSource);\n\n model3dSource.animations?.forEach((clip: AnimationClip): void => {\n mixer.uncacheClip(clip);\n mixer.uncacheAction(clip);\n });\n\n // eslint-disable-next-line functional/immutable-data\n model3dSource.animations.length = 0;\n}\n\nexport function destroyAudio(entity: TAnyAudio): void {\n if (isNotDefined(entity)) return;\n\n try {\n entity.stop?.();\n entity.disconnect?.();\n } catch {\n console.warn('Audio: failed to stop or disconnect audio (probably already stopped or disconnected)');\n }\n\n // eslint-disable-next-line functional/immutable-data\n entity.buffer = null as any;\n // eslint-disable-next-line functional/immutable-data\n entity.listener = null as any;\n // eslint-disable-next-line functional/immutable-data\n entity.source = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined((entity as PositionalAudio).panner)) (entity as PositionalAudio).panner = null as any;\n\n entity.removeFromParent();\n entity.clear?.();\n}\n\nexport function genericEntityCleanUp(entity: any): void {\n if (isNotDefined(entity)) return;\n\n //Tell the children that they have no parent anymore\n stopParenting(entity);\n\n //Remove from parent (scene)\n removeFromParent(entity);\n\n //Clean up transform drive\n destroyTransformDriveInEntity(entity);\n\n //Trigger destroy$ for model3d\n if (isDefined((entity as unknown as TWithModel3d).model3d)) (entity as unknown as TWithModel3d).model3d.destroy$.next();\n\n // Destroy Threejs fields and resources\n destroyGeometryInEntity(entity);\n destroyMaterialInEntity(entity);\n\n // Clear children if possible\n (entity as any).destroy$?.next();\n\n //Not the best solution, but for some entities (e.g., spatial grids), we need to call .clear() after destroy$.next() kinda done,\n setTimeout((): void => {\n // Clear children if possible\n (entity as any).clear?.();\n }, 10);\n\n // Dispose itself if possible\n (entity as any).dispose?.();\n}\n"],"names":["disposeGltf","gltf","removeFromParent","traverse","child","Mesh","geometry","dispose","disposeMaterialDeep","Array","isArray","material","isDefined","animations","length","userData","clear","children","destroyTransformDriveInEntity","entity","hasTransformDrive","drive","destroy$","next","driveToTargetConnector","destroyMaterialInEntity","isNotDefined","hasMaterial","forEach","isWrapper","Object","values","value","Texture","destroyGeometryInEntity","hasGeometry","skeleton","parent","remove","stopParenting","descendant","e","console","log","destroyModel3dAnimationEntities","model3dSource","mixer","actions","action","stop","reset","uncacheAction","getClip","getRoot","stopAllAction","uncacheRoot","clip","uncacheClip","destroyAudio","disconnect","warn","buffer","listener","source","panner","genericEntityCleanUp","model3d","setTimeout"],"mappings":"yOAWO,SAASA,YAAYC,MACrBA,OAELA,KAAKC,mBAELD,KAAKE,SAAUC,QACTA,iBAAiBC,OACfD,MAAME,UAAWF,MAAcE,UAAUC,UAG7CC,oBAD2CC,MAAMC,QAAQN,MAAMO,UAAYP,MAAMO,SAAW,CAACP,MAAMO,cAMnGC,UAAWX,KAAaY,cAAaZ,KAAKY,WAAWC,OAAS,GAElEb,KAAKc,SAAW,CAAA,EAChBd,KAAKe,UAELf,KAAKgB,SAASH,OAAS,EACvBb,KAAO,KACT,CAEO,SAASiB,8BAA8BC,QACvCC,kBAAkBD,UACvBA,OAAOE,MAAMC,SAASC,OACtBJ,OAAOK,uBAAuBF,SAASC,OACzC,CAEO,SAASE,wBAAmJN,QAC7JO,aAAaP,SACZQ,YAAYR,UACbO,aAAaP,OAAOR,YAGxBH,oBADkBC,MAAMC,QAAQS,OAAOR,UAAYQ,OAAOR,SAAW,CAACQ,OAAOR,WAI7EQ,OAAOR,SAAW,MACpB,CAEO,SAASH,oBAAoBG,UAC9Be,aAAaf,YAC+DF,MAAMC,QAAQC,UAAYA,SAAW,CAACA,WAE5GiB,QAASjB,YACbe,aAAaf,aACbkB,UAAUlB,WACZA,UAASW,SAASC,QAIpBO,OAAOC,OAAOpB,WAAUiB,QAASI,QAC3BA,iBAAiBC,SAASD,MAAMzB,YAGtCI,UAASJ,aAEb,CAEO,SAAS2B,wBAAwBf,QACjCgB,YAAYhB,UAEjBA,OAAOb,UAAUC,YAChBY,OAAeiB,UAAU7B,YAE1BY,OAAOb,SAAW,KACpB,CAEO,SAASJ,iBAAiBiB,QAC/B,OAAIP,UAAUO,OAAOjB,kBAA0BiB,OAAOjB,mBAC/CiB,OAAOkB,QAAQC,OAAOnB,OAC/B,CAEO,SAASoB,cAAcpB,QACG,mBAApBA,OAAOhB,UAChBgB,OAAOF,UAAUW,QAASxB,QACxB,IACEA,OAAOD,SAAUqC,aACXA,WAAWH,QAAQC,QAAQE,WAAWH,OAAOC,OAAOE,aAE5D,OAASC,GACPC,QAAQC,IAAI,qDAAsDF,EACpE,GAGN,CAEO,SAASG,iCAAgCC,cAAEA,cAAAC,MAAeA,MAAAC,QAAOA,UAClErB,aAAaoB,SAEjBhB,OAAOC,OAAOgB,SAASnB,QAASoB,SAC9BA,OAAOC,OACPD,OAAOE,QACPJ,MAAMK,cAAcH,OAAOI,UAAWJ,OAAOK,aAG/CP,MAAMQ,gBAENR,MAAMS,YAAYV,eAElBA,cAAchC,YAAYe,QAAS4B,OACjCV,MAAMW,YAAYD,MAClBV,MAAMK,cAAcK,QAItBX,cAAchC,WAAWC,OAAS,EACpC,CAEO,SAAS4C,aAAavC,QAC3B,IAAIO,aAAaP,QAAjB,CAEA,IACEA,OAAO8B,SACP9B,OAAOwC,cACT,CAAA,MACEjB,QAAQkB,KAAK,uFACf,CAGAzC,OAAO0C,OAAS,KAEhB1C,OAAO2C,SAAW,KAElB3C,OAAO4C,OAAS,KAEZnD,UAAWO,OAA2B6C,UAAU7C,OAA2B6C,OAAS,MAExF7C,OAAOjB,mBACPiB,OAAOH,SAnBmB,CAoB5B,CAEO,SAASiD,qBAAqB9C,QAC/BO,aAAaP,UAGjBoB,cAAcpB,QAGdjB,iBAAiBiB,QAGjBD,8BAA8BC,QAG1BP,UAAWO,OAAmC+C,UAAW/C,OAAmC+C,QAAQ5C,SAASC,OAGjHW,wBAAwBf,QACxBM,wBAAwBN,QAGvBA,OAAeG,UAAUC,OAG1B4C,WAAW,KAERhD,OAAeH,WACf,IAGFG,OAAeZ,YAClB"}
1
+ {"version":3,"file":"DestroyUtils.js","sources":["../../src/Utils/DestroyUtils.ts"],"sourcesContent":["import type { TAbstractEntity } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAnyAudio } from '@hellpig/anarchy-engine/Audio';\nimport type { TAnyMaterialWrapper, TMaterials } from '@hellpig/anarchy-engine/Material';\nimport type { TWithModel3d, TWithModel3dEntities } from '@hellpig/anarchy-engine/Models3d';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { AnimationAction, AnimationClip, Material, Object3D, PositionalAudio } from 'three';\nimport { Mesh, Texture } from 'three';\n\nimport { hasGeometry, hasMaterial, hasTransformDrive } from './CheckUtils';\nimport { isWrapper } from './WrapperHelpers';\n\nexport function disposeGltf(gltf: Object3D | null): void {\n if (!gltf) return;\n\n gltf.removeFromParent();\n\n gltf.traverse((child: Object3D): void => {\n if (child instanceof Mesh) {\n if (child.geometry) (child as any).geometry?.dispose();\n\n const materials: ReadonlyArray<Material> = Array.isArray(child.material) ? child.material : [child.material];\n disposeMaterialDeep(materials);\n }\n });\n\n // eslint-disable-next-line functional/immutable-data\n if (isDefined((gltf as any).animations)) gltf.animations.length = 0;\n // eslint-disable-next-line functional/immutable-data\n gltf.userData = {};\n gltf.clear?.();\n // eslint-disable-next-line functional/immutable-data\n gltf.children.length = 0;\n gltf = null;\n}\n\nexport function destroyTransformDriveInEntity(entity: unknown): void {\n if (!hasTransformDrive(entity)) return;\n entity.drive.destroy$.next();\n entity.driveToTargetConnector.destroy$.next();\n}\n\nexport function destroyMaterialInEntity<T extends { material: TMaterials | TAnyMaterialWrapper | ReadonlyArray<TMaterials> | ReadonlyArray<TAnyMaterialWrapper> }>(entity: T): void {\n if (isNotDefined(entity)) return;\n if (!hasMaterial(entity)) return;\n if (isNotDefined(entity.material)) return;\n\n const materials = Array.isArray(entity.material) ? entity.material : [entity.material];\n disposeMaterialDeep(materials);\n\n // eslint-disable-next-line functional/immutable-data\n entity.material = null as any;\n}\n\nexport function disposeMaterialDeep(material: Material | TAnyMaterialWrapper | ReadonlyArray<Material> | ReadonlyArray<TAnyMaterialWrapper> | undefined | null): void {\n if (isNotDefined(material)) return;\n const materials: ReadonlyArray<Material> | ReadonlyArray<TAnyMaterialWrapper> = Array.isArray(material) ? material : [material];\n\n materials.forEach((material: Material | TAnyMaterialWrapper | null): void => {\n if (isNotDefined(material)) return;\n if (isWrapper(material)) {\n material.destroy$.next();\n return;\n }\n\n Object.values(material).forEach((value: any): void => {\n if (value instanceof Texture) value.dispose();\n });\n\n material.dispose();\n });\n}\n\nexport function destroyGeometryInEntity(entity: unknown): void {\n if (!hasGeometry(entity)) return;\n\n entity.geometry?.dispose?.();\n (entity as any).skeleton?.dispose?.();\n // eslint-disable-next-line functional/immutable-data\n entity.geometry = null;\n}\n\nexport function removeFromParent(entity: any): void {\n if (isDefined(entity.removeFromParent)) return entity.removeFromParent();\n return entity.parent?.remove(entity);\n}\n\nexport function stopParenting(entity: any): void {\n if (typeof entity.traverse === 'function') {\n entity.children?.forEach((child: any | undefined): void => {\n try {\n child?.traverse((descendant: any): void => {\n if (descendant.parent?.remove) descendant.parent.remove(descendant);\n });\n } catch (e: unknown) {\n console.log('Destroy: [stopParenting] Failed to traverse child:', e);\n }\n });\n }\n}\n\nexport function destroyModel3dAnimationEntities({ model3dSource, mixer, actions }: TAbstractEntity<TWithModel3dEntities>): void {\n if (isNotDefined(mixer)) return;\n\n Object.values(actions).forEach((action: AnimationAction): void => {\n action.stop();\n action.reset();\n mixer.uncacheAction(action.getClip(), action.getRoot());\n });\n\n mixer.stopAllAction();\n\n mixer.uncacheRoot(model3dSource);\n\n model3dSource.animations?.forEach((clip: AnimationClip): void => {\n mixer.uncacheClip(clip);\n mixer.uncacheAction(clip);\n });\n\n // eslint-disable-next-line functional/immutable-data\n model3dSource.animations.length = 0;\n}\n\nexport function destroyAudio(entity: TAnyAudio): void {\n if (isNotDefined(entity)) return;\n\n try {\n entity.stop?.();\n entity.disconnect?.();\n } catch {\n console.warn('Audio: failed to stop or disconnect audio (probably already stopped or disconnected)');\n }\n\n // eslint-disable-next-line functional/immutable-data\n entity.buffer = null as any;\n // eslint-disable-next-line functional/immutable-data\n entity.listener = null as any;\n // eslint-disable-next-line functional/immutable-data\n entity.source = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined((entity as PositionalAudio).panner)) (entity as PositionalAudio).panner = null as any;\n\n entity.removeFromParent();\n entity.clear?.();\n}\n\nexport function genericEntityCleanUp(entity: any): void {\n if (isNotDefined(entity)) return;\n\n //Tell the children that they have no parent anymore\n stopParenting(entity);\n\n //Remove from parent (scene)\n removeFromParent(entity);\n\n //Clean up transform drive\n destroyTransformDriveInEntity(entity);\n\n //Trigger destroy$ for model3d\n if (isDefined((entity as unknown as TWithModel3d).model3d)) (entity as unknown as TWithModel3d).model3d.destroy$.next();\n\n // Destroy Threejs fields and resources\n destroyGeometryInEntity(entity);\n destroyMaterialInEntity(entity);\n\n // Clear children if possible\n (entity as any).destroy$?.next();\n\n //Not the best solution, but for some entities (e.g., spatial grids), we need to call .clear() after destroy$.next() kinda done,\n setTimeout((): void => {\n // Clear children if possible\n (entity as any).clear?.();\n }, 10);\n\n // Dispose itself if possible\n (entity as any).dispose?.();\n}\n"],"names":["disposeGltf","gltf","removeFromParent","traverse","child","Mesh","geometry","dispose","disposeMaterialDeep","Array","isArray","material","isDefined","animations","length","userData","clear","children","destroyTransformDriveInEntity","entity","hasTransformDrive","drive","destroy$","next","driveToTargetConnector","destroyMaterialInEntity","isNotDefined","hasMaterial","forEach","isWrapper","Object","values","value","Texture","destroyGeometryInEntity","hasGeometry","skeleton","parent","remove","stopParenting","descendant","e","console","log","destroyModel3dAnimationEntities","model3dSource","mixer","actions","action","stop","reset","uncacheAction","getClip","getRoot","stopAllAction","uncacheRoot","clip","uncacheClip","destroyAudio","disconnect","warn","buffer","listener","source","panner","genericEntityCleanUp","model3d","setTimeout"],"mappings":"yOAWO,SAASA,YAAYC,MACrBA,OAELA,KAAKC,mBAELD,KAAKE,SAAUC,QACTA,iBAAiBC,OACfD,MAAME,UAAWF,MAAcE,UAAUC,UAG7CC,oBAD2CC,MAAMC,QAAQN,MAAMO,UAAYP,MAAMO,SAAW,CAACP,MAAMO,cAMnGC,UAAWX,KAAaY,cAAaZ,KAAKY,WAAWC,OAAS,GAElEb,KAAKc,SAAW,CAAA,EAChBd,KAAKe,UAELf,KAAKgB,SAASH,OAAS,EACvBb,KAAO,KACT,CAEO,SAASiB,8BAA8BC,QACvCC,kBAAkBD,UACvBA,OAAOE,MAAMC,SAASC,OACtBJ,OAAOK,uBAAuBF,SAASC,OACzC,CAEO,SAASE,wBAAmJN,QAC7JO,aAAaP,SACZQ,YAAYR,UACbO,aAAaP,OAAOR,YAGxBH,oBADkBC,MAAMC,QAAQS,OAAOR,UAAYQ,OAAOR,SAAW,CAACQ,OAAOR,WAI7EQ,OAAOR,SAAW,MACpB,CAEO,SAASH,oBAAoBG,UAC9Be,aAAaf,YAC+DF,MAAMC,QAAQC,UAAYA,SAAW,CAACA,WAE5GiB,QAASjB,YACbe,aAAaf,aACbkB,UAAUlB,WACZA,UAASW,SAASC,QAIpBO,OAAOC,OAAOpB,WAAUiB,QAASI,QAC3BA,iBAAiBC,SAASD,MAAMzB,YAGtCI,UAASJ,aAEb,CAEO,SAAS2B,wBAAwBf,QACjCgB,YAAYhB,UAEjBA,OAAOb,UAAUC,YAChBY,OAAeiB,UAAU7B,YAE1BY,OAAOb,SAAW,KACpB,CAEO,SAASJ,iBAAiBiB,QAC/B,OAAIP,UAAUO,OAAOjB,kBAA0BiB,OAAOjB,mBAC/CiB,OAAOkB,QAAQC,OAAOnB,OAC/B,CAEO,SAASoB,cAAcpB,QACG,mBAApBA,OAAOhB,UAChBgB,OAAOF,UAAUW,QAASxB,QACxB,IACEA,OAAOD,SAAUqC,aACXA,WAAWH,QAAQC,QAAQE,WAAWH,OAAOC,OAAOE,aAE5D,OAASC,GACPC,QAAQC,IAAI,qDAAsDF,EACpE,GAGN,CAEO,SAASG,iCAAgCC,cAAEA,cAAAC,MAAeA,MAAAC,QAAOA,UAClErB,aAAaoB,SAEjBhB,OAAOC,OAAOgB,SAASnB,QAASoB,SAC9BA,OAAOC,OACPD,OAAOE,QACPJ,MAAMK,cAAcH,OAAOI,UAAWJ,OAAOK,aAG/CP,MAAMQ,gBAENR,MAAMS,YAAYV,eAElBA,cAAchC,YAAYe,QAAS4B,OACjCV,MAAMW,YAAYD,MAClBV,MAAMK,cAAcK,QAItBX,cAAchC,WAAWC,OAAS,EACpC,CAEO,SAAS4C,aAAavC,QAC3B,IAAIO,aAAaP,QAAjB,CAEA,IACEA,OAAO8B,SACP9B,OAAOwC,cACT,CAAA,MACEjB,QAAQkB,KAAK,uFACf,CAGAzC,OAAO0C,OAAS,KAEhB1C,OAAO2C,SAAW,KAElB3C,OAAO4C,OAAS,KAEZnD,UAAWO,OAA2B6C,UAAU7C,OAA2B6C,OAAS,MAExF7C,OAAOjB,mBACPiB,OAAOH,SAnBmB,CAoB5B,CAEO,SAASiD,qBAAqB9C,QAC/BO,aAAaP,UAGjBoB,cAAcpB,QAGdjB,iBAAiBiB,QAGjBD,8BAA8BC,QAG1BP,UAAWO,OAAmC+C,UAAW/C,OAAmC+C,QAAQ5C,SAASC,OAGjHW,wBAAwBf,QACxBM,wBAAwBN,QAGvBA,OAAeG,UAAUC,OAG1B4C,WAAW,KAERhD,OAAeH,WACf,IAGFG,OAAeZ,YAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DomUtils.js","sources":["../../src/Utils/DomUtils.ts"],"sourcesContent":["import type { TAmbientContext } from '@Anarchy/Engine/Context';\nimport type { TAppGlobalContainer, TContainerDecorator } from '@Anarchy/Engine/Global';\nimport { ContainerEvents } from '@Anarchy/Engine/Global/Constants';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscriber } from 'rxjs';\nimport { distinctUntilChanged, fromEvent, map, merge, Observable, startWith } from 'rxjs';\n\nexport function findDomElement(ambientContext: TAmbientContext, canvasSelector: string): HTMLElement | null {\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n return appContainer.document.querySelector(canvasSelector);\n}\n\nexport function createDomElement(ambientContext: TAmbientContext, tagName: string, parent?: HTMLElement | undefined, classes?: ReadonlyArray<string>, id?: string, style?: string): HTMLElement {\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n const element: HTMLElement = appContainer.document.createElement(tagName);\n\n if (isDefined(id)) element.setAttribute('id', id);\n if (isDefined(classes)) element.setAttribute('class', classes.join(' '));\n if (isDefined(style)) element.setAttribute('style', style);\n\n (parent ?? appContainer.document.body).appendChild(element);\n\n return element;\n}\n\nexport function isCanvasElement(element: HTMLElement | unknown): element is HTMLCanvasElement {\n return element instanceof HTMLCanvasElement;\n}\n\nexport function getOrCreateCanvasFromSelector(ambientContext: TAmbientContext, fullSelector: string): HTMLCanvasElement {\n const trimmed: string = fullSelector.trim();\n if (!trimmed) throw new Error('Canvas selector must not be empty');\n\n const parts: Array<string> = trimmed.split(/\\s+/);\n // eslint-disable-next-line functional/immutable-data\n const canvasSelector: string | undefined = parts.pop();\n if (isNotDefined(canvasSelector)) throw new Error('Canvas selector must be defined');\n const parentSelector: string = parts.join(' ');\n\n const parent: HTMLElement = parentSelector ? (document.querySelector(parentSelector) as HTMLElement) : document.body;\n if (isNotDefined(parent)) throw new Error(`Parent element not found for selector: \"${parentSelector}\"`);\n\n let canvas: HTMLCanvasElement | null = parent.querySelector(canvasSelector) as HTMLCanvasElement | null;\n if (isDefined(canvas)) return canvas;\n\n const id: string = getIdFromSelector(canvasSelector);\n const classes: ReadonlyArray<string> = [];\n canvas = createDomElement(ambientContext, 'canvas', undefined, classes, id) as HTMLCanvasElement;\n parent.appendChild(canvas);\n\n return canvas;\n}\n\nfunction getIdFromSelector(selector: string): string {\n const id: string | undefined = selector.match(/#([a-zA-Z0-9\\-_]+)/)?.[1];\n if (isNotDefined(id)) throw new Error(`Canvas selector must contain id: \"${selector}\"`);\n return id;\n}\n\nexport function getWindowFromDomElement(element: HTMLElement | Window): TAppGlobalContainer | null {\n //SSR\n if (typeof window === 'undefined') return null;\n if (element === window) return window;\n return (element as Element).ownerDocument.defaultView;\n}\n\nexport function isAppGlobalContainer(container: TAppGlobalContainer | TContainerDecorator | HTMLElement): container is TAppGlobalContainer {\n return isDefined((container as TAppGlobalContainer).document);\n}\n\nfunction getRect(container: HTMLElement | TAppGlobalContainer): DOMRect {\n if (isAppGlobalContainer(container)) {\n return {\n top: 0,\n left: 0,\n width: window.innerWidth,\n height: window.innerHeight\n } as DOMRect;\n } else {\n return container.getBoundingClientRect();\n }\n}\n\nexport function observeContainerRect(container: HTMLElement | TAppGlobalContainer): Observable<DOMRect> {\n const resizeObserver$ = new Observable<DOMRect>((observer: Subscriber<DOMRect>) => {\n if (isAppGlobalContainer(container)) return undefined;\n\n const resizeObserver = new ResizeObserver((): void => observer.next(getRect(container)));\n resizeObserver.observe(container as HTMLElement);\n\n return (): void => resizeObserver.disconnect();\n });\n\n const generalEvents$: Observable<DOMRect> = merge(\n fromEvent(window, ContainerEvents.Resize),\n fromEvent(window, ContainerEvents.Scroll, { passive: true }),\n fromEvent(document, ContainerEvents.FullscreenChange),\n fromEvent(window, ContainerEvents.OrientationChange),\n fromEvent(document, ContainerEvents.VisibilityChange)\n ).pipe(map((): DOMRect => getRect(container)));\n\n return merge(generalEvents$, resizeObserver$).pipe(\n startWith(getRect(container)),\n distinctUntilChanged((a: DOMRect, b: DOMRect): boolean => a.top === b.top && a.left === b.left && a.width === b.width && a.height === b.height)\n );\n}\n\nexport function observeResize(\n container: TAppGlobalContainer | HTMLElement,\n callback: (list: ReadonlyArray<ResizeObserverEntry> | Event) => void\n): Readonly<{\n stop: () => void;\n}> {\n if (isAppGlobalContainer(container)) {\n window.addEventListener('resize', callback);\n return {\n stop: (): void => window.removeEventListener('resize', callback)\n };\n }\n\n const resizeObserver = new ResizeObserver(callback);\n resizeObserver.observe(container);\n\n return {\n stop: (): void => {\n resizeObserver.unobserve(container);\n resizeObserver.disconnect();\n }\n };\n}\n\nexport function injectStyle(ambientContext: TAmbientContext, css: string, id: string): void {\n if (document.getElementById(id)) return;\n\n const tag: HTMLStyleElement = document.createElement('style');\n // eslint-disable-next-line functional/immutable-data\n tag.id = id;\n // eslint-disable-next-line functional/immutable-data\n tag.textContent = css;\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n appContainer.document.head.appendChild(tag);\n}\n"],"names":["findDomElement","ambientContext","canvasSelector","globalContainer","getAppContainer","document","querySelector","createDomElement","tagName","parent","classes","id","style","appContainer","element","createElement","isDefined","setAttribute","join","body","appendChild","isCanvasElement","HTMLCanvasElement","getOrCreateCanvasFromSelector","fullSelector","trimmed","trim","Error","parts","split","pop","isNotDefined","parentSelector","canvas","selector","match","getIdFromSelector","getWindowFromDomElement","window","ownerDocument","defaultView","isAppGlobalContainer","container","getRect","top","left","width","innerWidth","height","innerHeight","getBoundingClientRect","observeContainerRect","resizeObserver$","Observable","observer","resizeObserver","ResizeObserver","next","observe","disconnect","generalEvents$","merge","fromEvent","ContainerEvents","Resize","Scroll","passive","FullscreenChange","OrientationChange","VisibilityChange","pipe","map","startWith","distinctUntilChanged","a","b","observeResize","callback","addEventListener","stop","removeEventListener","unobserve","injectStyle","css","getElementById","tag","textContent","head"],"mappings":"2pBAOO,SAASA,eAAeC,eAAiCC,gBAE9D,OAD0CD,eAAeE,gBAAgBC,kBACrDC,SAASC,cAAcJ,eAC7C,CAEO,SAASK,iBAAiBN,eAAiCO,QAAiBC,OAAkCC,QAAiCC,GAAaC,OACjK,MAAMC,aAAoCZ,eAAeE,gBAAgBC,kBACnEU,QAAuBD,aAAaR,SAASU,cAAcP,SAQjE,OANIQ,UAAUL,KAAKG,QAAQG,aAAa,KAAMN,IAC1CK,UAAUN,UAAUI,QAAQG,aAAa,QAASP,QAAQQ,KAAK,MAC/DF,UAAUJ,QAAQE,QAAQG,aAAa,QAASL,QAEnDH,QAAUI,aAAaR,SAASc,MAAMC,YAAYN,SAE5CA,OACT,CAEO,SAASO,gBAAgBP,SAC9B,OAAOA,mBAAmBQ,iBAC5B,CAEO,SAASC,8BAA8BtB,eAAiCuB,cAC7E,MAAMC,QAAkBD,aAAaE,OACrC,IAAKD,QAAS,MAAM,IAAIE,MAAM,qCAE9B,MAAMC,MAAuBH,QAAQI,MAAM,OAErC3B,eAAqC0B,MAAME,MACjD,GAAIC,aAAa7B,gBAAiB,MAAM,IAAIyB,MAAM,mCAClD,MAAMK,eAAyBJ,MAAMV,KAAK,KAEpCT,OAAsBuB,eAAkB3B,SAASC,cAAc0B,gBAAkC3B,SAASc,KAChH,GAAIY,aAAatB,QAAS,MAAM,IAAIkB,MAAM,2CAA2CK,mBAErF,IAAIC,OAAmCxB,OAAOH,cAAcJ,gBAC5D,OAAIc,UAAUiB,UAIdA,OAAS1B,iBAAiBN,eAAgB,cAAU,EADb,GAOzC,SAA2BiC,UACzB,MAAMvB,GAAyBuB,SAASC,MAAM,wBAAwB,GACtE,GAAIJ,aAAapB,IAAK,MAAM,IAAIgB,MAAM,qCAAqCO,aAC3E,OAAOvB,EACT,CAZqByB,CAAkBlC,iBAGrCO,OAAOW,YAAYa,SALWA,MAQhC,CAQO,SAASI,wBAAwBvB,SAEtC,MAAsB,oBAAXwB,OAA+B,KACtCxB,UAAYwB,OAAeA,OACvBxB,QAAoByB,cAAcC,WAC5C,CAEO,SAASC,qBAAqBC,WACnC,OAAO1B,UAAW0B,UAAkCrC,SACtD,CAEA,SAASsC,QAAQD,WACf,OAAID,qBAAqBC,WAChB,CACLE,IAAK,EACLC,KAAM,EACNC,MAAOR,OAAOS,WACdC,OAAQV,OAAOW,aAGVP,UAAUQ,uBAErB,CAEO,SAASC,qBAAqBT,WACnC,MAAMU,gBAAkB,IAAIC,WAAqBC,WAC/C,GAAIb,qBAAqBC,WAAY,OAErC,MAAMa,eAAiB,IAAIC,eAAe,IAAYF,SAASG,KAAKd,QAAQD,aAG5E,OAFAa,eAAeG,QAAQhB,WAEhB,IAAYa,eAAeI,eAG9BC,eAAsCC,MAC1CC,UAAUxB,OAAQyB,gBAAgBC,QAClCF,UAAUxB,OAAQyB,gBAAgBE,OAAQ,CAAEC,SAAS,IACrDJ,UAAUzD,SAAU0D,gBAAgBI,kBACpCL,UAAUxB,OAAQyB,gBAAgBK,mBAClCN,UAAUzD,SAAU0D,gBAAgBM,mBACpCC,KAAKC,IAAI,IAAe5B,QAAQD,aAElC,OAAOmB,MAAMD,eAAgBR,iBAAiBkB,KAC5CE,UAAU7B,QAAQD,YAClB+B,qBAAqB,CAACC,EAAYC,IAAwBD,EAAE9B,MAAQ+B,EAAE/B,KAAO8B,EAAE7B,OAAS8B,EAAE9B,MAAQ6B,EAAE5B,QAAU6B,EAAE7B,OAAS4B,EAAE1B,SAAW2B,EAAE3B,QAE5I,CAEO,SAAS4B,cACdlC,UACAmC,UAIA,GAAIpC,qBAAqBC,WAEvB,OADAJ,OAAOwC,iBAAiB,SAAUD,UAC3B,CACLE,KAAM,IAAYzC,OAAO0C,oBAAoB,SAAUH,WAI3D,MAAMtB,eAAiB,IAAIC,eAAeqB,UAG1C,OAFAtB,eAAeG,QAAQhB,WAEhB,CACLqC,KAAM,KACJxB,eAAe0B,UAAUvC,WACzBa,eAAeI,cAGrB,CAEO,SAASuB,YAAYjF,eAAiCkF,IAAaxE,IACxE,GAAIN,SAAS+E,eAAezE,IAAK,OAEjC,MAAM0E,IAAwBhF,SAASU,cAAc,SAErDsE,IAAI1E,GAAKA,GAET0E,IAAIC,YAAcH,IACwBlF,eAAeE,gBAAgBC,kBAC5DC,SAASkF,KAAKnE,YAAYiE,IACzC"}
1
+ {"version":3,"file":"DomUtils.js","sources":["../../src/Utils/DomUtils.ts"],"sourcesContent":["import type { TAmbientContext } from '@hellpig/anarchy-engine/Context';\nimport type { TAppGlobalContainer, TContainerDecorator } from '@hellpig/anarchy-engine/Global';\nimport { ContainerEvents } from '@hellpig/anarchy-engine/Global/Constants';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscriber } from 'rxjs';\nimport { distinctUntilChanged, fromEvent, map, merge, Observable, startWith } from 'rxjs';\n\nexport function findDomElement(ambientContext: TAmbientContext, canvasSelector: string): HTMLElement | null {\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n return appContainer.document.querySelector(canvasSelector);\n}\n\nexport function createDomElement(ambientContext: TAmbientContext, tagName: string, parent?: HTMLElement | undefined, classes?: ReadonlyArray<string>, id?: string, style?: string): HTMLElement {\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n const element: HTMLElement = appContainer.document.createElement(tagName);\n\n if (isDefined(id)) element.setAttribute('id', id);\n if (isDefined(classes)) element.setAttribute('class', classes.join(' '));\n if (isDefined(style)) element.setAttribute('style', style);\n\n (parent ?? appContainer.document.body).appendChild(element);\n\n return element;\n}\n\nexport function isCanvasElement(element: HTMLElement | unknown): element is HTMLCanvasElement {\n return element instanceof HTMLCanvasElement;\n}\n\nexport function getOrCreateCanvasFromSelector(ambientContext: TAmbientContext, fullSelector: string): HTMLCanvasElement {\n const trimmed: string = fullSelector.trim();\n if (!trimmed) throw new Error('Canvas selector must not be empty');\n\n const parts: Array<string> = trimmed.split(/\\s+/);\n // eslint-disable-next-line functional/immutable-data\n const canvasSelector: string | undefined = parts.pop();\n if (isNotDefined(canvasSelector)) throw new Error('Canvas selector must be defined');\n const parentSelector: string = parts.join(' ');\n\n const parent: HTMLElement = parentSelector ? (document.querySelector(parentSelector) as HTMLElement) : document.body;\n if (isNotDefined(parent)) throw new Error(`Parent element not found for selector: \"${parentSelector}\"`);\n\n let canvas: HTMLCanvasElement | null = parent.querySelector(canvasSelector) as HTMLCanvasElement | null;\n if (isDefined(canvas)) return canvas;\n\n const id: string = getIdFromSelector(canvasSelector);\n const classes: ReadonlyArray<string> = [];\n canvas = createDomElement(ambientContext, 'canvas', undefined, classes, id) as HTMLCanvasElement;\n parent.appendChild(canvas);\n\n return canvas;\n}\n\nfunction getIdFromSelector(selector: string): string {\n const id: string | undefined = selector.match(/#([a-zA-Z0-9\\-_]+)/)?.[1];\n if (isNotDefined(id)) throw new Error(`Canvas selector must contain id: \"${selector}\"`);\n return id;\n}\n\nexport function getWindowFromDomElement(element: HTMLElement | Window): TAppGlobalContainer | null {\n //SSR\n if (typeof window === 'undefined') return null;\n if (element === window) return window;\n return (element as Element).ownerDocument.defaultView;\n}\n\nexport function isAppGlobalContainer(container: TAppGlobalContainer | TContainerDecorator | HTMLElement): container is TAppGlobalContainer {\n return isDefined((container as TAppGlobalContainer).document);\n}\n\nfunction getRect(container: HTMLElement | TAppGlobalContainer): DOMRect {\n if (isAppGlobalContainer(container)) {\n return {\n top: 0,\n left: 0,\n width: window.innerWidth,\n height: window.innerHeight\n } as DOMRect;\n } else {\n return container.getBoundingClientRect();\n }\n}\n\nexport function observeContainerRect(container: HTMLElement | TAppGlobalContainer): Observable<DOMRect> {\n const resizeObserver$ = new Observable<DOMRect>((observer: Subscriber<DOMRect>) => {\n if (isAppGlobalContainer(container)) return undefined;\n\n const resizeObserver = new ResizeObserver((): void => observer.next(getRect(container)));\n resizeObserver.observe(container as HTMLElement);\n\n return (): void => resizeObserver.disconnect();\n });\n\n const generalEvents$: Observable<DOMRect> = merge(\n fromEvent(window, ContainerEvents.Resize),\n fromEvent(window, ContainerEvents.Scroll, { passive: true }),\n fromEvent(document, ContainerEvents.FullscreenChange),\n fromEvent(window, ContainerEvents.OrientationChange),\n fromEvent(document, ContainerEvents.VisibilityChange)\n ).pipe(map((): DOMRect => getRect(container)));\n\n return merge(generalEvents$, resizeObserver$).pipe(\n startWith(getRect(container)),\n distinctUntilChanged((a: DOMRect, b: DOMRect): boolean => a.top === b.top && a.left === b.left && a.width === b.width && a.height === b.height)\n );\n}\n\nexport function observeResize(\n container: TAppGlobalContainer | HTMLElement,\n callback: (list: ReadonlyArray<ResizeObserverEntry> | Event) => void\n): Readonly<{\n stop: () => void;\n}> {\n if (isAppGlobalContainer(container)) {\n window.addEventListener('resize', callback);\n return {\n stop: (): void => window.removeEventListener('resize', callback)\n };\n }\n\n const resizeObserver = new ResizeObserver(callback);\n resizeObserver.observe(container);\n\n return {\n stop: (): void => {\n resizeObserver.unobserve(container);\n resizeObserver.disconnect();\n }\n };\n}\n\nexport function injectStyle(ambientContext: TAmbientContext, css: string, id: string): void {\n if (document.getElementById(id)) return;\n\n const tag: HTMLStyleElement = document.createElement('style');\n // eslint-disable-next-line functional/immutable-data\n tag.id = id;\n // eslint-disable-next-line functional/immutable-data\n tag.textContent = css;\n const appContainer: TAppGlobalContainer = ambientContext.globalContainer.getAppContainer();\n appContainer.document.head.appendChild(tag);\n}\n"],"names":["findDomElement","ambientContext","canvasSelector","globalContainer","getAppContainer","document","querySelector","createDomElement","tagName","parent","classes","id","style","appContainer","element","createElement","isDefined","setAttribute","join","body","appendChild","isCanvasElement","HTMLCanvasElement","getOrCreateCanvasFromSelector","fullSelector","trimmed","trim","Error","parts","split","pop","isNotDefined","parentSelector","canvas","selector","match","getIdFromSelector","getWindowFromDomElement","window","ownerDocument","defaultView","isAppGlobalContainer","container","getRect","top","left","width","innerWidth","height","innerHeight","getBoundingClientRect","observeContainerRect","resizeObserver$","Observable","observer","resizeObserver","ResizeObserver","next","observe","disconnect","generalEvents$","merge","fromEvent","ContainerEvents","Resize","Scroll","passive","FullscreenChange","OrientationChange","VisibilityChange","pipe","map","startWith","distinctUntilChanged","a","b","observeResize","callback","addEventListener","stop","removeEventListener","unobserve","injectStyle","css","getElementById","tag","textContent","head"],"mappings":"2pBAOO,SAASA,eAAeC,eAAiCC,gBAE9D,OAD0CD,eAAeE,gBAAgBC,kBACrDC,SAASC,cAAcJ,eAC7C,CAEO,SAASK,iBAAiBN,eAAiCO,QAAiBC,OAAkCC,QAAiCC,GAAaC,OACjK,MAAMC,aAAoCZ,eAAeE,gBAAgBC,kBACnEU,QAAuBD,aAAaR,SAASU,cAAcP,SAQjE,OANIQ,UAAUL,KAAKG,QAAQG,aAAa,KAAMN,IAC1CK,UAAUN,UAAUI,QAAQG,aAAa,QAASP,QAAQQ,KAAK,MAC/DF,UAAUJ,QAAQE,QAAQG,aAAa,QAASL,QAEnDH,QAAUI,aAAaR,SAASc,MAAMC,YAAYN,SAE5CA,OACT,CAEO,SAASO,gBAAgBP,SAC9B,OAAOA,mBAAmBQ,iBAC5B,CAEO,SAASC,8BAA8BtB,eAAiCuB,cAC7E,MAAMC,QAAkBD,aAAaE,OACrC,IAAKD,QAAS,MAAM,IAAIE,MAAM,qCAE9B,MAAMC,MAAuBH,QAAQI,MAAM,OAErC3B,eAAqC0B,MAAME,MACjD,GAAIC,aAAa7B,gBAAiB,MAAM,IAAIyB,MAAM,mCAClD,MAAMK,eAAyBJ,MAAMV,KAAK,KAEpCT,OAAsBuB,eAAkB3B,SAASC,cAAc0B,gBAAkC3B,SAASc,KAChH,GAAIY,aAAatB,QAAS,MAAM,IAAIkB,MAAM,2CAA2CK,mBAErF,IAAIC,OAAmCxB,OAAOH,cAAcJ,gBAC5D,OAAIc,UAAUiB,UAIdA,OAAS1B,iBAAiBN,eAAgB,cAAU,EADb,GAOzC,SAA2BiC,UACzB,MAAMvB,GAAyBuB,SAASC,MAAM,wBAAwB,GACtE,GAAIJ,aAAapB,IAAK,MAAM,IAAIgB,MAAM,qCAAqCO,aAC3E,OAAOvB,EACT,CAZqByB,CAAkBlC,iBAGrCO,OAAOW,YAAYa,SALWA,MAQhC,CAQO,SAASI,wBAAwBvB,SAEtC,MAAsB,oBAAXwB,OAA+B,KACtCxB,UAAYwB,OAAeA,OACvBxB,QAAoByB,cAAcC,WAC5C,CAEO,SAASC,qBAAqBC,WACnC,OAAO1B,UAAW0B,UAAkCrC,SACtD,CAEA,SAASsC,QAAQD,WACf,OAAID,qBAAqBC,WAChB,CACLE,IAAK,EACLC,KAAM,EACNC,MAAOR,OAAOS,WACdC,OAAQV,OAAOW,aAGVP,UAAUQ,uBAErB,CAEO,SAASC,qBAAqBT,WACnC,MAAMU,gBAAkB,IAAIC,WAAqBC,WAC/C,GAAIb,qBAAqBC,WAAY,OAErC,MAAMa,eAAiB,IAAIC,eAAe,IAAYF,SAASG,KAAKd,QAAQD,aAG5E,OAFAa,eAAeG,QAAQhB,WAEhB,IAAYa,eAAeI,eAG9BC,eAAsCC,MAC1CC,UAAUxB,OAAQyB,gBAAgBC,QAClCF,UAAUxB,OAAQyB,gBAAgBE,OAAQ,CAAEC,SAAS,IACrDJ,UAAUzD,SAAU0D,gBAAgBI,kBACpCL,UAAUxB,OAAQyB,gBAAgBK,mBAClCN,UAAUzD,SAAU0D,gBAAgBM,mBACpCC,KAAKC,IAAI,IAAe5B,QAAQD,aAElC,OAAOmB,MAAMD,eAAgBR,iBAAiBkB,KAC5CE,UAAU7B,QAAQD,YAClB+B,qBAAqB,CAACC,EAAYC,IAAwBD,EAAE9B,MAAQ+B,EAAE/B,KAAO8B,EAAE7B,OAAS8B,EAAE9B,MAAQ6B,EAAE5B,QAAU6B,EAAE7B,OAAS4B,EAAE1B,SAAW2B,EAAE3B,QAE5I,CAEO,SAAS4B,cACdlC,UACAmC,UAIA,GAAIpC,qBAAqBC,WAEvB,OADAJ,OAAOwC,iBAAiB,SAAUD,UAC3B,CACLE,KAAM,IAAYzC,OAAO0C,oBAAoB,SAAUH,WAI3D,MAAMtB,eAAiB,IAAIC,eAAeqB,UAG1C,OAFAtB,eAAeG,QAAQhB,WAEhB,CACLqC,KAAM,KACJxB,eAAe0B,UAAUvC,WACzBa,eAAeI,cAGrB,CAEO,SAASuB,YAAYjF,eAAiCkF,IAAaxE,IACxE,GAAIN,SAAS+E,eAAezE,IAAK,OAEjC,MAAM0E,IAAwBhF,SAASU,cAAc,SAErDsE,IAAI1E,GAAKA,GAET0E,IAAIC,YAAcH,IACwBlF,eAAeE,gBAAgBC,kBAC5DC,SAASkF,KAAKnE,YAAYiE,IACzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityUtils.js","sources":["../../src/Utils/EntityUtils.ts"],"sourcesContent":["import type { TWrapper } from '@Anarchy/Engine/Abstract';\n\nexport function unWrapEntities<T>(list: ReadonlyArray<TWrapper<T>>): ReadonlyArray<T> {\n return list.map(({ entity }: Readonly<TWrapper<T>>) => entity);\n}\n"],"names":["unWrapEntities","list","map","entity"],"mappings":"AAEO,SAASA,eAAkBC,MAChC,OAAOA,KAAKC,IAAI,EAAGC,iBAAoCA,OACzD"}
1
+ {"version":3,"file":"EntityUtils.js","sources":["../../src/Utils/EntityUtils.ts"],"sourcesContent":["import type { TWrapper } from '@hellpig/anarchy-engine/Abstract';\n\nexport function unWrapEntities<T>(list: ReadonlyArray<TWrapper<T>>): ReadonlyArray<T> {\n return list.map(({ entity }: Readonly<TWrapper<T>>) => entity);\n}\n"],"names":["unWrapEntities","list","map","entity"],"mappings":"AAEO,SAASA,eAAkBC,MAChC,OAAOA,KAAKC,IAAI,EAAGC,iBAAoCA,OACzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryAsyncUtils.js","sources":["../../src/Utils/RegistryAsyncUtils.ts"],"sourcesContent":["import type { LookUpStrategy, TAbstractAsyncEntityRegistry, TAbstractEntityRegistry, TAbstractResourceAsyncRegistry, TAbstractSimpleRegistry, TRegistryPack } from '@Anarchy/Engine/Abstract';\nimport type { TMultitonRegistrable, TRegistrable } from '@Anarchy/Engine/Mixins';\nimport { createDeferredPromise, isDefined } from '@Anarchy/Shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { BehaviorSubject, catchError, filter, map, of, take, takeUntil, timeout } from 'rxjs';\n\nimport { shouldHaveTags } from './RegistryUtils';\nimport { hasTag } from './TagsUtils';\n\nexport function getUniqEntityWithTagsAsync<T extends TRegistrable>(\n tags: ReadonlyArray<string>,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n strategy: LookUpStrategy,\n // TODO should be set from default config\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => shouldHaveTags(entity, tags, strategy), undefined, waitingTime);\n}\n\n// TODO all waiting times should be set from default config\nexport function getAsyncUniqEntityWithTag<T extends TRegistrable>(\n tag: string,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => hasTag(entity, tag), undefined, waitingTime);\n}\n\nexport function getAsyncUniqEntityByNameAsync<T extends TRegistrable>(\n name: string,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => isDefined(entity) && entity.name === name, undefined, waitingTime);\n}\n\nexport function getAsyncUniqEntityByKeyAsync<T>(key: string, registry: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>, waitingTime: number = 3000): Promise<T | undefined> {\n return getValueAsync<T>(registry, (): boolean => isDefined(registry.findByKey(key)), undefined, waitingTime);\n}\n\nexport function getUniqEntityWithTags$<T extends TRegistrable>(\n tags: ReadonlyArray<string>,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n strategy: LookUpStrategy\n): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByTags) ? (registry as TAbstractEntityRegistry<T>).findByTags(tags, strategy) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => shouldHaveTags(pack.value, tags, strategy));\n}\n\nexport function getUniqEntityWithTag$<T extends TRegistrable>(tag: string, registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByTag) ? (registry as TAbstractEntityRegistry<T>).findByTag(tag) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => hasTag(pack.value, tag));\n}\n\nexport function getUniqEntityByName$<T extends TRegistrable>(name: string, registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByName) ? (registry as TAbstractEntityRegistry<T>).findByName(name) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => pack.value.name === name);\n}\n\nexport function getUniqEntityByKey$<T>(key: string, registry: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractSimpleRegistry<T>).findByKey) ? (registry as TAbstractSimpleRegistry<T>).findByKey(key) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToSimpleValue$<T>(registry, (): boolean => isDefined(registry.findByKey(key)));\n}\n\nexport function getEntityValueAsync<T extends TRegistrable | TMultitonRegistrable>(\n reg: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n filterFn: (entity: T) => boolean,\n stopCb?: (stop: () => void) => void,\n // TODO this time should be bigger and different for different entities (DEFAULT_WAITING_TIME + from params)\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getValueAsync<T>(reg as unknown as TAbstractSimpleRegistry<T>, filterFn, stopCb, waitingTime);\n}\n\nexport function getValueAsync<T>(\n reg: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>,\n filterFn: (entity: T) => boolean,\n stopCb?: (stop: () => void) => void,\n // TODO this time should be bigger and different for different entities (DEFAULT_WAITING_TIME + from params)\n waitingTime: number = 3000\n): Promise<T | undefined> {\n const { resolve, promise, reject } = createDeferredPromise<T | undefined>();\n const destroySub$: Subscription = reg.destroy$.subscribe(stop);\n\n reg.added$\n .pipe(\n filter(({ value }: TRegistryPack<T>): boolean => filterFn(value)),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value),\n timeout(waitingTime),\n takeUntil(reg.destroy$),\n catchError((error: any) => {\n // TODO LOGGER: instead of console should be forwarded to some kind of logger\n if (error?.name === 'TimeoutError') console.error(`Cannot get entity async from registry (\"${reg.id}\"): timeout error has occurred`);\n else console.error(`Cannot get entity async from registry (\"${reg.id}\"): unknown error has occurred`);\n return of(undefined);\n })\n )\n .subscribe(resolve);\n\n const result: T | undefined = reg.find(filterFn);\n if (isDefined(result)) {\n resolve(result);\n stop();\n return promise;\n }\n\n function stop(): void {\n reject();\n destroySub$.unsubscribe();\n }\n\n if (isDefined(stopCb)) stopCb(stop);\n\n return promise;\n}\n\nexport const subscribeToSimpleValue$ = <T>(reg: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>, filterFn: (pack: TRegistryPack<T>) => boolean): Observable<T> =>\n reg.added$.pipe(\n filter(filterFn),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value)\n );\n\nexport const subscribeToEntityValue$ = <T extends TRegistrable | TMultitonRegistrable>(\n reg: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n filterFn: (pack: TRegistryPack<T>) => boolean\n): Observable<T> =>\n reg.added$.pipe(\n filter(filterFn),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value)\n );\n"],"names":["getUniqEntityWithTagsAsync","tags","registry","strategy","waitingTime","getEntityValueAsync","entity","shouldHaveTags","getAsyncUniqEntityWithTag","tag","hasTag","getAsyncUniqEntityByNameAsync","name","isDefined","getAsyncUniqEntityByKeyAsync","key","getValueAsync","findByKey","getUniqEntityWithTags$","result","findByTags","BehaviorSubject","asObservable","subscribeToEntityValue$","pack","value","getUniqEntityWithTag$","findByTag","getUniqEntityByName$","findByName","getUniqEntityByKey$","subscribeToSimpleValue$","reg","filterFn","stopCb","resolve","promise","reject","createDeferredPromise","destroySub$","destroy$","subscribe","stop","added$","pipe","filter","take","map","timeout","takeUntil","catchError","error","console","id","of","find","unsubscribe"],"mappings":"y3BASO,SAASA,2BACdC,KACAC,SACAC,SAEAC,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBC,eAAeD,OAAQL,KAAME,eAAW,EAAWC,YACrH,CAGO,SAASI,0BACdC,IACAP,SACAE,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBI,OAAOJ,OAAQG,UAAM,EAAWL,YAClG,CAEO,SAASO,8BACdC,KACAV,SACAE,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBO,UAAUP,SAAWA,OAAOM,OAASA,UAAM,EAAWR,YACxH,CAEO,SAASU,6BAAgCC,IAAab,SAA0EE,YAAsB,KAC3J,OAAOY,cAAiBd,SAAU,IAAeW,UAAUX,SAASe,UAAUF,WAAO,EAAWX,YAClG,CAEO,SAASc,uBACdjB,KACAC,SACAC,UAEA,MAAMgB,OAAwBN,UAAWX,SAAwCkB,YAAelB,SAAwCkB,WAAWnB,KAAME,eAAY,EACrK,OAAIU,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCjB,eAAeiB,KAAKC,MAAOxB,KAAME,UACpH,CAEO,SAASuB,sBAA8CjB,IAAaP,UACzE,MAAMiB,OAAwBN,UAAWX,SAAwCyB,WAAczB,SAAwCyB,UAAUlB,UAAO,EACxJ,OAAII,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCd,OAAOc,KAAKC,MAAOhB,KACtG,CAEO,SAASmB,qBAA6ChB,KAAcV,UACzE,MAAMiB,OAAwBN,UAAWX,SAAwC2B,YAAe3B,SAAwC2B,WAAWjB,WAAQ,EAC3J,OAAIC,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCA,KAAKC,MAAMb,OAASA,KACvG,CAEO,SAASkB,oBAAuBf,IAAab,UAClD,MAAMiB,OAAwBN,UAAWX,SAAwCe,WAAcf,SAAwCe,UAAUF,UAAO,EACxJ,OAAIF,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDS,wBAA2B7B,SAAU,IAAeW,UAAUX,SAASe,UAAUF,MAC1F,CAEO,SAASV,oBACd2B,IACAC,SACAC,OAEA9B,YAAsB,KAEtB,OAAOY,cAAiBgB,IAA8CC,SAAUC,OAAQ9B,YAC1F,CAEO,SAASY,cACdgB,IACAC,SACAC,OAEA9B,YAAsB,KAEtB,MAAM+B,QAAEA,QAAAC,QAASA,QAAAC,OAASA,QAAWC,wBAC/BC,YAA4BP,IAAIQ,SAASC,UAAUC,MAEzDV,IAAIW,OACDC,KACCC,OAAO,EAAGpB,eAAuCQ,SAASR,QAC1DqB,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC,OACxCuB,QAAQ5C,aACR6C,UAAUjB,IAAIQ,UACdU,WAAYC,QAEU,iBAAhBA,OAAOvC,KAAyBwC,QAAQD,MAAM,2CAA2CnB,IAAIqB,oCAC5FD,QAAQD,MAAM,2CAA2CnB,IAAIqB,oCAC3DC,QAAG,MAGbb,UAAUN,SAEb,MAAMhB,OAAwBa,IAAIuB,KAAKtB,UACvC,GAAIpB,UAAUM,QAGZ,OAFAgB,QAAQhB,QACRuB,OACON,QAGT,SAASM,OACPL,SACAE,YAAYiB,aACd,CAIA,OAFI3C,UAAUqB,SAASA,OAAOQ,MAEvBN,OACT,CAEO,MAAML,wBAA0B,CAAIC,IAAqEC,WAC9GD,IAAIW,OAAOC,KACTC,OAAOZ,UACPa,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC,QAG/BF,wBAA0B,CACrCS,IACAC,WAEAD,IAAIW,OAAOC,KACTC,OAAOZ,UACPa,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC"}
1
+ {"version":3,"file":"RegistryAsyncUtils.js","sources":["../../src/Utils/RegistryAsyncUtils.ts"],"sourcesContent":["import type { LookUpStrategy, TAbstractAsyncEntityRegistry, TAbstractEntityRegistry, TAbstractResourceAsyncRegistry, TAbstractSimpleRegistry, TRegistryPack } from '@hellpig/anarchy-engine/Abstract';\nimport type { TMultitonRegistrable, TRegistrable } from '@hellpig/anarchy-engine/Mixins';\nimport { createDeferredPromise, isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { BehaviorSubject, catchError, filter, map, of, take, takeUntil, timeout } from 'rxjs';\n\nimport { shouldHaveTags } from './RegistryUtils';\nimport { hasTag } from './TagsUtils';\n\nexport function getUniqEntityWithTagsAsync<T extends TRegistrable>(\n tags: ReadonlyArray<string>,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n strategy: LookUpStrategy,\n // TODO should be set from default config\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => shouldHaveTags(entity, tags, strategy), undefined, waitingTime);\n}\n\n// TODO all waiting times should be set from default config\nexport function getAsyncUniqEntityWithTag<T extends TRegistrable>(\n tag: string,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => hasTag(entity, tag), undefined, waitingTime);\n}\n\nexport function getAsyncUniqEntityByNameAsync<T extends TRegistrable>(\n name: string,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getEntityValueAsync<T>(registry, (entity: T): boolean => isDefined(entity) && entity.name === name, undefined, waitingTime);\n}\n\nexport function getAsyncUniqEntityByKeyAsync<T>(key: string, registry: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>, waitingTime: number = 3000): Promise<T | undefined> {\n return getValueAsync<T>(registry, (): boolean => isDefined(registry.findByKey(key)), undefined, waitingTime);\n}\n\nexport function getUniqEntityWithTags$<T extends TRegistrable>(\n tags: ReadonlyArray<string>,\n registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n strategy: LookUpStrategy\n): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByTags) ? (registry as TAbstractEntityRegistry<T>).findByTags(tags, strategy) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => shouldHaveTags(pack.value, tags, strategy));\n}\n\nexport function getUniqEntityWithTag$<T extends TRegistrable>(tag: string, registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByTag) ? (registry as TAbstractEntityRegistry<T>).findByTag(tag) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => hasTag(pack.value, tag));\n}\n\nexport function getUniqEntityByName$<T extends TRegistrable>(name: string, registry: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractEntityRegistry<T>).findByName) ? (registry as TAbstractEntityRegistry<T>).findByName(name) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToEntityValue$<T>(registry, (pack: TRegistryPack<T>): boolean => pack.value.name === name);\n}\n\nexport function getUniqEntityByKey$<T>(key: string, registry: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>): Observable<T> {\n const result: T | undefined = isDefined((registry as TAbstractSimpleRegistry<T>).findByKey) ? (registry as TAbstractSimpleRegistry<T>).findByKey(key) : undefined;\n if (isDefined(result)) return new BehaviorSubject(result).asObservable();\n return subscribeToSimpleValue$<T>(registry, (): boolean => isDefined(registry.findByKey(key)));\n}\n\nexport function getEntityValueAsync<T extends TRegistrable | TMultitonRegistrable>(\n reg: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n filterFn: (entity: T) => boolean,\n stopCb?: (stop: () => void) => void,\n // TODO this time should be bigger and different for different entities (DEFAULT_WAITING_TIME + from params)\n waitingTime: number = 3000\n): Promise<T | undefined> {\n return getValueAsync<T>(reg as unknown as TAbstractSimpleRegistry<T>, filterFn, stopCb, waitingTime);\n}\n\nexport function getValueAsync<T>(\n reg: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>,\n filterFn: (entity: T) => boolean,\n stopCb?: (stop: () => void) => void,\n // TODO this time should be bigger and different for different entities (DEFAULT_WAITING_TIME + from params)\n waitingTime: number = 3000\n): Promise<T | undefined> {\n const { resolve, promise, reject } = createDeferredPromise<T | undefined>();\n const destroySub$: Subscription = reg.destroy$.subscribe(stop);\n\n reg.added$\n .pipe(\n filter(({ value }: TRegistryPack<T>): boolean => filterFn(value)),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value),\n timeout(waitingTime),\n takeUntil(reg.destroy$),\n catchError((error: any) => {\n // TODO LOGGER: instead of console should be forwarded to some kind of logger\n if (error?.name === 'TimeoutError') console.error(`Cannot get entity async from registry (\"${reg.id}\"): timeout error has occurred`);\n else console.error(`Cannot get entity async from registry (\"${reg.id}\"): unknown error has occurred`);\n return of(undefined);\n })\n )\n .subscribe(resolve);\n\n const result: T | undefined = reg.find(filterFn);\n if (isDefined(result)) {\n resolve(result);\n stop();\n return promise;\n }\n\n function stop(): void {\n reject();\n destroySub$.unsubscribe();\n }\n\n if (isDefined(stopCb)) stopCb(stop);\n\n return promise;\n}\n\nexport const subscribeToSimpleValue$ = <T>(reg: TAbstractSimpleRegistry<T> | TAbstractResourceAsyncRegistry<T>, filterFn: (pack: TRegistryPack<T>) => boolean): Observable<T> =>\n reg.added$.pipe(\n filter(filterFn),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value)\n );\n\nexport const subscribeToEntityValue$ = <T extends TRegistrable | TMultitonRegistrable>(\n reg: TAbstractEntityRegistry<T> | TAbstractAsyncEntityRegistry<T>,\n filterFn: (pack: TRegistryPack<T>) => boolean\n): Observable<T> =>\n reg.added$.pipe(\n filter(filterFn),\n take(1),\n map((pack: TRegistryPack<T>): T => pack.value)\n );\n"],"names":["getUniqEntityWithTagsAsync","tags","registry","strategy","waitingTime","getEntityValueAsync","entity","shouldHaveTags","getAsyncUniqEntityWithTag","tag","hasTag","getAsyncUniqEntityByNameAsync","name","isDefined","getAsyncUniqEntityByKeyAsync","key","getValueAsync","findByKey","getUniqEntityWithTags$","result","findByTags","BehaviorSubject","asObservable","subscribeToEntityValue$","pack","value","getUniqEntityWithTag$","findByTag","getUniqEntityByName$","findByName","getUniqEntityByKey$","subscribeToSimpleValue$","reg","filterFn","stopCb","resolve","promise","reject","createDeferredPromise","destroySub$","destroy$","subscribe","stop","added$","pipe","filter","take","map","timeout","takeUntil","catchError","error","console","id","of","find","unsubscribe"],"mappings":"y3BASO,SAASA,2BACdC,KACAC,SACAC,SAEAC,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBC,eAAeD,OAAQL,KAAME,eAAW,EAAWC,YACrH,CAGO,SAASI,0BACdC,IACAP,SACAE,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBI,OAAOJ,OAAQG,UAAM,EAAWL,YAClG,CAEO,SAASO,8BACdC,KACAV,SACAE,YAAsB,KAEtB,OAAOC,oBAAuBH,SAAWI,QAAuBO,UAAUP,SAAWA,OAAOM,OAASA,UAAM,EAAWR,YACxH,CAEO,SAASU,6BAAgCC,IAAab,SAA0EE,YAAsB,KAC3J,OAAOY,cAAiBd,SAAU,IAAeW,UAAUX,SAASe,UAAUF,WAAO,EAAWX,YAClG,CAEO,SAASc,uBACdjB,KACAC,SACAC,UAEA,MAAMgB,OAAwBN,UAAWX,SAAwCkB,YAAelB,SAAwCkB,WAAWnB,KAAME,eAAY,EACrK,OAAIU,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCjB,eAAeiB,KAAKC,MAAOxB,KAAME,UACpH,CAEO,SAASuB,sBAA8CjB,IAAaP,UACzE,MAAMiB,OAAwBN,UAAWX,SAAwCyB,WAAczB,SAAwCyB,UAAUlB,UAAO,EACxJ,OAAII,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCd,OAAOc,KAAKC,MAAOhB,KACtG,CAEO,SAASmB,qBAA6ChB,KAAcV,UACzE,MAAMiB,OAAwBN,UAAWX,SAAwC2B,YAAe3B,SAAwC2B,WAAWjB,WAAQ,EAC3J,OAAIC,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDC,wBAA2BrB,SAAWsB,MAAoCA,KAAKC,MAAMb,OAASA,KACvG,CAEO,SAASkB,oBAAuBf,IAAab,UAClD,MAAMiB,OAAwBN,UAAWX,SAAwCe,WAAcf,SAAwCe,UAAUF,UAAO,EACxJ,OAAIF,UAAUM,QAAgB,IAAIE,gBAAgBF,QAAQG,eACnDS,wBAA2B7B,SAAU,IAAeW,UAAUX,SAASe,UAAUF,MAC1F,CAEO,SAASV,oBACd2B,IACAC,SACAC,OAEA9B,YAAsB,KAEtB,OAAOY,cAAiBgB,IAA8CC,SAAUC,OAAQ9B,YAC1F,CAEO,SAASY,cACdgB,IACAC,SACAC,OAEA9B,YAAsB,KAEtB,MAAM+B,QAAEA,QAAAC,QAASA,QAAAC,OAASA,QAAWC,wBAC/BC,YAA4BP,IAAIQ,SAASC,UAAUC,MAEzDV,IAAIW,OACDC,KACCC,OAAO,EAAGpB,eAAuCQ,SAASR,QAC1DqB,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC,OACxCuB,QAAQ5C,aACR6C,UAAUjB,IAAIQ,UACdU,WAAYC,QAEU,iBAAhBA,OAAOvC,KAAyBwC,QAAQD,MAAM,2CAA2CnB,IAAIqB,oCAC5FD,QAAQD,MAAM,2CAA2CnB,IAAIqB,oCAC3DC,QAAG,MAGbb,UAAUN,SAEb,MAAMhB,OAAwBa,IAAIuB,KAAKtB,UACvC,GAAIpB,UAAUM,QAGZ,OAFAgB,QAAQhB,QACRuB,OACON,QAGT,SAASM,OACPL,SACAE,YAAYiB,aACd,CAIA,OAFI3C,UAAUqB,SAASA,OAAOQ,MAEvBN,OACT,CAEO,MAAML,wBAA0B,CAAIC,IAAqEC,WAC9GD,IAAIW,OAAOC,KACTC,OAAOZ,UACPa,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC,QAG/BF,wBAA0B,CACrCS,IACAC,WAEAD,IAAIW,OAAOC,KACTC,OAAOZ,UACPa,KAAK,GACLC,IAAKvB,MAA8BA,KAAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryUtils.js","sources":["../../src/Utils/RegistryUtils.ts"],"sourcesContent":["import type { TAbstractEntityRegistry } from '@Anarchy/Engine/Abstract/Models';\nimport type { LookUpStrategy } from '@Anarchy/Engine/Abstract/Registries';\nimport type { TRegistrable, TWithActiveMixin } from '@Anarchy/Engine/Mixins';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\n\nimport { hasTag } from './TagsUtils';\n\nexport const asArray = <T>(registry: ReadonlyMap<string, T>): ReadonlyArray<T> => Array.from(registry.values());\n\nexport function getAllEntitiesWithTags<T extends TRegistrable>(tagList: ReadonlyArray<string>, registry: ReadonlyMap<string, T>, strategy: LookUpStrategy): ReadonlyArray<T> {\n if (tagList.length === 0) return [];\n\n const result: Array<T> = [];\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n // eslint-disable-next-line functional/immutable-data\n if (shouldHaveTags(entity, tagList, strategy)) result.push(entity);\n }\n\n return result;\n}\n\nexport function getAllEntitiesWithTag<T extends TRegistrable>(tag: string, registry: ReadonlyMap<string, T>): ReadonlyArray<T> {\n const result: Array<T> = [];\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n // eslint-disable-next-line functional/immutable-data\n if (hasTag(entity, tag)) result.push(entity);\n }\n\n return result;\n}\n\nexport function getAllEntitiesWithNames<T extends TRegistrable>(names: ReadonlyArray<string>, registry: ReadonlyMap<string, T>): ReadonlyArray<T> {\n return registry\n .values()\n .filter((entity: T): boolean => {\n if (isNotDefined(entity.name)) return false;\n return names.includes(entity.name);\n })\n .toArray();\n}\n\nexport function getUniqEntityWithTags<T extends TRegistrable>(tagList: ReadonlyArray<string>, registry: ReadonlyMap<string, T>, strategy: LookUpStrategy): T | undefined {\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n if (shouldHaveTags(entity, tagList, strategy)) return entity;\n }\n\n return undefined;\n}\n\nexport function getUniqEntityWithTag<T extends TRegistrable>(tag: string, registry: ReadonlyMap<string, T>): T | undefined {\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n if (hasTag(entity, tag)) return entity;\n }\n return undefined;\n}\n\nexport function setActiveWrappedEntity<E extends TWithActiveMixin & TRegistrable>(registry: TAbstractEntityRegistry<E>, id: string): E | never {\n let result: E | undefined;\n registry.forEach((entity: E): void => {\n const isTarget: boolean = entity.id === id;\n if (isTarget) {\n entity._setActive(true, true);\n result = entity;\n } else entity._setActive(false, true);\n });\n\n if (isNotDefined(result)) throw new Error(`Cannot find an entity with id \"${id}\" in the registry.`);\n\n return result;\n}\n\nexport const shouldHaveTags = <T extends TRegistrable>(obj: T, tagList: ReadonlyArray<string>, strategy: LookUpStrategy): boolean => tagList[strategy]((tag: string) => hasTag(obj, tag));\n\nexport function findByUrl<T extends TRegistrable & Readonly<{ getUrl: () => string }>>(url: string, registry: TAbstractEntityRegistry<T>): T | undefined {\n return registry.find((value: T): boolean => value.getUrl() === url);\n}\n"],"names":["asArray","registry","Array","from","values","getAllEntitiesWithTags","tagList","strategy","length","result","entity","shouldHaveTags","push","getAllEntitiesWithTag","tag","hasTag","getAllEntitiesWithNames","names","filter","isNotDefined","name","includes","toArray","getUniqEntityWithTags","getUniqEntityWithTag","setActiveWrappedEntity","id","forEach","_setActive","Error","obj","findByUrl","url","find","value","getUrl"],"mappings":"gHAOO,MAAMA,QAAcC,UAAuDC,MAAMC,KAAKF,SAASG,UAE/F,SAASC,uBAA+CC,QAAgCL,SAAkCM,UAC/H,GAAuB,IAAnBD,QAAQE,OAAc,MAAO,GAEjC,MAAMC,OAAmB,GAGzB,IAAA,MAAWC,UAAUT,SAASG,SAExBO,eAAeD,OAAQJ,QAASC,WAAWE,OAAOG,KAAKF,QAG7D,OAAOD,MACT,CAEO,SAASI,sBAA8CC,IAAab,UACzE,MAAMQ,OAAmB,GAGzB,IAAA,MAAWC,UAAUT,SAASG,SAExBW,OAAOL,OAAQI,MAAML,OAAOG,KAAKF,QAGvC,OAAOD,MACT,CAEO,SAASO,wBAAgDC,MAA8BhB,UAC5F,OAAOA,SACJG,SACAc,OAAQR,SACHS,aAAaT,OAAOU,OACjBH,MAAMI,SAASX,OAAOU,OAE9BE,SACL,CAEO,SAASC,sBAA8CjB,QAAgCL,SAAkCM,UAE9H,IAAA,MAAWG,UAAUT,SAASG,SAC5B,GAAIO,eAAeD,OAAQJ,QAASC,UAAW,OAAOG,MAI1D,CAEO,SAASc,qBAA6CV,IAAab,UAExE,IAAA,MAAWS,UAAUT,SAASG,SAC5B,GAAIW,OAAOL,OAAQI,KAAM,OAAOJ,MAGpC,CAEO,SAASe,uBAAkExB,SAAsCyB,IACtH,IAAIjB,OASJ,GARAR,SAAS0B,QAASjB,SACUA,OAAOgB,KAAOA,IAEtChB,OAAOkB,YAAW,GAAM,GACxBnB,OAASC,QACJA,OAAOkB,YAAW,GAAO,KAG9BT,aAAaV,QAAS,MAAM,IAAIoB,MAAM,kCAAkCH,wBAE5E,OAAOjB,MACT,CAEO,MAAME,eAAiB,CAAyBmB,IAAQxB,QAAgCC,WAAsCD,QAAQC,UAAWO,KAAgBC,OAAOe,IAAKhB,MAE7K,SAASiB,UAAuEC,IAAa/B,UAClG,OAAOA,SAASgC,KAAMC,OAAsBA,MAAMC,WAAaH,IACjE"}
1
+ {"version":3,"file":"RegistryUtils.js","sources":["../../src/Utils/RegistryUtils.ts"],"sourcesContent":["import type { TAbstractEntityRegistry } from '@hellpig/anarchy-engine/Abstract/Models';\nimport type { LookUpStrategy } from '@hellpig/anarchy-engine/Abstract/Registries';\nimport type { TRegistrable, TWithActiveMixin } from '@hellpig/anarchy-engine/Mixins';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nimport { hasTag } from './TagsUtils';\n\nexport const asArray = <T>(registry: ReadonlyMap<string, T>): ReadonlyArray<T> => Array.from(registry.values());\n\nexport function getAllEntitiesWithTags<T extends TRegistrable>(tagList: ReadonlyArray<string>, registry: ReadonlyMap<string, T>, strategy: LookUpStrategy): ReadonlyArray<T> {\n if (tagList.length === 0) return [];\n\n const result: Array<T> = [];\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n // eslint-disable-next-line functional/immutable-data\n if (shouldHaveTags(entity, tagList, strategy)) result.push(entity);\n }\n\n return result;\n}\n\nexport function getAllEntitiesWithTag<T extends TRegistrable>(tag: string, registry: ReadonlyMap<string, T>): ReadonlyArray<T> {\n const result: Array<T> = [];\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n // eslint-disable-next-line functional/immutable-data\n if (hasTag(entity, tag)) result.push(entity);\n }\n\n return result;\n}\n\nexport function getAllEntitiesWithNames<T extends TRegistrable>(names: ReadonlyArray<string>, registry: ReadonlyMap<string, T>): ReadonlyArray<T> {\n return registry\n .values()\n .filter((entity: T): boolean => {\n if (isNotDefined(entity.name)) return false;\n return names.includes(entity.name);\n })\n .toArray();\n}\n\nexport function getUniqEntityWithTags<T extends TRegistrable>(tagList: ReadonlyArray<string>, registry: ReadonlyMap<string, T>, strategy: LookUpStrategy): T | undefined {\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n if (shouldHaveTags(entity, tagList, strategy)) return entity;\n }\n\n return undefined;\n}\n\nexport function getUniqEntityWithTag<T extends TRegistrable>(tag: string, registry: ReadonlyMap<string, T>): T | undefined {\n // eslint-disable-next-line functional/no-loop-statements\n for (const entity of registry.values()) {\n if (hasTag(entity, tag)) return entity;\n }\n return undefined;\n}\n\nexport function setActiveWrappedEntity<E extends TWithActiveMixin & TRegistrable>(registry: TAbstractEntityRegistry<E>, id: string): E | never {\n let result: E | undefined;\n registry.forEach((entity: E): void => {\n const isTarget: boolean = entity.id === id;\n if (isTarget) {\n entity._setActive(true, true);\n result = entity;\n } else entity._setActive(false, true);\n });\n\n if (isNotDefined(result)) throw new Error(`Cannot find an entity with id \"${id}\" in the registry.`);\n\n return result;\n}\n\nexport const shouldHaveTags = <T extends TRegistrable>(obj: T, tagList: ReadonlyArray<string>, strategy: LookUpStrategy): boolean => tagList[strategy]((tag: string) => hasTag(obj, tag));\n\nexport function findByUrl<T extends TRegistrable & Readonly<{ getUrl: () => string }>>(url: string, registry: TAbstractEntityRegistry<T>): T | undefined {\n return registry.find((value: T): boolean => value.getUrl() === url);\n}\n"],"names":["asArray","registry","Array","from","values","getAllEntitiesWithTags","tagList","strategy","length","result","entity","shouldHaveTags","push","getAllEntitiesWithTag","tag","hasTag","getAllEntitiesWithNames","names","filter","isNotDefined","name","includes","toArray","getUniqEntityWithTags","getUniqEntityWithTag","setActiveWrappedEntity","id","forEach","_setActive","Error","obj","findByUrl","url","find","value","getUrl"],"mappings":"gHAOO,MAAMA,QAAcC,UAAuDC,MAAMC,KAAKF,SAASG,UAE/F,SAASC,uBAA+CC,QAAgCL,SAAkCM,UAC/H,GAAuB,IAAnBD,QAAQE,OAAc,MAAO,GAEjC,MAAMC,OAAmB,GAGzB,IAAA,MAAWC,UAAUT,SAASG,SAExBO,eAAeD,OAAQJ,QAASC,WAAWE,OAAOG,KAAKF,QAG7D,OAAOD,MACT,CAEO,SAASI,sBAA8CC,IAAab,UACzE,MAAMQ,OAAmB,GAGzB,IAAA,MAAWC,UAAUT,SAASG,SAExBW,OAAOL,OAAQI,MAAML,OAAOG,KAAKF,QAGvC,OAAOD,MACT,CAEO,SAASO,wBAAgDC,MAA8BhB,UAC5F,OAAOA,SACJG,SACAc,OAAQR,SACHS,aAAaT,OAAOU,OACjBH,MAAMI,SAASX,OAAOU,OAE9BE,SACL,CAEO,SAASC,sBAA8CjB,QAAgCL,SAAkCM,UAE9H,IAAA,MAAWG,UAAUT,SAASG,SAC5B,GAAIO,eAAeD,OAAQJ,QAASC,UAAW,OAAOG,MAI1D,CAEO,SAASc,qBAA6CV,IAAab,UAExE,IAAA,MAAWS,UAAUT,SAASG,SAC5B,GAAIW,OAAOL,OAAQI,KAAM,OAAOJ,MAGpC,CAEO,SAASe,uBAAkExB,SAAsCyB,IACtH,IAAIjB,OASJ,GARAR,SAAS0B,QAASjB,SACUA,OAAOgB,KAAOA,IAEtChB,OAAOkB,YAAW,GAAM,GACxBnB,OAASC,QACJA,OAAOkB,YAAW,GAAO,KAG9BT,aAAaV,QAAS,MAAM,IAAIoB,MAAM,kCAAkCH,wBAE5E,OAAOjB,MACT,CAEO,MAAME,eAAiB,CAAyBmB,IAAQxB,QAAgCC,WAAsCD,QAAQC,UAAWO,KAAgBC,OAAOe,IAAKhB,MAE7K,SAASiB,UAAuEC,IAAa/B,UAClG,OAAOA,SAASgC,KAAMC,OAAsBA,MAAMC,WAAaH,IACjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"RxJsUtils.js","sources":["../../src/Utils/RxJsUtils.ts"],"sourcesContent":["import { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils/TypesUtils';\nimport type { Observable, Subject } from 'rxjs';\nimport { defer, finalize } from 'rxjs';\n\nexport function updateSubjOnChange<T extends Record<K, V>, K extends keyof T, V>(obj: T, fieldName: K, subj$: Subject<T[K]>, beforeApplyFn?: (v: T[K]) => T[K]): T {\n return new Proxy(obj, {\n set(target: TWriteable<T>, prop: string, value: T[K]): boolean {\n const isTargetField: boolean = fieldName === prop;\n const val: T[K] = isTargetField && isDefined(beforeApplyFn) ? beforeApplyFn(value) : value;\n // eslint-disable-next-line functional/immutable-data\n target[prop as K] = val;\n if (isTargetField) subj$.next(val);\n return true;\n }\n });\n}\n\nexport function _debugTracked<T>(source$: Observable<T>, name = 'Unnamed'): Observable<T> {\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsCreated)) (window as any)._subscriptionsCreated = 0;\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsFinalized)) (window as any)._subscriptionsFinalized = 0;\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsList)) (window as any)._subscriptionsList = new Map<string, Observable<T>>();\n\n return defer((): Observable<T> => {\n // eslint-disable-next-line functional/immutable-data\n (window as any)._subscriptionsCreated++;\n // console.log(`[${name}] subscribed (${(window as any)._subscriptionsCreated} total)`);\n (window as any)._subscriptionsList.set(name, source$);\n\n return source$.pipe(\n finalize((): void => {\n // eslint-disable-next-line functional/immutable-data\n (window as any)._subscriptionsFinalized++;\n // console.log(`[${name}] finalized (${(window as any)._subscriptionsFinalized} total)`);\n (window as any)._subscriptionsList.delete(name);\n })\n );\n });\n}\n"],"names":["updateSubjOnChange","obj","fieldName","subj$","beforeApplyFn","Proxy","set","target","prop","value","isTargetField","val","isDefined","next","_debugTracked","source$","name","isNotDefined","window","_subscriptionsCreated","_subscriptionsFinalized","_subscriptionsList","Map","defer","pipe","finalize","delete"],"mappings":"0PAKO,SAASA,mBAAiEC,IAAQC,UAAcC,MAAsBC,eAC3H,OAAO,IAAIC,MAAMJ,IAAK,CACpB,GAAAK,CAAIC,OAAuBC,KAAcC,OACvC,MAAMC,cAAyBR,YAAcM,KACvCG,IAAYD,eAAiBE,UAAUR,eAAiBA,cAAcK,OAASA,MAIrF,OAFAF,OAAOC,MAAaG,IAChBD,eAAeP,MAAMU,KAAKF,MACvB,CACT,GAEJ,CAEO,SAASG,cAAiBC,QAAwBC,KAAO,WAQ9D,OANIC,aAAcC,OAAeC,yBAAyBD,OAAeC,sBAAwB,GAE7FF,aAAcC,OAAeE,2BAA2BF,OAAeE,wBAA0B,GAEjGH,aAAcC,OAAeG,sBAAsBH,OAAeG,uBAAyBC,KAExFC,MAAM,KAEVL,OAAeC,wBAEfD,OAAeG,mBAAmBf,IAAIU,KAAMD,SAEtCA,QAAQS,KACbC,SAAS,KAENP,OAAeE,0BAEfF,OAAeG,mBAAmBK,OAAOV,UAIlD"}
1
+ {"version":3,"file":"RxJsUtils.js","sources":["../../src/Utils/RxJsUtils.ts"],"sourcesContent":["import { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils/TypesUtils';\nimport type { Observable, Subject } from 'rxjs';\nimport { defer, finalize } from 'rxjs';\n\nexport function updateSubjOnChange<T extends Record<K, V>, K extends keyof T, V>(obj: T, fieldName: K, subj$: Subject<T[K]>, beforeApplyFn?: (v: T[K]) => T[K]): T {\n return new Proxy(obj, {\n set(target: TWriteable<T>, prop: string, value: T[K]): boolean {\n const isTargetField: boolean = fieldName === prop;\n const val: T[K] = isTargetField && isDefined(beforeApplyFn) ? beforeApplyFn(value) : value;\n // eslint-disable-next-line functional/immutable-data\n target[prop as K] = val;\n if (isTargetField) subj$.next(val);\n return true;\n }\n });\n}\n\nexport function _debugTracked<T>(source$: Observable<T>, name = 'Unnamed'): Observable<T> {\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsCreated)) (window as any)._subscriptionsCreated = 0;\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsFinalized)) (window as any)._subscriptionsFinalized = 0;\n // eslint-disable-next-line functional/immutable-data\n if (isNotDefined((window as any)._subscriptionsList)) (window as any)._subscriptionsList = new Map<string, Observable<T>>();\n\n return defer((): Observable<T> => {\n // eslint-disable-next-line functional/immutable-data\n (window as any)._subscriptionsCreated++;\n // console.log(`[${name}] subscribed (${(window as any)._subscriptionsCreated} total)`);\n (window as any)._subscriptionsList.set(name, source$);\n\n return source$.pipe(\n finalize((): void => {\n // eslint-disable-next-line functional/immutable-data\n (window as any)._subscriptionsFinalized++;\n // console.log(`[${name}] finalized (${(window as any)._subscriptionsFinalized} total)`);\n (window as any)._subscriptionsList.delete(name);\n })\n );\n });\n}\n"],"names":["updateSubjOnChange","obj","fieldName","subj$","beforeApplyFn","Proxy","set","target","prop","value","isTargetField","val","isDefined","next","_debugTracked","source$","name","isNotDefined","window","_subscriptionsCreated","_subscriptionsFinalized","_subscriptionsList","Map","defer","pipe","finalize","delete"],"mappings":"0PAKO,SAASA,mBAAiEC,IAAQC,UAAcC,MAAsBC,eAC3H,OAAO,IAAIC,MAAMJ,IAAK,CACpB,GAAAK,CAAIC,OAAuBC,KAAcC,OACvC,MAAMC,cAAyBR,YAAcM,KACvCG,IAAYD,eAAiBE,UAAUR,eAAiBA,cAAcK,OAASA,MAIrF,OAFAF,OAAOC,MAAaG,IAChBD,eAAeP,MAAMU,KAAKF,MACvB,CACT,GAEJ,CAEO,SAASG,cAAiBC,QAAwBC,KAAO,WAQ9D,OANIC,aAAcC,OAAeC,yBAAyBD,OAAeC,sBAAwB,GAE7FF,aAAcC,OAAeE,2BAA2BF,OAAeE,wBAA0B,GAEjGH,aAAcC,OAAeG,sBAAsBH,OAAeG,uBAAyBC,KAExFC,MAAM,KAEVL,OAAeC,wBAEfD,OAAeG,mBAAmBf,IAAIU,KAAMD,SAEtCA,QAAQS,KACbC,SAAS,KAENP,OAAeE,0BAEfF,OAAeG,mBAAmBK,OAAOV,UAIlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenUtils.js","sources":["../../src/Utils/ScreenUtils.ts"],"sourcesContent":["import type { TAppGlobalContainer } from '@Anarchy/Engine/Global';\nimport type { TSpaceCanvas } from '@Anarchy/Engine/Space';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport function isFullScreen(container: TAppGlobalContainer | undefined): boolean {\n if (isNotDefined(container)) throw new Error('Container (window?) is not defined');\n if (isNotDefined(container.document)) throw new Error('Container (document?) is not defined');\n\n return Boolean(container.document.fullscreenElement || (container.document as any).webkitFullscreenElement);\n}\n\nexport function goFullScreen(canvas: TSpaceCanvas | undefined): Promise<void | never> {\n if (isNotDefined(canvas)) throw new Error('Canvas is not defined');\n if (canvas.requestFullscreen) return canvas.requestFullscreen();\n if ((canvas as any).webkitRequestFullscreen) return (canvas as any).webkitRequestFullscreen();\n\n throw new Error('Fullscreen is not supported');\n}\n\nexport function exitFullScreen(container: TAppGlobalContainer | undefined): Promise<void | never> {\n if (isNotDefined(container)) throw new Error('Container (window?) is not defined');\n if (isNotDefined(container.document)) throw new Error('Container (document?) is not defined');\n return container.document.exitFullscreen();\n}\n"],"names":["isFullScreen","container","isNotDefined","Error","document","Boolean","fullscreenElement","webkitFullscreenElement","goFullScreen","canvas","requestFullscreen","webkitRequestFullscreen","exitFullScreen","exitFullscreen"],"mappings":"6EAIO,SAASA,aAAaC,WAC3B,GAAIC,aAAaD,WAAY,MAAM,IAAIE,MAAM,sCAC7C,GAAID,aAAaD,UAAUG,UAAW,MAAM,IAAID,MAAM,wCAEtD,OAAOE,QAAQJ,UAAUG,SAASE,mBAAsBL,UAAUG,SAAiBG,wBACrF,CAEO,SAASC,aAAaC,QAC3B,GAAIP,aAAaO,QAAS,MAAM,IAAIN,MAAM,yBAC1C,GAAIM,OAAOC,kBAAmB,OAAOD,OAAOC,oBAC5C,GAAKD,OAAeE,wBAAyB,OAAQF,OAAeE,0BAEpE,MAAM,IAAIR,MAAM,8BAClB,CAEO,SAASS,eAAeX,WAC7B,GAAIC,aAAaD,WAAY,MAAM,IAAIE,MAAM,sCAC7C,GAAID,aAAaD,UAAUG,UAAW,MAAM,IAAID,MAAM,wCACtD,OAAOF,UAAUG,SAASS,gBAC5B"}
1
+ {"version":3,"file":"ScreenUtils.js","sources":["../../src/Utils/ScreenUtils.ts"],"sourcesContent":["import type { TAppGlobalContainer } from '@hellpig/anarchy-engine/Global';\nimport type { TSpaceCanvas } from '@hellpig/anarchy-engine/Space';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport function isFullScreen(container: TAppGlobalContainer | undefined): boolean {\n if (isNotDefined(container)) throw new Error('Container (window?) is not defined');\n if (isNotDefined(container.document)) throw new Error('Container (document?) is not defined');\n\n return Boolean(container.document.fullscreenElement || (container.document as any).webkitFullscreenElement);\n}\n\nexport function goFullScreen(canvas: TSpaceCanvas | undefined): Promise<void | never> {\n if (isNotDefined(canvas)) throw new Error('Canvas is not defined');\n if (canvas.requestFullscreen) return canvas.requestFullscreen();\n if ((canvas as any).webkitRequestFullscreen) return (canvas as any).webkitRequestFullscreen();\n\n throw new Error('Fullscreen is not supported');\n}\n\nexport function exitFullScreen(container: TAppGlobalContainer | undefined): Promise<void | never> {\n if (isNotDefined(container)) throw new Error('Container (window?) is not defined');\n if (isNotDefined(container.document)) throw new Error('Container (document?) is not defined');\n return container.document.exitFullscreen();\n}\n"],"names":["isFullScreen","container","isNotDefined","Error","document","Boolean","fullscreenElement","webkitFullscreenElement","goFullScreen","canvas","requestFullscreen","webkitRequestFullscreen","exitFullScreen","exitFullscreen"],"mappings":"6EAIO,SAASA,aAAaC,WAC3B,GAAIC,aAAaD,WAAY,MAAM,IAAIE,MAAM,sCAC7C,GAAID,aAAaD,UAAUG,UAAW,MAAM,IAAID,MAAM,wCAEtD,OAAOE,QAAQJ,UAAUG,SAASE,mBAAsBL,UAAUG,SAAiBG,wBACrF,CAEO,SAASC,aAAaC,QAC3B,GAAIP,aAAaO,QAAS,MAAM,IAAIN,MAAM,yBAC1C,GAAIM,OAAOC,kBAAmB,OAAOD,OAAOC,oBAC5C,GAAKD,OAAeE,wBAAyB,OAAQF,OAAeE,0BAEpE,MAAM,IAAIR,MAAM,8BAClB,CAEO,SAASS,eAAeX,WAC7B,GAAIC,aAAaD,WAAY,MAAM,IAAIE,MAAM,sCAC7C,GAAID,aAAaD,UAAUG,UAAW,MAAM,IAAID,MAAM,wCACtD,OAAOF,UAAUG,SAASS,gBAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"TagsUtils.js","sources":["../../src/Utils/TagsUtils.ts"],"sourcesContent":["import type { TWithTags } from '@Anarchy/Engine/Mixins';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { omitInArray } from '@Anarchy/Shared/Utils';\n\nexport function setTags<T extends TWithTags>(entity: T, tagsList: ReadonlyArray<string>): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [...tagsList];\n}\n\nexport function addTag<T extends TWithTags>(entity: T, tag: string): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [...(entity.tags ?? []), tag];\n}\n\nexport function removeTag<T extends TWithTags>(entity: T, tag: string): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = omitInArray(entity.tags ?? [], tag);\n}\n\nexport function hasTag<T extends TWithTags>(entity: T, tag: string): boolean {\n return (entity.tags ?? []).includes(tag);\n}\n\nexport function getTags<T extends TWithTags>(entity: T): ReadonlyArray<string> {\n return entity.tags ?? [];\n}\n\nexport function clearTags<T extends TWithTags>(entity: T): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [];\n}\n"],"names":["setTags","entity","tagsList","tags","addTag","tag","removeTag","omitInArray","hasTag","includes","getTags","clearTags"],"mappings":"4EAIO,SAASA,QAA6BC,OAAWC,UAErDD,OAAyBE,KAAO,IAAID,SACvC,CAEO,SAASE,OAA4BH,OAAWI,KAEpDJ,OAAyBE,KAAO,IAAKF,OAAOE,MAAQ,GAAKE,IAC5D,CAEO,SAASC,UAA+BL,OAAWI,KAEvDJ,OAAyBE,KAAOI,YAAYN,OAAOE,MAAQ,GAAIE,IAClE,CAEO,SAASG,OAA4BP,OAAWI,KACrD,OAAQJ,OAAOE,MAAQ,IAAIM,SAASJ,IACtC,CAEO,SAASK,QAA6BT,QAC3C,OAAOA,OAAOE,MAAQ,EACxB,CAEO,SAASQ,UAA+BV,QAE5CA,OAAyBE,KAAO,EACnC"}
1
+ {"version":3,"file":"TagsUtils.js","sources":["../../src/Utils/TagsUtils.ts"],"sourcesContent":["import type { TWithTags } from '@hellpig/anarchy-engine/Mixins';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { omitInArray } from '@hellpig/anarchy-shared/Utils';\n\nexport function setTags<T extends TWithTags>(entity: T, tagsList: ReadonlyArray<string>): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [...tagsList];\n}\n\nexport function addTag<T extends TWithTags>(entity: T, tag: string): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [...(entity.tags ?? []), tag];\n}\n\nexport function removeTag<T extends TWithTags>(entity: T, tag: string): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = omitInArray(entity.tags ?? [], tag);\n}\n\nexport function hasTag<T extends TWithTags>(entity: T, tag: string): boolean {\n return (entity.tags ?? []).includes(tag);\n}\n\nexport function getTags<T extends TWithTags>(entity: T): ReadonlyArray<string> {\n return entity.tags ?? [];\n}\n\nexport function clearTags<T extends TWithTags>(entity: T): void {\n // eslint-disable-next-line functional/immutable-data\n (entity as TWriteable<T>).tags = [];\n}\n"],"names":["setTags","entity","tagsList","tags","addTag","tag","removeTag","omitInArray","hasTag","includes","getTags","clearTags"],"mappings":"4EAIO,SAASA,QAA6BC,OAAWC,UAErDD,OAAyBE,KAAO,IAAID,SACvC,CAEO,SAASE,OAA4BH,OAAWI,KAEpDJ,OAAyBE,KAAO,IAAKF,OAAOE,MAAQ,GAAKE,IAC5D,CAEO,SAASC,UAA+BL,OAAWI,KAEvDJ,OAAyBE,KAAOI,YAAYN,OAAOE,MAAQ,GAAIE,IAClE,CAEO,SAASG,OAA4BP,OAAWI,KACrD,OAAQJ,OAAOE,MAAQ,IAAIM,SAASJ,IACtC,CAEO,SAASK,QAA6BT,QAC3C,OAAOA,OAAOE,MAAQ,EACxB,CAEO,SAASQ,UAA+BV,QAE5CA,OAAyBE,KAAO,EACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransformUtils.js","sources":["../../src/Utils/TransformUtils.ts"],"sourcesContent":["import type { TEulerLike, TEulerString } from '@Anarchy/Engine/ThreeLib';\nimport type { Vector2Like, Vector3Like, Vector4Like } from 'three';\n\nexport function isEqualOrSimilarNumbers(prev: number, curr: number, threshold: number = 0): boolean {\n return Math.abs(curr - prev) <= threshold;\n}\n\nexport function isEqualOrSimilarVector4Like(prev: Vector4Like, curr: Vector4Like, threshold: number): boolean {\n return isEqualOrSimilarVector3Like(prev, curr, threshold) && differenceSmallerThan(curr.w, prev.w, threshold);\n}\n\nexport function isEqualOrSimilarVector3Like(prev: Vector3Like, curr: Vector3Like, threshold: number): boolean {\n return isEqualOrSimilarVector2Like(prev, curr, threshold) && differenceSmallerThan(curr.z, prev.z, threshold);\n}\n\nexport function isEqualOrSimilarByXyzCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, threshold: number): boolean {\n return isEqualOrSimilarByXyCoords(x1, y1, x2, y2, threshold) && differenceSmallerThan(z1, z2, threshold);\n}\n\nexport function isEqualOrSimilarVector2Like(prev: Vector2Like, curr: Vector2Like, threshold: number): boolean {\n return differenceSmallerThan(curr.x, prev.x, threshold) && differenceSmallerThan(curr.y, prev.y, threshold);\n}\n\nexport function isEqualOrSimilarByXyCoords(x1: number, y1: number, x2: number, y2: number, threshold: number): boolean {\n return differenceSmallerThan(x1, x2, threshold) && differenceSmallerThan(y1, y2, threshold);\n}\n\nfunction differenceSmallerThan(a: number, b: number, value: number): boolean {\n return Math.abs(a - b) <= value;\n}\n\nexport function vector3ToXyz(vector: Vector3Like): Readonly<{ x: number; y: number; z: number }> {\n return {\n x: vector.x,\n y: vector.y,\n z: vector.z\n };\n}\n\nexport function vector2ToXy(vector: Vector2Like): Readonly<{ x: number; y: number }> {\n return {\n x: vector.x,\n y: vector.y\n };\n}\n\nexport function quaternionToXyzw(quaternion: Vector4Like): Readonly<{ x: number; y: number; z: number; w: number }> {\n return {\n x: quaternion.x,\n y: quaternion.y,\n z: quaternion.z,\n w: quaternion.w\n };\n}\n\nexport function eulerToXyz(euler: TEulerLike | TEulerString): Readonly<{\n x: number;\n y: number;\n z: number;\n order?: 'XYZ' | 'XZY' | 'YXZ' | 'YZX' | 'ZXY' | 'ZYX';\n}> {\n return {\n x: (euler as TEulerLike).x ?? (euler as TEulerString)._x,\n y: (euler as TEulerLike).y ?? (euler as TEulerString)._y,\n z: (euler as TEulerLike).z ?? (euler as TEulerString)._z,\n order: (euler as TEulerLike).order ?? (euler as TEulerString)._order\n };\n}\n"],"names":["isEqualOrSimilarNumbers","prev","curr","threshold","Math","abs","isEqualOrSimilarVector4Like","isEqualOrSimilarVector3Like","differenceSmallerThan","w","isEqualOrSimilarVector2Like","z","isEqualOrSimilarByXyzCoords","x1","y1","z1","x2","y2","z2","isEqualOrSimilarByXyCoords","x","y","a","b","value","vector3ToXyz","vector","vector2ToXy","quaternionToXyzw","quaternion","eulerToXyz","euler","_x","_y","_z","order","_order"],"mappings":"AAGO,SAASA,wBAAwBC,KAAcC,KAAcC,UAAoB,GACtF,OAAOC,KAAKC,IAAIH,KAAOD,OAASE,SAClC,CAEO,SAASG,4BAA4BL,KAAmBC,KAAmBC,WAChF,OAAOI,4BAA4BN,KAAMC,KAAMC,YAAcK,sBAAsBN,KAAKO,EAAGR,KAAKQ,EAAGN,UACrG,CAEO,SAASI,4BAA4BN,KAAmBC,KAAmBC,WAChF,OAAOO,4BAA4BT,KAAMC,KAAMC,YAAcK,sBAAsBN,KAAKS,EAAGV,KAAKU,EAAGR,UACrG,CAEO,SAASS,4BAA4BC,GAAYC,GAAYC,GAAYC,GAAYC,GAAYC,GAAYf,WAClH,OAAOgB,2BAA2BN,GAAIC,GAAIE,GAAIC,GAAId,YAAcK,sBAAsBO,GAAIG,GAAIf,UAChG,CAEO,SAASO,4BAA4BT,KAAmBC,KAAmBC,WAChF,OAAOK,sBAAsBN,KAAKkB,EAAGnB,KAAKmB,EAAGjB,YAAcK,sBAAsBN,KAAKmB,EAAGpB,KAAKoB,EAAGlB,UACnG,CAEO,SAASgB,2BAA2BN,GAAYC,GAAYE,GAAYC,GAAYd,WACzF,OAAOK,sBAAsBK,GAAIG,GAAIb,YAAcK,sBAAsBM,GAAIG,GAAId,UACnF,CAEA,SAASK,sBAAsBc,EAAWC,EAAWC,OACnD,OAAOpB,KAAKC,IAAIiB,EAAIC,IAAMC,KAC5B,CAEO,SAASC,aAAaC,QAC3B,MAAO,CACLN,EAAGM,OAAON,EACVC,EAAGK,OAAOL,EACVV,EAAGe,OAAOf,EAEd,CAEO,SAASgB,YAAYD,QAC1B,MAAO,CACLN,EAAGM,OAAON,EACVC,EAAGK,OAAOL,EAEd,CAEO,SAASO,iBAAiBC,YAC/B,MAAO,CACLT,EAAGS,WAAWT,EACdC,EAAGQ,WAAWR,EACdV,EAAGkB,WAAWlB,EACdF,EAAGoB,WAAWpB,EAElB,CAEO,SAASqB,WAAWC,OAMzB,MAAO,CACLX,EAAIW,MAAqBX,GAAMW,MAAuBC,GACtDX,EAAIU,MAAqBV,GAAMU,MAAuBE,GACtDtB,EAAIoB,MAAqBpB,GAAMoB,MAAuBG,GACtDC,MAAQJ,MAAqBI,OAAUJ,MAAuBK,OAElE"}
1
+ {"version":3,"file":"TransformUtils.js","sources":["../../src/Utils/TransformUtils.ts"],"sourcesContent":["import type { TEulerLike, TEulerString } from '@hellpig/anarchy-engine/ThreeLib';\nimport type { Vector2Like, Vector3Like, Vector4Like } from 'three';\n\nexport function isEqualOrSimilarNumbers(prev: number, curr: number, threshold: number = 0): boolean {\n return Math.abs(curr - prev) <= threshold;\n}\n\nexport function isEqualOrSimilarVector4Like(prev: Vector4Like, curr: Vector4Like, threshold: number): boolean {\n return isEqualOrSimilarVector3Like(prev, curr, threshold) && differenceSmallerThan(curr.w, prev.w, threshold);\n}\n\nexport function isEqualOrSimilarVector3Like(prev: Vector3Like, curr: Vector3Like, threshold: number): boolean {\n return isEqualOrSimilarVector2Like(prev, curr, threshold) && differenceSmallerThan(curr.z, prev.z, threshold);\n}\n\nexport function isEqualOrSimilarByXyzCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, threshold: number): boolean {\n return isEqualOrSimilarByXyCoords(x1, y1, x2, y2, threshold) && differenceSmallerThan(z1, z2, threshold);\n}\n\nexport function isEqualOrSimilarVector2Like(prev: Vector2Like, curr: Vector2Like, threshold: number): boolean {\n return differenceSmallerThan(curr.x, prev.x, threshold) && differenceSmallerThan(curr.y, prev.y, threshold);\n}\n\nexport function isEqualOrSimilarByXyCoords(x1: number, y1: number, x2: number, y2: number, threshold: number): boolean {\n return differenceSmallerThan(x1, x2, threshold) && differenceSmallerThan(y1, y2, threshold);\n}\n\nfunction differenceSmallerThan(a: number, b: number, value: number): boolean {\n return Math.abs(a - b) <= value;\n}\n\nexport function vector3ToXyz(vector: Vector3Like): Readonly<{ x: number; y: number; z: number }> {\n return {\n x: vector.x,\n y: vector.y,\n z: vector.z\n };\n}\n\nexport function vector2ToXy(vector: Vector2Like): Readonly<{ x: number; y: number }> {\n return {\n x: vector.x,\n y: vector.y\n };\n}\n\nexport function quaternionToXyzw(quaternion: Vector4Like): Readonly<{ x: number; y: number; z: number; w: number }> {\n return {\n x: quaternion.x,\n y: quaternion.y,\n z: quaternion.z,\n w: quaternion.w\n };\n}\n\nexport function eulerToXyz(euler: TEulerLike | TEulerString): Readonly<{\n x: number;\n y: number;\n z: number;\n order?: 'XYZ' | 'XZY' | 'YXZ' | 'YZX' | 'ZXY' | 'ZYX';\n}> {\n return {\n x: (euler as TEulerLike).x ?? (euler as TEulerString)._x,\n y: (euler as TEulerLike).y ?? (euler as TEulerString)._y,\n z: (euler as TEulerLike).z ?? (euler as TEulerString)._z,\n order: (euler as TEulerLike).order ?? (euler as TEulerString)._order\n };\n}\n"],"names":["isEqualOrSimilarNumbers","prev","curr","threshold","Math","abs","isEqualOrSimilarVector4Like","isEqualOrSimilarVector3Like","differenceSmallerThan","w","isEqualOrSimilarVector2Like","z","isEqualOrSimilarByXyzCoords","x1","y1","z1","x2","y2","z2","isEqualOrSimilarByXyCoords","x","y","a","b","value","vector3ToXyz","vector","vector2ToXy","quaternionToXyzw","quaternion","eulerToXyz","euler","_x","_y","_z","order","_order"],"mappings":"AAGO,SAASA,wBAAwBC,KAAcC,KAAcC,UAAoB,GACtF,OAAOC,KAAKC,IAAIH,KAAOD,OAASE,SAClC,CAEO,SAASG,4BAA4BL,KAAmBC,KAAmBC,WAChF,OAAOI,4BAA4BN,KAAMC,KAAMC,YAAcK,sBAAsBN,KAAKO,EAAGR,KAAKQ,EAAGN,UACrG,CAEO,SAASI,4BAA4BN,KAAmBC,KAAmBC,WAChF,OAAOO,4BAA4BT,KAAMC,KAAMC,YAAcK,sBAAsBN,KAAKS,EAAGV,KAAKU,EAAGR,UACrG,CAEO,SAASS,4BAA4BC,GAAYC,GAAYC,GAAYC,GAAYC,GAAYC,GAAYf,WAClH,OAAOgB,2BAA2BN,GAAIC,GAAIE,GAAIC,GAAId,YAAcK,sBAAsBO,GAAIG,GAAIf,UAChG,CAEO,SAASO,4BAA4BT,KAAmBC,KAAmBC,WAChF,OAAOK,sBAAsBN,KAAKkB,EAAGnB,KAAKmB,EAAGjB,YAAcK,sBAAsBN,KAAKmB,EAAGpB,KAAKoB,EAAGlB,UACnG,CAEO,SAASgB,2BAA2BN,GAAYC,GAAYE,GAAYC,GAAYd,WACzF,OAAOK,sBAAsBK,GAAIG,GAAIb,YAAcK,sBAAsBM,GAAIG,GAAId,UACnF,CAEA,SAASK,sBAAsBc,EAAWC,EAAWC,OACnD,OAAOpB,KAAKC,IAAIiB,EAAIC,IAAMC,KAC5B,CAEO,SAASC,aAAaC,QAC3B,MAAO,CACLN,EAAGM,OAAON,EACVC,EAAGK,OAAOL,EACVV,EAAGe,OAAOf,EAEd,CAEO,SAASgB,YAAYD,QAC1B,MAAO,CACLN,EAAGM,OAAON,EACVC,EAAGK,OAAOL,EAEd,CAEO,SAASO,iBAAiBC,YAC/B,MAAO,CACLT,EAAGS,WAAWT,EACdC,EAAGQ,WAAWR,EACdV,EAAGkB,WAAWlB,EACdF,EAAGoB,WAAWpB,EAElB,CAEO,SAASqB,WAAWC,OAMzB,MAAO,CACLX,EAAIW,MAAqBX,GAAMW,MAAuBC,GACtDX,EAAIU,MAAqBV,GAAMU,MAAuBE,GACtDtB,EAAIoB,MAAqBpB,GAAMoB,MAAuBG,GACtDC,MAAQJ,MAAqBI,OAAUJ,MAAuBK,OAElE"}
@@ -2,7 +2,7 @@ import { TAbstractWrapper } from '../Abstract';
2
2
  import { TWithObject3d } from '../Mixins';
3
3
  import { TObject3DParams } from '../ThreeLib';
4
4
  import { Vector2 } from 'three';
5
- import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
5
+ import { CSS2DObject } from '../../../../node_modules/@types/three/examples/jsm/renderers/CSS2DRenderer';
6
6
  export declare function applyObject3dParams(obj: TWithObject3d, { visible, castShadow, receiveShadow, frustumCulled, renderOrder, layers }: Partial<TObject3DParams>): void;
7
7
  export declare function applyCenter(obj: CSS2DObject, center?: Vector2): void;
8
8
  export declare function isWrapper<T extends TAbstractWrapper<E>, E>(obj: T | any): obj is T;
@@ -1 +1 @@
1
- {"version":3,"file":"WrapperHelpers.js","sources":["../../src/Utils/WrapperHelpers.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport type { TWithObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TObject3DParams } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Vector2 } from 'three';\nimport type { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';\n\nexport function applyObject3dParams(obj: TWithObject3d, { visible, castShadow, receiveShadow, frustumCulled, renderOrder, layers }: Partial<TObject3DParams>): void {\n if (isDefined(visible)) obj.setVisible(visible);\n if (isDefined(castShadow)) obj.setCastShadow(castShadow);\n if (isDefined(receiveShadow)) obj.setReceiveShadow(receiveShadow);\n if (isDefined(frustumCulled)) obj.setFrustumCulled(frustumCulled);\n if (isDefined(renderOrder)) obj.setRenderOrder(renderOrder);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(layers) && isDefined(obj.layers?.mask)) obj.layers.mask = layers ?? 1;\n}\n\nexport function applyCenter(obj: CSS2DObject, center?: Vector2): void {\n if (isDefined(center)) obj.center.set(center.x, center.y);\n}\n\nexport function isWrapper<T extends TAbstractWrapper<E>, E>(obj: T | any): obj is T {\n return isDefined((obj as T).entity) && isDefined((obj as T).destroy$) && isDefined((obj as T).id) && isDefined((obj as T).name);\n}\n"],"names":["applyObject3dParams","obj","visible","castShadow","receiveShadow","frustumCulled","renderOrder","layers","isDefined","setVisible","setCastShadow","setReceiveShadow","setFrustumCulled","setRenderOrder","mask","applyCenter","center","set","x","y","isWrapper","entity","destroy$","id","name"],"mappings":"0EAOO,SAASA,oBAAoBC,KAAoBC,QAAEA,QAAAC,WAASA,yBAAYC,cAAAC,cAAeA,cAAAC,YAAeA,YAAAC,OAAaA,SACpHC,UAAUN,UAAUD,IAAIQ,WAAWP,SACnCM,UAAUL,aAAaF,IAAIS,cAAcP,YACzCK,UAAUJ,gBAAgBH,IAAIU,iBAAiBP,eAC/CI,UAAUH,gBAAgBJ,IAAIW,iBAAiBP,eAC/CG,UAAUF,cAAcL,IAAIY,eAAeP,aAE3CE,UAAUD,SAAWC,UAAUP,IAAIM,QAAQO,QAAOb,IAAIM,OAAOO,KAAOP,QAAU,EACpF,CAEO,SAASQ,YAAYd,IAAkBe,QACxCR,UAAUQ,SAASf,IAAIe,OAAOC,IAAID,OAAOE,EAAGF,OAAOG,EACzD,CAEO,SAASC,UAA4CnB,KAC1D,OAAOO,UAAWP,IAAUoB,SAAWb,UAAWP,IAAUqB,WAAad,UAAWP,IAAUsB,KAAOf,UAAWP,IAAUuB,KAC5H"}
1
+ {"version":3,"file":"WrapperHelpers.js","sources":["../../src/Utils/WrapperHelpers.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@hellpig/anarchy-engine/Abstract';\nimport type { TWithObject3d } from '@hellpig/anarchy-engine/Mixins';\nimport type { TObject3DParams } from '@hellpig/anarchy-engine/ThreeLib';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Vector2 } from 'three';\nimport type { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';\n\nexport function applyObject3dParams(obj: TWithObject3d, { visible, castShadow, receiveShadow, frustumCulled, renderOrder, layers }: Partial<TObject3DParams>): void {\n if (isDefined(visible)) obj.setVisible(visible);\n if (isDefined(castShadow)) obj.setCastShadow(castShadow);\n if (isDefined(receiveShadow)) obj.setReceiveShadow(receiveShadow);\n if (isDefined(frustumCulled)) obj.setFrustumCulled(frustumCulled);\n if (isDefined(renderOrder)) obj.setRenderOrder(renderOrder);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(layers) && isDefined(obj.layers?.mask)) obj.layers.mask = layers ?? 1;\n}\n\nexport function applyCenter(obj: CSS2DObject, center?: Vector2): void {\n if (isDefined(center)) obj.center.set(center.x, center.y);\n}\n\nexport function isWrapper<T extends TAbstractWrapper<E>, E>(obj: T | any): obj is T {\n return isDefined((obj as T).entity) && isDefined((obj as T).destroy$) && isDefined((obj as T).id) && isDefined((obj as T).name);\n}\n"],"names":["applyObject3dParams","obj","visible","castShadow","receiveShadow","frustumCulled","renderOrder","layers","isDefined","setVisible","setCastShadow","setReceiveShadow","setFrustumCulled","setRenderOrder","mask","applyCenter","center","set","x","y","isWrapper","entity","destroy$","id","name"],"mappings":"0EAOO,SAASA,oBAAoBC,KAAoBC,QAAEA,QAAAC,WAASA,yBAAYC,cAAAC,cAAeA,cAAAC,YAAeA,YAAAC,OAAaA,SACpHC,UAAUN,UAAUD,IAAIQ,WAAWP,SACnCM,UAAUL,aAAaF,IAAIS,cAAcP,YACzCK,UAAUJ,gBAAgBH,IAAIU,iBAAiBP,eAC/CI,UAAUH,gBAAgBJ,IAAIW,iBAAiBP,eAC/CG,UAAUF,cAAcL,IAAIY,eAAeP,aAE3CE,UAAUD,SAAWC,UAAUP,IAAIM,QAAQO,QAAOb,IAAIM,OAAOO,KAAOP,QAAU,EACpF,CAEO,SAASQ,YAAYd,IAAkBe,QACxCR,UAAUQ,SAASf,IAAIe,OAAOC,IAAID,OAAOE,EAAGF,OAAOG,EACzD,CAEO,SAASC,UAA4CnB,KAC1D,OAAOO,UAAWP,IAAUoB,SAAWb,UAAWP,IAAUqB,WAAad,UAAWP,IAAUsB,KAAOf,UAAWP,IAAUuB,KAC5H"}