react-resize-demo 2.0.3 → 4.1.0
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/CHANGELOG.md +366 -0
- package/README.md +192 -117
- package/dist/core/virtualNode.js +2 -0
- package/dist/core/virtualNode.js.map +1 -0
- package/dist/esm/core/virtualNode.js +2 -0
- package/dist/esm/core/virtualNode.js.map +1 -0
- package/dist/esm/index.d.ts +7 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/strategies/basic/components/ResizeHandle/index.d.ts +25 -0
- package/dist/esm/strategies/basic/components/ResizeHandle/index.js +2 -0
- package/dist/esm/strategies/basic/components/ResizeHandle/index.js.map +1 -0
- package/dist/esm/{components → strategies/basic/components}/ResizePanel/index.d.ts +2 -1
- package/dist/esm/strategies/basic/components/ResizePanel/index.js +2 -0
- package/dist/esm/strategies/basic/components/ResizePanel/index.js.map +1 -0
- package/dist/{components → esm/strategies/basic/components}/ResizePanelGroup/index.d.ts +5 -3
- package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js +2 -0
- package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
- package/dist/esm/strategies/basic/context.d.ts +29 -0
- package/dist/esm/strategies/basic/context.js +2 -0
- package/dist/esm/strategies/basic/context.js.map +1 -0
- package/dist/esm/strategies/basic/resizeAble.js +2 -0
- package/dist/esm/strategies/basic/resizeAble.js.map +1 -0
- package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.d.ts +25 -0
- package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
- package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
- package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +24 -0
- package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
- package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
- package/dist/esm/strategies/flex/resizeAble.js +2 -0
- package/dist/esm/strategies/flex/resizeAble.js.map +1 -0
- package/dist/esm/types/index.d.ts +32 -2
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/resizeHelpers.js +2 -0
- package/dist/esm/utils/resizeHelpers.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.js +1 -1
- package/dist/strategies/basic/components/ResizeHandle/index.d.ts +25 -0
- package/dist/strategies/basic/components/ResizeHandle/index.js +2 -0
- package/dist/strategies/basic/components/ResizeHandle/index.js.map +1 -0
- package/dist/{components → strategies/basic/components}/ResizePanel/index.d.ts +2 -1
- package/dist/strategies/basic/components/ResizePanel/index.js +2 -0
- package/dist/strategies/basic/components/ResizePanel/index.js.map +1 -0
- package/dist/{esm → strategies/basic}/components/ResizePanelGroup/index.d.ts +5 -3
- package/dist/strategies/basic/components/ResizePanelGroup/index.js +2 -0
- package/dist/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
- package/dist/strategies/basic/context.d.ts +29 -0
- package/dist/strategies/basic/context.js +2 -0
- package/dist/strategies/basic/context.js.map +1 -0
- package/dist/strategies/basic/resizeAble.js +2 -0
- package/dist/strategies/basic/resizeAble.js.map +1 -0
- package/dist/strategies/flex/components/ResizeHandleFlex/index.d.ts +25 -0
- package/dist/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
- package/dist/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
- package/dist/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +24 -0
- package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
- package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
- package/dist/strategies/flex/resizeAble.js +2 -0
- package/dist/strategies/flex/resizeAble.js.map +1 -0
- package/dist/types/index.d.ts +32 -2
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/resizeHelpers.js +2 -0
- package/dist/utils/resizeHelpers.js.map +1 -0
- package/package.json +165 -134
- package/dist/components/ResizeHandle/index.js +0 -2
- package/dist/components/ResizeHandle/index.js.map +0 -1
- package/dist/components/ResizePanel/index.js +0 -2
- package/dist/components/ResizePanel/index.js.map +0 -1
- package/dist/components/ResizePanelGroup/index.js +0 -2
- package/dist/components/ResizePanelGroup/index.js.map +0 -1
- package/dist/components/shared/context.js +0 -2
- package/dist/components/shared/context.js.map +0 -1
- package/dist/esm/components/ResizeHandle/index.js +0 -2
- package/dist/esm/components/ResizeHandle/index.js.map +0 -1
- package/dist/esm/components/ResizePanel/index.js +0 -2
- package/dist/esm/components/ResizePanel/index.js.map +0 -1
- package/dist/esm/components/ResizePanelGroup/index.js +0 -2
- package/dist/esm/components/ResizePanelGroup/index.js.map +0 -1
- package/dist/esm/components/shared/context.js +0 -2
- package/dist/esm/components/shared/context.js.map +0 -1
- package/dist/esm/utils/resizeAble.js +0 -2
- package/dist/esm/utils/resizeAble.js.map +0 -1
- package/dist/esm/utils/virtualNode.js +0 -2
- package/dist/esm/utils/virtualNode.js.map +0 -1
- package/dist/utils/resizeAble.js +0 -2
- package/dist/utils/resizeAble.js.map +0 -1
- package/dist/utils/virtualNode.js +0 -2
- package/dist/utils/virtualNode.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"react";const n=e.createContext({panelCount:0,registerPanel:()=>0,unregisterPanel:()=>{},getPanelInfo:()=>null,getPanelIndex:()=>-1,direction:"horizontal",panelInfos:[],virtualConfig:{enabled:!1},onPanelsChange:void 0,flexConfig:void 0}),t=()=>{const t=e.useContext(n);if(!t)throw new Error("useResizableContext must be used within ResizablePanelGroup");return t};export{n as ResizableContext,t as useResizableContext};
|
|
2
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../../src/strategies/basic/context.tsx"],"sourcesContent":[null],"names":["ResizableContext","React","createContext","panelCount","registerPanel","unregisterPanel","getPanelInfo","getPanelIndex","direction","panelInfos","virtualConfig","enabled","onPanelsChange","undefined","flexConfig","useResizableContext","context","useContext","Error"],"mappings":"qBAsBA,MAgBaA,EAAmBC,EAAMC,cAhBa,CAC/CC,WAAY,EACZC,cAAe,IAAM,EACrBC,gBAAiB,OACjBC,aAAc,IAAM,KACpBC,cAAe,KAAM,EACrBC,UAAW,aACXC,WAAY,GACZC,cAAe,CAAEC,SAAS,GAC1BC,oBAAgBC,EAChBC,gBAAYD,IAWHE,EAAsB,KAC/B,MAAMC,EAAUf,EAAMgB,WAAWjB,GACjC,IAAKgB,EACD,MAAM,IAAIE,MAAM,+DAEpB,OAAOF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../../core/virtualNode.js";import{calculateTotalCompressableSpace as t,calculateTotalStretchableSpace as i,performCompression as a,performStretch as l}from"../../utils/resizeHelpers.js";class n{constructor(t){Object.defineProperty(this,"getPanelInfo",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"prePanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextPanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"direction",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualEnabled",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualConfig",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isResizing",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"allPanelsStartSizes",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsStartPositions",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsCurrentSizes",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"panelInfosCache",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"handleSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualNodeManager",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.getPanelInfo=t.getPanelInfo,this.prePanelIndex=t.prePanelIndex,this.nextPanelIndex=t.nextPanelIndex,this.direction=t.direction,this.virtualEnabled=t.virtualEnabled||!1,this.virtualConfig=t.virtualConfig||{},this.handleSize=t.handleSize||0,this.virtualEnabled&&(this.virtualNodeManager=new e)}recordPanelInitialState(e,t,i){this.panelInfosCache.set(e,t);const a=this.getSize(t.panelEl);if(this.allPanelsStartSizes.set(e,a),this.allPanelsCurrentSizes.set(e,a),i){const i=this.getPosition(t.panelEl);this.allPanelsStartPositions.set(e,i),this.virtualNodeManager&&this.virtualNodeManager.createVirtualNode(t.panelEl,this.virtualConfig)}else{const e="horizontal"===this.direction?"width":"height";t.panelEl.style.flex="none",t.panelEl.style[e]=`${a}px`}}startResize(){this.isResizing=!0,this.allPanelsCurrentSizes.clear(),this.panelInfosCache.clear();const e=!(!this.virtualEnabled||!this.virtualNodeManager);let t=this.prePanelIndex-1;for(;t>=0;){const i=this.getPanelInfo(t);if(!i)break;this.recordPanelInitialState(t,i,e),t--}const i=this.getPanelInfo(this.prePanelIndex);i&&this.recordPanelInitialState(this.prePanelIndex,i,e);const a=this.getPanelInfo(this.nextPanelIndex);a&&this.recordPanelInitialState(this.nextPanelIndex,a,e);let l=this.nextPanelIndex+1,n=this.getPanelInfo(l);for(;n;)this.recordPanelInitialState(l,n,e),l++,n=this.getPanelInfo(l)}onResize(e){this.isResizing&&(this.resetAllPanelsToStartSizes(),0!==Math.abs(e)&&(e>0?this.adjustPanelsWithPreCheck(e,"right"):this.adjustPanelsWithPreCheck(-e,"left")))}resetAllPanelsToStartSizes(){const e="horizontal"===this.direction?"width":"height";this.allPanelsStartSizes.forEach((t,i)=>{this.allPanelsCurrentSizes.set(i,t);const a=this.panelInfosCache.get(i);a&&(this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(a.panelEl,t,this.direction):a.panelEl.style[e]=`${t}px`)})}adjustPanelsWithPreCheck(e,n){let s,r,o,h,d,u;"left"===n?(s=this.prePanelIndex,r=-1,o=this.nextPanelIndex,h=this.findMaxIndex()+1,d="backward",u="forward"):(s=this.nextPanelIndex,r=this.findMaxIndex()+1,o=this.prePanelIndex,h=-1,d="forward",u="backward");const c=t(this.allPanelsCurrentSizes,s,r,this.panelInfosCache,d),f=i(this.allPanelsCurrentSizes,o,h,this.panelInfosCache,u);if(0===c||0===f)return;const P=Math.min(c,f===1/0?e:f,e);if(0===P)return;const g=a(this.allPanelsCurrentSizes,s,r,this.panelInfosCache,d,P);l(this.allPanelsCurrentSizes,o,h,this.panelInfosCache,u,g),this.applySizesToDOM()}findMaxIndex(){let e=Math.max(this.prePanelIndex,this.nextPanelIndex);return this.allPanelsStartSizes.forEach((t,i)=>{i>e&&(e=i)}),e}applySizesToDOM(){const e="horizontal"===this.direction?"width":"height";this.allPanelsCurrentSizes.forEach((t,i)=>{const a=this.panelInfosCache.get(i);a&&(this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(a.panelEl,t,this.direction):a.panelEl.style[e]=`${t}px`)}),this.virtualEnabled&&this.virtualNodeManager&&this.recalculateAllPanelsPositions()}recalculateAllPanelsPositions(){if(!this.virtualEnabled||!this.virtualNodeManager)return;const e=Array.from(this.allPanelsCurrentSizes.keys()).sort((e,t)=>e-t);if(0===e.length)return;const t=e[0];let i=this.allPanelsStartPositions.get(t)||0;for(let t=0;t<e.length;t++){const a=e[t],l=this.panelInfosCache.get(a);if(l){if(t>0){const l=e[t-1];i+=(this.allPanelsCurrentSizes.get(l)||0)+this.handleSize;for(let e=l+1;e<a;e++){const t=this.allPanelsCurrentSizes.get(e)||this.allPanelsStartSizes.get(e)||0;t>0&&(i+=t+this.handleSize)}}this.virtualNodeManager.getVirtualNode(l.panelEl)&&this.virtualNodeManager.updateVirtualNodePosition(l.panelEl,i,this.direction),i+=(this.allPanelsCurrentSizes.get(a)||0)+this.handleSize}}}getSize(e){return"horizontal"===this.direction?e.offsetWidth:e.offsetHeight}getPosition(e){return"horizontal"===this.direction?e.offsetLeft:e.offsetTop}endResize(){if(this.isResizing=!1,this.virtualEnabled&&this.virtualNodeManager){const e="horizontal"===this.direction?"width":"height";this.allPanelsStartSizes.forEach((t,i)=>{const a=this.panelInfosCache.get(i);if(!a)return;const l=this.virtualNodeManager.getVirtualNode(a.panelEl);if(l){const t="horizontal"===this.direction?l.offsetWidth:l.offsetHeight;a.panelEl.style.flex="none",a.panelEl.style[e]=`${t}px`}}),this.virtualNodeManager.removeAllVirtualNodes(),requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const i=this.panelInfosCache.get(t);i&&(i.panelEl.style.flex="")})})}else requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const i=this.panelInfosCache.get(t);i&&(i.panelEl.style.flex="")})});this.panelInfosCache.clear(),this.allPanelsStartSizes.clear()}destroy(){this.endResize(),this.virtualNodeManager&&this.virtualNodeManager.destroy()}}export{n as default};
|
|
2
|
+
//# sourceMappingURL=resizeAble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeAble.js","sources":["../../../../src/strategies/basic/resizeAble.ts"],"sourcesContent":[null],"names":["ResizeAbleCore","constructor","options","Object","defineProperty","this","value","Map","getPanelInfo","prePanelIndex","nextPanelIndex","direction","virtualEnabled","virtualConfig","handleSize","virtualNodeManager","VirtualNodeManager","recordPanelInitialState","index","panelInfo","isVirtual","panelInfosCache","set","size","getSize","panelEl","allPanelsStartSizes","allPanelsCurrentSizes","pos","getPosition","allPanelsStartPositions","createVirtualNode","sizeProperty","style","flex","startResize","isResizing","clear","prevIndex","prePanelInfo","nextPanelInfo","nextIndex","onResize","delta","resetAllPanelsToStartSizes","Math","abs","adjustPanelsWithPreCheck","forEach","startSize","get","updateVirtualNode","compressDir","compressStartIndex","compressEndIndex","stretchStartIndex","stretchEndIndex","compressDirection","stretchDirection","findMaxIndex","totalCanCompress","calculateTotalCompressableSpace","totalCanStretch","calculateTotalStretchableSpace","realOperatePixel","min","Infinity","compressedTotal","performCompression","performStretch","applySizesToDOM","maxIndex","max","_","newSize","recalculateAllPanelsPositions","allIndices","Array","from","keys","sort","a","b","length","firstIndex","currentPosition","i","midIndex","midSize","getVirtualNode","updateVirtualNodePosition","el","offsetWidth","offsetHeight","offsetLeft","offsetTop","endResize","virtualEl","finalSize","removeAllVirtualNodes","requestAnimationFrame","destroy"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResizeDirection } from '../../../../types/index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 拖拽手柄组件(Flex 布局策略)
|
|
6
|
+
* 使用 flex-basis 而不是直接设置 width/height
|
|
7
|
+
* 参考 react-resizable-panels 的实现方式
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface ResizeHandleRenderProps {
|
|
11
|
+
prePanelIndex: number;
|
|
12
|
+
nextPanelIndex: number;
|
|
13
|
+
direction: ResizeDirection;
|
|
14
|
+
isResizing?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ResizeHandleFlexProps {
|
|
17
|
+
prePanelIndex: number;
|
|
18
|
+
nextPanelIndex: number;
|
|
19
|
+
direction: ResizeDirection;
|
|
20
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
declare const ResizeHandleFlex: React.FC<ResizeHandleFlexProps>;
|
|
23
|
+
|
|
24
|
+
export { ResizeHandleFlex };
|
|
25
|
+
export type { ResizeHandleFlexProps, ResizeHandleRenderProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{useRef as n,useState as t,useEffect as r}from"react";import l from"../../resizeAble.js";import{useResizableContext as o}from"../../../basic/context.js";const i=({prePanelIndex:i,nextPanelIndex:a,direction:u,renderHandle:s})=>{const c=n(null),d=n(null),{getPanelInfo:m,panelCount:f,virtualConfig:p,onPanelsChange:x,flexConfig:v}=o(),[g,h]=t(!1);r(()=>{if(!c.current)return;const e=m(i),n=m(a);if(!e||!n)return;const t=c.current?"horizontal"===u?c.current.offsetWidth:c.current.offsetHeight:10;d.current=new l({prePanelEl:e.panelEl,nextPanelEl:n.panelEl,getPanelInfo:m,prePanelIndex:i,nextPanelIndex:a,direction:u,virtualEnabled:p.enabled||!1,virtualConfig:{style:p.style,className:p.className},handleSize:t,onPanelsChange:x,flexConfig:v});const r=c.current;if(!r)return;let o=!1,s=0,f=0,g=null;const z=e=>{e.preventDefault(),e.stopPropagation(),o=!0,h(!0),s="horizontal"===u?e.clientX:e.clientY,f=0,null!==g&&(cancelAnimationFrame(g),g=null),d.current&&d.current.startResize()},P=()=>{o&&d.current?(d.current.onResize(f),g=null):g=null},E=e=>{if(!o||!d.current)return;const n="horizontal"===u?e.clientX:e.clientY;f=n-s,null===g&&(g=requestAnimationFrame(P))},I=()=>{o&&d.current&&(null!==g&&(cancelAnimationFrame(g),g=null),d.current.onResize(f),o=!1,h(!1),d.current.endResize())};return r.addEventListener("mousedown",z),document.addEventListener("mousemove",E),document.addEventListener("mouseup",I),()=>{r.removeEventListener("mousedown",z),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",I),null!==g&&(cancelAnimationFrame(g),g=null),d.current&&(d.current.destroy(),d.current=null)}},[i,a,u,m,f,p,x,v]);const z="horizontal"===u,P=s?s({prePanelIndex:i,nextPanelIndex:a,direction:u,isResizing:g}):null;return e("div",{ref:c,style:{position:"relative",width:z?"10px":"100%",height:z?"100%":"10px",backgroundColor:s?"transparent":"#000",cursor:z?"ew-resize":"ns-resize",zIndex:1e3,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},children:P})};export{i as ResizeHandleFlex};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/strategies/flex/components/ResizeHandleFlex/index.tsx"],"sourcesContent":[null],"names":["ResizeHandleFlex","prePanelIndex","nextPanelIndex","direction","renderHandle","handleRef","useRef","coreInstanceRef","getPanelInfo","panelCount","virtualConfig","onPanelsChange","flexConfig","useResizableContext","isResizing","setIsResizing","useState","useEffect","current","prePanelInfo","nextPanelInfo","handleSize","offsetWidth","offsetHeight","ResizeAbleCoreFlex","prePanelEl","panelEl","nextPanelEl","virtualEnabled","enabled","style","className","handleEl","startPos","currentDelta","rafId","startResize","e","preventDefault","stopPropagation","clientX","clientY","cancelAnimationFrame","updatePanelsWithRAF","onResize","onResizeMove","currentPos","requestAnimationFrame","endResize","addEventListener","document","removeEventListener","destroy","isHorizontal","handleContent","_jsx","ref","position","width","height","backgroundColor","cursor","zIndex","flexShrink","display","alignItems","justifyContent","children"],"mappings":"uMAwBO,MAAMA,EAAoD,EAC7DC,gBACAC,iBACAC,YACAC,mBAEA,MAAMC,EAAYC,EAAuB,MACnCC,EAAkBD,EAAuD,OACzEE,aAAEA,EAAYC,WAAEA,EAAUC,cAAEA,EAAaC,eAAEA,EAAcC,WAAEA,GAAeC,KACzEC,EAAYC,GAAiBC,GAAS,GAE7CC,EAAU,KACN,IAAKZ,EAAUa,QACX,OAIJ,MAAMC,EAAeX,EAAaP,GAC5BmB,EAAgBZ,EAAaN,GACnC,IAAIiB,IAAiBC,EAEjB,OAIJ,MAAMC,EAAahB,EAAUa,QACR,eAAdf,EACGE,EAAUa,QAAQI,YAClBjB,EAAUa,QAAQK,aACQ,GAGpChB,EAAgBW,QAAU,IAAIM,EAAmB,CAC7CC,WAAYN,EAAaO,QACzBC,YAAaP,EAAcM,QAC3BlB,eACAP,gBACAC,iBACAC,YACAyB,eAAgBlB,EAAcmB,UAAW,EACzCnB,cAAe,CACXoB,MAAOpB,EAAcoB,MACrBC,UAAWrB,EAAcqB,WAE7BV,aACAV,iBACAC,eAIJ,MAAMoB,EAAW3B,EAAUa,QAC3B,IAAKc,EAAU,OAEf,IAAIlB,GAAa,EACbmB,EAAW,EACXC,EAAe,EACfC,EAAuB,KAE3B,MAAMC,EAAeC,IACjBA,EAAEC,iBACFD,EAAEE,kBACFzB,GAAa,EACbC,GAAc,GACdkB,EAAyB,eAAd9B,EAA6BkC,EAAEG,QAAUH,EAAEI,QACtDP,EAAe,EACD,OAAVC,IACAO,qBAAqBP,GACrBA,EAAQ,MAER5B,EAAgBW,SAChBX,EAAgBW,QAAQkB,eAU1BO,EAAsB,KACnB7B,GAAeP,EAAgBW,SAQpCX,EAAgBW,QAAQ0B,SAASV,GAEjCC,EAAQ,MATJA,EAAQ,MAYVU,EAAgBR,IAClB,IAAIvB,IAAeP,EAAgBW,QAAS,OAC5C,MAAM4B,EAA2B,eAAd3C,EAA6BkC,EAAEG,QAAUH,EAAEI,QAE9DP,EAAeY,EAAab,EAId,OAAVE,IACAA,EAAQY,sBAAsBJ,KAIhCK,EAAY,KACXlC,GAAcP,EAAgBW,UAEf,OAAViB,IACAO,qBAAqBP,GACrBA,EAAQ,MAGZ5B,EAAgBW,QAAQ0B,SAASV,GACjCpB,GAAa,EACbC,GAAc,GACdR,EAAgBW,QAAQ8B,cAQhC,OAJAhB,EAASiB,iBAAiB,YAAab,GACvCc,SAASD,iBAAiB,YAAaJ,GACvCK,SAASD,iBAAiB,UAAWD,GAE9B,KAEHhB,EAASmB,oBAAoB,YAAaf,GAC1Cc,SAASC,oBAAoB,YAAaN,GAC1CK,SAASC,oBAAoB,UAAWH,GAG1B,OAAVb,IACAO,qBAAqBP,GACrBA,EAAQ,MAIT5B,EAAgBW,UACfX,EAAgBW,QAAQkC,UACxB7C,EAAgBW,QAAU,QAGnC,CAACjB,EAAeC,EAAgBC,EAAWK,EAAcC,EAAYC,EAAeC,EAAgBC,IAEvG,MAAMyC,EAA6B,eAAdlD,EAGfmD,EAAgBlD,EAAeA,EAAa,CAC9CH,gBACAC,iBACAC,YACAW,eACC,KAEL,OACIyC,EAAA,MAAA,CACIC,IAAKnD,EACLyB,MAAO,CACH2B,SAAU,WACVC,MAAOL,EAAe,OAAS,OAC/BM,OAAQN,EAAe,OAAS,OAChCO,gBAAiBxD,EAAe,cAAgB,OAChDyD,OAAQR,EAAe,YAAc,YACrCS,OAAQ,IACRC,WAAY,EACZC,QAAS,OACTC,WAAY,SACZC,eAAgB,UACnBC,SAEAb"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResizeHandleRenderProps } from '../ResizeHandleFlex/index.js';
|
|
3
|
+
import { ResizeDirection, VirtualConfig, FlexStrategyConfig } from '../../../../types/index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 可调整大小的面板组容器组件(Flex 布局策略)
|
|
7
|
+
* 使用 flex-basis 而不是直接设置 width/height
|
|
8
|
+
* 参考 react-resizable-panels 的实现方式
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
interface ResizePanelGroupFlexProps {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
direction?: ResizeDirection;
|
|
14
|
+
virtual?: boolean;
|
|
15
|
+
virtualConfig?: VirtualConfig;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
onPanelsChange?: (changedIndices: Set<number>) => void;
|
|
18
|
+
flexConfig?: FlexStrategyConfig;
|
|
19
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare const ResizePanelGroupFlex: React.FC<ResizePanelGroupFlexProps>;
|
|
22
|
+
|
|
23
|
+
export { ResizePanelGroupFlex };
|
|
24
|
+
export type { ResizePanelGroupFlexProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import n,{useRef as r,useState as t,useCallback as l}from"react";import{ResizableContext as i}from"../../../basic/context.js";import{ResizeHandleFlex as o}from"../ResizeHandleFlex/index.js";const u=({children:u,direction:a="horizontal",style:c,virtual:d=!1,virtualConfig:s={},onPanelsChange:f,flexConfig:h,renderHandle:g})=>{const p=r([]),m=r(new Map),[x,v]=t(0),P=l((e,n)=>{const r=m.current.get(e);if(void 0!==r)return p.current[r]={panelEl:e,minSize:n},r;let t=-1;for(let e=0;e<p.current.length;e++)if(!p.current[e]){t=e;break}return-1===t?(t=p.current.length,p.current.push({panelEl:e,minSize:n})):p.current[t]={panelEl:e,minSize:n},m.current.set(e,t),v(p.current.filter(e=>null!=e).length),t},[]),C=l(e=>{const n=m.current.get(e);void 0!==n&&(p.current[n]=null,m.current.delete(e),v(p.current.filter(e=>null!=e).length))},[]),z=l(e=>{if(e<0||e>=p.current.length)return null;const n=p.current[e];return n&&n.panelEl?n:null},[]),E=l(e=>m.current.get(e)??-1,[]),I=n.Children.toArray(u),y=[];I.forEach((n,r)=>{y.push(n),r<I.length-1&&y.push(e(o,{prePanelIndex:r,nextPanelIndex:r+1,direction:a,renderHandle:g},`handle-${r}`))});const b={enabled:d,...s},j={panelCount:x,registerPanel:P,unregisterPanel:C,getPanelInfo:z,getPanelIndex:E,direction:a,panelInfos:p.current.filter(e=>null!=e),virtualConfig:b,onPanelsChange:f,flexConfig:h};return e(i.Provider,{value:j,children:e("div",{style:{display:"flex",flexDirection:"horizontal"===a?"row":"column",height:"100%",position:"relative",...c},children:y})})};export{u as ResizePanelGroupFlex};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/strategies/flex/components/ResizePanelGroupFlex/index.tsx"],"sourcesContent":[null],"names":["ResizePanelGroupFlex","children","direction","style","virtual","virtualConfig","onPanelsChange","flexConfig","renderHandle","panelInfosRef","useRef","elementToIndexMapRef","Map","panelCount","setPanelCount","useState","registerPanel","useCallback","panelEl","minSize","existingIndex","current","get","undefined","index","i","length","push","set","filter","p","unregisterPanel","delete","getPanelInfo","info","getPanelIndex","childrenArray","React","Children","toArray","panelsWithHandles","forEach","child","_jsx","ResizeHandleFlex","prePanelIndex","nextPanelIndex","mergedVirtualConfig","enabled","contextValue","panelInfos","ResizableContext","Provider","value","display","flexDirection","height","position"],"mappings":"sOAqBO,MAAMA,EAA4D,EACrEC,WACAC,YAAY,aACZC,QACAC,WAAU,EACVC,gBAAgB,CAAA,EAChBC,iBACAC,aACAC,mBAGA,MAAMC,EAAgBC,EAA6B,IAC7CC,EAAuBD,EAAiC,IAAIE,MAC3DC,EAAYC,GAAiBC,EAAS,GAEvCC,EAAgBC,EAAY,CAACC,EAAsBC,KAErD,MAAMC,EAAgBT,EAAqBU,QAAQC,IAAIJ,GACvD,QAAsBK,IAAlBH,EAGA,OADAX,EAAcY,QAAQD,GAAiB,CAAEF,UAASC,WAC3CC,EAIX,IAAII,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIhB,EAAcY,QAAQK,OAAQD,IAC9C,IAAKhB,EAAcY,QAAQI,GAAI,CAC3BD,EAAQC,EACR,KACJ,CAcJ,OAXc,IAAVD,GAEAA,EAAQf,EAAcY,QAAQK,OAC9BjB,EAAcY,QAAQM,KAAK,CAAET,UAASC,aAGtCV,EAAcY,QAAQG,GAAS,CAAEN,UAASC,WAG9CR,EAAqBU,QAAQO,IAAIV,EAASM,GAC1CV,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,QACxEF,GACR,IAEGO,EAAkBd,EAAaC,IACjC,MAAMM,EAAQb,EAAqBU,QAAQC,IAAIJ,QACjCK,IAAVC,IAEAf,EAAcY,QAAQG,GAAS,KAC/Bb,EAAqBU,QAAQW,OAAOd,GACpCJ,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,UAEpF,IAEGO,EAAehB,EAAaO,IAC9B,GAAIA,EAAQ,GAAKA,GAASf,EAAcY,QAAQK,OAC5C,OAAO,KAEX,MAAMQ,EAAOzB,EAAcY,QAAQG,GAEnC,OAAQU,GAAQA,EAAKhB,QAAWgB,EAAO,MACxC,IAEGC,EAAgBlB,EAAaC,GACxBP,EAAqBU,QAAQC,IAAIJ,KAAY,EACrD,IAEGkB,EAAgBC,EAAMC,SAASC,QAAQtC,GACvCuC,EAAuC,GAE7CJ,EAAcK,QAAQ,CAACC,EAAOlB,KAC1BgB,EAAkBb,KAAKe,GAGnBlB,EAAQY,EAAcV,OAAS,GAC/Bc,EAAkBb,KACdgB,EAACC,EAAgB,CAEbC,cAAerB,EACfsB,eAAgBtB,EAAQ,EACxBtB,UAAWA,EACXM,aAAcA,GAJT,UAAUgB,QAW/B,MAAMuB,EAAqC,CACvCC,QAAS5C,KACNC,GAGD4C,EAAsC,CACxCpC,WAAYA,EACZG,gBACAe,kBACAE,eACAE,gBACAjC,YACAgD,WAAYzC,EAAcY,QAAQQ,OAAOC,GAAKA,SAC9CzB,cAAe0C,EACfzC,iBACAC,cAGJ,OACIoC,EAACQ,EAAiBC,SAAQ,CAACC,MAAOJ,EAAYhD,SAC1C0C,EAAA,MAAA,CAAKxC,MAAO,CACJmD,QAAS,OACTC,cAA6B,eAAdrD,EAA6B,MAAQ,SACpDsD,OAAQ,OACRC,SAAU,cACPtD,GACVF,SACIuC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../../core/virtualNode.js";import{DEFAULT_FLEX_STRATEGY_CONFIG as t}from"../../types/index.js";import{calculateTotalCompressableSpace as a,calculateTotalStretchableSpace as l,performCompression as n,performStretch as i}from"../../utils/resizeHelpers.js";class s{constructor(a){Object.defineProperty(this,"prePanelEl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"getPanelInfo",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"prePanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextPanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"direction",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualEnabled",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualConfig",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isResizing",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"containerEl",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"containerStartSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"allPanelsStartGrow",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsCurrentGrow",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsStartSizes",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsStartPositions",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"panelInfosCache",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelIndices",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"handleSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"virtualNodeManager",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"onPanelsChange",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"frozenPanels",{enumerable:!0,configurable:!0,writable:!0,value:new Set}),Object.defineProperty(this,"flexConfig",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.prePanelEl=a.prePanelEl,this.getPanelInfo=a.getPanelInfo,this.prePanelIndex=a.prePanelIndex,this.nextPanelIndex=a.nextPanelIndex,this.direction=a.direction,this.virtualEnabled=a.virtualEnabled||!1,this.virtualConfig=a.virtualConfig||{},this.handleSize=a.handleSize||0,this.onPanelsChange=a.onPanelsChange,this.flexConfig={...t,...a.flexConfig||{}},this.containerEl=this.prePanelEl.parentElement,this.virtualEnabled&&(this.virtualNodeManager=new e)}startResize(){this.isResizing=!0,this.allPanelsStartGrow.clear(),this.allPanelsCurrentGrow.clear(),this.allPanelsStartSizes.clear(),this.panelInfosCache.clear();const e=this.getContainerSize();if(0===e)return;this.allPanelIndices=[];let t=0,a=this.getPanelInfo(t);for(;a;)this.allPanelIndices.push(t),this.panelInfosCache.set(t,a),t++,a=this.getPanelInfo(t);const l=e-Math.max(0,this.allPanelIndices.length-1)*this.handleSize;this.containerStartSize=l>0?l:e;const n=[];let i=0;this.allPanelIndices.forEach(e=>{const t=this.panelInfosCache.get(e);if(!t)return;const a=this.getSize(t.panelEl),l=this.getPosition(t.panelEl);this.allPanelsStartSizes.set(e,a),this.allPanelsStartPositions.set(e,l),n.push(a),i+=a}),this.allPanelIndices.forEach((e,t)=>{const a=n[t],l=i>0?a/i*this.flexConfig.growNormalizeBase:1,s=Math.round(l*this.flexConfig.growPrecisionMultiplier)/this.flexConfig.growPrecisionMultiplier;this.allPanelsStartGrow.set(e,s),this.allPanelsCurrentGrow.set(e,s)}),this.virtualEnabled&&this.virtualNodeManager&&this.allPanelIndices.forEach(e=>{const t=this.panelInfosCache.get(e);t&&this.virtualNodeManager.createVirtualNode(t.panelEl,this.virtualConfig,this.direction)})}onResize(e){this.isResizing&&(Math.abs(e)<this.flexConfig.minDeltaThreshold||this.calculatePanelsByPosition(e))}calculatePanelsByPosition(e){if(0===this.containerStartSize)return;let t=0;if(this.allPanelIndices.forEach(e=>{t+=this.allPanelsStartGrow.get(e)||0}),0===t)return;this.virtualEnabled||this.unfreezeAllPanels();const a=new Map;this.allPanelIndices.forEach(e=>{const t=this.allPanelsStartSizes.get(e)||0;a.set(e,t)}),e>0?this.adjustSizesForPositiveDelta(a,e):this.adjustSizesForNegativeDelta(a,-e);const l=new Set;if(this.allPanelIndices.forEach(e=>{const t=this.allPanelsStartSizes.get(e)||0,n=a.get(e)||0;Math.abs(n-t)>this.flexConfig.sizeChangeThreshold&&l.add(e)}),0===l.size)return this.allPanelIndices.forEach(e=>{const t=this.allPanelsStartGrow.get(e)||0;this.allPanelsCurrentGrow.set(e,t)}),void this.updateAllPanelsFlexGrow();let n=0;l.forEach(e=>{n+=a.get(e)||0});let i=0;this.allPanelIndices.forEach(e=>{if(!l.has(e)){const t=this.allPanelsStartGrow.get(e)||0;i+=t,this.allPanelsCurrentGrow.set(e,t)}});const s=t-i;n>0&&s>0?l.forEach(e=>{const t=(a.get(e)||0)/n*s;this.allPanelsCurrentGrow.set(e,Math.max(0,t))}):l.forEach(e=>{const t=this.allPanelsStartGrow.get(e)||0;this.allPanelsCurrentGrow.set(e,t)}),this.updateAllPanelsFlexGrow()}adjustSizesForPositiveDelta(e,t){const s=this.allPanelIndices.indexOf(this.nextPanelIndex),r=this.allPanelIndices.indexOf(this.prePanelIndex);if(s<0||r<0)return;const o=this.nextPanelIndex,h=this.allPanelIndices[this.allPanelIndices.length-1]+1,c=this.prePanelIndex,f=a(e,o,h,this.panelInfosCache,"forward"),d=l(e,c,-1,this.panelInfosCache,"backward");if(0===f||0===d)return;const u=Math.min(f,d===1/0?t:d,t);if(0===u)return;const P=n(e,o,h,this.panelInfosCache,"forward",u);i(e,c,-1,this.panelInfosCache,"backward",P)}adjustSizesForNegativeDelta(e,t){const s=this.allPanelIndices.indexOf(this.prePanelIndex),r=this.allPanelIndices.indexOf(this.nextPanelIndex);if(s<0||r<0)return;const o=this.prePanelIndex,h=this.nextPanelIndex,c=this.allPanelIndices[this.allPanelIndices.length-1]+1,f=a(e,o,-1,this.panelInfosCache,"backward"),d=l(e,h,c,this.panelInfosCache,"forward");if(0===f||0===d)return;const u=Math.min(f,d===1/0?t:d,t);if(0===u)return;const P=n(e,o,-1,this.panelInfosCache,"backward",u);i(e,h,c,this.panelInfosCache,"forward",P)}updateAllPanelsFlexGrow(){const e=new Set;this.virtualEnabled&&this.virtualNodeManager?this.allPanelIndices.forEach(t=>{const a=this.allPanelsCurrentGrow.get(t);if(void 0===a)return;const l=this.panelInfosCache.get(t);if(!l)return;const n=this.allPanelsStartGrow.get(t);void 0!==n&&Math.abs(a-n)>this.flexConfig.growChangeThreshold&&(e.add(t),this.frozenPanels.has(t)&&this.unfreezePanel(t)),this.virtualNodeManager&&this.virtualNodeManager.updateVirtualNodeFlexGrow(l.panelEl,a,this.direction)}):this.allPanelIndices.forEach(t=>{const a=this.allPanelsCurrentGrow.get(t);if(void 0===a)return;const l=this.panelInfosCache.get(t);if(!l)return;const n=this.allPanelsStartGrow.get(t);void 0!==n&&Math.abs(a-n)>this.flexConfig.growChangeThreshold?(e.add(t),this.frozenPanels.has(t)&&this.unfreezePanel(t),this.setFlexGrow(l.panelEl,a)):this.frozenPanels.has(t)||this.freezePanel(t)}),e.size>0&&this.onPanelsChange&&this.onPanelsChange(e)}freezePanel(e){const t=this.panelInfosCache.get(e);if(!t)return;const a=t.panelEl,l=this.allPanelsStartSizes.get(e);if(void 0===l)return;const n=this.allPanelsCurrentGrow.get(e);void 0!==n&&(a.dataset.frozenGrow=n.toString());const i="horizontal"===this.direction?"width":"height";a.style.flex="none",a.style[i]=`${l}px`,this.frozenPanels.add(e)}unfreezePanel(e){const t=this.panelInfosCache.get(e);if(!t)return;const a=t.panelEl,l=a.dataset.frozenGrow,n=void 0!==l?parseFloat(l):this.allPanelsCurrentGrow.get(e)||this.allPanelsStartGrow.get(e)||0;this.setFlexGrow(a,n);const i="horizontal"===this.direction?"width":"height";a.style[i]="",this.frozenPanels.delete(e),delete a.dataset.frozenGrow}unfreezeAllPanels(){Array.from(this.frozenPanels).forEach(e=>{this.unfreezePanel(e)})}endResize(){this.isResizing=!1,this.unfreezeAllPanels(),this.virtualEnabled&&this.virtualNodeManager&&(this.allPanelsCurrentGrow.forEach((e,t)=>{const a=this.panelInfosCache.get(t);a&&this.setFlexGrow(a.panelEl,e)}),this.virtualNodeManager.removeAllVirtualNodes()),this.panelInfosCache.clear(),this.allPanelsStartGrow.clear(),this.allPanelsCurrentGrow.clear(),this.allPanelsStartSizes.clear(),this.allPanelsStartPositions.clear(),this.allPanelIndices=[],this.frozenPanels.clear()}destroy(){this.isResizing=!1,this.unfreezeAllPanels(),this.virtualNodeManager&&this.virtualNodeManager.removeAllVirtualNodes(),this.allPanelsStartGrow.clear(),this.allPanelsCurrentGrow.clear(),this.allPanelsStartSizes.clear(),this.allPanelsStartPositions.clear(),this.allPanelIndices=[],this.frozenPanels.clear()}getSize(e){return"horizontal"===this.direction?e.offsetWidth:e.offsetHeight}getContainerSize(){return this.containerEl?"horizontal"===this.direction?this.containerEl.offsetWidth:this.containerEl.offsetHeight:0}getPosition(e){if(!e.parentElement)return 0;const t=e.getBoundingClientRect(),a=e.parentElement.getBoundingClientRect();return"horizontal"===this.direction?t.left-a.left+(e.parentElement.scrollLeft||0):t.top-a.top+(e.parentElement.scrollTop||0)}setFlexGrow(e,t){const a=Math.max(0,Math.round(t*this.flexConfig.flexGrowPrecisionMultiplier)/this.flexConfig.flexGrowPrecisionMultiplier);e.style.flex=`${a} 1 0`}}export{s as default};
|
|
2
|
+
//# sourceMappingURL=resizeAble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeAble.js","sources":["../../../../src/strategies/flex/resizeAble.ts"],"sourcesContent":[null],"names":["ResizeAbleCoreFlex","constructor","options","Object","defineProperty","this","value","Map","Set","prePanelEl","getPanelInfo","prePanelIndex","nextPanelIndex","direction","virtualEnabled","virtualConfig","handleSize","onPanelsChange","flexConfig","DEFAULT_FLEX_STRATEGY_CONFIG","containerEl","parentElement","virtualNodeManager","VirtualNodeManager","startResize","isResizing","allPanelsStartGrow","clear","allPanelsCurrentGrow","allPanelsStartSizes","panelInfosCache","rawContainerSize","getContainerSize","allPanelIndices","index","panelInfo","push","set","availableSpace","Math","max","length","containerStartSize","panelSizes","totalSize","forEach","panelIndex","panel","get","size","getSize","panelEl","position","getPosition","allPanelsStartPositions","idx","grow","growNormalizeBase","roundedGrow","round","growPrecisionMultiplier","createVirtualNode","onResize","delta","abs","minDeltaThreshold","calculatePanelsByPosition","totalStartGrow","unfreezeAllPanels","newSizes","startSize","adjustSizesForPositiveDelta","adjustSizesForNegativeDelta","changedPanels","newSize","sizeChangeThreshold","add","startGrow","updateAllPanelsFlexGrow","totalChangedSize","totalUnchangedGrow","has","totalChangedGrow","newGrow","nextIndex","indexOf","preIndex","compressStartIndex","compressEndIndex","stretchStartIndex","totalCanCompress","calculateTotalCompressableSpace","totalCanStretch","calculateTotalStretchableSpace","realOperatePixel","min","Infinity","compressedTotal","performCompression","performStretch","stretchEndIndex","changedIndices","undefined","growChangeThreshold","frozenPanels","unfreezePanel","updateVirtualNodeFlexGrow","setFlexGrow","freezePanel","el","currentGrow","dataset","frozenGrow","toString","sizeProperty","style","flex","parseFloat","delete","Array","from","endResize","removeAllVirtualNodes","destroy","offsetWidth","offsetHeight","rect","getBoundingClientRect","parentRect","left","scrollLeft","top","scrollTop","flexGrowPrecisionMultiplier"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import React from 'react';
|
|
|
6
6
|
interface PanelInfo {
|
|
7
7
|
panelEl: HTMLElement;
|
|
8
8
|
minSize: number;
|
|
9
|
+
maxSize?: number;
|
|
9
10
|
}
|
|
10
11
|
/**
|
|
11
12
|
* 虚拟化配置接口
|
|
@@ -27,7 +28,34 @@ interface VirtualNodeConfig {
|
|
|
27
28
|
*/
|
|
28
29
|
type ResizeDirection = 'horizontal' | 'vertical';
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* 优化策略类型(已废弃,保留用于向后兼容)
|
|
32
|
+
*/
|
|
33
|
+
type OptimizationStrategy = 'normal';
|
|
34
|
+
/**
|
|
35
|
+
* 面板变化回调函数类型
|
|
36
|
+
* @param changedIndices - 发生变化的面板索引集合
|
|
37
|
+
*/
|
|
38
|
+
type OnPanelsChangeCallback = (changedIndices: Set<number>) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Flex 策略配置接口
|
|
41
|
+
* 用于配置 Flex 和 Flex-Linked 策略中的计算常量
|
|
42
|
+
*/
|
|
43
|
+
interface FlexStrategyConfig {
|
|
44
|
+
/** 最小 delta 阈值,小于此值的拖拽变化将被忽略(像素) */
|
|
45
|
+
minDeltaThreshold?: number;
|
|
46
|
+
/** 尺寸变化误差阈值,用于判断面板尺寸是否发生变化(像素) */
|
|
47
|
+
sizeChangeThreshold?: number;
|
|
48
|
+
/** grow 值变化阈值,用于判断 flex-grow 值是否发生变化 */
|
|
49
|
+
growChangeThreshold?: number;
|
|
50
|
+
/** grow 值归一化基数,用于计算初始 grow 值 */
|
|
51
|
+
growNormalizeBase?: number;
|
|
52
|
+
/** grow 值精度倍数,用于保留小数位数(例如 1000 表示保留3位小数) */
|
|
53
|
+
growPrecisionMultiplier?: number;
|
|
54
|
+
/** flex-grow 精度倍数,用于设置 flex-grow 时的精度(例如 100 表示保留2位小数) */
|
|
55
|
+
flexGrowPrecisionMultiplier?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* ResizeAbleCore 选项接口(常规策略)
|
|
31
59
|
*/
|
|
32
60
|
interface ResizeAbleCoreOptions {
|
|
33
61
|
prePanelEl: HTMLElement;
|
|
@@ -39,6 +67,8 @@ interface ResizeAbleCoreOptions {
|
|
|
39
67
|
virtualEnabled?: boolean;
|
|
40
68
|
virtualConfig?: VirtualNodeConfig;
|
|
41
69
|
handleSize?: number;
|
|
70
|
+
onPanelsChange?: OnPanelsChangeCallback;
|
|
71
|
+
flexConfig?: FlexStrategyConfig;
|
|
42
72
|
}
|
|
43
73
|
|
|
44
|
-
export type { PanelInfo, ResizeAbleCoreOptions, ResizeDirection, VirtualConfig, VirtualNodeConfig };
|
|
74
|
+
export type { FlexStrategyConfig, OnPanelsChangeCallback, OptimizationStrategy, PanelInfo, ResizeAbleCoreOptions, ResizeDirection, VirtualConfig, VirtualNodeConfig };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/types/index.ts"],"sourcesContent":[null],"names":["DEFAULT_FLEX_STRATEGY_CONFIG","minDeltaThreshold","sizeChangeThreshold","growChangeThreshold","growNormalizeBase","growPrecisionMultiplier","flexGrowPrecisionMultiplier"],"mappings":"AAkEO,MAAMA,EAA6D,CACtEC,kBAAmB,GACnBC,oBAAqB,GACrBC,oBAAqB,KACrBC,kBAAmB,IACnBC,wBAAyB,IACzBC,4BAA6B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function t(t,e){return Math.max(0,t-e)}function e(t,e){return void 0===e?1/0:Math.max(0,e-t)}function n(e,n,i,o,r){let f=0;if("forward"===r)for(let r=n;r<i;r++){const n=o.get(r);n&&(f+=t(e.get(r)||0,n.minSize))}else for(let r=n;r>=i;r--){const n=o.get(r);n&&(f+=t(e.get(r)||0,n.minSize))}return f}function i(t,n,i,o,r){let f=0;if("forward"===r)for(let r=n;r<i;r++){const n=o.get(r);if(!n)continue;const i=e(t.get(r)||0,n.maxSize);if(i===1/0)return 1/0;f+=i}else for(let r=n;r>=i;r--){const n=o.get(r);if(!n)continue;const i=e(t.get(r)||0,n.maxSize);if(i===1/0)return 1/0;f+=i}return f}function o(e,n,i,o,r,f){let c=0;if("forward"===r)for(let r=n;r<i&&c<f;r++){const n=o.get(r);if(!n)continue;const i=e.get(r)||0,s=t(i,n.minSize);if(0===s)continue;const u=Math.min(s,f-c);e.set(r,i-u),c+=u}else for(let r=n;r>=i&&c<f;r--){const n=o.get(r);if(!n)continue;const i=e.get(r)||0,s=t(i,n.minSize);if(0===s)continue;const u=Math.min(s,f-c);e.set(r,i-u),c+=u}return c}function r(t,n,i,o,r,f){let c=f;if("forward"===r)for(let r=n;r<i&&c>0;r++){const n=o.get(r);if(!n)continue;const i=t.get(r)||0,s=e(i,n.maxSize);if(0===s)continue;if(s===1/0)return t.set(r,i+c),f;const u=Math.min(s,c);t.set(r,i+u),c-=u}else for(let r=n;r>=i&&c>0;r--){const n=o.get(r);if(!n)continue;const i=t.get(r)||0,s=e(i,n.maxSize);if(0===s)continue;if(s===1/0)return t.set(r,i+c),f;const u=Math.min(s,c);t.set(r,i+u),c-=u}return f-c}export{t as calculateCompressableSpace,e as calculateStretchableSpace,n as calculateTotalCompressableSpace,i as calculateTotalStretchableSpace,o as performCompression,r as performStretch};
|
|
2
|
+
//# sourceMappingURL=resizeHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeHelpers.js","sources":["../../../src/utils/resizeHelpers.ts"],"sourcesContent":[null],"names":["calculateCompressableSpace","currentSize","minSize","Math","max","calculateStretchableSpace","maxSize","undefined","Infinity","calculateTotalCompressableSpace","sizes","startIndex","endIndex","panelInfosMap","direction","total","i","panelInfo","get","calculateTotalStretchableSpace","stretchable","performCompression","targetPixels","compressedTotal","compressable","compressOnce","min","set","performStretch","remainStretch","stretchOnce"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
export { ResizePanelGroup as ResizablePanelGroup, ResizePanelGroup as ResizeablePanelGroup } from './components/ResizePanelGroup/index.js';
|
|
2
|
-
export { ResizePanel as ResizablePanel, ResizePanel as ResizeablePanel } from './components/ResizePanel/index.js';
|
|
3
|
-
export {
|
|
1
|
+
export { ResizePanelGroup as ResizablePanelGroup, ResizePanelGroup, ResizePanelGroupProps, ResizePanelGroup as ResizeablePanelGroup } from './strategies/basic/components/ResizePanelGroup/index.js';
|
|
2
|
+
export { ResizePanel as ResizablePanel, ResizePanel, ResizePanelProps, ResizePanel as ResizeablePanel } from './strategies/basic/components/ResizePanel/index.js';
|
|
3
|
+
export { ResizeHandle, ResizeHandleProps } from './strategies/basic/components/ResizeHandle/index.js';
|
|
4
|
+
export { ResizableContext, ResizableContextValue, useResizableContext } from './strategies/basic/context.js';
|
|
5
|
+
export { ResizePanelGroupFlex, ResizePanelGroupFlexProps } from './strategies/flex/components/ResizePanelGroupFlex/index.js';
|
|
6
|
+
export { ResizeHandleFlex, ResizeHandleFlexProps } from './strategies/flex/components/ResizeHandleFlex/index.js';
|
|
7
|
+
export { OptimizationStrategy, PanelInfo, ResizeAbleCoreOptions, ResizeDirection, VirtualConfig, VirtualNodeConfig } from './types/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("./components/ResizePanelGroup/index.js"),s=require("./components/ResizePanel/index.js");exports.ResizablePanelGroup=e.ResizePanelGroup,exports.ResizeablePanelGroup=e.ResizePanelGroup,exports.ResizablePanel=s.ResizePanel,exports.ResizeablePanel=s.ResizePanel;
|
|
1
|
+
"use strict";const e=require("./strategies/basic/components/ResizePanelGroup/index.js"),s=require("./strategies/basic/components/ResizePanel/index.js"),i=require("./strategies/basic/components/ResizeHandle/index.js"),n=require("./strategies/flex/components/ResizePanelGroupFlex/index.js"),a=require("./strategies/flex/components/ResizeHandleFlex/index.js"),t=require("./strategies/basic/context.js");exports.ResizablePanelGroup=e.ResizePanelGroup,exports.ResizePanelGroup=e.ResizePanelGroup,exports.ResizeablePanelGroup=e.ResizePanelGroup,exports.ResizablePanel=s.ResizePanel,exports.ResizePanel=s.ResizePanel,exports.ResizeablePanel=s.ResizePanel,exports.ResizeHandle=i.ResizeHandle,exports.ResizePanelGroupFlex=n.ResizePanelGroupFlex,exports.ResizeHandleFlex=a.ResizeHandleFlex,exports.ResizableContext=t.ResizableContext,exports.useResizableContext=t.useResizableContext;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResizeDirection } from '../../../../types/index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 拖拽手柄组件(常规策略)
|
|
6
|
+
* 负责处理面板之间的拖拽调整功能
|
|
7
|
+
* 使用 ResizeAbleCore(常规策略)
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface ResizeHandleRenderProps {
|
|
11
|
+
prePanelIndex: number;
|
|
12
|
+
nextPanelIndex: number;
|
|
13
|
+
direction: ResizeDirection;
|
|
14
|
+
isResizing?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ResizeHandleProps {
|
|
17
|
+
prePanelIndex: number;
|
|
18
|
+
nextPanelIndex: number;
|
|
19
|
+
direction: ResizeDirection;
|
|
20
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
declare const ResizeHandle: React.FC<ResizeHandleProps>;
|
|
23
|
+
|
|
24
|
+
export { ResizeHandle };
|
|
25
|
+
export type { ResizeHandleProps, ResizeHandleRenderProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),n=require("react"),t=require("../../resizeAble.js"),r=require("../../context.js");exports.ResizeHandle=({prePanelIndex:l,nextPanelIndex:i,direction:u,renderHandle:o})=>{const s=n.useRef(null),a=n.useRef(null),{getPanelInfo:c,panelCount:d,virtualConfig:m}=r.useResizableContext(),[f,x]=n.useState(!1);n.useEffect(()=>{if(!s.current)return;const e=c(l),n=c(i);if(!e||!n)return;const r=s.current?"horizontal"===u?s.current.offsetWidth:s.current.offsetHeight:10;a.current=new t.default({prePanelEl:e.panelEl,nextPanelEl:n.panelEl,getPanelInfo:c,prePanelIndex:l,nextPanelIndex:i,direction:u,virtualEnabled:m.enabled||!1,virtualConfig:{style:m.style,className:m.className},handleSize:r});const o=s.current;if(!o)return;let d=!1,f=0,p=0,v=null;const z=e=>{e.preventDefault(),e.stopPropagation(),d=!0,x(!0),f="horizontal"===u?e.clientX:e.clientY,p=0,null!==v&&(cancelAnimationFrame(v),v=null),a.current&&a.current.startResize()},h=()=>{d&&a.current?(a.current.onResize(p),v=null):v=null},E=e=>{if(!d||!a.current)return;const n="horizontal"===u?e.clientX:e.clientY;p=n-f,null===v&&(v=requestAnimationFrame(h))},P=()=>{d&&a.current&&(null!==v&&(cancelAnimationFrame(v),v=null),a.current.onResize(p),d=!1,x(!1),a.current.endResize())};return o.addEventListener("mousedown",z),document.addEventListener("mousemove",E),document.addEventListener("mouseup",P),()=>{o.removeEventListener("mousedown",z),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",P),null!==v&&(cancelAnimationFrame(v),v=null),a.current&&(a.current.destroy(),a.current=null)}},[l,i,u,c,d,m]);const p="horizontal"===u,v=o?o({prePanelIndex:l,nextPanelIndex:i,direction:u,isResizing:f}):null;return e.jsx("div",{ref:s,style:{position:"relative",width:p?"10px":"100%",height:p?"100%":"10px",backgroundColor:o?"transparent":"#000",cursor:p?"ew-resize":"ns-resize",zIndex:1e3,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},children:v})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/strategies/basic/components/ResizeHandle/index.tsx"],"sourcesContent":[null],"names":["prePanelIndex","nextPanelIndex","direction","renderHandle","handleRef","useRef","coreInstanceRef","getPanelInfo","panelCount","virtualConfig","useResizableContext","isResizing","setIsResizing","useState","useEffect","current","prePanelInfo","nextPanelInfo","handleSize","offsetWidth","offsetHeight","ResizeAbleCore","prePanelEl","panelEl","nextPanelEl","virtualEnabled","enabled","style","className","handleEl","startPos","currentDelta","rafId","startResize","e","preventDefault","stopPropagation","clientX","clientY","cancelAnimationFrame","updatePanelsWithRAF","onResize","onResizeMove","currentPos","requestAnimationFrame","endResize","addEventListener","document","removeEventListener","destroy","isHorizontal","handleContent","_jsx","ref","position","width","height","backgroundColor","cursor","zIndex","flexShrink","display","alignItems","justifyContent","children"],"mappings":"yJAwByD,EACrDA,gBACAC,iBACAC,YACAC,mBAEA,MAAMC,EAAYC,EAAAA,OAAuB,MACnCC,EAAkBD,EAAAA,OAAmD,OACrEE,aAAEA,EAAYC,WAAEA,EAAUC,cAAEA,GAAkBC,EAAAA,uBAC7CC,EAAYC,GAAiBC,EAAAA,UAAS,GAE7CC,EAAAA,UAAU,KACN,IAAKV,EAAUW,QACX,OAIJ,MAAMC,EAAeT,EAAaP,GAC5BiB,EAAgBV,EAAaN,GACnC,IAAIe,IAAiBC,EAEjB,OAIJ,MAAMC,EAAad,EAAUW,QACR,eAAdb,EACGE,EAAUW,QAAQI,YAClBf,EAAUW,QAAQK,aACQ,GAGpCd,EAAgBS,QAAU,IAAIM,UAAe,CACzCC,WAAYN,EAAaO,QACzBC,YAAaP,EAAcM,QAC3BhB,eACAP,gBACAC,iBACAC,YACAuB,eAAgBhB,EAAciB,UAAW,EACzCjB,cAAe,CACXkB,MAAOlB,EAAckB,MACrBC,UAAWnB,EAAcmB,WAE7BV,eAIJ,MAAMW,EAAWzB,EAAUW,QAC3B,IAAKc,EAAU,OAEf,IAAIlB,GAAa,EACbmB,EAAW,EACXC,EAAe,EACfC,EAAuB,KAE3B,MAAMC,EAAeC,IACjBA,EAAEC,iBACFD,EAAEE,kBACFzB,GAAa,EACbC,GAAc,GACdkB,EAAyB,eAAd5B,EAA6BgC,EAAEG,QAAUH,EAAEI,QACtDP,EAAe,EACD,OAAVC,IACAO,qBAAqBP,GACrBA,EAAQ,MAER1B,EAAgBS,SAChBT,EAAgBS,QAAQkB,eAU1BO,EAAsB,KACnB7B,GAAeL,EAAgBS,SAQpCT,EAAgBS,QAAQ0B,SAASV,GAEjCC,EAAQ,MATJA,EAAQ,MAYVU,EAAgBR,IAClB,IAAIvB,IAAeL,EAAgBS,QAAS,OAC5C,MAAM4B,EAA2B,eAAdzC,EAA6BgC,EAAEG,QAAUH,EAAEI,QAE9DP,EAAeY,EAAab,EAId,OAAVE,IACAA,EAAQY,sBAAsBJ,KAIhCK,EAAY,KACXlC,GAAcL,EAAgBS,UAEf,OAAViB,IACAO,qBAAqBP,GACrBA,EAAQ,MAGZ1B,EAAgBS,QAAQ0B,SAASV,GACjCpB,GAAa,EACbC,GAAc,GACdN,EAAgBS,QAAQ8B,cAQhC,OAJAhB,EAASiB,iBAAiB,YAAab,GACvCc,SAASD,iBAAiB,YAAaJ,GACvCK,SAASD,iBAAiB,UAAWD,GAE9B,KAEHhB,EAASmB,oBAAoB,YAAaf,GAC1Cc,SAASC,oBAAoB,YAAaN,GAC1CK,SAASC,oBAAoB,UAAWH,GAG1B,OAAVb,IACAO,qBAAqBP,GACrBA,EAAQ,MAIT1B,EAAgBS,UACfT,EAAgBS,QAAQkC,UACxB3C,EAAgBS,QAAU,QAGnC,CAACf,EAAeC,EAAgBC,EAAWK,EAAcC,EAAYC,IAExE,MAAMyC,EAA6B,eAAdhD,EAGfiD,EAAgBhD,EAAeA,EAAa,CAC9CH,gBACAC,iBACAC,YACAS,eACC,KAEL,OACIyC,EAAAA,IAAA,MAAA,CACIC,IAAKjD,EACLuB,MAAO,CACH2B,SAAU,WACVC,MAAOL,EAAe,OAAS,OAC/BM,OAAQN,EAAe,OAAS,OAChCO,gBAAiBtD,EAAe,cAAgB,OAChDuD,OAAQR,EAAe,YAAc,YACrCS,OAAQ,IACRC,WAAY,EACZC,QAAS,OACTC,WAAY,SACZC,eAAgB,UACnBC,SAEAb"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),r=require("react"),i=require("../../context.js");exports.ResizePanel=({children:t,minSize:n=100})=>{const s=r.useRef(null),u=r.useRef(-1),{registerPanel:c,unregisterPanel:l,direction:o}=i.useResizableContext();return r.useEffect(()=>{if(!s.current)return;const e=s.current;return u.current=c(e,n),()=>{l(e)}},[n,c,l]),e.jsx("div",{ref:s,style:{flex:1,minWidth:"horizontal"===o?n:void 0,minHeight:"vertical"===o?n:void 0,width:"auto",overflow:"hidden",position:"relative"},children:e.jsx("div",{style:{height:"100%",padding:16},children:t})})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/strategies/basic/components/ResizePanel/index.tsx"],"sourcesContent":[null],"names":["children","minSize","panelRef","useRef","panelIndexRef","registerPanel","unregisterPanel","direction","useResizableContext","useEffect","current","panelEl","_jsx","ref","style","flex","minWidth","undefined","minHeight","width","overflow","position","height","padding"],"mappings":"uHAcuD,EACnDA,WACAC,UAAU,QAGV,MAAMC,EAAWC,EAAAA,OAAuB,MAClCC,EAAgBD,EAAAA,YAChBE,cAAEA,EAAaC,gBAAEA,EAAeC,UAAEA,GAAcC,EAAAA,sBAWtD,OATAC,EAAAA,UAAU,KACN,IAAIP,EAASQ,QAAS,OACtB,MAAMC,EAAUT,EAASQ,QAEzB,OADAN,EAAcM,QAAUL,EAAcM,EAASV,GACxC,KACHK,EAAgBK,KAErB,CAACV,EAASI,EAAeC,IAGxBM,EAAAA,IAAA,MAAA,CACIC,IAAKX,EACLY,MAAO,CACHC,KAAM,EACNC,SAAwB,eAAdT,EAA6BN,OAAUgB,EACjDC,UAAyB,aAAdX,EAA2BN,OAAUgB,EAChDE,MAAO,OACPC,SAAU,SACVC,SAAU,YACbrB,SAEDY,EAAAA,WAAKE,MAAO,CAACQ,OAAQ,OAAQC,QAAS,IAAGvB,SACpCA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ResizeHandleRenderProps } from '../ResizeHandle/index.js';
|
|
3
|
+
import { ResizeDirection, VirtualConfig } from '../../../../types/index.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
6
|
+
* 可调整大小的面板组容器组件(常规策略)
|
|
7
|
+
* 使用数组存储面板信息,适合面板数量较少的场景
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
interface ResizePanelGroupProps {
|
|
@@ -12,6 +13,7 @@ interface ResizePanelGroupProps {
|
|
|
12
13
|
virtual?: boolean;
|
|
13
14
|
virtualConfig?: VirtualConfig;
|
|
14
15
|
style?: React.CSSProperties;
|
|
16
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
15
17
|
}
|
|
16
18
|
declare const ResizePanelGroup: React.FC<ResizePanelGroupProps>;
|
|
17
19
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),r=require("react"),n=require("../../context.js"),t=require("../ResizeHandle/index.js");exports.ResizePanelGroup=({children:l,direction:i="horizontal",style:u,virtual:a=!1,virtualConfig:c={},renderHandle:s})=>{const o=r.useRef([]),d=r.useRef(new Map),[h,f]=r.useState(0),g=r.useCallback((e,r)=>{const n=d.current.get(e);if(void 0!==n)return o.current[n]={panelEl:e,minSize:r},n;let t=-1;for(let e=0;e<o.current.length;e++)if(!o.current[e]){t=e;break}return-1===t?(t=o.current.length,o.current.push({panelEl:e,minSize:r})):o.current[t]={panelEl:e,minSize:r},d.current.set(e,t),f(o.current.filter(e=>null!=e).length),t},[]),p=r.useCallback(e=>{const r=d.current.get(e);void 0!==r&&(o.current[r]=null,d.current.delete(e),f(o.current.filter(e=>null!=e).length))},[]),x=r.useCallback(e=>{if(e<0||e>=o.current.length)return null;const r=o.current[e];return r&&r.panelEl?r:null},[]),v=r.useCallback(e=>d.current.get(e)??-1,[]),z=r.Children.toArray(l),C=[];z.forEach((r,n)=>{C.push(r),n<z.length-1&&C.push(e.jsx(t.ResizeHandle,{prePanelIndex:n,nextPanelIndex:n+1,direction:i,renderHandle:s},`handle-${n}`))});const P={enabled:a,...c},b={panelCount:h,registerPanel:g,unregisterPanel:p,getPanelInfo:x,getPanelIndex:v,direction:i,panelInfos:o.current.filter(e=>null!=e),virtualConfig:P};return e.jsx(n.ResizableContext.Provider,{value:b,children:e.jsx("div",{style:{display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",position:"relative",...u},children:C})})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/strategies/basic/components/ResizePanelGroup/index.tsx"],"sourcesContent":[null],"names":["children","direction","style","virtual","virtualConfig","renderHandle","panelInfosRef","useRef","elementToIndexMapRef","Map","panelCount","setPanelCount","useState","registerPanel","useCallback","panelEl","minSize","existingIndex","current","get","undefined","index","i","length","push","set","filter","p","unregisterPanel","delete","getPanelInfo","info","getPanelIndex","childrenArray","React","Children","toArray","panelsWithHandles","forEach","child","_jsx","ResizeHandle","prePanelIndex","nextPanelIndex","mergedVirtualConfig","enabled","contextValue","panelInfos","ResizableContext","Provider","value","display","flexDirection","height","position"],"mappings":"kKAkBiE,EAC7DA,WACAC,YAAY,aACZC,QACAC,WAAU,EACVC,gBAAgB,CAAA,EAChBC,mBAKA,MAAMC,EAAgBC,EAAAA,OAA6B,IAC7CC,EAAuBD,EAAAA,OAAiC,IAAIE,MAC3DC,EAAYC,GAAiBC,EAAAA,SAAS,GAEvCC,EAAgBC,EAAAA,YAAY,CAACC,EAAsBC,KAErD,MAAMC,EAAgBT,EAAqBU,QAAQC,IAAIJ,GACvD,QAAsBK,IAAlBH,EAGA,OADAX,EAAcY,QAAQD,GAAiB,CAAEF,UAASC,WAC3CC,EAIX,IAAII,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIhB,EAAcY,QAAQK,OAAQD,IAC9C,IAAKhB,EAAcY,QAAQI,GAAI,CAC3BD,EAAQC,EACR,KACJ,CAcJ,OAXc,IAAVD,GAEAA,EAAQf,EAAcY,QAAQK,OAC9BjB,EAAcY,QAAQM,KAAK,CAAET,UAASC,aAGtCV,EAAcY,QAAQG,GAAS,CAAEN,UAASC,WAG9CR,EAAqBU,QAAQO,IAAIV,EAASM,GAC1CV,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,QACxEF,GACR,IAEGO,EAAkBd,cAAaC,IACjC,MAAMM,EAAQb,EAAqBU,QAAQC,IAAIJ,QACjCK,IAAVC,IAGAf,EAAcY,QAAQG,GAAS,KAC/Bb,EAAqBU,QAAQW,OAAOd,GACpCJ,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,UAEpF,IAEGO,EAAehB,cAAaO,IAC9B,GAAIA,EAAQ,GAAKA,GAASf,EAAcY,QAAQK,OAC5C,OAAO,KAEX,MAAMQ,EAAOzB,EAAcY,QAAQG,GAEnC,OAAQU,GAAQA,EAAKhB,QAAWgB,EAAO,MACxC,IAEGC,EAAgBlB,cAAaC,GACxBP,EAAqBU,QAAQC,IAAIJ,KAAY,EACrD,IAEGkB,EAAgBC,EAAMC,SAASC,QAAQpC,GACvCqC,EAAuC,GAE7CJ,EAAcK,QAAQ,CAACC,EAAOlB,KAC1BgB,EAAkBb,KAAKe,GAGnBlB,EAAQY,EAAcV,OAAS,GAC/Bc,EAAkBb,KACdgB,MAACC,EAAAA,aAAY,CAETC,cAAerB,EACfsB,eAAgBtB,EAAQ,EACxBpB,UAAWA,EACXI,aAAcA,GAJT,UAAUgB,QAW/B,MAAMuB,EAAqC,CACvCC,QAAS1C,KACNC,GAGD0C,EAAsC,CACxCpC,WAAYA,EACZG,gBACAe,kBACAE,eACAE,gBACA/B,YACA8C,WAAYzC,EAAcY,QAAQQ,OAAOC,GAAKA,SAC9CvB,cAAewC,GAGnB,OACIJ,MAACQ,EAAAA,iBAAiBC,SAAQ,CAACC,MAAOJ,EAAY9C,SAC1CwC,EAAAA,IAAA,MAAA,CAAKtC,MAAO,CACJiD,QAAS,OACTC,cAA6B,eAAdnD,EAA6B,MAAQ,SACpDoD,OAAQ,OACRC,SAAU,cACPpD,GACVF,SACIqC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PanelInfo, ResizeDirection, VirtualConfig, FlexStrategyConfig } from '../../types/index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Resizable Context 接口定义(常规策略)
|
|
6
|
+
*/
|
|
7
|
+
interface ResizableContextValue {
|
|
8
|
+
panelCount: number;
|
|
9
|
+
registerPanel: (panelEl: HTMLElement, minSize: number) => number;
|
|
10
|
+
unregisterPanel: (panelEl: HTMLElement) => void;
|
|
11
|
+
getPanelInfo: (index: number) => PanelInfo | null;
|
|
12
|
+
getPanelIndex: (panelEl: HTMLElement) => number;
|
|
13
|
+
direction: ResizeDirection;
|
|
14
|
+
panelInfos: PanelInfo[];
|
|
15
|
+
virtualConfig: VirtualConfig;
|
|
16
|
+
onPanelsChange?: (changedIndices: Set<number>) => void;
|
|
17
|
+
flexConfig?: FlexStrategyConfig;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resizable Context
|
|
21
|
+
*/
|
|
22
|
+
declare const ResizableContext: React.Context<ResizableContextValue>;
|
|
23
|
+
/**
|
|
24
|
+
* 使用 Resizable Context 的 Hook
|
|
25
|
+
*/
|
|
26
|
+
declare const useResizableContext: () => ResizableContextValue;
|
|
27
|
+
|
|
28
|
+
export { ResizableContext, useResizableContext };
|
|
29
|
+
export type { ResizableContextValue };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react"),n=e.createContext({panelCount:0,registerPanel:()=>0,unregisterPanel:()=>{},getPanelInfo:()=>null,getPanelIndex:()=>-1,direction:"horizontal",panelInfos:[],virtualConfig:{enabled:!1},onPanelsChange:void 0,flexConfig:void 0});exports.ResizableContext=n,exports.useResizableContext=()=>{const t=e.useContext(n);if(!t)throw new Error("useResizableContext must be used within ResizablePanelGroup");return t};
|
|
2
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../src/strategies/basic/context.tsx"],"sourcesContent":[null],"names":["ResizableContext","React","createContext","panelCount","registerPanel","unregisterPanel","getPanelInfo","getPanelIndex","direction","panelInfos","virtualConfig","enabled","onPanelsChange","undefined","flexConfig","context","useContext","Error"],"mappings":"sCAsCaA,EAAmBC,EAAMC,cAhBa,CAC/CC,WAAY,EACZC,cAAe,IAAM,EACrBC,gBAAiB,OACjBC,aAAc,IAAM,KACpBC,cAAe,KAAM,EACrBC,UAAW,aACXC,WAAY,GACZC,cAAe,CAAEC,SAAS,GAC1BC,oBAAgBC,EAChBC,gBAAYD,2DAWmB,KAC/B,MAAME,EAAUd,EAAMe,WAAWhB,GACjC,IAAKe,EACD,MAAM,IAAIE,MAAM,+DAEpB,OAAOF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../../core/virtualNode.js"),t=require("../../utils/resizeHelpers.js");exports.default=class{constructor(t){Object.defineProperty(this,"getPanelInfo",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"prePanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextPanelIndex",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"direction",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualEnabled",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualConfig",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isResizing",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"allPanelsStartSizes",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsStartPositions",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"allPanelsCurrentSizes",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"panelInfosCache",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"handleSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualNodeManager",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.getPanelInfo=t.getPanelInfo,this.prePanelIndex=t.prePanelIndex,this.nextPanelIndex=t.nextPanelIndex,this.direction=t.direction,this.virtualEnabled=t.virtualEnabled||!1,this.virtualConfig=t.virtualConfig||{},this.handleSize=t.handleSize||0,this.virtualEnabled&&(this.virtualNodeManager=new e.default)}recordPanelInitialState(e,t,a){this.panelInfosCache.set(e,t);const i=this.getSize(t.panelEl);if(this.allPanelsStartSizes.set(e,i),this.allPanelsCurrentSizes.set(e,i),a){const a=this.getPosition(t.panelEl);this.allPanelsStartPositions.set(e,a),this.virtualNodeManager&&this.virtualNodeManager.createVirtualNode(t.panelEl,this.virtualConfig)}else{const e="horizontal"===this.direction?"width":"height";t.panelEl.style.flex="none",t.panelEl.style[e]=`${i}px`}}startResize(){this.isResizing=!0,this.allPanelsCurrentSizes.clear(),this.panelInfosCache.clear();const e=!(!this.virtualEnabled||!this.virtualNodeManager);let t=this.prePanelIndex-1;for(;t>=0;){const a=this.getPanelInfo(t);if(!a)break;this.recordPanelInitialState(t,a,e),t--}const a=this.getPanelInfo(this.prePanelIndex);a&&this.recordPanelInitialState(this.prePanelIndex,a,e);const i=this.getPanelInfo(this.nextPanelIndex);i&&this.recordPanelInitialState(this.nextPanelIndex,i,e);let l=this.nextPanelIndex+1,n=this.getPanelInfo(l);for(;n;)this.recordPanelInitialState(l,n,e),l++,n=this.getPanelInfo(l)}onResize(e){this.isResizing&&(this.resetAllPanelsToStartSizes(),0!==Math.abs(e)&&(e>0?this.adjustPanelsWithPreCheck(e,"right"):this.adjustPanelsWithPreCheck(-e,"left")))}resetAllPanelsToStartSizes(){const e="horizontal"===this.direction?"width":"height";this.allPanelsStartSizes.forEach((t,a)=>{this.allPanelsCurrentSizes.set(a,t);const i=this.panelInfosCache.get(a);i&&(this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(i.panelEl,t,this.direction):i.panelEl.style[e]=`${t}px`)})}adjustPanelsWithPreCheck(e,a){let i,l,n,s,r,o;"left"===a?(i=this.prePanelIndex,l=-1,n=this.nextPanelIndex,s=this.findMaxIndex()+1,r="backward",o="forward"):(i=this.nextPanelIndex,l=this.findMaxIndex()+1,n=this.prePanelIndex,s=-1,r="forward",o="backward");const h=t.calculateTotalCompressableSpace(this.allPanelsCurrentSizes,i,l,this.panelInfosCache,r),d=t.calculateTotalStretchableSpace(this.allPanelsCurrentSizes,n,s,this.panelInfosCache,o);if(0===h||0===d)return;const u=Math.min(h,d===1/0?e:d,e);if(0===u)return;const c=t.performCompression(this.allPanelsCurrentSizes,i,l,this.panelInfosCache,r,u);t.performStretch(this.allPanelsCurrentSizes,n,s,this.panelInfosCache,o,c),this.applySizesToDOM()}findMaxIndex(){let e=Math.max(this.prePanelIndex,this.nextPanelIndex);return this.allPanelsStartSizes.forEach((t,a)=>{a>e&&(e=a)}),e}applySizesToDOM(){const e="horizontal"===this.direction?"width":"height";this.allPanelsCurrentSizes.forEach((t,a)=>{const i=this.panelInfosCache.get(a);i&&(this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(i.panelEl,t,this.direction):i.panelEl.style[e]=`${t}px`)}),this.virtualEnabled&&this.virtualNodeManager&&this.recalculateAllPanelsPositions()}recalculateAllPanelsPositions(){if(!this.virtualEnabled||!this.virtualNodeManager)return;const e=Array.from(this.allPanelsCurrentSizes.keys()).sort((e,t)=>e-t);if(0===e.length)return;const t=e[0];let a=this.allPanelsStartPositions.get(t)||0;for(let t=0;t<e.length;t++){const i=e[t],l=this.panelInfosCache.get(i);if(l){if(t>0){const l=e[t-1];a+=(this.allPanelsCurrentSizes.get(l)||0)+this.handleSize;for(let e=l+1;e<i;e++){const t=this.allPanelsCurrentSizes.get(e)||this.allPanelsStartSizes.get(e)||0;t>0&&(a+=t+this.handleSize)}}this.virtualNodeManager.getVirtualNode(l.panelEl)&&this.virtualNodeManager.updateVirtualNodePosition(l.panelEl,a,this.direction),a+=(this.allPanelsCurrentSizes.get(i)||0)+this.handleSize}}}getSize(e){return"horizontal"===this.direction?e.offsetWidth:e.offsetHeight}getPosition(e){return"horizontal"===this.direction?e.offsetLeft:e.offsetTop}endResize(){if(this.isResizing=!1,this.virtualEnabled&&this.virtualNodeManager){const e="horizontal"===this.direction?"width":"height";this.allPanelsStartSizes.forEach((t,a)=>{const i=this.panelInfosCache.get(a);if(!i)return;const l=this.virtualNodeManager.getVirtualNode(i.panelEl);if(l){const t="horizontal"===this.direction?l.offsetWidth:l.offsetHeight;i.panelEl.style.flex="none",i.panelEl.style[e]=`${t}px`}}),this.virtualNodeManager.removeAllVirtualNodes(),requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const a=this.panelInfosCache.get(t);a&&(a.panelEl.style.flex="")})})}else requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const a=this.panelInfosCache.get(t);a&&(a.panelEl.style.flex="")})});this.panelInfosCache.clear(),this.allPanelsStartSizes.clear()}destroy(){this.endResize(),this.virtualNodeManager&&this.virtualNodeManager.destroy()}};
|
|
2
|
+
//# sourceMappingURL=resizeAble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeAble.js","sources":["../../../src/strategies/basic/resizeAble.ts"],"sourcesContent":[null],"names":["constructor","options","Object","defineProperty","this","value","Map","getPanelInfo","prePanelIndex","nextPanelIndex","direction","virtualEnabled","virtualConfig","handleSize","virtualNodeManager","VirtualNodeManager","recordPanelInitialState","index","panelInfo","isVirtual","panelInfosCache","set","size","getSize","panelEl","allPanelsStartSizes","allPanelsCurrentSizes","pos","getPosition","allPanelsStartPositions","createVirtualNode","sizeProperty","style","flex","startResize","isResizing","clear","prevIndex","prePanelInfo","nextPanelInfo","nextIndex","onResize","delta","resetAllPanelsToStartSizes","Math","abs","adjustPanelsWithPreCheck","forEach","startSize","get","updateVirtualNode","compressDir","compressStartIndex","compressEndIndex","stretchStartIndex","stretchEndIndex","compressDirection","stretchDirection","findMaxIndex","totalCanCompress","calculateTotalCompressableSpace","totalCanStretch","calculateTotalStretchableSpace","realOperatePixel","min","Infinity","compressedTotal","performCompression","performStretch","applySizesToDOM","maxIndex","max","_","newSize","recalculateAllPanelsPositions","allIndices","Array","from","keys","sort","a","b","length","firstIndex","currentPosition","i","midIndex","midSize","getVirtualNode","updateVirtualNodePosition","el","offsetWidth","offsetHeight","offsetLeft","offsetTop","endResize","virtualEl","finalSize","removeAllVirtualNodes","requestAnimationFrame","destroy"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResizeDirection } from '../../../../types/index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 拖拽手柄组件(Flex 布局策略)
|
|
6
|
+
* 使用 flex-basis 而不是直接设置 width/height
|
|
7
|
+
* 参考 react-resizable-panels 的实现方式
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface ResizeHandleRenderProps {
|
|
11
|
+
prePanelIndex: number;
|
|
12
|
+
nextPanelIndex: number;
|
|
13
|
+
direction: ResizeDirection;
|
|
14
|
+
isResizing?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ResizeHandleFlexProps {
|
|
17
|
+
prePanelIndex: number;
|
|
18
|
+
nextPanelIndex: number;
|
|
19
|
+
direction: ResizeDirection;
|
|
20
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
declare const ResizeHandleFlex: React.FC<ResizeHandleFlexProps>;
|
|
23
|
+
|
|
24
|
+
export { ResizeHandleFlex };
|
|
25
|
+
export type { ResizeHandleFlexProps, ResizeHandleRenderProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),n=require("react"),t=require("../../resizeAble.js"),r=require("../../../basic/context.js");exports.ResizeHandleFlex=({prePanelIndex:l,nextPanelIndex:i,direction:u,renderHandle:o})=>{const s=n.useRef(null),a=n.useRef(null),{getPanelInfo:c,panelCount:d,virtualConfig:m,onPanelsChange:f,flexConfig:x}=r.useResizableContext(),[p,v]=n.useState(!1);n.useEffect(()=>{if(!s.current)return;const e=c(l),n=c(i);if(!e||!n)return;const r=s.current?"horizontal"===u?s.current.offsetWidth:s.current.offsetHeight:10;a.current=new t.default({prePanelEl:e.panelEl,nextPanelEl:n.panelEl,getPanelInfo:c,prePanelIndex:l,nextPanelIndex:i,direction:u,virtualEnabled:m.enabled||!1,virtualConfig:{style:m.style,className:m.className},handleSize:r,onPanelsChange:f,flexConfig:x});const o=s.current;if(!o)return;let d=!1,p=0,z=0,g=null;const h=e=>{e.preventDefault(),e.stopPropagation(),d=!0,v(!0),p="horizontal"===u?e.clientX:e.clientY,z=0,null!==g&&(cancelAnimationFrame(g),g=null),a.current&&a.current.startResize()},P=()=>{d&&a.current?(a.current.onResize(z),g=null):g=null},E=e=>{if(!d||!a.current)return;const n="horizontal"===u?e.clientX:e.clientY;z=n-p,null===g&&(g=requestAnimationFrame(P))},C=()=>{d&&a.current&&(null!==g&&(cancelAnimationFrame(g),g=null),a.current.onResize(z),d=!1,v(!1),a.current.endResize())};return o.addEventListener("mousedown",h),document.addEventListener("mousemove",E),document.addEventListener("mouseup",C),()=>{o.removeEventListener("mousedown",h),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",C),null!==g&&(cancelAnimationFrame(g),g=null),a.current&&(a.current.destroy(),a.current=null)}},[l,i,u,c,d,m,f,x]);const z="horizontal"===u,g=o?o({prePanelIndex:l,nextPanelIndex:i,direction:u,isResizing:p}):null;return e.jsx("div",{ref:s,style:{position:"relative",width:z?"10px":"100%",height:z?"100%":"10px",backgroundColor:o?"transparent":"#000",cursor:z?"ew-resize":"ns-resize",zIndex:1e3,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},children:g})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/strategies/flex/components/ResizeHandleFlex/index.tsx"],"sourcesContent":[null],"names":["prePanelIndex","nextPanelIndex","direction","renderHandle","handleRef","useRef","coreInstanceRef","getPanelInfo","panelCount","virtualConfig","onPanelsChange","flexConfig","useResizableContext","isResizing","setIsResizing","useState","useEffect","current","prePanelInfo","nextPanelInfo","handleSize","offsetWidth","offsetHeight","ResizeAbleCoreFlex","prePanelEl","panelEl","nextPanelEl","virtualEnabled","enabled","style","className","handleEl","startPos","currentDelta","rafId","startResize","e","preventDefault","stopPropagation","clientX","clientY","cancelAnimationFrame","updatePanelsWithRAF","onResize","onResizeMove","currentPos","requestAnimationFrame","endResize","addEventListener","document","removeEventListener","destroy","isHorizontal","handleContent","_jsx","ref","position","width","height","backgroundColor","cursor","zIndex","flexShrink","display","alignItems","justifyContent","children"],"mappings":"sKAwBiE,EAC7DA,gBACAC,iBACAC,YACAC,mBAEA,MAAMC,EAAYC,EAAAA,OAAuB,MACnCC,EAAkBD,EAAAA,OAAuD,OACzEE,aAAEA,EAAYC,WAAEA,EAAUC,cAAEA,EAAaC,eAAEA,EAAcC,WAAEA,GAAeC,yBACzEC,EAAYC,GAAiBC,EAAAA,UAAS,GAE7CC,EAAAA,UAAU,KACN,IAAKZ,EAAUa,QACX,OAIJ,MAAMC,EAAeX,EAAaP,GAC5BmB,EAAgBZ,EAAaN,GACnC,IAAIiB,IAAiBC,EAEjB,OAIJ,MAAMC,EAAahB,EAAUa,QACR,eAAdf,EACGE,EAAUa,QAAQI,YAClBjB,EAAUa,QAAQK,aACQ,GAGpChB,EAAgBW,QAAU,IAAIM,UAAmB,CAC7CC,WAAYN,EAAaO,QACzBC,YAAaP,EAAcM,QAC3BlB,eACAP,gBACAC,iBACAC,YACAyB,eAAgBlB,EAAcmB,UAAW,EACzCnB,cAAe,CACXoB,MAAOpB,EAAcoB,MACrBC,UAAWrB,EAAcqB,WAE7BV,aACAV,iBACAC,eAIJ,MAAMoB,EAAW3B,EAAUa,QAC3B,IAAKc,EAAU,OAEf,IAAIlB,GAAa,EACbmB,EAAW,EACXC,EAAe,EACfC,EAAuB,KAE3B,MAAMC,EAAeC,IACjBA,EAAEC,iBACFD,EAAEE,kBACFzB,GAAa,EACbC,GAAc,GACdkB,EAAyB,eAAd9B,EAA6BkC,EAAEG,QAAUH,EAAEI,QACtDP,EAAe,EACD,OAAVC,IACAO,qBAAqBP,GACrBA,EAAQ,MAER5B,EAAgBW,SAChBX,EAAgBW,QAAQkB,eAU1BO,EAAsB,KACnB7B,GAAeP,EAAgBW,SAQpCX,EAAgBW,QAAQ0B,SAASV,GAEjCC,EAAQ,MATJA,EAAQ,MAYVU,EAAgBR,IAClB,IAAIvB,IAAeP,EAAgBW,QAAS,OAC5C,MAAM4B,EAA2B,eAAd3C,EAA6BkC,EAAEG,QAAUH,EAAEI,QAE9DP,EAAeY,EAAab,EAId,OAAVE,IACAA,EAAQY,sBAAsBJ,KAIhCK,EAAY,KACXlC,GAAcP,EAAgBW,UAEf,OAAViB,IACAO,qBAAqBP,GACrBA,EAAQ,MAGZ5B,EAAgBW,QAAQ0B,SAASV,GACjCpB,GAAa,EACbC,GAAc,GACdR,EAAgBW,QAAQ8B,cAQhC,OAJAhB,EAASiB,iBAAiB,YAAab,GACvCc,SAASD,iBAAiB,YAAaJ,GACvCK,SAASD,iBAAiB,UAAWD,GAE9B,KAEHhB,EAASmB,oBAAoB,YAAaf,GAC1Cc,SAASC,oBAAoB,YAAaN,GAC1CK,SAASC,oBAAoB,UAAWH,GAG1B,OAAVb,IACAO,qBAAqBP,GACrBA,EAAQ,MAIT5B,EAAgBW,UACfX,EAAgBW,QAAQkC,UACxB7C,EAAgBW,QAAU,QAGnC,CAACjB,EAAeC,EAAgBC,EAAWK,EAAcC,EAAYC,EAAeC,EAAgBC,IAEvG,MAAMyC,EAA6B,eAAdlD,EAGfmD,EAAgBlD,EAAeA,EAAa,CAC9CH,gBACAC,iBACAC,YACAW,eACC,KAEL,OACIyC,EAAAA,IAAA,MAAA,CACIC,IAAKnD,EACLyB,MAAO,CACH2B,SAAU,WACVC,MAAOL,EAAe,OAAS,OAC/BM,OAAQN,EAAe,OAAS,OAChCO,gBAAiBxD,EAAe,cAAgB,OAChDyD,OAAQR,EAAe,YAAc,YACrCS,OAAQ,IACRC,WAAY,EACZC,QAAS,OACTC,WAAY,SACZC,eAAgB,UACnBC,SAEAb"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ResizeHandleRenderProps } from '../ResizeHandleFlex/index.js';
|
|
3
|
+
import { ResizeDirection, VirtualConfig, FlexStrategyConfig } from '../../../../types/index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 可调整大小的面板组容器组件(Flex 布局策略)
|
|
7
|
+
* 使用 flex-basis 而不是直接设置 width/height
|
|
8
|
+
* 参考 react-resizable-panels 的实现方式
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
interface ResizePanelGroupFlexProps {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
direction?: ResizeDirection;
|
|
14
|
+
virtual?: boolean;
|
|
15
|
+
virtualConfig?: VirtualConfig;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
onPanelsChange?: (changedIndices: Set<number>) => void;
|
|
18
|
+
flexConfig?: FlexStrategyConfig;
|
|
19
|
+
renderHandle?: (props: ResizeHandleRenderProps) => React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare const ResizePanelGroupFlex: React.FC<ResizePanelGroupFlexProps>;
|
|
22
|
+
|
|
23
|
+
export { ResizePanelGroupFlex };
|
|
24
|
+
export type { ResizePanelGroupFlexProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),n=require("react"),r=require("../../../basic/context.js"),l=require("../ResizeHandleFlex/index.js");exports.ResizePanelGroupFlex=({children:t,direction:i="horizontal",style:u,virtual:a=!1,virtualConfig:c={},onPanelsChange:s,flexConfig:o,renderHandle:d})=>{const h=n.useRef([]),f=n.useRef(new Map),[g,x]=n.useState(0),p=n.useCallback((e,n)=>{const r=f.current.get(e);if(void 0!==r)return h.current[r]={panelEl:e,minSize:n},r;let l=-1;for(let e=0;e<h.current.length;e++)if(!h.current[e]){l=e;break}return-1===l?(l=h.current.length,h.current.push({panelEl:e,minSize:n})):h.current[l]={panelEl:e,minSize:n},f.current.set(e,l),x(h.current.filter(e=>null!=e).length),l},[]),C=n.useCallback(e=>{const n=f.current.get(e);void 0!==n&&(h.current[n]=null,f.current.delete(e),x(h.current.filter(e=>null!=e).length))},[]),P=n.useCallback(e=>{if(e<0||e>=h.current.length)return null;const n=h.current[e];return n&&n.panelEl?n:null},[]),v=n.useCallback(e=>f.current.get(e)??-1,[]),z=n.Children.toArray(t),b=[];z.forEach((n,r)=>{b.push(n),r<z.length-1&&b.push(e.jsx(l.ResizeHandleFlex,{prePanelIndex:r,nextPanelIndex:r+1,direction:i,renderHandle:d},`handle-${r}`))});const j={enabled:a,...c},R={panelCount:g,registerPanel:p,unregisterPanel:C,getPanelInfo:P,getPanelIndex:v,direction:i,panelInfos:h.current.filter(e=>null!=e),virtualConfig:j,onPanelsChange:s,flexConfig:o};return e.jsx(r.ResizableContext.Provider,{value:R,children:e.jsx("div",{style:{display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",position:"relative",...u},children:b})})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/strategies/flex/components/ResizePanelGroupFlex/index.tsx"],"sourcesContent":[null],"names":["children","direction","style","virtual","virtualConfig","onPanelsChange","flexConfig","renderHandle","panelInfosRef","useRef","elementToIndexMapRef","Map","panelCount","setPanelCount","useState","registerPanel","useCallback","panelEl","minSize","existingIndex","current","get","undefined","index","i","length","push","set","filter","p","unregisterPanel","delete","getPanelInfo","info","getPanelIndex","childrenArray","React","Children","toArray","panelsWithHandles","forEach","child","_jsx","ResizeHandleFlex","prePanelIndex","nextPanelIndex","mergedVirtualConfig","enabled","contextValue","panelInfos","ResizableContext","Provider","value","display","flexDirection","height","position"],"mappings":"mLAqByE,EACrEA,WACAC,YAAY,aACZC,QACAC,WAAU,EACVC,gBAAgB,CAAA,EAChBC,iBACAC,aACAC,mBAGA,MAAMC,EAAgBC,EAAAA,OAA6B,IAC7CC,EAAuBD,EAAAA,OAAiC,IAAIE,MAC3DC,EAAYC,GAAiBC,EAAAA,SAAS,GAEvCC,EAAgBC,EAAAA,YAAY,CAACC,EAAsBC,KAErD,MAAMC,EAAgBT,EAAqBU,QAAQC,IAAIJ,GACvD,QAAsBK,IAAlBH,EAGA,OADAX,EAAcY,QAAQD,GAAiB,CAAEF,UAASC,WAC3CC,EAIX,IAAII,GAAQ,EACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIhB,EAAcY,QAAQK,OAAQD,IAC9C,IAAKhB,EAAcY,QAAQI,GAAI,CAC3BD,EAAQC,EACR,KACJ,CAcJ,OAXc,IAAVD,GAEAA,EAAQf,EAAcY,QAAQK,OAC9BjB,EAAcY,QAAQM,KAAK,CAAET,UAASC,aAGtCV,EAAcY,QAAQG,GAAS,CAAEN,UAASC,WAG9CR,EAAqBU,QAAQO,IAAIV,EAASM,GAC1CV,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,QACxEF,GACR,IAEGO,EAAkBd,cAAaC,IACjC,MAAMM,EAAQb,EAAqBU,QAAQC,IAAIJ,QACjCK,IAAVC,IAEAf,EAAcY,QAAQG,GAAS,KAC/Bb,EAAqBU,QAAQW,OAAOd,GACpCJ,EAAcL,EAAcY,QAAQQ,OAAOC,GAAKA,SAA+BJ,UAEpF,IAEGO,EAAehB,cAAaO,IAC9B,GAAIA,EAAQ,GAAKA,GAASf,EAAcY,QAAQK,OAC5C,OAAO,KAEX,MAAMQ,EAAOzB,EAAcY,QAAQG,GAEnC,OAAQU,GAAQA,EAAKhB,QAAWgB,EAAO,MACxC,IAEGC,EAAgBlB,cAAaC,GACxBP,EAAqBU,QAAQC,IAAIJ,KAAY,EACrD,IAEGkB,EAAgBC,EAAMC,SAASC,QAAQtC,GACvCuC,EAAuC,GAE7CJ,EAAcK,QAAQ,CAACC,EAAOlB,KAC1BgB,EAAkBb,KAAKe,GAGnBlB,EAAQY,EAAcV,OAAS,GAC/Bc,EAAkBb,KACdgB,MAACC,EAAAA,iBAAgB,CAEbC,cAAerB,EACfsB,eAAgBtB,EAAQ,EACxBtB,UAAWA,EACXM,aAAcA,GAJT,UAAUgB,QAW/B,MAAMuB,EAAqC,CACvCC,QAAS5C,KACNC,GAGD4C,EAAsC,CACxCpC,WAAYA,EACZG,gBACAe,kBACAE,eACAE,gBACAjC,YACAgD,WAAYzC,EAAcY,QAAQQ,OAAOC,GAAKA,SAC9CzB,cAAe0C,EACfzC,iBACAC,cAGJ,OACIoC,MAACQ,EAAAA,iBAAiBC,SAAQ,CAACC,MAAOJ,EAAYhD,SAC1C0C,EAAAA,IAAA,MAAA,CAAKxC,MAAO,CACJmD,QAAS,OACTC,cAA6B,eAAdrD,EAA6B,MAAQ,SACpDsD,OAAQ,OACRC,SAAU,cACPtD,GACVF,SACIuC"}
|