@cs-open/react-fabric 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hooks/useInstancePosition.cjs +1 -1
- package/dist/cjs/hooks/useInstancePosition.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/components/Polyline/index.mjs +2 -0
- package/dist/esm/components/Polyline/index.mjs.map +1 -0
- package/dist/esm/hooks/useInstancePosition.mjs +1 -1
- package/dist/esm/hooks/useInstancePosition.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/types/hooks/useInstancePosition.d.ts +1 -1
- package/dist/types/hooks/useInstancePosition.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=require("react")
|
|
1
|
+
"use strict";var n=require("react"),x=require("fabric"),d=require("./useStore.cjs");function $(i,s){const o=d.useStoreApi(),u=n.useRef(null),c=n.useRef(""),l=n.useCallback(r=>{u.current=r;const t=n.isValidElement(s)?s.ref:void 0;t&&(typeof t=="function"?t(r):t&&(t.current=r))},[s]);if(n.useEffect(()=>{if(!i)return;const{canvas:r}=o.getState();if(!r)return;const t=()=>{if(!u.current)return;const e=i.getCoords().map(y=>x.util.sendPointToPlane(y,r.viewportTransform,void 0)),a=`${e[0].x},${e[0].y},${e[2].x-e[0].x},${e[2].y-e[0].y}`;if(a===c.current)return;c.current=a;const p=u.current;Object.assign(p.style,{position:"absolute",left:`${e[0].x}px`,top:`${e[0].y}px`,width:`${e[2].x-e[0].x}px`,height:`${e[2].y-e[0].y}px`})};return r.on("after:render",t),t(),()=>{r.off("after:render",t)}},[i,o]),!n.isValidElement(s))return null;const f=s.props;return n.cloneElement(s,{...f,ref:l,style:{position:"absolute",...f.style}})}exports.useInstancePosition=$;
|
|
2
2
|
//# sourceMappingURL=useInstancePosition.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInstancePosition.cjs","sources":["../../../src/hooks/useInstancePosition.ts"],"sourcesContent":["import { useEffect, useRef, useCallback, cloneElement, isValidElement, type ReactNode } from 'react'\nimport { util } from 'fabric'\nimport type { FabricObject } from 'fabric'\nimport { useStoreApi } from './useStore'\n\n/**\n * 用于同步子元素位置与 Fabric.js 对象位置的 Hook\n * 直接操作 DOM 元素样式,避免频繁的 React 重渲染\n * 同时处理 ref 合并和 children 克隆\n * @param instance Fabric.js 对象实例\n * @param children 需要处理的子元素\n * @returns 处理后的 children\n */\nexport function useInstancePosition(instance: FabricObject | undefined, children: ReactNode) {\n const store = useStoreApi()\n const childElementRef = useRef<HTMLElement | null>(null)\n const lastPositionRef = useRef<string>('')\n\n useEffect(() => {\n if (!instance) return\n\n const { canvas } = store.getState()\n if (!canvas) return\n\n const updatePosition = () => {\n if (!childElementRef.current) return\n\n const sceneCoords = instance.getCoords()\n const viewportCoords = sceneCoords.map(point => util.sendPointToPlane(point, canvas.viewportTransform, undefined))\n\n const newPosition = `${viewportCoords[0].x},${viewportCoords[0].y},${viewportCoords[2].x - viewportCoords[0].x},${viewportCoords[2].y - viewportCoords[0].y}`\n\n if (newPosition === lastPositionRef.current) return\n lastPositionRef.current = newPosition\n\n const element = childElementRef.current\n Object.assign(element.style, {\n position: 'absolute',\n left: `${viewportCoords[0].x}px`,\n top: `${viewportCoords[0].y}px`,\n width: `${viewportCoords[2].x - viewportCoords[0].x}px`,\n height: `${viewportCoords[2].y - viewportCoords[0].y}px`,\n })\n }\n\n canvas.on('after:render', updatePosition)\n updatePosition()\n\n return () => {\n canvas.off('after:render', updatePosition)\n }\n }, [instance, store])\n\n // 处理 children\n if (!isValidElement(children)) return
|
|
1
|
+
{"version":3,"file":"useInstancePosition.cjs","sources":["../../../src/hooks/useInstancePosition.ts"],"sourcesContent":["import { useEffect, useRef, useCallback, cloneElement, isValidElement, type ReactNode } from 'react'\nimport { util } from 'fabric'\nimport type { FabricObject } from 'fabric'\nimport { useStoreApi } from './useStore'\n\n/**\n * 用于同步子元素位置与 Fabric.js 对象位置的 Hook\n * 直接操作 DOM 元素样式,避免频繁的 React 重渲染\n * 同时处理 ref 合并和 children 克隆\n * @param instance Fabric.js 对象实例\n * @param children 需要处理的子元素\n * @returns 处理后的 children\n */\nexport function useInstancePosition(instance: FabricObject | undefined, children: ReactNode) {\n const store = useStoreApi()\n const childElementRef = useRef<HTMLElement | null>(null)\n const lastPositionRef = useRef<string>('')\n\n const handleRef = useCallback(\n (node: any) => {\n childElementRef.current = node\n const currentRef = isValidElement(children) ? (children as any).ref : undefined\n if (currentRef) {\n if (typeof currentRef === 'function') {\n currentRef(node)\n } else if (currentRef) {\n currentRef.current = node\n }\n }\n },\n [children],\n )\n\n useEffect(() => {\n if (!instance) return\n\n const { canvas } = store.getState()\n if (!canvas) return\n\n const updatePosition = () => {\n if (!childElementRef.current) return\n\n const sceneCoords = instance.getCoords()\n const viewportCoords = sceneCoords.map(point => util.sendPointToPlane(point, canvas.viewportTransform, undefined))\n\n const newPosition = `${viewportCoords[0].x},${viewportCoords[0].y},${viewportCoords[2].x - viewportCoords[0].x},${viewportCoords[2].y - viewportCoords[0].y}`\n\n if (newPosition === lastPositionRef.current) return\n lastPositionRef.current = newPosition\n\n const element = childElementRef.current\n Object.assign(element.style, {\n position: 'absolute',\n left: `${viewportCoords[0].x}px`,\n top: `${viewportCoords[0].y}px`,\n width: `${viewportCoords[2].x - viewportCoords[0].x}px`,\n height: `${viewportCoords[2].y - viewportCoords[0].y}px`,\n })\n }\n\n canvas.on('after:render', updatePosition)\n updatePosition()\n\n return () => {\n canvas.off('after:render', updatePosition)\n }\n }, [instance, store])\n\n // 处理 children\n if (!isValidElement(children)) return null\n\n const childProps = children.props as any\n\n return cloneElement(children, {\n ...childProps,\n ref: handleRef,\n style: {\n position: 'absolute',\n ...childProps.style,\n },\n } as any)\n}\n"],"names":["useInstancePosition","instance","children","store","useStoreApi","childElementRef","useRef","lastPositionRef","handleRef","useCallback","node","currentRef","isValidElement","useEffect","canvas","updatePosition","viewportCoords","point","util","newPosition","element","childProps","cloneElement"],"mappings":"oFAagB,SAAAA,EAAoBC,EAAoCC,EAAqB,CAC3F,MAAMC,EAAQC,cACRC,EAAAA,EAAkBC,EAAAA,OAA2B,IAAI,EACjDC,EAAkBD,SAAe,EAAE,EAEnCE,EAAYC,EACfC,YAAAA,GAAc,CACbL,EAAgB,QAAUK,EAC1B,MAAMC,EAAaC,iBAAeV,CAAQ,EAAKA,EAAiB,IAAM,OAClES,IACE,OAAOA,GAAe,WACxBA,EAAWD,CAAI,EACNC,IACTA,EAAW,QAAUD,GAG3B,EACA,CAACR,CAAQ,CACX,EAsCA,GApCAW,EAAAA,UAAU,IAAM,CACd,GAAI,CAACZ,EAAU,OAEf,KAAM,CAAE,OAAAa,CAAO,EAAIX,EAAM,SAAA,EACzB,GAAI,CAACW,EAAQ,OAEb,MAAMC,EAAiB,IAAM,CAC3B,GAAI,CAACV,EAAgB,QAAS,OAG9B,MAAMW,EADcf,EAAS,YACM,IAAIgB,GAASC,OAAK,iBAAiBD,EAAOH,EAAO,kBAAmB,MAAS,CAAC,EAE3GK,EAAc,GAAGH,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,GAE3J,GAAIG,IAAgBZ,EAAgB,QAAS,OAC7CA,EAAgB,QAAUY,EAE1B,MAAMC,EAAUf,EAAgB,QAChC,OAAO,OAAOe,EAAQ,MAAO,CAC3B,SAAU,WACV,KAAM,GAAGJ,EAAe,CAAC,EAAE,CAAC,KAC5B,IAAK,GAAGA,EAAe,CAAC,EAAE,CAAC,KAC3B,MAAO,GAAGA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,KACnD,OAAQ,GAAGA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,IACtD,CAAC,CACH,EAEA,OAAAF,EAAO,GAAG,eAAgBC,CAAc,EACxCA,EAAAA,EAEO,IAAM,CACXD,EAAO,IAAI,eAAgBC,CAAc,CAC3C,CACF,EAAG,CAACd,EAAUE,CAAK,CAAC,EAGhB,CAACS,iBAAeV,CAAQ,EAAG,OAAO,KAEtC,MAAMmB,EAAanB,EAAS,MAE5B,OAAOoB,EAAapB,aAAAA,EAAU,CAC5B,GAAGmB,EACH,IAAKb,EACL,MAAO,CACL,SAAU,WACV,GAAGa,EAAW,KAChB,CACF,CAAQ,CACV"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=require("./container/ReactFabric/index.cjs"),a=require("./hooks/useReactFabric.cjs"),i=require("./hooks/useZoom.cjs"),e=require("./hooks/useStore.cjs"),u=require("./components/BackgroundImage/index.cjs"),t=require("./components/Canvas/index.cjs"),d=require("./components/Group/index.cjs"),l=require("./components/NodeToolbarPortal/index.cjs"),n=require("./components/ReactFabricProvider.cjs"),v=require("./components/Rect/index.cjs"),q=require("./components/Control/index.cjs"),o=require("./components/Image/index.cjs"),f=require("./components/Control2/index.cjs"),x=require("./components/Text/index.cjs"),c=require("./components/Path/index.cjs"),s=require("./components/Line/index.cjs"),$=require("./components/Ellipse/index.cjs"),P=require("./components/IText/index.cjs"),F=require("./components/Textbox/index.cjs"),b=require("./components/Polyline/index.cjs"),g=require("./components/WavyLine/index.cjs"),R=require("./components/Objects/index.cjs"),T=require("./plugins/FreeRect.cjs"),m=require("./plugins/GridLine.cjs"),S=require("./plugins/Pinch.cjs"),h=require("./plugins/FreeDraw.cjs"),p=require("./plugins/FreeText.cjs"),k=require("./plugins/Mask.cjs");exports.ReactFabric=r.default,exports.useReactFabric=a.useReactFabric,exports.useZoom=i.useZoom,exports.useStore=e.useStore,exports.useStoreApi=e.useStoreApi,exports.BackgroundImage=u.default,exports.Canvas=t.default,exports.Group=d.default,exports.NodeToolbarPortal=l.default,exports.ReactFabricProvider=n.ReactFabricProvider,exports.Rect=v.default,exports.Control=q.default,exports.Image=o.default,exports.Control2=f.default,exports.Text=x.default,exports.Path=c.default,exports.Line=s.default,exports.Ellipse=$.default,exports.IText=P.default,exports.Textbox=F.default,exports.Polyline=b.default,exports.WavyLine=g.default,exports.Objects=R.default,exports.PluginFreeRect=T.default,exports.PluginGrid=m.default,exports.PluginPinch=S.default,exports.PluginFreeDraw=h.default,exports.PluginFreeText=p.default,exports.PluginMask=k.default;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{Polyline as p}from"fabric";import{forwardRef as a,useImperativeHandle as u,memo as f}from"react";import{useCreateObject as l}from"../../hooks/useCreateObject.mjs";import{useSplitProps as c}from"../../hooks/useSplitProps.mjs";import{useInstancePosition as d}from"../../hooks/useInstancePosition.mjs";const P=a(({group:e,points:o,children:t,...i},s)=>{const[m,n]=c(i),r=l({Constructor:p,param:o,attributes:n,group:e,listeners:m});return u(s,()=>r,[r]),d(r,t)});var b=f(P);export{b as default};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/components/Polyline/index.tsx"],"sourcesContent":["import type { Group as BaseGroup } from 'fabric'\nimport { Polyline as BasePolyline } from 'fabric'\nimport { forwardRef, memo, useImperativeHandle, type ReactNode } from 'react'\nimport { useCreateObject } from '../../hooks/useCreateObject'\nimport { useSplitProps } from '../../hooks/useSplitProps'\nimport type { AllObjectEvents } from '../../types/object'\nimport { useInstancePosition } from '../../hooks/useInstancePosition'\n\nexport type PolylineProps<T = unknown> = Partial<ConstructorParameters<typeof BasePolyline>[1] & AllObjectEvents> & {\n group?: BaseGroup\n path?: string\n children?: ReactNode\n} & T\n\nconst Polyline = forwardRef<BasePolyline | undefined, PolylineProps>(({ group, points, children, ...props }, ref) => {\n const [listeners, attributes] = useSplitProps(props)\n\n const instance = useCreateObject({\n Constructor: BasePolyline,\n param: points,\n attributes,\n group,\n listeners,\n })\n\n useImperativeHandle(ref, () => instance, [instance])\n\n return useInstancePosition(instance, children)\n})\n\nexport default memo(Polyline)\n"],"names":["Polyline","forwardRef","group","points","children","props","ref","listeners","attributes","useSplitProps","instance","useCreateObject","BasePolyline","useImperativeHandle","useInstancePosition","memo"],"mappings":"+TAcA,MAAMA,EAAWC,EAAoD,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,SAAAC,EAAU,GAAGC,CAAM,EAAGC,IAAQ,CACnH,KAAM,CAACC,EAAWC,CAAU,EAAIC,EAAcJ,CAAK,EAE7CK,EAAWC,EAAgB,CAC/B,YAAaC,EACb,MAAOT,EACP,WAAAK,EACA,MAAAN,EACA,UAAAK,CACF,CAAC,EAED,OAAAM,EAAoBP,EAAK,IAAMI,EAAU,CAACA,CAAQ,CAAC,EAE5CI,EAAoBJ,EAAUN,CAAQ,CAC/C,CAAC,EAED,MAAeW,EAAKf,CAAQ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{useRef as
|
|
1
|
+
"use client";import{useRef as l,useCallback as m,isValidElement as p,useEffect as d,cloneElement as $}from"react";import{util as b}from"fabric";import{useStoreApi as g}from"./useStore.mjs";function v(o,n){const i=g(),s=l(null),u=l(""),a=m(r=>{s.current=r;const e=p(n)?n.ref:void 0;e&&(typeof e=="function"?e(r):e&&(e.current=r))},[n]);if(d(()=>{if(!o)return;const{canvas:r}=i.getState();if(!r)return;const e=()=>{if(!s.current)return;const t=o.getCoords().map(y=>b.sendPointToPlane(y,r.viewportTransform,void 0)),f=`${t[0].x},${t[0].y},${t[2].x-t[0].x},${t[2].y-t[0].y}`;if(f===u.current)return;u.current=f;const x=s.current;Object.assign(x.style,{position:"absolute",left:`${t[0].x}px`,top:`${t[0].y}px`,width:`${t[2].x-t[0].x}px`,height:`${t[2].y-t[0].y}px`})};return r.on("after:render",e),e(),()=>{r.off("after:render",e)}},[o,i]),!p(n))return null;const c=n.props;return $(n,{...c,ref:a,style:{position:"absolute",...c.style}})}export{v as useInstancePosition};
|
|
2
2
|
//# sourceMappingURL=useInstancePosition.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInstancePosition.mjs","sources":["../../../src/hooks/useInstancePosition.ts"],"sourcesContent":["import { useEffect, useRef, useCallback, cloneElement, isValidElement, type ReactNode } from 'react'\nimport { util } from 'fabric'\nimport type { FabricObject } from 'fabric'\nimport { useStoreApi } from './useStore'\n\n/**\n * 用于同步子元素位置与 Fabric.js 对象位置的 Hook\n * 直接操作 DOM 元素样式,避免频繁的 React 重渲染\n * 同时处理 ref 合并和 children 克隆\n * @param instance Fabric.js 对象实例\n * @param children 需要处理的子元素\n * @returns 处理后的 children\n */\nexport function useInstancePosition(instance: FabricObject | undefined, children: ReactNode) {\n const store = useStoreApi()\n const childElementRef = useRef<HTMLElement | null>(null)\n const lastPositionRef = useRef<string>('')\n\n useEffect(() => {\n if (!instance) return\n\n const { canvas } = store.getState()\n if (!canvas) return\n\n const updatePosition = () => {\n if (!childElementRef.current) return\n\n const sceneCoords = instance.getCoords()\n const viewportCoords = sceneCoords.map(point => util.sendPointToPlane(point, canvas.viewportTransform, undefined))\n\n const newPosition = `${viewportCoords[0].x},${viewportCoords[0].y},${viewportCoords[2].x - viewportCoords[0].x},${viewportCoords[2].y - viewportCoords[0].y}`\n\n if (newPosition === lastPositionRef.current) return\n lastPositionRef.current = newPosition\n\n const element = childElementRef.current\n Object.assign(element.style, {\n position: 'absolute',\n left: `${viewportCoords[0].x}px`,\n top: `${viewportCoords[0].y}px`,\n width: `${viewportCoords[2].x - viewportCoords[0].x}px`,\n height: `${viewportCoords[2].y - viewportCoords[0].y}px`,\n })\n }\n\n canvas.on('after:render', updatePosition)\n updatePosition()\n\n return () => {\n canvas.off('after:render', updatePosition)\n }\n }, [instance, store])\n\n // 处理 children\n if (!isValidElement(children)) return
|
|
1
|
+
{"version":3,"file":"useInstancePosition.mjs","sources":["../../../src/hooks/useInstancePosition.ts"],"sourcesContent":["import { useEffect, useRef, useCallback, cloneElement, isValidElement, type ReactNode } from 'react'\nimport { util } from 'fabric'\nimport type { FabricObject } from 'fabric'\nimport { useStoreApi } from './useStore'\n\n/**\n * 用于同步子元素位置与 Fabric.js 对象位置的 Hook\n * 直接操作 DOM 元素样式,避免频繁的 React 重渲染\n * 同时处理 ref 合并和 children 克隆\n * @param instance Fabric.js 对象实例\n * @param children 需要处理的子元素\n * @returns 处理后的 children\n */\nexport function useInstancePosition(instance: FabricObject | undefined, children: ReactNode) {\n const store = useStoreApi()\n const childElementRef = useRef<HTMLElement | null>(null)\n const lastPositionRef = useRef<string>('')\n\n const handleRef = useCallback(\n (node: any) => {\n childElementRef.current = node\n const currentRef = isValidElement(children) ? (children as any).ref : undefined\n if (currentRef) {\n if (typeof currentRef === 'function') {\n currentRef(node)\n } else if (currentRef) {\n currentRef.current = node\n }\n }\n },\n [children],\n )\n\n useEffect(() => {\n if (!instance) return\n\n const { canvas } = store.getState()\n if (!canvas) return\n\n const updatePosition = () => {\n if (!childElementRef.current) return\n\n const sceneCoords = instance.getCoords()\n const viewportCoords = sceneCoords.map(point => util.sendPointToPlane(point, canvas.viewportTransform, undefined))\n\n const newPosition = `${viewportCoords[0].x},${viewportCoords[0].y},${viewportCoords[2].x - viewportCoords[0].x},${viewportCoords[2].y - viewportCoords[0].y}`\n\n if (newPosition === lastPositionRef.current) return\n lastPositionRef.current = newPosition\n\n const element = childElementRef.current\n Object.assign(element.style, {\n position: 'absolute',\n left: `${viewportCoords[0].x}px`,\n top: `${viewportCoords[0].y}px`,\n width: `${viewportCoords[2].x - viewportCoords[0].x}px`,\n height: `${viewportCoords[2].y - viewportCoords[0].y}px`,\n })\n }\n\n canvas.on('after:render', updatePosition)\n updatePosition()\n\n return () => {\n canvas.off('after:render', updatePosition)\n }\n }, [instance, store])\n\n // 处理 children\n if (!isValidElement(children)) return null\n\n const childProps = children.props as any\n\n return cloneElement(children, {\n ...childProps,\n ref: handleRef,\n style: {\n position: 'absolute',\n ...childProps.style,\n },\n } as any)\n}\n"],"names":["useInstancePosition","instance","children","store","useStoreApi","childElementRef","useRef","lastPositionRef","handleRef","useCallback","node","currentRef","isValidElement","useEffect","canvas","updatePosition","viewportCoords","point","util","newPosition","element","childProps","cloneElement"],"mappings":"6LAagB,SAAAA,EAAoBC,EAAoCC,EAAqB,CAC3F,MAAMC,EAAQC,EACRC,EAAAA,EAAkBC,EAA2B,IAAI,EACjDC,EAAkBD,EAAe,EAAE,EAEnCE,EAAYC,EACfC,GAAc,CACbL,EAAgB,QAAUK,EAC1B,MAAMC,EAAaC,EAAeV,CAAQ,EAAKA,EAAiB,IAAM,OAClES,IACE,OAAOA,GAAe,WACxBA,EAAWD,CAAI,EACNC,IACTA,EAAW,QAAUD,GAG3B,EACA,CAACR,CAAQ,CACX,EAsCA,GApCAW,EAAU,IAAM,CACd,GAAI,CAACZ,EAAU,OAEf,KAAM,CAAE,OAAAa,CAAO,EAAIX,EAAM,SAAA,EACzB,GAAI,CAACW,EAAQ,OAEb,MAAMC,EAAiB,IAAM,CAC3B,GAAI,CAACV,EAAgB,QAAS,OAG9B,MAAMW,EADcf,EAAS,YACM,IAAIgB,GAASC,EAAK,iBAAiBD,EAAOH,EAAO,kBAAmB,MAAS,CAAC,EAE3GK,EAAc,GAAGH,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,IAAIA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,GAE3J,GAAIG,IAAgBZ,EAAgB,QAAS,OAC7CA,EAAgB,QAAUY,EAE1B,MAAMC,EAAUf,EAAgB,QAChC,OAAO,OAAOe,EAAQ,MAAO,CAC3B,SAAU,WACV,KAAM,GAAGJ,EAAe,CAAC,EAAE,CAAC,KAC5B,IAAK,GAAGA,EAAe,CAAC,EAAE,CAAC,KAC3B,MAAO,GAAGA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,KACnD,OAAQ,GAAGA,EAAe,CAAC,EAAE,EAAIA,EAAe,CAAC,EAAE,CAAC,IACtD,CAAC,CACH,EAEA,OAAAF,EAAO,GAAG,eAAgBC,CAAc,EACxCA,EAAAA,EAEO,IAAM,CACXD,EAAO,IAAI,eAAgBC,CAAc,CAC3C,CACF,EAAG,CAACd,EAAUE,CAAK,CAAC,EAGhB,CAACS,EAAeV,CAAQ,EAAG,OAAO,KAEtC,MAAMmB,EAAanB,EAAS,MAE5B,OAAOoB,EAAapB,EAAU,CAC5B,GAAGmB,EACH,IAAKb,EACL,MAAO,CACL,SAAU,WACV,GAAGa,EAAW,KAChB,CACF,CAAQ,CACV"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{default as o}from"./container/ReactFabric/index.mjs";import{useReactFabric as a}from"./hooks/useReactFabric.mjs";import{useZoom as l}from"./hooks/useZoom.mjs";import{
|
|
1
|
+
"use client";import{default as o}from"./container/ReactFabric/index.mjs";import{useReactFabric as a}from"./hooks/useReactFabric.mjs";import{useZoom as l}from"./hooks/useZoom.mjs";import{useStore as s,useStoreApi as x}from"./hooks/useStore.mjs";import{default as p}from"./components/BackgroundImage/index.mjs";import{default as i}from"./components/Canvas/index.mjs";import{default as c}from"./components/Group/index.mjs";import{default as g}from"./components/NodeToolbarPortal/index.mjs";import{ReactFabricProvider as F}from"./components/ReactFabricProvider.mjs";import{default as T}from"./components/Rect/index.mjs";import{default as C}from"./components/Control/index.mjs";import{default as h}from"./components/Image/index.mjs";import{default as y}from"./components/Control2/index.mjs";import{default as L}from"./components/Text/index.mjs";import{default as j}from"./components/Path/index.mjs";import{default as A}from"./components/Line/index.mjs";import{default as D}from"./components/Ellipse/index.mjs";import{default as M}from"./components/IText/index.mjs";import{default as O}from"./components/Textbox/index.mjs";import{default as Z}from"./components/Polyline/index.mjs";import{default as z}from"./components/WavyLine/index.mjs";import{default as J}from"./components/Objects/index.mjs";import{default as Q}from"./plugins/FreeRect.mjs";import{default as V}from"./plugins/GridLine.mjs";import{default as Y}from"./plugins/Pinch.mjs";import{default as $}from"./plugins/FreeDraw.mjs";import{default as re}from"./plugins/FreeText.mjs";import{default as te}from"./plugins/Mask.mjs";export{p as BackgroundImage,i as Canvas,C as Control,y as Control2,D as Ellipse,c as Group,M as IText,h as Image,A as Line,g as NodeToolbarPortal,J as Objects,j as Path,$ as PluginFreeDraw,Q as PluginFreeRect,re as PluginFreeText,V as PluginGrid,te as PluginMask,Y as PluginPinch,Z as Polyline,o as ReactFabric,F as ReactFabricProvider,T as Rect,L as Text,O as Textbox,z as WavyLine,a as useReactFabric,s as useStore,x as useStoreApi,l as useZoom};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -8,5 +8,5 @@ import type { FabricObject } from 'fabric';
|
|
|
8
8
|
* @param children 需要处理的子元素
|
|
9
9
|
* @returns 处理后的 children
|
|
10
10
|
*/
|
|
11
|
-
export declare function useInstancePosition(instance: FabricObject | undefined, children: ReactNode):
|
|
11
|
+
export declare function useInstancePosition(instance: FabricObject | undefined, children: ReactNode): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
|
|
12
12
|
//# sourceMappingURL=useInstancePosition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInstancePosition.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInstancePosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS
|
|
1
|
+
{"version":3,"file":"useInstancePosition.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInstancePosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,qGAoE1F"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { default as ReactFabric } from './container/ReactFabric';
|
|
|
2
2
|
export type { ReactFabricProps } from './container/ReactFabric';
|
|
3
3
|
export { useReactFabric } from './hooks/useReactFabric';
|
|
4
4
|
export { useZoom } from './hooks/useZoom';
|
|
5
|
+
export { useStore, useStoreApi } from './hooks/useStore';
|
|
5
6
|
export { default as BackgroundImage } from './components/BackgroundImage';
|
|
6
7
|
export { default as Canvas } from './components/Canvas';
|
|
7
8
|
export { default as Group } from './components/Group';
|
|
@@ -28,6 +29,8 @@ export { default as IText } from './components/IText';
|
|
|
28
29
|
export type { ITextProps } from './components/IText';
|
|
29
30
|
export { default as Textbox } from './components/Textbox';
|
|
30
31
|
export type { TextboxProps } from './components/Textbox';
|
|
32
|
+
export { default as Polyline } from './components/Polyline';
|
|
33
|
+
export type { PolylineProps } from './components/Polyline';
|
|
31
34
|
export { default as WavyLine } from './components/WavyLine';
|
|
32
35
|
export type { WavyLineProps } from './components/WavyLine';
|
|
33
36
|
export { default as Objects } from './components/Objects';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAEhF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGxD,cAAc,WAAW,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cs-open/react-fabric",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.12",
|
|
5
5
|
"description": "React Fabric",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"@cs-open/react-fabric",
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
"typescript-eslint": "^8.17.0",
|
|
89
89
|
"use-sync-external-store": "^1.4.0",
|
|
90
90
|
"zustand": "^4.0.0 || ^5.0.0",
|
|
91
|
-
"@cs-open/
|
|
92
|
-
"@cs-open/
|
|
93
|
-
"@cs-open/
|
|
91
|
+
"@cs-open/tsconfig": "0.0.9",
|
|
92
|
+
"@cs-open/rollup-config": "0.0.9",
|
|
93
|
+
"@cs-open/eslint-config": "0.0.9"
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"es-toolkit": "^1.39.10",
|