11<template >
22 <div
33 class =" profilephoto"
4- @click =" randomiseProfile "
4+ @click =" onClick "
55 >
66 <img src =" /me.png?v=6" >
77 <div class =" profilephoto-bg" />
8+ <div class =" profilephoto-fallback" >
9+ <img src =" /me-bg.png" >
10+ </div >
811 </div >
912</template >
1013
1114<script setup lang="ts">
1215import { ref , onMounted , onUnmounted } from ' vue'
13- import { isSafari } from ' react-device-detect'
1416import { Renderer } from ' ~/util/3d/renderer'
1517import { PartialSphere , Sphere } from ' ~/util/3d/geometry'
1618
19+ const visualsStore = useVisualsStore ()
20+
1721const rendererZoomLevel = 12
1822const geometryDefinition = [
1923 {
@@ -45,9 +49,10 @@ const geometryRotationSpeed = 20
4549
4650const renderer = ref <Renderer | undefined >(undefined )
4751
48- const randomiseProfile = (): void => {
52+ const onClick = (): void => {
4953 renderer .value ?.randomiseRotations ()
5054 renderer .value ?.randomiseColors ()
55+ visualsStore .randomise ()
5156}
5257
5358onMounted (() => {
@@ -63,7 +68,7 @@ onMounted(() => {
6368 .setOnRenderTick (renderer =>
6469 renderer .getGeometry ()?.forEach (geometry => geometry .rotate ()),
6570 )
66- .setOnInit ((renderer ) => {
71+ .setOnStart ((renderer ) => {
6772 renderer .getGeometry ()?.forEach ((geometry ) => {
6873 geometry .setRotationSpeed ({
6974 x: geometryRotationSpeed ,
@@ -73,9 +78,10 @@ onMounted(() => {
7378 })
7479 .setGetZoom (() => rendererZoomLevel )
7580 .initialise ()
81+ .start ()
7682
7783 renderer .value .getCanvasElement ()?.style .setProperty (' border-radius' , ' 50%' )
78- }, isSafari ? 500 : 100 )
84+ }, 500 )
7985})
8086
8187onUnmounted (() => {
@@ -103,7 +109,7 @@ onUnmounted(() => {
103109 width : 8rem ;
104110 }
105111
106- & -bg {
112+ & -bg , & -fallback {
107113 position : absolute ;
108114 top : 0 ;
109115 left : 0 ;
@@ -129,5 +135,19 @@ onUnmounted(() => {
129135 border : var (--color-highlight ) 1px solid ;
130136 box-sizing : border-box ;
131137 }
138+
139+ & -fallback {
140+ position : absolute ;
141+ top : 0 ;
142+ left : 0 ;
143+ z-index : 0 ;
144+ width : inherit ;
145+ height : inherit ;
146+
147+ & > img {
148+ z-index : 0 ;
149+ }
150+ }
151+
132152}
133153 </style >
0 commit comments