1
0
Fork 0
freesewing/sites/shared/components/workbench/pattern/pan-zoom-context.mjs

29 lines
786 B
JavaScript
Raw Normal View History

2023-06-21 21:17:07 -05:00
import React, { useState, useMemo } from 'react'
export const PanZoomContext = React.createContext({})
export const PanZoomContextProvider = ({ children }) => {
const [zoomed, setZoomed] = useState(false)
const [_zoomFunctions, setZoomFunctions] = useState(false)
const value = useMemo(() => {
const onTransformed = (_ref, state) => {
setZoomed(state.scale !== 1)
}
const reset = () => {
setZoomed(false)
_zoomFunctions.resetTransform()
}
return {
zoomed,
zoomFunctions: _zoomFunctions ? { ..._zoomFunctions, reset } : false,
setZoomFunctions,
onTransformed,
}
}, [zoomed, setZoomed, _zoomFunctions, setZoomFunctions])
return <PanZoomContext.Provider value={value}>{children}</PanZoomContext.Provider>
}