/** @jsxImportSource react */
import { VDOM } from "../ui/Widget";
import { debug } from "../util/Debug";
import { Config } from "../ui/Prop";
export type ShapeRender = (
cx: number,
cy: number,
size: number,
props?: Config,
options?: Config
) => React.ReactElement;
var shapes: { [key: string]: ShapeRender } = {};
var warnings: { [key: string]: boolean } = {};
export function registerShape(name: string, callback: ShapeRender): void {
shapes[name] = callback;
}
export function getShape(shapeName: string): ShapeRender {
if (shapes[shapeName]) return shapes[shapeName];
if (!warnings[shapeName]) {
warnings[shapeName] = true;
debug(`Unknown shape '${shapeName}'. Using square instead.`);
}
return shapes["square"];
}
export function getAvailableShapes(): string[] {
return Object.keys(shapes);
}
export function circle(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
const { key, ...rest } = props ?? {};
return ;
}
registerShape("circle", circle);
export function square(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 0.9;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("square", square);
registerShape("rect", square);
export function bar(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 0.9;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("bar", bar);
export function column(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 0.9;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("column", column);
export function line(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 0.9;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("line", line);
registerShape("hline", line);
export function vline(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 0.9;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("vline", vline);
export function triangle(cx: number, cy: number, size: number, props?: Config, options?: Config): React.ReactElement {
size *= 1.29;
var d = "";
var cos = Math.cos(Math.PI / 6);
var sin = Math.sin(Math.PI / 6);
d += `M ${cx} ${cy - size / 2} `;
d += `L ${cx + (cos * size) / 2} ${cy + (sin * size) / 2} `;
d += `L ${cx - (cos * size) / 2} ${cy + (sin * size) / 2} `;
d += `Z`;
const { key, ...rest } = props ?? {};
return ;
}
registerShape("triangle", triangle);