UNPKG

@cs-open/react-fabric

Version:
1 lines 4.79 kB
{"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"}