@deephaven/golden-layout 0.26.1 → 0.26.2-beta.1
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.js +3 -1
- package/dist/LayoutManager.js.map +1 -1
- package/dist/container/ItemContainer.js +3 -1
- package/dist/container/ItemContainer.js.map +1 -1
- package/dist/controls/BrowserPopout.js +3 -1
- package/dist/controls/BrowserPopout.js.map +1 -1
- package/dist/controls/DragProxy.js +3 -1
- package/dist/controls/DragProxy.js.map +1 -1
- package/dist/controls/DragSource.js +3 -1
- package/dist/controls/DragSource.js.map +1 -1
- package/dist/controls/DragSourceFromEvent.js +3 -1
- package/dist/controls/DragSourceFromEvent.js.map +1 -1
- package/dist/controls/DropTargetIndicator.js +3 -1
- package/dist/controls/DropTargetIndicator.js.map +1 -1
- package/dist/controls/Header.js +3 -1
- package/dist/controls/Header.js.map +1 -1
- package/dist/controls/HeaderButton.js +3 -1
- package/dist/controls/HeaderButton.js.map +1 -1
- package/dist/controls/Splitter.js +3 -1
- package/dist/controls/Splitter.js.map +1 -1
- package/dist/controls/Tab.js +3 -1
- package/dist/controls/Tab.js.map +1 -1
- package/dist/controls/TransitionIndicator.js +3 -1
- package/dist/controls/TransitionIndicator.js.map +1 -1
- package/dist/errors/ConfigurationError.js +3 -1
- package/dist/errors/ConfigurationError.js.map +1 -1
- package/dist/items/AbstractContentItem.js +3 -1
- package/dist/items/AbstractContentItem.js.map +1 -1
- package/dist/items/Component.js +3 -1
- package/dist/items/Component.js.map +1 -1
- package/dist/items/Root.js +3 -1
- package/dist/items/Root.js.map +1 -1
- package/dist/items/RowOrColumn.js +3 -1
- package/dist/items/RowOrColumn.js.map +1 -1
- package/dist/items/Stack.js +3 -1
- package/dist/items/Stack.js.map +1 -1
- package/dist/utils/BubblingEvent.js +3 -1
- package/dist/utils/BubblingEvent.js.map +1 -1
- package/dist/utils/DragListener.js +3 -1
- package/dist/utils/DragListener.js.map +1 -1
- package/dist/utils/EventEmitter.js +3 -1
- package/dist/utils/EventEmitter.js.map +1 -1
- package/dist/utils/EventHub.js +3 -1
- package/dist/utils/EventHub.js.map +1 -1
- package/dist/utils/ReactComponentHandler.js +3 -1
- package/dist/utils/ReactComponentHandler.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragSource.js","names":["$","DragListener","DragProxy","DragSource","constructor","element","itemConfig","layoutManager","_element","_itemConfig","_layoutManager","_dragListener","_createDragListener","on","_onDragStart","x","y","contentItem","_$normalizeContentItem","extend","dragProxy","transitionIndicator","transitionElements"],"sources":["../../src/controls/DragSource.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfigType } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Allows for any DOM item to create a component on drag\n * start tobe dragged into the Layout\n *\n * @param element\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n */\nexport default class DragSource {\n _element: JQuery<HTMLElement>;\n _itemConfig: ItemConfigType | (() => ItemConfigType);\n _layoutManager: LayoutManager;\n _dragListener: DragListener;\n\n constructor(\n element: JQuery<HTMLElement>,\n itemConfig: ItemConfigType | (() => ItemConfigType),\n layoutManager: LayoutManager\n ) {\n this._element = element;\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._dragListener = this._createDragListener();\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener() {\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._createDragListener, this);\n return this._dragListener;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n let itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n const contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n ),\n dragProxy = new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n\n this._layoutManager.transitionIndicator?.transitionElements(\n this._element,\n dragProxy.element\n );\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DragSource.js","names":["$","DragListener","DragProxy","DragSource","constructor","element","itemConfig","layoutManager","_element","_itemConfig","_layoutManager","_dragListener","_createDragListener","on","_onDragStart","x","y","contentItem","_$normalizeContentItem","extend","dragProxy","transitionIndicator","transitionElements"],"sources":["../../src/controls/DragSource.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfigType } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Allows for any DOM item to create a component on drag\n * start tobe dragged into the Layout\n *\n * @param element\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n */\nexport default class DragSource {\n _element: JQuery<HTMLElement>;\n _itemConfig: ItemConfigType | (() => ItemConfigType);\n _layoutManager: LayoutManager;\n _dragListener: DragListener;\n\n constructor(\n element: JQuery<HTMLElement>,\n itemConfig: ItemConfigType | (() => ItemConfigType),\n layoutManager: LayoutManager\n ) {\n this._element = element;\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._dragListener = this._createDragListener();\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener() {\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._createDragListener, this);\n return this._dragListener;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n let itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n const contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n ),\n dragProxy = new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n\n this._layoutManager.transitionIndicator?.transitionElements(\n this._element,\n dragProxy.element\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OACdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,UAAU,CAAC;EAM9BC,WAAW,CACTC,OAA4B,EAC5BC,UAAmD,EACnDC,aAA4B,EAC5B;IAAA;IAAA;IAAA;IAAA;IACA,IAAI,CAACC,QAAQ,GAAGH,OAAO;IACvB,IAAI,CAACI,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,cAAc,GAAGH,aAAa;IAEnC,IAAI,CAACI,aAAa,GAAG,IAAI,CAACC,mBAAmB,EAAE;EACjD;;EAEA;AACF;AACA;EACEA,mBAAmB,GAAG;IACpB,IAAI,CAACD,aAAa,GAAG,IAAIV,YAAY,CAAC,IAAI,CAACO,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACG,aAAa,CAACE,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACH,aAAa,CAACE,EAAE,CAAC,UAAU,EAAE,IAAI,CAACD,mBAAmB,EAAE,IAAI,CAAC;IACjE,OAAO,IAAI,CAACD,aAAa;EAC3B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,YAAY,CAACC,CAAS,EAAEC,CAAS,EAAE;IAAA;IACjC,IAAIV,UAAU,GAAG,IAAI,CAACG,WAAW;IACjC,IAAI,OAAOH,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,EAAE;IAC3B;IACA,IAAMW,WAAW,GAAG,IAAI,CAACP,cAAc,CAACQ,sBAAsB,CAC1DlB,CAAC,CAACmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAEb,UAAU,CAAC,CAC/B;MACDc,SAAS,GAAG,IAAIlB,SAAS,CACvBa,CAAC,EACDC,CAAC,EACD,IAAI,CAACL,aAAa,EAClB,IAAI,CAACD,cAAc,EACnBO,WAAW,EACX,IAAI,CACL;IAEH,6BAAI,CAACP,cAAc,CAACW,mBAAmB,0DAAvC,sBAAyCC,kBAAkB,CACzD,IAAI,CAACd,QAAQ,EACbY,SAAS,CAACf,OAAO,CAClB;EACH;AACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
import { DragListener } from "../utils/index.js";
|
|
4
6
|
import DragProxy from "./DragProxy.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragSourceFromEvent.js","names":["$","DragListener","DragProxy","DragSourceFromEvent","constructor","itemConfig","layoutManager","event","window","_itemConfig","_layoutManager","_createDragListener","_dragListener","destroy","_element","on","_onDragStart","_destroy","onMouseDown","_startDrag","undefined","x","y","contentItem","_$normalizeContentItem","extend"],"sources":["../../src/controls/DragSourceFromEvent.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Creates a drag item given a starting mouseevent\n * that can then be dragged into the Layout\n *\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n * @param event used to get the starting position\n */\nexport default class DragSourceFromEvent {\n private _element? = ($(window) as unknown) as JQuery<HTMLElement>; // we need something to listen for mousemoves against\n private _itemConfig?: ItemConfig | (() => ItemConfig);\n private _layoutManager?: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager,\n event: JQuery.TriggeredEvent\n ) {\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._createDragListener(event);\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener(event: JQuery.TriggeredEvent) {\n if (this._dragListener) {\n this._dragListener.destroy();\n }\n\n if (!this._element) {\n return;\n }\n\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._destroy, this);\n\n // manaully pass in an event as mousedow, that already happened to start the dragListener\n this._dragListener.onMouseDown(event);\n this._dragListener._startDrag();\n }\n\n _destroy() {\n this._dragListener = undefined;\n this._element = undefined;\n this._itemConfig = undefined;\n this._layoutManager = undefined;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n if (!this._dragListener || !this._layoutManager) {\n return;\n }\n\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n );\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DragSourceFromEvent.js","names":["$","DragListener","DragProxy","DragSourceFromEvent","constructor","itemConfig","layoutManager","event","window","_itemConfig","_layoutManager","_createDragListener","_dragListener","destroy","_element","on","_onDragStart","_destroy","onMouseDown","_startDrag","undefined","x","y","contentItem","_$normalizeContentItem","extend"],"sources":["../../src/controls/DragSourceFromEvent.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Creates a drag item given a starting mouseevent\n * that can then be dragged into the Layout\n *\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n * @param event used to get the starting position\n */\nexport default class DragSourceFromEvent {\n private _element? = ($(window) as unknown) as JQuery<HTMLElement>; // we need something to listen for mousemoves against\n private _itemConfig?: ItemConfig | (() => ItemConfig);\n private _layoutManager?: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager,\n event: JQuery.TriggeredEvent\n ) {\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._createDragListener(event);\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener(event: JQuery.TriggeredEvent) {\n if (this._dragListener) {\n this._dragListener.destroy();\n }\n\n if (!this._element) {\n return;\n }\n\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._destroy, this);\n\n // manaully pass in an event as mousedow, that already happened to start the dragListener\n this._dragListener.onMouseDown(event);\n this._dragListener._startDrag();\n }\n\n _destroy() {\n this._dragListener = undefined;\n this._element = undefined;\n this._itemConfig = undefined;\n this._layoutManager = undefined;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n if (!this._dragListener || !this._layoutManager) {\n return;\n }\n\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n );\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OACdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,mBAAmB,CAAC;EAC4B;;EAKnEC,WAAW,CACTC,UAA2C,EAC3CC,aAA4B,EAC5BC,KAA4B,EAC5B;IAAA,kCATmBP,CAAC,CAACQ,MAAM,CAAC;IAAA;IAAA;IAAA;IAU5B,IAAI,CAACC,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,cAAc,GAAGJ,aAAa;IAEnC,IAAI,CAACK,mBAAmB,CAACJ,KAAK,CAAC;EACjC;;EAEA;AACF;AACA;EACEI,mBAAmB,CAACJ,KAA4B,EAAE;IAChD,IAAI,IAAI,CAACK,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACC,OAAO,EAAE;IAC9B;IAEA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;MAClB;IACF;IAEA,IAAI,CAACF,aAAa,GAAG,IAAIX,YAAY,CAAC,IAAI,CAACa,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACF,aAAa,CAACG,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACJ,aAAa,CAACG,EAAE,CAAC,UAAU,EAAE,IAAI,CAACE,QAAQ,EAAE,IAAI,CAAC;;IAEtD;IACA,IAAI,CAACL,aAAa,CAACM,WAAW,CAACX,KAAK,CAAC;IACrC,IAAI,CAACK,aAAa,CAACO,UAAU,EAAE;EACjC;EAEAF,QAAQ,GAAG;IACT,IAAI,CAACL,aAAa,GAAGQ,SAAS;IAC9B,IAAI,CAACN,QAAQ,GAAGM,SAAS;IACzB,IAAI,CAACX,WAAW,GAAGW,SAAS;IAC5B,IAAI,CAACV,cAAc,GAAGU,SAAS;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEJ,YAAY,CAACK,CAAS,EAAEC,CAAS,EAAE;IACjC,IAAI,CAAC,IAAI,CAACV,aAAa,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MAC/C;IACF;IAEA,IAAIL,UAAU,GAAG,IAAI,CAACI,WAAW;IACjC,IAAI,OAAOJ,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,EAAE;IAC3B;IACA,IAAIkB,WAAW,GAAG,IAAI,CAACb,cAAc,CAACc,sBAAsB,CAC1DxB,CAAC,CAACyB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAEpB,UAAU,CAAC,CAC/B;IACD,IAAIH,SAAS,CACXmB,CAAC,EACDC,CAAC,EACD,IAAI,CAACV,aAAa,EAClB,IAAI,CAACF,cAAc,EACnBa,WAAW,EACX,IAAI,CACL;EACH;AACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
export default class DropTargetIndicator {
|
|
4
6
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropTargetIndicator.js","names":["$","DropTargetIndicator","constructor","_template","document","body","append","element","destroy","remove","highlightArea","area","css","left","x1","top","y1","width","Math","floor","x2","height","y2","show","hide"],"sources":["../../src/controls/DropTargetIndicator.ts"],"sourcesContent":["import $ from 'jquery';\n\nexport default class DropTargetIndicator {\n private static _template =\n '<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>';\n\n element = $(DropTargetIndicator._template);\n\n constructor() {\n $(document.body).append(this.element);\n }\n\n destroy() {\n this.element.remove();\n }\n\n highlightArea(area: { x1: number; x2: number; y1: number; y2: number }) {\n this.element\n .css({\n left: area.x1,\n top: area.y1,\n // marching ants were causing rendering artifacts with fractional pixels\n width: Math.floor(area.x2 - area.x1),\n height: Math.floor(area.y2 - area.y1),\n })\n .show();\n }\n\n hide() {\n this.element.hide();\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DropTargetIndicator.js","names":["$","DropTargetIndicator","constructor","_template","document","body","append","element","destroy","remove","highlightArea","area","css","left","x1","top","y1","width","Math","floor","x2","height","y2","show","hide"],"sources":["../../src/controls/DropTargetIndicator.ts"],"sourcesContent":["import $ from 'jquery';\n\nexport default class DropTargetIndicator {\n private static _template =\n '<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>';\n\n element = $(DropTargetIndicator._template);\n\n constructor() {\n $(document.body).append(this.element);\n }\n\n destroy() {\n this.element.remove();\n }\n\n highlightArea(area: { x1: number; x2: number; y1: number; y2: number }) {\n this.element\n .css({\n left: area.x1,\n top: area.y1,\n // marching ants were causing rendering artifacts with fractional pixels\n width: Math.floor(area.x2 - area.x1),\n height: Math.floor(area.y2 - area.y1),\n })\n .show();\n }\n\n hide() {\n this.element.hide();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAEtB,eAAe,MAAMC,mBAAmB,CAAC;EAMvCC,WAAW,GAAG;IAAA,iCAFJF,CAAC,CAACC,mBAAmB,CAACE,SAAS,CAAC;IAGxCH,CAAC,CAACI,QAAQ,CAACC,IAAI,CAAC,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAAC;EACvC;EAEAC,OAAO,GAAG;IACR,IAAI,CAACD,OAAO,CAACE,MAAM,EAAE;EACvB;EAEAC,aAAa,CAACC,IAAwD,EAAE;IACtE,IAAI,CAACJ,OAAO,CACTK,GAAG,CAAC;MACHC,IAAI,EAAEF,IAAI,CAACG,EAAE;MACbC,GAAG,EAAEJ,IAAI,CAACK,EAAE;MACZ;MACAC,KAAK,EAAEC,IAAI,CAACC,KAAK,CAACR,IAAI,CAACS,EAAE,GAAGT,IAAI,CAACG,EAAE,CAAC;MACpCO,MAAM,EAAEH,IAAI,CAACC,KAAK,CAACR,IAAI,CAACW,EAAE,GAAGX,IAAI,CAACK,EAAE;IACtC,CAAC,CAAC,CACDO,IAAI,EAAE;EACX;EAEAC,IAAI,GAAG;IACL,IAAI,CAACjB,OAAO,CAACiB,IAAI,EAAE;EACrB;AACF;AAAC,gBA7BoBvB,mBAAmB,eAEpC,wEAAwE"}
|
package/dist/controls/Header.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
import { EventEmitter } from "../utils/index.js";
|
|
4
6
|
import HeaderButton from "./HeaderButton.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","names":["$","EventEmitter","HeaderButton","Tab","Header","constructor","layoutManager","parent","_template","_nextButtonTemplate","_previousButtonTemplate","config","settings","selectionEnabled","element","addClass","on","_onHeaderClick","bind","tabsContainer","find","tabDropdownContainer","hide","tabDropdownSearch","_handleFilterInput","_handleFilterKeydown","controlsContainer","_updateTabSizes","_handleItemPickedUp","_handleItemDropped","_handleNextMouseEnter","_handleNextMouseLeave","_handlePreviousMouseEnter","_handlePreviousMouseLeave","_handleScrollRepeat","_handleNextButtonMouseDown","_handlePreviousButtonMouseDown","_handleScrollButtonMouseDown","_handleScrollButtonMouseUp","_handleScrollEvent","tabNextButton","tabPreviousButton","before","_showAdditionalTabsDropdown","_hideAdditionalTabsDropdown","_tabControlOffset","tabControlOffset","_createControls","createTab","contentItem","index","i","tabs","length","tab","push","append","undefined","after","splice","removeTab","_$destroy","Error","setActiveContentItem","isActive","setActive","activeContentItem","activeItemIndex","get","scrollIntoView","inline","emitBubblingEvent","position","previous","_header","show","_side","_setupHeaderPosition","_attachWheelListener","addEventListener","_handleWheelEvent","passive","_detachWheelListener","removeEventListener","event","target","currentTarget","HTMLElement","delta","Math","abs","deltaY","deltaX","deltaMode","WheelEvent","DOM_DELTA_PAGE","innerWidth","DOM_DELTA_LINE","scrollLeft","round","_checkScrollArrows","isDraggingTab","window","cancelAnimationFrame","rAF","off","SCROLL_RIGHT","SCROLL_LEFT","rightOffscreenChild","offsetLeft","offsetWidth","behavior","scrollWidth","leftOffscreenChild","direction","holdTimer","setTimeout","CLICK_TIMEOUT","clearTimeout","first","prop","startX","prevTimestamp","tabContainer","tabContainerRect","getBoundingClientRect","_highlightHeaderDropZone","left","right","requestAnimationFrame","timestamp","startTime","deltaTime","newDeltaX","START_SPEED","ACCELERATION","min","Infinity","_$setClosable","isClosable","closeButton","_isClosable","emit","document","remove","_getHeaderSetting","name","closeStack","popout","label","maximise","tabDropdownLabel","tabOverflowNextLabel","tabOverflowPreviousLabel","labels","tabDropdown","tabNextLabel","tabPreviousLabel","tabDropdownButton","prepend","_onPopoutClick","toggleMaximise","maximiseLabel","minimiseLabel","maximiseButton","attr","isDropdownShown","tabDropdownList","clone","appendTo","children","removeClass","val","focus","dropdownKeyIndex","eq","_updateAdditionalTabsDropdown","e","key","_onTabClick","getNextDropdownIndex","startIndex","css","shiftKey","preventDefault","title","toLowerCase","indexOf","value","contains","h","scrollHeight","y","offset","top","scrollTop","height","Boolean","showCloseIcon","popoutWholeStack","select","isOverflowing","clientWidth","join"],"sources":["../../src/controls/Header.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem, Stack } from '../items';\nimport type { StackHeaderConfig } from '../items/Stack';\nimport type LayoutManager from '../LayoutManager';\nimport { EventEmitter } from '../utils';\nimport HeaderButton from './HeaderButton';\nimport Tab from './Tab';\n\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n private static _template = [\n '<div class=\"lm_header\">',\n '<ul class=\"lm_tabs\"></ul>',\n '<ul class=\"lm_controls\"></ul>',\n '<ul class=\"lm_tabdropdown_list\">',\n '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>',\n '</ul>',\n '</div>',\n ].join('');\n\n private static _previousButtonTemplate = [\n '<ul class=\"lm_controls\">',\n '<li class=\"lm_tabpreviousbutton\"></li>',\n '</ul>',\n ].join('');\n\n private static _nextButtonTemplate = [\n '<li class=\"lm_tabnextbutton\"></li>',\n ].join('');\n\n layoutManager: LayoutManager;\n element = $(Header._template);\n\n tabsContainer: JQuery<HTMLElement>;\n tabDropdownContainer: JQuery<HTMLElement>;\n tabDropdownSearch: JQuery<HTMLElement>;\n tabDropdownList: JQuery<HTMLElement> | null = null;\n\n controlsContainer: JQuery<HTMLElement>;\n\n parent: Stack;\n\n tabs: Tab[] = [];\n activeContentItem: AbstractContentItem | null = null;\n closeButton: HeaderButton | null = null;\n\n tabDropdownButton: HeaderButton | null = null;\n tabNextButton = $(Header._nextButtonTemplate);\n tabPreviousButton = $(Header._previousButtonTemplate);\n\n // use for scroll repeat\n holdTimer: number | null = null;\n rAF: number | null = null;\n\n // mouse hold timeout to act as hold instead of click\n CLICK_TIMEOUT = 500;\n // mouse hold acceleration\n START_SPEED = 0.01;\n ACCELERATION = 0.0005;\n SCROLL_LEFT = 'left' as const;\n SCROLL_RIGHT = 'right' as const;\n\n isDraggingTab = false;\n isOverflowing = false;\n isDropdownShown = false;\n dropdownKeyIndex = 0;\n\n private _lastVisibleTabIndex = -1;\n private _tabControlOffset?: number;\n\n constructor(layoutManager: LayoutManager, parent: Stack) {\n super();\n\n this.layoutManager = layoutManager;\n\n if (this.layoutManager.config.settings?.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n\n this.tabsContainer = this.element.find('.lm_tabs');\n\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown = this._handleNextButtonMouseDown.bind(\n this\n );\n this._handlePreviousButtonMouseDown = this._handlePreviousButtonMouseDown.bind(\n this\n );\n this._handleScrollButtonMouseDown = this._handleScrollButtonMouseDown.bind(\n this\n );\n this._handleScrollButtonMouseUp = this._handleScrollButtonMouseUp.bind(\n this\n );\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n\n this._showAdditionalTabsDropdown = this._showAdditionalTabsDropdown.bind(\n this\n );\n this._hideAdditionalTabsDropdown = this._hideAdditionalTabsDropdown.bind(\n this\n );\n\n this._tabControlOffset = this.layoutManager.config.settings?.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem: AbstractContentItem, index?: number) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n\n const tab = new Tab(this, contentItem);\n\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n\n if (index === undefined) {\n index = this.tabs.length;\n }\n\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem: AbstractContentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem: AbstractContentItem) {\n var isActive;\n\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n this.tabs[this.parent.config.activeItemIndex ?? 0].element\n .get(0)\n ?.scrollIntoView({\n inline: 'nearest',\n });\n\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position?: 'top' | 'left' | 'right' | 'bottom') {\n let previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.addEventListener('wheel', this._handleWheelEvent, { passive: true });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.removeEventListener('wheel', this._handleWheelEvent);\n }\n\n _handleWheelEvent(event: WheelEvent) {\n const target = event.currentTarget;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n let delta =\n Math.abs(event.deltaY) > Math.abs(event.deltaX)\n ? event.deltaY\n : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= this.tabsContainer.innerWidth() ?? 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n this.isDraggingTab = false;\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_RIGHT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handlePreviousMouseEnter() {\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_LEFT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handleNextMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n\n _handlePreviousMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (let i = 0; i < this.tabs.length; i += 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) >\n (this.tabsContainer.get(0)?.offsetWidth ?? 0) +\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = this.tabsContainer.get(0)?.scrollWidth ?? 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) <\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction: 'right' | 'left') {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n this._handleScrollRepeat(\n direction,\n this.tabsContainer.scrollLeft() ?? 0,\n 100\n ); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n clearTimeout(this.holdTimer ?? -1);\n this.holdTimer = null;\n cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n this.tabsContainer.get(0)?.scrollWidth\n ) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) {\n const tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n\n const tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n tabContainer.scrollWidth\n ) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = window.requestAnimationFrame((timestamp: number) => {\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX =\n this.START_SPEED * deltaTime +\n 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(\n newDeltaX,\n this.tabsContainer.get(0)?.scrollWidth ?? Infinity\n );\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable: boolean) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n\n this._detachWheelListener();\n this._handleItemDropped();\n\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting<\n N extends 'show' | 'popout' | 'maximise' | 'close' | 'minimise'\n >(name: N): StackHeaderConfig[N] {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack,\n popout,\n label,\n maximise,\n tabDropdownLabel,\n tabOverflowNextLabel,\n tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel = this.layoutManager.config.labels\n .tabPreviousLabel;\n\n this.tabDropdownButton = new HeaderButton(\n this,\n tabDropdownLabel,\n 'lm_tabdropdown',\n this._showAdditionalTabsDropdown\n );\n this.tabDropdownButton.element.hide();\n\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n const maximiseLabel = this._getHeaderSetting('maximise');\n const minimiseLabel = this._getHeaderSetting('minimise');\n const maximiseButton = new HeaderButton(\n this,\n maximiseLabel,\n 'lm_maximise',\n maximise\n );\n\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel ?? '');\n });\n\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel ?? '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer\n .clone(true)\n .appendTo(this.tabDropdownContainer)\n .children()\n .removeClass('lm_active');\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e: JQuery.TriggeredEvent) {\n if (this.dropdownKeyIndex === -1) return;\n\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n\n function getNextDropdownIndex(\n startIndex: number,\n delta: number,\n tabDropdownList: JQuery<HTMLElement> | null\n ) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i =\n (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && e.shiftKey === false)) {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n 1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n -1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event: JQuery.TriggeredEvent) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n if (\n (this.tabs[i].contentItem.config.title\n ?.toLowerCase()\n .indexOf(event.target.value.toLowerCase()) ?? -1) !== -1\n ) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event?: JQuery.UIEventBase) {\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n\n if (event && this.tabDropdownContainer.get(0)?.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (\n event &&\n this.tabDropdownButton?.element.get(0) === event.target\n ) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down doesn't overflow screen, and instead becomes scrollable.\n */\n _updateAdditionalTabsDropdown() {\n this.tabDropdownContainer.css('max-height', '');\n const h = this.tabDropdownContainer[0].scrollHeight;\n if (h === 0) return; // height can be zero if called on a hidden or empty list\n\n const y =\n (this.tabDropdownContainer.offset()?.top ?? 0) -\n ($(window).scrollTop() ?? 0);\n\n // set max height of tab dropdown to be less then the viewport height - dropdown offset\n if (y + h > ($(window).height() ?? 0)) {\n this.tabDropdownContainer.css(\n 'max-height',\n ($(window).height() ?? 0) - y - 10\n ); // 10 being a padding value\n }\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(\n this.parent.config.isClosable &&\n this.layoutManager.config.settings.showCloseIcon\n );\n }\n\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n this.activeContentItem?.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event: JQuery.UIEventBase) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n\n const tabsContainer = this.tabsContainer.get(0);\n\n if (!tabsContainer) {\n return;\n }\n\n if (\n !this.isOverflowing &&\n tabsContainer.scrollWidth > tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (\n this.isOverflowing &&\n tabsContainer.scrollWidth <= tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","names":["$","EventEmitter","HeaderButton","Tab","Header","constructor","layoutManager","parent","_template","_nextButtonTemplate","_previousButtonTemplate","config","settings","selectionEnabled","element","addClass","on","_onHeaderClick","bind","tabsContainer","find","tabDropdownContainer","hide","tabDropdownSearch","_handleFilterInput","_handleFilterKeydown","controlsContainer","_updateTabSizes","_handleItemPickedUp","_handleItemDropped","_handleNextMouseEnter","_handleNextMouseLeave","_handlePreviousMouseEnter","_handlePreviousMouseLeave","_handleScrollRepeat","_handleNextButtonMouseDown","_handlePreviousButtonMouseDown","_handleScrollButtonMouseDown","_handleScrollButtonMouseUp","_handleScrollEvent","tabNextButton","tabPreviousButton","before","_showAdditionalTabsDropdown","_hideAdditionalTabsDropdown","_tabControlOffset","tabControlOffset","_createControls","createTab","contentItem","index","i","tabs","length","tab","push","append","undefined","after","splice","removeTab","_$destroy","Error","setActiveContentItem","isActive","setActive","activeContentItem","activeItemIndex","get","scrollIntoView","inline","emitBubblingEvent","position","previous","_header","show","_side","_setupHeaderPosition","_attachWheelListener","addEventListener","_handleWheelEvent","passive","_detachWheelListener","removeEventListener","event","target","currentTarget","HTMLElement","delta","Math","abs","deltaY","deltaX","deltaMode","WheelEvent","DOM_DELTA_PAGE","innerWidth","DOM_DELTA_LINE","scrollLeft","round","_checkScrollArrows","isDraggingTab","window","cancelAnimationFrame","rAF","off","SCROLL_RIGHT","SCROLL_LEFT","rightOffscreenChild","offsetLeft","offsetWidth","behavior","scrollWidth","leftOffscreenChild","direction","holdTimer","setTimeout","CLICK_TIMEOUT","clearTimeout","first","prop","startX","prevTimestamp","tabContainer","tabContainerRect","getBoundingClientRect","_highlightHeaderDropZone","left","right","requestAnimationFrame","timestamp","startTime","deltaTime","newDeltaX","START_SPEED","ACCELERATION","min","Infinity","_$setClosable","isClosable","closeButton","_isClosable","emit","document","remove","_getHeaderSetting","name","closeStack","popout","label","maximise","tabDropdownLabel","tabOverflowNextLabel","tabOverflowPreviousLabel","labels","tabDropdown","tabNextLabel","tabPreviousLabel","tabDropdownButton","prepend","_onPopoutClick","toggleMaximise","maximiseLabel","minimiseLabel","maximiseButton","attr","isDropdownShown","tabDropdownList","clone","appendTo","children","removeClass","val","focus","dropdownKeyIndex","eq","_updateAdditionalTabsDropdown","e","key","_onTabClick","getNextDropdownIndex","startIndex","css","shiftKey","preventDefault","title","toLowerCase","indexOf","value","contains","h","scrollHeight","y","offset","top","scrollTop","height","Boolean","showCloseIcon","popoutWholeStack","select","isOverflowing","clientWidth","join"],"sources":["../../src/controls/Header.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem, Stack } from '../items';\nimport type { StackHeaderConfig } from '../items/Stack';\nimport type LayoutManager from '../LayoutManager';\nimport { EventEmitter } from '../utils';\nimport HeaderButton from './HeaderButton';\nimport Tab from './Tab';\n\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n private static _template = [\n '<div class=\"lm_header\">',\n '<ul class=\"lm_tabs\"></ul>',\n '<ul class=\"lm_controls\"></ul>',\n '<ul class=\"lm_tabdropdown_list\">',\n '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>',\n '</ul>',\n '</div>',\n ].join('');\n\n private static _previousButtonTemplate = [\n '<ul class=\"lm_controls\">',\n '<li class=\"lm_tabpreviousbutton\"></li>',\n '</ul>',\n ].join('');\n\n private static _nextButtonTemplate = [\n '<li class=\"lm_tabnextbutton\"></li>',\n ].join('');\n\n layoutManager: LayoutManager;\n element = $(Header._template);\n\n tabsContainer: JQuery<HTMLElement>;\n tabDropdownContainer: JQuery<HTMLElement>;\n tabDropdownSearch: JQuery<HTMLElement>;\n tabDropdownList: JQuery<HTMLElement> | null = null;\n\n controlsContainer: JQuery<HTMLElement>;\n\n parent: Stack;\n\n tabs: Tab[] = [];\n activeContentItem: AbstractContentItem | null = null;\n closeButton: HeaderButton | null = null;\n\n tabDropdownButton: HeaderButton | null = null;\n tabNextButton = $(Header._nextButtonTemplate);\n tabPreviousButton = $(Header._previousButtonTemplate);\n\n // use for scroll repeat\n holdTimer: number | null = null;\n rAF: number | null = null;\n\n // mouse hold timeout to act as hold instead of click\n CLICK_TIMEOUT = 500;\n // mouse hold acceleration\n START_SPEED = 0.01;\n ACCELERATION = 0.0005;\n SCROLL_LEFT = 'left' as const;\n SCROLL_RIGHT = 'right' as const;\n\n isDraggingTab = false;\n isOverflowing = false;\n isDropdownShown = false;\n dropdownKeyIndex = 0;\n\n private _lastVisibleTabIndex = -1;\n private _tabControlOffset?: number;\n\n constructor(layoutManager: LayoutManager, parent: Stack) {\n super();\n\n this.layoutManager = layoutManager;\n\n if (this.layoutManager.config.settings?.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n\n this.tabsContainer = this.element.find('.lm_tabs');\n\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown = this._handleNextButtonMouseDown.bind(\n this\n );\n this._handlePreviousButtonMouseDown = this._handlePreviousButtonMouseDown.bind(\n this\n );\n this._handleScrollButtonMouseDown = this._handleScrollButtonMouseDown.bind(\n this\n );\n this._handleScrollButtonMouseUp = this._handleScrollButtonMouseUp.bind(\n this\n );\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n\n this._showAdditionalTabsDropdown = this._showAdditionalTabsDropdown.bind(\n this\n );\n this._hideAdditionalTabsDropdown = this._hideAdditionalTabsDropdown.bind(\n this\n );\n\n this._tabControlOffset = this.layoutManager.config.settings?.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem: AbstractContentItem, index?: number) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n\n const tab = new Tab(this, contentItem);\n\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n\n if (index === undefined) {\n index = this.tabs.length;\n }\n\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem: AbstractContentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem: AbstractContentItem) {\n var isActive;\n\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n this.tabs[this.parent.config.activeItemIndex ?? 0].element\n .get(0)\n ?.scrollIntoView({\n inline: 'nearest',\n });\n\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position?: 'top' | 'left' | 'right' | 'bottom') {\n let previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.addEventListener('wheel', this._handleWheelEvent, { passive: true });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.removeEventListener('wheel', this._handleWheelEvent);\n }\n\n _handleWheelEvent(event: WheelEvent) {\n const target = event.currentTarget;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n let delta =\n Math.abs(event.deltaY) > Math.abs(event.deltaX)\n ? event.deltaY\n : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= this.tabsContainer.innerWidth() ?? 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n this.isDraggingTab = false;\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_RIGHT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handlePreviousMouseEnter() {\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_LEFT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handleNextMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n\n _handlePreviousMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (let i = 0; i < this.tabs.length; i += 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) >\n (this.tabsContainer.get(0)?.offsetWidth ?? 0) +\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = this.tabsContainer.get(0)?.scrollWidth ?? 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) <\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction: 'right' | 'left') {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n this._handleScrollRepeat(\n direction,\n this.tabsContainer.scrollLeft() ?? 0,\n 100\n ); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n clearTimeout(this.holdTimer ?? -1);\n this.holdTimer = null;\n cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n this.tabsContainer.get(0)?.scrollWidth\n ) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) {\n const tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n\n const tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n tabContainer.scrollWidth\n ) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = window.requestAnimationFrame((timestamp: number) => {\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX =\n this.START_SPEED * deltaTime +\n 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(\n newDeltaX,\n this.tabsContainer.get(0)?.scrollWidth ?? Infinity\n );\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable: boolean) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n\n this._detachWheelListener();\n this._handleItemDropped();\n\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting<\n N extends 'show' | 'popout' | 'maximise' | 'close' | 'minimise'\n >(name: N): StackHeaderConfig[N] {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack,\n popout,\n label,\n maximise,\n tabDropdownLabel,\n tabOverflowNextLabel,\n tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel = this.layoutManager.config.labels\n .tabPreviousLabel;\n\n this.tabDropdownButton = new HeaderButton(\n this,\n tabDropdownLabel,\n 'lm_tabdropdown',\n this._showAdditionalTabsDropdown\n );\n this.tabDropdownButton.element.hide();\n\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n const maximiseLabel = this._getHeaderSetting('maximise');\n const minimiseLabel = this._getHeaderSetting('minimise');\n const maximiseButton = new HeaderButton(\n this,\n maximiseLabel,\n 'lm_maximise',\n maximise\n );\n\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel ?? '');\n });\n\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel ?? '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer\n .clone(true)\n .appendTo(this.tabDropdownContainer)\n .children()\n .removeClass('lm_active');\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e: JQuery.TriggeredEvent) {\n if (this.dropdownKeyIndex === -1) return;\n\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n\n function getNextDropdownIndex(\n startIndex: number,\n delta: number,\n tabDropdownList: JQuery<HTMLElement> | null\n ) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i =\n (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && e.shiftKey === false)) {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n 1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n -1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event: JQuery.TriggeredEvent) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n if (\n (this.tabs[i].contentItem.config.title\n ?.toLowerCase()\n .indexOf(event.target.value.toLowerCase()) ?? -1) !== -1\n ) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event?: JQuery.UIEventBase) {\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n\n if (event && this.tabDropdownContainer.get(0)?.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (\n event &&\n this.tabDropdownButton?.element.get(0) === event.target\n ) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down doesn't overflow screen, and instead becomes scrollable.\n */\n _updateAdditionalTabsDropdown() {\n this.tabDropdownContainer.css('max-height', '');\n const h = this.tabDropdownContainer[0].scrollHeight;\n if (h === 0) return; // height can be zero if called on a hidden or empty list\n\n const y =\n (this.tabDropdownContainer.offset()?.top ?? 0) -\n ($(window).scrollTop() ?? 0);\n\n // set max height of tab dropdown to be less then the viewport height - dropdown offset\n if (y + h > ($(window).height() ?? 0)) {\n this.tabDropdownContainer.css(\n 'max-height',\n ($(window).height() ?? 0) - y - 10\n ); // 10 being a padding value\n }\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(\n this.parent.config.isClosable &&\n this.layoutManager.config.settings.showCloseIcon\n );\n }\n\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n this.activeContentItem?.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event: JQuery.UIEventBase) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n\n const tabsContainer = this.tabsContainer.get(0);\n\n if (!tabsContainer) {\n return;\n }\n\n if (\n !this.isOverflowing &&\n tabsContainer.scrollWidth > tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (\n this.isOverflowing &&\n tabsContainer.scrollWidth <= tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
export default class HeaderButton {
|
|
4
6
|
constructor(header, label, cssClass, action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAGtB,eAAe,MAAMC,YAAY,CAAC;EAOhCC,WAAW,CACTC,MAAc,EACdC,KAAyB,EACzBC,QAAgB,EAChBC,MAA0B,EAC1B;IAAA;IAAA;IAAA;IACA,IAAI,CAACC,OAAO,GAAGJ,MAAM;IACrB,IAAI,CAACK,OAAO,GAAGR,CAAC,CACd,aAAa,GAAGK,QAAQ,GAAG,WAAW,GAAGD,KAAK,GAAG,SAAS,CAC3D;IACD,IAAI,CAACG,OAAO,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACE,OAAO,CAACC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,OAAO,CAAC;IACtC,IAAI,CAACJ,OAAO,CAACK,iBAAiB,CAACC,MAAM,CAAC,IAAI,CAACL,OAAO,CAAC;EACrD;EAEAE,SAAS,GAAG;IACV,IAAI,CAACF,OAAO,CAACM,GAAG,EAAE;IAClB,IAAI,CAACN,OAAO,CAACO,MAAM,EAAE;EACvB;AACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
import { DragListener } from "../utils/index.js";
|
|
4
6
|
export default class Splitter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_$destroy","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_$destroy","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,YAAY;AAErB,eAAe,MAAMC,QAAQ,CAAC;EAW5BC,WAAW,CAACC,UAAmB,EAAEC,IAAY,EAAEC,QAAgB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAC/D,IAAI,CAACC,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,KAAK,GAAGH,IAAI;IACjB,IAAI,CAACI,SAAS,GAAGH,QAAQ,GAAGD,IAAI,GAAGA,IAAI,GAAGC,QAAQ;IAElD,IAAI,CAACI,OAAO,GAAG,IAAI,CAACC,cAAc,EAAE;IACpC,IAAI,CAACC,aAAa,GAAG,IAAIX,YAAY,CAAC,IAAI,CAACS,OAAO,CAAC;EACrD;EAEAG,EAAE,CAACC,KAAa,EAAEC,QAAkB,EAAEC,OAAiB,EAAE;IAAA;IACvD,2BAAI,CAACJ,aAAa,wDAAlB,oBAAoBC,EAAE,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAClD;EAEAC,SAAS,GAAG;IAAA;IACV,4BAAI,CAACL,aAAa,yDAAlB,qBAAoBM,OAAO,EAAE;IAC7B,IAAI,CAACN,aAAa,GAAG,IAAI;IACzB,IAAI,CAACF,OAAO,CAACS,MAAM,EAAE;EACvB;EAEAR,cAAc,GAAG;IACf,IAAIS,UAAU,GAAGpB,CAAC,CAAC,oCAAoC,CAAC;IACxD,IAAIU,OAAO,GAAGV,CAAC,CAAC,iCAAiC,CAAC;IAClDU,OAAO,CAACW,MAAM,CAACD,UAAU,CAAC;IAE1B,IAAIE,gBAAgB,GAAG,IAAI,CAACb,SAAS,GAAG,IAAI,CAACD,KAAK;IAClD,IAAIe,eAAe,GAAGD,gBAAgB,GAAG,CAAC;IAE1C,IAAI,IAAI,CAACf,WAAW,EAAE;MACpBa,UAAU,CAACI,GAAG,CAAC,KAAK,EAAE,CAACD,eAAe,CAAC;MACvCH,UAAU,CAACI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAChB,KAAK,GAAGc,gBAAgB,CAAC;MACvDZ,OAAO,CAACe,QAAQ,CAAC,aAAa,CAAC;MAC/Bf,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC/B,CAAC,MAAM;MACLY,UAAU,CAACI,GAAG,CAAC,MAAM,EAAE,CAACD,eAAe,CAAC;MACxCH,UAAU,CAACI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAChB,KAAK,GAAGc,gBAAgB,CAAC;MACtDZ,OAAO,CAACe,QAAQ,CAAC,eAAe,CAAC;MACjCf,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC9B;IAEA,OAAOE,OAAO;EAChB;AACF"}
|
package/dist/controls/Tab.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
import { isComponent } from "../items/index.js";
|
|
4
6
|
import { DragListener } from "../utils/index.js";
|
package/dist/controls/Tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","names":["$","isComponent","DragListener","DragProxy","Tab","constructor","header","contentItem","_template","titleElement","element","find","closeElement","config","isClosable","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClick","bind","_onCloseClick","_onTabContentFocusIn","_onTabContentFocusOut","_onCloseMousedown","remove","tab","emit","container","_contentElement","addEventListener","html","setActive","isActive","addClass","removeClass","_$destroy","off","removeEventListener","undefined","x","y","parent","isMaximised","toggleMaximise","contains","document","activeElement","focus","event","button","activeContentItem","getActiveContentItem","setActiveContentItem","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild","join"],"sources":["../../src/controls/Tab.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem } from '../items';\nimport { isComponent } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\nimport type Header from './Header';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n /**\n * The tab's html template\n */\n private static _template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\"></div>',\n '</li>',\n ].join('');\n\n header: Header;\n contentItem: AbstractContentItem;\n element = $(Tab._template);\n titleElement: JQuery<HTMLElement>;\n closeElement: JQuery<HTMLElement>;\n isActive = false;\n\n private _layoutManager: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(header: Header, contentItem: AbstractContentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings?.reorderEnabled &&\n contentItem.config.reorderEnabled\n ) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin', this._onTabContentFocusIn)\n .on('focusout', this._onTabContentFocusOut);\n this.contentItem.container._contentElement[0].addEventListener(\n 'click',\n this._onTabContentFocusIn,\n true // capture, so it occurs before onClick from react events\n );\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle(title = '') {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.html(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive: boolean) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n this.contentItem.container._contentElement[0].removeEventListener(\n 'click',\n this._onTabContentFocusIn,\n true\n );\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x: number, y: number) {\n if (this.contentItem.parent?.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n\n if (!this._dragListener) {\n return;\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n }\n\n /**\n * Callback when the contentItem is focused in\n *\n * Why [0].focus():\n * https://github.com/jquery/jquery/commit/fe5f04de8fde9c69ed48283b99280aa6df3795c7\n * From jquery source: \"If this is an inner synthetic event for an event with a bubbling surrogate (focus or blur),\n * assume that the surrogate already propagated from triggering the native event and prevent that from happening\n * again here. This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the bubbling surrogate\n * propagates *after* the non-bubbling base), but that seems less bad than duplication.\"\n */\n _onTabContentFocusIn() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // jquery 3.4.0 and later, jquery method optimizes out the focus from\n // happening in proper order. Can use HTMLElement.focus() to avoid.\n this.contentItem.container._contentElement[0].focus(); // [0] needed to use dom focus, not jquery method\n }\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event?: JQuery.TriggeredEvent) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (\n this.contentItem !== activeContentItem &&\n isComponent(this.contentItem)\n ) {\n this.header.parent.setActiveContentItem(this.contentItem);\n this.contentItem.container.emit('tabClicked');\n } else if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n\n // still emit tab clicked event, so panels can also\n // do it's own focus handling if desired\n this.contentItem.container.emit('tabClicked');\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0)?.scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event: JQuery.TriggeredEvent) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event: Event) {\n event.stopPropagation();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tab.js","names":["$","isComponent","DragListener","DragProxy","Tab","constructor","header","contentItem","_template","titleElement","element","find","closeElement","config","isClosable","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClick","bind","_onCloseClick","_onTabContentFocusIn","_onTabContentFocusOut","_onCloseMousedown","remove","tab","emit","container","_contentElement","addEventListener","html","setActive","isActive","addClass","removeClass","_$destroy","off","removeEventListener","undefined","x","y","parent","isMaximised","toggleMaximise","contains","document","activeElement","focus","event","button","activeContentItem","getActiveContentItem","setActiveContentItem","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild","join"],"sources":["../../src/controls/Tab.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem } from '../items';\nimport { isComponent } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\nimport type Header from './Header';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n /**\n * The tab's html template\n */\n private static _template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\"></div>',\n '</li>',\n ].join('');\n\n header: Header;\n contentItem: AbstractContentItem;\n element = $(Tab._template);\n titleElement: JQuery<HTMLElement>;\n closeElement: JQuery<HTMLElement>;\n isActive = false;\n\n private _layoutManager: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(header: Header, contentItem: AbstractContentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings?.reorderEnabled &&\n contentItem.config.reorderEnabled\n ) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin', this._onTabContentFocusIn)\n .on('focusout', this._onTabContentFocusOut);\n this.contentItem.container._contentElement[0].addEventListener(\n 'click',\n this._onTabContentFocusIn,\n true // capture, so it occurs before onClick from react events\n );\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle(title = '') {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.html(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive: boolean) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n this.contentItem.container._contentElement[0].removeEventListener(\n 'click',\n this._onTabContentFocusIn,\n true\n );\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x: number, y: number) {\n if (this.contentItem.parent?.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n\n if (!this._dragListener) {\n return;\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n }\n\n /**\n * Callback when the contentItem is focused in\n *\n * Why [0].focus():\n * https://github.com/jquery/jquery/commit/fe5f04de8fde9c69ed48283b99280aa6df3795c7\n * From jquery source: \"If this is an inner synthetic event for an event with a bubbling surrogate (focus or blur),\n * assume that the surrogate already propagated from triggering the native event and prevent that from happening\n * again here. This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the bubbling surrogate\n * propagates *after* the non-bubbling base), but that seems less bad than duplication.\"\n */\n _onTabContentFocusIn() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // jquery 3.4.0 and later, jquery method optimizes out the focus from\n // happening in proper order. Can use HTMLElement.focus() to avoid.\n this.contentItem.container._contentElement[0].focus(); // [0] needed to use dom focus, not jquery method\n }\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event?: JQuery.TriggeredEvent) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (\n this.contentItem !== activeContentItem &&\n isComponent(this.contentItem)\n ) {\n this.header.parent.setActiveContentItem(this.contentItem);\n this.contentItem.container.emit('tabClicked');\n } else if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n\n // still emit tab clicked event, so panels can also\n // do it's own focus handling if desired\n this.contentItem.container.emit('tabClicked');\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0)?.scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event: JQuery.TriggeredEvent) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event: Event) {\n event.stopPropagation();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import $ from 'jquery';
|
|
3
5
|
import { animFrame } from "../utils/index.js";
|
|
4
6
|
export default class TransitionIndicator {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransitionIndicator.js","names":["$","animFrame","TransitionIndicator","constructor","document","body","append","_element","destroy","remove","transitionElements","fromElement","toElement","_nextAnimationFrame","_toElement","_animationStartTime","toDimensions","_measure","animationProgress","Date","now","_totalAnimationDuration","currentFrameStyles","hide","opacity","keys","Object","_fromDimensions","cssProperty","css","bind","element","offset","left","top","width","outerWidth","height","outerHeight"],"sources":["../../src/controls/TransitionIndicator.ts"],"sourcesContent":["import $ from 'jquery';\nimport { animFrame } from '../utils';\n\nexport type TransitionDimensions = {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n opacity?: number;\n};\n\nexport default class TransitionIndicator {\n private _element = $('<div class=\"lm_transition_indicator\"></div>');\n private _toElement: JQuery<HTMLElement> | null = null;\n\n private _fromDimensions: TransitionDimensions = {};\n private _totalAnimationDuration = 200;\n private _animationStartTime: number | null = null;\n\n constructor() {\n $(document.body).append(this._element);\n }\n\n destroy() {\n this._element.remove();\n }\n\n transitionElements(\n fromElement: JQuery<HTMLElement>,\n toElement: JQuery<HTMLElement>\n ) {\n /**\n * TODO - This is not quite as cool as expected. Review.\n */\n return;\n // this._toElement = toElement;\n // this._animationStartTime = utils.now();\n // this._fromDimensions = this._measure(fromElement);\n // this._fromDimensions.opacity = 0.8;\n // this._element.show().css(this._fromDimensions);\n // utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));\n }\n\n _nextAnimationFrame() {\n if (!this._toElement || this._animationStartTime == null) {\n return;\n }\n\n const toDimensions: TransitionDimensions = this._measure(this._toElement);\n const animationProgress =\n (Date.now() - this._animationStartTime) / this._totalAnimationDuration;\n const currentFrameStyles: TransitionDimensions = {};\n\n if (animationProgress >= 1) {\n this._element.hide();\n return;\n }\n\n toDimensions.opacity = 0;\n\n const keys = Object.keys(this._fromDimensions) as [\n keyof TransitionDimensions\n ];\n\n for (let cssProperty of keys) {\n currentFrameStyles[cssProperty] =\n (this._fromDimensions[cssProperty] ?? 0) +\n ((toDimensions[cssProperty] ?? 0) -\n (this._fromDimensions[cssProperty] ?? 0)) *\n animationProgress;\n }\n\n this._element.css(currentFrameStyles);\n animFrame(this._nextAnimationFrame.bind(this));\n }\n\n _measure(element: JQuery<HTMLElement>) {\n const offset = element.offset();\n\n return {\n left: offset?.left,\n top: offset?.top,\n width: element.outerWidth(),\n height: element.outerHeight(),\n };\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransitionIndicator.js","names":["$","animFrame","TransitionIndicator","constructor","document","body","append","_element","destroy","remove","transitionElements","fromElement","toElement","_nextAnimationFrame","_toElement","_animationStartTime","toDimensions","_measure","animationProgress","Date","now","_totalAnimationDuration","currentFrameStyles","hide","opacity","keys","Object","_fromDimensions","cssProperty","css","bind","element","offset","left","top","width","outerWidth","height","outerHeight"],"sources":["../../src/controls/TransitionIndicator.ts"],"sourcesContent":["import $ from 'jquery';\nimport { animFrame } from '../utils';\n\nexport type TransitionDimensions = {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n opacity?: number;\n};\n\nexport default class TransitionIndicator {\n private _element = $('<div class=\"lm_transition_indicator\"></div>');\n private _toElement: JQuery<HTMLElement> | null = null;\n\n private _fromDimensions: TransitionDimensions = {};\n private _totalAnimationDuration = 200;\n private _animationStartTime: number | null = null;\n\n constructor() {\n $(document.body).append(this._element);\n }\n\n destroy() {\n this._element.remove();\n }\n\n transitionElements(\n fromElement: JQuery<HTMLElement>,\n toElement: JQuery<HTMLElement>\n ) {\n /**\n * TODO - This is not quite as cool as expected. Review.\n */\n return;\n // this._toElement = toElement;\n // this._animationStartTime = utils.now();\n // this._fromDimensions = this._measure(fromElement);\n // this._fromDimensions.opacity = 0.8;\n // this._element.show().css(this._fromDimensions);\n // utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));\n }\n\n _nextAnimationFrame() {\n if (!this._toElement || this._animationStartTime == null) {\n return;\n }\n\n const toDimensions: TransitionDimensions = this._measure(this._toElement);\n const animationProgress =\n (Date.now() - this._animationStartTime) / this._totalAnimationDuration;\n const currentFrameStyles: TransitionDimensions = {};\n\n if (animationProgress >= 1) {\n this._element.hide();\n return;\n }\n\n toDimensions.opacity = 0;\n\n const keys = Object.keys(this._fromDimensions) as [\n keyof TransitionDimensions\n ];\n\n for (let cssProperty of keys) {\n currentFrameStyles[cssProperty] =\n (this._fromDimensions[cssProperty] ?? 0) +\n ((toDimensions[cssProperty] ?? 0) -\n (this._fromDimensions[cssProperty] ?? 0)) *\n animationProgress;\n }\n\n this._element.css(currentFrameStyles);\n animFrame(this._nextAnimationFrame.bind(this));\n }\n\n _measure(element: JQuery<HTMLElement>) {\n const offset = element.offset();\n\n return {\n left: offset?.left,\n top: offset?.top,\n width: element.outerWidth(),\n height: element.outerHeight(),\n };\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,SAAS;AAUlB,eAAe,MAAMC,mBAAmB,CAAC;EAQvCC,WAAW,GAAG;IAAA,kCAPKH,CAAC,CAAC,6CAA6C,CAAC;IAAA,oCAClB,IAAI;IAAA,yCAEL,CAAC,CAAC;IAAA,iDAChB,GAAG;IAAA,6CACQ,IAAI;IAG/CA,CAAC,CAACI,QAAQ,CAACC,IAAI,CAAC,CAACC,MAAM,CAAC,IAAI,CAACC,QAAQ,CAAC;EACxC;EAEAC,OAAO,GAAG;IACR,IAAI,CAACD,QAAQ,CAACE,MAAM,EAAE;EACxB;EAEAC,kBAAkB,CAChBC,WAAgC,EAChCC,SAA8B,EAC9B;IACA;AACJ;AACA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEAC,mBAAmB,GAAG;IACpB,IAAI,CAAC,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,mBAAmB,IAAI,IAAI,EAAE;MACxD;IACF;IAEA,IAAMC,YAAkC,GAAG,IAAI,CAACC,QAAQ,CAAC,IAAI,CAACH,UAAU,CAAC;IACzE,IAAMI,iBAAiB,GACrB,CAACC,IAAI,CAACC,GAAG,EAAE,GAAG,IAAI,CAACL,mBAAmB,IAAI,IAAI,CAACM,uBAAuB;IACxE,IAAMC,kBAAwC,GAAG,CAAC,CAAC;IAEnD,IAAIJ,iBAAiB,IAAI,CAAC,EAAE;MAC1B,IAAI,CAACX,QAAQ,CAACgB,IAAI,EAAE;MACpB;IACF;IAEAP,YAAY,CAACQ,OAAO,GAAG,CAAC;IAExB,IAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAAC,IAAI,CAACE,eAAe,CAE5C;IAED,KAAK,IAAIC,WAAW,IAAIH,IAAI,EAAE;MAAA;MAC5BH,kBAAkB,CAACM,WAAW,CAAC,GAC7B,0BAAC,IAAI,CAACD,eAAe,CAACC,WAAW,CAAC,yEAAI,CAAC,IACvC,CAAC,0BAACZ,YAAY,CAACY,WAAW,CAAC,yEAAI,CAAC,+BAC7B,IAAI,CAACD,eAAe,CAACC,WAAW,CAAC,2EAAI,CAAC,CAAC,IACxCV,iBAAiB;IACvB;IAEA,IAAI,CAACX,QAAQ,CAACsB,GAAG,CAACP,kBAAkB,CAAC;IACrCrB,SAAS,CAAC,IAAI,CAACY,mBAAmB,CAACiB,IAAI,CAAC,IAAI,CAAC,CAAC;EAChD;EAEAb,QAAQ,CAACc,OAA4B,EAAE;IACrC,IAAMC,MAAM,GAAGD,OAAO,CAACC,MAAM,EAAE;IAE/B,OAAO;MACLC,IAAI,EAAED,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,IAAI;MAClBC,GAAG,EAAEF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,GAAG;MAChBC,KAAK,EAAEJ,OAAO,CAACK,UAAU,EAAE;MAC3BC,MAAM,EAAEN,OAAO,CAACO,WAAW;IAC7B,CAAC;EACH;AACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
class ConfigurationError extends Error {
|
|
3
5
|
constructor(message, node) {
|
|
4
6
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigurationError.js","names":["ConfigurationError","Error","constructor","message","node","name"],"sources":["../../src/errors/ConfigurationError.ts"],"sourcesContent":["class ConfigurationError extends Error {\n node: unknown;\n\n constructor(message: string, node?: unknown) {\n super();\n\n this.name = 'Configuration Error';\n this.message = message;\n this.node = node;\n }\n}\n\nexport default ConfigurationError;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigurationError.js","names":["ConfigurationError","Error","constructor","message","node","name"],"sources":["../../src/errors/ConfigurationError.ts"],"sourcesContent":["class ConfigurationError extends Error {\n node: unknown;\n\n constructor(message: string, node?: unknown) {\n super();\n\n this.name = 'Configuration Error';\n this.message = message;\n this.node = node;\n }\n}\n\nexport default ConfigurationError;\n"],"mappings":";;;AAAA,MAAMA,kBAAkB,SAASC,KAAK,CAAC;EAGrCC,WAAW,CAACC,OAAe,EAAEC,IAAc,EAAE;IAC3C,KAAK,EAAE;IAAC;IAER,IAAI,CAACC,IAAI,GAAG,qBAAqB;IACjC,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;AACF;AAEA,eAAeJ,kBAAkB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import { animFrame, BubblingEvent, EventEmitter } from "../utils/index.js";
|
|
3
5
|
import { ConfigurationError } from "../errors/index.js";
|
|
4
6
|
import { itemDefaultConfig } from "../config/index.js";
|