@vived/core 1.2.2 → 1.2.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.
- package/dist/cjs/AppObject/AppObject.js +59 -0
- package/dist/cjs/AppObject/AppObject.js.map +1 -0
- package/dist/cjs/AppObject/AppObject.test.js +113 -0
- package/dist/cjs/AppObject/AppObject.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectComponent.js +82 -0
- package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectComponent.test.js +132 -0
- package/dist/cjs/AppObject/AppObjectComponent.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectController.js +12 -0
- package/dist/cjs/AppObject/AppObjectController.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntity.js +38 -0
- package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntity.test.js +108 -0
- package/dist/cjs/AppObject/AppObjectEntity.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.js +56 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +149 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectPM.js +40 -0
- package/dist/cjs/AppObject/AppObjectPM.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectPM.test.js +103 -0
- package/dist/cjs/AppObject/AppObjectPM.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectRepo.js +133 -0
- package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectRepo.test.js +213 -0
- package/dist/cjs/AppObject/AppObjectRepo.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectUC.js +12 -0
- package/dist/cjs/AppObject/AppObjectUC.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectView.js +12 -0
- package/dist/cjs/AppObject/AppObjectView.js.map +1 -0
- package/dist/cjs/AppObject/getSingletonComponent.js +7 -0
- package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -0
- package/dist/cjs/AppObject/getSingletonComponent.test.js +13 -0
- package/dist/cjs/AppObject/getSingletonComponent.test.js.map +1 -0
- package/dist/cjs/AppObject/index.js +27 -0
- package/dist/cjs/AppObject/index.js.map +1 -0
- package/dist/cjs/AppObject/printAppObjectDetails.js +18 -0
- package/dist/cjs/AppObject/printAppObjectDetails.js.map +1 -0
- package/dist/cjs/Entities/MemoizedAngle.js +23 -0
- package/dist/cjs/Entities/MemoizedAngle.js.map +1 -0
- package/dist/cjs/Entities/MemoizedAngle.test.js +30 -0
- package/dist/cjs/Entities/MemoizedAngle.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedBoolean.js +23 -0
- package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -0
- package/dist/cjs/Entities/MemoizedBoolean.test.js +34 -0
- package/dist/cjs/Entities/MemoizedBoolean.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedColor.js +24 -0
- package/dist/cjs/Entities/MemoizedColor.js.map +1 -0
- package/dist/cjs/Entities/MemoizedColor.test.js +32 -0
- package/dist/cjs/Entities/MemoizedColor.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedNumber.js +23 -0
- package/dist/cjs/Entities/MemoizedNumber.js.map +1 -0
- package/dist/cjs/Entities/MemoizedNumber.test.js +29 -0
- package/dist/cjs/Entities/MemoizedNumber.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedQuaternion.js +24 -0
- package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -0
- package/dist/cjs/Entities/MemoizedQuaternion.test.js +32 -0
- package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedString.js +23 -0
- package/dist/cjs/Entities/MemoizedString.js.map +1 -0
- package/dist/cjs/Entities/MemoizedString.test.js +29 -0
- package/dist/cjs/Entities/MemoizedString.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector2.js +24 -0
- package/dist/cjs/Entities/MemoizedVector2.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector2.test.js +32 -0
- package/dist/cjs/Entities/MemoizedVector2.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector3.js +24 -0
- package/dist/cjs/Entities/MemoizedVector3.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector3.test.js +32 -0
- package/dist/cjs/Entities/MemoizedVector3.test.js.map +1 -0
- package/dist/cjs/Entities/ObservableEntity.js +20 -0
- package/dist/cjs/Entities/ObservableEntity.js.map +1 -0
- package/dist/cjs/Entities/ObservableEntity.test.js +25 -0
- package/dist/cjs/Entities/ObservableEntity.test.js.map +1 -0
- package/dist/cjs/Entities/ObserverList.js +27 -0
- package/dist/cjs/Entities/ObserverList.js.map +1 -0
- package/dist/cjs/Entities/ObserverList.test.js +44 -0
- package/dist/cjs/Entities/ObserverList.test.js.map +1 -0
- package/dist/cjs/Entities/RangedNumber.js +36 -0
- package/dist/cjs/Entities/RangedNumber.js.map +1 -0
- package/dist/cjs/Entities/RangedNumber.test.js +96 -0
- package/dist/cjs/Entities/RangedNumber.test.js.map +1 -0
- package/dist/cjs/Entities/index.js +28 -0
- package/dist/cjs/Entities/index.js.map +1 -0
- package/dist/cjs/Types/AppBoundary.js +3 -0
- package/dist/cjs/Types/AppBoundary.js.map +1 -0
- package/dist/cjs/Types/EaseFn.js +3 -0
- package/dist/cjs/Types/EaseFn.js.map +1 -0
- package/dist/cjs/Types/PmAdapter.js +3 -0
- package/dist/cjs/Types/PmAdapter.js.map +1 -0
- package/dist/cjs/Types/SingletonPmAdapter.js +3 -0
- package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -0
- package/dist/cjs/Types/index.js +21 -0
- package/dist/cjs/Types/index.js.map +1 -0
- package/dist/cjs/Utilities/LengthConverters.js +21 -0
- package/dist/cjs/Utilities/LengthConverters.js.map +1 -0
- package/dist/cjs/Utilities/LengthConverters.test.js +24 -0
- package/dist/cjs/Utilities/LengthConverters.test.js.map +1 -0
- package/dist/cjs/Utilities/LerpNumber.js +85 -0
- package/dist/cjs/Utilities/LerpNumber.js.map +1 -0
- package/dist/cjs/Utilities/LerpNumber.test.js +90 -0
- package/dist/cjs/Utilities/LerpNumber.test.js.map +1 -0
- package/dist/cjs/Utilities/degreesToRadians.js +7 -0
- package/dist/cjs/Utilities/degreesToRadians.js.map +1 -0
- package/dist/cjs/Utilities/degreesToRadians.test.js +9 -0
- package/dist/cjs/Utilities/degreesToRadians.test.js.map +1 -0
- package/dist/cjs/Utilities/easeFunctions.js +208 -0
- package/dist/cjs/Utilities/easeFunctions.js.map +1 -0
- package/dist/cjs/Utilities/easeFunctions.test.js +209 -0
- package/dist/cjs/Utilities/easeFunctions.test.js.map +1 -0
- package/dist/cjs/Utilities/generateUniqueID.js +8 -0
- package/dist/cjs/Utilities/generateUniqueID.js.map +1 -0
- package/dist/cjs/Utilities/index.js +22 -0
- package/dist/cjs/Utilities/index.js.map +1 -0
- package/dist/cjs/Utilities/interpolateNumber.js +18 -0
- package/dist/cjs/Utilities/interpolateNumber.js.map +1 -0
- package/dist/cjs/Utilities/interpolateNumber.test.js +26 -0
- package/dist/cjs/Utilities/interpolateNumber.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Angle.js +47 -0
- package/dist/cjs/ValueObjects/Angle.js.map +1 -0
- package/dist/cjs/ValueObjects/Angle.test.js +28 -0
- package/dist/cjs/ValueObjects/Angle.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Color.js +859 -0
- package/dist/cjs/ValueObjects/Color.js.map +1 -0
- package/dist/cjs/ValueObjects/Color.test.js +147 -0
- package/dist/cjs/ValueObjects/Color.test.js.map +1 -0
- package/dist/cjs/ValueObjects/LineSegment2D.js +72 -0
- package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -0
- package/dist/cjs/ValueObjects/LineSegment2D.test.js +102 -0
- package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Matrix.js +466 -0
- package/dist/cjs/ValueObjects/Matrix.js.map +1 -0
- package/dist/cjs/ValueObjects/Matrix.test.js +385 -0
- package/dist/cjs/ValueObjects/Matrix.test.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricLine.js +77 -0
- package/dist/cjs/ValueObjects/ParametricLine.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricLine.test.js +126 -0
- package/dist/cjs/ValueObjects/ParametricLine.test.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricPlane.js +65 -0
- package/dist/cjs/ValueObjects/ParametricPlane.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricPlane.test.js +101 -0
- package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Quaternion.js +290 -0
- package/dist/cjs/ValueObjects/Quaternion.js.map +1 -0
- package/dist/cjs/ValueObjects/Quaternion.test.js +240 -0
- package/dist/cjs/ValueObjects/Quaternion.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Rectangle.js +24 -0
- package/dist/cjs/ValueObjects/Rectangle.js.map +1 -0
- package/dist/cjs/ValueObjects/Rectangle.test.js +32 -0
- package/dist/cjs/ValueObjects/Rectangle.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector2.js +184 -0
- package/dist/cjs/ValueObjects/Vector2.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector2.test.js +136 -0
- package/dist/cjs/ValueObjects/Vector2.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector3.js +231 -0
- package/dist/cjs/ValueObjects/Vector3.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector3.test.js +188 -0
- package/dist/cjs/ValueObjects/Vector3.test.js.map +1 -0
- package/dist/cjs/ValueObjects/index.js +27 -0
- package/dist/cjs/ValueObjects/index.js.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/AppObject/AppObject.js +54 -0
- package/dist/esm/AppObject/AppObject.js.map +1 -0
- package/dist/esm/AppObject/AppObject.test.js +110 -0
- package/dist/esm/AppObject/AppObject.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectComponent.js +78 -0
- package/dist/esm/AppObject/AppObjectComponent.js.map +1 -0
- package/dist/esm/AppObject/AppObjectComponent.test.js +130 -0
- package/dist/esm/AppObject/AppObjectComponent.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectController.js +8 -0
- package/dist/esm/AppObject/AppObjectController.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntity.js +34 -0
- package/dist/esm/AppObject/AppObjectEntity.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntity.test.js +106 -0
- package/dist/esm/AppObject/AppObjectEntity.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.js +52 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js +147 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectPM.js +36 -0
- package/dist/esm/AppObject/AppObjectPM.js.map +1 -0
- package/dist/esm/AppObject/AppObjectPM.test.js +101 -0
- package/dist/esm/AppObject/AppObjectPM.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectRepo.js +128 -0
- package/dist/esm/AppObject/AppObjectRepo.js.map +1 -0
- package/dist/esm/AppObject/AppObjectRepo.test.js +211 -0
- package/dist/esm/AppObject/AppObjectRepo.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectUC.js +8 -0
- package/dist/esm/AppObject/AppObjectUC.js.map +1 -0
- package/dist/esm/AppObject/AppObjectView.js +8 -0
- package/dist/esm/AppObject/AppObjectView.js.map +1 -0
- package/dist/esm/AppObject/getSingletonComponent.js +4 -0
- package/dist/esm/AppObject/getSingletonComponent.js.map +1 -0
- package/dist/esm/AppObject/getSingletonComponent.test.js +11 -0
- package/dist/esm/AppObject/getSingletonComponent.test.js.map +1 -0
- package/dist/esm/AppObject/index.js +11 -0
- package/dist/esm/AppObject/index.js.map +1 -0
- package/dist/esm/AppObject/printAppObjectDetails.js +15 -0
- package/dist/esm/AppObject/printAppObjectDetails.js.map +1 -0
- package/dist/esm/Entities/MemoizedAngle.js +19 -0
- package/dist/esm/Entities/MemoizedAngle.js.map +1 -0
- package/dist/esm/Entities/MemoizedAngle.test.js +28 -0
- package/dist/esm/Entities/MemoizedAngle.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedBoolean.js +19 -0
- package/dist/esm/Entities/MemoizedBoolean.js.map +1 -0
- package/dist/esm/Entities/MemoizedBoolean.test.js +32 -0
- package/dist/esm/Entities/MemoizedBoolean.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedColor.js +20 -0
- package/dist/esm/Entities/MemoizedColor.js.map +1 -0
- package/dist/esm/Entities/MemoizedColor.test.js +30 -0
- package/dist/esm/Entities/MemoizedColor.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedNumber.js +19 -0
- package/dist/esm/Entities/MemoizedNumber.js.map +1 -0
- package/dist/esm/Entities/MemoizedNumber.test.js +27 -0
- package/dist/esm/Entities/MemoizedNumber.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedQuaternion.js +20 -0
- package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -0
- package/dist/esm/Entities/MemoizedQuaternion.test.js +30 -0
- package/dist/esm/Entities/MemoizedQuaternion.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedString.js +19 -0
- package/dist/esm/Entities/MemoizedString.js.map +1 -0
- package/dist/esm/Entities/MemoizedString.test.js +27 -0
- package/dist/esm/Entities/MemoizedString.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector2.js +20 -0
- package/dist/esm/Entities/MemoizedVector2.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector2.test.js +30 -0
- package/dist/esm/Entities/MemoizedVector2.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector3.js +20 -0
- package/dist/esm/Entities/MemoizedVector3.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector3.test.js +30 -0
- package/dist/esm/Entities/MemoizedVector3.test.js.map +1 -0
- package/dist/esm/Entities/ObservableEntity.js +16 -0
- package/dist/esm/Entities/ObservableEntity.js.map +1 -0
- package/dist/esm/Entities/ObservableEntity.test.js +23 -0
- package/dist/esm/Entities/ObservableEntity.test.js.map +1 -0
- package/dist/esm/Entities/ObserverList.js +23 -0
- package/dist/esm/Entities/ObserverList.js.map +1 -0
- package/dist/esm/Entities/ObserverList.test.js +42 -0
- package/dist/esm/Entities/ObserverList.test.js.map +1 -0
- package/dist/esm/Entities/RangedNumber.js +32 -0
- package/dist/esm/Entities/RangedNumber.js.map +1 -0
- package/dist/esm/Entities/RangedNumber.test.js +94 -0
- package/dist/esm/Entities/RangedNumber.test.js.map +1 -0
- package/{src/Entities/index.ts → dist/esm/Entities/index.js} +12 -11
- package/dist/esm/Entities/index.js.map +1 -0
- package/dist/esm/Types/AppBoundary.js +2 -0
- package/dist/esm/Types/AppBoundary.js.map +1 -0
- package/dist/esm/Types/EaseFn.js +2 -0
- package/dist/esm/Types/EaseFn.js.map +1 -0
- package/dist/esm/Types/PmAdapter.js +2 -0
- package/dist/esm/Types/PmAdapter.js.map +1 -0
- package/dist/esm/Types/SingletonPmAdapter.js +2 -0
- package/dist/esm/Types/SingletonPmAdapter.js.map +1 -0
- package/{src/Types/index.ts → dist/esm/Types/index.js} +5 -4
- package/dist/esm/Types/index.js.map +1 -0
- package/dist/esm/Utilities/LengthConverters.js +15 -0
- package/dist/esm/Utilities/LengthConverters.js.map +1 -0
- package/dist/esm/Utilities/LengthConverters.test.js +22 -0
- package/dist/esm/Utilities/LengthConverters.test.js.map +1 -0
- package/dist/esm/Utilities/LerpNumber.js +81 -0
- package/dist/esm/Utilities/LerpNumber.js.map +1 -0
- package/dist/esm/Utilities/LerpNumber.test.js +88 -0
- package/dist/esm/Utilities/LerpNumber.test.js.map +1 -0
- package/dist/esm/Utilities/degreesToRadians.js +4 -0
- package/dist/esm/Utilities/degreesToRadians.js.map +1 -0
- package/dist/esm/Utilities/degreesToRadians.test.js +7 -0
- package/dist/esm/Utilities/degreesToRadians.test.js.map +1 -0
- package/dist/esm/Utilities/easeFunctions.js +183 -0
- package/dist/esm/Utilities/easeFunctions.js.map +1 -0
- package/dist/esm/Utilities/easeFunctions.test.js +207 -0
- package/dist/esm/Utilities/easeFunctions.test.js.map +1 -0
- package/dist/esm/Utilities/generateUniqueID.js +5 -0
- package/dist/esm/Utilities/generateUniqueID.js.map +1 -0
- package/{src/Utilities/index.ts → dist/esm/Utilities/index.js} +6 -6
- package/dist/esm/Utilities/index.js.map +1 -0
- package/dist/esm/Utilities/interpolateNumber.js +15 -0
- package/dist/esm/Utilities/interpolateNumber.js.map +1 -0
- package/dist/esm/Utilities/interpolateNumber.test.js +24 -0
- package/dist/esm/Utilities/interpolateNumber.test.js.map +1 -0
- package/dist/esm/ValueObjects/Angle.js +43 -0
- package/dist/esm/ValueObjects/Angle.js.map +1 -0
- package/dist/esm/ValueObjects/Angle.test.js +26 -0
- package/dist/esm/ValueObjects/Angle.test.js.map +1 -0
- package/dist/esm/ValueObjects/Color.js +855 -0
- package/dist/esm/ValueObjects/Color.js.map +1 -0
- package/dist/esm/ValueObjects/Color.test.js +145 -0
- package/dist/esm/ValueObjects/Color.test.js.map +1 -0
- package/dist/esm/ValueObjects/LineSegment2D.js +68 -0
- package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -0
- package/dist/esm/ValueObjects/LineSegment2D.test.js +100 -0
- package/dist/esm/ValueObjects/LineSegment2D.test.js.map +1 -0
- package/dist/esm/ValueObjects/Matrix.js +462 -0
- package/dist/esm/ValueObjects/Matrix.js.map +1 -0
- package/dist/esm/ValueObjects/Matrix.test.js +383 -0
- package/dist/esm/ValueObjects/Matrix.test.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricLine.js +73 -0
- package/dist/esm/ValueObjects/ParametricLine.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricLine.test.js +124 -0
- package/dist/esm/ValueObjects/ParametricLine.test.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricPlane.js +61 -0
- package/dist/esm/ValueObjects/ParametricPlane.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricPlane.test.js +99 -0
- package/dist/esm/ValueObjects/ParametricPlane.test.js.map +1 -0
- package/dist/esm/ValueObjects/Quaternion.js +286 -0
- package/dist/esm/ValueObjects/Quaternion.js.map +1 -0
- package/dist/esm/ValueObjects/Quaternion.test.js +238 -0
- package/dist/esm/ValueObjects/Quaternion.test.js.map +1 -0
- package/dist/esm/ValueObjects/Rectangle.js +20 -0
- package/dist/esm/ValueObjects/Rectangle.js.map +1 -0
- package/dist/esm/ValueObjects/Rectangle.test.js +30 -0
- package/dist/esm/ValueObjects/Rectangle.test.js.map +1 -0
- package/dist/esm/ValueObjects/Vector2.js +180 -0
- package/dist/esm/ValueObjects/Vector2.js.map +1 -0
- package/dist/esm/ValueObjects/Vector2.test.js +134 -0
- package/dist/esm/ValueObjects/Vector2.test.js.map +1 -0
- package/dist/esm/ValueObjects/Vector3.js +227 -0
- package/dist/esm/ValueObjects/Vector3.js.map +1 -0
- package/dist/esm/ValueObjects/Vector3.test.js +186 -0
- package/dist/esm/ValueObjects/Vector3.test.js.map +1 -0
- package/{src/ValueObjects/index.ts → dist/esm/ValueObjects/index.js} +11 -14
- package/dist/esm/ValueObjects/index.js.map +1 -0
- package/{src/index.ts → dist/esm/index.js} +6 -5
- package/dist/esm/index.js.map +1 -0
- package/dist/types/AppObject/AppObject.d.ts +15 -0
- package/dist/types/AppObject/AppObject.d.ts.map +1 -0
- package/dist/types/AppObject/AppObject.test.d.ts +7 -0
- package/dist/types/AppObject/AppObject.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectComponent.d.ts +26 -0
- package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectComponent.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectController.d.ts +5 -0
- package/dist/types/AppObject/AppObjectController.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntity.d.ts +16 -0
- package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntity.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts +16 -0
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectPM.d.ts +13 -0
- package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectPM.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectPM.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectRepo.d.ts +26 -0
- package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectRepo.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectUC.d.ts +5 -0
- package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectView.d.ts +5 -0
- package/dist/types/AppObject/AppObjectView.d.ts.map +1 -0
- package/dist/types/AppObject/getSingletonComponent.d.ts +4 -0
- package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -0
- package/dist/types/AppObject/getSingletonComponent.test.d.ts +2 -0
- package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +1 -0
- package/dist/types/AppObject/index.d.ts +11 -0
- package/dist/types/AppObject/index.d.ts.map +1 -0
- package/dist/types/AppObject/printAppObjectDetails.d.ts +3 -0
- package/dist/types/AppObject/printAppObjectDetails.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedAngle.d.ts +10 -0
- package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedAngle.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedAngle.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedBoolean.d.ts +9 -0
- package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedBoolean.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedColor.d.ts +10 -0
- package/dist/types/Entities/MemoizedColor.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedColor.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedColor.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedNumber.d.ts +9 -0
- package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedNumber.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedNumber.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedQuaternion.d.ts +10 -0
- package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedString.d.ts +9 -0
- package/dist/types/Entities/MemoizedString.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedString.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedString.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector2.d.ts +10 -0
- package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector2.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedVector2.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector3.d.ts +10 -0
- package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector3.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedVector3.test.d.ts.map +1 -0
- package/dist/types/Entities/ObservableEntity.d.ts +8 -0
- package/dist/types/Entities/ObservableEntity.d.ts.map +1 -0
- package/dist/types/Entities/ObservableEntity.test.d.ts +2 -0
- package/dist/types/Entities/ObservableEntity.test.d.ts.map +1 -0
- package/dist/types/Entities/ObserverList.d.ts +8 -0
- package/dist/types/Entities/ObserverList.d.ts.map +1 -0
- package/dist/types/Entities/ObserverList.test.d.ts +2 -0
- package/dist/types/Entities/ObserverList.test.d.ts.map +1 -0
- package/dist/types/Entities/RangedNumber.d.ts +17 -0
- package/dist/types/Entities/RangedNumber.d.ts.map +1 -0
- package/dist/types/Entities/RangedNumber.test.d.ts +2 -0
- package/dist/types/Entities/RangedNumber.test.d.ts.map +1 -0
- package/dist/types/Entities/index.d.ts +12 -0
- package/dist/types/Entities/index.d.ts.map +1 -0
- package/dist/types/Types/AppBoundary.d.ts +11 -0
- package/dist/types/Types/AppBoundary.d.ts.map +1 -0
- package/dist/types/Types/EaseFn.d.ts +2 -0
- package/dist/types/Types/EaseFn.d.ts.map +1 -0
- package/dist/types/Types/PmAdapter.d.ts +7 -0
- package/dist/types/Types/PmAdapter.d.ts.map +1 -0
- package/dist/types/Types/SingletonPmAdapter.d.ts +7 -0
- package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -0
- package/dist/types/Types/index.d.ts +5 -0
- package/dist/types/Types/index.d.ts.map +1 -0
- package/dist/types/Utilities/LengthConverters.d.ts +5 -0
- package/dist/types/Utilities/LengthConverters.d.ts.map +1 -0
- package/dist/types/Utilities/LengthConverters.test.d.ts +2 -0
- package/dist/types/Utilities/LengthConverters.test.d.ts.map +1 -0
- package/dist/types/Utilities/LerpNumber.d.ts +57 -0
- package/dist/types/Utilities/LerpNumber.d.ts.map +1 -0
- package/dist/types/Utilities/LerpNumber.test.d.ts +2 -0
- package/dist/types/Utilities/LerpNumber.test.d.ts.map +1 -0
- package/dist/types/Utilities/degreesToRadians.d.ts +2 -0
- package/dist/types/Utilities/degreesToRadians.d.ts.map +1 -0
- package/dist/types/Utilities/degreesToRadians.test.d.ts +2 -0
- package/dist/types/Utilities/degreesToRadians.test.d.ts.map +1 -0
- package/dist/types/Utilities/easeFunctions.d.ts +24 -0
- package/dist/types/Utilities/easeFunctions.d.ts.map +1 -0
- package/dist/types/Utilities/easeFunctions.test.d.ts +2 -0
- package/dist/types/Utilities/easeFunctions.test.d.ts.map +1 -0
- package/dist/types/Utilities/generateUniqueID.d.ts +2 -0
- package/dist/types/Utilities/generateUniqueID.d.ts.map +1 -0
- package/dist/types/Utilities/index.d.ts +6 -0
- package/dist/types/Utilities/index.d.ts.map +1 -0
- package/dist/types/Utilities/interpolateNumber.d.ts +2 -0
- package/dist/types/Utilities/interpolateNumber.d.ts.map +1 -0
- package/dist/types/Utilities/interpolateNumber.test.d.ts +2 -0
- package/dist/types/Utilities/interpolateNumber.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Angle.d.ts +27 -0
- package/dist/types/ValueObjects/Angle.d.ts.map +1 -0
- package/dist/types/ValueObjects/Angle.test.d.ts +2 -0
- package/dist/types/ValueObjects/Angle.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Color.d.ts +83 -0
- package/dist/types/ValueObjects/Color.d.ts.map +1 -0
- package/dist/types/ValueObjects/Color.test.d.ts +2 -0
- package/dist/types/ValueObjects/Color.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/LineSegment2D.d.ts +12 -0
- package/dist/types/ValueObjects/LineSegment2D.d.ts.map +1 -0
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts +2 -0
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Matrix.d.ts +124 -0
- package/dist/types/ValueObjects/Matrix.d.ts.map +1 -0
- package/dist/types/ValueObjects/Matrix.test.d.ts +2 -0
- package/dist/types/ValueObjects/Matrix.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricLine.d.ts +31 -0
- package/dist/types/ValueObjects/ParametricLine.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricLine.test.d.ts +2 -0
- package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricPlane.d.ts +21 -0
- package/dist/types/ValueObjects/ParametricPlane.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts +2 -0
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Quaternion.d.ts +113 -0
- package/dist/types/ValueObjects/Quaternion.d.ts.map +1 -0
- package/dist/types/ValueObjects/Quaternion.test.d.ts +2 -0
- package/dist/types/ValueObjects/Quaternion.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Rectangle.d.ts +16 -0
- package/dist/types/ValueObjects/Rectangle.d.ts.map +1 -0
- package/dist/types/ValueObjects/Rectangle.test.d.ts +2 -0
- package/dist/types/ValueObjects/Rectangle.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector2.d.ts +121 -0
- package/dist/types/ValueObjects/Vector2.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector2.test.d.ts +2 -0
- package/dist/types/ValueObjects/Vector2.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector3.d.ts +150 -0
- package/dist/types/ValueObjects/Vector3.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector3.test.d.ts +2 -0
- package/dist/types/ValueObjects/Vector3.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/index.d.ts +11 -0
- package/dist/types/ValueObjects/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +5 -2
- package/babel.config.js +0 -12
- package/jestconfig.json +0 -10
- package/src/AppObject/AppObject.test.ts +0 -158
- package/src/AppObject/AppObject.ts +0 -83
- package/src/AppObject/AppObjectComponent.test.ts +0 -219
- package/src/AppObject/AppObjectComponent.ts +0 -100
- package/src/AppObject/AppObjectController.ts +0 -8
- package/src/AppObject/AppObjectEntity.test.ts +0 -151
- package/src/AppObject/AppObjectEntity.ts +0 -45
- package/src/AppObject/AppObjectEntityRepo.test.ts +0 -211
- package/src/AppObject/AppObjectEntityRepo.ts +0 -61
- package/src/AppObject/AppObjectPM.test.ts +0 -152
- package/src/AppObject/AppObjectPM.ts +0 -43
- package/src/AppObject/AppObjectRepo.test.ts +0 -317
- package/src/AppObject/AppObjectRepo.ts +0 -203
- package/src/AppObject/AppObjectUC.ts +0 -5
- package/src/AppObject/AppObjectView.ts +0 -5
- package/src/AppObject/getSingletonComponent.test.ts +0 -17
- package/src/AppObject/getSingletonComponent.ts +0 -9
- package/src/AppObject/index.ts +0 -10
- package/src/AppObject/printAppObjectDetails.ts +0 -17
- package/src/Entities/MemoizedAngle.test.ts +0 -38
- package/src/Entities/MemoizedAngle.ts +0 -25
- package/src/Entities/MemoizedBoolean.test.ts +0 -45
- package/src/Entities/MemoizedBoolean.ts +0 -23
- package/src/Entities/MemoizedColor.test.ts +0 -39
- package/src/Entities/MemoizedColor.ts +0 -27
- package/src/Entities/MemoizedNumber.test.ts +0 -37
- package/src/Entities/MemoizedNumber.ts +0 -23
- package/src/Entities/MemoizedQuaternion.test.ts +0 -39
- package/src/Entities/MemoizedQuaternion.ts +0 -27
- package/src/Entities/MemoizedString.test.ts +0 -37
- package/src/Entities/MemoizedString.ts +0 -23
- package/src/Entities/MemoizedVector2.test.ts +0 -39
- package/src/Entities/MemoizedVector2.ts +0 -27
- package/src/Entities/MemoizedVector3.test.ts +0 -39
- package/src/Entities/MemoizedVector3.ts +0 -27
- package/src/Entities/ObservableEntity.test.ts +0 -28
- package/src/Entities/ObservableEntity.ts +0 -17
- package/src/Entities/ObserverList.test.ts +0 -61
- package/src/Entities/ObserverList.ts +0 -24
- package/src/Entities/RangedNumber.test.ts +0 -118
- package/src/Entities/RangedNumber.ts +0 -45
- package/src/Types/AppBoundary.ts +0 -13
- package/src/Types/EaseFn.ts +0 -1
- package/src/Types/PmAdapter.ts +0 -15
- package/src/Types/SingletonPmAdapter.ts +0 -7
- package/src/Utilities/LengthConverters.test.ts +0 -30
- package/src/Utilities/LengthConverters.ts +0 -18
- package/src/Utilities/LerpNumber.test.ts +0 -109
- package/src/Utilities/LerpNumber.ts +0 -109
- package/src/Utilities/degreesToRadians.test.ts +0 -8
- package/src/Utilities/degreesToRadians.ts +0 -3
- package/src/Utilities/easeFunctions.test.ts +0 -251
- package/src/Utilities/easeFunctions.ts +0 -180
- package/src/Utilities/generateUniqueID.ts +0 -5
- package/src/Utilities/interpolateNumber.test.ts +0 -28
- package/src/Utilities/interpolateNumber.ts +0 -21
- package/src/ValueObjects/Angle.test.ts +0 -30
- package/src/ValueObjects/Angle.ts +0 -47
- package/src/ValueObjects/Color.test.ts +0 -181
- package/src/ValueObjects/Color.ts +0 -891
- package/src/ValueObjects/LineSegment2D.test.ts +0 -144
- package/src/ValueObjects/LineSegment2D.ts +0 -93
- package/src/ValueObjects/Matrix.test.ts +0 -498
- package/src/ValueObjects/Matrix.ts +0 -567
- package/src/ValueObjects/ParametricLine.test.ts +0 -155
- package/src/ValueObjects/ParametricLine.ts +0 -114
- package/src/ValueObjects/ParametricPlane.test.ts +0 -122
- package/src/ValueObjects/ParametricPlane.ts +0 -82
- package/src/ValueObjects/Quaternion.test.ts +0 -356
- package/src/ValueObjects/Quaternion.ts +0 -353
- package/src/ValueObjects/Rectangle.test.ts +0 -32
- package/src/ValueObjects/Rectangle.ts +0 -33
- package/src/ValueObjects/Vector2.test.ts +0 -167
- package/src/ValueObjects/Vector2.ts +0 -209
- package/src/ValueObjects/Vector3.test.ts +0 -228
- package/src/ValueObjects/Vector3.ts +0 -269
- package/tsconfig.build.json +0 -7
- package/tsconfig.cjs.json +0 -9
- package/tsconfig.esm.json +0 -12
- package/tsconfig.json +0 -19
- package/tslint.json +0 -11
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { MemoizedNumber } from "./MemoizedNumber";
|
|
2
|
+
test("Initial value is stored", () => {
|
|
3
|
+
const memoizedNumber = new MemoizedNumber(33, jest.fn());
|
|
4
|
+
expect(memoizedNumber.val).toEqual(33);
|
|
5
|
+
});
|
|
6
|
+
test("Callback is called when something changes", () => {
|
|
7
|
+
const cb = jest.fn();
|
|
8
|
+
const memoizedNumber = new MemoizedNumber(33, cb);
|
|
9
|
+
expect(cb).not.toBeCalled();
|
|
10
|
+
memoizedNumber.val = 55;
|
|
11
|
+
expect(cb).toBeCalled();
|
|
12
|
+
});
|
|
13
|
+
test("CB is only called when something has changed", () => {
|
|
14
|
+
const cb = jest.fn();
|
|
15
|
+
const memoizedNumber = new MemoizedNumber(33, cb);
|
|
16
|
+
memoizedNumber.val = 33;
|
|
17
|
+
memoizedNumber.val = 33;
|
|
18
|
+
memoizedNumber.val = 33;
|
|
19
|
+
expect(cb).not.toBeCalled();
|
|
20
|
+
});
|
|
21
|
+
test("Setting the value quietly should not notify", () => {
|
|
22
|
+
const cb = jest.fn();
|
|
23
|
+
const memoizedBoolean = new MemoizedNumber(2, cb);
|
|
24
|
+
memoizedBoolean.setValQuietly(3);
|
|
25
|
+
expect(cb).not.toBeCalled();
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=MemoizedNumber.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoizedNumber.test.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedNumber.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,IAAI,CAAC,yBAAyB,EAAE,GAAE,EAAE;IAClC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2CAA2C,EAAE,GAAE,EAAE;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAE5B,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8CAA8C,EAAE,GAAE,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAElD,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IACxB,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IACxB,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,6CAA6C,EAAE,GAAE,EAAE;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAA","sourcesContent":["import { MemoizedNumber } from \"./MemoizedNumber\";\r\n\r\ntest(\"Initial value is stored\", ()=>{\r\n const memoizedNumber = new MemoizedNumber(33, jest.fn());\r\n expect(memoizedNumber.val).toEqual(33);\r\n})\r\n\r\ntest(\"Callback is called when something changes\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedNumber = new MemoizedNumber(33, cb);\r\n\r\n expect(cb).not.toBeCalled();\r\n\r\n memoizedNumber.val = 55;\r\n\r\n expect(cb).toBeCalled();\r\n})\r\n\r\ntest(\"CB is only called when something has changed\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedNumber = new MemoizedNumber(33, cb);\r\n\r\n memoizedNumber.val = 33;\r\n memoizedNumber.val = 33;\r\n memoizedNumber.val = 33;\r\n\r\n expect(cb).not.toBeCalled();\r\n})\r\n\r\ntest(\"Setting the value quietly should not notify\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedBoolean = new MemoizedNumber(2, cb);\r\n\r\n memoizedBoolean.setValQuietly(3);\r\n\r\n expect(cb).not.toBeCalled();\r\n})"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Quaternion } from "../ValueObjects";
|
|
2
|
+
export class MemoizedQuaternion {
|
|
3
|
+
get val() {
|
|
4
|
+
return this._val;
|
|
5
|
+
}
|
|
6
|
+
set val(v) {
|
|
7
|
+
if (Quaternion.Equal(v, this._val))
|
|
8
|
+
return;
|
|
9
|
+
this._val = v;
|
|
10
|
+
this.onChangeCallback();
|
|
11
|
+
}
|
|
12
|
+
setValQuietly(val) {
|
|
13
|
+
this._val = val;
|
|
14
|
+
}
|
|
15
|
+
constructor(initialValue, onChangeCallback) {
|
|
16
|
+
this._val = initialValue;
|
|
17
|
+
this.onChangeCallback = onChangeCallback;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MemoizedQuaternion.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Quaternion } from "../ValueObjects";
|
|
2
|
+
import { MemoizedQuaternion } from "./MemoizedQuaternion";
|
|
3
|
+
test("Initial value is stored", () => {
|
|
4
|
+
const initialQuat = new Quaternion(5, 6, 7, 8);
|
|
5
|
+
const memoizedVector = new MemoizedQuaternion(initialQuat, jest.fn());
|
|
6
|
+
expect(memoizedVector.val).toEqual(new Quaternion(5, 6, 7, 8));
|
|
7
|
+
});
|
|
8
|
+
test("Callback is called when the val changes", () => {
|
|
9
|
+
const cb = jest.fn();
|
|
10
|
+
const initialQuat = new Quaternion(5, 6, 7, 8);
|
|
11
|
+
const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);
|
|
12
|
+
memoizedQuat.val = new Quaternion(8, 9, 10, 11);
|
|
13
|
+
expect(cb).toBeCalled();
|
|
14
|
+
});
|
|
15
|
+
test("Callback is called only when the val changes", () => {
|
|
16
|
+
const cb = jest.fn();
|
|
17
|
+
const initialQuat = new Quaternion(5, 6, 7, 8);
|
|
18
|
+
const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);
|
|
19
|
+
memoizedQuat.val = new Quaternion(5, 6, 7, 8);
|
|
20
|
+
memoizedQuat.val = new Quaternion(5, 6, 7, 8);
|
|
21
|
+
memoizedQuat.val = new Quaternion(5, 6, 7, 8);
|
|
22
|
+
expect(cb).not.toBeCalled();
|
|
23
|
+
});
|
|
24
|
+
test("Setting the value quietly should not notify", () => {
|
|
25
|
+
const cb = jest.fn();
|
|
26
|
+
const memoizedQuat = new MemoizedQuaternion(Quaternion.Identity(), cb);
|
|
27
|
+
memoizedQuat.setValQuietly(Quaternion.Identity());
|
|
28
|
+
expect(cb).not.toBeCalled();
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=MemoizedQuaternion.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoizedQuaternion.test.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedQuaternion.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE7D,YAAY,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEhD,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE7D,YAAY,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,YAAY,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,YAAY,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC","sourcesContent":["import { Quaternion } from \"../ValueObjects\";\r\nimport { MemoizedQuaternion } from \"./MemoizedQuaternion\";\r\n\r\ntest(\"Initial value is stored\", () => {\r\n const initialQuat = new Quaternion(5, 6, 7, 8);\r\n const memoizedVector = new MemoizedQuaternion(initialQuat, jest.fn());\r\n expect(memoizedVector.val).toEqual(new Quaternion(5, 6, 7, 8));\r\n});\r\n\r\ntest(\"Callback is called when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialQuat = new Quaternion(5, 6, 7, 8);\r\n const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);\r\n\r\n memoizedQuat.val = new Quaternion(8, 9, 10, 11);\r\n\r\n expect(cb).toBeCalled();\r\n});\r\n\r\ntest(\"Callback is called only when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialQuat = new Quaternion(5, 6, 7, 8);\r\n const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);\r\n\r\n memoizedQuat.val = new Quaternion(5, 6, 7, 8);\r\n memoizedQuat.val = new Quaternion(5, 6, 7, 8);\r\n memoizedQuat.val = new Quaternion(5, 6, 7, 8);\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\ntest(\"Setting the value quietly should not notify\", () => {\r\n const cb = jest.fn();\r\n const memoizedQuat = new MemoizedQuaternion(Quaternion.Identity(), cb);\r\n\r\n memoizedQuat.setValQuietly(Quaternion.Identity());\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class MemoizedString {
|
|
2
|
+
get val() {
|
|
3
|
+
return this._val;
|
|
4
|
+
}
|
|
5
|
+
set val(b) {
|
|
6
|
+
if (this._val === b)
|
|
7
|
+
return;
|
|
8
|
+
this._val = b;
|
|
9
|
+
this.onChangeCallback();
|
|
10
|
+
}
|
|
11
|
+
setValQuietly(val) {
|
|
12
|
+
this._val = val;
|
|
13
|
+
}
|
|
14
|
+
constructor(initialValue, onChangeCallback) {
|
|
15
|
+
this._val = initialValue;
|
|
16
|
+
this.onChangeCallback = onChangeCallback;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=MemoizedString.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { MemoizedString } from "./MemoizedString";
|
|
2
|
+
test("Initial value is stored", () => {
|
|
3
|
+
const memoizedNumber = new MemoizedString("string1", jest.fn());
|
|
4
|
+
expect(memoizedNumber.val).toEqual("string1");
|
|
5
|
+
});
|
|
6
|
+
test("Callback is called when something changes", () => {
|
|
7
|
+
const cb = jest.fn();
|
|
8
|
+
const memoizedNumber = new MemoizedString("string1", cb);
|
|
9
|
+
expect(cb).not.toBeCalled();
|
|
10
|
+
memoizedNumber.val = "string2";
|
|
11
|
+
expect(cb).toBeCalled();
|
|
12
|
+
});
|
|
13
|
+
test("CB is only called when something has changed", () => {
|
|
14
|
+
const cb = jest.fn();
|
|
15
|
+
const memoizedNumber = new MemoizedString("string1", cb);
|
|
16
|
+
memoizedNumber.val = "string1";
|
|
17
|
+
memoizedNumber.val = "string1";
|
|
18
|
+
memoizedNumber.val = "string1";
|
|
19
|
+
expect(cb).not.toBeCalled();
|
|
20
|
+
});
|
|
21
|
+
test("Setting the value quietly should not notify", () => {
|
|
22
|
+
const cb = jest.fn();
|
|
23
|
+
const memoizedBoolean = new MemoizedString("string1", cb);
|
|
24
|
+
memoizedBoolean.setValQuietly("string2");
|
|
25
|
+
expect(cb).not.toBeCalled();
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=MemoizedString.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoizedString.test.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedString.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,IAAI,CAAC,yBAAyB,EAAE,GAAE,EAAE;IAClC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2CAA2C,EAAE,GAAE,EAAE;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEzD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAE5B,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8CAA8C,EAAE,GAAE,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEzD,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;IAC/B,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;IAC/B,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;IAE/B,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,6CAA6C,EAAE,GAAE,EAAE;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE1D,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAA","sourcesContent":["import { MemoizedString } from \"./MemoizedString\";\r\n\r\ntest(\"Initial value is stored\", ()=>{\r\n const memoizedNumber = new MemoizedString(\"string1\", jest.fn());\r\n expect(memoizedNumber.val).toEqual(\"string1\");\r\n})\r\n\r\ntest(\"Callback is called when something changes\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedNumber = new MemoizedString(\"string1\", cb);\r\n\r\n expect(cb).not.toBeCalled();\r\n\r\n memoizedNumber.val = \"string2\";\r\n\r\n expect(cb).toBeCalled();\r\n})\r\n\r\ntest(\"CB is only called when something has changed\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedNumber = new MemoizedString(\"string1\", cb);\r\n\r\n memoizedNumber.val = \"string1\";\r\n memoizedNumber.val = \"string1\";\r\n memoizedNumber.val = \"string1\";\r\n\r\n expect(cb).not.toBeCalled();\r\n})\r\n\r\ntest(\"Setting the value quietly should not notify\", ()=>{\r\n const cb = jest.fn();\r\n const memoizedBoolean = new MemoizedString(\"string1\", cb);\r\n\r\n memoizedBoolean.setValQuietly(\"string2\");\r\n\r\n expect(cb).not.toBeCalled();\r\n})"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Vector2 } from "../ValueObjects";
|
|
2
|
+
export class MemoizedVector2 {
|
|
3
|
+
get val() {
|
|
4
|
+
return this._val;
|
|
5
|
+
}
|
|
6
|
+
set val(v) {
|
|
7
|
+
if (Vector2.Equal(v, this._val))
|
|
8
|
+
return;
|
|
9
|
+
this._val = v;
|
|
10
|
+
this.onChangeCallback();
|
|
11
|
+
}
|
|
12
|
+
setValQuietly(val) {
|
|
13
|
+
this._val = val;
|
|
14
|
+
}
|
|
15
|
+
constructor(initialValue, onChangeCallback) {
|
|
16
|
+
this._val = initialValue;
|
|
17
|
+
this.onChangeCallback = onChangeCallback;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MemoizedVector2.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Vector2 } from "../ValueObjects";
|
|
2
|
+
import { MemoizedVector2 } from "./MemoizedVector2";
|
|
3
|
+
test("Initial value is stored", () => {
|
|
4
|
+
const initialVec = new Vector2(5, 6);
|
|
5
|
+
const memoizedVector = new MemoizedVector2(initialVec, jest.fn());
|
|
6
|
+
expect(memoizedVector.val).toEqual(new Vector2(5, 6));
|
|
7
|
+
});
|
|
8
|
+
test("Callback is called when the val changes", () => {
|
|
9
|
+
const cb = jest.fn();
|
|
10
|
+
const initialVec = new Vector2(5, 6);
|
|
11
|
+
const memoizedVector = new MemoizedVector2(initialVec, cb);
|
|
12
|
+
memoizedVector.val = new Vector2(8, 9);
|
|
13
|
+
expect(cb).toBeCalled();
|
|
14
|
+
});
|
|
15
|
+
test("Callback is called only when the val changes", () => {
|
|
16
|
+
const cb = jest.fn();
|
|
17
|
+
const initialVec = new Vector2(5, 6);
|
|
18
|
+
const memoizedVector = new MemoizedVector2(initialVec, cb);
|
|
19
|
+
memoizedVector.val = new Vector2(5, 6);
|
|
20
|
+
memoizedVector.val = new Vector2(5, 6);
|
|
21
|
+
memoizedVector.val = new Vector2(5, 6);
|
|
22
|
+
expect(cb).not.toBeCalled();
|
|
23
|
+
});
|
|
24
|
+
test("Setting the value quietly should not notify", () => {
|
|
25
|
+
const cb = jest.fn();
|
|
26
|
+
const memoizedBoolean = new MemoizedVector2(Vector2.One(), cb);
|
|
27
|
+
memoizedBoolean.setValQuietly(Vector2.Zero());
|
|
28
|
+
expect(cb).not.toBeCalled();
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=MemoizedVector2.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoizedVector2.test.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector2.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE3D,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE3D,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/D,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC","sourcesContent":["import { Vector2 } from \"../ValueObjects\";\r\nimport { MemoizedVector2 } from \"./MemoizedVector2\";\r\n\r\ntest(\"Initial value is stored\", () => {\r\n const initialVec = new Vector2(5, 6);\r\n const memoizedVector = new MemoizedVector2(initialVec, jest.fn());\r\n expect(memoizedVector.val).toEqual(new Vector2(5, 6));\r\n});\r\n\r\ntest(\"Callback is called when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialVec = new Vector2(5, 6);\r\n const memoizedVector = new MemoizedVector2(initialVec, cb);\r\n\r\n memoizedVector.val = new Vector2(8, 9);\r\n\r\n expect(cb).toBeCalled();\r\n});\r\n\r\ntest(\"Callback is called only when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialVec = new Vector2(5, 6);\r\n const memoizedVector = new MemoizedVector2(initialVec, cb);\r\n\r\n memoizedVector.val = new Vector2(5, 6);\r\n memoizedVector.val = new Vector2(5, 6);\r\n memoizedVector.val = new Vector2(5, 6);\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\ntest(\"Setting the value quietly should not notify\", () => {\r\n const cb = jest.fn();\r\n const memoizedBoolean = new MemoizedVector2(Vector2.One(), cb);\r\n\r\n memoizedBoolean.setValQuietly(Vector2.Zero());\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Vector3 } from "../ValueObjects";
|
|
2
|
+
export class MemoizedVector3 {
|
|
3
|
+
get val() {
|
|
4
|
+
return this._val;
|
|
5
|
+
}
|
|
6
|
+
set val(v) {
|
|
7
|
+
if (Vector3.Equal(v, this._val))
|
|
8
|
+
return;
|
|
9
|
+
this._val = v;
|
|
10
|
+
this.onChangeCallback();
|
|
11
|
+
}
|
|
12
|
+
setValQuietly(val) {
|
|
13
|
+
this._val = val;
|
|
14
|
+
}
|
|
15
|
+
constructor(initialValue, onChangeCallback) {
|
|
16
|
+
this._val = initialValue;
|
|
17
|
+
this.onChangeCallback = onChangeCallback;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MemoizedVector3.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Vector3 } from "../ValueObjects";
|
|
2
|
+
import { MemoizedVector3 } from "./MemoizedVector3";
|
|
3
|
+
test("Initial value is stored", () => {
|
|
4
|
+
const initialVec = new Vector3(5, 6, 7);
|
|
5
|
+
const memoizedVector = new MemoizedVector3(initialVec, jest.fn());
|
|
6
|
+
expect(memoizedVector.val).toEqual(new Vector3(5, 6, 7));
|
|
7
|
+
});
|
|
8
|
+
test("Callback is called when the val changes", () => {
|
|
9
|
+
const cb = jest.fn();
|
|
10
|
+
const initialVec = new Vector3(5, 6, 7);
|
|
11
|
+
const memoizedVector = new MemoizedVector3(initialVec, cb);
|
|
12
|
+
memoizedVector.val = new Vector3(8, 9, 10);
|
|
13
|
+
expect(cb).toBeCalled();
|
|
14
|
+
});
|
|
15
|
+
test("Callback is called only when the val changes", () => {
|
|
16
|
+
const cb = jest.fn();
|
|
17
|
+
const initialVec = new Vector3(5, 6, 7);
|
|
18
|
+
const memoizedVector = new MemoizedVector3(initialVec, cb);
|
|
19
|
+
memoizedVector.val = new Vector3(5, 6, 7);
|
|
20
|
+
memoizedVector.val = new Vector3(5, 6, 7);
|
|
21
|
+
memoizedVector.val = new Vector3(5, 6, 7);
|
|
22
|
+
expect(cb).not.toBeCalled();
|
|
23
|
+
});
|
|
24
|
+
test("Setting the value quietly should not notify", () => {
|
|
25
|
+
const cb = jest.fn();
|
|
26
|
+
const memoizedBoolean = new MemoizedVector3(Vector3.One(), cb);
|
|
27
|
+
memoizedBoolean.setValQuietly(Vector3.Zero());
|
|
28
|
+
expect(cb).not.toBeCalled();
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=MemoizedVector3.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoizedVector3.test.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector3.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE3D,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3C,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE3D,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/D,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC","sourcesContent":["import { Vector3 } from \"../ValueObjects\";\r\nimport { MemoizedVector3 } from \"./MemoizedVector3\";\r\n\r\ntest(\"Initial value is stored\", () => {\r\n const initialVec = new Vector3(5, 6, 7);\r\n const memoizedVector = new MemoizedVector3(initialVec, jest.fn());\r\n expect(memoizedVector.val).toEqual(new Vector3(5, 6, 7));\r\n});\r\n\r\ntest(\"Callback is called when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialVec = new Vector3(5, 6, 7);\r\n const memoizedVector = new MemoizedVector3(initialVec, cb);\r\n\r\n memoizedVector.val = new Vector3(8, 9, 10);\r\n\r\n expect(cb).toBeCalled();\r\n});\r\n\r\ntest(\"Callback is called only when the val changes\", () => {\r\n const cb = jest.fn();\r\n const initialVec = new Vector3(5, 6, 7);\r\n const memoizedVector = new MemoizedVector3(initialVec, cb);\r\n\r\n memoizedVector.val = new Vector3(5, 6, 7);\r\n memoizedVector.val = new Vector3(5, 6, 7);\r\n memoizedVector.val = new Vector3(5, 6, 7);\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\ntest(\"Setting the value quietly should not notify\", () => {\r\n const cb = jest.fn();\r\n const memoizedBoolean = new MemoizedVector3(Vector3.One(), cb);\r\n\r\n memoizedBoolean.setValQuietly(Vector3.Zero());\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ObserverList } from "./ObserverList";
|
|
2
|
+
export class ObservableEntity {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.observerList = new ObserverList();
|
|
5
|
+
this.addObserver = (observer) => {
|
|
6
|
+
this.observerList.add(observer);
|
|
7
|
+
};
|
|
8
|
+
this.removeObserver = (observer) => {
|
|
9
|
+
this.observerList.remove(observer);
|
|
10
|
+
};
|
|
11
|
+
this.notify = () => {
|
|
12
|
+
this.observerList.notify();
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ObservableEntity.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ObservableEntity } from "./ObservableEntity";
|
|
2
|
+
class ObservableEntityImp extends ObservableEntity {
|
|
3
|
+
}
|
|
4
|
+
function makeTestRig() {
|
|
5
|
+
const observableEntity = new ObservableEntityImp();
|
|
6
|
+
const observer = jest.fn();
|
|
7
|
+
observableEntity.addObserver(observer);
|
|
8
|
+
return { observableEntity, observer };
|
|
9
|
+
}
|
|
10
|
+
describe("Abstract Observable Entity", () => {
|
|
11
|
+
it("Notifies", () => {
|
|
12
|
+
const { observer, observableEntity } = makeTestRig();
|
|
13
|
+
observableEntity.notify();
|
|
14
|
+
expect(observer).toBeCalled();
|
|
15
|
+
});
|
|
16
|
+
it("Removes an observer", () => {
|
|
17
|
+
const { observer, observableEntity } = makeTestRig();
|
|
18
|
+
observableEntity.removeObserver(observer);
|
|
19
|
+
observableEntity.notify();
|
|
20
|
+
expect(observer).not.toBeCalled();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=ObservableEntity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservableEntity.test.js","sourceRoot":"","sources":["../../../src/Entities/ObservableEntity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,mBAAoB,SAAQ,gBAAgB;CAAG;AAErD,SAAS,WAAW;IAClB,MAAM,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QACrD,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAE1B,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QACrD,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAE1B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { ObservableEntity } from \"./ObservableEntity\";\r\n\r\nclass ObservableEntityImp extends ObservableEntity {}\r\n\r\nfunction makeTestRig() {\r\n const observableEntity = new ObservableEntityImp();\r\n const observer = jest.fn();\r\n observableEntity.addObserver(observer);\r\n\r\n return { observableEntity, observer };\r\n}\r\n\r\ndescribe(\"Abstract Observable Entity\", () => {\r\n it(\"Notifies\", () => {\r\n const { observer, observableEntity } = makeTestRig();\r\n observableEntity.notify();\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Removes an observer\", () => {\r\n const { observer, observableEntity } = makeTestRig();\r\n observableEntity.removeObserver(observer);\r\n observableEntity.notify();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n});\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class ObserverList {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.observers = [];
|
|
4
|
+
this.notify = (msg) => {
|
|
5
|
+
this.observers.forEach((obs) => {
|
|
6
|
+
obs(msg);
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
this.add = (obs) => {
|
|
10
|
+
this.observers.push(obs);
|
|
11
|
+
};
|
|
12
|
+
this.remove = (obs) => {
|
|
13
|
+
const index = this.observers.indexOf(obs);
|
|
14
|
+
if (index >= 0) {
|
|
15
|
+
this.observers.splice(index, 1);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
this.clear = () => {
|
|
19
|
+
this.observers = [];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ObserverList.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ObserverList } from "./ObserverList";
|
|
2
|
+
test("An observer that recieves nothing", () => {
|
|
3
|
+
const observers = new ObserverList();
|
|
4
|
+
const obs = jest.fn();
|
|
5
|
+
observers.add(obs);
|
|
6
|
+
observers.notify();
|
|
7
|
+
expect(obs).toBeCalled();
|
|
8
|
+
});
|
|
9
|
+
test("An observer that recieves a string", () => {
|
|
10
|
+
const observers = new ObserverList();
|
|
11
|
+
const obs = jest.fn();
|
|
12
|
+
observers.add(obs);
|
|
13
|
+
observers.notify("!yolo");
|
|
14
|
+
expect(obs).toBeCalledWith("!yolo");
|
|
15
|
+
});
|
|
16
|
+
test("An observer that recieves a number", () => {
|
|
17
|
+
const observers = new ObserverList();
|
|
18
|
+
const obs = jest.fn();
|
|
19
|
+
observers.add(obs);
|
|
20
|
+
observers.notify(55);
|
|
21
|
+
expect(obs).toBeCalledWith(55);
|
|
22
|
+
});
|
|
23
|
+
test("Observer can be removed", () => {
|
|
24
|
+
const observers = new ObserverList();
|
|
25
|
+
const obs = jest.fn();
|
|
26
|
+
observers.add(obs);
|
|
27
|
+
observers.notify();
|
|
28
|
+
expect(obs).toBeCalled();
|
|
29
|
+
obs.mockClear();
|
|
30
|
+
observers.remove(obs);
|
|
31
|
+
observers.notify();
|
|
32
|
+
expect(obs).not.toBeCalled();
|
|
33
|
+
});
|
|
34
|
+
test("Clearing the oberver list", () => {
|
|
35
|
+
const observers = new ObserverList();
|
|
36
|
+
const obs = jest.fn();
|
|
37
|
+
observers.add(obs);
|
|
38
|
+
observers.clear();
|
|
39
|
+
observers.notify();
|
|
40
|
+
expect(obs).not.toBeCalled();
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=ObserverList.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObserverList.test.js","sourceRoot":"","sources":["../../../src/Entities/ObserverList.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC7C,MAAM,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnB,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAErB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,SAAS,CAAC,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,GAAE,EAAE;IACpC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnB,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,SAAS,CAAC,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAA","sourcesContent":["import { ObserverList } from \"./ObserverList\";\r\n\r\ntest(\"An observer that recieves nothing\", () => {\r\n const observers = new ObserverList<void>();\r\n const obs = jest.fn();\r\n\r\n observers.add(obs);\r\n observers.notify();\r\n\r\n expect(obs).toBeCalled();\r\n});\r\n\r\ntest(\"An observer that recieves a string\", () => {\r\n const observers = new ObserverList<string>();\r\n const obs = jest.fn();\r\n\r\n observers.add(obs);\r\n observers.notify(\"!yolo\");\r\n\r\n expect(obs).toBeCalledWith(\"!yolo\");\r\n});\r\n\r\ntest(\"An observer that recieves a number\", () => {\r\n const observers = new ObserverList<number>();\r\n const obs = jest.fn();\r\n\r\n observers.add(obs);\r\n\r\n observers.notify(55);\r\n\r\n expect(obs).toBeCalledWith(55);\r\n});\r\n\r\ntest(\"Observer can be removed\", () => {\r\n const observers = new ObserverList<void>();\r\n const obs = jest.fn();\r\n\r\n observers.add(obs);\r\n observers.notify();\r\n\r\n expect(obs).toBeCalled();\r\n\r\n obs.mockClear();\r\n observers.remove(obs);\r\n observers.notify();\r\n\r\n expect(obs).not.toBeCalled();\r\n});\r\n\r\ntest(\"Clearing the oberver list\", ()=>{\r\n const observers = new ObserverList<void>();\r\n const obs = jest.fn();\r\n\r\n observers.add(obs);\r\n\r\n observers.clear();\r\n\r\n observers.notify();\r\n\r\n expect(obs).not.toBeCalled();\r\n})\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class RangedNumber {
|
|
2
|
+
get val() {
|
|
3
|
+
return this._val;
|
|
4
|
+
}
|
|
5
|
+
set val(x) {
|
|
6
|
+
const y = this.clamp(x);
|
|
7
|
+
if (this._val === y)
|
|
8
|
+
return;
|
|
9
|
+
this._val = y;
|
|
10
|
+
this.onChangeCallback();
|
|
11
|
+
}
|
|
12
|
+
setValQuietly(val) {
|
|
13
|
+
this._val = this.clamp(val);
|
|
14
|
+
}
|
|
15
|
+
clamp(x) {
|
|
16
|
+
let rVal = x;
|
|
17
|
+
if (x > this.maxValue) {
|
|
18
|
+
rVal = this.maxValue;
|
|
19
|
+
}
|
|
20
|
+
else if (x < this.minValue) {
|
|
21
|
+
rVal = this.minValue;
|
|
22
|
+
}
|
|
23
|
+
return rVal;
|
|
24
|
+
}
|
|
25
|
+
constructor(props, onChangeCallback) {
|
|
26
|
+
this.maxValue = props.max;
|
|
27
|
+
this.minValue = props.min;
|
|
28
|
+
this._val = this.clamp(props.initialValue);
|
|
29
|
+
this.onChangeCallback = onChangeCallback;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=RangedNumber.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { RangedNumber } from "./RangedNumber";
|
|
2
|
+
it("Stores the initial value", () => {
|
|
3
|
+
const props = {
|
|
4
|
+
initialValue: 5,
|
|
5
|
+
max: 10,
|
|
6
|
+
min: 1,
|
|
7
|
+
};
|
|
8
|
+
const memoizedNumber = new RangedNumber(props, jest.fn());
|
|
9
|
+
expect(memoizedNumber.val).toEqual(5);
|
|
10
|
+
});
|
|
11
|
+
it("Clamps the initial value", () => {
|
|
12
|
+
const props = {
|
|
13
|
+
initialValue: 50,
|
|
14
|
+
max: 10,
|
|
15
|
+
min: 1,
|
|
16
|
+
};
|
|
17
|
+
const memoizedNumber = new RangedNumber(props, jest.fn());
|
|
18
|
+
expect(memoizedNumber.val).toEqual(10);
|
|
19
|
+
});
|
|
20
|
+
it("Clamps the value", () => {
|
|
21
|
+
const props = {
|
|
22
|
+
initialValue: 5,
|
|
23
|
+
max: 10,
|
|
24
|
+
min: 1,
|
|
25
|
+
};
|
|
26
|
+
const memoizedNumber = new RangedNumber(props, jest.fn());
|
|
27
|
+
expect(memoizedNumber.val).toEqual(5);
|
|
28
|
+
memoizedNumber.val = 11;
|
|
29
|
+
expect(memoizedNumber.val).toEqual(10);
|
|
30
|
+
memoizedNumber.val = 0;
|
|
31
|
+
expect(memoizedNumber.val).toEqual(1);
|
|
32
|
+
});
|
|
33
|
+
it("Triggers the callback when something changes", () => {
|
|
34
|
+
const cb = jest.fn();
|
|
35
|
+
const props = {
|
|
36
|
+
initialValue: 5,
|
|
37
|
+
max: 10,
|
|
38
|
+
min: 1,
|
|
39
|
+
};
|
|
40
|
+
const memoizedNumber = new RangedNumber(props, cb);
|
|
41
|
+
expect(cb).not.toBeCalled();
|
|
42
|
+
memoizedNumber.val = 6;
|
|
43
|
+
expect(cb).toBeCalled();
|
|
44
|
+
});
|
|
45
|
+
it("Only triggers the CB when something changes", () => {
|
|
46
|
+
const cb = jest.fn();
|
|
47
|
+
const props = {
|
|
48
|
+
initialValue: 5,
|
|
49
|
+
max: 10,
|
|
50
|
+
min: 1,
|
|
51
|
+
};
|
|
52
|
+
const memoizedNumber = new RangedNumber(props, cb);
|
|
53
|
+
memoizedNumber.val = 5;
|
|
54
|
+
memoizedNumber.val = 5;
|
|
55
|
+
memoizedNumber.val = 5;
|
|
56
|
+
expect(cb).not.toBeCalled();
|
|
57
|
+
});
|
|
58
|
+
it("Checks the clamped value before triggering", () => {
|
|
59
|
+
const cb = jest.fn();
|
|
60
|
+
const props = {
|
|
61
|
+
initialValue: 10,
|
|
62
|
+
max: 10,
|
|
63
|
+
min: 1,
|
|
64
|
+
};
|
|
65
|
+
const memoizedNumber = new RangedNumber(props, cb);
|
|
66
|
+
memoizedNumber.val = 11;
|
|
67
|
+
memoizedNumber.val = 12;
|
|
68
|
+
memoizedNumber.val = 13;
|
|
69
|
+
expect(cb).not.toBeCalled();
|
|
70
|
+
});
|
|
71
|
+
it("Does not notify if set quietly", () => {
|
|
72
|
+
const cb = jest.fn();
|
|
73
|
+
const props = {
|
|
74
|
+
initialValue: 5,
|
|
75
|
+
max: 10,
|
|
76
|
+
min: 1,
|
|
77
|
+
};
|
|
78
|
+
const memoizedNumber = new RangedNumber(props, cb);
|
|
79
|
+
memoizedNumber.setValQuietly(6);
|
|
80
|
+
expect(memoizedNumber.val).toEqual(6);
|
|
81
|
+
expect(cb).not.toBeCalled();
|
|
82
|
+
});
|
|
83
|
+
it("Setting quietly is clamped", () => {
|
|
84
|
+
const cb = jest.fn();
|
|
85
|
+
const props = {
|
|
86
|
+
initialValue: 5,
|
|
87
|
+
max: 10,
|
|
88
|
+
min: 1,
|
|
89
|
+
};
|
|
90
|
+
const memoizedNumber = new RangedNumber(props, cb);
|
|
91
|
+
memoizedNumber.setValQuietly(-1);
|
|
92
|
+
expect(memoizedNumber.val).toEqual(1);
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=RangedNumber.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangedNumber.test.js","sourceRoot":"","sources":["../../../src/Entities/RangedNumber.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AAEtE,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC1B,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1D,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEvC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAErB,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAE5B,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IAEvB,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IACvB,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IACvB,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IAEvB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IACxB,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IACxB,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,KAAK,GAA2B;QACpC,YAAY,EAAE,CAAC;QACf,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC","sourcesContent":["import { RangedNumber, RangedNumberProperties } from \"./RangedNumber\";\r\n\r\nit(\"Stores the initial value\", () => {\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n\r\n const memoizedNumber = new RangedNumber(props, jest.fn());\r\n expect(memoizedNumber.val).toEqual(5);\r\n});\r\n\r\nit(\"Clamps the initial value\", () => {\r\n const props: RangedNumberProperties = {\r\n initialValue: 50,\r\n max: 10,\r\n min: 1,\r\n };\r\n\r\n const memoizedNumber = new RangedNumber(props, jest.fn());\r\n expect(memoizedNumber.val).toEqual(10);\r\n});\r\n\r\nit(\"Clamps the value\", () => {\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n\r\n const memoizedNumber = new RangedNumber(props, jest.fn());\r\n\r\n expect(memoizedNumber.val).toEqual(5);\r\n\r\n memoizedNumber.val = 11;\r\n expect(memoizedNumber.val).toEqual(10);\r\n\r\n memoizedNumber.val = 0;\r\n expect(memoizedNumber.val).toEqual(1);\r\n});\r\n\r\nit(\"Triggers the callback when something changes\", () => {\r\n const cb = jest.fn();\r\n\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n const memoizedNumber = new RangedNumber(props, cb);\r\n\r\n expect(cb).not.toBeCalled();\r\n\r\n memoizedNumber.val = 6;\r\n\r\n expect(cb).toBeCalled();\r\n});\r\n\r\nit(\"Only triggers the CB when something changes\", () => {\r\n const cb = jest.fn();\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n const memoizedNumber = new RangedNumber(props, cb);\r\n\r\n memoizedNumber.val = 5;\r\n memoizedNumber.val = 5;\r\n memoizedNumber.val = 5;\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\nit(\"Checks the clamped value before triggering\", () => {\r\n const cb = jest.fn();\r\n const props: RangedNumberProperties = {\r\n initialValue: 10,\r\n max: 10,\r\n min: 1,\r\n };\r\n const memoizedNumber = new RangedNumber(props, cb);\r\n\r\n memoizedNumber.val = 11;\r\n memoizedNumber.val = 12;\r\n memoizedNumber.val = 13;\r\n\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\nit(\"Does not notify if set quietly\", () => {\r\n const cb = jest.fn();\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n const memoizedNumber = new RangedNumber(props, cb);\r\n\r\n memoizedNumber.setValQuietly(6);\r\n\r\n expect(memoizedNumber.val).toEqual(6);\r\n expect(cb).not.toBeCalled();\r\n});\r\n\r\nit(\"Setting quietly is clamped\", () => {\r\n const cb = jest.fn();\r\n const props: RangedNumberProperties = {\r\n initialValue: 5,\r\n max: 10,\r\n min: 1,\r\n };\r\n const memoizedNumber = new RangedNumber(props, cb);\r\n\r\n memoizedNumber.setValQuietly(-1);\r\n expect(memoizedNumber.val).toEqual(1);\r\n});\r\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export * from "./MemoizedAngle";
|
|
2
|
-
export * from "./MemoizedBoolean";
|
|
3
|
-
export * from "./MemoizedColor";
|
|
4
|
-
export * from "./MemoizedNumber";
|
|
5
|
-
export * from "./MemoizedQuaternion";
|
|
6
|
-
export * from "./MemoizedString";
|
|
7
|
-
export * from "./MemoizedVector2";
|
|
8
|
-
export * from "./MemoizedVector3";
|
|
9
|
-
export * from "./ObservableEntity";
|
|
10
|
-
export * from "./ObserverList";
|
|
11
|
-
export * from "./RangedNumber";
|
|
1
|
+
export * from "./MemoizedAngle";
|
|
2
|
+
export * from "./MemoizedBoolean";
|
|
3
|
+
export * from "./MemoizedColor";
|
|
4
|
+
export * from "./MemoizedNumber";
|
|
5
|
+
export * from "./MemoizedQuaternion";
|
|
6
|
+
export * from "./MemoizedString";
|
|
7
|
+
export * from "./MemoizedVector2";
|
|
8
|
+
export * from "./MemoizedVector3";
|
|
9
|
+
export * from "./ObservableEntity";
|
|
10
|
+
export * from "./ObserverList";
|
|
11
|
+
export * from "./RangedNumber";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC","sourcesContent":["export * from \"./MemoizedAngle\";\r\nexport * from \"./MemoizedBoolean\";\r\nexport * from \"./MemoizedColor\";\r\nexport * from \"./MemoizedNumber\";\r\nexport * from \"./MemoizedQuaternion\";\r\nexport * from \"./MemoizedString\";\r\nexport * from \"./MemoizedVector2\";\r\nexport * from \"./MemoizedVector3\";\r\nexport * from \"./ObservableEntity\";\r\nexport * from \"./ObserverList\";\r\nexport * from \"./RangedNumber\";\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppBoundary.js","sourceRoot":"","sources":["../../../src/Types/AppBoundary.ts"],"names":[],"mappings":"","sourcesContent":["export type Handler = (request: Request) => void;\r\n\r\nexport interface Request {\r\n type: string;\r\n version: number;\r\n payload?: unknown;\r\n}\r\n\r\n// tslint:disable-next-line: class-name\r\nexport interface VIVEDApp_3 {\r\n mount(hostRequestHandler: Handler): Handler;\r\n mountDev(container: HTMLElement): void;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EaseFn.js","sourceRoot":"","sources":["../../../src/Types/EaseFn.ts"],"names":[],"mappings":"","sourcesContent":["export type EaseFn = (p: number) => number;"]}
|