@deephaven/golden-layout 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LayoutManager.d.ts +1 -1
- package/dist/items/Component.d.ts +1 -1
- package/dist/items/Component.d.ts.map +1 -1
- package/dist/items/Component.js +2 -2
- package/dist/items/Component.js.map +1 -1
- package/dist/items/Stack.d.ts +1 -1
- package/dist/items/Stack.d.ts.map +1 -1
- package/dist/items/Stack.js +6 -2
- package/dist/items/Stack.js.map +1 -1
- package/dist/utils/EventUtils.d.ts.map +1 -1
- package/dist/utils/EventUtils.js +9 -1
- package/dist/utils/EventUtils.js.map +1 -1
- package/package.json +3 -3
package/dist/LayoutManager.d.ts
CHANGED
|
@@ -256,7 +256,7 @@ export declare class LayoutManager extends EventEmitter {
|
|
|
256
256
|
* @param contentItemOrConfig
|
|
257
257
|
* @param parent Only necessary when passing in config
|
|
258
258
|
*/
|
|
259
|
-
_$normalizeContentItem(contentItemOrConfig: ItemConfig | AbstractContentItem | (() => AbstractContentItem), parent?: AbstractContentItem): AbstractContentItem | RowOrColumn;
|
|
259
|
+
_$normalizeContentItem(contentItemOrConfig: ItemConfig | AbstractContentItem | (() => AbstractContentItem), parent?: AbstractContentItem): Component | AbstractContentItem | RowOrColumn;
|
|
260
260
|
/**
|
|
261
261
|
* Iterates through the array of open popout windows and removes the ones
|
|
262
262
|
* that are effectively closed. This is necessary due to the lack of reliably
|
|
@@ -18,7 +18,7 @@ export default class Component extends AbstractContentItem {
|
|
|
18
18
|
setSize(): void;
|
|
19
19
|
_$init(): void;
|
|
20
20
|
_$hide(): void;
|
|
21
|
-
_$show(): void;
|
|
21
|
+
_$show(forceFocus?: boolean): void;
|
|
22
22
|
_$destroy(): void;
|
|
23
23
|
/**
|
|
24
24
|
* Dragging onto a component directly is not an option
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/items/Component.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAGvD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,mBAAmB;IACxD,MAAM,EAAE,eAAe,CAAC;IAExB,aAAa,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,aAAa,CAAC;IAEzB,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEnC,QAAQ,EAAE,OAAO,CAAC;gBAGhB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAwCpC,KAAK;IAIL,OAAO;IAOP,MAAM;IAKN,MAAM;IAKN,MAAM;
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/items/Component.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAGvD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,mBAAmB;IACxD,MAAM,EAAE,eAAe,CAAC;IAExB,aAAa,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,aAAa,CAAC;IAEzB,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEnC,QAAQ,EAAE,OAAO,CAAC;gBAGhB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAwCpC,KAAK;IAIL,OAAO;IAOP,MAAM;IAKN,MAAM;IAKN,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO;IAU3B,SAAS;IAKT;;;;OAIG;IACH,SAAS;CAGV"}
|
package/dist/items/Component.js
CHANGED
|
@@ -63,9 +63,9 @@ export default class Component extends AbstractContentItem {
|
|
|
63
63
|
this.container.hide();
|
|
64
64
|
AbstractContentItem.prototype._$hide.call(this);
|
|
65
65
|
}
|
|
66
|
-
_$show() {
|
|
66
|
+
_$show(forceFocus) {
|
|
67
67
|
this.container.show();
|
|
68
|
-
if (this.container._config.isFocusOnShow) {
|
|
68
|
+
if (this.container._config.isFocusOnShow || forceFocus) {
|
|
69
69
|
// focus the shown container element on show
|
|
70
70
|
// preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window
|
|
71
71
|
this.container._contentElement[0].focus({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","names":["$","AbstractContentItem","ConfigurationError","ItemContainer","Component","constructor","layoutManager","config","parent","_layoutManager$config","Object","entries","settings","defaultComponentConfig","forEach","_ref","k","v","undefined","_defineProperty","ComponentConstructor","getComponent","componentName","getFallbackComponent","componentConfig","extend","componentState","title","isComponent","container","instance","element","_element","close","_this$parent","removeChild","setSize","is","_$setSize","width","height","_$init","prototype","call","emit","_$hide","hide","_$show","show","_config","isFocusOnShow","_contentElement","focus","preventScroll","_$destroy","_$getArea"],"sources":["../../src/items/Component.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem from './AbstractContentItem';\nimport { ConfigurationError } from '../errors';\nimport type LayoutManager from '../LayoutManager';\nimport type { ComponentConfig } from '../config/ItemConfig';\nimport ItemContainer from '../container/ItemContainer';\nimport type { ComponentConstructor } from '../LayoutManager';\n\n/**\n * @param layoutManager\n * @param config\n * @param parent\n */\nexport default class Component extends AbstractContentItem {\n config: ComponentConfig;\n\n componentName: string;\n\n container: ItemContainer;\n\n parent: AbstractContentItem | null;\n\n instance: unknown;\n\n constructor(\n layoutManager: LayoutManager,\n config: ComponentConfig,\n parent: AbstractContentItem | null\n ) {\n // Extend before super so the AbstractContentItem defualts aren't applied first\n Object.entries(\n layoutManager.config.settings.defaultComponentConfig ?? {}\n ).forEach(([k, v]) => {\n // @ts-ignore\n if (config[k] === undefined) {\n // @ts-ignore\n config[k] = v;\n }\n });\n super(layoutManager, config, parent, $());\n this.config = config;\n this.parent = parent;\n\n const ComponentConstructor =\n (layoutManager.getComponent(\n this.config.componentName\n ) as ComponentConstructor) || layoutManager.getFallbackComponent(),\n componentConfig = $.extend(true, {}, this.config.componentState || {});\n\n if (ComponentConstructor == null) {\n throw new ConfigurationError(\n 'Unknown component \"' + this.config.componentName + '\"'\n );\n }\n componentConfig.componentName = this.config.componentName;\n this.componentName = this.config.componentName;\n\n if (this.config.title === '') {\n this.config.title = this.config.componentName;\n }\n\n this.isComponent = true;\n this.container = new ItemContainer(this.config, this, layoutManager);\n this.instance = new ComponentConstructor(this.container, componentConfig);\n this.element = this.container._element;\n }\n\n close() {\n this.parent?.removeChild(this);\n }\n\n setSize() {\n if (this.element.is(':visible')) {\n // Do not update size of hidden components to prevent unwanted reflows\n this.container._$setSize(this.element.width(), this.element.height());\n }\n }\n\n _$init() {\n AbstractContentItem.prototype._$init.call(this);\n this.container.emit('open');\n }\n\n _$hide() {\n this.container.hide();\n AbstractContentItem.prototype._$hide.call(this);\n }\n\n _$show() {\n this.container.show();\n if (this.container._config.isFocusOnShow) {\n // focus the shown container element on show\n // preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window\n this.container._contentElement[0].focus({ preventScroll: true });\n }\n AbstractContentItem.prototype._$show.call(this);\n }\n\n _$destroy() {\n this.container.emit('destroy', this);\n AbstractContentItem.prototype._$destroy.call(this);\n }\n\n /**\n * Dragging onto a component directly is not an option\n *\n * @returns null\n */\n _$getArea() {\n return null;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,OAChBC,mBAAmB;AAAA,SACjBC,kBAAkB;AAAA,OAGpBC,aAAa;AAGpB;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,SAAS,SAASH,mBAAmB,CAAC;EAWzDI,WAAWA,CACTC,aAA4B,EAC5BC,MAAuB,EACvBC,MAAkC,EAClC;IAAA,IAAAC,qBAAA;IACA;IACAC,MAAM,CAACC,OAAO,EAAAF,qBAAA,GACZH,aAAa,CAACC,MAAM,CAACK,QAAQ,CAACC,sBAAsB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAC3D,CAAC,CAACK,OAAO,CAACC,IAAA,IAAY;MAAA,IAAX,CAACC,CAAC,EAAEC,CAAC,CAAC,GAAAF,IAAA;MACf;MACA,IAAIR,MAAM,CAACS,CAAC,CAAC,KAAKE,SAAS,EAAE;QAC3B;QACAX,MAAM,CAACS,CAAC,CAAC,GAAGC,CAAC;MACf;IACF,CAAC,CAAC;IACF,KAAK,CAACX,aAAa,EAAEC,MAAM,EAAEC,MAAM,EAAER,CAAC,CAAC,CAAC,CAAC;IAACmB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC1C,IAAI,CAACZ,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;IAEpB,IAAMY,oBAAoB,GACrBd,aAAa,CAACe,YAAY,CACzB,IAAI,CAACd,MAAM,CAACe,aACd,CAAC,IAA6BhB,aAAa,CAACiB,oBAAoB,CAAC,CAAC;MACpEC,eAAe,GAAGxB,CAAC,CAACyB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAClB,MAAM,CAACmB,cAAc,IAAI,CAAC,CAAC,CAAC;IAExE,IAAIN,oBAAoB,IAAI,IAAI,EAAE;MAChC,MAAM,IAAIlB,kBAAkB,CAC1B,qBAAqB,GAAG,IAAI,CAACK,MAAM,CAACe,aAAa,GAAG,GACtD,CAAC;IACH;IACAE,eAAe,CAACF,aAAa,GAAG,IAAI,CAACf,MAAM,CAACe,aAAa;IACzD,IAAI,CAACA,aAAa,GAAG,IAAI,CAACf,MAAM,CAACe,aAAa;IAE9C,IAAI,IAAI,CAACf,MAAM,CAACoB,KAAK,KAAK,EAAE,EAAE;MAC5B,IAAI,CAACpB,MAAM,CAACoB,KAAK,GAAG,IAAI,CAACpB,MAAM,CAACe,aAAa;IAC/C;IAEA,IAAI,CAACM,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,SAAS,GAAG,IAAI1B,aAAa,CAAC,IAAI,CAACI,MAAM,EAAE,IAAI,EAAED,aAAa,CAAC;IACpE,IAAI,CAACwB,QAAQ,GAAG,IAAIV,oBAAoB,CAAC,IAAI,CAACS,SAAS,EAAEL,eAAe,CAAC;IACzE,IAAI,CAACO,OAAO,GAAG,IAAI,CAACF,SAAS,CAACG,QAAQ;EACxC;EAEAC,KAAKA,CAAA,EAAG;IAAA,IAAAC,YAAA;IACN,CAAAA,YAAA,OAAI,CAAC1B,MAAM,cAAA0B,YAAA,uBAAXA,YAAA,CAAaC,WAAW,CAAC,IAAI,CAAC;EAChC;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAACL,OAAO,CAACM,EAAE,CAAC,UAAU,CAAC,EAAE;MAC/B;MACA,IAAI,CAACR,SAAS,CAACS,SAAS,CAAC,IAAI,CAACP,OAAO,CAACQ,KAAK,CAAC,CAAC,EAAE,IAAI,CAACR,OAAO,CAACS,MAAM,CAAC,CAAC,CAAC;IACvE;EACF;EAEAC,MAAMA,CAAA,EAAG;IACPxC,mBAAmB,CAACyC,SAAS,CAACD,MAAM,CAACE,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACd,SAAS,CAACe,IAAI,CAAC,MAAM,CAAC;EAC7B;EAEAC,MAAMA,CAAA,EAAG;IACP,IAAI,CAAChB,SAAS,CAACiB,IAAI,CAAC,CAAC;IACrB7C,mBAAmB,CAACyC,SAAS,CAACG,MAAM,CAACF,IAAI,CAAC,IAAI,CAAC;EACjD;EAEAI,MAAMA,
|
|
1
|
+
{"version":3,"file":"Component.js","names":["$","AbstractContentItem","ConfigurationError","ItemContainer","Component","constructor","layoutManager","config","parent","_layoutManager$config","Object","entries","settings","defaultComponentConfig","forEach","_ref","k","v","undefined","_defineProperty","ComponentConstructor","getComponent","componentName","getFallbackComponent","componentConfig","extend","componentState","title","isComponent","container","instance","element","_element","close","_this$parent","removeChild","setSize","is","_$setSize","width","height","_$init","prototype","call","emit","_$hide","hide","_$show","forceFocus","show","_config","isFocusOnShow","_contentElement","focus","preventScroll","_$destroy","_$getArea"],"sources":["../../src/items/Component.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem from './AbstractContentItem';\nimport { ConfigurationError } from '../errors';\nimport type LayoutManager from '../LayoutManager';\nimport type { ComponentConfig } from '../config/ItemConfig';\nimport ItemContainer from '../container/ItemContainer';\nimport type { ComponentConstructor } from '../LayoutManager';\n\n/**\n * @param layoutManager\n * @param config\n * @param parent\n */\nexport default class Component extends AbstractContentItem {\n config: ComponentConfig;\n\n componentName: string;\n\n container: ItemContainer;\n\n parent: AbstractContentItem | null;\n\n instance: unknown;\n\n constructor(\n layoutManager: LayoutManager,\n config: ComponentConfig,\n parent: AbstractContentItem | null\n ) {\n // Extend before super so the AbstractContentItem defualts aren't applied first\n Object.entries(\n layoutManager.config.settings.defaultComponentConfig ?? {}\n ).forEach(([k, v]) => {\n // @ts-ignore\n if (config[k] === undefined) {\n // @ts-ignore\n config[k] = v;\n }\n });\n super(layoutManager, config, parent, $());\n this.config = config;\n this.parent = parent;\n\n const ComponentConstructor =\n (layoutManager.getComponent(\n this.config.componentName\n ) as ComponentConstructor) || layoutManager.getFallbackComponent(),\n componentConfig = $.extend(true, {}, this.config.componentState || {});\n\n if (ComponentConstructor == null) {\n throw new ConfigurationError(\n 'Unknown component \"' + this.config.componentName + '\"'\n );\n }\n componentConfig.componentName = this.config.componentName;\n this.componentName = this.config.componentName;\n\n if (this.config.title === '') {\n this.config.title = this.config.componentName;\n }\n\n this.isComponent = true;\n this.container = new ItemContainer(this.config, this, layoutManager);\n this.instance = new ComponentConstructor(this.container, componentConfig);\n this.element = this.container._element;\n }\n\n close() {\n this.parent?.removeChild(this);\n }\n\n setSize() {\n if (this.element.is(':visible')) {\n // Do not update size of hidden components to prevent unwanted reflows\n this.container._$setSize(this.element.width(), this.element.height());\n }\n }\n\n _$init() {\n AbstractContentItem.prototype._$init.call(this);\n this.container.emit('open');\n }\n\n _$hide() {\n this.container.hide();\n AbstractContentItem.prototype._$hide.call(this);\n }\n\n _$show(forceFocus?: boolean) {\n this.container.show();\n if (this.container._config.isFocusOnShow || forceFocus) {\n // focus the shown container element on show\n // preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window\n this.container._contentElement[0].focus({ preventScroll: true });\n }\n AbstractContentItem.prototype._$show.call(this);\n }\n\n _$destroy() {\n this.container.emit('destroy', this);\n AbstractContentItem.prototype._$destroy.call(this);\n }\n\n /**\n * Dragging onto a component directly is not an option\n *\n * @returns null\n */\n _$getArea() {\n return null;\n }\n}\n"],"mappings":"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"}
|
package/dist/items/Stack.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export default class Stack extends AbstractContentItem {
|
|
|
45
45
|
}, config: StackItemConfig, parent: AbstractContentItem | null);
|
|
46
46
|
setSize(): void;
|
|
47
47
|
_$init(): void;
|
|
48
|
-
setActiveContentItem(contentItem: AbstractContentItem): void;
|
|
48
|
+
setActiveContentItem(contentItem: AbstractContentItem, forceFocus?: boolean): void;
|
|
49
49
|
getActiveContentItem(): AbstractContentItem | null;
|
|
50
50
|
addChild(contentItem: AbstractContentItem | ItemConfig, index?: number): void;
|
|
51
51
|
removeChild(contentItem: AbstractContentItem, keepChild?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/items/Stack.ts"],"names":[],"mappings":"AACA,OAAO,mBAAoC,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,UAAU,eAAe;IACvB,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,mBAAmB;IACpD,OAAO,CAAC,kBAAkB,CAAoC;IAE9D,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qBAAqB,sBAAqC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEnC,OAAO,UAAQ;IAEf,OAAO,CAAC,YAAY,CAAuB;IAC3C,sBAAsB,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAC5D,OAAO,CAAC,UAAU,CAAqB;IACvC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,EAAE,OAAO,CAAS;IAExB,MAAM,EAAE,eAAe,CAAC;gBAGtB,aAAa,EAAE,aAAa,GAAG;QAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG;YAChC,MAAM,CAAC,EAAE,qBAAqB,CAAC;SAChC,CAAC;KACH,EACD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAyCpC,OAAO;IAoBP,MAAM;IAuBN,oBAAoB,CAAC,WAAW,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/items/Stack.ts"],"names":[],"mappings":"AACA,OAAO,mBAAoC,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,UAAU,eAAe;IACvB,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,mBAAmB;IACpD,OAAO,CAAC,kBAAkB,CAAoC;IAE9D,OAAO,EAAE,qBAAqB,CAAC;IAE/B,qBAAqB,sBAAqC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEnC,OAAO,UAAQ;IAEf,OAAO,CAAC,YAAY,CAAuB;IAC3C,sBAAsB,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAC5D,OAAO,CAAC,UAAU,CAAqB;IACvC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,EAAE,OAAO,CAAS;IAExB,MAAM,EAAE,eAAe,CAAC;gBAGtB,aAAa,EAAE,aAAa,GAAG;QAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG;YAChC,MAAM,CAAC,EAAE,qBAAqB,CAAC;SAChC,CAAC;KACH,EACD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAyCpC,OAAO;IAoBP,MAAM;IAuBN,oBAAoB,CAAC,WAAW,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,OAAO;IAqB3E,oBAAoB;IAIpB,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM;IAWtE,WAAW,CAAC,WAAW,EAAE,mBAAmB,EAAE,SAAS,UAAQ;IAgB/D;;;;OAIG;IACH,qBAAqB;IAcrB,SAAS;IAKT;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,WAAW,EAAE,mBAAmB;IAqFzC;;;;;;OAMG;IACH,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAwBxC,SAAS;IA+HT,wBAAwB,CAAC,CAAC,EAAE,MAAM;IA4FlC,oBAAoB;IAIpB,oBAAoB;IA2BpB,sBAAsB,CAAC,OAAO,EAAE,WAAW;CAO5C"}
|
package/dist/items/Stack.js
CHANGED
|
@@ -80,7 +80,7 @@ export default class Stack extends AbstractContentItem {
|
|
|
80
80
|
this.setActiveContentItem(initialItem);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
setActiveContentItem(contentItem) {
|
|
83
|
+
setActiveContentItem(contentItem, forceFocus) {
|
|
84
84
|
if (this.contentItems.indexOf(contentItem) === -1) {
|
|
85
85
|
throw new Error('contentItem is not a child of this stack');
|
|
86
86
|
}
|
|
@@ -89,7 +89,11 @@ export default class Stack extends AbstractContentItem {
|
|
|
89
89
|
}
|
|
90
90
|
this._activeContentItem = contentItem;
|
|
91
91
|
this.header.setActiveContentItem(contentItem);
|
|
92
|
-
contentItem
|
|
92
|
+
if (isComponent(contentItem)) {
|
|
93
|
+
contentItem._$show(forceFocus);
|
|
94
|
+
} else {
|
|
95
|
+
contentItem._$show();
|
|
96
|
+
}
|
|
93
97
|
this.emit('activeContentItemChanged', contentItem);
|
|
94
98
|
this.layoutManager.emit('activeContentItemChanged', contentItem);
|
|
95
99
|
this.emitBubblingEvent('stateChanged');
|
package/dist/items/Stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.js","names":["$","AbstractContentItem","isComponent","Header","RowOrColumn","Stack","constructor","layoutManager","config","parent","_cfg$settings","_cfg$settings2","_cfg$labels","_cfg$settings3","_cfg$labels2","_cfg$settings4","_cfg$labels3","_cfg$labels$minimise","_cfg$labels4","_defineProperty","cfg","_side","_header","show","settings","hasHeaders","popout","showPopoutIcon","labels","undefined","maximise","showMaximiseIcon","close","showCloseIcon","minimise","header","_objectSpread","content","element","append","childElementContainer","_setupHeaderPosition","_$validateClosability","setSize","_this$layoutManager$c","_this$layoutManager$c2","_this$element$width","_this$element$height","i","headerSize","dimensions","headerHeight","contentWidth","width","_sided","contentHeight","height","contentItems","length","emit","emitBubblingEvent","_$init","isInitialised","_attachWheelListener","createTab","_$hide","initialItem","activeItemIndex","Error","setActiveContentItem","contentItem","indexOf","_activeContentItem","_$show","getActiveContentItem","activeContentItem","addChild","index","_$normalizeContentItem","callDownwards","removeChild","keepChild","arguments","removeTab","Math","max","isClosable","_isClosable","len","_this$contentItems$i$","_$setClosable","_$destroy","prototype","call","_$onDrop","_dropSegment","_resetHeaderDropZone","_dropIndex","isVertical","isHorizontal","insertBefore","hasCorrectParent","isColumn","isRow","type","dimension","stack","createContentItem","_this$config$dimensio","_this$parent","rowOrColumn","replaceChild","_$highlightDropZone","x","y","_contentAreaDimensions","segment","Object","entries","area","hoverArea","x1","x2","y1","y2","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","is","headerArea","contentArea","highlightArea","body","left","top","right","bottom","_tabsContainer$get","_this$layoutManager$t","_this$layoutManager$t2","_this$layoutManager$t3","_this$header$tabsCont","_this$header$tabsCont2","_this$layoutManager$t4","_this$header$tabsCont3","_this$header$tabsCont4","_this$header$tabsCont5","_this$layoutManager$d2","_this$header$element$6","_this$header$element$7","_this$header$element$8","_this$header$element$9","_this$header$element$10","tabsLength","tabs","_this$layoutManager$d","_headerOffset$left","_headerOffset$left2","_this$header$element$","_this$header$element$2","_this$header$element$3","_this$header$element$4","_this$header$element$5","headerOffset","offset","dropTargetIndicator","innerHeight","tabsContainer","tabsContainerRect","get","getBoundingClientRect","placeholderRect","tabDropPlaceholder","tabElement","tabRect","_tabElement$get","before","_this$_dropIndex","min","after","placeHolderLeft","placeHolderRight","innerWidth","remove","side","some","elem","toggle","toString","removeClass","addClass","find","headerPosition","_this$_contentAreaDim","_this$_contentAreaDim2","_this$layoutManager$d3"],"sources":["../../src/items/Stack.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem, { isComponent } from './AbstractContentItem';\nimport type LayoutManager from '../LayoutManager';\nimport type {\n ItemConfig,\n StackItemConfig,\n StackItemHeaderConfig,\n} from '../config';\nimport { Header } from '../controls';\nimport RowOrColumn from './RowOrColumn';\n\ninterface HoverDimensions {\n hoverArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n highlightArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n}\n\ntype ContentAreaDimensions = {\n header: HoverDimensions;\n body?: HoverDimensions;\n top?: HoverDimensions;\n bottom?: HoverDimensions;\n left?: HoverDimensions;\n right?: HoverDimensions;\n};\n\ntype BodySegment = keyof ContentAreaDimensions;\n\nexport default class Stack extends AbstractContentItem {\n private _activeContentItem: AbstractContentItem | null = null;\n\n _header: StackItemHeaderConfig;\n\n childElementContainer = $('<div class=\"lm_items\"></div>');\n header: Header;\n parent: AbstractContentItem | null;\n\n isStack = true;\n\n private _dropSegment: string | null = null;\n _contentAreaDimensions: ContentAreaDimensions | null = null;\n private _dropIndex: number | undefined;\n _side: boolean | 'top' | 'left' | 'right' | 'bottom';\n _sided: boolean = false;\n\n config: StackItemConfig;\n\n constructor(\n layoutManager: LayoutManager & {\n config: LayoutManager['config'] & {\n header?: StackItemHeaderConfig;\n };\n },\n config: StackItemConfig,\n parent: AbstractContentItem | null\n ) {\n super(\n layoutManager,\n config,\n parent,\n $('<div class=\"lm_item lm_stack\"></div>')\n );\n this.parent = parent;\n this.config = config;\n\n const cfg = layoutManager.config;\n this._side = false;\n this._header = {\n // defaults' reconstruction from old configuration style\n show: cfg.settings?.hasHeaders && config.hasHeaders !== false,\n popout: cfg.settings?.showPopoutIcon ? cfg.labels?.popout : undefined,\n maximise: cfg.settings?.showMaximiseIcon\n ? cfg.labels?.maximise\n : undefined,\n close: cfg.settings?.showCloseIcon ? cfg.labels?.close : undefined,\n minimise: cfg.labels?.minimise ?? undefined,\n };\n\n // load simplified version of header configuration (https://github.com/deepstreamIO/golden-layout/pull/245)\n if (cfg.header) this._header = { ...this._header, ...cfg.header };\n if (config.header)\n // load from stack\n this._header = { ...this._header, ...config.header };\n if (config.content && config.content[0] && config.content[0].header)\n // load from component if stack omitted\n this._header = { ...this._header, ...config.content[0].header };\n\n this.header = new Header(layoutManager, this);\n\n this.element.append(this.header.element);\n this.element.append(this.childElementContainer);\n this._setupHeaderPosition();\n this._$validateClosability();\n }\n\n setSize() {\n var i,\n headerSize = this._header.show\n ? this.layoutManager.config.dimensions?.headerHeight ?? 0\n : 0,\n contentWidth =\n (this.element.width() ?? 0) - (this._sided ? headerSize : 0),\n contentHeight =\n (this.element.height() ?? 0) - (!this._sided ? headerSize : 0);\n\n this.childElementContainer.width(contentWidth);\n this.childElementContainer.height(contentHeight);\n\n for (i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].element.width(contentWidth).height(contentHeight);\n }\n this.emit('resize');\n this.emitBubblingEvent('stateChanged');\n }\n\n _$init() {\n if (this.isInitialised === true) return;\n\n this.header._attachWheelListener();\n\n super._$init();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.header.createTab(this.contentItems[i]);\n this.contentItems[i]._$hide();\n }\n\n if (this.contentItems.length > 0) {\n const initialItem = this.contentItems[this.config.activeItemIndex || 0];\n\n if (!initialItem) {\n throw new Error('Configured activeItemIndex out of bounds');\n }\n\n this.setActiveContentItem(initialItem);\n }\n }\n\n setActiveContentItem(contentItem: AbstractContentItem) {\n if (this.contentItems.indexOf(contentItem) === -1) {\n throw new Error('contentItem is not a child of this stack');\n }\n\n if (this._activeContentItem !== null) {\n this._activeContentItem._$hide();\n }\n\n this._activeContentItem = contentItem;\n this.header.setActiveContentItem(contentItem);\n contentItem._$show();\n this.emit('activeContentItemChanged', contentItem);\n this.layoutManager.emit('activeContentItemChanged', contentItem);\n this.emitBubblingEvent('stateChanged');\n }\n\n getActiveContentItem() {\n return this.header.activeContentItem;\n }\n\n addChild(contentItem: AbstractContentItem | ItemConfig, index?: number) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n super.addChild(contentItem, index);\n this.childElementContainer.append(contentItem.element);\n this.header.createTab(contentItem, index);\n this.setActiveContentItem(contentItem);\n this.callDownwards('setSize');\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n var index = this.contentItems.indexOf(contentItem);\n super.removeChild(contentItem, keepChild);\n this.header.removeTab(contentItem);\n if (this.header.activeContentItem === contentItem) {\n if (this.contentItems.length > 0) {\n this.setActiveContentItem(this.contentItems[Math.max(index - 1, 0)]);\n } else {\n this._activeContentItem = null;\n }\n }\n\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Validates that the stack is still closable or not. If a stack is able\n * to close, but has a non closable component added to it, the stack is no\n * longer closable until all components are closable.\n */\n _$validateClosability() {\n let isClosable = this.header._isClosable();\n\n for (let i = 0, len = this.contentItems.length; i < len; i++) {\n if (!isClosable) {\n break;\n }\n\n isClosable = this.contentItems[i].config.isClosable ?? false;\n }\n\n this.header._$setClosable(isClosable);\n }\n\n _$destroy() {\n AbstractContentItem.prototype._$destroy.call(this);\n this.header._$destroy();\n }\n\n /**\n * Ok, this one is going to be the tricky one: The user has dropped {contentItem} onto this stack.\n *\n * It was dropped on either the stacks header or the top, right, bottom or left bit of the content area\n * (which one of those is stored in this._dropSegment). Now, if the user has dropped on the header the case\n * is relatively clear: We add the item to the existing stack... job done (might be good to have\n * tab reordering at some point, but lets not sweat it right now)\n *\n * If the item was dropped on the content part things are a bit more complicated. If it was dropped on either the\n * top or bottom region we need to create a new column and place the items accordingly.\n * Unless, of course if the stack is already within a column... in which case we want\n * to add the newly created item to the existing column...\n * either prepend or append it, depending on wether its top or bottom.\n *\n * Same thing for rows and left / right drop segments... so in total there are 9 things that can potentially happen\n * (left, top, right, bottom) * is child of the right parent (row, column) + header drop\n *\n * @param contentItem\n */\n _$onDrop(contentItem: AbstractContentItem) {\n /*\n * The item was dropped on the header area. Just add it as a child of this stack and\n * get the hell out of this logic\n */\n if (this._dropSegment === 'header') {\n this._resetHeaderDropZone();\n this.addChild(contentItem, this._dropIndex);\n return;\n }\n\n /*\n * The stack is empty. Let's just add the element.\n */\n if (this._dropSegment === 'body') {\n this.addChild(contentItem);\n return;\n }\n\n /*\n * The item was dropped on the top-, left-, bottom- or right- part of the content. Let's\n * aggregate some conditions to make the if statements later on more readable\n */\n const isVertical =\n this._dropSegment === 'top' || this._dropSegment === 'bottom';\n const isHorizontal =\n this._dropSegment === 'left' || this._dropSegment === 'right';\n const insertBefore =\n this._dropSegment === 'top' || this._dropSegment === 'left';\n const hasCorrectParent =\n this.parent instanceof RowOrColumn &&\n ((isVertical && this.parent.isColumn) ||\n (isHorizontal && this.parent.isRow));\n const type = isVertical ? 'column' : 'row';\n const dimension = isVertical ? 'height' : 'width';\n\n /*\n * The content item can be either a component or a stack. If it is a component, wrap it into a stack\n */\n if (isComponent(contentItem)) {\n const stack = this.layoutManager.createContentItem(\n {\n type: 'stack',\n header: contentItem.config.header || {},\n },\n this\n );\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n /*\n * If the item is dropped on top or bottom of a column or left and right of a row, it's already\n * layd out in the correct way. Just add it as a child\n */\n if (hasCorrectParent) {\n const index = this.parent!.contentItems.indexOf(this);\n\n // Should be a `RowOrColumn` if `hasCorrectParent` is true\n (this.parent as RowOrColumn).addChild(\n contentItem,\n insertBefore ? index : index + 1,\n true\n );\n this.config[dimension] = (this.config[dimension] ?? 0) * 0.5;\n contentItem.config[dimension] = this.config[dimension];\n this.parent!.callDownwards('setSize');\n /*\n * This handles items that are dropped on top or bottom of a row or left / right of a column. We need\n * to create the appropriate contentItem for them to live in\n */\n } else {\n const rowOrColumn = this.layoutManager.createContentItem({ type }, this);\n this.parent?.replaceChild(this, rowOrColumn);\n\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(this, insertBefore ? undefined : 0, true);\n\n this.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n }\n }\n\n /**\n * If the user hovers above the header part of the stack, indicate drop positions for tabs.\n * otherwise indicate which segment of the body the dragged item would be dropped on\n *\n * @param x Absolute Screen X\n * @param y Absolute Screen Y\n */\n _$highlightDropZone(x: number, y: number) {\n if (!this._contentAreaDimensions) {\n return;\n }\n\n for (let [segment, dimensions] of Object.entries(\n this._contentAreaDimensions\n ) as [BodySegment, HoverDimensions][]) {\n const area = dimensions.hoverArea;\n\n if (area.x1 < x && area.x2 > x && area.y1 < y && area.y2 > y) {\n if (segment === 'header') {\n this._dropSegment = 'header';\n this._highlightHeaderDropZone(x);\n } else {\n this._resetHeaderDropZone();\n this._highlightBodyDropZone(segment);\n }\n\n return;\n }\n }\n }\n\n _$getArea() {\n if (this.element.is(':visible') === false) {\n return null;\n }\n\n const headerArea = super._$getArea(this.header.element);\n const contentArea = super._$getArea(this.childElementContainer);\n if (headerArea == null || contentArea == null) {\n return null;\n }\n\n const contentWidth = contentArea.x2 - contentArea.x1;\n const contentHeight = contentArea.y2 - contentArea.y1;\n\n this._contentAreaDimensions = {\n header: {\n hoverArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n highlightArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n },\n };\n\n /**\n * If this Stack is a parent to rows, columns or other stacks only its\n * header is a valid dropzone.\n */\n if (\n this._activeContentItem &&\n this._activeContentItem.isComponent === false\n ) {\n return headerArea;\n }\n\n /**\n * Highlight the entire body if the stack is empty\n */\n if (this.contentItems.length === 0) {\n this._contentAreaDimensions.body = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n this._contentAreaDimensions.left = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.25,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.5,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.top = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n };\n\n this._contentAreaDimensions.right = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.75,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1 + contentWidth * 0.5,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.bottom = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n _highlightHeaderDropZone(x: number) {\n const tabsLength = this.header.tabs.length;\n\n // I've omitted code for side edge tabs here\n // illumon doesn't need it, will slowly pull that code out elsewhere too\n\n // Empty stack\n if (tabsLength === 0) {\n const headerOffset = this.header.element.offset();\n\n // we don't have a placeholder to measure in the dom, lets just cheat and make it 100px.\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: headerOffset?.left ?? 0,\n x2: (headerOffset?.left ?? 0) + 100,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n\n return;\n }\n\n const tabsContainer = this.header.tabsContainer;\n const tabsContainerRect = tabsContainer.get(0)?.getBoundingClientRect();\n const placeholderRect = this.layoutManager.tabDropPlaceholder\n .get(0)\n ?.getBoundingClientRect();\n\n if (!tabsContainerRect || !placeholderRect) {\n return;\n }\n\n if (x < tabsContainerRect.left) {\n // is over left tab controls button\n // move x to a new point to inside left edge of container\n x = tabsContainerRect.left + 1;\n } else if (x > tabsContainerRect.right) {\n // is over right tab controls button\n // move x to a new point to inside right edge of container\n x = tabsContainerRect.right - 1;\n }\n\n let tabElement: JQuery<HTMLElement> | undefined;\n let tabRect: DOMRect | undefined;\n\n // if its not inide a placeholder,\n if (!(placeholderRect.left < x && x < placeholderRect.right)) {\n // which tab is it over ...\n for (var i = 0; i < tabsLength; i++) {\n tabElement = this.header.tabs[i].element;\n tabRect = tabElement.get(0)?.getBoundingClientRect();\n if (tabRect && tabRect.left < x && x < tabRect.right) {\n this._dropIndex = i;\n break;\n }\n }\n\n // we have tabRect at this x,y from the loop above\n if (tabElement && tabRect && x < tabRect.left + tabRect.width * 0.5) {\n // mostly before an element, insert placeholder before\n tabElement.before(this.layoutManager.tabDropPlaceholder);\n } else if (tabElement) {\n // x is likely after the lhe last item, position after and increase drop index\n this._dropIndex = Math.min((this._dropIndex ?? 0) + 1, tabsLength);\n tabElement.after(this.layoutManager.tabDropPlaceholder);\n }\n }\n\n let placeHolderLeft =\n this.layoutManager.tabDropPlaceholder.offset()?.left ?? 0;\n placeHolderLeft = Math.max(\n placeHolderLeft,\n this.header.tabsContainer.offset()?.left ?? 0\n );\n var placeHolderRight =\n placeHolderLeft + (this.layoutManager.tabDropPlaceholder.width() ?? 0);\n placeHolderRight = Math.min(\n placeHolderRight,\n (this.header.tabsContainer.offset()?.left ?? 0) +\n (this.header.tabsContainer.innerWidth() ?? 0)\n );\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: placeHolderLeft,\n x2: placeHolderRight,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n }\n\n _resetHeaderDropZone() {\n this.layoutManager.tabDropPlaceholder.remove();\n }\n\n _setupHeaderPosition() {\n const side = ['right', 'left', 'bottom'].some(\n elem => elem === this._header.show\n )\n ? this._header.show\n : undefined;\n\n this.header.element.toggle(!!this._header.show);\n\n if (!side) {\n return;\n }\n\n this._side = side;\n this._sided = ['right', 'left'].indexOf(this._side.toString()) >= 0;\n this.element.removeClass('lm_left lm_right lm_bottom');\n if (this._side) this.element.addClass('lm_' + this._side);\n if (this.element.find('.lm_header').length && this.childElementContainer) {\n const headerPosition =\n ['right', 'bottom'].indexOf(this._side.toString()) >= 0\n ? 'before'\n : 'after';\n this.header.element[headerPosition](this.childElementContainer);\n this.callDownwards('setSize');\n }\n }\n\n _highlightBodyDropZone(segment: BodySegment) {\n const highlightArea = this._contentAreaDimensions?.[segment]?.highlightArea;\n if (highlightArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(highlightArea);\n }\n this._dropSegment = segment;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Stack.js","names":["$","AbstractContentItem","isComponent","Header","RowOrColumn","Stack","constructor","layoutManager","config","parent","_cfg$settings","_cfg$settings2","_cfg$labels","_cfg$settings3","_cfg$labels2","_cfg$settings4","_cfg$labels3","_cfg$labels$minimise","_cfg$labels4","_defineProperty","cfg","_side","_header","show","settings","hasHeaders","popout","showPopoutIcon","labels","undefined","maximise","showMaximiseIcon","close","showCloseIcon","minimise","header","_objectSpread","content","element","append","childElementContainer","_setupHeaderPosition","_$validateClosability","setSize","_this$layoutManager$c","_this$layoutManager$c2","_this$element$width","_this$element$height","i","headerSize","dimensions","headerHeight","contentWidth","width","_sided","contentHeight","height","contentItems","length","emit","emitBubblingEvent","_$init","isInitialised","_attachWheelListener","createTab","_$hide","initialItem","activeItemIndex","Error","setActiveContentItem","contentItem","forceFocus","indexOf","_activeContentItem","_$show","getActiveContentItem","activeContentItem","addChild","index","_$normalizeContentItem","callDownwards","removeChild","keepChild","arguments","removeTab","Math","max","isClosable","_isClosable","len","_this$contentItems$i$","_$setClosable","_$destroy","prototype","call","_$onDrop","_dropSegment","_resetHeaderDropZone","_dropIndex","isVertical","isHorizontal","insertBefore","hasCorrectParent","isColumn","isRow","type","dimension","stack","createContentItem","_this$config$dimensio","_this$parent","rowOrColumn","replaceChild","_$highlightDropZone","x","y","_contentAreaDimensions","segment","Object","entries","area","hoverArea","x1","x2","y1","y2","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","is","headerArea","contentArea","highlightArea","body","left","top","right","bottom","_tabsContainer$get","_this$layoutManager$t","_this$layoutManager$t2","_this$layoutManager$t3","_this$header$tabsCont","_this$header$tabsCont2","_this$layoutManager$t4","_this$header$tabsCont3","_this$header$tabsCont4","_this$header$tabsCont5","_this$layoutManager$d2","_this$header$element$6","_this$header$element$7","_this$header$element$8","_this$header$element$9","_this$header$element$10","tabsLength","tabs","_this$layoutManager$d","_headerOffset$left","_headerOffset$left2","_this$header$element$","_this$header$element$2","_this$header$element$3","_this$header$element$4","_this$header$element$5","headerOffset","offset","dropTargetIndicator","innerHeight","tabsContainer","tabsContainerRect","get","getBoundingClientRect","placeholderRect","tabDropPlaceholder","tabElement","tabRect","_tabElement$get","before","_this$_dropIndex","min","after","placeHolderLeft","placeHolderRight","innerWidth","remove","side","some","elem","toggle","toString","removeClass","addClass","find","headerPosition","_this$_contentAreaDim","_this$_contentAreaDim2","_this$layoutManager$d3"],"sources":["../../src/items/Stack.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem, { isComponent } from './AbstractContentItem';\nimport type LayoutManager from '../LayoutManager';\nimport type {\n ItemConfig,\n StackItemConfig,\n StackItemHeaderConfig,\n} from '../config';\nimport { Header } from '../controls';\nimport RowOrColumn from './RowOrColumn';\n\ninterface HoverDimensions {\n hoverArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n highlightArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n}\n\ntype ContentAreaDimensions = {\n header: HoverDimensions;\n body?: HoverDimensions;\n top?: HoverDimensions;\n bottom?: HoverDimensions;\n left?: HoverDimensions;\n right?: HoverDimensions;\n};\n\ntype BodySegment = keyof ContentAreaDimensions;\n\nexport default class Stack extends AbstractContentItem {\n private _activeContentItem: AbstractContentItem | null = null;\n\n _header: StackItemHeaderConfig;\n\n childElementContainer = $('<div class=\"lm_items\"></div>');\n header: Header;\n parent: AbstractContentItem | null;\n\n isStack = true;\n\n private _dropSegment: string | null = null;\n _contentAreaDimensions: ContentAreaDimensions | null = null;\n private _dropIndex: number | undefined;\n _side: boolean | 'top' | 'left' | 'right' | 'bottom';\n _sided: boolean = false;\n\n config: StackItemConfig;\n\n constructor(\n layoutManager: LayoutManager & {\n config: LayoutManager['config'] & {\n header?: StackItemHeaderConfig;\n };\n },\n config: StackItemConfig,\n parent: AbstractContentItem | null\n ) {\n super(\n layoutManager,\n config,\n parent,\n $('<div class=\"lm_item lm_stack\"></div>')\n );\n this.parent = parent;\n this.config = config;\n\n const cfg = layoutManager.config;\n this._side = false;\n this._header = {\n // defaults' reconstruction from old configuration style\n show: cfg.settings?.hasHeaders && config.hasHeaders !== false,\n popout: cfg.settings?.showPopoutIcon ? cfg.labels?.popout : undefined,\n maximise: cfg.settings?.showMaximiseIcon\n ? cfg.labels?.maximise\n : undefined,\n close: cfg.settings?.showCloseIcon ? cfg.labels?.close : undefined,\n minimise: cfg.labels?.minimise ?? undefined,\n };\n\n // load simplified version of header configuration (https://github.com/deepstreamIO/golden-layout/pull/245)\n if (cfg.header) this._header = { ...this._header, ...cfg.header };\n if (config.header)\n // load from stack\n this._header = { ...this._header, ...config.header };\n if (config.content && config.content[0] && config.content[0].header)\n // load from component if stack omitted\n this._header = { ...this._header, ...config.content[0].header };\n\n this.header = new Header(layoutManager, this);\n\n this.element.append(this.header.element);\n this.element.append(this.childElementContainer);\n this._setupHeaderPosition();\n this._$validateClosability();\n }\n\n setSize() {\n var i,\n headerSize = this._header.show\n ? this.layoutManager.config.dimensions?.headerHeight ?? 0\n : 0,\n contentWidth =\n (this.element.width() ?? 0) - (this._sided ? headerSize : 0),\n contentHeight =\n (this.element.height() ?? 0) - (!this._sided ? headerSize : 0);\n\n this.childElementContainer.width(contentWidth);\n this.childElementContainer.height(contentHeight);\n\n for (i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].element.width(contentWidth).height(contentHeight);\n }\n this.emit('resize');\n this.emitBubblingEvent('stateChanged');\n }\n\n _$init() {\n if (this.isInitialised === true) return;\n\n this.header._attachWheelListener();\n\n super._$init();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.header.createTab(this.contentItems[i]);\n this.contentItems[i]._$hide();\n }\n\n if (this.contentItems.length > 0) {\n const initialItem = this.contentItems[this.config.activeItemIndex || 0];\n\n if (!initialItem) {\n throw new Error('Configured activeItemIndex out of bounds');\n }\n\n this.setActiveContentItem(initialItem);\n }\n }\n\n setActiveContentItem(contentItem: AbstractContentItem, forceFocus?: boolean) {\n if (this.contentItems.indexOf(contentItem) === -1) {\n throw new Error('contentItem is not a child of this stack');\n }\n\n if (this._activeContentItem !== null) {\n this._activeContentItem._$hide();\n }\n\n this._activeContentItem = contentItem;\n this.header.setActiveContentItem(contentItem);\n if (isComponent(contentItem)) {\n contentItem._$show(forceFocus);\n } else {\n contentItem._$show();\n }\n this.emit('activeContentItemChanged', contentItem);\n this.layoutManager.emit('activeContentItemChanged', contentItem);\n this.emitBubblingEvent('stateChanged');\n }\n\n getActiveContentItem() {\n return this.header.activeContentItem;\n }\n\n addChild(contentItem: AbstractContentItem | ItemConfig, index?: number) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n super.addChild(contentItem, index);\n this.childElementContainer.append(contentItem.element);\n this.header.createTab(contentItem, index);\n this.setActiveContentItem(contentItem);\n this.callDownwards('setSize');\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n var index = this.contentItems.indexOf(contentItem);\n super.removeChild(contentItem, keepChild);\n this.header.removeTab(contentItem);\n if (this.header.activeContentItem === contentItem) {\n if (this.contentItems.length > 0) {\n this.setActiveContentItem(this.contentItems[Math.max(index - 1, 0)]);\n } else {\n this._activeContentItem = null;\n }\n }\n\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Validates that the stack is still closable or not. If a stack is able\n * to close, but has a non closable component added to it, the stack is no\n * longer closable until all components are closable.\n */\n _$validateClosability() {\n let isClosable = this.header._isClosable();\n\n for (let i = 0, len = this.contentItems.length; i < len; i++) {\n if (!isClosable) {\n break;\n }\n\n isClosable = this.contentItems[i].config.isClosable ?? false;\n }\n\n this.header._$setClosable(isClosable);\n }\n\n _$destroy() {\n AbstractContentItem.prototype._$destroy.call(this);\n this.header._$destroy();\n }\n\n /**\n * Ok, this one is going to be the tricky one: The user has dropped {contentItem} onto this stack.\n *\n * It was dropped on either the stacks header or the top, right, bottom or left bit of the content area\n * (which one of those is stored in this._dropSegment). Now, if the user has dropped on the header the case\n * is relatively clear: We add the item to the existing stack... job done (might be good to have\n * tab reordering at some point, but lets not sweat it right now)\n *\n * If the item was dropped on the content part things are a bit more complicated. If it was dropped on either the\n * top or bottom region we need to create a new column and place the items accordingly.\n * Unless, of course if the stack is already within a column... in which case we want\n * to add the newly created item to the existing column...\n * either prepend or append it, depending on wether its top or bottom.\n *\n * Same thing for rows and left / right drop segments... so in total there are 9 things that can potentially happen\n * (left, top, right, bottom) * is child of the right parent (row, column) + header drop\n *\n * @param contentItem\n */\n _$onDrop(contentItem: AbstractContentItem) {\n /*\n * The item was dropped on the header area. Just add it as a child of this stack and\n * get the hell out of this logic\n */\n if (this._dropSegment === 'header') {\n this._resetHeaderDropZone();\n this.addChild(contentItem, this._dropIndex);\n return;\n }\n\n /*\n * The stack is empty. Let's just add the element.\n */\n if (this._dropSegment === 'body') {\n this.addChild(contentItem);\n return;\n }\n\n /*\n * The item was dropped on the top-, left-, bottom- or right- part of the content. Let's\n * aggregate some conditions to make the if statements later on more readable\n */\n const isVertical =\n this._dropSegment === 'top' || this._dropSegment === 'bottom';\n const isHorizontal =\n this._dropSegment === 'left' || this._dropSegment === 'right';\n const insertBefore =\n this._dropSegment === 'top' || this._dropSegment === 'left';\n const hasCorrectParent =\n this.parent instanceof RowOrColumn &&\n ((isVertical && this.parent.isColumn) ||\n (isHorizontal && this.parent.isRow));\n const type = isVertical ? 'column' : 'row';\n const dimension = isVertical ? 'height' : 'width';\n\n /*\n * The content item can be either a component or a stack. If it is a component, wrap it into a stack\n */\n if (isComponent(contentItem)) {\n const stack = this.layoutManager.createContentItem(\n {\n type: 'stack',\n header: contentItem.config.header || {},\n },\n this\n );\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n /*\n * If the item is dropped on top or bottom of a column or left and right of a row, it's already\n * layd out in the correct way. Just add it as a child\n */\n if (hasCorrectParent) {\n const index = this.parent!.contentItems.indexOf(this);\n\n // Should be a `RowOrColumn` if `hasCorrectParent` is true\n (this.parent as RowOrColumn).addChild(\n contentItem,\n insertBefore ? index : index + 1,\n true\n );\n this.config[dimension] = (this.config[dimension] ?? 0) * 0.5;\n contentItem.config[dimension] = this.config[dimension];\n this.parent!.callDownwards('setSize');\n /*\n * This handles items that are dropped on top or bottom of a row or left / right of a column. We need\n * to create the appropriate contentItem for them to live in\n */\n } else {\n const rowOrColumn = this.layoutManager.createContentItem({ type }, this);\n this.parent?.replaceChild(this, rowOrColumn);\n\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(this, insertBefore ? undefined : 0, true);\n\n this.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n }\n }\n\n /**\n * If the user hovers above the header part of the stack, indicate drop positions for tabs.\n * otherwise indicate which segment of the body the dragged item would be dropped on\n *\n * @param x Absolute Screen X\n * @param y Absolute Screen Y\n */\n _$highlightDropZone(x: number, y: number) {\n if (!this._contentAreaDimensions) {\n return;\n }\n\n for (let [segment, dimensions] of Object.entries(\n this._contentAreaDimensions\n ) as [BodySegment, HoverDimensions][]) {\n const area = dimensions.hoverArea;\n\n if (area.x1 < x && area.x2 > x && area.y1 < y && area.y2 > y) {\n if (segment === 'header') {\n this._dropSegment = 'header';\n this._highlightHeaderDropZone(x);\n } else {\n this._resetHeaderDropZone();\n this._highlightBodyDropZone(segment);\n }\n\n return;\n }\n }\n }\n\n _$getArea() {\n if (this.element.is(':visible') === false) {\n return null;\n }\n\n const headerArea = super._$getArea(this.header.element);\n const contentArea = super._$getArea(this.childElementContainer);\n if (headerArea == null || contentArea == null) {\n return null;\n }\n\n const contentWidth = contentArea.x2 - contentArea.x1;\n const contentHeight = contentArea.y2 - contentArea.y1;\n\n this._contentAreaDimensions = {\n header: {\n hoverArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n highlightArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n },\n };\n\n /**\n * If this Stack is a parent to rows, columns or other stacks only its\n * header is a valid dropzone.\n */\n if (\n this._activeContentItem &&\n this._activeContentItem.isComponent === false\n ) {\n return headerArea;\n }\n\n /**\n * Highlight the entire body if the stack is empty\n */\n if (this.contentItems.length === 0) {\n this._contentAreaDimensions.body = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n this._contentAreaDimensions.left = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.25,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.5,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.top = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n };\n\n this._contentAreaDimensions.right = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.75,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1 + contentWidth * 0.5,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.bottom = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n _highlightHeaderDropZone(x: number) {\n const tabsLength = this.header.tabs.length;\n\n // I've omitted code for side edge tabs here\n // illumon doesn't need it, will slowly pull that code out elsewhere too\n\n // Empty stack\n if (tabsLength === 0) {\n const headerOffset = this.header.element.offset();\n\n // we don't have a placeholder to measure in the dom, lets just cheat and make it 100px.\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: headerOffset?.left ?? 0,\n x2: (headerOffset?.left ?? 0) + 100,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n\n return;\n }\n\n const tabsContainer = this.header.tabsContainer;\n const tabsContainerRect = tabsContainer.get(0)?.getBoundingClientRect();\n const placeholderRect = this.layoutManager.tabDropPlaceholder\n .get(0)\n ?.getBoundingClientRect();\n\n if (!tabsContainerRect || !placeholderRect) {\n return;\n }\n\n if (x < tabsContainerRect.left) {\n // is over left tab controls button\n // move x to a new point to inside left edge of container\n x = tabsContainerRect.left + 1;\n } else if (x > tabsContainerRect.right) {\n // is over right tab controls button\n // move x to a new point to inside right edge of container\n x = tabsContainerRect.right - 1;\n }\n\n let tabElement: JQuery<HTMLElement> | undefined;\n let tabRect: DOMRect | undefined;\n\n // if its not inide a placeholder,\n if (!(placeholderRect.left < x && x < placeholderRect.right)) {\n // which tab is it over ...\n for (var i = 0; i < tabsLength; i++) {\n tabElement = this.header.tabs[i].element;\n tabRect = tabElement.get(0)?.getBoundingClientRect();\n if (tabRect && tabRect.left < x && x < tabRect.right) {\n this._dropIndex = i;\n break;\n }\n }\n\n // we have tabRect at this x,y from the loop above\n if (tabElement && tabRect && x < tabRect.left + tabRect.width * 0.5) {\n // mostly before an element, insert placeholder before\n tabElement.before(this.layoutManager.tabDropPlaceholder);\n } else if (tabElement) {\n // x is likely after the lhe last item, position after and increase drop index\n this._dropIndex = Math.min((this._dropIndex ?? 0) + 1, tabsLength);\n tabElement.after(this.layoutManager.tabDropPlaceholder);\n }\n }\n\n let placeHolderLeft =\n this.layoutManager.tabDropPlaceholder.offset()?.left ?? 0;\n placeHolderLeft = Math.max(\n placeHolderLeft,\n this.header.tabsContainer.offset()?.left ?? 0\n );\n var placeHolderRight =\n placeHolderLeft + (this.layoutManager.tabDropPlaceholder.width() ?? 0);\n placeHolderRight = Math.min(\n placeHolderRight,\n (this.header.tabsContainer.offset()?.left ?? 0) +\n (this.header.tabsContainer.innerWidth() ?? 0)\n );\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: placeHolderLeft,\n x2: placeHolderRight,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n }\n\n _resetHeaderDropZone() {\n this.layoutManager.tabDropPlaceholder.remove();\n }\n\n _setupHeaderPosition() {\n const side = ['right', 'left', 'bottom'].some(\n elem => elem === this._header.show\n )\n ? this._header.show\n : undefined;\n\n this.header.element.toggle(!!this._header.show);\n\n if (!side) {\n return;\n }\n\n this._side = side;\n this._sided = ['right', 'left'].indexOf(this._side.toString()) >= 0;\n this.element.removeClass('lm_left lm_right lm_bottom');\n if (this._side) this.element.addClass('lm_' + this._side);\n if (this.element.find('.lm_header').length && this.childElementContainer) {\n const headerPosition =\n ['right', 'bottom'].indexOf(this._side.toString()) >= 0\n ? 'before'\n : 'after';\n this.header.element[headerPosition](this.childElementContainer);\n this.callDownwards('setSize');\n }\n }\n\n _highlightBodyDropZone(segment: BodySegment) {\n const highlightArea = this._contentAreaDimensions?.[segment]?.highlightArea;\n if (highlightArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(highlightArea);\n }\n this._dropSegment = segment;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventUtils.d.ts","sourceRoot":"","sources":["../../src/utils/EventUtils.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhD,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAC9C,MAAM,MAAM,mBAAmB,CAAC,WAAW,GAAG,EAAE,IAAI,CAClD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,KACvC,oBAAoB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,CAAC,WAAW,GAAG,EAAE,IAAI,CAChD,YAAY,EAAE,YAAY,EAC1B,GAAG,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAChC,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,CAAC,WAAW,GAAG,EAAE,IAAI,CAChD,YAAY,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAC7C,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,KACvC,IAAI,CAAC;AAEV;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,GAAG,EAAE,EAC7C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACzC,oBAAoB,CAKtB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,GAAG,EAAE,EACjD,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAAC,WAAW,CAAC,CAGlC;AAED,wBAAgB,gBAAgB,CAAC,WAAW,GAAG,EAAE,EAC/C,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,WAAW,CAAC,CAIhC;AAED,wBAAgB,uBAAuB,CAAC,WAAW,GAAG,EAAE,EACtD,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"EventUtils.d.ts","sourceRoot":"","sources":["../../src/utils/EventUtils.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhD,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAC9C,MAAM,MAAM,mBAAmB,CAAC,WAAW,GAAG,EAAE,IAAI,CAClD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,KACvC,oBAAoB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,CAAC,WAAW,GAAG,EAAE,IAAI,CAChD,YAAY,EAAE,YAAY,EAC1B,GAAG,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAChC,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,CAAC,WAAW,GAAG,EAAE,IAAI,CAChD,YAAY,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAC7C,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,KACvC,IAAI,CAAC;AAEV;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,GAAG,EAAE,EAC7C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACzC,oBAAoB,CAKtB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,GAAG,EAAE,EACjD,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAAC,WAAW,CAAC,CAGlC;AAED,wBAAgB,gBAAgB,CAAC,WAAW,GAAG,EAAE,EAC/C,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,WAAW,CAAC,CAIhC;AAED,wBAAgB,uBAAuB,CAAC,WAAW,GAAG,EAAE,EACtD,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAAC,WAAW,CAAC,CAwBhC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAG,EAAE,EACjD,KAAK,EAAE,MAAM,GACZ;IACD,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrC,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC7C,CAMA"}
|
package/dist/utils/EventUtils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef } from 'react';
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Listen for an event
|
|
4
4
|
* @param eventEmitter The event emitter to listen to
|
|
@@ -34,6 +34,14 @@ export function makeUseListenerFunction(event) {
|
|
|
34
34
|
}
|
|
35
35
|
eventEmitterRef.current = eventEmitter;
|
|
36
36
|
handlerRef.current = handler;
|
|
37
|
+
|
|
38
|
+
// Cleanup on unmount
|
|
39
|
+
// Mounting the listener in useEffect causes a race condition with embed-widget
|
|
40
|
+
// where the event is emitted during render before the useEffect runs after render.
|
|
41
|
+
useEffect(() => () => {
|
|
42
|
+
var _eventEmitterRef$curr2;
|
|
43
|
+
return (_eventEmitterRef$curr2 = eventEmitterRef.current) === null || _eventEmitterRef$curr2 === void 0 ? void 0 : _eventEmitterRef$curr2.off(event, handlerRef.current);
|
|
44
|
+
}, []);
|
|
37
45
|
};
|
|
38
46
|
}
|
|
39
47
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventUtils.js","names":["useRef","listenForEvent","eventEmitter","event","handler","on","off","makeListenFunction","makeEmitFunction","_len","arguments","length","parameters","Array","_key","emit","makeUseListenerFunction","eventEmitterRef","handlerRef","current","_eventEmitterRef$curr","makeEventFunctions","listen","useListener"],"sources":["../../src/utils/EventUtils.ts"],"sourcesContent":["import { useRef } from 'react';\nimport EventEmitter from './EventEmitter';\n\ntype AsArray<P> = P extends unknown[] ? P : [P];\n\nexport type EventHandlerFunction<P = []> = (...parameters: AsArray<P>) => void;\nexport type EventListenerRemover = () => void;\nexport type EventListenFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n handler: EventHandlerFunction<TParameters>\n) => EventListenerRemover;\n\nexport type EventEmitFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n ...parameters: AsArray<TParameters>\n) => void;\n\nexport type EventListenerHook<TParameters = []> = (\n eventEmitter: EventEmitter | null | undefined,\n handler: EventHandlerFunction<TParameters>\n) => void;\n\n/**\n * Listen for an event\n * @param eventEmitter The event emitter to listen to\n * @param event The event to listen for\n * @param handler The handler to call when the event is emitted\n * @returns A function to stop listening for the event\n */\nexport function listenForEvent<TParameters = []>(\n eventEmitter: EventEmitter,\n event: string,\n handler: EventHandlerFunction<TParameters>\n): EventListenerRemover {\n eventEmitter.on(event, handler);\n return () => {\n eventEmitter.off(event, handler);\n };\n}\n\nexport function makeListenFunction<TParameters = []>(\n event: string\n): EventListenFunction<TParameters> {\n return (eventEmitter, handler) =>\n listenForEvent(eventEmitter, event, handler);\n}\n\nexport function makeEmitFunction<TParameters = []>(\n event: string\n): EventEmitFunction<TParameters> {\n return (eventEmitter, ...parameters) => {\n eventEmitter.emit(event, ...parameters);\n };\n}\n\nexport function makeUseListenerFunction<TParameters = []>(\n event: string\n): EventListenerHook<TParameters> {\n return (eventEmitter, handler) => {\n const eventEmitterRef = useRef<typeof eventEmitter>(null);\n const handlerRef = useRef<typeof handler>(() => false);\n\n if (\n eventEmitterRef.current != eventEmitter ||\n handlerRef.current != handler\n ) {\n eventEmitterRef.current?.off(event, handlerRef.current);\n eventEmitter?.on(event, handler);\n }\n\n eventEmitterRef.current = eventEmitter;\n handlerRef.current = handler;\n };\n}\n\n/**\n * Create listener, emitter, and hook functions for an event\n * @param event Name of the event to create functions for\n * @returns Listener, Emitter, and Hook functions for the event\n */\nexport function makeEventFunctions<TParameters = []>(\n event: string\n): {\n listen: EventListenFunction<TParameters>;\n emit: EventEmitFunction<TParameters>;\n useListener: EventListenerHook<TParameters>;\n} {\n return {\n listen: makeListenFunction<TParameters>(event),\n emit: makeEmitFunction<TParameters>(event),\n useListener: makeUseListenerFunction<TParameters>(event),\n };\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"EventUtils.js","names":["useEffect","useRef","listenForEvent","eventEmitter","event","handler","on","off","makeListenFunction","makeEmitFunction","_len","arguments","length","parameters","Array","_key","emit","makeUseListenerFunction","eventEmitterRef","handlerRef","current","_eventEmitterRef$curr","_eventEmitterRef$curr2","makeEventFunctions","listen","useListener"],"sources":["../../src/utils/EventUtils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport EventEmitter from './EventEmitter';\n\ntype AsArray<P> = P extends unknown[] ? P : [P];\n\nexport type EventHandlerFunction<P = []> = (...parameters: AsArray<P>) => void;\nexport type EventListenerRemover = () => void;\nexport type EventListenFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n handler: EventHandlerFunction<TParameters>\n) => EventListenerRemover;\n\nexport type EventEmitFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n ...parameters: AsArray<TParameters>\n) => void;\n\nexport type EventListenerHook<TParameters = []> = (\n eventEmitter: EventEmitter | null | undefined,\n handler: EventHandlerFunction<TParameters>\n) => void;\n\n/**\n * Listen for an event\n * @param eventEmitter The event emitter to listen to\n * @param event The event to listen for\n * @param handler The handler to call when the event is emitted\n * @returns A function to stop listening for the event\n */\nexport function listenForEvent<TParameters = []>(\n eventEmitter: EventEmitter,\n event: string,\n handler: EventHandlerFunction<TParameters>\n): EventListenerRemover {\n eventEmitter.on(event, handler);\n return () => {\n eventEmitter.off(event, handler);\n };\n}\n\nexport function makeListenFunction<TParameters = []>(\n event: string\n): EventListenFunction<TParameters> {\n return (eventEmitter, handler) =>\n listenForEvent(eventEmitter, event, handler);\n}\n\nexport function makeEmitFunction<TParameters = []>(\n event: string\n): EventEmitFunction<TParameters> {\n return (eventEmitter, ...parameters) => {\n eventEmitter.emit(event, ...parameters);\n };\n}\n\nexport function makeUseListenerFunction<TParameters = []>(\n event: string\n): EventListenerHook<TParameters> {\n return (eventEmitter, handler) => {\n const eventEmitterRef = useRef<typeof eventEmitter>(null);\n const handlerRef = useRef<typeof handler>(() => false);\n\n if (\n eventEmitterRef.current != eventEmitter ||\n handlerRef.current != handler\n ) {\n eventEmitterRef.current?.off(event, handlerRef.current);\n eventEmitter?.on(event, handler);\n }\n\n eventEmitterRef.current = eventEmitter;\n handlerRef.current = handler;\n\n // Cleanup on unmount\n // Mounting the listener in useEffect causes a race condition with embed-widget\n // where the event is emitted during render before the useEffect runs after render.\n useEffect(\n () => () => eventEmitterRef.current?.off(event, handlerRef.current),\n []\n );\n };\n}\n\n/**\n * Create listener, emitter, and hook functions for an event\n * @param event Name of the event to create functions for\n * @returns Listener, Emitter, and Hook functions for the event\n */\nexport function makeEventFunctions<TParameters = []>(\n event: string\n): {\n listen: EventListenFunction<TParameters>;\n emit: EventEmitFunction<TParameters>;\n useListener: EventListenerHook<TParameters>;\n} {\n return {\n listen: makeListenFunction<TParameters>(event),\n emit: makeEmitFunction<TParameters>(event),\n useListener: makeUseListenerFunction<TParameters>(event),\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAsBzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,YAA0B,EAC1BC,KAAa,EACbC,OAA0C,EACpB;EACtBF,YAAY,CAACG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;EAC/B,OAAO,MAAM;IACXF,YAAY,CAACI,GAAG,CAACH,KAAK,EAAEC,OAAO,CAAC;EAClC,CAAC;AACH;AAEA,OAAO,SAASG,kBAAkBA,CAChCJ,KAAa,EACqB;EAClC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAC3BH,cAAc,CAACC,YAAY,EAAEC,KAAK,EAAEC,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,gBAAgBA,CAC9BL,KAAa,EACmB;EAChC,OAAO,UAACD,YAAY,EAAoB;IAAA,SAAAO,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAfC,UAAU,OAAAC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAVF,UAAU,CAAAE,IAAA,QAAAJ,SAAA,CAAAI,IAAA;IAAA;IACjCZ,YAAY,CAACa,IAAI,CAACZ,KAAK,EAAE,GAAGS,UAAU,CAAC;EACzC,CAAC;AACH;AAEA,OAAO,SAASI,uBAAuBA,CACrCb,KAAa,EACmB;EAChC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAAK;IAChC,IAAMa,eAAe,GAAGjB,MAAM,CAAsB,IAAI,CAAC;IACzD,IAAMkB,UAAU,GAAGlB,MAAM,CAAiB,MAAM,KAAK,CAAC;IAEtD,IACEiB,eAAe,CAACE,OAAO,IAAIjB,YAAY,IACvCgB,UAAU,CAACC,OAAO,IAAIf,OAAO,EAC7B;MAAA,IAAAgB,qBAAA;MACA,CAAAA,qBAAA,GAAAH,eAAe,CAACE,OAAO,cAAAC,qBAAA,uBAAvBA,qBAAA,CAAyBd,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;MACvDjB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;IAClC;IAEAa,eAAe,CAACE,OAAO,GAAGjB,YAAY;IACtCgB,UAAU,CAACC,OAAO,GAAGf,OAAO;;IAE5B;IACA;IACA;IACAL,SAAS,CACP,MAAM;MAAA,IAAAsB,sBAAA;MAAA,QAAAA,sBAAA,GAAMJ,eAAe,CAACE,OAAO,cAAAE,sBAAA,uBAAvBA,sBAAA,CAAyBf,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;IAAA,GACnE,EACF,CAAC;EACH,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCnB,KAAa,EAKb;EACA,OAAO;IACLoB,MAAM,EAAEhB,kBAAkB,CAAcJ,KAAK,CAAC;IAC9CY,IAAI,EAAEP,gBAAgB,CAAcL,KAAK,CAAC;IAC1CqB,WAAW,EAAER,uBAAuB,CAAcb,KAAK;EACzD,CAAC;AACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/golden-layout",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"author": "Deephaven Data Labs LLC",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "A multi-screen javascript Layout manager",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"source": "src/index.ts",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@deephaven/components": "^1.
|
|
13
|
+
"@deephaven/components": "^1.1.0",
|
|
14
14
|
"jquery": "^3.6.0",
|
|
15
15
|
"nanoid": "^5.0.7"
|
|
16
16
|
},
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"karma-browserify": "^8.1.0",
|
|
57
57
|
"watchify": "^4.0.0"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "e32b68f95cffac001f661c1ad5b43a571807a3d4"
|
|
60
60
|
}
|