@vived/core 1.4.2 → 1.4.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 (528) hide show
  1. package/README.md +142 -20
  2. package/dist/cjs/AppObject/AppObject.js +53 -0
  3. package/dist/cjs/AppObject/AppObject.js.map +1 -1
  4. package/dist/cjs/AppObject/AppObjectComponent.js +78 -0
  5. package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -1
  6. package/dist/cjs/AppObject/AppObjectController.js +22 -0
  7. package/dist/cjs/AppObject/AppObjectController.js.map +1 -1
  8. package/dist/cjs/AppObject/AppObjectEntity.js +52 -0
  9. package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -1
  10. package/dist/cjs/AppObject/AppObjectEntityRepo.js +75 -1
  11. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -1
  12. package/dist/cjs/AppObject/AppObjectPM.js +46 -0
  13. package/dist/cjs/AppObject/AppObjectPM.js.map +1 -1
  14. package/dist/cjs/AppObject/AppObjectRepo.js +20 -0
  15. package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -1
  16. package/dist/cjs/AppObject/AppObjectUC.js +23 -0
  17. package/dist/cjs/AppObject/AppObjectUC.js.map +1 -1
  18. package/dist/cjs/AppObject/AppObjectView.js +22 -0
  19. package/dist/cjs/AppObject/AppObjectView.js.map +1 -1
  20. package/dist/cjs/AppObject/getSingletonComponent.js +19 -0
  21. package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -1
  22. package/dist/cjs/Entities/MemoizedAngle.js +21 -0
  23. package/dist/cjs/Entities/MemoizedAngle.js.map +1 -1
  24. package/dist/cjs/Entities/MemoizedBoolean.js +21 -0
  25. package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -1
  26. package/dist/cjs/Entities/MemoizedColor.js +21 -0
  27. package/dist/cjs/Entities/MemoizedColor.js.map +1 -1
  28. package/dist/cjs/Entities/MemoizedNumber.js +21 -0
  29. package/dist/cjs/Entities/MemoizedNumber.js.map +1 -1
  30. package/dist/cjs/Entities/MemoizedQuaternion.js +21 -0
  31. package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -1
  32. package/dist/cjs/Entities/MemoizedString.js +21 -0
  33. package/dist/cjs/Entities/MemoizedString.js.map +1 -1
  34. package/dist/cjs/Entities/MemoizedVector2.js +21 -0
  35. package/dist/cjs/Entities/MemoizedVector2.js.map +1 -1
  36. package/dist/cjs/Entities/MemoizedVector3.js +21 -0
  37. package/dist/cjs/Entities/MemoizedVector3.js.map +1 -1
  38. package/dist/cjs/Entities/ObservableEntity.js +17 -0
  39. package/dist/cjs/Entities/ObservableEntity.js.map +1 -1
  40. package/dist/cjs/Entities/ObserverList.js +21 -0
  41. package/dist/cjs/Entities/ObserverList.js.map +1 -1
  42. package/dist/cjs/Entities/RangedNumber.js +29 -0
  43. package/dist/cjs/Entities/RangedNumber.js.map +1 -1
  44. package/dist/cjs/ExampleFeature/Adapters/examplePmAdapter.js +64 -0
  45. package/dist/cjs/ExampleFeature/Adapters/examplePmAdapter.js.map +1 -0
  46. package/dist/cjs/ExampleFeature/Adapters/exampleSingletonPmAdapter.js +60 -0
  47. package/dist/cjs/ExampleFeature/Adapters/exampleSingletonPmAdapter.js.map +1 -0
  48. package/dist/cjs/ExampleFeature/Adapters/index.js +19 -0
  49. package/dist/cjs/ExampleFeature/Adapters/index.js.map +1 -0
  50. package/dist/cjs/ExampleFeature/Controllers/index.js +19 -0
  51. package/dist/cjs/ExampleFeature/Controllers/index.js.map +1 -0
  52. package/dist/cjs/ExampleFeature/Controllers/setExampleText.js +48 -0
  53. package/dist/cjs/ExampleFeature/Controllers/setExampleText.js.map +1 -0
  54. package/dist/cjs/ExampleFeature/Controllers/toggleExampleBoolean.js +47 -0
  55. package/dist/cjs/ExampleFeature/Controllers/toggleExampleBoolean.js.map +1 -0
  56. package/dist/cjs/ExampleFeature/Entities/ExampleEntity.js +90 -0
  57. package/dist/cjs/ExampleFeature/Entities/ExampleEntity.js.map +1 -0
  58. package/dist/cjs/ExampleFeature/Entities/ExampleRepo.js +113 -0
  59. package/dist/cjs/ExampleFeature/Entities/ExampleRepo.js.map +1 -0
  60. package/dist/cjs/ExampleFeature/Entities/ExampleSingletonEntity.js +69 -0
  61. package/dist/cjs/ExampleFeature/Entities/ExampleSingletonEntity.js.map +1 -0
  62. package/dist/cjs/ExampleFeature/Entities/index.js +20 -0
  63. package/dist/cjs/ExampleFeature/Entities/index.js.map +1 -0
  64. package/dist/cjs/ExampleFeature/Factory/index.js +18 -0
  65. package/dist/cjs/ExampleFeature/Factory/index.js.map +1 -0
  66. package/dist/cjs/ExampleFeature/Factory/setupExampleFeature.js +29 -0
  67. package/dist/cjs/ExampleFeature/Factory/setupExampleFeature.js.map +1 -0
  68. package/dist/cjs/ExampleFeature/Mocks/MockEditExampleStringUC.js +47 -0
  69. package/dist/cjs/ExampleFeature/Mocks/MockEditExampleStringUC.js.map +1 -0
  70. package/dist/cjs/ExampleFeature/Mocks/MockExamplePM.js +48 -0
  71. package/dist/cjs/ExampleFeature/Mocks/MockExamplePM.js.map +1 -0
  72. package/dist/cjs/ExampleFeature/Mocks/MockExampleSingletonPM.js +59 -0
  73. package/dist/cjs/ExampleFeature/Mocks/MockExampleSingletonPM.js.map +1 -0
  74. package/dist/cjs/ExampleFeature/Mocks/MockToggleExampleBooleanUC.js +57 -0
  75. package/dist/cjs/ExampleFeature/Mocks/MockToggleExampleBooleanUC.js.map +1 -0
  76. package/dist/cjs/ExampleFeature/Mocks/index.js +21 -0
  77. package/dist/cjs/ExampleFeature/Mocks/index.js.map +1 -0
  78. package/dist/cjs/ExampleFeature/PMs/ExamplePM.js +97 -0
  79. package/dist/cjs/ExampleFeature/PMs/ExamplePM.js.map +1 -0
  80. package/dist/cjs/ExampleFeature/PMs/ExampleSingletonPM.js +102 -0
  81. package/dist/cjs/ExampleFeature/PMs/ExampleSingletonPM.js.map +1 -0
  82. package/dist/cjs/ExampleFeature/PMs/index.js +19 -0
  83. package/dist/cjs/ExampleFeature/PMs/index.js.map +1 -0
  84. package/dist/cjs/ExampleFeature/UCs/EditExampleStringUC.js +87 -0
  85. package/dist/cjs/ExampleFeature/UCs/EditExampleStringUC.js.map +1 -0
  86. package/dist/cjs/ExampleFeature/UCs/ToggleExampleBooleanUC.js +79 -0
  87. package/dist/cjs/ExampleFeature/UCs/ToggleExampleBooleanUC.js.map +1 -0
  88. package/dist/cjs/ExampleFeature/UCs/index.js +19 -0
  89. package/dist/cjs/ExampleFeature/UCs/index.js.map +1 -0
  90. package/dist/cjs/ExampleFeature/index.js +24 -0
  91. package/dist/cjs/ExampleFeature/index.js.map +1 -0
  92. package/dist/cjs/Types/PmAdapter.js.map +1 -1
  93. package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -1
  94. package/dist/cjs/ValueObjects/Angle.js +1 -1
  95. package/dist/cjs/ValueObjects/Angle.js.map +1 -1
  96. package/dist/cjs/ValueObjects/LineSegment2D.js +6 -6
  97. package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -1
  98. package/dist/cjs/ValueObjects/Matrix.js +6 -6
  99. package/dist/cjs/ValueObjects/Matrix.js.map +1 -1
  100. package/dist/cjs/ValueObjects/Quaternion.js +17 -17
  101. package/dist/cjs/ValueObjects/Quaternion.js.map +1 -1
  102. package/dist/cjs/ValueObjects/Vector2.js +15 -8
  103. package/dist/cjs/ValueObjects/Vector2.js.map +1 -1
  104. package/dist/cjs/index.js +1 -0
  105. package/dist/cjs/index.js.map +1 -1
  106. package/dist/esm/AppObject/AppObject.js +53 -0
  107. package/dist/esm/AppObject/AppObject.js.map +1 -1
  108. package/dist/esm/AppObject/AppObjectComponent.js +78 -0
  109. package/dist/esm/AppObject/AppObjectComponent.js.map +1 -1
  110. package/dist/esm/AppObject/AppObjectController.js +22 -0
  111. package/dist/esm/AppObject/AppObjectController.js.map +1 -1
  112. package/dist/esm/AppObject/AppObjectEntity.js +52 -0
  113. package/dist/esm/AppObject/AppObjectEntity.js.map +1 -1
  114. package/dist/esm/AppObject/AppObjectEntityRepo.js +75 -1
  115. package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -1
  116. package/dist/esm/AppObject/AppObjectPM.js +46 -0
  117. package/dist/esm/AppObject/AppObjectPM.js.map +1 -1
  118. package/dist/esm/AppObject/AppObjectRepo.js +20 -0
  119. package/dist/esm/AppObject/AppObjectRepo.js.map +1 -1
  120. package/dist/esm/AppObject/AppObjectUC.js +24 -1
  121. package/dist/esm/AppObject/AppObjectUC.js.map +1 -1
  122. package/dist/esm/AppObject/AppObjectView.js +23 -1
  123. package/dist/esm/AppObject/AppObjectView.js.map +1 -1
  124. package/dist/esm/AppObject/getSingletonComponent.js +19 -0
  125. package/dist/esm/AppObject/getSingletonComponent.js.map +1 -1
  126. package/dist/esm/Entities/MemoizedAngle.js +21 -0
  127. package/dist/esm/Entities/MemoizedAngle.js.map +1 -1
  128. package/dist/esm/Entities/MemoizedBoolean.js +21 -0
  129. package/dist/esm/Entities/MemoizedBoolean.js.map +1 -1
  130. package/dist/esm/Entities/MemoizedColor.js +21 -0
  131. package/dist/esm/Entities/MemoizedColor.js.map +1 -1
  132. package/dist/esm/Entities/MemoizedNumber.js +21 -0
  133. package/dist/esm/Entities/MemoizedNumber.js.map +1 -1
  134. package/dist/esm/Entities/MemoizedQuaternion.js +21 -0
  135. package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -1
  136. package/dist/esm/Entities/MemoizedString.js +21 -0
  137. package/dist/esm/Entities/MemoizedString.js.map +1 -1
  138. package/dist/esm/Entities/MemoizedVector2.js +21 -0
  139. package/dist/esm/Entities/MemoizedVector2.js.map +1 -1
  140. package/dist/esm/Entities/MemoizedVector3.js +21 -0
  141. package/dist/esm/Entities/MemoizedVector3.js.map +1 -1
  142. package/dist/esm/Entities/ObservableEntity.js +17 -0
  143. package/dist/esm/Entities/ObservableEntity.js.map +1 -1
  144. package/dist/esm/Entities/ObserverList.js +21 -0
  145. package/dist/esm/Entities/ObserverList.js.map +1 -1
  146. package/dist/esm/Entities/RangedNumber.js +29 -0
  147. package/dist/esm/Entities/RangedNumber.js.map +1 -1
  148. package/dist/esm/ExampleFeature/Adapters/examplePmAdapter.js +61 -0
  149. package/dist/esm/ExampleFeature/Adapters/examplePmAdapter.js.map +1 -0
  150. package/dist/esm/ExampleFeature/Adapters/exampleSingletonPmAdapter.js +57 -0
  151. package/dist/esm/ExampleFeature/Adapters/exampleSingletonPmAdapter.js.map +1 -0
  152. package/dist/esm/ExampleFeature/Adapters/index.js +3 -0
  153. package/dist/esm/ExampleFeature/Adapters/index.js.map +1 -0
  154. package/dist/esm/ExampleFeature/Controllers/index.js +3 -0
  155. package/dist/esm/ExampleFeature/Controllers/index.js.map +1 -0
  156. package/dist/esm/ExampleFeature/Controllers/setExampleText.js +45 -0
  157. package/dist/esm/ExampleFeature/Controllers/setExampleText.js.map +1 -0
  158. package/dist/esm/ExampleFeature/Controllers/toggleExampleBoolean.js +44 -0
  159. package/dist/esm/ExampleFeature/Controllers/toggleExampleBoolean.js.map +1 -0
  160. package/dist/esm/ExampleFeature/Entities/ExampleEntity.js +85 -0
  161. package/dist/esm/ExampleFeature/Entities/ExampleEntity.js.map +1 -0
  162. package/dist/esm/ExampleFeature/Entities/ExampleRepo.js +108 -0
  163. package/dist/esm/ExampleFeature/Entities/ExampleRepo.js.map +1 -0
  164. package/dist/esm/ExampleFeature/Entities/ExampleSingletonEntity.js +64 -0
  165. package/dist/esm/ExampleFeature/Entities/ExampleSingletonEntity.js.map +1 -0
  166. package/dist/esm/ExampleFeature/Entities/index.js +4 -0
  167. package/dist/esm/ExampleFeature/Entities/index.js.map +1 -0
  168. package/dist/esm/ExampleFeature/Factory/index.js +2 -0
  169. package/dist/esm/ExampleFeature/Factory/index.js.map +1 -0
  170. package/dist/esm/ExampleFeature/Factory/setupExampleFeature.js +26 -0
  171. package/dist/esm/ExampleFeature/Factory/setupExampleFeature.js.map +1 -0
  172. package/dist/esm/ExampleFeature/Mocks/MockEditExampleStringUC.js +43 -0
  173. package/dist/esm/ExampleFeature/Mocks/MockEditExampleStringUC.js.map +1 -0
  174. package/dist/esm/ExampleFeature/Mocks/MockExamplePM.js +44 -0
  175. package/dist/esm/ExampleFeature/Mocks/MockExamplePM.js.map +1 -0
  176. package/dist/esm/ExampleFeature/Mocks/MockExampleSingletonPM.js +54 -0
  177. package/dist/esm/ExampleFeature/Mocks/MockExampleSingletonPM.js.map +1 -0
  178. package/dist/esm/ExampleFeature/Mocks/MockToggleExampleBooleanUC.js +52 -0
  179. package/dist/esm/ExampleFeature/Mocks/MockToggleExampleBooleanUC.js.map +1 -0
  180. package/dist/esm/ExampleFeature/Mocks/index.js +5 -0
  181. package/dist/esm/ExampleFeature/Mocks/index.js.map +1 -0
  182. package/dist/esm/ExampleFeature/PMs/ExamplePM.js +92 -0
  183. package/dist/esm/ExampleFeature/PMs/ExamplePM.js.map +1 -0
  184. package/dist/esm/ExampleFeature/PMs/ExampleSingletonPM.js +97 -0
  185. package/dist/esm/ExampleFeature/PMs/ExampleSingletonPM.js.map +1 -0
  186. package/dist/esm/ExampleFeature/PMs/index.js +3 -0
  187. package/dist/esm/ExampleFeature/PMs/index.js.map +1 -0
  188. package/dist/esm/ExampleFeature/UCs/EditExampleStringUC.js +82 -0
  189. package/dist/esm/ExampleFeature/UCs/EditExampleStringUC.js.map +1 -0
  190. package/dist/esm/ExampleFeature/UCs/ToggleExampleBooleanUC.js +74 -0
  191. package/dist/esm/ExampleFeature/UCs/ToggleExampleBooleanUC.js.map +1 -0
  192. package/dist/esm/ExampleFeature/UCs/index.js +3 -0
  193. package/dist/esm/ExampleFeature/UCs/index.js.map +1 -0
  194. package/dist/esm/ExampleFeature/index.js +8 -0
  195. package/dist/esm/ExampleFeature/index.js.map +1 -0
  196. package/dist/esm/Types/PmAdapter.js.map +1 -1
  197. package/dist/esm/Types/SingletonPmAdapter.js.map +1 -1
  198. package/dist/esm/ValueObjects/Angle.js +1 -1
  199. package/dist/esm/ValueObjects/Angle.js.map +1 -1
  200. package/dist/esm/ValueObjects/LineSegment2D.js +6 -6
  201. package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -1
  202. package/dist/esm/ValueObjects/Matrix.js +6 -6
  203. package/dist/esm/ValueObjects/Matrix.js.map +1 -1
  204. package/dist/esm/ValueObjects/Quaternion.js +17 -17
  205. package/dist/esm/ValueObjects/Quaternion.js.map +1 -1
  206. package/dist/esm/ValueObjects/Vector2.js +15 -8
  207. package/dist/esm/ValueObjects/Vector2.js.map +1 -1
  208. package/dist/esm/index.js +1 -0
  209. package/dist/esm/index.js.map +1 -1
  210. package/dist/types/AppObject/AppObject.d.ts +42 -0
  211. package/dist/types/AppObject/AppObject.d.ts.map +1 -1
  212. package/dist/types/AppObject/AppObjectComponent.d.ts +80 -0
  213. package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -1
  214. package/dist/types/AppObject/AppObjectController.d.ts +22 -0
  215. package/dist/types/AppObject/AppObjectController.d.ts.map +1 -1
  216. package/dist/types/AppObject/AppObjectEntity.d.ts +55 -0
  217. package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -1
  218. package/dist/types/AppObject/AppObjectEntityRepo.d.ts +75 -0
  219. package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -1
  220. package/dist/types/AppObject/AppObjectPM.d.ts +53 -0
  221. package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -1
  222. package/dist/types/AppObject/AppObjectRepo.d.ts +124 -0
  223. package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -1
  224. package/dist/types/AppObject/AppObjectUC.d.ts +23 -0
  225. package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -1
  226. package/dist/types/AppObject/AppObjectView.d.ts +22 -0
  227. package/dist/types/AppObject/AppObjectView.d.ts.map +1 -1
  228. package/dist/types/AppObject/getSingletonComponent.d.ts +19 -0
  229. package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -1
  230. package/dist/types/Entities/MemoizedAngle.d.ts +21 -0
  231. package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -1
  232. package/dist/types/Entities/MemoizedBoolean.d.ts +21 -0
  233. package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -1
  234. package/dist/types/Entities/MemoizedColor.d.ts +21 -0
  235. package/dist/types/Entities/MemoizedColor.d.ts.map +1 -1
  236. package/dist/types/Entities/MemoizedNumber.d.ts +21 -0
  237. package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -1
  238. package/dist/types/Entities/MemoizedQuaternion.d.ts +21 -0
  239. package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -1
  240. package/dist/types/Entities/MemoizedString.d.ts +21 -0
  241. package/dist/types/Entities/MemoizedString.d.ts.map +1 -1
  242. package/dist/types/Entities/MemoizedVector2.d.ts +21 -0
  243. package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -1
  244. package/dist/types/Entities/MemoizedVector3.d.ts +21 -0
  245. package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -1
  246. package/dist/types/Entities/ObservableEntity.d.ts +20 -0
  247. package/dist/types/Entities/ObservableEntity.d.ts.map +1 -1
  248. package/dist/types/Entities/ObserverList.d.ts +21 -0
  249. package/dist/types/Entities/ObserverList.d.ts.map +1 -1
  250. package/dist/types/Entities/RangedNumber.d.ts +37 -0
  251. package/dist/types/Entities/RangedNumber.d.ts.map +1 -1
  252. package/dist/types/ExampleFeature/Adapters/examplePmAdapter.d.ts +29 -0
  253. package/dist/types/ExampleFeature/Adapters/examplePmAdapter.d.ts.map +1 -0
  254. package/dist/types/ExampleFeature/Adapters/exampleSingletonPmAdapter.d.ts +31 -0
  255. package/dist/types/ExampleFeature/Adapters/exampleSingletonPmAdapter.d.ts.map +1 -0
  256. package/dist/types/ExampleFeature/Adapters/index.d.ts +3 -0
  257. package/dist/types/ExampleFeature/Adapters/index.d.ts.map +1 -0
  258. package/dist/types/ExampleFeature/Controllers/index.d.ts +3 -0
  259. package/dist/types/ExampleFeature/Controllers/index.d.ts.map +1 -0
  260. package/dist/types/ExampleFeature/Controllers/setExampleText.d.ts +35 -0
  261. package/dist/types/ExampleFeature/Controllers/setExampleText.d.ts.map +1 -0
  262. package/dist/types/ExampleFeature/Controllers/toggleExampleBoolean.d.ts +34 -0
  263. package/dist/types/ExampleFeature/Controllers/toggleExampleBoolean.d.ts.map +1 -0
  264. package/dist/types/ExampleFeature/Entities/ExampleEntity.d.ts +55 -0
  265. package/dist/types/ExampleFeature/Entities/ExampleEntity.d.ts.map +1 -0
  266. package/dist/types/ExampleFeature/Entities/ExampleRepo.d.ts +62 -0
  267. package/dist/types/ExampleFeature/Entities/ExampleRepo.d.ts.map +1 -0
  268. package/dist/types/ExampleFeature/Entities/ExampleSingletonEntity.d.ts +43 -0
  269. package/dist/types/ExampleFeature/Entities/ExampleSingletonEntity.d.ts.map +1 -0
  270. package/dist/types/ExampleFeature/Entities/index.d.ts +4 -0
  271. package/dist/types/ExampleFeature/Entities/index.d.ts.map +1 -0
  272. package/dist/types/ExampleFeature/Factory/index.d.ts +2 -0
  273. package/dist/types/ExampleFeature/Factory/index.d.ts.map +1 -0
  274. package/dist/types/ExampleFeature/Factory/setupExampleFeature.d.ts +17 -0
  275. package/dist/types/ExampleFeature/Factory/setupExampleFeature.d.ts.map +1 -0
  276. package/dist/types/ExampleFeature/Mocks/MockEditExampleStringUC.d.ts +42 -0
  277. package/dist/types/ExampleFeature/Mocks/MockEditExampleStringUC.d.ts.map +1 -0
  278. package/dist/types/ExampleFeature/Mocks/MockExamplePM.d.ts +41 -0
  279. package/dist/types/ExampleFeature/Mocks/MockExamplePM.d.ts.map +1 -0
  280. package/dist/types/ExampleFeature/Mocks/MockExampleSingletonPM.d.ts +49 -0
  281. package/dist/types/ExampleFeature/Mocks/MockExampleSingletonPM.d.ts.map +1 -0
  282. package/dist/types/ExampleFeature/Mocks/MockToggleExampleBooleanUC.d.ts +47 -0
  283. package/dist/types/ExampleFeature/Mocks/MockToggleExampleBooleanUC.d.ts.map +1 -0
  284. package/dist/types/ExampleFeature/Mocks/index.d.ts +5 -0
  285. package/dist/types/ExampleFeature/Mocks/index.d.ts.map +1 -0
  286. package/dist/types/ExampleFeature/PMs/ExamplePM.d.ts +42 -0
  287. package/dist/types/ExampleFeature/PMs/ExamplePM.d.ts.map +1 -0
  288. package/dist/types/ExampleFeature/PMs/ExampleSingletonPM.d.ts +52 -0
  289. package/dist/types/ExampleFeature/PMs/ExampleSingletonPM.d.ts.map +1 -0
  290. package/dist/types/ExampleFeature/PMs/index.d.ts +3 -0
  291. package/dist/types/ExampleFeature/PMs/index.d.ts.map +1 -0
  292. package/dist/types/ExampleFeature/UCs/EditExampleStringUC.d.ts +52 -0
  293. package/dist/types/ExampleFeature/UCs/EditExampleStringUC.d.ts.map +1 -0
  294. package/dist/types/ExampleFeature/UCs/ToggleExampleBooleanUC.d.ts +44 -0
  295. package/dist/types/ExampleFeature/UCs/ToggleExampleBooleanUC.d.ts.map +1 -0
  296. package/dist/types/ExampleFeature/UCs/index.d.ts +3 -0
  297. package/dist/types/ExampleFeature/UCs/index.d.ts.map +1 -0
  298. package/dist/types/ExampleFeature/index.d.ts +8 -0
  299. package/dist/types/ExampleFeature/index.d.ts.map +1 -0
  300. package/dist/types/Types/PmAdapter.d.ts +60 -0
  301. package/dist/types/Types/PmAdapter.d.ts.map +1 -1
  302. package/dist/types/Types/SingletonPmAdapter.d.ts +55 -0
  303. package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -1
  304. package/dist/types/ValueObjects/Angle.d.ts +1 -1
  305. package/dist/types/ValueObjects/Matrix.d.ts +5 -5
  306. package/dist/types/ValueObjects/Matrix.d.ts.map +1 -1
  307. package/dist/types/ValueObjects/Quaternion.d.ts +17 -17
  308. package/dist/types/ValueObjects/Vector2.d.ts +8 -3
  309. package/dist/types/ValueObjects/Vector2.d.ts.map +1 -1
  310. package/dist/types/index.d.ts +1 -0
  311. package/dist/types/index.d.ts.map +1 -1
  312. package/package.json +6 -4
  313. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  314. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  315. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  316. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  317. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  318. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  319. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  320. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  321. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  322. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  323. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  324. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  325. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  326. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  327. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  328. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  329. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  330. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  331. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  332. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  333. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  334. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  335. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  336. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  337. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  338. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  339. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  340. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  341. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  342. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  343. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  344. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  345. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  346. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  347. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  348. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  349. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  350. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  351. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  352. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  353. package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
  354. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
  355. package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
  356. package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
  357. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  358. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  359. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  360. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  361. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  362. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  363. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  364. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  365. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  366. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  367. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  368. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  369. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  370. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  371. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  372. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  373. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  374. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  375. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  376. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  377. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  378. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  379. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  380. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  381. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  382. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  383. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  384. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  385. package/dist/esm/AppObject/AppObject.test.js +0 -110
  386. package/dist/esm/AppObject/AppObject.test.js.map +0 -1
  387. package/dist/esm/AppObject/AppObjectComponent.test.js +0 -130
  388. package/dist/esm/AppObject/AppObjectComponent.test.js.map +0 -1
  389. package/dist/esm/AppObject/AppObjectEntity.test.js +0 -106
  390. package/dist/esm/AppObject/AppObjectEntity.test.js.map +0 -1
  391. package/dist/esm/AppObject/AppObjectEntityRepo.test.js +0 -147
  392. package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  393. package/dist/esm/AppObject/AppObjectPM.test.js +0 -101
  394. package/dist/esm/AppObject/AppObjectPM.test.js.map +0 -1
  395. package/dist/esm/AppObject/AppObjectRepo.test.js +0 -211
  396. package/dist/esm/AppObject/AppObjectRepo.test.js.map +0 -1
  397. package/dist/esm/AppObject/getSingletonComponent.test.js +0 -11
  398. package/dist/esm/AppObject/getSingletonComponent.test.js.map +0 -1
  399. package/dist/esm/Entities/MemoizedAngle.test.js +0 -28
  400. package/dist/esm/Entities/MemoizedAngle.test.js.map +0 -1
  401. package/dist/esm/Entities/MemoizedBoolean.test.js +0 -32
  402. package/dist/esm/Entities/MemoizedBoolean.test.js.map +0 -1
  403. package/dist/esm/Entities/MemoizedColor.test.js +0 -30
  404. package/dist/esm/Entities/MemoizedColor.test.js.map +0 -1
  405. package/dist/esm/Entities/MemoizedNumber.test.js +0 -27
  406. package/dist/esm/Entities/MemoizedNumber.test.js.map +0 -1
  407. package/dist/esm/Entities/MemoizedQuaternion.test.js +0 -30
  408. package/dist/esm/Entities/MemoizedQuaternion.test.js.map +0 -1
  409. package/dist/esm/Entities/MemoizedString.test.js +0 -27
  410. package/dist/esm/Entities/MemoizedString.test.js.map +0 -1
  411. package/dist/esm/Entities/MemoizedVector2.test.js +0 -30
  412. package/dist/esm/Entities/MemoizedVector2.test.js.map +0 -1
  413. package/dist/esm/Entities/MemoizedVector3.test.js +0 -30
  414. package/dist/esm/Entities/MemoizedVector3.test.js.map +0 -1
  415. package/dist/esm/Entities/ObservableEntity.test.js +0 -23
  416. package/dist/esm/Entities/ObservableEntity.test.js.map +0 -1
  417. package/dist/esm/Entities/ObserverList.test.js +0 -42
  418. package/dist/esm/Entities/ObserverList.test.js.map +0 -1
  419. package/dist/esm/Entities/RangedNumber.test.js +0 -94
  420. package/dist/esm/Entities/RangedNumber.test.js.map +0 -1
  421. package/dist/esm/Utilities/LengthConverters.test.js +0 -22
  422. package/dist/esm/Utilities/LengthConverters.test.js.map +0 -1
  423. package/dist/esm/Utilities/LerpNumber.test.js +0 -88
  424. package/dist/esm/Utilities/LerpNumber.test.js.map +0 -1
  425. package/dist/esm/Utilities/addAlphaToHex.test.js +0 -32
  426. package/dist/esm/Utilities/addAlphaToHex.test.js.map +0 -1
  427. package/dist/esm/Utilities/alphaToHex.test.js +0 -73
  428. package/dist/esm/Utilities/alphaToHex.test.js.map +0 -1
  429. package/dist/esm/Utilities/degreesToRadians.test.js +0 -7
  430. package/dist/esm/Utilities/degreesToRadians.test.js.map +0 -1
  431. package/dist/esm/Utilities/easeFunctions.test.js +0 -207
  432. package/dist/esm/Utilities/easeFunctions.test.js.map +0 -1
  433. package/dist/esm/Utilities/interpolateNumber.test.js +0 -24
  434. package/dist/esm/Utilities/interpolateNumber.test.js.map +0 -1
  435. package/dist/esm/ValueObjects/Angle.test.js +0 -26
  436. package/dist/esm/ValueObjects/Angle.test.js.map +0 -1
  437. package/dist/esm/ValueObjects/Color.test.js +0 -145
  438. package/dist/esm/ValueObjects/Color.test.js.map +0 -1
  439. package/dist/esm/ValueObjects/LineSegment2D.test.js +0 -100
  440. package/dist/esm/ValueObjects/LineSegment2D.test.js.map +0 -1
  441. package/dist/esm/ValueObjects/Matrix.test.js +0 -383
  442. package/dist/esm/ValueObjects/Matrix.test.js.map +0 -1
  443. package/dist/esm/ValueObjects/ParametricLine.test.js +0 -124
  444. package/dist/esm/ValueObjects/ParametricLine.test.js.map +0 -1
  445. package/dist/esm/ValueObjects/ParametricPlane.test.js +0 -99
  446. package/dist/esm/ValueObjects/ParametricPlane.test.js.map +0 -1
  447. package/dist/esm/ValueObjects/Quaternion.test.js +0 -238
  448. package/dist/esm/ValueObjects/Quaternion.test.js.map +0 -1
  449. package/dist/esm/ValueObjects/Rectangle.test.js +0 -30
  450. package/dist/esm/ValueObjects/Rectangle.test.js.map +0 -1
  451. package/dist/esm/ValueObjects/Vector2.test.js +0 -134
  452. package/dist/esm/ValueObjects/Vector2.test.js.map +0 -1
  453. package/dist/esm/ValueObjects/Vector3.test.js +0 -186
  454. package/dist/esm/ValueObjects/Vector3.test.js.map +0 -1
  455. package/dist/esm/ValueObjects/Version.test.js +0 -308
  456. package/dist/esm/ValueObjects/Version.test.js.map +0 -1
  457. package/dist/types/AppObject/AppObject.test.d.ts +0 -7
  458. package/dist/types/AppObject/AppObject.test.d.ts.map +0 -1
  459. package/dist/types/AppObject/AppObjectComponent.test.d.ts +0 -2
  460. package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +0 -1
  461. package/dist/types/AppObject/AppObjectEntity.test.d.ts +0 -2
  462. package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +0 -1
  463. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +0 -2
  464. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +0 -1
  465. package/dist/types/AppObject/AppObjectPM.test.d.ts +0 -2
  466. package/dist/types/AppObject/AppObjectPM.test.d.ts.map +0 -1
  467. package/dist/types/AppObject/AppObjectRepo.test.d.ts +0 -2
  468. package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +0 -1
  469. package/dist/types/AppObject/getSingletonComponent.test.d.ts +0 -2
  470. package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +0 -1
  471. package/dist/types/Entities/MemoizedAngle.test.d.ts +0 -2
  472. package/dist/types/Entities/MemoizedAngle.test.d.ts.map +0 -1
  473. package/dist/types/Entities/MemoizedBoolean.test.d.ts +0 -2
  474. package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +0 -1
  475. package/dist/types/Entities/MemoizedColor.test.d.ts +0 -2
  476. package/dist/types/Entities/MemoizedColor.test.d.ts.map +0 -1
  477. package/dist/types/Entities/MemoizedNumber.test.d.ts +0 -2
  478. package/dist/types/Entities/MemoizedNumber.test.d.ts.map +0 -1
  479. package/dist/types/Entities/MemoizedQuaternion.test.d.ts +0 -2
  480. package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +0 -1
  481. package/dist/types/Entities/MemoizedString.test.d.ts +0 -2
  482. package/dist/types/Entities/MemoizedString.test.d.ts.map +0 -1
  483. package/dist/types/Entities/MemoizedVector2.test.d.ts +0 -2
  484. package/dist/types/Entities/MemoizedVector2.test.d.ts.map +0 -1
  485. package/dist/types/Entities/MemoizedVector3.test.d.ts +0 -2
  486. package/dist/types/Entities/MemoizedVector3.test.d.ts.map +0 -1
  487. package/dist/types/Entities/ObservableEntity.test.d.ts +0 -2
  488. package/dist/types/Entities/ObservableEntity.test.d.ts.map +0 -1
  489. package/dist/types/Entities/ObserverList.test.d.ts +0 -2
  490. package/dist/types/Entities/ObserverList.test.d.ts.map +0 -1
  491. package/dist/types/Entities/RangedNumber.test.d.ts +0 -2
  492. package/dist/types/Entities/RangedNumber.test.d.ts.map +0 -1
  493. package/dist/types/Utilities/LengthConverters.test.d.ts +0 -2
  494. package/dist/types/Utilities/LengthConverters.test.d.ts.map +0 -1
  495. package/dist/types/Utilities/LerpNumber.test.d.ts +0 -2
  496. package/dist/types/Utilities/LerpNumber.test.d.ts.map +0 -1
  497. package/dist/types/Utilities/addAlphaToHex.test.d.ts +0 -2
  498. package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +0 -1
  499. package/dist/types/Utilities/alphaToHex.test.d.ts +0 -2
  500. package/dist/types/Utilities/alphaToHex.test.d.ts.map +0 -1
  501. package/dist/types/Utilities/degreesToRadians.test.d.ts +0 -2
  502. package/dist/types/Utilities/degreesToRadians.test.d.ts.map +0 -1
  503. package/dist/types/Utilities/easeFunctions.test.d.ts +0 -2
  504. package/dist/types/Utilities/easeFunctions.test.d.ts.map +0 -1
  505. package/dist/types/Utilities/interpolateNumber.test.d.ts +0 -2
  506. package/dist/types/Utilities/interpolateNumber.test.d.ts.map +0 -1
  507. package/dist/types/ValueObjects/Angle.test.d.ts +0 -2
  508. package/dist/types/ValueObjects/Angle.test.d.ts.map +0 -1
  509. package/dist/types/ValueObjects/Color.test.d.ts +0 -2
  510. package/dist/types/ValueObjects/Color.test.d.ts.map +0 -1
  511. package/dist/types/ValueObjects/LineSegment2D.test.d.ts +0 -2
  512. package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +0 -1
  513. package/dist/types/ValueObjects/Matrix.test.d.ts +0 -2
  514. package/dist/types/ValueObjects/Matrix.test.d.ts.map +0 -1
  515. package/dist/types/ValueObjects/ParametricLine.test.d.ts +0 -2
  516. package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +0 -1
  517. package/dist/types/ValueObjects/ParametricPlane.test.d.ts +0 -2
  518. package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +0 -1
  519. package/dist/types/ValueObjects/Quaternion.test.d.ts +0 -2
  520. package/dist/types/ValueObjects/Quaternion.test.d.ts.map +0 -1
  521. package/dist/types/ValueObjects/Rectangle.test.d.ts +0 -2
  522. package/dist/types/ValueObjects/Rectangle.test.d.ts.map +0 -1
  523. package/dist/types/ValueObjects/Vector2.test.d.ts +0 -2
  524. package/dist/types/ValueObjects/Vector2.test.d.ts.map +0 -1
  525. package/dist/types/ValueObjects/Vector3.test.d.ts +0 -2
  526. package/dist/types/ValueObjects/Vector3.test.d.ts.map +0 -1
  527. package/dist/types/ValueObjects/Version.test.d.ts +0 -2
  528. package/dist/types/ValueObjects/Version.test.d.ts.map +0 -1
@@ -1,16 +1,37 @@
1
+ /**
2
+ * A wrapper class for numeric values that tracks changes and triggers callbacks.
3
+ * Only triggers the callback when the value actually changes.
4
+ */
1
5
  export class MemoizedNumber {
6
+ /**
7
+ * Gets the current numeric value
8
+ */
2
9
  get val() {
3
10
  return this._val;
4
11
  }
12
+ /**
13
+ * Sets the numeric value and triggers the onChange callback if the value changed
14
+ * @param b - The new numeric value
15
+ */
5
16
  set val(b) {
6
17
  if (this._val === b)
7
18
  return;
8
19
  this._val = b;
9
20
  this.onChangeCallback();
10
21
  }
22
+ /**
23
+ * Sets the value without triggering the onChange callback
24
+ * @param val - The new numeric value
25
+ */
11
26
  setValQuietly(val) {
12
27
  this._val = val;
13
28
  }
29
+ /**
30
+ * Creates a new MemoizedNumber instance
31
+ *
32
+ * @param initialValue - The initial numeric value
33
+ * @param onChangeCallback - Function to call when the value changes
34
+ */
14
35
  constructor(initialValue, onChangeCallback) {
15
36
  this._val = initialValue;
16
37
  this.onChangeCallback = onChangeCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoizedNumber.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedNumber.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAEzB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["export class MemoizedNumber {\r\n private _val: number;\r\n get val(): number {\r\n return this._val;\r\n }\r\n set val(b: number) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: number) {\r\n this._val = val;\r\n }\r\n \r\n private onChangeCallback: () => void;\r\n\r\n constructor(initialValue: number, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoizedNumber.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedNumber.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAGzB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * A wrapper class for numeric values that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the value actually changes.\r\n */\r\nexport class MemoizedNumber {\r\n private _val: number;\r\n\r\n /**\r\n * Gets the current numeric value\r\n */\r\n get val(): number {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the numeric value and triggers the onChange callback if the value changed\r\n * @param b - The new numeric value\r\n */\r\n set val(b: number) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new numeric value\r\n */\r\n public setValQuietly(val: number) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedNumber instance\r\n *\r\n * @param initialValue - The initial numeric value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: number, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -1,17 +1,38 @@
1
1
  import { Quaternion } from "../ValueObjects";
2
+ /**
3
+ * A wrapper class for Quaternion objects that tracks changes and triggers callbacks.
4
+ * Only triggers the callback when the quaternion value actually changes.
5
+ */
2
6
  export class MemoizedQuaternion {
7
+ /**
8
+ * Gets the current Quaternion value
9
+ */
3
10
  get val() {
4
11
  return this._val;
5
12
  }
13
+ /**
14
+ * Sets the Quaternion value and triggers the onChange callback if the value changed
15
+ * @param v - The new Quaternion value
16
+ */
6
17
  set val(v) {
7
18
  if (Quaternion.Equal(v, this._val))
8
19
  return;
9
20
  this._val = v;
10
21
  this.onChangeCallback();
11
22
  }
23
+ /**
24
+ * Sets the value without triggering the onChange callback
25
+ * @param val - The new Quaternion value
26
+ */
12
27
  setValQuietly(val) {
13
28
  this._val = val;
14
29
  }
30
+ /**
31
+ * Creates a new MemoizedQuaternion instance
32
+ *
33
+ * @param initialValue - The initial Quaternion value
34
+ * @param onChangeCallback - Function to call when the value changes
35
+ */
15
36
  constructor(initialValue, onChangeCallback) {
16
37
  this._val = initialValue;
17
38
  this.onChangeCallback = onChangeCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoizedQuaternion.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedQuaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,OAAO,kBAAkB;IAG7B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAa;QACnB,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAE3C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAe;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID,YAAY,YAAwB,EAAE,gBAA4B;QAChE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Quaternion } from \"../ValueObjects\";\r\n\r\nexport class MemoizedQuaternion {\r\n private _val: Quaternion;\r\n\r\n get val(): Quaternion {\r\n return this._val;\r\n }\r\n\r\n set val(v: Quaternion) {\r\n if (Quaternion.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: Quaternion) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n constructor(initialValue: Quaternion, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoizedQuaternion.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedQuaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAa;QACnB,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAE3C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAe;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAwB,EAAE,gBAA4B;QAChE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Quaternion } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Quaternion objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the quaternion value actually changes.\r\n */\r\nexport class MemoizedQuaternion {\r\n private _val: Quaternion;\r\n\r\n /**\r\n * Gets the current Quaternion value\r\n */\r\n get val(): Quaternion {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Quaternion value and triggers the onChange callback if the value changed\r\n * @param v - The new Quaternion value\r\n */\r\n set val(v: Quaternion) {\r\n if (Quaternion.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Quaternion value\r\n */\r\n public setValQuietly(val: Quaternion) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedQuaternion instance\r\n *\r\n * @param initialValue - The initial Quaternion value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Quaternion, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -1,16 +1,37 @@
1
+ /**
2
+ * A wrapper class for string values that tracks changes and triggers callbacks.
3
+ * Only triggers the callback when the value actually changes.
4
+ */
1
5
  export class MemoizedString {
6
+ /**
7
+ * Gets the current string value
8
+ */
2
9
  get val() {
3
10
  return this._val;
4
11
  }
12
+ /**
13
+ * Sets the string value and triggers the onChange callback if the value changed
14
+ * @param b - The new string value
15
+ */
5
16
  set val(b) {
6
17
  if (this._val === b)
7
18
  return;
8
19
  this._val = b;
9
20
  this.onChangeCallback();
10
21
  }
22
+ /**
23
+ * Sets the value without triggering the onChange callback
24
+ * @param val - The new string value
25
+ */
11
26
  setValQuietly(val) {
12
27
  this._val = val;
13
28
  }
29
+ /**
30
+ * Creates a new MemoizedString instance
31
+ *
32
+ * @param initialValue - The initial string value
33
+ * @param onChangeCallback - Function to call when the value changes
34
+ */
14
35
  constructor(initialValue, onChangeCallback) {
15
36
  this._val = initialValue;
16
37
  this.onChangeCallback = onChangeCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoizedString.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedString.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAEzB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["export class MemoizedString {\r\n private _val: string;\r\n get val(): string {\r\n return this._val;\r\n }\r\n set val(b: string) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: string) {\r\n this._val = val;\r\n }\r\n \r\n private onChangeCallback: () => void;\r\n\r\n constructor(initialValue: string, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoizedString.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedString.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAGzB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * A wrapper class for string values that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the value actually changes.\r\n */\r\nexport class MemoizedString {\r\n private _val: string;\r\n\r\n /**\r\n * Gets the current string value\r\n */\r\n get val(): string {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the string value and triggers the onChange callback if the value changed\r\n * @param b - The new string value\r\n */\r\n set val(b: string) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new string value\r\n */\r\n public setValQuietly(val: string) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedString instance\r\n *\r\n * @param initialValue - The initial string value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: string, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -1,17 +1,38 @@
1
1
  import { Vector2 } from "../ValueObjects";
2
+ /**
3
+ * A wrapper class for Vector2 objects that tracks changes and triggers callbacks.
4
+ * Only triggers the callback when the vector value actually changes.
5
+ */
2
6
  export class MemoizedVector2 {
7
+ /**
8
+ * Gets the current Vector2 value
9
+ */
3
10
  get val() {
4
11
  return this._val;
5
12
  }
13
+ /**
14
+ * Sets the Vector2 value and triggers the onChange callback if the value changed
15
+ * @param v - The new Vector2 value
16
+ */
6
17
  set val(v) {
7
18
  if (Vector2.Equal(v, this._val))
8
19
  return;
9
20
  this._val = v;
10
21
  this.onChangeCallback();
11
22
  }
23
+ /**
24
+ * Sets the value without triggering the onChange callback
25
+ * @param val - The new Vector2 value
26
+ */
12
27
  setValQuietly(val) {
13
28
  this._val = val;
14
29
  }
30
+ /**
31
+ * Creates a new MemoizedVector2 instance
32
+ *
33
+ * @param initialValue - The initial Vector2 value
34
+ * @param onChangeCallback - Function to call when the value changes
35
+ */
15
36
  constructor(initialValue, onChangeCallback) {
16
37
  this._val = initialValue;
17
38
  this.onChangeCallback = onChangeCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoizedVector2.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,eAAe;IAG1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector2 } from \"../ValueObjects\";\r\n\r\nexport class MemoizedVector2 {\r\n private _val: Vector2;\r\n\r\n get val(): Vector2 {\r\n return this._val;\r\n }\r\n\r\n set val(v: Vector2) {\r\n if (Vector2.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: Vector2) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n constructor(initialValue: Vector2, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoizedVector2.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector2 } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Vector2 objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the vector value actually changes.\r\n */\r\nexport class MemoizedVector2 {\r\n private _val: Vector2;\r\n\r\n /**\r\n * Gets the current Vector2 value\r\n */\r\n get val(): Vector2 {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Vector2 value and triggers the onChange callback if the value changed\r\n * @param v - The new Vector2 value\r\n */\r\n set val(v: Vector2) {\r\n if (Vector2.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Vector2 value\r\n */\r\n public setValQuietly(val: Vector2) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedVector2 instance\r\n *\r\n * @param initialValue - The initial Vector2 value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Vector2, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -1,17 +1,38 @@
1
1
  import { Vector3 } from "../ValueObjects";
2
+ /**
3
+ * A wrapper class for Vector3 objects that tracks changes and triggers callbacks.
4
+ * Only triggers the callback when the vector value actually changes.
5
+ */
2
6
  export class MemoizedVector3 {
7
+ /**
8
+ * Gets the current Vector3 value
9
+ */
3
10
  get val() {
4
11
  return this._val;
5
12
  }
13
+ /**
14
+ * Sets the Vector3 value and triggers the onChange callback if the value changed
15
+ * @param v - The new Vector3 value
16
+ */
6
17
  set val(v) {
7
18
  if (Vector3.Equal(v, this._val))
8
19
  return;
9
20
  this._val = v;
10
21
  this.onChangeCallback();
11
22
  }
23
+ /**
24
+ * Sets the value without triggering the onChange callback
25
+ * @param val - The new Vector3 value
26
+ */
12
27
  setValQuietly(val) {
13
28
  this._val = val;
14
29
  }
30
+ /**
31
+ * Creates a new MemoizedVector3 instance
32
+ *
33
+ * @param initialValue - The initial Vector3 value
34
+ * @param onChangeCallback - Function to call when the value changes
35
+ */
15
36
  constructor(initialValue, onChangeCallback) {
16
37
  this._val = initialValue;
17
38
  this.onChangeCallback = onChangeCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoizedVector3.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,eAAe;IAG1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector3 } from \"../ValueObjects\";\r\n\r\nexport class MemoizedVector3 {\r\n private _val: Vector3;\r\n\r\n get val(): Vector3 {\r\n return this._val;\r\n }\r\n\r\n set val(v: Vector3) {\r\n if (Vector3.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: Vector3) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n constructor(initialValue: Vector3, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoizedVector3.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector3 } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Vector3 objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the vector value actually changes.\r\n */\r\nexport class MemoizedVector3 {\r\n private _val: Vector3;\r\n\r\n /**\r\n * Gets the current Vector3 value\r\n */\r\n get val(): Vector3 {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Vector3 value and triggers the onChange callback if the value changed\r\n * @param v - The new Vector3 value\r\n */\r\n set val(v: Vector3) {\r\n if (Vector3.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Vector3 value\r\n */\r\n public setValQuietly(val: Vector3) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedVector3 instance\r\n *\r\n * @param initialValue - The initial Vector3 value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Vector3, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -1,13 +1,30 @@
1
1
  import { ObserverList } from "./ObserverList";
2
+ /**
3
+ * Base class that implements the Observable pattern.
4
+ * Allows other objects to register as observers and be notified of changes.
5
+ *
6
+ * Extend this class to make your entity observable.
7
+ */
2
8
  export class ObservableEntity {
3
9
  constructor() {
4
10
  this.observerList = new ObserverList();
11
+ /**
12
+ * Registers a new observer to be notified of changes
13
+ * @param observer Function to be called when the entity changes
14
+ */
5
15
  this.addObserver = (observer) => {
6
16
  this.observerList.add(observer);
7
17
  };
18
+ /**
19
+ * Unregisters an existing observer
20
+ * @param observer The observer function to remove
21
+ */
8
22
  this.removeObserver = (observer) => {
9
23
  this.observerList.remove(observer);
10
24
  };
25
+ /**
26
+ * Notifies all registered observers about a change
27
+ */
11
28
  this.notify = () => {
12
29
  this.observerList.notify();
13
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableEntity.js","sourceRoot":"","sources":["../../../src/Entities/ObservableEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,MAAM,OAAgB,gBAAgB;IAAtC;QACU,iBAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEhD,gBAAW,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,mBAAc,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;CAAA","sourcesContent":["import { ObserverList } from \"./ObserverList\";\r\n\r\nexport type EntityObserver = () => void;\r\n\r\nexport abstract class ObservableEntity {\r\n private observerList = new ObserverList<void>();\r\n\r\n addObserver = (observer: EntityObserver): void => {\r\n this.observerList.add(observer);\r\n };\r\n removeObserver = (observer: EntityObserver): void => {\r\n this.observerList.remove(observer);\r\n };\r\n notify = () => {\r\n this.observerList.notify();\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"ObservableEntity.js","sourceRoot":"","sources":["../../../src/Entities/ObservableEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAAtC;QACU,iBAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEhD;;;WAGG;QACH,gBAAW,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;QAEF;;;WAGG;QACH,mBAAc,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF;;WAEG;QACH,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;CAAA","sourcesContent":["import { ObserverList } from \"./ObserverList\";\r\n\r\n/**\r\n * Function type for entity observers\r\n */\r\nexport type EntityObserver = () => void;\r\n\r\n/**\r\n * Base class that implements the Observable pattern.\r\n * Allows other objects to register as observers and be notified of changes.\r\n *\r\n * Extend this class to make your entity observable.\r\n */\r\nexport abstract class ObservableEntity {\r\n private observerList = new ObserverList<void>();\r\n\r\n /**\r\n * Registers a new observer to be notified of changes\r\n * @param observer Function to be called when the entity changes\r\n */\r\n addObserver = (observer: EntityObserver): void => {\r\n this.observerList.add(observer);\r\n };\r\n\r\n /**\r\n * Unregisters an existing observer\r\n * @param observer The observer function to remove\r\n */\r\n removeObserver = (observer: EntityObserver): void => {\r\n this.observerList.remove(observer);\r\n };\r\n\r\n /**\r\n * Notifies all registered observers about a change\r\n */\r\n notify = () => {\r\n this.observerList.notify();\r\n };\r\n}\r\n"]}
@@ -1,20 +1,41 @@
1
+ /**
2
+ * A generic implementation of the Observer pattern.
3
+ * Maintains a list of observer functions that can be notified with a message.
4
+ *
5
+ * @typeParam T - The type of message that will be passed to observers
6
+ */
1
7
  export class ObserverList {
2
8
  constructor() {
3
9
  this.observers = [];
10
+ /**
11
+ * Notifies all observers by calling them with the provided message
12
+ * @param msg - The message to send to all observers
13
+ */
4
14
  this.notify = (msg) => {
5
15
  this.observers.forEach((obs) => {
6
16
  obs(msg);
7
17
  });
8
18
  };
19
+ /**
20
+ * Adds a new observer function to the list
21
+ * @param obs - The observer function to add
22
+ */
9
23
  this.add = (obs) => {
10
24
  this.observers.push(obs);
11
25
  };
26
+ /**
27
+ * Removes an observer from the list
28
+ * @param obs - The observer function to remove
29
+ */
12
30
  this.remove = (obs) => {
13
31
  const index = this.observers.indexOf(obs);
14
32
  if (index >= 0) {
15
33
  this.observers.splice(index, 1);
16
34
  }
17
35
  };
36
+ /**
37
+ * Removes all observers from the list
38
+ */
18
39
  this.clear = () => {
19
40
  this.observers = [];
20
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ObserverList.js","sourceRoot":"","sources":["../../../src/Entities/ObserverList.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAAzB;QACU,cAAS,GAAyB,EAAE,CAAC;QAEtC,WAAM,GAAG,CAAC,GAAM,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC,CAAA;QAEM,QAAG,GAAG,CAAC,GAAqB,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAA;QAEM,WAAM,GAAG,CAAC,GAAqB,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAA;QAEM,UAAK,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC,CAAA;IACH,CAAC;CAAA","sourcesContent":["export class ObserverList<T> {\r\n private observers: ((msg: T) => void)[] = [];\r\n\r\n public notify = (msg: T) => {\r\n this.observers.forEach((obs) => {\r\n obs(msg);\r\n });\r\n }\r\n\r\n public add = (obs: (msg: T) => void) => {\r\n this.observers.push(obs);\r\n }\r\n\r\n public remove = (obs: (msg: T) => void) => {\r\n const index = this.observers.indexOf(obs);\r\n if (index >= 0) {\r\n this.observers.splice(index, 1);\r\n }\r\n }\r\n\r\n public clear = () => {\r\n this.observers = [];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ObserverList.js","sourceRoot":"","sources":["../../../src/Entities/ObserverList.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IAAzB;QACU,cAAS,GAAyB,EAAE,CAAC;QAE7C;;;WAGG;QACI,WAAM,GAAG,CAAC,GAAM,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF;;;WAGG;QACI,QAAG,GAAG,CAAC,GAAqB,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF;;;WAGG;QACI,WAAM,GAAG,CAAC,GAAqB,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QAEF;;WAEG;QACI,UAAK,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC;CAAA","sourcesContent":["/**\r\n * A generic implementation of the Observer pattern.\r\n * Maintains a list of observer functions that can be notified with a message.\r\n *\r\n * @typeParam T - The type of message that will be passed to observers\r\n */\r\nexport class ObserverList<T> {\r\n private observers: ((msg: T) => void)[] = [];\r\n\r\n /**\r\n * Notifies all observers by calling them with the provided message\r\n * @param msg - The message to send to all observers\r\n */\r\n public notify = (msg: T) => {\r\n this.observers.forEach((obs) => {\r\n obs(msg);\r\n });\r\n };\r\n\r\n /**\r\n * Adds a new observer function to the list\r\n * @param obs - The observer function to add\r\n */\r\n public add = (obs: (msg: T) => void) => {\r\n this.observers.push(obs);\r\n };\r\n\r\n /**\r\n * Removes an observer from the list\r\n * @param obs - The observer function to remove\r\n */\r\n public remove = (obs: (msg: T) => void) => {\r\n const index = this.observers.indexOf(obs);\r\n if (index >= 0) {\r\n this.observers.splice(index, 1);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all observers from the list\r\n */\r\n public clear = () => {\r\n this.observers = [];\r\n };\r\n}\r\n"]}
@@ -1,7 +1,20 @@
1
+ /**
2
+ * A numeric value that is constrained to a specified range.
3
+ * Values set outside the range will be automatically clamped.
4
+ * Triggers a callback when the value changes.
5
+ */
1
6
  export class RangedNumber {
7
+ /**
8
+ * Gets the current numeric value (guaranteed to be within min/max range)
9
+ */
2
10
  get val() {
3
11
  return this._val;
4
12
  }
13
+ /**
14
+ * Sets the numeric value and triggers the onChange callback if the value changed.
15
+ * The input value will be automatically clamped to the defined min/max range.
16
+ * @param x - The new numeric value
17
+ */
5
18
  set val(x) {
6
19
  const y = this.clamp(x);
7
20
  if (this._val === y)
@@ -9,9 +22,19 @@ export class RangedNumber {
9
22
  this._val = y;
10
23
  this.onChangeCallback();
11
24
  }
25
+ /**
26
+ * Sets the value without triggering the onChange callback.
27
+ * The input value will still be clamped to the defined range.
28
+ * @param val - The new numeric value
29
+ */
12
30
  setValQuietly(val) {
13
31
  this._val = this.clamp(val);
14
32
  }
33
+ /**
34
+ * Ensures a value is within the min/max range
35
+ * @param x - The value to clamp
36
+ * @returns The clamped value
37
+ */
15
38
  clamp(x) {
16
39
  let rVal = x;
17
40
  if (x > this.maxValue) {
@@ -22,6 +45,12 @@ export class RangedNumber {
22
45
  }
23
46
  return rVal;
24
47
  }
48
+ /**
49
+ * Creates a new RangedNumber instance
50
+ *
51
+ * @param props - Object containing min, max, and initialValue properties
52
+ * @param onChangeCallback - Function to call when the value changes
53
+ */
25
54
  constructor(props, onChangeCallback) {
26
55
  this.maxValue = props.max;
27
56
  this.minValue = props.min;
@@ -1 +1 @@
1
- {"version":3,"file":"RangedNumber.js","sourceRoot":"","sources":["../../../src/Entities/RangedNumber.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,YAAY;IAIvB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,CAAS;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,CAAS;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,YAAY,KAA6B,EAAE,gBAA4B;QACrE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["export interface RangedNumberProperties {\r\n min: number;\r\n max: number;\r\n initialValue: number;\r\n}\r\n\r\nexport class RangedNumber {\r\n public readonly maxValue: number;\r\n public readonly minValue: number;\r\n private _val: number;\r\n get val(): number {\r\n return this._val;\r\n }\r\n set val(x: number) {\r\n const y = this.clamp(x);\r\n if (this._val === y) return;\r\n\r\n this._val = y;\r\n this.onChangeCallback();\r\n }\r\n\r\n public setValQuietly(val: number) {\r\n this._val = this.clamp(val);\r\n }\r\n\r\n private clamp(x: number): number {\r\n let rVal = x;\r\n if (x > this.maxValue) {\r\n rVal = this.maxValue;\r\n } else if (x < this.minValue) {\r\n rVal = this.minValue;\r\n }\r\n\r\n return rVal;\r\n }\r\n private onChangeCallback: () => void;\r\n\r\n constructor(props: RangedNumberProperties, onChangeCallback: () => void) {\r\n this.maxValue = props.max;\r\n this.minValue = props.min;\r\n\r\n this._val = this.clamp(props.initialValue);\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RangedNumber.js","sourceRoot":"","sources":["../../../src/Entities/RangedNumber.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAQvB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,IAAI,GAAG,CAAC,CAAS;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,CAAS;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAID;;;;;OAKG;IACH,YAAY,KAA6B,EAAE,gBAA4B;QACrE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * Properties required to initialize a RangedNumber\r\n */\r\nexport interface RangedNumberProperties {\r\n /** The minimum allowed value */\r\n min: number;\r\n /** The maximum allowed value */\r\n max: number;\r\n /** The initial value (will be clamped between min and max) */\r\n initialValue: number;\r\n}\r\n\r\n/**\r\n * A numeric value that is constrained to a specified range.\r\n * Values set outside the range will be automatically clamped.\r\n * Triggers a callback when the value changes.\r\n */\r\nexport class RangedNumber {\r\n /** The maximum allowed value */\r\n public readonly maxValue: number;\r\n /** The minimum allowed value */\r\n public readonly minValue: number;\r\n\r\n private _val: number;\r\n\r\n /**\r\n * Gets the current numeric value (guaranteed to be within min/max range)\r\n */\r\n get val(): number {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the numeric value and triggers the onChange callback if the value changed.\r\n * The input value will be automatically clamped to the defined min/max range.\r\n * @param x - The new numeric value\r\n */\r\n set val(x: number) {\r\n const y = this.clamp(x);\r\n if (this._val === y) return;\r\n\r\n this._val = y;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback.\r\n * The input value will still be clamped to the defined range.\r\n * @param val - The new numeric value\r\n */\r\n public setValQuietly(val: number) {\r\n this._val = this.clamp(val);\r\n }\r\n\r\n /**\r\n * Ensures a value is within the min/max range\r\n * @param x - The value to clamp\r\n * @returns The clamped value\r\n */\r\n private clamp(x: number): number {\r\n let rVal = x;\r\n if (x > this.maxValue) {\r\n rVal = this.maxValue;\r\n } else if (x < this.minValue) {\r\n rVal = this.minValue;\r\n }\r\n\r\n return rVal;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new RangedNumber instance\r\n *\r\n * @param props - Object containing min, max, and initialValue properties\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(props: RangedNumberProperties, onChangeCallback: () => void) {\r\n this.maxValue = props.max;\r\n this.minValue = props.min;\r\n\r\n this._val = this.clamp(props.initialValue);\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * examplePmAdapter.ts
3
+ *
4
+ * This file demonstrates how to implement a PM Adapter to connect UI components to PMs.
5
+ * PM Adapters provide a standardized way for UI frameworks to subscribe to PM updates.
6
+ * This adapter connects to regular (non-singleton) PMs that require an AppObject ID.
7
+ *
8
+ * Key concepts:
9
+ * - PM Adapters implement the PmAdapter<VM> interface where VM is the view model type
10
+ * - They handle subscribing UI components to PMs and unsubscribing when done
11
+ * - They provide a default view model for initial rendering before data is available
12
+ * - They abstract away the details of finding and connecting to specific PMs
13
+ *
14
+ * Usage pattern (React example):
15
+ * ```typescript
16
+ * // In a React component
17
+ * function MyComponent({ id }) {
18
+ * const viewModel = usePmAdapter(examplePmAdapter, id);
19
+ * return <div>{viewModel}</div>;
20
+ * }
21
+ * ```
22
+ */
23
+ import { ExamplePM } from "../PMs/ExamplePM";
24
+ /**
25
+ * An adapter that connects UI components to ExamplePM instances.
26
+ * Implements PmAdapter<string> because ExamplePM provides string view models.
27
+ */
28
+ export const examplePmAdapter = {
29
+ // Default view model to use before data is available
30
+ defaultVM: "",
31
+ /**
32
+ * Subscribes a UI component to updates from an ExamplePM
33
+ * @param id The ID of the AppObject containing the PM
34
+ * @param appObjects The application's AppObjectRepo
35
+ * @param setVM Callback function that updates the UI component
36
+ */
37
+ subscribe: (id, appObjects, setVM) => {
38
+ // Return early if no ID is provided
39
+ if (!id)
40
+ return;
41
+ // Find the PM using the provided ID
42
+ const pm = ExamplePM.getById(id, appObjects);
43
+ if (!pm) {
44
+ appObjects.submitError("examplePmAdapter", "Unable to find ExamplePM");
45
+ return;
46
+ }
47
+ // Register the UI component's callback to receive updates
48
+ pm.addView(setVM);
49
+ },
50
+ /**
51
+ * Unsubscribes a UI component from updates when it's no longer needed
52
+ * @param id The ID of the AppObject containing the PM
53
+ * @param appObjects The application's AppObjectRepo
54
+ * @param setVM The same callback function that was used to subscribe
55
+ */
56
+ unsubscribe: (id, appObjects, setVM) => {
57
+ // Find the PM and remove the view if it exists
58
+ ExamplePM.getById(id, appObjects)?.removeView(setVM);
59
+ }
60
+ };
61
+ //# sourceMappingURL=examplePmAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examplePmAdapter.js","sourceRoot":"","sources":["../../../../src/ExampleFeature/Adapters/examplePmAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,qDAAqD;IACrD,SAAS,EAAE,EAAE;IAEb;;;;;OAKG;IACH,SAAS,EAAE,CACT,EAAU,EACV,UAAyB,EACzB,KAA2B,EAC3B,EAAE;QACF,oCAAoC;QACpC,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,oCAAoC;QACpC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,WAAW,EAAE,CACX,EAAU,EACV,UAAyB,EACzB,KAA2B,EAC3B,EAAE;QACF,+CAA+C;QAC/C,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;CACF,CAAC","sourcesContent":["/**\r\n * examplePmAdapter.ts\r\n * \r\n * This file demonstrates how to implement a PM Adapter to connect UI components to PMs.\r\n * PM Adapters provide a standardized way for UI frameworks to subscribe to PM updates.\r\n * This adapter connects to regular (non-singleton) PMs that require an AppObject ID.\r\n * \r\n * Key concepts:\r\n * - PM Adapters implement the PmAdapter<VM> interface where VM is the view model type\r\n * - They handle subscribing UI components to PMs and unsubscribing when done\r\n * - They provide a default view model for initial rendering before data is available\r\n * - They abstract away the details of finding and connecting to specific PMs\r\n * \r\n * Usage pattern (React example):\r\n * ```typescript\r\n * // In a React component\r\n * function MyComponent({ id }) {\r\n * const viewModel = usePmAdapter(examplePmAdapter, id);\r\n * return <div>{viewModel}</div>;\r\n * }\r\n * ```\r\n */\r\n\r\nimport { AppObjectRepo } from \"../../AppObject\";\r\nimport { PmAdapter } from \"../../Types/PmAdapter\";\r\nimport { ExamplePM } from \"../PMs/ExamplePM\";\r\n\r\n/**\r\n * An adapter that connects UI components to ExamplePM instances.\r\n * Implements PmAdapter<string> because ExamplePM provides string view models.\r\n */\r\nexport const examplePmAdapter: PmAdapter<string> = {\r\n // Default view model to use before data is available\r\n defaultVM: \"\",\r\n \r\n /**\r\n * Subscribes a UI component to updates from an ExamplePM\r\n * @param id The ID of the AppObject containing the PM\r\n * @param appObjects The application's AppObjectRepo\r\n * @param setVM Callback function that updates the UI component\r\n */\r\n subscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: string) => void\r\n ) => {\r\n // Return early if no ID is provided\r\n if (!id) return;\r\n\r\n // Find the PM using the provided ID\r\n const pm = ExamplePM.getById(id, appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\"examplePmAdapter\", \"Unable to find ExamplePM\");\r\n return;\r\n }\r\n \r\n // Register the UI component's callback to receive updates\r\n pm.addView(setVM);\r\n },\r\n \r\n /**\r\n * Unsubscribes a UI component from updates when it's no longer needed\r\n * @param id The ID of the AppObject containing the PM\r\n * @param appObjects The application's AppObjectRepo\r\n * @param setVM The same callback function that was used to subscribe\r\n */\r\n unsubscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: string) => void\r\n ) => {\r\n // Find the PM and remove the view if it exists\r\n ExamplePM.getById(id, appObjects)?.removeView(setVM);\r\n }\r\n};\r\n"]}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * exampleSingletonPmAdapter.ts
3
+ *
4
+ * This file demonstrates how to implement a Singleton PM Adapter to connect UI components
5
+ * to singleton PMs. Singleton PM Adapters provide a standardized way for UI frameworks
6
+ * to subscribe to singleton PM updates without needing to specify an AppObject ID.
7
+ *
8
+ * Key concepts:
9
+ * - Singleton PM Adapters implement the SingletonPmAdapter<VM> interface
10
+ * - They handle subscribing UI components to singleton PMs and unsubscribing when done
11
+ * - They provide a default view model for initial rendering before data is available
12
+ * - They don't require an AppObject ID since they connect to globally accessible singletons
13
+ *
14
+ * Usage pattern (React example):
15
+ * ```typescript
16
+ * // In a React component
17
+ * function MyComponent() {
18
+ * // Note: no ID needed since it's connecting to a singleton
19
+ * const viewModel = useSingletonPmAdapter(exampleSingletonPmAdapter);
20
+ * return <div>{viewModel.aBoolProperty ? "True" : "False"}</div>;
21
+ * }
22
+ * ```
23
+ */
24
+ import { defaultSlideNavigationVM, ExampleSingletonPM } from "../PMs/ExampleSingletonPM";
25
+ /**
26
+ * An adapter that connects UI components to the ExampleSingletonPM.
27
+ * Implements SingletonPmAdapter<ExampleVM> because ExampleSingletonPM provides ExampleVM view models.
28
+ */
29
+ export const exampleSingletonPmAdapter = {
30
+ // Default view model to use before data is available
31
+ defaultVM: defaultSlideNavigationVM,
32
+ /**
33
+ * Subscribes a UI component to updates from the ExampleSingletonPM
34
+ * @param appObjects The application's AppObjectRepo
35
+ * @param setVM Callback function that updates the UI component
36
+ */
37
+ subscribe: (appObjects, setVM) => {
38
+ // Find the singleton PM using its static get method
39
+ const pm = ExampleSingletonPM.get(appObjects);
40
+ if (!pm) {
41
+ appObjects.submitError("exampleSingletonPmAdapter", "Unable to find ExampleSingletonPM");
42
+ return;
43
+ }
44
+ // Register the UI component's callback to receive updates
45
+ pm.addView(setVM);
46
+ },
47
+ /**
48
+ * Unsubscribes a UI component from updates when it's no longer needed
49
+ * @param appObjects The application's AppObjectRepo
50
+ * @param setVM The same callback function that was used to subscribe
51
+ */
52
+ unsubscribe: (appObjects, setVM) => {
53
+ // Find the singleton PM and remove the view if it exists
54
+ ExampleSingletonPM.get(appObjects)?.removeView(setVM);
55
+ }
56
+ };
57
+ //# sourceMappingURL=exampleSingletonPmAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exampleSingletonPmAdapter.js","sourceRoot":"","sources":["../../../../src/ExampleFeature/Adapters/exampleSingletonPmAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAEnB,MAAM,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAkC;IACtE,qDAAqD;IACrD,SAAS,EAAE,wBAAwB;IAEnC;;;;OAIG;IACH,SAAS,EAAE,CAAC,UAAyB,EAAE,KAA8B,EAAE,EAAE;QACvE,oDAAoD;QACpD,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,2BAA2B,EAC3B,mCAAmC,CACpC,CAAC;YACF,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,WAAW,EAAE,CAAC,UAAyB,EAAE,KAA8B,EAAE,EAAE;QACzE,yDAAyD;QACzD,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;CACF,CAAC","sourcesContent":["/**\r\n * exampleSingletonPmAdapter.ts\r\n * \r\n * This file demonstrates how to implement a Singleton PM Adapter to connect UI components\r\n * to singleton PMs. Singleton PM Adapters provide a standardized way for UI frameworks\r\n * to subscribe to singleton PM updates without needing to specify an AppObject ID.\r\n * \r\n * Key concepts:\r\n * - Singleton PM Adapters implement the SingletonPmAdapter<VM> interface\r\n * - They handle subscribing UI components to singleton PMs and unsubscribing when done\r\n * - They provide a default view model for initial rendering before data is available\r\n * - They don't require an AppObject ID since they connect to globally accessible singletons\r\n * \r\n * Usage pattern (React example):\r\n * ```typescript\r\n * // In a React component\r\n * function MyComponent() {\r\n * // Note: no ID needed since it's connecting to a singleton\r\n * const viewModel = useSingletonPmAdapter(exampleSingletonPmAdapter);\r\n * return <div>{viewModel.aBoolProperty ? \"True\" : \"False\"}</div>;\r\n * }\r\n * ```\r\n */\r\n\r\nimport { AppObjectRepo } from \"../../AppObject\";\r\nimport { SingletonPmAdapter } from \"../../Types/SingletonPmAdapter\";\r\nimport {\r\n defaultSlideNavigationVM,\r\n ExampleSingletonPM,\r\n ExampleVM\r\n} from \"../PMs/ExampleSingletonPM\";\r\n\r\n/**\r\n * An adapter that connects UI components to the ExampleSingletonPM.\r\n * Implements SingletonPmAdapter<ExampleVM> because ExampleSingletonPM provides ExampleVM view models.\r\n */\r\nexport const exampleSingletonPmAdapter: SingletonPmAdapter<ExampleVM> = {\r\n // Default view model to use before data is available\r\n defaultVM: defaultSlideNavigationVM,\r\n \r\n /**\r\n * Subscribes a UI component to updates from the ExampleSingletonPM\r\n * @param appObjects The application's AppObjectRepo\r\n * @param setVM Callback function that updates the UI component\r\n */\r\n subscribe: (appObjects: AppObjectRepo, setVM: (vm: ExampleVM) => void) => {\r\n // Find the singleton PM using its static get method\r\n const pm = ExampleSingletonPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"exampleSingletonPmAdapter\",\r\n \"Unable to find ExampleSingletonPM\"\r\n );\r\n return;\r\n }\r\n \r\n // Register the UI component's callback to receive updates\r\n pm.addView(setVM);\r\n },\r\n \r\n /**\r\n * Unsubscribes a UI component from updates when it's no longer needed\r\n * @param appObjects The application's AppObjectRepo\r\n * @param setVM The same callback function that was used to subscribe\r\n */\r\n unsubscribe: (appObjects: AppObjectRepo, setVM: (vm: ExampleVM) => void) => {\r\n // Find the singleton PM and remove the view if it exists\r\n ExampleSingletonPM.get(appObjects)?.removeView(setVM);\r\n }\r\n};\r\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./examplePmAdapter";
2
+ export * from "./exampleSingletonPmAdapter";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ExampleFeature/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC","sourcesContent":["export * from \"./examplePmAdapter\";\r\nexport * from \"./exampleSingletonPmAdapter\";\r\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./setExampleText";
2
+ export * from "./toggleExampleBoolean";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ExampleFeature/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./setExampleText\";\r\nexport * from \"./toggleExampleBoolean\";\r\n"]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * setExampleText.ts
3
+ *
4
+ * This file demonstrates how to implement a Controller function.
5
+ * Controllers are simple functions that provide a simplified API for UI components
6
+ * to interact with Use Cases (UCs). They handle the details of finding the right
7
+ * UC and calling its methods with the appropriate parameters.
8
+ *
9
+ * Key concepts:
10
+ * - Controllers are functions that take parameters from UI components
11
+ * - They find the appropriate UC and call its methods
12
+ * - They handle error cases and provide appropriate feedback
13
+ * - They simplify the API for UI components
14
+ *
15
+ * Usage pattern (React example):
16
+ * ```typescript
17
+ * // In a React component
18
+ * function ExampleTextInput({ id, appObjects }) {
19
+ * const handleChange = (e) => {
20
+ * setExampleText(e.target.value, id, appObjects);
21
+ * };
22
+ * return <input onChange={handleChange} />;
23
+ * }
24
+ * ```
25
+ */
26
+ import { EditExampleStringUC } from "../UCs/EditExampleStringUC";
27
+ /**
28
+ * Controller function to update the text of an ExampleEntity
29
+ *
30
+ * @param text The new text to set
31
+ * @param id The ID of the AppObject containing the EditExampleStringUC
32
+ * @param appObjects The application's AppObjectRepo
33
+ */
34
+ export function setExampleText(text, id, appObjects) {
35
+ // Find the Use Case using the provided ID
36
+ const uc = EditExampleStringUC.getById(id, appObjects);
37
+ // Handle the case where the UC doesn't exist
38
+ if (!uc) {
39
+ appObjects.submitWarning("setExampleText", "Unable to find EditExampleStringUC");
40
+ return;
41
+ }
42
+ // Call the UC method to perform the operation
43
+ uc.editExampleString(text);
44
+ }
45
+ //# sourceMappingURL=setExampleText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setExampleText.js","sourceRoot":"","sources":["../../../../src/ExampleFeature/Controllers/setExampleText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,EAAU,EACV,UAAyB;IAEzB,0CAA0C;IAC1C,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAEvD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,gBAAgB,EAChB,oCAAoC,CACrC,CAAC;QACF,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["/**\r\n * setExampleText.ts\r\n * \r\n * This file demonstrates how to implement a Controller function.\r\n * Controllers are simple functions that provide a simplified API for UI components\r\n * to interact with Use Cases (UCs). They handle the details of finding the right\r\n * UC and calling its methods with the appropriate parameters.\r\n * \r\n * Key concepts:\r\n * - Controllers are functions that take parameters from UI components\r\n * - They find the appropriate UC and call its methods\r\n * - They handle error cases and provide appropriate feedback\r\n * - They simplify the API for UI components\r\n * \r\n * Usage pattern (React example):\r\n * ```typescript\r\n * // In a React component\r\n * function ExampleTextInput({ id, appObjects }) {\r\n * const handleChange = (e) => {\r\n * setExampleText(e.target.value, id, appObjects);\r\n * };\r\n * return <input onChange={handleChange} />;\r\n * }\r\n * ```\r\n */\r\n\r\nimport { AppObjectRepo } from \"../../AppObject\";\r\nimport { EditExampleStringUC } from \"../UCs/EditExampleStringUC\";\r\n\r\n/**\r\n * Controller function to update the text of an ExampleEntity\r\n * \r\n * @param text The new text to set\r\n * @param id The ID of the AppObject containing the EditExampleStringUC\r\n * @param appObjects The application's AppObjectRepo\r\n */\r\nexport function setExampleText(\r\n text: string,\r\n id: string,\r\n appObjects: AppObjectRepo\r\n) {\r\n // Find the Use Case using the provided ID\r\n const uc = EditExampleStringUC.getById(id, appObjects);\r\n \r\n // Handle the case where the UC doesn't exist\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"setExampleText\",\r\n \"Unable to find EditExampleStringUC\"\r\n );\r\n return;\r\n }\r\n\r\n // Call the UC method to perform the operation\r\n uc.editExampleString(text);\r\n}\r\n"]}