Files
console/static/js/loading-studio.js
Torsten Dittmann cb15bb9122 Add grid-based studio loading animation
- Introduce CSS grid of circles with staggered delays - Add JS to build
the animated grid and attach to DOM - Update app.html to load the studio
loading script and assets
2025-12-08 22:46:54 +04:00

100 lines
1.9 KiB
JavaScript

function createAnimatedLogo(root) {
// pattern encoded exactly like your React element tree
const pattern = [
// row 1
'',
'size1',
'size2',
'size3',
'size3',
'size2',
'size1',
'',
// row 2
'size2',
'size3',
'size4',
'size5',
'size5',
'size4',
'size3',
'size2',
// row 3
'size3',
'size4',
'size8',
'size8',
'size8',
'size8',
'size4',
'size3',
// row 4
'size3',
'size5',
'size8',
'size9',
'size9',
'size8',
'size5',
'size3',
// row 5
'size3',
'size5',
'size8',
'size9',
'size9',
'size8',
'size5',
'size3',
// row 6
'size3',
'size4',
'size8',
'size8',
'size8',
'size8',
'size4',
'size3',
// row 7
'size2',
'size3',
'size4',
'size5',
'size5',
'size4',
'size3',
'size2',
// row 8
'',
'size1',
'size2',
'size3',
'size3',
'size2',
'size1',
''
];
// build container
const grid = document.createElement('div');
grid.className = 'gridContainer';
// optional background square (hidden by default)
const backgroundSquare = document.createElement('div');
backgroundSquare.className = 'backgroundSquare';
grid.appendChild(backgroundSquare);
// insert circles and blanks
pattern.forEach((size) => {
const el = document.createElement('div');
if (size) {
el.classList.add('circle', size);
}
grid.appendChild(el);
});
root.appendChild(grid);
}
createAnimatedLogo(document.querySelector('.page-loader'));