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


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

  if (hasPendingDrawing) {
    return;
  }

  const activeTool = this.activeTool$.value;

  if (activeTool !== 'crosshair' && this.endlessMode$.value) {
    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 (currentTool === 'crosshair') {
        return;
      }

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

      if (hasPendingAfterTick) {
        return;
      }

      this.createDrawing(currentTool);
    });

    return;
  }

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