@feugene/granularity-media

  • С компонентами
  • релизов: 24
  • v4.0.0

Релизы @feugene/granularity-media из его CHANGELOG: последние 8 целиком, более ранние — списком версий.

тег ядра v3.7.2

На этой странице

Записи релизов — авторский текст библиотеки, и он английский. Портал его не переводит: журнал изменений — история чужого репозитория, а переписанная история перестаёт быть историей.

v4.0.02026-10-28

Changed

  • Дорожка плеера, прицел сканера и направляющая кадра — решение темы. --gr-video-player-progress, --gr-code-scanner-reticle и --gr-image-crop-guide были хуками с запасным значением в коде, теперь это токены вида theme. Темы каталога несут их с @feugene/granularity-tokens 2.5.0 — «Сланец», «Тактильная» и «Чертёж» с прежним видом, «Глина» — слоновой костью на тёплом графите. Своей теме-копии нужны значения (granum doctor, theme-incomplete).
  • Направляющая прямоугольного кадра GrImageCrop — ровно рамка кадра: она держит соотношение кадра и затемняет то, что за ней, как круг. При нулевом отступе разница с окном — доля пикселя по одной оси: та полоса, которая и так не попадает в файл.
  • Peer @feugene/granularity-tokens — >=2.5.0 <3.0.0: темы со значениями медиа.

Added

  • Рамка GrImageCrop внутри окна — --gr-image-crop-inset: тема отодвигает рамку от края, за ней видна картинка под затемнением, кадр считается от рамки. «Сланец» — 0px, «Глина» — 1.5rem.
  • Прицел GrCodeScanner — рамка или уголки: --gr-code-scanner-reticle-corner (50% — сплошная рамка), -reticle-width, -reticle-radius. «Глина» — уголки слоновой костью.
  • Панель плеера: --gr-video-player-panel-bg и --gr-video-player-ring — подложка и кольцо фокуса поверх видео.

v3.0.02026-10-22

Мажор: значения у темы.

Changed

  • --gr-image-crop-mask — токен вида theme: затемнение вне круглого кадра GrImageCrop компонент читает без запасного значения, значение — в темах @feugene/granularity-tokens 2.2.0 (прежнее rgb(0 0 0 / 0.55)). Приложение по-прежнему переопределяет его своим CSS.
  • Требования: @feugene/granularity >=3.1.0, @feugene/granum >=3.10.0, @feugene/granularity-tokens >=2.2.0 — темы со значением маски.
  • Своей теме без extends нужно значение маски — granum doctor называет его поимённо (theme-incomplete).

v2.0.22026-10-21

Changed

  • Peer @feugene/granularity — >=2.0.0 <4.0.0: пакет работает и с ядром 3. Значения токенов компонентов ядра переехали в темы пакета токенов, роли и подпути ядра те же; doctor-конфиг пакета называет тему сборки явно — у каталога нет темы по умолчанию.

v2.0.12026-10-21

Fixed

  • Манифест объявляет хуки компонентов (tokens.hooks): на granum 3.7 doctor приложения не выдаёт token-fallback-only на точках кастомизации. Хуки берутся из tokens.json на сборке (withRegistryHookTokens тест-кита).

v2.0.02026-10-19

Changed

  • Peer @feugene/granum — >=3.0.0 <4.0.0, @feugene/granularity — >=2.0.0 <3.0.0. Ядро 2 — провайдер granum 3 (манифест формата 3, контракт версии 2) с темой из @feugene/granularity-tokens, и спутник объявляет те же мажоры: с ядром 1 на granum 2 он не соберётся.

v1.1.02026-10-16

Changed

  • Peer @feugene/granum — >=2.0.0 <3.0.0. Пакет собран granum 2.0: dist не импортирует granum — контракт встроен в dist/granum/contract.js, и SSR-сервер с внешними пакетами, задеплоенный с --omit=dev, больше не падает с ERR_MODULE_NOT_FOUND. Приложению — @feugene/granum и @feugene/granum-engine-wind ^2.0.0.
  • Компонент из корня пакета — ComponentRootImportError у приложения на granum 2.0. Компоненты берут из <пакет>/components/<Имя>.
  • Авто-импорт — один GranularityResolver() из @feugene/unplugin-granularity 1.1: он находит пакет в package.json приложения сам, порядок резолверов больше не важен. Собственный ./resolver остаётся для уже написанных конфигов.
  • Необязательный peer @feugene/fint-i18n — >=0.9.0 <1.0.0. Пакет тестируется на 0.9 вместе с ядром; на 0.7 и 0.8 он не проверялся.

v1.0.62026-10-13

Fixed

  • Пустая рамка GrImageCrop держит соотношение кадра. Без картинки рамка стояла на своей минимальной высоте (min-h-48, 192px), а aspect-ratio получала только вместе с ней: фото, пришедшее после монтирования, растягивало рамку до высоты кадра и сдвигало всё под ней. Теперь соотношение у рамки с самого начала, слот #empty стоит по её центру, а слишком высокое его содержимое обрезается, а не растягивает рамку. Это заметно меняет раскладку пустого кропа: при умолчательном aspectRatio = 1 в широкой колонке пустая рамка теперь квадрат во всю ширину, а не полоса в 192px, и size на её высоту больше не влияет — высоту задаёт только соотношение.
  • Кадр GrImageCrop — ровно в соотношении рамки. Область считалась от окна, измеренного в дробных CSS-пикселях внутри бордера, и расходилась с aspectRatio на долю пикселя: картинка 1600×1200 в рамке 4:3 без увеличения давала sh = 1199.4 со сдвигом sy = 0.6, а output: { width: 1200 } при 3 / 4 — JPEG 1200×1602. Теперь кадр считается от рамки, доведённой до точного соотношения, и привязан к пикселям исходника: такая картинка уходит в кадр целиком, а вторая сторона результата равна round(width / aspectRatio).

v1.0.52026-10-07

Fixed

  • GrVideoPlayer после гидрации знает длительность и сбой. Серверный HTML уже несёт <video> с src: браузер читает метаданные — или ломается — раньше, чем плеер вешает слушатели в onMounted, и loadedmetadata/error терялись. Плеер оставался без длительности, а битый источник — без слоя ошибки. Теперь после монтирования плеер сверяется с элементом: readyState и error помнят то, что события уже сказали.

Более ранние версии

Тела этих релизов не показываются: лента целиком весит больше, чем страница имеет право весить. Файл в репозитории всегда полон.

  • v1.0.42026-10-06
  • v1.0.32026-10-06
  • v1.0.22026-10-06
  • v1.0.12026-09-29
  • v1.0.02026-09-28
  • v0.7.12026-08-27
  • v0.7.02026-08-27
  • v0.6.12026-08-25
  • v0.6.02026-08-24
  • v0.5.02026-08-24
  • v0.4.02026-08-24
  • v0.3.02026-08-23
  • v0.2.22026-08-23
  • v0.2.12026-08-23
  • v0.2.02026-08-23
  • v0.1.02026-08-23

CHANGELOG пакета целиком