--- title: Компоненты description: Создание переиспользуемых компонентов, экземпляров, наборов компонентов, переопределений и живой синхронизации в OpenPencil. --- # Компоненты Компоненты — это переиспользуемые элементы дизайна. Отредактируйте основной компонент, и все его экземпляры обновятся автоматически. ## Просмотр компонентов Откройте вкладку **Assets** на левой панели, чтобы просматривать локальные компоненты и подключённые библиотеки. Ищите по имени, переключайтесь между сеткой и списком и вставляйте компонент щелчком, клавишей Enter или перетаскиванием на холст. Загруженные ревизии остаются доступны без сети. ## Создание компонента Выделите фрейм или группу и нажмите ⌥⌘K (Ctrl + Alt + K). Выделение становится многоразовым компонентом. Если выделено несколько узлов, они оборачиваются в новый компонент, позиционированный по их ограничивающей рамке. Компоненты отображаются с фиолетовой меткой и значком ромба над ними. ## Наборы компонентов и варианты Выделите два или более компонента и нажмите ⇧⌘K (Shift + Ctrl + K), чтобы объединить их в набор компонентов — контейнер с пунктирной фиолетовой рамкой и отступом 40 px вокруг дочерних элементов. Варианты поддерживают несколько измерений, например `Размер=Маленький`, `Состояние=Hover` и `Тема=Тёмная`, и не требуют всех возможных комбинаций. Верхний левый вариант используется по умолчанию и как запасной, если после обновления точной комбинации больше нет. В панели свойств можно добавлять, переименовывать, переупорядочивать и удалять измерения и значения; повторяющиеся комбинации отклоняются. ## Свойства компонентов Компоненты поддерживают текстовые свойства, логическую видимость и замену экземпляра. Свяжите свойство с полем дочернего узла, а затем изменяйте его значение в экземпляре без отсоединения. Определения и назначения сохраняются в файлах `.fig`. ## Библиотеки компонентов Библиотека публикует компоненты как неизменяемую ревизию. Откройте **Assets → Управление библиотеками → Опубликовать библиотеку**, при первой публикации задайте стабильный ID и имя, выберите изменения и опубликуйте. Неотмеченные изменения останутся ожидающими. Подключите библиотеку в разделе **Управление библиотеками**. Её ресурсы появятся рядом с локальными компонентами. Опубликованные определения доступны только для чтения в документе-потребителе, а связанные экземпляры и переопределения остаются редактируемыми. В разделе **Обновления** сравните текущий и новый экземпляры рядом. Можно обновить один экземпляр, все экземпляры одного ресурса, текущую страницу или все страницы. Совместимые свойства сохраняются, а при отсутствии точного варианта запасной вариант показывается до подтверждения. Обновления поддерживают отмену и повтор. Библиотеки могут использовать локальный каталог или настроенного поставщика хранилища. Загруженные ревизии кэшируются. Подключения библиотек и материализованные определения сохраняются в `.fig`, поэтому документ можно открыть без доступа к удалённой библиотеке. ## Создание экземпляров Кликните правой кнопкой мыши по компоненту и выберите **Создать экземпляр** в контекстном меню. Экземпляр появляется на 40 px правее исходного компонента, визуально идентичный ему. Создание экземпляров доступно только через контекстное меню — кнопки на панели инструментов нет. ## Отсоединение экземпляра Выделите экземпляр и нажмите ⌥⌘B (Ctrl + Alt + B), чтобы отсоединить его. Экземпляр становится обычным фреймом без связи с оригинальным компонентом. Все переопределения сохраняются. ## Перейти к основному компоненту Кликните правой кнопкой мыши по экземпляру и выберите **Перейти к основному компоненту**. Редактор переходит к основному компоненту и выделяет его, при необходимости переключая страницу. ## Живая синхронизация При редактировании компонента все его экземпляры обновляются автоматически. Синхронизируемые свойства включают: - Ширину и высоту - Заливки, обводки и эффекты - Прозрачность и скругление углов - Свойства раскладки (настройки авто-раскладки) - Настройку обрезки содержимого Синхронизация срабатывает автоматически после обновлений узлов, перемещений и изменений размеров внутри компонента. ## Переопределения Экземпляры могут переопределять отдельные свойства без разрыва связи синхронизации. Когда свойство переопределено на экземпляре, оно пропускается при синхронизации — остальные свойства продолжают обновляться из основного компонента. ### Переопределяемые свойства Переопределения на уровне дочерних элементов поддерживают: имя, текст, размер шрифта, насыщенность шрифта, семейство шрифта, а также все визуальные свойства и свойства раскладки (заливки, обводки, эффекты, прозрачность, скругление углов, размеры). ### Новые дочерние элементы Когда вы добавляете дочерний элемент в компонент, все существующие экземпляры автоматически получают клонированную копию. Порядок дочерних элементов в экземплярах всегда соответствует компоненту. ## Попадание в объект Компоненты и экземпляры являются непрозрачными контейнерами — клик по дочернему элементу выделяет сам компонент, а не дочерний элемент. **Дважды кликните**, чтобы войти в компонент и выделить элементы внутри него. ## Визуальное оформление | Элемент | Внешний вид | |---------|-------------| | Метка компонента | Фиолетовая с значком ромба, всегда видна | | Метка экземпляра | Фиолетовая с значком ромба, всегда видна | | Рамка набора компонентов | Пунктирная фиолетовая рамка | ## Сочетания клавиш | Действие | Mac | Windows / Linux | |----------|-----|-----------------| | Создать компонент | ⌥⌘K | Ctrl + Alt + K | | Создать набор компонентов | ⇧⌘K | Shift + Ctrl + K | | Отсоединить экземпляр | ⌥⌘B | Ctrl + Alt + B | ## Советы - Редактирование текста внутри экземпляра создаёт переопределение — текст не будет перезаписан при изменении компонента. - Используйте наборы компонентов для организации вариантов (например, состояния кнопки Primary/Secondary/Disabled). - Дважды кликните внутрь компонента перед редактированием его дочерних элементов — одиночный клик выделяет контейнер компонента. - См. [Контекстное меню](./context-menu) для всех действий, связанных с компонентами.