# -*- coding: utf-8 -*-
# gui/components/model_view/_mv_grid_core.py
# Тонкая композиция: объединяет базовые методы сетки + помощники геометрии пола

from __future__ import annotations

from gui.components.model_view._mv_grid_core_base import GridCoreBaseMixin
from gui.components.model_view._mv_grid_core_floor import GridCoreFloorMixin


class GridCoreMixin(GridCoreBaseMixin, GridCoreFloorMixin):
    """Сетка на полу: создание, тема, геометрия пола, узлы сетки."""

    _FAST_PREVIEW_CUBE_LIMIT = 200
    _MAX_VOLUME_HEIGHT = 6000.0


# ---------------------------------------------------------------------------
# Module workflow notes
# ---------------------------------------------------------------------------
# 1) Задача модуля:
#    Композиционный фасад ядра сетки, объединяющий базовый и геометрический уровни.
#
# 2) Последовательность действий и вызовов:
#    A. Композиционный класс GridCoreMixin:
#       Назначение: объединяет поведение через GridCoreBaseMixin, GridCoreFloorMixin.
#       Собственная вычислительная логика отсутствует; маршрутизация идёт в родительские миксины.
#
# 3) Важные ограничения и инварианты:
#    - Модуль выполняется в составе ModelViewWidget и использует согласованные поля состояния self._... .
#    - Межмодульная связность: только через фасад model_view; прямые обращения между zone, rack, shelf, cell запрещены.
#    - Очистка состояния должна быть идемпотентной: повторный вызов не меняет корректное состояние в ошибочное.
#
# 4) Правило сопровождения:
#    - Любое изменение сценария должно сопровождаться обновлением этого блока с сохранением фактического порядка вызовов.
#    - При добавлении метода указывать его место в цепочке сценария (запуск, основной шаг, завершение, вспомогательная логика).
