itube-specs 0.0.974 → 0.0.975
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,
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import type { IModelImageUrls } from '../types';
|
|
2
|
+
|
|
1
3
|
export interface ITestModelPortrait {
|
|
2
4
|
primaryImageUrl: string;
|
|
5
|
+
primaryImageUrls?: IModelImageUrls;
|
|
3
6
|
thumbUrl: string;
|
|
4
7
|
primaryImageAvifUrl?: string;
|
|
5
8
|
primaryImageSmallUrl?: string;
|
|
@@ -21,8 +24,12 @@ const PORTRAIT_GUIDS = [
|
|
|
21
24
|
];
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
|
-
* Тестовые портреты
|
|
25
|
-
*
|
|
27
|
+
* Тестовые портреты моделей:
|
|
28
|
+
*
|
|
29
|
+
* - `?img=png` — исходники 1024×1536;
|
|
30
|
+
* - `?img=ladder` — карточка через srcset со ступенями 300/600/800, как учит учебник:
|
|
31
|
+
* на DPR1 браузер возьмёт 300, на DPR2 — 600, на DPR3 — 800;
|
|
32
|
+
* - без параметра — нарезка по `DOCS/MODEL-IMAGES.md`: один 800w, avif через `<picture>`.
|
|
26
33
|
*
|
|
27
34
|
* Две ширины, выбирает их КОМПОНЕНТ, а не браузер: srcset мы не ставим. 800w — портрет в
|
|
28
35
|
* карточку сетки, 300w — квадратный кроп по лицу в круглые аватары, мини-карточки и подсказки
|
|
@@ -41,12 +48,12 @@ const PORTRAIT_GUIDS = [
|
|
|
41
48
|
* по query. Для замера сети это и нужно: он честен только с чистого захода.
|
|
42
49
|
*/
|
|
43
50
|
export function useTestModelImages() {
|
|
44
|
-
const
|
|
51
|
+
const format = String(useRoute().query['img'] || '');
|
|
45
52
|
|
|
46
53
|
const portraits: ITestModelPortrait[] = PORTRAIT_GUIDS.map((guid) => {
|
|
47
54
|
const base = `/img/models/${guid}`;
|
|
48
55
|
|
|
49
|
-
if (
|
|
56
|
+
if (format === 'png') {
|
|
50
57
|
return { primaryImageUrl: `${base}.png`, thumbUrl: `${base}.png` };
|
|
51
58
|
}
|
|
52
59
|
|
|
@@ -56,6 +63,10 @@ export function useTestModelImages() {
|
|
|
56
63
|
primaryImageSmallUrl: `${base}-300.webp`,
|
|
57
64
|
primaryImageAvifUrl: `${base}-800.avif`,
|
|
58
65
|
primaryImageSmallAvifUrl: `${base}-300.avif`,
|
|
66
|
+
primaryImageUrls: format === 'ladder' ? {
|
|
67
|
+
avif: { 300: `${base}-p300.avif`, 600: `${base}-p600.avif`, 800: `${base}-800.avif` },
|
|
68
|
+
webp: { 300: `${base}-p300.webp`, 600: `${base}-p600.webp`, 800: `${base}-800.webp` },
|
|
69
|
+
} : undefined,
|
|
59
70
|
};
|
|
60
71
|
});
|
|
61
72
|
|
package/package.json
CHANGED