@k8slens/extensions 5.5.2 → 5.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,13 @@ import type { IMetrics, IMetricsReqParams } from "./metrics.api";
6
6
  import { KubeObject } from "../kube-object";
7
7
  import { KubeApi } from "../kube-api";
8
8
  export declare class ClusterApi extends KubeApi<Cluster> {
9
+ /**
10
+ * @deprecated This field is legacy and never used.
11
+ */
9
12
  static kind: string;
13
+ /**
14
+ * @deprecated This field is legacy and never used.
15
+ */
10
16
  static namespaced: boolean;
11
17
  }
12
18
  export declare function getMetricsByNodeNames(nodeNames: string[], params?: IMetricsReqParams): Promise<IClusterMetrics>;
@@ -67,6 +73,7 @@ export interface Cluster {
67
73
  export declare class Cluster extends KubeObject {
68
74
  static kind: string;
69
75
  static apiBase: string;
76
+ static namespaced: boolean;
70
77
  getStatus(): ClusterStatus;
71
78
  }
72
79
  /**
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) OpenLens Authors. All rights reserved.
3
+ * Licensed under MIT License. See LICENSE in root directory for more information.
4
+ */
5
+ export declare enum TerminalChannels {
6
+ STDIN = "stdin",
7
+ STDOUT = "stdout",
8
+ CONNECTED = "connected",
9
+ RESIZE = "resize",
10
+ PING = "ping"
11
+ }
12
+ export declare type TerminalMessage = {
13
+ type: TerminalChannels.STDIN;
14
+ data: string;
15
+ } | {
16
+ type: TerminalChannels.STDOUT;
17
+ data: string;
18
+ } | {
19
+ type: TerminalChannels.CONNECTED;
20
+ } | {
21
+ type: TerminalChannels.RESIZE;
22
+ data: {
23
+ width: number;
24
+ height: number;
25
+ };
26
+ } | {
27
+ type: TerminalChannels.PING;
28
+ };
@@ -34845,7 +34845,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
34845
34845
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34846
34846
 
34847
34847
  "use strict";
34848
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cluster\": () => (/* binding */ Cluster),\n/* harmony export */ \"ClusterApi\": () => (/* binding */ ClusterApi),\n/* harmony export */ \"ClusterStatus\": () => (/* binding */ ClusterStatus),\n/* harmony export */ \"clusterApi\": () => (/* binding */ clusterApi),\n/* harmony export */ \"getMetricsByNodeNames\": () => (/* binding */ getMetricsByNodeNames)\n/* harmony export */ });\n/* harmony import */ var _metrics_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./metrics.api */ \"./src/common/k8s-api/endpoints/metrics.api.ts\");\n/* harmony import */ var _kube_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../kube-object */ \"./src/common/k8s-api/kube-object.ts\");\n/* harmony import */ var _kube_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../kube-api */ \"./src/common/k8s-api/kube-api.ts\");\n/* harmony import */ var _utils_cluster_id_url_parsing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/cluster-id-url-parsing */ \"./src/common/utils/cluster-id-url-parsing.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\nclass ClusterApi extends _kube_api__WEBPACK_IMPORTED_MODULE_2__.KubeApi {\n}\nObject.defineProperty(ClusterApi, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Cluster\"\n});\nObject.defineProperty(ClusterApi, \"namespaced\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n});\nfunction getMetricsByNodeNames(nodeNames, params) {\n const nodes = nodeNames.join(\"|\");\n const opts = { category: \"cluster\", nodes };\n return _metrics_api__WEBPACK_IMPORTED_MODULE_0__.metricsApi.getMetrics({\n memoryUsage: opts,\n workloadMemoryUsage: opts,\n memoryRequests: opts,\n memoryLimits: opts,\n memoryCapacity: opts,\n memoryAllocatableCapacity: opts,\n cpuUsage: opts,\n cpuRequests: opts,\n cpuLimits: opts,\n cpuCapacity: opts,\n cpuAllocatableCapacity: opts,\n podUsage: opts,\n podCapacity: opts,\n podAllocatableCapacity: opts,\n fsSize: opts,\n fsUsage: opts,\n }, params);\n}\nvar ClusterStatus;\n(function (ClusterStatus) {\n ClusterStatus[\"ACTIVE\"] = \"Active\";\n ClusterStatus[\"CREATING\"] = \"Creating\";\n ClusterStatus[\"REMOVING\"] = \"Removing\";\n ClusterStatus[\"ERROR\"] = \"Error\";\n})(ClusterStatus || (ClusterStatus = {}));\nclass Cluster extends _kube_object__WEBPACK_IMPORTED_MODULE_1__.KubeObject {\n getStatus() {\n if (this.metadata.deletionTimestamp)\n return ClusterStatus.REMOVING;\n if (!this.status || !this.status)\n return ClusterStatus.CREATING;\n if (this.status.errorMessage)\n return ClusterStatus.ERROR;\n return ClusterStatus.ACTIVE;\n }\n}\nObject.defineProperty(Cluster, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Cluster\"\n});\nObject.defineProperty(Cluster, \"apiBase\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"/apis/cluster.k8s.io/v1alpha1/clusters\"\n});\n/**\n * Only available within kubernetes cluster pages\n */\nlet clusterApi;\nif ((0,_utils_cluster_id_url_parsing__WEBPACK_IMPORTED_MODULE_3__.isClusterPageContext)()) { // initialize automatically only when within a cluster iframe/context\n clusterApi = new ClusterApi({\n objectConstructor: Cluster,\n });\n}\n\n\n\n//# sourceURL=webpack://open-lens/./src/common/k8s-api/endpoints/cluster.api.ts?");
34848
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cluster\": () => (/* binding */ Cluster),\n/* harmony export */ \"ClusterApi\": () => (/* binding */ ClusterApi),\n/* harmony export */ \"ClusterStatus\": () => (/* binding */ ClusterStatus),\n/* harmony export */ \"clusterApi\": () => (/* binding */ clusterApi),\n/* harmony export */ \"getMetricsByNodeNames\": () => (/* binding */ getMetricsByNodeNames)\n/* harmony export */ });\n/* harmony import */ var _metrics_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./metrics.api */ \"./src/common/k8s-api/endpoints/metrics.api.ts\");\n/* harmony import */ var _kube_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../kube-object */ \"./src/common/k8s-api/kube-object.ts\");\n/* harmony import */ var _kube_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../kube-api */ \"./src/common/k8s-api/kube-api.ts\");\n/* harmony import */ var _utils_cluster_id_url_parsing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/cluster-id-url-parsing */ \"./src/common/utils/cluster-id-url-parsing.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\nclass ClusterApi extends _kube_api__WEBPACK_IMPORTED_MODULE_2__.KubeApi {\n}\n/**\n * @deprecated This field is legacy and never used.\n */\nObject.defineProperty(ClusterApi, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Cluster\"\n});\n/**\n * @deprecated This field is legacy and never used.\n */\nObject.defineProperty(ClusterApi, \"namespaced\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n});\nfunction getMetricsByNodeNames(nodeNames, params) {\n const nodes = nodeNames.join(\"|\");\n const opts = { category: \"cluster\", nodes };\n return _metrics_api__WEBPACK_IMPORTED_MODULE_0__.metricsApi.getMetrics({\n memoryUsage: opts,\n workloadMemoryUsage: opts,\n memoryRequests: opts,\n memoryLimits: opts,\n memoryCapacity: opts,\n memoryAllocatableCapacity: opts,\n cpuUsage: opts,\n cpuRequests: opts,\n cpuLimits: opts,\n cpuCapacity: opts,\n cpuAllocatableCapacity: opts,\n podUsage: opts,\n podCapacity: opts,\n podAllocatableCapacity: opts,\n fsSize: opts,\n fsUsage: opts,\n }, params);\n}\nvar ClusterStatus;\n(function (ClusterStatus) {\n ClusterStatus[\"ACTIVE\"] = \"Active\";\n ClusterStatus[\"CREATING\"] = \"Creating\";\n ClusterStatus[\"REMOVING\"] = \"Removing\";\n ClusterStatus[\"ERROR\"] = \"Error\";\n})(ClusterStatus || (ClusterStatus = {}));\nclass Cluster extends _kube_object__WEBPACK_IMPORTED_MODULE_1__.KubeObject {\n getStatus() {\n if (this.metadata.deletionTimestamp)\n return ClusterStatus.REMOVING;\n if (!this.status || !this.status)\n return ClusterStatus.CREATING;\n if (this.status.errorMessage)\n return ClusterStatus.ERROR;\n return ClusterStatus.ACTIVE;\n }\n}\nObject.defineProperty(Cluster, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Cluster\"\n});\nObject.defineProperty(Cluster, \"apiBase\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"/apis/cluster.k8s.io/v1alpha1/clusters\"\n});\nObject.defineProperty(Cluster, \"namespaced\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n});\n/**\n * Only available within kubernetes cluster pages\n */\nlet clusterApi;\nif ((0,_utils_cluster_id_url_parsing__WEBPACK_IMPORTED_MODULE_3__.isClusterPageContext)()) { // initialize automatically only when within a cluster iframe/context\n clusterApi = new ClusterApi({\n objectConstructor: Cluster,\n });\n}\n\n\n\n//# sourceURL=webpack://open-lens/./src/common/k8s-api/endpoints/cluster.api.ts?");
34849
34849
 
34850
34850
  /***/ }),
34851
34851
 
@@ -35388,6 +35388,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
35388
35388
 
35389
35389
  /***/ }),
35390
35390
 
35391
+ /***/ "./src/common/terminal/channels.ts":
35392
+ /*!*****************************************!*\
35393
+ !*** ./src/common/terminal/channels.ts ***!
35394
+ \*****************************************/
35395
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
35396
+
35397
+ "use strict";
35398
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TerminalChannels\": () => (/* binding */ TerminalChannels)\n/* harmony export */ });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar TerminalChannels;\n(function (TerminalChannels) {\n TerminalChannels[\"STDIN\"] = \"stdin\";\n TerminalChannels[\"STDOUT\"] = \"stdout\";\n TerminalChannels[\"CONNECTED\"] = \"connected\";\n TerminalChannels[\"RESIZE\"] = \"resize\";\n TerminalChannels[\"PING\"] = \"ping\";\n})(TerminalChannels || (TerminalChannels = {}));\n\n\n//# sourceURL=webpack://open-lens/./src/common/terminal/channels.ts?");
35399
+
35400
+ /***/ }),
35401
+
35391
35402
  /***/ "./src/common/user-store/index.ts":
35392
35403
  /*!****************************************!*\
35393
35404
  !*** ./src/common/user-store/index.ts ***!
@@ -36616,7 +36627,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36616
36627
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36617
36628
 
36618
36629
  "use strict";
36619
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WindowManager\": () => (/* binding */ WindowManager)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron-window-state */ \"./node_modules/electron-window-state/index.js\");\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron_window_state__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/cluster-frames */ \"./src/common/cluster-frames.ts\");\n/* harmony import */ var _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../renderer/navigation/events */ \"./src/renderer/navigation/events.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _lens_proxy__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lens-proxy */ \"./src/main/lens-proxy.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/ipc/extension-handling */ \"./src/common/ipc/extension-handling.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isHideable(window) {\n return Boolean(window && !window.isDestroyed());\n}\nclass WindowManager extends _common_utils__WEBPACK_IMPORTED_MODULE_4__.Singleton {\n constructor() {\n super();\n Object.defineProperty(this, \"mainContentUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: `http://localhost:${_lens_proxy__WEBPACK_IMPORTED_MODULE_9__.LensProxy.getInstance().port}`\n });\n Object.defineProperty(this, \"mainWindow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"splashWindow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"windowState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"activeClusterId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_11__.makeObservable)(this);\n this.bindEvents();\n }\n async initMainWindow(showSplash) {\n var _a;\n // Manage main window size and position with state persistence\n if (!this.windowState) {\n this.windowState = electron_window_state__WEBPACK_IMPORTED_MODULE_1___default()({\n defaultHeight: 900,\n defaultWidth: 1440,\n });\n }\n if (!this.mainWindow) {\n // show icon in dock (mac-os only)\n (_a = electron__WEBPACK_IMPORTED_MODULE_0__.app.dock) === null || _a === void 0 ? void 0 : _a.show();\n const { width, height, x, y } = this.windowState;\n this.mainWindow = new electron__WEBPACK_IMPORTED_MODULE_0__.BrowserWindow({\n x, y, width, height,\n title: _common_vars__WEBPACK_IMPORTED_MODULE_8__.productName,\n show: false,\n minWidth: 700,\n minHeight: 500,\n titleBarStyle: _common_vars__WEBPACK_IMPORTED_MODULE_8__.isMac ? \"hiddenInset\" : \"hidden\",\n frame: _common_vars__WEBPACK_IMPORTED_MODULE_8__.isMac,\n backgroundColor: \"#1e2124\",\n webPreferences: {\n nodeIntegration: true,\n nodeIntegrationInSubFrames: true,\n webviewTag: true,\n contextIsolation: false,\n nativeWindowOpen: false,\n },\n });\n this.windowState.manage(this.mainWindow);\n // open external links in default browser (target=_blank, window.open)\n this.mainWindow\n .on(\"focus\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"focus\" });\n })\n .on(\"blur\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"blur\" });\n })\n .on(\"closed\", () => {\n var _a;\n // clean up\n this.windowState.unmanage();\n this.mainWindow = null;\n this.splashWindow = null;\n (_a = electron__WEBPACK_IMPORTED_MODULE_0__.app.dock) === null || _a === void 0 ? void 0 : _a.hide(); // hide icon in dock (mac-os)\n })\n .webContents\n .on(\"dom-ready\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"dom-ready\" });\n })\n .on(\"did-fail-load\", (_event, code, desc) => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`[WINDOW-MANAGER]: Failed to load Main window`, { code, desc });\n })\n .on(\"did-finish-load\", () => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(\"[WINDOW-MANAGER]: Main window loaded\");\n })\n .on(\"will-attach-webview\", (event, webPreferences, params) => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(\"[WINDOW-MANAGER]: Attaching webview\");\n // Following is security recommendations because we allow webview tag (webviewTag: true)\n // suggested by https://www.electronjs.org/docs/tutorial/security#11-verify-webview-options-before-creation\n // and https://www.electronjs.org/docs/tutorial/security#10-do-not-use-allowpopups\n if (webPreferences.preload) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n // @ts-expect-error some electron version uses webPreferences.preloadURL/webPreferences.preload\n if (webPreferences.preloadURL) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n if (params.allowpopups) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: We do not allow allowpopups props, stop webview from renderer\");\n // event.preventDefault() will destroy the guest page.\n event.preventDefault();\n return;\n }\n // Always disable Node.js integration for all webviews\n webPreferences.nodeIntegration = false;\n })\n .setWindowOpenHandler((details) => {\n (0,_common_utils__WEBPACK_IMPORTED_MODULE_4__.openBrowser)(details.url).catch(error => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(\"[WINDOW-MANAGER]: failed to open browser\", { error });\n });\n return { action: \"deny\" };\n });\n }\n try {\n if (showSplash)\n await this.showSplash();\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(`[WINDOW-MANAGER]: Loading Main window from url: ${this.mainContentUrl} ...`);\n await this.mainWindow.loadURL(this.mainContentUrl);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(\"Loading main window failed\", { error });\n electron__WEBPACK_IMPORTED_MODULE_0__.dialog.showErrorBox(\"ERROR!\", error.toString());\n }\n }\n bindEvents() {\n // track visible cluster from ui\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_3__.ipcMainOn)(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.CLUSTER_VIEW_CURRENT_ID, (event, clusterId) => {\n this.activeClusterId = clusterId;\n });\n }\n async ensureMainWindow(showSplash = true) {\n var _a;\n // This needs to be ready to hear the IPC message before the window is loaded\n let viewHasLoaded = Promise.resolve();\n if (!this.mainWindow) {\n viewHasLoaded = new Promise(resolve => {\n electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.once(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_10__.bundledExtensionsLoaded, () => resolve());\n });\n await this.initMainWindow(showSplash);\n }\n try {\n await viewHasLoaded;\n await (0,_common_utils__WEBPACK_IMPORTED_MODULE_4__.delay)(50); // wait just a bit longer to let the first round of rendering happen\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(\"[WINDOW-MANAGER]: Main window has reported that it has loaded\");\n this.mainWindow.show();\n (_a = this.splashWindow) === null || _a === void 0 ? void 0 : _a.close();\n this.splashWindow = undefined;\n setTimeout(() => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"start\" });\n }, 1000);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`Showing main window failed: ${error.stack || error}`);\n electron__WEBPACK_IMPORTED_MODULE_0__.dialog.showErrorBox(\"ERROR!\", error.toString());\n }\n return this.mainWindow;\n }\n sendToView({ channel, frameInfo, data = [] }) {\n if (frameInfo) {\n this.mainWindow.webContents.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...data);\n }\n else {\n this.mainWindow.webContents.send(channel, ...data);\n }\n }\n async navigateExtension(extId, pageId, params, frameId) {\n await this.ensureMainWindow();\n const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_4__.iter.find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.values(), frameInfo => frameInfo.frameId === frameId);\n this.sendToView({\n channel: \"extension:navigate\",\n frameInfo,\n data: [extId, pageId, params],\n });\n }\n async navigate(url, frameId) {\n await this.ensureMainWindow();\n this.navigateSync(url, frameId);\n }\n navigateSync(url, frameId) {\n const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_4__.iter.find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.values(), frameInfo => frameInfo.frameId === frameId);\n const channel = frameInfo\n ? _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.NAVIGATE_IN_CLUSTER\n : _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.NAVIGATE_IN_APP;\n this.sendToView({\n channel,\n frameInfo,\n data: [url],\n });\n }\n reload() {\n const frameInfo = _common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.get(this.activeClusterId);\n if (frameInfo) {\n this.sendToView({ channel: _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.RELOAD_PAGE, frameInfo });\n }\n else {\n electron__WEBPACK_IMPORTED_MODULE_0__.webContents.getAllWebContents().filter(wc => wc.getType() === \"window\").forEach(wc => {\n wc.reload();\n wc.clearHistory();\n });\n }\n }\n async showSplash() {\n if (!this.splashWindow) {\n this.splashWindow = new electron__WEBPACK_IMPORTED_MODULE_0__.BrowserWindow({\n width: 500,\n height: 300,\n backgroundColor: \"#1e2124\",\n center: true,\n frame: false,\n resizable: false,\n show: false,\n webPreferences: {\n nodeIntegration: true,\n contextIsolation: false,\n nodeIntegrationInSubFrames: true,\n nativeWindowOpen: true,\n },\n });\n await this.splashWindow.loadURL(\"static://splash.html\");\n }\n this.splashWindow.show();\n }\n hide() {\n if (isHideable(this.mainWindow)) {\n this.mainWindow.hide();\n }\n if (isHideable(this.splashWindow)) {\n this.splashWindow.hide();\n }\n }\n destroy() {\n this.mainWindow.destroy();\n this.splashWindow.destroy();\n this.mainWindow = null;\n this.splashWindow = null;\n Object.entries(this.disposers).forEach(([name, dispose]) => {\n dispose();\n delete this.disposers[name];\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_11__.observable,\n __metadata(\"design:type\", String)\n], WindowManager.prototype, \"activeClusterId\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/main/window-manager.ts?");
36630
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WindowManager\": () => (/* binding */ WindowManager)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron-window-state */ \"./node_modules/electron-window-state/index.js\");\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron_window_state__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/cluster-frames */ \"./src/common/cluster-frames.ts\");\n/* harmony import */ var _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../renderer/navigation/events */ \"./src/renderer/navigation/events.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _lens_proxy__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lens-proxy */ \"./src/main/lens-proxy.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/ipc/extension-handling */ \"./src/common/ipc/extension-handling.ts\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_11__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isHideable(window) {\n return Boolean(window && !window.isDestroyed());\n}\nclass WindowManager extends _common_utils__WEBPACK_IMPORTED_MODULE_4__.Singleton {\n constructor() {\n super();\n Object.defineProperty(this, \"mainContentUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: `http://localhost:${_lens_proxy__WEBPACK_IMPORTED_MODULE_9__.LensProxy.getInstance().port}`\n });\n Object.defineProperty(this, \"mainWindow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"splashWindow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"windowState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"activeClusterId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_12__.makeObservable)(this);\n this.bindEvents();\n }\n async initMainWindow(showSplash) {\n var _a;\n // Manage main window size and position with state persistence\n if (!this.windowState) {\n this.windowState = electron_window_state__WEBPACK_IMPORTED_MODULE_1___default()({\n defaultHeight: 900,\n defaultWidth: 1440,\n });\n }\n if (!this.mainWindow) {\n // show icon in dock (mac-os only)\n (_a = electron__WEBPACK_IMPORTED_MODULE_0__.app.dock) === null || _a === void 0 ? void 0 : _a.show();\n const { width, height, x, y } = this.windowState;\n this.mainWindow = new electron__WEBPACK_IMPORTED_MODULE_0__.BrowserWindow({\n x, y, width, height,\n title: _common_vars__WEBPACK_IMPORTED_MODULE_8__.productName,\n show: false,\n minWidth: 700,\n minHeight: 500,\n titleBarStyle: _common_vars__WEBPACK_IMPORTED_MODULE_8__.isMac ? \"hiddenInset\" : \"hidden\",\n frame: _common_vars__WEBPACK_IMPORTED_MODULE_8__.isMac,\n backgroundColor: \"#1e2124\",\n webPreferences: {\n nodeIntegration: true,\n nodeIntegrationInSubFrames: true,\n webviewTag: true,\n contextIsolation: false,\n nativeWindowOpen: false,\n },\n });\n this.windowState.manage(this.mainWindow);\n // open external links in default browser (target=_blank, window.open)\n this.mainWindow\n .on(\"focus\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"focus\" });\n })\n .on(\"blur\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"blur\" });\n })\n .on(\"closed\", () => {\n var _a;\n // clean up\n this.windowState.unmanage();\n this.mainWindow = null;\n this.splashWindow = null;\n (_a = electron__WEBPACK_IMPORTED_MODULE_0__.app.dock) === null || _a === void 0 ? void 0 : _a.hide(); // hide icon in dock (mac-os)\n })\n .webContents\n .on(\"dom-ready\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"dom-ready\" });\n })\n .on(\"did-fail-load\", (_event, code, desc) => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`[WINDOW-MANAGER]: Failed to load Main window`, { code, desc });\n })\n .on(\"did-finish-load\", () => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(\"[WINDOW-MANAGER]: Main window loaded\");\n })\n .on(\"will-attach-webview\", (event, webPreferences, params) => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(\"[WINDOW-MANAGER]: Attaching webview\");\n // Following is security recommendations because we allow webview tag (webviewTag: true)\n // suggested by https://www.electronjs.org/docs/tutorial/security#11-verify-webview-options-before-creation\n // and https://www.electronjs.org/docs/tutorial/security#10-do-not-use-allowpopups\n if (webPreferences.preload) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n // @ts-expect-error some electron version uses webPreferences.preloadURL/webPreferences.preload\n if (webPreferences.preloadURL) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n if (params.allowpopups) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: We do not allow allowpopups props, stop webview from renderer\");\n // event.preventDefault() will destroy the guest page.\n event.preventDefault();\n return;\n }\n // Always disable Node.js integration for all webviews\n webPreferences.nodeIntegration = false;\n })\n .setWindowOpenHandler((details) => {\n (0,_common_utils__WEBPACK_IMPORTED_MODULE_4__.openBrowser)(details.url).catch(error => {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(\"[WINDOW-MANAGER]: failed to open browser\", { error });\n });\n return { action: \"deny\" };\n });\n }\n try {\n if (showSplash)\n await this.showSplash();\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(`[WINDOW-MANAGER]: Loading Main window from url: ${this.mainContentUrl} ...`);\n await this.mainWindow.loadURL(this.mainContentUrl);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(\"Loading main window failed\", { error });\n electron__WEBPACK_IMPORTED_MODULE_0__.dialog.showErrorBox(\"ERROR!\", error.toString());\n }\n }\n bindEvents() {\n // track visible cluster from ui\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_3__.ipcMainOn)(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.CLUSTER_VIEW_CURRENT_ID, (event, clusterId) => {\n this.activeClusterId = clusterId;\n });\n }\n async ensureMainWindow(showSplash = true) {\n var _a;\n // This needs to be ready to hear the IPC message before the window is loaded\n let viewHasLoaded = Promise.resolve();\n if (!this.mainWindow) {\n viewHasLoaded = new Promise(resolve => {\n electron__WEBPACK_IMPORTED_MODULE_0__.ipcMain.once(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_10__.bundledExtensionsLoaded, () => resolve());\n });\n await this.initMainWindow(showSplash);\n }\n try {\n await viewHasLoaded;\n await (0,_common_utils__WEBPACK_IMPORTED_MODULE_4__.delay)(50); // wait just a bit longer to let the first round of rendering happen\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].info(\"[WINDOW-MANAGER]: Main window has reported that it has loaded\");\n this.mainWindow.show();\n (_a = this.splashWindow) === null || _a === void 0 ? void 0 : _a.close();\n this.splashWindow = undefined;\n setTimeout(() => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_2__.appEventBus.emit({ name: \"app\", action: \"start\" });\n }, 1000);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`Showing main window failed: ${error.stack || error}`);\n electron__WEBPACK_IMPORTED_MODULE_0__.dialog.showErrorBox(\"ERROR!\", error.toString());\n }\n return this.mainWindow;\n }\n sendToView({ channel, frameInfo, data = [] }) {\n if (frameInfo) {\n this.mainWindow.webContents.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...data);\n }\n else {\n this.mainWindow.webContents.send(channel, ...data);\n }\n }\n async navigateExtension(extId, pageId, params, frameId) {\n await this.ensureMainWindow();\n const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_4__.iter.find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.values(), frameInfo => frameInfo.frameId === frameId);\n this.sendToView({\n channel: \"extension:navigate\",\n frameInfo,\n data: [extId, pageId, params],\n });\n }\n async navigate(url, frameId) {\n await this.ensureMainWindow();\n this.navigateSync(url, frameId);\n }\n navigateSync(url, frameId) {\n const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_4__.iter.find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.values(), frameInfo => frameInfo.frameId === frameId);\n const channel = frameInfo\n ? _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.NAVIGATE_IN_CLUSTER\n : _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.NAVIGATE_IN_APP;\n this.sendToView({\n channel,\n frameInfo,\n data: [url],\n });\n }\n reload() {\n const frameInfo = _common_cluster_frames__WEBPACK_IMPORTED_MODULE_5__.clusterFrameMap.get(this.activeClusterId);\n if (frameInfo) {\n this.sendToView({ channel: _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__.IpcRendererNavigationEvents.RELOAD_PAGE, frameInfo });\n }\n else {\n electron__WEBPACK_IMPORTED_MODULE_0__.webContents.getAllWebContents().filter(wc => wc.getType() === \"window\").forEach(wc => {\n wc.reload();\n wc.clearHistory();\n });\n }\n }\n async showSplash() {\n if (!this.splashWindow) {\n this.splashWindow = new electron__WEBPACK_IMPORTED_MODULE_0__.BrowserWindow({\n width: 500,\n height: 300,\n backgroundColor: \"#1e2124\",\n center: true,\n frame: false,\n resizable: false,\n show: false,\n webPreferences: {\n nodeIntegration: true,\n contextIsolation: false,\n nodeIntegrationInSubFrames: true,\n nativeWindowOpen: true,\n },\n });\n const splashWindowFilePath = path__WEBPACK_IMPORTED_MODULE_11___default().join(_common_vars__WEBPACK_IMPORTED_MODULE_8__.staticFilesDirectory, \"splash.html\");\n try {\n await this.splashWindow.loadFile(splashWindowFilePath);\n }\n catch (error) {\n if (String(error).includes(\"ERR_FAILED\")) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(\"[WINDOW-MANAGER]: failed to load splash window on first attempt, trying again...\");\n // Try again, from reading some issues it seems that trying again immedeiately sometimes works\n await this.splashWindow.loadFile(splashWindowFilePath);\n }\n else {\n throw error;\n }\n }\n }\n this.splashWindow.show();\n }\n hide() {\n if (isHideable(this.mainWindow)) {\n this.mainWindow.hide();\n }\n if (isHideable(this.splashWindow)) {\n this.splashWindow.hide();\n }\n }\n destroy() {\n this.mainWindow.destroy();\n this.splashWindow.destroy();\n this.mainWindow = null;\n this.splashWindow = null;\n Object.entries(this.disposers).forEach(([name, dispose]) => {\n dispose();\n delete this.disposers[name];\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_12__.observable,\n __metadata(\"design:type\", String)\n], WindowManager.prototype, \"activeClusterId\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/main/window-manager.ts?");
36620
36631
 
36621
36632
  /***/ }),
36622
36633
 
@@ -36847,7 +36858,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36847
36858
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36848
36859
 
36849
36860
  "use strict";
36850
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TerminalApi\": () => (/* binding */ TerminalApi),\n/* harmony export */ \"TerminalChannels\": () => (/* binding */ TerminalChannels)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _websocket_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./websocket-api */ \"./src/renderer/api/websocket-api.ts\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! url */ \"url\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _common_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/logger */ \"./src/common/logger.ts\");\n/* harmony import */ var v8__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! v8 */ \"v8\");\n/* harmony import */ var v8__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(v8__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_7__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\nvar TerminalChannels;\n(function (TerminalChannels) {\n TerminalChannels[\"STDIN\"] = \"stdin\";\n TerminalChannels[\"STDOUT\"] = \"stdout\";\n TerminalChannels[\"CONNECTED\"] = \"connected\";\n TerminalChannels[\"RESIZE\"] = \"resize\";\n})(TerminalChannels || (TerminalChannels = {}));\nvar TerminalColor;\n(function (TerminalColor) {\n TerminalColor[\"RED\"] = \"\\u001B[31m\";\n TerminalColor[\"GREEN\"] = \"\\u001B[32m\";\n TerminalColor[\"YELLOW\"] = \"\\u001B[33m\";\n TerminalColor[\"BLUE\"] = \"\\u001B[34m\";\n TerminalColor[\"MAGENTA\"] = \"\\u001B[35m\";\n TerminalColor[\"CYAN\"] = \"\\u001B[36m\";\n TerminalColor[\"GRAY\"] = \"\\u001B[90m\";\n TerminalColor[\"LIGHT_GRAY\"] = \"\\u001B[37m\";\n TerminalColor[\"NO_COLOR\"] = \"\\u001B[0m\";\n})(TerminalColor || (TerminalColor = {}));\nclass TerminalApi extends _websocket_api__WEBPACK_IMPORTED_MODULE_1__.WebSocketApi {\n constructor(query) {\n super({\n flushOnOpen: false,\n pingInterval: 30,\n });\n Object.defineProperty(this, \"query\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: query\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isReady\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_8__.makeObservable)(this);\n if (query.node) {\n query.type || (query.type = \"node\");\n }\n }\n async connect() {\n if (!this.socket) {\n /**\n * Only emit this message if we are not \"reconnecting\", so as to keep the\n * output display clean when the computer wakes from sleep\n */\n this.emitStatus(\"Connecting ...\");\n }\n const authTokenArray = await electron__WEBPACK_IMPORTED_MODULE_4__.ipcRenderer.invoke(\"cluster:shell-api\", (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getHostedClusterId)(), this.query.id);\n if (!(authTokenArray instanceof Uint8Array)) {\n throw new TypeError(\"ShellApi token is not a Uint8Array\");\n }\n const { hostname, protocol, port } = location;\n const socketUrl = url__WEBPACK_IMPORTED_MODULE_3___default().format({\n protocol: protocol.includes(\"https\") ? \"wss\" : \"ws\",\n hostname,\n port,\n pathname: \"/api\",\n query: {\n ...this.query,\n shellToken: Buffer.from(authTokenArray).toString(\"base64\"),\n },\n slashes: true,\n });\n const onReady = (0,lodash__WEBPACK_IMPORTED_MODULE_7__.once)((data) => {\n this.isReady = true;\n this.emit(\"ready\");\n this.removeListener(\"data\", onReady);\n this.removeListener(\"connected\", onReady);\n this.flush();\n // data is undefined if the event that was handled is \"connected\"\n if (data === undefined) {\n /**\n * Output the last line, the makes sure that the terminal isn't completely\n * empty when the user refreshes.\n */\n this.emit(\"data\", window.localStorage.getItem(`${this.query.id}:last-data`));\n }\n });\n this.prependListener(\"data\", onReady);\n this.prependListener(\"connected\", onReady);\n super.connect(socketUrl);\n this.socket.binaryType = \"arraybuffer\";\n }\n sendMessage(message) {\n return this.send((0,v8__WEBPACK_IMPORTED_MODULE_6__.serialize)(message));\n }\n sendTerminalSize(cols, rows) {\n const newSize = { width: cols, height: rows };\n if (!lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default()(this.size, newSize)) {\n this.sendMessage({\n type: TerminalChannels.RESIZE,\n data: newSize,\n });\n this.size = newSize;\n }\n }\n _onMessage({ data, ...evt }) {\n try {\n const message = (0,v8__WEBPACK_IMPORTED_MODULE_6__.deserialize)(new Uint8Array(data));\n switch (message.type) {\n case TerminalChannels.STDOUT:\n /**\n * save the last data for reconnections. User localStorage because we\n * don't want this data to survive if the app is closed\n */\n window.localStorage.setItem(`${this.query.id}:last-data`, message.data);\n super._onMessage({ data: message.data, ...evt });\n break;\n case TerminalChannels.CONNECTED:\n this.emit(\"connected\");\n break;\n default:\n _common_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].warn(`[TERMINAL-API]: unknown or unhandleable message type`, message);\n break;\n }\n }\n catch (error) {\n _common_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error(`[TERMINAL-API]: failed to handle message`, error);\n }\n }\n _onOpen(evt) {\n // Client should send terminal size in special channel 4,\n // But this size will be changed by terminal.fit()\n this.sendTerminalSize(120, 80);\n super._onOpen(evt);\n }\n _onClose(evt) {\n super._onClose(evt);\n this.isReady = false;\n }\n emitStatus(data, options = {}) {\n const { color, showTime } = options;\n const time = showTime ? `${(new Date()).toLocaleString()} ` : \"\";\n if (color) {\n data = `${color}${data}${TerminalColor.NO_COLOR}`;\n }\n this.emit(\"data\", `${time}${data}\\r\\n`);\n }\n emitError(error) {\n this.emitStatus(error, {\n color: TerminalColor.RED,\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_8__.observable,\n __metadata(\"design:type\", Object)\n], TerminalApi.prototype, \"isReady\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/api/terminal-api.ts?");
36861
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TerminalApi\": () => (/* binding */ TerminalApi)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _websocket_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./websocket-api */ \"./src/renderer/api/websocket-api.ts\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! url */ \"url\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _common_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/logger */ \"./src/common/logger.ts\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _common_terminal_channels__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/terminal/channels */ \"./src/common/terminal/channels.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\nvar TerminalColor;\n(function (TerminalColor) {\n TerminalColor[\"RED\"] = \"\\u001B[31m\";\n TerminalColor[\"GREEN\"] = \"\\u001B[32m\";\n TerminalColor[\"YELLOW\"] = \"\\u001B[33m\";\n TerminalColor[\"BLUE\"] = \"\\u001B[34m\";\n TerminalColor[\"MAGENTA\"] = \"\\u001B[35m\";\n TerminalColor[\"CYAN\"] = \"\\u001B[36m\";\n TerminalColor[\"GRAY\"] = \"\\u001B[90m\";\n TerminalColor[\"LIGHT_GRAY\"] = \"\\u001B[37m\";\n TerminalColor[\"NO_COLOR\"] = \"\\u001B[0m\";\n})(TerminalColor || (TerminalColor = {}));\nclass TerminalApi extends _websocket_api__WEBPACK_IMPORTED_MODULE_1__.WebSocketApi {\n constructor(query) {\n super({\n flushOnOpen: false,\n pingInterval: 30,\n });\n Object.defineProperty(this, \"query\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: query\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isReady\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_8__.makeObservable)(this);\n if (query.node) {\n query.type || (query.type = \"node\");\n }\n }\n async connect() {\n if (!this.socket) {\n /**\n * Only emit this message if we are not \"reconnecting\", so as to keep the\n * output display clean when the computer wakes from sleep\n */\n this.emitStatus(\"Connecting ...\");\n }\n const authTokenArray = await electron__WEBPACK_IMPORTED_MODULE_4__.ipcRenderer.invoke(\"cluster:shell-api\", (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getHostedClusterId)(), this.query.id);\n if (!(authTokenArray instanceof Uint8Array)) {\n throw new TypeError(\"ShellApi token is not a Uint8Array\");\n }\n const { hostname, protocol, port } = location;\n const socketUrl = url__WEBPACK_IMPORTED_MODULE_3___default().format({\n protocol: protocol.includes(\"https\") ? \"wss\" : \"ws\",\n hostname,\n port,\n pathname: \"/api\",\n query: {\n ...this.query,\n shellToken: Buffer.from(authTokenArray).toString(\"base64\"),\n },\n slashes: true,\n });\n const onReady = (0,lodash__WEBPACK_IMPORTED_MODULE_6__.once)((data) => {\n this.isReady = true;\n this.emit(\"ready\");\n this.removeListener(\"data\", onReady);\n this.removeListener(\"connected\", onReady);\n this.flush();\n // data is undefined if the event that was handled is \"connected\"\n if (data === undefined) {\n /**\n * Output the last line, the makes sure that the terminal isn't completely\n * empty when the user refreshes.\n */\n this.emit(\"data\", window.localStorage.getItem(`${this.query.id}:last-data`));\n }\n });\n this.prependListener(\"data\", onReady);\n this.prependListener(\"connected\", onReady);\n super.connect(socketUrl);\n }\n sendMessage(message) {\n return this.send(JSON.stringify(message));\n }\n sendTerminalSize(cols, rows) {\n const newSize = { width: cols, height: rows };\n if (!lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default()(this.size, newSize)) {\n this.sendMessage({\n type: _common_terminal_channels__WEBPACK_IMPORTED_MODULE_7__.TerminalChannels.RESIZE,\n data: newSize,\n });\n this.size = newSize;\n }\n }\n _onMessage({ data, ...evt }) {\n try {\n const message = JSON.parse(data);\n switch (message.type) {\n case _common_terminal_channels__WEBPACK_IMPORTED_MODULE_7__.TerminalChannels.STDOUT:\n /**\n * save the last data for reconnections. User localStorage because we\n * don't want this data to survive if the app is closed\n */\n window.localStorage.setItem(`${this.query.id}:last-data`, message.data);\n super._onMessage({ data: message.data, ...evt });\n break;\n case _common_terminal_channels__WEBPACK_IMPORTED_MODULE_7__.TerminalChannels.CONNECTED:\n this.emit(\"connected\");\n break;\n default:\n _common_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].warn(`[TERMINAL-API]: unknown or unhandleable message type`, message);\n break;\n }\n }\n catch (error) {\n _common_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].error(`[TERMINAL-API]: failed to handle message`, error);\n }\n }\n _onOpen(evt) {\n // Client should send terminal size in special channel 4,\n // But this size will be changed by terminal.fit()\n this.sendTerminalSize(120, 80);\n super._onOpen(evt);\n }\n _onClose(evt) {\n super._onClose(evt);\n this.isReady = false;\n }\n emitStatus(data, options = {}) {\n const { color, showTime } = options;\n const time = showTime ? `${(new Date()).toLocaleString()} ` : \"\";\n if (color) {\n data = `${color}${data}${TerminalColor.NO_COLOR}`;\n }\n this.emit(\"data\", `${time}${data}\\r\\n`);\n }\n emitError(error) {\n this.emitStatus(error, {\n color: TerminalColor.RED,\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_8__.observable,\n __metadata(\"design:type\", Object)\n], TerminalApi.prototype, \"isReady\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/api/terminal-api.ts?");
36851
36862
 
36852
36863
  /***/ }),
36853
36864
 
@@ -36858,7 +36869,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36858
36869
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36859
36870
 
36860
36871
  "use strict";
36861
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WebSocketApi\": () => (/* binding */ WebSocketApi),\n/* harmony export */ \"WebSocketApiState\": () => (/* binding */ WebSocketApiState)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"events\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/vars */ \"./src/common/vars.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\nvar WebSocketApiState;\n(function (WebSocketApiState) {\n WebSocketApiState[\"PENDING\"] = \"pending\";\n WebSocketApiState[\"OPEN\"] = \"open\";\n WebSocketApiState[\"CONNECTING\"] = \"connecting\";\n WebSocketApiState[\"RECONNECTING\"] = \"reconnecting\";\n WebSocketApiState[\"CLOSED\"] = \"closed\";\n})(WebSocketApiState || (WebSocketApiState = {}));\nclass WebSocketApi extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {\n constructor(params) {\n super();\n Object.defineProperty(this, \"socket\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"pendingCommands\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"reconnectTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"pingTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"readyState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebSocketApiState.PENDING\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_2__.makeObservable)(this);\n this.params = Object.assign({}, WebSocketApi.defaultParams, params);\n const { pingInterval } = this.params;\n if (pingInterval) {\n this.pingTimer = setInterval(() => this.ping(), pingInterval * 1000);\n }\n }\n get isConnected() {\n var _a;\n return ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN && this.isOnline;\n }\n get isOnline() {\n return navigator.onLine;\n }\n connect(url) {\n var _a;\n // close previous connection first\n (_a = this.socket) === null || _a === void 0 ? void 0 : _a.close();\n // start new connection\n this.socket = new WebSocket(url);\n this.socket.addEventListener(\"open\", ev => this._onOpen(ev));\n this.socket.addEventListener(\"message\", ev => this._onMessage(ev));\n this.socket.addEventListener(\"error\", ev => this._onError(ev));\n this.socket.addEventListener(\"close\", ev => this._onClose(ev));\n this.readyState = WebSocketApiState.CONNECTING;\n }\n ping() {\n if (this.isConnected) {\n this.send(this.params.pingMessage);\n }\n }\n reconnect() {\n if (!this.socket) {\n return void console.error(\"[WEBSOCKET-API]: cannot reconnect to a socket that is not connected\");\n }\n this.connect(this.socket.url);\n }\n destroy() {\n if (!this.socket)\n return;\n this.socket.close();\n this.socket = null;\n this.pendingCommands = [];\n this.clearAllListeners();\n clearTimeout(this.reconnectTimer);\n clearInterval(this.pingTimer);\n this.readyState = WebSocketApiState.PENDING;\n }\n clearAllListeners() {\n for (const name of this.eventNames()) {\n this.removeAllListeners(name);\n }\n }\n send(command) {\n if (this.isConnected) {\n this.socket.send(command);\n }\n else {\n this.pendingCommands.push(command);\n }\n }\n flush() {\n for (const command of this.pendingCommands) {\n this.send(command);\n }\n this.pendingCommands.length = 0;\n }\n _onOpen(evt) {\n this.emit(\"open\", ...[]);\n if (this.params.flushOnOpen)\n this.flush();\n this.readyState = WebSocketApiState.OPEN;\n this.writeLog(\"%cOPEN\", \"color:green;font-weight:bold;\", evt);\n }\n _onMessage({ data }) {\n this.emit(\"data\", ...[data]);\n this.writeLog(\"%cMESSAGE\", \"color:black;font-weight:bold;\", data);\n }\n _onError(evt) {\n this.writeLog(\"%cERROR\", \"color:red;font-weight:bold;\", evt);\n }\n _onClose(evt) {\n const error = evt.code !== 1000 || !evt.wasClean;\n if (error) {\n const { reconnectDelay } = this.params;\n if (reconnectDelay && this.socket) {\n const url = this.socket.url;\n this.writeLog(\"will reconnect in\", `${reconnectDelay}s`);\n this.reconnectTimer = setTimeout(() => this.connect(url), reconnectDelay * 1000);\n this.readyState = WebSocketApiState.RECONNECTING;\n }\n }\n else {\n this.readyState = WebSocketApiState.CLOSED;\n this.emit(\"close\", ...[]);\n }\n this.writeLog(\"%cCLOSE\", `color:${error ? \"red\" : \"black\"};font-weight:bold;`, evt);\n }\n writeLog(...data) {\n if (this.params.logging) {\n console.debug(...data);\n }\n }\n}\nObject.defineProperty(WebSocketApi, \"defaultParams\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n logging: _common_vars__WEBPACK_IMPORTED_MODULE_1__.isDevelopment,\n reconnectDelay: 10,\n flushOnOpen: true,\n pingMessage: \"PING\",\n }\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__.observable,\n __metadata(\"design:type\", Object)\n], WebSocketApi.prototype, \"readyState\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/api/websocket-api.ts?");
36872
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WebSocketApi\": () => (/* binding */ WebSocketApi),\n/* harmony export */ \"WebSocketApiState\": () => (/* binding */ WebSocketApiState)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"events\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _common_terminal_channels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/terminal/channels */ \"./src/common/terminal/channels.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\nvar WebSocketApiState;\n(function (WebSocketApiState) {\n WebSocketApiState[\"PENDING\"] = \"pending\";\n WebSocketApiState[\"OPEN\"] = \"open\";\n WebSocketApiState[\"CONNECTING\"] = \"connecting\";\n WebSocketApiState[\"RECONNECTING\"] = \"reconnecting\";\n WebSocketApiState[\"CLOSED\"] = \"closed\";\n})(WebSocketApiState || (WebSocketApiState = {}));\nclass WebSocketApi extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {\n constructor(params) {\n super();\n Object.defineProperty(this, \"socket\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"pendingCommands\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"reconnectTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"pingTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"readyState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebSocketApiState.PENDING\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_3__.makeObservable)(this);\n this.params = Object.assign({}, WebSocketApi.defaultParams, params);\n const { pingInterval } = this.params;\n if (pingInterval) {\n this.pingTimer = window.setInterval(() => this.ping(), pingInterval * 1000);\n }\n }\n get isConnected() {\n var _a;\n return ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN && this.isOnline;\n }\n get isOnline() {\n return navigator.onLine;\n }\n connect(url) {\n var _a;\n // close previous connection first\n (_a = this.socket) === null || _a === void 0 ? void 0 : _a.close();\n // start new connection\n this.socket = new WebSocket(url);\n this.socket.addEventListener(\"open\", ev => this._onOpen(ev));\n this.socket.addEventListener(\"message\", ev => this._onMessage(ev));\n this.socket.addEventListener(\"error\", ev => this._onError(ev));\n this.socket.addEventListener(\"close\", ev => this._onClose(ev));\n this.readyState = WebSocketApiState.CONNECTING;\n }\n ping() {\n if (this.isConnected) {\n this.send(this.params.pingMessage);\n }\n }\n reconnect() {\n if (!this.socket) {\n return void console.error(\"[WEBSOCKET-API]: cannot reconnect to a socket that is not connected\");\n }\n this.connect(this.socket.url);\n }\n destroy() {\n if (!this.socket)\n return;\n this.socket.close();\n this.socket = null;\n this.pendingCommands = [];\n this.clearAllListeners();\n clearTimeout(this.reconnectTimer);\n clearInterval(this.pingTimer);\n this.readyState = WebSocketApiState.PENDING;\n }\n clearAllListeners() {\n for (const name of this.eventNames()) {\n this.removeAllListeners(name);\n }\n }\n send(command) {\n if (this.isConnected) {\n this.socket.send(command);\n }\n else {\n this.pendingCommands.push(command);\n }\n }\n flush() {\n for (const command of this.pendingCommands) {\n this.send(command);\n }\n this.pendingCommands.length = 0;\n }\n _onOpen(evt) {\n this.emit(\"open\", ...[]);\n if (this.params.flushOnOpen)\n this.flush();\n this.readyState = WebSocketApiState.OPEN;\n this.writeLog(\"%cOPEN\", \"color:green;font-weight:bold;\", evt);\n }\n _onMessage({ data }) {\n this.emit(\"data\", ...[data]);\n this.writeLog(\"%cMESSAGE\", \"color:black;font-weight:bold;\", data);\n }\n _onError(evt) {\n this.writeLog(\"%cERROR\", \"color:red;font-weight:bold;\", evt);\n }\n _onClose(evt) {\n const error = evt.code !== 1000 || !evt.wasClean;\n if (error) {\n const { reconnectDelay } = this.params;\n if (reconnectDelay && this.socket) {\n const url = this.socket.url;\n this.writeLog(\"will reconnect in\", `${reconnectDelay}s`);\n this.reconnectTimer = window.setTimeout(() => this.connect(url), reconnectDelay * 1000);\n this.readyState = WebSocketApiState.RECONNECTING;\n }\n }\n else {\n this.readyState = WebSocketApiState.CLOSED;\n this.emit(\"close\", ...[]);\n }\n this.writeLog(\"%cCLOSE\", `color:${error ? \"red\" : \"black\"};font-weight:bold;`, evt);\n }\n writeLog(...data) {\n if (this.params.logging) {\n console.debug(...data);\n }\n }\n}\nObject.defineProperty(WebSocketApi, \"defaultParams\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n logging: _common_vars__WEBPACK_IMPORTED_MODULE_1__.isDevelopment,\n reconnectDelay: 10,\n flushOnOpen: true,\n pingMessage: JSON.stringify({ type: _common_terminal_channels__WEBPACK_IMPORTED_MODULE_2__.TerminalChannels.PING }),\n }\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__.observable,\n __metadata(\"design:type\", Object)\n], WebSocketApi.prototype, \"readyState\", void 0);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/api/websocket-api.ts?");
36862
36873
 
36863
36874
  /***/ }),
36864
36875
 
@@ -37793,7 +37804,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
37793
37804
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
37794
37805
 
37795
37806
  "use strict";
37796
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ogre-tools/injectable */ \"./node_modules/@ogre-tools/injectable/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _api_terminal_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../api/terminal-api */ \"./src/renderer/api/terminal-api.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../notifications */ \"./src/renderer/components/notifications/index.ts\");\n/* harmony import */ var _dock_select_dock_tab_injectable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dock/select-dock-tab.injectable */ \"./src/renderer/components/dock/dock/select-dock-tab.injectable.ts\");\n/* harmony import */ var _create_terminal_tab_injectable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./create-terminal-tab.injectable */ \"./src/renderer/components/dock/terminal/create-terminal-tab.injectable.ts\");\n/* harmony import */ var _get_terminal_api_injectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-terminal-api.injectable */ \"./src/renderer/components/dock/terminal/get-terminal-api.injectable.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\n\nconst sendCommand = ({ selectTab, createTerminalTab, getTerminalApi }) => async (command, options = {}) => {\n let { tabId } = options;\n if (tabId) {\n selectTab(tabId);\n }\n else {\n tabId = createTerminalTab().id;\n }\n await (0,mobx__WEBPACK_IMPORTED_MODULE_7__.when)(() => Boolean(getTerminalApi(tabId)));\n const terminalApi = getTerminalApi(tabId);\n const shellIsReady = (0,mobx__WEBPACK_IMPORTED_MODULE_7__.when)(() => terminalApi.isReady);\n const notifyVeryLong = setTimeout(() => {\n shellIsReady.cancel();\n _notifications__WEBPACK_IMPORTED_MODULE_3__.Notifications.info(\"If terminal shell is not ready please check your shell init files, if applicable.\", {\n timeout: 4000,\n });\n }, 10000);\n await shellIsReady.catch(_utils__WEBPACK_IMPORTED_MODULE_2__.noop);\n clearTimeout(notifyVeryLong);\n if (terminalApi) {\n if (options.enter) {\n command += \"\\r\";\n }\n terminalApi.sendMessage({\n type: _api_terminal_api__WEBPACK_IMPORTED_MODULE_1__.TerminalChannels.STDIN,\n data: command,\n });\n }\n else {\n console.warn(\"The selected tab is does not have a connection. Cannot send command.\", { tabId, command });\n }\n};\nconst sendCommandInjectable = (0,_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.getInjectable)({\n id: \"send-command\",\n instantiate: (di) => sendCommand({\n createTerminalTab: di.inject(_create_terminal_tab_injectable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n selectTab: di.inject(_dock_select_dock_tab_injectable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n getTerminalApi: di.inject(_get_terminal_api_injectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n }),\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sendCommandInjectable);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/dock/terminal/send-command.injectable.ts?");
37807
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ogre-tools/injectable */ \"./node_modules/@ogre-tools/injectable/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_terminal_channels__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../common/terminal/channels */ \"./src/common/terminal/channels.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../notifications */ \"./src/renderer/components/notifications/index.ts\");\n/* harmony import */ var _dock_select_dock_tab_injectable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dock/select-dock-tab.injectable */ \"./src/renderer/components/dock/dock/select-dock-tab.injectable.ts\");\n/* harmony import */ var _create_terminal_tab_injectable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./create-terminal-tab.injectable */ \"./src/renderer/components/dock/terminal/create-terminal-tab.injectable.ts\");\n/* harmony import */ var _get_terminal_api_injectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-terminal-api.injectable */ \"./src/renderer/components/dock/terminal/get-terminal-api.injectable.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\n\nconst sendCommand = ({ selectTab, createTerminalTab, getTerminalApi }) => async (command, options = {}) => {\n let { tabId } = options;\n if (tabId) {\n selectTab(tabId);\n }\n else {\n tabId = createTerminalTab().id;\n }\n await (0,mobx__WEBPACK_IMPORTED_MODULE_7__.when)(() => Boolean(getTerminalApi(tabId)));\n const terminalApi = getTerminalApi(tabId);\n const shellIsReady = (0,mobx__WEBPACK_IMPORTED_MODULE_7__.when)(() => terminalApi.isReady);\n const notifyVeryLong = setTimeout(() => {\n shellIsReady.cancel();\n _notifications__WEBPACK_IMPORTED_MODULE_3__.Notifications.info(\"If terminal shell is not ready please check your shell init files, if applicable.\", {\n timeout: 4000,\n });\n }, 10000);\n await shellIsReady.catch(_utils__WEBPACK_IMPORTED_MODULE_2__.noop);\n clearTimeout(notifyVeryLong);\n if (terminalApi) {\n if (options.enter) {\n command += \"\\r\";\n }\n terminalApi.sendMessage({\n type: _common_terminal_channels__WEBPACK_IMPORTED_MODULE_1__.TerminalChannels.STDIN,\n data: command,\n });\n }\n else {\n console.warn(\"The selected tab is does not have a connection. Cannot send command.\", { tabId, command });\n }\n};\nconst sendCommandInjectable = (0,_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.getInjectable)({\n id: \"send-command\",\n instantiate: (di) => sendCommand({\n createTerminalTab: di.inject(_create_terminal_tab_injectable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n selectTab: di.inject(_dock_select_dock_tab_injectable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n getTerminalApi: di.inject(_get_terminal_api_injectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n }),\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sendCommandInjectable);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/dock/terminal/send-command.injectable.ts?");
37797
37808
 
37798
37809
  /***/ }),
37799
37810
 
@@ -37826,7 +37837,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
37826
37837
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
37827
37838
 
37828
37839
  "use strict";
37829
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Terminal\": () => (/* binding */ Terminal)\n/* harmony export */ });\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm */ \"./node_modules/xterm/lib/xterm.js\");\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(xterm__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! xterm-addon-fit */ \"./node_modules/xterm-addon-fit/lib/xterm-addon-fit.js\");\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _api_terminal_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../api/terminal-api */ \"./src/renderer/api/terminal-api.ts\");\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../../common/user-store */ \"./src/common/user-store/index.ts\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _common_logger__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../common/logger */ \"./src/common/logger.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\n\n\n\n\n\nclass Terminal {\n constructor(tabId, api) {\n Object.defineProperty(this, \"tabId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: tabId\n });\n Object.defineProperty(this, \"api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: api\n });\n Object.defineProperty(this, \"terminalConfig\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: _common_user_store__WEBPACK_IMPORTED_MODULE_8__.UserStore.getInstance().terminalConfig\n });\n Object.defineProperty(this, \"xterm\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new xterm__WEBPACK_IMPORTED_MODULE_1__.Terminal({\n cursorBlink: true,\n cursorStyle: \"bar\",\n fontSize: this.terminalConfig.fontSize,\n fontFamily: this.terminalConfig.fontFamily,\n })\n });\n Object.defineProperty(this, \"fitAddon\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__.FitAddon()\n });\n Object.defineProperty(this, \"scrollPos\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"disposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.disposer)()\n });\n Object.defineProperty(this, \"fit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n // Since this function is debounced we need to read this value as late as possible\n if (!this.xterm) {\n return;\n }\n try {\n this.fitAddon.fit();\n const { cols, rows } = this.xterm;\n this.api.sendTerminalSize(cols, rows);\n }\n catch (error) {\n // see https://github.com/lensapp/lens/issues/1891\n _common_logger__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error(`[TERMINAL]: failed to resize terminal to fit`, error);\n }\n }\n });\n Object.defineProperty(this, \"fitLazy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default()(this.fit, 250)\n });\n Object.defineProperty(this, \"focus\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.xterm.focus();\n }\n });\n Object.defineProperty(this, \"onApiData\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (data) => {\n this.xterm.write(data);\n }\n });\n Object.defineProperty(this, \"onData\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (data) => {\n if (!this.api.isReady)\n return;\n this.api.sendMessage({\n type: _api_terminal_api__WEBPACK_IMPORTED_MODULE_3__.TerminalChannels.STDIN,\n data,\n });\n }\n });\n Object.defineProperty(this, \"onScroll\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.scrollPos = this.viewport.scrollTop;\n }\n });\n Object.defineProperty(this, \"onClear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.xterm.clear();\n }\n });\n Object.defineProperty(this, \"onResize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.fitLazy();\n this.focus();\n }\n });\n Object.defineProperty(this, \"onActivate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.fit();\n setTimeout(() => this.focus(), 250); // delay used to prevent focus on active tab\n this.viewport.scrollTop = this.scrollPos; // restore last scroll position\n }\n });\n Object.defineProperty(this, \"onClickLink\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt, link) => {\n window.open(link, \"_blank\");\n }\n });\n Object.defineProperty(this, \"onContextMenu\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n if (\n // don't paste if user hasn't turned on the feature\n _common_user_store__WEBPACK_IMPORTED_MODULE_8__.UserStore.getInstance().terminalCopyOnSelect\n // don't paste if the clipboard doesn't have text\n && electron__WEBPACK_IMPORTED_MODULE_9__.clipboard.availableFormats().includes(\"text/plain\")) {\n this.xterm.paste(electron__WEBPACK_IMPORTED_MODULE_9__.clipboard.readText());\n }\n }\n });\n Object.defineProperty(this, \"onSelectionChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n const selection = this.xterm.getSelection().trim();\n if (_common_user_store__WEBPACK_IMPORTED_MODULE_8__.UserStore.getInstance().terminalCopyOnSelect && selection) {\n electron__WEBPACK_IMPORTED_MODULE_9__.clipboard.writeText(selection);\n }\n }\n });\n Object.defineProperty(this, \"setFontSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (size) => {\n this.xterm.options.fontSize = size;\n }\n });\n Object.defineProperty(this, \"setFontFamily\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (family) => {\n this.xterm.options.fontFamily = family;\n }\n });\n Object.defineProperty(this, \"keyHandler\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const { code, ctrlKey, metaKey } = evt;\n // Handle custom hotkey bindings\n if (ctrlKey) {\n switch (code) {\n // Ctrl+C: prevent terminal exit on windows / linux (?)\n case \"KeyC\":\n if (this.xterm.hasSelection())\n return false;\n break;\n // Ctrl+W: prevent unexpected terminal tab closing, e.g. editing file in vim\n case \"KeyW\":\n evt.preventDefault();\n break;\n }\n }\n //Ctrl+K: clear the entire buffer, making the prompt line the new first line on mac os\n if (_common_vars__WEBPACK_IMPORTED_MODULE_6__.isMac && metaKey) {\n switch (code) {\n case \"KeyK\":\n this.onClear();\n break;\n }\n }\n return true;\n }\n });\n // enable terminal addons\n this.xterm.loadAddon(this.fitAddon);\n this.xterm.open(Terminal.spawningPool);\n this.xterm.registerLinkMatcher(/https?:\\/\\/[^\\s]+/i, this.onClickLink);\n this.xterm.attachCustomKeyEventHandler(this.keyHandler);\n this.xterm.onSelectionChange(this.onSelectionChange);\n // bind events\n const onDataHandler = this.xterm.onData(this.onData);\n const clearOnce = (0,lodash__WEBPACK_IMPORTED_MODULE_7__.once)(this.onClear);\n this.viewport.addEventListener(\"scroll\", this.onScroll);\n this.elem.addEventListener(\"contextmenu\", this.onContextMenu);\n this.api.once(\"ready\", clearOnce);\n this.api.once(\"connected\", clearOnce);\n this.api.on(\"data\", this.onApiData);\n window.addEventListener(\"resize\", this.onResize);\n this.disposer.push((0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _theme_store__WEBPACK_IMPORTED_MODULE_4__.ThemeStore.getInstance().xtermColors, colors => {\n var _a;\n (_a = this.xterm) === null || _a === void 0 ? void 0 : _a.setOption(\"theme\", colors);\n }, {\n fireImmediately: true,\n }), (0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _common_user_store__WEBPACK_IMPORTED_MODULE_8__.UserStore.getInstance().terminalConfig.fontSize, this.setFontSize, {\n fireImmediately: true,\n }), (0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _common_user_store__WEBPACK_IMPORTED_MODULE_8__.UserStore.getInstance().terminalConfig.fontFamily, this.setFontFamily, {\n fireImmediately: true,\n }), () => onDataHandler.dispose(), () => this.fitAddon.dispose(), () => this.api.removeAllListeners(), () => window.removeEventListener(\"resize\", this.onResize), () => this.elem.removeEventListener(\"contextmenu\", this.onContextMenu));\n }\n static get spawningPool() {\n return document.getElementById(\"terminal-init\");\n }\n get elem() {\n var _a;\n return (_a = this.xterm) === null || _a === void 0 ? void 0 : _a.element;\n }\n get viewport() {\n return this.xterm.element.querySelector(\".xterm-viewport\");\n }\n attachTo(parentElem) {\n parentElem.appendChild(this.elem);\n this.onActivate();\n }\n detach() {\n const { elem } = this;\n if (elem) {\n Terminal.spawningPool.appendChild(elem);\n }\n }\n destroy() {\n if (this.xterm) {\n this.disposer();\n this.xterm.dispose();\n this.xterm = null;\n }\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/dock/terminal/terminal.ts?");
37840
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Terminal\": () => (/* binding */ Terminal)\n/* harmony export */ });\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm */ \"./node_modules/xterm/lib/xterm.js\");\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(xterm__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! xterm-addon-fit */ \"./node_modules/xterm-addon-fit/lib/xterm-addon-fit.js\");\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../common/user-store */ \"./src/common/user-store/index.ts\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _common_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../common/logger */ \"./src/common/logger.ts\");\n/* harmony import */ var _common_terminal_channels__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../common/terminal/channels */ \"./src/common/terminal/channels.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\n\n\n\n\n\nclass Terminal {\n constructor(tabId, api) {\n Object.defineProperty(this, \"tabId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: tabId\n });\n Object.defineProperty(this, \"api\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: api\n });\n Object.defineProperty(this, \"terminalConfig\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: _common_user_store__WEBPACK_IMPORTED_MODULE_7__.UserStore.getInstance().terminalConfig\n });\n Object.defineProperty(this, \"xterm\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new xterm__WEBPACK_IMPORTED_MODULE_1__.Terminal({\n cursorBlink: true,\n cursorStyle: \"bar\",\n fontSize: this.terminalConfig.fontSize,\n fontFamily: this.terminalConfig.fontFamily,\n })\n });\n Object.defineProperty(this, \"fitAddon\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__.FitAddon()\n });\n Object.defineProperty(this, \"scrollPos\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"disposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.disposer)()\n });\n Object.defineProperty(this, \"fit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n // Since this function is debounced we need to read this value as late as possible\n if (!this.xterm) {\n return;\n }\n try {\n this.fitAddon.fit();\n const { cols, rows } = this.xterm;\n this.api.sendTerminalSize(cols, rows);\n }\n catch (error) {\n // see https://github.com/lensapp/lens/issues/1891\n _common_logger__WEBPACK_IMPORTED_MODULE_9__[\"default\"].error(`[TERMINAL]: failed to resize terminal to fit`, error);\n }\n }\n });\n Object.defineProperty(this, \"fitLazy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default()(this.fit, 250)\n });\n Object.defineProperty(this, \"focus\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.xterm.focus();\n }\n });\n Object.defineProperty(this, \"onApiData\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (data) => {\n this.xterm.write(data);\n }\n });\n Object.defineProperty(this, \"onData\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (data) => {\n if (!this.api.isReady)\n return;\n this.api.sendMessage({\n type: _common_terminal_channels__WEBPACK_IMPORTED_MODULE_10__.TerminalChannels.STDIN,\n data,\n });\n }\n });\n Object.defineProperty(this, \"onScroll\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.scrollPos = this.viewport.scrollTop;\n }\n });\n Object.defineProperty(this, \"onClear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.xterm.clear();\n }\n });\n Object.defineProperty(this, \"onResize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.fitLazy();\n this.focus();\n }\n });\n Object.defineProperty(this, \"onActivate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.fit();\n setTimeout(() => this.focus(), 250); // delay used to prevent focus on active tab\n this.viewport.scrollTop = this.scrollPos; // restore last scroll position\n }\n });\n Object.defineProperty(this, \"onClickLink\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt, link) => {\n window.open(link, \"_blank\");\n }\n });\n Object.defineProperty(this, \"onContextMenu\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n if (\n // don't paste if user hasn't turned on the feature\n _common_user_store__WEBPACK_IMPORTED_MODULE_7__.UserStore.getInstance().terminalCopyOnSelect\n // don't paste if the clipboard doesn't have text\n && electron__WEBPACK_IMPORTED_MODULE_8__.clipboard.availableFormats().includes(\"text/plain\")) {\n this.xterm.paste(electron__WEBPACK_IMPORTED_MODULE_8__.clipboard.readText());\n }\n }\n });\n Object.defineProperty(this, \"onSelectionChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n const selection = this.xterm.getSelection().trim();\n if (_common_user_store__WEBPACK_IMPORTED_MODULE_7__.UserStore.getInstance().terminalCopyOnSelect && selection) {\n electron__WEBPACK_IMPORTED_MODULE_8__.clipboard.writeText(selection);\n }\n }\n });\n Object.defineProperty(this, \"setFontSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (size) => {\n this.xterm.options.fontSize = size;\n }\n });\n Object.defineProperty(this, \"setFontFamily\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (family) => {\n this.xterm.options.fontFamily = family;\n }\n });\n Object.defineProperty(this, \"keyHandler\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const { code, ctrlKey, metaKey } = evt;\n // Handle custom hotkey bindings\n if (ctrlKey) {\n switch (code) {\n // Ctrl+C: prevent terminal exit on windows / linux (?)\n case \"KeyC\":\n if (this.xterm.hasSelection())\n return false;\n break;\n // Ctrl+W: prevent unexpected terminal tab closing, e.g. editing file in vim\n case \"KeyW\":\n evt.preventDefault();\n break;\n }\n }\n //Ctrl+K: clear the entire buffer, making the prompt line the new first line on mac os\n if (_common_vars__WEBPACK_IMPORTED_MODULE_5__.isMac && metaKey) {\n switch (code) {\n case \"KeyK\":\n this.onClear();\n break;\n }\n }\n return true;\n }\n });\n // enable terminal addons\n this.xterm.loadAddon(this.fitAddon);\n this.xterm.open(Terminal.spawningPool);\n this.xterm.registerLinkMatcher(/https?:\\/\\/[^\\s]+/i, this.onClickLink);\n this.xterm.attachCustomKeyEventHandler(this.keyHandler);\n this.xterm.onSelectionChange(this.onSelectionChange);\n // bind events\n const onDataHandler = this.xterm.onData(this.onData);\n const clearOnce = (0,lodash__WEBPACK_IMPORTED_MODULE_6__.once)(this.onClear);\n this.viewport.addEventListener(\"scroll\", this.onScroll);\n this.elem.addEventListener(\"contextmenu\", this.onContextMenu);\n this.api.once(\"ready\", clearOnce);\n this.api.once(\"connected\", clearOnce);\n this.api.on(\"data\", this.onApiData);\n window.addEventListener(\"resize\", this.onResize);\n this.disposer.push((0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _theme_store__WEBPACK_IMPORTED_MODULE_3__.ThemeStore.getInstance().xtermColors, colors => {\n var _a;\n (_a = this.xterm) === null || _a === void 0 ? void 0 : _a.setOption(\"theme\", colors);\n }, {\n fireImmediately: true,\n }), (0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _common_user_store__WEBPACK_IMPORTED_MODULE_7__.UserStore.getInstance().terminalConfig.fontSize, this.setFontSize, {\n fireImmediately: true,\n }), (0,mobx__WEBPACK_IMPORTED_MODULE_11__.reaction)(() => _common_user_store__WEBPACK_IMPORTED_MODULE_7__.UserStore.getInstance().terminalConfig.fontFamily, this.setFontFamily, {\n fireImmediately: true,\n }), () => onDataHandler.dispose(), () => this.fitAddon.dispose(), () => this.api.removeAllListeners(), () => window.removeEventListener(\"resize\", this.onResize), () => this.elem.removeEventListener(\"contextmenu\", this.onContextMenu));\n }\n static get spawningPool() {\n return document.getElementById(\"terminal-init\");\n }\n get elem() {\n var _a;\n return (_a = this.xterm) === null || _a === void 0 ? void 0 : _a.element;\n }\n get viewport() {\n return this.xterm.element.querySelector(\".xterm-viewport\");\n }\n attachTo(parentElem) {\n parentElem.appendChild(this.elem);\n this.onActivate();\n }\n detach() {\n const { elem } = this;\n if (elem) {\n Terminal.spawningPool.appendChild(elem);\n }\n }\n destroy() {\n if (this.xterm) {\n this.disposer();\n this.xterm.dispose();\n this.xterm = null;\n }\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/dock/terminal/terminal.ts?");
37830
37841
 
37831
37842
  /***/ }),
37832
37843
 
@@ -38321,7 +38332,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
38321
38332
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38322
38333
 
38323
38334
  "use strict";
38324
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KubeObjectMenu\": () => (/* binding */ KubeObjectMenu)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../menu */ \"./src/renderer/components/menu/index.ts\");\n/* harmony import */ var lodash_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/identity */ \"./node_modules/lodash/identity.js\");\n/* harmony import */ var lodash_identity__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_identity__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ogre-tools/injectable-react */ \"./node_modules/@ogre-tools/injectable-react/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _dependencies_cluster_name_injectable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dependencies/cluster-name.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/cluster-name.injectable.ts\");\n/* harmony import */ var _dock_edit_resource_edit_resource_tab_injectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dock/edit-resource/edit-resource-tab.injectable */ \"./src/renderer/components/dock/edit-resource/edit-resource-tab.injectable.ts\");\n/* harmony import */ var _dependencies_hide_details_injectable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dependencies/hide-details.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/hide-details.injectable.ts\");\n/* harmony import */ var _dependencies_kube_object_menu_items_kube_object_menu_items_injectable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dependencies/kube-object-menu-items/kube-object-menu-items.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/kube-object-menu-items/kube-object-menu-items.injectable.ts\");\n/* harmony import */ var _dependencies_api_manager_injectable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dependencies/api-manager.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/api-manager.injectable.ts\");\n/* harmony import */ var _on_context_menu_open_injectable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./on-context-menu-open.injectable */ \"./src/renderer/components/kube-object-menu/on-context-menu-open.injectable.ts\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../icon */ \"./src/renderer/components/icon/index.ts\");\n/* harmony import */ var _navigation_navigate_injectable__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../navigation/navigate.injectable */ \"./src/renderer/navigation/navigate.injectable.ts\");\n/* harmony import */ var _confirm_dialog_with_confirm_injectable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../confirm-dialog/with-confirm.injectable */ \"./src/renderer/components/confirm-dialog/with-confirm.injectable.ts\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet NonInjectedKubeObjectMenu = class NonInjectedKubeObjectMenu extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"menuItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_14__.observable.array()\n });\n Object.defineProperty(this, \"renderContextMenuItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (object) => ([...this.menuItems]\n .reverse() // This is done because the order that we \"grow\" is right->left\n .map(({ icon, ...rest }) => ({\n ...rest,\n icon: typeof icon === \"string\"\n ? { material: icon }\n : icon,\n }))\n .map((item, index) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_menu__WEBPACK_IMPORTED_MODULE_2__.MenuItem, { key: `context-menu-item-${index}`, onClick: () => item.onClick(object), \"data-testid\": `menu-action-${item.title.toLowerCase().replace(/\\s+/, \"-\")}` },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_icon__WEBPACK_IMPORTED_MODULE_11__.Icon, { ...item.icon, interactive: this.props.toolbar, tooltip: item.title }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"title\" }, item.title)))))\n });\n }\n renderRemoveMessage(object) {\n const breadcrumbParts = [object.getNs(), object.getName()];\n const breadcrumb = breadcrumbParts.filter((lodash_identity__WEBPACK_IMPORTED_MODULE_3___default())).join(\"/\");\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"p\", null,\n \"Remove \",\n object.kind,\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"b\", null, breadcrumb),\n \" from \",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"b\", null, this.props.clusterName),\n \"?\"));\n }\n renderMenuItems() {\n const { object, toolbar } = this.props;\n return this.props.kubeObjectMenuItems.map((MenuItem, index) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(MenuItem, { object: object, toolbar: toolbar, key: `menu-item-${index}` })));\n }\n emitOnContextMenuOpen(object) {\n const { apiManager, editable, removable, hideDetails, createEditResourceTab, withConfirmation, removeAction, onContextMenuOpen, navigate, updateAction, } = this.props;\n const store = apiManager.getStore(object.selfLink);\n const isEditable = editable !== null && editable !== void 0 ? editable : (Boolean(store === null || store === void 0 ? void 0 : store.patch) || Boolean(updateAction));\n const isRemovable = removable !== null && removable !== void 0 ? removable : (Boolean(store === null || store === void 0 ? void 0 : store.remove) || Boolean(removeAction));\n (0,mobx__WEBPACK_IMPORTED_MODULE_14__.runInAction)(() => {\n this.menuItems.clear();\n if (isRemovable) {\n this.menuItems.push({\n title: \"Delete\",\n icon: \"delete\",\n onClick: withConfirmation({\n message: this.renderRemoveMessage(object),\n labelOk: \"Remove\",\n ok: async () => {\n hideDetails();\n if (removeAction) {\n await removeAction();\n }\n else if (store === null || store === void 0 ? void 0 : store.remove) {\n await store.remove(object);\n }\n },\n }),\n });\n }\n if (isEditable) {\n this.menuItems.push({\n title: \"Edit\",\n icon: \"edit\",\n onClick: async () => {\n hideDetails();\n if (updateAction) {\n await updateAction();\n }\n else {\n createEditResourceTab(object);\n }\n },\n });\n }\n });\n onContextMenuOpen(object, {\n menuItems: this.menuItems,\n navigate,\n });\n }\n render() {\n const { className, editable, removable, object, removeAction, // This is here so we don't pass it down to `<MenuAction>`\n removeConfirmationMessage, // This is here so we don't pass it down to `<MenuAction>`\n updateAction, // This is here so we don't pass it down to `<MenuAction>`\n ...menuProps } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_menu__WEBPACK_IMPORTED_MODULE_2__.MenuActions, { className: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.cssNames)(\"KubeObjectMenu\", className), onOpen: object ? () => this.emitOnContextMenuOpen(object) : undefined, ...menuProps },\n this.renderMenuItems(),\n object && this.renderContextMenuItems(object)));\n }\n};\nNonInjectedKubeObjectMenu = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_15__.observer\n], NonInjectedKubeObjectMenu);\nconst KubeObjectMenu = (0,_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__.withInjectables)(NonInjectedKubeObjectMenu, {\n getProps: (di, props) => ({\n ...props,\n clusterName: di.inject(_dependencies_cluster_name_injectable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n apiManager: di.inject(_dependencies_api_manager_injectable__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n createEditResourceTab: di.inject(_dock_edit_resource_edit_resource_tab_injectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n hideDetails: di.inject(_dependencies_hide_details_injectable__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n kubeObjectMenuItems: di.inject(_dependencies_kube_object_menu_items_kube_object_menu_items_injectable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n kubeObject: props.object,\n }),\n onContextMenuOpen: di.inject(_on_context_menu_open_injectable__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n navigate: di.inject(_navigation_navigate_injectable__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n withConfirmation: di.inject(_confirm_dialog_with_confirm_injectable__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n }),\n});\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-menu/kube-object-menu.tsx?");
38335
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KubeObjectMenu\": () => (/* binding */ KubeObjectMenu)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../menu */ \"./src/renderer/components/menu/index.ts\");\n/* harmony import */ var lodash_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/identity */ \"./node_modules/lodash/identity.js\");\n/* harmony import */ var lodash_identity__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_identity__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ogre-tools/injectable-react */ \"./node_modules/@ogre-tools/injectable-react/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _dependencies_cluster_name_injectable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dependencies/cluster-name.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/cluster-name.injectable.ts\");\n/* harmony import */ var _dock_edit_resource_edit_resource_tab_injectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dock/edit-resource/edit-resource-tab.injectable */ \"./src/renderer/components/dock/edit-resource/edit-resource-tab.injectable.ts\");\n/* harmony import */ var _dependencies_hide_details_injectable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dependencies/hide-details.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/hide-details.injectable.ts\");\n/* harmony import */ var _dependencies_kube_object_menu_items_kube_object_menu_items_injectable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dependencies/kube-object-menu-items/kube-object-menu-items.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/kube-object-menu-items/kube-object-menu-items.injectable.ts\");\n/* harmony import */ var _dependencies_api_manager_injectable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dependencies/api-manager.injectable */ \"./src/renderer/components/kube-object-menu/dependencies/api-manager.injectable.ts\");\n/* harmony import */ var _on_context_menu_open_injectable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./on-context-menu-open.injectable */ \"./src/renderer/components/kube-object-menu/on-context-menu-open.injectable.ts\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../icon */ \"./src/renderer/components/icon/index.ts\");\n/* harmony import */ var _navigation_navigate_injectable__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../navigation/navigate.injectable */ \"./src/renderer/navigation/navigate.injectable.ts\");\n/* harmony import */ var _confirm_dialog_with_confirm_injectable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../confirm-dialog/with-confirm.injectable */ \"./src/renderer/components/confirm-dialog/with-confirm.injectable.ts\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet NonInjectedKubeObjectMenu = class NonInjectedKubeObjectMenu extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"menuItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_14__.observable.array()\n });\n Object.defineProperty(this, \"renderContextMenuItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (object) => ([...this.menuItems]\n .reverse() // This is done because the order that we \"grow\" is right->left\n .map(({ icon, ...rest }) => ({\n ...rest,\n icon: typeof icon === \"string\"\n ? { material: icon }\n : icon,\n }))\n .map((item, index) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_menu__WEBPACK_IMPORTED_MODULE_2__.MenuItem, { key: `context-menu-item-${index}`, onClick: () => item.onClick(object), \"data-testid\": `menu-action-${item.title.toLowerCase().replace(/\\s+/, \"-\")}` },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_icon__WEBPACK_IMPORTED_MODULE_11__.Icon, { ...item.icon, interactive: this.props.toolbar, tooltip: item.title }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"title\" }, item.title)))))\n });\n }\n componentDidUpdate(prevProps) {\n if (prevProps.object !== this.props.object && this.props.object) {\n this.emitOnContextMenuOpen(this.props.object);\n }\n }\n renderRemoveMessage(object) {\n const breadcrumbParts = [object.getNs(), object.getName()];\n const breadcrumb = breadcrumbParts.filter((lodash_identity__WEBPACK_IMPORTED_MODULE_3___default())).join(\"/\");\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"p\", null,\n \"Remove \",\n object.kind,\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"b\", null, breadcrumb),\n \" from \",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"b\", null, this.props.clusterName),\n \"?\"));\n }\n renderMenuItems() {\n const { object, toolbar } = this.props;\n return this.props.kubeObjectMenuItems.map((MenuItem, index) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement(MenuItem, { object: object, toolbar: toolbar, key: `menu-item-${index}` })));\n }\n emitOnContextMenuOpen(object) {\n const { apiManager, editable, removable, hideDetails, createEditResourceTab, withConfirmation, removeAction, onContextMenuOpen, navigate, updateAction, } = this.props;\n const store = apiManager.getStore(object.selfLink);\n const isEditable = editable !== null && editable !== void 0 ? editable : (Boolean(store === null || store === void 0 ? void 0 : store.patch) || Boolean(updateAction));\n const isRemovable = removable !== null && removable !== void 0 ? removable : (Boolean(store === null || store === void 0 ? void 0 : store.remove) || Boolean(removeAction));\n (0,mobx__WEBPACK_IMPORTED_MODULE_14__.runInAction)(() => {\n this.menuItems.clear();\n if (isRemovable) {\n this.menuItems.push({\n title: \"Delete\",\n icon: \"delete\",\n onClick: withConfirmation({\n message: this.renderRemoveMessage(object),\n labelOk: \"Remove\",\n ok: async () => {\n hideDetails();\n if (removeAction) {\n await removeAction();\n }\n else if (store === null || store === void 0 ? void 0 : store.remove) {\n await store.remove(object);\n }\n },\n }),\n });\n }\n if (isEditable) {\n this.menuItems.push({\n title: \"Edit\",\n icon: \"edit\",\n onClick: async () => {\n hideDetails();\n if (updateAction) {\n await updateAction();\n }\n else {\n createEditResourceTab(object);\n }\n },\n });\n }\n });\n onContextMenuOpen(object, {\n menuItems: this.menuItems,\n navigate,\n });\n }\n render() {\n const { className, editable, removable, object, removeAction, // This is here so we don't pass it down to `<MenuAction>`\n removeConfirmationMessage, // This is here so we don't pass it down to `<MenuAction>`\n updateAction, // This is here so we don't pass it down to `<MenuAction>`\n ...menuProps } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_menu__WEBPACK_IMPORTED_MODULE_2__.MenuActions, { className: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.cssNames)(\"KubeObjectMenu\", className), onOpen: object ? () => this.emitOnContextMenuOpen(object) : undefined, ...menuProps },\n this.renderMenuItems(),\n object && this.renderContextMenuItems(object)));\n }\n};\nNonInjectedKubeObjectMenu = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_15__.observer\n], NonInjectedKubeObjectMenu);\nconst KubeObjectMenu = (0,_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_4__.withInjectables)(NonInjectedKubeObjectMenu, {\n getProps: (di, props) => ({\n ...props,\n clusterName: di.inject(_dependencies_cluster_name_injectable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n apiManager: di.inject(_dependencies_api_manager_injectable__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n createEditResourceTab: di.inject(_dock_edit_resource_edit_resource_tab_injectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n hideDetails: di.inject(_dependencies_hide_details_injectable__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n kubeObjectMenuItems: di.inject(_dependencies_kube_object_menu_items_kube_object_menu_items_injectable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n kubeObject: props.object,\n }),\n onContextMenuOpen: di.inject(_on_context_menu_open_injectable__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n navigate: di.inject(_navigation_navigate_injectable__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n withConfirmation: di.inject(_confirm_dialog_with_confirm_injectable__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n }),\n});\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-menu/kube-object-menu.tsx?");
38325
38336
 
38326
38337
  /***/ }),
38327
38338
 
@@ -39047,7 +39058,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
39047
39058
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
39048
39059
 
39049
39060
  "use strict";
39050
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Tooltip\": () => (/* binding */ Tooltip),\n/* harmony export */ \"TooltipPosition\": () => (/* binding */ TooltipPosition)\n/* harmony export */ });\n/* harmony import */ var _tooltip_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tooltip.scss */ \"./src/renderer/components/tooltip/tooltip.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\nvar TooltipPosition;\n(function (TooltipPosition) {\n TooltipPosition[\"TOP\"] = \"top\";\n TooltipPosition[\"BOTTOM\"] = \"bottom\";\n TooltipPosition[\"LEFT\"] = \"left\";\n TooltipPosition[\"RIGHT\"] = \"right\";\n TooltipPosition[\"TOP_LEFT\"] = \"top_left\";\n TooltipPosition[\"TOP_RIGHT\"] = \"top_right\";\n TooltipPosition[\"BOTTOM_LEFT\"] = \"bottom_left\";\n TooltipPosition[\"BOTTOM_RIGHT\"] = \"bottom_right\";\n})(TooltipPosition || (TooltipPosition = {}));\nconst defaultProps = {\n usePortal: true,\n offset: 10,\n};\nlet Tooltip = class Tooltip extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n var _a;\n super(props);\n Object.defineProperty(this, \"elem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"activePosition\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (_a = this.props.visible) !== null && _a !== void 0 ? _a : false\n });\n Object.defineProperty(this, \"isContentVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // animation manager\n (0,mobx__WEBPACK_IMPORTED_MODULE_4__.makeObservable)(this);\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.autoBind)(this);\n }\n get targetElem() {\n return document.getElementById(this.props.targetId);\n }\n get hoverTarget() {\n if (this.props.tooltipOnParentHover) {\n return this.targetElem.parentElement;\n }\n return this.targetElem;\n }\n componentDidMount() {\n this.hoverTarget.addEventListener(\"mouseenter\", this.onEnterTarget);\n this.hoverTarget.addEventListener(\"mouseleave\", this.onLeaveTarget);\n }\n componentDidUpdate() {\n this.refreshPosition();\n }\n componentWillUnmount() {\n this.hoverTarget.removeEventListener(\"mouseenter\", this.onEnterTarget);\n this.hoverTarget.removeEventListener(\"mouseleave\", this.onLeaveTarget);\n }\n onEnterTarget() {\n this.isVisible = true;\n requestAnimationFrame((0,mobx__WEBPACK_IMPORTED_MODULE_4__.action)(() => this.isContentVisible = true));\n }\n onLeaveTarget() {\n this.isVisible = false;\n this.isContentVisible = false;\n }\n refreshPosition() {\n const { preferredPositions } = this.props;\n const { elem, targetElem } = this;\n if (!elem) {\n return;\n }\n let positions = new Set([\n TooltipPosition.RIGHT,\n TooltipPosition.BOTTOM,\n TooltipPosition.TOP,\n TooltipPosition.LEFT,\n TooltipPosition.TOP_RIGHT,\n TooltipPosition.TOP_LEFT,\n TooltipPosition.BOTTOM_RIGHT,\n TooltipPosition.BOTTOM_LEFT,\n ]);\n if (preferredPositions) {\n positions = new Set([\n ...[preferredPositions].flat(),\n ...positions,\n ]);\n }\n // reset position first and get all possible client-rect area for tooltip element\n this.setPosition({ left: 0, top: 0 });\n const selfBounds = elem.getBoundingClientRect();\n const targetBounds = targetElem.getBoundingClientRect();\n const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;\n // find proper position\n for (const pos of positions) {\n const { left, top, right, bottom } = this.getPosition(pos, selfBounds, targetBounds);\n const fitsToWindow = left >= 0 && top >= 0 && right <= viewportWidth && bottom <= viewportHeight;\n if (fitsToWindow) {\n this.activePosition = pos;\n this.setPosition({ top, left });\n return;\n }\n }\n // apply fallback position if nothing helped from above\n const fallbackPosition = Array.from(positions)[0];\n const { left, top } = this.getPosition(fallbackPosition, selfBounds, targetBounds);\n this.activePosition = fallbackPosition;\n this.setPosition({ left, top });\n }\n setPosition(pos) {\n if (!this.elem) {\n return;\n }\n const elemStyle = this.elem.style;\n elemStyle.left = `${pos.left}px`;\n elemStyle.top = `${pos.top}px`;\n }\n getPosition(position, tooltipBounds, targetBounds) {\n let left;\n let top;\n const offset = this.props.offset;\n const horizontalCenter = targetBounds.left + (targetBounds.width - tooltipBounds.width) / 2;\n const verticalCenter = targetBounds.top + (targetBounds.height - tooltipBounds.height) / 2;\n const topCenter = targetBounds.top - tooltipBounds.height - offset;\n const bottomCenter = targetBounds.bottom + offset;\n switch (position) {\n case \"top\":\n left = horizontalCenter;\n top = topCenter;\n break;\n case \"bottom\":\n left = horizontalCenter;\n top = bottomCenter;\n break;\n case \"left\":\n top = verticalCenter;\n left = targetBounds.left - tooltipBounds.width - offset;\n break;\n case \"right\":\n top = verticalCenter;\n left = targetBounds.right + offset;\n break;\n case \"top_left\":\n left = targetBounds.left;\n top = topCenter;\n break;\n case \"top_right\":\n left = targetBounds.right - tooltipBounds.width;\n top = topCenter;\n break;\n case \"bottom_left\":\n top = bottomCenter;\n left = targetBounds.left;\n break;\n case \"bottom_right\":\n top = bottomCenter;\n left = targetBounds.right - tooltipBounds.width;\n break;\n }\n return {\n left,\n top,\n right: left + tooltipBounds.width,\n bottom: top + tooltipBounds.height,\n };\n }\n bindRef(elem) {\n this.elem = elem;\n }\n render() {\n if (!this.isVisible) {\n return null;\n }\n const { style, formatters, usePortal, children } = this.props;\n const className = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"Tooltip\", this.props.className, formatters, this.activePosition, {\n visible: this.isContentVisible,\n formatter: !!formatters,\n });\n const tooltip = (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: className, style: style, ref: this.bindRef, role: \"tooltip\" }, children));\n if (usePortal) {\n return (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)(tooltip, document.body);\n }\n return tooltip;\n }\n};\nObject.defineProperty(Tooltip, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: defaultProps\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable.ref,\n __metadata(\"design:type\", HTMLElement)\n], Tooltip.prototype, \"elem\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", String)\n], Tooltip.prototype, \"activePosition\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", Object)\n], Tooltip.prototype, \"isVisible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", Object)\n], Tooltip.prototype, \"isContentVisible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Tooltip.prototype, \"onEnterTarget\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Tooltip.prototype, \"onLeaveTarget\", null);\nTooltip = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_5__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], Tooltip);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/tooltip/tooltip.tsx?");
39061
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Tooltip\": () => (/* binding */ Tooltip),\n/* harmony export */ \"TooltipPosition\": () => (/* binding */ TooltipPosition)\n/* harmony export */ });\n/* harmony import */ var _tooltip_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tooltip.scss */ \"./src/renderer/components/tooltip/tooltip.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\nvar TooltipPosition;\n(function (TooltipPosition) {\n TooltipPosition[\"TOP\"] = \"top\";\n TooltipPosition[\"BOTTOM\"] = \"bottom\";\n TooltipPosition[\"LEFT\"] = \"left\";\n TooltipPosition[\"RIGHT\"] = \"right\";\n TooltipPosition[\"TOP_LEFT\"] = \"top_left\";\n TooltipPosition[\"TOP_RIGHT\"] = \"top_right\";\n TooltipPosition[\"BOTTOM_LEFT\"] = \"bottom_left\";\n TooltipPosition[\"BOTTOM_RIGHT\"] = \"bottom_right\";\n})(TooltipPosition || (TooltipPosition = {}));\nconst defaultProps = {\n usePortal: true,\n offset: 10,\n};\nlet Tooltip = class Tooltip extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"elem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"activePosition\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isContentVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // animation manager\n (0,mobx__WEBPACK_IMPORTED_MODULE_4__.makeObservable)(this);\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.autoBind)(this);\n }\n get targetElem() {\n return document.getElementById(this.props.targetId);\n }\n get hoverTarget() {\n if (this.props.tooltipOnParentHover) {\n return this.targetElem.parentElement;\n }\n return this.targetElem;\n }\n componentDidMount() {\n this.hoverTarget.addEventListener(\"mouseenter\", this.onEnterTarget);\n this.hoverTarget.addEventListener(\"mouseleave\", this.onLeaveTarget);\n }\n componentDidUpdate() {\n this.refreshPosition();\n }\n componentWillUnmount() {\n this.hoverTarget.removeEventListener(\"mouseenter\", this.onEnterTarget);\n this.hoverTarget.removeEventListener(\"mouseleave\", this.onLeaveTarget);\n }\n onEnterTarget() {\n this.isVisible = true;\n requestAnimationFrame((0,mobx__WEBPACK_IMPORTED_MODULE_4__.action)(() => this.isContentVisible = true));\n }\n onLeaveTarget() {\n this.isVisible = false;\n this.isContentVisible = false;\n }\n refreshPosition() {\n const { preferredPositions } = this.props;\n const { elem, targetElem } = this;\n if (!elem) {\n return;\n }\n let positions = new Set([\n TooltipPosition.RIGHT,\n TooltipPosition.BOTTOM,\n TooltipPosition.TOP,\n TooltipPosition.LEFT,\n TooltipPosition.TOP_RIGHT,\n TooltipPosition.TOP_LEFT,\n TooltipPosition.BOTTOM_RIGHT,\n TooltipPosition.BOTTOM_LEFT,\n ]);\n if (preferredPositions) {\n positions = new Set([\n ...[preferredPositions].flat(),\n ...positions,\n ]);\n }\n // reset position first and get all possible client-rect area for tooltip element\n this.setPosition({ left: 0, top: 0 });\n const selfBounds = elem.getBoundingClientRect();\n const targetBounds = targetElem.getBoundingClientRect();\n const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;\n // find proper position\n for (const pos of positions) {\n const { left, top, right, bottom } = this.getPosition(pos, selfBounds, targetBounds);\n const fitsToWindow = left >= 0 && top >= 0 && right <= viewportWidth && bottom <= viewportHeight;\n if (fitsToWindow) {\n this.activePosition = pos;\n this.setPosition({ top, left });\n return;\n }\n }\n // apply fallback position if nothing helped from above\n const fallbackPosition = Array.from(positions)[0];\n const { left, top } = this.getPosition(fallbackPosition, selfBounds, targetBounds);\n this.activePosition = fallbackPosition;\n this.setPosition({ left, top });\n }\n setPosition(pos) {\n if (!this.elem) {\n return;\n }\n const elemStyle = this.elem.style;\n elemStyle.left = `${pos.left}px`;\n elemStyle.top = `${pos.top}px`;\n }\n getPosition(position, tooltipBounds, targetBounds) {\n let left;\n let top;\n const offset = this.props.offset;\n const horizontalCenter = targetBounds.left + (targetBounds.width - tooltipBounds.width) / 2;\n const verticalCenter = targetBounds.top + (targetBounds.height - tooltipBounds.height) / 2;\n const topCenter = targetBounds.top - tooltipBounds.height - offset;\n const bottomCenter = targetBounds.bottom + offset;\n switch (position) {\n case \"top\":\n left = horizontalCenter;\n top = topCenter;\n break;\n case \"bottom\":\n left = horizontalCenter;\n top = bottomCenter;\n break;\n case \"left\":\n top = verticalCenter;\n left = targetBounds.left - tooltipBounds.width - offset;\n break;\n case \"right\":\n top = verticalCenter;\n left = targetBounds.right + offset;\n break;\n case \"top_left\":\n left = targetBounds.left;\n top = topCenter;\n break;\n case \"top_right\":\n left = targetBounds.right - tooltipBounds.width;\n top = topCenter;\n break;\n case \"bottom_left\":\n top = bottomCenter;\n left = targetBounds.left;\n break;\n case \"bottom_right\":\n top = bottomCenter;\n left = targetBounds.right - tooltipBounds.width;\n break;\n }\n return {\n left,\n top,\n right: left + tooltipBounds.width,\n bottom: top + tooltipBounds.height,\n };\n }\n bindRef(elem) {\n this.elem = elem;\n }\n render() {\n const { style, formatters, usePortal, children, visible = this.isVisible } = this.props;\n if (!visible) {\n return null;\n }\n const className = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"Tooltip\", this.props.className, formatters, this.activePosition, {\n visible: this.isContentVisible || this.props.visible,\n formatter: !!formatters,\n });\n const tooltip = (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: className, style: style, ref: this.bindRef, role: \"tooltip\" }, children));\n if (usePortal) {\n return (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)(tooltip, document.body);\n }\n return tooltip;\n }\n};\nObject.defineProperty(Tooltip, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: defaultProps\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable.ref,\n __metadata(\"design:type\", HTMLDivElement)\n], Tooltip.prototype, \"elem\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", String)\n], Tooltip.prototype, \"activePosition\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", Object)\n], Tooltip.prototype, \"isVisible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.observable,\n __metadata(\"design:type\", Object)\n], Tooltip.prototype, \"isContentVisible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Tooltip.prototype, \"onEnterTarget\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_4__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Tooltip.prototype, \"onLeaveTarget\", null);\nTooltip = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_5__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], Tooltip);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/tooltip/tooltip.tsx?");
39051
39062
 
39052
39063
  /***/ }),
39053
39064
 
@@ -40591,17 +40602,6 @@ module.exports = require("util");
40591
40602
 
40592
40603
  /***/ }),
40593
40604
 
40594
- /***/ "v8":
40595
- /*!*********************!*\
40596
- !*** external "v8" ***!
40597
- \*********************/
40598
- /***/ ((module) => {
40599
-
40600
- "use strict";
40601
- module.exports = require("v8");
40602
-
40603
- /***/ }),
40604
-
40605
40605
  /***/ "vm":
40606
40606
  /*!*********************!*\
40607
40607
  !*** external "vm" ***!
@@ -41280,7 +41280,7 @@ eval("module.exports = JSON.parse('{\"name\":\"winston\",\"description\":\"A log
41280
41280
  /***/ ((module) => {
41281
41281
 
41282
41282
  "use strict";
41283
- eval("module.exports = JSON.parse('{\"name\":\"open-lens\",\"productName\":\"OpenLens\",\"description\":\"OpenLens - Open Source IDE for Kubernetes\",\"homepage\":\"https://github.com/lensapp/lens\",\"version\":\"5.5.2\",\"main\":\"static/build/main.js\",\"copyright\":\"© 2021 OpenLens Authors\",\"license\":\"MIT\",\"author\":{\"name\":\"OpenLens Authors\",\"email\":\"info@k8slens.dev\"},\"scripts\":{\"dev\":\"concurrently -i -k \\\\\"yarn run dev-run -C\\\\\" yarn:dev:*\",\"dev-build\":\"concurrently yarn:compile:*\",\"debug-build\":\"concurrently yarn:compile:main yarn:compile:extension-types\",\"dev-run\":\"nodemon --watch ./static/build/main.js --exec \\\\\"electron --remote-debugging-port=9223 --inspect .\\\\\"\",\"dev:main\":\"yarn run compile:main --watch --progress\",\"dev:renderer\":\"yarn run ts-node webpack/dev-server.ts\",\"compile\":\"env NODE_ENV=production concurrently yarn:compile:*\",\"compile:main\":\"yarn run webpack --config webpack/main.ts\",\"compile:renderer\":\"yarn run webpack --config webpack/renderer.ts\",\"compile:extension-types\":\"yarn run webpack --config webpack/extensions.ts\",\"npm:fix-build-version\":\"yarn run ts-node build/set_build_version.ts\",\"npm:fix-package-version\":\"yarn run ts-node build/set_npm_version.ts\",\"build:linux\":\"yarn run compile && electron-builder --linux --dir\",\"build:mac\":\"yarn run compile && electron-builder --mac --dir\",\"build:win\":\"yarn run compile && electron-builder --win --dir\",\"integration\":\"jest --runInBand --detectOpenHandles --forceExit integration\",\"test:unit\":\"jest --watch --testPathIgnorePatterns integration\",\"test:integration\":\"func() { jest ${1:-xyz} --watch --runInBand --detectOpenHandles --forceExit --modulePaths=[\\\\\"<rootDir>/integration/\\\\\"]; }; func\",\"dist\":\"yarn run compile && electron-builder --publish onTag\",\"dist:dir\":\"yarn run dist --dir -c.compression=store -c.mac.identity=null\",\"download:binaries\":\"yarn run ts-node build/download_binaries.ts\",\"build:tray-icons\":\"yarn run ts-node build/generate-tray-icons.ts\",\"build:theme-vars\":\"yarn run ts-node build/build_theme_vars.ts\",\"lint\":\"PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .\",\"lint:fix\":\"yarn run lint --fix\",\"mkdocs-serve-local\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest\",\"verify-docs\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict\",\"typedocs-extensions-api\":\"yarn run typedoc src/extensions/extension-api.ts\",\"version-checkout\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release/v%s\\\\\" | xargs git checkout -b\",\"version-commit\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release v%s\\\\\" | git commit --no-edit -s -F -\",\"version\":\"yarn run version-checkout && git add package.json && yarn run version-commit\",\"postversion\":\"git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version\"},\"config\":{\"k8sProxyVersion\":\"0.2.1\",\"bundledKubectlVersion\":\"1.23.3\",\"bundledHelmVersion\":\"3.7.2\",\"sentryDsn\":\"\"},\"engines\":{\"node\":\">=14 <15\"},\"jest\":{\"collectCoverage\":false,\"verbose\":true,\"transform\":{\"^.+\\\\\\\\.tsx?$\":\"ts-jest\"},\"moduleNameMapper\":{\"\\\\\\\\.(css|scss)$\":\"identity-obj-proxy\",\"\\\\\\\\.(svg|png|jpg|eot|woff2?|ttf)$\":\"<rootDir>/__mocks__/assetMock.ts\"},\"modulePathIgnorePatterns\":[\"<rootDir>/dist\",\"<rootDir>/src/extensions/npm\"],\"setupFiles\":[\"<rootDir>/src/jest.setup.ts\",\"jest-canvas-mock\"],\"setupFilesAfterEnv\":[\"<rootDir>/src/jest-after-env.setup.ts\"],\"globals\":{\"ts-jest\":{\"isolatedModules\":true}}},\"build\":{\"generateUpdatesFilesForAllChannels\":true,\"files\":[\"static/build/main.js\"],\"afterSign\":\"build/notarize.js\",\"extraResources\":[{\"from\":\"locales/\",\"to\":\"locales/\",\"filter\":\"**/*.js\"},{\"from\":\"static/\",\"to\":\"static/\",\"filter\":\"!**/main.js\"},{\"from\":\"build/tray\",\"to\":\"static/icons\",\"filter\":\"*.png\"},{\"from\":\"extensions/\",\"to\":\"./extensions/\",\"filter\":[\"**/*.tgz\",\"**/package.json\",\"!**/node_modules\"]},{\"from\":\"templates/\",\"to\":\"./templates/\",\"filter\":\"**/*.yaml\"},\"LICENSE\"],\"linux\":{\"category\":\"Network\",\"artifactName\":\"${productName}-${version}.${arch}.${ext}\",\"target\":[\"deb\",\"rpm\",\"AppImage\"],\"extraResources\":[{\"from\":\"binaries/client/linux/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/linux/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/linux/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"rpm\":{\"fpm\":[\"--rpm-rpmbuild-define=%define _build_id_links none\"]},\"mac\":{\"hardenedRuntime\":true,\"gatekeeperAssess\":false,\"entitlements\":\"build/entitlements.mac.plist\",\"entitlementsInherit\":\"build/entitlements.mac.plist\",\"extraResources\":[{\"from\":\"binaries/client/darwin/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/darwin/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/darwin/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"win\":{\"target\":[\"nsis\"],\"extraResources\":[{\"from\":\"binaries/client/windows/${arch}/kubectl.exe\",\"to\":\"./${arch}/kubectl.exe\"},{\"from\":\"binaries/client/windows/${arch}/lens-k8s-proxy.exe\",\"to\":\"./${arch}/lens-k8s-proxy.exe\"},{\"from\":\"binaries/client/windows/${arch}/helm.exe\",\"to\":\"./${arch}/helm.exe\"}]},\"nsis\":{\"include\":\"build/installer.nsh\",\"oneClick\":false,\"allowElevation\":true,\"createStartMenuShortcut\":true,\"allowToChangeInstallationDirectory\":true},\"protocols\":{\"name\":\"Lens Protocol Handler\",\"schemes\":[\"lens\"],\"role\":\"Viewer\"}},\"dependencies\":{\"@astronautlabs/jsonpath\":\"^1.1.0\",\"@hapi/call\":\"^8.0.1\",\"@hapi/subtext\":\"^7.0.3\",\"@kubernetes/client-node\":\"^0.16.3\",\"@ogre-tools/fp\":\"5.2.0\",\"@ogre-tools/injectable\":\"5.2.0\",\"@ogre-tools/injectable-react\":\"5.2.0\",\"@sentry/electron\":\"^3.0.7\",\"@sentry/integrations\":\"^6.19.3\",\"@types/circular-dependency-plugin\":\"5.0.5\",\"abort-controller\":\"^3.0.0\",\"auto-bind\":\"^4.0.0\",\"await-lock\":\"^2.2.2\",\"byline\":\"^5.0.0\",\"chokidar\":\"^3.5.3\",\"conf\":\"^7.1.2\",\"crypto-js\":\"^4.1.1\",\"electron-devtools-installer\":\"^3.2.0\",\"electron-updater\":\"^4.6.5\",\"electron-window-state\":\"^5.0.3\",\"filehound\":\"^1.17.6\",\"fs-extra\":\"^9.0.1\",\"glob-to-regexp\":\"^0.4.1\",\"got\":\"^11.8.3\",\"grapheme-splitter\":\"^1.0.4\",\"handlebars\":\"^4.7.7\",\"http-proxy\":\"^1.18.1\",\"immer\":\"^9.0.12\",\"joi\":\"^17.6.0\",\"js-yaml\":\"^4.1.0\",\"jsdom\":\"^16.7.0\",\"lodash\":\"^4.17.15\",\"mac-ca\":\"^1.0.6\",\"marked\":\"^4.0.15\",\"md5-file\":\"^5.0.0\",\"mobx\":\"^6.5.0\",\"mobx-observable-history\":\"^2.0.3\",\"mobx-react\":\"^7.3.0\",\"mobx-utils\":\"^6.0.4\",\"mock-fs\":\"^5.1.2\",\"moment\":\"^2.29.3\",\"moment-timezone\":\"^0.5.34\",\"monaco-editor\":\"^0.29.1\",\"monaco-editor-webpack-plugin\":\"^5.0.0\",\"node-fetch\":\"lensapp/node-fetch#2.x\",\"node-pty\":\"^0.10.1\",\"npm\":\"^6.14.17\",\"p-limit\":\"^3.1.0\",\"path-to-regexp\":\"^6.2.0\",\"proper-lockfile\":\"^4.1.2\",\"react\":\"^17.0.2\",\"react-dom\":\"^17.0.2\",\"react-material-ui-carousel\":\"^2.3.11\",\"react-router\":\"^5.2.0\",\"react-virtualized-auto-sizer\":\"^1.0.6\",\"readable-stream\":\"^3.6.0\",\"request\":\"^2.88.2\",\"request-promise-native\":\"^1.0.9\",\"rfc6902\":\"^4.0.2\",\"selfsigned\":\"^2.0.1\",\"semver\":\"^7.3.7\",\"shell-env\":\"^3.0.1\",\"spdy\":\"^4.0.2\",\"tar\":\"^6.1.11\",\"tcp-port-used\":\"^1.0.2\",\"tempy\":\"1.0.1\",\"url-parse\":\"^1.5.10\",\"uuid\":\"^8.3.2\",\"win-ca\":\"^3.5.0\",\"winston\":\"^3.7.2\",\"winston-console-format\":\"^1.0.8\",\"winston-transport-browserconsole\":\"^1.0.5\",\"ws\":\"^7.5.7\"},\"devDependencies\":{\"@async-fn/jest\":\"1.5.3\",\"@material-ui/core\":\"^4.12.3\",\"@material-ui/icons\":\"^4.11.2\",\"@material-ui/lab\":\"^4.0.0-alpha.60\",\"@pmmmwh/react-refresh-webpack-plugin\":\"^0.5.5\",\"@sentry/types\":\"^6.19.7\",\"@testing-library/jest-dom\":\"^5.16.4\",\"@testing-library/react\":\"^12.1.5\",\"@testing-library/user-event\":\"^13.5.0\",\"@types/byline\":\"^4.2.33\",\"@types/chart.js\":\"^2.9.36\",\"@types/cli-progress\":\"^3.9.2\",\"@types/color\":\"^3.0.3\",\"@types/command-line-args\":\"^5.2.0\",\"@types/crypto-js\":\"^3.1.47\",\"@types/dompurify\":\"^2.3.3\",\"@types/electron-devtools-installer\":\"^2.2.1\",\"@types/fs-extra\":\"^9.0.13\",\"@types/glob-to-regexp\":\"^0.4.1\",\"@types/gunzip-maybe\":\"^1.4.0\",\"@types/hoist-non-react-statics\":\"^3.3.1\",\"@types/html-webpack-plugin\":\"^3.2.6\",\"@types/http-proxy\":\"^1.17.9\",\"@types/jest\":\"^26.0.24\",\"@types/js-yaml\":\"^4.0.5\",\"@types/jsdom\":\"^16.2.14\",\"@types/lodash\":\"^4.14.181\",\"@types/marked\":\"^4.0.3\",\"@types/md5-file\":\"^4.0.2\",\"@types/mini-css-extract-plugin\":\"^2.4.0\",\"@types/mock-fs\":\"^4.13.1\",\"@types/node\":\"14.18.17\",\"@types/node-fetch\":\"^2.6.1\",\"@types/npm\":\"^2.0.32\",\"@types/proper-lockfile\":\"^4.1.2\",\"@types/randomcolor\":\"^0.5.6\",\"@types/react\":\"^17.0.44\",\"@types/react-beautiful-dnd\":\"^13.1.2\",\"@types/react-dom\":\"^17.0.14\",\"@types/react-router-dom\":\"^5.3.3\",\"@types/react-table\":\"^7.7.11\",\"@types/react-virtualized-auto-sizer\":\"^1.0.1\",\"@types/react-window\":\"^1.8.5\",\"@types/readable-stream\":\"^2.3.13\",\"@types/request\":\"^2.48.7\",\"@types/request-promise-native\":\"^1.0.18\",\"@types/semver\":\"^7.3.9\",\"@types/sharp\":\"^0.30.2\",\"@types/spdy\":\"^3.4.5\",\"@types/tar\":\"^4.0.5\",\"@types/tar-stream\":\"^2.2.2\",\"@types/tcp-port-used\":\"^1.0.1\",\"@types/tempy\":\"^0.3.0\",\"@types/triple-beam\":\"^1.3.2\",\"@types/url-parse\":\"^1.4.8\",\"@types/uuid\":\"^8.3.4\",\"@types/webpack\":\"^5.28.0\",\"@types/webpack-dev-server\":\"^4.7.2\",\"@types/webpack-env\":\"^1.16.4\",\"@types/webpack-node-externals\":\"^2.5.3\",\"@typescript-eslint/eslint-plugin\":\"^5.21.0\",\"@typescript-eslint/parser\":\"^5.17.0\",\"ansi_up\":\"^5.1.0\",\"chart.js\":\"^2.9.4\",\"circular-dependency-plugin\":\"^5.2.2\",\"cli-progress\":\"^3.11.0\",\"color\":\"^3.2.1\",\"command-line-args\":\"^5.2.1\",\"concurrently\":\"^7.1.0\",\"css-loader\":\"^6.7.1\",\"deepdash\":\"^5.3.9\",\"dompurify\":\"^2.3.6\",\"electron\":\"^14.2.9\",\"electron-builder\":\"^23.0.3\",\"electron-notarize\":\"^0.3.0\",\"esbuild\":\"^0.14.38\",\"esbuild-loader\":\"^2.18.0\",\"eslint\":\"^8.14.0\",\"eslint-plugin-header\":\"^3.1.1\",\"eslint-plugin-import\":\"^2.26.0\",\"eslint-plugin-react\":\"^7.29.4\",\"eslint-plugin-react-hooks\":\"^4.5.0\",\"eslint-plugin-unused-imports\":\"^2.0.0\",\"flex.box\":\"^3.4.4\",\"fork-ts-checker-webpack-plugin\":\"^6.5.0\",\"gunzip-maybe\":\"^1.4.2\",\"hoist-non-react-statics\":\"^3.3.2\",\"html-webpack-plugin\":\"^5.5.0\",\"identity-obj-proxy\":\"^3.0.0\",\"ignore-loader\":\"^0.1.2\",\"include-media\":\"^1.4.9\",\"jest\":\"26.6.3\",\"jest-canvas-mock\":\"^2.3.1\",\"jest-fetch-mock\":\"^3.0.3\",\"jest-mock-extended\":\"^1.0.18\",\"make-plural\":\"^6.2.2\",\"mini-css-extract-plugin\":\"^2.6.0\",\"mock-http\":\"^1.1.0\",\"node-gyp\":\"7.1.2\",\"node-loader\":\"^2.0.0\",\"nodemon\":\"^2.0.16\",\"playwright\":\"^1.20.2\",\"postcss\":\"^8.4.12\",\"postcss-loader\":\"^6.2.1\",\"randomcolor\":\"^0.6.2\",\"react-beautiful-dnd\":\"^13.1.0\",\"react-refresh\":\"^0.12.0\",\"react-refresh-typescript\":\"^2.0.4\",\"react-router-dom\":\"^5.3.1\",\"react-select\":\"^5.3.2\",\"react-select-event\":\"^5.5.0\",\"react-table\":\"^7.7.0\",\"react-window\":\"^1.8.7\",\"sass\":\"^1.51.0\",\"sass-loader\":\"^12.6.0\",\"sharp\":\"^0.30.4\",\"style-loader\":\"^3.3.1\",\"tailwindcss\":\"^3.0.23\",\"tar-stream\":\"^2.2.0\",\"ts-jest\":\"26.5.6\",\"ts-loader\":\"^9.2.8\",\"ts-node\":\"^10.7.0\",\"type-fest\":\"^2.12.2\",\"typed-emitter\":\"^1.4.0\",\"typedoc\":\"0.22.15\",\"typedoc-plugin-markdown\":\"^3.11.12\",\"typeface-roboto\":\"^1.1.13\",\"typescript\":\"^4.5.5\",\"typescript-plugin-css-modules\":\"^3.4.0\",\"webpack\":\"^5.72.0\",\"webpack-cli\":\"^4.9.2\",\"webpack-dev-server\":\"^4.9.0\",\"webpack-node-externals\":\"^3.0.0\",\"xterm\":\"^4.18.0\",\"xterm-addon-fit\":\"^0.5.0\"}}');\n\n//# sourceURL=webpack://open-lens/./package.json?");
41283
+ eval("module.exports = JSON.parse('{\"name\":\"open-lens\",\"productName\":\"OpenLens\",\"description\":\"OpenLens - Open Source IDE for Kubernetes\",\"homepage\":\"https://github.com/lensapp/lens\",\"version\":\"5.5.4\",\"main\":\"static/build/main.js\",\"copyright\":\"© 2021 OpenLens Authors\",\"license\":\"MIT\",\"author\":{\"name\":\"OpenLens Authors\",\"email\":\"info@k8slens.dev\"},\"scripts\":{\"dev\":\"concurrently -i -k \\\\\"yarn run dev-run -C\\\\\" yarn:dev:*\",\"dev-build\":\"concurrently yarn:compile:*\",\"debug-build\":\"concurrently yarn:compile:main yarn:compile:extension-types\",\"dev-run\":\"nodemon --watch ./static/build/main.js --exec \\\\\"electron --remote-debugging-port=9223 --inspect .\\\\\"\",\"dev:main\":\"yarn run compile:main --watch --progress\",\"dev:renderer\":\"yarn run ts-node webpack/dev-server.ts\",\"compile\":\"env NODE_ENV=production concurrently yarn:compile:*\",\"compile:main\":\"yarn run webpack --config webpack/main.ts\",\"compile:renderer\":\"yarn run webpack --config webpack/renderer.ts\",\"compile:extension-types\":\"yarn run webpack --config webpack/extensions.ts\",\"npm:fix-build-version\":\"yarn run ts-node build/set_build_version.ts\",\"npm:fix-package-version\":\"yarn run ts-node build/set_npm_version.ts\",\"build:linux\":\"yarn run compile && electron-builder --linux --dir\",\"build:mac\":\"yarn run compile && electron-builder --mac --dir\",\"build:win\":\"yarn run compile && electron-builder --win --dir\",\"integration\":\"jest --runInBand --detectOpenHandles --forceExit integration\",\"test:unit\":\"jest --watch --testPathIgnorePatterns integration\",\"test:integration\":\"func() { jest ${1:-xyz} --watch --runInBand --detectOpenHandles --forceExit --modulePaths=[\\\\\"<rootDir>/integration/\\\\\"]; }; func\",\"dist\":\"yarn run compile && electron-builder --publish onTag\",\"dist:dir\":\"yarn run dist --dir -c.compression=store -c.mac.identity=null\",\"download:binaries\":\"yarn run ts-node build/download_binaries.ts\",\"build:tray-icons\":\"yarn run ts-node build/generate-tray-icons.ts\",\"build:theme-vars\":\"yarn run ts-node build/build_theme_vars.ts\",\"lint\":\"PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .\",\"lint:fix\":\"yarn run lint --fix\",\"mkdocs-serve-local\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest\",\"verify-docs\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict\",\"typedocs-extensions-api\":\"yarn run typedoc src/extensions/extension-api.ts\",\"version-checkout\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release/v%s\\\\\" | xargs git checkout -b\",\"version-commit\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release v%s\\\\\" | git commit --no-edit -s -F -\",\"version\":\"yarn run version-checkout && git add package.json && yarn run version-commit\",\"postversion\":\"git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version\"},\"config\":{\"k8sProxyVersion\":\"0.2.1\",\"bundledKubectlVersion\":\"1.23.3\",\"bundledHelmVersion\":\"3.7.2\",\"sentryDsn\":\"\"},\"engines\":{\"node\":\">=14 <15\"},\"jest\":{\"collectCoverage\":false,\"verbose\":true,\"transform\":{\"^.+\\\\\\\\.tsx?$\":\"ts-jest\"},\"moduleNameMapper\":{\"\\\\\\\\.(css|scss)$\":\"identity-obj-proxy\",\"\\\\\\\\.(svg|png|jpg|eot|woff2?|ttf)$\":\"<rootDir>/__mocks__/assetMock.ts\"},\"modulePathIgnorePatterns\":[\"<rootDir>/dist\",\"<rootDir>/src/extensions/npm\"],\"setupFiles\":[\"<rootDir>/src/jest.setup.ts\",\"jest-canvas-mock\"],\"setupFilesAfterEnv\":[\"<rootDir>/src/jest-after-env.setup.ts\"],\"globals\":{\"ts-jest\":{\"isolatedModules\":true}}},\"build\":{\"generateUpdatesFilesForAllChannels\":true,\"files\":[\"static/build/main.js\"],\"afterSign\":\"build/notarize.js\",\"extraResources\":[{\"from\":\"locales/\",\"to\":\"locales/\",\"filter\":\"**/*.js\"},{\"from\":\"static/\",\"to\":\"static/\",\"filter\":\"!**/main.js\"},{\"from\":\"build/tray\",\"to\":\"static/icons\",\"filter\":\"*.png\"},{\"from\":\"extensions/\",\"to\":\"./extensions/\",\"filter\":[\"**/*.tgz\",\"**/package.json\",\"!**/node_modules\"]},{\"from\":\"templates/\",\"to\":\"./templates/\",\"filter\":\"**/*.yaml\"},\"LICENSE\"],\"linux\":{\"category\":\"Network\",\"artifactName\":\"${productName}-${version}.${arch}.${ext}\",\"target\":[\"deb\",\"rpm\",\"AppImage\"],\"extraResources\":[{\"from\":\"binaries/client/linux/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/linux/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/linux/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"rpm\":{\"fpm\":[\"--rpm-rpmbuild-define=%define _build_id_links none\"]},\"mac\":{\"hardenedRuntime\":true,\"gatekeeperAssess\":false,\"entitlements\":\"build/entitlements.mac.plist\",\"entitlementsInherit\":\"build/entitlements.mac.plist\",\"extraResources\":[{\"from\":\"binaries/client/darwin/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/darwin/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/darwin/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"win\":{\"target\":[\"nsis\"],\"extraResources\":[{\"from\":\"binaries/client/windows/${arch}/kubectl.exe\",\"to\":\"./${arch}/kubectl.exe\"},{\"from\":\"binaries/client/windows/${arch}/lens-k8s-proxy.exe\",\"to\":\"./${arch}/lens-k8s-proxy.exe\"},{\"from\":\"binaries/client/windows/${arch}/helm.exe\",\"to\":\"./${arch}/helm.exe\"}]},\"nsis\":{\"include\":\"build/installer.nsh\",\"oneClick\":false,\"allowElevation\":true,\"createStartMenuShortcut\":true,\"allowToChangeInstallationDirectory\":true},\"protocols\":{\"name\":\"Lens Protocol Handler\",\"schemes\":[\"lens\"],\"role\":\"Viewer\"}},\"dependencies\":{\"@astronautlabs/jsonpath\":\"^1.1.0\",\"@hapi/call\":\"^8.0.1\",\"@hapi/subtext\":\"^7.0.3\",\"@kubernetes/client-node\":\"^0.16.3\",\"@ogre-tools/fp\":\"5.2.0\",\"@ogre-tools/injectable\":\"5.2.0\",\"@ogre-tools/injectable-react\":\"5.2.0\",\"@sentry/electron\":\"^3.0.7\",\"@sentry/integrations\":\"^6.19.3\",\"@types/circular-dependency-plugin\":\"5.0.5\",\"abort-controller\":\"^3.0.0\",\"auto-bind\":\"^4.0.0\",\"await-lock\":\"^2.2.2\",\"byline\":\"^5.0.0\",\"chokidar\":\"^3.5.3\",\"conf\":\"^7.1.2\",\"crypto-js\":\"^4.1.1\",\"electron-devtools-installer\":\"^3.2.0\",\"electron-updater\":\"^4.6.5\",\"electron-window-state\":\"^5.0.3\",\"filehound\":\"^1.17.6\",\"fs-extra\":\"^9.0.1\",\"glob-to-regexp\":\"^0.4.1\",\"got\":\"^11.8.3\",\"grapheme-splitter\":\"^1.0.4\",\"handlebars\":\"^4.7.7\",\"http-proxy\":\"^1.18.1\",\"immer\":\"^9.0.12\",\"joi\":\"^17.6.0\",\"js-yaml\":\"^4.1.0\",\"jsdom\":\"^16.7.0\",\"lodash\":\"^4.17.15\",\"mac-ca\":\"^1.0.6\",\"marked\":\"^4.0.15\",\"md5-file\":\"^5.0.0\",\"mobx\":\"^6.5.0\",\"mobx-observable-history\":\"^2.0.3\",\"mobx-react\":\"^7.3.0\",\"mobx-utils\":\"^6.0.4\",\"mock-fs\":\"^5.1.2\",\"moment\":\"^2.29.3\",\"moment-timezone\":\"^0.5.34\",\"monaco-editor\":\"^0.29.1\",\"monaco-editor-webpack-plugin\":\"^5.0.0\",\"node-fetch\":\"lensapp/node-fetch#2.x\",\"node-pty\":\"^0.10.1\",\"npm\":\"^6.14.17\",\"p-limit\":\"^3.1.0\",\"path-to-regexp\":\"^6.2.0\",\"proper-lockfile\":\"^4.1.2\",\"react\":\"^17.0.2\",\"react-dom\":\"^17.0.2\",\"react-material-ui-carousel\":\"^2.3.11\",\"react-router\":\"^5.2.0\",\"react-virtualized-auto-sizer\":\"^1.0.6\",\"readable-stream\":\"^3.6.0\",\"request\":\"^2.88.2\",\"request-promise-native\":\"^1.0.9\",\"rfc6902\":\"^4.0.2\",\"selfsigned\":\"^2.0.1\",\"semver\":\"^7.3.7\",\"shell-env\":\"^3.0.1\",\"spdy\":\"^4.0.2\",\"tar\":\"^6.1.11\",\"tcp-port-used\":\"^1.0.2\",\"tempy\":\"1.0.1\",\"url-parse\":\"^1.5.10\",\"uuid\":\"^8.3.2\",\"win-ca\":\"^3.5.0\",\"winston\":\"^3.7.2\",\"winston-console-format\":\"^1.0.8\",\"winston-transport-browserconsole\":\"^1.0.5\",\"ws\":\"^7.5.7\"},\"devDependencies\":{\"@async-fn/jest\":\"1.5.3\",\"@material-ui/core\":\"^4.12.3\",\"@material-ui/icons\":\"^4.11.2\",\"@material-ui/lab\":\"^4.0.0-alpha.60\",\"@pmmmwh/react-refresh-webpack-plugin\":\"^0.5.5\",\"@sentry/types\":\"^6.19.7\",\"@testing-library/jest-dom\":\"^5.16.4\",\"@testing-library/react\":\"^12.1.5\",\"@testing-library/user-event\":\"^13.5.0\",\"@types/byline\":\"^4.2.33\",\"@types/chart.js\":\"^2.9.36\",\"@types/cli-progress\":\"^3.9.2\",\"@types/color\":\"^3.0.3\",\"@types/command-line-args\":\"^5.2.0\",\"@types/crypto-js\":\"^3.1.47\",\"@types/dompurify\":\"^2.3.3\",\"@types/electron-devtools-installer\":\"^2.2.1\",\"@types/fs-extra\":\"^9.0.13\",\"@types/glob-to-regexp\":\"^0.4.1\",\"@types/gunzip-maybe\":\"^1.4.0\",\"@types/hoist-non-react-statics\":\"^3.3.1\",\"@types/html-webpack-plugin\":\"^3.2.6\",\"@types/http-proxy\":\"^1.17.9\",\"@types/jest\":\"^26.0.24\",\"@types/js-yaml\":\"^4.0.5\",\"@types/jsdom\":\"^16.2.14\",\"@types/lodash\":\"^4.14.181\",\"@types/marked\":\"^4.0.3\",\"@types/md5-file\":\"^4.0.2\",\"@types/mini-css-extract-plugin\":\"^2.4.0\",\"@types/mock-fs\":\"^4.13.1\",\"@types/node\":\"14.18.17\",\"@types/node-fetch\":\"^2.6.1\",\"@types/npm\":\"^2.0.32\",\"@types/proper-lockfile\":\"^4.1.2\",\"@types/randomcolor\":\"^0.5.6\",\"@types/react\":\"^17.0.44\",\"@types/react-beautiful-dnd\":\"^13.1.2\",\"@types/react-dom\":\"^17.0.14\",\"@types/react-router-dom\":\"^5.3.3\",\"@types/react-table\":\"^7.7.11\",\"@types/react-virtualized-auto-sizer\":\"^1.0.1\",\"@types/react-window\":\"^1.8.5\",\"@types/readable-stream\":\"^2.3.13\",\"@types/request\":\"^2.48.7\",\"@types/request-promise-native\":\"^1.0.18\",\"@types/semver\":\"^7.3.9\",\"@types/sharp\":\"^0.30.2\",\"@types/spdy\":\"^3.4.5\",\"@types/tar\":\"^4.0.5\",\"@types/tar-stream\":\"^2.2.2\",\"@types/tcp-port-used\":\"^1.0.1\",\"@types/tempy\":\"^0.3.0\",\"@types/triple-beam\":\"^1.3.2\",\"@types/url-parse\":\"^1.4.8\",\"@types/uuid\":\"^8.3.4\",\"@types/webpack\":\"^5.28.0\",\"@types/webpack-dev-server\":\"^4.7.2\",\"@types/webpack-env\":\"^1.16.4\",\"@types/webpack-node-externals\":\"^2.5.3\",\"@typescript-eslint/eslint-plugin\":\"^5.21.0\",\"@typescript-eslint/parser\":\"^5.17.0\",\"ansi_up\":\"^5.1.0\",\"chart.js\":\"^2.9.4\",\"circular-dependency-plugin\":\"^5.2.2\",\"cli-progress\":\"^3.11.0\",\"color\":\"^3.2.1\",\"command-line-args\":\"^5.2.1\",\"concurrently\":\"^7.1.0\",\"css-loader\":\"^6.7.1\",\"deepdash\":\"^5.3.9\",\"dompurify\":\"^2.3.6\",\"electron\":\"^14.2.9\",\"electron-builder\":\"^23.0.3\",\"electron-notarize\":\"^0.3.0\",\"esbuild\":\"^0.14.38\",\"esbuild-loader\":\"^2.18.0\",\"eslint\":\"^8.14.0\",\"eslint-plugin-header\":\"^3.1.1\",\"eslint-plugin-import\":\"^2.26.0\",\"eslint-plugin-react\":\"^7.29.4\",\"eslint-plugin-react-hooks\":\"^4.5.0\",\"eslint-plugin-unused-imports\":\"^2.0.0\",\"flex.box\":\"^3.4.4\",\"fork-ts-checker-webpack-plugin\":\"^6.5.0\",\"gunzip-maybe\":\"^1.4.2\",\"hoist-non-react-statics\":\"^3.3.2\",\"html-webpack-plugin\":\"^5.5.0\",\"identity-obj-proxy\":\"^3.0.0\",\"ignore-loader\":\"^0.1.2\",\"include-media\":\"^1.4.9\",\"jest\":\"26.6.3\",\"jest-canvas-mock\":\"^2.3.1\",\"jest-fetch-mock\":\"^3.0.3\",\"jest-mock-extended\":\"^1.0.18\",\"make-plural\":\"^6.2.2\",\"mini-css-extract-plugin\":\"^2.6.0\",\"mock-http\":\"^1.1.0\",\"node-gyp\":\"7.1.2\",\"node-loader\":\"^2.0.0\",\"nodemon\":\"^2.0.16\",\"playwright\":\"^1.20.2\",\"postcss\":\"^8.4.12\",\"postcss-loader\":\"^6.2.1\",\"randomcolor\":\"^0.6.2\",\"react-beautiful-dnd\":\"^13.1.0\",\"react-refresh\":\"^0.12.0\",\"react-refresh-typescript\":\"^2.0.4\",\"react-router-dom\":\"^5.3.1\",\"react-select\":\"^5.3.2\",\"react-select-event\":\"^5.5.0\",\"react-table\":\"^7.7.0\",\"react-window\":\"^1.8.7\",\"sass\":\"^1.51.0\",\"sass-loader\":\"^12.6.0\",\"sharp\":\"^0.30.4\",\"style-loader\":\"^3.3.1\",\"tailwindcss\":\"^3.0.23\",\"tar-stream\":\"^2.2.0\",\"ts-jest\":\"26.5.6\",\"ts-loader\":\"^9.2.8\",\"ts-node\":\"^10.7.0\",\"type-fest\":\"^2.12.2\",\"typed-emitter\":\"^1.4.0\",\"typedoc\":\"0.22.15\",\"typedoc-plugin-markdown\":\"^3.11.12\",\"typeface-roboto\":\"^1.1.13\",\"typescript\":\"^4.5.5\",\"typescript-plugin-css-modules\":\"^3.4.0\",\"webpack\":\"^5.72.0\",\"webpack-cli\":\"^4.9.2\",\"webpack-dev-server\":\"^4.9.0\",\"webpack-node-externals\":\"^3.0.0\",\"xterm\":\"^4.18.0\",\"xterm-addon-fit\":\"^0.5.0\"}}');\n\n//# sourceURL=webpack://open-lens/./package.json?");
41284
41284
 
41285
41285
  /***/ }),
41286
41286
 
@@ -6,7 +6,7 @@ import type { Cluster } from "../../common/cluster/cluster";
6
6
  import type { Kubectl } from "../kubectl/kubectl";
7
7
  import type WebSocket from "ws";
8
8
  import * as pty from "node-pty";
9
- import type { TerminalMessage } from "../../renderer/api/terminal-api";
9
+ import { type TerminalMessage } from "../../common/terminal/channels";
10
10
  export declare class ShellOpenError extends Error {
11
11
  cause: Error;
12
12
  constructor(message: string, cause: Error);
@@ -4,27 +4,7 @@
4
4
  */
5
5
  import type { WebSocketEvents } from "./websocket-api";
6
6
  import { WebSocketApi } from "./websocket-api";
7
- export declare enum TerminalChannels {
8
- STDIN = "stdin",
9
- STDOUT = "stdout",
10
- CONNECTED = "connected",
11
- RESIZE = "resize"
12
- }
13
- export declare type TerminalMessage = {
14
- type: TerminalChannels.STDIN;
15
- data: string;
16
- } | {
17
- type: TerminalChannels.STDOUT;
18
- data: string;
19
- } | {
20
- type: TerminalChannels.CONNECTED;
21
- } | {
22
- type: TerminalChannels.RESIZE;
23
- data: {
24
- width: number;
25
- height: number;
26
- };
27
- };
7
+ import { type TerminalMessage } from "../../common/terminal/channels";
28
8
  declare enum TerminalColor {
29
9
  RED = "\u001B[31m",
30
10
  GREEN = "\u001B[32m",
@@ -56,7 +36,7 @@ export declare class TerminalApi extends WebSocketApi<TerminalEvents> {
56
36
  connect(): Promise<void>;
57
37
  sendMessage(message: TerminalMessage): void;
58
38
  sendTerminalSize(cols: number, rows: number): void;
59
- protected _onMessage({ data, ...evt }: MessageEvent<ArrayBuffer>): void;
39
+ protected _onMessage({ data, ...evt }: MessageEvent<string>): void;
60
40
  protected _onOpen(evt: Event): void;
61
41
  protected _onClose(evt: CloseEvent): void;
62
42
  protected emitStatus(data: string, options?: {
@@ -21,9 +21,9 @@ interface WebsocketApiParams {
21
21
  /**
22
22
  * The message for pinging the websocket
23
23
  *
24
- * @default "PING"
24
+ * @default "{type: \"ping\"}"
25
25
  */
26
- pingMessage?: string | ArrayBufferLike | Blob | ArrayBufferView;
26
+ pingMessage?: string;
27
27
  /**
28
28
  * If set to a number > 0, then the API will ping the socket on that interval.
29
29
  *
@@ -52,10 +52,10 @@ export interface WebSocketEvents {
52
52
  declare type Defaulted<Params, DefaultParams extends keyof Params> = Required<Pick<Params, DefaultParams>> & Omit<Params, DefaultParams>;
53
53
  declare const WebSocketApi_base: new <T>() => TypedEventEmitter<T>;
54
54
  export declare class WebSocketApi<Events extends WebSocketEvents> extends WebSocketApi_base<Events> {
55
- protected socket?: WebSocket | null;
56
- protected pendingCommands: (string | ArrayBufferLike | Blob | ArrayBufferView)[];
57
- protected reconnectTimer?: any;
58
- protected pingTimer?: any;
55
+ protected socket: WebSocket | null;
56
+ protected pendingCommands: string[];
57
+ protected reconnectTimer?: number;
58
+ protected pingTimer?: number;
59
59
  protected params: Defaulted<WebsocketApiParams, keyof typeof WebSocketApi["defaultParams"]>;
60
60
  readyState: WebSocketApiState;
61
61
  private static defaultParams;
@@ -67,7 +67,7 @@ export declare class WebSocketApi<Events extends WebSocketEvents> extends WebSoc
67
67
  reconnect(): void;
68
68
  destroy(): void;
69
69
  clearAllListeners(): void;
70
- send(command: string | ArrayBufferLike | Blob | ArrayBufferView): void;
70
+ send(command: string): void;
71
71
  protected flush(): void;
72
72
  protected _onOpen(evt: Event): void;
73
73
  protected _onMessage({ data }: MessageEvent): void;
@@ -17,8 +17,8 @@ export declare class PodDetailsList extends React.Component<PodDetailsListProps>
17
17
  private metricsWatcher;
18
18
  componentDidMount(): void;
19
19
  componentWillUnmount(): void;
20
- renderCpuUsage(id: string, usage: number): string | 0 | JSX.Element;
21
- renderMemoryUsage(id: string, usage: number): string | 0 | JSX.Element;
20
+ renderCpuUsage(id: string, usage: number): string | JSX.Element | 0;
21
+ renderMemoryUsage(id: string, usage: number): string | JSX.Element | 0;
22
22
  getTableRow(uid: string): JSX.Element;
23
23
  render(): JSX.Element;
24
24
  }
@@ -5,7 +5,11 @@
5
5
  import React from "react";
6
6
  export interface DrawerTitleProps {
7
7
  className?: string;
8
- children: React.ReactNode;
8
+ children?: React.ReactNode;
9
+ /**
10
+ * @deprecated Prefer passing the value as `children`
11
+ */
12
+ title?: React.ReactNode;
9
13
  /**
10
14
  * Specifies how large this title is
11
15
  *
@@ -13,5 +13,5 @@ export interface SwitcherProps extends SwitchProps {
13
13
  /**
14
14
  * @deprecated Use <Switch/> instead from "../switch.tsx".
15
15
  */
16
- export declare const Switcher: React.ComponentType<Pick<SwitcherProps, "id" | "name" | "prefix" | "defaultValue" | "key" | "value" | "className" | "form" | "slot" | "style" | "title" | "size" | "color" | "ref" | "action" | "autoFocus" | "checked" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "placeholder" | "readOnly" | "required" | "type" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "icon" | "inputProps" | "innerRef" | "checkedIcon" | "disableFocusRipple" | "edge" | "buttonRef" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "onFocusVisible" | "TouchRippleProps" | "inputRef"> & import("@material-ui/core/styles").StyledComponentProps<"track" | "checked" | "root" | "switchBase" | "thumb" | "focusVisible">>;
16
+ export declare const Switcher: React.ComponentType<Pick<SwitcherProps, "id" | "name" | "className" | "form" | "slot" | "style" | "title" | "value" | "size" | "prefix" | "defaultValue" | "key" | "hidden" | "ref" | "action" | "autoFocus" | "checked" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "placeholder" | "readOnly" | "required" | "type" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "lang" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "icon" | "inputProps" | "innerRef" | "checkedIcon" | "disableFocusRipple" | "edge" | "buttonRef" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "onFocusVisible" | "TouchRippleProps" | "inputRef"> & import("@material-ui/core/styles").StyledComponentProps<"track" | "checked" | "root" | "thumb" | "focusVisible" | "switchBase">>;
17
17
  export {};
@@ -36,8 +36,8 @@ export interface TooltipContentFormatters {
36
36
  }
37
37
  export declare class Tooltip extends React.Component<TooltipProps> {
38
38
  static defaultProps: object;
39
- elem: HTMLElement;
40
- activePosition: TooltipPosition;
39
+ elem: HTMLDivElement | null;
40
+ activePosition?: TooltipPosition;
41
41
  isVisible: boolean;
42
42
  isContentVisible: boolean;
43
43
  constructor(props: TooltipProps);
@@ -59,6 +59,6 @@ export declare class Tooltip extends React.Component<TooltipProps> {
59
59
  right: number;
60
60
  bottom: number;
61
61
  };
62
- bindRef(elem: HTMLElement): void;
62
+ bindRef(elem: HTMLDivElement): void;
63
63
  render(): JSX.Element;
64
64
  }
@@ -2,4 +2,4 @@
2
2
  * Copyright (c) OpenLens Authors. All rights reserved.
3
3
  * Licensed under MIT License. See LICENSE in root directory for more information.
4
4
  */
5
- export declare function registerFileProtocol(name: string, basePath: string): void;
5
+ export {};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@k8slens/extensions",
3
3
  "productName": "OpenLens extensions",
4
4
  "description": "OpenLens - Open Source Kubernetes IDE: extensions",
5
- "version": "5.5.2",
5
+ "version": "5.5.4",
6
6
  "copyright": "© 2021 OpenLens Authors",
7
7
  "license": "MIT",
8
8
  "main": "dist/src/extensions/extension-api.js",