Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/render/utils/motion-values.mjs 2.08 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
45
46
47
48
49
50
51
52
53
54
55
56
  import { motionValue } from '../../value/index.mjs';
  import { isMotionValue } from '../../value/utils/is-motion-value.mjs';
  
  /**
   * Updates motion values from props changes.
   * Uses `any` type for element to avoid circular dependencies with VisualElement.
   */
  function updateMotionValuesFromProps(element, next, prev) {
      for (const key in next) {
          const nextValue = next[key];
          const prevValue = prev[key];
          if (isMotionValue(nextValue)) {
              /**
               * If this is a motion value found in props or style, we want to add it
               * to our visual element's motion value map.
               */
              element.addValue(key, nextValue);
          }
          else if (isMotionValue(prevValue)) {
              /**
               * If we're swapping from a motion value to a static value,
               * create a new motion value from that
               */
              element.addValue(key, motionValue(nextValue, { owner: element }));
          }
          else if (prevValue !== nextValue) {
              /**
               * If this is a flat value that has changed, update the motion value
               * or create one if it doesn't exist. We only want to do this if we're
               * not handling the value with our animation state.
               */
              if (element.hasValue(key)) {
                  const existingValue = element.getValue(key);
                  if (existingValue.liveStyle === true) {
                      existingValue.jump(nextValue);
                  }
                  else if (!existingValue.hasAnimated) {
                      existingValue.set(nextValue);
                  }
              }
              else {
                  const latestValue = element.getStaticValue(key);
                  element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));
              }
          }
      }
      // Handle removed values
      for (const key in prev) {
          if (next[key] === undefined)
              element.removeValue(key);
      }
      return next;
  }
  
  export { updateMotionValuesFromProps };
  //# sourceMappingURL=motion-values.mjs.map