@cs-open/react-fabric
Version: 
1 lines • 4.79 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/store/index.ts"],"sourcesContent":["import { createWithEqualityFn } from 'zustand/traditional'\nimport type { Node } from '../types/nodes'\nimport type { ReactFabricState } from '../types/store'\nimport getInitialState from './initialState'\n\nconst createStore = ({\n  nodes,\n  defaultNodes,\n  width,\n  height,\n}: {\n  nodes?: Node[]\n  defaultNodes?: Node[]\n  width?: number\n  height?: number\n}) =>\n  createWithEqualityFn<ReactFabricState>(\n    (set, get) => ({\n      ...getInitialState({ nodes, width, height, defaultNodes }),\n      setDimensions: (options: { width?: number; height?: number }) => {\n        const { width, height } = options\n        const currentState = get()\n\n        // 合并现有尺寸和新尺寸\n        const newDimensions = {\n          width: width ?? currentState.width,\n          height: height ?? currentState.height,\n        }\n\n        get().canvas?.setDimensions(newDimensions)\n        set(newDimensions)\n      },\n      setLoading: loading => {\n        set({ loading })\n      },\n      setDraggable: draggable => {\n        set({ draggable })\n        const canvas = get().canvas\n        // TODO 无效\n        if (canvas) {\n          canvas.setCursor(draggable ? 'grab' : 'default')\n          canvas.hoverCursor = draggable ? 'grab' : 'default'\n          canvas.requestRenderAll()\n        }\n      },\n      setZoomable: zoomable => {\n        set({ zoomable })\n      },\n\n      setIsDragging: isDragging => {\n        set({ isDragging })\n      },\n      setSelection: selection => {\n        const canvas = get().canvas\n        if (!canvas) return\n        set({ selection })\n        canvas.set('selection', selection)\n        canvas.requestRenderAll()\n      },\n      setDefaultDraggable: defaultDraggable => {\n        if (defaultDraggable === undefined) return\n        const { setDraggable } = get()\n        set({ hasDefaultDraggable: true })\n        setDraggable(defaultDraggable)\n      },\n      setDefaultSelection: defaultSelection => {\n        if (defaultSelection === undefined) return\n        const { setSelection } = get()\n        set({ hasDefaultSelection: true })\n        setSelection(defaultSelection)\n      },\n      setFitZoom: (fitZoom: number) => {\n        set({ fitZoom: fitZoom })\n      },\n      setManualZoom: (manualZoom: number) => {\n        set({ manualZoom: manualZoom })\n      },\n      setMinManualZoom: (zoom: number) => {\n        set({ minManualZoom: zoom })\n      },\n      setZoom: (zoom: number) => {\n        set({ zoom: zoom })\n      },\n      setMaxManualZoom: (zoom: number) => {\n        set({ maxManualZoom: zoom })\n      },\n      setControls: (controls) => {\n        set({ controls })\n      },\n      reset: () => set({ ...getInitialState() }),\n    }),\n    Object.is,\n  )\n\nexport { createStore }\n"],"names":["createStore","nodes","defaultNodes","width","height","createWithEqualityFn","set","get","getInitialState","options","currentState","newDimensions","loading","draggable","canvas","zoomable","isDragging","selection","defaultDraggable","setDraggable","defaultSelection","setSelection","fitZoom","manualZoom","zoom","controls"],"mappings":"kFAKMA,MAAAA,EAAc,CAAC,CACnB,MAAAC,EACA,aAAAC,EACA,MAAAC,EACA,OAAAC,CACF,IAMEC,EACE,qBAAA,CAACC,EAAKC,KAAS,CACb,GAAGC,EAAAA,QAAgB,CAAE,MAAAP,EAAO,MAAAE,EAAO,OAAAC,EAAQ,aAAAF,CAAa,CAAC,EACzD,cAAgBO,GAAiD,CAC/D,KAAM,CAAE,MAAAN,EAAO,OAAAC,CAAO,EAAIK,EACpBC,EAAeH,IAGfI,EAAgB,CACpB,MAAOR,GAASO,EAAa,MAC7B,OAAQN,GAAUM,EAAa,MACjC,EAEAH,EAAM,EAAA,QAAQ,cAAcI,CAAa,EACzCL,EAAIK,CAAa,CACnB,EACA,WAAYC,GAAW,CACrBN,EAAI,CAAE,QAAAM,CAAQ,CAAC,CACjB,EACA,aAAcC,GAAa,CACzBP,EAAI,CAAE,UAAAO,CAAU,CAAC,EACjB,MAAMC,EAASP,EAAAA,EAAM,OAEjBO,IACFA,EAAO,UAAUD,EAAY,OAAS,SAAS,EAC/CC,EAAO,YAAcD,EAAY,OAAS,UAC1CC,EAAO,mBAEX,EACA,YAAaC,GAAY,CACvBT,EAAI,CAAE,SAAAS,CAAS,CAAC,CAClB,EAEA,cAAeC,GAAc,CAC3BV,EAAI,CAAE,WAAAU,CAAW,CAAC,CACpB,EACA,aAAcC,GAAa,CACzB,MAAMH,EAASP,EAAI,EAAE,OAChBO,IACLR,EAAI,CAAE,UAAAW,CAAU,CAAC,EACjBH,EAAO,IAAI,YAAaG,CAAS,EACjCH,EAAO,mBACT,EACA,oBAAqBI,GAAoB,CACvC,GAAIA,IAAqB,OAAW,OACpC,KAAM,CAAE,aAAAC,CAAa,EAAIZ,EAAAA,EACzBD,EAAI,CAAE,oBAAqB,EAAK,CAAC,EACjCa,EAAaD,CAAgB,CAC/B,EACA,oBAAqBE,GAAoB,CACvC,GAAIA,IAAqB,OAAW,OACpC,KAAM,CAAE,aAAAC,CAAa,EAAId,EAAAA,EACzBD,EAAI,CAAE,oBAAqB,EAAK,CAAC,EACjCe,EAAaD,CAAgB,CAC/B,EACA,WAAaE,GAAoB,CAC/BhB,EAAI,CAAE,QAASgB,CAAQ,CAAC,CAC1B,EACA,cAAgBC,GAAuB,CACrCjB,EAAI,CAAE,WAAYiB,CAAW,CAAC,CAChC,EACA,iBAAmBC,GAAiB,CAClClB,EAAI,CAAE,cAAekB,CAAK,CAAC,CAC7B,EACA,QAAUA,GAAiB,CACzBlB,EAAI,CAAE,KAAMkB,CAAK,CAAC,CACpB,EACA,iBAAmBA,GAAiB,CAClClB,EAAI,CAAE,cAAekB,CAAK,CAAC,CAC7B,EACA,YAAcC,GAAa,CACzBnB,EAAI,CAAE,SAAAmB,CAAS,CAAC,CAClB,EACA,MAAO,IAAMnB,EAAI,CAAE,GAAGE,EAAgB,QAAA,CAAE,CAAC,CAC3C,GACA,OAAO,EACT"}