@hawtio/react
Version:
A Hawtio reimplementation based on TypeScript + React.
535 lines (471 loc) • 92.4 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkUB6QWSAJjs = require('./chunk-UB6QWSAJ.js');
var _chunkDJL65G6Gjs = require('./chunk-DJL65G6G.js');
var _chunkXX7SXVXKjs = require('./chunk-XX7SXVXK.js');
var _chunkFB4CIZA4js = require('./chunk-FB4CIZA4.js');
// src/plugins/connect/Connect.tsx
var _reactcore = require('@patternfly/react-core');
var _outlinedquestioncircleicon = require('@patternfly/react-icons/dist/esm/icons/outlined-question-circle-icon');
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
var _reactrouterdom = require('react-router-dom');
// src/plugins/connect/context.ts
function useConnections() {
const [connections, dispatch] = _react.useReducer.call(void 0, _chunkDJL65G6Gjs.reducer, _chunkXX7SXVXKjs.connectService.loadConnections());
_react.useEffect.call(void 0, () => {
_chunkXX7SXVXKjs.connectService.saveConnections(connections);
}, [connections]);
return { connections, dispatch };
}
var ConnectContext = _react.createContext.call(void 0, {
connections: {},
dispatch: () => {
}
});
// src/plugins/connect/discover/Discover.tsx
// src/plugins/connect/img/camel-logo.svg
var camel_logo_default = "PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgVHJhbnNmb3JtZWQgYnk6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPgo8c3ZnIHdpZHRoPSI2NHB4IiBoZWlnaHQ9IjY0cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBmaWxsPSIjMDAwMDAwIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8+Cg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPGRlZnM+IDxjaXJjbGUgaWQ9InBhdGgtMSIgY3g9IjEyOCIgY3k9IjEyOC4wMDAxNSIgcj0iMTI4Ij4gPC9jaXJjbGU+IDxsaW5lYXJHcmFkaWVudCB4MT0iLTEyLjU2Mzg0NDUlIiB5MT0iMTA4LjIxNDQ1NiUiIHgyPSIxMDEuMzA0MDc5JSIgeTI9Ii0xLjk2NDE4NDQyJSIgaWQ9ImxpbmVhckdyYWRpZW50LTMiPiA8c3RvcCBzdG9wLWNvbG9yPSIjRjY5OTIzIiBvZmZzZXQ9IjAlIj4gPC9zdG9wPiA8c3RvcCBzdG9wLWNvbG9yPSIjRjc5QTIzIiBvZmZzZXQ9IjEwLjk5NiUiPiA8L3N0b3A+IDxzdG9wIHN0b3AtY29sb3I9IiNFOTc4MjYiIG9mZnNldD0iOTQuNTAyJSI+IDwvc3RvcD4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IHgxPSItMTIuNTYzODQ0NSUiIHkxPSIxMDguMjE0NDU2JSIgeDI9IjEwMS4zMDQwNzklIiB5Mj0iLTEuOTY0MTg0NDIlIiBpZD0ibGluZWFyR3JhZGllbnQtNCI+IDxzdG9wIHN0b3AtY29sb3I9IiNGNjk5MjMiIG9mZnNldD0iMCUiPiA8L3N0b3A+IDxzdG9wIHN0b3AtY29sb3I9IiNGNzlBMjMiIG9mZnNldD0iOC4wNDc4JSI+IDwvc3RvcD4gPHN0b3Agc3RvcC1jb2xvcj0iI0U5NzgyNiIgb2Zmc2V0PSI0MS44NzQlIj4gPC9zdG9wPiA8L2xpbmVhckdyYWRpZW50PiA8bGluZWFyR3JhZGllbnQgeDE9Ijc0LjcyNDE1NDElIiB5MT0iLTMuMDU5MTUxMiUiIHgyPSI2LjY1Mjg0MTklIiB5Mj0iMTAwLjA2NTUxNyUiIGlkPSJsaW5lYXJHcmFkaWVudC01Ij4gPHN0b3Agc3RvcC1jb2xvcj0iI0Y2RTQyMyIgb2Zmc2V0PSIwJSI+IDwvc3RvcD4gPHN0b3Agc3RvcC1jb2xvcj0iI0Y3OUEyMyIgb2Zmc2V0PSI0MS4xOTElIj4gPC9zdG9wPiA8c3RvcCBzdG9wLWNvbG9yPSIjRTk3ODI2IiBvZmZzZXQ9IjczLjI3MSUiPiA8L3N0b3A+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPGc+IDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4gPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj4gPC91c2U+IDwvbWFzaz4gPGc+IDwvZz4gPGNpcmNsZSBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTMpIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSIgY3g9IjEyNy45OTQyOSIgY3k9IjEyNy45OTQyODkiIHI9IjEyMy4xMTA1MzEiPiA8L2NpcmNsZT4gPHBhdGggZD0iTTEyOCwyNTYgQzU3LjMwNzU1MiwyNTYgMCwxOTguNjkyNDQ4IDAsMTI4IEMwLDU3LjMwNzU1MiA1Ny4zMDc1NTIsMCAxMjgsMCBDMTk4LjY5MjQ0OCwwIDI1Niw1Ny4zMDc1NTIgMjU2LDEyOCBDMjU2LDE5OC42OTI0NDggMTk4LjY5MjQ0OCwyNTYgMTI4LDI1NiBaIE0xMjgsMjQ2LjIzMjA0NyBDMTkzLjI5Nzc1NiwyNDYuMjMyMDQ3IDI0Ni4yMzIwNDcsMTkzLjI5Nzc1NyAyNDYuMjMyMDQ3LDEyOCBDMjQ2LjIzMjA0Nyw2Mi43MDIyNDM0IDE5My4yOTc3NTYsOS43Njc5NTI4NSAxMjgsOS43Njc5NTI4NSBDNjIuNzAyMjQzMyw5Ljc2Nzk1Mjg1IDkuNzY3OTUyODcsNjIuNzAyMjQzNCA5Ljc2Nzk1Mjg3LDEyOCBDOS43Njc5NTI4NywxOTMuMjk3NzU3IDYyLjcwMjI0MzMsMjQ2LjIzMjA0NyAxMjgsMjQ2LjIzMjA0NyBaIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTQpIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSI+IDwvcGF0aD4gPHBhdGggZD0iTTk4LjA0MzY5NDgsNzUuNTE2NzUxOSBDOTYuMjkzMDEyNyw3NS41MTQ3ODI4IDk0LjUxOTUyNzksNzUuNTI2NTk3NiA5Mi43NTE2MzU1LDc1LjU3ODE4OSBDOTAuNjk2NDQ1Nyw3NS42Mzg4Mzg1IDg3LjkzNTMxOTksNzYuMjkxMzcxNSA4NC43NTIwMTA4LDc3LjM2MjcyMDcgQzEzOC41MjcyMSwxMTguMTk2NzQzIDE1Ny44NjAyMTIsMTkxLjg2MDI0IDEyNC42MjcwNjMsMjU1Ljg3NjkyOSBDMTI1Ljc1NTcxNCwyNTUuOTA2MjY5IDEyNi44NzU4MTksMjU2IDEyOC4wMTE2MTgsMjU2IEMxODguNzQ3NzIxLDI1NiAyMzkuNTA0MjMyLDIxMy42NzczMDkgMjUyLjYyMDY2MywxNTYuOTI4NzEgQzIxNC4wNzg3MTgsMTExLjc1MDc2OCAxNjEuODA3OTQsNzUuNjE1MTEwNCA5OC4wNDMzMDEsNzUuNTE2NjUzNSBMOTguMDQzNjk0OCw3NS41MTY3NTE5IFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtNSkiIGZpbGwtcnVsZT0ibm9uemVybyIgb3BhY2l0eT0iMC43NSIgbWFzaz0idXJsKCNtYXNrLTIpIj4gPC9wYXRoPiA8cGF0aCBkPSJNODQuNzUyMDEwOCw3Ny4zNjc3NDE5IEM2Ni44OTU0NzAzLDgzLjM3NzE1ODUgMzIuODI5NzcwMywxMDQuNTQ1Nzg5IDAuMDc5MDYwOTA1NCwxMzIuODEwODAyIEMyLjU2NjI3OTU4LDIwMC4xNDU0ODggNTcuMTA3Mjc3MiwyNTQuMTIzNTEgMTI0LjYyNzA2MywyNTUuODgxOTUgQzE1Ny44NjAyMTIsMTkxLjg2NTI2MiAxMzguNTI3OTk4LDExOC4yMDE3NjQgODQuNzUyMDEwOCw3Ny4zNjc3NDE5IEw4NC43NTIwMTA4LDc3LjM2Nzc0MTkgWiIgZmlsbD0iIzI4MTcwQiIgZmlsbC1ydWxlPSJub256ZXJvIiBvcGFjaXR5PSIwLjc1IiBtYXNrPSJ1cmwoI21hc2stMikiPiA8L3BhdGg+IDxwYXRoIGQ9Ik0xMjguNzQ3MTk0LDU0LjAwNDUyODQgQzExNy43NjIzMzYsNTkuNDk5OSAxMjguNzQ3MTk0LDgxLjQ3MDU5NjMgMTI4Ljc0NzE5NCw4MS40NzA1OTYzIEM5NS43NzQxNzksMTA4Ljk1NDMyMSAxMDIuNzc5OTg4LDE1NS44OTk3MTcgNjQuMzExNzk4MSwxNTUuODk5NzE3IEM0My4zNDE0NTUyLDE1NS44OTk3MTcgMjIuMDY5NTcyLDEzMS44MjI5MjMgMC4wNzkwNjA5MDU0LDExNy4wNzE2ODMgQy0wLjIwNDAzNTc4MSwxMjAuNTUwNjUzIC0wLjcwNjI5ODgyOCwxMjQuMDQ0MTQ2IC0wLjcwNjI5ODgyOCwxMjcuNTk2MDk3IEMtMC43MDYyOTg4MjgsMTc1LjY5MTE0NCAyNS41NTY1NzUzLDIxNy41MjA0NiA2NC43MTMzNzg5LDIzOS40OTMzMTQgQzc1LjY2NjA2MiwyMzguMTEzNzEzIDg3LjU1MjAxNTMsMjM1LjM3ODg2NiA5NS43NjQzNjk2LDIyOS45MDA3NTkgQzEzOC45MDk2MzksMjAxLjEzNTkzOCAxNDkuNjIxNDA1LDE0Ni40MDk3OTggMTY3LjI1MDY5NywxMTkuOTc1NjY5IEMxNzguMjI5NjY5LDEwMy40ODM2NjkgMjI5LjY4NDk5MywxMDQuOTE0NjUxIDIzMy4xNTc0ODksOTcuOTY1NTM5NiBDMjM4LjY1ODc0Niw4Ni45NzQ3OTYzIDIyMi4xNjY5NDIsNzAuNDk5NDcxNyAyMTYuNjY1Njg1LDcwLjQ5OTQ3MTcgTDE3Mi43MDgyMDUsNzAuNDk5NDcxNyBDMTY5LjYzNjkxLDcwLjQ5OTQ3MTcgMTY0LjgxMTEyMiw2NS4wNDMxNDExIDE2MS43MzM5NDEsNjUuMDQzMTQxMSBMMTQ1LjI0MjEzNyw2NS4wNDMxNDExIEMxNDUuMjQyMTM3LDY1LjA0MzE0MTEgMTM3LjkzNTE4Miw1My45NTgwMzIyIDEzMS40NDc4OTMsNTMuNTE3MjAxOCBDMTMwLjUxNzk5LDUzLjQ1MTA4NzEgMTI5LjYxNzI2LDUzLjU2OTc3OTcgMTI4Ljc0NzE5NCw1NC4wMDQ1Mjg0IFoiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNtYXNrLTIpIj4gPC9wYXRoPiA8L2c+IDwvZz4KDTwvc3ZnPg==";
// src/plugins/connect/img/java-logo.svg
var java_logo_default = "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDMyIDMyIj48cGF0aCBkPSJNMTEuNjIyIDI0Ljc0cy0xLjIzLjc0OC44NTUuOTYyYzIuNTEuMzIgMy44NDcuMjY3IDYuNjI1LS4yNjdhMTAuMDIgMTAuMDIgMCAwIDAgMS43NjMuODU1Yy02LjI1IDIuNjcyLTE0LjE2LS4xNi05LjI0NC0xLjU1em0tLjgtMy40NzNzLTEuMzM2IDEuMDE1Ljc0OCAxLjIzYzIuNzI1LjI2NyA0Ljg2Mi4zMiA4LjU1LS40MjdhMy4yNiAzLjI2IDAgMCAwIDEuMjgyLjgwMWMtNy41MzQgMi4yNDQtMTUuOTc2LjIxNC0xMC41OC0xLjYwM3ptMTQuNzQ3IDYuMDlzLjkwOC43NDgtMS4wMTUgMS4zMzZjLTMuNTggMS4wNy0xNS4wMTQgMS4zOS0xOC4yMiAwLTEuMTIyLS40OCAxLjAxNS0xLjE3NSAxLjctMS4yODIuNjk1LS4xNiAxLjA3LS4xNiAxLjA3LS4xNi0xLjIzLS44NTUtOC4xNzUgMS43NjMtMy41MjYgMi41MSAxMi43NyAyLjA4NCAyMy4yOTYtLjkwOCAxOS45ODMtMi40MDR6TTEyLjIgMTcuNjMzcy01LjgyNCAxLjM5LTIuMDg0IDEuODdjMS42MDMuMjE0IDQuNzU1LjE2IDcuNjk0LS4wNTMgMi40MDQtLjIxNCA0LjgxLS42NCA0LjgxLS42NHMtLjg1NS4zNzQtMS40NDMuNzQ4Yy01LjkzIDEuNTUtMTcuMzEyLjg1NS0xNC4wNTItLjc0OCAyLjc3OC0xLjMzNiA1LjA3Ni0xLjE3NSA1LjA3Ni0xLjE3NXptMTAuNDIgNS44MjRjNS45ODQtMy4xIDMuMjA2LTYuMDkgMS4yODItNS43MTctLjQ4LjEwNy0uNjk1LjIxNC0uNjk1LjIxNHMuMTYtLjMyLjUzNC0uNDI3YzMuNzk0LTEuMzM2IDYuNzg2IDQuMDA3LTEuMjMgNi4wOSAwIDAgLjA1My0uMDUzLjEwNy0uMTZ6bS05LjgzIDguNDQyYzUuNzcuMzc0IDE0LjU4Ny0uMjE0IDE0LjgtMi45NCAwIDAtLjQyNyAxLjA3LTQuNzU1IDEuODctNC45MTYuOTA4LTExLjAwNy44LTE0LjU4Ny4yMTQgMCAwIC43NDguNjQgNC41NDIuODU1eiIgZmlsbD0iIzRlNzg5NiIvPjxwYXRoIGQ9Ik0xOC45OTYuMDAxczMuMzEzIDMuMzY2LTMuMTUyIDguNDQyYy01LjE4MyA0LjExNC0xLjE3NSA2LjQ2NSAwIDkuMTM3LTMuMDQ2LTIuNzI1LTUuMjM2LTUuMTMtMy43NC03LjM3M0MxNC4yOTQgNi44OTMgMjAuMzMyIDUuMyAxOC45OTYuMDAxem0tMS43IDE1LjMzNWMxLjU1IDEuNzYzLS40MjcgMy4zNjYtLjQyNyAzLjM2NnMzLjk1NC0yLjAzIDIuMTM3LTQuNTQyYy0xLjY1Ni0yLjQwNC0yLjk0LTMuNTggNC4wMDctNy41ODcgMCAwLTEwLjk1MyAyLjcyNS01LjcxNyA4Ljc2M3oiIGZpbGw9IiNmNTgyMTkiLz48L3N2Zz4K";
// src/plugins/connect/img/jetty-logo.svg
var jetty_logo_default = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgaWQ9InN2ZzIiIHNvZGlwb2RpOnZlcnNpb249IjAuMzIiIGlua3NjYXBlOnZlcnNpb249IjAuNDguNSByMTAwNDAiIHZlcnNpb249IjEuMCIgc29kaXBvZGk6ZG9jbmFtZT0iamV0dHktYXZhdGFyLnN2ZyIgaW5rc2NhcGU6b3V0cHV0X2V4dGVuc2lvbj0ib3JnLmlua3NjYXBlLm91dHB1dC5zdmcuaW5rc2NhcGUiIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iamV0dHktYXZhdGFyLnBuZyIgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjI4Ljc5OTk5OSIgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjI4Ljc5OTk5OSI+CiAgPGRlZnMgaWQ9ImRlZnM0Ij4KICAgIDxpbmtzY2FwZTpwZXJzcGVjdGl2ZSBzb2RpcG9kaTp0eXBlPSJpbmtzY2FwZTpwZXJzcDNkIiBpbmtzY2FwZTp2cF94PSIwIDogNTI2LjE4MTA5IDogMSIgaW5rc2NhcGU6dnBfeT0iMCA6IDEwMDAgOiAwIiBpbmtzY2FwZTp2cF96PSI3NDQuMDk0NDggOiA1MjYuMTgxMDkgOiAxIiBpbmtzY2FwZTpwZXJzcDNkLW9yaWdpbj0iMzcyLjA0NzI0IDogMzUwLjc4NzM5IDogMSIgaWQ9InBlcnNwZWN0aXZlMTAiIC8+CiAgICA8aW5rc2NhcGU6cGVyc3BlY3RpdmUgaWQ9InBlcnNwZWN0aXZlMjM5MCIgaW5rc2NhcGU6cGVyc3AzZC1vcmlnaW49IjM3Mi4wNDcyNCA6IDM1MC43ODczOSA6IDEiIGlua3NjYXBlOnZwX3o9Ijc0NC4wOTQ0OCA6IDUyNi4xODEwOSA6IDEiIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIgaW5rc2NhcGU6dnBfeD0iMCA6IDUyNi4xODEwOSA6IDEiIHNvZGlwb2RpOnR5cGU9Imlua3NjYXBlOnBlcnNwM2QiIC8+CiAgICA8ZmlsdGVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImZpbHRlcjM4NTMiCiAgICAgICB4PSItMC4xNTgyNjk2MyIKICAgICAgIHdpZHRoPSIxLjMxNjUzOTMiCiAgICAgICB5PSItMC4yMDU4NDAxMyIKICAgICAgIGhlaWdodD0iMS40MTE2ODAzIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIyNi4yOTI4NjUiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjM4NTUiIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iIzUyNTI1MiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAwMDAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIwLjg3NDI4NTcxIgogICAgIGlua3NjYXBlOmN4PSIxNzEuNTY4NjMiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMCIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIyIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAyNiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMCIKICAgICBzaG93Z3VpZGVzPSJ0cnVlIgogICAgIGlua3NjYXBlOmd1aWRlLWJib3g9InRydWUiCiAgICAgc2hvd2JvcmRlcj0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTciPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIyIgogICAgIGlua3NjYXBlOmxhYmVsPSJKZXR0eSIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEuODQ1NjA2LC0yMjEuMzE5NzgpIj4KICAgIDxnCiAgICAgICBpZD0iZzM4NTciCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjg4NjY5MDk1LDAsMCwwLjg4NjY5MDk1LDI1LjE1ODUxNSw0OC4zODQ0NikiPgogICAgICA8cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDMwMDQiCiAgICAgICAgIGQ9Im0gODQuMzcyMDQsMjY4LjAzODUxIGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgLTEyLjE4NzUsOS42ODc1IGwgLTEwLjMxMjUsNDQuNzUgYSAxMi41MDEyNSwxMi41MDEyNSAwIDAgMCAwLjcxODc1LDcuNzUgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgLTQuMDYyNSw2LjY4NzUgTCAxOC42ODQ1NCw1MDkuNDQ0NzYgYyAtMC45Mzk5OSwwLjA3OTMgLTEuNzUzMDYsMC4xNjEyNyAtMy4yMTg3NSwwLjIxODc1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgLTEyLDEyLjE4NzUgbCAtMC45Njg3NSwzOS45Mzc1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgMTIuNTMxMjUsMTIuODEyNSBsIDY3LjQwNjI1LC0wLjI1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgMC42MjUsMCBjIDguNzQ2MjksLTAuNDgyOTIgMTcuNjY0NjEsLTMuNzc0MDIgMjQuMjE4NzUsLTEwLjE1NjI1IDYuNTU0MTQsLTYuMzgyMjMgMTAuNjQ3MjEsLTE0LjkwMzk0IDEzLjY4NzUsLTI1LjI1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgMC4xODc1LC0wLjY4NzUgbCA1LjYyNSwtMjQuMzEyNSAzLjc1LDAgLTQuMDYyNSw4LjY4NzUgYSAxMi41MDEyNSwxMi41MDEyNSAwIDAgMCAxMS4zNDM3NSwxNy43ODEyNSBsIDQyLjE1NjI1LDAgYSAxMi41MDEyNSwxMi41MDEyNSAwIDAgMCAxMS4zNDM3NSwtNy4yMTg3NSBsIDExNS4zNDM3NSwtMjQ3LjM3NSBhIDEyLjUwMTI1LDEyLjUwMTI1IDAgMCAwIC0xMS4zMTI1LC0xNy43ODEyNSBsIC00Mi4xODc1LDAgYSAxMi41MDEyNSwxMi41MDEyNSAwIDAgMCAtMTEuMzEyNSw3LjIxODc1IGwgLTI0LjU5Mzc1LDUyLjc1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgLTQuMzc1LC0wLjc4MTI1IGwgLTQzLjAzMTI1LDAgMTAuMTU2MjUsLTQzLjg3NSBhIDEyLjUwMTI1LDEyLjUwMTI1IDAgMCAwIC0xMi4xODc1LC0xNS4zMTI1IGwgLTgzLjQzNzUsMCB6IG0gMjYyLjE1NjI1LDAgYSAxMi41MDEyNSwxMi41MDEyNSAwIDAgMCAtMTEuMzEyNSw3LjIxODc1IGwgLTExNS4zNzUsMjQ3LjM3NSBhIDEyLjUwMTI1LDEyLjUwMTI1IDAgMCAwIDExLjM0Mzc1LDE3Ljc4MTI1IGwgNDIuMTU2MjUsMCBhIDEyLjUwMTI1LDEyLjUwMTI1IDAgMCAwIDExLjM0Mzc1LC03LjIxODc1IGwgMTE1LjM0Mzc1LC0yNDcuMzc1IGEgMTIuNTAxMjUsMTIuNTAxMjUgMCAwIDAgLTExLjMxMjUsLTE3Ljc4MTI1IGwgLTQyLjE4NzUsMCB6IG0gLTE5Ni43NSwxNDYuMjgxMjUgMjcuMjE4NzUsMCAtNS44NDM3NSwxMi41MzEyNSAtMjQuMjgxMjUsMCAyLjkwNjI1LC0xMi41MzEyNSB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZmlsdGVyOnVybCgjZmlsdGVyMzg1Myk7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIgLz4KICAgICAgPGcKICAgICAgICAgaWQ9ImczMDU4Ij4KICAgICAgICA8ZwogICAgICAgICAgIGlkPSJnMzAzMiIKICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzMuMTY5OTM1LDApIj4KICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICBpZD0icGF0aDI5OTYiCiAgICAgICAgICAgICBkPSJNIDEwNi4zMjIwNSwzMzkuNzM4OTIgNjUuODI1Mjg4LDUxNS4xNDk2NyBjIC0yLjQwNjUxNSw3LjA1OTExIC02LjA3MjMyMiw2LjY4MjIzIC0xNC4yNTQ0NzMsNy4wMDMxIGwgLTAuOTYyNjA2LDM5Ljk0ODE1IDY3LjM4MjQyMSwtMC4yNDA2NiBjIDEzLjA3NTQsLTAuNzIxOTUgMjEuMjI0MjgsLTguMTM0MzcgMjYuNTk4ODMsLTI2LjQyMzg4IGwgNDUuMTgwMzEsLTE5NS42OTc0NiB6IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZjMzkwZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MjguMTk0NzE3NDE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2Utb3BhY2l0eToxO3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgaWQ9InBhdGgyOTk0IgogICAgICAgICAgICAgZD0ibSAxMTkuOTg5NTEsMjgwLjUzODY0IC0xMC4zMzM5Myw0NC43NjExOSA4My40NDc3MiwwIDEwLjMzMzkzLC00NC43NjExOSB6IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZjMzkwZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MjguMTk0NzE3NDE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2Utb3BhY2l0eToxO3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgaWQ9InBhdGgzMDIwIgogICAgICAgICAgICAgZD0iTSAxMDYuMzIyMDUsMzM5LjczODkyIDY1LjgyNTI4OCw1MTUuMTQ5NjcgYyAtMi40MDY1MTUsNy4wNTkxMSAtNi4wNzIzMjIsNi42ODIyMyAtMTQuMjU0NDczLDcuMDAzMSBsIC0wLjk2MjYwNiwzOS45NDgxNSA2Ny4zODI0MjEsLTAuMjQwNjYgYyAxMy4wNzU0LC0wLjcyMTk1IDIxLjIyNDI4LC04LjEzNDM3IDI2LjU5ODgzLC0yNi40MjM4OCBsIDQ1LjE4MDMxLC0xOTUuNjk3NDYgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMzAxOCIKICAgICAgICAgICAgIGQ9Im0gMTE5Ljk4OTUxLDI4MC41Mzg2NCAtMTAuMzMzOTMsNDQuNzYxMTkgODMuNDQ3NzIsMCAxMC4zMzM5MywtNDQuNzYxMTkgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgIDwvZz4KICAgICAgICA8ZwogICAgICAgICAgIGlkPSJnMzA0NiIKICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjg3LjA5MTUsMCkiPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMjk4OCIKICAgICAgICAgICAgIGQ9Im0gNTQyLjcwMTgsMjgwLjUzODY0IC0xMTUuMzU5NywyNDcuMzg5NzYgNDIuMTcxOCwwIDExNS4zNTk3LC0yNDcuMzg5NzYgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI4LjE5NDcxNzQxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMzE5MyIKICAgICAgICAgICAgIGQ9Im0gNjM2LjA3NDYsMjgwLjUzODY0IC0xMTUuMzU5NywyNDcuMzg5NzYgNDIuMTcxOCwwIDExNS4zNTk3LC0yNDcuMzg5NzYgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI4LjE5NDcxNzQxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMzAxMiIKICAgICAgICAgICAgIGQ9Im0gNTQyLjcwMTgsMjgwLjUzODY0IC0xMTUuMzU5NywyNDcuMzg5NzYgNDIuMTcxOCwwIDExNS4zNTk3LC0yNDcuMzg5NzYgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzU5MmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMzMxNiIKICAgICAgICAgICAgIGQ9Im0gNjM2LjA3NDYsMjgwLjUzODY0IC0xMTUuMzU5NywyNDcuMzg5NzYgNDIuMTcxOCwwIDExNS4zNTk3LC0yNDcuMzg5NzYgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgIDwvZz4KICAgICAgICA8ZwogICAgICAgICAgIGlkPSJnMzA1MiIKICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjM5LjA1MjI4LDApIj4KICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICBpZD0icGF0aDI5OTIiCiAgICAgICAgICAgICBkPSJtIDM3MC42MjI1LDMzOS43Mzg5MiAtMTQuMzM0Miw2Mi4wODgwOSA4My43NDY3LDAgMTQuMzM0MiwtNjIuMDg4MDkgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI4LjE5NDcxNzQxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgIGlkPSJwYXRoMjk5MCIKICAgICAgICAgICAgIGQ9Im0gMzQ3LjYyMTIsNDM5LjM2ODY0IC0xNC4zMzQyLDYyLjA4ODA5IDgzLjc0NjYsMCAxNC4zMzQyLC02Mi4wODgwOSB6IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZjMzkwZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MjguMTk0NzE3NDE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2Utb3BhY2l0eToxO3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgaWQ9InBhdGgzMDE2IgogICAgICAgICAgICAgZD0ibSAzNzAuNjIyNSwzMzkuNzM4OTIgLTE0LjMzNDIsNjIuMDg4MDkgODMuNzQ2NywwIDE0LjMzNDIsLTYyLjA4ODA5IHoiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojZmMzOTBlO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICBpZD0icGF0aDMwMTQiCiAgICAgICAgICAgICBkPSJtIDM0Ny42MjEyLDQzOS4zNjg2NCAtMTQuMzM0Miw2Mi4wODgwOSA4My43NDY2LDAgMTQuMzM0MiwtNjIuMDg4MDkgeiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiNmYzM5MGU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==";
// src/plugins/connect/img/tomcat-logo.svg
var tomcat_logo_default = "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1OTUuMjc5IiBoZWlnaHQ9IjQyNCIgdmlld0JveD0iMCAyMDkuNDQ1IDU5NS4yNzkgNDI0IiB4bWxuczp2PSJodHRwczovL3ZlY3RhLmlvL25hbm8iPjxwYXRoIGZpbGw9IiNkMWE0MWEiIGQ9Ik01MzEuNjQgNTk0LjQ0NUw0MzcuMDM3IDQ5My43NGwtMTAuODk2IDcuMjA1Yy01Mi40MzEtMzAuOTA4LTkxLjY2MS03NS40OS0xMTEuNzg2LTE0Mi4zNDUtNzEuNjYyIDE3LjYyOS0xNTUuMjE0IDYyLjg0NS0yMDkuMDQ3IDEyNC4wMTMuMDEuMDEyLjAyMS4wMjMuMDMuMDM3LTUzLjQ1OSA1Ny44NjktODcuOTEgMTEyLjMyNC05Ny4wMzMgMTMyLjEyOWw1Mi4xNjkuMzM0Yy0yLjAxNS0yMy40MjQgNC4wOS00Mi45NTEgMjAtNjQuNjY4IDcyLjE2Ny05OC41IDM0My4xNjcgMTUgNDUwLjE2NyA3Ni41bDU3LS41Yy0uMDAxIDAtOC41MDEtMzcuNS01Ni4wMDEtMzJoMHoiLz48cGF0aCBmaWxsPSIjZmZkYzc2IiBkPSJNNDI4LjE0IDUwMC45NDVjLTExMC4xMjctNTQuOTQ5LTE0MC0xODktMTEzLTI4MSAwIDAgMjAuNSA5LjUgNDAgNTUuNSA0NC42NDYtMTIuNzk5IDk2LjY2Ny0xNC4wMDEgMTQyLTEuNSAwIDAgNS41LTM2IDM4LjUtNTMgNC45OTIgMjEuMzM5IDM4IDE5MS0xMDcuNSAyODB6Ii8+PHBhdGggZD0iTTIyOS42MTcgMzk0LjU2OUwyNjEuNjcxIDM3OWwxOC4zMTcgNDkuNDU1LTUwLjM3MS0zMy44ODZ6bS0zNS45NDUgMTguMDg4bDE5LjkxOS0xMS45MDYgMTguMzE2IDMyLjI4NC0zOC4yMzUtMjAuMzc4em0tMzguNjkzIDI0Ljk1NmwxNy4zOTktMTEuNDQ3IDguNyAyOS43NjQtMjYuMDk5LTE4LjMxN3ptMzA4LjE3MiA4Mi40MjRsLTExLjQ0OC0xMS40NDctMTYuMDI2IDI1LjE4NCAyNy40NzQtMTMuNzM3em0yMi44OTYgMjcuNDc0bC05LjE1OC05LjE1OC0yNy40NzYgMTguMzE2IDM2LjYzNC05LjE1OHpNMzE1LjY0IDM0Ni44NjJsLTEuMzExLTE4LjIzMSAzMi4wNTUgMTYuMjU2LTMwLjc0NCAxLjk3NXptMTAuMTM5IDI2LjY0NGwtNi4zODktMTMuNTYxIDIyLjQxNSA5LjIxMS0xNi4wMjYgNC4zNXptMjEwLjYzOC0xOS4yMzNsNC41NzgtMTMuNzM2LTI1LjE4NSAxMC41MzEgMjAuNjA3IDMuMjA1em0tOS4xNTggMjcuOTMzbDIuMjg5LTExLjIxOS0xOC4zMTYgNS40OTUgMTYuMDI3IDUuNzI0em0tMjIyLjA4NiAzNS40ODhoNTkuOTg1djcuNDE5aC01OS45ODV2LTcuNDE5em0wLTE3Ljg1OWg1OS45ODV2Ny40MThoLTU5Ljk4NXYtNy40MTh6bTE4My4xNjMgMTcuODU5aDU5Ljk4NXY3LjQxOWgtNTkuOTg1di03LjQxOXptMC0xNy44NTloNTkuOTg1djcuNDE4aC01OS45ODV2LTcuNDE4eiIvPjxwYXRoIGQ9Ik01NDcuMjc3IDI4Ni4zMjNsLS4xLS4xNTFjLS4wNDItMTEuNTYyLTMuNjI3LTYwLjQzLTEwLjItNzMuODg0LTE3LjgzOCA2LjgxOS01MC4zMiAyOC45NjEtNTcuNTcyIDUxLjUzNy0zNS4xMzQtNS4yOTEtNzQuNzk5LTQuNjUyLTEwOS43MDYgMS4zODgtNS44MDItMjQuNC0zNC45MDUtNDIuODcxLTU2Ljg5Mi01My4zNjEtOS4yNzEgMTUuNzU4LTEzLjM5NiA1Mi4yMi0xMi4zMzEgNzguMjE3LS4wMzkuMDI3LS4wODMuMDUzLS4xMjIuMDgzIDQuMDggMTA4Ljc3NCA1Ny4xMTkgMTc2LjUwMiAxMjYuNDc4IDIxNy41NDkgNzEuNC00MS4wNDcgMTIyLjM5OS0xMjEuMDkgMTIwLjM1OC0yMjEuNDI3LjAyOS4wMTcuMDYxLjAzMS4wODcuMDQ5ek00MjcuODE2IDQ5My41OTljLTEwOS4wMjctNTQuNzI3LTEyOS42NTItMTkzLjE0Ny0xMTEuMDY0LTI2Ni44MDMgNS4xNjggMjguNTA1IDE0LjU1MiA0Ni4yOTEgMzQuOTA1IDU0Ljk1NyAxOC44OC01LjQ0NSA0MC44MjMtOC43MzkgNjMuMjYzLTkuNzY1bDE2LjE3OSAzNy40MTIgMTEuOTY4LTM3LjQ5N2MyMC43MDcuODI4IDQwLjkzIDMuNjM4IDU4LjY0NSA4LjU1NCAxOC42OTgtMTMuNjgzIDI2LjA2Ni0zNC42NjIgMjkuOTE5LTUyLjkwNiA0Ljk0IDIxLjI1NCA0LjM3NSA2Ny4yNzIgNC4zOTcgNjcuMjcybC4xMzgtLjc1NUM1MzggMzg0LjU5NyA0OTIuMTg5IDQ1Ni42NiA0MjcuODE3IDQ5My42MDFsLS4wMDEtLjAwMnoiLz48cGF0aCBkPSJNNTgzLjQ0NCA2MDcuMDIxYy0xMS4xOTctMTIuNjExLTMzLjA5NC0xOC41NjMtNTEuNDUzLTE4LjEyOS0xMy4wMTEtMTUuNTc2LTg4LjM5OC05NS41NDktODguMzk4LTk1LjU0OWwtNS4yMzUgNi42MTMgOTEuMTIgOTguNTEgMy45NDMtLjM0YzI0LjcwNy0yLjEyOSAzOC43NTkgMTEuMzU3IDQyLjYxMyAxNS41NTMgMi43MjEgMy4wOCA0LjM3NCA1Ljg4MyA1LjI4MiA4LjA3NGgtNTAuMDkzYy0xMTQuNjkzLTYwLjIwMS0yMTUuNTYtMTAyLjYxNy0zMjEuODY1LTExMS45NjYuMjM1LTE0Ljk4IDIuODc4LTMxLjkyNCA3Ljk3OC01MC44NTJsLTkuODM4LTIuNjkxYy01LjIzNCAxOS40My03Ljk3OCAzNi45NDMtOC4yOTYgNTIuNjc4YTUwNi4wMSA1MDYuMDEgMCAwIDAtMzMuNzcyLTEuMTI5Yy05LjYxIDAtMTguMzYxLjg5OC0yNi4yOTQgMi40NjMtMTAuNDAzLTEwLjQ2Ny0xOS4yNjYtMjAuNDM0LTI2Ljc0Ni0yOS44NzMgNDkuNjQtNTEuOTk0IDEzMS42OTItOTkuMTk3IDIwMi44NjUtMTE2LjUyN2wtMi4zMTMtMTAuMDM0Yy03Ni42MTIgMTguNTg1LTE2MC40NzkgNjkuMDk1LTIwNy4xNzEgMTE4LjEyNC0yMS42NjktMjkuNDE4LTMwLjM3My01My41OS0zMi44NjYtNzEuODMzLTMuMjE4LTIzLjAzMiAyLjI2LTQ0LjIzOSAxNS44NjYtNjEuMzQzIDIxLjMwNy0yNi42OCA1MS40NTMtMjguNTA1IDgyLjczMS0yMy4yNi0uNjA3IDQuOTQ4LjAzOSA5LjY2OSAyLjAwNiAxMi41ODcgOC4yMjkgMTIuMjIzIDUyLjM1OSAxNi41MzQgNzguODgxIDQuNjc1LTE5LjQ5My0yNy4zNjQtNTguOTM0LTQwLjgxOC02OS44MTMtMzUuNTc0LTMuNjI3IDEuNzc5LTYuMzQ3IDUuMDQtOC4yMjkgOC44Ny0xMC43NjctMS45MzYtMjEuNDQyLTMuMzc1LTI5LjI0LTMuMzI5LTI3LjQyNy4yMDItNDguNTA3IDkuODUxLTY0LjE0NiAyOS40MTctMTUuNDEzIDE5LjI2OS0yMS42NDYgNDMuMDk5LTE4LjAyIDY5LjA5NiAzLjQ0NCAyNC42MjcgMTUuNTQ5IDUwLjg1MiAzNS44MTIgNzcuOTg5bC05Ljc2OCAxMC43NjRjLTQ5LjQxMyA1NS42NDEtODUuNjggMTE1LjYxNy04NS42OCAxMjUuNDJ2NS4xMzFoNjUuMjc5bC0xLjE0NC02LjA4OGMtMy42OTUtMTkuNjExIDMuNjcyLTQ0LjI0IDE4Ljc2Ny02Mi40ODIgOS40NzUtMTEuNDkyIDI1LjE2LTI0LjYyOSA0OS44NjYtMzAuNzg1IDIxLjg5NiAyMS41MDQgNDkuODY2IDQ0LjI0IDgwLjkyIDY2LjM1OWg0OC41MDZ2LTUuMTMxYzAtNS43OTMtMi44NTUtMTAuODU1LTguMDIzLTE0LjI3NS03LjY2Mi01LjAzOS0xOS40OTMtNS43NDYtMzAuMzczLTIuMDEyLTEwLjM1OC0xMS42MDUtMTYuMTg1LTI3LjEzNy0xNy40MzEtNDYuMjkxIDEwNS4zOTggOS4zOTUgMjA2LjAzOCA1Mi4yMjEgMzE5LjU5NyAxMTEuOTY3aDYyLjU1OWwtLjAwMi00LjA2M2MtLjk5Ny0xMi04LjM4LTIwLjczNi04LjM4LTIwLjczNmwtLjAwMi4wMDJ6TTc3Ljk4MSA1NDUuOTA2Yy0xNS40NTggMTguNzY4LTIzLjU3MyA0My41NTctMjEuNzYgNjQuNzY0SDE0Ljk2OGM4LjI3My0xNy45OTIgNDEuMjU0LTcwLjAwOCA4OS43NTktMTIyLjY4NiA2LjcxIDguMzQ4IDE0LjE2NyAxNi43NjIgMjIuMzcyIDI1LjMxMy0yMy44MDEgNy4yMjktMzkuNjY2IDIwLjY2LTQ5LjQxMyAzMi42MDloLjI5NXptMjg4LjgyMi0yMjEuNTE1bC0uMDAzLS4wMDEtLjAwMi4wMDUuMDA1LS4wMDR6Ii8+PHBhdGggZD0iTTUwNy4yNzYgMzI1LjIzOHYtNi42ODdjLTI0Ljc3MiAwLTM5LjYwOSA5Ljc5OS00Ni43MDcgMzAuNjhoLTUzLjU3NWMzLjc0Ni0xNi43MTMgNC4zODgtMzMuMTA2LTEuMTMxLTQyLjU4NS0zLjExMy01LjMzNC04LjAxNC04LjE3My0xNC4xNzItOC4xNzMtMjIuMDcxIDAtMzAuNzgxIDIyLjYyMS0zMS4xMzggMjMuNTgybDYuMjQ3IDIuMzM0Yy4yNDktLjgyNyA3LjU1Ni0xOS4yMDQgMjQuOTU0LTE5LjIwNCAzLjgwMSAwIDYuNDcxIDEuNTM0IDguNDAyIDQuODU0IDQuNTIgNy43ODQgMy43ODYgMjMuMDc4LjAzMSAzOS4xNTFoLTMwLjQ1MXY2LjY4NmwyOC45NTkuMDI3Yy0zLjA5MSAxMC45NjctNy40MTggMjEuNzk2LTEyLjI5NCAzMC40NTFsLTEuNTc4IDIuNzcxIDM4LjIzNSAyNC4wNC0yMS40NzcgMTQuMTUgMy42ODcgNS41ODYgMjQuMDQxLTE1LjgyMSAyNS44NzEgMTYuODk1IDMuNTQ5LTUuNjUyLTI0LjA0LTE0Ljg2IDM3Ljc3Ny0yNC40OTljLS4wMTMtLjAxNS0uMDItLjAyOS0uMDI5LS4wNDJsLS4xMy0uMDc2LjA0My0uMDA3Yy03LjkyLTExLjY3NC0xMC40MTctMjEuNjU1LTcuMTIzLTMyLjk2MmwzMS4yMTkuMDQxLjA2Ny02LjY0aC0yOS4wNzdjNS40OTYtMTIuNjYxIDEzLjA1Mi0yNC4wNCAzOS44NC0yNC4wNGgwem0tNzguMjQgODMuNzc5bC0yOC4xNi0xNy43NDQgNTUuMTc4LjAxNC0yNy4wMTggMTcuNzNoMHptMjkuMzk1LTUzLjExNGMtMi4zODEgNy41NTUtMS40MTkgMTguOTM1IDQuNDE5IDI4LjYxOWgtNjcuOTk5YzQuMTQ0LTguMjg4IDcuOTY4LTE4LjM4NSAxMC43NjEtMjguNjE5aDUyLjgxOXoiLz48L3N2Zz4=";
// src/plugins/connect/discover/discover-service.ts
var PRODUCT_LOGO = {
camel: camel_logo_default,
jetty: jetty_logo_default,
tomcat: tomcat_logo_default,
generic: java_logo_default
};
var DiscoverService = class {
hasDiscoveryMBean() {
return _chunkXX7SXVXKjs.workspace.treeContainsDomainAndProperties("jolokia", { type: "Discovery" });
}
hasLocalMBean() {
return _chunkXX7SXVXKjs.workspace.treeContainsDomainAndProperties("hawtio", { type: "JVMList" });
}
async discoverAgents() {
const discoveryMBean = (await _chunkXX7SXVXKjs.workspace.findMBeans("jolokia", { type: "Discovery" }))[0];
if (!_optionalChain([discoveryMBean, 'optionalAccess', _2 => _2.objectName])) {
return [];
}
const agents = await _chunkXX7SXVXKjs.jolokiaService.execute(discoveryMBean.objectName, "lookupAgentsWithTimeout(int)", [
10 * 1e3
]);
await this.fetchMoreJvmDetails(agents);
return agents;
}
async listJvms() {
const jvmListMBean = (await _chunkXX7SXVXKjs.workspace.findMBeans("hawtio", { type: "JVMList" }))[0];
if (!_optionalChain([jvmListMBean, 'optionalAccess', _3 => _3.objectName])) {
return [];
}
return await _chunkXX7SXVXKjs.jolokiaService.execute(jvmListMBean.objectName, "listLocalJVMs()");
}
async fetchMoreJvmDetails(agents) {
for (const agent of agents) {
if (!agent.url || agent.secured) {
continue;
}
const jolokia = _chunkXX7SXVXKjs.connectService.createJolokia(this.agentToConnection(agent));
agent.startTime = await jolokia.getAttribute("java.lang:type=Runtime", "StartTime");
if (!this.hasName(agent)) {
agent.command = await jolokia.getAttribute(
"java.lang:type=Runtime",
"SystemProperties",
"sun.java.command"
);
}
}
}
hasName(agent) {
return [agent.server_vendor, agent.server_product, agent.server_version].every((s) => !_chunkFB4CIZA4js.isBlank.call(void 0, s));
}
productLogo(agent) {
if (_optionalChain([agent, 'access', _4 => _4.command, 'optionalAccess', _5 => _5.startsWith, 'call', _6 => _6("main.CamelJBang")])) {
return PRODUCT_LOGO.camel;
}
return _nullishCoalesce(PRODUCT_LOGO[_nullishCoalesce(_optionalChain([agent, 'access', _7 => _7.server_product, 'optionalAccess', _8 => _8.toLowerCase, 'call', _9 => _9()]), () => ( "generic"))], () => ( PRODUCT_LOGO.generic));
}
productLogoJvm(jvm) {
if (jvm.displayName.startsWith("main.CamelJBang")) {
return PRODUCT_LOGO.camel;
}
return PRODUCT_LOGO.generic;
}
agentToConnection(agent) {
const conn = {
..._chunkXX7SXVXKjs.INITIAL_CONNECTION,
id: agent.agent_id ? `discover-${agent.agent_id}` : "",
name: _nullishCoalesce(agent.agent_description, () => ( `discover-${agent.agent_id}`))
};
if (!agent.url) {
_chunkXX7SXVXKjs.log2.warn("No URL available to connect to agent:", agent);
return conn;
}
const url = new URL(agent.url);
conn.scheme = this.schemeFromUrl(url);
conn.host = url.hostname;
conn.port = parseInt(url.port);
conn.path = url.pathname;
_chunkXX7SXVXKjs.log2.debug("Discover - connection from agent:", conn);
return conn;
}
schemeFromUrl(url) {
const scheme = url.protocol.substring(0, url.protocol.length - 1);
return scheme === "http" || scheme === "https" ? scheme : "http";
}
jvmToConnection(jvm) {
const conn = { ..._chunkXX7SXVXKjs.INITIAL_CONNECTION, name: `local-${jvm.port}` };
if (!jvm.scheme || !jvm.hostname || jvm.port === 0 || !jvm.path) {
_chunkXX7SXVXKjs.log2.warn("Lack of information to connect to JVM:", jvm);
return conn;
}
conn.scheme = jvm.scheme === "http" || jvm.scheme === "https" ? jvm.scheme : "http";
conn.host = jvm.hostname;
conn.port = jvm.port;
conn.path = jvm.path;
_chunkXX7SXVXKjs.log2.debug("Discover - connection from JVM:", conn);
return conn;
}
isConnectable(jvm) {
return [jvm.scheme, jvm.hostname, jvm.path].every((s) => s && !_chunkFB4CIZA4js.isBlank.call(void 0, s)) && jvm.port !== 0;
}
async stopAgent(pid) {
const jvmListMBean = (await _chunkXX7SXVXKjs.workspace.findMBeans("hawtio", { type: "JVMList" }))[0];
if (!_optionalChain([jvmListMBean, 'optionalAccess', _10 => _10.objectName])) {
return;
}
_chunkXX7SXVXKjs.log2.debug("Discover - stop JVM agent:", jvmListMBean, pid);
await _chunkXX7SXVXKjs.jolokiaService.execute(jvmListMBean.objectName, "stopAgent(java.lang.String)", [pid]);
}
async startAgent(pid) {
const jvmListMBean = (await _chunkXX7SXVXKjs.workspace.findMBeans("hawtio", { type: "JVMList" }))[0];
if (!_optionalChain([jvmListMBean, 'optionalAccess', _11 => _11.objectName])) {
return;
}
_chunkXX7SXVXKjs.log2.debug("Discover - start JVM agent:", jvmListMBean, pid);
await _chunkXX7SXVXKjs.jolokiaService.execute(jvmListMBean.objectName, "startAgent(java.lang.String)", [pid]);
}
};
var discoverService = new DiscoverService();
// src/plugins/connect/discover/Discover.tsx
var _jsxruntime = require('react/jsx-runtime');
var Discover = () => {
const { connections, dispatch } = _react.useContext.call(void 0, ConnectContext);
const [agentDiscoverable, setAgentDiscoverable] = _react.useState.call(void 0, false);
const [jvmListable, setJvmListable] = _react.useState.call(void 0, false);
const [discovering, setDiscovering] = _react.useState.call(void 0, true);
const [agents, setAgents] = _react.useState.call(void 0, []);
const [jvms, setJvms] = _react.useState.call(void 0, []);
const [filter, setFilter] = _react.useState.call(void 0, "");
const [label, setLabel] = _react.useState.call(void 0, "Agent");
const [isSelectLabelOpen, setIsSelectLabelOpen] = _react.useState.call(void 0, false);
const [filteredAgents, setFilteredAgents] = _react.useState.call(void 0, []);
const [filteredJvms, setFilteredJvms] = _react.useState.call(void 0, []);
_react.useEffect.call(void 0, () => {
const isDiscoverable = async () => {
const discoverable = await discoverService.hasDiscoveryMBean();
setAgentDiscoverable(discoverable);
const listable = await discoverService.hasLocalMBean();
setJvmListable(listable);
if (!discoverable && listable) {
setLabel("JVM");
}
if (!discoverable && !listable) {
setDiscovering(false);
}
};
isDiscoverable();
}, []);
_react.useEffect.call(void 0, () => {
if (!discovering) {
return;
}
const discover = async () => {
const agents2 = await discoverService.discoverAgents();
_chunkXX7SXVXKjs.log2.debug("Discover - agents:", agents2);
setAgents(agents2);
setFilteredAgents(agents2);
const jvms2 = await discoverService.listJvms();
_chunkXX7SXVXKjs.log2.debug("Discover - JVMs:", jvms2);
setJvms(jvms2);
setFilteredJvms(jvms2);
setDiscovering(false);
};
discover();
}, [discovering]);
if (!agentDiscoverable && !jvmListable) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXX7SXVXKjs.HawtioEmptyCard, { message: "Agent discovery is not available" });
}
if (discovering) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXX7SXVXKjs.HawtioLoadingCard, { message: "Please wait, discovering agents..." });
}
const selectLabel = (event, value) => {
setLabel(value);
setIsSelectLabelOpen(!isSelectLabelOpen);
};
const applyFilter = () => {
const matchesIgnoringCase = (value) => typeof value === "string" && value.toLowerCase().includes(filter.toLowerCase());
const filteredAgents2 = agents.filter((agent) => Object.values(agent).some(matchesIgnoringCase));
setFilteredAgents(filteredAgents2);
const filteredJvms2 = jvms.filter((jvm) => Object.values(jvm).some(matchesIgnoringCase));
setFilteredJvms(filteredJvms2);
_chunkXX7SXVXKjs.log2.debug("Discover - apply filter:", filter, "agents:", filteredAgents2, "JVMs:", filteredJvms2);
};
const clearFilter = () => {
setFilter("");
setFilteredAgents(agents);
setFilteredJvms(jvms);
};
const reset = () => {
setAgents([]);
setFilteredAgents([]);
setJvms([]);
setFilteredJvms([]);
};
const refresh = (delay = false) => {
reset();
if (delay) {
setTimeout(() => setDiscovering(true), 100);
} else {
setDiscovering(true);
}
};
const connect = (conn) => {
_chunkXX7SXVXKjs.log2.debug("Discover - connect to:", conn);
if (connections[conn.id]) {
dispatch({ type: _chunkDJL65G6Gjs.UPDATE, id: conn.id, connection: conn });
} else {
dispatch({ type: _chunkDJL65G6Gjs.ADD, connection: conn });
}
_chunkXX7SXVXKjs.connectService.connect(conn);
};
const toolbar = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Toolbar, { id: "connect-discover-toolbar", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.ToolbarContent, { children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.ToolbarGroup, { id: "connect-discover-toolbar-filters", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ToolbarItem, { id: "connect-discover-toolbar-label", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Select,
{
id: "connect-discover-toolbar-label-select",
"aria-label": "Filter Label",
selected: label,
isOpen: isSelectLabelOpen,
onOpenChange: setIsSelectLabelOpen,
toggle: (toggleRef) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.MenuToggle, { ref: toggleRef, onClick: () => setIsSelectLabelOpen(!isSelectLabelOpen), children: label }),
onSelect: selectLabel,
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.SelectList, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.SelectOption, { value: "Agent", isDisabled: !agentDiscoverable, children: "Agent" }, "agent"),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.SelectOption, { value: "JVM", isDisabled: !jvmListable, children: "JVM" }, "jvm")
] })
}
) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ToolbarItem, { id: "connect-discover-toolbar-filter", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.SearchInput,
{
id: "connect-discover-toolbar-filter-input",
"aria-label": "Filter Agents",
placeholder: "Filter by text...",
value: filter,
onChange: (_, value) => setFilter(value),
onSearch: applyFilter,
onClear: clearFilter
}
) })
] }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ToolbarItem, { variant: "separator" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ToolbarItem, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "secondary", onClick: () => refresh(true), size: "sm", children: "Refresh" }) })
] }) });
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Card, { style: { marginBottom: "1rem" }, children: toolbar }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Gallery, { hasGutter: true, minWidths: { default: "400px" }, children: [
label === "Agent" && filteredAgents.map((agent, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AgentCard, { agent, connect }, `agent-${index}-${agent.agent_id}`)),
label === "JVM" && filteredJvms.map((jvm, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, JvmCard, { jvm, connect, refresh }, `jvm-${index}-${jvm.id}`))
] })
] });
};
var AgentCard = ({ agent, connect }) => {
const title = discoverService.hasName(agent) ? `${agent.server_vendor} ${agent.server_product} ${agent.server_version}` : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Content, { component: "pre", children: agent.command });
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Card, { isCompact: true, id: `connect-discover-agent-card-${agent.agent_id}`, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
_reactcore.CardHeader,
{
actions: {
actions: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Label, { color: "blue", children: "Agent" }),
hasNoOffset: false
},
children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
"img",
{
src: discoverService.productLogo(agent),
alt: agent.server_product,
style: { maxWidth: "30px", paddingRight: "0.5rem" }
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardTitle, { style: { whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: title })
]
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardBody, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionList, { isCompact: true, isHorizontal: true, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Agent ID" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: agent.agent_id })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Agent Version" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: agent.agent_version })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Agent Description" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: agent.agent_description })
] }),
agent.startTime && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "JVM Started" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: _chunkDJL65G6Gjs.formatTimestamp.call(void 0, new Date(agent.startTime)) })
] }),
agent.url && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Agent URL" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Content, { component: "a", href: agent.url, target: "_blank", children: agent.url }) })
] }),
!window.isSecureContext && agent.secured ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Alert,
{
variant: "danger",
isInline: true,
isPlain: true,
title: "Can't connect to secured agent in non-secure browsing context"
}
) : ""
] }) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardFooter, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Button,
{
variant: "primary",
onClick: () => connect(discoverService.agentToConnection(agent)),
size: "sm",
isDisabled: !window.isSecureContext && agent.secured,
children: "Connect"
}
) })
] });
};
var JvmCard = ({ jvm, connect, refresh }) => {
const stopAgent = () => {
discoverService.stopAgent(jvm.id);
refresh();
};
const startAgent = () => {
discoverService.startAgent(jvm.id);
refresh();
};
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Card, { isCompact: true, id: `connect-discover-jvm-card-${jvm.id}`, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
_reactcore.CardHeader,
{
actions: {
actions: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Label, { color: "green", children: "JVM" }),
hasNoOffset: false
},
children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
"img",
{
src: discoverService.productLogoJvm(jvm),
alt: jvm.alias,
style: { maxWidth: "30px", paddingRight: "0.5rem" }
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardTitle, { style: { whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: jvm.alias })
]
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardBody, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionList, { isCompact: true, isHorizontal: true, children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "PID" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: jvm.id })
] }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Name" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: jvm.displayName })
] }),
jvm.agentUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.DescriptionListGroup, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListTerm, { children: "Agent URL" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.DescriptionListDescription, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Content, { component: "a", href: jvm.agentUrl, target: "_blank", children: jvm.agentUrl }) })
] })
] }) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.CardFooter, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.ActionList, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ActionListItem, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_reactcore.Button,
{
variant: "primary",
onClick: () => connect(discoverService.jvmToConnection(jvm)),
size: "sm",
isDisabled: !discoverService.isConnectable(jvm),
children: "Connect"
}
) }),
jvm.agentUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ActionListItem, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "secondary", onClick: startAgent, size: "sm", children: "Start agent" }) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.ActionListItem, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "danger", onClick: stopAgent, size: "sm", children: "Stop agent" }) })
] })
] }) })
] });
};
// src/plugins/connect/login/ConnectLogin.tsx
var _deprecated = require('@patternfly/react-core/deprecated');
var ConnectLogin = () => {
const [isOpen, setIsOpen] = _react.useState.call(void 0, true);
const [username, setUsername] = _react.useState.call(void 0, "");
const [password, setPassword] = _react.useState.call(void 0, "");
const [loginFailed, setLoginFailed] = _react.useState.call(void 0, false);
const [loginFailedMessage, setLoginFailedMessage] = _react.useState.call(void 0, "");
const [isEnabled, setIsEnabled] = _react.useState.call(void 0, true);
const connectionName = _chunkXX7SXVXKjs.connectService.getCurrentConnectionName();
if (!connectionName) {
return null;
}
const reset = () => {
setLoginFailed(false);
setLoginFailedMessage("");
setIsEnabled(true);
};
const handleLogin = () => {
const login = async () => {
const result = await _chunkXX7SXVXKjs.connectService.login(username, password);
switch (result.type) {
case "success":
sessionStorage.removeItem("connect-login-redirect");
setLoginFailed(false);
_chunkXX7SXVXKjs.connectService.redirect();
break;
case "failure":
setLoginFailed(true);
setLoginFailedMessage("Incorrect username or password");
break;
case "session-expired":
setLoginFailed(true);
setLoginFailedMessage("Session expired. Re-login in main window.");
break;
case "throttled": {
const { retryAfter } = result;
setLoginFailed(true);
setLoginFailedMessage(`Login attempt blocked. Retry after ${_chunkDJL65G6Gjs.humanizeSeconds.call(void 0, retryAfter)}`);
setIsEnabled(false);
setTimeout(reset, retryAfter * 1e3);
break;
}
}
};
login();
};
const handleClose = () => {
setIsOpen(false);
window.close();
};
const actions = [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "primary", onClick: handleLogin, isDisabled: !isEnabled, children: "Log in" }, "login"),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactcore.Button, { variant: "link", onClick: handleClose, children: "Cancel" }, "cancel")
];
const title = `Log in to ${connectionName}`;
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _deprecated.Modal, { variant: "small", title, isOpen, onClose: handleClose, actions, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactcore.Form, { id: "connect-login-form", isHorizontal: true, onKeyUp: (e) => e.key === "Enter" && handleLogin(), children: [
loginFailed && /* @__PURE__ */