mirror of
https://github.com/trafficlunar/blockmatic.git
synced 2026-06-28 06:34:13 +00:00
fix: add more properties to canvas context
This commit is contained in:
parent
3019db6f06
commit
d37574b90f
4 changed files with 30 additions and 24 deletions
|
|
@ -5,13 +5,22 @@ interface Props {
|
|||
}
|
||||
|
||||
export const CanvasContext = createContext({
|
||||
stageSize: { width: 0, height: 0 } as Dimension,
|
||||
canvasSize: { minX: 0, minY: 0, maxX: 0, maxY: 0 },
|
||||
blocks: [] as Block[],
|
||||
coords: { x: 0, y: 0 } as Position,
|
||||
scale: 0,
|
||||
setStageSize: ((size: Dimension) => {}) as React.Dispatch<React.SetStateAction<Dimension>>,
|
||||
setBlocks: ((blocks: Block[]) => {}) as React.Dispatch<React.SetStateAction<Block[]>>,
|
||||
setCoords: ((coords: Position) => {}) as React.Dispatch<React.SetStateAction<Position>>,
|
||||
setScale: ((value: number) => {}) as React.Dispatch<React.SetStateAction<number>>,
|
||||
});
|
||||
|
||||
export const CanvasProvider = ({ children }: Props) => {
|
||||
const [stageSize, setStageSize] = useState({ width: 0, height: 0 } as Dimension);
|
||||
const [blocks, setBlocks] = useState<Block[]>([]);
|
||||
const [coords, setCoords] = useState<Position>({ x: 0, y: 0 });
|
||||
const [scale, setScale] = useState(1);
|
||||
|
||||
const canvasSize = useMemo(() => {
|
||||
let minX = Infinity,
|
||||
|
|
@ -34,5 +43,9 @@ export const CanvasProvider = ({ children }: Props) => {
|
|||
};
|
||||
}, [blocks]);
|
||||
|
||||
return <CanvasContext.Provider value={{ canvasSize, blocks, setBlocks }}>{children}</CanvasContext.Provider>;
|
||||
return (
|
||||
<CanvasContext.Provider value={{ stageSize, canvasSize, blocks, coords, scale, setStageSize, setBlocks, setCoords, setScale }}>
|
||||
{children}
|
||||
</CanvasContext.Provider>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue