Загрузка данных


private updateActiveTool = (): void => {
  const hasPendingDrawing = this.drawings$.value.some((drawing) => drawing.isCreationPending());

  if (hasPendingDrawing) {
    return;
  }

  const activeTool = this.activeTool$.value;
  const isSingleInstanceTool = isDrawingTool(activeTool) && drawingsMap[activeTool]?.singleInstance;

  if (isDrawingTool(activeTool) && this.endlessMode$.value && !isSingleInstanceTool) {
    if (this.recreateScheduled) {
      return;
    }

    this.recreateScheduled = true;

    queueMicrotask(() => {
      this.recreateScheduled = false;

      const currentTool = this.activeTool$.value;
      const hasPendingAfterTick = this.drawings$.value.some((drawing) => drawing.isCreationPending());

      if (!isDrawingTool(currentTool)) {
        return;
      }

      if (!this.endlessMode$.value) {
        return;
      }

      if (drawingsMap[currentTool]?.singleInstance) {
        return;
      }

      if (hasPendingAfterTick) {
        return;
      }

      this.addDrawingForce(currentTool);
    });

    return;
  }

  this.activeTool$.next(CursorType.crosshair);
};