Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/effects/MotionValueState.mjs 1.38 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
  import { frame, cancelFrame } from '../frameloop/frame.mjs';
  import { numberValueTypes } from '../value/types/maps/number.mjs';
  import { getValueAsType } from '../value/types/utils/get-as-type.mjs';
  
  class MotionValueState {
      constructor() {
          this.latest = {};
          this.values = new Map();
      }
      set(name, value, render, computed, useDefaultValueType = true) {
          const existingValue = this.values.get(name);
          if (existingValue) {
              existingValue.onRemove();
          }
          const onChange = () => {
              const v = value.get();
              if (useDefaultValueType) {
                  this.latest[name] = getValueAsType(v, numberValueTypes[name]);
              }
              else {
                  this.latest[name] = v;
              }
              render && frame.render(render);
          };
          onChange();
          const cancelOnChange = value.on("change", onChange);
          computed && value.addDependent(computed);
          const remove = () => {
              cancelOnChange();
              render && cancelFrame(render);
              this.values.delete(name);
              computed && value.removeDependent(computed);
          };
          this.values.set(name, { value, onRemove: remove });
          return remove;
      }
      get(name) {
          return this.values.get(name)?.value;
      }
  }
  
  export { MotionValueState };
  //# sourceMappingURL=MotionValueState.mjs.map