itube-specs 0.0.974 → 0.0.976
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/components/ui/img.vue
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
`card/playlist.vue` и `playlist-mini.vue` целятся в свои UiImg через `:first-child`/`:nth-child(2)`
|
|
4
4
|
— внутри `<picture>` каждая из них стала бы первым ребёнком, и раскладка поехала бы. -->
|
|
5
5
|
<picture
|
|
6
|
-
v-if="
|
|
6
|
+
v-if="avifSrcset"
|
|
7
7
|
class="ui-img"
|
|
8
8
|
>
|
|
9
9
|
<source
|
|
10
|
-
:srcset="
|
|
10
|
+
:srcset="avifSrcset"
|
|
11
|
+
:sizes="computedSizes"
|
|
11
12
|
type="image/avif"
|
|
12
13
|
>
|
|
13
14
|
<img
|
|
@@ -73,6 +74,9 @@ const imgSrc = computed(() => {
|
|
|
73
74
|
|
|
74
75
|
const computedSrcset = computed(() => buildSrcset(props.imageUrls?.webp) || buildSrcset(props.urls?.webp));
|
|
75
76
|
|
|
77
|
+
/** Ладдер старше одиночного `avifSrc`: нужен, когда ступени есть и в avif-ветке. */
|
|
78
|
+
const avifSrcset = computed(() => buildSrcset(props.imageUrls?.avif) || props.avifSrc);
|
|
79
|
+
|
|
76
80
|
const imgAttrs = computed(() => ({
|
|
77
81
|
...attrs,
|
|
78
82
|
src: imgSrc.value,
|
|
@@ -6,7 +6,7 @@ export interface ITestModelPortrait {
|
|
|
6
6
|
primaryImageSmallAvifUrl?: string;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
/** Модели из тестовой поставки нарезчика: `public/img/models/<guid>{,-
|
|
9
|
+
/** Модели из тестовой поставки нарезчика: `public/img/models/<guid>{,-640,-300}.{png,webp,avif}`. */
|
|
10
10
|
const PORTRAIT_GUIDS = [
|
|
11
11
|
'00003fff-0aa5-4e65-9356-7e01358408fe',
|
|
12
12
|
'0000cca2-8ec5-4c12-950f-4460920805b9',
|
|
@@ -21,41 +21,44 @@ const PORTRAIT_GUIDS = [
|
|
|
21
21
|
];
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* Тестовые портреты
|
|
25
|
-
* параметра — нарезку по `DOCS/MODEL-IMAGES.md`: avif через `<picture>`, фолбэк webp.
|
|
24
|
+
* Тестовые портреты моделей:
|
|
26
25
|
*
|
|
27
|
-
*
|
|
26
|
+
* - `?img=png` — исходники 1024×1536;
|
|
27
|
+
* - `?img=webp` — без avif-ветки, чтобы померить вес и качество одного webp;
|
|
28
|
+
* - без параметра — нарезка по `DOCS/MODEL-IMAGES.md`: один 640w, avif через `<picture>`.
|
|
29
|
+
*
|
|
30
|
+
* Две ширины, выбирает их КОМПОНЕНТ, а не браузер: srcset мы не ставим. 640w — портрет в
|
|
28
31
|
* карточку сетки, 300w — квадратный кроп по лицу в круглые аватары, мини-карточки и подсказки
|
|
29
32
|
* поиска.
|
|
30
33
|
*
|
|
31
34
|
* Ступеней через srcset НЕ делаем. Ступень мельче слота заведомо хуже полного файла: её портит
|
|
32
35
|
* двойной пересчёт (ресайз нарезчика плюс браузерный), а её артефакты показываются почти 1:1,
|
|
33
|
-
* тогда как
|
|
36
|
+
* тогда как 640w в слоте карточки ужимается в 2.5 раза и они размазываются. Проверено на
|
|
34
37
|
* DPR1-мониторе: ладдер мылит, один файл нет.
|
|
35
38
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
+
* Пробовали поднять ширину до 800 и 1024 при том же весе: на DPR1-мониторе рядом с исходником
|
|
40
|
+
* они чуть чище. Но без эталона под рукой разницу не поймать, а у пользователя эталона нет —
|
|
41
|
+
* остались на 640.
|
|
39
42
|
*
|
|
40
43
|
* Читается один раз на монтировании, поэтому переключение — перезагрузкой, а не навигацией
|
|
41
44
|
* по query. Для замера сети это и нужно: он честен только с чистого захода.
|
|
42
45
|
*/
|
|
43
46
|
export function useTestModelImages() {
|
|
44
|
-
const
|
|
47
|
+
const format = String(useRoute().query['img'] || '');
|
|
45
48
|
|
|
46
49
|
const portraits: ITestModelPortrait[] = PORTRAIT_GUIDS.map((guid) => {
|
|
47
50
|
const base = `/img/models/${guid}`;
|
|
48
51
|
|
|
49
|
-
if (
|
|
52
|
+
if (format === 'png') {
|
|
50
53
|
return { primaryImageUrl: `${base}.png`, thumbUrl: `${base}.png` };
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
return {
|
|
54
|
-
primaryImageUrl: `${base}-
|
|
57
|
+
primaryImageUrl: `${base}-640.webp`,
|
|
55
58
|
thumbUrl: `${base}-300.webp`,
|
|
56
59
|
primaryImageSmallUrl: `${base}-300.webp`,
|
|
57
|
-
primaryImageAvifUrl: `${base}-
|
|
58
|
-
primaryImageSmallAvifUrl: `${base}-300.avif`,
|
|
60
|
+
primaryImageAvifUrl: format === 'webp' ? undefined : `${base}-640.avif`,
|
|
61
|
+
primaryImageSmallAvifUrl: format === 'webp' ? undefined : `${base}-300.avif`,
|
|
59
62
|
};
|
|
60
63
|
});
|
|
61
64
|
|
package/package.json
CHANGED