import React, { useMemo, useState } from "react"; import { dilateBoundingBox, getBoundingBoxSize } from "../bounding-box"; import { createSvgSymbolContext, SvgSymbolContent, SvgSymbolData, } from "../svg-symbol"; import { SvgVocabulary } from "../svg-vocabulary"; import { SvgSymbolContext } from "../svg-symbol"; import { SymbolContextWidget } from "../symbol-context-widget"; import { HoverDebugHelper } from "../hover-debug-helper"; import { Page } from "../page"; type SvgSymbolProps = { data: SvgSymbolData; scale?: number; } & SvgSymbolContext; const px = (value: number) => `${value}px`; const BBOX_DILATION = 100; const SvgSymbol: React.FC = (props) => { const d = props.data; const bbox = dilateBoundingBox(d.bbox, BBOX_DILATION); const scale = props.scale || 1; const [width, height] = getBoundingBoxSize(bbox); return ( ); }; export const VocabularyPage: React.FC<{}> = () => { const [ctx, setCtx] = useState(createSvgSymbolContext()); const [filter, setFilter] = useState(""); const finalFilter = filter.toLowerCase().replace(/ /g, "_"); const items = useMemo( () => SvgVocabulary.items.filter((item) => item.name.toLowerCase().includes(finalFilter) ), [finalFilter] ); return (
setFilter(e.target.value)} placeholder="🔎" />
{items.map((symbolData) => (
{symbolData.name}
))}
); };