react-resize-demo 2.0.2 → 3.0.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.
Files changed (141) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +119 -65
  3. package/dist/core/PanelManager.js +2 -0
  4. package/dist/core/PanelManager.js.map +1 -0
  5. package/dist/core/virtualNode.js +2 -0
  6. package/dist/core/virtualNode.js.map +1 -0
  7. package/dist/esm/core/PanelManager.js +2 -0
  8. package/dist/esm/core/PanelManager.js.map +1 -0
  9. package/dist/esm/core/virtualNode.js +2 -0
  10. package/dist/esm/core/virtualNode.js.map +1 -0
  11. package/dist/esm/index.d.ts +14 -3
  12. package/dist/esm/index.js +1 -5
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/strategies/basic/components/ResizeHandle/index.d.ts +18 -0
  15. package/dist/esm/strategies/basic/components/ResizeHandle/index.js +2 -0
  16. package/dist/esm/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  17. package/dist/{components → esm/strategies/basic/components}/ResizePanel/index.d.ts +2 -1
  18. package/dist/esm/strategies/basic/components/ResizePanel/index.js +2 -0
  19. package/dist/esm/strategies/basic/components/ResizePanel/index.js.map +1 -0
  20. package/dist/{components → esm/strategies/basic/components}/ResizePanelGroup/index.d.ts +3 -3
  21. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  22. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  23. package/dist/esm/strategies/basic/context.d.ts +28 -0
  24. package/dist/esm/strategies/basic/context.js +2 -0
  25. package/dist/esm/strategies/basic/context.js.map +1 -0
  26. package/dist/esm/strategies/basic/resizeAble.js +2 -0
  27. package/dist/esm/strategies/basic/resizeAble.js.map +1 -0
  28. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.d.ts +18 -0
  29. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  30. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  31. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +21 -0
  32. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  33. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  34. package/dist/esm/strategies/flex/resizeAble.js +2 -0
  35. package/dist/esm/strategies/flex/resizeAble.js.map +1 -0
  36. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.d.ts +17 -0
  37. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js +2 -0
  38. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js.map +1 -0
  39. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.d.ts +17 -0
  40. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.js +2 -0
  41. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.js.map +1 -0
  42. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.d.ts +20 -0
  43. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js +2 -0
  44. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js.map +1 -0
  45. package/dist/esm/strategies/flex-linked/context.js +2 -0
  46. package/dist/esm/strategies/flex-linked/context.js.map +1 -0
  47. package/dist/esm/strategies/flex-linked/resizeAble.js +2 -0
  48. package/dist/esm/strategies/flex-linked/resizeAble.js.map +1 -0
  49. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.d.ts +18 -0
  50. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.js +2 -0
  51. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.js.map +1 -0
  52. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.d.ts +19 -0
  53. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.js +2 -0
  54. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.js.map +1 -0
  55. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.d.ts +17 -0
  56. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.js +2 -0
  57. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.js.map +1 -0
  58. package/dist/esm/strategies/linked/context.d.ts +29 -0
  59. package/dist/esm/strategies/linked/context.js +2 -0
  60. package/dist/esm/strategies/linked/context.js.map +1 -0
  61. package/dist/esm/strategies/linked/resizeAble.js +2 -0
  62. package/dist/esm/strategies/linked/resizeAble.js.map +1 -0
  63. package/dist/esm/types/index.d.ts +36 -2
  64. package/dist/index.d.ts +14 -3
  65. package/dist/index.js +1 -14
  66. package/dist/index.js.map +1 -1
  67. package/dist/strategies/basic/components/ResizeHandle/index.d.ts +18 -0
  68. package/dist/strategies/basic/components/ResizeHandle/index.js +2 -0
  69. package/dist/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  70. package/dist/{esm → strategies/basic}/components/ResizePanel/index.d.ts +2 -1
  71. package/dist/strategies/basic/components/ResizePanel/index.js +2 -0
  72. package/dist/strategies/basic/components/ResizePanel/index.js.map +1 -0
  73. package/dist/{esm → strategies/basic}/components/ResizePanelGroup/index.d.ts +3 -3
  74. package/dist/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  75. package/dist/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  76. package/dist/strategies/basic/context.d.ts +28 -0
  77. package/dist/strategies/basic/context.js +2 -0
  78. package/dist/strategies/basic/context.js.map +1 -0
  79. package/dist/strategies/basic/resizeAble.js +2 -0
  80. package/dist/strategies/basic/resizeAble.js.map +1 -0
  81. package/dist/strategies/flex/components/ResizeHandleFlex/index.d.ts +18 -0
  82. package/dist/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  83. package/dist/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  84. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +21 -0
  85. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  86. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  87. package/dist/strategies/flex/resizeAble.js +2 -0
  88. package/dist/strategies/flex/resizeAble.js.map +1 -0
  89. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.d.ts +17 -0
  90. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js +2 -0
  91. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js.map +1 -0
  92. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.d.ts +17 -0
  93. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.js +2 -0
  94. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.js.map +1 -0
  95. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.d.ts +20 -0
  96. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js +2 -0
  97. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js.map +1 -0
  98. package/dist/strategies/flex-linked/context.js +2 -0
  99. package/dist/strategies/flex-linked/context.js.map +1 -0
  100. package/dist/strategies/flex-linked/resizeAble.js +2 -0
  101. package/dist/strategies/flex-linked/resizeAble.js.map +1 -0
  102. package/dist/strategies/linked/components/ResizeHandleLinked/index.d.ts +18 -0
  103. package/dist/strategies/linked/components/ResizeHandleLinked/index.js +2 -0
  104. package/dist/strategies/linked/components/ResizeHandleLinked/index.js.map +1 -0
  105. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.d.ts +19 -0
  106. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.js +2 -0
  107. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.js.map +1 -0
  108. package/dist/strategies/linked/components/ResizePanelLinked/index.d.ts +17 -0
  109. package/dist/strategies/linked/components/ResizePanelLinked/index.js +2 -0
  110. package/dist/strategies/linked/components/ResizePanelLinked/index.js.map +1 -0
  111. package/dist/strategies/linked/context.d.ts +29 -0
  112. package/dist/strategies/linked/context.js +2 -0
  113. package/dist/strategies/linked/context.js.map +1 -0
  114. package/dist/strategies/linked/resizeAble.js +2 -0
  115. package/dist/strategies/linked/resizeAble.js.map +1 -0
  116. package/dist/types/index.d.ts +36 -2
  117. package/package.json +165 -134
  118. package/dist/components/ResizeHandle/index.js +0 -92
  119. package/dist/components/ResizeHandle/index.js.map +0 -1
  120. package/dist/components/ResizePanel/index.js +0 -33
  121. package/dist/components/ResizePanel/index.js.map +0 -1
  122. package/dist/components/ResizePanelGroup/index.js +0 -61
  123. package/dist/components/ResizePanelGroup/index.js.map +0 -1
  124. package/dist/components/shared/context.js +0 -35
  125. package/dist/components/shared/context.js.map +0 -1
  126. package/dist/esm/components/ResizeHandle/index.js +0 -90
  127. package/dist/esm/components/ResizeHandle/index.js.map +0 -1
  128. package/dist/esm/components/ResizePanel/index.js +0 -31
  129. package/dist/esm/components/ResizePanel/index.js.map +0 -1
  130. package/dist/esm/components/ResizePanelGroup/index.js +0 -59
  131. package/dist/esm/components/ResizePanelGroup/index.js.map +0 -1
  132. package/dist/esm/components/shared/context.js +0 -32
  133. package/dist/esm/components/shared/context.js.map +0 -1
  134. package/dist/esm/utils/resizeAble.js +0 -427
  135. package/dist/esm/utils/resizeAble.js.map +0 -1
  136. package/dist/esm/utils/virtualNode.js +0 -164
  137. package/dist/esm/utils/virtualNode.js.map +0 -1
  138. package/dist/utils/resizeAble.js +0 -431
  139. package/dist/utils/resizeAble.js.map +0 -1
  140. package/dist/utils/virtualNode.js +0 -168
  141. package/dist/utils/virtualNode.js.map +0 -1
@@ -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.ResizeHandleLinked=({prePanelIndex:o,nextPanelIndex:i,direction:s})=>{const u=n.useRef(null),l=n.useRef(null),{getPanelInfo:a,panelCount:c,virtualConfig:d,getPanelNode:f}=r.useResizableContextLinked();n.useEffect(()=>{if(!u.current)return;const e=a(o),n=a(i);if(!e||!n)return;if(!f)return void console.error("getPanelNode is required for linked optimization strategy");const r=u.current?"horizontal"===s?u.current.offsetWidth:u.current.offsetHeight:10;l.current=new t.default({prePanelEl:e.panelEl,nextPanelEl:n.panelEl,getPanelInfo:a,getPanelNode:f,prePanelIndex:o,nextPanelIndex:i,direction:s,virtualEnabled:d.enabled||!1,virtualConfig:{style:d.style,className:d.className},handleSize:r});const c=u.current;if(!c)return;let m=!1,v=0;const p=e=>{e.preventDefault(),e.stopPropagation(),m=!0,v="horizontal"===s?e.clientX:e.clientY,l.current&&l.current.startResize()},x=e=>{if(!m||!l.current)return;const n=("horizontal"===s?e.clientX:e.clientY)-v;l.current.onResize(n)},z=()=>{m&&l.current&&(m=!1,l.current.endResize())};return c.addEventListener("mousedown",p),document.addEventListener("mousemove",x),document.addEventListener("mouseup",z),()=>{c.removeEventListener("mousedown",p),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",z),l.current&&(l.current.destroy(),l.current=null)}},[o,i,s,a,c,d,f]);const m="horizontal"===s;return e.jsx("div",{ref:u,style:{position:"relative",width:m?"10px":"100%",height:m?"100%":"10px",backgroundColor:"#000",cursor:m?"ew-resize":"ns-resize",zIndex:1e3,flexShrink:0}})};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/strategies/linked/components/ResizeHandleLinked/index.tsx"],"sourcesContent":[null],"names":["prePanelIndex","nextPanelIndex","direction","handleRef","useRef","coreInstanceRef","getPanelInfo","panelCount","virtualConfig","getPanelNode","useResizableContextLinked","useEffect","current","prePanelInfo","nextPanelInfo","console","error","handleSize","offsetWidth","offsetHeight","ResizeAbleCoreLinked","prePanelEl","panelEl","nextPanelEl","virtualEnabled","enabled","style","className","handleEl","isResizing","startPos","startResize","e","preventDefault","stopPropagation","clientX","clientY","onResizeMove","delta","onResize","endResize","addEventListener","document","removeEventListener","destroy","isHorizontal","_jsx","ref","position","width","height","backgroundColor","cursor","zIndex","flexShrink"],"mappings":"+JAgBqE,EACjEA,gBACAC,iBACAC,gBAEA,MAAMC,EAAYC,EAAAA,OAAuB,MACnCC,EAAkBD,EAAAA,OAAyD,OAC3EE,aAAEA,EAAYC,WAAEA,EAAUC,cAAEA,EAAaC,aAAEA,GAAiBC,EAAAA,4BAElEC,EAAAA,UAAU,KACN,IAAKR,EAAUS,QACX,OAIJ,MAAMC,EAAeP,EAAaN,GAC5Bc,EAAgBR,EAAaL,GACnC,IAAIY,IAAiBC,EAEjB,OAIJ,IAAKL,EAED,YADAM,QAAQC,MAAM,6DAKlB,MAAMC,EAAad,EAAUS,QACR,eAAdV,EACGC,EAAUS,QAAQM,YAClBf,EAAUS,QAAQO,aACQ,GAGpCd,EAAgBO,QAAU,IAAIQ,UAAqB,CAC/CC,WAAYR,EAAaS,QACzBC,YAAaT,EAAcQ,QAC3BhB,eACAG,eACAT,gBACAC,iBACAC,YACAsB,eAAgBhB,EAAciB,UAAW,EACzCjB,cAAe,CACXkB,MAAOlB,EAAckB,MACrBC,UAAWnB,EAAcmB,WAE7BV,eAIJ,MAAMW,EAAWzB,EAAUS,QAC3B,IAAKgB,EAAU,OAEf,IAAIC,GAAa,EACbC,EAAW,EAEf,MAAMC,EAAeC,IACjBA,EAAEC,iBACFD,EAAEE,kBACFL,GAAa,EACbC,EAAyB,eAAd5B,EAA6B8B,EAAEG,QAAUH,EAAEI,QAClD/B,EAAgBO,SAChBP,EAAgBO,QAAQmB,eAI1BM,EAAgBL,IAClB,IAAIH,IAAexB,EAAgBO,QAAS,OAC5C,MACM0B,GAD2B,eAAdpC,EAA6B8B,EAAEG,QAAUH,EAAEI,SACnCN,EAE3BzB,EAAgBO,QAAQ2B,SAASD,IAG/BE,EAAY,KACXX,GAAcxB,EAAgBO,UAC7BiB,GAAa,EACbxB,EAAgBO,QAAQ4B,cAQhC,OAJAZ,EAASa,iBAAiB,YAAaV,GACvCW,SAASD,iBAAiB,YAAaJ,GACvCK,SAASD,iBAAiB,UAAWD,GAE9B,KACHZ,EAASe,oBAAoB,YAAaZ,GAC1CW,SAASC,oBAAoB,YAAaN,GAC1CK,SAASC,oBAAoB,UAAWH,GACrCnC,EAAgBO,UACfP,EAAgBO,QAAQgC,UACxBvC,EAAgBO,QAAU,QAGnC,CAACZ,EAAeC,EAAgBC,EAAWI,EAAcC,EAAYC,EAAeC,IAEvF,MAAMoC,EAA6B,eAAd3C,EACrB,OACI4C,EAAAA,IAAA,MAAA,CACIC,IAAK5C,EACLuB,MAAO,CACHsB,SAAU,WACVC,MAAOJ,EAAe,OAAS,OAC/BK,OAAQL,EAAe,OAAS,OAChCM,gBAAiB,OACjBC,OAAQP,EAAe,YAAc,YACrCQ,OAAQ,IACRC,WAAY"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { ResizeDirection, VirtualConfig } from '../../../../types/index.js';
3
+
4
+ /**
5
+ * 可调整大小的面板组容器组件(链表策略)
6
+ * 使用 PanelManager(链表+Map)存储面板信息,适合面板数量较多的场景
7
+ */
8
+
9
+ interface ResizePanelGroupLinkedProps {
10
+ children: React.ReactNode;
11
+ direction?: ResizeDirection;
12
+ virtual?: boolean;
13
+ virtualConfig?: VirtualConfig;
14
+ style?: React.CSSProperties;
15
+ }
16
+ declare const ResizePanelGroupLinked: React.FC<ResizePanelGroupLinkedProps>;
17
+
18
+ export { ResizePanelGroupLinked };
19
+ export type { ResizePanelGroupLinkedProps };
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),n=require("react"),r=require("../../context.js"),t=require("../ResizeHandleLinked/index.js"),l=require("../../../../core/PanelManager.js");exports.ResizePanelGroupLinked=({children:i,direction:a="horizontal",style:s,virtual:u=!1,virtualConfig:o={}})=>{const c=n.useRef(new l.PanelManager),[d,g]=n.useState(0),x=n.useCallback((e,n)=>{const r=c.current.register(e,n);return g(c.current.getCount()),r},[]),h=n.useCallback(e=>{c.current.unregister(e),g(c.current.getCount())},[]),C=n.useCallback(e=>c.current.getByIndex(e),[]),P=n.useCallback(e=>c.current.getIndex(e),[]),k=n.useCallback(e=>c.current.getNodeByIndex(e),[]),p=n.Children.toArray(i),f=[];p.forEach((n,r)=>{f.push(n),r<p.length-1&&f.push(e.jsx(t.ResizeHandleLinked,{prePanelIndex:r,nextPanelIndex:r+1,direction:a},`handle-${r}`))});const I={enabled:u,...o},b={panelCount:d,registerPanel:x,unregisterPanel:h,getPanelInfo:C,getPanelIndex:P,direction:a,panelInfos:c.current.getAllPanels()||[],virtualConfig:I,getPanelNode:k};return e.jsx(r.ResizableContextLinked.Provider,{value:b,children:e.jsx("div",{style:{display:"flex",flexDirection:"horizontal"===a?"row":"column",height:"100%",position:"relative",...s},children:f})})};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/strategies/linked/components/ResizePanelGroupLinked/index.tsx"],"sourcesContent":[null],"names":["children","direction","style","virtual","virtualConfig","panelManager","useRef","PanelManager","panelCount","setPanelCount","useState","registerPanel","useCallback","panelEl","minSize","index","current","register","getCount","unregisterPanel","unregister","getPanelInfo","getByIndex","getPanelIndex","getIndex","getPanelNode","getNodeByIndex","childrenArray","React","Children","toArray","panelsWithHandles","forEach","child","push","length","_jsx","ResizeHandleLinked","prePanelIndex","nextPanelIndex","mergedVirtualConfig","enabled","contextValue","panelInfos","getAllPanels","ResizableContextLinked","Provider","value","display","flexDirection","height","position"],"mappings":"4NAkB6E,EACzEA,WACAC,YAAY,aACZC,QACAC,WAAU,EACVC,gBAAgB,CAAA,MAGhB,MAAMC,EAAeC,EAAAA,OAAqB,IAAIC,EAAAA,eACvCC,EAAYC,GAAiBC,EAAAA,SAAS,GAEvCC,EAAgBC,EAAAA,YAAY,CAACC,EAAsBC,KACrD,MAAMC,EAAQV,EAAaW,QAAQC,SAASJ,EAASC,GAErD,OADAL,EAAcJ,EAAaW,QAAQE,YAC5BH,GACR,IAEGI,EAAkBP,cAAaC,IACjCR,EAAaW,QAAQI,WAAWP,GAChCJ,EAAcJ,EAAaW,QAAQE,aACpC,IAEGG,EAAeT,cAAaG,GACvBV,EAAaW,QAAQM,WAAWP,GACxC,IAEGQ,EAAgBX,cAAaC,GACxBR,EAAaW,QAAQQ,SAASX,GACtC,IAGGY,EAAeb,cAAaG,GACvBV,EAAaW,QAAQU,eAAeX,GAC5C,IAEGY,EAAgBC,EAAMC,SAASC,QAAQ9B,GACvC+B,EAAuC,GAE7CJ,EAAcK,QAAQ,CAACC,EAAOlB,KAC1BgB,EAAkBG,KAAKD,GAMnBlB,EAAQY,EAAcQ,OAAS,GAC/BJ,EAAkBG,KACdE,EAAAA,IAACC,EAAAA,oBAEGC,cAAevB,EACfwB,eAAgBxB,EAAQ,EACxBd,UAAWA,GAHN,UAAUc,QAU/B,MAAMyB,EAAqC,CACvCC,QAAStC,KACNC,GAGDsC,EAA4C,CAC9ClC,WAAYA,EACZG,gBACAQ,kBACAE,eACAE,gBACAtB,YACA0C,WAAYtC,EAAaW,QAAQ4B,gBAAkB,GACnDxC,cAAeoC,EACff,gBAGJ,OACIW,MAACS,EAAAA,uBAAuBC,SAAQ,CAACC,MAAOL,EAAY1C,SAChDoC,EAAAA,IAAA,MAAA,CAAKlC,MAAO,CACJ8C,QAAS,OACTC,cAA6B,eAAdhD,EAA6B,MAAQ,SACpDiD,OAAQ,OACRC,SAAU,cACPjD,GACVF,SACI+B"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+
3
+ /**
4
+ * 可调整大小的面板组件(链表策略)
5
+ * 负责展示面板内容和管理面板的注册/注销
6
+ * 使用 PanelManager(链表+Map)存储,适合面板数量较多的场景
7
+ */
8
+
9
+ interface ResizePanelLinkedProps {
10
+ children: React.ReactNode;
11
+ minSize?: number;
12
+ onResize?: (width: number) => void;
13
+ }
14
+ declare const ResizePanelLinked: React.FC<ResizePanelLinkedProps>;
15
+
16
+ export { ResizePanelLinked };
17
+ export type { ResizePanelLinkedProps };
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),i=require("react"),r=require("../../context.js");exports.ResizePanelLinked=({children:t,minSize:n=100})=>{const s=i.useRef(null),u=i.useRef(-1),{registerPanel:c,unregisterPanel:d,direction:l}=r.useResizableContextLinked();return i.useEffect(()=>{if(!s.current)return;const e=s.current;return u.current=c(e,n),()=>{d(e)}},[n,c,d]),e.jsx("div",{ref:s,style:{flex:1,minWidth:"horizontal"===l?n:void 0,minHeight:"vertical"===l?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/linked/components/ResizePanelLinked/index.tsx"],"sourcesContent":[null],"names":["children","minSize","panelRef","useRef","panelIndexRef","registerPanel","unregisterPanel","direction","useResizableContextLinked","useEffect","current","panelEl","_jsx","ref","style","flex","minWidth","undefined","minHeight","width","overflow","position","height","padding"],"mappings":"6HAcmE,EAC/DA,WACAC,UAAU,QAGV,MAAMC,EAAWC,EAAAA,OAAuB,MAClCC,EAAgBD,EAAAA,YAChBE,cAAEA,EAAaC,gBAAEA,EAAeC,UAAEA,GAAcC,EAAAA,4BAWtD,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"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { PanelInfo, ResizeDirection, VirtualConfig, PanelNode } from '../../types/index.js';
3
+
4
+ /**
5
+ * Resizable Context 接口定义(链表策略)
6
+ */
7
+ interface ResizableContextLinkedValue {
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
+ getPanelNode: (index: number) => PanelNode | null;
17
+ onPanelsChange?: (changedIndices: Set<number>) => void;
18
+ }
19
+ /**
20
+ * Resizable Context(链表策略)
21
+ */
22
+ declare const ResizableContextLinked: React.Context<ResizableContextLinkedValue>;
23
+ /**
24
+ * 使用 Resizable Context 的 Hook(链表策略)
25
+ */
26
+ declare const useResizableContextLinked: () => ResizableContextLinkedValue;
27
+
28
+ export { ResizableContextLinked, useResizableContextLinked };
29
+ export type { ResizableContextLinkedValue };
@@ -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},getPanelNode:()=>null,onPanelsChange:void 0});exports.ResizableContextLinked=n,exports.useResizableContextLinked=()=>{const t=e.useContext(n);if(!t)throw new Error("useResizableContextLinked must be used within ResizablePanelGroupLinked");return t};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../src/strategies/linked/context.tsx"],"sourcesContent":[null],"names":["ResizableContextLinked","React","createContext","panelCount","registerPanel","unregisterPanel","getPanelInfo","getPanelIndex","direction","panelInfos","virtualConfig","enabled","getPanelNode","onPanelsChange","undefined","context","useContext","Error"],"mappings":"sCAsCaA,EAAyBC,EAAMC,cAhBa,CACrDC,WAAY,EACZC,cAAe,IAAM,EACrBC,gBAAiB,OACjBC,aAAc,IAAM,KACpBC,cAAe,KAAM,EACrBC,UAAW,aACXC,WAAY,GACZC,cAAe,CAAEC,SAAS,GAC1BC,aAAc,IAAM,KACpBC,oBAAgBC,uEAWqB,KACrC,MAAMC,EAAUd,EAAMe,WAAWhB,GACjC,IAAKe,EACD,MAAM,IAAIE,MAAM,2EAEpB,OAAOF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../../core/virtualNode.js");exports.default=class{constructor(t){Object.defineProperty(this,"prePanelEl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"nextPanelEl",{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,"getPanelNode",{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,"prePanelStartSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"nextPanelStartSize",{enumerable:!0,configurable:!0,writable:!0,value:0}),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,"handleSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"virtualNodeManager",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.prePanelEl=t.prePanelEl,this.nextPanelEl=t.nextPanelEl,this.getPanelInfo=t.getPanelInfo,this.getPanelNode=t.getPanelNode,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)}startResize(){this.isResizing=!0,this.allPanelsCurrentSizes.clear(),this.prePanelStartSize=this.getSize(this.prePanelEl),this.allPanelsStartSizes.set(this.prePanelIndex,this.prePanelStartSize),this.allPanelsCurrentSizes.set(this.prePanelIndex,this.prePanelStartSize),this.nextPanelStartSize=this.getSize(this.nextPanelEl),this.allPanelsStartSizes.set(this.nextPanelIndex,this.nextPanelStartSize),this.allPanelsCurrentSizes.set(this.nextPanelIndex,this.nextPanelStartSize);const e="horizontal"===this.direction?"width":"height";if(this.virtualEnabled&&this.virtualNodeManager){const e=this.getPosition(this.prePanelEl);this.allPanelsStartPositions.set(this.prePanelIndex,e),this.virtualNodeManager.createVirtualNode(this.prePanelEl,this.virtualConfig);const t=this.getPosition(this.nextPanelEl);this.allPanelsStartPositions.set(this.nextPanelIndex,t),this.virtualNodeManager.createVirtualNode(this.nextPanelEl,this.virtualConfig);let i=this.getPanelNode(this.prePanelIndex);for(;i&&i.prev;){i=i.prev;const e=i.info,t=this.getSize(e.panelEl),l=this.getPosition(e.panelEl);this.allPanelsStartSizes.set(i.index,t),this.allPanelsCurrentSizes.set(i.index,t),this.allPanelsStartPositions.set(i.index,l),this.virtualNodeManager.createVirtualNode(e.panelEl,this.virtualConfig)}for(i=this.getPanelNode(this.nextPanelIndex);i&&i.next;){i=i.next;const e=i.info,t=this.getSize(e.panelEl),l=this.getPosition(e.panelEl);this.allPanelsStartSizes.set(i.index,t),this.allPanelsCurrentSizes.set(i.index,t),this.allPanelsStartPositions.set(i.index,l),this.virtualNodeManager.createVirtualNode(e.panelEl,this.virtualConfig)}}else{this.prePanelEl.style.flex="none",this.prePanelEl.style[e]=`${this.prePanelStartSize}px`,this.nextPanelEl.style.flex="none",this.nextPanelEl.style[e]=`${this.nextPanelStartSize}px`;let t=this.getPanelNode(this.prePanelIndex);for(;t&&t.prev;){t=t.prev;const i=t.info,l=this.getSize(i.panelEl);this.allPanelsStartSizes.set(t.index,l),this.allPanelsCurrentSizes.set(t.index,l),i.panelEl.style.flex="none",i.panelEl.style[e]=`${l}px`}for(t=this.getPanelNode(this.nextPanelIndex);t&&t.next;){t=t.next;const i=t.info,l=this.getSize(i.panelEl);this.allPanelsStartSizes.set(t.index,l),this.allPanelsCurrentSizes.set(t.index,l),i.panelEl.style.flex="none",i.panelEl.style[e]=`${l}px`}}}onResize(e){this.isResizing&&(e>0?this.adjustPanelsNext(e):this.adjustPanelsPre(-e))}adjustPanelsNext(e){let t=e;const i="horizontal"===this.direction?"width":"height",l=this.getPanelInfo(this.nextPanelIndex);if(l){const e=this.allPanelsStartSizes.get(this.nextPanelIndex)||0,a=e-t,n=Math.max(l.minSize,a),s=e-n,r=l.panelEl;this.allPanelsCurrentSizes.set(this.nextPanelIndex,n),this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(r,n,this.direction):r.style[i]=`${n}px`,t-=s}if(t>0){let e=this.getPanelNode(this.nextPanelIndex);for(;t>0&&e&&e.next;){e=e.next;const l=e.info,a=this.allPanelsStartSizes.get(e.index)||0,n=a-t,s=Math.max(l.minSize,n),r=a-s;if(this.allPanelsCurrentSizes.set(e.index,s),this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(l.panelEl,s,this.direction):l.panelEl.style[i]=`${s}px`,t-=r,s>l.minSize||t<=0)break}}const a=this.getPanelInfo(this.prePanelIndex);if(a){const l=(this.allPanelsStartSizes.get(this.prePanelIndex)||0)+(e-t),n=a.panelEl;this.allPanelsCurrentSizes.set(this.prePanelIndex,l),this.virtualEnabled&&this.virtualNodeManager?(this.virtualNodeManager.updateVirtualNode(n,l,this.direction),this.recalculateAllPanelsPositions()):n.style[i]=`${l}px`}}adjustPanelsPre(e){let t=e,i=0;const l="horizontal"===this.direction?"width":"height",a=this.getPanelInfo(this.prePanelIndex);if(a){const e=this.allPanelsStartSizes.get(this.prePanelIndex)||0,n=e-t,s=Math.max(a.minSize,n),r=e-s,o=a.panelEl;this.allPanelsCurrentSizes.set(this.prePanelIndex,s),this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(o,s,this.direction):o.style[l]=`${s}px`,i+=r,t-=r}if(t>0){let e=this.getPanelNode(this.prePanelIndex);for(;t>0&&e&&e.prev;){e=e.prev;const a=e.info,n=this.allPanelsStartSizes.get(e.index);if(void 0===n)break;const s=n-t,r=Math.max(a.minSize,s),o=n-r;if(this.allPanelsCurrentSizes.set(e.index,r),this.virtualEnabled&&this.virtualNodeManager?this.virtualNodeManager.updateVirtualNode(a.panelEl,r,this.direction):a.panelEl.style[l]=`${r}px`,i+=o,t-=o,r>a.minSize||t<=0)break}}const n=this.getPanelInfo(this.nextPanelIndex);if(n){const e=(this.allPanelsStartSizes.get(this.nextPanelIndex)||0)+i,t=n.panelEl;this.allPanelsCurrentSizes.set(this.nextPanelIndex,e),this.virtualEnabled&&this.virtualNodeManager?(this.virtualNodeManager.updateVirtualNode(t,e,this.direction),this.recalculateAllPanelsPositions()):t.style[l]=`${e}px`}}recalculateAllPanelsPositions(){if(!this.virtualEnabled||!this.virtualNodeManager)return;const e=Array.from(this.allPanelsStartPositions.keys()).sort((e,t)=>e-t);if(0===e.length)return;const t=e[0];let i=this.allPanelsStartPositions.get(t)||0,l=null;for(const t of e){const e=this.getPanelInfo(t);if(!e)continue;const a=this.allPanelsStartPositions.get(t);void 0!==a&&(this.virtualNodeManager.getVirtualNode(e.panelEl)&&(null===l?i=a:i+=(this.allPanelsCurrentSizes.get(l)||0)+this.handleSize,this.virtualNodeManager.updateVirtualNodePosition(e.panelEl,i,this.direction),l=t))}}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 l=this.getPanelInfo(i);if(!l)return;const a=this.virtualNodeManager.getVirtualNode(l.panelEl);if(a){const t="horizontal"===this.direction?a.offsetWidth:a.offsetHeight;l.panelEl.style.flex="none",l.panelEl.style[e]=`${t}px`}}),this.virtualNodeManager.removeAllVirtualNodes(),requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const i=this.getPanelInfo(t);i&&(i.panelEl.style.flex="")})})}else requestAnimationFrame(()=>{this.allPanelsStartSizes.forEach((e,t)=>{const i=this.getPanelInfo(t);i&&(i.panelEl.style.flex="")})});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/linked/resizeAble.ts"],"sourcesContent":[null],"names":["constructor","options","Object","defineProperty","this","value","Map","prePanelEl","nextPanelEl","getPanelInfo","getPanelNode","prePanelIndex","nextPanelIndex","direction","virtualEnabled","virtualConfig","handleSize","virtualNodeManager","VirtualNodeManager","startResize","isResizing","allPanelsCurrentSizes","clear","prePanelStartSize","getSize","allPanelsStartSizes","set","nextPanelStartSize","sizeProperty","prePos","getPosition","allPanelsStartPositions","createVirtualNode","nextPos","currentNode","prev","panelInfo","info","size","panelEl","pos","index","next","style","flex","onResize","delta","adjustPanelsNext","adjustPanelsPre","remainingDelta","nextPanelInfo","nextStartSize","get","targetNextSize","newNextSize","Math","max","minSize","actualReduction","updateVirtualNode","prePanelInfo","newPreSize","recalculateAllPanelsPositions","totalReduced","preStartSize","targetPreSize","prevPanelInfo","prevStartSize","undefined","targetPrevSize","newPrevSize","recordedIndices","Array","from","keys","sort","a","b","length","firstIndex","cumulativePosition","prevIndex","startPos","getVirtualNode","updateVirtualNodePosition","el","offsetWidth","offsetHeight","offsetLeft","offsetTop","endResize","forEach","_","virtualEl","finalSize","removeAllVirtualNodes","requestAnimationFrame","destroy"],"mappings":"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"}
@@ -27,7 +27,16 @@ interface VirtualNodeConfig {
27
27
  */
28
28
  type ResizeDirection = 'horizontal' | 'vertical';
29
29
  /**
30
- * ResizeAbleCore 选项接口
30
+ * 优化策略类型
31
+ */
32
+ type OptimizationStrategy = 'normal' | 'linked';
33
+ /**
34
+ * 面板变化回调函数类型
35
+ * @param changedIndices - 发生变化的面板索引集合
36
+ */
37
+ type OnPanelsChangeCallback = (changedIndices: Set<number>) => void;
38
+ /**
39
+ * ResizeAbleCore 选项接口(常规策略)
31
40
  */
32
41
  interface ResizeAbleCoreOptions {
33
42
  prePanelEl: HTMLElement;
@@ -39,6 +48,31 @@ interface ResizeAbleCoreOptions {
39
48
  virtualEnabled?: boolean;
40
49
  virtualConfig?: VirtualNodeConfig;
41
50
  handleSize?: number;
51
+ onPanelsChange?: OnPanelsChangeCallback;
52
+ }
53
+ /**
54
+ * ResizeAbleCoreLinked 选项接口(链表优化策略)
55
+ */
56
+ interface ResizeAbleCoreLinkedOptions {
57
+ prePanelEl: HTMLElement;
58
+ nextPanelEl: HTMLElement;
59
+ getPanelInfo: (index: number) => PanelInfo | null;
60
+ getPanelNode: (index: number) => PanelNode | null;
61
+ prePanelIndex: number;
62
+ nextPanelIndex: number;
63
+ direction: ResizeDirection;
64
+ virtualEnabled?: boolean;
65
+ virtualConfig?: VirtualNodeConfig;
66
+ handleSize?: number;
67
+ }
68
+ /**
69
+ * 链表结构
70
+ */
71
+ interface PanelNode {
72
+ index: number;
73
+ info: PanelInfo;
74
+ prev: PanelNode | null;
75
+ next: PanelNode | null;
42
76
  }
43
77
 
44
- export type { PanelInfo, ResizeAbleCoreOptions, ResizeDirection, VirtualConfig, VirtualNodeConfig };
78
+ export type { OnPanelsChangeCallback, OptimizationStrategy, PanelInfo, PanelNode, ResizeAbleCoreLinkedOptions, ResizeAbleCoreOptions, ResizeDirection, VirtualConfig, VirtualNodeConfig };
package/package.json CHANGED
@@ -1,134 +1,165 @@
1
- {
2
- "name": "react-resize-demo",
3
- "version": "2.0.2",
4
- "description": "A React component library demo",
5
- "main": "dist/index.js",
6
- "module": "dist/esm/index.js",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": {
11
- "types": "./dist/esm/index.d.ts",
12
- "default": "./dist/esm/index.js"
13
- },
14
- "require": {
15
- "types": "./dist/index.d.ts",
16
- "default": "./dist/index.js"
17
- }
18
- },
19
- "./components": {
20
- "import": {
21
- "types": "./dist/esm/components/index.d.ts",
22
- "default": "./dist/esm/components/index.js"
23
- },
24
- "require": {
25
- "types": "./dist/components/index.d.ts",
26
- "default": "./dist/components/index.js"
27
- }
28
- },
29
- "./components/*": {
30
- "import": {
31
- "types": "./dist/esm/components/*/index.d.ts",
32
- "default": "./dist/esm/components/*/index.js"
33
- },
34
- "require": {
35
- "types": "./dist/components/*/index.d.ts",
36
- "default": "./dist/components/*/index.js"
37
- }
38
- },
39
- "./components/shared/*": {
40
- "import": {
41
- "types": "./dist/esm/components/shared/*.d.ts",
42
- "default": "./dist/esm/components/shared/*.js"
43
- },
44
- "require": {
45
- "types": "./dist/components/shared/*.d.ts",
46
- "default": "./dist/components/shared/*.js"
47
- }
48
- },
49
- "./utils": {
50
- "import": {
51
- "types": "./dist/esm/utils/index.d.ts",
52
- "default": "./dist/esm/utils/index.js"
53
- },
54
- "require": {
55
- "types": "./dist/utils/index.d.ts",
56
- "default": "./dist/utils/index.js"
57
- }
58
- },
59
- "./utils/*": {
60
- "import": {
61
- "types": "./dist/esm/utils/*.d.ts",
62
- "default": "./dist/esm/utils/*.js"
63
- },
64
- "require": {
65
- "types": "./dist/utils/*.d.ts",
66
- "default": "./dist/utils/*.js"
67
- }
68
- },
69
- "./types": {
70
- "import": {
71
- "types": "./dist/esm/types/index.d.ts",
72
- "default": "./dist/esm/types/index.js"
73
- },
74
- "require": {
75
- "types": "./dist/types/index.d.ts",
76
- "default": "./dist/types/index.js"
77
- }
78
- }
79
- },
80
- "sideEffects": false,
81
- "files": [
82
- "dist",
83
- "README.md",
84
- "CHANGELOG.md"
85
- ],
86
- "scripts": {
87
- "build": "rollup -c",
88
- "build:watch": "rollup -c -w",
89
- "dev": "vite",
90
- "demo": "vite --config vite.demo.config.ts",
91
- "demo:build": "vite build --config vite.demo.config.ts",
92
- "type-check": "tsc --noEmit",
93
- "lint": "eslint src --ext .ts,.tsx",
94
- "prepublishOnly": "npm run build"
95
- },
96
- "keywords": [
97
- "react",
98
- "component",
99
- "library"
100
- ],
101
- "author": "",
102
- "license": "MIT",
103
- "peerDependencies": {
104
- "react": ">=16.8.0",
105
- "react-dom": ">=16.8.0"
106
- },
107
- "devDependencies": {
108
- "@rollup/plugin-commonjs": "^25.0.7",
109
- "@rollup/plugin-node-resolve": "^15.2.3",
110
- "@rollup/plugin-typescript": "^11.1.5",
111
- "@types/react": "^18.2.43",
112
- "@types/react-dom": "^18.2.17",
113
- "@typescript-eslint/eslint-plugin": "^6.14.0",
114
- "@typescript-eslint/parser": "^6.14.0",
115
- "@vitejs/plugin-react": "^4.2.1",
116
- "eslint": "^8.55.0",
117
- "eslint-plugin-react": "^7.33.2",
118
- "eslint-plugin-react-hooks": "^4.6.0",
119
- "react": "^18.2.0",
120
- "react-dom": "^18.2.0",
121
- "rollup": "^4.6.1",
122
- "rollup-plugin-dts": "^6.1.0",
123
- "rollup-plugin-peer-deps-external": "^2.2.4",
124
- "rollup-plugin-postcss": "^4.0.2",
125
- "tslib": "^2.6.2",
126
- "typescript": "^5.3.3",
127
- "vite": "^5.0.7"
128
- },
129
- "repository": {
130
- "type": "git",
131
- "url": ""
132
- }
133
- }
134
-
1
+ {
2
+ "name": "react-resize-demo",
3
+ "version": "3.0.0",
4
+ "description": "A React component library demo",
5
+ "main": "dist/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/esm/index.d.ts",
12
+ "default": "./dist/esm/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "./components": {
20
+ "import": {
21
+ "types": "./dist/esm/components/index.d.ts",
22
+ "default": "./dist/esm/components/index.js"
23
+ },
24
+ "require": {
25
+ "types": "./dist/components/index.d.ts",
26
+ "default": "./dist/components/index.js"
27
+ }
28
+ },
29
+ "./components/*": {
30
+ "import": {
31
+ "types": "./dist/esm/components/*/index.d.ts",
32
+ "default": "./dist/esm/components/*/index.js"
33
+ },
34
+ "require": {
35
+ "types": "./dist/components/*/index.d.ts",
36
+ "default": "./dist/components/*/index.js"
37
+ }
38
+ },
39
+ "./strategies/*": {
40
+ "import": {
41
+ "types": "./dist/esm/strategies/*/index.d.ts",
42
+ "default": "./dist/esm/strategies/*/index.js"
43
+ },
44
+ "require": {
45
+ "types": "./dist/strategies/*/index.d.ts",
46
+ "default": "./dist/strategies/*/index.js"
47
+ }
48
+ },
49
+ "./strategies/*/*": {
50
+ "import": {
51
+ "types": "./dist/esm/strategies/*/*.d.ts",
52
+ "default": "./dist/esm/strategies/*/*.js"
53
+ },
54
+ "require": {
55
+ "types": "./dist/strategies/*/*.d.ts",
56
+ "default": "./dist/strategies/*/*.js"
57
+ }
58
+ },
59
+ "./strategies/*/components/*": {
60
+ "import": {
61
+ "types": "./dist/esm/strategies/*/components/*/index.d.ts",
62
+ "default": "./dist/esm/strategies/*/components/*/index.js"
63
+ },
64
+ "require": {
65
+ "types": "./dist/strategies/*/components/*/index.d.ts",
66
+ "default": "./dist/strategies/*/components/*/index.js"
67
+ }
68
+ },
69
+ "./core/*": {
70
+ "import": {
71
+ "types": "./dist/esm/core/*.d.ts",
72
+ "default": "./dist/esm/core/*.js"
73
+ },
74
+ "require": {
75
+ "types": "./dist/core/*.d.ts",
76
+ "default": "./dist/core/*.js"
77
+ }
78
+ },
79
+ "./utils": {
80
+ "import": {
81
+ "types": "./dist/esm/utils/index.d.ts",
82
+ "default": "./dist/esm/utils/index.js"
83
+ },
84
+ "require": {
85
+ "types": "./dist/utils/index.d.ts",
86
+ "default": "./dist/utils/index.js"
87
+ }
88
+ },
89
+ "./utils/*": {
90
+ "import": {
91
+ "types": "./dist/esm/utils/*.d.ts",
92
+ "default": "./dist/esm/utils/*.js"
93
+ },
94
+ "require": {
95
+ "types": "./dist/utils/*.d.ts",
96
+ "default": "./dist/utils/*.js"
97
+ }
98
+ },
99
+ "./types": {
100
+ "import": {
101
+ "types": "./dist/esm/types/index.d.ts",
102
+ "default": "./dist/esm/types/index.js"
103
+ },
104
+ "require": {
105
+ "types": "./dist/types/index.d.ts",
106
+ "default": "./dist/types/index.js"
107
+ }
108
+ }
109
+ },
110
+ "sideEffects": false,
111
+ "files": [
112
+ "dist",
113
+ "README.md",
114
+ "CHANGELOG.md"
115
+ ],
116
+ "scripts": {
117
+ "build": "rollup -c",
118
+ "build:watch": "rollup -c -w",
119
+ "dev": "vite",
120
+ "demo": "vite --config vite.demo.config.ts",
121
+ "demo:build": "vite build --config vite.demo.config.ts",
122
+ "type-check": "tsc --noEmit",
123
+ "lint": "eslint src --ext .ts,.tsx",
124
+ "prepublishOnly": "npm run build"
125
+ },
126
+ "keywords": [
127
+ "react",
128
+ "component",
129
+ "library"
130
+ ],
131
+ "author": "",
132
+ "license": "MIT",
133
+ "peerDependencies": {
134
+ "react": ">=16.8.0",
135
+ "react-dom": ">=16.8.0"
136
+ },
137
+ "devDependencies": {
138
+ "@rollup/plugin-alias": "^6.0.0",
139
+ "@rollup/plugin-commonjs": "^25.0.7",
140
+ "@rollup/plugin-node-resolve": "^15.2.3",
141
+ "@rollup/plugin-terser": "^0.4.4",
142
+ "@rollup/plugin-typescript": "^11.1.5",
143
+ "@types/react": "^18.2.43",
144
+ "@types/react-dom": "^18.2.17",
145
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
146
+ "@typescript-eslint/parser": "^6.14.0",
147
+ "@vitejs/plugin-react": "^4.2.1",
148
+ "eslint": "^8.55.0",
149
+ "eslint-plugin-react": "^7.33.2",
150
+ "eslint-plugin-react-hooks": "^4.6.0",
151
+ "react": "^18.2.0",
152
+ "react-dom": "^18.2.0",
153
+ "rollup": "^4.6.1",
154
+ "rollup-plugin-dts": "^6.1.0",
155
+ "rollup-plugin-peer-deps-external": "^2.2.4",
156
+ "rollup-plugin-postcss": "^4.0.2",
157
+ "tslib": "^2.6.2",
158
+ "typescript": "^5.3.3",
159
+ "vite": "^5.0.7"
160
+ },
161
+ "repository": {
162
+ "type": "git",
163
+ "url": ""
164
+ }
165
+ }
@@ -1,92 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var resizeAble = require('../../utils/resizeAble.js');
6
- var context = require('../shared/context.js');
7
-
8
- const ResizeHandle = ({ prePanelIndex, nextPanelIndex, direction, }) => {
9
- const handleRef = React.useRef(null);
10
- const coreInstanceRef = React.useRef(null);
11
- const { getPanelInfo, panelCount, virtualConfig } = context.useResizableContext();
12
- React.useEffect(() => {
13
- // 确保所需的面板索引都已注册
14
- // 需要确保 nextPanelIndex 对应的面板已经注册(因为索引从0开始,所以需要 >= nextPanelIndex + 1)
15
- if (panelCount <= nextPanelIndex || !handleRef.current) {
16
- return;
17
- }
18
- const prePanelInfo = getPanelInfo(prePanelIndex);
19
- const nextPanelInfo = getPanelInfo(nextPanelIndex);
20
- if (!prePanelInfo || !nextPanelInfo)
21
- return;
22
- // 获取拖拽器的尺寸
23
- const handleSize = handleRef.current
24
- ? (direction === 'horizontal'
25
- ? handleRef.current.offsetWidth
26
- : handleRef.current.offsetHeight)
27
- : (direction === 'horizontal' ? 10 : 10); // 默认10px
28
- coreInstanceRef.current = new resizeAble.default({
29
- prePanelEl: prePanelInfo.panelEl,
30
- nextPanelEl: nextPanelInfo.panelEl,
31
- getPanelInfo,
32
- prePanelIndex,
33
- nextPanelIndex,
34
- direction,
35
- virtualEnabled: virtualConfig.enabled || false,
36
- virtualConfig: {
37
- style: virtualConfig.style,
38
- className: virtualConfig.className,
39
- },
40
- handleSize, // 传递拖拽器尺寸
41
- });
42
- // 将拖拽器的开始/移动/结束事件绑定至核心类
43
- const handleEl = handleRef.current;
44
- let isResizing = false;
45
- let startPos = 0;
46
- const startResize = (e) => {
47
- e.preventDefault();
48
- isResizing = true;
49
- startPos = direction === 'horizontal' ? e.clientX : e.clientY;
50
- if (coreInstanceRef.current) {
51
- coreInstanceRef.current.startResize();
52
- }
53
- };
54
- const onResizeMove = (e) => {
55
- if (!isResizing || !coreInstanceRef.current)
56
- return;
57
- const currentPos = direction === 'horizontal' ? e.clientX : e.clientY;
58
- const delta = currentPos - startPos;
59
- coreInstanceRef.current.onResize(delta);
60
- };
61
- const endResize = () => {
62
- if (isResizing && coreInstanceRef.current) {
63
- isResizing = false;
64
- coreInstanceRef.current.endResize();
65
- }
66
- };
67
- handleEl.addEventListener('mousedown', startResize);
68
- document.addEventListener('mousemove', onResizeMove);
69
- document.addEventListener('mouseup', endResize);
70
- return () => {
71
- handleEl.removeEventListener('mousedown', startResize);
72
- document.removeEventListener('mousemove', onResizeMove);
73
- document.removeEventListener('mouseup', endResize);
74
- if (coreInstanceRef.current) {
75
- coreInstanceRef.current.destroy();
76
- }
77
- };
78
- }, [prePanelIndex, nextPanelIndex, direction, getPanelInfo, panelCount, virtualConfig]);
79
- const isHorizontal = direction === 'horizontal';
80
- return (jsxRuntime.jsx("div", { ref: handleRef, style: {
81
- position: 'relative',
82
- width: isHorizontal ? '10px' : '100%',
83
- height: isHorizontal ? '100%' : '10px',
84
- backgroundColor: '#000',
85
- cursor: isHorizontal ? 'ew-resize' : 'ns-resize',
86
- zIndex: 1000,
87
- flexShrink: 0,
88
- } }));
89
- };
90
-
91
- exports.ResizeHandle = ResizeHandle;
92
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/ResizeHandle/index.tsx"],"sourcesContent":[null],"names":["useRef","useResizableContext","useEffect","ResizeAbleCore","_jsx"],"mappings":"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"}