@luceosports/play-rendering 1.19.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +2 -1
- package/.eslintrc +11 -42
- package/dist/play-rendering.d.ts +21 -0
- package/dist/play-rendering.js +17 -8
- package/dist/play-rendering.js.map +1 -1
- package/dist/types/constants.d.ts +41 -0
- package/dist/types/helpers/common.d.ts +5 -0
- package/dist/types/layers/court/index.d.ts +18 -0
- package/dist/types/math/Bezier.d.ts +19 -0
- package/dist/types/math/LineDrawingMath.d.ts +8 -0
- package/dist/types/models/AnimationModel.d.ts +21 -0
- package/dist/types/models/FrameModel.d.ts +39 -0
- package/dist/types/models/LineModel.d.ts +22 -0
- package/dist/types/models/NoteModel.d.ts +17 -0
- package/dist/types/models/PlayModel.d.ts +40 -0
- package/dist/types/models/PlayerModel.d.ts +20 -0
- package/dist/types/models/ShapeModel.d.ts +54 -0
- package/dist/types/models/ShapeModels/CircleShape.d.ts +8 -0
- package/dist/types/models/ShapeModels/ConeShape.d.ts +8 -0
- package/dist/types/models/ShapeModels/FovShape.d.ts +12 -0
- package/dist/types/models/ShapeModels/LineShape.d.ts +11 -0
- package/dist/types/models/ShapeModels/SquareShape.d.ts +8 -0
- package/dist/types/models/ShapeModels/StraightShape.d.ts +12 -0
- package/dist/types/models/ShapeModels/TriangleShape.d.ts +12 -0
- package/dist/types/models/ShapeModels/XMarkShape.d.ts +8 -0
- package/dist/types/models/ShapeModels/index.d.ts +14 -0
- package/dist/types/models/ShapeModels/line/CutLineShape.d.ts +3 -0
- package/dist/types/models/ShapeModels/line/DribbleLineShape.d.ts +3 -0
- package/dist/types/models/ShapeModels/line/HandoffLineShape.d.ts +3 -0
- package/dist/types/models/ShapeModels/line/PassLineShape.d.ts +3 -0
- package/dist/types/models/ShapeModels/line/ScreenLineShape.d.ts +3 -0
- package/dist/types/types/index.d.ts +138 -0
- package/package.json +16 -13
- package/src/config.ts +1 -0
- package/src/constants.ts +49 -0
- package/src/global.d.ts +9 -0
- package/src/helpers/common.ts +40 -0
- package/src/index.ts +36 -0
- package/src/layers/{CourtLayer.js → CourtLayer.ts} +4 -6
- package/src/layers/{LineControlPointLayer.js → LineControlPointLayer.ts} +2 -4
- package/src/layers/{LineLayer.js → LineLayer.ts} +5 -7
- package/src/layers/{NoteLayer.js → NoteLayer.ts} +19 -19
- package/src/layers/{PlayerLayer.js → PlayerLayer.ts} +6 -7
- package/src/layers/{ShapeControlPointLayer.js → ShapeControlPointLayer.ts} +2 -4
- package/src/layers/{ShapeLayer.js → ShapeLayer.ts} +4 -6
- package/src/layers/base/BaseLayer.ts +15 -0
- package/src/layers/base/InternalBaseLayer.ts +29 -0
- package/src/layers/court/base/{InternalCourtLayer.js → InternalCourtLayer.ts} +3 -5
- package/src/layers/court/index.ts +213 -0
- package/src/layers/court/layers/BASEBALL/constants.ts +5 -0
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/constants.ts +34 -0
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers/{ADirtLayer.js → ADirtLayer.ts} +14 -14
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers/{BaseLineLayer.js → BaseLineLayer.ts} +4 -10
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers/{HomePlateLayer.js → HomePlateLayer.ts} +14 -15
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers/{PitchingMoundLayer.js → PitchingMoundLayer.ts} +7 -8
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers/index.ts +6 -0
- package/src/layers/court/layers/{BASKETBALL/layers/BorderRectLayer.js → BASEBALL/layers/BorderRectLayer.ts} +2 -4
- package/src/layers/court/layers/BASEBALL/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/common/{LaneMarkingNBATrait.js → LaneMarkingNBATrait.ts} +1 -1
- package/src/layers/court/layers/BASKETBALL/common/{LaneMarkingNCAATrait.js → LaneMarkingNCAATrait.ts} +1 -1
- package/src/layers/court/layers/BASKETBALL/constants.ts +5 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/layers/{Big3Layer.js → Big3Layer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/layers/index.ts +4 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/FIBA/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/FIBA/layers/{LaneMarkingLayer.js → LaneMarkingLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/courtTypes/FIBA/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NBA/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NBA/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NBA/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAM/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAM/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAM/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAW/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAW/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAW/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/WNBA/constants.ts +11 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/WNBA/layers/LaneMarkingLayer.ts +10 -0
- package/src/layers/court/layers/BASKETBALL/courtTypes/WNBA/layers/index.ts +3 -0
- package/src/layers/court/layers/BASKETBALL/layers/{BaseLineMarkingLayer.js → BaseLineMarkingLayer.ts} +3 -4
- package/src/layers/court/layers/BASKETBALL/layers/{BenchAreaLayer.js → BenchAreaLayer.ts} +2 -4
- package/src/layers/court/layers/{LACROSSE/layers/BorderRectLayer.js → BASKETBALL/layers/BorderRectLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/{CenterCircleLayer.js → CenterCircleLayer.ts} +2 -4
- package/src/layers/court/layers/{FOOTBALL/layers/CenterLineLayer.js → BASKETBALL/layers/CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/{FreeThrowLayer.js → FreeThrowLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/{HoopLayer.js → HoopLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/{InnerOuterRectLayer.js → InnerOuterRectLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/{RestrictedAreaLayer.js → RestrictedAreaLayer.ts} +3 -4
- package/src/layers/court/layers/BASKETBALL/layers/{ThreePointLineLayer.js → ThreePointLineLayer.ts} +2 -4
- package/src/layers/court/layers/BASKETBALL/layers/index.ts +23 -0
- package/src/layers/court/layers/FOOTBALL/constants.ts +5 -0
- package/src/layers/court/layers/FOOTBALL/courtTypes/FOOTBALL_HIGH_SCHOOL/constants.ts +3 -0
- package/src/layers/court/layers/{BASEBALL/layers/BorderRectLayer.js → FOOTBALL/layers/BorderRectLayer.ts} +2 -4
- package/src/layers/court/layers/{SOCCER/layers/CenterLineLayer.js → FOOTBALL/layers/CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/FOOTBALL/layers/{EndZoneLayer.js → EndZoneLayer.ts} +2 -4
- package/src/layers/court/layers/FOOTBALL/layers/{FieldNumberLayer.js → FieldNumberLayer.ts} +2 -4
- package/src/layers/court/layers/FOOTBALL/layers/{HashMarkLayer.js → HashMarkLayer.ts} +2 -4
- package/src/layers/court/layers/FOOTBALL/layers/{YardLineLayer.js → YardLineLayer.ts} +2 -4
- package/src/layers/court/layers/FOOTBALL/layers/index.ts +8 -0
- package/src/layers/court/layers/HOCKEY/constants.ts +5 -0
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/constants.ts +12 -0
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/layers/{GoaCreaseLayer.js → GoaCreaseLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/layers/index.ts +3 -0
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_NHL/constants.ts +12 -0
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_NHL/layers/{GoaCreaseLayer.js → GoaCreaseLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_NHL/layers/index.ts +3 -0
- package/src/layers/court/layers/HOCKEY/layers/{BorderRinkLayer.js → BorderRinkLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{CenterCircleLayer.js → CenterCircleLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{CenterLineLayer.js → CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{CenterSpotLayer.js → CenterSpotLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{EndZoneLayer.js → EndZoneLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{GoalLineLayer.js → GoalLineLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{NeutralZoneLayer.js → NeutralZoneLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/{RefereeCreaseLayer.js → RefereeCreaseLayer.ts} +2 -4
- package/src/layers/court/layers/HOCKEY/layers/index.ts +19 -0
- package/src/layers/court/layers/LACROSSE/constants.ts +5 -0
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/constants.ts +4 -0
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/layers/{CenterLineLayer.js → CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/layers/{GoalAreaLineLayer.js → GoalAreaLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/layers/{WingAreaLineLayer.js → WingAreaLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/layers/index.ts +5 -0
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_W/constants.ts +3 -0
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_W/layers/{CenterLineLayer.js → CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_W/layers/{FanLineLayer.js → FanLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_W/layers/index.ts +4 -0
- package/src/layers/court/layers/{FOOTBALL/layers/BorderRectLayer.js → LACROSSE/layers/BorderRectLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/layers/{RestrainingLineLayer.js → RestrainingLineLayer.ts} +2 -4
- package/src/layers/court/layers/LACROSSE/layers/index.ts +4 -0
- package/src/layers/court/layers/SOCCER/constants.ts +5 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_FIFA/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/layers/{CenterSpotLayer.js → CenterSpotLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/layers/{HashMarkLayer.js → HashMarkLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/layers/{PenaltySpotLayer.js → PenaltySpotLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/layers/index.ts +5 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NFHS/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NFHS/layers/{HashMarkLayer.js → HashMarkLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NFHS/layers/{PenaltySpotLayer.js → PenaltySpotLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NFHS/layers/index.ts +4 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U10/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U10/layers/{BuildOutLineLayer.js → BuildOutLineLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U10/layers/{PenaltyArcLayer.js → PenaltyArcLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U10/layers/index.ts +4 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U12/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U12/layers/{PenaltyArcLayer.js → PenaltyArcLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U12/layers/index.ts +3 -0
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U19/constants.ts +7 -0
- package/src/layers/court/layers/SOCCER/layers/BorderRectLayer.ts +10 -0
- package/src/layers/court/layers/SOCCER/layers/{CenterCircleLayer.js → CenterCircleLayer.ts} +2 -4
- package/src/layers/court/layers/{BASKETBALL/layers/CenterLineLayer.js → SOCCER/layers/CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/layers/{CenterSpotLayer.js → CenterSpotLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/layers/{CornerLayer.js → CornerLayer.ts} +3 -4
- package/src/layers/court/layers/SOCCER/layers/{PenaltyArcLayer.js → PenaltyArcLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/layers/{PenaltyAreaLayer.js → PenaltyAreaLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/layers/{PenaltySpotLayer.js → PenaltySpotLayer.ts} +2 -4
- package/src/layers/court/layers/SOCCER/layers/index.ts +19 -0
- package/src/layers/court/layers/VOLLEYBALL/constants.ts +5 -0
- package/src/layers/court/layers/VOLLEYBALL/courtTypes/VOLLEYBALL_INDOOR/constants.ts +2 -0
- package/src/layers/court/layers/VOLLEYBALL/layers/{AttackLineLayer.js → AttackLineLayer.ts} +3 -4
- package/src/layers/court/layers/VOLLEYBALL/layers/BorderRectLayer.ts +10 -0
- package/src/layers/court/layers/VOLLEYBALL/layers/{CenterLineLayer.js → CenterLineLayer.ts} +2 -4
- package/src/layers/court/layers/VOLLEYBALL/layers/{HashMarkLayer.js → HashMarkLayer.ts} +3 -4
- package/src/layers/court/layers/VOLLEYBALL/layers/index.ts +6 -0
- package/src/layers/line/base/{ActionLineLayer.js → ActionLineLayer.ts} +2 -4
- package/src/layers/line/base/{InternalLineLayer.js → InternalLineLayer.ts} +30 -10
- package/src/layers/line/index.ts +8 -0
- package/src/layers/line/layers/CutLineLayer.ts +7 -0
- package/src/layers/line/layers/{DribbleLineLayer.js → DribbleLineLayer.ts} +14 -8
- package/src/layers/line/layers/{HandoffLineLayer.js → HandoffLineLayer.ts} +4 -5
- package/src/layers/line/layers/PassLineLayer.ts +11 -0
- package/src/layers/line/layers/ScreenLineLayer.ts +7 -0
- package/src/layers/line/layers/{ShotLineLayer.js → ShotLineLayer.ts} +2 -4
- package/src/layers/shape/base/{InternalShapeLayer.js → InternalShapeLayer.ts} +7 -5
- package/src/layers/shape/index.ts +28 -0
- package/src/layers/shape/layers/{CircleShapeLayer.js → CircleShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{ConeShapeLayer.js → ConeShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{FovShapeLayer.js → FovShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{SquareShapeLayer.js → SquareShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{StraightShapeLayer.js → StraightShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{TriangleShapeLayer.js → TriangleShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/{XmarkShapeLayer.js → XmarkShapeLayer.ts} +2 -4
- package/src/layers/shape/layers/line/CutLineShapeLayer.ts +11 -0
- package/src/layers/shape/layers/line/DribbleLineShapeLayer.ts +26 -0
- package/src/layers/shape/layers/line/HandoffLineShapeLayer.ts +11 -0
- package/src/layers/shape/layers/line/PassLineShapeLayer.ts +15 -0
- package/src/layers/shape/layers/line/ScreenLineShapeLayer.ts +11 -0
- package/src/layers/shape/layers/line/base/InternalLineShapeLayer.ts +44 -0
- package/src/math/{Bezier.js → Bezier.ts} +48 -46
- package/src/math/LineDrawingMath.ts +573 -0
- package/src/models/{Animation.js → AnimationModel.ts} +29 -22
- package/src/models/Base/InternalFrameModel.ts +23 -0
- package/src/models/{Frame.js → FrameModel.ts} +136 -82
- package/src/models/{Line.js → LineModel.ts} +26 -14
- package/src/models/{Note.js → NoteModel.ts} +12 -11
- package/src/models/Play/Options.ts +31 -0
- package/src/models/PlayModel.ts +139 -0
- package/src/models/{Player.js → PlayerModel.ts} +5 -6
- package/src/models/{Shape.js → ShapeModel.ts} +9 -10
- package/src/models/ShapeModels/{CircleShape.js → CircleShape.ts} +2 -4
- package/src/models/ShapeModels/{ConeShape.js → ConeShape.ts} +2 -4
- package/src/models/ShapeModels/{FovShape.js → FovShape.ts} +2 -4
- package/src/models/ShapeModels/{LineShape.js → LineShape.ts} +4 -6
- package/src/models/ShapeModels/{XMarkShape.js → SquareShape.ts} +2 -4
- package/src/models/ShapeModels/{StraightShape.js → StraightShape.ts} +2 -4
- package/src/models/ShapeModels/{TriangleShape.js → TriangleShape.ts} +2 -4
- package/src/models/ShapeModels/{SquareShape.js → XMarkShape.ts} +2 -4
- package/src/models/ShapeModels/index.ts +30 -0
- package/src/models/ShapeModels/line/CutLineShape.ts +3 -0
- package/src/models/ShapeModels/line/DribbleLineShape.ts +3 -0
- package/src/models/ShapeModels/line/HandoffLineShape.ts +3 -0
- package/src/models/ShapeModels/line/PassLineShape.ts +3 -0
- package/src/models/ShapeModels/line/ScreenLineShape.ts +3 -0
- package/src/playerHatsConfig.ts +39 -0
- package/src/shapesConfig.ts +8 -0
- package/src/traits/{DribbleLineTrait.js → DribbleLineTrait.ts} +12 -10
- package/src/traits/{LineDrawOperationsTrait.js → LineDrawOperationsTrait.ts} +12 -9
- package/src/types/index.ts +205 -0
- package/tsconfig.json +21 -0
- package/webpack.config.js +5 -8
- package/index.js +0 -17
- package/src/config.js +0 -3
- package/src/constants.js +0 -51
- package/src/helpers/common.js +0 -12
- package/src/layers/base/BaseLayer.js +0 -20
- package/src/layers/base/InternalBaseLayer.js +0 -22
- package/src/layers/court/index.js +0 -64
- package/src/layers/court/layers/BASEBALL/constants.js +0 -7
- package/src/layers/court/layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/constants.js +0 -36
- package/src/layers/court/layers/BASKETBALL/constants.js +0 -7
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/BIG3/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/FIBA/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/NBA/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/NBA/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAM/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAM/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAW/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/NCAAW/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/BASKETBALL/courtTypes/WNBA/constants.js +0 -13
- package/src/layers/court/layers/BASKETBALL/courtTypes/WNBA/layers/LaneMarkingLayer.js +0 -12
- package/src/layers/court/layers/FOOTBALL/constants.js +0 -7
- package/src/layers/court/layers/FOOTBALL/courtTypes/FOOTBALL_HIGH_SCHOOL/constants.js +0 -5
- package/src/layers/court/layers/HOCKEY/constants.js +0 -7
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/constants.js +0 -14
- package/src/layers/court/layers/HOCKEY/courtTypes/HOCKEY_NHL/constants.js +0 -14
- package/src/layers/court/layers/LACROSSE/constants.js +0 -7
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_M/constants.js +0 -6
- package/src/layers/court/layers/LACROSSE/courtTypes/LACROSSE_US_W/constants.js +0 -5
- package/src/layers/court/layers/SOCCER/constants.js +0 -7
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_FIFA/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NCAA/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_NFHS/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U10/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U12/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/courtTypes/SOCCER_U19/constants.js +0 -9
- package/src/layers/court/layers/SOCCER/layers/BorderRectLayer.js +0 -12
- package/src/layers/court/layers/VOLLEYBALL/constants.js +0 -7
- package/src/layers/court/layers/VOLLEYBALL/courtTypes/VOLLEYBALL_INDOOR/constants.js +0 -4
- package/src/layers/court/layers/VOLLEYBALL/layers/BorderRectLayer.js +0 -12
- package/src/layers/line/index.js +0 -11
- package/src/layers/line/layers/CutLineLayer.js +0 -9
- package/src/layers/line/layers/PassLineLayer.js +0 -13
- package/src/layers/line/layers/ScreenLineLayer.js +0 -9
- package/src/layers/shape/index.js +0 -17
- package/src/layers/shape/layers/line/CutLineShapeLayer.js +0 -13
- package/src/layers/shape/layers/line/DribbleLineShapeLayer.js +0 -20
- package/src/layers/shape/layers/line/HandoffLineShapeLayer.js +0 -13
- package/src/layers/shape/layers/line/PassLineShapeLayer.js +0 -17
- package/src/layers/shape/layers/line/ScreenLineShapeLayer.js +0 -13
- package/src/layers/shape/layers/line/base/InternalLineShapeLayer.js +0 -34
- package/src/math/LineDrawingMath.js +0 -570
- package/src/models/Base/InternalFrameModel.js +0 -20
- package/src/models/Play/Options.js +0 -31
- package/src/models/Play.js +0 -91
- package/src/models/ShapeModels/index.js +0 -18
- package/src/models/ShapeModels/line/CutLineShape.js +0 -5
- package/src/models/ShapeModels/line/DribbleLineShape.js +0 -5
- package/src/models/ShapeModels/line/HandoffLineShape.js +0 -5
- package/src/models/ShapeModels/line/PassLineShape.js +0 -5
- package/src/models/ShapeModels/line/ScreenLineShape.js +0 -5
- package/src/playerHatsConfig.js +0 -29
- package/src/shapesConfig.js +0 -6
package/src/constants.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const SPORT_TYPE_BASKETBALL = 'BASKETBALL';
|
|
2
|
+
export const SPORT_TYPE_VOLLEYBALL = 'VOLLEYBALL';
|
|
3
|
+
export const SPORT_TYPE_FOOTBALL = 'FOOTBALL';
|
|
4
|
+
export const SPORT_TYPE_LACROSSE = 'LACROSSE';
|
|
5
|
+
export const SPORT_TYPE_SOCCER = 'SOCCER';
|
|
6
|
+
export const SPORT_TYPE_HOCKEY = 'HOCKEY';
|
|
7
|
+
export const SPORT_TYPE_BASEBALL = 'BASEBALL';
|
|
8
|
+
|
|
9
|
+
export const COURT_TYPE_BIG3 = 'BIG3';
|
|
10
|
+
export const COURT_TYPE_FIBA = 'FIBA';
|
|
11
|
+
export const COURT_TYPE_NBA = 'NBA';
|
|
12
|
+
export const COURT_TYPE_NCAAM = 'NCAAM';
|
|
13
|
+
export const COURT_TYPE_NCAAW = 'NCAAW';
|
|
14
|
+
export const COURT_TYPE_US_HIGH_SCHOOL = 'US_HIGH_SCHOOL';
|
|
15
|
+
export const COURT_TYPE_US_JUNIOR_HIGH = 'US_JUNIOR_HIGH';
|
|
16
|
+
export const COURT_TYPE_WNBA = 'WNBA';
|
|
17
|
+
|
|
18
|
+
export const COURT_TYPE_FOOTBALL_HIGH_SCHOOL = 'FOOTBALL_HIGH_SCHOOL';
|
|
19
|
+
export const COURT_TYPE_FOOTBALL_HIGH_SCHOOL_LEGACY = 'FOOTBALL';
|
|
20
|
+
|
|
21
|
+
export const COURT_TYPE_VOLLEYBALL_INDOOR = 'VOLLEYBALL_INDOOR';
|
|
22
|
+
|
|
23
|
+
export const COURT_TYPE_LACROSSE_US_M = 'LACROSSE_US_M';
|
|
24
|
+
export const COURT_TYPE_LACROSSE_US_W = 'LACROSSE_US_W';
|
|
25
|
+
|
|
26
|
+
export const COURT_TYPE_SOCCER_FIFA = 'SOCCER_FIFA';
|
|
27
|
+
export const COURT_TYPE_SOCCER_NCAA = 'SOCCER_NCAA';
|
|
28
|
+
export const COURT_TYPE_SOCCER_NFHS = 'SOCCER_NFHS';
|
|
29
|
+
export const COURT_TYPE_SOCCER_U10 = 'SOCCER_U10';
|
|
30
|
+
export const COURT_TYPE_SOCCER_U12 = 'SOCCER_U12';
|
|
31
|
+
export const COURT_TYPE_SOCCER_U19 = 'SOCCER_U19';
|
|
32
|
+
|
|
33
|
+
export const COURT_TYPE_HOCKEY_NHL = 'HOCKEY_NHL';
|
|
34
|
+
export const COURT_TYPE_HOCKEY_INTERNATIONAL = 'HOCKEY_INTERNATIONAL';
|
|
35
|
+
|
|
36
|
+
export const COURT_TYPE_BASEBALL_HIGH_SCHOOL = 'BASEBALL_HIGH_SCHOOL';
|
|
37
|
+
|
|
38
|
+
export const SHAPE_TYPE_CIRCLE = 'CIRCLE';
|
|
39
|
+
export const SHAPE_TYPE_SQUARE = 'SQUARE';
|
|
40
|
+
export const SHAPE_TYPE_TRIANGLE = 'TRIANGLE';
|
|
41
|
+
export const SHAPE_TYPE_FOV = 'FOV';
|
|
42
|
+
export const SHAPE_TYPE_XMARK = 'XMARK';
|
|
43
|
+
export const SHAPE_TYPE_STRAIGHT = 'STRAIGHT';
|
|
44
|
+
export const SHAPE_TYPE_CONE = 'CONE';
|
|
45
|
+
export const SHAPE_TYPE_LINE_CUT = 'LINE.CUT';
|
|
46
|
+
export const SHAPE_TYPE_LINE_SCREEN = 'LINE.SCREEN';
|
|
47
|
+
export const SHAPE_TYPE_LINE_DRIBBLE = 'LINE.DRIBBLE';
|
|
48
|
+
export const SHAPE_TYPE_LINE_PASS = 'LINE.PASS';
|
|
49
|
+
export const SHAPE_TYPE_LINE_HANDOFF = 'LINE.HANDOFF';
|
package/src/global.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ShapeType } from '../types';
|
|
2
|
+
import { ShapeModels } from '../index';
|
|
3
|
+
|
|
4
|
+
export function animationProgress(globalProgress: number, start: number, end: number) {
|
|
5
|
+
const max = end - start;
|
|
6
|
+
const local = globalProgress - start;
|
|
7
|
+
return (local * 100) / max / 100;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function rotatePoint(x: number, y: number, cX: number, cY: number, degrees: number) {
|
|
11
|
+
return {
|
|
12
|
+
x: (x - cX) * Math.cos((degrees * Math.PI) / 180) - (y - cY) * Math.sin((degrees * Math.PI) / 180) + cX,
|
|
13
|
+
y: (x - cX) * Math.sin((degrees * Math.PI) / 180) + (y - cY) * Math.cos((degrees * Math.PI) / 180) + cY
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function transformShapeTypeToImportKey(type: ShapeType): string {
|
|
18
|
+
if (type.indexOf('LINE.') < 0) return `${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()}Shape`;
|
|
19
|
+
const typeClean = type.replace('LINE.', '');
|
|
20
|
+
return `${typeClean.charAt(0).toUpperCase()}${typeClean.slice(1).toLowerCase()}LineShape`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function shapeModelKeyFromImport(shapeModels: typeof ShapeModels, type: ShapeType): keyof typeof ShapeModels {
|
|
24
|
+
return (Object.keys(shapeModels) as (keyof typeof ShapeModels)[]).find(key => {
|
|
25
|
+
const prefix = type.replace('LINE.', '');
|
|
26
|
+
const suffix = type.indexOf('LINE.') >= 0 ? 'LineShape' : 'Shape';
|
|
27
|
+
return key.toLowerCase() === `${prefix}${suffix}`.toLowerCase();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function loadImage(src: string | Buffer) {
|
|
32
|
+
const img = new Image();
|
|
33
|
+
if (typeof src === 'string') {
|
|
34
|
+
img.src = src;
|
|
35
|
+
} else {
|
|
36
|
+
img.src = 'data:image/jpeg;base64,' + src.toString('base64');
|
|
37
|
+
}
|
|
38
|
+
await img.decode();
|
|
39
|
+
return img;
|
|
40
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import PlayModel from './models/PlayModel';
|
|
2
|
+
import FrameModel from './models/FrameModel';
|
|
3
|
+
import AnimationModel from './models/AnimationModel';
|
|
4
|
+
import LineModel from './models/LineModel';
|
|
5
|
+
import PlayerModel from './models/PlayerModel';
|
|
6
|
+
import NoteModel from './models/NoteModel';
|
|
7
|
+
import ShapeModel from './models/ShapeModel';
|
|
8
|
+
import * as ShapeModels from './models/ShapeModels';
|
|
9
|
+
import * as Constants from './constants';
|
|
10
|
+
import * as LineDrawingMath from './math/LineDrawingMath';
|
|
11
|
+
import * as Helpers from './helpers/common';
|
|
12
|
+
import Bezier from './math/Bezier';
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
courtTypeConstants as CourtTypeConstants,
|
|
16
|
+
sportConstants as SportConstants,
|
|
17
|
+
sportCourtTypeMap as SportCourtTypeMap
|
|
18
|
+
} from './layers/court';
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
PlayModel,
|
|
22
|
+
FrameModel,
|
|
23
|
+
AnimationModel,
|
|
24
|
+
LineModel,
|
|
25
|
+
PlayerModel,
|
|
26
|
+
NoteModel,
|
|
27
|
+
ShapeModel,
|
|
28
|
+
ShapeModels,
|
|
29
|
+
LineDrawingMath,
|
|
30
|
+
Bezier,
|
|
31
|
+
Constants,
|
|
32
|
+
CourtTypeConstants,
|
|
33
|
+
SportConstants,
|
|
34
|
+
SportCourtTypeMap,
|
|
35
|
+
Helpers
|
|
36
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import BaseLayer from './base/BaseLayer';
|
|
2
|
+
import { courtTypeLayers, sportLayers } from './court';
|
|
3
3
|
|
|
4
|
-
class CourtLayer extends BaseLayer {
|
|
4
|
+
export default class CourtLayer extends BaseLayer {
|
|
5
5
|
get frameWidth() {
|
|
6
6
|
return this.options.width;
|
|
7
7
|
}
|
|
@@ -35,7 +35,7 @@ class CourtLayer extends BaseLayer {
|
|
|
35
35
|
|
|
36
36
|
this.setColor();
|
|
37
37
|
|
|
38
|
-
Object.values(this.courtTypeLayers).forEach(LayerClass => {
|
|
38
|
+
(Object.values(this.courtTypeLayers) as any[]).forEach(LayerClass => {
|
|
39
39
|
new LayerClass(this).apply();
|
|
40
40
|
});
|
|
41
41
|
|
|
@@ -105,5 +105,3 @@ class CourtLayer extends BaseLayer {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
module.exports = CourtLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import BaseLayer from './base/BaseLayer';
|
|
2
2
|
|
|
3
|
-
class LineControlPointLayer extends BaseLayer {
|
|
3
|
+
export default class LineControlPointLayer extends BaseLayer {
|
|
4
4
|
apply() {
|
|
5
5
|
if (!this.options.linesDisplay) return;
|
|
6
6
|
|
|
@@ -29,5 +29,3 @@ class LineControlPointLayer extends BaseLayer {
|
|
|
29
29
|
this.ctx.restore();
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
module.exports = LineControlPointLayer;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import BaseLayer from './base/BaseLayer';
|
|
3
|
+
import * as lineLayers from './line';
|
|
4
4
|
|
|
5
|
-
class LineLayer extends BaseLayer {
|
|
6
|
-
get lineWidth() {
|
|
5
|
+
export default class LineLayer extends BaseLayer {
|
|
6
|
+
get lineWidth(): number {
|
|
7
7
|
return this.courtTypeConstants.LINE_WIDTH;
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -24,5 +24,3 @@ class LineLayer extends BaseLayer {
|
|
|
24
24
|
this.ctx.restore();
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
module.exports = LineLayer;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import BaseLayer from './base/BaseLayer';
|
|
3
|
+
import NoteModel from '../models/NoteModel';
|
|
4
|
+
|
|
5
|
+
export default class NoteLayer extends BaseLayer {
|
|
6
|
+
private noteAlpha: number;
|
|
4
7
|
|
|
5
|
-
class NoteLayer extends BaseLayer {
|
|
6
8
|
apply() {
|
|
7
9
|
this.ctx.save();
|
|
8
10
|
|
|
@@ -28,7 +30,7 @@ class NoteLayer extends BaseLayer {
|
|
|
28
30
|
this.ctx.restore();
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
setNoteAlpha(note) {
|
|
33
|
+
setNoteAlpha(note: NoteModel) {
|
|
32
34
|
let alpha = 1;
|
|
33
35
|
if (this.options.animationGlobalProgress) {
|
|
34
36
|
alpha = 0;
|
|
@@ -59,7 +61,7 @@ class NoteLayer extends BaseLayer {
|
|
|
59
61
|
this.noteAlpha = alpha;
|
|
60
62
|
}
|
|
61
63
|
|
|
62
|
-
setColor(note) {
|
|
64
|
+
setColor(note: NoteModel) {
|
|
63
65
|
const { alpha, blue, green, red } = note.color;
|
|
64
66
|
|
|
65
67
|
const r = Math.ceil(red * 255);
|
|
@@ -75,12 +77,12 @@ class NoteLayer extends BaseLayer {
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
|
|
78
|
-
setFont(note) {
|
|
80
|
+
setFont(note: NoteModel) {
|
|
79
81
|
this.ctx.font = note.fontComputed;
|
|
80
82
|
this.ctx.textBaseline = note.textBaseline;
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
drawBubble(note, { width, height }) {
|
|
85
|
+
drawBubble(note: NoteModel, { width, height }) {
|
|
84
86
|
this.ctx.lineWidth = this.courtTypeConstants.COURT_LINE_WIDTH;
|
|
85
87
|
this.ctx.beginPath();
|
|
86
88
|
this.ctx.rect(0, 0, width, height);
|
|
@@ -90,11 +92,11 @@ class NoteLayer extends BaseLayer {
|
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
|
|
93
|
-
drawText(note, lines) {
|
|
95
|
+
drawText(note: NoteModel, lines) {
|
|
94
96
|
lines.forEach(({ words }, index) => {
|
|
95
97
|
this.ctx.save();
|
|
96
98
|
|
|
97
|
-
this.ctx.translate(
|
|
99
|
+
this.ctx.translate(NoteModel.NOTE_WRAP_PADDING, NoteModel.NOTE_WRAP_PADDING + note.lineHeight * index);
|
|
98
100
|
|
|
99
101
|
let wordStartX = 0;
|
|
100
102
|
words.forEach((word, i) => {
|
|
@@ -129,12 +131,12 @@ class NoteLayer extends BaseLayer {
|
|
|
129
131
|
this.ctx.strokeStyle = `rgba(0, 0, 0, ${this.noteAlpha})`;
|
|
130
132
|
this.ctx.beginPath();
|
|
131
133
|
if (note.font.underline) {
|
|
132
|
-
this.ctx.moveTo(0, note.fontSize -
|
|
133
|
-
this.ctx.lineTo(wordStartX, note.fontSize -
|
|
134
|
+
this.ctx.moveTo(0, note.fontSize - NoteModel.NOTE_LINE_HEIGHT_OFFSET / 2);
|
|
135
|
+
this.ctx.lineTo(wordStartX, note.fontSize - NoteModel.NOTE_LINE_HEIGHT_OFFSET / 2);
|
|
134
136
|
}
|
|
135
137
|
if (note.font.strikethrough) {
|
|
136
|
-
this.ctx.moveTo(0, note.lineHeight / 2 -
|
|
137
|
-
this.ctx.lineTo(wordStartX, note.lineHeight / 2 -
|
|
138
|
+
this.ctx.moveTo(0, note.lineHeight / 2 - NoteModel.NOTE_LINE_HEIGHT_OFFSET / 3);
|
|
139
|
+
this.ctx.lineTo(wordStartX, note.lineHeight / 2 - NoteModel.NOTE_LINE_HEIGHT_OFFSET / 3);
|
|
138
140
|
}
|
|
139
141
|
this.ctx.stroke();
|
|
140
142
|
}
|
|
@@ -143,7 +145,7 @@ class NoteLayer extends BaseLayer {
|
|
|
143
145
|
});
|
|
144
146
|
}
|
|
145
147
|
|
|
146
|
-
drawPlayerToken(note, x, label) {
|
|
148
|
+
drawPlayerToken(note: NoteModel, x: number, label: string) {
|
|
147
149
|
this.ctx.save();
|
|
148
150
|
|
|
149
151
|
this.ctx.translate(x + note.playerTokenRadius, 0);
|
|
@@ -158,16 +160,14 @@ class NoteLayer extends BaseLayer {
|
|
|
158
160
|
const playerFontSize = note.fontSize * 0.8;
|
|
159
161
|
this.ctx.font = `${playerFontSize}px Arial`;
|
|
160
162
|
const textX = -this.ctx.measureText(label).width / 2;
|
|
161
|
-
const textY = ((note.playerTokenRadius * 2 - playerFontSize) / 2) * (1 +
|
|
163
|
+
const textY = ((note.playerTokenRadius * 2 - playerFontSize) / 2) * (1 + NoteModel.NOTE_LINE_HEIGHT_OFFSET);
|
|
162
164
|
this.ctx.fillStyle = `rgba(255, 255, 255, ${this.noteAlpha})`;
|
|
163
165
|
this.ctx.fillText(label, textX, textY);
|
|
164
166
|
|
|
165
167
|
this.ctx.restore();
|
|
166
168
|
}
|
|
167
169
|
|
|
168
|
-
scale(value) {
|
|
170
|
+
scale(value: number) {
|
|
169
171
|
return value / this.options.scale;
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
|
-
|
|
173
|
-
module.exports = NoteLayer;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import BaseLayer from './base/BaseLayer';
|
|
2
|
+
import PlayerModel from '../models/PlayerModel';
|
|
2
3
|
|
|
3
|
-
class PlayerLayer extends BaseLayer {
|
|
4
|
+
export default class PlayerLayer extends BaseLayer {
|
|
4
5
|
get staticData() {
|
|
5
6
|
return this.options.staticData;
|
|
6
7
|
}
|
|
@@ -60,7 +61,7 @@ class PlayerLayer extends BaseLayer {
|
|
|
60
61
|
this.ctx.restore();
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
setPlayerPuckStyle(player) {
|
|
64
|
+
setPlayerPuckStyle(player: PlayerModel) {
|
|
64
65
|
const { red, green, blue, alpha } = player.color;
|
|
65
66
|
|
|
66
67
|
const isDefaultInputColor = red === 0 && green === 0 && blue === 0 && alpha === 1;
|
|
@@ -86,7 +87,7 @@ class PlayerLayer extends BaseLayer {
|
|
|
86
87
|
this.ctx.strokeStyle = color;
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
drawPlayerPuck(player) {
|
|
90
|
+
drawPlayerPuck(player: PlayerModel) {
|
|
90
91
|
const { x, y } = player.location;
|
|
91
92
|
this.ctx.beginPath();
|
|
92
93
|
this.ctx.arc(x, y, this.radius, 0, Math.PI * 2, true);
|
|
@@ -97,7 +98,7 @@ class PlayerLayer extends BaseLayer {
|
|
|
97
98
|
this.ctx.fill();
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
setPlayerLabel(player) {
|
|
101
|
+
setPlayerLabel(player: PlayerModel) {
|
|
101
102
|
const { x, y } = player.location;
|
|
102
103
|
const { alpha } = player.color;
|
|
103
104
|
|
|
@@ -143,5 +144,3 @@ class PlayerLayer extends BaseLayer {
|
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
|
-
|
|
147
|
-
module.exports = PlayerLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import BaseLayer from './base/BaseLayer';
|
|
2
2
|
|
|
3
|
-
class ShapeControlPointLayer extends BaseLayer {
|
|
3
|
+
export default class ShapeControlPointLayer extends BaseLayer {
|
|
4
4
|
apply() {
|
|
5
5
|
this.ctx.save();
|
|
6
6
|
|
|
@@ -20,5 +20,3 @@ class ShapeControlPointLayer extends BaseLayer {
|
|
|
20
20
|
this.ctx.restore();
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
module.exports = ShapeControlPointLayer;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import BaseLayer from './base/BaseLayer';
|
|
3
|
+
import * as shapeLayers from './shape';
|
|
4
4
|
|
|
5
|
-
class ShapeLayer extends BaseLayer {
|
|
5
|
+
export default class ShapeLayer extends BaseLayer {
|
|
6
6
|
apply() {
|
|
7
7
|
this.ctx.save();
|
|
8
8
|
|
|
@@ -19,5 +19,3 @@ class ShapeLayer extends BaseLayer {
|
|
|
19
19
|
this.ctx.restore();
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
module.exports = ShapeLayer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FrameData, FrameDataOptions } from '../../models/FrameModel';
|
|
2
|
+
import { CourtTypeConstants, courtTypeConstants, SportConstants, sportConstants } from '../court';
|
|
3
|
+
|
|
4
|
+
export default class BaseLayer {
|
|
5
|
+
constructor(public ctx: CanvasRenderingContext2D, public playData: FrameData, public options: FrameDataOptions) {}
|
|
6
|
+
|
|
7
|
+
get courtTypeConstants(): SportConstants & CourtTypeConstants {
|
|
8
|
+
if (!sportConstants[this.playData.sport]) throw new Error('unknown sport type constants');
|
|
9
|
+
if (!courtTypeConstants[this.playData.court.type]) throw new Error('unknown court type constants');
|
|
10
|
+
return {
|
|
11
|
+
...sportConstants[this.playData.sport],
|
|
12
|
+
...courtTypeConstants[this.playData.court.type]
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import BaseLayer from './BaseLayer';
|
|
2
|
+
import { FrameData, FrameDataOptions } from '../../models/FrameModel';
|
|
3
|
+
import { CourtTypeConstants, SportConstants } from '../court';
|
|
4
|
+
|
|
5
|
+
export default class InternalBaseLayer {
|
|
6
|
+
protected ctx: CanvasRenderingContext2D;
|
|
7
|
+
protected playData: FrameData;
|
|
8
|
+
protected options: Partial<FrameDataOptions>;
|
|
9
|
+
protected courtTypeConstants: SportConstants & CourtTypeConstants;
|
|
10
|
+
|
|
11
|
+
constructor(parentLayer: BaseLayer) {
|
|
12
|
+
this.ctx = parentLayer.ctx;
|
|
13
|
+
this.playData = parentLayer.playData;
|
|
14
|
+
this.options = parentLayer.options ? parentLayer.options : {};
|
|
15
|
+
this.courtTypeConstants = parentLayer.courtTypeConstants;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
apply() {
|
|
19
|
+
this.ctx.save();
|
|
20
|
+
|
|
21
|
+
this.drawLogic();
|
|
22
|
+
|
|
23
|
+
this.ctx.restore();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
drawLogic() {
|
|
27
|
+
// Override this
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import InternalBaseLayer from '../../base/InternalBaseLayer';
|
|
2
2
|
|
|
3
|
-
class InternalCourtLayer extends InternalBaseLayer {
|
|
3
|
+
export default class InternalCourtLayer extends InternalBaseLayer {
|
|
4
4
|
get courtCenter() {
|
|
5
5
|
return {
|
|
6
6
|
x: this.courtTypeConstants.COURT_RECT_WIDTH / 2,
|
|
@@ -36,11 +36,9 @@ class InternalCourtLayer extends InternalBaseLayer {
|
|
|
36
36
|
this.ctx.translate(0, -Math.abs(verticalTranslationDist));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
setColor(color) {
|
|
39
|
+
setColor(color: string) {
|
|
40
40
|
const style = this.options.lineColor === 'transparent' ? 'transparent' : color;
|
|
41
41
|
this.ctx.strokeStyle = style;
|
|
42
42
|
this.ctx.fillStyle = style;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
module.exports = InternalCourtLayer;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { CourtType, SportType } from '../../types';
|
|
2
|
+
import {
|
|
3
|
+
COURT_TYPE_BASEBALL_HIGH_SCHOOL,
|
|
4
|
+
COURT_TYPE_BIG3,
|
|
5
|
+
COURT_TYPE_FIBA,
|
|
6
|
+
COURT_TYPE_FOOTBALL_HIGH_SCHOOL,
|
|
7
|
+
COURT_TYPE_FOOTBALL_HIGH_SCHOOL_LEGACY,
|
|
8
|
+
COURT_TYPE_HOCKEY_INTERNATIONAL,
|
|
9
|
+
COURT_TYPE_HOCKEY_NHL,
|
|
10
|
+
COURT_TYPE_LACROSSE_US_M,
|
|
11
|
+
COURT_TYPE_LACROSSE_US_W,
|
|
12
|
+
COURT_TYPE_NBA,
|
|
13
|
+
COURT_TYPE_NCAAM,
|
|
14
|
+
COURT_TYPE_NCAAW,
|
|
15
|
+
COURT_TYPE_SOCCER_FIFA,
|
|
16
|
+
COURT_TYPE_SOCCER_NCAA,
|
|
17
|
+
COURT_TYPE_SOCCER_NFHS,
|
|
18
|
+
COURT_TYPE_SOCCER_U10,
|
|
19
|
+
COURT_TYPE_SOCCER_U12,
|
|
20
|
+
COURT_TYPE_SOCCER_U19,
|
|
21
|
+
COURT_TYPE_US_HIGH_SCHOOL,
|
|
22
|
+
COURT_TYPE_US_JUNIOR_HIGH,
|
|
23
|
+
COURT_TYPE_VOLLEYBALL_INDOOR,
|
|
24
|
+
COURT_TYPE_WNBA,
|
|
25
|
+
SPORT_TYPE_BASEBALL,
|
|
26
|
+
SPORT_TYPE_BASKETBALL,
|
|
27
|
+
SPORT_TYPE_FOOTBALL,
|
|
28
|
+
SPORT_TYPE_HOCKEY,
|
|
29
|
+
SPORT_TYPE_LACROSSE,
|
|
30
|
+
SPORT_TYPE_SOCCER,
|
|
31
|
+
SPORT_TYPE_VOLLEYBALL
|
|
32
|
+
} from '../../constants';
|
|
33
|
+
|
|
34
|
+
export type SportConstants = {
|
|
35
|
+
COURT_LINE_WIDTH: number;
|
|
36
|
+
PLAYER_TOKEN_RADIUS: number;
|
|
37
|
+
PLAYER_TOKEN_SCALE: number;
|
|
38
|
+
LINE_WIDTH: number;
|
|
39
|
+
LINE_MASKING: boolean;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type CourtTypeConstants = {
|
|
43
|
+
COURT_RECT_WIDTH: number;
|
|
44
|
+
COURT_RECT_HEIGHT: number;
|
|
45
|
+
} & Record<string, any>;
|
|
46
|
+
|
|
47
|
+
import InternalCourtLayer from './base/InternalCourtLayer';
|
|
48
|
+
|
|
49
|
+
import * as BaseballLayers from './layers/BASEBALL/layers';
|
|
50
|
+
import * as BaseballConstants from './layers/BASEBALL/constants';
|
|
51
|
+
import * as BaseballHighSchoolLayers from './layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/layers';
|
|
52
|
+
import * as BaseballHighSchoolConstants from './layers/BASEBALL/courtTypes/BASEBALL_HIGH_SCHOOL/constants';
|
|
53
|
+
|
|
54
|
+
import * as BasketballLayers from './layers/BASKETBALL/layers';
|
|
55
|
+
import * as BasketballConstants from './layers/BASKETBALL/constants';
|
|
56
|
+
import * as BasketballBig3Layers from './layers/BASKETBALL/courtTypes/BIG3/layers';
|
|
57
|
+
import * as BasketballBig3Constants from './layers/BASKETBALL/courtTypes/BIG3/constants';
|
|
58
|
+
import * as BasketballFibaLayers from './layers/BASKETBALL/courtTypes/FIBA/layers';
|
|
59
|
+
import * as BasketballFibaConstants from './layers/BASKETBALL/courtTypes/FIBA/constants';
|
|
60
|
+
import * as BasketballNbaLayers from './layers/BASKETBALL/courtTypes/NBA/layers';
|
|
61
|
+
import * as BasketballNbaConstants from './layers/BASKETBALL/courtTypes/NBA/constants';
|
|
62
|
+
import * as BasketballNcaamLayers from './layers/BASKETBALL/courtTypes/NCAAM/layers';
|
|
63
|
+
import * as BasketballNcaamConstants from './layers/BASKETBALL/courtTypes/NCAAM/constants';
|
|
64
|
+
import * as BasketballNcaawLayers from './layers/BASKETBALL/courtTypes/NCAAW/layers';
|
|
65
|
+
import * as BasketballNcaawConstants from './layers/BASKETBALL/courtTypes/NCAAW/constants';
|
|
66
|
+
import * as BasketballUsHsLayers from './layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/layers';
|
|
67
|
+
import * as BasketballUsHsConstants from './layers/BASKETBALL/courtTypes/US_HIGH_SCHOOL/constants';
|
|
68
|
+
import * as BasketballUsJhLayers from './layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/layers';
|
|
69
|
+
import * as BasketballUsJhConstants from './layers/BASKETBALL/courtTypes/US_JUNIOR_HIGH/constants';
|
|
70
|
+
import * as BasketballWnbaLayers from './layers/BASKETBALL/courtTypes/WNBA/layers';
|
|
71
|
+
import * as BasketballWnbaConstants from './layers/BASKETBALL/courtTypes/WNBA/constants';
|
|
72
|
+
|
|
73
|
+
import * as FootballLayers from './layers/FOOTBALL/layers';
|
|
74
|
+
import * as FootballConstants from './layers/FOOTBALL/constants';
|
|
75
|
+
import * as FootballHsConstants from './layers/FOOTBALL/courtTypes/FOOTBALL_HIGH_SCHOOL/constants';
|
|
76
|
+
|
|
77
|
+
import * as HockeyLayers from './layers/HOCKEY/layers';
|
|
78
|
+
import * as HockeyConstants from './layers/HOCKEY/constants';
|
|
79
|
+
import * as HockeyNhlLayers from './layers/HOCKEY/courtTypes/HOCKEY_NHL/layers';
|
|
80
|
+
import * as HockeyNhlConstants from './layers/HOCKEY/courtTypes/HOCKEY_NHL/constants';
|
|
81
|
+
import * as HockeyIntLayers from './layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/layers';
|
|
82
|
+
import * as HockeyIntConstants from './layers/HOCKEY/courtTypes/HOCKEY_INTERNATIONAL/constants';
|
|
83
|
+
|
|
84
|
+
import * as LacrosseLayers from './layers/LACROSSE/layers';
|
|
85
|
+
import * as LacrosseConstants from './layers/LACROSSE/constants';
|
|
86
|
+
import * as LacrosseUsMLayers from './layers/LACROSSE/courtTypes/LACROSSE_US_M/layers';
|
|
87
|
+
import * as LacrosseUsMConstants from './layers/LACROSSE/courtTypes/LACROSSE_US_M/constants';
|
|
88
|
+
import * as LacrosseUsWLayers from './layers/LACROSSE/courtTypes/LACROSSE_US_W/layers';
|
|
89
|
+
import * as LacrosseUsWConstants from './layers/LACROSSE/courtTypes/LACROSSE_US_W/constants';
|
|
90
|
+
|
|
91
|
+
import * as SoccerLayers from './layers/SOCCER/layers';
|
|
92
|
+
import * as SoccerConstants from './layers/SOCCER/constants';
|
|
93
|
+
import * as SoccerU19Constants from './layers/SOCCER/courtTypes/SOCCER_U19/constants';
|
|
94
|
+
import * as SoccerFifaConstants from './layers/SOCCER/courtTypes/SOCCER_FIFA/constants';
|
|
95
|
+
import * as SoccerNcaaLayers from './layers/SOCCER/courtTypes/SOCCER_NCAA/layers';
|
|
96
|
+
import * as SoccerNcaaConstants from './layers/SOCCER/courtTypes/SOCCER_NCAA/constants';
|
|
97
|
+
import * as SoccerNfhsLayers from './layers/SOCCER/courtTypes/SOCCER_NFHS/layers';
|
|
98
|
+
import * as SoccerNfhsConstants from './layers/SOCCER/courtTypes/SOCCER_NFHS/constants';
|
|
99
|
+
import * as SoccerU10Layers from './layers/SOCCER/courtTypes/SOCCER_U10/layers';
|
|
100
|
+
import * as SoccerU10Constants from './layers/SOCCER/courtTypes/SOCCER_U10/constants';
|
|
101
|
+
import * as SoccerU12Layers from './layers/SOCCER/courtTypes/SOCCER_U12/layers';
|
|
102
|
+
import * as SoccerU12Constants from './layers/SOCCER/courtTypes/SOCCER_U12/constants';
|
|
103
|
+
|
|
104
|
+
import * as VolleyballLayers from './layers/VOLLEYBALL/layers';
|
|
105
|
+
import * as VolleyballConstants from './layers/VOLLEYBALL/constants';
|
|
106
|
+
import * as VolleyballIndoorConstants from './layers/VOLLEYBALL/courtTypes/VOLLEYBALL_INDOOR/constants';
|
|
107
|
+
|
|
108
|
+
const sportLayers: Record<SportType, Record<string, typeof InternalCourtLayer>> = {
|
|
109
|
+
[SPORT_TYPE_BASEBALL]: BaseballLayers,
|
|
110
|
+
[SPORT_TYPE_BASKETBALL]: BasketballLayers,
|
|
111
|
+
[SPORT_TYPE_FOOTBALL]: FootballLayers,
|
|
112
|
+
[SPORT_TYPE_HOCKEY]: HockeyLayers,
|
|
113
|
+
[SPORT_TYPE_LACROSSE]: LacrosseLayers,
|
|
114
|
+
[SPORT_TYPE_SOCCER]: SoccerLayers,
|
|
115
|
+
[SPORT_TYPE_VOLLEYBALL]: VolleyballLayers
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const courtTypeLayers: Record<SportType, Partial<Record<CourtType, Record<string, typeof InternalCourtLayer>>>> = {
|
|
119
|
+
[SPORT_TYPE_BASEBALL]: {
|
|
120
|
+
[COURT_TYPE_BASEBALL_HIGH_SCHOOL]: BaseballHighSchoolLayers
|
|
121
|
+
},
|
|
122
|
+
[SPORT_TYPE_BASKETBALL]: {
|
|
123
|
+
[COURT_TYPE_BIG3]: BasketballBig3Layers,
|
|
124
|
+
[COURT_TYPE_FIBA]: BasketballFibaLayers,
|
|
125
|
+
[COURT_TYPE_NBA]: BasketballNbaLayers,
|
|
126
|
+
[COURT_TYPE_NCAAM]: BasketballNcaamLayers,
|
|
127
|
+
[COURT_TYPE_NCAAW]: BasketballNcaawLayers,
|
|
128
|
+
[COURT_TYPE_US_HIGH_SCHOOL]: BasketballUsHsLayers,
|
|
129
|
+
[COURT_TYPE_US_JUNIOR_HIGH]: BasketballUsJhLayers,
|
|
130
|
+
[COURT_TYPE_WNBA]: BasketballWnbaLayers
|
|
131
|
+
},
|
|
132
|
+
[SPORT_TYPE_FOOTBALL]: {},
|
|
133
|
+
[SPORT_TYPE_HOCKEY]: {
|
|
134
|
+
[COURT_TYPE_HOCKEY_NHL]: HockeyNhlLayers,
|
|
135
|
+
[COURT_TYPE_HOCKEY_INTERNATIONAL]: HockeyIntLayers
|
|
136
|
+
},
|
|
137
|
+
[SPORT_TYPE_LACROSSE]: {
|
|
138
|
+
[COURT_TYPE_LACROSSE_US_M]: LacrosseUsMLayers,
|
|
139
|
+
[COURT_TYPE_LACROSSE_US_W]: LacrosseUsWLayers
|
|
140
|
+
},
|
|
141
|
+
[SPORT_TYPE_SOCCER]: {
|
|
142
|
+
[COURT_TYPE_SOCCER_NCAA]: SoccerNcaaLayers,
|
|
143
|
+
[COURT_TYPE_SOCCER_NFHS]: SoccerNfhsLayers,
|
|
144
|
+
[COURT_TYPE_SOCCER_U10]: SoccerU10Layers,
|
|
145
|
+
[COURT_TYPE_SOCCER_U12]: SoccerU12Layers
|
|
146
|
+
},
|
|
147
|
+
[SPORT_TYPE_VOLLEYBALL]: {}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const sportConstants: Record<SportType, SportConstants> = {
|
|
151
|
+
[SPORT_TYPE_BASEBALL]: BaseballConstants,
|
|
152
|
+
[SPORT_TYPE_BASKETBALL]: BasketballConstants,
|
|
153
|
+
[SPORT_TYPE_FOOTBALL]: FootballConstants,
|
|
154
|
+
[SPORT_TYPE_HOCKEY]: HockeyConstants,
|
|
155
|
+
[SPORT_TYPE_LACROSSE]: LacrosseConstants,
|
|
156
|
+
[SPORT_TYPE_SOCCER]: SoccerConstants,
|
|
157
|
+
[SPORT_TYPE_VOLLEYBALL]: VolleyballConstants
|
|
158
|
+
};
|
|
159
|
+
const courtTypeConstants: Record<CourtType, CourtTypeConstants> = {
|
|
160
|
+
[COURT_TYPE_BASEBALL_HIGH_SCHOOL]: BaseballHighSchoolConstants,
|
|
161
|
+
[COURT_TYPE_BIG3]: BasketballBig3Constants,
|
|
162
|
+
[COURT_TYPE_FIBA]: BasketballFibaConstants,
|
|
163
|
+
[COURT_TYPE_NBA]: BasketballNbaConstants,
|
|
164
|
+
[COURT_TYPE_NCAAM]: BasketballNcaamConstants,
|
|
165
|
+
[COURT_TYPE_NCAAW]: BasketballNcaawConstants,
|
|
166
|
+
[COURT_TYPE_US_HIGH_SCHOOL]: BasketballUsHsConstants,
|
|
167
|
+
[COURT_TYPE_US_JUNIOR_HIGH]: BasketballUsJhConstants,
|
|
168
|
+
[COURT_TYPE_WNBA]: BasketballWnbaConstants,
|
|
169
|
+
[COURT_TYPE_FOOTBALL_HIGH_SCHOOL_LEGACY]: FootballHsConstants,
|
|
170
|
+
[COURT_TYPE_FOOTBALL_HIGH_SCHOOL]: FootballHsConstants,
|
|
171
|
+
[COURT_TYPE_HOCKEY_NHL]: HockeyNhlConstants,
|
|
172
|
+
[COURT_TYPE_HOCKEY_INTERNATIONAL]: HockeyIntConstants,
|
|
173
|
+
[COURT_TYPE_LACROSSE_US_M]: LacrosseUsMConstants,
|
|
174
|
+
[COURT_TYPE_LACROSSE_US_W]: LacrosseUsWConstants,
|
|
175
|
+
[COURT_TYPE_SOCCER_FIFA]: SoccerFifaConstants,
|
|
176
|
+
[COURT_TYPE_SOCCER_NCAA]: SoccerNcaaConstants,
|
|
177
|
+
[COURT_TYPE_SOCCER_NFHS]: SoccerNfhsConstants,
|
|
178
|
+
[COURT_TYPE_SOCCER_U10]: SoccerU10Constants,
|
|
179
|
+
[COURT_TYPE_SOCCER_U12]: SoccerU12Constants,
|
|
180
|
+
[COURT_TYPE_SOCCER_U19]: SoccerU19Constants,
|
|
181
|
+
[COURT_TYPE_VOLLEYBALL_INDOOR]: VolleyballIndoorConstants
|
|
182
|
+
};
|
|
183
|
+
const sportCourtTypeMap: Record<SportType, { courtTypes: CourtType[] }> = {
|
|
184
|
+
[SPORT_TYPE_BASEBALL]: { courtTypes: [COURT_TYPE_BASEBALL_HIGH_SCHOOL] },
|
|
185
|
+
[SPORT_TYPE_BASKETBALL]: {
|
|
186
|
+
courtTypes: [
|
|
187
|
+
COURT_TYPE_BIG3,
|
|
188
|
+
COURT_TYPE_FIBA,
|
|
189
|
+
COURT_TYPE_NBA,
|
|
190
|
+
COURT_TYPE_NCAAM,
|
|
191
|
+
COURT_TYPE_NCAAW,
|
|
192
|
+
COURT_TYPE_US_HIGH_SCHOOL,
|
|
193
|
+
COURT_TYPE_US_JUNIOR_HIGH,
|
|
194
|
+
COURT_TYPE_WNBA
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
[SPORT_TYPE_FOOTBALL]: { courtTypes: [COURT_TYPE_FOOTBALL_HIGH_SCHOOL] },
|
|
198
|
+
[SPORT_TYPE_HOCKEY]: { courtTypes: [COURT_TYPE_HOCKEY_NHL, COURT_TYPE_HOCKEY_INTERNATIONAL] },
|
|
199
|
+
[SPORT_TYPE_LACROSSE]: { courtTypes: [COURT_TYPE_LACROSSE_US_M, COURT_TYPE_LACROSSE_US_W] },
|
|
200
|
+
[SPORT_TYPE_SOCCER]: {
|
|
201
|
+
courtTypes: [
|
|
202
|
+
COURT_TYPE_SOCCER_FIFA,
|
|
203
|
+
COURT_TYPE_SOCCER_NCAA,
|
|
204
|
+
COURT_TYPE_SOCCER_NFHS,
|
|
205
|
+
COURT_TYPE_SOCCER_U10,
|
|
206
|
+
COURT_TYPE_SOCCER_U12,
|
|
207
|
+
COURT_TYPE_SOCCER_U19
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
[SPORT_TYPE_VOLLEYBALL]: { courtTypes: [COURT_TYPE_VOLLEYBALL_INDOOR] }
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export { sportLayers, courtTypeLayers, sportConstants, courtTypeConstants, sportCourtTypeMap };
|