Blame view

天文台pc/tianwentai-ui/node_modules/react-dnd/dist/internals/TargetConnector.js 2.94 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  import { shallowEqual } from '@react-dnd/shallowequal';
  import { isRef } from './isRef.js';
  import { wrapConnectorHooks } from './wrapConnectorHooks.js';
  export class TargetConnector {
      get connectTarget() {
          return this.dropTarget;
      }
      reconnect() {
          // if nothing has changed then don't resubscribe
          const didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();
          if (didChange) {
              this.disconnectDropTarget();
          }
          const dropTarget = this.dropTarget;
          if (!this.handlerId) {
              return;
          }
          if (!dropTarget) {
              this.lastConnectedDropTarget = dropTarget;
              return;
          }
          if (didChange) {
              this.lastConnectedHandlerId = this.handlerId;
              this.lastConnectedDropTarget = dropTarget;
              this.lastConnectedDropTargetOptions = this.dropTargetOptions;
              this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);
          }
      }
      receiveHandlerId(newHandlerId) {
          if (newHandlerId === this.handlerId) {
              return;
          }
          this.handlerId = newHandlerId;
          this.reconnect();
      }
      get dropTargetOptions() {
          return this.dropTargetOptionsInternal;
      }
      set dropTargetOptions(options) {
          this.dropTargetOptionsInternal = options;
      }
      didHandlerIdChange() {
          return this.lastConnectedHandlerId !== this.handlerId;
      }
      didDropTargetChange() {
          return this.lastConnectedDropTarget !== this.dropTarget;
      }
      didOptionsChange() {
          return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);
      }
      disconnectDropTarget() {
          if (this.unsubscribeDropTarget) {
              this.unsubscribeDropTarget();
              this.unsubscribeDropTarget = undefined;
          }
      }
      get dropTarget() {
          return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;
      }
      clearDropTarget() {
          this.dropTargetRef = null;
          this.dropTargetNode = null;
      }
      constructor(backend){
          this.hooks = wrapConnectorHooks({
              dropTarget: (node, options)=>{
                  this.clearDropTarget();
                  this.dropTargetOptions = options;
                  if (isRef(node)) {
                      this.dropTargetRef = node;
                  } else {
                      this.dropTargetNode = node;
                  }
                  this.reconnect();
              }
          });
          this.handlerId = null;
          // The drop target may either be attached via ref or connect function
          this.dropTargetRef = null;
          this.dropTargetOptionsInternal = null;
          this.lastConnectedHandlerId = null;
          this.lastConnectedDropTarget = null;
          this.lastConnectedDropTargetOptions = null;
          this.backend = backend;
      }
  }
  
  //# sourceMappingURL=TargetConnector.js.map