@@ -3,8 +3,7 @@ import {renderPath2D} from "../internal/render/canvas";
33import { genFromOptions } from "../internal/gen" ;
44import { mapPoints } from "../internal/util" ;
55import { statefulAnimationGenerator } from "../internal/animate/state" ;
6- import { typeCheck , err } from "../internal/errors" ;
7- import { timingFunctions } from "../internal/animate/timing" ;
6+ import { checkBlobOptions , checkCanvasOptions , checkKeyframeOptions } from "../internal/check" ;
87
98export interface CanvasKeyframe {
109 delay ?: number ;
@@ -39,39 +38,13 @@ const canvasBlobGenerator = (keyframe: CanvasKeyframe): Point[] => {
3938 } ) ;
4039} ;
4140
42- // TODO make reusable.
4341const canvasKeyframeChecker = ( keyframe : CanvasKeyframe , index : number ) => {
44- // keyframe options
45- typeCheck ( `keyframes[${ index } ]` , keyframe , [ "object" ] ) ;
46- const { delay, duration, timingFunction, callback} = keyframe ;
47- typeCheck ( `keyframes[${ index } ].delay` , delay , [ "number" , "undefined" ] ) ;
48- if ( delay && delay < 0 ) err ( `keyframes[${ index } ].delay is invalid "${ delay } ".` ) ;
49- typeCheck ( `keyframes[${ index } ].duration` , duration , [ "number" ] ) ;
50- if ( duration && duration < 0 ) err ( `keyframes[${ index } ].duration is invalid "${ duration } ".` ) ;
51- typeCheck ( `keyframes[${ index } ].timingFunction` , timingFunction , [ "string" , "undefined" ] ) ;
52- if ( timingFunction && ! timingFunctions [ timingFunction ] )
53- err ( `"keyframes[${ index } ].timingFunction" is not recognized "${ timingFunction } ".` ) ;
54- typeCheck ( `keyframes[${ index } ].callback` , callback , [ "function" , "undefined" ] ) ;
55-
56- // blobOptions
57- typeCheck ( `keyframes[${ index } ].blobOptions` , keyframe . blobOptions , [ "object" ] ) ;
58- const { seed, extraPoints, randomness, size} = keyframe . blobOptions ;
59- typeCheck ( `keyframes[${ index } ].blobOptions.seed` , seed , [ "string" , "number" ] ) ;
60- typeCheck ( `keyframes[${ index } ].blobOptions.extraPoints` , extraPoints , [ "number" ] ) ;
61- if ( extraPoints < 0 )
62- err ( `keyframes[${ index } ].blobOptions.extraPoints is invalid "${ extraPoints } ".` ) ;
63- typeCheck ( `keyframes[${ index } ].blobOptions.randomness` , randomness , [ "number" ] ) ;
64- if ( randomness < 0 )
65- err ( `keyframes[${ index } ].blobOptions.randomness is invalid "${ randomness } ".` ) ;
66- typeCheck ( `keyframes[${ index } ].blobOptions.size` , size , [ "number" ] ) ;
67- if ( size < 0 ) err ( `keyframes[${ index } ].blobOptions.size is invalid "${ size } ".` ) ;
68-
69- // canvasOptions
70- typeCheck ( `keyframes[${ index } ].canvasOptions` , keyframe . canvasOptions , [ "object" , "undefined" ] ) ;
71- if ( keyframe . canvasOptions ) {
72- const { offsetX, offsetY} = keyframe . canvasOptions ;
73- typeCheck ( `keyframes[${ index } ].canvasOptions.offsetX` , offsetX , [ "number" , "undefined" ] ) ;
74- typeCheck ( `keyframes[${ index } ].canvasOptions.offsetY` , offsetY , [ "number" , "undefined" ] ) ;
42+ try {
43+ checkBlobOptions ( keyframe . blobOptions ) ;
44+ checkCanvasOptions ( keyframe . canvasOptions ) ;
45+ checkKeyframeOptions ( keyframe ) ;
46+ } catch ( e ) {
47+ throw `(blobs2): keyframe ${ index } : ${ e } ` ;
7548 }
7649} ;
7750
0 commit comments