initial commit
This commit is contained in:
		
						commit
						5449e361d5
					
				
					 46 changed files with 8309 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								src/platform/anim.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/platform/anim.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
import { createContext, useContext, type Accessor } from "solid-js";
 | 
			
		||||
 | 
			
		||||
export type HeroSource = {[key: string | symbol | number]: HTMLElement | undefined}
 | 
			
		||||
 | 
			
		||||
const HeroSourceContext = createContext<Accessor<HeroSource>>(() => ({}))
 | 
			
		||||
 | 
			
		||||
export const HeroSourceProvider = HeroSourceContext.Provider
 | 
			
		||||
 | 
			
		||||
export function useHeroSource() {
 | 
			
		||||
  return useContext(HeroSourceContext)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								src/platform/timesrc.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/platform/timesrc.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
import {
 | 
			
		||||
  Accessor,
 | 
			
		||||
  createContext,
 | 
			
		||||
  createRenderEffect,
 | 
			
		||||
  createSignal,
 | 
			
		||||
  onCleanup,
 | 
			
		||||
  untrack,
 | 
			
		||||
  useContext,
 | 
			
		||||
} from "solid-js";
 | 
			
		||||
 | 
			
		||||
const TimeSourceContext = createContext<Accessor<Date>>();
 | 
			
		||||
 | 
			
		||||
export const TimeSourceProvider = TimeSourceContext.Provider;
 | 
			
		||||
 | 
			
		||||
export function createTimeSource() {
 | 
			
		||||
  let id: number | undefined;
 | 
			
		||||
  const [get, set] = createSignal(new Date());
 | 
			
		||||
 | 
			
		||||
  createRenderEffect(() =>
 | 
			
		||||
    untrack(() => {
 | 
			
		||||
      id = setTimeout(() => {
 | 
			
		||||
        set(new Date());
 | 
			
		||||
      }, 30 * 1000);
 | 
			
		||||
    }),
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  onCleanup(() => {
 | 
			
		||||
    if (typeof id !== "undefined") {
 | 
			
		||||
      clearInterval(id);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return get;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function useTimeSource() {
 | 
			
		||||
  return (
 | 
			
		||||
    useContext(TimeSourceContext) ??
 | 
			
		||||
    (console.warn("useTimeSource() is used but no source is provided"),
 | 
			
		||||
    createTimeSource())
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue