@playcanvas/react
Version: 
A React renderer for PlayCanvas – build interactive 3D applications using React's declarative paradigm.
23 lines (22 loc) • 1.25 kB
TypeScript
import { Vec2 } from "playcanvas";
import { Color } from "playcanvas";
import { Vec4 } from "playcanvas";
import { Quat } from "playcanvas";
import { Vec3 } from "playcanvas";
type BuiltInKeys = 'constructor' | 'prototype' | 'length' | 'name' | 'arguments' | 'caller' | 'apply' | 'bind' | 'toString' | 'valueOf' | 'hasOwnProperty' | 'isPrototypeOf' | 'propertyIsEnumerable' | 'toLocaleString';
type IfEquals<X, Y, A, B> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? A : B;
type ReadonlyKeys<T> = {
    [P in keyof T]-?: IfEquals<{
        [Q in P]: T[P];
    }, {
        -readonly [Q in P]: T[P];
    }, never, P>;
}[keyof T];
export type PublicProps<T> = {
    [K in keyof T as K extends `_${string}` ? never : K extends `#${string}` ? never : T[K] extends (...args: unknown[]) => unknown ? never : K extends BuiltInKeys ? never : K extends ReadonlyKeys<T> ? never : K]: T[K];
};
export type SubclassOf<T> = new () => T;
export type Serializable<T> = {
    [K in keyof T]: T[K] extends Color ? string : T[K] extends Vec2 ? [number, number] : T[K] extends Vec3 ? [number, number, number] : T[K] extends Vec4 ? [number, number, number, number] : T[K] extends Quat ? [number, number, number, number] : T[K];
};
export {};