onDropTo method

Stream<GraphObject> onDropTo(
  1. Diagram toDiagram
)

Implementation

Stream<GraphObject> onDropTo(Diagram toDiagram) {
  final drops = _onDrops ??= {};
  final myDrops = drops[this] ??= {};

  if (myDrops[toDiagram] == null) {
    var _onDropped = allowInterop((DiagramEvent ev) {
      var iDropped = (ev.parameter as Diagram).selection.contains(this);

      if (iDropped) {
        myDrops[toDiagram]!.add(this);
      }
    });
    void start() {
      toDiagram.addDiagramListener('ExternalObjectsDropped', _onDropped);
    }

    void stop() {
      toDiagram.removeDiagramListener('ExternalObjectsDropped', _onDropped);
    }

    myDrops[toDiagram] = StreamController<GraphObject>.broadcast(
        onListen: start, onCancel: stop);
  }

  return myDrops[toDiagram]!.stream;
}