UNPKG

@freelensapp/example-extension

Version:
627 lines (626 loc) 26.6 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; var react_jsxRuntime; var hasRequiredReact_jsxRuntime; function requireReact_jsxRuntime() { if (hasRequiredReact_jsxRuntime) return react_jsxRuntime; hasRequiredReact_jsxRuntime = 1; react_jsxRuntime = commonjsGlobal.ReactJsxRuntime; return react_jsxRuntime; } var react_jsxRuntimeExports = requireReact_jsxRuntime(); var _freelensapp_extensions; var hasRequired_freelensapp_extensions; function require_freelensapp_extensions() { if (hasRequired_freelensapp_extensions) return _freelensapp_extensions; hasRequired_freelensapp_extensions = 1; _freelensapp_extensions = commonjsGlobal.LensExtensions; return _freelensapp_extensions; } var _freelensapp_extensionsExports = require_freelensapp_extensions(); var mobx; var hasRequiredMobx; function requireMobx() { if (hasRequiredMobx) return mobx; hasRequiredMobx = 1; mobx = commonjsGlobal.Mobx; return mobx; } var mobxExports = requireMobx(); var _Common$Store$Extensi; let _initProto, _init_enabled; function _applyDecs(e, t, r, n, o, a) { function i(e2, t2, r2) { return function(n2, o2) { return r2 && r2(n2), e2[t2].call(n2, o2); }; } function c(e2, t2) { for (var r2 = 0; r2 < e2.length; r2++) e2[r2].call(t2); return t2; } function s(e2, t2, r2, n2) { if ("function" != typeof e2 && (n2 || void 0 !== e2)) throw new TypeError(t2 + " must " + (r2 || "be") + " a function" + (n2 ? "" : " or undefined")); return e2; } function applyDec(e2, t2, r2, n2, o2, a2, c2, u2, l2, f2, p2, d, h) { function m(e3) { if (!h(e3)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t2[0], g = t2[3], b = !u2; if (!b) { r2 || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o2 ? "get" : 4 === o2 || d ? "set" : "value"; f2 ? (p2 || d ? w = { get: _setFunctionName(function() { return g(this); }, n2, "get"), set: function(e3) { t2[4](this, e3); } } : w[A] = g, p2 || _setFunctionName(w[A], n2, 2 === o2 ? "" : A)) : p2 || (w = Object.getOwnPropertyDescriptor(e2, n2)); } for (var P = e2, j = v.length - 1; j >= 0; j -= r2 ? 2 : 1) { var D = v[j], E = r2 ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o2], name: n2, metadata: a2, addInitializer: function(e3, t3) { if (e3.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t3, "An initializer", "be", true), c2.push(t3); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y); else { var k, F; O.static = l2, O.private = f2, f2 ? 2 === o2 ? k = function(e3) { return m(e3), w.value; } : (o2 < 4 && (k = i(w, "get", m)), 3 !== o2 && (F = i(w, "set", m))) : (k = function(e3) { return e3[n2]; }, (o2 < 2 || 4 === o2) && (F = function(e3, t3) { e3[n2] = t3; })); var N = O.access = { has: f2 ? h.bind() : function(e3) { return n2 in e3; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y); else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p2 ? "field" : "method") + " decorators", "return") && (p2 ? S.push(P) : w[A] = P); } } finally { I.v = true; } } return (p2 || d) && u2.push(function(e3, t3) { for (var r3 = S.length - 1; r3 >= 0; r3--) t3 = S[r3].call(e3, t3); return t3; }), p2 || b || (f2 ? d ? u2.push(i(w, "get"), i(w, "set")) : u2.push(2 === o2 ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e2, n2, w)), P; } function u(e2, t2) { return Object.defineProperty(e2, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: true, enumerable: true, value: t2 }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function(e2, t2, r2, n2) { var o2, a2, i2 = [], s2 = function(t3) { return _checkInRHS(t3) === e2; }, u2 = /* @__PURE__ */ new Map(); function l2(e3) { e3 && i2.push(c.bind(null, e3)); } for (var f2 = 0; f2 < t2.length; f2++) { var p2 = t2[f2]; if (Array.isArray(p2)) { var d = p2[1], h = p2[2], m = p2.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u2.get(b); if (true === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u2.set(b, !(d > 2) || d); } applyDec(v ? e2 : e2.prototype, p2, y, m ? "#" + h : _toPropertyKey(h), d, n2, v ? a2 = a2 || [] : o2 = o2 || [], i2, v, m, g, 1 === d, v && m ? s2 : r2); } } return l2(o2), l2(a2), i2; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t2 = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t2), f), c.bind(null, t2, e)]; } }; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return String(t); } function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: true, value: n ? n + " " + t : t }); } catch (e2) { } return e; } function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; } class ExamplePreferencesStore extends (_Common$Store$Extensi = _freelensapp_extensionsExports.Common.Store.ExtensionStore) { static { [_init_enabled, _initProto] = _applyDecs(this, [[mobxExports.observable, 1, "enabled"]], [], 0, void 0, _Common$Store$Extensi).e; } #A = (_initProto(this), _init_enabled(this, false)); get enabled() { return this.#A; } set enabled(v) { this.#A = v; } constructor() { super({ configName: "example-preferences-store", defaults: { enabled: false } }); console.log("[EXAMPLE-PREFERENCES-STORE] constructor"); mobxExports.makeObservable(this); } fromStore({ enabled }) { console.log(`[EXAMPLE-PREFERENCES-STORE] set ${enabled}`); this.enabled = enabled; } toJSON() { const enabled = this.enabled; console.log(`[EXAMPLE-PREFERENCES-STORE] get ${enabled}`); return { enabled }; } } const unavailablePage = "_unavailablePage_i6zs9_1"; const unavailableContent = "_unavailableContent_i6zs9_9"; const unavailableTitle = "_unavailableTitle_i6zs9_18"; const unavailableMessage = "_unavailableMessage_i6zs9_25"; const unavailableDetails = "_unavailableDetails_i6zs9_31"; const styles$2 = { unavailablePage, unavailableContent, unavailableTitle, unavailableMessage, unavailableDetails }; const stylesInline$2 = "._unavailablePage_i6zs9_1{display:flex;justify-content:center;align-items:center;width:100%;height:100%}._unavailableContent_i6zs9_9{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:500px;padding:24px}._unavailableTitle_i6zs9_18{font-size:1.5em;font-weight:500;margin-bottom:24px;color:var(--textColorPrimary)}._unavailableMessage_i6zs9_25{color:var(--textColorSecondary);margin-bottom:24px;line-height:1.5}._unavailableDetails_i6zs9_31{font-size:.9em;color:var(--textColorTertiary);line-height:1.4}._unavailableDetails_i6zs9_31 code{background-color:var(--contentColor);padding:2px 6px;border-radius:3px;font-family:monospace}"; function createAvailableVersionPage(resourceName, variants) { return (props) => { for (const variant of variants) { try { const store = variant.kubeObjectClass.getStore(); if (store) { _freelensapp_extensionsExports.Common.logger.debug(`[@freelensapp/example-extension]: Rendering ${resourceName} page with API version ${variant.version}`); return /* @__PURE__ */ react_jsxRuntimeExports.jsx(variant.PageComponent, { ...props }); } } catch (error) { _freelensapp_extensionsExports.Common.logger.debug(`[@freelensapp/example-extension]: API version ${variant.version} not available for ${resourceName}: ${error}`); } } const triedVersions = variants.map((v) => v.version).join(", "); _freelensapp_extensionsExports.Common.logger.info(`[@freelensapp/example-extension]: ${resourceName} CRD not found in cluster (tried versions: ${triedVersions})`); return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx("style", { children: stylesInline$2 }), /* @__PURE__ */ react_jsxRuntimeExports.jsx("div", { className: styles$2.unavailablePage, children: /* @__PURE__ */ react_jsxRuntimeExports.jsxs("div", { className: styles$2.unavailableContent, children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsxs("h3", { className: styles$2.unavailableTitle, children: [ resourceName, " Not Available" ] }), /* @__PURE__ */ react_jsxRuntimeExports.jsxs("p", { className: styles$2.unavailableMessage, children: [ "The ", /* @__PURE__ */ react_jsxRuntimeExports.jsx("strong", { children: resourceName }), " CRDs are not installed in this cluster." ] }), /* @__PURE__ */ react_jsxRuntimeExports.jsxs("p", { className: styles$2.unavailableDetails, children: [ "Tried API versions: ", /* @__PURE__ */ react_jsxRuntimeExports.jsx("code", { children: triedVersions }) ] }) ] }) }) ] }); }; } var mobxReact; var hasRequiredMobxReact; function requireMobxReact() { if (hasRequiredMobxReact) return mobxReact; hasRequiredMobxReact = 1; mobxReact = commonjsGlobal.MobxReact; return mobxReact; } var mobxReactExports = requireMobxReact(); const errorPage = "_errorPage_1y0la_1"; const errorMessage = "_errorMessage_1y0la_8"; const styles$1 = { errorPage, errorMessage }; const stylesInline$1 = "._errorPage_1y0la_1{display:flex;justify-content:center;width:100%;height:100%}._errorMessage_1y0la_8{display:flex;align-items:center;color:var(--colorError)}"; function ErrorPage({ error, extension, children }) { if (error) { _freelensapp_extensionsExports.Common.logger.error(`[${extension.name}]: ${error}`); } return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx("style", { children: stylesInline$1 }), /* @__PURE__ */ react_jsxRuntimeExports.jsxs("div", { className: styles$1.errorPage, children: [ error ? /* @__PURE__ */ react_jsxRuntimeExports.jsx("p", { className: styles$1.errorMessage, children: String(error) }) : /* @__PURE__ */ react_jsxRuntimeExports.jsx(react_jsxRuntimeExports.Fragment, {}), children ] }) ] }); } function withErrorPage(props, wrapped) { try { return wrapped(props); } catch (error) { return /* @__PURE__ */ react_jsxRuntimeExports.jsx(ErrorPage, { error, extension: props.extension }); } } const { Component: { BadgeBoolean: BadgeBoolean$3, DrawerItem: DrawerItem$1, MarkdownViewer: MarkdownViewer$1 } } = _freelensapp_extensionsExports.Renderer; const ExampleDetails$1 = mobxReactExports.observer((props) => withErrorPage(props, () => { const { object } = props; const preferences2 = ExamplePreferencesStore.getInstance(); return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem$1, { name: "Api Version", children: "v1alpha1" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem$1, { name: "Description", children: /* @__PURE__ */ react_jsxRuntimeExports.jsx(MarkdownViewer$1, { markdown: object.spec.description ?? "" }) }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem$1, { name: "Example checkbox", children: /* @__PURE__ */ react_jsxRuntimeExports.jsx(BadgeBoolean$3, { value: preferences2.enabled }) }) ] }); })); const { Component: { BadgeBoolean: BadgeBoolean$2, DrawerItem, MarkdownViewer } } = _freelensapp_extensionsExports.Renderer; const ExampleDetails = mobxReactExports.observer((props) => withErrorPage(props, () => { const { object } = props; const preferences2 = ExamplePreferencesStore.getInstance(); return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem, { name: "Api Version", children: "v1alpha2" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem, { name: "Description", children: /* @__PURE__ */ react_jsxRuntimeExports.jsx(MarkdownViewer, { markdown: object.spec.description ?? "" }) }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(DrawerItem, { name: "Example checkbox", children: /* @__PURE__ */ react_jsxRuntimeExports.jsx(BadgeBoolean$2, { value: preferences2.enabled }) }) ] }); })); const svgIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" viewBox="0 0 32 32"><path d="M5.344 10.688q0 2.912 1.44 5.344t3.936 3.84q.512.736 1.056 1.344l-.032.064q-.032.064 0 .064V25.6q0 .896.608 1.536t1.504.608h4.288q.864 0 1.504-.608t.608-1.536v-4.32q0-.032-.032-.064.544-.608 1.088-1.344 2.432-1.376 3.904-3.84t1.472-5.344-1.44-5.344-3.904-3.904T16 0t-5.344 1.44-3.904 3.904-1.408 5.344m8.512 20.256q0 .448.32.768t.768.288h2.112q.448 0 .768-.288t.32-.768-.32-.768-.768-.32h-2.112q-.448 0-.768.32t-.32.768"/></svg>'; const { Component: { Icon: Icon$2 } } = _freelensapp_extensionsExports.Renderer; function ExampleIcon(props) { return /* @__PURE__ */ react_jsxRuntimeExports.jsx(Icon$2, { ...props, svg: svgIcon }); } let Example$1 = class Example extends _freelensapp_extensionsExports.Renderer.K8sApi.LensExtensionKubeObject { static kind = "Example"; static namespaced = true; static apiBase = "/apis/example.freelens.app/v1alpha1/examples"; static crd = { apiVersions: ["example.freelens.app/v1alpha1"], plural: "examples", singular: "example", shortNames: ["ex"], title: "Examples" }; static getActive(object) { return object.spec.active ?? false; } static getTitle(object) { return object.spec.title; } }; let ExampleApi$1 = class ExampleApi extends _freelensapp_extensionsExports.Renderer.K8sApi.KubeApi { }; let ExampleStore$1 = class ExampleStore extends _freelensapp_extensionsExports.Renderer.K8sApi.KubeObjectStore { }; class Example2 extends _freelensapp_extensionsExports.Renderer.K8sApi.LensExtensionKubeObject { static kind = "Example"; static namespaced = true; static apiBase = "/apis/example.freelens.app/v1alpha2/examples"; static crd = { apiVersions: ["example.freelens.app/v1alpha2"], plural: "examples", singular: "example", shortNames: ["ex"], title: "Examples" }; static getSuspended(object) { return object.spec.suspended ?? false; } static getTitle(object) { return object.spec.title; } } class ExampleApi2 extends _freelensapp_extensionsExports.Renderer.K8sApi.KubeApi { } class ExampleStore2 extends _freelensapp_extensionsExports.Renderer.K8sApi.KubeObjectStore { } const { Component: { MenuItem: MenuItem$1, Icon: Icon$1 } } = _freelensapp_extensionsExports.Renderer; const ExampleActiveToggleMenuItem$1 = (props) => withErrorPage(props, () => { const { object, toolbar } = props; if (!object) return /* @__PURE__ */ react_jsxRuntimeExports.jsx(react_jsxRuntimeExports.Fragment, {}); const store = Example$1.getStore(); const disable = async () => { await store.patch(object, { spec: { active: false } }, "merge"); }; const enable = async () => { await store.patch(object, { spec: { active: true } }, "merge"); }; if (!object.spec.active) { return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(MenuItem$1, { onClick: enable, children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(Icon$1, { material: "play_circle_outline", interactive: toolbar, title: "Resume" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx("span", { className: "title", children: "Resume" }) ] }); } else { return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(MenuItem$1, { onClick: disable, children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(Icon$1, { material: "pause_circle_filled", interactive: toolbar, title: "Suspend" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx("span", { className: "title", children: "Suspend" }) ] }); } }); const { Component: { MenuItem, Icon } } = _freelensapp_extensionsExports.Renderer; const ExampleActiveToggleMenuItem = (props) => withErrorPage(props, () => { const { object, toolbar } = props; if (!object) return /* @__PURE__ */ react_jsxRuntimeExports.jsx(react_jsxRuntimeExports.Fragment, {}); const store = Example2.getStore(); const disable = async () => { await store.patch(object, { spec: { suspended: true } }, "merge"); }; const enable = async () => { await store.patch(object, { spec: { suspended: false } }, "merge"); }; if (object.spec.suspended) { return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(MenuItem, { onClick: enable, children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(Icon, { material: "play_circle_outline", interactive: toolbar, title: "Resume" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx("span", { className: "title", children: "Resume" }) ] }); } else { return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(MenuItem, { onClick: disable, children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx(Icon, { material: "pause_circle_filled", interactive: toolbar, title: "Suspend" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx("span", { className: "title", children: "Suspend" }) ] }); } }); const page = "_page_74m0m_1"; const title = "_title_74m0m_1"; const active = "_active_74m0m_4"; const resumed = "_resumed_74m0m_7"; const age = "_age_74m0m_10"; const styles = { page, title, active, resumed, age }; const stylesInline = "._page_74m0m_1 .TableCell._title_74m0m_1{flex-grow:1.5}._page_74m0m_1 .TableCell._active_74m0m_4,._page_74m0m_1 .TableCell._resumed_74m0m_7{flex-grow:.4}._page_74m0m_1 .TableCell._age_74m0m_10{flex-grow:.3}"; const { Component: { BadgeBoolean: BadgeBoolean$1, KubeObjectAge: KubeObjectAge$1, KubeObjectListLayout: KubeObjectListLayout$1, LinkToNamespace: LinkToNamespace$1, WithTooltip: WithTooltip$1 } } = _freelensapp_extensionsExports.Renderer; const KubeObject$1 = Example$1; const sortingCallbacks$1 = { name: (object) => object.getName(), namespace: (object) => object.getNs(), active: (object) => String(KubeObject$1.getActive(object)), title: (object) => KubeObject$1.getTitle(object), age: (object) => object.getCreationTimestamp() }; const renderTableHeader$1 = [{ title: "Name", sortBy: "name" }, { title: "Namespace", sortBy: "namespace" }, { title: "Active", sortBy: "active", className: styles.active }, { title: "Title", sortBy: "title", className: styles.title }, { title: "Age", sortBy: "age", className: styles.age }]; const ExamplesPage$1 = mobxReactExports.observer((props) => withErrorPage(props, () => { const store = KubeObject$1.getStore(); return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx("style", { children: stylesInline }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(KubeObjectListLayout$1, { tableId: `${KubeObject$1.crd.plural}Table`, className: styles.page, store, sortingCallbacks: sortingCallbacks$1, searchFilters: [(object) => object.getSearchFields()], renderHeaderTitle: KubeObject$1.crd.title, renderTableHeader: renderTableHeader$1, renderTableContents: (object) => [/* @__PURE__ */ react_jsxRuntimeExports.jsx(WithTooltip$1, { children: object.getName() }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(LinkToNamespace$1, { namespace: object.getNs() }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(BadgeBoolean$1, { value: KubeObject$1.getActive(object) }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(WithTooltip$1, { children: KubeObject$1.getTitle(object) ?? "N/A" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(KubeObjectAge$1, { object }, "age")] }) ] }); })); const { Component: { BadgeBoolean, KubeObjectAge, KubeObjectListLayout, LinkToNamespace, WithTooltip } } = _freelensapp_extensionsExports.Renderer; const KubeObject = Example2; const sortingCallbacks = { name: (object) => object.getName(), namespace: (object) => object.getNs(), resumed: (object) => String(!KubeObject.getSuspended(object)), title: (object) => KubeObject.getTitle(object), age: (object) => object.getCreationTimestamp() }; const renderTableHeader = [{ title: "Name", sortBy: "name" }, { title: "Namespace", sortBy: "namespace" }, { title: "Resumed", sortBy: "resumed", className: styles.resumed }, { title: "Title", sortBy: "title", className: styles.title }, { title: "Age", sortBy: "age", className: styles.age }]; const ExamplesPage = mobxReactExports.observer((props) => withErrorPage(props, () => { const store = KubeObject.getStore(); return /* @__PURE__ */ react_jsxRuntimeExports.jsxs(react_jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ react_jsxRuntimeExports.jsx("style", { children: stylesInline }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(KubeObjectListLayout, { tableId: `${KubeObject.crd.plural}Table`, className: styles.page, store, sortingCallbacks, searchFilters: [(object) => object.getSearchFields()], renderHeaderTitle: KubeObject.crd.title, renderTableHeader, renderTableContents: (object) => [/* @__PURE__ */ react_jsxRuntimeExports.jsx(WithTooltip, { children: object.getName() }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(LinkToNamespace, { namespace: object.getNs() }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(BadgeBoolean, { value: !KubeObject.getSuspended(object) }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(WithTooltip, { children: KubeObject.getTitle(object) ?? "N/A" }), /* @__PURE__ */ react_jsxRuntimeExports.jsx(KubeObjectAge, { object }, "age")] }) ] }); })); const { Component: { Checkbox } } = _freelensapp_extensionsExports.Renderer; const preferences = ExamplePreferencesStore.getInstanceOrCreate(); const ExamplePreferenceInput = mobxReactExports.observer(() => { return /* @__PURE__ */ react_jsxRuntimeExports.jsx(Checkbox, { label: "Example checkbox", value: preferences.enabled, onChange: (v) => { console.log(`[EXAMPLE-PREFERENCES-STORE] onChange ${v}`); preferences.enabled = v; } }); }); const ExamplePreferenceHint = () => /* @__PURE__ */ react_jsxRuntimeExports.jsx("span", { children: "This is an example of an preference for extensions." }); class ExampleRenderer extends _freelensapp_extensionsExports.Renderer.LensExtension { async onActivate() { ExamplePreferencesStore.getInstanceOrCreate().loadExtension(this); } appPreferences = [{ title: "Example Preferences", components: { Input: () => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExamplePreferenceInput, {}), Hint: () => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExamplePreferenceHint, {}) } }]; kubeObjectDetailItems = [{ kind: Example$1.kind, apiVersions: Example$1.crd.apiVersions, priority: 10, components: { Details: (props) => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExampleDetails$1, { ...props, extension: this }) } }, { kind: Example2.kind, apiVersions: Example2.crd.apiVersions, priority: 10, components: { Details: (props) => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExampleDetails, { ...props, extension: this }) } }]; clusterPages = [{ id: "example", components: { Page: () => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExamplesPage$1, { extension: this }) } }, { id: "example", components: { Page: () => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExamplesPage, { extension: this }) } }, { id: "example", components: { Page: createAvailableVersionPage("Examples", [{ kubeObjectClass: Example2, PageComponent: ExamplesPage, version: "v1alpha2" }, { kubeObjectClass: Example$1, PageComponent: ExamplesPage$1, version: "v1alpha1" }]) } }]; clusterPageMenus = [{ id: "example", title: Example$1.crd.title, target: { pageId: "example" }, components: { Icon: ExampleIcon } }]; kubeObjectMenuItems = [{ kind: Example$1.kind, apiVersions: Example$1.crd.apiVersions, components: { MenuItem: (props) => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExampleActiveToggleMenuItem$1, { ...props, extension: this }) } }, { kind: Example2.kind, apiVersions: Example2.crd.apiVersions, components: { MenuItem: (props) => /* @__PURE__ */ react_jsxRuntimeExports.jsx(ExampleActiveToggleMenuItem, { ...props, extension: this }) } }]; } exports.default = ExampleRenderer; //# sourceMappingURL=index.js.map