UNPKG

@cs-open/react-fabric

Version:
3 lines (2 loc) 1.13 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var m=require("react"),v=require("../hooks/useStore.cjs"),p=require("fabric");const g=()=>{const r=v.useStoreApi(),{canvas:c}=r.getState(),s=m.useRef(1);return m.useEffect(()=>{let t=null;const i=e=>{const{canvas:n,manualZoom:a,fitZoom:h,minManualZoom:l,maxManualZoom:f}=r.getState();let o=e.scale*a;o<=l&&(o=l),o>=f&&(o=f);const d=o*h;n?.zoomToPoint(new p.Point(e.srcEvent.offsetX,e.srcEvent.offsetY),d),s.current=o},u=()=>{const{fitZoom:e}=r.getState(),n=s.current*e;r.setState({manualZoom:s.current,zoom:n})};return(async()=>{try{if(!c)return;const e=c.getSelectionElement();if(!e)return;let n;try{const a=require("hammerjs");n=a.default||a}catch{console.warn("Pinch plugin disabled: hammerjs not found. Install hammerjs to enable touch gestures.");return}t=new n(e),t.get("pinch").set({enable:!0}),t.on("pinchmove",i),t.on("pinchend",u)}catch(e){console.warn("Pinch plugin disabled: hammerjs initialization failed.",e)}})(),()=>{t&&(t.off("pinchmove",i),t.off("pinchend",u),t.destroy())}},[c,r]),null};exports.default=g; //# sourceMappingURL=Pinch.cjs.map