Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/view/index.mjs 1.9 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
57
58
59
60
61
62
63
64
65
  import { noop } from 'motion-utils';
  import { addToQueue } from './queue.mjs';
  
  class ViewTransitionBuilder {
      constructor(update, options = {}) {
          this.currentSubject = "root";
          this.targets = new Map();
          this.notifyReady = noop;
          this.readyPromise = new Promise((resolve) => {
              this.notifyReady = resolve;
          });
          this.update = update;
          this.options = {
              interrupt: "wait",
              ...options,
          };
          addToQueue(this);
      }
      get(subject) {
          this.currentSubject = subject;
          return this;
      }
      layout(keyframes, options) {
          this.updateTarget("layout", keyframes, options);
          return this;
      }
      new(keyframes, options) {
          this.updateTarget("new", keyframes, options);
          return this;
      }
      old(keyframes, options) {
          this.updateTarget("old", keyframes, options);
          return this;
      }
      enter(keyframes, options) {
          this.updateTarget("enter", keyframes, options);
          return this;
      }
      exit(keyframes, options) {
          this.updateTarget("exit", keyframes, options);
          return this;
      }
      crossfade(options) {
          this.updateTarget("enter", { opacity: 1 }, options);
          this.updateTarget("exit", { opacity: 0 }, options);
          return this;
      }
      updateTarget(target, keyframes, options = {}) {
          const { currentSubject, targets } = this;
          if (!targets.has(currentSubject)) {
              targets.set(currentSubject, {});
          }
          const targetData = targets.get(currentSubject);
          targetData[target] = { keyframes, options };
      }
      then(resolve, reject) {
          return this.readyPromise.then(resolve, reject);
      }
  }
  function animateView(update, defaultOptions = {}) {
      return new ViewTransitionBuilder(update, defaultOptions);
  }
  
  export { ViewTransitionBuilder, animateView };
  //# sourceMappingURL=index.mjs.map