diff --git a/src/shared/initial-app/Intro/blob-anim/index.ts b/src/shared/initial-app/Intro/blob-anim/index.ts index 934f1e70..66c83117 100644 --- a/src/shared/initial-app/Intro/blob-anim/index.ts +++ b/src/shared/initial-app/Intro/blob-anim/index.ts @@ -1,5 +1,5 @@ import * as style from '../style.css'; -import { startBlobs, blobColor } from './meta'; +import { startBlobs } from './meta'; /** * Control point x,y - point x,y - control point x,y @@ -142,12 +142,16 @@ class CentralBlobs { x: number, y: number, radius: number, + color: string, + opacity: number, ) { ctx.save(); ctx.translate(x, y); ctx.scale(radius, radius); this.rotatePos = (this.rotatePos + timeDelta / rotationTime) % 1; ctx.rotate(Math.PI * 2 * this.rotatePos); + ctx.globalAlpha = opacity; + ctx.fillStyle = color; for (const blob of this.blobs) { const points = blob.frame(timeDelta); @@ -211,8 +215,9 @@ export function startBlobAnim(canvas: HTMLCanvasElement) { canvas.width = canvasBounds.width * devicePixelRatio; canvas.height = canvasBounds.height * devicePixelRatio; const loadImgBounds = loadImgEl.getBoundingClientRect(); + const computedStyles = getComputedStyle(canvas); + const blobPink = computedStyles.getPropertyValue('--blob-pink'); - ctx.fillStyle = blobColor; ctx.scale(devicePixelRatio, devicePixelRatio); centralBlobs.draw( @@ -221,6 +226,8 @@ export function startBlobAnim(canvas: HTMLCanvasElement) { loadImgBounds.left - canvasBounds.left + loadImgBounds.width / 2, loadImgBounds.top - canvasBounds.top + loadImgBounds.height / 2, loadImgBounds.height / 2 / (1 + maxRandomDistance), + blobPink, + Number(computedStyles.getPropertyValue('--center-blob-opacity')), ); } diff --git a/src/shared/initial-app/Intro/blob-anim/meta.ts b/src/shared/initial-app/Intro/blob-anim/meta.ts index 3622a689..66ed610e 100644 --- a/src/shared/initial-app/Intro/blob-anim/meta.ts +++ b/src/shared/initial-app/Intro/blob-anim/meta.ts @@ -39,5 +39,3 @@ export const startBlobs: BlobPoint[][] = [ [-1.141, -0.335, -0.951, -0.573, -0.761, -0.811], ], ]; - -export const blobColor = 'rgba(255, 0, 102, 0.3)'; diff --git a/src/shared/initial-app/Intro/index.tsx b/src/shared/initial-app/Intro/index.tsx index e956781f..6d4fd2c2 100644 --- a/src/shared/initial-app/Intro/index.tsx +++ b/src/shared/initial-app/Intro/index.tsx @@ -14,7 +14,7 @@ import logoWithText from 'url:./imgs/logo-with-text.svg'; import * as style from './style.css'; import type SnackBarElement from 'shared/initial-app/custom-els/snack-bar'; import 'shared/initial-app/custom-els/snack-bar'; -import { blobColor, startBlobs } from './blob-anim/meta'; +import { startBlobs } from './blob-anim/meta'; const demos = [ { @@ -247,11 +247,7 @@ export default class Intro extends Component {
{showBlobSVG && ( - + {startBlobs.map((points) => ( declare const __PRERENDER__: boolean; + +interface ResizeObserverCallback { + (entries: ResizeObserverEntry[], observer: ResizeObserver): void; +} + +interface ResizeObserverEntry { + readonly target: Element; + readonly contentRect: DOMRectReadOnly; +} + +interface ResizeObserver { + observe(target: Element): void; + unobserve(target: Element): void; + disconnect(): void; +} + +declare var ResizeObserver: { + prototype: ResizeObserver; + new (callback: ResizeObserverCallback): ResizeObserver; +};