handleStartDragging()

in modules/edit-modes/src/lib/extrude-mode.ts [59:103]


  handleStartDragging(event: StartDraggingEvent, props: ModeProps<FeatureCollection>) {
    const selectedFeatureIndexes = props.selectedIndexes;

    const editHandle = getPickedIntermediateEditHandle(event.picks);
    if (selectedFeatureIndexes.length && editHandle) {
      const { positionIndexes, featureIndex } = editHandle.properties;

      const size = this.coordinatesSize(positionIndexes, featureIndex, props.data);
      // p1 and p1 are end points for edge
      const p1 = this.getPointForPositionIndexes(
        this.prevPositionIndexes(positionIndexes, size),
        featureIndex,
        props.data
      );
      const p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);

      if (p1 && p2) {
        let updatedData = new ImmutableFeatureCollection(props.data);
        if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) {
          updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);
        }
        if (
          !this.isOrthogonal(
            this.prevPositionIndexes(positionIndexes, size),
            featureIndex,
            size,
            props.data
          )
        ) {
          updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);
          this.isPointAdded = true;
        }

        props.onEdit({
          updatedData: updatedData.getObject(),
          editType: 'startExtruding',
          editContext: {
            featureIndexes: [featureIndex],
            positionIndexes,
            position: p1,
          },
        });
      }
    }
  }