Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs 1.77 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  import { warning } from 'motion-utils';
  import { isGenerator } from '../generators/utils/is-generator.mjs';
  import { isAnimatable } from './is-animatable.mjs';
  
  function hasKeyframesChanged(keyframes) {
      const current = keyframes[0];
      if (keyframes.length === 1)
          return true;
      for (let i = 0; i < keyframes.length; i++) {
          if (keyframes[i] !== current)
              return true;
      }
  }
  function canAnimate(keyframes, name, type, velocity) {
      /**
       * Check if we're able to animate between the start and end keyframes,
       * and throw a warning if we're attempting to animate between one that's
       * animatable and another that isn't.
       */
      const originKeyframe = keyframes[0];
      if (originKeyframe === null) {
          return false;
      }
      /**
       * These aren't traditionally animatable but we do support them.
       * In future we could look into making this more generic or replacing
       * this function with mix() === mixImmediate
       */
      if (name === "display" || name === "visibility")
          return true;
      const targetKeyframe = keyframes[keyframes.length - 1];
      const isOriginAnimatable = isAnimatable(originKeyframe, name);
      const isTargetAnimatable = isAnimatable(targetKeyframe, name);
      warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from "${originKeyframe}" to "${targetKeyframe}". "${isOriginAnimatable ? targetKeyframe : originKeyframe}" is not an animatable value.`, "value-not-animatable");
      // Always skip if any of these are true
      if (!isOriginAnimatable || !isTargetAnimatable) {
          return false;
      }
      return (hasKeyframesChanged(keyframes) ||
          ((type === "spring" || isGenerator(type)) && velocity));
  }
  
  export { canAnimate };
  //# sourceMappingURL=can-animate.mjs.map