itube-specs 0.0.782 → 0.0.784

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,11 +37,20 @@ runtime-хелперы, типы и lib-данные. Приложения ра
37
37
 
38
38
  Правим слой прямо здесь (по `LAYER_PATH`), затем `npm run patch` + `npm run spec` в приложении.
39
39
 
40
- Чтобы видеть изменения без публикации **локальный оверрайд** в приложении: копируем компонент/composable
41
- в проект по **тому же относительному пути** (`components/<...>.vue` / `composables/<...>.ts`), `npx nuxi prepare`
42
- копия перекрывает слой на рантайме (приложение выше слоя по приоритету; при `pathPrefix` имя совпадает
43
- со слоевым). Правим копию, после — переносим в слой, `npm run patch` + `npm run spec`, копию удаляем.
44
- Импорты в копии чиним на пакетные (`itube-specs/runtime|types|lib|services|utils`).
40
+ Приоритет авто-импорта в приложении: `*-debug` > проектные `components/`/`composables/` > слой.
41
+
42
+ **Постоянная кастомизация:** приложение может завести файл с **тем же именем**, что сущность слоя
43
+ (напр. `<UiBtn>`), в своих `components/`/`composables/` победит проектный (он выше слоя). Так форк
44
+ меняет вёрстку/логику под себя **без переименования**. Осмысленно: если разницу решает пропс — делать
45
+ пропсом, а не форкать весь компонент.
46
+
47
+ **Отладка слоя:** копируем сущность слоя в `components-debug/` / `composables-debug/` приложения
48
+ (без сегмента `components/`/`composables/` слоевого пути), `npx nuxi prepare` — копия перекрывает слой
49
+ (отдельные авто-корни, наивысший приоритет). При необходимости оверрайд можно закоммитить и выкатить
50
+ в бой для отладки (папки не в git-ignore). Правим, переносим в слой (или скилл `debug-clean`),
51
+ `npm run patch` + `npm run spec`, копию удаляем. Импорты в копии — пакетные
52
+ (`itube-specs/runtime|types|lib|services|utils`). **Дисциплина: держать пусто, когда нет активной задачи** —
53
+ копия перекрывает слой только для одного проекта, правки должны уходить в слой и расходиться на все форки.
45
54
 
46
55
  Для мелких утилит/runtime можно и грубее — временный disk-импорт с диска
47
56
  (`import { test } from '../../../../specs/runtime/utils'`), только для локальной отладки, в коммит не идёт.
@@ -59,19 +59,21 @@ let advancing = false;
59
59
 
60
60
  function onAdvanceRequest(payload: AdvanceRequest): void {
61
61
  if (payload.direction === 'previous') return;
62
- // Автопереход по окончании только при включённом тумблере Autoplay.
63
- if (payload.direction === 'ended' && playerRef.value?.player && !playerRef.value.player.autoAdvance) return;
64
-
62
+ // Переключаемся всегда (грузим следующий ролик); автоплей решаем в onSourceChange.
65
63
  advancing = true;
66
64
  emit('advance', payload);
67
65
  }
68
66
 
69
- // player.load() сам не стартует воспроизведение. Доигрываем play() по sourcechange, но
70
- // только если свап следствие нашего перехода (иначе левый автоплей при смене превью).
67
+ // player.load() сам не стартует воспроизведение. По sourcechange после нашего перехода
68
+ // доигрываем play()но только при включённом тумблере Autoplay. Выключен следующий
69
+ // ролик (и по next, и по окончании) только загружается и ждёт play от пользователя.
71
70
  function onSourceChange(): void {
72
71
  if (!advancing) return;
73
72
  advancing = false;
74
- playerRef.value?.player?.play();
73
+
74
+ if (playerRef.value?.player?.autoAdvance) {
75
+ playerRef.value.player.play();
76
+ }
75
77
  }
76
78
 
77
79
  // Наша иконка play (public/img/play.svg) — для опции icons плеер ждёт сырой <svg>.
@@ -1,6 +1,9 @@
1
- /** Возвращает код текущей локали с учётом алиасов (zh → ch). */
1
+ /** Возвращает код текущей локали с учётом алиасов (zh → ch).
2
+ * Локаль берётся из глобального инстанса i18n (`useNuxtApp().$i18n`), а не из `useI18n()`,
3
+ * чтобы функцию можно было безопасно вызывать вне setup-контекста (watch/async-колбэки):
4
+ * `useI18n()` вне setup кидает MUST_BE_CALL_SETUP_TOP. */
2
5
  export const useLang = () => {
3
- const lang = useI18n().locale.value;
6
+ const lang = useNuxtApp().$i18n.locale.value;
4
7
  const anotherCode: Record<string, string> = {
5
8
  zh: 'ch',
6
9
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "itube-specs",
3
3
  "type": "module",
4
- "version": "0.0.782",
4
+ "version": "0.0.784",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "./types/index.d.ts",
7
7
  "scripts": {