fix: резервные форматы примеров и stage snapshot (#16)
deploy-preland / deploy zoomstage.online (push) Successful in 42s
No files matched your search
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
@@ -2,6 +2,8 @@
|
||||
/** Общая inline-логика Index/Preland: синхронная копия в обоих репозиториях. */
|
||||
return <<<'JS'
|
||||
window.ZoomzillaExamples = {
|
||||
// Маленькие dataURI (AVIF 16×16, WebP 1×1) проверяют декодер один раз, без сетевой пробы каждого файла.
|
||||
codecSupport: new Map(),
|
||||
attach(mount) {
|
||||
const root = document.getElementById('examples');
|
||||
if (!root) return;
|
||||
@@ -67,20 +69,47 @@ window.ZoomzillaExamples = {
|
||||
return promise;
|
||||
}
|
||||
|
||||
const codecProbes = {"avif":"AAAAHGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZgAAAOptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABwaWN0AAAAAAAAAAAAAAAAAAAAAA5waXRtAAAAAAABAAAAImlsb2MAAAAAREAAAQABAAAAAAEOAAEAAAAAAAAAHgAAACNpaW5mAAAAAAABAAAAFWluZmUCAAAAAAEAAGF2MDEAAAAAamlwcnAAAABLaXBjbwAAABNjb2xybmNseAACAAIABoAAAAAMYXYxQ4EADAAAAAAUaXNwZQAAAAAAAAAQAAAAEAAAABBwaXhpAAAAAAMICAgAAAAXaXBtYQAAAAAAAAABAAEEgYIDhAAAACZtZGF0EgAKBhgM/9oQgDISF/AAAEgAAACpjltftKtLwWis","webp":"UklGRjwAAABXRUJQVlA4IDAAAADQAQCdASoBAAEAAgA0JaACdLoB+AADsAD+8MQL/yC5YXXI1/8gP+QH/ID/+PIAAAA="};
|
||||
function supportsCodec(url) {
|
||||
const match = /\.(avif|webp)(?:[?#]|$)/i.exec(url);
|
||||
const format = match ? match[1].toLowerCase() : null;
|
||||
if (!format) return Promise.resolve(true);
|
||||
const cache = window.ZoomzillaExamples.codecSupport;
|
||||
if (!cache.has(format)) cache.set(format, new Promise(resolve => {
|
||||
const image = new Image();
|
||||
const timer = window.setTimeout(() => finish(false), 1000);
|
||||
let finished = false;
|
||||
function finish(supported) {
|
||||
if (finished) return;
|
||||
finished = true;
|
||||
window.clearTimeout(timer);
|
||||
image.onload = image.onerror = null;
|
||||
resolve(supported);
|
||||
}
|
||||
image.onerror = () => finish(false);
|
||||
image.onload = async () => {
|
||||
try {
|
||||
if (image.decode) await image.decode();
|
||||
finish(image.naturalWidth === (format === 'avif' ? 16 : 1));
|
||||
} catch (_) { finish(false); }
|
||||
};
|
||||
image.src = 'data:image/' + format + ';base64,' + codecProbes[format];
|
||||
}));
|
||||
return cache.get(format);
|
||||
}
|
||||
async function loadCandidates(item, role, variant, priority) {
|
||||
const suffix = variant === 'mob' ? 'Mob' : '';
|
||||
const candidates = [item.dataset[role + suffix]];
|
||||
if (role === 'thumb') {
|
||||
for (const format of ['Webp', 'Jpg']) {
|
||||
const fallback = item.dataset['thumb' + suffix + format];
|
||||
if (fallback) candidates.push(fallback);
|
||||
}
|
||||
for (const format of ['Webp', 'Jpg']) {
|
||||
const fallback = item.dataset[role + suffix + format];
|
||||
if (fallback && !candidates.includes(fallback)) candidates.push(fallback);
|
||||
}
|
||||
let failure;
|
||||
for (const url of candidates) {
|
||||
if (!await supportsCodec(url)) continue;
|
||||
try { return await loadImage(url, priority); } catch (error) { failure = error; }
|
||||
}
|
||||
throw failure;
|
||||
throw failure || new Error('example_codec_unavailable');
|
||||
}
|
||||
|
||||
async function preparePair(item, variant, priority = 'low') {
|
||||
@@ -112,6 +141,35 @@ window.ZoomzillaExamples = {
|
||||
}
|
||||
}
|
||||
|
||||
// inert — улучшение. Скрытая/переключаемая область блокируется и в старых движках.
|
||||
const savedTabIndexes = new Map();
|
||||
function lockVisual(value) {
|
||||
visual.style.visibility = value ? 'hidden' : 'visible';
|
||||
visual.style.pointerEvents = value ? 'none' : '';
|
||||
if (value) visual.setAttribute('inert', '');
|
||||
else visual.removeAttribute('inert');
|
||||
if (value) {
|
||||
visual.setAttribute('aria-hidden', 'true');
|
||||
for (const node of visual.querySelectorAll('a,button,input,select,textarea,[tabindex]')) {
|
||||
if (!savedTabIndexes.has(node)) savedTabIndexes.set(node, node.getAttribute('tabindex'));
|
||||
node.tabIndex = -1;
|
||||
}
|
||||
if (visual.contains(document.activeElement)) document.activeElement.blur();
|
||||
} else {
|
||||
visual.removeAttribute('aria-hidden');
|
||||
for (const [node, index] of savedTabIndexes) {
|
||||
if (index === null) node.removeAttribute('tabindex');
|
||||
else node.setAttribute('tabindex', index);
|
||||
}
|
||||
savedTabIndexes.clear();
|
||||
}
|
||||
}
|
||||
for (const name of ['click', 'mousedown', 'touchstart', 'pointerdown', 'keydown', 'keyup']) {
|
||||
visual.addEventListener(name, event => {
|
||||
if (locked) { event.preventDefault(); event.stopImmediatePropagation(); }
|
||||
}, true);
|
||||
}
|
||||
|
||||
function commitPair(number, pair) {
|
||||
// Обе декодированные DOM-картинки заменяются в одном JS-такте, без промежуточного paint.
|
||||
replaceImage(element.querySelector('#image-compare-source'), pair[0]);
|
||||
@@ -168,6 +226,8 @@ window.ZoomzillaExamples = {
|
||||
root.dataset.examplesState = 'loading';
|
||||
root.setAttribute('aria-busy', 'true');
|
||||
retry.hidden = true;
|
||||
retry.disabled = true;
|
||||
lockVisual(true);
|
||||
refreshItems();
|
||||
try {
|
||||
const item = items.find(item => itemNumber(item) === active);
|
||||
@@ -183,9 +243,7 @@ window.ZoomzillaExamples = {
|
||||
items.forEach((item, index) => replaceImage(item.querySelector('.image-examples-image img'), thumbs[index]));
|
||||
commitPair(active, pair);
|
||||
locked = false;
|
||||
visual.style.visibility = 'visible';
|
||||
visual.inert = false;
|
||||
visual.removeAttribute('aria-hidden');
|
||||
lockVisual(false);
|
||||
root.dataset.examplesState = 'ready';
|
||||
root.setAttribute('aria-busy', 'false');
|
||||
refreshItems();
|
||||
@@ -211,6 +269,7 @@ window.ZoomzillaExamples = {
|
||||
root.dataset.examplesState = 'error';
|
||||
root.setAttribute('aria-busy', 'false');
|
||||
retry.hidden = false;
|
||||
retry.disabled = false;
|
||||
}
|
||||
}
|
||||
retry.addEventListener('click', run);
|
||||
@@ -218,7 +277,8 @@ window.ZoomzillaExamples = {
|
||||
if (root.dataset.examplesState === 'error') run();
|
||||
else { attemptedAt.clear(); items.forEach(retryFailed); }
|
||||
});
|
||||
media.addEventListener('change', run);
|
||||
if (media.addEventListener) media.addEventListener('change', run);
|
||||
else media.addListener(run);
|
||||
refreshItems();
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run, {once: true});
|
||||
else run();
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
$demoBasePath = rtrim($assetsUriPrefix, '/') . "/{$indpic}";
|
||||
$demoLocalPath = __DIR__ . "/../{$indpic}";
|
||||
$getAssetUrl = function (int $number, string $device, string $role) use ($demoBasePath, $demoLocalPath): string {
|
||||
$relativePath = sprintf('%02d', $number) . "_{$device}_{$role}.avif";
|
||||
$getAssetUrl = function (int $number, string $device, string $role, string $extension = 'avif') use ($demoBasePath, $demoLocalPath): string {
|
||||
$relativePath = sprintf('%02d', $number) . "_{$device}_{$role}.{$extension}";
|
||||
$fullPath = $demoLocalPath . '/' . $relativePath;
|
||||
$version = file_exists($fullPath) ? filemtime($fullPath) : '1';
|
||||
return $demoBasePath . '/' . $relativePath . '?v=' . $version;
|
||||
@@ -21,9 +21,10 @@ $labelAfter = Yii::t('app', 'После');
|
||||
<div class="image-examples-list">
|
||||
<?php for ($i=1; $i<=5; $i++): ?>
|
||||
<div class="image-examples-item <?= $i===1 ? 'active' : '' ?>" data-example="<?= $i ?>" data-index="<?= $i ?>"
|
||||
data-source="<?= $getAssetUrl($i, 'desk', '1-source') ?>" data-result="<?= $getAssetUrl($i, 'desk', '2-result') ?>"
|
||||
data-source-mob="<?= $getAssetUrl($i, 'mob', '1-source') ?>" data-result-mob="<?= $getAssetUrl($i, 'mob', '2-result') ?>"
|
||||
data-thumb="<?= $getAssetUrl($i, 'desk', '3-thumb') ?>" data-thumb-mob="<?= $getAssetUrl($i, 'mob', '3-thumb') ?>" aria-disabled="true" tabindex="-1">
|
||||
data-source="<?= $getAssetUrl($i, 'desk', '1-source') ?>" data-source-webp="<?= $getAssetUrl($i, 'desk', '1-source', 'webp') ?>" data-source-jpg="<?= $getAssetUrl($i, 'desk', '1-source', 'jpg') ?>" data-result="<?= $getAssetUrl($i, 'desk', '2-result') ?>" data-result-webp="<?= $getAssetUrl($i, 'desk', '2-result', 'webp') ?>" data-result-jpg="<?= $getAssetUrl($i, 'desk', '2-result', 'jpg') ?>"
|
||||
data-source-mob="<?= $getAssetUrl($i, 'mob', '1-source') ?>" data-source-mob-webp="<?= $getAssetUrl($i, 'mob', '1-source', 'webp') ?>" data-source-mob-jpg="<?= $getAssetUrl($i, 'mob', '1-source', 'jpg') ?>" data-result-mob="<?= $getAssetUrl($i, 'mob', '2-result') ?>" data-result-mob-webp="<?= $getAssetUrl($i, 'mob', '2-result', 'webp') ?>" data-result-mob-jpg="<?= $getAssetUrl($i, 'mob', '2-result', 'jpg') ?>"
|
||||
data-thumb="<?= $getAssetUrl($i, 'desk', '3-thumb', 'avif') ?>" data-thumb-webp="<?= $getAssetUrl($i, 'desk', '3-thumb', 'webp') ?>" data-thumb-jpg="<?= $getAssetUrl($i, 'desk', '3-thumb', 'jpg') ?>"
|
||||
data-thumb-mob="<?= $getAssetUrl($i, 'mob', '3-thumb', 'avif') ?>" data-thumb-mob-webp="<?= $getAssetUrl($i, 'mob', '3-thumb', 'webp') ?>" data-thumb-mob-jpg="<?= $getAssetUrl($i, 'mob', '3-thumb', 'jpg') ?>" aria-disabled="true" tabindex="-1">
|
||||
<div class="image-examples-image"><picture><img width="100" height="100" alt="Example <?= $i ?>"></picture></div>
|
||||
</div>
|
||||
<?php endfor; ?>
|
||||
|
||||
@@ -403,14 +403,38 @@
|
||||
"sha256": "90225b3b0f89187519d10e2bc407cda247e7910efe72c6b3df0d64cecd12385d",
|
||||
"source": "https://zoomstage.online/2/01_mob_1-source.avif"
|
||||
},
|
||||
"2/01_mob_1-source.jpg": {
|
||||
"sha256": "fb4fbc67b3838c402fcadb5ce22ec0cbc4d8f89d3901f3f365590e49553287ae",
|
||||
"source": "https://zoomstage.online/2/01_mob_1-source.jpg"
|
||||
},
|
||||
"2/01_mob_1-source.webp": {
|
||||
"sha256": "98bf7f4c6ffb7e1bd16802f68ced0728d4c6d71ea982cab5f21b1501e3673ca3",
|
||||
"source": "https://zoomstage.online/2/01_mob_1-source.webp"
|
||||
},
|
||||
"2/01_mob_2-result.avif": {
|
||||
"sha256": "e23bdac9af1daf3f4c62464f7de42399741d46e00fe627726f06f9e8f54c463a",
|
||||
"source": "https://zoomstage.online/2/01_mob_2-result.avif"
|
||||
},
|
||||
"2/01_mob_2-result.jpg": {
|
||||
"sha256": "537a51311e74521ee1386103e59005bed2a8025f8d986253884bb8b15739e1f3",
|
||||
"source": "https://zoomstage.online/2/01_mob_2-result.jpg"
|
||||
},
|
||||
"2/01_mob_2-result.webp": {
|
||||
"sha256": "38d16c07bbf2ecd4b430c9d19b57ab518467bcc39f81986a7aeb21b1c11aa157",
|
||||
"source": "https://zoomstage.online/2/01_mob_2-result.webp"
|
||||
},
|
||||
"2/01_mob_3-thumb.avif": {
|
||||
"sha256": "8bd19f88579f4e70af7909e9c9989cde0d95e4b320381f433566bf389ba80177",
|
||||
"source": "https://zoomstage.online/2/01_mob_3-thumb.avif"
|
||||
},
|
||||
"2/01_mob_3-thumb.jpg": {
|
||||
"sha256": "4c6d6858289727872c0aa73c9f2dd44197d3bb46efe0c8a4619f2974e97175e1",
|
||||
"source": "https://zoomstage.online/2/01_mob_3-thumb.jpg"
|
||||
},
|
||||
"2/01_mob_3-thumb.webp": {
|
||||
"sha256": "d1a0ba2c7e7595a244fd8cbaa167956336855657e2b65f3e65f225e2442cc27b",
|
||||
"source": "https://zoomstage.online/2/01_mob_3-thumb.webp"
|
||||
},
|
||||
"2/02_desk_1-source.avif": {
|
||||
"sha256": "114dfdf3d6b4157ccf2c70c0658a4ce63c0c4416fe7512fb228722ebad88352c",
|
||||
"source": "https://zoomstage.online/2/02_desk_1-source.avif"
|
||||
@@ -451,14 +475,38 @@
|
||||
"sha256": "15c457ddc50eeee2df0bfac945de31b0c77631a135168f417ec5fbac4c07767f",
|
||||
"source": "https://zoomstage.online/2/02_mob_1-source.avif"
|
||||
},
|
||||
"2/02_mob_1-source.jpg": {
|
||||
"sha256": "b03a29d34c3f88b59097c7747b5791c478bbd5dd3e0ba645e82ff3d6a1be8446",
|
||||
"source": "https://zoomstage.online/2/02_mob_1-source.jpg"
|
||||
},
|
||||
"2/02_mob_1-source.webp": {
|
||||
"sha256": "e044e15e5d7857c0cf70981427b7c8082427093fd27ef39ff5f912e892c6fe3c",
|
||||
"source": "https://zoomstage.online/2/02_mob_1-source.webp"
|
||||
},
|
||||
"2/02_mob_2-result.avif": {
|
||||
"sha256": "8f75bdcdc8f1406c20a2664df31ae0aec2a6ae14638469028d8d83ae70cd4adc",
|
||||
"source": "https://zoomstage.online/2/02_mob_2-result.avif"
|
||||
},
|
||||
"2/02_mob_2-result.jpg": {
|
||||
"sha256": "9ddc102433c7a064c660b0a0c852fad47a399605c4d5c730b830139215cb7705",
|
||||
"source": "https://zoomstage.online/2/02_mob_2-result.jpg"
|
||||
},
|
||||
"2/02_mob_2-result.webp": {
|
||||
"sha256": "37043364124819bc6eb4760ca0e299aab2aa8aa36e291482d6f0a3725816e3c0",
|
||||
"source": "https://zoomstage.online/2/02_mob_2-result.webp"
|
||||
},
|
||||
"2/02_mob_3-thumb.avif": {
|
||||
"sha256": "e7ee1b0e7886289c125c8c46726c287fd0abdc8cdf469a0636b8b28079729d04",
|
||||
"source": "https://zoomstage.online/2/02_mob_3-thumb.avif"
|
||||
},
|
||||
"2/02_mob_3-thumb.jpg": {
|
||||
"sha256": "e8ba5aa406468f0f0be1f985a844aa33ed25b078c2c6ace95c640d5a158e2af2",
|
||||
"source": "https://zoomstage.online/2/02_mob_3-thumb.jpg"
|
||||
},
|
||||
"2/02_mob_3-thumb.webp": {
|
||||
"sha256": "37d2f43762cc15ce84fff68a50f688dd79e8c124797d58b819d83f8fe92580ee",
|
||||
"source": "https://zoomstage.online/2/02_mob_3-thumb.webp"
|
||||
},
|
||||
"2/03_desk_1-source.avif": {
|
||||
"sha256": "33afc3a2a73b0dec174fcb1d900b2ef66c1ecf5b67edb97a25648c7a93cb1b83",
|
||||
"source": "https://zoomstage.online/2/03_desk_1-source.avif"
|
||||
@@ -499,14 +547,38 @@
|
||||
"sha256": "1912d1d5050f00cd03857ee0776a54443ac398f91abcc043cbc5f040325d5f71",
|
||||
"source": "https://zoomstage.online/2/03_mob_1-source.avif"
|
||||
},
|
||||
"2/03_mob_1-source.jpg": {
|
||||
"sha256": "7668d0a7c406c31e170bf98c578b391357a515fe4ffc376a4f530b7757f396fc",
|
||||
"source": "https://zoomstage.online/2/03_mob_1-source.jpg"
|
||||
},
|
||||
"2/03_mob_1-source.webp": {
|
||||
"sha256": "f345fdc850ca662388d5bdc6adb6a6579aa129baf808acb117dd848682a4c341",
|
||||
"source": "https://zoomstage.online/2/03_mob_1-source.webp"
|
||||
},
|
||||
"2/03_mob_2-result.avif": {
|
||||
"sha256": "78044eb77595fdeaca2ba8531d6c41b5b9e0b0d4b7474760f0c515446f82756f",
|
||||
"source": "https://zoomstage.online/2/03_mob_2-result.avif"
|
||||
},
|
||||
"2/03_mob_2-result.jpg": {
|
||||
"sha256": "40131ba99d2a102abc4f18c94223639bd498f9d9837426b5697b146a6ee91496",
|
||||
"source": "https://zoomstage.online/2/03_mob_2-result.jpg"
|
||||
},
|
||||
"2/03_mob_2-result.webp": {
|
||||
"sha256": "2e649b961c6819270b7536e709c9bdf893acb421f65241599290ebc1a53d4b7b",
|
||||
"source": "https://zoomstage.online/2/03_mob_2-result.webp"
|
||||
},
|
||||
"2/03_mob_3-thumb.avif": {
|
||||
"sha256": "da91d0c4414bf9feb109ba6457ddd16ed65d6ba4a175db882e8fd289d0eadd28",
|
||||
"source": "https://zoomstage.online/2/03_mob_3-thumb.avif"
|
||||
},
|
||||
"2/03_mob_3-thumb.jpg": {
|
||||
"sha256": "6b99576ca8ca5cd5131b453c40d39ae7430d81b6b65d9bd431d0533bad349a1a",
|
||||
"source": "https://zoomstage.online/2/03_mob_3-thumb.jpg"
|
||||
},
|
||||
"2/03_mob_3-thumb.webp": {
|
||||
"sha256": "45223504e5d8ff23102343586aaf5bb4497f7038e47abf3309bcf948e5bbfaaf",
|
||||
"source": "https://zoomstage.online/2/03_mob_3-thumb.webp"
|
||||
},
|
||||
"2/04_desk_1-source.avif": {
|
||||
"sha256": "75167d61ba549e6cd7857ca2173f7e407fde4f899842eac8838a83eb804c0030",
|
||||
"source": "https://zoomstage.online/2/04_desk_1-source.avif"
|
||||
@@ -547,14 +619,38 @@
|
||||
"sha256": "436a746e9b07dbca356b2304415e5a3d38c130dcad771a474ece4c566e3923f0",
|
||||
"source": "https://zoomstage.online/2/04_mob_1-source.avif"
|
||||
},
|
||||
"2/04_mob_1-source.jpg": {
|
||||
"sha256": "8e9487d89f0f333c894d4b8791605d5ae3d2530aa53e5d20220aef3afcb0ce31",
|
||||
"source": "https://zoomstage.online/2/04_mob_1-source.jpg"
|
||||
},
|
||||
"2/04_mob_1-source.webp": {
|
||||
"sha256": "d566c804d9687dead9196f80a6d4ce40e9d667700621a07e15b50e02ecf149b6",
|
||||
"source": "https://zoomstage.online/2/04_mob_1-source.webp"
|
||||
},
|
||||
"2/04_mob_2-result.avif": {
|
||||
"sha256": "0226d6d6dd058b403d144c1abf73177e1b90b24d64be9127c830f6e64fb33f89",
|
||||
"source": "https://zoomstage.online/2/04_mob_2-result.avif"
|
||||
},
|
||||
"2/04_mob_2-result.jpg": {
|
||||
"sha256": "0117b590c82a086296cf6bca3782518ba57f18b2af4e119afd76bfc56977b4f3",
|
||||
"source": "https://zoomstage.online/2/04_mob_2-result.jpg"
|
||||
},
|
||||
"2/04_mob_2-result.webp": {
|
||||
"sha256": "c5b07346dcc09f77d1cc724ee89cdefd9a14566bf23d3314ab4b1864b10e2619",
|
||||
"source": "https://zoomstage.online/2/04_mob_2-result.webp"
|
||||
},
|
||||
"2/04_mob_3-thumb.avif": {
|
||||
"sha256": "ed98c7aa386b988ece328f7a9dbaae6f733a2d32318bcde3ecf75fa2676ffe03",
|
||||
"source": "https://zoomstage.online/2/04_mob_3-thumb.avif"
|
||||
},
|
||||
"2/04_mob_3-thumb.jpg": {
|
||||
"sha256": "d1a3e8bf1a6ad0fb58f402ed919a90a5be3586887e4d43fb8a949f04811972d8",
|
||||
"source": "https://zoomstage.online/2/04_mob_3-thumb.jpg"
|
||||
},
|
||||
"2/04_mob_3-thumb.webp": {
|
||||
"sha256": "b28bd3b61bd19790536e1e22956f7a66652c1f73739b7ed95437359906749238",
|
||||
"source": "https://zoomstage.online/2/04_mob_3-thumb.webp"
|
||||
},
|
||||
"2/05_desk_1-source.avif": {
|
||||
"sha256": "8fb22211499a316a708011d18f11069de884e316467242a4999046e8dbb35aa0",
|
||||
"source": "https://zoomstage.online/2/05_desk_1-source.avif"
|
||||
@@ -595,14 +691,38 @@
|
||||
"sha256": "f6b50e370340a6e4df76e73372155c5897cbe621bf90f1afe9f8aaef8425f1f4",
|
||||
"source": "https://zoomstage.online/2/05_mob_1-source.avif"
|
||||
},
|
||||
"2/05_mob_1-source.jpg": {
|
||||
"sha256": "f848e12d9c0e96720ac8fa85eae38d3961475dd0d00a8c3817a3a1f4dad01454",
|
||||
"source": "https://zoomstage.online/2/05_mob_1-source.jpg"
|
||||
},
|
||||
"2/05_mob_1-source.webp": {
|
||||
"sha256": "2bb823ec807e2766363c06f614f9f89b9e23724d63118aca525c1639d673e78f",
|
||||
"source": "https://zoomstage.online/2/05_mob_1-source.webp"
|
||||
},
|
||||
"2/05_mob_2-result.avif": {
|
||||
"sha256": "4907bb130e8c9fa0bd4391b2f6205973645ae47b22611967f7543f09227f284f",
|
||||
"source": "https://zoomstage.online/2/05_mob_2-result.avif"
|
||||
},
|
||||
"2/05_mob_2-result.jpg": {
|
||||
"sha256": "4896bab2b2a411ba8bb8b6b4df004651d7727a900e563a9344584cd5fadf4562",
|
||||
"source": "https://zoomstage.online/2/05_mob_2-result.jpg"
|
||||
},
|
||||
"2/05_mob_2-result.webp": {
|
||||
"sha256": "e7d05c058fca2956c9f0c3c63b52f405dd26d7766a0ea1841101e587142c38e9",
|
||||
"source": "https://zoomstage.online/2/05_mob_2-result.webp"
|
||||
},
|
||||
"2/05_mob_3-thumb.avif": {
|
||||
"sha256": "4fecf25c3b250fb9b41e4a6fd03b85b9e23fb838d38dd8427c3ed938921bc2e5",
|
||||
"source": "https://zoomstage.online/2/05_mob_3-thumb.avif"
|
||||
},
|
||||
"2/05_mob_3-thumb.jpg": {
|
||||
"sha256": "1bfeca6d5b9b40b89d1deec43b08351fd9d4e8f9eb57032ab376c42806ea3a32",
|
||||
"source": "https://zoomstage.online/2/05_mob_3-thumb.jpg"
|
||||
},
|
||||
"2/05_mob_3-thumb.webp": {
|
||||
"sha256": "71fef2a518f1cb8da99ad6cef34c1603fa8abdd839182d70825b692430684bf8",
|
||||
"source": "https://zoomstage.online/2/05_mob_3-thumb.webp"
|
||||
},
|
||||
"bootstrap.min.c.css": {
|
||||
"sha256": "e3450fead306400ba24a20e2af963e6d9902ce6532eeed3ef5dbbe3b84543210",
|
||||
"source": "https://zoomstage.online/bootstrap.min.c.css"
|
||||
@@ -724,15 +844,15 @@
|
||||
"source": "https://zoomstage.online/images/sprite.svg"
|
||||
},
|
||||
"style.css": {
|
||||
"sha256": "839d51ff9e4541fc1a585c6c715a2d6b26685eefb615c90f372a4d82e24b1f63",
|
||||
"sha256": "7bc7744dff998008439c968e347d3ae39f2de6f073427dbde8c04d8cca9af562",
|
||||
"source": "https://zoomstage.online/style.css"
|
||||
},
|
||||
"style.min.c.css": {
|
||||
"sha256": "7fc5684ab3eb00b046acf90c4c891ec393b9dc11da97db02a297876e342cad18",
|
||||
"sha256": "7c3d669e77c8d7e93cc7743b684b5e4c4e72289f452b05f140744506549d12e9",
|
||||
"source": "https://zoomstage.online/style.min.c.css"
|
||||
},
|
||||
"style.min.css": {
|
||||
"sha256": "524c44557f1a9631e88c8b8f5bbc603abcfff7dd4de76a402cec127c0895a404",
|
||||
"sha256": "4b161a767d1b18215d2428b4aba802877e140bd14af497de826c0ac50584def7",
|
||||
"source": "https://zoomstage.online/style.min.css"
|
||||
}
|
||||
}
|
||||
|
||||