@datagrok-libraries/dock-spawn-dg 0.1.3 → 0.1.4
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/package.json +4 -2
- package/src/DockConfig.d.ts +1 -0
- package/src/DockConfig.d.ts.map +1 -1
- package/src/DockConfig.ts +3 -0
- package/src/DockLayoutEngine.d.ts.map +1 -1
- package/src/DockLayoutEngine.js +3 -1
- package/src/DockLayoutEngine.ts +3 -1
- package/src/DockManager.d.ts.map +1 -1
- package/src/DockManager.js +4 -6
- package/src/DockManager.ts +4 -6
- package/src/UndockInitiator.d.ts.map +1 -1
- package/src/UndockInitiator.js +4 -0
- package/src/UndockInitiator.ts +5 -0
- package/src/webcomponent/DockSpawnTsWebcomponent.d.ts +3 -0
- package/src/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -1
- package/src/webcomponent/DockSpawnTsWebcomponent.js +24 -0
- package/src/webcomponent/DockSpawnTsWebcomponent.ts +24 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datagrok-libraries/dock-spawn-dg",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "A TypeScript Version of dock-spawn with changes for Datagrok",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -27,5 +27,7 @@
|
|
|
27
27
|
"url": "git@github.com:datagrok-ai/public.git",
|
|
28
28
|
"directory": "libraries/dock-spawn-dg"
|
|
29
29
|
},
|
|
30
|
-
"sideEffects": [
|
|
30
|
+
"sideEffects": [
|
|
31
|
+
"*.css"
|
|
32
|
+
]
|
|
31
33
|
}
|
package/src/DockConfig.d.ts
CHANGED
package/src/DockConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockConfig.d.ts","sourceRoot":"","sources":["DockConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;;IASnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DockConfig.d.ts","sourceRoot":"","sources":["DockConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;;IASnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC"}
|
package/src/DockConfig.ts
CHANGED
|
@@ -12,4 +12,7 @@ export class DockConfig {
|
|
|
12
12
|
dialogRootElement: HTMLElement;
|
|
13
13
|
moveOnlyWithinDockConatiner?: boolean;
|
|
14
14
|
enableBrowserWindows?: boolean;
|
|
15
|
+
// When false, docking a panel into an existing tab strip does not switch focus
|
|
16
|
+
// to it (the first panel of an empty strip is still activated). Default: true.
|
|
17
|
+
activatePanelOnAdd?: boolean;
|
|
15
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockLayoutEngine.d.ts","sourceRoot":"","sources":["DockLayoutEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,gBAAgB;IAEzB,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,EAAE,WAAW;IAIpC,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,0DAA0D;IAC1D,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIpD,wDAAwD;IACxD,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIjD,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,MAAM,CAAC,IAAI,EAAE,QAAQ;IAqDrB,KAAK,CAAC,IAAI,EAAE,QAAQ;IA2DpB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAiB3E,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"DockLayoutEngine.d.ts","sourceRoot":"","sources":["DockLayoutEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,gBAAgB;IAEzB,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,EAAE,WAAW;IAIpC,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,0DAA0D;IAC1D,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIpD,wDAAwD;IACxD,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIjD,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,MAAM,CAAC,IAAI,EAAE,QAAQ;IAqDrB,KAAK,CAAC,IAAI,EAAE,QAAQ;IA2DpB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAiB3E,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO;IAmG1G,8BAA8B,GAAI,WAAW,cAAc,UAI1D;IAED,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ;IAWtF;;;;OAIG;IACH,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,UAAU;IA4EtI,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAO5E"}
|
package/src/DockLayoutEngine.js
CHANGED
|
@@ -151,9 +151,11 @@ export class DockLayoutEngine {
|
|
|
151
151
|
if (referenceNode.parent && referenceNode.parent.container.containerType === 'fill')
|
|
152
152
|
referenceNode = referenceNode.parent;
|
|
153
153
|
if (direction === 'fill' && referenceNode.container.containerType === 'fill') {
|
|
154
|
+
const wasEmpty = referenceNode.children.length === 0;
|
|
154
155
|
referenceNode.addChild(newNode);
|
|
155
156
|
referenceNode.performLayout(false);
|
|
156
|
-
|
|
157
|
+
if (wasEmpty || this.dockManager.config.activatePanelOnAdd !== false)
|
|
158
|
+
referenceNode.container.setActiveChild(newNode.container);
|
|
157
159
|
this.dockManager.invalidate();
|
|
158
160
|
this.dockManager.notifyOnDock(newNode);
|
|
159
161
|
return;
|
package/src/DockLayoutEngine.ts
CHANGED
|
@@ -175,9 +175,11 @@ export class DockLayoutEngine {
|
|
|
175
175
|
referenceNode = referenceNode.parent;
|
|
176
176
|
|
|
177
177
|
if (direction === 'fill' && referenceNode.container.containerType === 'fill') {
|
|
178
|
+
const wasEmpty = referenceNode.children.length === 0;
|
|
178
179
|
referenceNode.addChild(newNode);
|
|
179
180
|
referenceNode.performLayout(false);
|
|
180
|
-
|
|
181
|
+
if (wasEmpty || this.dockManager.config.activatePanelOnAdd !== false)
|
|
182
|
+
referenceNode.container.setActiveChild(newNode.container);
|
|
181
183
|
this.dockManager.invalidate();
|
|
182
184
|
this.dockManager.notifyOnDock(newNode);
|
|
183
185
|
return;
|
package/src/DockManager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockManager.d.ts","sourceRoot":"","sources":["DockManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DockManager.d.ts","sourceRoot":"","sources":["DockManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,WAAW;IAEb,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IAC7C,2BAA2B,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,qBAAqB,EAAE,KAAK,CAAC;IAC7B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC;IACrB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/F,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAiB;IAE7C,OAAO,CAAC,eAAe,CAAiB;gBAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,UAAU;IAarD,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,UAAU;IA2BV,UAAU,CAAC,CAAC,EAAE,aAAa;IAU3B,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAyBxI,+BAA+B,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAmB3J,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO;IAqB1I,+BAA+B,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO;IAmB7J,aAAa,CAAC,IAAI,EAAE,QAAQ;IAO5B,UAAU;IAIV,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAepC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS;IAUzB,UAAU,CAAC,IAAI,EAAE,QAAQ;IAYzB,WAAW,CAAC,IAAI,EAAE,QAAQ;IAa1B,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAA;IAiBtC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAA;IAgBpC,OAAO,CAAC,aAAa;IAOrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAmBxB,gEAAgE;IAChE,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAItD,iEAAiE;IACjE,eAAe,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAIvD,uDAAuD;IACvD,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAIpD,uDAAuD;IACvD,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAItD,iEAAiE;IACjE,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAItD,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAI1E,oEAAoE;IACpE,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAI3E,0DAA0D;IAC1D,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAIxE,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAI1E,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc;IAI3D,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM;IA2B7H,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,qBAAqB;IA6C7B,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,KAAA;IAK/C;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,KAAA,EAAE,UAAU,EAAE,KAAK;IA0BzE;;MAEE;IACF,YAAY,CAAC,SAAS,EAAE,cAAc;IAYtC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,KAAA,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,OAAO;IAiBzF;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,cAAc;IAKvC;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,cAAc;IASvC,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAsBxC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ;IAsB5C,yDAAyD;IACzD,OAAO,CAAC,sBAAsB;IAoB9B,4BAA4B,CAAC,gBAAgB,EAAE,WAAW;IAe1D,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB;IAIhD,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB;IAInD,aAAa,CAAC,KAAK,EAAE,cAAc;IAMnC,YAAY,CAAC,KAAK,EAAE,cAAc;IAMlC,YAAY,CAAC,QAAQ,EAAE,QAAQ;IAU/B,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;IAQtC,cAAc,CAAC,QAAQ,EAAE,QAAQ;IASjC,kBAAkB,CAAC,KAAK,EAAE,cAAc;IAgBxC,oBAAoB,CAAC,MAAM,EAAE,MAAM;IAQnC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IASjC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAQjC,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAQjE,wBAAwB,CAAC,aAAa,EAAE,cAAc;IAQtD,iBAAiB,CAAC,OAAO,EAAE,OAAO;IAQlC,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc;IAQ1E,4BAA4B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc;IAQ7E,SAAS;IAKH,SAAS,CAAC,IAAI,EAAE,MAAM;IAM5B,SAAS;IAcT,aAAa,CAAC,KAAK,EAAE,OAAO;IAO5B,aAAa,CAAC,KAAK,EAAE,OAAO;IAK5B,eAAe,CAAC,KAAK,EAAE,OAAO;IAM9B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE;IAsB1B,gBAAgB,IAAI,cAAc,EAAE;IAepC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE;IASnD,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,WAAW,IAAI,cAAc,CAEhC;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,cAAc,EA0CpC;CACJ"}
|
package/src/DockManager.js
CHANGED
|
@@ -77,8 +77,8 @@ export class DockManager {
|
|
|
77
77
|
return this.checkXBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeWest, resizeEast);
|
|
78
78
|
let rect = this.element.getBoundingClientRect();
|
|
79
79
|
let dx = Math.floor(currentMousePosition.x - previousMousePosition.x);
|
|
80
|
-
let leftBounds = container.offsetLeft + container.offsetWidth + dx + rect.left < 40; // || (container.offsetLeft + container.offsetWidth + dx - 40 ) < 0;
|
|
81
|
-
let rightBounds = container.offsetLeft + dx + rect.left > (window.innerWidth - 40);
|
|
80
|
+
let leftBounds = dx < 0 && container.offsetLeft + container.offsetWidth + dx + rect.left < 40; // || (container.offsetLeft + container.offsetWidth + dx - 40 ) < 0;
|
|
81
|
+
let rightBounds = dx > 0 && container.offsetLeft + dx + rect.left > (window.innerWidth - 40);
|
|
82
82
|
if (leftBounds) {
|
|
83
83
|
previousMousePosition.x = currentMousePosition.x;
|
|
84
84
|
dx = 0;
|
|
@@ -118,8 +118,8 @@ export class DockManager {
|
|
|
118
118
|
return this.checkYBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeNorth, resizeSouth);
|
|
119
119
|
let rect = this.element.getBoundingClientRect();
|
|
120
120
|
let dy = Math.floor(currentMousePosition.y - previousMousePosition.y);
|
|
121
|
-
let topBounds = container.offsetTop + dy < 0;
|
|
122
|
-
let bottomBounds = container.offsetTop + dy + rect.top > (window.innerHeight - 16);
|
|
121
|
+
let topBounds = dy < 0 && container.offsetTop + dy < 0;
|
|
122
|
+
let bottomBounds = dy > 0 && container.offsetTop + dy + rect.top > (window.innerHeight - 16);
|
|
123
123
|
if (topBounds) {
|
|
124
124
|
previousMousePosition.y = currentMousePosition.y;
|
|
125
125
|
dy = 0;
|
|
@@ -161,8 +161,6 @@ export class DockManager {
|
|
|
161
161
|
this.resize(this.element.clientWidth, this.element.clientHeight);
|
|
162
162
|
}
|
|
163
163
|
resize(width, height) {
|
|
164
|
-
this.element.style.width = width + 'px';
|
|
165
|
-
this.element.style.height = height + 'px';
|
|
166
164
|
this.context.model.rootNode.container.resize(width, height);
|
|
167
165
|
let offsetX = 0, offsetY = 0;
|
|
168
166
|
for (let dialog of this.context.model.dialogs) {
|
package/src/DockManager.ts
CHANGED
|
@@ -112,8 +112,8 @@ export class DockManager {
|
|
|
112
112
|
|
|
113
113
|
let rect = this.element.getBoundingClientRect();
|
|
114
114
|
let dx = Math.floor(currentMousePosition.x - previousMousePosition.x);
|
|
115
|
-
let leftBounds = container.offsetLeft + container.offsetWidth + dx + rect.left < 40; // || (container.offsetLeft + container.offsetWidth + dx - 40 ) < 0;
|
|
116
|
-
let rightBounds = container.offsetLeft + dx + rect.left > (window.innerWidth - 40);
|
|
115
|
+
let leftBounds = dx < 0 && container.offsetLeft + container.offsetWidth + dx + rect.left < 40; // || (container.offsetLeft + container.offsetWidth + dx - 40 ) < 0;
|
|
116
|
+
let rightBounds = dx > 0 && container.offsetLeft + dx + rect.left > (window.innerWidth - 40);
|
|
117
117
|
if (leftBounds) {
|
|
118
118
|
previousMousePosition.x = currentMousePosition.x;
|
|
119
119
|
dx = 0;
|
|
@@ -156,8 +156,8 @@ export class DockManager {
|
|
|
156
156
|
|
|
157
157
|
let rect = this.element.getBoundingClientRect();
|
|
158
158
|
let dy = Math.floor(currentMousePosition.y - previousMousePosition.y);
|
|
159
|
-
let topBounds = container.offsetTop + dy < 0;
|
|
160
|
-
let bottomBounds = container.offsetTop + dy + rect.top > (window.innerHeight - 16);
|
|
159
|
+
let topBounds = dy < 0 && container.offsetTop + dy < 0;
|
|
160
|
+
let bottomBounds = dy > 0 && container.offsetTop + dy + rect.top > (window.innerHeight - 16);
|
|
161
161
|
if (topBounds) {
|
|
162
162
|
previousMousePosition.y = currentMousePosition.y;
|
|
163
163
|
dy = 0;
|
|
@@ -202,8 +202,6 @@ export class DockManager {
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
resize(width: number, height: number) {
|
|
205
|
-
this.element.style.width = width + 'px';
|
|
206
|
-
this.element.style.height = height + 'px';
|
|
207
205
|
this.context.model.rootNode.container.resize(width, height);
|
|
208
206
|
|
|
209
207
|
let offsetX = 0, offsetY = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UndockInitiator.d.ts","sourceRoot":"","sources":["UndockInitiator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;GAKG;AACH,qBAAa,eAAe;IACxB,cAAc,EAAE,YAAY,CAAC;IAC7B,cAAc,EAAE,YAAY,CAAC;IAC7B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,iBAAiB,EAAE,KAAK,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,CAAC;IAClE,wBAAwB,EAAE,YAAY,CAAC;gBAE3B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IAWxH,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EA8CzB;IAED,WAAW,CAAC,CAAC,KAAA;IAuCb,SAAS;IAsBT,WAAW,CAAC,CAAC,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"UndockInitiator.d.ts","sourceRoot":"","sources":["UndockInitiator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;GAKG;AACH,qBAAa,eAAe;IACxB,cAAc,EAAE,YAAY,CAAC;IAC7B,cAAc,EAAE,YAAY,CAAC;IAC7B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,iBAAiB,EAAE,KAAK,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,CAAC;IAClE,wBAAwB,EAAE,YAAY,CAAC;gBAE3B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IAWxH,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EA8CzB;IAED,WAAW,CAAC,CAAC,KAAA;IAuCb,SAAS;IAsBT,WAAW,CAAC,CAAC,EAAE,kBAAkB;IAqBjC,cAAc,CAAC,CAAC,KAAA;CAgBnB"}
|
package/src/UndockInitiator.js
CHANGED
|
@@ -116,6 +116,10 @@ export class UndockInitiator {
|
|
|
116
116
|
return;
|
|
117
117
|
e = e.touches[0];
|
|
118
118
|
}
|
|
119
|
+
if (e.buttons == 0) {
|
|
120
|
+
this.onMouseUp();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
119
123
|
let position = new Point(e.clientX, e.clientY);
|
|
120
124
|
let dy = position.y - this.dragStartPosition.y;
|
|
121
125
|
if (dy > this.thresholdPixels || dy < -this.thresholdPixels) {
|
package/src/UndockInitiator.ts
CHANGED
|
@@ -153,6 +153,11 @@ export class UndockInitiator {
|
|
|
153
153
|
e = e.touches[0];
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
if ((<MouseEvent>e).buttons == 0){
|
|
157
|
+
this.onMouseUp();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
|
|
156
161
|
let position = new Point(e.clientX, e.clientY);
|
|
157
162
|
let dy = position.y - this.dragStartPosition.y;
|
|
158
163
|
|
|
@@ -14,6 +14,9 @@ export declare class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
14
14
|
private initDockspawn;
|
|
15
15
|
private initDockManager;
|
|
16
16
|
set activePanelTitle(panelTitle: string);
|
|
17
|
+
private _preferredPanelTitle;
|
|
18
|
+
set preferredPanelTitle(panelTitle: string | null);
|
|
19
|
+
private applyPreferred;
|
|
17
20
|
getElementInSlot(slot: HTMLSlotElement): HTMLElement;
|
|
18
21
|
saveLayout(): string;
|
|
19
22
|
loadLayout(layout: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockSpawnTsWebcomponent.d.ts","sourceRoot":"","sources":["DockSpawnTsWebcomponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,qBAAa,uBAAwB,SAAQ,WAAW;IAC7C,WAAW,EAAE,WAAW,CAAC;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAuB;;IAWvC,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"DockSpawnTsWebcomponent.d.ts","sourceRoot":"","sources":["DockSpawnTsWebcomponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,qBAAa,uBAAwB,SAAQ,WAAW;IAC7C,WAAW,EAAE,WAAW,CAAC;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAuB;;IAWvC,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,eAAe;IAkDvB,IAAW,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAM7C;IAID,OAAO,CAAC,oBAAoB,CAAuB;IACnD,IAAW,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAGvD;IAED,OAAO,CAAC,cAAc;IAMf,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW;IAIpD,UAAU;IAIJ,UAAU,CAAC,MAAM,EAAE,MAAM;IAUtC,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,sBAAsB;IAO9B,iBAAiB;IASjB,oBAAoB;IAEpB,MAAM;IAKN,qBAAqB,CAAC,kBAAkB,EAAE,WAAW,GAAG,cAAc,GAAG,QAAQ;IAOjF,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;IAKpH,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;IAKpI,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;IAKrI,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;IAKlI,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;IAKpI,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO;CAK1J"}
|
|
@@ -27,6 +27,9 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
27
27
|
this.initialized = false;
|
|
28
28
|
this.elementContainerMap = new Map();
|
|
29
29
|
this.destroy$ = new Subject();
|
|
30
|
+
// The tab to keep active across tab adds/rebuilds. Re-asserted after structural
|
|
31
|
+
// changes; a no-op when the tab is already active, so it never causes a flicker.
|
|
32
|
+
this._preferredPanelTitle = null;
|
|
30
33
|
const shadowRoot = this.attachShadow({ mode: 'open' });
|
|
31
34
|
shadowRoot.adoptedStyleSheets = [style, style1, style2, faStyle];
|
|
32
35
|
this.slotElementMap = new WeakMap();
|
|
@@ -40,6 +43,10 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
40
43
|
this.shadowRoot.appendChild(dockSpawnDiv);
|
|
41
44
|
this.dockManager = new DockManager(dockSpawnDiv);
|
|
42
45
|
this.dockManager.config.dialogRootElement = dockSpawnDiv;
|
|
46
|
+
// Panels are added programmatically (Vue render -> MutationObserver), so a new
|
|
47
|
+
// tab must not steal focus from the user's current tab. The preferred tab is
|
|
48
|
+
// driven explicitly via the `preferredPanelTitle` property instead.
|
|
49
|
+
this.dockManager.config.activatePanelOnAdd = false;
|
|
43
50
|
}
|
|
44
51
|
initDockManager() {
|
|
45
52
|
this.dockManager.initialize();
|
|
@@ -50,6 +57,12 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
50
57
|
prevPanel: prevPanel === null || prevPanel === void 0 ? void 0 : prevPanel.title
|
|
51
58
|
} }));
|
|
52
59
|
},
|
|
60
|
+
onTabChanged: (_, tabpage) => {
|
|
61
|
+
var _a;
|
|
62
|
+
this.dispatchEvent(new CustomEvent('tab-clicked', { detail: {
|
|
63
|
+
title: (_a = tabpage === null || tabpage === void 0 ? void 0 : tabpage.panel) === null || _a === void 0 ? void 0 : _a.title
|
|
64
|
+
} }));
|
|
65
|
+
},
|
|
53
66
|
onClosePanel: (dockManager, dockNode) => {
|
|
54
67
|
let slot = dockNode.elementContent;
|
|
55
68
|
let element = this.slotElementMap.get(slot);
|
|
@@ -86,6 +99,16 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
86
99
|
(_f = pNode === null || pNode === void 0 ? void 0 : pNode.container) === null || _f === void 0 ? void 0 : _f.setActiveChild(foundPanel);
|
|
87
100
|
}
|
|
88
101
|
}
|
|
102
|
+
set preferredPanelTitle(panelTitle) {
|
|
103
|
+
this._preferredPanelTitle = panelTitle;
|
|
104
|
+
this.applyPreferred();
|
|
105
|
+
}
|
|
106
|
+
applyPreferred() {
|
|
107
|
+
var _a;
|
|
108
|
+
const title = this._preferredPanelTitle;
|
|
109
|
+
if (title && ((_a = this.dockManager) === null || _a === void 0 ? void 0 : _a.getPanels().some((panel) => panel.title === title)))
|
|
110
|
+
this.activePanelTitle = title;
|
|
111
|
+
}
|
|
89
112
|
getElementInSlot(slot) {
|
|
90
113
|
return this.slotElementMap.get(slot);
|
|
91
114
|
}
|
|
@@ -149,6 +172,7 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
149
172
|
this.dockManager.dockFill(dockRelativeTo, container);
|
|
150
173
|
if (element.style.display == 'none')
|
|
151
174
|
element.style.display = 'block';
|
|
175
|
+
this.applyPreferred();
|
|
152
176
|
this.dispatchEvent(new CustomEvent('panel-opened', { detail: element }));
|
|
153
177
|
}
|
|
154
178
|
handleRemovedChildNode(element) {
|
|
@@ -42,6 +42,10 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
42
42
|
|
|
43
43
|
this.dockManager = new DockManager(dockSpawnDiv);
|
|
44
44
|
this.dockManager.config.dialogRootElement = dockSpawnDiv;
|
|
45
|
+
// Panels are added programmatically (Vue render -> MutationObserver), so a new
|
|
46
|
+
// tab must not steal focus from the user's current tab. The preferred tab is
|
|
47
|
+
// driven explicitly via the `preferredPanelTitle` property instead.
|
|
48
|
+
this.dockManager.config.activatePanelOnAdd = false;
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
private initDockManager() {
|
|
@@ -54,6 +58,11 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
54
58
|
prevPanel: prevPanel?.title
|
|
55
59
|
}}));
|
|
56
60
|
},
|
|
61
|
+
onTabChanged: (_, tabpage) => {
|
|
62
|
+
this.dispatchEvent(new CustomEvent('tab-clicked', {detail: {
|
|
63
|
+
title: tabpage?.panel?.title
|
|
64
|
+
}}));
|
|
65
|
+
},
|
|
57
66
|
onClosePanel: (dockManager, dockNode) => {
|
|
58
67
|
let slot = dockNode.elementContent as any as HTMLSlotElement;
|
|
59
68
|
let element = this.slotElementMap.get(slot);
|
|
@@ -97,6 +106,20 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
108
|
|
|
109
|
+
// The tab to keep active across tab adds/rebuilds. Re-asserted after structural
|
|
110
|
+
// changes; a no-op when the tab is already active, so it never causes a flicker.
|
|
111
|
+
private _preferredPanelTitle: string | null = null;
|
|
112
|
+
public set preferredPanelTitle(panelTitle: string | null) {
|
|
113
|
+
this._preferredPanelTitle = panelTitle;
|
|
114
|
+
this.applyPreferred();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
private applyPreferred() {
|
|
118
|
+
const title = this._preferredPanelTitle;
|
|
119
|
+
if (title && this.dockManager?.getPanels().some((panel) => panel.title === title))
|
|
120
|
+
this.activePanelTitle = title;
|
|
121
|
+
}
|
|
122
|
+
|
|
100
123
|
public getElementInSlot(slot: HTMLSlotElement): HTMLElement {
|
|
101
124
|
return this.slotElementMap.get(slot);
|
|
102
125
|
}
|
|
@@ -166,6 +189,7 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
166
189
|
if ((<HTMLElement>element).style.display == 'none')
|
|
167
190
|
(<HTMLElement>element).style.display = 'block';
|
|
168
191
|
|
|
192
|
+
this.applyPreferred();
|
|
169
193
|
this.dispatchEvent(new CustomEvent('panel-opened', {detail: element}));
|
|
170
194
|
}
|
|
171
195
|
|