Skip to content

Latest commit

 

History

History
83 lines (71 loc) · 6.15 KB

components.md

File metadata and controls

83 lines (71 loc) · 6.15 KB

Важные компоненты

Canvas

Находится в файле app/src/containers/Canvas/Canvas.js. Отвечает за создание и разрушение iframe, в котором рендерится дерево компонентов, над которым работает пользователь. Это может быть дерево компонентов роура (основное или индексное) или дерево компонентов из BoobenValue с source, равным "designer". Также отвечает за инициализацию Apollo, проброс событий мыши и клавиатуры из iframe в верхнее окно и проброс событий drag'n'drop внутрь iframe. Является dropZone (см. HOC dropZone).

Внутрь iframe вставляется отрендеренный шаблон app/src/containers/Canvas/content/content.ejs, который содержит контейнеры для содержимого канвы и оверлея. В первый Canvas рендерит CanvasContent, во второй - Overlay. CanvasContent, в свою очередь, рендерит builder'ы, которые отображают текущее состояние редактируемого дерева компонентов. Overlay отвечает за отображение рамок и названий выделенных компонентов и остальной графики, выводимой поверх канвы. Внутри iframe не допускается использонание CSS и модификация глобальной области видимости (window), т.к. это может повлиять на работу или внешний вид компонентов.

Передача данных между компонентами в основном окне и компонентами внутри iframe осуществляется через общий redux store.

Builders

Находятся в каталоге app/src/containers/builders. Билдеры отвечают за рендер дерева компонентов. Всего их три:

  • CanvasBuilder - Рендерит дерево компонентов на канве
  • PlaceholderBuilder - Рендерит полупрозрачные превью компонентов при перетаскивании
  • PreviewBuilder - Рендерит дерево компонентов в превью приложения.

Preview

Находится в файле app/src/containers/Preview/Preview.js. Рендерит превью приложения без элементов интерфейса booben. Для превью есть отдельный entry point app/src/preview.js, который вставляет Preview непосредственно в шаблон. Preview использует для рендера деревьев компонентов билдер PreviewBuilder, котоый рендерит компоненты максимально близко к тому, как бы они выглядели и работали в собранном приложении, а также использует настоящий роутинг (react-router).

ComponentsDragArea

Находится в файле app/src/containers/ComponentsDragArea/ComponentsDragArea.js. Рисует голубой прямоугольник при перетаскивании компонента из библиотеки, с дерева или с канвы и отвечает за анимацию снэппинга этого прямоугольника к точкам вставки компонента и обратно к курсору. Также отвечает за показ и скрытие дроп-меню, если оно нужно.

Помимо ComponentsDragArea в этом файле экспортируются два HOC: connectDraggable и connectDropZone. Они нужны для подключения draggable и dropZone компонентов (т.е. компонентов, обёрнутых в соответствующие HOC). Примеры draggable - иконки компонентов на вкладке библиотеки, ноды в дереве компонентов и сми компоненты на канве. dropZone - Canvas и ComponentsTreeView.

ComponentsTreeView

Находится в файле app/src/containers/ComponentsTreeView/ComponentsTreeView.js. Рендерит дерево компонентов на правой вкладке. Является dropZone. Ноды дерева являются draggable.

ComponentsLibrary

Находится в файле app/src/containers/ComponentsLibrary/ComponentsLibrary.js. Рендерит библиотеку компонентов. Иконки компонентов являются draggable.

Desktop

Находится в файле app/src/containers/Desktop/Desktop.js. Рендерит каркас центральной области UI (MainRegion в терминах Reactackle): рабочую область и боковую панель. Боковая панель ресайзится, инструменты с нее можно отцепить, сделав таскаемым окном, и прицепить обратно.

Назад