@k8slens/extensions 5.3.1-git.a2b9153e52.0 → 5.3.1-git.a9abcf99e4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/src/common/catalog/catalog-entity.d.ts +1 -1
  2. package/dist/src/common/hotbar-store.d.ts +2 -3
  3. package/dist/src/common/ipc/catalog.d.ts +12 -10
  4. package/dist/src/common/{cluster-ipc.d.ts → ipc/cluster.d.ts} +8 -0
  5. package/dist/src/{renderer/remote-helpers → common/ipc}/dialog.d.ts +1 -1
  6. package/dist/src/common/ipc/extension-handling.d.ts +8 -0
  7. package/dist/src/common/ipc/hotbar.d.ts +1 -1
  8. package/dist/src/common/ipc/index.d.ts +1 -6
  9. package/dist/src/common/ipc/ipc.d.ts +2 -3
  10. package/dist/src/common/ipc/{update-available.ipc.d.ts → update-available.d.ts} +0 -0
  11. package/dist/src/common/ipc/window.d.ts +33 -0
  12. package/dist/src/common/{ipc/extension-loader.ipc.d.ts → ipc-channel/channel.d.ts} +4 -1
  13. package/dist/src/common/k8s-api/kube-watch-event.d.ts +9 -0
  14. package/dist/src/extensions/common-api/registrations.d.ts +1 -1
  15. package/dist/src/extensions/extension-api.js +88 -171
  16. package/dist/src/extensions/extension-discovery/extension-discovery.d.ts +0 -1
  17. package/dist/src/extensions/extension-loader/extension-loader.d.ts +0 -2
  18. package/dist/src/extensions/lens-renderer-extension.d.ts +2 -1
  19. package/dist/src/extensions/registries/index.d.ts +0 -1
  20. package/dist/src/main/cluster-manager.d.ts +1 -1
  21. package/dist/src/main/ipc/dialog.d.ts +9 -0
  22. package/dist/src/main/ipc/window.d.ts +7 -0
  23. package/dist/src/main/menu/menu-registration.d.ts +8 -0
  24. package/dist/src/main/tray/tray-menu-registration.d.ts +13 -0
  25. package/dist/src/main/window-manager.d.ts +0 -3
  26. package/dist/src/renderer/components/+extensions/attempt-install/install-request.d.ts +9 -0
  27. package/dist/src/renderer/components/+extensions/{install-from-select-file-dialog/install-from-select-file-dialog.injectable.d.ts → install-from-select-file-dialog.injectable.d.ts} +0 -0
  28. package/dist/src/renderer/components/+preferences/app-preferences/app-preference-registration.d.ts +18 -0
  29. package/dist/src/renderer/components/+user-management/+service-accounts/details.d.ts +1 -1
  30. package/dist/src/renderer/components/+welcome/welcome-banner-items/welcome-banner-registration.d.ts +19 -0
  31. package/dist/src/renderer/components/+welcome/welcome-menu-items/welcome-menu-registration.d.ts +9 -0
  32. package/dist/src/renderer/components/+workloads-pods/pod-details-secrets.d.ts +1 -1
  33. package/dist/src/renderer/components/cluster-manager/bottom-bar-items.injectable.d.ts +4 -0
  34. package/dist/src/renderer/components/cluster-manager/bottom-bar.d.ts +3 -6
  35. package/dist/src/{extensions/registries/status-bar-registry.d.ts → renderer/components/cluster-manager/status-bar-registration.d.ts} +1 -4
  36. package/dist/src/renderer/components/command-palette/registered-commands/commands.d.ts +47 -0
  37. package/dist/src/renderer/components/dialog/dialog.d.ts +0 -1
  38. package/dist/src/renderer/components/icon/icon.d.ts +1 -0
  39. package/dist/src/renderer/components/input/search-input-url.d.ts +1 -1
  40. package/dist/src/renderer/components/kube-object-details/kube-object-details.d.ts +1 -1
  41. package/dist/src/renderer/components/layout/top-bar/top-bar-registration.d.ts +12 -0
  42. package/dist/src/renderer/components/path-picker/path-picker.d.ts +1 -1
  43. package/dist/src/renderer/hooks/index.d.ts +1 -0
  44. package/dist/src/renderer/hooks/use-toggle.d.ts +1 -0
  45. package/dist/src/renderer/ipc/index.d.ts +35 -1
  46. package/dist/src/renderer/{remote-helpers/index.d.ts → ipc/register-listeners.d.ts} +1 -2
  47. package/package.json +1 -1
  48. package/dist/src/common/ipc/cluster.ipc.d.ts +0 -11
  49. package/dist/src/renderer/components/+catalog/catalog-entity-item.d.ts +0 -23
  50. package/dist/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.d.ts +0 -6
@@ -786,89 +786,6 @@ eval("var colorspace = __webpack_require__(/*! colorspace */ \"./node_modules/co
786
786
 
787
787
  /***/ }),
788
788
 
789
- /***/ "./node_modules/@electron/remote/dist/src/common/get-electron-binding.js":
790
- /*!*******************************************************************************!*\
791
- !*** ./node_modules/@electron/remote/dist/src/common/get-electron-binding.js ***!
792
- \*******************************************************************************/
793
- /*! no static exports found */
794
- /***/ (function(module, exports, __webpack_require__) {
795
-
796
- "use strict";
797
- eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElectronBinding = void 0;\nconst getElectronBinding = (name) => {\n if (process._linkedBinding) {\n return process._linkedBinding('electron_common_' + name);\n }\n else if (process.electronBinding) {\n return process.electronBinding(name);\n }\n else {\n return null;\n }\n};\nexports.getElectronBinding = getElectronBinding;\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/common/get-electron-binding.js?");
798
-
799
- /***/ }),
800
-
801
- /***/ "./node_modules/@electron/remote/dist/src/common/module-names.js":
802
- /*!***********************************************************************!*\
803
- !*** ./node_modules/@electron/remote/dist/src/common/module-names.js ***!
804
- \***********************************************************************/
805
- /*! no static exports found */
806
- /***/ (function(module, exports, __webpack_require__) {
807
-
808
- "use strict";
809
- eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.browserModuleNames = exports.commonModuleNames = void 0;\nconst get_electron_binding_1 = __webpack_require__(/*! ./get-electron-binding */ \"./node_modules/@electron/remote/dist/src/common/get-electron-binding.js\");\nexports.commonModuleNames = [\n 'clipboard',\n 'nativeImage',\n 'shell',\n];\nexports.browserModuleNames = [\n 'app',\n 'autoUpdater',\n 'BaseWindow',\n 'BrowserView',\n 'BrowserWindow',\n 'contentTracing',\n 'crashReporter',\n 'dialog',\n 'globalShortcut',\n 'ipcMain',\n 'inAppPurchase',\n 'Menu',\n 'MenuItem',\n 'nativeTheme',\n 'net',\n 'netLog',\n 'MessageChannelMain',\n 'Notification',\n 'powerMonitor',\n 'powerSaveBlocker',\n 'protocol',\n 'screen',\n 'session',\n 'ShareMenu',\n 'systemPreferences',\n 'TopLevelWindow',\n 'TouchBar',\n 'Tray',\n 'View',\n 'webContents',\n 'WebContentsView',\n 'webFrameMain',\n].concat(exports.commonModuleNames);\nconst features = get_electron_binding_1.getElectronBinding('features');\nif (!features || features.isDesktopCapturerEnabled()) {\n exports.browserModuleNames.push('desktopCapturer');\n}\nif (!features || features.isViewApiEnabled()) {\n exports.browserModuleNames.push('ImageView');\n}\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/common/module-names.js?");
810
-
811
- /***/ }),
812
-
813
- /***/ "./node_modules/@electron/remote/dist/src/common/type-utils.js":
814
- /*!*********************************************************************!*\
815
- !*** ./node_modules/@electron/remote/dist/src/common/type-utils.js ***!
816
- \*********************************************************************/
817
- /*! no static exports found */
818
- /***/ (function(module, exports, __webpack_require__) {
819
-
820
- "use strict";
821
- eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserialize = exports.serialize = exports.isSerializableObject = exports.isPromise = void 0;\nconst electron_1 = __webpack_require__(/*! electron */ \"electron\");\nfunction isPromise(val) {\n return (val &&\n val.then &&\n val.then instanceof Function &&\n val.constructor &&\n val.constructor.reject &&\n val.constructor.reject instanceof Function &&\n val.constructor.resolve &&\n val.constructor.resolve instanceof Function);\n}\nexports.isPromise = isPromise;\nconst serializableTypes = [\n Boolean,\n Number,\n String,\n Date,\n Error,\n RegExp,\n ArrayBuffer\n];\n// https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#Supported_types\nfunction isSerializableObject(value) {\n return value === null || ArrayBuffer.isView(value) || serializableTypes.some(type => value instanceof type);\n}\nexports.isSerializableObject = isSerializableObject;\nconst objectMap = function (source, mapper) {\n const sourceEntries = Object.entries(source);\n const targetEntries = sourceEntries.map(([key, val]) => [key, mapper(val)]);\n return Object.fromEntries(targetEntries);\n};\nfunction serializeNativeImage(image) {\n const representations = [];\n const scaleFactors = image.getScaleFactors();\n // Use Buffer when there's only one representation for better perf.\n // This avoids compressing to/from PNG where it's not necessary to\n // ensure uniqueness of dataURLs (since there's only one).\n if (scaleFactors.length === 1) {\n const scaleFactor = scaleFactors[0];\n const size = image.getSize(scaleFactor);\n const buffer = image.toBitmap({ scaleFactor });\n representations.push({ scaleFactor, size, buffer });\n }\n else {\n // Construct from dataURLs to ensure that they are not lost in creation.\n for (const scaleFactor of scaleFactors) {\n const size = image.getSize(scaleFactor);\n const dataURL = image.toDataURL({ scaleFactor });\n representations.push({ scaleFactor, size, dataURL });\n }\n }\n return { __ELECTRON_SERIALIZED_NativeImage__: true, representations };\n}\nfunction deserializeNativeImage(value) {\n const image = electron_1.nativeImage.createEmpty();\n // Use Buffer when there's only one representation for better perf.\n // This avoids compressing to/from PNG where it's not necessary to\n // ensure uniqueness of dataURLs (since there's only one).\n if (value.representations.length === 1) {\n const { buffer, size, scaleFactor } = value.representations[0];\n const { width, height } = size;\n image.addRepresentation({ buffer, scaleFactor, width, height });\n }\n else {\n // Construct from dataURLs to ensure that they are not lost in creation.\n for (const rep of value.representations) {\n const { dataURL, size, scaleFactor } = rep;\n const { width, height } = size;\n image.addRepresentation({ dataURL, scaleFactor, width, height });\n }\n }\n return image;\n}\nfunction serialize(value) {\n if (value && value.constructor && value.constructor.name === 'NativeImage') {\n return serializeNativeImage(value);\n }\n if (Array.isArray(value)) {\n return value.map(serialize);\n }\n else if (isSerializableObject(value)) {\n return value;\n }\n else if (value instanceof Object) {\n return objectMap(value, serialize);\n }\n else {\n return value;\n }\n}\nexports.serialize = serialize;\nfunction deserialize(value) {\n if (value && value.__ELECTRON_SERIALIZED_NativeImage__) {\n return deserializeNativeImage(value);\n }\n else if (Array.isArray(value)) {\n return value.map(deserialize);\n }\n else if (isSerializableObject(value)) {\n return value;\n }\n else if (value instanceof Object) {\n return objectMap(value, deserialize);\n }\n else {\n return value;\n }\n}\nexports.deserialize = deserialize;\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/common/type-utils.js?");
822
-
823
- /***/ }),
824
-
825
- /***/ "./node_modules/@electron/remote/dist/src/renderer/callbacks-registry.js":
826
- /*!*******************************************************************************!*\
827
- !*** ./node_modules/@electron/remote/dist/src/renderer/callbacks-registry.js ***!
828
- \*******************************************************************************/
829
- /*! no static exports found */
830
- /***/ (function(module, exports, __webpack_require__) {
831
-
832
- "use strict";
833
- eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallbacksRegistry = void 0;\nclass CallbacksRegistry {\n constructor() {\n this.nextId = 0;\n this.callbacks = {};\n this.callbackIds = new WeakMap();\n this.locationInfo = new WeakMap();\n }\n add(callback) {\n // The callback is already added.\n let id = this.callbackIds.get(callback);\n if (id != null)\n return id;\n id = this.nextId += 1;\n this.callbacks[id] = callback;\n this.callbackIds.set(callback, id);\n // Capture the location of the function and put it in the ID string,\n // so that release errors can be tracked down easily.\n const regexp = /at (.*)/gi;\n const stackString = (new Error()).stack;\n if (!stackString)\n return id;\n let filenameAndLine;\n let match;\n while ((match = regexp.exec(stackString)) !== null) {\n const location = match[1];\n if (location.includes('(native)'))\n continue;\n if (location.includes('(<anonymous>)'))\n continue;\n if (location.includes('callbacks-registry.js'))\n continue;\n if (location.includes('remote.js'))\n continue;\n if (location.includes('@electron/remote/dist'))\n continue;\n const ref = /([^/^)]*)\\)?$/gi.exec(location);\n if (ref)\n filenameAndLine = ref[1];\n break;\n }\n this.locationInfo.set(callback, filenameAndLine);\n return id;\n }\n get(id) {\n return this.callbacks[id] || function () { };\n }\n getLocation(callback) {\n return this.locationInfo.get(callback);\n }\n apply(id, ...args) {\n return this.get(id).apply(global, ...args);\n }\n remove(id) {\n const callback = this.callbacks[id];\n if (callback) {\n this.callbackIds.delete(callback);\n delete this.callbacks[id];\n }\n }\n}\nexports.CallbacksRegistry = CallbacksRegistry;\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/renderer/callbacks-registry.js?");
834
-
835
- /***/ }),
836
-
837
- /***/ "./node_modules/@electron/remote/dist/src/renderer/index.js":
838
- /*!******************************************************************!*\
839
- !*** ./node_modules/@electron/remote/dist/src/renderer/index.js ***!
840
- \******************************************************************/
841
- /*! no static exports found */
842
- /***/ (function(module, exports, __webpack_require__) {
843
-
844
- "use strict";
845
- eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nif (process.type === 'browser')\n throw new Error(`\"@electron/remote\" cannot be required in the browser process. Instead require(\"@electron/remote/main\").`);\n__exportStar(__webpack_require__(/*! ./remote */ \"./node_modules/@electron/remote/dist/src/renderer/remote.js\"), exports);\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/renderer/index.js?");
846
-
847
- /***/ }),
848
-
849
- /***/ "./node_modules/@electron/remote/dist/src/renderer/remote.js":
850
- /*!*******************************************************************!*\
851
- !*** ./node_modules/@electron/remote/dist/src/renderer/remote.js ***!
852
- \*******************************************************************/
853
- /*! no static exports found */
854
- /***/ (function(module, exports, __webpack_require__) {
855
-
856
- "use strict";
857
- eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFunctionWithReturnValue = exports.getGlobal = exports.getCurrentWebContents = exports.getCurrentWindow = exports.getBuiltin = void 0;\nconst callbacks_registry_1 = __webpack_require__(/*! ./callbacks-registry */ \"./node_modules/@electron/remote/dist/src/renderer/callbacks-registry.js\");\nconst type_utils_1 = __webpack_require__(/*! ../common/type-utils */ \"./node_modules/@electron/remote/dist/src/common/type-utils.js\");\nconst electron_1 = __webpack_require__(/*! electron */ \"electron\");\nconst module_names_1 = __webpack_require__(/*! ../common/module-names */ \"./node_modules/@electron/remote/dist/src/common/module-names.js\");\nconst get_electron_binding_1 = __webpack_require__(/*! ../common/get-electron-binding */ \"./node_modules/@electron/remote/dist/src/common/get-electron-binding.js\");\nconst callbacksRegistry = new callbacks_registry_1.CallbacksRegistry();\nconst remoteObjectCache = new Map();\nconst finalizationRegistry = new FinalizationRegistry((id) => {\n const ref = remoteObjectCache.get(id);\n if (ref !== undefined && ref.deref() === undefined) {\n remoteObjectCache.delete(id);\n electron_1.ipcRenderer.send(\"REMOTE_BROWSER_DEREFERENCE\" /* BROWSER_DEREFERENCE */, contextId, id, 0);\n }\n});\nconst electronIds = new WeakMap();\nconst isReturnValue = new WeakSet();\nfunction getCachedRemoteObject(id) {\n const ref = remoteObjectCache.get(id);\n if (ref !== undefined) {\n const deref = ref.deref();\n if (deref !== undefined)\n return deref;\n }\n}\nfunction setCachedRemoteObject(id, value) {\n const wr = new WeakRef(value);\n remoteObjectCache.set(id, wr);\n finalizationRegistry.register(value, id);\n return value;\n}\nfunction getContextId() {\n const v8Util = get_electron_binding_1.getElectronBinding('v8_util');\n if (v8Util) {\n return v8Util.getHiddenValue(global, 'contextId');\n }\n else {\n throw new Error('Electron >=v13.0.0-beta.6 required to support sandboxed renderers');\n }\n}\n// An unique ID that can represent current context.\nconst contextId = process.contextId || getContextId();\n// Notify the main process when current context is going to be released.\n// Note that when the renderer process is destroyed, the message may not be\n// sent, we also listen to the \"render-view-deleted\" event in the main process\n// to guard that situation.\nprocess.on('exit', () => {\n const command = \"REMOTE_BROWSER_CONTEXT_RELEASE\" /* BROWSER_CONTEXT_RELEASE */;\n electron_1.ipcRenderer.send(command, contextId);\n});\nconst IS_REMOTE_PROXY = Symbol('is-remote-proxy');\n// Convert the arguments object into an array of meta data.\nfunction wrapArgs(args, visited = new Set()) {\n const valueToMeta = (value) => {\n // Check for circular reference.\n if (visited.has(value)) {\n return {\n type: 'value',\n value: null\n };\n }\n if (value && value.constructor && value.constructor.name === 'NativeImage') {\n return { type: 'nativeimage', value: type_utils_1.serialize(value) };\n }\n else if (Array.isArray(value)) {\n visited.add(value);\n const meta = {\n type: 'array',\n value: wrapArgs(value, visited)\n };\n visited.delete(value);\n return meta;\n }\n else if (value instanceof Buffer) {\n return {\n type: 'buffer',\n value\n };\n }\n else if (type_utils_1.isSerializableObject(value)) {\n return {\n type: 'value',\n value\n };\n }\n else if (typeof value === 'object') {\n if (type_utils_1.isPromise(value)) {\n return {\n type: 'promise',\n then: valueToMeta(function (onFulfilled, onRejected) {\n value.then(onFulfilled, onRejected);\n })\n };\n }\n else if (electronIds.has(value)) {\n return {\n type: 'remote-object',\n id: electronIds.get(value)\n };\n }\n const meta = {\n type: 'object',\n name: value.constructor ? value.constructor.name : '',\n members: []\n };\n visited.add(value);\n for (const prop in value) { // eslint-disable-line guard-for-in\n meta.members.push({\n name: prop,\n value: valueToMeta(value[prop])\n });\n }\n visited.delete(value);\n return meta;\n }\n else if (typeof value === 'function' && isReturnValue.has(value)) {\n return {\n type: 'function-with-return-value',\n value: valueToMeta(value())\n };\n }\n else if (typeof value === 'function') {\n return {\n type: 'function',\n id: callbacksRegistry.add(value),\n location: callbacksRegistry.getLocation(value),\n length: value.length\n };\n }\n else {\n return {\n type: 'value',\n value\n };\n }\n };\n return args.map(valueToMeta);\n}\n// Populate object's members from descriptors.\n// The |ref| will be kept referenced by |members|.\n// This matches |getObjectMemebers| in rpc-server.\nfunction setObjectMembers(ref, object, metaId, members) {\n if (!Array.isArray(members))\n return;\n for (const member of members) {\n if (Object.prototype.hasOwnProperty.call(object, member.name))\n continue;\n const descriptor = { enumerable: member.enumerable };\n if (member.type === 'method') {\n const remoteMemberFunction = function (...args) {\n let command;\n if (this && this.constructor === remoteMemberFunction) {\n command = \"REMOTE_BROWSER_MEMBER_CONSTRUCTOR\" /* BROWSER_MEMBER_CONSTRUCTOR */;\n }\n else {\n command = \"REMOTE_BROWSER_MEMBER_CALL\" /* BROWSER_MEMBER_CALL */;\n }\n const ret = electron_1.ipcRenderer.sendSync(command, contextId, metaId, member.name, wrapArgs(args));\n return metaToValue(ret);\n };\n let descriptorFunction = proxyFunctionProperties(remoteMemberFunction, metaId, member.name);\n descriptor.get = () => {\n descriptorFunction.ref = ref; // The member should reference its object.\n return descriptorFunction;\n };\n // Enable monkey-patch the method\n descriptor.set = (value) => {\n descriptorFunction = value;\n return value;\n };\n descriptor.configurable = true;\n }\n else if (member.type === 'get') {\n descriptor.get = () => {\n const command = \"REMOTE_BROWSER_MEMBER_GET\" /* BROWSER_MEMBER_GET */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, metaId, member.name);\n return metaToValue(meta);\n };\n if (member.writable) {\n descriptor.set = (value) => {\n const args = wrapArgs([value]);\n const command = \"REMOTE_BROWSER_MEMBER_SET\" /* BROWSER_MEMBER_SET */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, metaId, member.name, args);\n if (meta != null)\n metaToValue(meta);\n return value;\n };\n }\n }\n Object.defineProperty(object, member.name, descriptor);\n }\n}\n// Populate object's prototype from descriptor.\n// This matches |getObjectPrototype| in rpc-server.\nfunction setObjectPrototype(ref, object, metaId, descriptor) {\n if (descriptor === null)\n return;\n const proto = {};\n setObjectMembers(ref, proto, metaId, descriptor.members);\n setObjectPrototype(ref, proto, metaId, descriptor.proto);\n Object.setPrototypeOf(object, proto);\n}\n// Wrap function in Proxy for accessing remote properties\nfunction proxyFunctionProperties(remoteMemberFunction, metaId, name) {\n let loaded = false;\n // Lazily load function properties\n const loadRemoteProperties = () => {\n if (loaded)\n return;\n loaded = true;\n const command = \"REMOTE_BROWSER_MEMBER_GET\" /* BROWSER_MEMBER_GET */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, metaId, name);\n setObjectMembers(remoteMemberFunction, remoteMemberFunction, meta.id, meta.members);\n };\n return new Proxy(remoteMemberFunction, {\n set: (target, property, value) => {\n if (property !== 'ref')\n loadRemoteProperties();\n target[property] = value;\n return true;\n },\n get: (target, property) => {\n if (property === IS_REMOTE_PROXY)\n return true;\n if (!Object.prototype.hasOwnProperty.call(target, property))\n loadRemoteProperties();\n const value = target[property];\n if (property === 'toString' && typeof value === 'function') {\n return value.bind(target);\n }\n return value;\n },\n ownKeys: (target) => {\n loadRemoteProperties();\n return Object.getOwnPropertyNames(target);\n },\n getOwnPropertyDescriptor: (target, property) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, property);\n if (descriptor)\n return descriptor;\n loadRemoteProperties();\n return Object.getOwnPropertyDescriptor(target, property);\n }\n });\n}\n// Convert meta data from browser into real value.\nfunction metaToValue(meta) {\n if (meta.type === 'value') {\n return meta.value;\n }\n else if (meta.type === 'array') {\n return meta.members.map((member) => metaToValue(member));\n }\n else if (meta.type === 'nativeimage') {\n return type_utils_1.deserialize(meta.value);\n }\n else if (meta.type === 'buffer') {\n return Buffer.from(meta.value.buffer, meta.value.byteOffset, meta.value.byteLength);\n }\n else if (meta.type === 'promise') {\n return Promise.resolve({ then: metaToValue(meta.then) });\n }\n else if (meta.type === 'error') {\n return metaToError(meta);\n }\n else if (meta.type === 'exception') {\n if (meta.value.type === 'error') {\n throw metaToError(meta.value);\n }\n else {\n throw new Error(`Unexpected value type in exception: ${meta.value.type}`);\n }\n }\n else {\n let ret;\n if ('id' in meta) {\n const cached = getCachedRemoteObject(meta.id);\n if (cached !== undefined) {\n return cached;\n }\n }\n // A shadow class to represent the remote function object.\n if (meta.type === 'function') {\n const remoteFunction = function (...args) {\n let command;\n if (this && this.constructor === remoteFunction) {\n command = \"REMOTE_BROWSER_CONSTRUCTOR\" /* BROWSER_CONSTRUCTOR */;\n }\n else {\n command = \"REMOTE_BROWSER_FUNCTION_CALL\" /* BROWSER_FUNCTION_CALL */;\n }\n const obj = electron_1.ipcRenderer.sendSync(command, contextId, meta.id, wrapArgs(args));\n return metaToValue(obj);\n };\n ret = remoteFunction;\n }\n else {\n ret = {};\n }\n setObjectMembers(ret, ret, meta.id, meta.members);\n setObjectPrototype(ret, ret, meta.id, meta.proto);\n if (ret.constructor && ret.constructor[IS_REMOTE_PROXY]) {\n Object.defineProperty(ret.constructor, 'name', { value: meta.name });\n }\n // Track delegate obj's lifetime & tell browser to clean up when object is GCed.\n electronIds.set(ret, meta.id);\n setCachedRemoteObject(meta.id, ret);\n return ret;\n }\n}\nfunction metaToError(meta) {\n const obj = meta.value;\n for (const { name, value } of meta.members) {\n obj[name] = metaToValue(value);\n }\n return obj;\n}\nfunction handleMessage(channel, handler) {\n electron_1.ipcRenderer.on(channel, (event, passedContextId, id, ...args) => {\n if (event.senderId !== 0) {\n console.error(`Message ${channel} sent by unexpected WebContents (${event.senderId})`);\n return;\n }\n if (passedContextId === contextId) {\n handler(id, ...args);\n }\n else {\n // Message sent to an un-exist context, notify the error to main process.\n electron_1.ipcRenderer.send(\"REMOTE_BROWSER_WRONG_CONTEXT_ERROR\" /* BROWSER_WRONG_CONTEXT_ERROR */, contextId, passedContextId, id);\n }\n });\n}\nconst enableStacks = process.argv.includes('--enable-api-filtering-logging');\nfunction getCurrentStack() {\n const target = { stack: undefined };\n if (enableStacks) {\n Error.captureStackTrace(target, getCurrentStack);\n }\n return target.stack;\n}\n// Browser calls a callback in renderer.\nhandleMessage(\"REMOTE_RENDERER_CALLBACK\" /* RENDERER_CALLBACK */, (id, args) => {\n callbacksRegistry.apply(id, metaToValue(args));\n});\n// A callback in browser is released.\nhandleMessage(\"REMOTE_RENDERER_RELEASE_CALLBACK\" /* RENDERER_RELEASE_CALLBACK */, (id) => {\n callbacksRegistry.remove(id);\n});\nexports.require = (module) => {\n const command = \"REMOTE_BROWSER_REQUIRE\" /* BROWSER_REQUIRE */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, module, getCurrentStack());\n return metaToValue(meta);\n};\n// Alias to remote.require('electron').xxx.\nfunction getBuiltin(module) {\n const command = \"REMOTE_BROWSER_GET_BUILTIN\" /* BROWSER_GET_BUILTIN */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, module, getCurrentStack());\n return metaToValue(meta);\n}\nexports.getBuiltin = getBuiltin;\nfunction getCurrentWindow() {\n const command = \"REMOTE_BROWSER_GET_CURRENT_WINDOW\" /* BROWSER_GET_CURRENT_WINDOW */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, getCurrentStack());\n return metaToValue(meta);\n}\nexports.getCurrentWindow = getCurrentWindow;\n// Get current WebContents object.\nfunction getCurrentWebContents() {\n const command = \"REMOTE_BROWSER_GET_CURRENT_WEB_CONTENTS\" /* BROWSER_GET_CURRENT_WEB_CONTENTS */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, getCurrentStack());\n return metaToValue(meta);\n}\nexports.getCurrentWebContents = getCurrentWebContents;\n// Get a global object in browser.\nfunction getGlobal(name) {\n const command = \"REMOTE_BROWSER_GET_GLOBAL\" /* BROWSER_GET_GLOBAL */;\n const meta = electron_1.ipcRenderer.sendSync(command, contextId, name, getCurrentStack());\n return metaToValue(meta);\n}\nexports.getGlobal = getGlobal;\n// Get the process object in browser.\nObject.defineProperty(exports, 'process', {\n enumerable: true,\n get: () => exports.getGlobal('process')\n});\n// Create a function that will return the specified value when called in browser.\nfunction createFunctionWithReturnValue(returnValue) {\n const func = () => returnValue;\n isReturnValue.add(func);\n return func;\n}\nexports.createFunctionWithReturnValue = createFunctionWithReturnValue;\nconst addBuiltinProperty = (name) => {\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: () => exports.getBuiltin(name)\n });\n};\nmodule_names_1.browserModuleNames\n .forEach(addBuiltinProperty);\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/dist/src/renderer/remote.js?");
858
-
859
- /***/ }),
860
-
861
- /***/ "./node_modules/@electron/remote/renderer/index.js":
862
- /*!*********************************************************!*\
863
- !*** ./node_modules/@electron/remote/renderer/index.js ***!
864
- \*********************************************************/
865
- /*! no static exports found */
866
- /***/ (function(module, exports, __webpack_require__) {
867
-
868
- eval("module.exports = __webpack_require__(/*! ../dist/src/renderer */ \"./node_modules/@electron/remote/dist/src/renderer/index.js\")\n\n\n//# sourceURL=webpack:///./node_modules/@electron/remote/renderer/index.js?");
869
-
870
- /***/ }),
871
-
872
789
  /***/ "./node_modules/@emotion/cache/dist/cache.browser.esm.js":
873
790
  /*!***************************************************************!*\
874
791
  !*** ./node_modules/@emotion/cache/dist/cache.browser.esm.js ***!
@@ -15046,7 +14963,7 @@ eval("module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar rp = __webp
15046
14963
  /***/ (function(module, exports, __webpack_require__) {
15047
14964
 
15048
14965
  "use strict";
15049
- eval("\nconst {promisify} = __webpack_require__(/*! util */ \"util\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst fastGlob = __webpack_require__(/*! fast-glob */ \"./node_modules/fast-glob/out/index.js\");\nconst gitIgnore = __webpack_require__(/*! ignore */ \"./node_modules/globby/node_modules/ignore/index.js\");\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\n\nconst DEFAULT_IGNORE = [\n\t'**/node_modules/**',\n\t'**/flow-typed/**',\n\t'**/coverage/**',\n\t'**/.git'\n];\n\nconst readFileP = promisify(fs.readFile);\n\nconst mapGitIgnorePatternTo = base => ignore => {\n\tif (ignore.startsWith('!')) {\n\t\treturn '!' + path.posix.join(base, ignore.slice(1));\n\t}\n\n\treturn path.posix.join(base, ignore);\n};\n\nconst parseGitIgnore = (content, options) => {\n\tconst base = slash(path.relative(options.cwd, path.dirname(options.fileName)));\n\n\treturn content\n\t\t.split(/\\r?\\n/)\n\t\t.filter(Boolean)\n\t\t.filter(line => !line.startsWith('#'))\n\t\t.map(mapGitIgnorePatternTo(base));\n};\n\nconst reduceIgnore = files => {\n\tconst ignores = gitIgnore();\n\tfor (const file of files) {\n\t\tignores.add(parseGitIgnore(file.content, {\n\t\t\tcwd: file.cwd,\n\t\t\tfileName: file.filePath\n\t\t}));\n\t}\n\n\treturn ignores;\n};\n\nconst ensureAbsolutePathForCwd = (cwd, p) => {\n\tcwd = slash(cwd);\n\tif (path.isAbsolute(p)) {\n\t\tif (slash(p).startsWith(cwd)) {\n\t\t\treturn p;\n\t\t}\n\n\t\tthrow new Error(`Path ${p} is not in cwd ${cwd}`);\n\t}\n\n\treturn path.join(cwd, p);\n};\n\nconst getIsIgnoredPredecate = (ignores, cwd) => {\n\treturn p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p.path || p))));\n};\n\nconst getFile = async (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = await readFileP(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst getFileSync = (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = fs.readFileSync(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst normalizeOptions = ({\n\tignore = [],\n\tcwd = slash(process.cwd())\n} = {}) => {\n\treturn {ignore, cwd};\n};\n\nmodule.exports = async options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = await fastGlob('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = await Promise.all(paths.map(file => getFile(file, options.cwd)));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\nmodule.exports.sync = options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = fastGlob.sync('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = paths.map(file => getFileSync(file, options.cwd));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\n\n//# sourceURL=webpack:///./node_modules/globby/gitignore.js?");
14966
+ eval("\nconst {promisify} = __webpack_require__(/*! util */ \"util\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst fastGlob = __webpack_require__(/*! fast-glob */ \"./node_modules/fast-glob/out/index.js\");\nconst gitIgnore = __webpack_require__(/*! ignore */ \"./node_modules/ignore/index.js\");\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\n\nconst DEFAULT_IGNORE = [\n\t'**/node_modules/**',\n\t'**/flow-typed/**',\n\t'**/coverage/**',\n\t'**/.git'\n];\n\nconst readFileP = promisify(fs.readFile);\n\nconst mapGitIgnorePatternTo = base => ignore => {\n\tif (ignore.startsWith('!')) {\n\t\treturn '!' + path.posix.join(base, ignore.slice(1));\n\t}\n\n\treturn path.posix.join(base, ignore);\n};\n\nconst parseGitIgnore = (content, options) => {\n\tconst base = slash(path.relative(options.cwd, path.dirname(options.fileName)));\n\n\treturn content\n\t\t.split(/\\r?\\n/)\n\t\t.filter(Boolean)\n\t\t.filter(line => !line.startsWith('#'))\n\t\t.map(mapGitIgnorePatternTo(base));\n};\n\nconst reduceIgnore = files => {\n\tconst ignores = gitIgnore();\n\tfor (const file of files) {\n\t\tignores.add(parseGitIgnore(file.content, {\n\t\t\tcwd: file.cwd,\n\t\t\tfileName: file.filePath\n\t\t}));\n\t}\n\n\treturn ignores;\n};\n\nconst ensureAbsolutePathForCwd = (cwd, p) => {\n\tcwd = slash(cwd);\n\tif (path.isAbsolute(p)) {\n\t\tif (slash(p).startsWith(cwd)) {\n\t\t\treturn p;\n\t\t}\n\n\t\tthrow new Error(`Path ${p} is not in cwd ${cwd}`);\n\t}\n\n\treturn path.join(cwd, p);\n};\n\nconst getIsIgnoredPredecate = (ignores, cwd) => {\n\treturn p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p.path || p))));\n};\n\nconst getFile = async (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = await readFileP(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst getFileSync = (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = fs.readFileSync(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst normalizeOptions = ({\n\tignore = [],\n\tcwd = slash(process.cwd())\n} = {}) => {\n\treturn {ignore, cwd};\n};\n\nmodule.exports = async options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = await fastGlob('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = await Promise.all(paths.map(file => getFile(file, options.cwd)));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\nmodule.exports.sync = options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = fastGlob.sync('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = paths.map(file => getFileSync(file, options.cwd));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\n\n//# sourceURL=webpack:///./node_modules/globby/gitignore.js?");
15050
14967
 
15051
14968
  /***/ }),
15052
14969
 
@@ -15062,17 +14979,6 @@ eval("\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst arrayUnion = __
15062
14979
 
15063
14980
  /***/ }),
15064
14981
 
15065
- /***/ "./node_modules/globby/node_modules/ignore/index.js":
15066
- /*!**********************************************************!*\
15067
- !*** ./node_modules/globby/node_modules/ignore/index.js ***!
15068
- \**********************************************************/
15069
- /*! no static exports found */
15070
- /***/ (function(module, exports) {
15071
-
15072
- eval("// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\nconst KEY_IGNORE = typeof Symbol !== 'undefined'\n ? Symbol.for('node-ignore')\n /* istanbul ignore next */\n : 'node-ignore'\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule\n /(^|[^\\\\]+)\\\\\\*(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1) => `${p1}[^\\\\/]*`\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, negative, ignorecase) => {\n const r = regexCache[pattern]\n if (r) {\n return r\n }\n\n // const replacers = negative\n // ? NEGATIVE_REPLACERS\n // : POSITIVE_REPLACERS\n\n const source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n\n return regexCache[pattern] = ignorecase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignorecase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, negative, ignorecase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true\n } = {}) {\n this._rules = []\n this._ignorecase = ignorecase\n define(this, KEY_IGNORE, true)\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignorecase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(path, originalPath, throwError)\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst returnFalse = () => false\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, returnFalse)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n\n\n//# sourceURL=webpack:///./node_modules/globby/node_modules/ignore/index.js?");
15073
-
15074
- /***/ }),
15075
-
15076
14982
  /***/ "./node_modules/globby/stream-utils.js":
15077
14983
  /*!*********************************************!*\
15078
14984
  !*** ./node_modules/globby/stream-utils.js ***!
@@ -16643,6 +16549,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-var, pre
16643
16549
 
16644
16550
  /***/ }),
16645
16551
 
16552
+ /***/ "./node_modules/ignore/index.js":
16553
+ /*!**************************************!*\
16554
+ !*** ./node_modules/ignore/index.js ***!
16555
+ \**************************************/
16556
+ /*! no static exports found */
16557
+ /***/ (function(module, exports) {
16558
+
16559
+ eval("// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\nconst KEY_IGNORE = typeof Symbol !== 'undefined'\n ? Symbol.for('node-ignore')\n /* istanbul ignore next */\n : 'node-ignore'\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule\n /(^|[^\\\\]+)\\\\\\*(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1) => `${p1}[^\\\\/]*`\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, negative, ignorecase) => {\n const r = regexCache[pattern]\n if (r) {\n return r\n }\n\n // const replacers = negative\n // ? NEGATIVE_REPLACERS\n // : POSITIVE_REPLACERS\n\n const source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n\n return regexCache[pattern] = ignorecase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignorecase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, negative, ignorecase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true\n } = {}) {\n this._rules = []\n this._ignorecase = ignorecase\n define(this, KEY_IGNORE, true)\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignorecase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(path, originalPath, throwError)\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst returnFalse = () => false\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, returnFalse)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n\n\n//# sourceURL=webpack:///./node_modules/ignore/index.js?");
16560
+
16561
+ /***/ }),
16562
+
16646
16563
  /***/ "./node_modules/immer/dist/immer.esm.js":
16647
16564
  /*!**********************************************!*\
16648
16565
  !*** ./node_modules/immer/dist/immer.esm.js ***!
@@ -37792,7 +37709,7 @@ eval("class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthi
37792
37709
  /*! exports provided: name, productName, description, homepage, version, main, copyright, license, author, scripts, config, engines, jest, build, dependencies, devDependencies, default */
37793
37710
  /***/ (function(module) {
37794
37711
 
37795
- 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.3.0\\\",\\\"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\\\",\\\"dev:renderer\\\":\\\"yarn run webpack-dev-server --config webpack.renderer.ts\\\",\\\"dev:extension-types\\\":\\\"yarn run compile:extension-types --watch\\\",\\\"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\\\",\\\"dist\\\":\\\"yarn run compile && electron-builder --publish onTag\\\",\\\"dist:dir\\\":\\\"yarn run dist --dir -c.compression=store -c.mac.identity=null\\\",\\\"download-bins\\\":\\\"concurrently yarn:download:*\\\",\\\"download:kubectl\\\":\\\"yarn run ts-node build/download_kubectl.ts\\\",\\\"download:helm\\\":\\\"yarn run ts-node build/download_helm.ts\\\",\\\"build:tray-icons\\\":\\\"yarn run ts-node build/build_tray_icon.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\\\":{\\\"bundledKubectlVersion\\\":\\\"1.21.2\\\",\\\"bundledHelmVersion\\\":\\\"3.6.3\\\",\\\"sentryDsn\\\":\\\"\\\"},\\\"engines\\\":{\\\"node\\\":\\\">=14 <15\\\"},\\\"jest\\\":{\\\"collectCoverage\\\":false,\\\"verbose\\\":true,\\\"transform\\\":{\\\"^.+\\\\\\\\.tsx?$\\\":\\\"ts-jest\\\"},\\\"moduleNameMapper\\\":{\\\"\\\\\\\\.(css|scss)$\\\":\\\"<rootDir>/__mocks__/styleMock.ts\\\",\\\"\\\\\\\\.(svg)$\\\":\\\"<rootDir>/__mocks__/imageMock.ts\\\"},\\\"modulePathIgnorePatterns\\\":[\\\"<rootDir>/dist\\\",\\\"<rootDir>/src/extensions/npm\\\"],\\\"setupFiles\\\":[\\\"<rootDir>/src/jest.setup.ts\\\",\\\"jest-canvas-mock\\\"],\\\"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/${arch}/helm3/helm3\\\",\\\"to\\\":\\\"./helm3/helm3\\\"}]},\\\"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/${arch}/helm3/helm3\\\",\\\"to\\\":\\\"./helm3/helm3\\\"}]},\\\"win\\\":{\\\"target\\\":[\\\"nsis\\\"],\\\"extraResources\\\":[{\\\"from\\\":\\\"binaries/client/windows/x64/kubectl.exe\\\",\\\"to\\\":\\\"./x64/kubectl.exe\\\"},{\\\"from\\\":\\\"binaries/client/windows/ia32/kubectl.exe\\\",\\\"to\\\":\\\"./ia32/kubectl.exe\\\"},{\\\"from\\\":\\\"binaries/client/x64/helm3/helm3.exe\\\",\\\"to\\\":\\\"./helm3/helm3.exe\\\"}]},\\\"nsis\\\":{\\\"include\\\":\\\"build/installer.nsh\\\",\\\"oneClick\\\":false,\\\"allowElevation\\\":true,\\\"createStartMenuShortcut\\\":true,\\\"allowToChangeInstallationDirectory\\\":true},\\\"protocols\\\":{\\\"name\\\":\\\"Lens Protocol Handler\\\",\\\"schemes\\\":[\\\"lens\\\"],\\\"role\\\":\\\"Viewer\\\"}},\\\"dependencies\\\":{\\\"@electron/remote\\\":\\\"^1.2.2\\\",\\\"@hapi/call\\\":\\\"^8.0.1\\\",\\\"@hapi/subtext\\\":\\\"^7.0.3\\\",\\\"@kubernetes/client-node\\\":\\\"^0.16.1\\\",\\\"@ogre-tools/injectable\\\":\\\"3.2.0\\\",\\\"@ogre-tools/injectable-react\\\":\\\"3.2.0\\\",\\\"@sentry/electron\\\":\\\"^2.5.4\\\",\\\"@sentry/integrations\\\":\\\"^6.15.0\\\",\\\"@types/circular-dependency-plugin\\\":\\\"5.0.4\\\",\\\"abort-controller\\\":\\\"^3.0.0\\\",\\\"auto-bind\\\":\\\"^4.0.0\\\",\\\"autobind-decorator\\\":\\\"^2.4.0\\\",\\\"await-lock\\\":\\\"^2.1.0\\\",\\\"byline\\\":\\\"^5.0.0\\\",\\\"chokidar\\\":\\\"^3.4.3\\\",\\\"conf\\\":\\\"^7.1.2\\\",\\\"crypto-js\\\":\\\"^4.1.1\\\",\\\"electron-devtools-installer\\\":\\\"^3.2.0\\\",\\\"electron-updater\\\":\\\"^4.6.1\\\",\\\"electron-window-state\\\":\\\"^5.0.3\\\",\\\"filehound\\\":\\\"^1.17.5\\\",\\\"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.6\\\",\\\"joi\\\":\\\"^17.5.0\\\",\\\"js-yaml\\\":\\\"^4.1.0\\\",\\\"jsdom\\\":\\\"^16.7.0\\\",\\\"jsonpath\\\":\\\"^1.1.1\\\",\\\"lodash\\\":\\\"^4.17.15\\\",\\\"mac-ca\\\":\\\"^1.0.6\\\",\\\"marked\\\":\\\"^4.0.10\\\",\\\"md5-file\\\":\\\"^5.0.0\\\",\\\"mobx\\\":\\\"^6.3.7\\\",\\\"mobx-observable-history\\\":\\\"^2.0.3\\\",\\\"mobx-react\\\":\\\"^7.2.1\\\",\\\"mock-fs\\\":\\\"^5.1.2\\\",\\\"moment\\\":\\\"^2.29.1\\\",\\\"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.15\\\",\\\"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.8\\\",\\\"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\\\",\\\"semver\\\":\\\"^7.3.2\\\",\\\"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.3\\\",\\\"uuid\\\":\\\"^8.3.2\\\",\\\"win-ca\\\":\\\"^3.4.5\\\",\\\"winston\\\":\\\"^3.3.3\\\",\\\"winston-console-format\\\":\\\"^1.0.8\\\",\\\"winston-transport-browserconsole\\\":\\\"^1.0.5\\\",\\\"ws\\\":\\\"^7.5.5\\\"},\\\"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.4.3\\\",\\\"@sentry/types\\\":\\\"^6.14.1\\\",\\\"@testing-library/jest-dom\\\":\\\"^5.16.1\\\",\\\"@testing-library/react\\\":\\\"^11.2.7\\\",\\\"@testing-library/user-event\\\":\\\"^13.5.0\\\",\\\"@types/byline\\\":\\\"^4.2.33\\\",\\\"@types/chart.js\\\":\\\"^2.9.34\\\",\\\"@types/color\\\":\\\"^3.0.2\\\",\\\"@types/crypto-js\\\":\\\"^3.1.47\\\",\\\"@types/dompurify\\\":\\\"^2.3.1\\\",\\\"@types/electron-devtools-installer\\\":\\\"^2.2.0\\\",\\\"@types/fs-extra\\\":\\\"^9.0.13\\\",\\\"@types/glob-to-regexp\\\":\\\"^0.4.1\\\",\\\"@types/hoist-non-react-statics\\\":\\\"^3.3.1\\\",\\\"@types/html-webpack-plugin\\\":\\\"^3.2.6\\\",\\\"@types/http-proxy\\\":\\\"^1.17.7\\\",\\\"@types/jest\\\":\\\"^26.0.24\\\",\\\"@types/js-yaml\\\":\\\"^4.0.5\\\",\\\"@types/jsdom\\\":\\\"^16.2.13\\\",\\\"@types/jsonpath\\\":\\\"^0.2.0\\\",\\\"@types/lodash\\\":\\\"^4.14.177\\\",\\\"@types/marked\\\":\\\"^4.0.1\\\",\\\"@types/md5-file\\\":\\\"^4.0.2\\\",\\\"@types/mini-css-extract-plugin\\\":\\\"^0.9.1\\\",\\\"@types/mock-fs\\\":\\\"^4.13.1\\\",\\\"@types/node\\\":\\\"14.17.33\\\",\\\"@types/node-fetch\\\":\\\"^2.5.12\\\",\\\"@types/npm\\\":\\\"^2.0.32\\\",\\\"@types/progress-bar-webpack-plugin\\\":\\\"^2.1.2\\\",\\\"@types/proper-lockfile\\\":\\\"^4.1.2\\\",\\\"@types/randomcolor\\\":\\\"^0.5.6\\\",\\\"@types/react\\\":\\\"^17.0.34\\\",\\\"@types/react-beautiful-dnd\\\":\\\"^13.1.2\\\",\\\"@types/react-dom\\\":\\\"^17.0.11\\\",\\\"@types/react-router-dom\\\":\\\"^5.3.2\\\",\\\"@types/react-select\\\":\\\"3.1.2\\\",\\\"@types/react-table\\\":\\\"^7.7.8\\\",\\\"@types/react-virtualized-auto-sizer\\\":\\\"^1.0.1\\\",\\\"@types/react-window\\\":\\\"^1.8.5\\\",\\\"@types/readable-stream\\\":\\\"^2.3.12\\\",\\\"@types/request\\\":\\\"^2.48.7\\\",\\\"@types/request-promise-native\\\":\\\"^1.0.18\\\",\\\"@types/semver\\\":\\\"^7.3.9\\\",\\\"@types/sharp\\\":\\\"^0.29.4\\\",\\\"@types/spdy\\\":\\\"^3.4.5\\\",\\\"@types/tar\\\":\\\"^4.0.5\\\",\\\"@types/tcp-port-used\\\":\\\"^1.0.0\\\",\\\"@types/tempy\\\":\\\"^0.3.0\\\",\\\"@types/triple-beam\\\":\\\"^1.3.2\\\",\\\"@types/url-parse\\\":\\\"^1.4.5\\\",\\\"@types/uuid\\\":\\\"^8.3.3\\\",\\\"@types/webpack\\\":\\\"^4.41.32\\\",\\\"@types/webpack-dev-server\\\":\\\"^3.11.6\\\",\\\"@types/webpack-env\\\":\\\"^1.16.3\\\",\\\"@types/webpack-node-externals\\\":\\\"^1.7.1\\\",\\\"@typescript-eslint/eslint-plugin\\\":\\\"^5.7.0\\\",\\\"@typescript-eslint/parser\\\":\\\"^5.7.0\\\",\\\"ansi_up\\\":\\\"^5.1.0\\\",\\\"chart.js\\\":\\\"^2.9.4\\\",\\\"circular-dependency-plugin\\\":\\\"^5.2.2\\\",\\\"color\\\":\\\"^3.2.1\\\",\\\"concurrently\\\":\\\"^5.3.0\\\",\\\"css-loader\\\":\\\"^5.2.7\\\",\\\"deepdash\\\":\\\"^5.3.9\\\",\\\"dompurify\\\":\\\"^2.3.4\\\",\\\"electron\\\":\\\"^13.6.1\\\",\\\"electron-builder\\\":\\\"^22.14.5\\\",\\\"electron-notarize\\\":\\\"^0.3.0\\\",\\\"esbuild\\\":\\\"^0.13.15\\\",\\\"esbuild-loader\\\":\\\"^2.16.0\\\",\\\"eslint\\\":\\\"^7.32.0\\\",\\\"eslint-import-resolver-typescript\\\":\\\"^2.5.0\\\",\\\"eslint-plugin-header\\\":\\\"^3.1.1\\\",\\\"eslint-plugin-import\\\":\\\"^2.25.3\\\",\\\"eslint-plugin-react\\\":\\\"^7.27.1\\\",\\\"eslint-plugin-react-hooks\\\":\\\"^4.3.0\\\",\\\"eslint-plugin-unused-imports\\\":\\\"^1.1.5\\\",\\\"file-loader\\\":\\\"^6.2.0\\\",\\\"flex.box\\\":\\\"^3.4.4\\\",\\\"fork-ts-checker-webpack-plugin\\\":\\\"^5.2.1\\\",\\\"hoist-non-react-statics\\\":\\\"^3.3.2\\\",\\\"html-webpack-plugin\\\":\\\"^4.5.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\\\":\\\"^1.6.2\\\",\\\"node-gyp\\\":\\\"7.1.2\\\",\\\"node-loader\\\":\\\"^1.0.3\\\",\\\"nodemon\\\":\\\"^2.0.15\\\",\\\"playwright\\\":\\\"^1.17.1\\\",\\\"postcss\\\":\\\"^8.4.5\\\",\\\"postcss-loader\\\":\\\"^4.3.0\\\",\\\"progress-bar-webpack-plugin\\\":\\\"^2.1.0\\\",\\\"randomcolor\\\":\\\"^0.6.2\\\",\\\"raw-loader\\\":\\\"^4.0.2\\\",\\\"react-beautiful-dnd\\\":\\\"^13.1.0\\\",\\\"react-refresh\\\":\\\"^0.9.0\\\",\\\"react-router-dom\\\":\\\"^5.3.0\\\",\\\"react-select\\\":\\\"3.2.0\\\",\\\"react-select-event\\\":\\\"^5.1.0\\\",\\\"react-table\\\":\\\"^7.7.0\\\",\\\"react-window\\\":\\\"^1.8.6\\\",\\\"sass\\\":\\\"^1.45.1\\\",\\\"sass-loader\\\":\\\"^10.2.0\\\",\\\"sharp\\\":\\\"^0.29.3\\\",\\\"style-loader\\\":\\\"^2.0.0\\\",\\\"tailwindcss\\\":\\\"^3.0.7\\\",\\\"ts-jest\\\":\\\"26.5.6\\\",\\\"ts-loader\\\":\\\"^7.0.5\\\",\\\"ts-node\\\":\\\"^10.4.0\\\",\\\"type-fest\\\":\\\"^1.0.2\\\",\\\"typed-emitter\\\":\\\"^1.4.0\\\",\\\"typedoc\\\":\\\"0.22.10\\\",\\\"typedoc-plugin-markdown\\\":\\\"^3.11.3\\\",\\\"typeface-roboto\\\":\\\"^1.1.13\\\",\\\"typescript\\\":\\\"^4.5.2\\\",\\\"typescript-plugin-css-modules\\\":\\\"^3.4.0\\\",\\\"url-loader\\\":\\\"^4.1.1\\\",\\\"webpack\\\":\\\"^4.46.0\\\",\\\"webpack-cli\\\":\\\"^3.3.12\\\",\\\"webpack-dev-server\\\":\\\"^3.11.3\\\",\\\"webpack-node-externals\\\":\\\"^1.7.2\\\",\\\"xterm\\\":\\\"^4.15.0\\\",\\\"xterm-addon-fit\\\":\\\"^0.5.0\\\"}}\");\n\n//# sourceURL=webpack:///./package.json?");
37712
+ 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.3.0\\\",\\\"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\\\",\\\"dev:renderer\\\":\\\"yarn run webpack-dev-server --config webpack.renderer.ts\\\",\\\"dev:extension-types\\\":\\\"yarn run compile:extension-types --watch\\\",\\\"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\\\",\\\"dist\\\":\\\"yarn run compile && electron-builder --publish onTag\\\",\\\"dist:dir\\\":\\\"yarn run dist --dir -c.compression=store -c.mac.identity=null\\\",\\\"download-bins\\\":\\\"concurrently yarn:download:*\\\",\\\"download:kubectl\\\":\\\"yarn run ts-node build/download_kubectl.ts\\\",\\\"download:helm\\\":\\\"yarn run ts-node build/download_helm.ts\\\",\\\"build:tray-icons\\\":\\\"yarn run ts-node build/build_tray_icon.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\\\":{\\\"bundledKubectlVersion\\\":\\\"1.21.2\\\",\\\"bundledHelmVersion\\\":\\\"3.6.3\\\",\\\"sentryDsn\\\":\\\"\\\"},\\\"engines\\\":{\\\"node\\\":\\\">=14 <15\\\"},\\\"jest\\\":{\\\"collectCoverage\\\":false,\\\"verbose\\\":true,\\\"transform\\\":{\\\"^.+\\\\\\\\.tsx?$\\\":\\\"ts-jest\\\"},\\\"moduleNameMapper\\\":{\\\"\\\\\\\\.(css|scss)$\\\":\\\"<rootDir>/__mocks__/styleMock.ts\\\",\\\"\\\\\\\\.(svg)$\\\":\\\"<rootDir>/__mocks__/imageMock.ts\\\"},\\\"modulePathIgnorePatterns\\\":[\\\"<rootDir>/dist\\\",\\\"<rootDir>/src/extensions/npm\\\"],\\\"setupFiles\\\":[\\\"<rootDir>/src/jest.setup.ts\\\",\\\"jest-canvas-mock\\\"],\\\"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/${arch}/helm3/helm3\\\",\\\"to\\\":\\\"./helm3/helm3\\\"}]},\\\"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/${arch}/helm3/helm3\\\",\\\"to\\\":\\\"./helm3/helm3\\\"}]},\\\"win\\\":{\\\"target\\\":[\\\"nsis\\\"],\\\"extraResources\\\":[{\\\"from\\\":\\\"binaries/client/windows/x64/kubectl.exe\\\",\\\"to\\\":\\\"./x64/kubectl.exe\\\"},{\\\"from\\\":\\\"binaries/client/windows/ia32/kubectl.exe\\\",\\\"to\\\":\\\"./ia32/kubectl.exe\\\"},{\\\"from\\\":\\\"binaries/client/x64/helm3/helm3.exe\\\",\\\"to\\\":\\\"./helm3/helm3.exe\\\"}]},\\\"nsis\\\":{\\\"include\\\":\\\"build/installer.nsh\\\",\\\"oneClick\\\":false,\\\"allowElevation\\\":true,\\\"createStartMenuShortcut\\\":true,\\\"allowToChangeInstallationDirectory\\\":true},\\\"protocols\\\":{\\\"name\\\":\\\"Lens Protocol Handler\\\",\\\"schemes\\\":[\\\"lens\\\"],\\\"role\\\":\\\"Viewer\\\"}},\\\"dependencies\\\":{\\\"@hapi/call\\\":\\\"^8.0.1\\\",\\\"@hapi/subtext\\\":\\\"^7.0.3\\\",\\\"@kubernetes/client-node\\\":\\\"^0.16.1\\\",\\\"@ogre-tools/injectable\\\":\\\"3.2.0\\\",\\\"@ogre-tools/injectable-react\\\":\\\"3.2.0\\\",\\\"@sentry/electron\\\":\\\"^2.5.4\\\",\\\"@sentry/integrations\\\":\\\"^6.15.0\\\",\\\"@types/circular-dependency-plugin\\\":\\\"5.0.4\\\",\\\"abort-controller\\\":\\\"^3.0.0\\\",\\\"auto-bind\\\":\\\"^4.0.0\\\",\\\"autobind-decorator\\\":\\\"^2.4.0\\\",\\\"await-lock\\\":\\\"^2.1.0\\\",\\\"byline\\\":\\\"^5.0.0\\\",\\\"chokidar\\\":\\\"^3.4.3\\\",\\\"conf\\\":\\\"^7.1.2\\\",\\\"crypto-js\\\":\\\"^4.1.1\\\",\\\"electron-devtools-installer\\\":\\\"^3.2.0\\\",\\\"electron-updater\\\":\\\"^4.6.1\\\",\\\"electron-window-state\\\":\\\"^5.0.3\\\",\\\"filehound\\\":\\\"^1.17.5\\\",\\\"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.6\\\",\\\"joi\\\":\\\"^17.5.0\\\",\\\"js-yaml\\\":\\\"^4.1.0\\\",\\\"jsdom\\\":\\\"^16.7.0\\\",\\\"jsonpath\\\":\\\"^1.1.1\\\",\\\"lodash\\\":\\\"^4.17.15\\\",\\\"mac-ca\\\":\\\"^1.0.6\\\",\\\"marked\\\":\\\"^4.0.10\\\",\\\"md5-file\\\":\\\"^5.0.0\\\",\\\"mobx\\\":\\\"^6.3.7\\\",\\\"mobx-observable-history\\\":\\\"^2.0.3\\\",\\\"mobx-react\\\":\\\"^7.2.1\\\",\\\"mock-fs\\\":\\\"^5.1.2\\\",\\\"moment\\\":\\\"^2.29.1\\\",\\\"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.15\\\",\\\"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.8\\\",\\\"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\\\",\\\"semver\\\":\\\"^7.3.2\\\",\\\"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.3\\\",\\\"uuid\\\":\\\"^8.3.2\\\",\\\"win-ca\\\":\\\"^3.4.5\\\",\\\"winston\\\":\\\"^3.3.3\\\",\\\"winston-console-format\\\":\\\"^1.0.8\\\",\\\"winston-transport-browserconsole\\\":\\\"^1.0.5\\\",\\\"ws\\\":\\\"^7.5.5\\\"},\\\"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.4.3\\\",\\\"@sentry/types\\\":\\\"^6.14.1\\\",\\\"@testing-library/jest-dom\\\":\\\"^5.16.1\\\",\\\"@testing-library/react\\\":\\\"^11.2.7\\\",\\\"@testing-library/user-event\\\":\\\"^13.5.0\\\",\\\"@types/byline\\\":\\\"^4.2.33\\\",\\\"@types/chart.js\\\":\\\"^2.9.34\\\",\\\"@types/color\\\":\\\"^3.0.2\\\",\\\"@types/crypto-js\\\":\\\"^3.1.47\\\",\\\"@types/dompurify\\\":\\\"^2.3.1\\\",\\\"@types/electron-devtools-installer\\\":\\\"^2.2.0\\\",\\\"@types/fs-extra\\\":\\\"^9.0.13\\\",\\\"@types/glob-to-regexp\\\":\\\"^0.4.1\\\",\\\"@types/hoist-non-react-statics\\\":\\\"^3.3.1\\\",\\\"@types/html-webpack-plugin\\\":\\\"^3.2.6\\\",\\\"@types/http-proxy\\\":\\\"^1.17.7\\\",\\\"@types/jest\\\":\\\"^26.0.24\\\",\\\"@types/js-yaml\\\":\\\"^4.0.5\\\",\\\"@types/jsdom\\\":\\\"^16.2.13\\\",\\\"@types/jsonpath\\\":\\\"^0.2.0\\\",\\\"@types/lodash\\\":\\\"^4.14.177\\\",\\\"@types/marked\\\":\\\"^4.0.1\\\",\\\"@types/md5-file\\\":\\\"^4.0.2\\\",\\\"@types/mini-css-extract-plugin\\\":\\\"^0.9.1\\\",\\\"@types/mock-fs\\\":\\\"^4.13.1\\\",\\\"@types/node\\\":\\\"14.17.33\\\",\\\"@types/node-fetch\\\":\\\"^2.5.12\\\",\\\"@types/npm\\\":\\\"^2.0.32\\\",\\\"@types/progress-bar-webpack-plugin\\\":\\\"^2.1.2\\\",\\\"@types/proper-lockfile\\\":\\\"^4.1.2\\\",\\\"@types/randomcolor\\\":\\\"^0.5.6\\\",\\\"@types/react\\\":\\\"^17.0.34\\\",\\\"@types/react-beautiful-dnd\\\":\\\"^13.1.2\\\",\\\"@types/react-dom\\\":\\\"^17.0.11\\\",\\\"@types/react-router-dom\\\":\\\"^5.3.2\\\",\\\"@types/react-select\\\":\\\"3.1.2\\\",\\\"@types/react-table\\\":\\\"^7.7.8\\\",\\\"@types/react-virtualized-auto-sizer\\\":\\\"^1.0.1\\\",\\\"@types/react-window\\\":\\\"^1.8.5\\\",\\\"@types/readable-stream\\\":\\\"^2.3.12\\\",\\\"@types/request\\\":\\\"^2.48.7\\\",\\\"@types/request-promise-native\\\":\\\"^1.0.18\\\",\\\"@types/semver\\\":\\\"^7.3.9\\\",\\\"@types/sharp\\\":\\\"^0.29.4\\\",\\\"@types/spdy\\\":\\\"^3.4.5\\\",\\\"@types/tar\\\":\\\"^4.0.5\\\",\\\"@types/tcp-port-used\\\":\\\"^1.0.0\\\",\\\"@types/tempy\\\":\\\"^0.3.0\\\",\\\"@types/triple-beam\\\":\\\"^1.3.2\\\",\\\"@types/url-parse\\\":\\\"^1.4.5\\\",\\\"@types/uuid\\\":\\\"^8.3.3\\\",\\\"@types/webpack\\\":\\\"^4.41.32\\\",\\\"@types/webpack-dev-server\\\":\\\"^3.11.6\\\",\\\"@types/webpack-env\\\":\\\"^1.16.3\\\",\\\"@types/webpack-node-externals\\\":\\\"^1.7.1\\\",\\\"@typescript-eslint/eslint-plugin\\\":\\\"^5.10.1\\\",\\\"@typescript-eslint/parser\\\":\\\"^5.10.1\\\",\\\"ansi_up\\\":\\\"^5.1.0\\\",\\\"chart.js\\\":\\\"^2.9.4\\\",\\\"circular-dependency-plugin\\\":\\\"^5.2.2\\\",\\\"color\\\":\\\"^3.2.1\\\",\\\"concurrently\\\":\\\"^5.3.0\\\",\\\"css-loader\\\":\\\"^5.2.7\\\",\\\"deepdash\\\":\\\"^5.3.9\\\",\\\"dompurify\\\":\\\"^2.3.4\\\",\\\"electron\\\":\\\"^14.2.4\\\",\\\"electron-builder\\\":\\\"^22.14.5\\\",\\\"electron-notarize\\\":\\\"^0.3.0\\\",\\\"esbuild\\\":\\\"^0.13.15\\\",\\\"esbuild-loader\\\":\\\"^2.16.0\\\",\\\"eslint\\\":\\\"^8.7.0\\\",\\\"eslint-plugin-header\\\":\\\"^3.1.1\\\",\\\"eslint-plugin-import\\\":\\\"^2.25.4\\\",\\\"eslint-plugin-react\\\":\\\"^7.28.0\\\",\\\"eslint-plugin-react-hooks\\\":\\\"^4.3.0\\\",\\\"eslint-plugin-unused-imports\\\":\\\"^2.0.0\\\",\\\"file-loader\\\":\\\"^6.2.0\\\",\\\"flex.box\\\":\\\"^3.4.4\\\",\\\"fork-ts-checker-webpack-plugin\\\":\\\"^5.2.1\\\",\\\"hoist-non-react-statics\\\":\\\"^3.3.2\\\",\\\"html-webpack-plugin\\\":\\\"^4.5.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\\\":\\\"^1.6.2\\\",\\\"node-gyp\\\":\\\"7.1.2\\\",\\\"node-loader\\\":\\\"^1.0.3\\\",\\\"nodemon\\\":\\\"^2.0.15\\\",\\\"playwright\\\":\\\"^1.17.1\\\",\\\"postcss\\\":\\\"^8.4.5\\\",\\\"postcss-loader\\\":\\\"^4.3.0\\\",\\\"progress-bar-webpack-plugin\\\":\\\"^2.1.0\\\",\\\"randomcolor\\\":\\\"^0.6.2\\\",\\\"raw-loader\\\":\\\"^4.0.2\\\",\\\"react-beautiful-dnd\\\":\\\"^13.1.0\\\",\\\"react-refresh\\\":\\\"^0.9.0\\\",\\\"react-router-dom\\\":\\\"^5.3.0\\\",\\\"react-select\\\":\\\"3.2.0\\\",\\\"react-select-event\\\":\\\"^5.1.0\\\",\\\"react-table\\\":\\\"^7.7.0\\\",\\\"react-window\\\":\\\"^1.8.6\\\",\\\"sass\\\":\\\"^1.45.1\\\",\\\"sass-loader\\\":\\\"^10.2.0\\\",\\\"sharp\\\":\\\"^0.29.3\\\",\\\"style-loader\\\":\\\"^2.0.0\\\",\\\"tailwindcss\\\":\\\"^3.0.7\\\",\\\"ts-jest\\\":\\\"26.5.6\\\",\\\"ts-loader\\\":\\\"^7.0.5\\\",\\\"ts-node\\\":\\\"^10.4.0\\\",\\\"type-fest\\\":\\\"^1.0.2\\\",\\\"typed-emitter\\\":\\\"^1.4.0\\\",\\\"typedoc\\\":\\\"0.22.10\\\",\\\"typedoc-plugin-markdown\\\":\\\"^3.11.3\\\",\\\"typeface-roboto\\\":\\\"^1.1.13\\\",\\\"typescript\\\":\\\"^4.5.2\\\",\\\"typescript-plugin-css-modules\\\":\\\"^3.4.0\\\",\\\"url-loader\\\":\\\"^4.1.1\\\",\\\"webpack\\\":\\\"^4.46.0\\\",\\\"webpack-cli\\\":\\\"^3.3.12\\\",\\\"webpack-dev-server\\\":\\\"^3.11.3\\\",\\\"webpack-node-externals\\\":\\\"^1.7.2\\\",\\\"xterm\\\":\\\"^4.15.0\\\",\\\"xterm-addon-fit\\\":\\\"^0.5.0\\\"}}\");\n\n//# sourceURL=webpack:///./package.json?");
37796
37713
 
37797
37714
  /***/ }),
37798
37715
 
@@ -37900,7 +37817,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gen
37900
37817
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
37901
37818
 
37902
37819
  "use strict";
37903
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LensKubernetesClusterStatus\", function() { return LensKubernetesClusterStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KubernetesCluster\", function() { return KubernetesCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kubernetesClusterCategory\", function() { return kubernetesClusterCategory; });\n/* harmony import */ var _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../catalog/catalog-category-registry */ \"./src/common/catalog/catalog-category-registry.ts\");\n/* harmony import */ var _catalog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _cluster_ipc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cluster-ipc */ \"./src/common/cluster-ipc.ts\");\n/* harmony import */ var _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../renderer/navigation/events */ \"./src/renderer/navigation/events.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\nvar LensKubernetesClusterStatus;\n(function (LensKubernetesClusterStatus) {\n LensKubernetesClusterStatus[\"DELETING\"] = \"deleting\";\n LensKubernetesClusterStatus[\"CONNECTING\"] = \"connecting\";\n LensKubernetesClusterStatus[\"CONNECTED\"] = \"connected\";\n LensKubernetesClusterStatus[\"DISCONNECTED\"] = \"disconnected\";\n})(LensKubernetesClusterStatus || (LensKubernetesClusterStatus = {}));\nclass KubernetesCluster extends _catalog__WEBPACK_IMPORTED_MODULE_1__[\"CatalogEntity\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KubernetesCluster.apiVersion\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KubernetesCluster.kind\n });\n }\n async connect() {\n var _a;\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n await ((_a = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_3__[\"ClusterStore\"].getInstance().getById(this.metadata.uid)) === null || _a === void 0 ? void 0 : _a.activate());\n }\n else {\n await Object(_ipc__WEBPACK_IMPORTED_MODULE_4__[\"requestMain\"])(_cluster_ipc__WEBPACK_IMPORTED_MODULE_2__[\"clusterActivateHandler\"], this.metadata.uid, false);\n }\n }\n async disconnect() {\n var _a;\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n (_a = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_3__[\"ClusterStore\"].getInstance().getById(this.metadata.uid)) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n else {\n await Object(_ipc__WEBPACK_IMPORTED_MODULE_4__[\"requestMain\"])(_cluster_ipc__WEBPACK_IMPORTED_MODULE_2__[\"clusterDisconnectHandler\"], this.metadata.uid, false);\n }\n }\n async onRun(context) {\n context.navigate(`/cluster/${this.metadata.uid}`);\n }\n onDetailsOpen() {\n //\n }\n onSettingsOpen() {\n //\n }\n async onContextMenuOpen(context) {\n var _a;\n if (!this.metadata.source || this.metadata.source === \"local\") {\n context.menuItems.push({\n title: \"Settings\",\n icon: \"settings\",\n onClick: () => Object(_ipc__WEBPACK_IMPORTED_MODULE_4__[\"broadcastMessage\"])(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_6__[\"IpcRendererNavigationEvents\"].NAVIGATE_IN_APP, `/entity/${this.metadata.uid}/settings`),\n });\n }\n switch (this.status.phase) {\n case LensKubernetesClusterStatus.CONNECTED:\n case LensKubernetesClusterStatus.CONNECTING:\n context.menuItems.push({\n title: \"Disconnect\",\n icon: \"link_off\",\n onClick: () => Object(_ipc__WEBPACK_IMPORTED_MODULE_4__[\"requestMain\"])(_cluster_ipc__WEBPACK_IMPORTED_MODULE_2__[\"clusterDisconnectHandler\"], this.metadata.uid),\n });\n break;\n case LensKubernetesClusterStatus.DISCONNECTED:\n context.menuItems.push({\n title: \"Connect\",\n icon: \"link\",\n onClick: () => context.navigate(`/cluster/${this.metadata.uid}`),\n });\n break;\n }\n (_a = _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__[\"catalogCategoryRegistry\"]\n .getCategoryForEntity(this)) === null || _a === void 0 ? void 0 : _a.emit(\"contextMenuOpen\", this, context);\n }\n}\nObject.defineProperty(KubernetesCluster, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"entity.k8slens.dev/v1alpha1\"\n});\nObject.defineProperty(KubernetesCluster, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"KubernetesCluster\"\n});\nclass KubernetesClusterCategory extends _catalog__WEBPACK_IMPORTED_MODULE_1__[\"CatalogCategory\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"catalog.k8slens.dev/v1alpha1\"\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"CatalogCategory\"\n });\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"Clusters\",\n icon: __webpack_require__(/*! !raw-loader!./icons/kubernetes.svg */ \"./node_modules/raw-loader/dist/cjs.js!./src/common/catalog-entities/icons/kubernetes.svg\").default, // eslint-disable-line\n }\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n group: \"entity.k8slens.dev\",\n versions: [\n {\n name: \"v1alpha1\",\n entityClass: KubernetesCluster,\n },\n ],\n names: {\n kind: \"KubernetesCluster\",\n },\n }\n });\n }\n}\nconst kubernetesClusterCategory = new KubernetesClusterCategory();\n_catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__[\"catalogCategoryRegistry\"].add(kubernetesClusterCategory);\n\n\n//# sourceURL=webpack:///./src/common/catalog-entities/kubernetes-cluster.ts?");
37820
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LensKubernetesClusterStatus\", function() { return LensKubernetesClusterStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KubernetesCluster\", function() { return KubernetesCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kubernetesClusterCategory\", function() { return kubernetesClusterCategory; });\n/* harmony import */ var _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../catalog/catalog-category-registry */ \"./src/common/catalog/catalog-category-registry.ts\");\n/* harmony import */ var _catalog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\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 _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../renderer/navigation/events */ \"./src/renderer/navigation/events.ts\");\n/* harmony import */ var _renderer_ipc__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../renderer/ipc */ \"./src/renderer/ipc/index.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\nvar LensKubernetesClusterStatus;\n(function (LensKubernetesClusterStatus) {\n LensKubernetesClusterStatus[\"DELETING\"] = \"deleting\";\n LensKubernetesClusterStatus[\"CONNECTING\"] = \"connecting\";\n LensKubernetesClusterStatus[\"CONNECTED\"] = \"connected\";\n LensKubernetesClusterStatus[\"DISCONNECTED\"] = \"disconnected\";\n})(LensKubernetesClusterStatus || (LensKubernetesClusterStatus = {}));\nclass KubernetesCluster extends _catalog__WEBPACK_IMPORTED_MODULE_1__[\"CatalogEntity\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KubernetesCluster.apiVersion\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: KubernetesCluster.kind\n });\n }\n async connect() {\n var _a;\n if (electron__WEBPACK_IMPORTED_MODULE_4__[\"app\"]) {\n await ((_a = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_2__[\"ClusterStore\"].getInstance().getById(this.getId())) === null || _a === void 0 ? void 0 : _a.activate());\n }\n else {\n await Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_6__[\"requestClusterActivation\"])(this.getId(), false);\n }\n }\n async disconnect() {\n var _a;\n if (electron__WEBPACK_IMPORTED_MODULE_4__[\"app\"]) {\n (_a = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_2__[\"ClusterStore\"].getInstance().getById(this.getId())) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n else {\n await Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_6__[\"requestClusterDisconnection\"])(this.getId(), false);\n }\n }\n async onRun(context) {\n context.navigate(`/cluster/${this.getId()}`);\n }\n onDetailsOpen() {\n //\n }\n onSettingsOpen() {\n //\n }\n async onContextMenuOpen(context) {\n var _a;\n if (!this.metadata.source || this.metadata.source === \"local\") {\n context.menuItems.push({\n title: \"Settings\",\n icon: \"settings\",\n onClick: () => Object(_ipc__WEBPACK_IMPORTED_MODULE_3__[\"broadcastMessage\"])(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_5__[\"IpcRendererNavigationEvents\"].NAVIGATE_IN_APP, `/entity/${this.getId()}/settings`),\n });\n }\n switch (this.status.phase) {\n case LensKubernetesClusterStatus.CONNECTED:\n case LensKubernetesClusterStatus.CONNECTING:\n context.menuItems.push({\n title: \"Disconnect\",\n icon: \"link_off\",\n onClick: () => Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_6__[\"requestClusterDisconnection\"])(this.getId()),\n });\n break;\n case LensKubernetesClusterStatus.DISCONNECTED:\n context.menuItems.push({\n title: \"Connect\",\n icon: \"link\",\n onClick: () => context.navigate(`/cluster/${this.getId()}`),\n });\n break;\n }\n (_a = _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__[\"catalogCategoryRegistry\"]\n .getCategoryForEntity(this)) === null || _a === void 0 ? void 0 : _a.emit(\"contextMenuOpen\", this, context);\n }\n}\nObject.defineProperty(KubernetesCluster, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"entity.k8slens.dev/v1alpha1\"\n});\nObject.defineProperty(KubernetesCluster, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"KubernetesCluster\"\n});\nclass KubernetesClusterCategory extends _catalog__WEBPACK_IMPORTED_MODULE_1__[\"CatalogCategory\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"catalog.k8slens.dev/v1alpha1\"\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"CatalogCategory\"\n });\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"Clusters\",\n icon: __webpack_require__(/*! !raw-loader!./icons/kubernetes.svg */ \"./node_modules/raw-loader/dist/cjs.js!./src/common/catalog-entities/icons/kubernetes.svg\").default, // eslint-disable-line\n }\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n group: \"entity.k8slens.dev\",\n versions: [\n {\n name: \"v1alpha1\",\n entityClass: KubernetesCluster,\n },\n ],\n names: {\n kind: \"KubernetesCluster\",\n },\n }\n });\n }\n}\nconst kubernetesClusterCategory = new KubernetesClusterCategory();\n_catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_0__[\"catalogCategoryRegistry\"].add(kubernetesClusterCategory);\n\n\n//# sourceURL=webpack:///./src/common/catalog-entities/kubernetes-cluster.ts?");
37904
37821
 
37905
37822
  /***/ }),
37906
37823
 
@@ -37912,7 +37829,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
37912
37829
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
37913
37830
 
37914
37831
  "use strict";
37915
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebLink\", function() { return WebLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebLinkCategory\", function() { return WebLinkCategory; });\n/* harmony import */ var _catalog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../catalog/catalog-category-registry */ \"./src/common/catalog/catalog-category-registry.ts\");\n/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _weblink_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../weblink-store */ \"./src/common/weblink-store.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 WebLink extends _catalog__WEBPACK_IMPORTED_MODULE_0__[\"CatalogEntity\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebLink.apiVersion\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebLink.kind\n });\n }\n async onRun() {\n window.open(this.spec.url, \"_blank\");\n }\n onSettingsOpen() {\n return;\n }\n async onContextMenuOpen(context) {\n var _a;\n if (this.metadata.source === \"local\") {\n context.menuItems.push({\n title: \"Delete\",\n icon: \"delete\",\n onClick: async () => _weblink_store__WEBPACK_IMPORTED_MODULE_3__[\"WeblinkStore\"].getInstance().removeById(this.metadata.uid),\n confirm: {\n message: `Remove Web Link \"${this.metadata.name}\" from ${_vars__WEBPACK_IMPORTED_MODULE_2__[\"productName\"]}?`,\n },\n });\n }\n (_a = _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"]\n .getCategoryForEntity(this)) === null || _a === void 0 ? void 0 : _a.emit(\"contextMenuOpen\", this, context);\n }\n}\nObject.defineProperty(WebLink, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"entity.k8slens.dev/v1alpha1\"\n});\nObject.defineProperty(WebLink, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"WebLink\"\n});\nclass WebLinkCategory extends _catalog__WEBPACK_IMPORTED_MODULE_0__[\"CatalogCategory\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"catalog.k8slens.dev/v1alpha1\"\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"CatalogCategory\"\n });\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"Web Links\",\n icon: \"public\",\n }\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n group: \"entity.k8slens.dev\",\n versions: [\n {\n name: \"v1alpha1\",\n entityClass: WebLink,\n },\n ],\n names: {\n kind: \"WebLink\",\n },\n }\n });\n }\n}\n_catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"].add(new WebLinkCategory());\n\n\n//# sourceURL=webpack:///./src/common/catalog-entities/web-link.ts?");
37832
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebLink\", function() { return WebLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebLinkCategory\", function() { return WebLinkCategory; });\n/* harmony import */ var _catalog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../catalog/catalog-category-registry */ \"./src/common/catalog/catalog-category-registry.ts\");\n/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _weblink_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../weblink-store */ \"./src/common/weblink-store.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 WebLink extends _catalog__WEBPACK_IMPORTED_MODULE_0__[\"CatalogEntity\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebLink.apiVersion\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: WebLink.kind\n });\n }\n async onRun() {\n window.open(this.spec.url, \"_blank\");\n }\n onSettingsOpen() {\n return;\n }\n async onContextMenuOpen(context) {\n var _a;\n if (this.metadata.source === \"local\") {\n context.menuItems.push({\n title: \"Delete\",\n icon: \"delete\",\n onClick: async () => _weblink_store__WEBPACK_IMPORTED_MODULE_3__[\"WeblinkStore\"].getInstance().removeById(this.getId()),\n confirm: {\n message: `Remove Web Link \"${this.getName()}\" from ${_vars__WEBPACK_IMPORTED_MODULE_2__[\"productName\"]}?`,\n },\n });\n }\n (_a = _catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"]\n .getCategoryForEntity(this)) === null || _a === void 0 ? void 0 : _a.emit(\"contextMenuOpen\", this, context);\n }\n}\nObject.defineProperty(WebLink, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"entity.k8slens.dev/v1alpha1\"\n});\nObject.defineProperty(WebLink, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"WebLink\"\n});\nclass WebLinkCategory extends _catalog__WEBPACK_IMPORTED_MODULE_0__[\"CatalogCategory\"] {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"apiVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"catalog.k8slens.dev/v1alpha1\"\n });\n Object.defineProperty(this, \"kind\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"CatalogCategory\"\n });\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n name: \"Web Links\",\n icon: \"public\",\n }\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n group: \"entity.k8slens.dev\",\n versions: [\n {\n name: \"v1alpha1\",\n entityClass: WebLink,\n },\n ],\n names: {\n kind: \"WebLink\",\n },\n }\n });\n }\n}\n_catalog_catalog_category_registry__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"].add(new WebLinkCategory());\n\n\n//# sourceURL=webpack:///./src/common/catalog-entities/web-link.ts?");
37916
37833
 
37917
37834
  /***/ }),
37918
37835
 
@@ -37936,7 +37853,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
37936
37853
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
37937
37854
 
37938
37855
  "use strict";
37939
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogCategory\", function() { return CatalogCategory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntity\", function() { return CatalogEntity; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.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\nclass CatalogCategory extends events__WEBPACK_IMPORTED_MODULE_0___default.a {\n constructor() {\n super(...arguments);\n /**\n * @internal\n */\n Object.defineProperty(this, \"filters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"].set([], {\n deep: false,\n })\n });\n }\n /**\n * Parse a category ID into parts.\n * @param id The id of a category is parse\n * @returns The group and kind parts of the ID\n */\n static parseId(id) {\n var _a;\n const [group, kind] = (_a = id.split(\"/\")) !== null && _a !== void 0 ? _a : [];\n return { group, kind };\n }\n /**\n * Get the ID of this category\n */\n getId() {\n return `${this.spec.group}/${this.spec.names.kind}`;\n }\n /**\n * Add a filter for menu items of catalogAddMenu\n * @param fn The function that should return a truthy value if that menu item should be displayed\n * @returns A function to remove that filter\n */\n addMenuFilter(fn) {\n this.filters.add(fn);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_2__[\"once\"])(() => void this.filters.delete(fn));\n }\n /**\n * Filter menuItems according to the Category's set filters\n * @param menuItems menu items to filter\n * @returns filtered menu items\n */\n filteredItems(menuItems) {\n return Array.from(_utils__WEBPACK_IMPORTED_MODULE_3__[\"iter\"].reduce(this.filters, _utils__WEBPACK_IMPORTED_MODULE_3__[\"iter\"].filter, menuItems.values()));\n }\n}\nclass CatalogEntity {\n constructor(data) {\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n this.metadata = data.metadata;\n this.status = data.status;\n this.spec = data.spec;\n }\n /**\n * Get the UID of this entity\n */\n getId() {\n return this.metadata.uid;\n }\n /**\n * Get the name of this entity\n */\n getName() {\n return this.metadata.name;\n }\n /**\n * Get the specified source of this entity, defaulting to `\"unknown\"` if not\n * provided\n */\n getSource() {\n var _a;\n return (_a = this.metadata.source) !== null && _a !== void 0 ? _a : \"unknown\";\n }\n /**\n * Get if this entity is enabled.\n */\n isEnabled() {\n var _a;\n return (_a = this.status.enabled) !== null && _a !== void 0 ? _a : true;\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"metadata\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"status\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"spec\", void 0);\n\n\n//# sourceURL=webpack:///./src/common/catalog/catalog-entity.ts?");
37856
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogCategory\", function() { return CatalogCategory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntity\", function() { return CatalogEntity; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.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\nclass CatalogCategory extends events__WEBPACK_IMPORTED_MODULE_0___default.a {\n constructor() {\n super(...arguments);\n /**\n * @internal\n */\n Object.defineProperty(this, \"filters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"].set([], {\n deep: false,\n })\n });\n }\n /**\n * Parse a category ID into parts.\n * @param id The id of a category is parse\n * @returns The group and kind parts of the ID\n */\n static parseId(id) {\n var _a;\n const [group, kind] = (_a = id.split(\"/\")) !== null && _a !== void 0 ? _a : [];\n return { group, kind };\n }\n /**\n * Get the ID of this category\n */\n getId() {\n return `${this.spec.group}/${this.spec.names.kind}`;\n }\n /**\n * Add a filter for menu items of catalogAddMenu\n * @param fn The function that should return a truthy value if that menu item should be displayed\n * @returns A function to remove that filter\n */\n addMenuFilter(fn) {\n this.filters.add(fn);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_2__[\"once\"])(() => void this.filters.delete(fn));\n }\n /**\n * Filter menuItems according to the Category's set filters\n * @param menuItems menu items to filter\n * @returns filtered menu items\n */\n filteredItems(menuItems) {\n return Array.from(_utils__WEBPACK_IMPORTED_MODULE_3__[\"iter\"].reduce(this.filters, _utils__WEBPACK_IMPORTED_MODULE_3__[\"iter\"].filter, menuItems.values()));\n }\n}\nclass CatalogEntity {\n constructor({ metadata, status, spec }) {\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"spec\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n if (!metadata || typeof metadata !== \"object\") {\n throw new TypeError(\"CatalogEntity's metadata must be a defined object\");\n }\n if (!status || typeof status !== \"object\") {\n throw new TypeError(\"CatalogEntity's status must be a defined object\");\n }\n if (!spec || typeof spec !== \"object\") {\n throw new TypeError(\"CatalogEntity's spec must be a defined object\");\n }\n this.metadata = metadata;\n this.status = status;\n this.spec = spec;\n }\n /**\n * Get the UID of this entity\n */\n getId() {\n return this.metadata.uid;\n }\n /**\n * Get the name of this entity\n */\n getName() {\n return this.metadata.name;\n }\n /**\n * Get the specified source of this entity, defaulting to `\"unknown\"` if not\n * provided\n */\n getSource() {\n var _a;\n return (_a = this.metadata.source) !== null && _a !== void 0 ? _a : \"unknown\";\n }\n /**\n * Get if this entity is enabled.\n */\n isEnabled() {\n var _a;\n return (_a = this.status.enabled) !== null && _a !== void 0 ? _a : true;\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"metadata\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"status\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], CatalogEntity.prototype, \"spec\", void 0);\n\n\n//# sourceURL=webpack:///./src/common/catalog/catalog-entity.ts?");
37940
37857
 
37941
37858
  /***/ }),
37942
37859
 
@@ -37976,18 +37893,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
37976
37893
 
37977
37894
  /***/ }),
37978
37895
 
37979
- /***/ "./src/common/cluster-ipc.ts":
37980
- /*!***********************************!*\
37981
- !*** ./src/common/cluster-ipc.ts ***!
37982
- \***********************************/
37983
- /*! exports provided: clusterActivateHandler, clusterSetFrameIdHandler, clusterVisibilityHandler, clusterRefreshHandler, clusterDisconnectHandler, clusterDeleteHandler, clusterSetDeletingHandler, clusterClearDeletingHandler, clusterKubectlApplyAllHandler, clusterKubectlDeleteAllHandler */
37984
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
37985
-
37986
- "use strict";
37987
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterActivateHandler\", function() { return clusterActivateHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterSetFrameIdHandler\", function() { return clusterSetFrameIdHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterVisibilityHandler\", function() { return clusterVisibilityHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterRefreshHandler\", function() { return clusterRefreshHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterDisconnectHandler\", function() { return clusterDisconnectHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterDeleteHandler\", function() { return clusterDeleteHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterSetDeletingHandler\", function() { return clusterSetDeletingHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterClearDeletingHandler\", function() { return clusterClearDeletingHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterKubectlApplyAllHandler\", function() { return clusterKubectlApplyAllHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterKubectlDeleteAllHandler\", function() { return clusterKubectlDeleteAllHandler; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst clusterActivateHandler = \"cluster:activate\";\nconst clusterSetFrameIdHandler = \"cluster:set-frame-id\";\nconst clusterVisibilityHandler = \"cluster:visibility\";\nconst clusterRefreshHandler = \"cluster:refresh\";\nconst clusterDisconnectHandler = \"cluster:disconnect\";\nconst clusterDeleteHandler = \"cluster:delete\";\nconst clusterSetDeletingHandler = \"cluster:deleting:set\";\nconst clusterClearDeletingHandler = \"cluster:deleting:clear\";\nconst clusterKubectlApplyAllHandler = \"cluster:kubectl-apply-all\";\nconst clusterKubectlDeleteAllHandler = \"cluster:kubectl-delete-all\";\n\n\n//# sourceURL=webpack:///./src/common/cluster-ipc.ts?");
37988
-
37989
- /***/ }),
37990
-
37991
37896
  /***/ "./src/common/cluster-store/cluster-store.injectable.ts":
37992
37897
  /*!**************************************************************!*\
37993
37898
  !*** ./src/common/cluster-store/cluster-store.injectable.ts ***!
@@ -38008,7 +37913,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ogr
38008
37913
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38009
37914
 
38010
37915
  "use strict";
38011
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClusterStore\", function() { return ClusterStore; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _base_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base-store */ \"./src/common/base-store.ts\");\n/* harmony import */ var _cluster_cluster__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cluster/cluster */ \"./src/common/cluster/cluster.ts\");\n/* harmony import */ var _migrations_cluster_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../migrations/cluster-store */ \"./src/migrations/cluster-store/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.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\nconst initialStates = \"cluster:states\";\nclass ClusterStore extends _base_store__WEBPACK_IMPORTED_MODULE_2__[\"BaseStore\"] {\n constructor(dependencies) {\n super({\n configName: \"lens-cluster-store\",\n accessPropertiesByDotNotation: false,\n syncOptions: {\n equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural,\n },\n migrations: _migrations_cluster_store__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n });\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"displayName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ClusterStore\"\n });\n Object.defineProperty(this, \"clusters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"].map()\n });\n Object.defineProperty(this, \"disposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_8__[\"disposer\"])()\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n this.load();\n this.pushStateToViewsAutomatically();\n }\n async loadInitialOnRenderer() {\n var _a;\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].info(\"[CLUSTER-STORE] requesting initial state sync\");\n for (const { id, state } of await Object(_ipc__WEBPACK_IMPORTED_MODULE_7__[\"requestMain\"])(initialStates)) {\n (_a = this.getById(id)) === null || _a === void 0 ? void 0 : _a.setState(state);\n }\n }\n provideInitialFromMain() {\n Object(_ipc__WEBPACK_IMPORTED_MODULE_7__[\"ipcMainHandle\"])(initialStates, () => {\n return this.clustersList.map(cluster => ({\n id: cluster.id,\n state: cluster.getState(),\n }));\n });\n }\n pushStateToViewsAutomatically() {\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"]) {\n this.disposer.push(Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.connectedClustersList, () => this.pushState()));\n }\n }\n registerIpcListener() {\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].info(`[CLUSTER-STORE] start to listen (${electron__WEBPACK_IMPORTED_MODULE_0__[\"webFrame\"].routingId})`);\n const ipc = electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] !== null && electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] !== void 0 ? electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] : electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"];\n ipc === null || ipc === void 0 ? void 0 : ipc.on(\"cluster:state\", (event, clusterId, state) => {\n var _a;\n (_a = this.getById(clusterId)) === null || _a === void 0 ? void 0 : _a.setState(state);\n });\n }\n unregisterIpcListener() {\n super.unregisterIpcListener();\n this.disposer();\n }\n pushState() {\n this.clusters.forEach((c) => {\n c.pushState();\n });\n }\n get clustersList() {\n return Array.from(this.clusters.values());\n }\n get connectedClustersList() {\n return this.clustersList.filter((c) => !c.disconnected);\n }\n hasClusters() {\n return this.clusters.size > 0;\n }\n getById(id) {\n var _a;\n return (_a = this.clusters.get(id)) !== null && _a !== void 0 ? _a : null;\n }\n addCluster(clusterOrModel) {\n _app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_6__[\"appEventBus\"].emit({ name: \"cluster\", action: \"add\" });\n const cluster = clusterOrModel instanceof _cluster_cluster__WEBPACK_IMPORTED_MODULE_3__[\"Cluster\"]\n ? clusterOrModel\n : this.dependencies.createCluster(clusterOrModel);\n this.clusters.set(cluster.id, cluster);\n return cluster;\n }\n fromStore({ clusters = [] } = {}) {\n const currentClusters = new Map(this.clusters);\n const newClusters = new Map();\n // update new clusters\n for (const clusterModel of clusters) {\n try {\n let cluster = currentClusters.get(clusterModel.id);\n if (cluster) {\n cluster.updateModel(clusterModel);\n }\n else {\n cluster = this.dependencies.createCluster(clusterModel);\n }\n newClusters.set(clusterModel.id, cluster);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].warn(`[CLUSTER-STORE]: Failed to update/create a cluster: ${error}`);\n }\n }\n this.clusters.replace(newClusters);\n }\n toJSON() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_8__[\"toJS\"])({\n clusters: this.clustersList.map(cluster => cluster.toJSON()),\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ClusterStore.prototype, \"clustersList\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ClusterStore.prototype, \"connectedClustersList\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ClusterStore.prototype, \"fromStore\", null);\n\n\n//# sourceURL=webpack:///./src/common/cluster-store/cluster-store.ts?");
37916
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClusterStore\", function() { return ClusterStore; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _base_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base-store */ \"./src/common/base-store.ts\");\n/* harmony import */ var _cluster_cluster__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cluster/cluster */ \"./src/common/cluster/cluster.ts\");\n/* harmony import */ var _migrations_cluster_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../migrations/cluster-store */ \"./src/migrations/cluster-store/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _renderer_ipc__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../renderer/ipc */ \"./src/renderer/ipc/index.ts\");\n/* harmony import */ var _ipc_cluster__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ipc/cluster */ \"./src/common/ipc/cluster.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\nclass ClusterStore extends _base_store__WEBPACK_IMPORTED_MODULE_2__[\"BaseStore\"] {\n constructor(dependencies) {\n super({\n configName: \"lens-cluster-store\",\n accessPropertiesByDotNotation: false,\n syncOptions: {\n equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural,\n },\n migrations: _migrations_cluster_store__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n });\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"displayName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ClusterStore\"\n });\n Object.defineProperty(this, \"clusters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"].map()\n });\n Object.defineProperty(this, \"disposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_8__[\"disposer\"])()\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n this.load();\n this.pushStateToViewsAutomatically();\n }\n async loadInitialOnRenderer() {\n var _a;\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].info(\"[CLUSTER-STORE] requesting initial state sync\");\n for (const { id, state } of await Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_9__[\"requestInitialClusterStates\"])()) {\n (_a = this.getById(id)) === null || _a === void 0 ? void 0 : _a.setState(state);\n }\n }\n provideInitialFromMain() {\n Object(_ipc__WEBPACK_IMPORTED_MODULE_7__[\"ipcMainHandle\"])(_ipc_cluster__WEBPACK_IMPORTED_MODULE_10__[\"clusterStates\"], () => (this.clustersList.map(cluster => ({\n id: cluster.id,\n state: cluster.getState(),\n }))));\n }\n pushStateToViewsAutomatically() {\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"]) {\n this.disposer.push(Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.connectedClustersList, () => this.pushState()));\n }\n }\n registerIpcListener() {\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].info(`[CLUSTER-STORE] start to listen (${electron__WEBPACK_IMPORTED_MODULE_0__[\"webFrame\"].routingId})`);\n const ipc = electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] !== null && electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] !== void 0 ? electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] : electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"];\n ipc === null || ipc === void 0 ? void 0 : ipc.on(\"cluster:state\", (event, clusterId, state) => {\n var _a;\n (_a = this.getById(clusterId)) === null || _a === void 0 ? void 0 : _a.setState(state);\n });\n }\n unregisterIpcListener() {\n super.unregisterIpcListener();\n this.disposer();\n }\n pushState() {\n this.clusters.forEach((c) => {\n c.pushState();\n });\n }\n get clustersList() {\n return Array.from(this.clusters.values());\n }\n get connectedClustersList() {\n return this.clustersList.filter((c) => !c.disconnected);\n }\n hasClusters() {\n return this.clusters.size > 0;\n }\n getById(id) {\n var _a;\n return (_a = this.clusters.get(id)) !== null && _a !== void 0 ? _a : null;\n }\n addCluster(clusterOrModel) {\n _app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_6__[\"appEventBus\"].emit({ name: \"cluster\", action: \"add\" });\n const cluster = clusterOrModel instanceof _cluster_cluster__WEBPACK_IMPORTED_MODULE_3__[\"Cluster\"]\n ? clusterOrModel\n : this.dependencies.createCluster(clusterOrModel);\n this.clusters.set(cluster.id, cluster);\n return cluster;\n }\n fromStore({ clusters = [] } = {}) {\n const currentClusters = new Map(this.clusters);\n const newClusters = new Map();\n // update new clusters\n for (const clusterModel of clusters) {\n try {\n let cluster = currentClusters.get(clusterModel.id);\n if (cluster) {\n cluster.updateModel(clusterModel);\n }\n else {\n cluster = this.dependencies.createCluster(clusterModel);\n }\n newClusters.set(clusterModel.id, cluster);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].warn(`[CLUSTER-STORE]: Failed to update/create a cluster: ${error}`);\n }\n }\n this.clusters.replace(newClusters);\n }\n toJSON() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_8__[\"toJS\"])({\n clusters: this.clustersList.map(cluster => cluster.toJSON()),\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ClusterStore.prototype, \"clustersList\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ClusterStore.prototype, \"connectedClustersList\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ClusterStore.prototype, \"fromStore\", null);\n\n\n//# sourceURL=webpack:///./src/common/cluster-store/cluster-store.ts?");
38012
37917
 
38013
37918
  /***/ }),
38014
37919
 
@@ -38044,7 +37949,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38044
37949
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38045
37950
 
38046
37951
  "use strict";
38047
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cluster\", function() { return Cluster; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @kubernetes/client-node */ \"./node_modules/@kubernetes/client-node/dist/index.js\");\n/* harmony import */ var _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _kube_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../kube-helpers */ \"./src/common/kube-helpers.ts\");\n/* harmony import */ var _rbac__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rbac */ \"./src/common/rbac.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _main_cluster_detectors_version_detector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../main/cluster-detectors/version-detector */ \"./src/main/cluster-detectors/version-detector.ts\");\n/* harmony import */ var _main_cluster_detectors_detector_registry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../main/cluster-detectors/detector-registry */ \"./src/main/cluster-detectors/detector-registry.ts\");\n/* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! p-limit */ \"./node_modules/p-limit/index.js\");\n/* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(p_limit__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _cluster_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../cluster-types */ \"./src/common/cluster-types.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.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\n/**\n * Cluster\n *\n * @beta\n */\nclass Cluster {\n constructor(dependencies, model) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n /** Unique id for a cluster */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"kubeCtl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Context handler\n *\n * @internal\n */\n Object.defineProperty(this, \"contextHandler\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"proxyKubeconfigManager\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"eventsDisposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"disposer\"])()\n });\n Object.defineProperty(this, \"activated\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"resourceAccessStatuses\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n /**\n * Kubeconfig context name\n *\n * @observable\n */\n Object.defineProperty(this, \"contextName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Path to kubeconfig\n *\n * @observable\n */\n Object.defineProperty(this, \"kubeConfigPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * @deprecated\n */\n Object.defineProperty(this, \"workspace\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * @deprecated\n */\n Object.defineProperty(this, \"workspaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Kubernetes API server URL\n *\n * @observable\n */\n Object.defineProperty(this, \"apiUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n }); // cluster server url\n /**\n * Is cluster online\n *\n * @observable\n */\n Object.defineProperty(this, \"online\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // describes if we can detect that cluster is online\n /**\n * Can user access cluster resources\n *\n * @observable\n */\n Object.defineProperty(this, \"accessible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // if user is able to access cluster resources\n /**\n * Is cluster instance in usable state\n *\n * @observable\n */\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // cluster is in usable state\n /**\n * Is cluster currently reconnecting\n *\n * @observable\n */\n Object.defineProperty(this, \"reconnecting\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Is cluster disconnected. False if user has selected to connect.\n *\n * @observable\n */\n Object.defineProperty(this, \"disconnected\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n /**\n * Does user have admin like access\n *\n * @observable\n */\n Object.defineProperty(this, \"isAdmin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Global watch-api accessibility , e.g. \"/api/v1/services?watch=1\"\n *\n * @observable\n */\n Object.defineProperty(this, \"isGlobalWatchEnabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Preferences\n *\n * @observable\n */\n Object.defineProperty(this, \"preferences\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\n * Metadata\n *\n * @observable\n */\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\n * List of allowed namespaces verified via K8S::SelfSubjectAccessReview api\n *\n * @observable\n */\n Object.defineProperty(this, \"allowedNamespaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * List of allowed resources\n *\n * @observable\n * @internal\n */\n Object.defineProperty(this, \"allowedResources\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * List of accessible namespaces provided by user in the Cluster Settings\n *\n * @observable\n */\n Object.defineProperty(this, \"accessibleNamespaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * Labels for the catalog entity\n */\n Object.defineProperty(this, \"labels\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n this.id = model.id;\n this.updateModel(model);\n const { config } = Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFileSync\"])(this.kubeConfigPath);\n const validationError = Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"validateKubeConfig\"])(config, this.contextName);\n if (validationError) {\n throw validationError;\n }\n this.apiUrl = config.getCluster(config.getContextObject(this.contextName).cluster).server;\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"]) {\n // for the time being, until renderer gets its own cluster type\n this.contextHandler = this.dependencies.createContextHandler(this);\n this.proxyKubeconfigManager = this.dependencies.createKubeconfigManager(this);\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`[CLUSTER]: Cluster init success`, {\n id: this.id,\n context: this.contextName,\n apiUrl: this.apiUrl,\n });\n }\n }\n get whenReady() {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"when\"])(() => this.ready);\n }\n /**\n * Is cluster available\n *\n * @computed\n */\n get available() {\n return this.accessible && !this.disconnected;\n }\n /**\n * Cluster name\n *\n * @computed\n */\n get name() {\n return this.preferences.clusterName || this.contextName;\n }\n /**\n * The detected kubernetes distribution\n */\n get distribution() {\n var _a;\n return ((_a = this.metadata[_cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterMetadataKey\"].DISTRIBUTION]) === null || _a === void 0 ? void 0 : _a.toString()) || \"unknown\";\n }\n /**\n * The detected kubernetes version\n */\n get version() {\n var _a;\n return ((_a = this.metadata[_cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterMetadataKey\"].VERSION]) === null || _a === void 0 ? void 0 : _a.toString()) || \"unknown\";\n }\n /**\n * Prometheus preferences\n *\n * @computed\n * @internal\n */\n get prometheusPreferences() {\n const { prometheus, prometheusProvider } = this.preferences;\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({ prometheus, prometheusProvider });\n }\n /**\n * defaultNamespace preference\n *\n * @computed\n * @internal\n */\n get defaultNamespace() {\n return this.preferences.defaultNamespace;\n }\n /**\n * Update cluster data model\n *\n * @param model\n */\n updateModel(model) {\n // Note: do not assign ID as that should never be updated\n this.kubeConfigPath = model.kubeConfigPath;\n if (model.workspace) {\n this.workspace = model.workspace;\n }\n if (model.workspaces) {\n this.workspaces = model.workspaces;\n }\n if (model.contextName) {\n this.contextName = model.contextName;\n }\n if (model.preferences) {\n this.preferences = model.preferences;\n }\n if (model.metadata) {\n this.metadata = model.metadata;\n }\n if (model.accessibleNamespaces) {\n this.accessibleNamespaces = model.accessibleNamespaces;\n }\n if (model.labels) {\n this.labels = model.labels;\n }\n }\n /**\n * @internal\n */\n bindEvents() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: bind events`, this.getMeta());\n const refreshTimer = setInterval(() => !this.disconnected && this.refresh(), 30000); // every 30s\n const refreshMetadataTimer = setInterval(() => !this.disconnected && this.refreshMetadata(), 900000); // every 15 minutes\n this.eventsDisposer.push(Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.getState(), state => this.pushState(state)), Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.prometheusPreferences, prefs => this.contextHandler.setupPrometheus(prefs), { equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural }), () => clearInterval(refreshTimer), () => clearInterval(refreshMetadataTimer), Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.defaultNamespace, () => this.recreateProxyKubeconfig()));\n }\n /**\n * @internal\n */\n async recreateProxyKubeconfig() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(\"[CLUSTER]: Recreating proxy kubeconfig\");\n try {\n await this.proxyKubeconfigManager.clear();\n await this.getProxyKubeconfig();\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`[CLUSTER]: failed to recreate proxy kubeconfig`, error);\n }\n }\n /**\n * @param force force activation\n * @internal\n */\n async activate(force = false) {\n if (this.activated && !force) {\n return this.pushState();\n }\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: activate`, this.getMeta());\n if (!this.eventsDisposer.length) {\n this.bindEvents();\n }\n if (this.disconnected || !this.accessible) {\n await this.reconnect();\n }\n this.broadcastConnectUpdate(\"Refreshing connection status ...\");\n await this.refreshConnectionStatus();\n if (this.accessible) {\n this.broadcastConnectUpdate(\"Refreshing cluster accessibility ...\");\n await this.refreshAccessibility();\n // download kubectl in background, so it's not blocking dashboard\n this.ensureKubectl()\n .catch(error => _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warn(`[CLUSTER]: failed to download kubectl for clusterId=${this.id}`, error));\n this.broadcastConnectUpdate(\"Connected, waiting for view to load ...\");\n }\n this.activated = true;\n this.pushState();\n }\n /**\n * @internal\n */\n async ensureKubectl() {\n var _a;\n (_a = this.kubeCtl) !== null && _a !== void 0 ? _a : (this.kubeCtl = this.dependencies.createKubectl(this.version));\n await this.kubeCtl.ensureKubectl();\n return this.kubeCtl;\n }\n /**\n * @internal\n */\n async reconnect() {\n var _a, _b;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: reconnect`, this.getMeta());\n (_a = this.contextHandler) === null || _a === void 0 ? void 0 : _a.stopServer();\n await ((_b = this.contextHandler) === null || _b === void 0 ? void 0 : _b.ensureServer());\n this.disconnected = false;\n }\n /**\n * @internal\n */\n disconnect() {\n var _a;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: disconnecting`, { id: this.id });\n this.eventsDisposer();\n (_a = this.contextHandler) === null || _a === void 0 ? void 0 : _a.stopServer();\n this.disconnected = true;\n this.online = false;\n this.accessible = false;\n this.ready = false;\n this.activated = false;\n this.allowedNamespaces = [];\n this.resourceAccessStatuses.clear();\n this.pushState();\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: disconnected`, { id: this.id });\n }\n /**\n * @internal\n * @param opts refresh options\n */\n async refresh(opts = {}) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: refresh`, this.getMeta());\n await this.refreshConnectionStatus();\n if (this.accessible) {\n await this.refreshAccessibility();\n if (opts.refreshMetadata) {\n this.refreshMetadata();\n }\n }\n this.pushState();\n }\n /**\n * @internal\n */\n async refreshMetadata() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: refreshMetadata`, this.getMeta());\n const metadata = await _main_cluster_detectors_detector_registry__WEBPACK_IMPORTED_MODULE_8__[\"DetectorRegistry\"].getInstance().detectForCluster(this);\n const existingMetadata = this.metadata;\n this.metadata = Object.assign(existingMetadata, metadata);\n }\n /**\n * @internal\n */\n async refreshAccessibility() {\n this.isAdmin = await this.isClusterAdmin();\n this.isGlobalWatchEnabled = await this.canUseWatchApi({ resource: \"*\" });\n this.allowedNamespaces = await this.getAllowedNamespaces();\n this.allowedResources = await this.getAllowedResources();\n this.ready = true;\n }\n /**\n * @internal\n */\n async refreshConnectionStatus() {\n const connectionStatus = await this.getConnectionStatus();\n this.online = connectionStatus > _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n this.accessible = connectionStatus == _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessGranted;\n }\n async getKubeconfig() {\n const { config } = await Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFile\"])(this.kubeConfigPath);\n return config;\n }\n /**\n * @internal\n */\n async getProxyKubeconfig() {\n const proxyKCPath = await this.getProxyKubeconfigPath();\n const { config } = await Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFile\"])(proxyKCPath);\n return config;\n }\n /**\n * @internal\n */\n async getProxyKubeconfigPath() {\n return this.proxyKubeconfigManager.getPath();\n }\n async getConnectionStatus() {\n try {\n const versionDetector = new _main_cluster_detectors_version_detector__WEBPACK_IMPORTED_MODULE_7__[\"VersionDetector\"](this);\n const versionData = await versionDetector.detect();\n this.metadata.version = versionData.value;\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessGranted;\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`[CLUSTER]: Failed to connect to \"${this.contextName}\": ${error}`);\n if (error.statusCode) {\n if (error.statusCode >= 400 && error.statusCode < 500) {\n this.broadcastConnectUpdate(\"Invalid credentials\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessDenied;\n }\n this.broadcastConnectUpdate(error.error || error.message, true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n if (error.failed === true) {\n if (error.timedOut === true) {\n this.broadcastConnectUpdate(\"Connection timed out\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n this.broadcastConnectUpdate(\"Failed to fetch credentials\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessDenied;\n }\n this.broadcastConnectUpdate(error.message, true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n }\n /**\n * @internal\n * @param resourceAttributes resource attributes\n */\n async canI(resourceAttributes) {\n const authApi = (await this.getProxyKubeconfig()).makeApiClient(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"AuthorizationV1Api\"]);\n try {\n const accessReview = await authApi.createSelfSubjectAccessReview({\n apiVersion: \"authorization.k8s.io/v1\",\n kind: \"SelfSubjectAccessReview\",\n spec: { resourceAttributes },\n });\n return accessReview.body.status.allowed;\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`failed to request selfSubjectAccessReview: ${error}`);\n return false;\n }\n }\n /**\n * @internal\n */\n async isClusterAdmin() {\n return this.canI({\n namespace: \"kube-system\",\n resource: \"*\",\n verb: \"create\",\n });\n }\n /**\n * @internal\n */\n async canUseWatchApi(customizeResource = {}) {\n return this.canI(Object.assign({ verb: \"watch\", resource: \"*\" }, customizeResource));\n }\n toJSON() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({\n id: this.id,\n contextName: this.contextName,\n kubeConfigPath: this.kubeConfigPath,\n workspace: this.workspace,\n workspaces: this.workspaces,\n preferences: this.preferences,\n metadata: this.metadata,\n accessibleNamespaces: this.accessibleNamespaces,\n labels: this.labels,\n });\n }\n /**\n * Serializable cluster-state used for sync btw main <-> renderer\n */\n getState() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({\n apiUrl: this.apiUrl,\n online: this.online,\n ready: this.ready,\n disconnected: this.disconnected,\n accessible: this.accessible,\n isAdmin: this.isAdmin,\n allowedNamespaces: this.allowedNamespaces,\n allowedResources: this.allowedResources,\n isGlobalWatchEnabled: this.isGlobalWatchEnabled,\n });\n }\n /**\n * @internal\n * @param state cluster state\n */\n setState(state) {\n Object.assign(this, state);\n }\n /**\n * @internal\n * @param state cluster state\n */\n pushState(state = this.getState()) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].silly(`[CLUSTER]: push-state`, state);\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(\"cluster:state\", this.id, state);\n }\n // get cluster system meta, e.g. use in \"logger\"\n getMeta() {\n return {\n id: this.id,\n name: this.contextName,\n ready: this.ready,\n online: this.online,\n accessible: this.accessible,\n disconnected: this.disconnected,\n };\n }\n /**\n * broadcast an authentication update concerning this cluster\n * @internal\n */\n broadcastConnectUpdate(message, isError = false) {\n const update = { message, isError };\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`[CLUSTER]: broadcasting connection update`, Object.assign(Object.assign({}, update), { meta: this.getMeta() }));\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(`cluster:${this.id}:connection-update`, update);\n }\n async getAllowedNamespaces() {\n if (this.accessibleNamespaces.length) {\n return this.accessibleNamespaces;\n }\n const api = (await this.getProxyKubeconfig()).makeApiClient(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"CoreV1Api\"]);\n try {\n const { body: { items } } = await api.listNamespace();\n const namespaces = items.map(ns => ns.metadata.name);\n return namespaces;\n }\n catch (error) {\n const ctx = (await this.getProxyKubeconfig()).getContextObject(this.contextName);\n const namespaceList = [ctx.namespace].filter(Boolean);\n if (namespaceList.length === 0 && error instanceof _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"HttpError\"] && error.statusCode === 403) {\n const { response } = error;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(\"[CLUSTER]: listing namespaces is forbidden, broadcasting\", { clusterId: this.id, error: response.body });\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"ClusterListNamespaceForbiddenChannel\"], this.id);\n }\n return namespaceList;\n }\n }\n async getAllowedResources() {\n try {\n if (!this.allowedNamespaces.length) {\n return [];\n }\n const resources = _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"].filter((resource) => this.resourceAccessStatuses.get(resource) === undefined);\n const apiLimit = p_limit__WEBPACK_IMPORTED_MODULE_9___default()(5); // 5 concurrent api requests\n const requests = [];\n for (const apiResource of resources) {\n requests.push(apiLimit(async () => {\n for (const namespace of this.allowedNamespaces.slice(0, 10)) {\n if (!this.resourceAccessStatuses.get(apiResource)) {\n const result = await this.canI({\n resource: apiResource.apiName,\n group: apiResource.group,\n verb: \"list\",\n namespace,\n });\n this.resourceAccessStatuses.set(apiResource, result);\n }\n }\n }));\n }\n await Promise.all(requests);\n return _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"]\n .filter((resource) => this.resourceAccessStatuses.get(resource))\n .map(apiResource => apiResource.apiName);\n }\n catch (error) {\n return [];\n }\n }\n isAllowedResource(kind) {\n if (kind in _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResourceRecord\"]) {\n return this.allowedResources.includes(kind);\n }\n const apiResource = _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"].find(resource => resource.kind === kind);\n if (apiResource) {\n return this.allowedResources.includes(apiResource.apiName);\n }\n return true; // allowed by default for other resources\n }\n isMetricHidden(resource) {\n var _a;\n return Boolean((_a = this.preferences.hiddenMetrics) === null || _a === void 0 ? void 0 : _a.includes(resource));\n }\n get nodeShellImage() {\n var _a;\n return ((_a = this.preferences) === null || _a === void 0 ? void 0 : _a.nodeShellImage) || _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"initialNodeShellImage\"];\n }\n get imagePullSecret() {\n var _a;\n return (_a = this.preferences) === null || _a === void 0 ? void 0 : _a.imagePullSecret;\n }\n isInLocalKubeconfig() {\n return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"contextName\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"kubeConfigPath\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"workspace\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"workspaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"apiUrl\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"online\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"accessible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"ready\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"reconnecting\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"disconnected\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"isAdmin\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"isGlobalWatchEnabled\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"preferences\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"metadata\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"allowedNamespaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"allowedResources\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"accessibleNamespaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"labels\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"available\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"name\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"distribution\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"version\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"prometheusPreferences\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"defaultNamespace\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"updateModel\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"activate\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"reconnect\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"disconnect\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refresh\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refreshMetadata\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refreshConnectionStatus\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"setState\", null);\n\n\n//# sourceURL=webpack:///./src/common/cluster/cluster.ts?");
37952
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cluster\", function() { return Cluster; });\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 mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @kubernetes/client-node */ \"./node_modules/@kubernetes/client-node/dist/index.js\");\n/* harmony import */ var _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _kube_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../kube-helpers */ \"./src/common/kube-helpers.ts\");\n/* harmony import */ var _rbac__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rbac */ \"./src/common/rbac.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _main_cluster_detectors_version_detector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../main/cluster-detectors/version-detector */ \"./src/main/cluster-detectors/version-detector.ts\");\n/* harmony import */ var _main_cluster_detectors_detector_registry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../main/cluster-detectors/detector-registry */ \"./src/main/cluster-detectors/detector-registry.ts\");\n/* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! p-limit */ \"./node_modules/p-limit/index.js\");\n/* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(p_limit__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _cluster_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../cluster-types */ \"./src/common/cluster-types.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _ipc_cluster__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ipc/cluster */ \"./src/common/ipc/cluster.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\n\n/**\n * Cluster\n *\n * @beta\n */\nclass Cluster {\n constructor(dependencies, model) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n /** Unique id for a cluster */\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"kubeCtl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Context handler\n *\n * @internal\n */\n Object.defineProperty(this, \"contextHandler\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"proxyKubeconfigManager\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"eventsDisposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"disposer\"])()\n });\n Object.defineProperty(this, \"activated\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"resourceAccessStatuses\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n /**\n * Kubeconfig context name\n *\n * @observable\n */\n Object.defineProperty(this, \"contextName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Path to kubeconfig\n *\n * @observable\n */\n Object.defineProperty(this, \"kubeConfigPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * @deprecated\n */\n Object.defineProperty(this, \"workspace\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * @deprecated\n */\n Object.defineProperty(this, \"workspaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * Kubernetes API server URL\n *\n * @observable\n */\n Object.defineProperty(this, \"apiUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n }); // cluster server url\n /**\n * Is cluster online\n *\n * @observable\n */\n Object.defineProperty(this, \"online\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // describes if we can detect that cluster is online\n /**\n * Can user access cluster resources\n *\n * @observable\n */\n Object.defineProperty(this, \"accessible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // if user is able to access cluster resources\n /**\n * Is cluster instance in usable state\n *\n * @observable\n */\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n }); // cluster is in usable state\n /**\n * Is cluster currently reconnecting\n *\n * @observable\n */\n Object.defineProperty(this, \"reconnecting\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Is cluster disconnected. False if user has selected to connect.\n *\n * @observable\n */\n Object.defineProperty(this, \"disconnected\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n /**\n * Does user have admin like access\n *\n * @observable\n */\n Object.defineProperty(this, \"isAdmin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Global watch-api accessibility , e.g. \"/api/v1/services?watch=1\"\n *\n * @observable\n */\n Object.defineProperty(this, \"isGlobalWatchEnabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\n * Preferences\n *\n * @observable\n */\n Object.defineProperty(this, \"preferences\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\n * Metadata\n *\n * @observable\n */\n Object.defineProperty(this, \"metadata\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\n * List of allowed namespaces verified via K8S::SelfSubjectAccessReview api\n *\n * @observable\n */\n Object.defineProperty(this, \"allowedNamespaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * List of allowed resources\n *\n * @observable\n * @internal\n */\n Object.defineProperty(this, \"allowedResources\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * List of accessible namespaces provided by user in the Cluster Settings\n *\n * @observable\n */\n Object.defineProperty(this, \"accessibleNamespaces\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\n * Labels for the catalog entity\n */\n Object.defineProperty(this, \"labels\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n this.id = model.id;\n this.updateModel(model);\n const { config } = Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFileSync\"])(this.kubeConfigPath);\n const validationError = Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"validateKubeConfig\"])(config, this.contextName);\n if (validationError) {\n throw validationError;\n }\n this.apiUrl = config.getCluster(config.getContextObject(this.contextName).cluster).server;\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"]) {\n // for the time being, until renderer gets its own cluster type\n this.contextHandler = this.dependencies.createContextHandler(this);\n this.proxyKubeconfigManager = this.dependencies.createKubeconfigManager(this);\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`[CLUSTER]: Cluster init success`, {\n id: this.id,\n context: this.contextName,\n apiUrl: this.apiUrl,\n });\n }\n }\n get whenReady() {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"when\"])(() => this.ready);\n }\n /**\n * Is cluster available\n *\n * @computed\n */\n get available() {\n return this.accessible && !this.disconnected;\n }\n /**\n * Cluster name\n *\n * @computed\n */\n get name() {\n return this.preferences.clusterName || this.contextName;\n }\n /**\n * The detected kubernetes distribution\n */\n get distribution() {\n var _a;\n return ((_a = this.metadata[_cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterMetadataKey\"].DISTRIBUTION]) === null || _a === void 0 ? void 0 : _a.toString()) || \"unknown\";\n }\n /**\n * The detected kubernetes version\n */\n get version() {\n var _a;\n return ((_a = this.metadata[_cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterMetadataKey\"].VERSION]) === null || _a === void 0 ? void 0 : _a.toString()) || \"unknown\";\n }\n /**\n * Prometheus preferences\n *\n * @computed\n * @internal\n */\n get prometheusPreferences() {\n const { prometheus, prometheusProvider } = this.preferences;\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({ prometheus, prometheusProvider });\n }\n /**\n * defaultNamespace preference\n *\n * @computed\n * @internal\n */\n get defaultNamespace() {\n return this.preferences.defaultNamespace;\n }\n /**\n * Update cluster data model\n *\n * @param model\n */\n updateModel(model) {\n // Note: do not assign ID as that should never be updated\n this.kubeConfigPath = model.kubeConfigPath;\n if (model.workspace) {\n this.workspace = model.workspace;\n }\n if (model.workspaces) {\n this.workspaces = model.workspaces;\n }\n if (model.contextName) {\n this.contextName = model.contextName;\n }\n if (model.preferences) {\n this.preferences = model.preferences;\n }\n if (model.metadata) {\n this.metadata = model.metadata;\n }\n if (model.accessibleNamespaces) {\n this.accessibleNamespaces = model.accessibleNamespaces;\n }\n if (model.labels) {\n this.labels = model.labels;\n }\n }\n /**\n * @internal\n */\n bindEvents() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: bind events`, this.getMeta());\n const refreshTimer = setInterval(() => !this.disconnected && this.refresh(), 30000); // every 30s\n const refreshMetadataTimer = setInterval(() => !this.disconnected && this.refreshMetadata(), 900000); // every 15 minutes\n this.eventsDisposer.push(Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.getState(), state => this.pushState(state)), Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.prometheusPreferences, prefs => this.contextHandler.setupPrometheus(prefs), { equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural }), () => clearInterval(refreshTimer), () => clearInterval(refreshMetadataTimer), Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.defaultNamespace, () => this.recreateProxyKubeconfig()));\n }\n /**\n * @internal\n */\n async recreateProxyKubeconfig() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(\"[CLUSTER]: Recreating proxy kubeconfig\");\n try {\n await this.proxyKubeconfigManager.clear();\n await this.getProxyKubeconfig();\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`[CLUSTER]: failed to recreate proxy kubeconfig`, error);\n }\n }\n /**\n * @param force force activation\n * @internal\n */\n async activate(force = false) {\n if (this.activated && !force) {\n return this.pushState();\n }\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: activate`, this.getMeta());\n if (!this.eventsDisposer.length) {\n this.bindEvents();\n }\n if (this.disconnected || !this.accessible) {\n await this.reconnect();\n }\n this.broadcastConnectUpdate(\"Refreshing connection status ...\");\n await this.refreshConnectionStatus();\n if (this.accessible) {\n this.broadcastConnectUpdate(\"Refreshing cluster accessibility ...\");\n await this.refreshAccessibility();\n // download kubectl in background, so it's not blocking dashboard\n this.ensureKubectl()\n .catch(error => _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warn(`[CLUSTER]: failed to download kubectl for clusterId=${this.id}`, error));\n this.broadcastConnectUpdate(\"Connected, waiting for view to load ...\");\n }\n this.activated = true;\n this.pushState();\n }\n /**\n * @internal\n */\n async ensureKubectl() {\n var _a;\n (_a = this.kubeCtl) !== null && _a !== void 0 ? _a : (this.kubeCtl = this.dependencies.createKubectl(this.version));\n await this.kubeCtl.ensureKubectl();\n return this.kubeCtl;\n }\n /**\n * @internal\n */\n async reconnect() {\n var _a, _b;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: reconnect`, this.getMeta());\n (_a = this.contextHandler) === null || _a === void 0 ? void 0 : _a.stopServer();\n await ((_b = this.contextHandler) === null || _b === void 0 ? void 0 : _b.ensureServer());\n this.disconnected = false;\n }\n /**\n * @internal\n */\n disconnect() {\n var _a;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: disconnecting`, { id: this.id });\n this.eventsDisposer();\n (_a = this.contextHandler) === null || _a === void 0 ? void 0 : _a.stopServer();\n this.disconnected = true;\n this.online = false;\n this.accessible = false;\n this.ready = false;\n this.activated = false;\n this.allowedNamespaces = [];\n this.resourceAccessStatuses.clear();\n this.pushState();\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: disconnected`, { id: this.id });\n }\n /**\n * @internal\n * @param opts refresh options\n */\n async refresh(opts = {}) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: refresh`, this.getMeta());\n await this.refreshConnectionStatus();\n if (this.accessible) {\n await this.refreshAccessibility();\n if (opts.refreshMetadata) {\n this.refreshMetadata();\n }\n }\n this.pushState();\n }\n /**\n * @internal\n */\n async refreshMetadata() {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`[CLUSTER]: refreshMetadata`, this.getMeta());\n const metadata = await _main_cluster_detectors_detector_registry__WEBPACK_IMPORTED_MODULE_8__[\"DetectorRegistry\"].getInstance().detectForCluster(this);\n const existingMetadata = this.metadata;\n this.metadata = Object.assign(existingMetadata, metadata);\n }\n /**\n * @internal\n */\n async refreshAccessibility() {\n this.isAdmin = await this.isClusterAdmin();\n this.isGlobalWatchEnabled = await this.canUseWatchApi({ resource: \"*\" });\n this.allowedNamespaces = await this.getAllowedNamespaces();\n this.allowedResources = await this.getAllowedResources();\n this.ready = true;\n }\n /**\n * @internal\n */\n async refreshConnectionStatus() {\n const connectionStatus = await this.getConnectionStatus();\n this.online = connectionStatus > _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n this.accessible = connectionStatus == _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessGranted;\n }\n async getKubeconfig() {\n const { config } = await Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFile\"])(this.kubeConfigPath);\n return config;\n }\n /**\n * @internal\n */\n async getProxyKubeconfig() {\n const proxyKCPath = await this.getProxyKubeconfigPath();\n const { config } = await Object(_kube_helpers__WEBPACK_IMPORTED_MODULE_4__[\"loadConfigFromFile\"])(proxyKCPath);\n return config;\n }\n /**\n * @internal\n */\n async getProxyKubeconfigPath() {\n return this.proxyKubeconfigManager.getPath();\n }\n async getConnectionStatus() {\n try {\n const versionDetector = new _main_cluster_detectors_version_detector__WEBPACK_IMPORTED_MODULE_7__[\"VersionDetector\"](this);\n const versionData = await versionDetector.detect();\n this.metadata.version = versionData.value;\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessGranted;\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`[CLUSTER]: Failed to connect to \"${this.contextName}\": ${error}`);\n if (error.statusCode) {\n if (error.statusCode >= 400 && error.statusCode < 500) {\n this.broadcastConnectUpdate(\"Invalid credentials\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessDenied;\n }\n this.broadcastConnectUpdate(error.error || error.message, true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n if (error.failed === true) {\n if (error.timedOut === true) {\n this.broadcastConnectUpdate(\"Connection timed out\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n this.broadcastConnectUpdate(\"Failed to fetch credentials\", true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].AccessDenied;\n }\n this.broadcastConnectUpdate(error.message, true);\n return _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"ClusterStatus\"].Offline;\n }\n }\n /**\n * @internal\n * @param resourceAttributes resource attributes\n */\n async canI(resourceAttributes) {\n const authApi = (await this.getProxyKubeconfig()).makeApiClient(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"AuthorizationV1Api\"]);\n try {\n const accessReview = await authApi.createSelfSubjectAccessReview({\n apiVersion: \"authorization.k8s.io/v1\",\n kind: \"SelfSubjectAccessReview\",\n spec: { resourceAttributes },\n });\n return accessReview.body.status.allowed;\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`failed to request selfSubjectAccessReview: ${error}`);\n return false;\n }\n }\n /**\n * @internal\n */\n async isClusterAdmin() {\n return this.canI({\n namespace: \"kube-system\",\n resource: \"*\",\n verb: \"create\",\n });\n }\n /**\n * @internal\n */\n async canUseWatchApi(customizeResource = {}) {\n return this.canI(Object.assign({ verb: \"watch\", resource: \"*\" }, customizeResource));\n }\n toJSON() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({\n id: this.id,\n contextName: this.contextName,\n kubeConfigPath: this.kubeConfigPath,\n workspace: this.workspace,\n workspaces: this.workspaces,\n preferences: this.preferences,\n metadata: this.metadata,\n accessibleNamespaces: this.accessibleNamespaces,\n labels: this.labels,\n });\n }\n /**\n * Serializable cluster-state used for sync btw main <-> renderer\n */\n getState() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_11__[\"toJS\"])({\n apiUrl: this.apiUrl,\n online: this.online,\n ready: this.ready,\n disconnected: this.disconnected,\n accessible: this.accessible,\n isAdmin: this.isAdmin,\n allowedNamespaces: this.allowedNamespaces,\n allowedResources: this.allowedResources,\n isGlobalWatchEnabled: this.isGlobalWatchEnabled,\n });\n }\n /**\n * @internal\n * @param state cluster state\n */\n setState(state) {\n Object.assign(this, state);\n }\n /**\n * @internal\n * @param state cluster state\n */\n pushState(state = this.getState()) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].silly(`[CLUSTER]: push-state`, state);\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(\"cluster:state\", this.id, state);\n }\n // get cluster system meta, e.g. use in \"logger\"\n getMeta() {\n return {\n id: this.id,\n name: this.contextName,\n ready: this.ready,\n online: this.online,\n accessible: this.accessible,\n disconnected: this.disconnected,\n };\n }\n /**\n * broadcast an authentication update concerning this cluster\n * @internal\n */\n broadcastConnectUpdate(message, isError = false) {\n const update = { message, isError };\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`[CLUSTER]: broadcasting connection update`, Object.assign(Object.assign({}, update), { meta: this.getMeta() }));\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(`cluster:${this.id}:connection-update`, update);\n }\n async getAllowedNamespaces() {\n if (this.accessibleNamespaces.length) {\n return this.accessibleNamespaces;\n }\n const api = (await this.getProxyKubeconfig()).makeApiClient(_kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"CoreV1Api\"]);\n try {\n const { body: { items } } = await api.listNamespace();\n const namespaces = items.map(ns => ns.metadata.name);\n return namespaces;\n }\n catch (error) {\n const ctx = (await this.getProxyKubeconfig()).getContextObject(this.contextName);\n const namespaceList = [ctx.namespace].filter(Boolean);\n if (namespaceList.length === 0 && error instanceof _kubernetes_client_node__WEBPACK_IMPORTED_MODULE_3__[\"HttpError\"] && error.statusCode === 403) {\n const { response } = error;\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(\"[CLUSTER]: listing namespaces is forbidden, broadcasting\", { clusterId: this.id, error: response.body });\n Object(_ipc__WEBPACK_IMPORTED_MODULE_2__[\"broadcastMessage\"])(_ipc_cluster__WEBPACK_IMPORTED_MODULE_12__[\"clusterListNamespaceForbiddenChannel\"], this.id);\n }\n return namespaceList;\n }\n }\n async getAllowedResources() {\n try {\n if (!this.allowedNamespaces.length) {\n return [];\n }\n const resources = _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"].filter((resource) => this.resourceAccessStatuses.get(resource) === undefined);\n const apiLimit = p_limit__WEBPACK_IMPORTED_MODULE_9___default()(5); // 5 concurrent api requests\n const requests = [];\n for (const apiResource of resources) {\n requests.push(apiLimit(async () => {\n for (const namespace of this.allowedNamespaces.slice(0, 10)) {\n if (!this.resourceAccessStatuses.get(apiResource)) {\n const result = await this.canI({\n resource: apiResource.apiName,\n group: apiResource.group,\n verb: \"list\",\n namespace,\n });\n this.resourceAccessStatuses.set(apiResource, result);\n }\n }\n }));\n }\n await Promise.all(requests);\n return _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"]\n .filter((resource) => this.resourceAccessStatuses.get(resource))\n .map(apiResource => apiResource.apiName);\n }\n catch (error) {\n return [];\n }\n }\n isAllowedResource(kind) {\n if (kind in _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResourceRecord\"]) {\n return this.allowedResources.includes(kind);\n }\n const apiResource = _rbac__WEBPACK_IMPORTED_MODULE_5__[\"apiResources\"].find(resource => resource.kind === kind);\n if (apiResource) {\n return this.allowedResources.includes(apiResource.apiName);\n }\n return true; // allowed by default for other resources\n }\n isMetricHidden(resource) {\n var _a;\n return Boolean((_a = this.preferences.hiddenMetrics) === null || _a === void 0 ? void 0 : _a.includes(resource));\n }\n get nodeShellImage() {\n var _a;\n return ((_a = this.preferences) === null || _a === void 0 ? void 0 : _a.nodeShellImage) || _cluster_types__WEBPACK_IMPORTED_MODULE_10__[\"initialNodeShellImage\"];\n }\n get imagePullSecret() {\n var _a;\n return (_a = this.preferences) === null || _a === void 0 ? void 0 : _a.imagePullSecret;\n }\n isInLocalKubeconfig() {\n return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"contextName\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"kubeConfigPath\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"workspace\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"workspaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", String)\n], Cluster.prototype, \"apiUrl\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"online\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"accessible\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"ready\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"reconnecting\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"disconnected\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"isAdmin\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"isGlobalWatchEnabled\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"preferences\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"metadata\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"allowedNamespaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"allowedResources\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Array)\n], Cluster.prototype, \"accessibleNamespaces\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], Cluster.prototype, \"labels\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"available\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"name\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"distribution\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"version\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"prometheusPreferences\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Cluster.prototype, \"defaultNamespace\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"updateModel\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"activate\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"reconnect\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"disconnect\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refresh\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refreshMetadata\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Cluster.prototype, \"refreshConnectionStatus\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Cluster.prototype, \"setState\", null);\n\n\n//# sourceURL=webpack:///./src/common/cluster/cluster.ts?");
38048
37953
 
38049
37954
  /***/ }),
38050
37955
 
@@ -38160,47 +38065,47 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38160
38065
  /*!***********************************!*\
38161
38066
  !*** ./src/common/ipc/catalog.ts ***!
38162
38067
  \***********************************/
38163
- /*! exports provided: CatalogIpcEvents */
38068
+ /*! exports provided: catalogEntityRunListener, catalogItemsChannel, catalogInitChannel */
38164
38069
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38165
38070
 
38166
38071
  "use strict";
38167
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogIpcEvents\", function() { return CatalogIpcEvents; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar CatalogIpcEvents;\n(function (CatalogIpcEvents) {\n /**\n * This is broadcast on whenever there is an update to any catalog item\n */\n CatalogIpcEvents[\"ITEMS\"] = \"catalog:items\";\n /**\n * This can be sent from renderer to main to initialize a broadcast of ITEMS\n */\n CatalogIpcEvents[\"INIT\"] = \"catalog:init\";\n})(CatalogIpcEvents || (CatalogIpcEvents = {}));\n\n\n//# sourceURL=webpack:///./src/common/ipc/catalog.ts?");
38072
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRunListener\", function() { return catalogEntityRunListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogItemsChannel\", function() { return catalogItemsChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogInitChannel\", function() { return catalogInitChannel; });\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 * This is used to activate a specific entity in the renderer main frame\n */\nconst catalogEntityRunListener = \"catalog-entity:run\";\n/**\n * This is broadcast on whenever there is an update to any catalog item\n */\nconst catalogItemsChannel = \"catalog:items\";\n/**\n * This can be sent from renderer to main to initialize a broadcast of ITEMS\n */\nconst catalogInitChannel = \"catalog:init\";\n\n\n//# sourceURL=webpack:///./src/common/ipc/catalog.ts?");
38168
38073
 
38169
38074
  /***/ }),
38170
38075
 
38171
- /***/ "./src/common/ipc/cluster.ipc.ts":
38172
- /*!***************************************!*\
38173
- !*** ./src/common/ipc/cluster.ipc.ts ***!
38174
- \***************************************/
38175
- /*! exports provided: ClusterListNamespaceForbiddenChannel, isListNamespaceForbiddenArgs */
38076
+ /***/ "./src/common/ipc/cluster.ts":
38077
+ /*!***********************************!*\
38078
+ !*** ./src/common/ipc/cluster.ts ***!
38079
+ \***********************************/
38080
+ /*! exports provided: clusterActivateHandler, clusterSetFrameIdHandler, clusterVisibilityHandler, clusterRefreshHandler, clusterDisconnectHandler, clusterDeleteHandler, clusterSetDeletingHandler, clusterClearDeletingHandler, clusterKubectlApplyAllHandler, clusterKubectlDeleteAllHandler, clusterStates, clusterListNamespaceForbiddenChannel, isListNamespaceForbiddenArgs */
38176
38081
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38177
38082
 
38178
38083
  "use strict";
38179
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClusterListNamespaceForbiddenChannel\", function() { return ClusterListNamespaceForbiddenChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isListNamespaceForbiddenArgs\", function() { return isListNamespaceForbiddenArgs; });\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 * This channel is broadcast on whenever the cluster fails to list namespaces\n * during a refresh and no `accessibleNamespaces` have been set.\n */\nconst ClusterListNamespaceForbiddenChannel = \"cluster:list-namespace-forbidden\";\nfunction isListNamespaceForbiddenArgs(args) {\n return args.length === 1 && typeof args[0] === \"string\";\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/cluster.ipc.ts?");
38084
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterActivateHandler\", function() { return clusterActivateHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterSetFrameIdHandler\", function() { return clusterSetFrameIdHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterVisibilityHandler\", function() { return clusterVisibilityHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterRefreshHandler\", function() { return clusterRefreshHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterDisconnectHandler\", function() { return clusterDisconnectHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterDeleteHandler\", function() { return clusterDeleteHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterSetDeletingHandler\", function() { return clusterSetDeletingHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterClearDeletingHandler\", function() { return clusterClearDeletingHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterKubectlApplyAllHandler\", function() { return clusterKubectlApplyAllHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterKubectlDeleteAllHandler\", function() { return clusterKubectlDeleteAllHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterStates\", function() { return clusterStates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterListNamespaceForbiddenChannel\", function() { return clusterListNamespaceForbiddenChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isListNamespaceForbiddenArgs\", function() { return isListNamespaceForbiddenArgs; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst clusterActivateHandler = \"cluster:activate\";\nconst clusterSetFrameIdHandler = \"cluster:set-frame-id\";\nconst clusterVisibilityHandler = \"cluster:visibility\";\nconst clusterRefreshHandler = \"cluster:refresh\";\nconst clusterDisconnectHandler = \"cluster:disconnect\";\nconst clusterDeleteHandler = \"cluster:delete\";\nconst clusterSetDeletingHandler = \"cluster:deleting:set\";\nconst clusterClearDeletingHandler = \"cluster:deleting:clear\";\nconst clusterKubectlApplyAllHandler = \"cluster:kubectl-apply-all\";\nconst clusterKubectlDeleteAllHandler = \"cluster:kubectl-delete-all\";\nconst clusterStates = \"cluster:states\";\n/**\n * This channel is broadcast on whenever the cluster fails to list namespaces\n * during a refresh and no `accessibleNamespaces` have been set.\n */\nconst clusterListNamespaceForbiddenChannel = \"cluster:list-namespace-forbidden\";\nfunction isListNamespaceForbiddenArgs(args) {\n return args.length === 1 && typeof args[0] === \"string\";\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/cluster.ts?");
38180
38085
 
38181
38086
  /***/ }),
38182
38087
 
38183
- /***/ "./src/common/ipc/extension-loader.ipc.ts":
38184
- /*!************************************************!*\
38185
- !*** ./src/common/ipc/extension-loader.ipc.ts ***!
38186
- \************************************************/
38187
- /*! exports provided: BundledExtensionsLoaded */
38088
+ /***/ "./src/common/ipc/dialog.ts":
38089
+ /*!**********************************!*\
38090
+ !*** ./src/common/ipc/dialog.ts ***!
38091
+ \**********************************/
38092
+ /*! exports provided: openFilePickingDialogChannel */
38188
38093
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38189
38094
 
38190
38095
  "use strict";
38191
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BundledExtensionsLoaded\", function() { return BundledExtensionsLoaded; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst BundledExtensionsLoaded = \"extension-loader:bundled-extensions-loaded\";\n\n\n//# sourceURL=webpack:///./src/common/ipc/extension-loader.ipc.ts?");
38096
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openFilePickingDialogChannel\", function() { return openFilePickingDialogChannel; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst openFilePickingDialogChannel = \"dialog:open:file-picking\";\n\n\n//# sourceURL=webpack:///./src/common/ipc/dialog.ts?");
38192
38097
 
38193
38098
  /***/ }),
38194
38099
 
38195
- /***/ "./src/common/ipc/hotbar.ts":
38196
- /*!**********************************!*\
38197
- !*** ./src/common/ipc/hotbar.ts ***!
38198
- \**********************************/
38199
- /*! exports provided: HotbarTooManyItems */
38100
+ /***/ "./src/common/ipc/extension-handling.ts":
38101
+ /*!**********************************************!*\
38102
+ !*** ./src/common/ipc/extension-handling.ts ***!
38103
+ \**********************************************/
38104
+ /*! exports provided: extensionDiscoveryStateChannel, bundledExtensionsLoaded, extensionLoaderFromMainChannel, extensionLoaderFromRendererChannel */
38200
38105
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38201
38106
 
38202
38107
  "use strict";
38203
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HotbarTooManyItems\", function() { return HotbarTooManyItems; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst HotbarTooManyItems = \"hotbar:too-many-items\";\n\n\n//# sourceURL=webpack:///./src/common/ipc/hotbar.ts?");
38108
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extensionDiscoveryStateChannel\", function() { return extensionDiscoveryStateChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bundledExtensionsLoaded\", function() { return bundledExtensionsLoaded; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extensionLoaderFromMainChannel\", function() { return extensionLoaderFromMainChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extensionLoaderFromRendererChannel\", function() { return extensionLoaderFromRendererChannel; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst extensionDiscoveryStateChannel = \"extension-discovery:state\";\nconst bundledExtensionsLoaded = \"extension-loader:bundled-extensions-loaded\";\nconst extensionLoaderFromMainChannel = \"extension-loader:main:state\";\nconst extensionLoaderFromRendererChannel = \"extension-loader:renderer:state\";\n\n\n//# sourceURL=webpack:///./src/common/ipc/extension-handling.ts?");
38204
38109
 
38205
38110
  /***/ }),
38206
38111
 
@@ -38208,11 +38113,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38208
38113
  /*!*********************************!*\
38209
38114
  !*** ./src/common/ipc/index.ts ***!
38210
38115
  \*********************************/
38211
- /*! exports provided: dialogShowOpenDialogHandler, catalogEntityRunListener, requestMain, ipcMainHandle, broadcastMessage, ipcMainOn, ipcRendererOn, bindBroadcastHandlers, InvalidKubeconfigChannel, UpdateAvailableChannel, AutoUpdateChecking, AutoUpdateNoUpdateAvailable, AutoUpdateLogPrefix, areArgsUpdateAvailableFromMain, areArgsUpdateAvailableToBackchannel, ClusterListNamespaceForbiddenChannel, isListNamespaceForbiddenArgs, onceCorrect, onCorrect, handleCorrect, HotbarTooManyItems, BundledExtensionsLoaded */
38116
+ /*! exports provided: broadcastMainChannel, ipcMainHandle, broadcastMessage, ipcMainOn, ipcRendererOn, InvalidKubeconfigChannel, UpdateAvailableChannel, AutoUpdateChecking, AutoUpdateNoUpdateAvailable, AutoUpdateLogPrefix, areArgsUpdateAvailableFromMain, areArgsUpdateAvailableToBackchannel, onceCorrect, onCorrect, handleCorrect */
38212
38117
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38213
38118
 
38214
38119
  "use strict";
38215
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dialogShowOpenDialogHandler\", function() { return dialogShowOpenDialogHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRunListener\", function() { return catalogEntityRunListener; });\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ipc */ \"./src/common/ipc/ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestMain\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"requestMain\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcMainHandle\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcMainHandle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"broadcastMessage\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"broadcastMessage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcMainOn\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcMainOn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcRendererOn\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcRendererOn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bindBroadcastHandlers\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"bindBroadcastHandlers\"]; });\n\n/* harmony import */ var _invalid_kubeconfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalid-kubeconfig */ \"./src/common/ipc/invalid-kubeconfig/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InvalidKubeconfigChannel\", function() { return _invalid_kubeconfig__WEBPACK_IMPORTED_MODULE_1__[\"InvalidKubeconfigChannel\"]; });\n\n/* harmony import */ var _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./update-available.ipc */ \"./src/common/ipc/update-available.ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateAvailableChannel\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"UpdateAvailableChannel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateChecking\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateChecking\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateNoUpdateAvailable\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateNoUpdateAvailable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateLogPrefix\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateLogPrefix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableFromMain\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"areArgsUpdateAvailableFromMain\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableToBackchannel\", function() { return _update_available_ipc__WEBPACK_IMPORTED_MODULE_2__[\"areArgsUpdateAvailableToBackchannel\"]; });\n\n/* harmony import */ var _cluster_ipc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cluster.ipc */ \"./src/common/ipc/cluster.ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClusterListNamespaceForbiddenChannel\", function() { return _cluster_ipc__WEBPACK_IMPORTED_MODULE_3__[\"ClusterListNamespaceForbiddenChannel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isListNamespaceForbiddenArgs\", function() { return _cluster_ipc__WEBPACK_IMPORTED_MODULE_3__[\"isListNamespaceForbiddenArgs\"]; });\n\n/* harmony import */ var _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./type-enforced-ipc */ \"./src/common/ipc/type-enforced-ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onceCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_4__[\"onceCorrect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_4__[\"onCorrect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"handleCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_4__[\"handleCorrect\"]; });\n\n/* harmony import */ var _hotbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hotbar */ \"./src/common/ipc/hotbar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HotbarTooManyItems\", function() { return _hotbar__WEBPACK_IMPORTED_MODULE_5__[\"HotbarTooManyItems\"]; });\n\n/* harmony import */ var _extension_loader_ipc__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extension-loader.ipc */ \"./src/common/ipc/extension-loader.ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BundledExtensionsLoaded\", function() { return _extension_loader_ipc__WEBPACK_IMPORTED_MODULE_6__[\"BundledExtensionsLoaded\"]; });\n\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst dialogShowOpenDialogHandler = \"dialog:show-open-dialog\";\nconst catalogEntityRunListener = \"catalog-entity:run\";\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/common/ipc/index.ts?");
38120
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ipc */ \"./src/common/ipc/ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"broadcastMainChannel\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"broadcastMainChannel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcMainHandle\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcMainHandle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"broadcastMessage\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"broadcastMessage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcMainOn\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcMainOn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ipcRendererOn\", function() { return _ipc__WEBPACK_IMPORTED_MODULE_0__[\"ipcRendererOn\"]; });\n\n/* harmony import */ var _invalid_kubeconfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalid-kubeconfig */ \"./src/common/ipc/invalid-kubeconfig/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InvalidKubeconfigChannel\", function() { return _invalid_kubeconfig__WEBPACK_IMPORTED_MODULE_1__[\"InvalidKubeconfigChannel\"]; });\n\n/* harmony import */ var _update_available__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./update-available */ \"./src/common/ipc/update-available.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateAvailableChannel\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"UpdateAvailableChannel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateChecking\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateChecking\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateNoUpdateAvailable\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateNoUpdateAvailable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateLogPrefix\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"AutoUpdateLogPrefix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableFromMain\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"areArgsUpdateAvailableFromMain\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableToBackchannel\", function() { return _update_available__WEBPACK_IMPORTED_MODULE_2__[\"areArgsUpdateAvailableToBackchannel\"]; });\n\n/* harmony import */ var _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./type-enforced-ipc */ \"./src/common/ipc/type-enforced-ipc.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onceCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_3__[\"onceCorrect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_3__[\"onCorrect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"handleCorrect\", function() { return _type_enforced_ipc__WEBPACK_IMPORTED_MODULE_3__[\"handleCorrect\"]; });\n\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//# sourceURL=webpack:///./src/common/ipc/index.ts?");
38216
38121
 
38217
38122
  /***/ }),
38218
38123
 
@@ -38232,11 +38137,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38232
38137
  /*!*******************************!*\
38233
38138
  !*** ./src/common/ipc/ipc.ts ***!
38234
38139
  \*******************************/
38235
- /*! exports provided: requestMain, ipcMainHandle, broadcastMessage, ipcMainOn, ipcRendererOn, bindBroadcastHandlers */
38140
+ /*! exports provided: broadcastMainChannel, ipcMainHandle, broadcastMessage, ipcMainOn, ipcRendererOn */
38236
38141
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38237
38142
 
38238
38143
  "use strict";
38239
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestMain\", function() { return requestMain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcMainHandle\", function() { return ipcMainHandle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"broadcastMessage\", function() { return broadcastMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcMainOn\", function() { return ipcMainOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcRendererOn\", function() { return ipcRendererOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindBroadcastHandlers\", function() { return bindBroadcastHandlers; });\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 _utils_toJS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/toJS */ \"./src/common/utils/toJS.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _cluster_frames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cluster-frames */ \"./src/common/cluster-frames.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// Inter-process communications (main <-> renderer)\n// https://www.electronjs.org/docs/api/ipc-main\n// https://www.electronjs.org/docs/api/ipc-renderer\n\n\n\n\nconst electronRemote = (() => {\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"]) {\n try {\n return __webpack_require__(/*! @electron/remote */ \"./node_modules/@electron/remote/renderer/index.js\");\n }\n catch (_a) {\n // ignore temp\n }\n }\n return null;\n})();\nconst subFramesChannel = \"ipc:get-sub-frames\";\nasync function requestMain(channel, ...args) {\n return electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].invoke(channel, ...args.map(sanitizePayload));\n}\nfunction ipcMainHandle(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].handle(channel, async (event, ...args) => {\n return sanitizePayload(await listener(event, ...args));\n });\n}\nfunction getSubFrames() {\n return Array.from(_cluster_frames__WEBPACK_IMPORTED_MODULE_3__[\"clusterFrameMap\"].values());\n}\nfunction broadcastMessage(channel, ...args) {\n const subFramesP = electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"]\n ? requestMain(subFramesChannel)\n : Promise.resolve(getSubFrames());\n subFramesP\n .then(subFrames => {\n var _a;\n const views = (_a = (electron__WEBPACK_IMPORTED_MODULE_0__[\"webContents\"] || (electronRemote === null || electronRemote === void 0 ? void 0 : electronRemote.webContents))) === null || _a === void 0 ? void 0 : _a.getAllWebContents();\n if (!views || !Array.isArray(views) || views.length === 0)\n return;\n args = args.map(sanitizePayload);\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"] === null || electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"] === void 0 ? void 0 : electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].send(channel, ...args);\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] === null || electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"] === void 0 ? void 0 : electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].emit(channel, ...args);\n for (const view of views) {\n let viewType = \"unknown\";\n // There will be a uncaught exception if the view is destroyed.\n try {\n viewType = view.getType();\n }\n catch (_b) {\n // We can ignore the view destroyed exception as viewType is only used for logging.\n }\n // Send message to views.\n try {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].silly(`[IPC]: broadcasting \"${channel}\" to ${viewType}=${view.id}`, { args });\n view.send(channel, ...args);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[IPC]: failed to send IPC message \"${channel}\" to view \"${viewType}=${view.id}\"`, { error: String(error) });\n }\n // Send message to subFrames of views.\n for (const frameInfo of subFrames) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].silly(`[IPC]: broadcasting \"${channel}\" to subframe \"frameInfo.processId\"=${frameInfo.processId} \"frameInfo.frameId\"=${frameInfo.frameId}`, { args });\n try {\n view.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[IPC]: failed to send IPC message \"${channel}\" to view \"${viewType}=${view.id}\"'s subframe \"frameInfo.processId\"=${frameInfo.processId} \"frameInfo.frameId\"=${frameInfo.frameId}`, { error: String(error) });\n }\n }\n }\n });\n}\nfunction ipcMainOn(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].on(channel, listener);\n return () => electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].off(channel, listener);\n}\nfunction ipcRendererOn(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].on(channel, listener);\n return () => electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].off(channel, listener);\n}\nfunction bindBroadcastHandlers() {\n ipcMainHandle(subFramesChannel, () => getSubFrames());\n}\n/**\n * Sanitizing data for IPC-messaging before send.\n * Removes possible observable values to avoid exceptions like \"can't clone object\".\n */\nfunction sanitizePayload(data) {\n return Object(_utils_toJS__WEBPACK_IMPORTED_MODULE_1__[\"toJS\"])(data);\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/ipc.ts?");
38144
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"broadcastMainChannel\", function() { return broadcastMainChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcMainHandle\", function() { return ipcMainHandle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"broadcastMessage\", function() { return broadcastMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcMainOn\", function() { return ipcMainOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipcRendererOn\", function() { return ipcRendererOn; });\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 _utils_toJS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/toJS */ \"./src/common/utils/toJS.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _cluster_frames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cluster-frames */ \"./src/common/cluster-frames.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// Inter-process communications (main <-> renderer)\n// https://www.electronjs.org/docs/api/ipc-main\n// https://www.electronjs.org/docs/api/ipc-renderer\n\n\n\n\nconst broadcastMainChannel = \"ipc:broadcast-main\";\nfunction ipcMainHandle(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].handle(channel, async (event, ...args) => {\n return sanitizePayload(await listener(event, ...args));\n });\n}\nfunction getSubFrames() {\n return Array.from(_cluster_frames__WEBPACK_IMPORTED_MODULE_3__[\"clusterFrameMap\"].values());\n}\nasync function broadcastMessage(channel, ...args) {\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"]) {\n return electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].invoke(broadcastMainChannel, channel, ...args.map(sanitizePayload));\n }\n if (!electron__WEBPACK_IMPORTED_MODULE_0__[\"webContents\"]) {\n return;\n }\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].listeners(channel).forEach((func) => func({\n processId: undefined, frameId: undefined, sender: undefined, senderFrame: undefined,\n }, ...args));\n const subFrames = getSubFrames();\n const views = electron__WEBPACK_IMPORTED_MODULE_0__[\"webContents\"].getAllWebContents();\n if (!views || !Array.isArray(views) || views.length === 0)\n return;\n args = args.map(sanitizePayload);\n for (const view of views) {\n let viewType = \"unknown\";\n // There will be a uncaught exception if the view is destroyed.\n try {\n viewType = view.getType();\n }\n catch (_a) {\n // We can ignore the view destroyed exception as viewType is only used for logging.\n }\n // Send message to views.\n try {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].silly(`[IPC]: broadcasting \"${channel}\" to ${viewType}=${view.id}`, { args });\n view.send(channel, ...args);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[IPC]: failed to send IPC message \"${channel}\" to view \"${viewType}=${view.id}\"`, { error });\n }\n // Send message to subFrames of views.\n for (const frameInfo of subFrames) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].silly(`[IPC]: broadcasting \"${channel}\" to subframe \"frameInfo.processId\"=${frameInfo.processId} \"frameInfo.frameId\"=${frameInfo.frameId}`, { args });\n try {\n view.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[IPC]: failed to send IPC message \"${channel}\" to view \"${viewType}=${view.id}\"'s subframe \"frameInfo.processId\"=${frameInfo.processId} \"frameInfo.frameId\"=${frameInfo.frameId}`, { error: String(error) });\n }\n }\n }\n}\nfunction ipcMainOn(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].on(channel, listener);\n return () => electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].off(channel, listener);\n}\nfunction ipcRendererOn(channel, listener) {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].on(channel, listener);\n return () => electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].off(channel, listener);\n}\n/**\n * Sanitizing data for IPC-messaging before send.\n * Removes possible observable values to avoid exceptions like \"can't clone object\".\n */\nfunction sanitizePayload(data) {\n return Object(_utils_toJS__WEBPACK_IMPORTED_MODULE_1__[\"toJS\"])(data);\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/ipc.ts?");
38240
38145
 
38241
38146
  /***/ }),
38242
38147
 
@@ -38252,15 +38157,27 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38252
38157
 
38253
38158
  /***/ }),
38254
38159
 
38255
- /***/ "./src/common/ipc/update-available.ipc.ts":
38256
- /*!************************************************!*\
38257
- !*** ./src/common/ipc/update-available.ipc.ts ***!
38258
- \************************************************/
38160
+ /***/ "./src/common/ipc/update-available.ts":
38161
+ /*!********************************************!*\
38162
+ !*** ./src/common/ipc/update-available.ts ***!
38163
+ \********************************************/
38259
38164
  /*! exports provided: UpdateAvailableChannel, AutoUpdateChecking, AutoUpdateNoUpdateAvailable, AutoUpdateLogPrefix, areArgsUpdateAvailableFromMain, areArgsUpdateAvailableToBackchannel */
38260
38165
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38261
38166
 
38262
38167
  "use strict";
38263
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateAvailableChannel\", function() { return UpdateAvailableChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateChecking\", function() { return AutoUpdateChecking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateNoUpdateAvailable\", function() { return AutoUpdateNoUpdateAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateLogPrefix\", function() { return AutoUpdateLogPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableFromMain\", function() { return areArgsUpdateAvailableFromMain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableToBackchannel\", function() { return areArgsUpdateAvailableToBackchannel; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst UpdateAvailableChannel = \"update-available\";\nconst AutoUpdateChecking = \"auto-update:checking\";\nconst AutoUpdateNoUpdateAvailable = \"auto-update:no-update\";\nconst AutoUpdateLogPrefix = \"[UPDATE-CHECKER]\";\nfunction areArgsUpdateAvailableFromMain(args) {\n if (args.length !== 2) {\n return false;\n }\n if (typeof args[0] !== \"string\") {\n return false;\n }\n if (typeof args[1] !== \"object\" || args[1] === null) {\n // TODO: improve this checking\n return false;\n }\n return true;\n}\nfunction areArgsUpdateAvailableToBackchannel(args) {\n if (args.length !== 1) {\n return false;\n }\n if (typeof args[0] !== \"object\" || args[0] === null) {\n // TODO: improve this checking\n return false;\n }\n return true;\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/update-available.ipc.ts?");
38168
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateAvailableChannel\", function() { return UpdateAvailableChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateChecking\", function() { return AutoUpdateChecking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateNoUpdateAvailable\", function() { return AutoUpdateNoUpdateAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AutoUpdateLogPrefix\", function() { return AutoUpdateLogPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableFromMain\", function() { return areArgsUpdateAvailableFromMain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areArgsUpdateAvailableToBackchannel\", function() { return areArgsUpdateAvailableToBackchannel; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst UpdateAvailableChannel = \"update-available\";\nconst AutoUpdateChecking = \"auto-update:checking\";\nconst AutoUpdateNoUpdateAvailable = \"auto-update:no-update\";\nconst AutoUpdateLogPrefix = \"[UPDATE-CHECKER]\";\nfunction areArgsUpdateAvailableFromMain(args) {\n if (args.length !== 2) {\n return false;\n }\n if (typeof args[0] !== \"string\") {\n return false;\n }\n if (typeof args[1] !== \"object\" || args[1] === null) {\n // TODO: improve this checking\n return false;\n }\n return true;\n}\nfunction areArgsUpdateAvailableToBackchannel(args) {\n if (args.length !== 1) {\n return false;\n }\n if (typeof args[0] !== \"object\" || args[0] === null) {\n // TODO: improve this checking\n return false;\n }\n return true;\n}\n\n\n//# sourceURL=webpack:///./src/common/ipc/update-available.ts?");
38169
+
38170
+ /***/ }),
38171
+
38172
+ /***/ "./src/common/ipc/window.ts":
38173
+ /*!**********************************!*\
38174
+ !*** ./src/common/ipc/window.ts ***!
38175
+ \**********************************/
38176
+ /*! exports provided: windowActionHandleChannel, windowOpenAppMenuAsContextMenuChannel, windowLocationChangedChannel, WindowAction */
38177
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
38178
+
38179
+ "use strict";
38180
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"windowActionHandleChannel\", function() { return windowActionHandleChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"windowOpenAppMenuAsContextMenuChannel\", function() { return windowOpenAppMenuAsContextMenuChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"windowLocationChangedChannel\", function() { return windowLocationChangedChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WindowAction\", function() { return WindowAction; });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst windowActionHandleChannel = \"window:window-action\";\nconst windowOpenAppMenuAsContextMenuChannel = \"window:open-app-context-menu\";\nconst windowLocationChangedChannel = \"window:location-changed\";\n/**\n * The supported actions on the current window. The argument for `windowActionHandleChannel`\n */\nvar WindowAction;\n(function (WindowAction) {\n /**\n * Request that the current window goes back one step of browser history\n */\n WindowAction[\"GO_BACK\"] = \"back\";\n /**\n * Request that the current window goes forward one step of browser history\n */\n WindowAction[\"GO_FORWARD\"] = \"forward\";\n /**\n * Request that the current window is minimized\n */\n WindowAction[\"MINIMIZE\"] = \"minimize\";\n /**\n * Request that the current window is maximized if it isn't, or unmaximized\n * if it is\n */\n WindowAction[\"TOGGLE_MAXIMIZE\"] = \"toggle-maximize\";\n /**\n * Request that the current window is closed\n */\n WindowAction[\"CLOSE\"] = \"close\";\n})(WindowAction || (WindowAction = {}));\n\n\n//# sourceURL=webpack:///./src/common/ipc/window.ts?");
38264
38181
 
38265
38182
  /***/ }),
38266
38183
 
@@ -38824,7 +38741,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
38824
38741
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
38825
38742
 
38826
38743
  "use strict";
38827
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceStack\", function() { return ResourceStack; });\n/* harmony import */ var fs_extra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\n/* harmony import */ var fs_extra__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_extra__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var handlebars__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! handlebars */ \"./node_modules/handlebars/dist/cjs/handlebars.js\");\n/* harmony import */ var handlebars__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(handlebars__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../main/resource-applier */ \"./src/main/resource-applier.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _ipc__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _cluster_ipc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cluster-ipc */ \"./src/common/cluster-ipc.ts\");\n/* harmony import */ var _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var js_yaml__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! js-yaml */ \"./node_modules/js-yaml/dist/js-yaml.mjs\");\n/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../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 */\n\n\n\n\n\n\n\n\n\n\n\nclass ResourceStack {\n constructor(cluster, name) {\n Object.defineProperty(this, \"cluster\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cluster\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: name\n });\n }\n /**\n *\n * @param folderPath folder path that is searched for files defining kubernetes resources.\n * @param templateContext sets the template parameters that are to be applied to any templated kubernetes resources that are to be applied.\n */\n async kubectlApplyFolder(folderPath, templateContext, extraArgs) {\n const resources = await this.renderTemplates(folderPath, templateContext);\n return this.applyResources(resources, extraArgs);\n }\n /**\n *\n * @param folderPath folder path that is searched for files defining kubernetes resources.\n * @param templateContext sets the template parameters that are to be applied to any templated kubernetes resources that are to be applied.\n */\n async kubectlDeleteFolder(folderPath, templateContext, extraArgs) {\n const resources = await this.renderTemplates(folderPath, templateContext);\n return this.deleteResources(resources, extraArgs);\n }\n async applyResources(resources, extraArgs) {\n const clusterModel = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_8__[\"ClusterStore\"].getInstance().getById(this.cluster.metadata.uid);\n if (!clusterModel) {\n throw new Error(`cluster not found`);\n }\n let kubectlArgs = extraArgs || [];\n kubectlArgs = this.appendKubectlArgs(kubectlArgs);\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n return await new _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__[\"ResourceApplier\"](clusterModel).kubectlApplyAll(resources, kubectlArgs);\n }\n else {\n const response = await Object(_ipc__WEBPACK_IMPORTED_MODULE_6__[\"requestMain\"])(_cluster_ipc__WEBPACK_IMPORTED_MODULE_7__[\"clusterKubectlApplyAllHandler\"], this.cluster.metadata.uid, resources, kubectlArgs);\n if (response.stderr) {\n throw new Error(response.stderr);\n }\n return response.stdout;\n }\n }\n async deleteResources(resources, extraArgs) {\n const clusterModel = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_8__[\"ClusterStore\"].getInstance().getById(this.cluster.metadata.uid);\n if (!clusterModel) {\n throw new Error(`cluster not found`);\n }\n let kubectlArgs = extraArgs || [];\n kubectlArgs = this.appendKubectlArgs(kubectlArgs);\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n return await new _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__[\"ResourceApplier\"](clusterModel).kubectlDeleteAll(resources, kubectlArgs);\n }\n else {\n const response = await Object(_ipc__WEBPACK_IMPORTED_MODULE_6__[\"requestMain\"])(_cluster_ipc__WEBPACK_IMPORTED_MODULE_7__[\"clusterKubectlDeleteAllHandler\"], this.cluster.metadata.uid, resources, kubectlArgs);\n if (response.stderr) {\n throw new Error(response.stderr);\n }\n return response.stdout;\n }\n }\n appendKubectlArgs(kubectlArgs) {\n if (!kubectlArgs.includes(\"-l\") && !kubectlArgs.includes(\"--label\")) {\n return kubectlArgs.concat([\"-l\", `app.kubernetes.io/name=${this.name}`]);\n }\n return kubectlArgs;\n }\n async renderTemplates(folderPath, templateContext) {\n var _a;\n var _b;\n const resources = [];\n _main_logger__WEBPACK_IMPORTED_MODULE_4__[\"default\"].info(`[RESOURCE-STACK]: render templates from ${folderPath}`);\n const files = await fs_extra__WEBPACK_IMPORTED_MODULE_0___default.a.readdir(folderPath);\n for (const filename of files) {\n const file = path__WEBPACK_IMPORTED_MODULE_1___default.a.join(folderPath, filename);\n const raw = await fs_extra__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(file);\n const data = (filename.endsWith(\".hb\")\n ? handlebars__WEBPACK_IMPORTED_MODULE_2___default.a.compile(raw.toString())(templateContext)\n : raw.toString()).trim();\n if (!data) {\n continue;\n }\n for (const entry of js_yaml__WEBPACK_IMPORTED_MODULE_9__[\"default\"].loadAll(data)) {\n if (typeof entry !== \"object\" || !entry) {\n continue;\n }\n const resource = entry;\n if (typeof resource.metadata === \"object\") {\n (_a = (_b = resource.metadata).labels) !== null && _a !== void 0 ? _a : (_b.labels = {});\n resource.metadata.labels[\"app.kubernetes.io/name\"] = this.name;\n resource.metadata.labels[\"app.kubernetes.io/managed-by\"] = _vars__WEBPACK_IMPORTED_MODULE_10__[\"productName\"];\n resource.metadata.labels[\"app.kubernetes.io/created-by\"] = \"resource-stack\";\n }\n resources.push(js_yaml__WEBPACK_IMPORTED_MODULE_9__[\"default\"].dump(resource));\n }\n }\n return resources;\n }\n}\n\n\n//# sourceURL=webpack:///./src/common/k8s/resource-stack.ts?");
38744
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceStack\", function() { return ResourceStack; });\n/* harmony import */ var fs_extra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\n/* harmony import */ var fs_extra__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_extra__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var handlebars__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! handlebars */ \"./node_modules/handlebars/dist/cjs/handlebars.js\");\n/* harmony import */ var handlebars__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(handlebars__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../main/resource-applier */ \"./src/main/resource-applier.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var js_yaml__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! js-yaml */ \"./node_modules/js-yaml/dist/js-yaml.mjs\");\n/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _renderer_ipc__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../renderer/ipc */ \"./src/renderer/ipc/index.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\nclass ResourceStack {\n constructor(cluster, name) {\n Object.defineProperty(this, \"cluster\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cluster\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: name\n });\n }\n /**\n *\n * @param folderPath folder path that is searched for files defining kubernetes resources.\n * @param templateContext sets the template parameters that are to be applied to any templated kubernetes resources that are to be applied.\n */\n async kubectlApplyFolder(folderPath, templateContext, extraArgs) {\n const resources = await this.renderTemplates(folderPath, templateContext);\n return this.applyResources(resources, extraArgs);\n }\n /**\n *\n * @param folderPath folder path that is searched for files defining kubernetes resources.\n * @param templateContext sets the template parameters that are to be applied to any templated kubernetes resources that are to be applied.\n */\n async kubectlDeleteFolder(folderPath, templateContext, extraArgs) {\n const resources = await this.renderTemplates(folderPath, templateContext);\n return this.deleteResources(resources, extraArgs);\n }\n async applyResources(resources, extraArgs) {\n const clusterModel = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_6__[\"ClusterStore\"].getInstance().getById(this.cluster.getId());\n if (!clusterModel) {\n throw new Error(`cluster not found`);\n }\n let kubectlArgs = extraArgs || [];\n kubectlArgs = this.appendKubectlArgs(kubectlArgs);\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n return await new _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__[\"ResourceApplier\"](clusterModel).kubectlApplyAll(resources, kubectlArgs);\n }\n else {\n const response = await Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_9__[\"requestKubectlApplyAll\"])(this.cluster.getId(), resources, kubectlArgs);\n if (response.stderr) {\n throw new Error(response.stderr);\n }\n return response.stdout;\n }\n }\n async deleteResources(resources, extraArgs) {\n const clusterModel = _cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_6__[\"ClusterStore\"].getInstance().getById(this.cluster.getId());\n if (!clusterModel) {\n throw new Error(`cluster not found`);\n }\n let kubectlArgs = extraArgs || [];\n kubectlArgs = this.appendKubectlArgs(kubectlArgs);\n if (electron__WEBPACK_IMPORTED_MODULE_5__[\"app\"]) {\n return await new _main_resource_applier__WEBPACK_IMPORTED_MODULE_3__[\"ResourceApplier\"](clusterModel).kubectlDeleteAll(resources, kubectlArgs);\n }\n else {\n const response = await Object(_renderer_ipc__WEBPACK_IMPORTED_MODULE_9__[\"requestKubectlDeleteAll\"])(this.cluster.getId(), resources, kubectlArgs);\n if (response.stderr) {\n throw new Error(response.stderr);\n }\n return response.stdout;\n }\n }\n appendKubectlArgs(kubectlArgs) {\n if (!kubectlArgs.includes(\"-l\") && !kubectlArgs.includes(\"--label\")) {\n return kubectlArgs.concat([\"-l\", `app.kubernetes.io/name=${this.name}`]);\n }\n return kubectlArgs;\n }\n async renderTemplates(folderPath, templateContext) {\n var _a;\n var _b;\n const resources = [];\n _main_logger__WEBPACK_IMPORTED_MODULE_4__[\"default\"].info(`[RESOURCE-STACK]: render templates from ${folderPath}`);\n const files = await fs_extra__WEBPACK_IMPORTED_MODULE_0___default.a.readdir(folderPath);\n for (const filename of files) {\n const file = path__WEBPACK_IMPORTED_MODULE_1___default.a.join(folderPath, filename);\n const raw = await fs_extra__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(file);\n const data = (filename.endsWith(\".hb\")\n ? handlebars__WEBPACK_IMPORTED_MODULE_2___default.a.compile(raw.toString())(templateContext)\n : raw.toString()).trim();\n if (!data) {\n continue;\n }\n for (const entry of js_yaml__WEBPACK_IMPORTED_MODULE_7__[\"default\"].loadAll(data)) {\n if (typeof entry !== \"object\" || !entry) {\n continue;\n }\n const resource = entry;\n if (typeof resource.metadata === \"object\") {\n (_a = (_b = resource.metadata).labels) !== null && _a !== void 0 ? _a : (_b.labels = {});\n resource.metadata.labels[\"app.kubernetes.io/name\"] = this.name;\n resource.metadata.labels[\"app.kubernetes.io/managed-by\"] = _vars__WEBPACK_IMPORTED_MODULE_8__[\"productName\"];\n resource.metadata.labels[\"app.kubernetes.io/created-by\"] = \"resource-stack\";\n }\n resources.push(js_yaml__WEBPACK_IMPORTED_MODULE_7__[\"default\"].dump(resource));\n }\n }\n return resources;\n }\n}\n\n\n//# sourceURL=webpack:///./src/common/k8s/resource-stack.ts?");
38828
38745
 
38829
38746
  /***/ }),
38830
38747
 
@@ -39544,7 +39461,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
39544
39461
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
39545
39462
 
39546
39463
  "use strict";
39547
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiSet\", function() { return multiSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtendedMap\", function() { return ExtendedMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtendedObservableMap\", function() { return ExtendedObservableMap; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __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\nfunction multiSet(map, newEntries) {\n for (const [key, val] of newEntries) {\n map.set(key, val);\n }\n}\nclass ExtendedMap extends Map {\n static new(entries) {\n return new ExtendedMap(entries);\n }\n /**\n * Get the value behind `key`. If it was not present, first insert the value returned by `getVal`\n * @param key The key to insert into the map with\n * @param getVal A function that returns a new instance of `V`.\n * @returns The value in the map\n */\n getOrInsert(key, getVal) {\n if (this.has(key)) {\n return this.get(key);\n }\n return this.set(key, getVal()).get(key);\n }\n /**\n * Set the value associated with `key` iff there was not a previous value\n * @throws if `key` already in map\n * @returns `this` so that `strictSet` can be chained\n */\n strictSet(key, val) {\n if (this.has(key)) {\n throw new TypeError(\"Duplicate key in map\");\n }\n return this.set(key, val);\n }\n /**\n * Get the value associated with `key`\n * @throws if `key` did not a value associated with it\n */\n strictGet(key) {\n if (!this.has(key)) {\n throw new TypeError(\"key not in map\");\n }\n return this.get(key);\n }\n}\nclass ExtendedObservableMap extends mobx__WEBPACK_IMPORTED_MODULE_0__[\"ObservableMap\"] {\n getOrInsert(key, getVal) {\n if (this.has(key)) {\n return this.get(key);\n }\n return this.set(key, getVal()).get(key);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Function]),\n __metadata(\"design:returntype\", Object)\n], ExtendedObservableMap.prototype, \"getOrInsert\", null);\n\n\n//# sourceURL=webpack:///./src/common/utils/extended-map.ts?");
39464
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiSet\", function() { return multiSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtendedMap\", function() { return ExtendedMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtendedObservableMap\", function() { return ExtendedObservableMap; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __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\nfunction multiSet(map, newEntries) {\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"runInAction\"])(() => {\n for (const [key, val] of newEntries) {\n map.set(key, val);\n }\n });\n}\nclass ExtendedMap extends Map {\n static new(entries) {\n return new ExtendedMap(entries);\n }\n /**\n * Get the value behind `key`. If it was not present, first insert the value returned by `getVal`\n * @param key The key to insert into the map with\n * @param getVal A function that returns a new instance of `V`.\n * @returns The value in the map\n */\n getOrInsert(key, getVal) {\n if (this.has(key)) {\n return this.get(key);\n }\n return this.set(key, getVal()).get(key);\n }\n /**\n * Set the value associated with `key` iff there was not a previous value\n * @throws if `key` already in map\n * @returns `this` so that `strictSet` can be chained\n */\n strictSet(key, val) {\n if (this.has(key)) {\n throw new TypeError(\"Duplicate key in map\");\n }\n return this.set(key, val);\n }\n /**\n * Get the value associated with `key`\n * @throws if `key` did not a value associated with it\n */\n strictGet(key) {\n if (!this.has(key)) {\n throw new TypeError(\"key not in map\");\n }\n return this.get(key);\n }\n}\nclass ExtendedObservableMap extends mobx__WEBPACK_IMPORTED_MODULE_0__[\"ObservableMap\"] {\n getOrInsert(key, getVal) {\n if (this.has(key)) {\n return this.get(key);\n }\n return this.set(key, getVal()).get(key);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Function]),\n __metadata(\"design:returntype\", Object)\n], ExtendedObservableMap.prototype, \"getOrInsert\", null);\n\n\n//# sourceURL=webpack:///./src/common/utils/extended-map.ts?");
39548
39465
 
39549
39466
  /***/ }),
39550
39467
 
@@ -39928,7 +39845,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app
39928
39845
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
39929
39846
 
39930
39847
  "use strict";
39931
- eval("__webpack_require__.r(__webpack_exports__);\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//# sourceURL=webpack:///./src/extensions/common-api/registrations.ts?");
39848
+ eval("__webpack_require__.r(__webpack_exports__);\n\n\n\n//# sourceURL=webpack:///./src/extensions/common-api/registrations.ts?");
39932
39849
 
39933
39850
  /***/ }),
39934
39851
 
@@ -40024,7 +39941,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ogr
40024
39941
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
40025
39942
 
40026
39943
  "use strict";
40027
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtensionsStore\", function() { return ExtensionsStore; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_base_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/base-store */ \"./src/common/base-store.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\nclass ExtensionsStore extends _common_base_store__WEBPACK_IMPORTED_MODULE_2__[\"BaseStore\"] {\n constructor() {\n super({\n configName: \"lens-extensions\",\n });\n Object.defineProperty(this, \"displayName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ExtensionsStore\"\n });\n Object.defineProperty(this, \"state\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map()\n });\n Object.defineProperty(this, \"mergeState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (extensionsState) => {\n this.state.merge(extensionsState);\n }\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n this.load();\n }\n get enabledExtensions() {\n return Array.from(this.state.values())\n .filter(({ enabled }) => enabled)\n .map(({ name }) => name);\n }\n isEnabled({ id, isBundled }) {\n var _a;\n // By default false, so that copied extensions are disabled by default.\n // If user installs the extension from the UI, the Extensions component will specifically enable it.\n return isBundled || Boolean((_a = this.state.get(id)) === null || _a === void 0 ? void 0 : _a.enabled);\n }\n fromStore({ extensions }) {\n this.state.merge(extensions);\n }\n toJSON() {\n return Object(_common_utils__WEBPACK_IMPORTED_MODULE_1__[\"toJS\"])({\n extensions: Object.fromEntries(this.state),\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ExtensionsStore.prototype, \"enabledExtensions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Object)\n], ExtensionsStore.prototype, \"mergeState\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ExtensionsStore.prototype, \"fromStore\", null);\n\n\n//# sourceURL=webpack:///./src/extensions/extensions-store/extensions-store.ts?");
39944
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExtensionsStore\", function() { return ExtensionsStore; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_base_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/base-store */ \"./src/common/base-store.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\nclass ExtensionsStore extends _common_base_store__WEBPACK_IMPORTED_MODULE_2__[\"BaseStore\"] {\n constructor() {\n super({\n configName: \"lens-extensions\",\n });\n Object.defineProperty(this, \"displayName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ExtensionsStore\"\n });\n Object.defineProperty(this, \"state\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map()\n });\n Object.defineProperty(this, \"mergeState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"])((extensionsState) => {\n this.state.merge(extensionsState);\n })\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n this.load();\n }\n get enabledExtensions() {\n return Array.from(this.state.values())\n .filter(({ enabled }) => enabled)\n .map(({ name }) => name);\n }\n isEnabled({ id, isBundled }) {\n var _a;\n // By default false, so that copied extensions are disabled by default.\n // If user installs the extension from the UI, the Extensions component will specifically enable it.\n return isBundled || Boolean((_a = this.state.get(id)) === null || _a === void 0 ? void 0 : _a.enabled);\n }\n fromStore({ extensions }) {\n this.state.merge(extensions);\n }\n toJSON() {\n return Object(_common_utils__WEBPACK_IMPORTED_MODULE_1__[\"toJS\"])({\n extensions: Object.fromEntries(this.state),\n });\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ExtensionsStore.prototype, \"enabledExtensions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ExtensionsStore.prototype, \"fromStore\", null);\n\n\n//# sourceURL=webpack:///./src/extensions/extensions-store/extensions-store.ts?");
40028
39945
 
40029
39946
  /***/ }),
40030
39947
 
@@ -40200,11 +40117,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
40200
40117
  /*!********************************************!*\
40201
40118
  !*** ./src/extensions/registries/index.ts ***!
40202
40119
  \********************************************/
40203
- /*! exports provided: getExtensionPageUrl, ClusterPageRegistry, GlobalPageRegistry, ClusterPageMenuRegistry, StatusBarRegistry, KubeObjectDetailRegistry, KubeObjectMenuRegistry, KubeObjectStatusRegistry, EntitySettingRegistry, CatalogEntityDetailRegistry, WorkloadsOverviewDetailRegistry */
40120
+ /*! exports provided: getExtensionPageUrl, ClusterPageRegistry, GlobalPageRegistry, ClusterPageMenuRegistry, KubeObjectDetailRegistry, KubeObjectMenuRegistry, KubeObjectStatusRegistry, EntitySettingRegistry, CatalogEntityDetailRegistry, WorkloadsOverviewDetailRegistry */
40204
40121
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
40205
40122
 
40206
40123
  "use strict";
40207
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _page_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page-registry */ \"./src/extensions/registries/page-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getExtensionPageUrl\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"getExtensionPageUrl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClusterPageRegistry\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"ClusterPageRegistry\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GlobalPageRegistry\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"GlobalPageRegistry\"]; });\n\n/* harmony import */ var _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-menu-registry */ \"./src/extensions/registries/page-menu-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClusterPageMenuRegistry\", function() { return _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__[\"ClusterPageMenuRegistry\"]; });\n\n/* harmony import */ var _status_bar_registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./status-bar-registry */ \"./src/extensions/registries/status-bar-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StatusBarRegistry\", function() { return _status_bar_registry__WEBPACK_IMPORTED_MODULE_2__[\"StatusBarRegistry\"]; });\n\n/* harmony import */ var _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kube-object-detail-registry */ \"./src/extensions/registries/kube-object-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectDetailRegistry\", function() { return _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_3__[\"KubeObjectDetailRegistry\"]; });\n\n/* harmony import */ var _kube_object_menu_registry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kube-object-menu-registry */ \"./src/extensions/registries/kube-object-menu-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectMenuRegistry\", function() { return _kube_object_menu_registry__WEBPACK_IMPORTED_MODULE_4__[\"KubeObjectMenuRegistry\"]; });\n\n/* harmony import */ var _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kube-object-status-registry */ \"./src/extensions/registries/kube-object-status-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectStatusRegistry\", function() { return _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_5__[\"KubeObjectStatusRegistry\"]; });\n\n/* harmony import */ var _entity_setting_registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./entity-setting-registry */ \"./src/extensions/registries/entity-setting-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntitySettingRegistry\", function() { return _entity_setting_registry__WEBPACK_IMPORTED_MODULE_6__[\"EntitySettingRegistry\"]; });\n\n/* harmony import */ var _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./catalog-entity-detail-registry */ \"./src/extensions/registries/catalog-entity-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityDetailRegistry\", function() { return _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_7__[\"CatalogEntityDetailRegistry\"]; });\n\n/* harmony import */ var _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./workloads-overview-detail-registry */ \"./src/extensions/registries/workloads-overview-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WorkloadsOverviewDetailRegistry\", function() { return _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_8__[\"WorkloadsOverviewDetailRegistry\"]; });\n\n/* harmony import */ var _protocol_handler__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./protocol-handler */ \"./src/extensions/registries/protocol-handler.ts\");\n/* empty/unused harmony star reexport *//**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n// All registries managed by extensions api\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/extensions/registries/index.ts?");
40124
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _page_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page-registry */ \"./src/extensions/registries/page-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getExtensionPageUrl\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"getExtensionPageUrl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClusterPageRegistry\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"ClusterPageRegistry\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GlobalPageRegistry\", function() { return _page_registry__WEBPACK_IMPORTED_MODULE_0__[\"GlobalPageRegistry\"]; });\n\n/* harmony import */ var _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-menu-registry */ \"./src/extensions/registries/page-menu-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClusterPageMenuRegistry\", function() { return _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__[\"ClusterPageMenuRegistry\"]; });\n\n/* harmony import */ var _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./kube-object-detail-registry */ \"./src/extensions/registries/kube-object-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectDetailRegistry\", function() { return _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__[\"KubeObjectDetailRegistry\"]; });\n\n/* harmony import */ var _kube_object_menu_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kube-object-menu-registry */ \"./src/extensions/registries/kube-object-menu-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectMenuRegistry\", function() { return _kube_object_menu_registry__WEBPACK_IMPORTED_MODULE_3__[\"KubeObjectMenuRegistry\"]; });\n\n/* harmony import */ var _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kube-object-status-registry */ \"./src/extensions/registries/kube-object-status-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectStatusRegistry\", function() { return _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_4__[\"KubeObjectStatusRegistry\"]; });\n\n/* harmony import */ var _entity_setting_registry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./entity-setting-registry */ \"./src/extensions/registries/entity-setting-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntitySettingRegistry\", function() { return _entity_setting_registry__WEBPACK_IMPORTED_MODULE_5__[\"EntitySettingRegistry\"]; });\n\n/* harmony import */ var _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./catalog-entity-detail-registry */ \"./src/extensions/registries/catalog-entity-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityDetailRegistry\", function() { return _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_6__[\"CatalogEntityDetailRegistry\"]; });\n\n/* harmony import */ var _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./workloads-overview-detail-registry */ \"./src/extensions/registries/workloads-overview-detail-registry.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WorkloadsOverviewDetailRegistry\", function() { return _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_7__[\"WorkloadsOverviewDetailRegistry\"]; });\n\n/* harmony import */ var _protocol_handler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./protocol-handler */ \"./src/extensions/registries/protocol-handler.ts\");\n/* empty/unused harmony star reexport *//**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n// All registries managed by extensions api\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/extensions/registries/index.ts?");
40208
40125
 
40209
40126
  /***/ }),
40210
40127
 
@@ -40280,18 +40197,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/**\n * Copyright (c) OpenLen
40280
40197
 
40281
40198
  /***/ }),
40282
40199
 
40283
- /***/ "./src/extensions/registries/status-bar-registry.ts":
40284
- /*!**********************************************************!*\
40285
- !*** ./src/extensions/registries/status-bar-registry.ts ***!
40286
- \**********************************************************/
40287
- /*! exports provided: StatusBarRegistry */
40288
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
40289
-
40290
- "use strict";
40291
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StatusBarRegistry\", function() { return StatusBarRegistry; });\n/* harmony import */ var _base_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-registry */ \"./src/extensions/registries/base-registry.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\nclass StatusBarRegistry extends _base_registry__WEBPACK_IMPORTED_MODULE_0__[\"BaseRegistry\"] {\n}\n\n\n//# sourceURL=webpack:///./src/extensions/registries/status-bar-registry.ts?");
40292
-
40293
- /***/ }),
40294
-
40295
40200
  /***/ "./src/extensions/registries/workloads-overview-detail-registry.ts":
40296
40201
  /*!*************************************************************************!*\
40297
40202
  !*** ./src/extensions/registries/workloads-overview-detail-registry.ts ***!
@@ -40396,7 +40301,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
40396
40301
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
40397
40302
 
40398
40303
  "use strict";
40399
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityRegistry\", function() { return CatalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRegistry\", function() { return catalogEntityRegistry; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_catalog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.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\nclass CatalogEntityRegistry {\n constructor(categoryRegistry) {\n Object.defineProperty(this, \"categoryRegistry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: categoryRegistry\n });\n Object.defineProperty(this, \"sources\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map()\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n }\n addObservableSource(id, source) {\n this.sources.set(id, Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => source));\n }\n addComputedSource(id, source) {\n this.sources.set(id, source);\n }\n removeSource(id) {\n this.sources.delete(id);\n }\n get items() {\n return Array.from(_common_utils__WEBPACK_IMPORTED_MODULE_2__[\"iter\"].filter(_common_utils__WEBPACK_IMPORTED_MODULE_2__[\"iter\"].flatMap(this.sources.values(), source => source.get()), entity => this.categoryRegistry.getCategoryForEntity(entity)));\n }\n getById(id) {\n return this.items.find((entity) => entity.metadata.uid === id);\n }\n getItemsForApiKind(apiVersion, kind) {\n return this.items.filter((item) => item.apiVersion === apiVersion && item.kind === kind);\n }\n getItemsByEntityClass(constructor) {\n return this.items.filter((item) => item instanceof constructor);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"addObservableSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"addComputedSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"removeSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"items\", null);\nconst catalogEntityRegistry = new CatalogEntityRegistry(_common_catalog__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"]);\n\n\n//# sourceURL=webpack:///./src/main/catalog/catalog-entity-registry.ts?");
40304
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityRegistry\", function() { return CatalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRegistry\", function() { return catalogEntityRegistry; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_catalog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.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\nclass CatalogEntityRegistry {\n constructor(categoryRegistry) {\n Object.defineProperty(this, \"categoryRegistry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: categoryRegistry\n });\n Object.defineProperty(this, \"sources\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map()\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n }\n addObservableSource(id, source) {\n this.sources.set(id, Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => source));\n }\n addComputedSource(id, source) {\n this.sources.set(id, source);\n }\n removeSource(id) {\n this.sources.delete(id);\n }\n get items() {\n return Array.from(_common_utils__WEBPACK_IMPORTED_MODULE_2__[\"iter\"].filter(_common_utils__WEBPACK_IMPORTED_MODULE_2__[\"iter\"].flatMap(this.sources.values(), source => source.get()), entity => this.categoryRegistry.getCategoryForEntity(entity)));\n }\n getById(id) {\n return this.items.find(entity => entity.getId() === id);\n }\n getItemsForApiKind(apiVersion, kind) {\n return this.items.filter((item) => item.apiVersion === apiVersion && item.kind === kind);\n }\n getItemsByEntityClass(constructor) {\n return this.items.filter((item) => item instanceof constructor);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"addObservableSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"addComputedSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"removeSource\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"items\", null);\nconst catalogEntityRegistry = new CatalogEntityRegistry(_common_catalog__WEBPACK_IMPORTED_MODULE_1__[\"catalogCategoryRegistry\"]);\n\n\n//# sourceURL=webpack:///./src/main/catalog/catalog-entity-registry.ts?");
40400
40305
 
40401
40306
  /***/ }),
40402
40307
 
@@ -40512,11 +40417,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
40512
40417
  /*!************************************!*\
40513
40418
  !*** ./src/main/window-manager.ts ***!
40514
40419
  \************************************/
40515
- /*! exports provided: IpcMainWindowEvents, WindowManager */
40420
+ /*! exports provided: WindowManager */
40516
40421
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
40517
40422
 
40518
40423
  "use strict";
40519
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IpcMainWindowEvents\", function() { return IpcMainWindowEvents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WindowManager\", function() { return WindowManager; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! electron-window-state */ \"./node_modules/electron-window-state/index.js\");\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(electron_window_state__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_3__ = __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_4__ = __webpack_require__(/*! ../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/cluster-frames */ \"./src/common/cluster-frames.ts\");\n/* harmony import */ var _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/navigation/events */ \"./src/renderer/navigation/events.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _lens_proxy__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./lens-proxy */ \"./src/main/lens-proxy.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\nvar IpcMainWindowEvents;\n(function (IpcMainWindowEvents) {\n IpcMainWindowEvents[\"OPEN_CONTEXT_MENU\"] = \"window:open-context-menu\";\n})(IpcMainWindowEvents || (IpcMainWindowEvents = {}));\nfunction isHideable(window) {\n return Boolean(window && !window.isDestroyed());\n}\nclass WindowManager extends _common_utils__WEBPACK_IMPORTED_MODULE_5__[\"Singleton\"] {\n constructor() {\n super();\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 Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n this.bindEvents();\n }\n get mainUrl() {\n return `http://localhost:${_lens_proxy__WEBPACK_IMPORTED_MODULE_10__[\"LensProxy\"].getInstance().port}`;\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_2___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_1__[\"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_1__[\"BrowserWindow\"]({\n x, y, width, height,\n title: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"productName\"],\n show: false,\n minWidth: 700,\n minHeight: 500,\n titleBarStyle: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"isMac\"] ? \"hiddenInset\" : \"hidden\",\n frame: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"isMac\"],\n backgroundColor: \"#1e2124\",\n webPreferences: {\n nodeIntegration: true,\n nodeIntegrationInSubFrames: true,\n enableRemoteModule: true,\n webviewTag: true,\n contextIsolation: 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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"focus\" });\n })\n .on(\"blur\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_3__[\"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_1__[\"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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"dom-ready\" });\n })\n .on(\"did-fail-load\", (_event, code, desc) => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(`[WINDOW-MANAGER]: Failed to load Main window`, { code, desc });\n })\n .on(\"did-finish-load\", () => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].info(\"[WINDOW-MANAGER]: Main window loaded\");\n })\n .on(\"will-attach-webview\", (event, webPreferences, params) => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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_8__[\"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_8__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n if (params.allowpopups) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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 }).setWindowOpenHandler((details) => {\n electron__WEBPACK_IMPORTED_MODULE_1__[\"shell\"].openExternal(details.url);\n return { action: \"deny\" };\n });\n }\n try {\n if (showSplash)\n await this.showSplash();\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].info(`[WINDOW-MANAGER]: Loading Main window from url: ${this.mainUrl} ...`);\n await this.mainWindow.loadURL(this.mainUrl);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(\"Loading main window failed\", { error });\n electron__WEBPACK_IMPORTED_MODULE_1__[\"dialog\"].showErrorBox(\"ERROR!\", error.toString());\n }\n }\n bindEvents() {\n // track visible cluster from ui\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_4__[\"ipcMainOn\"])(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"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_1__[\"ipcMain\"].once(_common_ipc__WEBPACK_IMPORTED_MODULE_4__[\"BundledExtensionsLoaded\"], () => resolve());\n });\n await this.initMainWindow(showSplash);\n }\n try {\n await viewHasLoaded;\n await Object(_common_utils__WEBPACK_IMPORTED_MODULE_5__[\"delay\"])(50); // wait just a bit longer to let the first round of rendering happen\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"start\" });\n }, 1000);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(`Showing main window failed: ${error.stack || error}`);\n electron__WEBPACK_IMPORTED_MODULE_1__[\"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_5__[\"iter\"].find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__[\"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 const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__[\"clusterFrameMap\"].values(), frameInfo => frameInfo.frameId === frameId);\n const channel = frameInfo\n ? _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"IpcRendererNavigationEvents\"].NAVIGATE_IN_CLUSTER\n : _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"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_6__[\"clusterFrameMap\"].get(this.activeClusterId);\n if (frameInfo) {\n this.sendToView({ channel: _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"IpcRendererNavigationEvents\"].RELOAD_PAGE, frameInfo });\n }\n else {\n electron__WEBPACK_IMPORTED_MODULE_1__[\"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_1__[\"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 enableRemoteModule: true,\n contextIsolation: false,\n nodeIntegrationInSubFrames: 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_0__[\"observable\"],\n __metadata(\"design:type\", String)\n], WindowManager.prototype, \"activeClusterId\", void 0);\n\n\n//# sourceURL=webpack:///./src/main/window-manager.ts?");
40424
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WindowManager\", function() { return WindowManager; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! electron-window-state */ \"./node_modules/electron-window-state/index.js\");\n/* harmony import */ var electron_window_state__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(electron_window_state__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_3__ = __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_4__ = __webpack_require__(/*! ../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/cluster-frames */ \"./src/common/cluster-frames.ts\");\n/* harmony import */ var _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/navigation/events */ \"./src/renderer/navigation/events.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _lens_proxy__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./lens-proxy */ \"./src/main/lens-proxy.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_11__ = __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_5__[\"Singleton\"] {\n constructor() {\n super();\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 Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n this.bindEvents();\n }\n get mainUrl() {\n return `http://localhost:${_lens_proxy__WEBPACK_IMPORTED_MODULE_10__[\"LensProxy\"].getInstance().port}`;\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_2___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_1__[\"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_1__[\"BrowserWindow\"]({\n x, y, width, height,\n title: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"productName\"],\n show: false,\n minWidth: 700,\n minHeight: 500,\n titleBarStyle: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"isMac\"] ? \"hiddenInset\" : \"hidden\",\n frame: _common_vars__WEBPACK_IMPORTED_MODULE_9__[\"isMac\"],\n backgroundColor: \"#1e2124\",\n webPreferences: {\n nodeIntegration: true,\n nodeIntegrationInSubFrames: true,\n webviewTag: true,\n contextIsolation: false,\n nativeWindowOpen: true,\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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"focus\" });\n })\n .on(\"blur\", () => {\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_3__[\"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_1__[\"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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"dom-ready\" });\n })\n .on(\"did-fail-load\", (_event, code, desc) => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(`[WINDOW-MANAGER]: Failed to load Main window`, { code, desc });\n })\n .on(\"did-finish-load\", () => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].info(\"[WINDOW-MANAGER]: Main window loaded\");\n })\n .on(\"will-attach-webview\", (event, webPreferences, params) => {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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_8__[\"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_8__[\"default\"].warn(\"[WINDOW-MANAGER]: Strip away preload scripts of webview\");\n delete webPreferences.preload;\n }\n if (params.allowpopups) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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 electron__WEBPACK_IMPORTED_MODULE_1__[\"shell\"].openExternal(details.url);\n return { action: \"deny\" };\n });\n }\n try {\n if (showSplash)\n await this.showSplash();\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].info(`[WINDOW-MANAGER]: Loading Main window from url: ${this.mainUrl} ...`);\n await this.mainWindow.loadURL(this.mainUrl);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(\"Loading main window failed\", { error });\n electron__WEBPACK_IMPORTED_MODULE_1__[\"dialog\"].showErrorBox(\"ERROR!\", error.toString());\n }\n }\n bindEvents() {\n // track visible cluster from ui\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_4__[\"ipcMainOn\"])(_renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"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_1__[\"ipcMain\"].once(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_11__[\"bundledExtensionsLoaded\"], () => resolve());\n });\n await this.initMainWindow(showSplash);\n }\n try {\n await viewHasLoaded;\n await Object(_common_utils__WEBPACK_IMPORTED_MODULE_5__[\"delay\"])(50); // wait just a bit longer to let the first round of rendering happen\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"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_3__[\"appEventBus\"].emit({ name: \"app\", action: \"start\" });\n }, 1000);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"].error(`Showing main window failed: ${error.stack || error}`);\n electron__WEBPACK_IMPORTED_MODULE_1__[\"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_5__[\"iter\"].find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__[\"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 const frameInfo = _common_utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].find(_common_cluster_frames__WEBPACK_IMPORTED_MODULE_6__[\"clusterFrameMap\"].values(), frameInfo => frameInfo.frameId === frameId);\n const channel = frameInfo\n ? _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"IpcRendererNavigationEvents\"].NAVIGATE_IN_CLUSTER\n : _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"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_6__[\"clusterFrameMap\"].get(this.activeClusterId);\n if (frameInfo) {\n this.sendToView({ channel: _renderer_navigation_events__WEBPACK_IMPORTED_MODULE_7__[\"IpcRendererNavigationEvents\"].RELOAD_PAGE, frameInfo });\n }\n else {\n electron__WEBPACK_IMPORTED_MODULE_1__[\"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_1__[\"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_0__[\"observable\"],\n __metadata(\"design:type\", String)\n], WindowManager.prototype, \"activeClusterId\", void 0);\n\n\n//# sourceURL=webpack:///./src/main/window-manager.ts?");
40520
40425
 
40521
40426
  /***/ }),
40522
40427
 
@@ -40708,7 +40613,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com
40708
40613
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
40709
40614
 
40710
40615
  "use strict";
40711
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRunContext\", function() { return catalogEntityRunContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityRegistry\", function() { return CatalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRegistry\", function() { return catalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveClusterEntity\", function() { return getActiveClusterEntity; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_catalog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _common_catalog_entities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/catalog-entities */ \"./src/common/catalog-entities/index.ts\");\n/* harmony import */ var _common_cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"./src/renderer/utils/index.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_logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/logger */ \"./src/common/logger.ts\");\n/* harmony import */ var _common_catalog_catalog_run_event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/catalog/catalog-run-event */ \"./src/common/catalog/catalog-run-event.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_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/ipc/catalog */ \"./src/common/ipc/catalog.ts\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../navigation */ \"./src/renderer/navigation/index.ts\");\n/* harmony import */ var process__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! process */ \"process\");\n/* harmony import */ var process__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(process__WEBPACK_IMPORTED_MODULE_12__);\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\nconst catalogEntityRunContext = {\n navigate: (url) => Object(_navigation__WEBPACK_IMPORTED_MODULE_11__[\"navigate\"])(url),\n setCommandPaletteContext: (entity) => {\n catalogEntityRegistry.activeEntity = entity;\n },\n};\nclass CatalogEntityRegistry {\n constructor(categoryRegistry) {\n Object.defineProperty(this, \"categoryRegistry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: categoryRegistry\n });\n Object.defineProperty(this, \"activeEntityId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n Object.defineProperty(this, \"_entities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map([], { deep: true })\n });\n Object.defineProperty(this, \"filters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].set([], {\n deep: false,\n })\n });\n Object.defineProperty(this, \"onBeforeRunHooks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].set([], {\n deep: false,\n })\n });\n /**\n * Buffer for keeping entities that don't yet have CatalogCategory synced\n */\n Object.defineProperty(this, \"rawEntities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n }\n getActiveEntityById() {\n return this._entities.get(this.activeEntityId) || null;\n }\n get activeEntity() {\n const entity = this.getActiveEntityById();\n // If the entity was not found but there are rawEntities to be processed,\n // try to process them and return the entity.\n // This might happen if an extension registered a new Catalog category.\n if (this.activeEntityId && !entity && this.rawEntities.length > 0) {\n this.processRawEntities();\n return this.getActiveEntityById();\n }\n return entity;\n }\n set activeEntity(raw) {\n if (raw) {\n const id = typeof raw === \"string\"\n ? raw\n : raw.getId();\n this.activeEntityId = id;\n }\n else {\n this.activeEntityId = undefined;\n }\n }\n init() {\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_1__[\"ipcRendererOn\"])(_common_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__[\"CatalogIpcEvents\"].ITEMS, (event, items) => {\n this.updateItems(items);\n });\n // Make sure that we get items ASAP and not the next time one of them changes\n electron__WEBPACK_IMPORTED_MODULE_9__[\"ipcRenderer\"].send(_common_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__[\"CatalogIpcEvents\"].INIT);\n if (process__WEBPACK_IMPORTED_MODULE_12__[\"isMainFrame\"]) {\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_1__[\"ipcRendererOn\"])(_common_ipc__WEBPACK_IMPORTED_MODULE_1__[\"catalogEntityRunListener\"], (event, id) => {\n const entity = this.getById(id);\n if (entity) {\n this.onRun(entity);\n }\n });\n }\n }\n updateItems(items) {\n this.rawEntities.length = 0;\n const newIds = new Set(items.map((item) => item.metadata.uid));\n for (const uid of this._entities.keys()) {\n if (!newIds.has(uid)) {\n this._entities.delete(uid);\n }\n }\n for (const item of items) {\n this.updateItem(item);\n }\n }\n updateItem(item) {\n const existing = this._entities.get(item.metadata.uid);\n if (!existing) {\n const entity = this.categoryRegistry.getEntityForData(item);\n if (entity) {\n this._entities.set(entity.metadata.uid, entity);\n }\n else {\n this.rawEntities.push(item);\n }\n }\n else {\n existing.metadata = item.metadata;\n existing.spec = item.spec;\n existing.status = item.status;\n }\n }\n processRawEntities() {\n const items = [...this.rawEntities];\n this.rawEntities.length = 0;\n for (const item of items) {\n this.updateItem(item);\n }\n }\n get items() {\n this.processRawEntities();\n return Array.from(this._entities.values());\n }\n get filteredItems() {\n return Array.from(_utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].reduce(this.filters, _utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].filter, this.items.values()));\n }\n get entities() {\n return new Map(this.items.map(entity => [entity.getId(), entity]));\n }\n get filteredEntities() {\n return new Map(this.filteredItems.map(entity => [entity.getId(), entity]));\n }\n getById(id) {\n return this.entities.get(id);\n }\n getItemsForApiKind(apiVersion, kind, { filtered = false } = {}) {\n const byApiKind = (item) => item.apiVersion === apiVersion && item.kind === kind;\n const entities = filtered ? this.filteredItems : this.items;\n return entities.filter(byApiKind);\n }\n getItemsForCategory(category, { filtered = false } = {}) {\n const supportedVersions = new Set(category.spec.versions.map((v) => `${category.spec.group}/${v.name}`));\n const byApiVersionKind = (item) => supportedVersions.has(item.apiVersion) && item.kind === category.spec.names.kind;\n const entities = filtered ? this.filteredItems : this.items;\n return entities.filter(byApiVersionKind);\n }\n /**\n * Add a new filter to the set of item filters\n * @param fn The function that should return a truthy value if that entity should be sent currently \"active\"\n * @returns A function to remove that filter\n */\n addCatalogFilter(fn) {\n this.filters.add(fn);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"once\"])(() => void this.filters.delete(fn));\n }\n /**\n * Add a onBeforeRun hook. If `onBeforeRun` was previously added then it will not be added again\n * @param onBeforeRun The function that should return a boolean if the onRun of catalog entity should be triggered.\n * @returns A function to remove that hook\n */\n addOnBeforeRun(onBeforeRun) {\n this.onBeforeRunHooks.add(onBeforeRun);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"once\"])(() => void this.onBeforeRunHooks.delete(onBeforeRun));\n }\n /**\n * Runs all the registered `onBeforeRun` hooks, short circuiting on the first event that's preventDefaulted\n * @param entity The entity to run the hooks on\n * @returns Whether the entities `onRun` method should be executed\n */\n async onBeforeRun(entity) {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(`[CATALOG-ENTITY-REGISTRY]: run onBeforeRun on ${entity.getId()}`);\n const runEvent = new _common_catalog_catalog_run_event__WEBPACK_IMPORTED_MODULE_8__[\"CatalogRunEvent\"]({ target: entity });\n for (const onBeforeRun of this.onBeforeRunHooks) {\n try {\n await onBeforeRun(runEvent);\n }\n catch (error) {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(`[CATALOG-ENTITY-REGISTRY]: entity ${entity.getId()} onBeforeRun threw an error`, error);\n }\n if (runEvent.defaultPrevented) {\n return false;\n }\n }\n return true;\n }\n /**\n * Perform the onBeforeRun check and, if successful, then proceed to call `entity`'s onRun method\n * @param entity The instance to invoke the hooks and then execute the onRun\n */\n onRun(entity) {\n this.onBeforeRun(entity)\n .then(doOnRun => {\n var _a;\n if (doOnRun) {\n return (_a = entity.onRun) === null || _a === void 0 ? void 0 : _a.call(entity, catalogEntityRunContext);\n }\n else {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(`onBeforeRun for ${entity.getId()} returned false`);\n }\n })\n .catch(error => _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`[CATALOG-ENTITY-REGISTRY]: entity ${entity.getId()} onRun threw an error`, error));\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"],\n __metadata(\"design:type\", String)\n], CatalogEntityRegistry.prototype, \"activeEntityId\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"updateItems\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"updateItem\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"items\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"filteredItems\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"entities\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"filteredEntities\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function]),\n __metadata(\"design:returntype\", Function)\n], CatalogEntityRegistry.prototype, \"addCatalogFilter\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function]),\n __metadata(\"design:returntype\", Function)\n], CatalogEntityRegistry.prototype, \"addOnBeforeRun\", null);\nconst catalogEntityRegistry = new CatalogEntityRegistry(_common_catalog__WEBPACK_IMPORTED_MODULE_2__[\"catalogCategoryRegistry\"]);\nfunction getActiveClusterEntity() {\n var _a;\n return _common_cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_4__[\"ClusterStore\"].getInstance().getById((_a = catalogEntityRegistry.activeEntity) === null || _a === void 0 ? void 0 : _a.getId());\n}\n\n\n//# sourceURL=webpack:///./src/renderer/api/catalog-entity-registry.ts?");
40616
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRunContext\", function() { return catalogEntityRunContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CatalogEntityRegistry\", function() { return CatalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catalogEntityRegistry\", function() { return catalogEntityRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveClusterEntity\", function() { return getActiveClusterEntity; });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_catalog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/catalog */ \"./src/common/catalog/index.ts\");\n/* harmony import */ var _common_catalog_entities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/catalog-entities */ \"./src/common/catalog-entities/index.ts\");\n/* harmony import */ var _common_cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/cluster-store/cluster-store */ \"./src/common/cluster-store/cluster-store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"./src/renderer/utils/index.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_logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/logger */ \"./src/common/logger.ts\");\n/* harmony import */ var _common_catalog_catalog_run_event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/catalog/catalog-run-event */ \"./src/common/catalog/catalog-run-event.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_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/ipc/catalog */ \"./src/common/ipc/catalog.ts\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../navigation */ \"./src/renderer/navigation/index.ts\");\n/* harmony import */ var process__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! process */ \"process\");\n/* harmony import */ var process__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(process__WEBPACK_IMPORTED_MODULE_12__);\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\nconst catalogEntityRunContext = {\n navigate: (url) => Object(_navigation__WEBPACK_IMPORTED_MODULE_11__[\"navigate\"])(url),\n setCommandPaletteContext: (entity) => {\n catalogEntityRegistry.activeEntity = entity;\n },\n};\nclass CatalogEntityRegistry {\n constructor(categoryRegistry) {\n Object.defineProperty(this, \"categoryRegistry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: categoryRegistry\n });\n Object.defineProperty(this, \"activeEntityId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: undefined\n });\n Object.defineProperty(this, \"_entities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].map([], { deep: true })\n });\n Object.defineProperty(this, \"filters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].set([], {\n deep: false,\n })\n });\n Object.defineProperty(this, \"onBeforeRunHooks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"].set([], {\n deep: false,\n })\n });\n /**\n * Buffer for keeping entities that don't yet have CatalogCategory synced\n */\n Object.defineProperty(this, \"rawEntities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_0__[\"makeObservable\"])(this);\n }\n getActiveEntityById() {\n return this._entities.get(this.activeEntityId) || null;\n }\n get activeEntity() {\n const entity = this.getActiveEntityById();\n // If the entity was not found but there are rawEntities to be processed,\n // try to process them and return the entity.\n // This might happen if an extension registered a new Catalog category.\n if (this.activeEntityId && !entity && this.rawEntities.length > 0) {\n this.processRawEntities();\n return this.getActiveEntityById();\n }\n return entity;\n }\n set activeEntity(raw) {\n if (raw) {\n const id = typeof raw === \"string\"\n ? raw\n : raw.getId();\n this.activeEntityId = id;\n }\n else {\n this.activeEntityId = undefined;\n }\n }\n init() {\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_1__[\"ipcRendererOn\"])(_common_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__[\"catalogItemsChannel\"], (event, items) => {\n this.updateItems(items);\n });\n // Make sure that we get items ASAP and not the next time one of them changes\n electron__WEBPACK_IMPORTED_MODULE_9__[\"ipcRenderer\"].send(_common_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__[\"catalogInitChannel\"]);\n if (process__WEBPACK_IMPORTED_MODULE_12__[\"isMainFrame\"]) {\n Object(_common_ipc__WEBPACK_IMPORTED_MODULE_1__[\"ipcRendererOn\"])(_common_ipc_catalog__WEBPACK_IMPORTED_MODULE_10__[\"catalogEntityRunListener\"], (event, id) => {\n const entity = this.getById(id);\n if (entity) {\n this.onRun(entity);\n }\n });\n }\n }\n updateItems(items) {\n this.rawEntities.length = 0;\n const newIds = new Set(items.map((item) => item.metadata.uid));\n for (const uid of this._entities.keys()) {\n if (!newIds.has(uid)) {\n this._entities.delete(uid);\n }\n }\n for (const item of items) {\n this.updateItem(item);\n }\n }\n updateItem(item) {\n const existing = this._entities.get(item.metadata.uid);\n if (!existing) {\n const entity = this.categoryRegistry.getEntityForData(item);\n if (entity) {\n this._entities.set(entity.getId(), entity);\n }\n else {\n this.rawEntities.push(item);\n }\n }\n else {\n existing.metadata = item.metadata;\n existing.spec = item.spec;\n existing.status = item.status;\n }\n }\n processRawEntities() {\n const items = [...this.rawEntities];\n this.rawEntities.length = 0;\n for (const item of items) {\n this.updateItem(item);\n }\n }\n get items() {\n this.processRawEntities();\n return Array.from(this._entities.values());\n }\n get filteredItems() {\n return Array.from(_utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].reduce(this.filters, _utils__WEBPACK_IMPORTED_MODULE_5__[\"iter\"].filter, this.items.values()));\n }\n get entities() {\n return new Map(this.items.map(entity => [entity.getId(), entity]));\n }\n get filteredEntities() {\n return new Map(this.filteredItems.map(entity => [entity.getId(), entity]));\n }\n getById(id) {\n return this.entities.get(id);\n }\n getItemsForApiKind(apiVersion, kind, { filtered = false } = {}) {\n const byApiKind = (item) => item.apiVersion === apiVersion && item.kind === kind;\n const entities = filtered ? this.filteredItems : this.items;\n return entities.filter(byApiKind);\n }\n getItemsForCategory(category, { filtered = false } = {}) {\n const supportedVersions = new Set(category.spec.versions.map((v) => `${category.spec.group}/${v.name}`));\n const byApiVersionKind = (item) => supportedVersions.has(item.apiVersion) && item.kind === category.spec.names.kind;\n const entities = filtered ? this.filteredItems : this.items;\n return entities.filter(byApiVersionKind);\n }\n /**\n * Add a new filter to the set of item filters\n * @param fn The function that should return a truthy value if that entity should be sent currently \"active\"\n * @returns A function to remove that filter\n */\n addCatalogFilter(fn) {\n this.filters.add(fn);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"once\"])(() => void this.filters.delete(fn));\n }\n /**\n * Add a onBeforeRun hook. If `onBeforeRun` was previously added then it will not be added again\n * @param onBeforeRun The function that should return a boolean if the onRun of catalog entity should be triggered.\n * @returns A function to remove that hook\n */\n addOnBeforeRun(onBeforeRun) {\n this.onBeforeRunHooks.add(onBeforeRun);\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"once\"])(() => void this.onBeforeRunHooks.delete(onBeforeRun));\n }\n /**\n * Runs all the registered `onBeforeRun` hooks, short circuiting on the first event that's preventDefaulted\n * @param entity The entity to run the hooks on\n * @returns Whether the entities `onRun` method should be executed\n */\n async onBeforeRun(entity) {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(`[CATALOG-ENTITY-REGISTRY]: run onBeforeRun on ${entity.getId()}`);\n const runEvent = new _common_catalog_catalog_run_event__WEBPACK_IMPORTED_MODULE_8__[\"CatalogRunEvent\"]({ target: entity });\n for (const onBeforeRun of this.onBeforeRunHooks) {\n try {\n await onBeforeRun(runEvent);\n }\n catch (error) {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].warn(`[CATALOG-ENTITY-REGISTRY]: entity ${entity.getId()} onBeforeRun threw an error`, error);\n }\n if (runEvent.defaultPrevented) {\n return false;\n }\n }\n return true;\n }\n /**\n * Perform the onBeforeRun check and, if successful, then proceed to call `entity`'s onRun method\n * @param entity The instance to invoke the hooks and then execute the onRun\n */\n onRun(entity) {\n this.onBeforeRun(entity)\n .then(doOnRun => {\n var _a;\n if (doOnRun) {\n return (_a = entity.onRun) === null || _a === void 0 ? void 0 : _a.call(entity, catalogEntityRunContext);\n }\n else {\n _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].debug(`onBeforeRun for ${entity.getId()} returned false`);\n }\n })\n .catch(error => _common_logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`[CATALOG-ENTITY-REGISTRY]: entity ${entity.getId()} onRun threw an error`, error));\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"observable\"],\n __metadata(\"design:type\", String)\n], CatalogEntityRegistry.prototype, \"activeEntityId\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"updateItems\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CatalogEntityRegistry.prototype, \"updateItem\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"items\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"filteredItems\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"entities\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"computed\"],\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], CatalogEntityRegistry.prototype, \"filteredEntities\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function]),\n __metadata(\"design:returntype\", Function)\n], CatalogEntityRegistry.prototype, \"addCatalogFilter\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_0__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function]),\n __metadata(\"design:returntype\", Function)\n], CatalogEntityRegistry.prototype, \"addOnBeforeRun\", null);\nconst catalogEntityRegistry = new CatalogEntityRegistry(_common_catalog__WEBPACK_IMPORTED_MODULE_2__[\"catalogCategoryRegistry\"]);\nfunction getActiveClusterEntity() {\n var _a;\n return _common_cluster_store_cluster_store__WEBPACK_IMPORTED_MODULE_4__[\"ClusterStore\"].getInstance().getById((_a = catalogEntityRegistry.activeEntity) === null || _a === void 0 ? void 0 : _a.getId());\n}\n\n\n//# sourceURL=webpack:///./src/renderer/api/catalog-entity-registry.ts?");
40712
40617
 
40713
40618
  /***/ }),
40714
40619
 
@@ -41392,7 +41297,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
41392
41297
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41393
41298
 
41394
41299
  "use strict";
41395
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dialog\", function() { return Dialog; });\n/* harmony import */ var _dialog_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dialog.scss */ \"./src/renderer/components/dialog/dialog.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _animate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../animate */ \"./src/renderer/components/animate/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../navigation */ \"./src/renderer/navigation/index.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\nlet Dialog = class Dialog extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"contentElem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ref\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef()\n });\n Object.defineProperty(this, \"closeOnNavigate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_4__[\"reaction\"])(() => _navigation__WEBPACK_IMPORTED_MODULE_7__[\"navigation\"].toString(), () => this.close())\n });\n Object.defineProperty(this, \"state\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n isOpen: this.props.isOpen,\n }\n });\n Object.defineProperty(this, \"onOpen\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.props.onOpen();\n if (!this.props.pinned) {\n if (this.elem)\n this.elem.addEventListener(\"click\", this.onClickOutside);\n // Using document.body target to handle keydown event before Drawer does\n document.body.addEventListener(\"keydown\", this.onEscapeKey);\n }\n }\n });\n Object.defineProperty(this, \"onClose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.props.onClose();\n if (!this.props.pinned) {\n if (this.elem)\n this.elem.removeEventListener(\"click\", this.onClickOutside);\n document.body.removeEventListener(\"keydown\", this.onEscapeKey);\n }\n }\n });\n Object.defineProperty(this, \"onEscapeKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const escapeKey = evt.code === \"Escape\";\n if (escapeKey) {\n this.close();\n evt.stopPropagation();\n }\n }\n });\n Object.defineProperty(this, \"onClickOutside\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const target = evt.target;\n if (!this.contentElem.contains(target)) {\n this.close();\n evt.stopPropagation();\n }\n }\n });\n }\n get elem() {\n return this.ref.current;\n }\n get isOpen() {\n return this.state.isOpen;\n }\n componentDidMount() {\n if (this.isOpen)\n this.onOpen();\n }\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n this.toggle(isOpen);\n }\n }\n componentWillUnmount() {\n if (this.isOpen)\n this.onClose();\n }\n toggle(isOpen) {\n if (isOpen)\n this.open();\n else\n this.close();\n }\n open() {\n requestAnimationFrame(this.onOpen); // wait for render(), bind close-event to this.elem\n this.setState({ isOpen: true });\n this.props.open();\n }\n close() {\n this.onClose(); // must be first to get access to dialog's content from outside\n this.setState({ isOpen: false });\n this.props.close();\n }\n render() {\n const { modal, animated, pinned, \"data-testid\": testId } = this.props;\n let { className } = this.props;\n className = Object(_utils__WEBPACK_IMPORTED_MODULE_6__[\"cssNames\"])(\"Dialog flex center\", className, { modal, pinned });\n let dialog = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: className, onClick: _utils__WEBPACK_IMPORTED_MODULE_6__[\"stopPropagation\"], ref: this.ref, \"data-testid\": testId },\n react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box\", ref: e => this.contentElem = e }, this.props.children)));\n if (animated) {\n dialog = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_animate__WEBPACK_IMPORTED_MODULE_5__[\"Animate\"], { enter: this.isOpen, name: \"opacity-scale\" }, dialog));\n }\n else if (!this.isOpen) {\n return null;\n }\n return Object(react_dom__WEBPACK_IMPORTED_MODULE_2__[\"createPortal\"])(dialog, document.body);\n }\n};\nObject.defineProperty(Dialog, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n isOpen: false,\n open: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n close: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n onOpen: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n onClose: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n modal: true,\n animated: true,\n pinned: false,\n }\n});\n__decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"disposeOnUnmount\"],\n __metadata(\"design:type\", Object)\n], Dialog.prototype, \"closeOnNavigate\", void 0);\nDialog = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"observer\"]\n], Dialog);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/dialog/dialog.tsx?");
41300
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dialog\", function() { return Dialog; });\n/* harmony import */ var _dialog_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dialog.scss */ \"./src/renderer/components/dialog/dialog.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _animate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../animate */ \"./src/renderer/components/animate/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../navigation */ \"./src/renderer/navigation/index.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};\n\n\n\n\n\n\n\n\nlet Dialog = class Dialog extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"contentElem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ref\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef()\n });\n Object.defineProperty(this, \"state\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n isOpen: this.props.isOpen,\n }\n });\n Object.defineProperty(this, \"onOpen\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.props.onOpen();\n if (!this.props.pinned) {\n if (this.elem)\n this.elem.addEventListener(\"click\", this.onClickOutside);\n // Using document.body target to handle keydown event before Drawer does\n document.body.addEventListener(\"keydown\", this.onEscapeKey);\n }\n }\n });\n Object.defineProperty(this, \"onClose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.props.onClose();\n if (!this.props.pinned) {\n if (this.elem)\n this.elem.removeEventListener(\"click\", this.onClickOutside);\n document.body.removeEventListener(\"keydown\", this.onEscapeKey);\n }\n }\n });\n Object.defineProperty(this, \"onEscapeKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const escapeKey = evt.code === \"Escape\";\n if (escapeKey) {\n this.close();\n evt.stopPropagation();\n }\n }\n });\n Object.defineProperty(this, \"onClickOutside\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (evt) => {\n const target = evt.target;\n if (!this.contentElem.contains(target)) {\n this.close();\n evt.stopPropagation();\n }\n }\n });\n }\n get elem() {\n return this.ref.current;\n }\n get isOpen() {\n return this.state.isOpen;\n }\n componentDidMount() {\n if (this.isOpen) {\n this.onOpen();\n }\n Object(mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"disposeOnUnmount\"])(this, [\n Object(mobx__WEBPACK_IMPORTED_MODULE_4__[\"reaction\"])(() => _navigation__WEBPACK_IMPORTED_MODULE_7__[\"navigation\"].toString(), () => this.close()),\n ]);\n }\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n this.toggle(isOpen);\n }\n }\n componentWillUnmount() {\n if (this.isOpen)\n this.onClose();\n }\n toggle(isOpen) {\n if (isOpen)\n this.open();\n else\n this.close();\n }\n open() {\n requestAnimationFrame(this.onOpen); // wait for render(), bind close-event to this.elem\n this.setState({ isOpen: true });\n this.props.open();\n }\n close() {\n this.onClose(); // must be first to get access to dialog's content from outside\n this.setState({ isOpen: false });\n this.props.close();\n }\n render() {\n const { modal, animated, pinned, \"data-testid\": testId } = this.props;\n let { className } = this.props;\n className = Object(_utils__WEBPACK_IMPORTED_MODULE_6__[\"cssNames\"])(\"Dialog flex center\", className, { modal, pinned });\n let dialog = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: className, onClick: _utils__WEBPACK_IMPORTED_MODULE_6__[\"stopPropagation\"], ref: this.ref, \"data-testid\": testId },\n react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box\", ref: e => this.contentElem = e }, this.props.children)));\n if (animated) {\n dialog = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_animate__WEBPACK_IMPORTED_MODULE_5__[\"Animate\"], { enter: this.isOpen, name: \"opacity-scale\" }, dialog));\n }\n else if (!this.isOpen) {\n return null;\n }\n return Object(react_dom__WEBPACK_IMPORTED_MODULE_2__[\"createPortal\"])(dialog, document.body);\n }\n};\nObject.defineProperty(Dialog, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n isOpen: false,\n open: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n close: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n onOpen: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n onClose: _utils__WEBPACK_IMPORTED_MODULE_6__[\"noop\"],\n modal: true,\n animated: true,\n pinned: false,\n }\n});\nDialog = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"observer\"]\n], Dialog);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/dialog/dialog.tsx?");
41396
41301
 
41397
41302
  /***/ }),
41398
41303
 
@@ -41464,7 +41369,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ogr
41464
41369
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41465
41370
 
41466
41371
  "use strict";
41467
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TabKind\", function() { return TabKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DockStore\", function() { return DockStore; });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid */ \"./node_modules/uuid/dist/esm-browser/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_3__);\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};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\nvar TabKind;\n(function (TabKind) {\n TabKind[\"TERMINAL\"] = \"terminal\";\n TabKind[\"CREATE_RESOURCE\"] = \"create-resource\";\n TabKind[\"EDIT_RESOURCE\"] = \"edit-resource\";\n TabKind[\"INSTALL_CHART\"] = \"install-chart\";\n TabKind[\"UPGRADE_CHART\"] = \"upgrade-chart\";\n TabKind[\"POD_LOGS\"] = \"pod-logs\";\n})(TabKind || (TabKind = {}));\nclass DockStore {\n constructor(dependencies) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"minHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 100\n });\n Object.defineProperty(this, \"fullSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"createTab\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (rawTabDesc, addNumber = true) => {\n const { id = uuid__WEBPACK_IMPORTED_MODULE_0__[\"v4\"](), kind, pinned = false } = rawTabDesc, restOfTabFields = __rest(rawTabDesc, [\"id\", \"kind\", \"pinned\"]);\n let { title = kind } = rawTabDesc;\n if (addNumber) {\n const tabNumber = this.getNewTabNumber(kind);\n if (tabNumber > 1) {\n title += ` (${tabNumber})`;\n }\n }\n const tab = Object.assign(Object.assign({}, restOfTabFields), { id,\n kind,\n pinned,\n title });\n this.tabs.push(tab);\n this.selectTab(tab.id);\n this.open();\n return tab;\n }\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"autoBind\"])(this);\n this.init();\n }\n get whenReady() {\n return this.dependencies.storage.whenReady;\n }\n get isOpen() {\n return this.dependencies.storage.value.isOpen;\n }\n set isOpen(isOpen) {\n this.dependencies.storage.merge({ isOpen });\n }\n get height() {\n return this.dependencies.storage.value.height;\n }\n set height(height) {\n this.dependencies.storage.merge({\n height: Math.max(this.minHeight, Math.min(height || this.minHeight, this.maxHeight)),\n });\n }\n get tabs() {\n return this.dependencies.storage.value.tabs;\n }\n set tabs(tabs) {\n this.dependencies.storage.merge({ tabs });\n }\n get selectedTabId() {\n var _a;\n const storageData = this.dependencies.storage.value;\n return (storageData.selectedTabId ||\n (this.tabs.length > 0 ? (_a = this.tabs[0]) === null || _a === void 0 ? void 0 : _a.id : undefined));\n }\n set selectedTabId(tabId) {\n if (tabId && !this.getTabById(tabId))\n return; // skip invalid ids\n this.dependencies.storage.merge({ selectedTabId: tabId });\n }\n get selectedTab() {\n return this.tabs.find(tab => tab.id === this.selectedTabId);\n }\n init() {\n // adjust terminal height if window size changes\n window.addEventListener(\"resize\", lodash_throttle__WEBPACK_IMPORTED_MODULE_3___default()(this.adjustHeight, 250));\n }\n get maxHeight() {\n const mainLayoutHeader = 40;\n const mainLayoutTabs = 33;\n const mainLayoutMargin = 16;\n const dockTabs = 33;\n const preferredMax = window.innerHeight - mainLayoutHeader - mainLayoutTabs - mainLayoutMargin - dockTabs;\n return Math.max(preferredMax, this.minHeight); // don't let max < min\n }\n adjustHeight() {\n if (this.height < this.minHeight)\n this.height = this.minHeight;\n if (this.height > this.maxHeight)\n this.height = this.maxHeight;\n }\n onResize(callback, opts = {}) {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => [this.height, this.fullSize], callback, {\n fireImmediately: opts.fireImmediately,\n });\n }\n onTabClose(callback, opts = {}) {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.tabs.map(tab => tab.id), (tabs, prevTabs) => {\n if (!Array.isArray(prevTabs)) {\n return; // tabs not yet modified\n }\n const closedTabs = prevTabs.filter(id => !tabs.includes(id));\n if (closedTabs.length > 0) {\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"runInAction\"])(() => {\n closedTabs.forEach(tabId => callback({ tabId }));\n });\n }\n }, {\n equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural,\n fireImmediately: opts.fireImmediately,\n });\n }\n onTabChange(callback, options = {}) {\n const { tabKind, dockIsVisible = true } = options, reactionOpts = __rest(options, [\"tabKind\", \"dockIsVisible\"]);\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.selectedTab, ((tab, prevTab) => {\n if (!tab)\n return; // skip when dock is empty\n if (tabKind && tabKind !== tab.kind)\n return; // handle specific tab.kind only\n if (dockIsVisible && !this.isOpen)\n return;\n callback({\n tab, prevTab,\n tabId: tab.id,\n });\n }), reactionOpts);\n }\n hasTabs() {\n return this.tabs.length > 0;\n }\n open(fullSize) {\n this.isOpen = true;\n if (typeof fullSize === \"boolean\") {\n this.fullSize = fullSize;\n }\n }\n close() {\n this.isOpen = false;\n }\n toggle() {\n if (this.isOpen)\n this.close();\n else\n this.open();\n }\n toggleFillSize() {\n if (!this.isOpen)\n this.open();\n this.fullSize = !this.fullSize;\n }\n getTabById(tabId) {\n return this.tabs.find(tab => tab.id === tabId);\n }\n getTabIndex(tabId) {\n return this.tabs.findIndex(tab => tab.id === tabId);\n }\n getNewTabNumber(kind) {\n const tabNumbers = this.tabs\n .filter(tab => tab.kind === kind)\n .map(tab => {\n const tabNumber = +tab.title.match(/\\d+/);\n return tabNumber === 0 ? 1 : tabNumber; // tab without a number is first\n });\n for (let i = 1;; i++) {\n if (!tabNumbers.includes(i))\n return i;\n }\n }\n closeTab(tabId) {\n const tab = this.getTabById(tabId);\n if (!tab || tab.pinned) {\n return;\n }\n this.tabs = this.tabs.filter(tab => tab.id !== tabId);\n if (this.selectedTabId === tab.id) {\n if (this.tabs.length) {\n const newTab = this.tabs.slice(-1)[0]; // last\n this.selectTab(newTab.id);\n }\n else {\n this.selectedTabId = null;\n this.close();\n }\n }\n }\n closeTabs(tabs) {\n tabs.forEach(tab => this.closeTab(tab.id));\n }\n closeAllTabs() {\n this.closeTabs([...this.tabs]);\n }\n closeOtherTabs(tabId) {\n const index = this.getTabIndex(tabId);\n const tabs = [...this.tabs.slice(0, index), ...this.tabs.slice(index + 1)];\n this.closeTabs(tabs);\n }\n closeTabsToTheRight(tabId) {\n const index = this.getTabIndex(tabId);\n const tabs = this.tabs.slice(index + 1);\n this.closeTabs(tabs);\n }\n renameTab(tabId, title) {\n const tab = this.getTabById(tabId);\n tab.title = title;\n }\n selectTab(tabId) {\n var _a, _b;\n this.selectedTabId = (_b = (_a = this.getTabById(tabId)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;\n }\n reset() {\n var _a;\n (_a = this.dependencies.storage) === null || _a === void 0 ? void 0 : _a.reset();\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], DockStore.prototype, \"fullSize\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DockStore.prototype, \"isOpen\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DockStore.prototype, \"height\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DockStore.prototype, \"tabs\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], DockStore.prototype, \"selectedTabId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], DockStore.prototype, \"selectedTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Boolean]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"open\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"close\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"toggle\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"toggleFillSize\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Object)\n], DockStore.prototype, \"createTab\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"closeTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"selectTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"reset\", null);\n\n\n//# sourceURL=webpack:///./src/renderer/components/dock/dock-store/dock.store.ts?");
41372
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TabKind\", function() { return TabKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DockStore\", function() { return DockStore; });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid */ \"./node_modules/uuid/dist/esm-browser/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_3__);\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};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\nvar TabKind;\n(function (TabKind) {\n TabKind[\"TERMINAL\"] = \"terminal\";\n TabKind[\"CREATE_RESOURCE\"] = \"create-resource\";\n TabKind[\"EDIT_RESOURCE\"] = \"edit-resource\";\n TabKind[\"INSTALL_CHART\"] = \"install-chart\";\n TabKind[\"UPGRADE_CHART\"] = \"upgrade-chart\";\n TabKind[\"POD_LOGS\"] = \"pod-logs\";\n})(TabKind || (TabKind = {}));\nclass DockStore {\n constructor(dependencies) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"minHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 100\n });\n Object.defineProperty(this, \"fullSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"createTab\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"])((rawTabDesc, addNumber = true) => {\n const { id = uuid__WEBPACK_IMPORTED_MODULE_0__[\"v4\"](), kind, pinned = false } = rawTabDesc, restOfTabFields = __rest(rawTabDesc, [\"id\", \"kind\", \"pinned\"]);\n let { title = kind } = rawTabDesc;\n if (addNumber) {\n const tabNumber = this.getNewTabNumber(kind);\n if (tabNumber > 1) {\n title += ` (${tabNumber})`;\n }\n }\n const tab = Object.assign(Object.assign({}, restOfTabFields), { id,\n kind,\n pinned,\n title });\n this.tabs.push(tab);\n this.selectTab(tab.id);\n this.open();\n return tab;\n })\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"makeObservable\"])(this);\n Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"autoBind\"])(this);\n this.init();\n }\n get whenReady() {\n return this.dependencies.storage.whenReady;\n }\n get isOpen() {\n return this.dependencies.storage.value.isOpen;\n }\n set isOpen(isOpen) {\n this.dependencies.storage.merge({ isOpen });\n }\n get height() {\n return this.dependencies.storage.value.height;\n }\n set height(height) {\n this.dependencies.storage.merge({\n height: Math.max(this.minHeight, Math.min(height || this.minHeight, this.maxHeight)),\n });\n }\n get tabs() {\n return this.dependencies.storage.value.tabs;\n }\n set tabs(tabs) {\n this.dependencies.storage.merge({ tabs });\n }\n get selectedTabId() {\n var _a;\n const storageData = this.dependencies.storage.value;\n return (storageData.selectedTabId ||\n (this.tabs.length > 0 ? (_a = this.tabs[0]) === null || _a === void 0 ? void 0 : _a.id : undefined));\n }\n set selectedTabId(tabId) {\n if (tabId && !this.getTabById(tabId))\n return; // skip invalid ids\n this.dependencies.storage.merge({ selectedTabId: tabId });\n }\n get selectedTab() {\n return this.tabs.find(tab => tab.id === this.selectedTabId);\n }\n init() {\n // adjust terminal height if window size changes\n window.addEventListener(\"resize\", lodash_throttle__WEBPACK_IMPORTED_MODULE_3___default()(this.adjustHeight, 250));\n }\n get maxHeight() {\n const mainLayoutHeader = 40;\n const mainLayoutTabs = 33;\n const mainLayoutMargin = 16;\n const dockTabs = 33;\n const preferredMax = window.innerHeight - mainLayoutHeader - mainLayoutTabs - mainLayoutMargin - dockTabs;\n return Math.max(preferredMax, this.minHeight); // don't let max < min\n }\n adjustHeight() {\n if (this.height < this.minHeight)\n this.height = this.minHeight;\n if (this.height > this.maxHeight)\n this.height = this.maxHeight;\n }\n onResize(callback, opts = {}) {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => [this.height, this.fullSize], callback, {\n fireImmediately: opts.fireImmediately,\n });\n }\n onTabClose(callback, opts = {}) {\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.tabs.map(tab => tab.id), (tabs, prevTabs) => {\n if (!Array.isArray(prevTabs)) {\n return; // tabs not yet modified\n }\n const closedTabs = prevTabs.filter(id => !tabs.includes(id));\n if (closedTabs.length > 0) {\n Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"runInAction\"])(() => {\n closedTabs.forEach(tabId => callback({ tabId }));\n });\n }\n }, {\n equals: mobx__WEBPACK_IMPORTED_MODULE_1__[\"comparer\"].structural,\n fireImmediately: opts.fireImmediately,\n });\n }\n onTabChange(callback, options = {}) {\n const { tabKind, dockIsVisible = true } = options, reactionOpts = __rest(options, [\"tabKind\", \"dockIsVisible\"]);\n return Object(mobx__WEBPACK_IMPORTED_MODULE_1__[\"reaction\"])(() => this.selectedTab, ((tab, prevTab) => {\n if (!tab)\n return; // skip when dock is empty\n if (tabKind && tabKind !== tab.kind)\n return; // handle specific tab.kind only\n if (dockIsVisible && !this.isOpen)\n return;\n callback({\n tab, prevTab,\n tabId: tab.id,\n });\n }), reactionOpts);\n }\n hasTabs() {\n return this.tabs.length > 0;\n }\n open(fullSize) {\n this.isOpen = true;\n if (typeof fullSize === \"boolean\") {\n this.fullSize = fullSize;\n }\n }\n close() {\n this.isOpen = false;\n }\n toggle() {\n if (this.isOpen)\n this.close();\n else\n this.open();\n }\n toggleFillSize() {\n if (!this.isOpen)\n this.open();\n this.fullSize = !this.fullSize;\n }\n getTabById(tabId) {\n return this.tabs.find(tab => tab.id === tabId);\n }\n getTabIndex(tabId) {\n return this.tabs.findIndex(tab => tab.id === tabId);\n }\n getNewTabNumber(kind) {\n const tabNumbers = this.tabs\n .filter(tab => tab.kind === kind)\n .map(tab => {\n const tabNumber = +tab.title.match(/\\d+/);\n return tabNumber === 0 ? 1 : tabNumber; // tab without a number is first\n });\n for (let i = 1;; i++) {\n if (!tabNumbers.includes(i))\n return i;\n }\n }\n closeTab(tabId) {\n const tab = this.getTabById(tabId);\n if (!tab || tab.pinned) {\n return;\n }\n this.tabs = this.tabs.filter(tab => tab.id !== tabId);\n if (this.selectedTabId === tab.id) {\n if (this.tabs.length) {\n const newTab = this.tabs.slice(-1)[0]; // last\n this.selectTab(newTab.id);\n }\n else {\n this.selectedTabId = null;\n this.close();\n }\n }\n }\n closeTabs(tabs) {\n tabs.forEach(tab => this.closeTab(tab.id));\n }\n closeAllTabs() {\n this.closeTabs([...this.tabs]);\n }\n closeOtherTabs(tabId) {\n const index = this.getTabIndex(tabId);\n const tabs = [...this.tabs.slice(0, index), ...this.tabs.slice(index + 1)];\n this.closeTabs(tabs);\n }\n closeTabsToTheRight(tabId) {\n const index = this.getTabIndex(tabId);\n const tabs = this.tabs.slice(index + 1);\n this.closeTabs(tabs);\n }\n renameTab(tabId, title) {\n const tab = this.getTabById(tabId);\n tab.title = title;\n }\n selectTab(tabId) {\n var _a, _b;\n this.selectedTabId = (_b = (_a = this.getTabById(tabId)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;\n }\n reset() {\n var _a;\n (_a = this.dependencies.storage) === null || _a === void 0 ? void 0 : _a.reset();\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"observable\"],\n __metadata(\"design:type\", Object)\n], DockStore.prototype, \"fullSize\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DockStore.prototype, \"isOpen\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DockStore.prototype, \"height\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DockStore.prototype, \"tabs\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], DockStore.prototype, \"selectedTabId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], DockStore.prototype, \"selectedTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Boolean]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"open\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"close\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"toggle\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"toggleFillSize\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"closeTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"selectTab\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_1__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], DockStore.prototype, \"reset\", null);\n\n\n//# sourceURL=webpack:///./src/renderer/components/dock/dock-store/dock.store.ts?");
41468
41373
 
41469
41374
  /***/ }),
41470
41375
 
@@ -41811,7 +41716,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
41811
41716
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41812
41717
 
41813
41718
  "use strict";
41814
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Icon\", function() { return Icon; });\n/* harmony import */ var _icon_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icon.scss */ \"./src/renderer/components/icon/icon.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../tooltip */ \"./src/renderer/components/tooltip/index.ts\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isNumber */ \"./node_modules/lodash/isNumber.js\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isNumber__WEBPACK_IMPORTED_MODULE_6__);\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};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\nlet Icon = class Icon extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n get isInteractive() {\n const { interactive, onClick, href, link } = this.props;\n return interactive !== null && interactive !== void 0 ? interactive : !!(onClick || href || link);\n }\n onClick(evt) {\n if (this.props.disabled) {\n return;\n }\n if (this.props.onClick) {\n this.props.onClick(evt);\n }\n }\n onKeyDown(evt) {\n switch (evt.nativeEvent.code) {\n case \"Space\":\n // fallthrough\n case \"Enter\": {\n // eslint-disable-next-line react/no-find-dom-node\n const icon = Object(react_dom__WEBPACK_IMPORTED_MODULE_2__[\"findDOMNode\"])(this);\n setTimeout(() => icon.click());\n evt.preventDefault();\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(evt);\n }\n }\n render() {\n const { isInteractive } = this;\n const _a = this.props, { \n // skip passing props to icon's html element\n className, href, link, material, svg, size, smallest, small, big, disabled, sticker, active, focusable, children, interactive: _interactive, onClick: _onClick, onKeyDown: _onKeyDown } = _a, elemProps = __rest(_a, [\"className\", \"href\", \"link\", \"material\", \"svg\", \"size\", \"smallest\", \"small\", \"big\", \"disabled\", \"sticker\", \"active\", \"focusable\", \"children\", \"interactive\", \"onClick\", \"onKeyDown\"]);\n let iconContent;\n const iconProps = Object.assign({ className: Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"cssNames\"])(\"Icon\", className, { svg, material, interactive: isInteractive, disabled, sticker, active, focusable }, !size ? { smallest, small, big } : {}), onClick: isInteractive ? this.onClick : undefined, onKeyDown: isInteractive ? this.onKeyDown : undefined, tabIndex: isInteractive && focusable && !disabled ? 0 : undefined, style: size ? { \"--size\": size + (lodash_isNumber__WEBPACK_IMPORTED_MODULE_6___default()(size) ? \"px\" : \"\") } : undefined }, elemProps);\n // render as inline svg-icon\n if (typeof svg === \"string\") {\n const svgIconText = svg.includes(\"<svg\") ? svg : __webpack_require__(\"./src/renderer/components/icon sync recursive ./!./!./node_modules/raw-loader/dist/cjs.js!./ ^\\\\.\\\\/.*\\\\.svg$\")(`./${svg}.svg`).default;\n iconContent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", { className: \"icon\", dangerouslySetInnerHTML: { __html: svgIconText } });\n }\n // render as material-icon\n if (typeof material === \"string\") {\n iconContent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", { className: \"icon\", \"data-icon-name\": material }, material);\n }\n // wrap icon's content passed from decorator\n iconProps.children = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null,\n iconContent,\n children));\n // render icon type\n if (link) {\n const { className, children } = iconProps;\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"NavLink\"], { className: className, to: link }, children));\n }\n if (href) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", Object.assign({}, iconProps, { href: href }));\n }\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"i\", Object.assign({}, iconProps));\n }\n};\nObject.defineProperty(Icon, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n focusable: true,\n }\n});\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__[\"boundMethod\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Icon.prototype, \"onClick\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__[\"boundMethod\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Icon.prototype, \"onKeyDown\", null);\nIcon = __decorate([\n _tooltip__WEBPACK_IMPORTED_MODULE_5__[\"withTooltip\"]\n], Icon);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/icon/icon.tsx?");
41719
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Icon\", function() { return Icon; });\n/* harmony import */ var _icon_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icon.scss */ \"./src/renderer/components/icon/icon.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../tooltip */ \"./src/renderer/components/tooltip/index.ts\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isNumber */ \"./node_modules/lodash/isNumber.js\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isNumber__WEBPACK_IMPORTED_MODULE_5__);\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};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\nlet Icon = class Icon extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"ref\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(react__WEBPACK_IMPORTED_MODULE_1__[\"createRef\"])()\n });\n }\n get isInteractive() {\n const { interactive, onClick, href, link } = this.props;\n return interactive !== null && interactive !== void 0 ? interactive : !!(onClick || href || link);\n }\n onClick(evt) {\n if (this.props.disabled) {\n return;\n }\n if (this.props.onClick) {\n this.props.onClick(evt);\n }\n }\n onKeyDown(evt) {\n var _a;\n switch (evt.nativeEvent.code) {\n case \"Space\":\n // fallthrough\n case \"Enter\": {\n (_a = this.ref.current) === null || _a === void 0 ? void 0 : _a.click();\n evt.preventDefault();\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(evt);\n }\n }\n render() {\n const { isInteractive } = this;\n const _a = this.props, { \n // skip passing props to icon's html element\n className, href, link, material, svg, size, smallest, small, big, disabled, sticker, active, focusable, children, interactive: _interactive, onClick: _onClick, onKeyDown: _onKeyDown } = _a, elemProps = __rest(_a, [\"className\", \"href\", \"link\", \"material\", \"svg\", \"size\", \"smallest\", \"small\", \"big\", \"disabled\", \"sticker\", \"active\", \"focusable\", \"children\", \"interactive\", \"onClick\", \"onKeyDown\"]);\n let iconContent;\n const iconProps = Object.assign({ className: Object(_utils__WEBPACK_IMPORTED_MODULE_3__[\"cssNames\"])(\"Icon\", className, { svg, material, interactive: isInteractive, disabled, sticker, active, focusable }, !size ? { smallest, small, big } : {}), onClick: isInteractive ? this.onClick : undefined, onKeyDown: isInteractive ? this.onKeyDown : undefined, tabIndex: isInteractive && focusable && !disabled ? 0 : undefined, style: size ? { \"--size\": size + (lodash_isNumber__WEBPACK_IMPORTED_MODULE_5___default()(size) ? \"px\" : \"\") } : undefined }, elemProps);\n // render as inline svg-icon\n if (typeof svg === \"string\") {\n const svgIconText = svg.includes(\"<svg\") ? svg : __webpack_require__(\"./src/renderer/components/icon sync recursive ./!./!./node_modules/raw-loader/dist/cjs.js!./ ^\\\\.\\\\/.*\\\\.svg$\")(`./${svg}.svg`).default;\n iconContent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", { className: \"icon\", dangerouslySetInnerHTML: { __html: svgIconText } });\n }\n // render as material-icon\n if (typeof material === \"string\") {\n iconContent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", { className: \"icon\", \"data-icon-name\": material }, material);\n }\n // wrap icon's content passed from decorator\n iconProps.children = (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null,\n iconContent,\n children));\n // render icon type\n if (link) {\n const { className, children } = iconProps;\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__[\"NavLink\"], { className: className, to: link, ref: this.ref }, children));\n }\n if (href) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", Object.assign({}, iconProps, { href: href, ref: this.ref }));\n }\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"i\", Object.assign({}, iconProps, { ref: this.ref }));\n }\n};\nObject.defineProperty(Icon, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n focusable: true,\n }\n});\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_3__[\"boundMethod\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Icon.prototype, \"onClick\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_3__[\"boundMethod\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Icon.prototype, \"onKeyDown\", null);\nIcon = __decorate([\n _tooltip__WEBPACK_IMPORTED_MODULE_4__[\"withTooltip\"]\n], Icon);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/icon/icon.tsx?");
41815
41720
 
41816
41721
  /***/ }),
41817
41722
 
@@ -41919,7 +41824,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
41919
41824
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41920
41825
 
41921
41826
  "use strict";
41922
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"searchUrlParam\", function() { return searchUrlParam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SearchInputUrl\", function() { return SearchInputUrl; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _search_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./search-input */ \"./src/renderer/components/input/search-input.tsx\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../navigation */ \"./src/renderer/navigation/index.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\nconst searchUrlParam = Object(_navigation__WEBPACK_IMPORTED_MODULE_5__[\"createPageParam\"])({\n name: \"search\",\n defaultValue: \"\",\n});\nlet SearchInputUrl = class SearchInputUrl extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"inputVal\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"\"\n }); // fix: use empty string on init to avoid react warnings\n Object.defineProperty(this, \"updateInput\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"autorun\"])(() => this.inputVal = searchUrlParam.get())\n });\n Object.defineProperty(this, \"updateUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default()((val) => searchUrlParam.set(val), 250)\n });\n Object.defineProperty(this, \"setValue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (value) => {\n this.inputVal = value;\n this.updateUrl(value);\n }\n });\n Object.defineProperty(this, \"clear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.setValue(\"\");\n this.updateUrl.flush();\n }\n });\n Object.defineProperty(this, \"onChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (val, evt) => {\n this.setValue(val);\n if (this.props.onChange) {\n this.props.onChange(val, evt);\n }\n }\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"makeObservable\"])(this);\n }\n render() {\n const { inputVal } = this;\n return (react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_input__WEBPACK_IMPORTED_MODULE_4__[\"SearchInput\"], Object.assign({ value: inputVal, onChange: this.onChange, onClear: this.clear }, this.props)));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], SearchInputUrl.prototype, \"inputVal\", void 0);\n__decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"disposeOnUnmount\"],\n __metadata(\"design:type\", Object)\n], SearchInputUrl.prototype, \"updateInput\", void 0);\nSearchInputUrl = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], SearchInputUrl);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/input/search-input-url.tsx?");
41827
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"searchUrlParam\", function() { return searchUrlParam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SearchInputUrl\", function() { return SearchInputUrl; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _search_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./search-input */ \"./src/renderer/components/input/search-input.tsx\");\n/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../navigation */ \"./src/renderer/navigation/index.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\nconst searchUrlParam = Object(_navigation__WEBPACK_IMPORTED_MODULE_5__[\"createPageParam\"])({\n name: \"search\",\n defaultValue: \"\",\n});\nlet SearchInputUrl = class SearchInputUrl extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"inputVal\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"\"\n }); // fix: use empty string on init to avoid react warnings\n Object.defineProperty(this, \"updateUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default()((val) => searchUrlParam.set(val), 250)\n });\n Object.defineProperty(this, \"setValue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (value) => {\n this.inputVal = value;\n this.updateUrl(value);\n }\n });\n Object.defineProperty(this, \"clear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.setValue(\"\");\n this.updateUrl.flush();\n }\n });\n Object.defineProperty(this, \"onChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (val, evt) => {\n this.setValue(val);\n if (this.props.onChange) {\n this.props.onChange(val, evt);\n }\n }\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"makeObservable\"])(this);\n }\n componentDidMount() {\n Object(mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"disposeOnUnmount\"])(this, [\n Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"autorun\"])(() => this.inputVal = searchUrlParam.get()),\n ]);\n }\n render() {\n const { inputVal } = this;\n return (react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_input__WEBPACK_IMPORTED_MODULE_4__[\"SearchInput\"], Object.assign({ value: inputVal, onChange: this.onChange, onClear: this.clear }, this.props)));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], SearchInputUrl.prototype, \"inputVal\", void 0);\nSearchInputUrl = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_3__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], SearchInputUrl);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/input/search-input-url.tsx?");
41923
41828
 
41924
41829
  /***/ }),
41925
41830
 
@@ -42087,7 +41992,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
42087
41992
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
42088
41993
 
42089
41994
  "use strict";
42090
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectDetails\", function() { return KubeObjectDetails; });\n/* harmony import */ var _kube_object_details_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-object-details.scss */ \"./src/renderer/components/kube-object-details/kube-object-details.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _drawer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../drawer */ \"./src/renderer/components/drawer/index.ts\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../spinner */ \"./src/renderer/components/spinner/index.ts\");\n/* harmony import */ var _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/k8s-api/api-manager */ \"./src/common/k8s-api/api-manager.ts\");\n/* harmony import */ var _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../+custom-resources/crd.store */ \"./src/renderer/components/+custom-resources/crd.store.ts\");\n/* harmony import */ var _kube_object_menu__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../kube-object-menu */ \"./src/renderer/components/kube-object-menu/index.ts\");\n/* harmony import */ var _api_kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../api/kube-object-detail-registry */ \"./src/renderer/api/kube-object-detail-registry.ts\");\n/* harmony import */ var _custom_resources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../+custom-resources */ \"./src/renderer/components/+custom-resources/index.ts\");\n/* harmony import */ var _kube_object_meta__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../kube-object-meta */ \"./src/renderer/components/kube-object-meta/index.ts\");\n/* harmony import */ var _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../kube-detail-params */ \"./src/renderer/components/kube-detail-params/index.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\n\nlet KubeObjectDetails = class KubeObjectDetails extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"isLoading\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"loadingError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"loader\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => [\n this.path,\n this.object,\n _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__[\"crdStore\"].items.length, // crd stores initialized after loading\n ], async () => {\n this.loadingError = \"\";\n const { path, object } = this;\n if (!object) {\n const store = _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__[\"apiManager\"].getStore(path);\n if (store) {\n this.isLoading = true;\n try {\n await store.loadFromPath(path);\n }\n catch (err) {\n this.loadingError = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null,\n \"Resource loading has failed: \",\n react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"b\", null, err.toString()));\n }\n finally {\n this.isLoading = false;\n }\n }\n }\n })\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"makeObservable\"])(this);\n }\n get path() {\n return _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"kubeDetailsUrlParam\"].get();\n }\n get object() {\n var _a;\n try {\n return (_a = _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__[\"apiManager\"]\n .getStore(this.path)) === null || _a === void 0 ? void 0 : _a.getByPath(this.path);\n }\n catch (error) {\n console.error(`[KUBE-OBJECT-DETAILS]: failed to get store or object: ${error}`, { path: this.path });\n return undefined;\n }\n }\n render() {\n const { object, isLoading, loadingError } = this;\n const isOpen = !!(object || isLoading || loadingError);\n if (!object) {\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_drawer__WEBPACK_IMPORTED_MODULE_4__[\"Drawer\"], { className: \"KubeObjectDetails flex column\", open: isOpen, title: \"\", toolbar: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_menu__WEBPACK_IMPORTED_MODULE_8__[\"KubeObjectMenu\"], { object: object, toolbar: true }), onClose: _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"hideDetails\"] },\n isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], { center: true }),\n loadingError && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box center\" }, loadingError)));\n }\n const { kind, getName } = object;\n const title = `${kind}: ${getName()}`;\n const details = _api_kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_9__[\"KubeObjectDetailRegistry\"]\n .getInstance()\n .getItemsForKind(object.kind, object.apiVersion)\n .map((item, index) => (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(item.components.Details, { object: object, key: `object-details-${index}` })));\n if (details.length === 0) {\n const crd = _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__[\"crdStore\"].getByObject(object);\n /**\n * This is a fallback so that if a custom resource object doesn't have\n * any defined details we should try and display at least some details\n */\n if (crd) {\n details.push(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_custom_resources__WEBPACK_IMPORTED_MODULE_10__[\"CrdResourceDetails\"], { key: object.getId(), object: object, crd: crd }));\n }\n }\n if (details.length === 0) {\n // if we still don't have any details to show, just show the standard object metadata\n details.push(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_meta__WEBPACK_IMPORTED_MODULE_11__[\"KubeObjectMeta\"], { key: object.getId(), object: object }));\n }\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_drawer__WEBPACK_IMPORTED_MODULE_4__[\"Drawer\"], { className: \"KubeObjectDetails flex column\", open: isOpen, title: title, toolbar: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_menu__WEBPACK_IMPORTED_MODULE_8__[\"KubeObjectMenu\"], { object: object, toolbar: true }), onClose: _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"hideDetails\"] },\n isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], { center: true }),\n loadingError && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box center\" }, loadingError),\n details));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], KubeObjectDetails.prototype, \"isLoading\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", Object)\n], KubeObjectDetails.prototype, \"loadingError\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], KubeObjectDetails.prototype, \"path\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], KubeObjectDetails.prototype, \"object\", null);\n__decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"disposeOnUnmount\"],\n __metadata(\"design:type\", Object)\n], KubeObjectDetails.prototype, \"loader\", void 0);\nKubeObjectDetails = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], KubeObjectDetails);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/kube-object-details/kube-object-details.tsx?");
41995
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KubeObjectDetails\", function() { return KubeObjectDetails; });\n/* harmony import */ var _kube_object_details_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-object-details.scss */ \"./src/renderer/components/kube-object-details/kube-object-details.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _drawer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../drawer */ \"./src/renderer/components/drawer/index.ts\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../spinner */ \"./src/renderer/components/spinner/index.ts\");\n/* harmony import */ var _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/k8s-api/api-manager */ \"./src/common/k8s-api/api-manager.ts\");\n/* harmony import */ var _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../+custom-resources/crd.store */ \"./src/renderer/components/+custom-resources/crd.store.ts\");\n/* harmony import */ var _kube_object_menu__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../kube-object-menu */ \"./src/renderer/components/kube-object-menu/index.ts\");\n/* harmony import */ var _api_kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../api/kube-object-detail-registry */ \"./src/renderer/api/kube-object-detail-registry.ts\");\n/* harmony import */ var _custom_resources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../+custom-resources */ \"./src/renderer/components/+custom-resources/index.ts\");\n/* harmony import */ var _kube_object_meta__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../kube-object-meta */ \"./src/renderer/components/kube-object-meta/index.ts\");\n/* harmony import */ var _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../kube-detail-params */ \"./src/renderer/components/kube-detail-params/index.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\n\nlet KubeObjectDetails = class KubeObjectDetails extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"isLoading\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"loadingError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"makeObservable\"])(this);\n }\n get path() {\n return _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"kubeDetailsUrlParam\"].get();\n }\n get object() {\n var _a;\n try {\n return (_a = _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__[\"apiManager\"]\n .getStore(this.path)) === null || _a === void 0 ? void 0 : _a.getByPath(this.path);\n }\n catch (error) {\n console.error(`[KUBE-OBJECT-DETAILS]: failed to get store or object: ${error}`, { path: this.path });\n return undefined;\n }\n }\n componentDidMount() {\n Object(mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"disposeOnUnmount\"])(this, [\n Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => [\n this.path,\n this.object,\n _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__[\"crdStore\"].items.length, // crd stores initialized after loading\n ], async () => {\n this.loadingError = \"\";\n const { path, object } = this;\n if (!object) {\n const store = _common_k8s_api_api_manager__WEBPACK_IMPORTED_MODULE_6__[\"apiManager\"].getStore(path);\n if (store) {\n this.isLoading = true;\n try {\n await store.loadFromPath(path);\n }\n catch (err) {\n this.loadingError = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null,\n \"Resource loading has failed: \",\n react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"b\", null, err.toString()));\n }\n finally {\n this.isLoading = false;\n }\n }\n }\n }),\n ]);\n }\n render() {\n const { object, isLoading, loadingError } = this;\n const isOpen = !!(object || isLoading || loadingError);\n if (!object) {\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_drawer__WEBPACK_IMPORTED_MODULE_4__[\"Drawer\"], { className: \"KubeObjectDetails flex column\", open: isOpen, title: \"\", toolbar: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_menu__WEBPACK_IMPORTED_MODULE_8__[\"KubeObjectMenu\"], { object: object, toolbar: true }), onClose: _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"hideDetails\"] },\n isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], { center: true }),\n loadingError && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box center\" }, loadingError)));\n }\n const { kind, getName } = object;\n const title = `${kind}: ${getName()}`;\n const details = _api_kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_9__[\"KubeObjectDetailRegistry\"]\n .getInstance()\n .getItemsForKind(object.kind, object.apiVersion)\n .map((item, index) => (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(item.components.Details, { object: object, key: `object-details-${index}` })));\n if (details.length === 0) {\n const crd = _custom_resources_crd_store__WEBPACK_IMPORTED_MODULE_7__[\"crdStore\"].getByObject(object);\n /**\n * This is a fallback so that if a custom resource object doesn't have\n * any defined details we should try and display at least some details\n */\n if (crd) {\n details.push(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_custom_resources__WEBPACK_IMPORTED_MODULE_10__[\"CrdResourceDetails\"], { key: object.getId(), object: object, crd: crd }));\n }\n }\n if (details.length === 0) {\n // if we still don't have any details to show, just show the standard object metadata\n details.push(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_meta__WEBPACK_IMPORTED_MODULE_11__[\"KubeObjectMeta\"], { key: object.getId(), object: object }));\n }\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_drawer__WEBPACK_IMPORTED_MODULE_4__[\"Drawer\"], { className: \"KubeObjectDetails flex column\", open: isOpen, title: title, toolbar: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_kube_object_menu__WEBPACK_IMPORTED_MODULE_8__[\"KubeObjectMenu\"], { object: object, toolbar: true }), onClose: _kube_detail_params__WEBPACK_IMPORTED_MODULE_12__[\"hideDetails\"] },\n isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], { center: true }),\n loadingError && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { className: \"box center\" }, loadingError),\n details));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], KubeObjectDetails.prototype, \"isLoading\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", Object)\n], KubeObjectDetails.prototype, \"loadingError\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], KubeObjectDetails.prototype, \"path\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], KubeObjectDetails.prototype, \"object\", null);\nKubeObjectDetails = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], KubeObjectDetails);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/kube-object-details/kube-object-details.tsx?");
42091
41996
 
42092
41997
  /***/ }),
42093
41998
 
@@ -42615,7 +42520,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
42615
42520
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
42616
42521
 
42617
42522
  "use strict";
42618
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultEditorProps\", function() { return defaultEditorProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MonacoEditor\", function() { return MonacoEditor; });\n/* harmony import */ var _monaco_editor_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./monaco-editor.module.scss */ \"./src/renderer/components/monaco-editor/monaco-editor.module.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var monaco_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! monaco-editor */ \"./node_modules/monaco-editor/esm/vs/editor/editor.main.js\");\n/* harmony import */ var _monaco_validators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./monaco-validators */ \"./src/renderer/components/monaco-editor/monaco-validators.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 _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\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 _theme_store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.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};\nvar MonacoEditor_1;\n\n\n\n\n\n\n\n\n\n\nconst defaultEditorProps = {\n language: \"yaml\",\n get theme() {\n // theme for monaco-editor defined in `src/renderer/themes/lens-*.json`\n return _theme_store__WEBPACK_IMPORTED_MODULE_9__[\"ThemeStore\"].getInstance().activeTheme.monacoTheme;\n },\n};\nlet MonacoEditor = MonacoEditor_1 = class MonacoEditor extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"staticId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: `editor-id#${Math.round(1e7 * Math.random())}`\n });\n Object.defineProperty(this, \"dispose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"disposer\"])()\n });\n // TODO: investigate how to replace with \"common/logger\"\n // currently leads for stucking UI forever & infinite loop.\n // e.g. happens on tab change/create, maybe some other cases too.\n Object.defineProperty(this, \"logger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: console\n });\n Object.defineProperty(this, \"containerElem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"editor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"dimensions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"unmounting\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"onModelChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (model, oldModel) => {\n var _a, _b, _c;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(\"[MONACO]: model change\", { model, oldModel }, this.logMetadata);\n if (oldModel) {\n this.saveViewState(oldModel);\n }\n this.editor.setModel(model);\n this.restoreViewState(model);\n this.editor.layout();\n this.editor.focus(); // keep focus in editor, e.g. when clicking between dock-tabs\n (_c = (_b = this.props).onModelChange) === null || _c === void 0 ? void 0 : _c.call(_b, model, oldModel);\n this.validateLazy();\n }\n });\n Object.defineProperty(this, \"validate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (value = this.getValue()) => {\n var _a, _b;\n const validators = [\n _monaco_validators__WEBPACK_IMPORTED_MODULE_5__[\"monacoValidators\"][this.props.language], // parsing syntax check\n ].filter(Boolean);\n for (const validate of validators) {\n try {\n validate(value);\n }\n catch (error) {\n (_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error); // emit error outside\n }\n }\n }\n });\n // avoid excessive validations during typing\n Object.defineProperty(this, \"validateLazy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"debounce\"])(this.validate, 250)\n });\n Object.defineProperty(this, \"bindRef\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (elem) => this.containerElem = elem\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"makeObservable\"])(this);\n }\n static createUri(id) {\n return monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"Uri\"].file(`/monaco-editor/${id}`);\n }\n get id() {\n var _a;\n return (_a = this.props.id) !== null && _a !== void 0 ? _a : this.staticId;\n }\n get model() {\n const uri = MonacoEditor_1.createUri(this.id);\n const model = monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].getModel(uri);\n if (model) {\n return model; // already exists\n }\n const { language, value } = this.props;\n return monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].createModel(value, language, uri);\n }\n get options() {\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"merge\"])({}, _common_user_store__WEBPACK_IMPORTED_MODULE_8__[\"UserStore\"].getInstance().editorConfiguration, this.props.options);\n }\n get logMetadata() {\n return {\n editorId: this.id,\n model: this.model,\n };\n }\n /**\n * Monitor editor's dom container element box-size and sync with monaco's dimensions\n * @private\n */\n bindResizeObserver() {\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n this.setDimensions(width, height);\n }\n });\n const containerElem = this.editor.getContainerDomNode();\n resizeObserver.observe(containerElem);\n return () => resizeObserver.unobserve(containerElem);\n }\n /**\n * Save current view-model state in the editor.\n * This will allow restore cursor position, selected text, etc.\n * @param {editor.ITextModel} model\n */\n saveViewState(model) {\n MonacoEditor_1.viewStates.set(model.uri, this.editor.saveViewState());\n }\n restoreViewState(model) {\n const viewState = MonacoEditor_1.viewStates.get(model.uri);\n if (viewState) {\n this.editor.restoreViewState(viewState);\n }\n }\n componentDidMount() {\n var _a, _b;\n try {\n this.createEditor();\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`[MONACO]: editor did mount`, this.logMetadata);\n }\n catch (error) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`[MONACO]: mounting failed: ${error}`, this.logMetadata);\n }\n }\n componentWillUnmount() {\n this.unmounting = true;\n this.saveViewState(this.model);\n this.destroy();\n }\n createEditor() {\n var _a;\n if (!this.containerElem || this.editor || this.unmounting) {\n return;\n }\n const { language, theme, readOnly, value: defaultValue } = this.props;\n this.editor = monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].create(this.containerElem, Object.assign({ model: this.model, detectIndentation: false, value: defaultValue, language,\n theme,\n readOnly }, this.options));\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`[MONACO]: editor created for language=${language}, theme=${theme}`, this.logMetadata);\n this.validateLazy(); // validate initial value\n this.restoreViewState(this.model); // restore previous state if any\n if (this.props.autoFocus) {\n this.editor.focus();\n }\n const onDidLayoutChangeDisposer = this.editor.onDidLayoutChange(layoutInfo => {\n var _a, _b;\n (_b = (_a = this.props).onDidLayoutChange) === null || _b === void 0 ? void 0 : _b.call(_a, layoutInfo);\n });\n const onValueChangeDisposer = this.editor.onDidChangeModelContent(event => {\n var _a, _b;\n const value = this.editor.getValue();\n (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value, event);\n this.validateLazy(value);\n });\n const onContentSizeChangeDisposer = this.editor.onDidContentSizeChange((params) => {\n var _a, _b;\n (_b = (_a = this.props).onDidContentSizeChange) === null || _b === void 0 ? void 0 : _b.call(_a, params);\n });\n this.dispose.push(Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.model, this.onModelChange), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.props.theme, monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].setTheme), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.props.value, value => this.setValue(value)), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.options, opts => this.editor.updateOptions(opts)), () => onDidLayoutChangeDisposer.dispose(), () => onValueChangeDisposer.dispose(), () => onContentSizeChangeDisposer.dispose(), this.bindResizeObserver());\n }\n destroy() {\n if (!this.editor)\n return;\n this.dispose();\n this.editor.dispose();\n this.editor = null;\n }\n setDimensions(width, height) {\n var _a;\n this.dimensions.width = width;\n this.dimensions.height = height;\n (_a = this.editor) === null || _a === void 0 ? void 0 : _a.layout({ width, height });\n }\n setValue(value = \"\") {\n if (value == this.getValue())\n return;\n this.editor.setValue(value);\n this.validate(value);\n }\n getValue(opts) {\n var _a, _b;\n return (_b = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getValue(opts)) !== null && _b !== void 0 ? _b : \"\";\n }\n focus() {\n var _a;\n (_a = this.editor) === null || _a === void 0 ? void 0 : _a.focus();\n }\n render() {\n const { className, style } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { \"data-test-component\": \"monaco-editor\", className: Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"cssNames\"])(_monaco_editor_module_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].MonacoEditor, className), style: style, ref: this.bindRef }));\n }\n};\nObject.defineProperty(MonacoEditor, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: defaultEditorProps\n});\nObject.defineProperty(MonacoEditor, \"viewStates\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new WeakMap()\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", HTMLElement)\n], MonacoEditor.prototype, \"containerElem\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"editor\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"dimensions\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"unmounting\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"id\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"model\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"options\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"logMetadata\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Number, Number]),\n __metadata(\"design:returntype\", void 0)\n], MonacoEditor.prototype, \"setDimensions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"action\"],\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"validate\", void 0);\nMonacoEditor = MonacoEditor_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], MonacoEditor);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/monaco-editor/monaco-editor.tsx?");
42523
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultEditorProps\", function() { return defaultEditorProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MonacoEditor\", function() { return MonacoEditor; });\n/* harmony import */ var _monaco_editor_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./monaco-editor.module.scss */ \"./src/renderer/components/monaco-editor/monaco-editor.module.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var monaco_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! monaco-editor */ \"./node_modules/monaco-editor/esm/vs/editor/editor.main.js\");\n/* harmony import */ var _monaco_validators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./monaco-validators */ \"./src/renderer/components/monaco-editor/monaco-validators.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 _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\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 _theme_store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.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};\nvar MonacoEditor_1;\n\n\n\n\n\n\n\n\n\n\nconst defaultEditorProps = {\n language: \"yaml\",\n get theme() {\n // theme for monaco-editor defined in `src/renderer/themes/lens-*.json`\n return _theme_store__WEBPACK_IMPORTED_MODULE_9__[\"ThemeStore\"].getInstance().activeTheme.monacoTheme;\n },\n};\nlet MonacoEditor = MonacoEditor_1 = class MonacoEditor extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"staticId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: `editor-id#${Math.round(1e7 * Math.random())}`\n });\n Object.defineProperty(this, \"dispose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"disposer\"])()\n });\n // TODO: investigate how to replace with \"common/logger\"\n // currently leads for stucking UI forever & infinite loop.\n // e.g. happens on tab change/create, maybe some other cases too.\n Object.defineProperty(this, \"logger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: console\n });\n Object.defineProperty(this, \"containerElem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"editor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"dimensions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"unmounting\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"onModelChange\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (model, oldModel) => {\n var _a, _b, _c;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(\"[MONACO]: model change\", { model, oldModel }, this.logMetadata);\n if (oldModel) {\n this.saveViewState(oldModel);\n }\n this.editor.setModel(model);\n this.restoreViewState(model);\n this.editor.layout();\n this.editor.focus(); // keep focus in editor, e.g. when clicking between dock-tabs\n (_c = (_b = this.props).onModelChange) === null || _c === void 0 ? void 0 : _c.call(_b, model, oldModel);\n this.validateLazy();\n }\n });\n Object.defineProperty(this, \"validate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"action\"])((value = this.getValue()) => {\n var _a, _b;\n const validators = [\n _monaco_validators__WEBPACK_IMPORTED_MODULE_5__[\"monacoValidators\"][this.props.language], // parsing syntax check\n ].filter(Boolean);\n for (const validate of validators) {\n try {\n validate(value);\n }\n catch (error) {\n (_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error); // emit error outside\n }\n }\n })\n });\n // avoid excessive validations during typing\n Object.defineProperty(this, \"validateLazy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"debounce\"])(this.validate, 250)\n });\n Object.defineProperty(this, \"bindRef\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (elem) => this.containerElem = elem\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"makeObservable\"])(this);\n }\n static createUri(id) {\n return monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"Uri\"].file(`/monaco-editor/${id}`);\n }\n get id() {\n var _a;\n return (_a = this.props.id) !== null && _a !== void 0 ? _a : this.staticId;\n }\n get model() {\n const uri = MonacoEditor_1.createUri(this.id);\n const model = monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].getModel(uri);\n if (model) {\n return model; // already exists\n }\n const { language, value } = this.props;\n return monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].createModel(value, language, uri);\n }\n get options() {\n return Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"merge\"])({}, _common_user_store__WEBPACK_IMPORTED_MODULE_8__[\"UserStore\"].getInstance().editorConfiguration, this.props.options);\n }\n get logMetadata() {\n return {\n editorId: this.id,\n model: this.model,\n };\n }\n /**\n * Monitor editor's dom container element box-size and sync with monaco's dimensions\n * @private\n */\n bindResizeObserver() {\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n this.setDimensions(width, height);\n }\n });\n const containerElem = this.editor.getContainerDomNode();\n resizeObserver.observe(containerElem);\n return () => resizeObserver.unobserve(containerElem);\n }\n /**\n * Save current view-model state in the editor.\n * This will allow restore cursor position, selected text, etc.\n * @param {editor.ITextModel} model\n */\n saveViewState(model) {\n MonacoEditor_1.viewStates.set(model.uri, this.editor.saveViewState());\n }\n restoreViewState(model) {\n const viewState = MonacoEditor_1.viewStates.get(model.uri);\n if (viewState) {\n this.editor.restoreViewState(viewState);\n }\n }\n componentDidMount() {\n var _a, _b;\n try {\n this.createEditor();\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`[MONACO]: editor did mount`, this.logMetadata);\n }\n catch (error) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`[MONACO]: mounting failed: ${error}`, this.logMetadata);\n }\n }\n componentWillUnmount() {\n this.unmounting = true;\n this.saveViewState(this.model);\n this.destroy();\n }\n createEditor() {\n var _a;\n if (!this.containerElem || this.editor || this.unmounting) {\n return;\n }\n const { language, theme, readOnly, value: defaultValue } = this.props;\n this.editor = monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].create(this.containerElem, Object.assign({ model: this.model, detectIndentation: false, value: defaultValue, language,\n theme,\n readOnly }, this.options));\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`[MONACO]: editor created for language=${language}, theme=${theme}`, this.logMetadata);\n this.validateLazy(); // validate initial value\n this.restoreViewState(this.model); // restore previous state if any\n if (this.props.autoFocus) {\n this.editor.focus();\n }\n const onDidLayoutChangeDisposer = this.editor.onDidLayoutChange(layoutInfo => {\n var _a, _b;\n (_b = (_a = this.props).onDidLayoutChange) === null || _b === void 0 ? void 0 : _b.call(_a, layoutInfo);\n });\n const onValueChangeDisposer = this.editor.onDidChangeModelContent(event => {\n var _a, _b;\n const value = this.editor.getValue();\n (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value, event);\n this.validateLazy(value);\n });\n const onContentSizeChangeDisposer = this.editor.onDidContentSizeChange((params) => {\n var _a, _b;\n (_b = (_a = this.props).onDidContentSizeChange) === null || _b === void 0 ? void 0 : _b.call(_a, params);\n });\n this.dispose.push(Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.model, this.onModelChange), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.props.theme, monaco_editor__WEBPACK_IMPORTED_MODULE_4__[\"editor\"].setTheme), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.props.value, value => this.setValue(value)), Object(mobx__WEBPACK_IMPORTED_MODULE_3__[\"reaction\"])(() => this.options, opts => this.editor.updateOptions(opts)), () => onDidLayoutChangeDisposer.dispose(), () => onValueChangeDisposer.dispose(), () => onContentSizeChangeDisposer.dispose(), this.bindResizeObserver());\n }\n destroy() {\n if (!this.editor)\n return;\n this.dispose();\n this.editor.dispose();\n this.editor = null;\n }\n setDimensions(width, height) {\n var _a;\n this.dimensions.width = width;\n this.dimensions.height = height;\n (_a = this.editor) === null || _a === void 0 ? void 0 : _a.layout({ width, height });\n }\n setValue(value = \"\") {\n if (value == this.getValue())\n return;\n this.editor.setValue(value);\n this.validate(value);\n }\n getValue(opts) {\n var _a, _b;\n return (_b = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getValue(opts)) !== null && _b !== void 0 ? _b : \"\";\n }\n focus() {\n var _a;\n (_a = this.editor) === null || _a === void 0 ? void 0 : _a.focus();\n }\n render() {\n const { className, style } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { \"data-test-component\": \"monaco-editor\", className: Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"cssNames\"])(_monaco_editor_module_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].MonacoEditor, className), style: style, ref: this.bindRef }));\n }\n};\nObject.defineProperty(MonacoEditor, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: defaultEditorProps\n});\nObject.defineProperty(MonacoEditor, \"viewStates\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new WeakMap()\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", HTMLElement)\n], MonacoEditor.prototype, \"containerElem\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"].ref,\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"editor\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"dimensions\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"observable\"],\n __metadata(\"design:type\", Object)\n], MonacoEditor.prototype, \"unmounting\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"id\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"model\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"options\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"computed\"],\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], MonacoEditor.prototype, \"logMetadata\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_3__[\"action\"],\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Number, Number]),\n __metadata(\"design:returntype\", void 0)\n], MonacoEditor.prototype, \"setDimensions\", null);\nMonacoEditor = MonacoEditor_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_2__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], MonacoEditor);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/monaco-editor/monaco-editor.tsx?");
42619
42524
 
42620
42525
  /***/ }),
42621
42526
 
@@ -42817,7 +42722,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
42817
42722
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
42818
42723
 
42819
42724
  "use strict";
42820
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeDirection\", function() { return ResizeDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeSide\", function() { return ResizeSide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeGrowthDirection\", function() { return ResizeGrowthDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizingAnchor\", function() { return ResizingAnchor; });\n/* harmony import */ var _resizing_anchor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resizing-anchor.scss */ \"./src/renderer/components/resizing-anchor/resizing-anchor.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_5__ = __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};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ResizingAnchor_1;\n\n\n\n\n\n\nvar ResizeDirection;\n(function (ResizeDirection) {\n ResizeDirection[\"HORIZONTAL\"] = \"horizontal\";\n ResizeDirection[\"VERTICAL\"] = \"vertical\";\n})(ResizeDirection || (ResizeDirection = {}));\n/**\n * ResizeSide is for customizing where the area should be rendered.\n * That location is determined in conjunction with the `ResizeDirection` using the following table:\n *\n * +----------+------------+----------+\n * | | HORIZONTAL | VERTICAL |\n * +----------+------------+----------+\n * | LEADING | left | top |\n * +----------+------------+----------+\n * | TRAILING | right | bottom |\n * +----------+------------+----------+\n */\nvar ResizeSide;\n(function (ResizeSide) {\n ResizeSide[\"LEADING\"] = \"leading\";\n ResizeSide[\"TRAILING\"] = \"trailing\";\n})(ResizeSide || (ResizeSide = {}));\n/**\n * ResizeGrowthDirection determines how the anchor interprets the drag.\n *\n * Because the origin of the screen is top left a drag from bottom to top\n * results in a negative directional delta. However, if the component being\n * dragged grows in the opposite direction, this needs to be compensated for.\n */\nvar ResizeGrowthDirection;\n(function (ResizeGrowthDirection) {\n ResizeGrowthDirection[ResizeGrowthDirection[\"TOP_TO_BOTTOM\"] = 1] = \"TOP_TO_BOTTOM\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"BOTTOM_TO_TOP\"] = -1] = \"BOTTOM_TO_TOP\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"LEFT_TO_RIGHT\"] = 1] = \"LEFT_TO_RIGHT\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"RIGHT_TO_LEFT\"] = -1] = \"RIGHT_TO_LEFT\";\n})(ResizeGrowthDirection || (ResizeGrowthDirection = {}));\n/**\n * Return the direction delta, but ignore drags leading up to a moved item\n * 1. `->|` => return `false`\n * 2. `<-|` => return `directed length (M, P2)` (negative)\n * 3. `-|>` => return `directed length (M, P2)` (positive)\n * 4. `<|-` => return `directed length (M, P2)` (negative)\n * 5. `|->` => return `directed length (M, P2)` (positive)\n * 6. `|<-` => return `false`\n * @param P1 the starting position on the number line\n * @param P2 the ending position on the number line\n * @param M a third point that determines if the delta is meaningful\n * @returns the directional difference between including appropriate sign.\n */\nfunction directionDelta(P1, P2, M) {\n const delta = Math.abs(M - P2);\n if (P1 < M) {\n if (P2 >= M) {\n // case 3\n return delta;\n }\n if (P2 < P1) {\n // case 2\n return -delta;\n }\n // case 1\n return false;\n }\n if (P2 < M) {\n // case 4\n return -delta;\n }\n if (P1 < P2) {\n // case 5\n return delta;\n }\n // case 6\n return false;\n}\nlet ResizingAnchor = ResizingAnchor_1 = class ResizingAnchor extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"lastMouseEvent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ref\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef()\n });\n Object.defineProperty(this, \"isDragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"wasDragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"onDragInit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (event) => {\n const { onStart, onlyButtons } = this.props;\n if (typeof onlyButtons === \"number\" && onlyButtons !== event.buttons) {\n return;\n }\n document.addEventListener(\"mousemove\", this.onDrag);\n document.addEventListener(\"mouseup\", this.onDragEnd);\n document.body.classList.add(ResizingAnchor_1.IS_RESIZING);\n this.isDragging = true;\n this.lastMouseEvent = undefined;\n onStart();\n }\n });\n Object.defineProperty(this, \"onDrag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash__WEBPACK_IMPORTED_MODULE_3___default.a.throttle((event) => {\n /**\n * Some notes to help understand the following:\n * - A browser's origin point is in the top left of the screen\n * - X increases going from left to right\n * - Y increases going from top to bottom\n * - Since the resize bar should always be a rectangle, use its centre\n * line (in the resizing direction) as the line for determining if\n * the bar has \"jumped around\"\n *\n * Desire:\n * - Always ignore movement in the non-resizing direction\n * - Figure out how much the user has \"dragged\" the resize bar\n * - If the resize bar has jumped around, compensate by ignoring movement\n * in the resizing direction if it is moving \"towards\" the resize bar's\n * new location.\n */\n if (!this.lastMouseEvent) {\n this.lastMouseEvent = event;\n return;\n }\n const { maxExtent, minExtent, getCurrentExtent, growthDirection } = this.props;\n const { onDrag, onMaxExtentExceed, onMinExtentSubceed, onMaxExtentSubceed, onMinExtentExceed } = this.props;\n const delta = this.calculateDelta(this.lastMouseEvent, event);\n // always update the last mouse event\n this.lastMouseEvent = event;\n if (delta === false) {\n return;\n }\n const previousExtent = getCurrentExtent();\n const unboundedExtent = previousExtent + (delta * growthDirection);\n const boundedExtent = Math.round(Math.max(minExtent, Math.min(maxExtent, unboundedExtent)));\n onDrag(boundedExtent);\n if (previousExtent <= minExtent && minExtent <= unboundedExtent) {\n onMinExtentExceed();\n }\n else if (previousExtent >= minExtent && minExtent >= unboundedExtent) {\n onMinExtentSubceed();\n }\n if (previousExtent <= maxExtent && maxExtent <= unboundedExtent) {\n onMaxExtentExceed();\n }\n else if (previousExtent >= maxExtent && maxExtent >= unboundedExtent) {\n onMaxExtentSubceed();\n }\n }, 100)\n });\n Object.defineProperty(this, \"onDragEnd\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.props.onEnd();\n document.removeEventListener(\"mousemove\", this.onDrag);\n document.removeEventListener(\"mouseup\", this.onDragEnd);\n document.body.classList.remove(ResizingAnchor_1.IS_RESIZING);\n this.isDragging = false;\n this.wasDragging = true;\n setTimeout(() => this.wasDragging = false, 200);\n }\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"makeObservable\"])(this);\n if (props.maxExtent < props.minExtent) {\n throw new Error(\"maxExtent must be >= minExtent\");\n }\n const cur = props.getCurrentExtent();\n if (cur > props.maxExtent) {\n props.onDrag(props.maxExtent);\n }\n else if (cur < props.minExtent) {\n props.onDrag(props.minExtent);\n }\n }\n componentWillUnmount() {\n document.removeEventListener(\"mousemove\", this.onDrag);\n document.removeEventListener(\"mouseup\", this.onDragEnd);\n }\n calculateDelta(from, to) {\n const node = this.ref.current;\n if (!node) {\n return false;\n }\n const boundingBox = node.getBoundingClientRect();\n if (this.props.direction === ResizeDirection.HORIZONTAL) {\n const barX = Math.round(boundingBox.x + (boundingBox.width / 2));\n return directionDelta(from.pageX, to.pageX, barX);\n }\n else { // direction === ResizeDirection.VERTICAL\n const barY = Math.round(boundingBox.y + (boundingBox.height / 2));\n return directionDelta(from.pageY, to.pageY, barY);\n }\n }\n render() {\n const { disabled, direction, placement, onDoubleClick } = this.props;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { ref: this.ref, className: Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"cssNames\"])(\"ResizingAnchor\", direction, placement, { disabled, resizing: this.isDragging, wasDragging: this.wasDragging }), onMouseDown: this.onDragInit, onDoubleClick: onDoubleClick });\n }\n};\nObject.defineProperty(ResizingAnchor, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n onStart: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onDrag: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onEnd: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMaxExtentExceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMinExtentExceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMinExtentSubceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMaxExtentSubceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onDoubleClick: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n disabled: false,\n growthDirection: ResizeGrowthDirection.BOTTOM_TO_TOP,\n maxExtent: Number.POSITIVE_INFINITY,\n minExtent: 0,\n placement: ResizeSide.LEADING,\n }\n});\nObject.defineProperty(ResizingAnchor, \"IS_RESIZING\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"resizing\"\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", MouseEvent)\n], ResizingAnchor.prototype, \"lastMouseEvent\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"isDragging\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"wasDragging\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"action\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"onDragInit\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"action\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"onDragEnd\", void 0);\nResizingAnchor = ResizingAnchor_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_5__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], ResizingAnchor);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/resizing-anchor/resizing-anchor.tsx?");
42725
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeDirection\", function() { return ResizeDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeSide\", function() { return ResizeSide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizeGrowthDirection\", function() { return ResizeGrowthDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResizingAnchor\", function() { return ResizingAnchor; });\n/* harmony import */ var _resizing_anchor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resizing-anchor.scss */ \"./src/renderer/components/resizing-anchor/resizing-anchor.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_5__ = __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};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ResizingAnchor_1;\n\n\n\n\n\n\nvar ResizeDirection;\n(function (ResizeDirection) {\n ResizeDirection[\"HORIZONTAL\"] = \"horizontal\";\n ResizeDirection[\"VERTICAL\"] = \"vertical\";\n})(ResizeDirection || (ResizeDirection = {}));\n/**\n * ResizeSide is for customizing where the area should be rendered.\n * That location is determined in conjunction with the `ResizeDirection` using the following table:\n *\n * +----------+------------+----------+\n * | | HORIZONTAL | VERTICAL |\n * +----------+------------+----------+\n * | LEADING | left | top |\n * +----------+------------+----------+\n * | TRAILING | right | bottom |\n * +----------+------------+----------+\n */\nvar ResizeSide;\n(function (ResizeSide) {\n ResizeSide[\"LEADING\"] = \"leading\";\n ResizeSide[\"TRAILING\"] = \"trailing\";\n})(ResizeSide || (ResizeSide = {}));\n/**\n * ResizeGrowthDirection determines how the anchor interprets the drag.\n *\n * Because the origin of the screen is top left a drag from bottom to top\n * results in a negative directional delta. However, if the component being\n * dragged grows in the opposite direction, this needs to be compensated for.\n */\nvar ResizeGrowthDirection;\n(function (ResizeGrowthDirection) {\n ResizeGrowthDirection[ResizeGrowthDirection[\"TOP_TO_BOTTOM\"] = 1] = \"TOP_TO_BOTTOM\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"BOTTOM_TO_TOP\"] = -1] = \"BOTTOM_TO_TOP\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"LEFT_TO_RIGHT\"] = 1] = \"LEFT_TO_RIGHT\";\n ResizeGrowthDirection[ResizeGrowthDirection[\"RIGHT_TO_LEFT\"] = -1] = \"RIGHT_TO_LEFT\";\n})(ResizeGrowthDirection || (ResizeGrowthDirection = {}));\n/**\n * Return the direction delta, but ignore drags leading up to a moved item\n * 1. `->|` => return `false`\n * 2. `<-|` => return `directed length (M, P2)` (negative)\n * 3. `-|>` => return `directed length (M, P2)` (positive)\n * 4. `<|-` => return `directed length (M, P2)` (negative)\n * 5. `|->` => return `directed length (M, P2)` (positive)\n * 6. `|<-` => return `false`\n * @param P1 the starting position on the number line\n * @param P2 the ending position on the number line\n * @param M a third point that determines if the delta is meaningful\n * @returns the directional difference between including appropriate sign.\n */\nfunction directionDelta(P1, P2, M) {\n const delta = Math.abs(M - P2);\n if (P1 < M) {\n if (P2 >= M) {\n // case 3\n return delta;\n }\n if (P2 < P1) {\n // case 2\n return -delta;\n }\n // case 1\n return false;\n }\n if (P2 < M) {\n // case 4\n return -delta;\n }\n if (P1 < P2) {\n // case 5\n return delta;\n }\n // case 6\n return false;\n}\nlet ResizingAnchor = ResizingAnchor_1 = class ResizingAnchor extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"lastMouseEvent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ref\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef()\n });\n Object.defineProperty(this, \"isDragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"wasDragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"onDragInit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"action\"])((event) => {\n const { onStart, onlyButtons } = this.props;\n if (typeof onlyButtons === \"number\" && onlyButtons !== event.buttons) {\n return;\n }\n document.addEventListener(\"mousemove\", this.onDrag);\n document.addEventListener(\"mouseup\", this.onDragEnd);\n document.body.classList.add(ResizingAnchor_1.IS_RESIZING);\n this.isDragging = true;\n this.lastMouseEvent = undefined;\n onStart();\n })\n });\n Object.defineProperty(this, \"onDrag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lodash__WEBPACK_IMPORTED_MODULE_3___default.a.throttle((event) => {\n /**\n * Some notes to help understand the following:\n * - A browser's origin point is in the top left of the screen\n * - X increases going from left to right\n * - Y increases going from top to bottom\n * - Since the resize bar should always be a rectangle, use its centre\n * line (in the resizing direction) as the line for determining if\n * the bar has \"jumped around\"\n *\n * Desire:\n * - Always ignore movement in the non-resizing direction\n * - Figure out how much the user has \"dragged\" the resize bar\n * - If the resize bar has jumped around, compensate by ignoring movement\n * in the resizing direction if it is moving \"towards\" the resize bar's\n * new location.\n */\n if (!this.lastMouseEvent) {\n this.lastMouseEvent = event;\n return;\n }\n const { maxExtent, minExtent, getCurrentExtent, growthDirection } = this.props;\n const { onDrag, onMaxExtentExceed, onMinExtentSubceed, onMaxExtentSubceed, onMinExtentExceed } = this.props;\n const delta = this.calculateDelta(this.lastMouseEvent, event);\n // always update the last mouse event\n this.lastMouseEvent = event;\n if (delta === false) {\n return;\n }\n const previousExtent = getCurrentExtent();\n const unboundedExtent = previousExtent + (delta * growthDirection);\n const boundedExtent = Math.round(Math.max(minExtent, Math.min(maxExtent, unboundedExtent)));\n onDrag(boundedExtent);\n if (previousExtent <= minExtent && minExtent <= unboundedExtent) {\n onMinExtentExceed();\n }\n else if (previousExtent >= minExtent && minExtent >= unboundedExtent) {\n onMinExtentSubceed();\n }\n if (previousExtent <= maxExtent && maxExtent <= unboundedExtent) {\n onMaxExtentExceed();\n }\n else if (previousExtent >= maxExtent && maxExtent >= unboundedExtent) {\n onMaxExtentSubceed();\n }\n }, 100)\n });\n Object.defineProperty(this, \"onDragEnd\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"action\"])(() => {\n this.props.onEnd();\n document.removeEventListener(\"mousemove\", this.onDrag);\n document.removeEventListener(\"mouseup\", this.onDragEnd);\n document.body.classList.remove(ResizingAnchor_1.IS_RESIZING);\n this.isDragging = false;\n this.wasDragging = true;\n setTimeout(() => this.wasDragging = false, 200);\n })\n });\n Object(mobx__WEBPACK_IMPORTED_MODULE_2__[\"makeObservable\"])(this);\n if (props.maxExtent < props.minExtent) {\n throw new Error(\"maxExtent must be >= minExtent\");\n }\n const cur = props.getCurrentExtent();\n if (cur > props.maxExtent) {\n props.onDrag(props.maxExtent);\n }\n else if (cur < props.minExtent) {\n props.onDrag(props.minExtent);\n }\n }\n componentWillUnmount() {\n document.removeEventListener(\"mousemove\", this.onDrag);\n document.removeEventListener(\"mouseup\", this.onDragEnd);\n }\n calculateDelta(from, to) {\n const node = this.ref.current;\n if (!node) {\n return false;\n }\n const boundingBox = node.getBoundingClientRect();\n if (this.props.direction === ResizeDirection.HORIZONTAL) {\n const barX = Math.round(boundingBox.x + (boundingBox.width / 2));\n return directionDelta(from.pageX, to.pageX, barX);\n }\n else { // direction === ResizeDirection.VERTICAL\n const barY = Math.round(boundingBox.y + (boundingBox.height / 2));\n return directionDelta(from.pageY, to.pageY, barY);\n }\n }\n render() {\n const { disabled, direction, placement, onDoubleClick } = this.props;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", { ref: this.ref, className: Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"cssNames\"])(\"ResizingAnchor\", direction, placement, { disabled, resizing: this.isDragging, wasDragging: this.wasDragging }), onMouseDown: this.onDragInit, onDoubleClick: onDoubleClick });\n }\n};\nObject.defineProperty(ResizingAnchor, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n onStart: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onDrag: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onEnd: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMaxExtentExceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMinExtentExceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMinExtentSubceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onMaxExtentSubceed: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n onDoubleClick: _utils__WEBPACK_IMPORTED_MODULE_4__[\"noop\"],\n disabled: false,\n growthDirection: ResizeGrowthDirection.BOTTOM_TO_TOP,\n maxExtent: Number.POSITIVE_INFINITY,\n minExtent: 0,\n placement: ResizeSide.LEADING,\n }\n});\nObject.defineProperty(ResizingAnchor, \"IS_RESIZING\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"resizing\"\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", MouseEvent)\n], ResizingAnchor.prototype, \"lastMouseEvent\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"isDragging\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_2__[\"observable\"],\n __metadata(\"design:type\", Object)\n], ResizingAnchor.prototype, \"wasDragging\", void 0);\nResizingAnchor = ResizingAnchor_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_5__[\"observer\"],\n __metadata(\"design:paramtypes\", [Object])\n], ResizingAnchor);\n\n\n\n//# sourceURL=webpack:///./src/renderer/components/resizing-anchor/resizing-anchor.tsx?");
42821
42726
 
42822
42727
  /***/ }),
42823
42728
 
@@ -43373,6 +43278,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
43373
43278
 
43374
43279
  /***/ }),
43375
43280
 
43281
+ /***/ "./src/renderer/ipc/index.ts":
43282
+ /*!***********************************!*\
43283
+ !*** ./src/renderer/ipc/index.ts ***!
43284
+ \***********************************/
43285
+ /*! exports provided: emitOpenAppMenuAsContextMenu, emitWindowLocationChanged, requestWindowAction, requestOpenFilePickingDialog, requestSetClusterFrameId, requestClusterActivation, requestClusterDisconnection, requestSetClusterAsDeleting, requestClearClusterAsDeleting, requestDeleteCluster, requestInitialClusterStates, requestKubectlApplyAll, requestKubectlDeleteAll, requestInitialExtensionDiscovery, requestExtensionLoaderInitialState */
43286
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
43287
+
43288
+ "use strict";
43289
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"emitOpenAppMenuAsContextMenu\", function() { return emitOpenAppMenuAsContextMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"emitWindowLocationChanged\", function() { return emitWindowLocationChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestWindowAction\", function() { return requestWindowAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestOpenFilePickingDialog\", function() { return requestOpenFilePickingDialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestSetClusterFrameId\", function() { return requestSetClusterFrameId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestClusterActivation\", function() { return requestClusterActivation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestClusterDisconnection\", function() { return requestClusterDisconnection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestSetClusterAsDeleting\", function() { return requestSetClusterAsDeleting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestClearClusterAsDeleting\", function() { return requestClearClusterAsDeleting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestDeleteCluster\", function() { return requestDeleteCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestInitialClusterStates\", function() { return requestInitialClusterStates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestKubectlApplyAll\", function() { return requestKubectlApplyAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestKubectlDeleteAll\", function() { return requestKubectlDeleteAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestInitialExtensionDiscovery\", function() { return requestInitialExtensionDiscovery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestExtensionLoaderInitialState\", function() { return requestExtensionLoaderInitialState; });\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 _common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/ipc/cluster */ \"./src/common/ipc/cluster.ts\");\n/* harmony import */ var _common_ipc_window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/ipc/window */ \"./src/common/ipc/window.ts\");\n/* harmony import */ var _common_ipc_dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/ipc/dialog */ \"./src/common/ipc/dialog.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/ipc/extension-handling */ \"./src/common/ipc/extension-handling.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ \"./src/renderer/utils/index.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\nfunction requestMain(channel, ...args) {\n return electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].invoke(channel, ...args.map(_utils__WEBPACK_IMPORTED_MODULE_5__[\"toJS\"]));\n}\nfunction emitToMain(channel, ...args) {\n return electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcRenderer\"].send(channel, ...args.map(_utils__WEBPACK_IMPORTED_MODULE_5__[\"toJS\"]));\n}\nfunction emitOpenAppMenuAsContextMenu() {\n emitToMain(_common_ipc_window__WEBPACK_IMPORTED_MODULE_2__[\"windowOpenAppMenuAsContextMenuChannel\"]);\n}\nfunction emitWindowLocationChanged(location) {\n emitToMain(_common_ipc_window__WEBPACK_IMPORTED_MODULE_2__[\"windowLocationChangedChannel\"], location);\n}\nfunction requestWindowAction(type) {\n return requestMain(_common_ipc_window__WEBPACK_IMPORTED_MODULE_2__[\"windowActionHandleChannel\"], type);\n}\nfunction requestOpenFilePickingDialog(opts) {\n return requestMain(_common_ipc_dialog__WEBPACK_IMPORTED_MODULE_3__[\"openFilePickingDialogChannel\"], opts);\n}\nfunction requestSetClusterFrameId(clusterId) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterSetFrameIdHandler\"], clusterId);\n}\nfunction requestClusterActivation(clusterId, force) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterActivateHandler\"], clusterId, force);\n}\nfunction requestClusterDisconnection(clusterId, force) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterDisconnectHandler\"], clusterId, force);\n}\nfunction requestSetClusterAsDeleting(clusterId) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterSetDeletingHandler\"], clusterId);\n}\nfunction requestClearClusterAsDeleting(clusterId) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterClearDeletingHandler\"], clusterId);\n}\nfunction requestDeleteCluster(clusterId) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterDeleteHandler\"], clusterId);\n}\nfunction requestInitialClusterStates() {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterStates\"]);\n}\nfunction requestKubectlApplyAll(clusterId, resources, kubectlArgs) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterKubectlApplyAllHandler\"], clusterId, resources, kubectlArgs);\n}\nfunction requestKubectlDeleteAll(clusterId, resources, kubectlArgs) {\n return requestMain(_common_ipc_cluster__WEBPACK_IMPORTED_MODULE_1__[\"clusterKubectlDeleteAllHandler\"], clusterId, resources, kubectlArgs);\n}\nfunction requestInitialExtensionDiscovery() {\n return requestMain(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_4__[\"extensionDiscoveryStateChannel\"]);\n}\nfunction requestExtensionLoaderInitialState() {\n return requestMain(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_4__[\"extensionLoaderFromMainChannel\"]);\n}\n\n\n//# sourceURL=webpack:///./src/renderer/ipc/index.ts?");
43290
+
43291
+ /***/ }),
43292
+
43376
43293
  /***/ "./src/renderer/kube-watch-api/kube-watch-api.injectable.ts":
43377
43294
  /*!******************************************************************!*\
43378
43295
  !*** ./src/renderer/kube-watch-api/kube-watch-api.injectable.ts ***!