dockview-react 6.2.2 → 6.4.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/README.md +1 -0
- package/dist/dockview-react.js +2 -2
- package/dist/dockview-react.min.js +2 -2
- package/dist/package/main.cjs.js +1 -1
- package/dist/package/main.cjs.min.js +1 -1
- package/dist/package/main.esm.min.mjs +3 -3
- package/dist/package/main.esm.mjs +1 -1
- package/dist/styles/dockview.css +117 -1
- package/package.json +4 -2
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-react
|
|
3
|
-
* @version 6.
|
|
3
|
+
* @version 6.4.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
7
|
import{DockviewDisposable as e,PROPERTY_KEYS_DOCKVIEW as t,createDockview as n,PROPERTY_KEYS_SPLITVIEW as o,createSplitview as r,PROPERTY_KEYS_GRIDVIEW as a,createGridview as i,PROPERTY_KEYS_PANEVIEW as s,createPaneview as c,DockviewEmitter as p,SplitviewPanel as l,SplitviewApi as d,GridviewPanel as u,GridviewApi as m,DockviewMutableDisposable as h,DockviewCompositeDisposable as f}from"dockview-core";export*from"dockview-core";import v from"react";import C from"react-dom";
|
|
8
8
|
/**
|
|
9
9
|
* dockview
|
|
10
|
-
* @version 6.
|
|
10
|
+
* @version 6.4.0
|
|
11
11
|
* @link https://github.com/mathuo/dockview
|
|
12
12
|
* @license MIT
|
|
13
|
-
*/const P=(e,t)=>{const[,n]=v.useState(0),o=v.useRef(e.componentProps);return v.useImperativeHandle(t,()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(e=>e+1)}}),[]),v.createElement(e.component,o.current)};P.displayName="DockviewReactJsBridge";const w=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),b=v.createContext({});class g{constructor(e,t,n,o,r){this.parent=e,this.portalStore=t,this.component=n,this.parameters=o,this.context=r,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if(!y(this.component))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");const e=v.createElement(v.forwardRef(P),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),t=this.context?v.createElement(b.Provider,{value:this.context},e):e,n=C.createPortal(t,this.parent,w.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const _=()=>{const[t,n]=v.useState([]);v.useDebugValue(`Portal count: ${t.length}`);return[t,v.useCallback(t=>{n(e=>[...e,t]);let o=!1;return e.from(()=>{if(o)throw new Error("invalid operation: resource already disposed");o=!0,n(e=>e.filter(e=>e!==t))})},[])]};function y(e){return"function"==typeof e||!!(null==e?void 0:e.$$typeof)}class E{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._onDidFocus=new p,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new p,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new g(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class D{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new g(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class A{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new g(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,n,o;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(o=null===(n=this.parameters)||void 0===n?void 0:n.params)&&void 0!==o?o:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class O{get element(){return this._element}get part(){return this._part}constructor(e,t,n){this.component=e,this.reactPortalStore=t,this._group=n,this.mutableDisposable=new h,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new f(this._group.model.onDidAddPanel(()=>{this.updatePanels()}),this._group.model.onDidRemovePanel(()=>{this.updatePanels()}),this._group.model.onDidActivePanelChange(()=>{this.updateActivePanel()}),e.api.onDidActiveChange(()=>{this.updateGroupActive()}),e.api.onDidLocationChange(e=>{this.updateLocation(e.location)})),this._part=new g(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group,headerPosition:this._group.model.headerPosition,location:e.api.location})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}updateLocation(e){this.update({params:{location:e}})}}class R{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new g(this._element,this.reactPortalStore,this.component,e)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class S{get element(){return this._element}constructor(e,t){this.component=e,this.reactPortalStore=t,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.display="inline-flex"}init(e){this.part=new g(this._element,this.reactPortalStore,this.component,{tabGroup:e.tabGroup,api:e.api})}update(e){var t;null===(t=this.part)||void 0===t||t.update({tabGroup:e.tabGroup})}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}function H(e,t){return e?n=>new O(e,t,n):void 0}const k="props.defaultTabComponent";const L=v.forwardRef((e,o)=>{const r=v.useRef(null),a=v.useRef(void 0),[i,s]=_();v.useImperativeHandle(o,()=>r.current,[]);const c=v.useRef({});return v.useEffect(()=>{const n={};t.forEach(t=>{const o=t,r=e[o];o in e&&r!==c.current[o]&&(n[o]=r)}),a.current&&a.current.updateOptions(n),c.current=e},t.map(t=>e[t])),v.useEffect(()=>{var o;if(!r.current)return;const i=null!==(o=e.tabComponents)&&void 0!==o?o:{};e.defaultTabComponent&&(i[k]=e.defaultTabComponent);const c={createLeftHeaderActionComponent:H(e.leftHeaderActionsComponent,{addPortal:s}),createRightHeaderActionComponent:H(e.rightHeaderActionsComponent,{addPortal:s}),createPrefixHeaderActionComponent:H(e.prefixHeaderActionsComponent,{addPortal:s}),createComponent:t=>new E(t.id,e.components[t.name],{addPortal:s}),createTabComponent:e=>new D(e.id,i[e.name],{addPortal:s}),createWatermarkComponent:e.watermarkComponent?()=>new A("watermark",e.watermarkComponent,{addPortal:s}):void 0,defaultTabComponent:e.defaultTabComponent?k:void 0,createContextMenuItemComponent:e=>{if(e.component)return new R(e.id,e.component,{addPortal:s})}},p=function(e){return t.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e);if(e.tabGroupChipComponent){const t=e.tabGroupChipComponent;p.createTabGroupChipComponent=()=>new S(t,{addPortal:s})}const l=n(r.current,Object.assign(Object.assign({},p),c)),{clientWidth:d,clientHeight:u}=r.current;return l.layout(d,u),e.onReady&&e.onReady({api:l}),a.current=l,()=>{a.current=void 0,l.dispose()}},[]),v.useEffect(()=>{if(!a.current)return()=>{};const t=a.current.onDidDrop(t=>{e.onDidDrop&&e.onDidDrop(t)});return()=>{t.dispose()}},[e.onDidDrop]),v.useEffect(()=>{if(!a.current)return()=>{};const t=a.current.onWillDrop(t=>{e.onWillDrop&&e.onWillDrop(t)});return()=>{t.dispose()}},[e.onWillDrop]),v.useEffect(()=>{a.current&&a.current.updateOptions({createTabGroupChipComponent:e.tabGroupChipComponent?()=>new S(e.tabGroupChipComponent,{addPortal:s}):void 0})},[e.tabGroupChipComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createComponent:t=>new E(t.id,e.components[t.name],{addPortal:s})})},[e.components]),v.useEffect(()=>{var t;if(!a.current)return;const n=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(n[k]=e.defaultTabComponent),a.current.updateOptions({defaultTabComponent:e.defaultTabComponent?k:void 0,createTabComponent:e=>new D(e.id,n[e.name],{addPortal:s})})},[e.tabComponents,e.defaultTabComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new A("watermark",e.watermarkComponent,{addPortal:s}):void 0})},[e.watermarkComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createRightHeaderActionComponent:H(e.rightHeaderActionsComponent,{addPortal:s})})},[e.rightHeaderActionsComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createLeftHeaderActionComponent:H(e.leftHeaderActionsComponent,{addPortal:s})})},[e.leftHeaderActionsComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createPrefixHeaderActionComponent:H(e.prefixHeaderActionsComponent,{addPortal:s})})},[e.prefixHeaderActionsComponent]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:r},i)});L.displayName="DockviewComponent","function"==typeof SuppressedError&&SuppressedError;const x=()=>v.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},v.createElement("path",{d:"M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z"}));const j=e=>{var{api:t,containerApi:n,params:o,hideClose:r,closeActionOverride:a,onPointerDown:i,onPointerUp:s,onPointerLeave:c,tabLocation:p}=e,l=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n}(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const d=function(e){const[t,n]=v.useState(e.title);return v.useEffect(()=>{const o=e.onDidTitleChange(e=>{n(e.title)});return t!==e.title&&n(e.title),()=>{o.dispose()}},[e]),t}(t),u=v.useRef(!1),m=v.useCallback(e=>{e.preventDefault(),a?a():t.close()},[t,a]),h=v.useCallback(e=>{e.preventDefault()},[]),f=v.useCallback(e=>{u.current=1===e.button,null==i||i(e)},[i]),C=v.useCallback(e=>{u&&1===e.button&&!r&&(u.current=!1,m(e)),null==s||s(e)},[s,m,r]),P=v.useCallback(e=>{u.current=!1,null==c||c(e)},[c]);return v.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},l,{onPointerDown:f,onPointerUp:C,onPointerLeave:P,className:"dv-default-tab"}),v.createElement("span",{className:"dv-default-tab-content"},d),!r&&v.createElement("div",{className:"dv-default-tab-action",onPointerDown:h,onClick:m},v.createElement(x,null)))};class G extends l{constructor(e,t,n,o){super(e,t),this.reactComponent=n,this.reactPortalStore=o}getComponent(){var e,t;return new g(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new d(this._params.accessor)})}}const N=v.forwardRef((e,t)=>{const n=v.useRef(null),a=v.useRef(void 0),[i,s]=_();v.useImperativeHandle(t,()=>n.current,[]);const c=v.useRef({});return v.useEffect(()=>{const t={};o.forEach(n=>{const o=n,r=e[o];o in e&&r!==c.current[o]&&(t[o]=r)}),a.current&&a.current.updateOptions(t),c.current=e},o.map(t=>e[t])),v.useEffect(()=>{if(!n.current)return()=>{};const t={createComponent:t=>new G(t.id,t.name,e.components[t.name],{addPortal:s})},i=r(n.current,Object.assign(Object.assign({},function(e){return o.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),t)),{clientWidth:c,clientHeight:p}=n.current;return i.layout(c,p),e.onReady&&e.onReady({api:i}),a.current=i,()=>{a.current=void 0,i.dispose()}},[]),v.useEffect(()=>{a.current&&a.current.updateOptions({createComponent:t=>new G(t.id,t.name,e.components[t.name],{addPortal:s})})},[e.components]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},i)});N.displayName="SplitviewComponent";class T extends u{constructor(e,t,n,o){super(e,t),this.reactComponent=n,this.reactPortalStore=o}getComponent(){var e,t;return new g(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new m(this._params.accessor)})}}const I=v.forwardRef((e,t)=>{const n=v.useRef(null),o=v.useRef(void 0),[r,s]=_();v.useImperativeHandle(t,()=>n.current,[]);const c=v.useRef({});return v.useEffect(()=>{const t={};a.forEach(n=>{const o=n,r=e[o];o in e&&r!==c.current[o]&&(t[o]=r)}),o.current&&o.current.updateOptions(t),c.current=e},a.map(t=>e[t])),v.useEffect(()=>{if(!n.current)return()=>{};const t={createComponent:t=>new T(t.id,t.name,e.components[t.name],{addPortal:s})},r=i(n.current,Object.assign(Object.assign({},function(e){return a.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),t)),{clientWidth:c,clientHeight:p}=n.current;return r.layout(c,p),e.onReady&&e.onReady({api:r}),o.current=r,()=>{o.current=void 0,r.dispose()}},[]),v.useEffect(()=>{o.current&&o.current.updateOptions({createComponent:t=>new T(t.id,t.name,e.components[t.name],{addPortal:s})})},[e.components]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},r)});I.displayName="GridviewComponent";class W{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new g(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const B=v.forwardRef((e,t)=>{const n=v.useRef(null),o=v.useRef(void 0),[r,a]=_();v.useImperativeHandle(t,()=>n.current,[]);const i=v.useRef({});return v.useEffect(()=>{const t={};s.forEach(n=>{const o=n,r=e[o];o in e&&r!==i.current[o]&&(t[o]=r)}),o.current&&o.current.updateOptions(t),i.current=e},s.map(t=>e[t])),v.useEffect(()=>{var t;if(!n.current)return()=>{};const r=null!==(t=e.headerComponents)&&void 0!==t?t:{},i={createComponent:t=>new W(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new W(e.id,r[e.name],{addPortal:a})},p=c(n.current,Object.assign(Object.assign({},function(e){return s.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),i)),{clientWidth:l,clientHeight:d}=n.current;return p.layout(l,d),e.onReady&&e.onReady({api:p}),o.current=p,()=>{o.current=void 0,p.dispose()}},[]),v.useEffect(()=>{o.current&&o.current.updateOptions({createComponent:t=>new W(t.id,e.components[t.name],{addPortal:a})})},[e.components]),v.useEffect(()=>{var t;if(!o.current)return;const n=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new W(e.id,n[e.name],{addPortal:a})})},[e.headerComponents]),v.useEffect(()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop(t=>{e.onDidDrop&&e.onDidDrop(t)});return()=>{t.dispose()}},[e.onDidDrop]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},r)});B.displayName="PaneviewComponent";export{j as DockviewDefaultTab,L as DockviewReact,I as GridviewReact,B as PaneviewReact,g as ReactPart,b as ReactPartContext,N as SplitviewReact,y as isReactComponent,_ as usePortalsLifecycle};
|
|
13
|
+
*/const P=(e,t)=>{const[,n]=v.useState(0),o=v.useRef(e.componentProps);return v.useImperativeHandle(t,()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(e=>e+1)}}),[]),v.createElement(e.component,o.current)};P.displayName="DockviewReactJsBridge";const g=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),w=v.createContext({});class _{constructor(e,t,n,o,r){this.parent=e,this.portalStore=t,this.component=n,this.parameters=o,this.context=r,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if(!y(this.component))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");const e=v.createElement(v.forwardRef(P),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),t=this.context?v.createElement(w.Provider,{value:this.context},e):e,n=C.createPortal(t,this.parent,g.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const b=()=>{const[t,n]=v.useState([]);v.useDebugValue(`Portal count: ${t.length}`);return[t,v.useCallback(t=>{n(e=>[...e,t]);let o=!1;return e.from(()=>{if(o)throw new Error("invalid operation: resource already disposed");o=!0,n(e=>e.filter(e=>e!==t))})},[])]};function y(e){return"function"==typeof e||!!(null==e?void 0:e.$$typeof)}class E{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._onDidFocus=new p,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new p,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new _(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class D{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new _(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class O{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new _(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,n,o;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(o=null===(n=this.parameters)||void 0===n?void 0:n.params)&&void 0!==o?o:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class A{get element(){return this._element}get part(){return this._part}constructor(e,t,n){this.component=e,this.reactPortalStore=t,this._group=n,this.mutableDisposable=new h,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new f(this._group.model.onDidAddPanel(()=>{this.updatePanels()}),this._group.model.onDidRemovePanel(()=>{this.updatePanels()}),this._group.model.onDidActivePanelChange(()=>{this.updateActivePanel()}),e.api.onDidActiveChange(()=>{this.updateGroupActive()}),e.api.onDidLocationChange(e=>{this.updateLocation(e.location)})),this._part=new _(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group,headerPosition:this._group.model.headerPosition,location:e.api.location})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}updateLocation(e){this.update({params:{location:e}})}}class R{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new _(this._element,this.reactPortalStore,this.component,e)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class S{get element(){return this._element}constructor(e,t){this.component=e,this.reactPortalStore=t,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.display="inline-flex"}init(e){this.part=new _(this._element,this.reactPortalStore,this.component,{tabGroup:e.tabGroup,api:e.api})}update(e){var t;null===(t=this.part)||void 0===t||t.update({tabGroup:e.tabGroup})}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class H{get element(){return this._element}constructor(e,t){this.component=e,this.reactPortalStore=t,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.display="inline-flex"}init(e){this.part=new _(this._element,this.reactPortalStore,this.component,{group:e.group,api:e.api})}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}function k(e,t){return e?n=>new A(e,t,n):void 0}const G="props.defaultTabComponent";const L=v.forwardRef((e,o)=>{const r=v.useRef(null),a=v.useRef(void 0),[i,s]=b();v.useImperativeHandle(o,()=>r.current,[]);const c=v.useRef({});return v.useEffect(()=>{const n={};t.forEach(t=>{const o=t,r=e[o];o in e&&r!==c.current[o]&&(n[o]=r)}),a.current&&a.current.updateOptions(n),c.current=e},t.map(t=>e[t])),v.useEffect(()=>{var o;if(!r.current)return;const i=null!==(o=e.tabComponents)&&void 0!==o?o:{};e.defaultTabComponent&&(i[G]=e.defaultTabComponent);const c={createLeftHeaderActionComponent:k(e.leftHeaderActionsComponent,{addPortal:s}),createRightHeaderActionComponent:k(e.rightHeaderActionsComponent,{addPortal:s}),createPrefixHeaderActionComponent:k(e.prefixHeaderActionsComponent,{addPortal:s}),createComponent:t=>new E(t.id,e.components[t.name],{addPortal:s}),createTabComponent:e=>new D(e.id,i[e.name],{addPortal:s}),createWatermarkComponent:e.watermarkComponent?()=>new O("watermark",e.watermarkComponent,{addPortal:s}):void 0,defaultTabComponent:e.defaultTabComponent?G:void 0,createContextMenuItemComponent:e=>{if(e.component)return new R(e.id,e.component,{addPortal:s})}},p=function(e){return t.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e);if(e.tabGroupChipComponent){const t=e.tabGroupChipComponent;p.createTabGroupChipComponent=()=>new S(t,{addPortal:s})}if(e.groupDragGhostComponent){const t=e.groupDragGhostComponent;p.createGroupDragGhostComponent=()=>new H(t,{addPortal:s})}const l=n(r.current,Object.assign(Object.assign({},p),c)),{clientWidth:d,clientHeight:u}=r.current;return l.layout(d,u),e.onReady&&e.onReady({api:l}),a.current=l,()=>{a.current=void 0,l.dispose()}},[]),v.useEffect(()=>{if(!a.current)return()=>{};const t=a.current.onDidDrop(t=>{e.onDidDrop&&e.onDidDrop(t)});return()=>{t.dispose()}},[e.onDidDrop]),v.useEffect(()=>{if(!a.current)return()=>{};const t=a.current.onWillDrop(t=>{e.onWillDrop&&e.onWillDrop(t)});return()=>{t.dispose()}},[e.onWillDrop]),v.useEffect(()=>{a.current&&a.current.updateOptions({createTabGroupChipComponent:e.tabGroupChipComponent?()=>new S(e.tabGroupChipComponent,{addPortal:s}):void 0})},[e.tabGroupChipComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createGroupDragGhostComponent:e.groupDragGhostComponent?()=>new H(e.groupDragGhostComponent,{addPortal:s}):void 0})},[e.groupDragGhostComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createComponent:t=>new E(t.id,e.components[t.name],{addPortal:s})})},[e.components]),v.useEffect(()=>{var t;if(!a.current)return;const n=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(n[G]=e.defaultTabComponent),a.current.updateOptions({defaultTabComponent:e.defaultTabComponent?G:void 0,createTabComponent:e=>new D(e.id,n[e.name],{addPortal:s})})},[e.tabComponents,e.defaultTabComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new O("watermark",e.watermarkComponent,{addPortal:s}):void 0})},[e.watermarkComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createRightHeaderActionComponent:k(e.rightHeaderActionsComponent,{addPortal:s})})},[e.rightHeaderActionsComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createLeftHeaderActionComponent:k(e.leftHeaderActionsComponent,{addPortal:s})})},[e.leftHeaderActionsComponent]),v.useEffect(()=>{a.current&&a.current.updateOptions({createPrefixHeaderActionComponent:k(e.prefixHeaderActionsComponent,{addPortal:s})})},[e.prefixHeaderActionsComponent]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:r},i)});L.displayName="DockviewComponent","function"==typeof SuppressedError&&SuppressedError;const x=()=>v.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},v.createElement("path",{d:"M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z"}));const j=e=>{var{api:t,containerApi:n,params:o,hideClose:r,closeActionOverride:a,onPointerDown:i,onPointerUp:s,onPointerLeave:c,tabLocation:p}=e,l=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n}(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const d=function(e){const[t,n]=v.useState(e.title);return v.useEffect(()=>{const o=e.onDidTitleChange(e=>{n(e.title)});return t!==e.title&&n(e.title),()=>{o.dispose()}},[e]),t}(t),u=v.useRef(!1),m=v.useCallback(e=>{e.preventDefault(),a?a():t.close()},[t,a]),h=v.useCallback(e=>{e.preventDefault()},[]),f=v.useCallback(e=>{u.current=1===e.button,null==i||i(e)},[i]),C=v.useCallback(e=>{u&&1===e.button&&!r&&(u.current=!1,m(e)),null==s||s(e)},[s,m,r]),P=v.useCallback(e=>{u.current=!1,null==c||c(e)},[c]);return v.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},l,{onPointerDown:f,onPointerUp:C,onPointerLeave:P,className:"dv-default-tab"}),v.createElement("span",{className:"dv-default-tab-content"},d),!r&&v.createElement("div",{className:"dv-default-tab-action",onPointerDown:h,onClick:m},v.createElement(x,null)))};class N extends l{constructor(e,t,n,o){super(e,t),this.reactComponent=n,this.reactPortalStore=o}getComponent(){var e,t;return new _(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new d(this._params.accessor)})}}const T=v.forwardRef((e,t)=>{const n=v.useRef(null),a=v.useRef(void 0),[i,s]=b();v.useImperativeHandle(t,()=>n.current,[]);const c=v.useRef({});return v.useEffect(()=>{const t={};o.forEach(n=>{const o=n,r=e[o];o in e&&r!==c.current[o]&&(t[o]=r)}),a.current&&a.current.updateOptions(t),c.current=e},o.map(t=>e[t])),v.useEffect(()=>{if(!n.current)return()=>{};const t={createComponent:t=>new N(t.id,t.name,e.components[t.name],{addPortal:s})},i=r(n.current,Object.assign(Object.assign({},function(e){return o.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),t)),{clientWidth:c,clientHeight:p}=n.current;return i.layout(c,p),e.onReady&&e.onReady({api:i}),a.current=i,()=>{a.current=void 0,i.dispose()}},[]),v.useEffect(()=>{a.current&&a.current.updateOptions({createComponent:t=>new N(t.id,t.name,e.components[t.name],{addPortal:s})})},[e.components]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},i)});T.displayName="SplitviewComponent";class I extends u{constructor(e,t,n,o){super(e,t),this.reactComponent=n,this.reactPortalStore=o}getComponent(){var e,t;return new _(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new m(this._params.accessor)})}}const W=v.forwardRef((e,t)=>{const n=v.useRef(null),o=v.useRef(void 0),[r,s]=b();v.useImperativeHandle(t,()=>n.current,[]);const c=v.useRef({});return v.useEffect(()=>{const t={};a.forEach(n=>{const o=n,r=e[o];o in e&&r!==c.current[o]&&(t[o]=r)}),o.current&&o.current.updateOptions(t),c.current=e},a.map(t=>e[t])),v.useEffect(()=>{if(!n.current)return()=>{};const t={createComponent:t=>new I(t.id,t.name,e.components[t.name],{addPortal:s})},r=i(n.current,Object.assign(Object.assign({},function(e){return a.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),t)),{clientWidth:c,clientHeight:p}=n.current;return r.layout(c,p),e.onReady&&e.onReady({api:r}),o.current=r,()=>{o.current=void 0,r.dispose()}},[]),v.useEffect(()=>{o.current&&o.current.updateOptions({createComponent:t=>new I(t.id,t.name,e.components[t.name],{addPortal:s})})},[e.components]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},r)});W.displayName="GridviewComponent";class B{get element(){return this._element}constructor(e,t,n){this.id=e,this.component=t,this.reactPortalStore=n,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new _(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const F=v.forwardRef((e,t)=>{const n=v.useRef(null),o=v.useRef(void 0),[r,a]=b();v.useImperativeHandle(t,()=>n.current,[]);const i=v.useRef({});return v.useEffect(()=>{const t={};s.forEach(n=>{const o=n,r=e[o];o in e&&r!==i.current[o]&&(t[o]=r)}),o.current&&o.current.updateOptions(t),i.current=e},s.map(t=>e[t])),v.useEffect(()=>{var t;if(!n.current)return()=>{};const r=null!==(t=e.headerComponents)&&void 0!==t?t:{},i={createComponent:t=>new B(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new B(e.id,r[e.name],{addPortal:a})},p=c(n.current,Object.assign(Object.assign({},function(e){return s.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}(e)),i)),{clientWidth:l,clientHeight:d}=n.current;return p.layout(l,d),e.onReady&&e.onReady({api:p}),o.current=p,()=>{o.current=void 0,p.dispose()}},[]),v.useEffect(()=>{o.current&&o.current.updateOptions({createComponent:t=>new B(t.id,e.components[t.name],{addPortal:a})})},[e.components]),v.useEffect(()=>{var t;if(!o.current)return;const n=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new B(e.id,n[e.name],{addPortal:a})})},[e.headerComponents]),v.useEffect(()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop(t=>{e.onDidDrop&&e.onDidDrop(t)});return()=>{t.dispose()}},[e.onDidDrop]),v.createElement("div",{style:{height:"100%",width:"100%"},ref:n},r)});F.displayName="PaneviewComponent";export{j as DockviewDefaultTab,L as DockviewReact,W as GridviewReact,F as PaneviewReact,_ as ReactPart,w as ReactPartContext,T as SplitviewReact,y as isReactComponent,b as usePortalsLifecycle};
|
package/dist/styles/dockview.css
CHANGED
|
@@ -2344,6 +2344,16 @@
|
|
|
2344
2344
|
/* Enhanced GPU acceleration during drag */
|
|
2345
2345
|
will-change: transform, opacity;
|
|
2346
2346
|
}
|
|
2347
|
+
.dv-resize-container .dv-resize-handle-top,
|
|
2348
|
+
.dv-resize-container .dv-resize-handle-bottom,
|
|
2349
|
+
.dv-resize-container .dv-resize-handle-left,
|
|
2350
|
+
.dv-resize-container .dv-resize-handle-right,
|
|
2351
|
+
.dv-resize-container .dv-resize-handle-topleft,
|
|
2352
|
+
.dv-resize-container .dv-resize-handle-topright,
|
|
2353
|
+
.dv-resize-container .dv-resize-handle-bottomleft,
|
|
2354
|
+
.dv-resize-container .dv-resize-handle-bottomright {
|
|
2355
|
+
touch-action: none;
|
|
2356
|
+
}
|
|
2347
2357
|
.dv-resize-container .dv-resize-handle-top {
|
|
2348
2358
|
height: 4px;
|
|
2349
2359
|
width: calc(100% - 8px);
|
|
@@ -2416,6 +2426,55 @@
|
|
|
2416
2426
|
position: absolute;
|
|
2417
2427
|
cursor: se-resize;
|
|
2418
2428
|
}
|
|
2429
|
+
@media (pointer: coarse) {
|
|
2430
|
+
.dv-resize-container .dv-resize-handle-top,
|
|
2431
|
+
.dv-resize-container .dv-resize-handle-bottom {
|
|
2432
|
+
height: 16px;
|
|
2433
|
+
width: calc(100% - 48px);
|
|
2434
|
+
left: 24px;
|
|
2435
|
+
}
|
|
2436
|
+
.dv-resize-container .dv-resize-handle-top {
|
|
2437
|
+
top: -10px;
|
|
2438
|
+
}
|
|
2439
|
+
.dv-resize-container .dv-resize-handle-bottom {
|
|
2440
|
+
bottom: -10px;
|
|
2441
|
+
}
|
|
2442
|
+
.dv-resize-container .dv-resize-handle-left,
|
|
2443
|
+
.dv-resize-container .dv-resize-handle-right {
|
|
2444
|
+
width: 16px;
|
|
2445
|
+
height: calc(100% - 48px);
|
|
2446
|
+
top: 24px;
|
|
2447
|
+
}
|
|
2448
|
+
.dv-resize-container .dv-resize-handle-left {
|
|
2449
|
+
left: -10px;
|
|
2450
|
+
}
|
|
2451
|
+
.dv-resize-container .dv-resize-handle-right {
|
|
2452
|
+
right: -10px;
|
|
2453
|
+
}
|
|
2454
|
+
.dv-resize-container .dv-resize-handle-topleft,
|
|
2455
|
+
.dv-resize-container .dv-resize-handle-topright,
|
|
2456
|
+
.dv-resize-container .dv-resize-handle-bottomleft,
|
|
2457
|
+
.dv-resize-container .dv-resize-handle-bottomright {
|
|
2458
|
+
height: 24px;
|
|
2459
|
+
width: 24px;
|
|
2460
|
+
}
|
|
2461
|
+
.dv-resize-container .dv-resize-handle-topleft {
|
|
2462
|
+
top: -12px;
|
|
2463
|
+
left: -12px;
|
|
2464
|
+
}
|
|
2465
|
+
.dv-resize-container .dv-resize-handle-topright {
|
|
2466
|
+
top: -12px;
|
|
2467
|
+
right: -12px;
|
|
2468
|
+
}
|
|
2469
|
+
.dv-resize-container .dv-resize-handle-bottomleft {
|
|
2470
|
+
bottom: -12px;
|
|
2471
|
+
left: -12px;
|
|
2472
|
+
}
|
|
2473
|
+
.dv-resize-container .dv-resize-handle-bottomright {
|
|
2474
|
+
bottom: -12px;
|
|
2475
|
+
right: -12px;
|
|
2476
|
+
}
|
|
2477
|
+
}
|
|
2419
2478
|
.dv-render-overlay {
|
|
2420
2479
|
--dv-overlay-z-index: var(--dv-overlay-z-index, 999);
|
|
2421
2480
|
position: absolute;
|
|
@@ -2633,6 +2692,25 @@
|
|
|
2633
2692
|
transition-duration: var(--dv-active-sash-transition-duration, 0.1s);
|
|
2634
2693
|
transition-delay: var(--dv-active-sash-transition-delay, 0.5s);
|
|
2635
2694
|
}
|
|
2695
|
+
@media (pointer: coarse) {
|
|
2696
|
+
.dv-split-view-container .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
|
|
2697
|
+
content: "";
|
|
2698
|
+
position: absolute;
|
|
2699
|
+
background: transparent;
|
|
2700
|
+
}
|
|
2701
|
+
.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
|
|
2702
|
+
top: 0;
|
|
2703
|
+
bottom: 0;
|
|
2704
|
+
left: -10px;
|
|
2705
|
+
right: -10px;
|
|
2706
|
+
}
|
|
2707
|
+
.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
|
|
2708
|
+
left: 0;
|
|
2709
|
+
right: 0;
|
|
2710
|
+
top: -10px;
|
|
2711
|
+
bottom: -10px;
|
|
2712
|
+
}
|
|
2713
|
+
}
|
|
2636
2714
|
.dv-split-view-container .dv-view-container {
|
|
2637
2715
|
position: relative;
|
|
2638
2716
|
height: 100%;
|
|
@@ -2704,6 +2782,11 @@
|
|
|
2704
2782
|
.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action {
|
|
2705
2783
|
visibility: visible;
|
|
2706
2784
|
}
|
|
2785
|
+
@media (hover: none) {
|
|
2786
|
+
.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action {
|
|
2787
|
+
visibility: visible;
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2707
2790
|
.dv-tab .dv-default-tab {
|
|
2708
2791
|
position: relative;
|
|
2709
2792
|
height: 100%;
|
|
@@ -2728,6 +2811,11 @@
|
|
|
2728
2811
|
border-radius: 2px;
|
|
2729
2812
|
background-color: var(--dv-icon-hover-background-color);
|
|
2730
2813
|
}
|
|
2814
|
+
@media (pointer: coarse) {
|
|
2815
|
+
.dv-tab .dv-default-tab .dv-default-tab-action {
|
|
2816
|
+
padding: 8px;
|
|
2817
|
+
}
|
|
2818
|
+
}
|
|
2731
2819
|
.dv-tabs-overflow-dropdown-default {
|
|
2732
2820
|
height: 100%;
|
|
2733
2821
|
color: var(--dv-activegroup-hiddenpanel-tab-color);
|
|
@@ -2748,6 +2836,7 @@
|
|
|
2748
2836
|
border-radius: 2px;
|
|
2749
2837
|
background-color: var(--dv-icon-hover-background-color);
|
|
2750
2838
|
}
|
|
2839
|
+
@charset "UTF-8";
|
|
2751
2840
|
.dv-tabs-container {
|
|
2752
2841
|
display: flex;
|
|
2753
2842
|
position: relative;
|
|
@@ -2757,12 +2846,29 @@
|
|
|
2757
2846
|
/* GPU optimizations for smooth scrolling */
|
|
2758
2847
|
will-change: scroll-position;
|
|
2759
2848
|
transform: translate3d(0, 0, 0);
|
|
2849
|
+
/**
|
|
2850
|
+
* Stop scroll-chaining at the tab strip so that wheel / trackpad
|
|
2851
|
+
* overscroll past the strip's edges doesn't trigger the browser's
|
|
2852
|
+
* swipe-to-go-back-or-forward gesture (and doesn't scroll the page
|
|
2853
|
+
* either). `contain` keeps the native bounce visuals; `none` would
|
|
2854
|
+
* also disable them.
|
|
2855
|
+
*/
|
|
2856
|
+
overscroll-behavior: contain;
|
|
2857
|
+
/**
|
|
2858
|
+
* Empty space between tabs (and the scrollbar lane) keeps pan-x so a
|
|
2859
|
+
* flick on those areas produces native momentum scroll. The tab and
|
|
2860
|
+
* chip elements themselves opt out (`touch-action: none`) so the
|
|
2861
|
+
* pointer drag source owns the gesture from pointerdown — a flick on
|
|
2862
|
+
* a tab or chip always becomes a drag, regardless of direction.
|
|
2863
|
+
*/
|
|
2864
|
+
touch-action: pan-x;
|
|
2760
2865
|
}
|
|
2761
2866
|
.dv-tabs-container.dv-tabs-container-vertical {
|
|
2762
2867
|
width: 100%;
|
|
2763
2868
|
height: fit-content;
|
|
2764
2869
|
max-height: 100%;
|
|
2765
2870
|
writing-mode: vertical-rl;
|
|
2871
|
+
touch-action: pan-y;
|
|
2766
2872
|
}
|
|
2767
2873
|
.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child)::before, .dv-tabs-container.dv-vertical .dv-tab:not(:first-child)::before {
|
|
2768
2874
|
content: " ";
|
|
@@ -2802,7 +2908,10 @@
|
|
|
2802
2908
|
}
|
|
2803
2909
|
|
|
2804
2910
|
.dv-tab {
|
|
2805
|
-
|
|
2911
|
+
user-select: none;
|
|
2912
|
+
-webkit-user-select: none;
|
|
2913
|
+
-moz-user-select: none;
|
|
2914
|
+
-ms-user-select: none;
|
|
2806
2915
|
outline: none;
|
|
2807
2916
|
padding: 0.25rem 0.5rem;
|
|
2808
2917
|
cursor: pointer;
|
|
@@ -2810,6 +2919,7 @@
|
|
|
2810
2919
|
box-sizing: border-box;
|
|
2811
2920
|
font-size: var(--dv-tab-font-size);
|
|
2812
2921
|
margin: var(--dv-tab-margin);
|
|
2922
|
+
touch-action: none;
|
|
2813
2923
|
}
|
|
2814
2924
|
.dv-tab.dv-tab--shifting {
|
|
2815
2925
|
will-change: transform, margin-left, margin-right, margin-top, margin-bottom;
|
|
@@ -2860,6 +2970,7 @@
|
|
|
2860
2970
|
white-space: nowrap;
|
|
2861
2971
|
box-sizing: border-box;
|
|
2862
2972
|
line-height: 1;
|
|
2973
|
+
touch-action: none;
|
|
2863
2974
|
background-color: var(--dv-tab-group-color);
|
|
2864
2975
|
color: white;
|
|
2865
2976
|
}
|
|
@@ -3037,6 +3148,11 @@
|
|
|
3037
3148
|
.dv-tabs-and-actions-container .dv-void-container {
|
|
3038
3149
|
display: flex;
|
|
3039
3150
|
flex-grow: 1;
|
|
3151
|
+
user-select: none;
|
|
3152
|
+
-webkit-user-select: none;
|
|
3153
|
+
-moz-user-select: none;
|
|
3154
|
+
-ms-user-select: none;
|
|
3155
|
+
touch-action: none;
|
|
3040
3156
|
}
|
|
3041
3157
|
.dv-tabs-and-actions-container .dv-void-container.dv-draggable {
|
|
3042
3158
|
cursor: grab;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dockview-react",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0",
|
|
4
4
|
"description": "React docking layout manager — tabs, groups, grids, splitviews, drag and drop, floating panels",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"splitview",
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
"drag-and-drop",
|
|
21
21
|
"drag",
|
|
22
22
|
"drop",
|
|
23
|
+
"touch",
|
|
24
|
+
"mobile",
|
|
23
25
|
"typescript",
|
|
24
26
|
"zero-dependency",
|
|
25
27
|
"ide-layout",
|
|
@@ -68,6 +70,6 @@
|
|
|
68
70
|
"format:check": "prettier --check 'src/**/*.{ts,tsx,js,jsx}'"
|
|
69
71
|
},
|
|
70
72
|
"dependencies": {
|
|
71
|
-
"dockview": "^6.
|
|
73
|
+
"dockview": "^6.4.0"
|
|
72
74
|
}
|
|
73
75
|
}
|