@vived/core 1.3.0 → 1.4.1

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 (191) hide show
  1. package/dist/esm/Utilities/addAlphaToHex.js +13 -0
  2. package/dist/esm/Utilities/addAlphaToHex.js.map +1 -0
  3. package/dist/esm/Utilities/addAlphaToHex.test.js +32 -0
  4. package/dist/esm/Utilities/addAlphaToHex.test.js.map +1 -0
  5. package/dist/esm/Utilities/alphaToHex.js +17 -0
  6. package/dist/esm/Utilities/alphaToHex.js.map +1 -0
  7. package/dist/esm/Utilities/alphaToHex.test.js +73 -0
  8. package/dist/esm/Utilities/alphaToHex.test.js.map +1 -0
  9. package/dist/esm/Utilities/downloadFile.js +11 -0
  10. package/dist/esm/Utilities/downloadFile.js.map +1 -0
  11. package/dist/esm/Utilities/index.js +3 -0
  12. package/dist/esm/Utilities/index.js.map +1 -1
  13. package/dist/types/Utilities/addAlphaToHex.d.ts +2 -0
  14. package/dist/types/Utilities/addAlphaToHex.d.ts.map +1 -0
  15. package/dist/types/Utilities/addAlphaToHex.test.d.ts +2 -0
  16. package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +1 -0
  17. package/dist/types/Utilities/alphaToHex.d.ts +3 -0
  18. package/dist/types/Utilities/alphaToHex.d.ts.map +1 -0
  19. package/dist/types/Utilities/alphaToHex.test.d.ts +2 -0
  20. package/dist/types/Utilities/alphaToHex.test.d.ts.map +1 -0
  21. package/dist/types/Utilities/downloadFile.d.ts +2 -0
  22. package/dist/types/Utilities/downloadFile.d.ts.map +1 -0
  23. package/dist/types/Utilities/index.d.ts +3 -0
  24. package/dist/types/Utilities/index.d.ts.map +1 -1
  25. package/package.json +3 -6
  26. package/dist/cjs/AppObject/AppObject.js +0 -59
  27. package/dist/cjs/AppObject/AppObject.js.map +0 -1
  28. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  29. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  30. package/dist/cjs/AppObject/AppObjectComponent.js +0 -82
  31. package/dist/cjs/AppObject/AppObjectComponent.js.map +0 -1
  32. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  33. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  34. package/dist/cjs/AppObject/AppObjectController.js +0 -12
  35. package/dist/cjs/AppObject/AppObjectController.js.map +0 -1
  36. package/dist/cjs/AppObject/AppObjectEntity.js +0 -38
  37. package/dist/cjs/AppObject/AppObjectEntity.js.map +0 -1
  38. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  39. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  40. package/dist/cjs/AppObject/AppObjectEntityRepo.js +0 -56
  41. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +0 -1
  42. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  43. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  44. package/dist/cjs/AppObject/AppObjectPM.js +0 -40
  45. package/dist/cjs/AppObject/AppObjectPM.js.map +0 -1
  46. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  47. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  48. package/dist/cjs/AppObject/AppObjectRepo.js +0 -133
  49. package/dist/cjs/AppObject/AppObjectRepo.js.map +0 -1
  50. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  51. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  52. package/dist/cjs/AppObject/AppObjectUC.js +0 -12
  53. package/dist/cjs/AppObject/AppObjectUC.js.map +0 -1
  54. package/dist/cjs/AppObject/AppObjectView.js +0 -12
  55. package/dist/cjs/AppObject/AppObjectView.js.map +0 -1
  56. package/dist/cjs/AppObject/getSingletonComponent.js +0 -7
  57. package/dist/cjs/AppObject/getSingletonComponent.js.map +0 -1
  58. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  59. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  60. package/dist/cjs/AppObject/index.js +0 -27
  61. package/dist/cjs/AppObject/index.js.map +0 -1
  62. package/dist/cjs/AppObject/printAppObjectDetails.js +0 -18
  63. package/dist/cjs/AppObject/printAppObjectDetails.js.map +0 -1
  64. package/dist/cjs/Entities/MemoizedAngle.js +0 -23
  65. package/dist/cjs/Entities/MemoizedAngle.js.map +0 -1
  66. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  67. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  68. package/dist/cjs/Entities/MemoizedBoolean.js +0 -23
  69. package/dist/cjs/Entities/MemoizedBoolean.js.map +0 -1
  70. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  71. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  72. package/dist/cjs/Entities/MemoizedColor.js +0 -24
  73. package/dist/cjs/Entities/MemoizedColor.js.map +0 -1
  74. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  75. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  76. package/dist/cjs/Entities/MemoizedNumber.js +0 -23
  77. package/dist/cjs/Entities/MemoizedNumber.js.map +0 -1
  78. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  79. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  80. package/dist/cjs/Entities/MemoizedQuaternion.js +0 -24
  81. package/dist/cjs/Entities/MemoizedQuaternion.js.map +0 -1
  82. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  83. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  84. package/dist/cjs/Entities/MemoizedString.js +0 -23
  85. package/dist/cjs/Entities/MemoizedString.js.map +0 -1
  86. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  87. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  88. package/dist/cjs/Entities/MemoizedVector2.js +0 -24
  89. package/dist/cjs/Entities/MemoizedVector2.js.map +0 -1
  90. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  91. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  92. package/dist/cjs/Entities/MemoizedVector3.js +0 -24
  93. package/dist/cjs/Entities/MemoizedVector3.js.map +0 -1
  94. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  95. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  96. package/dist/cjs/Entities/ObservableEntity.js +0 -20
  97. package/dist/cjs/Entities/ObservableEntity.js.map +0 -1
  98. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  99. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  100. package/dist/cjs/Entities/ObserverList.js +0 -27
  101. package/dist/cjs/Entities/ObserverList.js.map +0 -1
  102. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  103. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  104. package/dist/cjs/Entities/RangedNumber.js +0 -36
  105. package/dist/cjs/Entities/RangedNumber.js.map +0 -1
  106. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  107. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  108. package/dist/cjs/Entities/index.js +0 -28
  109. package/dist/cjs/Entities/index.js.map +0 -1
  110. package/dist/cjs/Types/AppBoundary.js +0 -3
  111. package/dist/cjs/Types/AppBoundary.js.map +0 -1
  112. package/dist/cjs/Types/EaseFn.js +0 -3
  113. package/dist/cjs/Types/EaseFn.js.map +0 -1
  114. package/dist/cjs/Types/PmAdapter.js +0 -3
  115. package/dist/cjs/Types/PmAdapter.js.map +0 -1
  116. package/dist/cjs/Types/SingletonPmAdapter.js +0 -3
  117. package/dist/cjs/Types/SingletonPmAdapter.js.map +0 -1
  118. package/dist/cjs/Types/index.js +0 -21
  119. package/dist/cjs/Types/index.js.map +0 -1
  120. package/dist/cjs/Utilities/LengthConverters.js +0 -21
  121. package/dist/cjs/Utilities/LengthConverters.js.map +0 -1
  122. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  123. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  124. package/dist/cjs/Utilities/LerpNumber.js +0 -85
  125. package/dist/cjs/Utilities/LerpNumber.js.map +0 -1
  126. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  127. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  128. package/dist/cjs/Utilities/degreesToRadians.js +0 -7
  129. package/dist/cjs/Utilities/degreesToRadians.js.map +0 -1
  130. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  131. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  132. package/dist/cjs/Utilities/easeFunctions.js +0 -208
  133. package/dist/cjs/Utilities/easeFunctions.js.map +0 -1
  134. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  135. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  136. package/dist/cjs/Utilities/generateUniqueID.js +0 -8
  137. package/dist/cjs/Utilities/generateUniqueID.js.map +0 -1
  138. package/dist/cjs/Utilities/index.js +0 -22
  139. package/dist/cjs/Utilities/index.js.map +0 -1
  140. package/dist/cjs/Utilities/interpolateNumber.js +0 -18
  141. package/dist/cjs/Utilities/interpolateNumber.js.map +0 -1
  142. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  143. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  144. package/dist/cjs/ValueObjects/Angle.js +0 -47
  145. package/dist/cjs/ValueObjects/Angle.js.map +0 -1
  146. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  147. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  148. package/dist/cjs/ValueObjects/Color.js +0 -859
  149. package/dist/cjs/ValueObjects/Color.js.map +0 -1
  150. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  151. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  152. package/dist/cjs/ValueObjects/LineSegment2D.js +0 -72
  153. package/dist/cjs/ValueObjects/LineSegment2D.js.map +0 -1
  154. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  155. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  156. package/dist/cjs/ValueObjects/Matrix.js +0 -466
  157. package/dist/cjs/ValueObjects/Matrix.js.map +0 -1
  158. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  159. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  160. package/dist/cjs/ValueObjects/ParametricLine.js +0 -77
  161. package/dist/cjs/ValueObjects/ParametricLine.js.map +0 -1
  162. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  163. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  164. package/dist/cjs/ValueObjects/ParametricPlane.js +0 -65
  165. package/dist/cjs/ValueObjects/ParametricPlane.js.map +0 -1
  166. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  167. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  168. package/dist/cjs/ValueObjects/Quaternion.js +0 -290
  169. package/dist/cjs/ValueObjects/Quaternion.js.map +0 -1
  170. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  171. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  172. package/dist/cjs/ValueObjects/Rectangle.js +0 -24
  173. package/dist/cjs/ValueObjects/Rectangle.js.map +0 -1
  174. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  175. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  176. package/dist/cjs/ValueObjects/Vector2.js +0 -184
  177. package/dist/cjs/ValueObjects/Vector2.js.map +0 -1
  178. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  179. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  180. package/dist/cjs/ValueObjects/Vector3.js +0 -231
  181. package/dist/cjs/ValueObjects/Vector3.js.map +0 -1
  182. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  183. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  184. package/dist/cjs/ValueObjects/Version.js +0 -171
  185. package/dist/cjs/ValueObjects/Version.js.map +0 -1
  186. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  187. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  188. package/dist/cjs/ValueObjects/index.js +0 -28
  189. package/dist/cjs/ValueObjects/index.js.map +0 -1
  190. package/dist/cjs/index.js +0 -22
  191. package/dist/cjs/index.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import { alphaToHex } from "./alphaToHex";
2
+ export function addAlphaToHex(hex, alpha) {
3
+ if (!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(hex)) {
4
+ console.warn("[addAlphaToHex] Hex value is not valid.");
5
+ return "#000";
6
+ }
7
+ if (hex.length === 4) {
8
+ hex = "#" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
9
+ }
10
+ const alphaHex = alphaToHex(alpha);
11
+ return `${hex}${alphaHex}`;
12
+ }
13
+ //# sourceMappingURL=addAlphaToHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.js","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAa;IACtD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,GAAG,GAAG,GAAG,QAAQ,EAAE,CAAC;AAC7B,CAAC","sourcesContent":["import { alphaToHex } from \"./alphaToHex\";\r\n\r\nexport function addAlphaToHex(hex: string, alpha: number): string {\r\n if (!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(hex)) {\r\n console.warn(\"[addAlphaToHex] Hex value is not valid.\");\r\n return \"#000\";\r\n }\r\n\r\n if (hex.length === 4) {\r\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\r\n }\r\n\r\n const alphaHex = alphaToHex(alpha);\r\n return `${hex}${alphaHex}`;\r\n}\r\n"]}
@@ -0,0 +1,32 @@
1
+ import { addAlphaToHex } from "./addAlphaToHex";
2
+ describe("addAlphaToHex", () => {
3
+ it("should add alpha channel to hex color code", () => {
4
+ expect(addAlphaToHex("#ffffff", 0.5)).toBe("#ffffff80");
5
+ expect(addAlphaToHex("#000000", 0.1)).toBe("#0000001a");
6
+ expect(addAlphaToHex("#123456", 0)).toBe("#12345600");
7
+ expect(addAlphaToHex("#abcdef", 1)).toBe("#abcdefff");
8
+ });
9
+ it("should add alpha channel to short hex color code", () => {
10
+ expect(addAlphaToHex("#fff", 0.5)).toBe("#ffffff80");
11
+ expect(addAlphaToHex("#000", 0.1)).toBe("#0000001a");
12
+ });
13
+ it("should log a warning and return Hex with alpha 0 if alpha value is out of bounds", () => {
14
+ console.warn = jest.fn();
15
+ expect(addAlphaToHex("#ffffff", -0.1)).toBe("#ffffff00");
16
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
17
+ expect(addAlphaToHex("#ffffff", 1.1)).toBe("#ffffff00");
18
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
19
+ });
20
+ it("should log a warning and return #000 for invalid hex values", () => {
21
+ console.warn = jest.fn();
22
+ expect(addAlphaToHex("#gggggg", 0.5)).toBe("#000");
23
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
24
+ expect(addAlphaToHex("#ffff", 0.5)).toBe("#000");
25
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
26
+ expect(addAlphaToHex("ffffff", 0.5)).toBe("#000");
27
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
28
+ expect(addAlphaToHex("#fff0", 0.5)).toBe("#000");
29
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
30
+ });
31
+ });
32
+ //# sourceMappingURL=addAlphaToHex.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.test.js","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,mDAAmD,CACpD,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,mDAAmD,CACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { addAlphaToHex } from \"./addAlphaToHex\";\r\n\r\ndescribe(\"addAlphaToHex\", () => {\r\n it(\"should add alpha channel to hex color code\", () => {\r\n expect(addAlphaToHex(\"#ffffff\", 0.5)).toBe(\"#ffffff80\");\r\n expect(addAlphaToHex(\"#000000\", 0.1)).toBe(\"#0000001a\");\r\n expect(addAlphaToHex(\"#123456\", 0)).toBe(\"#12345600\");\r\n expect(addAlphaToHex(\"#abcdef\", 1)).toBe(\"#abcdefff\");\r\n });\r\n\r\n it(\"should add alpha channel to short hex color code\", () => {\r\n expect(addAlphaToHex(\"#fff\", 0.5)).toBe(\"#ffffff80\");\r\n expect(addAlphaToHex(\"#000\", 0.1)).toBe(\"#0000001a\");\r\n });\r\n\r\n it(\"should log a warning and return Hex with alpha 0 if alpha value is out of bounds\", () => {\r\n console.warn = jest.fn();\r\n expect(addAlphaToHex(\"#ffffff\", -0.1)).toBe(\"#ffffff00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n expect(addAlphaToHex(\"#ffffff\", 1.1)).toBe(\"#ffffff00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n\r\n it(\"should log a warning and return #000 for invalid hex values\", () => {\r\n console.warn = jest.fn();\r\n expect(addAlphaToHex(\"#gggggg\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"#ffff\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"ffffff\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"#fff0\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n });\r\n});\r\n"]}
@@ -0,0 +1,17 @@
1
+ export function roundHalfToEven(number) {
2
+ const roundedNumber = Math.round(number);
3
+ if (Math.abs(roundedNumber - number) === 0.5 && roundedNumber % 2 !== 0) {
4
+ return roundedNumber > number ? roundedNumber - 1 : roundedNumber + 1;
5
+ }
6
+ return roundedNumber;
7
+ }
8
+ export function alphaToHex(alpha) {
9
+ if (alpha < 0 || alpha > 1) {
10
+ console.warn("[alphaToHex] Alpha value must be between 0 and 1.");
11
+ return "00";
12
+ }
13
+ const alpha255 = roundHalfToEven(alpha * 255);
14
+ const alphaHex = alpha255.toString(16).padStart(2, "0");
15
+ return alphaHex;
16
+ }
17
+ //# sourceMappingURL=alphaToHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.js","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,aAAa,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAExD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["export function roundHalfToEven(number: number): number {\r\n const roundedNumber = Math.round(number);\r\n if (Math.abs(roundedNumber - number) === 0.5 && roundedNumber % 2 !== 0) {\r\n return roundedNumber > number ? roundedNumber - 1 : roundedNumber + 1;\r\n }\r\n return roundedNumber;\r\n}\r\n\r\nexport function alphaToHex(alpha: number): string {\r\n if (alpha < 0 || alpha > 1) {\r\n console.warn(\"[alphaToHex] Alpha value must be between 0 and 1.\");\r\n return \"00\";\r\n }\r\n\r\n const alpha255 = roundHalfToEven(alpha * 255);\r\n const alphaHex = alpha255.toString(16).padStart(2, \"0\");\r\n\r\n return alphaHex;\r\n}\r\n"]}
@@ -0,0 +1,73 @@
1
+ import { alphaToHex, roundHalfToEven } from "./alphaToHex";
2
+ describe("roundHalfToEven", () => {
3
+ it("should round 0.49 to 0", () => {
4
+ expect(roundHalfToEven(0.49)).toBe(0);
5
+ });
6
+ it("should round 0.5 to 0", () => {
7
+ expect(roundHalfToEven(0.5)).toBe(0);
8
+ });
9
+ it("should round 0.51 to 1", () => {
10
+ expect(roundHalfToEven(0.51)).toBe(1);
11
+ });
12
+ it("should round 0.55 to 1", () => {
13
+ expect(roundHalfToEven(0.55)).toBe(1);
14
+ });
15
+ it("should round 0.75 to 1", () => {
16
+ expect(roundHalfToEven(0.75)).toBe(1);
17
+ });
18
+ it("should round 123.5 to 124", () => {
19
+ expect(roundHalfToEven(123.5)).toBe(124);
20
+ });
21
+ });
22
+ describe("alphaToHex", () => {
23
+ it("should return '00' for alpha 0", () => {
24
+ expect(alphaToHex(0)).toBe("00");
25
+ });
26
+ it("should return 'ff' for alpha 1", () => {
27
+ expect(alphaToHex(1)).toBe("ff");
28
+ });
29
+ it("should return '1f' for alpha 0.12 (12%)", () => {
30
+ expect(alphaToHex(0.12)).toBe("1f");
31
+ });
32
+ it("should return '80' for alpha 0.5 (50%)", () => {
33
+ expect(alphaToHex(0.5)).toBe("80");
34
+ });
35
+ it("should return 'bf' for alpha 0.75 (75%)", () => {
36
+ expect(alphaToHex(0.75)).toBe("bf");
37
+ });
38
+ it("should return '00' for alpha just above 0", () => {
39
+ expect(alphaToHex(0.0012)).toBe("00");
40
+ });
41
+ it("should return '03' for alpha 0.01", () => {
42
+ expect(alphaToHex(0.01)).toBe("03");
43
+ });
44
+ it("should return '03' for alpha just above 0 with rounding", () => {
45
+ expect(alphaToHex(0.01)).toBe("03");
46
+ });
47
+ it("should return 'ff' for alpha just below 1", () => {
48
+ expect(alphaToHex(0.9988)).toBe("ff");
49
+ });
50
+ it("should return 'fc' for alpha 0.99", () => {
51
+ expect(alphaToHex(0.99)).toBe("fc");
52
+ });
53
+ it("should return 'fc' for alpha just below 1 with rounding", () => {
54
+ expect(alphaToHex(0.99)).toBe("fc");
55
+ });
56
+ it("should return 'fe' for alpha 0.996", () => {
57
+ expect(alphaToHex(0.996)).toBe("fe");
58
+ });
59
+ it("should return 'fe' for alpha 0.998", () => {
60
+ expect(alphaToHex(0.998)).toBe("fe");
61
+ });
62
+ it("should log a warning and return '00' (0) for alpha less than 0", () => {
63
+ console.warn = jest.fn();
64
+ expect(alphaToHex(-0.1)).toBe("00");
65
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
66
+ });
67
+ it("should log a warning and return '00' (0) for alpha greater than 1", () => {
68
+ console.warn = jest.fn();
69
+ expect(alphaToHex(1.1)).toBe("00");
70
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
71
+ });
72
+ });
73
+ //# sourceMappingURL=alphaToHex.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.test.js","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { alphaToHex, roundHalfToEven } from \"./alphaToHex\";\r\n\r\ndescribe(\"roundHalfToEven\", () => {\r\n it(\"should round 0.49 to 0\", () => {\r\n expect(roundHalfToEven(0.49)).toBe(0);\r\n });\r\n\r\n it(\"should round 0.5 to 0\", () => {\r\n expect(roundHalfToEven(0.5)).toBe(0);\r\n });\r\n\r\n it(\"should round 0.51 to 1\", () => {\r\n expect(roundHalfToEven(0.51)).toBe(1);\r\n });\r\n\r\n it(\"should round 0.55 to 1\", () => {\r\n expect(roundHalfToEven(0.55)).toBe(1);\r\n });\r\n\r\n it(\"should round 0.75 to 1\", () => {\r\n expect(roundHalfToEven(0.75)).toBe(1);\r\n });\r\n\r\n it(\"should round 123.5 to 124\", () => {\r\n expect(roundHalfToEven(123.5)).toBe(124);\r\n });\r\n});\r\n\r\ndescribe(\"alphaToHex\", () => {\r\n it(\"should return '00' for alpha 0\", () => {\r\n expect(alphaToHex(0)).toBe(\"00\");\r\n });\r\n\r\n it(\"should return 'ff' for alpha 1\", () => {\r\n expect(alphaToHex(1)).toBe(\"ff\");\r\n });\r\n\r\n it(\"should return '1f' for alpha 0.12 (12%)\", () => {\r\n expect(alphaToHex(0.12)).toBe(\"1f\");\r\n });\r\n\r\n it(\"should return '80' for alpha 0.5 (50%)\", () => {\r\n expect(alphaToHex(0.5)).toBe(\"80\");\r\n });\r\n\r\n it(\"should return 'bf' for alpha 0.75 (75%)\", () => {\r\n expect(alphaToHex(0.75)).toBe(\"bf\");\r\n });\r\n\r\n it(\"should return '00' for alpha just above 0\", () => {\r\n expect(alphaToHex(0.0012)).toBe(\"00\");\r\n });\r\n\r\n it(\"should return '03' for alpha 0.01\", () => {\r\n expect(alphaToHex(0.01)).toBe(\"03\");\r\n });\r\n\r\n it(\"should return '03' for alpha just above 0 with rounding\", () => {\r\n expect(alphaToHex(0.01)).toBe(\"03\");\r\n });\r\n\r\n it(\"should return 'ff' for alpha just below 1\", () => {\r\n expect(alphaToHex(0.9988)).toBe(\"ff\");\r\n });\r\n\r\n it(\"should return 'fc' for alpha 0.99\", () => {\r\n expect(alphaToHex(0.99)).toBe(\"fc\");\r\n });\r\n\r\n it(\"should return 'fc' for alpha just below 1 with rounding\", () => {\r\n expect(alphaToHex(0.99)).toBe(\"fc\");\r\n });\r\n\r\n it(\"should return 'fe' for alpha 0.996\", () => {\r\n expect(alphaToHex(0.996)).toBe(\"fe\");\r\n });\r\n\r\n it(\"should return 'fe' for alpha 0.998\", () => {\r\n expect(alphaToHex(0.998)).toBe(\"fe\");\r\n });\r\n\r\n it(\"should log a warning and return '00' (0) for alpha less than 0\", () => {\r\n console.warn = jest.fn();\r\n expect(alphaToHex(-0.1)).toBe(\"00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n\r\n it(\"should log a warning and return '00' (0) for alpha greater than 1\", () => {\r\n console.warn = jest.fn();\r\n expect(alphaToHex(1.1)).toBe(\"00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n});\r\n"]}
@@ -0,0 +1,11 @@
1
+ export function downloadFile(filename, file) {
2
+ const a = document.createElement("a");
3
+ const url = window.URL.createObjectURL(file);
4
+ a.href = url;
5
+ a.download = filename;
6
+ document.body.appendChild(a);
7
+ a.click();
8
+ document.body.removeChild(a);
9
+ window.URL.revokeObjectURL(url);
10
+ }
11
+ //# sourceMappingURL=downloadFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadFile.js","sourceRoot":"","sources":["../../../src/Utilities/downloadFile.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAU;IACvD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC","sourcesContent":["export function downloadFile(filename: string, file: Blob) {\r\n const a = document.createElement(\"a\");\r\n const url = window.URL.createObjectURL(file);\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(url);\r\n}\r\n"]}
@@ -1,4 +1,7 @@
1
+ export * from "./addAlphaToHex";
2
+ export * from "./alphaToHex";
1
3
  export * from "./degreesToRadians";
4
+ export * from "./downloadFile";
2
5
  export * from "./LengthConverters";
3
6
  export * from "./generateUniqueID";
4
7
  export * from "./easeFunctions";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./degreesToRadians\";\r\nexport * from \"./LengthConverters\";\r\nexport * from \"./generateUniqueID\";\r\nexport * from \"./easeFunctions\";\r\nexport * from \"./interpolateNumber\";\r\n\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./addAlphaToHex\";\r\nexport * from \"./alphaToHex\";\r\nexport * from \"./degreesToRadians\";\r\nexport * from \"./downloadFile\";\r\nexport * from \"./LengthConverters\";\r\nexport * from \"./generateUniqueID\";\r\nexport * from \"./easeFunctions\";\r\nexport * from \"./interpolateNumber\";\r\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function addAlphaToHex(hex: string, alpha: number): string;
2
+ //# sourceMappingURL=addAlphaToHex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.d.ts","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYhE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=addAlphaToHex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.test.d.ts","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function roundHalfToEven(number: number): number;
2
+ export declare function alphaToHex(alpha: number): string;
3
+ //# sourceMappingURL=alphaToHex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.d.ts","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUhD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=alphaToHex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.test.d.ts","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function downloadFile(filename: string, file: Blob): void;
2
+ //# sourceMappingURL=downloadFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadFile.d.ts","sourceRoot":"","sources":["../../../src/Utilities/downloadFile.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,QAUxD"}
@@ -1,4 +1,7 @@
1
+ export * from "./addAlphaToHex";
2
+ export * from "./alphaToHex";
1
3
  export * from "./degreesToRadians";
4
+ export * from "./downloadFile";
2
5
  export * from "./LengthConverters";
3
6
  export * from "./generateUniqueID";
4
7
  export * from "./easeFunctions";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,23 +1,20 @@
1
1
  {
2
2
  "name": "@vived/core",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "Core Components for VIVED Apps and Hosts",
5
- "main": "./dist/cjs/index.js",
5
+ "main": "./dist/esm/index.js",
6
6
  "module": "./dist/esm/index.js",
7
7
  "types": "./dist/types/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
10
  "import": "./dist/esm/index.js",
11
- "require": "./dist/cjs/index.js",
12
11
  "types": "./dist/types/index.d.ts"
13
12
  }
14
13
  },
15
14
  "scripts": {
16
15
  "test": "jest --watch --config jestconfig.json",
17
16
  "testOnce": "jest --config jestconfig.json",
18
- "build": "npm run build:esm && npm run build:cjs",
19
- "build:esm": "tsc",
20
- "build:cjs": "tsc -p tsconfig.cjs.json",
17
+ "build": "tsc",
21
18
  "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
22
19
  "lint": "tslint -p tsconfig.json",
23
20
  "prepare": "npm run build",
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppObject = void 0;
4
- exports.makeAppObject = makeAppObject;
5
- const Entities_1 = require("../Entities");
6
- class AppObject extends Entities_1.ObservableEntity {
7
- }
8
- exports.AppObject = AppObject;
9
- function makeAppObject(id, repo) {
10
- return new AppObjectImp(id, repo);
11
- }
12
- class AppObjectImp extends AppObject {
13
- hasComponent(type) {
14
- return this.componentLookup.has(type);
15
- }
16
- addComponent(component) {
17
- const currentComponent = this.componentLookup.get(component.type);
18
- if (currentComponent) {
19
- console.warn(`[AppObject] Component ${component.type} is being replaced on ${this.id}`);
20
- currentComponent.dispose();
21
- }
22
- this.componentLookup.set(component.type, component);
23
- this.notify();
24
- }
25
- getComponent(type) {
26
- if (this.componentLookup.has(type)) {
27
- return this.componentLookup.get(type);
28
- }
29
- else {
30
- return undefined;
31
- }
32
- }
33
- removeComponent(type) {
34
- const component = this.componentLookup.get(type);
35
- if (!component)
36
- return;
37
- this.componentLookup.delete(type);
38
- this.notify();
39
- }
40
- allComponents() {
41
- return Array.from(this.componentLookup.values());
42
- }
43
- constructor(id, repo) {
44
- super();
45
- this.componentLookup = new Map();
46
- this.dispose = () => {
47
- const components = Array.from(this.componentLookup.values());
48
- this.componentLookup.clear();
49
- components.forEach(c => c.dispose());
50
- if (this.appObjectRepo.has(this.id)) {
51
- this.appObjectRepo.remove(this.id);
52
- }
53
- };
54
- this.id = id;
55
- this.appObjectRepo = repo;
56
- this.appObjectRepo.add(this);
57
- }
58
- }
59
- //# sourceMappingURL=AppObject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObject.js","sourceRoot":"","sources":["../../../src/AppObject/AppObject.ts"],"names":[],"mappings":";;;AAiBA,sCAEC;AAnBD,0CAA+C;AAI/C,MAAsB,SAAU,SAAQ,2BAAgB;CAWvD;AAXD,8BAWC;AAED,SAAgB,aAAa,CAAC,EAAU,EAAE,IAAmB;IAC3D,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,YAAa,SAAQ,SAAS;IAMlC,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,SAA6B;QACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CACV,yBAAyB,SAAS,CAAC,IAAI,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAC1E,CAAC;YACF,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,YAAY,CAA+B,IAAY;QACrD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAM,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAaD,YAAY,EAAU,EAAE,IAAmB;QACzC,KAAK,EAAE,CAAC;QApDF,oBAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;QAyChE,YAAO,GAAG,GAAS,EAAE;YACnB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF","sourcesContent":["import { ObservableEntity } from \"../Entities\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { AppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nexport abstract class AppObject extends ObservableEntity {\r\n abstract readonly id: string;\r\n abstract readonly appObjectRepo: AppObjectRepo;\r\n\r\n abstract hasComponent(type: string): boolean;\r\n abstract addComponent(component: AppObjectComponent): void;\r\n abstract getComponent<T extends AppObjectComponent>(type: string): T | undefined;\r\n abstract removeComponent(type: string): void;\r\n abstract allComponents(): AppObjectComponent[];\r\n\r\n abstract dispose(): void;\r\n}\r\n\r\nexport function makeAppObject(id: string, repo: AppObjectRepo): AppObject {\r\n return new AppObjectImp(id, repo);\r\n}\r\n\r\nclass AppObjectImp extends AppObject {\r\n readonly id: string;\r\n readonly appObjectRepo: AppObjectRepo;\r\n\r\n private componentLookup = new Map<string, AppObjectComponent>();\r\n\r\n hasComponent(type: string): boolean {\r\n return this.componentLookup.has(type);\r\n }\r\n\r\n addComponent(component: AppObjectComponent): void {\r\n const currentComponent = this.componentLookup.get(component.type);\r\n if (currentComponent) {\r\n console.warn(\r\n `[AppObject] Component ${component.type} is being replaced on ${this.id}`\r\n );\r\n currentComponent.dispose();\r\n }\r\n\r\n this.componentLookup.set(component.type, component);\r\n this.notify();\r\n }\r\n\r\n getComponent<T extends AppObjectComponent>(type: string): T | undefined {\r\n if (this.componentLookup.has(type)) {\r\n return this.componentLookup.get(type) as T;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n removeComponent(type: string): void {\r\n const component = this.componentLookup.get(type);\r\n\r\n if (!component) return;\r\n\r\n this.componentLookup.delete(type);\r\n this.notify();\r\n }\r\n\r\n allComponents(): AppObjectComponent[] {\r\n return Array.from(this.componentLookup.values());\r\n }\r\n\r\n\r\n dispose = (): void => {\r\n const components = Array.from(this.componentLookup.values());\r\n this.componentLookup.clear();\r\n components.forEach(c => c.dispose());\r\n\r\n if (this.appObjectRepo.has(this.id)) {\r\n this.appObjectRepo.remove(this.id);\r\n }\r\n };\r\n\r\n constructor(id: string, repo: AppObjectRepo) {\r\n super();\r\n this.id = id;\r\n this.appObjectRepo = repo;\r\n this.appObjectRepo.add(this);\r\n }\r\n}\r\n"]}
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeTestRig = makeTestRig;
4
- const AppObject_1 = require("./AppObject");
5
- const AppObjectComponent_1 = require("./AppObjectComponent");
6
- const AppObjectRepo_1 = require("./AppObjectRepo");
7
- function makeTestRig() {
8
- const repo = (0, AppObjectRepo_1.makeAppObjectRepo)();
9
- const appObj = (0, AppObject_1.makeAppObject)("obj id", repo);
10
- const observer = jest.fn();
11
- appObj.addObserver(observer);
12
- return { repo, appObj, observer };
13
- }
14
- describe("App Object", () => {
15
- it("Adds itself to the repo", () => {
16
- const { repo, appObj } = makeTestRig();
17
- expect(repo.has(appObj.id)).toEqual(true);
18
- });
19
- it("Removes itself from the repo when disposed", () => {
20
- const { repo, appObj } = makeTestRig();
21
- appObj.dispose();
22
- expect(repo.has(appObj.id)).toEqual(false);
23
- });
24
- it("Checks to see it has a component", () => {
25
- const { appObj } = makeTestRig();
26
- expect(appObj.hasComponent(MockComponent.type)).toEqual(false);
27
- new MockComponent(appObj);
28
- expect(appObj.hasComponent(MockComponent.type)).toEqual(true);
29
- });
30
- it("Notifies when an component is added", () => {
31
- const { appObj, observer } = makeTestRig();
32
- new MockComponent(appObj);
33
- expect(observer).toBeCalled();
34
- });
35
- it("Gets a component", () => {
36
- const { appObj } = makeTestRig();
37
- expect(appObj.getComponent(MockComponent.type)).toEqual(undefined);
38
- const mockComponent = new MockComponent(appObj);
39
- expect(appObj.getComponent(MockComponent.type)).toEqual(mockComponent);
40
- });
41
- it("Warns if a component is replaced", () => {
42
- const { appObj } = makeTestRig();
43
- console.warn = jest.fn();
44
- const mockComponent = new MockComponent(appObj);
45
- appObj.addComponent(mockComponent);
46
- appObj.addComponent(new MockComponent(appObj));
47
- expect(console.warn).toBeCalled();
48
- });
49
- it("Returns the component list", () => {
50
- const { appObj } = makeTestRig();
51
- expect(appObj.allComponents()).toEqual([]);
52
- const mockComponent = new MockComponent(appObj);
53
- appObj.addComponent(mockComponent);
54
- const anotherMockComponent = new AnotherMockComponent(appObj);
55
- appObj.addComponent(anotherMockComponent);
56
- expect(appObj.allComponents()).toEqual([mockComponent, anotherMockComponent]);
57
- });
58
- it("Removes a component", () => {
59
- const { appObj } = makeTestRig();
60
- const comp = new MockComponent(appObj);
61
- appObj.addComponent(comp);
62
- expect(appObj.hasComponent(MockComponent.type)).toEqual(true);
63
- appObj.removeComponent(MockComponent.type);
64
- expect(appObj.hasComponent(MockComponent.type)).toEqual(false);
65
- });
66
- it("Notifies when an component is removed", () => {
67
- const { appObj, observer } = makeTestRig();
68
- const comp = new MockComponent(appObj);
69
- appObj.addComponent(comp);
70
- observer.mockClear();
71
- appObj.removeComponent(MockComponent.type);
72
- appObj.removeComponent(MockComponent.type);
73
- appObj.removeComponent(MockComponent.type);
74
- expect(observer).toHaveBeenCalledTimes(1);
75
- });
76
- it("Disposes all components when the App Object is disposed", () => {
77
- const { appObj } = makeTestRig();
78
- const comp = new MockComponent(appObj);
79
- appObj.addComponent(comp);
80
- const spy = jest.spyOn(comp, "dispose");
81
- appObj.dispose();
82
- expect(spy).toBeCalled();
83
- });
84
- it("Clears the component list when disposed", () => {
85
- const { appObj } = makeTestRig();
86
- const comp = new MockComponent(appObj);
87
- appObj.addComponent(comp);
88
- expect(appObj.allComponents()).toHaveLength(1);
89
- appObj.dispose();
90
- expect(appObj.allComponents()).toHaveLength(0);
91
- });
92
- it("If an entity is replace, it disposes the original", () => {
93
- const { appObj } = makeTestRig();
94
- const comp = new MockComponent(appObj);
95
- appObj.addComponent(comp);
96
- const spy = jest.spyOn(comp, "dispose");
97
- appObj.addComponent(new MockComponent(appObj));
98
- expect(spy).toBeCalled();
99
- });
100
- });
101
- class MockComponent extends AppObjectComponent_1.AppObjectComponent {
102
- constructor(appObject) {
103
- super(appObject, MockComponent.type);
104
- }
105
- }
106
- MockComponent.type = "mockComponent";
107
- class AnotherMockComponent extends AppObjectComponent_1.AppObjectComponent {
108
- constructor(appObject) {
109
- super(appObject, AnotherMockComponent.type);
110
- }
111
- }
112
- AnotherMockComponent.type = "mockComponent2";
113
- //# sourceMappingURL=AppObject.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObject.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nexport function makeTestRig() {\r\n const repo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"obj id\", repo);\r\n const observer = jest.fn();\r\n appObj.addObserver(observer);\r\n\r\n return { repo, appObj, observer };\r\n}\r\n\r\ndescribe(\"App Object\", () => {\r\n it(\"Adds itself to the repo\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n expect(repo.has(appObj.id)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the repo when disposed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n appObj.dispose();\r\n expect(repo.has(appObj.id)).toEqual(false);\r\n });\r\n\r\n it(\"Checks to see it has a component\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(false);\r\n\r\n new MockComponent(appObj);\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when an component is added\", () => {\r\n const { appObj, observer } = makeTestRig();\r\n\r\n new MockComponent(appObj);\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Gets a component\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.getComponent(MockComponent.type)).toEqual(undefined);\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n\r\n expect(appObj.getComponent(MockComponent.type)).toEqual(mockComponent);\r\n });\r\n\r\n it(\"Warns if a component is replaced\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n console.warn = jest.fn();\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n appObj.addComponent(mockComponent);\r\n appObj.addComponent(new MockComponent(appObj));\r\n\r\n expect(console.warn).toBeCalled();\r\n });\r\n\r\n it(\"Returns the component list\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.allComponents()).toEqual([]);\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n appObj.addComponent(mockComponent);\r\n\r\n const anotherMockComponent = new AnotherMockComponent(appObj);\r\n appObj.addComponent(anotherMockComponent)\r\n\r\n expect(appObj.allComponents()).toEqual([mockComponent, anotherMockComponent]);\r\n });\r\n\r\n it(\"Removes a component\", () => {\r\n const { appObj } = makeTestRig();\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(true);\r\n\r\n appObj.removeComponent(MockComponent.type);\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when an component is removed\", () => {\r\n const { appObj, observer } = makeTestRig();\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n observer.mockClear();\r\n\r\n appObj.removeComponent(MockComponent.type);\r\n appObj.removeComponent(MockComponent.type);\r\n appObj.removeComponent(MockComponent.type);\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"Disposes all components when the App Object is disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n const spy = jest.spyOn(comp, \"dispose\");\r\n\r\n appObj.dispose();\r\n\r\n expect(spy).toBeCalled();\r\n });\r\n\r\n it(\"Clears the component list when disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n expect(appObj.allComponents()).toHaveLength(1);\r\n\r\n appObj.dispose();\r\n\r\n expect(appObj.allComponents()).toHaveLength(0);\r\n });\r\n\r\n it(\"If an entity is replace, it disposes the original\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n const spy = jest.spyOn(comp, \"dispose\");\r\n appObj.addComponent(new MockComponent(appObj))\r\n\r\n expect(spy).toBeCalled();\r\n });\r\n});\r\n\r\nclass MockComponent extends AppObjectComponent {\r\n static readonly type: string = \"mockComponent\";\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockComponent.type)\r\n }\r\n}\r\n\r\nclass AnotherMockComponent extends AppObjectComponent {\r\n static readonly type: string = \"mockComponent2\";\r\n constructor(appObject: AppObject) {\r\n super(appObject, AnotherMockComponent.type)\r\n }\r\n}"]}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppObjectComponent = exports.AppObjectComponentType = void 0;
4
- var AppObjectComponentType;
5
- (function (AppObjectComponentType) {
6
- AppObjectComponentType["ENTITY"] = "Entity";
7
- AppObjectComponentType["PM"] = "Presentation Manager";
8
- AppObjectComponentType["UC"] = "Use Case";
9
- AppObjectComponentType["CONTROLLER"] = "Controller";
10
- AppObjectComponentType["VIEW"] = "View";
11
- AppObjectComponentType["UNKNOWN"] = "Unknown";
12
- })(AppObjectComponentType || (exports.AppObjectComponentType = AppObjectComponentType = {}));
13
- class AppObjectComponent {
14
- get appObjects() {
15
- return this.appObject.appObjectRepo;
16
- }
17
- getCachedSingleton(type) {
18
- if (!this.cachedComponents.has(type)) {
19
- const component = this.appObjects.getSingleton(type);
20
- if (!component) {
21
- this.warn("Unable to get cached singleton type " + type);
22
- }
23
- else {
24
- this.cachedComponents.set(type, component);
25
- }
26
- }
27
- return this.cachedComponents.get(type);
28
- }
29
- getCachedLocalComponent(type) {
30
- if (!this.cachedComponents.has(type)) {
31
- const component = this.appObject.getComponent(type);
32
- if (!component) {
33
- this.warn("Unable to get local component of type " + type);
34
- }
35
- else {
36
- this.cachedComponents.set(type, component);
37
- }
38
- }
39
- return this.cachedComponents.get(type);
40
- }
41
- getSingleton(type, logType = "WARN") {
42
- const comp = this.appObjects.getSingleton(type);
43
- if (!comp) {
44
- const msg = "Unable to get singleton type " + type;
45
- switch (logType) {
46
- case "ERROR":
47
- this.error(msg);
48
- break;
49
- case "LOG":
50
- this.log(msg);
51
- break;
52
- case "WARN":
53
- this.warn(msg);
54
- break;
55
- }
56
- }
57
- return comp;
58
- }
59
- dispose() {
60
- if (this.appObject.getComponent(this.type) === this) {
61
- this.appObject.removeComponent(this.type);
62
- }
63
- }
64
- log(message) {
65
- this.appObjects.submitLog(`${this.appObject.id}/${this.type}`, message);
66
- }
67
- warn(message) {
68
- this.appObjects.submitWarning(`${this.appObject.id}/${this.type}`, message);
69
- }
70
- error(message) {
71
- this.appObjects.submitError(`${this.appObject.id}/${this.type}`, message);
72
- }
73
- constructor(appObject, type) {
74
- this.componentType = AppObjectComponentType.UNKNOWN;
75
- this.cachedComponents = new Map();
76
- this.appObject = appObject;
77
- this.type = type;
78
- appObject.addComponent(this);
79
- }
80
- }
81
- exports.AppObjectComponent = AppObjectComponent;
82
- //# sourceMappingURL=AppObjectComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectComponent.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectComponent.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject } from \"./AppObject\";\r\nimport { AppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nexport enum AppObjectComponentType {\r\n ENTITY = \"Entity\",\r\n PM = \"Presentation Manager\",\r\n UC = \"Use Case\",\r\n CONTROLLER = \"Controller\",\r\n VIEW = \"View\",\r\n UNKNOWN = \"Unknown\",\r\n}\r\n\r\nexport class AppObjectComponent {\r\n readonly componentType: AppObjectComponentType = AppObjectComponentType.UNKNOWN;\r\n readonly type: string;\r\n readonly appObject: AppObject;\r\n get appObjects(): AppObjectRepo {\r\n return this.appObject.appObjectRepo;\r\n }\r\n\r\n private cachedComponents = new Map<string, AppObjectComponent>();\r\n getCachedSingleton<T extends AppObjectComponent>(\r\n type: string\r\n ): T | undefined {\r\n if (!this.cachedComponents.has(type)) {\r\n const component = this.appObjects.getSingleton(type);\r\n if (!component) {\r\n this.warn(\"Unable to get cached singleton type \" + type);\r\n } else {\r\n this.cachedComponents.set(type, component);\r\n }\r\n }\r\n\r\n return this.cachedComponents.get(type) as T;\r\n }\r\n\r\n getCachedLocalComponent<T extends AppObjectComponent>(\r\n type: string\r\n ): T | undefined {\r\n if (!this.cachedComponents.has(type)) {\r\n const component = this.appObject.getComponent(type);\r\n\r\n if (!component) {\r\n this.warn(\"Unable to get local component of type \" + type);\r\n } else {\r\n this.cachedComponents.set(type, component);\r\n }\r\n }\r\n\r\n return this.cachedComponents.get(type) as T;\r\n }\r\n\r\n getSingleton<T extends AppObjectComponent>(\r\n type: string,\r\n logType: \"LOG\" | \"WARN\" | \"ERROR\" = \"WARN\"\r\n ): T | undefined {\r\n const comp = this.appObjects.getSingleton<T>(type);\r\n\r\n if (!comp) {\r\n const msg = \"Unable to get singleton type \" + type;\r\n switch (logType) {\r\n case \"ERROR\":\r\n this.error(msg);\r\n break;\r\n case \"LOG\":\r\n this.log(msg);\r\n break;\r\n case \"WARN\":\r\n this.warn(msg);\r\n break;\r\n }\r\n }\r\n\r\n return comp;\r\n }\r\n\r\n dispose() {\r\n if (this.appObject.getComponent(this.type) === this) {\r\n this.appObject.removeComponent(this.type);\r\n }\r\n }\r\n\r\n log(message: string) {\r\n this.appObjects.submitLog(`${this.appObject.id}/${this.type}`, message);\r\n }\r\n\r\n warn(message: string) {\r\n this.appObjects.submitWarning(`${this.appObject.id}/${this.type}`, message);\r\n }\r\n\r\n error(message: string) {\r\n this.appObjects.submitError(`${this.appObject.id}/${this.type}`, message);\r\n }\r\n\r\n constructor(appObject: AppObject, type: string) {\r\n this.appObject = appObject;\r\n this.type = type;\r\n appObject.addComponent(this);\r\n }\r\n}\r\n"]}