openc3-tool-base 5.10.0 → 5.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/tools/base/css/vuetify-2.7.1.min.css +9 -0
- data/tools/base/index-allow-http.html +3 -3
- data/tools/base/index.html +3 -3
- data/tools/base/js/import-map-overrides-3.0.0.js +1 -0
- data/tools/base/js/import-map-overrides.js.map +460 -1
- data/tools/base/js/regenerator-runtime-0.14.0.min.js +1 -0
- data/tools/base/js/systemjs-6.14.2.min.js +2 -0
- data/tools/base/js/systemjs-6.14.2.min.js.LICENSE.txt +3 -0
- data/tools/base/js/vuetify-2.7.1.min.js +2 -0
- data/tools/base/js/{vuetify-2.6.14.min.js.LICENSE.txt → vuetify-2.7.1.min.js.LICENSE.txt} +1 -1
- data/tools/base/openc3-tool-base.js +1 -1
- data/tools/base/openc3-tool-base.js.map +1 -1
- metadata +9 -8
- data/tools/base/css/vuetify-2.6.14.min.css +0 -9
- data/tools/base/js/import-map-overrides-2.4.1.js +0 -1
- data/tools/base/js/regenerator-runtime-0.13.11.min.js +0 -1
- data/tools/base/js/system-6.12.1.min.js +0 -1
- data/tools/base/js/vuetify-2.6.14.min.js +0 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"openc3-tool-base.js","mappings":"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","sources":["webpack://tool-base/webpack/runtime/load script","webpack://tool-base/../node_modules/axios/index.js","webpack://tool-base/../node_modules/axios/lib/adapters/xhr.js","webpack://tool-base/../node_modules/axios/lib/axios.js","webpack://tool-base/../node_modules/axios/lib/cancel/CancelToken.js","webpack://tool-base/../node_modules/axios/lib/cancel/CanceledError.js","webpack://tool-base/../node_modules/axios/lib/cancel/isCancel.js","webpack://tool-base/../node_modules/axios/lib/core/Axios.js","webpack://tool-base/../node_modules/axios/lib/core/AxiosError.js","webpack://tool-base/../node_modules/axios/lib/core/InterceptorManager.js","webpack://tool-base/../node_modules/axios/lib/core/buildFullPath.js","webpack://tool-base/../node_modules/axios/lib/core/dispatchRequest.js","webpack://tool-base/../node_modules/axios/lib/core/mergeConfig.js","webpack://tool-base/../node_modules/axios/lib/core/settle.js","webpack://tool-base/../node_modules/axios/lib/core/transformData.js","webpack://tool-base/../node_modules/axios/lib/defaults/index.js","webpack://tool-base/../node_modules/axios/lib/defaults/transitional.js","webpack://tool-base/../node_modules/axios/lib/env/data.js","webpack://tool-base/../node_modules/axios/lib/helpers/bind.js","webpack://tool-base/../node_modules/axios/lib/helpers/buildURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/combineURLs.js","webpack://tool-base/../node_modules/axios/lib/helpers/cookies.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAxiosError.js","webpack://tool-base/../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://tool-base/../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://tool-base/../node_modules/axios/lib/helpers/null.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseHeaders.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseProtocol.js","webpack://tool-base/../node_modules/axios/lib/helpers/spread.js","webpack://tool-base/../node_modules/axios/lib/helpers/toFormData.js","webpack://tool-base/../node_modules/axios/lib/helpers/validator.js","webpack://tool-base/../node_modules/axios/lib/utils.js","webpack://tool-base/../packages/openc3-tool-common/src/services/api.js","webpack://tool-base/../packages/openc3-tool-common/src/services/axios.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?5118","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?e84a","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?63f3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?5107","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?6ed4","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?cb88","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?c20c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?3ed1","webpack://tool-base/./node_modules/css-loader/dist/runtime/api.js","webpack://tool-base/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/public-path.js","webpack://tool-base/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss?743b","webpack://tool-base/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://tool-base/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://tool-base/external system \"single-spa\"","webpack://tool-base/external system \"vue\"","webpack://tool-base/external system \"vue-router\"","webpack://tool-base/external system \"vuetify\"","webpack://tool-base/external system \"vuex\"","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/webpack/bootstrap","webpack://tool-base/webpack/runtime/__system_context__","webpack://tool-base/webpack/runtime/compat get default export","webpack://tool-base/webpack/runtime/define property getters","webpack://tool-base/webpack/runtime/ensure chunk","webpack://tool-base/webpack/runtime/get javascript chunk filename","webpack://tool-base/webpack/runtime/hasOwnProperty shorthand","webpack://tool-base/webpack/runtime/make namespace object","webpack://tool-base/webpack/runtime/publicPath","webpack://tool-base/webpack/runtime/jsonp chunk loading","webpack://tool-base/webpack/runtime/nonce","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/1.js","webpack://tool-base/./src/App.vue?9dca","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?f377","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?53d5","webpack://tool-base/../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://tool-base/../node_modules/date-fns/esm/toDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/index.js","webpack://tool-base/../node_modules/date-fns/esm/format/index.js","webpack://tool-base/../node_modules/date-fns/esm/isValid/index.js","webpack://tool-base/../node_modules/date-fns/esm/isDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/subMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/addMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?34de","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?61eb","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://tool-base/../packages/openc3-tool-common/src/services/openc3-api.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?d240","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?fdce","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?c5a1","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?be73","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?5ac3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?8317","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?e43a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?892c","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?fc71","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?4a0a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?841b","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?acc1","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?3c27","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?97f9","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?1dea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?eaa2","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?0a7c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?83ba","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://tool-base/../node_modules/date-fns/esm/compareAsc/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfDay/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/assign/index.js","webpack://tool-base/../node_modules/date-fns/esm/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/util/AstroStatus.js","webpack://tool-base/../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack://tool-base/../packages/openc3-tool-common/src/services/cable.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue","webpack://tool-base/../node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?7f57","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?35f7","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?68ea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?9364","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?6931","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?2ffc","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?4315","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?fe83","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?4ede","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?ee4e","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?e59f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?054f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?bb40","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?c676","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?2259","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?e925","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?09ba","webpack://tool-base/src/App.vue","webpack://tool-base/./src/App.vue?b39b","webpack://tool-base/./src/App.vue","webpack://tool-base/./src/router.js","webpack://tool-base/../packages/openc3-tool-common/src/plugins/store.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/./src/plugins/vuetify.js","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?8f08","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?6e05","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?c50f","webpack://tool-base/./src/openc3-tool-base.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"tool-base:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n }\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_splash.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_variables.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_mixins.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_main.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_topbar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_sidebar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_profile.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_menu.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_content.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_footer.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_responsive.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_utils.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_dashboard.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_overrides.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\",\".splash-screen {\\n width: 100%;\\n height: 100%;\\n position: fixed;\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n\\n .splash-container {\\n width: 40px;\\n height: 40px;\\n margin: 0px auto;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -20px;\\n margin-top: -20px;\\n\\n }\\n\\n .splash-double-bounce1, .splash-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n border-radius: 50%;\\n background-color: $topbarItemColor;\\n opacity: 0.6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n -webkit-animation: splash-bounce 2.0s infinite ease-in-out;\\n animation: splash-bounce 2.0s infinite ease-in-out;\\n }\\n\\n .splash-double-bounce2 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s;\\n }\\n\\n @-webkit-keyframes splash-bounce {\\n 0%, 100% { -webkit-transform: scale(0.0) }\\n 50% { -webkit-transform: scale(1.0) }\\n }\\n\\n @keyframes splash-bounce {\\n 0%, 100% {\\n transform: scale(0.0);\\n -webkit-transform: scale(0.0);\\n } 50% {\\n transform: scale(1.0);\\n -webkit-transform: scale(1.0);\\n }\\n }\\n}\\n\",\"/* General */\\n$fontSize: 14px;\\n$bodyBgColor: #edf0f5;\\n$textColor: #333333;\\n$textSecondaryColor: #707070;\\n$borderRadius: 3px;\\n$dividerColor: #e3e3e3;\\n$transitionDuration: 0.2s;\\n$maskBgColor: #424242;\\n$focusShadowColor: #8dcdff;\\n\\n/* Menu Common */\\n$menuitemBadgeBgColor: #007be5;\\n$menuitemBadgeColor: #ffffff;\\n$submenuFontSize: 13px;\\n$menuitemActiveRouteColor: rgb(77, 172, 255);\\n\\n/* Menu Light */\\n$menuBgColorFirst: #f3f4f9;\\n$menuBgColorLast: #d7dbe8;\\n$menuitemColor: #232428;\\n$menuitemHoverColor: #0388e5;\\n$menuitemActiveColor: #0388e5;\\n$menuitemActiveBgColor: #ffffff;\\n$menuitemBorderColor: rgba(207, 211, 224, 0.6);\\n\\n/* Menu Dark */\\n$menuDarkBgColorFirst: rgb(0, 23, 36);\\n$menuDarkBgColorLast: rgb(0, 54, 86);\\n$menuitemDarkColor: #ffffff;\\n$menuitemDarkHoverColor: rgb(0, 90, 143);\\n$menuitemDarkActiveColor: rgb(77, 172, 255);\\n$menuitemDarkActiveBgColor: rgb(0, 36, 57);\\n$menuitemDarkBorderColor: rgba(52, 56, 65, 0.6);\\n\\n/* Topbar */\\n$topbarLeftBgColor: rgb(0, 23, 36);\\n$topbarRightBgColor: rgb(0, 23, 36);\\n$topbarItemBadgeBgColor: #ef6262;\\n$topbarItemBadgeColor: #ffffff;\\n$topbarItemColor: #ffffff;\\n$topbarItemHoverColor: #c3e8fb;\\n$topbarSearchInputBorderBottomColor: #ffffff;\\n$topbarSearchInputColor: #ffffff;\\n\\n/* Footer */\\n$footerBgColor: rgb(24, 38, 53);\\n\",\"// Icon Override Mixin\\n@mixin icon-override($icon) {\\n &:before {\\n content: $icon;\\n }\\n}\\n\\n// === MIXINS === //\\n@mixin border-radius($val) {\\n -moz-border-radius: $val;\\n -webkit-border-radius: $val;\\n border-radius: $val;\\n}\\n\\n@mixin border-radius-right($val) {\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val; \\n}\\n\\n@mixin border-radius-left($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n}\\n\\n@mixin border-radius-top($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n}\\n\\n@mixin border-radius-bottom($val) {\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val;\\n}\\n\\n@mixin linear-gradient($top, $bottom){\\n background: $top; /* Old browsers */\\n background: -moz-linear-gradient(top, $top 0%, $bottom 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(top, $top 0%,$bottom 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(top, $top 0%,$bottom 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(top, $top 0%,$bottom 100%); /* IE10+ */\\n background: linear-gradient(to bottom, $top 0%,$bottom 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 ); /* IE6-9 */\\n}\\n\\n@mixin linear-gradient-left($left, $right){\\n background: $left; /* Old browsers */\\n background: -moz-linear-gradient(left, $left 0%, $right 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, right top, color-stop(0%,$left), color-stop(100%,$right)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(left, $left 0%,$right 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(left, $left 0%,$right 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(left, $left 0%,$right 100%); /* IE10+ */\\n background: linear-gradient(to right, $left 0%,$right 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 ); /* IE6-9 */\\n}\\n\\n@mixin transition($transition...) {\\n -moz-transition: $transition;\\n -o-transition: $transition;\\n -webkit-transition: $transition;\\n transition: $transition;\\n}\\n\\n@mixin transition-property($property) {\\n -webkit-transition-property: $property;\\n -moz-transition-property: $property;\\n -ms-transition-property: $property;\\n -o-transition-property: $property;\\n transition-property: $property;\\n}\\n\\n@mixin transition-duration($duration) {\\n -moz-transition-duration: $duration;\\n -webkit-transition-duration: $duration;\\n -o-transition-duration: $duration;\\n transition-duration: $duration;\\n}\\n\\n@mixin transition-timing-function($function) {\\n -webkit-transition-timing-function: $function;\\n -moz-transition-timing-function: $function;\\n -o-transition-timing-function: $function;\\n transition-timing-function: $function;\\n}\\n\\n@mixin opacity($opacity) {\\n opacity: $opacity;\\n $opacity-ie: $opacity * 100;\\n filter: alpha(opacity=$opacity-ie);\\n}\\n\\n@mixin shadow($value) {\\n -webkit-box-shadow: $value;\\n -moz-box-shadow: $value;\\n box-shadow: $value;\\n}\\n\\n@mixin focused() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin focused-inset() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin clearfix {\\n &:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n}\",\"* {\\n box-sizing: border-box;\\n}\\n\\nhtml {\\n height: 100%;\\n}\\n\\nbody {\\n font-family: 'Open Sans', 'Helvetica Neue', sans-serif;\\n font-size: $fontSize;\\n color: $textColor;\\n /* background-color: $bodyBgColor; */\\n margin: 0;\\n padding: 0;\\n min-height: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\na {\\n text-decoration: none;\\n}\\n\\n.layout-wrapper {\\n padding: 0;\\n}\\n\\n// Don't let the min-height be 100vh because it forces a scroll\\n// with our header and footer\\n.v-application--wrap {\\n min-height: 0 !important;\\n}\\n\",\".layout-topbar {\\n position: fixed;\\n height: 80px;\\n padding: 0.7em 1.5em 0em 1.5em;\\n color: #ffffff;\\n z-index: 999;\\n right: 0;\\n @include clearfix();\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n @include transition(left $transitionDuration);\\n\\n .layout-topbar-icons {\\n float: right;\\n display: block;\\n -moz-animation-duration: 0.5s;\\n -webkit-animation-duration: 0.5s;\\n animation-duration: 0.5s;\\n\\n button {\\n position: relative;\\n color: $topbarItemColor;\\n margin-left: 20px;\\n display: inline-block;\\n text-decoration: none;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n\\n &:focus {\\n @include focused();\\n }\\n\\n span {\\n &.layout-topbar-icon {\\n font-size: 2em;\\n }\\n\\n &.layout-topbar-item-text {\\n font-size: 20px;\\n display: none;\\n }\\n\\n &.layout-topbar-badge {\\n position: absolute;\\n font-size: 10px;\\n right: -5px;\\n top: -5px;\\n width: 16px;\\n height: 16px;\\n text-align: center;\\n line-height: 16px;\\n color: $topbarItemBadgeColor;\\n background-color: $topbarItemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n }\\n }\\n\\n .layout-topbar-search {\\n padding: 0;\\n position: relative;\\n display: inline-block;\\n top: -4px;\\n\\n input {\\n display: inline-block;\\n border: 0 none;\\n font-size: $fontSize;\\n background: transparent;\\n border-bottom: 2px solid $topbarSearchInputBorderBottomColor;\\n outline: 0 none;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: $topbarSearchInputColor;\\n width: 100px;\\n padding: 1px 20px 1px 1px;\\n margin: 0px;\\n @include border-radius(2px);\\n\\n &::-webkit-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &::-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-ms-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n font-size: 18px;\\n position: absolute;\\n top: -1px;\\n right: 0px;\\n }\\n\\n &:hover {\\n input {\\n border-bottom-color: $topbarItemHoverColor;\\n &::-webkit-input-placeholder {\\n opacity: 1;\\n }\\n &:-moz-placeholder {\\n opacity: 1;\\n }\\n &::-moz-placeholder {\\n opacity: 1;\\n }\\n &:-ms-input-placeholder {\\n opacity: 1;\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n color: $topbarItemHoverColor;\\n }\\n }\\n }\\n }\\n\\n .layout-menu-button {\\n cursor: pointer;\\n display: inline-block;\\n text-decoration: none;\\n color: $topbarItemColor;\\n @include transition(color $transitionDuration);\\n\\n span {\\n font-size: 2em;\\n }\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n }\\n\\n button {\\n cursor: pointer;\\n }\\n}\\n\",\".layout-sidebar {\\n position: fixed;\\n width: 250px;\\n height: 100%;\\n z-index: 999;\\n overflow-y: auto;\\n user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n @include transition(transform $transitionDuration);\\n @include shadow(0 0 6px 0 rgba(0, 0, 0, 0.16));\\n\\n &.layout-sidebar-enter,\\n &.layout-sidebar-leave-to {\\n transform: translateX(-100%);\\n }\\n\\n .layout-logo {\\n text-align: center;\\n margin-top: 24px;\\n }\\n\\n .menuitem-badge {\\n display: inline-block;\\n margin-left: 4px;\\n font-size: 10px;\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n text-align: center;\\n color: $menuitemBadgeColor;\\n background-color: $menuitemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n}\",\".layout-profile {\\n text-align: center;\\n padding: 10px 0 10px 0;\\n\\n img {\\n width: 56px;\\n margin: 10px;\\n }\\n\\n .layout-profile-link {\\n cursor: pointer;\\n display: inline-block;\\n margin-bottom: 0.75em;\\n @include transition(color $transitionDuration);\\n\\n i {\\n display: inline-block;\\n font-size: 16px;\\n vertical-align: middle;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n button {\\n width: 100%;\\n padding: 1em;\\n border: 0 none;\\n border-radius: 0;\\n cursor: pointer;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n\\n span {\\n margin-left: 0.25em;\\n vertical-align: middle;\\n }\\n\\n i {\\n vertical-align: middle;\\n }\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\".layout-menu-container {\\n padding-bottom: 120px;\\n}\\n\\n.layout-menu {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n\\n li {\\n a {\\n cursor: pointer;\\n position: relative;\\n text-decoration: none;\\n display: block;\\n @include transition(color $transitionDuration);\\n\\n i {\\n font-size: 18px;\\n vertical-align: middle;\\n }\\n\\n span {\\n margin-left: .25em;\\n vertical-align: middle;\\n line-height: 18px;\\n display: inline-block;\\n }\\n\\n .menuitem-toggle-icon {\\n position: absolute;\\n top: 50%;\\n right: 1em;\\n margin-top: -9px;\\n }\\n\\n &.router-link-active {\\n font-weight: 700;\\n }\\n\\n &:focus {\\n @include focused-inset();\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n .menuitem-toggle-icon {\\n @include icon-override(\\\"\\\\e933\\\");\\n }\\n }\\n }\\n }\\n\\n > li {\\n > a {\\n padding: 1em;\\n\\n span {\\n font-size: $fontSize;\\n }\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n padding-left: 1.5em;\\n\\n li {\\n a {\\n cursor: pointer;\\n padding: .75em 1em;\\n border-top: 0 none;\\n\\n span {\\n font-size: $submenuFontSize;\\n }\\n }\\n\\n &:last-child {\\n padding-bottom: 1em;\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n @include linear-gradient($menuBgColorFirst, $menuBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemActiveBgColor;\\n color: $menuitemActiveColor;\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n @include linear-gradient($menuDarkBgColorFirst, $menuDarkBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemDarkBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemDarkBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemDarkColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemDarkActiveBgColor;\\n color: $menuitemDarkActiveColor;\\n }\\n }\\n }\\n }\\n}\",\".layout-main {\\n @include transition(margin-left $transitionDuration);\\n padding: 96px 16px 16px 16px;\\n}\\n\",\".layout-footer {\\n @include transition(margin-left $transitionDuration);\\n background-color: $footerBgColor;\\n padding: 1em 2em;\\n\\n img {\\n vertical-align: middle;\\n }\\n\\n .footer-text {\\n vertical-align: middle;\\n }\\n}\",\"@media (min-width: 1025px) {\\n .layout-wrapper {\\n &.layout-overlay { \\n .layout-topbar {\\n left: 0;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n \\n &.layout-overlay-sidebar-active {\\n .layout-sidebar {\\n left: 0;\\n }\\n \\n .layout-topbar {\\n left: 250px;\\n }\\n }\\n }\\n\\n &.layout-static { \\n .layout-topbar {\\n left: 250px;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 250px;\\n }\\n \\n &.layout-static-sidebar-inactive { \\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n}\\n\\n@media (max-width: 1024px) {\\n .layout-wrapper {\\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n\\n .layout-sidebar {\\n @include transition(left $transitionDuration);\\n left: -250px;\\n margin-top: 50px;\\n }\\n\\n .layout-mask {\\n display: none;\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 50px;\\n left: 0;\\n z-index: 998;\\n background-color: $maskBgColor;\\n @include opacity(0.7);\\n }\\n\\n &.layout-mobile-sidebar-active {\\n .layout-sidebar {\\n left: -0;\\n }\\n\\n .layout-mask {\\n display: block;\\n }\\n }\\n }\\n\\n .body-overflow-hidden {\\n overflow: hidden;\\n }\\n}\",\"/* Typography */\\nh1 {\\n font-weight: normal;\\n margin: 0;\\n font-size: 24px;\\n}\\n\\nh2 {\\n font-size: 20px;\\n font-weight: normal;\\n margin: 0;\\n}\\n\\n.card {\\n background-color: #ffffff;\\n padding: 1em;\\n margin-bottom: 16px;\\n @include border-radius($borderRadius);\\n\\n &.card-w-title {\\n padding-bottom: 2em;\\n }\\n\\n h1 {\\n margin: 1em 0 .5em 0;\\n border-bottom: 1px solid #d5d5d5;\\n padding: .1em;\\n font-size: 24px;\\n\\n &:first-child {\\n margin: 0 0 .5em 0;\\n }\\n }\\n}\\n\\n/* Code Highlight */\\n.docs {\\n pre[class*=\\\"language-\\\"] {\\n padding: 0 !important;\\n background: transparent;\\n overflow: visible;\\n \\n > code {\\n border-left: 0 none;\\n box-shadow: none;\\n font-size: 14px;\\n }\\n }\\n}\\n\",\"/* Dashboard */\\n.dashboard {\\n \\n .summary {\\n position: relative;\\n \\n .title {\\n font-size: 20px;\\n }\\n \\n .detail {\\n color: $textSecondaryColor;\\n display: block;\\n margin-top: 10px;\\n }\\n \\n .count {\\n color: #ffffff;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n font-size: 24px;\\n padding: 7px 14px;\\n @include border-radius($borderRadius);\\n \\n &.visitors {\\n background-color: #20d077;\\n }\\n \\n &.purchases {\\n background-color: #f9c851;\\n }\\n \\n &.revenue {\\n background-color: #007be5;\\n }\\n }\\n }\\n\\n .highlight-box {\\n height: 100px;\\n @include clearfix();\\n \\n .initials {\\n height: 100%;\\n float: left;\\n width: 50%;\\n text-align: center;\\n padding: 1em;\\n\\n > span {\\n font-size: 48px;\\n }\\n }\\n \\n .highlight-details {\\n height: 100%;\\n background-color: #ffffff;\\n float: left;\\n width: 50%;\\n padding: 1em;\\n\\n i {\\n font-size: 24px;\\n vertical-align: middle;\\n margin-right: .25em;\\n }\\n \\n .count {\\n color: $textSecondaryColor;\\n font-size: 36px;\\n display: block;\\n }\\n }\\n }\\n \\n .task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n \\n li {\\n padding: .5em .25em;\\n border-bottom: 1px solid $dividerColor;\\n @include clearfix();\\n }\\n \\n .p-checkbox {\\n vertical-align: middle;\\n margin-right: .5em;\\n }\\n \\n .task-name {\\n vertical-align: middle;\\n }\\n \\n i {\\n float: right;\\n font-size: 24px;\\n color: $textSecondaryColor;\\n }\\n\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contact-form {\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contacts {\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n border-bottom: 1px solid $dividerColor;\\n \\n button {\\n padding: 9px;\\n width: 100%;\\n box-sizing: border-box;\\n text-decoration: none;\\n position: relative;\\n display: block;\\n @include border-radius(2px);\\n @include transition(background-color .2s);\\n \\n .name {\\n position: absolute;\\n right: 10px;\\n top: 10px;\\n font-size: 18px;\\n }\\n \\n .email {\\n position: absolute;\\n right: 10px;\\n top: 30px;\\n font-size: 14px;\\n color: $textSecondaryColor;\\n }\\n \\n &:hover {\\n cursor: pointer;\\n background-color: #eeeeee;\\n }\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n }\\n }\\n \\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n \\n .activity-list {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n \\n li {\\n border-bottom: 1px solid $dividerColor;\\n padding: 16px 8px;\\n \\n .count {\\n font-size: 24px;\\n color: #ffffff;\\n background-color: #007be5;\\n font-weight: 700;\\n display: inline-block;\\n padding: .25em .5em;\\n @include border-radius($borderRadius);\\n }\\n \\n &:first-child {\\n border-top: 1px solid $dividerColor;\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n\\n .p-col-6:first-child {\\n font-size: 18px;\\n padding: .5em 0 0 .5em;\\n }\\n \\n .p-col-6:last-child {\\n text-align: right;\\n color: $textSecondaryColor;\\n }\\n }\\n }\\n}\\n\",\"// This is for global overrides only. If it's contained to a component put it there.\\n// Also use the variables created by vueify like var(--v-primary-darken2) rather\\n// than something absolute so theming works. See vuetify.js for the base colors\\n// and note the variations are: base, lighten[1-5], and darken[1-4]\\n\\n.openc3-green {\\n color: rgb(0, 200, 0) !important;\\n}\\n.openc3-yellow {\\n color: rgb(255, 220, 0) !important;\\n}\\n.openc3-red {\\n color: rgb(255, 45, 45) !important;\\n}\\n.openc3-blue {\\n color: rgb(0, 153, 255) !important;\\n}\\n.openc3-purple {\\n color: rgb(200, 0, 200) !important;\\n}\\n.openc3-black {\\n color: black !important;\\n}\\n.openc3-white {\\n color: white !important;\\n}\\n\\n// Base colors\\n.theme--dark.v-system-bar {\\n background-color: var(--v-primary-base) !important;\\n}\\n.theme--dark.v-system-bar.active {\\n background-color: var(--v-secondary-base) !important;\\n}\\nbody,\\n.theme--dark.v-application,\\n.theme--dark.v-main,\\n.theme--dark.v-content {\\n background-color: var(--v-tertiary-base) !important;\\n}\\n\\n// Highlight colors\\n.theme--dark.v-sheet.v-list,\\n.theme--dark.v-list,\\n.theme--dark.v-list-item {\\n background-color: var(--v-primary-darken2) !important;\\n}\\n.theme--dark.v-data-table,\\n.theme--dark.v-item-group,\\n.theme--dark.v-dialog,\\n.theme--dark.v-card,\\n.theme--dark.v-tab,\\n.theme--dark.v-sheet,\\n.theme--dark.v-date-picker-header,\\n.theme--dark.v-date-picker-table,\\n.theme--dark.v-time-picker-clock__container,\\n.theme--dark.p-menubar {\\n background-color: var(--v-tertiary-darken2) !important;\\n}\\n\\ninput {\\n // This causes the browser to style input icons for a dark background\\n color-scheme: dark;\\n // Make the caret color be white instead of a dark blue\\n caret-color: auto;\\n}\\n\\n// Fix the single spa debug panel so the text is readable\\n.imo-modal-container input {\\n color: black;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.astro-icon[data-v-b942113a] {\\n fill: currentColor;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"],\"names\":[],\"mappings\":\";AAgDA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <rux-icon :icon=\\\"icon\\\" class=\\\"astro-icon\\\" />\\n</template>\\n\\n<script>\\nimport RuxIcon from './RuxIcon.vue'\\nimport { AstroIconLibrary } from '.'\\n\\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\\nexport default {\\n components: {\\n RuxIcon,\\n },\\n props: {\\n icon: {\\n type: String,\\n required: true,\\n validator: (val) => {\\n return AstroIconLibrary.includes(val)\\n },\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.astro-icon {\\n fill: currentColor;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#footer[data-v-1f2e2c8b] {\\n z-index: 1000; /* On TOP! */\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppFooter.vue\"],\"names\":[],\"mappings\":\";AAoFA;EACA,aAAA,EAAA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2023, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <v-footer id=\\\"footer\\\" app color=\\\"tertiary darken-3\\\" height=\\\"33\\\">\\n <img :src=\\\"icon\\\" alt=\\\"OpenC3\\\" />\\n <span class=\\\"footer-text\\\" style=\\\"margin-left: 5px\\\">\\n OpenC3 {{ edition }} {{ openc3Version }} © 2023 - License:\\n {{ license }}\\n </span>\\n <v-spacer />\\n <a :href=\\\"sourceUrl\\\" class=\\\"white--text text-decoration-underline\\\">\\n Source\\n </a>\\n <v-spacer />\\n <div class=\\\"justify-right\\\"><clock-footer /></div>\\n </v-footer>\\n</template>\\n\\n<script>\\nimport ClockFooter from './components/ClockFooter.vue'\\nimport { OpenC3Api } from '../../services/openc3-api'\\nimport icon from '../../../public/img/icon.png'\\n\\nexport default {\\n components: {\\n ClockFooter,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n license: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n icon: icon,\\n sourceUrl: '',\\n openc3Version: '',\\n }\\n },\\n created: function () {\\n this.getSourceUrl()\\n },\\n methods: {\\n getSourceUrl: function () {\\n new OpenC3Api()\\n .get_settings(['source_url', 'version'])\\n .then((response) => {\\n this.sourceUrl = response[0]\\n this.openc3Version = `(${response[1]})`\\n })\\n .catch(() => {\\n this.openc3Version = 'Unknown'\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n#footer {\\n z-index: 1000; /* On TOP! */\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\ndiv a[data-v-00ae1763] {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter[data-v-00ae1763] {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer[data-v-00ae1763] {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height[data-v-00ae1763] {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";AAkQA;EACA,YAAA;EACA,eAAA;EACA,cAAA;EACA,YAAA;EACA,WAAA;AACA;AACA;EACA,aAAA;AACA;AACA;EACA,0CAAA;AACA;AACA;EACA,gBAAA;EACA,4BAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqRA,4EAAA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;EAGA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-3d0e2e40] {\\n height: 28px;\\n}\\n.v-badge[data-v-3d0e2e40] {\\n width: 100%;\\n}\\n.overlay[data-v-3d0e2e40] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"],\"names\":[],\"mappings\":\";AA4KA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showAlertPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showAlertPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Alert box icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-alert-box-outline </v-icon>\\n </v-btn>\\n </template>\\n\\n <!-- Alerts list -->\\n <v-card>\\n <v-card-title>\\n Alerts\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n @click=\\\"clearAlerts\\\"\\n class=\\\"ml-1\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n </v-card-title>\\n <v-card-text v-if=\\\"alerts.length === 0\\\"> No alerts </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n >\\n <template v-for=\\\"(alert, index) in alerts\\\">\\n <v-list-item\\n @click=\\\"openDialog(alert)\\\"\\n :key=\\\"`alert-${index}`\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title>\\n {{ alert.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ alert.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"alert.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full alert -->\\n <v-dialog v-model=\\\"alertDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedAlert.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedAlert.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-text>\\n {{ selectedAlert.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"alertDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n alerts: [],\\n alertDialog: false,\\n showAlertPane: false,\\n selectedAlert: {},\\n }\\n },\\n watch: {\\n showAlertPane: function (val) {\\n if (val) {\\n this.refreshList()\\n }\\n if (!val && this.selectedAlert.title) {\\n this.alertDialog = false\\n this.selectedAlert = {}\\n }\\n },\\n },\\n methods: {\\n refreshList: function () {\\n this.alerts = this.$store.state.notifyHistory\\n },\\n clearAlerts: function () {\\n this.$store.commit('notifyClearHistory')\\n this.refreshList()\\n this.showAlertPane = false\\n },\\n openDialog: function (alert, clearToast = false) {\\n this.selectedAlert = alert\\n this.alertDialog = true\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,wEAAA;AACA;;EAEA,4CAAA;AACA;AACA;EACA,qCAAA;AACA;AACA;EACA;;;GAGA;AACA;AACA;EACA,kDAAA;AACA;;AAEA,oCAAA;AACA;;EAEA,WAAA;EACA,eAAA;EACA,OAAA;EACA,QAAA;EACA,kBAAA;EACA,mCAAA;EACA,uCAAA;EACA,wDAAA;AACA;AACA;EACA,MAAA;EACA,uDAAA;EACA,wCAAA;AACA;AACA;EACA,SAAA;EACA,0DAAA;EACA,2CAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<script>\\nimport { OpenC3Api } from '../../../services/openc3-api'\\n\\nexport default {\\n data: function () {\\n return {\\n api: null,\\n classification: {\\n text: '',\\n fontColor: 'white',\\n backgroundColor: 'red',\\n topHeight: 0,\\n bottomHeight: 0,\\n },\\n }\\n },\\n computed: {\\n classificationStyles: function () {\\n // JavaScript can't access CSS psudo-elements (::before and ::after).\\n // This string sets these JS values to CSS variables, accessible to\\n // the style sheet via the style attribute on #app\\n return [\\n `--classification-text:\\\"${this.classification.text}\\\";`,\\n `--classification-font-color:${this.classification.fontColor};`,\\n `--classification-background-color:${this.classification.backgroundColor};`,\\n `--classification-height-top:${this.classification.topHeight}px;`,\\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\\n ].join('')\\n },\\n },\\n created: function () {\\n this.api = new OpenC3Api()\\n this.load()\\n },\\n methods: {\\n load: function () {\\n this.api\\n .get_setting('classification_banner')\\n .then((response) => {\\n if (response) {\\n this.classification = JSON.parse(response)\\n }\\n })\\n .catch((error) => {\\n // Do nothing\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style>\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-eda8ca60] {\\n height: 28px;\\n}\\n.v-badge[data-v-eda8ca60] {\\n width: 100%;\\n}\\n.overlay[data-v-eda8ca60] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"],\"names\":[],\"mappings\":\";AAiZA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showNotificationPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showNotificationPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Bell icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon v-if=\\\"unreadCount === 0\\\" :size=\\\"size\\\">\\n mdi-bell-outline\\n </v-icon>\\n <v-badge\\n v-else\\n left\\n offset-x=\\\"24\\\"\\n offset-y=\\\"8\\\"\\n :color=\\\"badgeColor\\\"\\n bordered\\n :content=\\\"unreadCount\\\"\\n >\\n <v-icon :size=\\\"size\\\" :color=\\\"badgeColor\\\"> mdi-bell </v-icon>\\n </v-badge>\\n </v-btn>\\n </template>\\n\\n <!-- Notifications list -->\\n <v-card>\\n <v-card-title>\\n Notifications\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n class=\\\"ml-1\\\"\\n @click=\\\"clearNotifications\\\"\\n data-test=\\\"clear-notifications\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n <v-btn\\n icon\\n @click=\\\"toggleSettingsDialog\\\"\\n class=\\\"ml-1\\\"\\n data-test=\\\"notification-settings\\\"\\n >\\n <v-icon> $astro-settings </v-icon>\\n </v-btn>\\n </v-card-title>\\n <v-card-text v-if=\\\"notifications.length === 0\\\">\\n No notifications\\n </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n data-test=\\\"notification-list\\\"\\n >\\n <template v-for=\\\"(notification, index) in notificationList\\\">\\n <template v-if=\\\"notification.header\\\">\\n <v-divider v-if=\\\"index !== 0\\\" :key=\\\"index\\\" class=\\\"mb-2\\\" />\\n <v-subheader :key=\\\"notification.header\\\">\\n {{ notification.header }}\\n </v-subheader>\\n </template>\\n\\n <v-list-item\\n v-else\\n :key=\\\"`notification-${index}`\\\"\\n @click=\\\"openDialog(notification)\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title\\n :class=\\\"{ 'text--secondary': notification.read }\\\"\\n >\\n {{ notification.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ notification.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <v-list-item-action class=\\\"mt-0\\\">\\n <v-list-item-action-text>\\n {{ notification.time | shortDateTime }}\\n </v-list-item-action-text>\\n <v-spacer />\\n </v-list-item-action>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"notification.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full notification -->\\n <v-dialog v-model=\\\"notificationDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedNotification.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedNotification.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-subtitle>\\n {{ selectedNotification.time | shortDateTime }}\\n </v-card-subtitle>\\n <v-card-text>\\n {{ selectedNotification.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn\\n color=\\\"primary\\\"\\n text\\n @click=\\\"navigate(selectedNotification.url)\\\"\\n >\\n Open\\n <v-icon right> mdi-open-in-new </v-icon>\\n </v-btn>\\n <v-btn color=\\\"primary\\\" text @click=\\\"notificationDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n\\n <!-- Dialog for changing notification settings -->\\n <v-dialog v-model=\\\"settingsDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title> Notification settings </v-card-title>\\n <v-card-text>\\n <v-switch v-model=\\\"showToast\\\" label=\\\"Show toasts\\\" />\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"toggleSettingsDialog\\\">\\n close\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { formatDistanceToNow } from 'date-fns'\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\nimport Cable from '../../../services/cable.js'\\n\\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n cable: new Cable(),\\n subscription: null,\\n notifications: [],\\n showNotificationPane: false,\\n toastNotification: {},\\n notificationDialog: false,\\n selectedNotification: {},\\n settingsDialog: false,\\n showToast: true,\\n }\\n },\\n computed: {\\n badgeColor: function () {\\n if (!this.unreadCount) {\\n return AstroStatusColors['off']\\n }\\n const severities = this.unreadNotifications\\n .map((notification) => notification.severity)\\n .filter((val, index, self) => {\\n return self.indexOf(val) === index // Unique values\\n })\\n return AstroStatusColors[highestSeverity(severities)]\\n },\\n readNotifications: function () {\\n return this.notifications\\n .filter((notification) => notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadNotifications: function () {\\n return this.notifications\\n .filter((notification) => !notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadCount: function () {\\n let result = this.unreadNotifications.length\\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\\n result += '+' // Indicate there are more\\n }\\n return result\\n },\\n notificationList: function () {\\n const groups = groupBySeverity(this.unreadNotifications)\\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\\n (severity) => {\\n const header = {\\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\\n }\\n return [header, ...groups[severity]]\\n }\\n )\\n if (this.readNotifications.length) {\\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\\n }\\n return result\\n },\\n },\\n watch: {\\n showNotificationPane: function (val) {\\n if (!val) {\\n if (this.selectedNotification.title) {\\n this.notificationDialog = false\\n this.selectedNotification = {}\\n } else {\\n this.markAllAsRead()\\n }\\n }\\n },\\n showToast: function (val) {\\n localStorage.notoast = !val\\n },\\n },\\n created: function () {\\n this.showToast = localStorage.notoast === 'false'\\n this.subscribe()\\n },\\n destroyed: function () {\\n if (this.subscription) {\\n this.subscription.unsubscribe()\\n }\\n this.cable.disconnect()\\n },\\n methods: {\\n markAllAsRead: function () {\\n this.notifications.forEach((notification) => {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n })\\n },\\n clearNotifications: function () {\\n this.markAllAsRead()\\n this.notifications = []\\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\\n this.showNotificationPane = false\\n },\\n toggleNotificationPane: function () {\\n this.showNotificationPane = !this.showNotificationPane\\n },\\n toggleSettingsDialog: function () {\\n this.settingsDialog = !this.settingsDialog\\n },\\n openDialog: function (notification, clearToast = false) {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n this.selectedNotification = notification\\n this.notificationDialog = true\\n },\\n navigate: function (url) {\\n window.open(url, '_blank')\\n },\\n subscribe: function () {\\n this.cable\\n .createSubscription(\\n 'NotificationsChannel',\\n window.openc3Scope,\\n {\\n received: (data) => this.received(data),\\n },\\n {\\n start_offset:\\n localStorage.notificationStreamOffset ||\\n localStorage.lastReadNotification,\\n }\\n )\\n .then((subscription) => {\\n this.subscription = subscription\\n })\\n },\\n received: function (parsed) {\\n this.cable.recordPing()\\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\\n }\\n let foundToast = false\\n parsed.forEach((notification) => {\\n notification.read =\\n notification.msg_id <= localStorage.lastReadNotification\\n notification.severity = notification.severity || 'normal'\\n if (\\n !notification.read && // Don't toast read notifications\\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\\n ) {\\n foundToast = true\\n this.toastNotification = notification\\n }\\n })\\n\\n if (this.showToast && foundToast) {\\n this.$notify[this.toastNotification.severity]({\\n ...this.toastNotification,\\n type: 'notification',\\n duration:\\n this.toastNotification.severity === 'critical' ? null : 5000,\\n saveToHistory: false,\\n })\\n }\\n\\n if (\\n this.notifications.length + parsed.length >\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n ) {\\n this.notifications.splice(\\n 0,\\n this.notifications.length +\\n parsed.length -\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n )\\n }\\n this.notifications = this.notifications.concat(parsed)\\n },\\n },\\n filters: {\\n shortDateTime: function (nsec) {\\n if (!nsec) return ''\\n const date = new Date(nsec / 1_000_000)\\n return formatDistanceToNow(date, { addSuffix: true })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.overlay[data-v-26b5fc12] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"],\"names\":[],\"mappings\":\";AA+FA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showUserMenu\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showUserMenu\\\"\\n transition=\\\"slide-y-transition\\\"\\n offset-y\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"120\\\"\\n :nudge-bottom=\\\"20\\\"\\n >\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-account </v-icon>\\n </v-btn>\\n </template>\\n\\n <v-card>\\n <v-card-text class=\\\"text-center\\\">\\n <div style=\\\"text-align: center; margin: 5px\\\">{{ username }}</div>\\n <div v-if=\\\"authenticated\\\">\\n <v-btn block @click=\\\"logout\\\" color=\\\"primary\\\"> Logout </v-btn>\\n </div>\\n <div v-else>\\n <v-btn block @click=\\\"login\\\" color=\\\"primary\\\"> Login </v-btn>\\n </div>\\n <div>\\n <v-switch label=\\\"Colorblind mode\\\" v-model=\\\"colorblindMode\\\" />\\n </div>\\n </v-card-text>\\n </v-card>\\n </v-menu>\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n let user = OpenC3Auth.user()\\n return {\\n showUserMenu: false,\\n authenticated: !!localStorage.openc3Token,\\n username: user['name'],\\n }\\n },\\n computed: {\\n colorblindMode: {\\n get: function () {\\n return localStorage.colorblindMode === 'true'\\n },\\n set: function (val) {\\n localStorage.colorblindMode = val\\n },\\n },\\n },\\n methods: {\\n logout: function () {\\n OpenC3Auth.logout()\\n },\\n login: function () {\\n OpenC3Auth.login(location.href)\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","const resolveDirectory = require(\"../public-path\").resolveDirectory;\n\nexports.autoPublicPath = function autoPublicPath(rootDirLevel) {\n if (!rootDirLevel) {\n rootDirLevel = 1;\n }\n\n if (typeof __webpack_public_path__ !== \"undefined\") {\n if (typeof __system_context__ === \"undefined\") {\n throw Error(\n \"systemjs-webpack-interop requires webpack@>=5.0.0-beta.15 and output.libraryTarget set to 'system'\"\n );\n }\n\n if (!__system_context__.meta || !__system_context__.meta.url) {\n console.error(\"__system_context__\", __system_context__);\n throw Error(\n \"systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(\n __system_context__.meta.url,\n rootDirLevel\n );\n }\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../openc3-tool-base/node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2eb15b17\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\", function() {\n var newContent = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\n if(newContent.__esModule) newContent = newContent.default;\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8645__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4091__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4688__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9731__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9191__;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.y = __system_context__;","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".openc3-tool-base.js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktool_base\"] = self[\"webpackChunktool_base\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","const autoPublicPath = require(\"./auto-public-path\").autoPublicPath;\n\nautoPublicPath(1);\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-app\",\n { style: _vm.classificationStyles },\n [\n _c(\"app-nav\", {\n staticClass: \"d-print-none\",\n attrs: { edition: \"COSMOS\" },\n }),\n _vm._v(\" \"),\n _c(\n \"v-main\",\n [\n _c(\"v-container\", { attrs: { fluid: \"\" } }, [\n _c(\"div\", { attrs: { id: \"openc3-tool\" } }),\n _vm._v(\" \"),\n _c(\"div\", [_c(\"router-view\")], 1),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"app-footer\", {\n staticClass: \"d-print-none\",\n attrs: { app: \"\", edition: \"COSMOS\", license: \"AGPLv3\" },\n }),\n _vm._v(\" \"),\n _c(\"time-check\"),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-footer\",\n {\n attrs: {\n id: \"footer\",\n app: \"\",\n color: \"tertiary darken-3\",\n height: \"33\",\n },\n },\n [\n _c(\"img\", { attrs: { src: _vm.icon, alt: \"OpenC3\" } }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"footer-text\", staticStyle: { \"margin-left\": \"5px\" } },\n [\n _vm._v(\n \"\\n OpenC3 \" +\n _vm._s(_vm.edition) +\n \" \" +\n _vm._s(_vm.openc3Version) +\n \" © 2023 - License:\\n \" +\n _vm._s(_vm.license) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"white--text text-decoration-underline\",\n attrs: { href: _vm.sourceUrl },\n },\n [_vm._v(\"\\n Source\\n \")]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"justify-right\" }, [_c(\"clock-footer\")], 1),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"span\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"font-weight-bold\",\n staticStyle: { cursor: \"context-menu\" },\n on: { contextmenu: _vm.openMenu },\n },\n \"span\",\n _vm.attrs,\n false\n ),\n _vm.on\n ),\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"date\")(\n _vm.displayLocal ? _vm.localDate : _vm.utcDate,\n _vm.formatString\n )\n ) +\n \"\\n (\" +\n _vm._s(_vm.displayLocal ? \"local\" : \"UTC\") +\n \")\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n \"position-x\": _vm.menuX,\n \"position-y\": _vm.menuY,\n absolute: \"\",\n \"offset-y\": \"\",\n },\n model: {\n value: _vm.showMenu,\n callback: function ($$v) {\n _vm.showMenu = $$v\n },\n expression: \"showMenu\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplayLocal },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.displayLocal ? \"UTC\" : \"local time\") +\n \"\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplay24h },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.display24h ? 12 : 24) +\n \" hour clock\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _vm.dateMode !== \"monthFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setMonthFirst },\n },\n [_vm._v(\"\\n Display mm/dd/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"dayFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setDayFirst },\n },\n [_vm._v(\"\\n Display dd/mm/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"number\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setNumber },\n },\n [_vm._v(\"\\n Display day of year\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span\n v-bind=\"attrs\"\n v-on=\"on\"\n style=\"cursor: context-menu\"\n class=\"font-weight-bold\"\n @contextmenu=\"openMenu\"\n >\n {{ (displayLocal ? localDate : utcDate) | date(formatString) }}\n ({{ displayLocal ? 'local' : 'UTC' }})\n </span>\n <v-menu\n v-model=\"showMenu\"\n :position-x=\"menuX\"\n :position-y=\"menuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item>\n <v-list-item-title\n style=\"cursor: pointer\"\n @click=\"toggleDisplayLocal\"\n >\n Display {{ displayLocal ? 'UTC' : 'local time' }}\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item>\n <v-list-item-title style=\"cursor: pointer\" @click=\"toggleDisplay24h\">\n Display {{ display24h ? 12 : 24 }} hour clock\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item v-if=\"dateMode !== 'monthFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setMonthFirst\">\n Display mm/dd/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'dayFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setDayFirst\">\n Display dd/mm/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'number'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setNumber\">\n Display day of year\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nexport default {\n data: function () {\n return {\n localDate: new Date(),\n displayLocal: localStorage.clock_zone === 'local',\n display24h: !localStorage.clock_12h,\n dateMode: localStorage.clock_dateMode || 'monthFirst',\n intervalCount: 0,\n showMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n utcDate: function () {\n return new Date(\n this.localDate.getTime() + this.localDate.getTimezoneOffset() * 60000\n )\n },\n formatString: function () {\n let dateFormat\n switch (this.dateMode) {\n case 'monthFirst':\n dateFormat = 'LL/dd/yyy'\n break\n case 'dayFirst':\n dateFormat = 'dd/LL/yyy'\n break\n case 'number':\n dateFormat = 'D'\n break\n }\n\n let timeFormat\n if (this.display24h) {\n timeFormat = 'HH:mm:ss'\n } else {\n timeFormat = 'hh:mm:ss a'\n }\n\n return `${dateFormat} ${timeFormat}`\n },\n },\n watch: {\n displayLocal: function (val) {\n localStorage.clock_zone = val ? 'local' : 'utc'\n },\n display24h: function (val) {\n // store opposite because it makes default value (true) easier\n if (val) {\n delete localStorage.clock_12h\n } else {\n localStorage.clock_12h = true\n }\n },\n dateMode: function (val) {\n if (val.match(/^monthFirst$|^dayFirst$|^number$/)) {\n localStorage.clock_dateMode = val\n }\n },\n },\n created: function () {\n setInterval(\n () => {\n this.intervalCount++\n this.localDate = new Date()\n },\n this.intervalCount < 10 ? 100 : 1000 // get the seconds to about 100ms accuracy\n )\n },\n methods: {\n openMenu: function (event) {\n event.preventDefault()\n this.showMenu = false\n this.menuX = event.clientX\n this.menuY = event.clientY\n this.$nextTick(() => {\n this.showMenu = true\n })\n },\n toggleDisplayLocal: function () {\n this.displayLocal = !this.displayLocal\n },\n toggleDisplay24h: function () {\n this.display24h = !this.display24h\n },\n setMonthFirst: function () {\n this.dateMode = 'monthFirst'\n },\n setDayFirst: function () {\n this.dateMode = 'dayFirst'\n },\n setNumber: function () {\n this.dateMode = 'number'\n },\n },\n filters: {\n date: function (val, formatString) {\n return format(val, formatString, { useAdditionalDayOfYearTokens: true })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClockFooter.vue?vue&type=template&id=e0e3869e&\"\nimport script from \"./ClockFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./ClockFooter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e0e3869e')) {\n api.createRecord('e0e3869e', component.options)\n } else {\n api.reload('e0e3869e', component.options)\n }\n module.hot.accept(\"./ClockFooter.vue?vue&type=template&id=e0e3869e&\", function () {\n api.rerender('e0e3869e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue\"\nexport default component.exports","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(\n method,\n params,\n kwparams = {},\n headerOptions = {},\n timeout = 60000\n ) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n timeout: timeout,\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n // NOTE: Openc3Screen.vue uses this specific message to determine\n // if the CmdTlmApi server is down. Don't change unless also changing there.\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n // get_target_list is DEPRECATED\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n get_target_names() {\n return this.exec('get_target_names', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30) {\n const data = await this.exec(\n 'get_tlm_values',\n [items],\n {\n stale_time: stale_time,\n },\n {},\n 10000 // 10s timeout ... should never be this long\n )\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED'\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n }\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-footer id=\"footer\" app color=\"tertiary darken-3\" height=\"33\">\n <img :src=\"icon\" alt=\"OpenC3\" />\n <span class=\"footer-text\" style=\"margin-left: 5px\">\n OpenC3 {{ edition }} {{ openc3Version }} © 2023 - License:\n {{ license }}\n </span>\n <v-spacer />\n <a :href=\"sourceUrl\" class=\"white--text text-decoration-underline\">\n Source\n </a>\n <v-spacer />\n <div class=\"justify-right\"><clock-footer /></div>\n </v-footer>\n</template>\n\n<script>\nimport ClockFooter from './components/ClockFooter.vue'\nimport { OpenC3Api } from '../../services/openc3-api'\nimport icon from '../../../public/img/icon.png'\n\nexport default {\n components: {\n ClockFooter,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n license: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n icon: icon,\n sourceUrl: '',\n openc3Version: '',\n }\n },\n created: function () {\n this.getSourceUrl()\n },\n methods: {\n getSourceUrl: function () {\n new OpenC3Api()\n .get_settings(['source_url', 'version'])\n .then((response) => {\n this.sourceUrl = response[0]\n this.openc3Version = `(${response[1]})`\n })\n .catch(() => {\n this.openc3Version = 'Unknown'\n })\n },\n },\n}\n</script>\n\n<style scoped>\n#footer {\n z-index: 1000; /* On TOP! */\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\"\nimport script from \"./AppFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./AppFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f2e2c8b\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1f2e2c8b')) {\n api.createRecord('1f2e2c8b', component.options)\n } else {\n api.reload('1f2e2c8b', component.options)\n }\n module.hot.accept(\"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\", function () {\n api.rerender('1f2e2c8b', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppFooter.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"v-navigation-drawer\",\n {\n attrs: { app: \"\", id: \"openc3-nav-drawer\" },\n model: {\n value: _vm.drawer,\n callback: function ($$v) {\n _vm.drawer = $$v\n },\n expression: \"drawer\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-icon\",\n {\n staticStyle: {\n \"margin-right\": \"auto !important\",\n \"margin-left\": \"auto\",\n \"margin-top\": \"0px\",\n \"margin-bottom\": \"0px\",\n },\n },\n [_c(\"img\", { attrs: { src: _vm.logo, alt: \"OpenC3\" } })]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticStyle: { \"text-align\": \"center\", \"font-size\": \"18pt\" },\n },\n [_vm._v(_vm._s(_vm.edition))]\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n { staticClass: \"my-0\" },\n [\n _c(\n \"v-list-item-content\",\n _vm._l(_vm.adminTools, function (tool, name) {\n return _c(\n \"div\",\n { key: name },\n [\n _c(\n \"v-btn\",\n {\n staticClass: \"fixcenter\",\n attrs: {\n block: \"\",\n small: \"\",\n href: tool.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [_vm._v(\"\\n Admin\\n \")]\n ),\n ],\n 1\n )\n }),\n 0\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\"v-treeview\", {\n attrs: {\n items: _vm.items,\n open: _vm.initiallyOpen,\n \"item-key\": \"name\",\n dense: \"\",\n \"open-on-click\": \"\",\n \"expand-icon\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"prepend\",\n fn: function (ref) {\n var item = ref.item\n var open = ref.open\n return [\n !item.icon\n ? _c(\"v-icon\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n open\n ? \"mdi-chevron-down\"\n : \"mdi-chevron-right\"\n ) +\n \"\\n \"\n ),\n ])\n : _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _c(\"v-icon\", [\n _vm._v(\" \" + _vm._s(item.icon) + \" \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n {\n key: \"label\",\n fn: function (ref) {\n var item = ref.item\n return [\n _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(item.name) +\n \"\\n \"\n ),\n ]\n ),\n ]\n },\n },\n {\n key: \"append\",\n fn: function (ref) {\n var item = ref.item\n return [\n item.icon\n ? _c(\n \"a\",\n {\n attrs: {\n href: _vm.newTabUrl(item),\n target: \"_blank\",\n },\n },\n [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])],\n 1\n )\n : _vm._e(),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-app-bar\",\n {\n attrs: {\n app: \"\",\n color: \"tertiary darken-3\",\n id: \"openc3-app-toolbar\",\n },\n },\n [\n _c(\"v-app-bar-nav-icon\", {\n on: {\n click: function ($event) {\n _vm.drawer = !_vm.drawer\n },\n },\n }),\n _vm._v(\" \"),\n _c(\"v-divider\", {\n staticClass: \"top-bar-divider-full-height\",\n attrs: { vertical: \"\" },\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticStyle: { width: \"100%\" } }, [\n _c(\"span\", { attrs: { id: \"openc3-menu\" } }),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"justify-right mr-2 pt-2\" },\n [_c(\"scope-selector\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"alert-history\" },\n },\n [_c(\"alert-history\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"notifications\" },\n },\n [_c(\"notifications\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"user-menu\" },\n },\n [_c(\"user-menu\")],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"v-select\", {\n attrs: {\n items: _vm.scopes,\n disabled: _vm.scopes.length <= 1,\n label: \"Scope\",\n dense: \"\",\n \"hide-details\": \"\",\n },\n model: {\n value: _vm.scope,\n callback: function ($$v) {\n _vm.scope = $$v\n },\n expression: \"scope\",\n },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-select\n v-model=\"scope\"\n :items=\"scopes\"\n :disabled=\"scopes.length <= 1\"\n label=\"Scope\"\n dense\n hide-details\n />\n</template>\n\n<script>\nexport default {\n data: function () {\n return {\n scopes: ['DEFAULT'],\n scope: 'DEFAULT',\n }\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\"\nimport script from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1d174a8a')) {\n api.createRecord('1d174a8a', component.options)\n } else {\n api.reload('1d174a8a', component.options)\n }\n module.hot.accept(\"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\", function () {\n api.rerender('1d174a8a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showAlertPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-alert-box-outline \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showAlertPane,\n callback: function ($$v) {\n _vm.showAlertPane = $$v\n },\n expression: \"showAlertPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Alerts\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.clearAlerts },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.alerts.length === 0\n ? _c(\"v-card-text\", [_vm._v(\" No alerts \")])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n },\n },\n [\n _vm._l(_vm.alerts, function (alert, index) {\n return [\n _c(\n \"v-list-item\",\n {\n key: \"alert-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(alert)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n alert.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\"v-list-item-title\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.title) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.alertDialog,\n callback: function ($$v) {\n _vm.alertDialog = $$v\n },\n expression: \"alertDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedAlert.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: { status: _vm.selectedAlert.severity || \"normal\" },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" + _vm._s(_vm.selectedAlert.body) + \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.alertDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"rux-icon\", {\n staticClass: \"astro-icon\",\n attrs: { icon: _vm.icon },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n {\n style: _vm.style,\n attrs: { id: \"rux-icon\", title: _vm.label, size: _vm.size },\n },\n [\n _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 128 128\",\n preserveAspectRatio: \"xMidYMid meet\",\n focusable: \"false\",\n },\n },\n [_c(\"use\", { attrs: { href: _vm.getIcon(this.library, this.icon) } })]\n ),\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <span id=\"rux-icon\" :title=\"label\" :style=\"style\" :size=\"size\">\n <!-- Camel case props becase svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 128 128\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <use :href=\"getIcon(this.library, this.icon)\" />\n </svg>\n </span>\n</template>\n\n<script>\n// This component is a rewrite of the Astro UXDS RuxIcon into Vue\n// Prevents multiple customElement problem with single-spa\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'extra-small',\n },\n color: {\n type: String,\n },\n library: {\n type: String,\n default: '/icons/astro.svg',\n },\n label: {\n type: String,\n default: 'icon',\n },\n },\n computed: {\n style: function () {\n return '--iconColor=' + this.propscolor\n },\n },\n methods: {\n getIcon() {\n return this.library + '#' + this.icon\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RuxIcon.vue?vue&type=template&id=342f670e&\"\nimport script from \"./RuxIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./RuxIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('342f670e')) {\n api.createRecord('342f670e', component.options)\n } else {\n api.reload('342f670e', component.options)\n }\n module.hot.accept(\"./RuxIcon.vue?vue&type=template&id=342f670e&\", function () {\n api.rerender('342f670e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/RuxIcon.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :icon=\"icon\" class=\"astro-icon\" />\n</template>\n\n<script>\nimport RuxIcon from './RuxIcon.vue'\nimport { AstroIconLibrary } from '.'\n\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\nexport default {\n components: {\n RuxIcon,\n },\n props: {\n icon: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroIconLibrary.includes(val)\n },\n },\n },\n}\n</script>\n\n<style scoped>\n.astro-icon {\n fill: currentColor;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\"\nimport script from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b942113a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b942113a')) {\n api.createRecord('b942113a', component.options)\n } else {\n api.reload('b942113a', component.options)\n }\n module.hot.accept(\"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\", function () {\n api.rerender('b942113a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport AstroIcon from './AstroIcon'\n\nconst AstroIconLibrary = [\n // These are from the IDs in the default RuxIcon library: https://github.com/RocketCommunicationsInc/astro-components/blob/master/static/icons/astro.svg\n 'altitude',\n 'antenna',\n 'antenna-off',\n 'antenna-receive',\n 'antenna-transmit',\n 'equipment',\n 'mission',\n 'payload',\n 'processor',\n 'processor-alt',\n 'netcom',\n 'propulsion-power',\n 'thermal',\n 'satellite-off',\n 'satellite-receive',\n 'satellite-transmit',\n 'add-large',\n 'add-small',\n 'close-large',\n 'close-small',\n 'collapse',\n 'expand',\n 'lock',\n 'unlock',\n 'search',\n 'caution',\n 'maintenance',\n 'notifications',\n 'settings',\n\n // These are in that SVG file, but they're broken in RuxIcon:\n // 'twitter', // the twitter logo\n // 'progress', // circle\n // 'resources', // filing cabinet\n // 'solar', // grid\n]\n\nconst AstroIconVuetifyValues = AstroIconLibrary.reduce((values, icon) => {\n return {\n [`astro-${icon}`]: {\n component: AstroIcon,\n props: {\n icon,\n },\n },\n ...values,\n }\n}, {})\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#9ea7ad',\n}\n\nconst getStatusColorContrast = function (severity) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[severity]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nexport {\n AstroIconLibrary,\n AstroIconVuetifyValues,\n AstroStatuses,\n AstroStatusColors,\n getStatusColorContrast,\n}\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showAlertPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showAlertPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Alert box icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-alert-box-outline </v-icon>\n </v-btn>\n </template>\n\n <!-- Alerts list -->\n <v-card>\n <v-card-title>\n Alerts\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clearAlerts\"\n class=\"ml-1\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n </v-card-title>\n <v-card-text v-if=\"alerts.length === 0\"> No alerts </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n >\n <template v-for=\"(alert, index) in alerts\">\n <v-list-item\n @click=\"openDialog(alert)\"\n :key=\"`alert-${index}`\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title>\n {{ alert.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ alert.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"alert.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full alert -->\n <v-dialog v-model=\"alertDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedAlert.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedAlert.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-text>\n {{ selectedAlert.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"alertDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n alerts: [],\n alertDialog: false,\n showAlertPane: false,\n selectedAlert: {},\n }\n },\n watch: {\n showAlertPane: function (val) {\n if (val) {\n this.refreshList()\n }\n if (!val && this.selectedAlert.title) {\n this.alertDialog = false\n this.selectedAlert = {}\n }\n },\n },\n methods: {\n refreshList: function () {\n this.alerts = this.$store.state.notifyHistory\n },\n clearAlerts: function () {\n this.$store.commit('notifyClearHistory')\n this.refreshList()\n this.showAlertPane = false\n },\n openDialog: function (alert, clearToast = false) {\n this.selectedAlert = alert\n this.alertDialog = true\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\"\nimport script from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0e2e40\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3d0e2e40')) {\n api.createRecord('3d0e2e40', component.options)\n } else {\n api.reload('3d0e2e40', component.options)\n }\n module.hot.accept(\"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\", function () {\n api.rerender('3d0e2e40', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showNotificationPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _vm.unreadCount === 0\n ? _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\"\\n mdi-bell-outline\\n \"),\n ])\n : _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n \"offset-x\": \"24\",\n \"offset-y\": \"8\",\n color: _vm.badgeColor,\n bordered: \"\",\n content: _vm.unreadCount,\n },\n },\n [\n _c(\n \"v-icon\",\n {\n attrs: {\n size: _vm.size,\n color: _vm.badgeColor,\n },\n },\n [_vm._v(\" mdi-bell \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showNotificationPane,\n callback: function ($$v) {\n _vm.showNotificationPane = $$v\n },\n expression: \"showNotificationPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Notifications\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: {\n icon: \"\",\n \"data-test\": \"clear-notifications\",\n },\n on: { click: _vm.clearNotifications },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\", \"data-test\": \"notification-settings\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_c(\"v-icon\", [_vm._v(\" $astro-settings \")])],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.notifications.length === 0\n ? _c(\"v-card-text\", [\n _vm._v(\"\\n No notifications\\n \"),\n ])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n \"data-test\": \"notification-list\",\n },\n },\n [\n _vm._l(\n _vm.notificationList,\n function (notification, index) {\n return [\n notification.header\n ? [\n index !== 0\n ? _c(\"v-divider\", {\n key: index,\n staticClass: \"mb-2\",\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"v-subheader\",\n { key: notification.header },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.header) +\n \"\\n \"\n ),\n ]\n ),\n ]\n : _c(\n \"v-list-item\",\n {\n key: \"notification-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(notification)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n notification.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\n \"v-list-item-title\",\n {\n class: {\n \"text--secondary\":\n notification.read,\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.title) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item-action\",\n { staticClass: \"mt-0\" },\n [\n _c(\"v-list-item-action-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(\n notification.time\n )\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }\n ),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.notificationDialog,\n callback: function ($$v) {\n _vm.notificationDialog = $$v\n },\n expression: \"notificationDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: {\n status: _vm.selectedNotification.severity || \"normal\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(_vm.selectedNotification.time)\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.body) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n return _vm.navigate(_vm.selectedNotification.url)\n },\n },\n },\n [\n _vm._v(\"\\n Open\\n \"),\n _c(\"v-icon\", { attrs: { right: \"\" } }, [\n _vm._v(\" mdi-open-in-new \"),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.notificationDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.settingsDialog,\n callback: function ($$v) {\n _vm.settingsDialog = $$v\n },\n expression: \"settingsDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Notification settings \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Show toasts\" },\n model: {\n value: _vm.showToast,\n callback: function ($$v) {\n _vm.showToast = $$v\n },\n expression: \"showToast\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_vm._v(\"\\n close\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","const _severities = [\n // order of severities from highest to lowest\n 'fatal',\n 'critical',\n 'serious',\n 'caution',\n 'normal',\n 'standby',\n 'off',\n]\n\nconst _getSeverityIndeces = function (severities) {\n return severities.map((severity) =>\n _severities.indexOf(severity.toLowerCase())\n )\n}\n\nconst highestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.min(...indeces)\n return _severities[index]\n}\n\nconst lowestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.max(...indeces)\n return _severities[index]\n}\n\nconst orderBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.sort((a, b) => {\n return (\n _severities.indexOf(severityGetter(a)) -\n _severities.indexOf(severityGetter(b))\n )\n })\n}\n\nconst groupBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.reduce((groups, obj) => {\n const severity = severityGetter(obj)\n groups[severity] ||= []\n groups[severity].push(obj)\n return groups\n }, {})\n}\n\nexport { highestSeverity, lowestSeverity, orderBySeverity, groupBySeverity }\n","var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordPing() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ActionCable from '@rails/actioncable'\n//ActionCable.logger.enabled = true\nActionCable.ConnectionMonitor.staleThreshold = 10\n\nexport default class Cable {\n constructor(url = '/openc3-api/cable') {\n this._cable = null\n this._url = url\n }\n disconnect() {\n if (this._cable) {\n this._cable.disconnect()\n }\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n if (this._cable == null) {\n let final_url =\n this._url +\n '?scope=' +\n window.openc3Scope +\n '&authorization=' +\n localStorage.openc3Token\n this._cable = ActionCable.createConsumer(final_url)\n }\n return this._cable.subscriptions.create(\n {\n channel,\n ...additionalOptions,\n },\n callbacks\n )\n }\n )\n }\n recordPing() {\n this._cable.connection.monitor.recordPing()\n }\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showNotificationPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showNotificationPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Bell icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon v-if=\"unreadCount === 0\" :size=\"size\">\n mdi-bell-outline\n </v-icon>\n <v-badge\n v-else\n left\n offset-x=\"24\"\n offset-y=\"8\"\n :color=\"badgeColor\"\n bordered\n :content=\"unreadCount\"\n >\n <v-icon :size=\"size\" :color=\"badgeColor\"> mdi-bell </v-icon>\n </v-badge>\n </v-btn>\n </template>\n\n <!-- Notifications list -->\n <v-card>\n <v-card-title>\n Notifications\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"ml-1\"\n @click=\"clearNotifications\"\n data-test=\"clear-notifications\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n <v-btn\n icon\n @click=\"toggleSettingsDialog\"\n class=\"ml-1\"\n data-test=\"notification-settings\"\n >\n <v-icon> $astro-settings </v-icon>\n </v-btn>\n </v-card-title>\n <v-card-text v-if=\"notifications.length === 0\">\n No notifications\n </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n data-test=\"notification-list\"\n >\n <template v-for=\"(notification, index) in notificationList\">\n <template v-if=\"notification.header\">\n <v-divider v-if=\"index !== 0\" :key=\"index\" class=\"mb-2\" />\n <v-subheader :key=\"notification.header\">\n {{ notification.header }}\n </v-subheader>\n </template>\n\n <v-list-item\n v-else\n :key=\"`notification-${index}`\"\n @click=\"openDialog(notification)\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title\n :class=\"{ 'text--secondary': notification.read }\"\n >\n {{ notification.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ notification.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <v-list-item-action class=\"mt-0\">\n <v-list-item-action-text>\n {{ notification.time | shortDateTime }}\n </v-list-item-action-text>\n <v-spacer />\n </v-list-item-action>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"notification.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full notification -->\n <v-dialog v-model=\"notificationDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedNotification.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedNotification.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-subtitle>\n {{ selectedNotification.time | shortDateTime }}\n </v-card-subtitle>\n <v-card-text>\n {{ selectedNotification.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn\n color=\"primary\"\n text\n @click=\"navigate(selectedNotification.url)\"\n >\n Open\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n <v-btn color=\"primary\" text @click=\"notificationDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Dialog for changing notification settings -->\n <v-dialog v-model=\"settingsDialog\" width=\"600\">\n <v-card>\n <v-card-title> Notification settings </v-card-title>\n <v-card-text>\n <v-switch v-model=\"showToast\" label=\"Show toasts\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"toggleSettingsDialog\">\n close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { formatDistanceToNow } from 'date-fns'\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\nimport Cable from '../../../services/cable.js'\n\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n cable: new Cable(),\n subscription: null,\n notifications: [],\n showNotificationPane: false,\n toastNotification: {},\n notificationDialog: false,\n selectedNotification: {},\n settingsDialog: false,\n showToast: true,\n }\n },\n computed: {\n badgeColor: function () {\n if (!this.unreadCount) {\n return AstroStatusColors['off']\n }\n const severities = this.unreadNotifications\n .map((notification) => notification.severity)\n .filter((val, index, self) => {\n return self.indexOf(val) === index // Unique values\n })\n return AstroStatusColors[highestSeverity(severities)]\n },\n readNotifications: function () {\n return this.notifications\n .filter((notification) => notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadNotifications: function () {\n return this.notifications\n .filter((notification) => !notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadCount: function () {\n let result = this.unreadNotifications.length\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\n result += '+' // Indicate there are more\n }\n return result\n },\n notificationList: function () {\n const groups = groupBySeverity(this.unreadNotifications)\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\n (severity) => {\n const header = {\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\n }\n return [header, ...groups[severity]]\n }\n )\n if (this.readNotifications.length) {\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\n }\n return result\n },\n },\n watch: {\n showNotificationPane: function (val) {\n if (!val) {\n if (this.selectedNotification.title) {\n this.notificationDialog = false\n this.selectedNotification = {}\n } else {\n this.markAllAsRead()\n }\n }\n },\n showToast: function (val) {\n localStorage.notoast = !val\n },\n },\n created: function () {\n this.showToast = localStorage.notoast === 'false'\n this.subscribe()\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n markAllAsRead: function () {\n this.notifications.forEach((notification) => {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n })\n },\n clearNotifications: function () {\n this.markAllAsRead()\n this.notifications = []\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\n this.showNotificationPane = false\n },\n toggleNotificationPane: function () {\n this.showNotificationPane = !this.showNotificationPane\n },\n toggleSettingsDialog: function () {\n this.settingsDialog = !this.settingsDialog\n },\n openDialog: function (notification, clearToast = false) {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n this.selectedNotification = notification\n this.notificationDialog = true\n },\n navigate: function (url) {\n window.open(url, '_blank')\n },\n subscribe: function () {\n this.cable\n .createSubscription(\n 'NotificationsChannel',\n window.openc3Scope,\n {\n received: (data) => this.received(data),\n },\n {\n start_offset:\n localStorage.notificationStreamOffset ||\n localStorage.lastReadNotification,\n }\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n received: function (parsed) {\n this.cable.recordPing()\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\n }\n let foundToast = false\n parsed.forEach((notification) => {\n notification.read =\n notification.msg_id <= localStorage.lastReadNotification\n notification.severity = notification.severity || 'normal'\n if (\n !notification.read && // Don't toast read notifications\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\n ) {\n foundToast = true\n this.toastNotification = notification\n }\n })\n\n if (this.showToast && foundToast) {\n this.$notify[this.toastNotification.severity]({\n ...this.toastNotification,\n type: 'notification',\n duration:\n this.toastNotification.severity === 'critical' ? null : 5000,\n saveToHistory: false,\n })\n }\n\n if (\n this.notifications.length + parsed.length >\n NOTIFICATION_HISTORY_MAX_LENGTH\n ) {\n this.notifications.splice(\n 0,\n this.notifications.length +\n parsed.length -\n NOTIFICATION_HISTORY_MAX_LENGTH\n )\n }\n this.notifications = this.notifications.concat(parsed)\n },\n },\n filters: {\n shortDateTime: function (nsec) {\n if (!nsec) return ''\n const date = new Date(nsec / 1_000_000)\n return formatDistanceToNow(date, { addSuffix: true })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eda8ca60\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('eda8ca60')) {\n api.createRecord('eda8ca60', component.options)\n } else {\n api.reload('eda8ca60', component.options)\n }\n module.hot.accept(\"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\", function () {\n api.rerender('eda8ca60', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showUserMenu },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"offset-y\": \"\",\n \"close-on-content-click\": false,\n \"nudge-width\": 120,\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-account \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showUserMenu,\n callback: function ($$v) {\n _vm.showUserMenu = $$v\n },\n expression: \"showUserMenu\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\"v-card-text\", { staticClass: \"text-center\" }, [\n _c(\n \"div\",\n { staticStyle: { \"text-align\": \"center\", margin: \"5px\" } },\n [_vm._v(_vm._s(_vm.username))]\n ),\n _vm._v(\" \"),\n _vm.authenticated\n ? _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.logout },\n },\n [_vm._v(\" Logout \")]\n ),\n ],\n 1\n )\n : _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.login },\n },\n [_vm._v(\" Login \")]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Colorblind mode\" },\n model: {\n value: _vm.colorblindMode,\n callback: function ($$v) {\n _vm.colorblindMode = $$v\n },\n expression: \"colorblindMode\",\n },\n }),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showUserMenu\" class=\"overlay\" />\n <v-menu\n v-model=\"showUserMenu\"\n transition=\"slide-y-transition\"\n offset-y\n :close-on-content-click=\"false\"\n :nudge-width=\"120\"\n :nudge-bottom=\"20\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-account </v-icon>\n </v-btn>\n </template>\n\n <v-card>\n <v-card-text class=\"text-center\">\n <div style=\"text-align: center; margin: 5px\">{{ username }}</div>\n <div v-if=\"authenticated\">\n <v-btn block @click=\"logout\" color=\"primary\"> Logout </v-btn>\n </div>\n <div v-else>\n <v-btn block @click=\"login\" color=\"primary\"> Login </v-btn>\n </div>\n <div>\n <v-switch label=\"Colorblind mode\" v-model=\"colorblindMode\" />\n </div>\n </v-card-text>\n </v-card>\n </v-menu>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n let user = OpenC3Auth.user()\n return {\n showUserMenu: false,\n authenticated: !!localStorage.openc3Token,\n username: user['name'],\n }\n },\n computed: {\n colorblindMode: {\n get: function () {\n return localStorage.colorblindMode === 'true'\n },\n set: function (val) {\n localStorage.colorblindMode = val\n },\n },\n },\n methods: {\n logout: function () {\n OpenC3Auth.logout()\n },\n login: function () {\n OpenC3Auth.login(location.href)\n },\n },\n}\n</script>\n\n<style scoped>\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26b5fc12\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('26b5fc12')) {\n api.createRecord('26b5fc12', component.options)\n } else {\n api.reload('26b5fc12', component.options)\n }\n module.hot.accept(\"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\", function () {\n api.rerender('26b5fc12', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-navigation-drawer v-model=\"drawer\" app id=\"openc3-nav-drawer\">\n <v-list>\n <v-list-item>\n <v-list-item-icon\n style=\"\n margin-right: auto !important;\n margin-left: auto;\n margin-top: 0px;\n margin-bottom: 0px;\n \"\n >\n <img :src=\"logo\" alt=\"OpenC3\" />\n </v-list-item-icon>\n </v-list-item>\n <div style=\"text-align: center; font-size: 18pt\">{{ edition }}</div>\n <v-list-item class=\"my-0\">\n <v-list-item-content>\n <div v-for=\"(tool, name) in adminTools\" :key=\"name\">\n <v-btn\n block\n small\n :href=\"tool.url\"\n onclick=\"singleSpaNavigate(event)\"\n class=\"fixcenter\"\n >\n Admin\n </v-btn>\n </div>\n </v-list-item-content>\n </v-list-item>\n <v-divider />\n <v-treeview\n :items=\"items\"\n :open=\"initiallyOpen\"\n item-key=\"name\"\n dense\n open-on-click\n expand-icon=\"\"\n >\n <template v-slot:prepend=\"{ item, open }\">\n <v-icon v-if=\"!item.icon\">\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\n </v-icon>\n <a v-else :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n <v-icon> {{ item.icon }} </v-icon>\n </a>\n </template>\n <template v-slot:label=\"{ item }\">\n <a :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n {{ item.name }}\n </a>\n </template>\n <template v-slot:append=\"{ item }\">\n <a v-if=\"item.icon\" :href=\"newTabUrl(item)\" target=\"_blank\">\n <v-icon>mdi-open-in-new</v-icon>\n </a>\n </template>\n </v-treeview>\n </v-list>\n </v-navigation-drawer>\n <v-app-bar app color=\"tertiary darken-3\" id=\"openc3-app-toolbar\">\n <v-app-bar-nav-icon @click=\"drawer = !drawer\" />\n <v-divider vertical class=\"top-bar-divider-full-height\" />\n <span style=\"width: 100%\"><span id=\"openc3-menu\"></span></span>\n <div class=\"justify-right mr-2 pt-2\"><scope-selector /></div>\n <div class=\"justify-right\" data-test=\"alert-history\">\n <alert-history />\n </div>\n <div class=\"justify-right\" data-test=\"notifications\">\n <notifications />\n </div>\n <div class=\"justify-right\" data-test=\"user-menu\"><user-menu /></div>\n </v-app-bar>\n </div>\n</template>\n\n<script>\nimport Api from '../../services/api'\nimport logo from '../../../public/img/logo.png'\nimport { registerApplication, start } from 'single-spa'\nimport ScopeSelector from './components/ScopeSelector.vue'\nimport AlertHistory from './components/AlertHistory.vue'\nimport Notifications from './components/Notifications.vue'\nimport UserMenu from './components/UserMenu.vue'\n\nexport default {\n components: {\n ScopeSelector,\n AlertHistory,\n Notifications,\n UserMenu,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n items: [],\n drawer: true,\n appNav: {},\n logo: logo,\n initiallyOpen: [],\n }\n },\n computed: {\n // a computed getter\n shownTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n adminTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n },\n created() {\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\n (response) => {\n this.appNav = response.data\n\n let id = 1\n // Register apps and start single-spa\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown) {\n if (\n this.appNav[key].category &&\n this.appNav[key].category !== 'Admin'\n ) {\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\n this.initiallyOpen.push(this.appNav[key].category)\n const result = this.items.filter(\n (item) => item.name === this.appNav[key].category\n )\n if (result.length === 0) {\n this.items.push({\n id: id,\n name: this.appNav[key].category,\n children: [\n {\n id: id + 1,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n },\n ],\n })\n id++\n } else {\n result[0].children.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n } else if (!this.appNav[key].category) {\n this.items.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n id++\n\n if (this.appNav[key].folder_name) {\n let folder_name = this.appNav[key].folder_name\n let name = '@openc3/tool-' + folder_name\n registerApplication({\n name: name,\n app: () => System.import(name),\n activeWhen: ['/tools/' + folder_name],\n })\n }\n }\n }\n start({\n urlRerouteOnly: true,\n })\n\n // Redirect some base paths to the first tool\n if (\n window.location.pathname == '/' ||\n window.location.pathname == '/tools' ||\n window.location.pathname == '/tools/'\n ) {\n for (var key of Object.keys(this.shownTools)) {\n if (this.appNav[key].shown) {\n history.replaceState(null, '', this.appNav[key].url)\n break\n }\n }\n }\n\n // Check every minute if we need to update our token\n setInterval(() => {\n OpenC3Auth.updateToken(120).then(function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n })\n }, 60000)\n }\n )\n },\n methods: {\n newTabUrl(tool) {\n let url = null\n if (tool.url[0] == '/' && tool.url[1] != '/') {\n url = new URL(tool.url, window.location.origin)\n } else {\n url = new URL(tool.url)\n }\n url.searchParams.set('scope', window.openc3Scope)\n return url.href\n },\n },\n}\n</script>\n\n<style scoped>\ndiv a {\n color: white;\n font-size: 16px;\n display: block;\n height: 100%;\n width: 100%;\n}\na.fixcenter {\n display: flex;\n}\n.theme--dark.v-navigation-drawer {\n background-color: var(--v-primary-darken2);\n}\n#openc3-app-toolbar .top-bar-divider-full-height {\n margin: -4px 4px;\n min-height: calc(100% + 8px);\n}\n</style>\n<style>\n/* Remove the padding on root level nodes since we removed the expand icon */\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__level {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__toggle {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview-node__children\n div.v-treeview-node__level:nth-child(1) {\n width: 0px;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js&\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\"\nimport style1 from \"./AppNav.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00ae1763\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('00ae1763')) {\n api.createRecord('00ae1763', component.options)\n } else {\n api.reload('00ae1763', component.options)\n }\n module.hot.accept(\"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\", function () {\n api.rerender('00ae1763', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppNav.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-dialog\",\n {\n attrs: { width: \"500\" },\n model: {\n value: _vm.dialog,\n callback: function ($$v) {\n _vm.dialog = $$v\n },\n expression: \"dialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Clock out of sync \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _vm._v(\n \"\\n We've detected that your clock is approximately\\n \" +\n _vm._s(Math.abs(_vm.approximateDiscrepancySec)) +\n \" seconds\\n \" +\n _vm._s(\n _vm.approximateDiscrepancySec > 0 ? \"behind\" : \"ahead of\"\n ) +\n \" server time.\\n This can cause issues and might have unknown side effects.\\n \"\n ),\n _c(\"v-checkbox\", {\n attrs: { label: \"Don't show this again\" },\n model: {\n value: _vm.suppress,\n callback: function ($$v) {\n _vm.suppress = $$v\n },\n expression: \"suppress\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.dismiss },\n },\n [_vm._v(\" Dismiss \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"dialog\" width=\"500\">\n <v-card>\n <v-card-title> Clock out of sync </v-card-title>\n <v-card-text>\n We've detected that your clock is approximately\n {{ Math.abs(approximateDiscrepancySec) }} seconds\n {{ approximateDiscrepancySec > 0 ? 'behind' : 'ahead of' }} server time.\n This can cause issues and might have unknown side effects.\n <v-checkbox v-model=\"suppress\" label=\"Don't show this again\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"dismiss\"> Dismiss </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nconst ALLOWABLE_DISCREPANCY_MS = 3000\n\nexport default {\n data: function () {\n return {\n dismissed: false,\n suppress: false,\n discrepancy: 0,\n }\n },\n created: function () {\n this.suppress =\n localStorage['suppresswarning__clock_out_of_sync_with_server'] === 'true'\n if (!this.suppress) {\n axios\n .get('/openc3-api/time')\n .then((response) => {\n this.discrepancy = response.data.now_nsec / 1_000_000 - Date.now()\n })\n .catch((error) => {\n // Silently fail\n this.dismissed = true\n })\n }\n },\n methods: {\n dismiss: function () {\n localStorage['suppresswarning__clock_out_of_sync_with_server'] =\n this.suppress\n this.dismissed = true\n },\n },\n computed: {\n approximateDiscrepancySec: function () {\n return (this.discrepancy / 1000).toFixed()\n },\n dialog: function () {\n return (\n !this.dismissed &&\n Math.abs(this.discrepancy) >= ALLOWABLE_DISCREPANCY_MS\n )\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./TimeCheck.vue?vue&type=template&id=2963a6a3&\"\nimport script from \"./TimeCheck.vue?vue&type=script&lang=js&\"\nexport * from \"./TimeCheck.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2963a6a3')) {\n api.createRecord('2963a6a3', component.options)\n } else {\n api.reload('2963a6a3', component.options)\n }\n module.hot.accept(\"./TimeCheck.vue?vue&type=template&id=2963a6a3&\", function () {\n api.rerender('2963a6a3', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue\"\nexport default component.exports","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<script>\nimport { OpenC3Api } from '../../../services/openc3-api'\n\nexport default {\n data: function () {\n return {\n api: null,\n classification: {\n text: '',\n fontColor: 'white',\n backgroundColor: 'red',\n topHeight: 0,\n bottomHeight: 0,\n },\n }\n },\n computed: {\n classificationStyles: function () {\n // JavaScript can't access CSS psudo-elements (::before and ::after).\n // This string sets these JS values to CSS variables, accessible to\n // the style sheet via the style attribute on #app\n return [\n `--classification-text:\"${this.classification.text}\";`,\n `--classification-font-color:${this.classification.fontColor};`,\n `--classification-background-color:${this.classification.backgroundColor};`,\n `--classification-height-top:${this.classification.topHeight}px;`,\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\n ].join('')\n },\n },\n created: function () {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting('classification_banner')\n .then((response) => {\n if (response) {\n this.classification = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n },\n}\n</script>\n\n<style>\n/* push things up and down to make room for the classification banners */\n#app,\n#openc3-nav-drawer {\n margin-top: var(--classification-height-top);\n}\n#openc3-app-toolbar {\n top: var(--classification-height-top);\n}\n#openc3-nav-drawer .v-navigation-drawer__content {\n height: calc(\n 100% - var(--classification-height-top) -\n var(--classification-height-bottom)\n );\n}\n#footer {\n margin-bottom: var(--classification-height-bottom);\n}\n\n/* make the classification banners */\n#app::before,\n#app::after {\n z-index: 99;\n position: fixed;\n left: 0;\n right: 0;\n text-align: center;\n content: var(--classification-text);\n color: var(--classification-font-color);\n background-color: var(--classification-background-color);\n}\n#app::before {\n top: 0;\n font-size: calc(var(--classification-height-top) * 0.7);\n height: var(--classification-height-top);\n}\n#app::after {\n bottom: 0;\n font-size: calc(var(--classification-height-bottom) * 0.7);\n height: var(--classification-height-bottom);\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","var render, staticRenderFns\nimport script from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nexport * from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6e8d3d69')) {\n api.createRecord('6e8d3d69', component.options)\n } else {\n api.reload('6e8d3d69', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"\nexport default component.exports","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-app :style=\"classificationStyles\">\n <app-nav class=\"d-print-none\" edition=\"COSMOS\" />\n\n <!-- Sizes your content based upon application components -->\n <v-main>\n <v-container fluid>\n <div id=\"openc3-tool\"></div>\n <div><router-view /></div>\n </v-container>\n </v-main>\n <app-footer app class=\"d-print-none\" edition=\"COSMOS\" license=\"AGPLv3\" />\n <time-check />\n </v-app>\n</template>\n\n<script>\nimport AppFooter from '../../packages/openc3-tool-common/src/tools/base/AppFooter'\nimport AppNav from '../../packages/openc3-tool-common/src/tools/base/AppNav'\nimport TimeCheck from '../../packages/openc3-tool-common/src/tools/base/components/TimeCheck'\nimport ClassificationBanners from '../../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners'\nexport default {\n components: {\n AppFooter,\n AppNav,\n TimeCheck,\n },\n mixins: [ClassificationBanners],\n}\n</script>\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7ba5bd90')) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/login',\n name: 'Login',\n component: () =>\n import(\n '../../packages/openc3-tool-common/src/tools/base/components/Login'\n ),\n },\n ],\n})\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nconst NOTIFY_HISTORY_MAX_LENGTH = 100\n\nif (!window.hasOwnProperty('OpenC3Store')) {\n window.OpenC3Store = new Vuex.Store({\n state: {\n notifyHistory: [],\n },\n getters: {},\n mutations: {\n notifyAddHistory: function (state, notification) {\n if (state.notifyHistory.length >= NOTIFY_HISTORY_MAX_LENGTH) {\n state.notifyHistory.length = NOTIFY_HISTORY_MAX_LENGTH - 1\n }\n state.notifyHistory.unshift(notification)\n },\n notifyClearHistory: function (state) {\n state.notifyHistory = []\n },\n },\n modules: {},\n })\n}\n\nexport default window.OpenC3Store\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport Vue from 'vue'\nimport Vuetify from 'vuetify'\nimport { AstroIconVuetifyValues } from '../../../packages/openc3-tool-common/src/components/icons/index.js'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n theme: {\n dark: true,\n options: {\n customProperties: true,\n },\n themes: {\n dark: {\n primary: '#005a8f',\n secondary: '#4dacff',\n tertiary: '#283f58',\n },\n light: {\n primary: '#cce6ff',\n secondary: '#cce6ff',\n },\n },\n },\n icons: {\n values: {\n ...AstroIconVuetifyValues,\n },\n },\n})\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { style: _vm.iconStyle })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses } from '.'\nimport dark from '../../../public/icons/status-dark.png'\nimport light from '../../../public/icons/status-light.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroStatuses.includes(val)\n },\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor\n const bgHeight = 32 * this.scaleFactor\n const iconWidth = 32 * this.scaleFactor // Each icon in the png is 32px wide with no space in between\n const offset = AstroStatuses.indexOf(this.status)\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\"\nimport script from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3821337a')) {\n api.createRecord('3821337a', component.options)\n } else {\n api.reload('3821337a', component.options)\n }\n module.hot.accept(\"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\", function () {\n api.rerender('3821337a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue\"\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nVue.config.productionTip = false\n\nimport store from '../../packages/openc3-tool-common/src/plugins/store'\nimport '../../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss'\nimport vuetify from './plugins/vuetify'\n\nimport AstroStatusIndicator from '../../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator'\nVue.component('astro-status-indicator', AstroStatusIndicator)\n\nconst options = OpenC3Auth.getInitOptions()\nOpenC3Auth.init(options).then(() => {\n // Set the scope variable that will be used for the life of this page load\n // It is always default in standard edition\n window.openc3Scope = 'DEFAULT'\n\n new Vue({\n router,\n store,\n vuetify,\n render: (h) => h(App),\n }).$mount('#openc3-main')\n})\n"],"names":["inProgress","dataWebpackPrefix","module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","_ref2","_ref2$params","_ref2$noAuth","noAuth","_ref2$noScope","noScope","_args","wrap","_context","prev","next","OpenC3Auth","updateToken","defaultMinValidity","sent","setTokens","t0","login","localStorage","openc3Token","openc3Scope","abrupt","stop","_x","_x2","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","_objectSpread","get","_ref3","_ref3$headers","put","_ref4","_ref4$headers","post","_ref5","_ref5$headers","delete","_ref6","_ref6$headers","vueInstance","Vue","axiosInstance","origin","_error$response","_error$response2","_error$response2$conf","_error$response3","_error$response3$data","_error$response4","_error$response4$data","_error$response5","_error$response5$data","_error$response5$data2","refreshed","includes","body","exception","class","_error$response6","$notify","serious","title","___CSS_LOADER_EXPORT___","cssWithMappingToString","list","map","item","modules","mediaQuery","dedupe","alreadyImportedModules","_i","_arrayLikeToArray","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","_iterableToArrayLimit","o","minLen","n","_unsupportedIterableToArray","_nonIterableRest","cssMapping","base64","sourceMapping","sourceURLs","sources","sourceRoot","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","memo","insert","style","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","setAttributes","attributes","styleElement","nonce","insertStyleElement","needLayer","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","resolveDirectory","rootDirLevel","meta","urlString","rootDirectoryLevel","numDirsProcessed","finalPath","Number","isInteger","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","__esModule","default","locals","listToStyles","parentId","styles","newStyles","part","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleIndex","applyToSingletonTag","applyToTag","textStore","replaceText","replacement","Boolean","cssNode","childNodes","insertBefore","ssrId","__WEBPACK_EXTERNAL_MODULE__8645__","__WEBPACK_EXTERNAL_MODULE__4091__","__WEBPACK_EXTERNAL_MODULE__4688__","__WEBPACK_EXTERNAL_MODULE__9731__","__WEBPACK_EXTERNAL_MODULE__9191__","asyncGeneratorStep","gen","_next","_throw","arg","info","self","_defineProperty","enumerable","configurable","writable","_toPropertyKey","input","hint","prim","toPrimitive","res","_typeof","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","y","__system_context__","getter","d","definition","f","chunkId","reduce","u","script","needAttach","scripts","s","getAttribute","charset","nc","src","onScriptComplete","event","onload","clearTimeout","doneFns","r","toStringTag","p","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","autoPublicPath","_vm","_h","$createElement","_c","_self","classificationStyles","staticClass","attrs","edition","_v","fluid","app","license","_withStripped","color","height","icon","alt","staticStyle","openc3Version","sourceUrl","_g","_b","cursor","on","contextmenu","openMenu","_f","displayLocal","localDate","utcDate","formatString","menuX","menuY","absolute","model","showMenu","$$v","expression","click","toggleDisplayLocal","toggleDisplay24h","display24h","dateMode","setMonthFirst","setDayFirst","setNumber","requiredArgs","required","toDate","argument","argStr","getTime","NaN","toInteger","dirtyNumber","isNaN","ceil","startOfUTCISOWeek","dirtyDate","date","day","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","output","abs","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","G","localize","era","width","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","quarter","q","M","L","w","week","firstWeek","startOfUTCWeekYear","round","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","B","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","formatLong","timeLongFormatter","time","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","getTimezoneOffsetInMilliseconds","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","clock_zone","clock_12h","clock_dateMode","intervalCount","computed","dateFormat","timeFormat","watch","created","_this","setInterval","methods","_this2","preventDefault","clientX","clientY","$nextTick","filters","component","__file","_classCallCheck","Constructor","_defineProperties","descriptor","toPropertyKey","_createClass","protoProps","staticProps","OpenC3Api","_hashString","_inject_tlm","_tlm","_get_tlm_values","_get_tlm_packet","_exec","kwparams","headerOptions","jsonrpc","keyword_params","t1","json_class","raw","Infinity","POSITIVE_INFINITY","NEGATIVE_INFINITY","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","target_name","interface_name","_len","interface_params","_key","router_name","target_commands","packet","log_writer_name","limits_set","packet_name","_callee2","value_type","stale_time","converted","_args2","_context2","decode_openc3_type","_x3","_x4","_x5","_callee3","items","_args3","_context3","_x6","item_name","_callee4","_args4","_context4","_x7","_x8","_x9","_callee5","item_hash","_args5","_context5","_x10","_x11","command_name","parameter_name","param_list","encode_openc3_type","_cmd","tool","ignored","_callee6","arrayBuffer","hashAsArrayBuffer","uint8ViewOfHash","_context6","isSecureContext","TextEncoder","crypto","subtle","digest","padStart","_x12","components","ClockFooter","getSourceUrl","get_settings","catch","drawer","logo","_l","adminTools","block","small","onclick","initiallyOpen","dense","scopedSlots","_u","ref","newTabUrl","$event","vertical","scopes","disabled","label","scope","showAlertPane","transition","size","top","clearAlerts","alerts","alert","openDialog","left","inline","severity","proxy","alertDialog","selectedAlert","text","xmlns","viewBox","preserveAspectRatio","focusable","getIcon","library","propscolor","RuxIcon","AstroIconLibrary","AstroIconVuetifyValues","AstroIcon","AstroStatusColors","fatal","critical","caution","normal","standby","off","AstroStatuses","refreshList","$store","state","notifyHistory","commit","showNotificationPane","unreadCount","badgeColor","bordered","clearNotifications","toggleSettingsDialog","notifications","notificationList","notification","header","notificationDialog","selectedNotification","navigate","right","settingsDialog","showToast","iter","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","differenceInMonths","differenceInCalendarMonths","setDate","setMonth","isLastMonthNotFull","setHours","endOfDay","setFullYear","endOfMonth","isLastDayOfMonth","roundingMap","trunc","defaultRoundingMethod","property","MINUTES_IN_MONTH","dirtyBaseDate","localizeOptions","months","seconds","differenceInMilliseconds","roundingMethod","differenceInSeconds","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","_severities","adapters","logger","WebSocket","log","messages","enabled","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","getPollInterval","reconnectionBackoffRate","min","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","events","handler","reconnect","reload","confirmSubscription","notify","notifyAll","willAttemptReconnect","Subscription","mixin","properties","perform","action","command","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","findAll","sendCommand","callbackName","Consumer","_url","createWebSocketURL","connect","ActionCable","Cable","_cable","callbacks","additionalOptions","final_url","getConfig","NOTIFICATION_HISTORY_MAX_LENGTH","cable","toastNotification","severities","unreadNotifications","indeces","_getSeverityIndeces","_toConsumableArray","highestSeverity","readNotifications","sort","groups","objects","severityGetter","groupBySeverity","orderBySeverity","flatMap","markAllAsRead","notoast","destroyed","lastReadNotification","msg_id","notificationStreamOffset","toggleNotificationPane","createSubscription","received","start_offset","foundToast","duration","saveToHistory","shortDateTime","nsec","formatDistanceToNow","showUserMenu","margin","authenticated","logout","colorblindMode","user","set","ScopeSelector","AlertHistory","Notifications","UserMenu","appNav","shownTools","_Object$keys","shown","category","_i2","_Object$keys2","Api","_loop","_Object$keys3","_i3","children","folder_name","registerApplication","System","import","activeWhen","urlRerouteOnly","_i4","_Object$keys4","history","replaceState","URL","searchParams","dialog","approximateDiscrepancySec","suppress","dismiss","dismissed","discrepancy","now_nsec","toFixed","classification","fontColor","backgroundColor","topHeight","bottomHeight","load","get_setting","AppFooter","AppNav","TimeCheck","mixins","ClassificationBanners","cov_1khetde6f7","actualCoverage","Router","mode","routes","Vuex","OpenC3Store","getters","mutations","notifyAddHistory","NOTIFY_HISTORY_MAX_LENGTH","notifyClearHistory","cov_hlr4jmzey","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","Vuetify","theme","dark","customProperties","themes","primary","secondary","tertiary","light","icons","getOwnPropertyDescriptors","iconStyle","large","scale","scaleFactor","bgWidth","bgHeight","iconWidth","cov_14089wz6i9","productionTip","AstroStatusIndicator","getInitOptions","init","router","store","vuetify","App","$mount"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"openc3-tool-base.js","mappings":"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","sources":["webpack://tool-base/webpack/runtime/load script","webpack://tool-base/../node_modules/axios/index.js","webpack://tool-base/../node_modules/axios/lib/adapters/xhr.js","webpack://tool-base/../node_modules/axios/lib/axios.js","webpack://tool-base/../node_modules/axios/lib/cancel/CancelToken.js","webpack://tool-base/../node_modules/axios/lib/cancel/CanceledError.js","webpack://tool-base/../node_modules/axios/lib/cancel/isCancel.js","webpack://tool-base/../node_modules/axios/lib/core/Axios.js","webpack://tool-base/../node_modules/axios/lib/core/AxiosError.js","webpack://tool-base/../node_modules/axios/lib/core/InterceptorManager.js","webpack://tool-base/../node_modules/axios/lib/core/buildFullPath.js","webpack://tool-base/../node_modules/axios/lib/core/dispatchRequest.js","webpack://tool-base/../node_modules/axios/lib/core/mergeConfig.js","webpack://tool-base/../node_modules/axios/lib/core/settle.js","webpack://tool-base/../node_modules/axios/lib/core/transformData.js","webpack://tool-base/../node_modules/axios/lib/defaults/index.js","webpack://tool-base/../node_modules/axios/lib/defaults/transitional.js","webpack://tool-base/../node_modules/axios/lib/env/data.js","webpack://tool-base/../node_modules/axios/lib/helpers/bind.js","webpack://tool-base/../node_modules/axios/lib/helpers/buildURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/combineURLs.js","webpack://tool-base/../node_modules/axios/lib/helpers/cookies.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAxiosError.js","webpack://tool-base/../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://tool-base/../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://tool-base/../node_modules/axios/lib/helpers/null.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseHeaders.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseProtocol.js","webpack://tool-base/../node_modules/axios/lib/helpers/spread.js","webpack://tool-base/../node_modules/axios/lib/helpers/toFormData.js","webpack://tool-base/../node_modules/axios/lib/helpers/validator.js","webpack://tool-base/../node_modules/axios/lib/utils.js","webpack://tool-base/../packages/openc3-tool-common/src/services/api.js","webpack://tool-base/../packages/openc3-tool-common/src/services/axios.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue?bfef","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?5118","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?e84a","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?63f3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?5107","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?6ed4","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?cb88","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?c20c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?3ed1","webpack://tool-base/./node_modules/css-loader/dist/runtime/api.js","webpack://tool-base/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/public-path.js","webpack://tool-base/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss?743b","webpack://tool-base/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://tool-base/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://tool-base/external system \"single-spa\"","webpack://tool-base/external system \"vue\"","webpack://tool-base/external system \"vue-router\"","webpack://tool-base/external system \"vuetify\"","webpack://tool-base/external system \"vuex\"","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/webpack/bootstrap","webpack://tool-base/webpack/runtime/__system_context__","webpack://tool-base/webpack/runtime/compat get default export","webpack://tool-base/webpack/runtime/define property getters","webpack://tool-base/webpack/runtime/ensure chunk","webpack://tool-base/webpack/runtime/get javascript chunk filename","webpack://tool-base/webpack/runtime/hasOwnProperty shorthand","webpack://tool-base/webpack/runtime/make namespace object","webpack://tool-base/webpack/runtime/publicPath","webpack://tool-base/webpack/runtime/jsonp chunk loading","webpack://tool-base/webpack/runtime/nonce","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/1.js","webpack://tool-base/./src/App.vue?9dca","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?f377","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?53d5","webpack://tool-base/../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://tool-base/../node_modules/date-fns/esm/toDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/index.js","webpack://tool-base/../node_modules/date-fns/esm/format/index.js","webpack://tool-base/../node_modules/date-fns/esm/isValid/index.js","webpack://tool-base/../node_modules/date-fns/esm/isDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/subMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/addMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?34de","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?61eb","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://tool-base/../packages/openc3-tool-common/src/services/openc3-api.js","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue?5c92","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue?92b6","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue?09e2","webpack://tool-base/../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue?b8b6","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?d240","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?fdce","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?c5a1","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?be73","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?5ac3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?b788","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?8317","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?e43a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?892c","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?fc71","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?4a0a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?841b","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?acc1","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?3c27","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?97f9","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?1dea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?eaa2","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?0a7c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?83ba","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://tool-base/../node_modules/date-fns/esm/compareAsc/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfDay/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/assign/index.js","webpack://tool-base/../node_modules/date-fns/esm/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/util/AstroStatus.js","webpack://tool-base/../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack://tool-base/../packages/openc3-tool-common/src/services/cable.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue","webpack://tool-base/../node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?7f57","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?35f7","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?68ea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?9364","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?6931","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?2ffc","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?4315","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?fe83","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?4ede","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?ee4e","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?e59f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?054f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?bb40","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?c676","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?2259","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?e925","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?09ba","webpack://tool-base/src/App.vue","webpack://tool-base/./src/App.vue?b39b","webpack://tool-base/./src/App.vue","webpack://tool-base/./src/router.js","webpack://tool-base/../packages/openc3-tool-common/src/plugins/store.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/./src/plugins/vuetify.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?8f08","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?6e05","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?c50f","webpack://tool-base/./src/openc3-tool-base.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"tool-base:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n }\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_splash.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_variables.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_mixins.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_main.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_topbar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_sidebar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_profile.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_menu.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_content.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_footer.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_responsive.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_utils.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_dashboard.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_overrides.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\",\".splash-screen {\\n width: 100%;\\n height: 100%;\\n position: fixed;\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n\\n .splash-container {\\n width: 40px;\\n height: 40px;\\n margin: 0px auto;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -20px;\\n margin-top: -20px;\\n\\n }\\n\\n .splash-double-bounce1, .splash-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n border-radius: 50%;\\n background-color: $topbarItemColor;\\n opacity: 0.6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n -webkit-animation: splash-bounce 2.0s infinite ease-in-out;\\n animation: splash-bounce 2.0s infinite ease-in-out;\\n }\\n\\n .splash-double-bounce2 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s;\\n }\\n\\n @-webkit-keyframes splash-bounce {\\n 0%, 100% { -webkit-transform: scale(0.0) }\\n 50% { -webkit-transform: scale(1.0) }\\n }\\n\\n @keyframes splash-bounce {\\n 0%, 100% {\\n transform: scale(0.0);\\n -webkit-transform: scale(0.0);\\n } 50% {\\n transform: scale(1.0);\\n -webkit-transform: scale(1.0);\\n }\\n }\\n}\\n\",\"/* General */\\n$fontSize: 14px;\\n$bodyBgColor: #edf0f5;\\n$textColor: #333333;\\n$textSecondaryColor: #707070;\\n$borderRadius: 3px;\\n$dividerColor: #e3e3e3;\\n$transitionDuration: 0.2s;\\n$maskBgColor: #424242;\\n$focusShadowColor: #8dcdff;\\n\\n/* Menu Common */\\n$menuitemBadgeBgColor: #007be5;\\n$menuitemBadgeColor: #ffffff;\\n$submenuFontSize: 13px;\\n$menuitemActiveRouteColor: rgb(77, 172, 255);\\n\\n/* Menu Light */\\n$menuBgColorFirst: #f3f4f9;\\n$menuBgColorLast: #d7dbe8;\\n$menuitemColor: #232428;\\n$menuitemHoverColor: #0388e5;\\n$menuitemActiveColor: #0388e5;\\n$menuitemActiveBgColor: #ffffff;\\n$menuitemBorderColor: rgba(207, 211, 224, 0.6);\\n\\n/* Menu Dark */\\n$menuDarkBgColorFirst: rgb(0, 23, 36);\\n$menuDarkBgColorLast: rgb(0, 54, 86);\\n$menuitemDarkColor: #ffffff;\\n$menuitemDarkHoverColor: rgb(0, 90, 143);\\n$menuitemDarkActiveColor: rgb(77, 172, 255);\\n$menuitemDarkActiveBgColor: rgb(0, 36, 57);\\n$menuitemDarkBorderColor: rgba(52, 56, 65, 0.6);\\n\\n/* Topbar */\\n$topbarLeftBgColor: rgb(0, 23, 36);\\n$topbarRightBgColor: rgb(0, 23, 36);\\n$topbarItemBadgeBgColor: #ef6262;\\n$topbarItemBadgeColor: #ffffff;\\n$topbarItemColor: #ffffff;\\n$topbarItemHoverColor: #c3e8fb;\\n$topbarSearchInputBorderBottomColor: #ffffff;\\n$topbarSearchInputColor: #ffffff;\\n\\n/* Footer */\\n$footerBgColor: rgb(24, 38, 53);\\n\",\"// Icon Override Mixin\\n@mixin icon-override($icon) {\\n &:before {\\n content: $icon;\\n }\\n}\\n\\n// === MIXINS === //\\n@mixin border-radius($val) {\\n -moz-border-radius: $val;\\n -webkit-border-radius: $val;\\n border-radius: $val;\\n}\\n\\n@mixin border-radius-right($val) {\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val; \\n}\\n\\n@mixin border-radius-left($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n}\\n\\n@mixin border-radius-top($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n}\\n\\n@mixin border-radius-bottom($val) {\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val;\\n}\\n\\n@mixin linear-gradient($top, $bottom){\\n background: $top; /* Old browsers */\\n background: -moz-linear-gradient(top, $top 0%, $bottom 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(top, $top 0%,$bottom 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(top, $top 0%,$bottom 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(top, $top 0%,$bottom 100%); /* IE10+ */\\n background: linear-gradient(to bottom, $top 0%,$bottom 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 ); /* IE6-9 */\\n}\\n\\n@mixin linear-gradient-left($left, $right){\\n background: $left; /* Old browsers */\\n background: -moz-linear-gradient(left, $left 0%, $right 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, right top, color-stop(0%,$left), color-stop(100%,$right)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(left, $left 0%,$right 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(left, $left 0%,$right 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(left, $left 0%,$right 100%); /* IE10+ */\\n background: linear-gradient(to right, $left 0%,$right 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 ); /* IE6-9 */\\n}\\n\\n@mixin transition($transition...) {\\n -moz-transition: $transition;\\n -o-transition: $transition;\\n -webkit-transition: $transition;\\n transition: $transition;\\n}\\n\\n@mixin transition-property($property) {\\n -webkit-transition-property: $property;\\n -moz-transition-property: $property;\\n -ms-transition-property: $property;\\n -o-transition-property: $property;\\n transition-property: $property;\\n}\\n\\n@mixin transition-duration($duration) {\\n -moz-transition-duration: $duration;\\n -webkit-transition-duration: $duration;\\n -o-transition-duration: $duration;\\n transition-duration: $duration;\\n}\\n\\n@mixin transition-timing-function($function) {\\n -webkit-transition-timing-function: $function;\\n -moz-transition-timing-function: $function;\\n -o-transition-timing-function: $function;\\n transition-timing-function: $function;\\n}\\n\\n@mixin opacity($opacity) {\\n opacity: $opacity;\\n $opacity-ie: $opacity * 100;\\n filter: alpha(opacity=$opacity-ie);\\n}\\n\\n@mixin shadow($value) {\\n -webkit-box-shadow: $value;\\n -moz-box-shadow: $value;\\n box-shadow: $value;\\n}\\n\\n@mixin focused() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin focused-inset() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin clearfix {\\n &:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n}\",\"* {\\n box-sizing: border-box;\\n}\\n\\nhtml {\\n height: 100%;\\n}\\n\\nbody {\\n font-family: 'Open Sans', 'Helvetica Neue', sans-serif;\\n font-size: $fontSize;\\n color: $textColor;\\n /* background-color: $bodyBgColor; */\\n margin: 0;\\n padding: 0;\\n min-height: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\na {\\n text-decoration: none;\\n}\\n\\n.layout-wrapper {\\n padding: 0;\\n}\\n\\n// Don't let the min-height be 100vh because it forces a scroll\\n// with our header and footer\\n.v-application--wrap {\\n min-height: 0 !important;\\n}\\n\",\".layout-topbar {\\n position: fixed;\\n height: 80px;\\n padding: 0.7em 1.5em 0em 1.5em;\\n color: #ffffff;\\n z-index: 999;\\n right: 0;\\n @include clearfix();\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n @include transition(left $transitionDuration);\\n\\n .layout-topbar-icons {\\n float: right;\\n display: block;\\n -moz-animation-duration: 0.5s;\\n -webkit-animation-duration: 0.5s;\\n animation-duration: 0.5s;\\n\\n button {\\n position: relative;\\n color: $topbarItemColor;\\n margin-left: 20px;\\n display: inline-block;\\n text-decoration: none;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n\\n &:focus {\\n @include focused();\\n }\\n\\n span {\\n &.layout-topbar-icon {\\n font-size: 2em;\\n }\\n\\n &.layout-topbar-item-text {\\n font-size: 20px;\\n display: none;\\n }\\n\\n &.layout-topbar-badge {\\n position: absolute;\\n font-size: 10px;\\n right: -5px;\\n top: -5px;\\n width: 16px;\\n height: 16px;\\n text-align: center;\\n line-height: 16px;\\n color: $topbarItemBadgeColor;\\n background-color: $topbarItemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n }\\n }\\n\\n .layout-topbar-search {\\n padding: 0;\\n position: relative;\\n display: inline-block;\\n top: -4px;\\n\\n input {\\n display: inline-block;\\n border: 0 none;\\n font-size: $fontSize;\\n background: transparent;\\n border-bottom: 2px solid $topbarSearchInputBorderBottomColor;\\n outline: 0 none;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: $topbarSearchInputColor;\\n width: 100px;\\n padding: 1px 20px 1px 1px;\\n margin: 0px;\\n @include border-radius(2px);\\n\\n &::-webkit-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &::-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-ms-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n font-size: 18px;\\n position: absolute;\\n top: -1px;\\n right: 0px;\\n }\\n\\n &:hover {\\n input {\\n border-bottom-color: $topbarItemHoverColor;\\n &::-webkit-input-placeholder {\\n opacity: 1;\\n }\\n &:-moz-placeholder {\\n opacity: 1;\\n }\\n &::-moz-placeholder {\\n opacity: 1;\\n }\\n &:-ms-input-placeholder {\\n opacity: 1;\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n color: $topbarItemHoverColor;\\n }\\n }\\n }\\n }\\n\\n .layout-menu-button {\\n cursor: pointer;\\n display: inline-block;\\n text-decoration: none;\\n color: $topbarItemColor;\\n @include transition(color $transitionDuration);\\n\\n span {\\n font-size: 2em;\\n }\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n }\\n\\n button {\\n cursor: pointer;\\n }\\n}\\n\",\".layout-sidebar {\\n position: fixed;\\n width: 250px;\\n height: 100%;\\n z-index: 999;\\n overflow-y: auto;\\n user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n @include transition(transform $transitionDuration);\\n @include shadow(0 0 6px 0 rgba(0, 0, 0, 0.16));\\n\\n &.layout-sidebar-enter,\\n &.layout-sidebar-leave-to {\\n transform: translateX(-100%);\\n }\\n\\n .layout-logo {\\n text-align: center;\\n margin-top: 24px;\\n }\\n\\n .menuitem-badge {\\n display: inline-block;\\n margin-left: 4px;\\n font-size: 10px;\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n text-align: center;\\n color: $menuitemBadgeColor;\\n background-color: $menuitemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n}\",\".layout-profile {\\n text-align: center;\\n padding: 10px 0 10px 0;\\n\\n img {\\n width: 56px;\\n margin: 10px;\\n }\\n\\n .layout-profile-link {\\n cursor: pointer;\\n display: inline-block;\\n margin-bottom: 0.75em;\\n @include transition(color $transitionDuration);\\n\\n i {\\n display: inline-block;\\n font-size: 16px;\\n vertical-align: middle;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n button {\\n width: 100%;\\n padding: 1em;\\n border: 0 none;\\n border-radius: 0;\\n cursor: pointer;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n\\n span {\\n margin-left: 0.25em;\\n vertical-align: middle;\\n }\\n\\n i {\\n vertical-align: middle;\\n }\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\".layout-menu-container {\\n padding-bottom: 120px;\\n}\\n\\n.layout-menu {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n\\n li {\\n a {\\n cursor: pointer;\\n position: relative;\\n text-decoration: none;\\n display: block;\\n @include transition(color $transitionDuration);\\n\\n i {\\n font-size: 18px;\\n vertical-align: middle;\\n }\\n\\n span {\\n margin-left: .25em;\\n vertical-align: middle;\\n line-height: 18px;\\n display: inline-block;\\n }\\n\\n .menuitem-toggle-icon {\\n position: absolute;\\n top: 50%;\\n right: 1em;\\n margin-top: -9px;\\n }\\n\\n &.router-link-active {\\n font-weight: 700;\\n }\\n\\n &:focus {\\n @include focused-inset();\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n .menuitem-toggle-icon {\\n @include icon-override(\\\"\\\\e933\\\");\\n }\\n }\\n }\\n }\\n\\n > li {\\n > a {\\n padding: 1em;\\n\\n span {\\n font-size: $fontSize;\\n }\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n padding-left: 1.5em;\\n\\n li {\\n a {\\n cursor: pointer;\\n padding: .75em 1em;\\n border-top: 0 none;\\n\\n span {\\n font-size: $submenuFontSize;\\n }\\n }\\n\\n &:last-child {\\n padding-bottom: 1em;\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n @include linear-gradient($menuBgColorFirst, $menuBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemActiveBgColor;\\n color: $menuitemActiveColor;\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n @include linear-gradient($menuDarkBgColorFirst, $menuDarkBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemDarkBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemDarkBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemDarkColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemDarkActiveBgColor;\\n color: $menuitemDarkActiveColor;\\n }\\n }\\n }\\n }\\n}\",\".layout-main {\\n @include transition(margin-left $transitionDuration);\\n padding: 96px 16px 16px 16px;\\n}\\n\",\".layout-footer {\\n @include transition(margin-left $transitionDuration);\\n background-color: $footerBgColor;\\n padding: 1em 2em;\\n\\n img {\\n vertical-align: middle;\\n }\\n\\n .footer-text {\\n vertical-align: middle;\\n }\\n}\",\"@media (min-width: 1025px) {\\n .layout-wrapper {\\n &.layout-overlay { \\n .layout-topbar {\\n left: 0;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n \\n &.layout-overlay-sidebar-active {\\n .layout-sidebar {\\n left: 0;\\n }\\n \\n .layout-topbar {\\n left: 250px;\\n }\\n }\\n }\\n\\n &.layout-static { \\n .layout-topbar {\\n left: 250px;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 250px;\\n }\\n \\n &.layout-static-sidebar-inactive { \\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n}\\n\\n@media (max-width: 1024px) {\\n .layout-wrapper {\\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n\\n .layout-sidebar {\\n @include transition(left $transitionDuration);\\n left: -250px;\\n margin-top: 50px;\\n }\\n\\n .layout-mask {\\n display: none;\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 50px;\\n left: 0;\\n z-index: 998;\\n background-color: $maskBgColor;\\n @include opacity(0.7);\\n }\\n\\n &.layout-mobile-sidebar-active {\\n .layout-sidebar {\\n left: -0;\\n }\\n\\n .layout-mask {\\n display: block;\\n }\\n }\\n }\\n\\n .body-overflow-hidden {\\n overflow: hidden;\\n }\\n}\",\"/* Typography */\\nh1 {\\n font-weight: normal;\\n margin: 0;\\n font-size: 24px;\\n}\\n\\nh2 {\\n font-size: 20px;\\n font-weight: normal;\\n margin: 0;\\n}\\n\\n.card {\\n background-color: #ffffff;\\n padding: 1em;\\n margin-bottom: 16px;\\n @include border-radius($borderRadius);\\n\\n &.card-w-title {\\n padding-bottom: 2em;\\n }\\n\\n h1 {\\n margin: 1em 0 .5em 0;\\n border-bottom: 1px solid #d5d5d5;\\n padding: .1em;\\n font-size: 24px;\\n\\n &:first-child {\\n margin: 0 0 .5em 0;\\n }\\n }\\n}\\n\\n/* Code Highlight */\\n.docs {\\n pre[class*=\\\"language-\\\"] {\\n padding: 0 !important;\\n background: transparent;\\n overflow: visible;\\n \\n > code {\\n border-left: 0 none;\\n box-shadow: none;\\n font-size: 14px;\\n }\\n }\\n}\\n\",\"/* Dashboard */\\n.dashboard {\\n \\n .summary {\\n position: relative;\\n \\n .title {\\n font-size: 20px;\\n }\\n \\n .detail {\\n color: $textSecondaryColor;\\n display: block;\\n margin-top: 10px;\\n }\\n \\n .count {\\n color: #ffffff;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n font-size: 24px;\\n padding: 7px 14px;\\n @include border-radius($borderRadius);\\n \\n &.visitors {\\n background-color: #20d077;\\n }\\n \\n &.purchases {\\n background-color: #f9c851;\\n }\\n \\n &.revenue {\\n background-color: #007be5;\\n }\\n }\\n }\\n\\n .highlight-box {\\n height: 100px;\\n @include clearfix();\\n \\n .initials {\\n height: 100%;\\n float: left;\\n width: 50%;\\n text-align: center;\\n padding: 1em;\\n\\n > span {\\n font-size: 48px;\\n }\\n }\\n \\n .highlight-details {\\n height: 100%;\\n background-color: #ffffff;\\n float: left;\\n width: 50%;\\n padding: 1em;\\n\\n i {\\n font-size: 24px;\\n vertical-align: middle;\\n margin-right: .25em;\\n }\\n \\n .count {\\n color: $textSecondaryColor;\\n font-size: 36px;\\n display: block;\\n }\\n }\\n }\\n \\n .task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n \\n li {\\n padding: .5em .25em;\\n border-bottom: 1px solid $dividerColor;\\n @include clearfix();\\n }\\n \\n .p-checkbox {\\n vertical-align: middle;\\n margin-right: .5em;\\n }\\n \\n .task-name {\\n vertical-align: middle;\\n }\\n \\n i {\\n float: right;\\n font-size: 24px;\\n color: $textSecondaryColor;\\n }\\n\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contact-form {\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contacts {\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n border-bottom: 1px solid $dividerColor;\\n \\n button {\\n padding: 9px;\\n width: 100%;\\n box-sizing: border-box;\\n text-decoration: none;\\n position: relative;\\n display: block;\\n @include border-radius(2px);\\n @include transition(background-color .2s);\\n \\n .name {\\n position: absolute;\\n right: 10px;\\n top: 10px;\\n font-size: 18px;\\n }\\n \\n .email {\\n position: absolute;\\n right: 10px;\\n top: 30px;\\n font-size: 14px;\\n color: $textSecondaryColor;\\n }\\n \\n &:hover {\\n cursor: pointer;\\n background-color: #eeeeee;\\n }\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n }\\n }\\n \\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n \\n .activity-list {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n \\n li {\\n border-bottom: 1px solid $dividerColor;\\n padding: 16px 8px;\\n \\n .count {\\n font-size: 24px;\\n color: #ffffff;\\n background-color: #007be5;\\n font-weight: 700;\\n display: inline-block;\\n padding: .25em .5em;\\n @include border-radius($borderRadius);\\n }\\n \\n &:first-child {\\n border-top: 1px solid $dividerColor;\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n\\n .p-col-6:first-child {\\n font-size: 18px;\\n padding: .5em 0 0 .5em;\\n }\\n \\n .p-col-6:last-child {\\n text-align: right;\\n color: $textSecondaryColor;\\n }\\n }\\n }\\n}\\n\",\"// This is for global overrides only. If it's contained to a component put it there.\\n// Also use the variables created by vueify like var(--v-primary-darken2) rather\\n// than something absolute so theming works. See vuetify.js for the base colors\\n// and note the variations are: base, lighten[1-5], and darken[1-4]\\n\\n.openc3-green {\\n color: rgb(0, 200, 0) !important;\\n}\\n.openc3-yellow {\\n color: rgb(255, 220, 0) !important;\\n}\\n.openc3-red {\\n color: rgb(255, 45, 45) !important;\\n}\\n.openc3-blue {\\n color: rgb(0, 153, 255) !important;\\n}\\n.openc3-purple {\\n color: rgb(200, 0, 200) !important;\\n}\\n.openc3-black {\\n color: black !important;\\n}\\n.openc3-white {\\n color: white !important;\\n}\\n\\n// Base colors\\n.theme--dark.v-system-bar {\\n background-color: var(--v-primary-base) !important;\\n}\\n.theme--dark.v-system-bar.active {\\n background-color: var(--v-secondary-base) !important;\\n}\\nbody,\\n.theme--dark.v-application,\\n.theme--dark.v-main,\\n.theme--dark.v-content {\\n background-color: var(--v-tertiary-base) !important;\\n}\\n\\n// Highlight colors\\n.theme--dark.v-sheet.v-list,\\n.theme--dark.v-list,\\n.theme--dark.v-list-item {\\n background-color: var(--v-primary-darken2) !important;\\n}\\n.theme--dark.v-data-table,\\n.theme--dark.v-item-group,\\n.theme--dark.v-dialog,\\n.theme--dark.v-card,\\n.theme--dark.v-tab,\\n.theme--dark.v-sheet,\\n.theme--dark.v-date-picker-header,\\n.theme--dark.v-date-picker-table,\\n.theme--dark.v-time-picker-clock__container,\\n.theme--dark.p-menubar {\\n background-color: var(--v-tertiary-darken2) !important;\\n}\\n\\ninput {\\n // This causes the browser to style input icons for a dark background\\n color-scheme: dark;\\n // Make the caret color be white instead of a dark blue\\n caret-color: auto;\\n}\\n\\n// Fix the single spa debug panel so the text is readable\\n.imo-modal-container input {\\n color: black;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.logo[data-v-36f1a220] {\\n float: right;\\n margin: 15px;\\n}\\n.cosmos[data-v-36f1a220] {\\n text-align: center;\\n font-size: 18pt;\\n}\\n.reason[data-v-36f1a220] {\\n font-weight: bold;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue\"],\"names\":[],\"mappings\":\";AAsFA;EACA,YAAA;EACA,YAAA;AACA;AACA;EACA,kBAAA;EACA,eAAA;AACA;AACA;EACA,iBAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2023 OpenC3, Inc.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <v-dialog v-model=\\\"show\\\" width=\\\"650px\\\">\\n <v-card>\\n <v-system-bar>\\n <v-spacer />\\n <span> Upgrade to COSMOS Enterprise Edition </span>\\n <v-spacer />\\n </v-system-bar>\\n <v-card-text class=\\\"mt-2\\\">\\n <div class=\\\"logo\\\">\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n <div class=\\\"cosmos\\\">Enterprise Edition</div>\\n </div>\\n <div class=\\\"pb-4\\\">\\n Thank you for using the COSMOS Open Source Edition!\\n </div>\\n <div v-if=\\\"reason\\\">\\n <div class=\\\"pb-4 pl-4 reason\\\">\\n {{ reason }}\\n </div>\\n </div>\\n COSMOS Enterprise Edition removes all restrictions and offers users with\\n role based access control, scaling on kubernetes, cloud platform\\n support, multiple scopes, various integrations with common protocols and\\n hardware, commercial licensing, and much more!<br /><br />\\n Learn more at\\n <a href=\\\"https://openc3.com/enterprise\\\"\\n >https://openc3.com/enterprise</a\\n >\\n and help support COSMOS Open Source by supporting our business. Contact\\n us at <a href=\\\"mailto:support@openc3.com\\\">support@openc3.com</a> for\\n more information about Enterprise Edition, COSMOS training, COSMOS\\n support, and custom COSMOS development.\\n </v-card-text>\\n <v-card-actions>\\n <v-spacer />\\n <v-btn class=\\\"mx-2\\\" color=\\\"primary\\\" @click=\\\"show = !show\\\"> Ok </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n</template>\\n\\n<script>\\nimport logo from '../../public/img/logo.png'\\n\\nexport default {\\n props: {\\n value: Boolean, // value is the default prop when using v-model\\n reason: String,\\n },\\n data() {\\n return {\\n logo: logo,\\n }\\n },\\n computed: {\\n show: {\\n get() {\\n return this.value\\n },\\n set(value) {\\n this.$emit('input', value) // input is the default event when using v-model\\n },\\n },\\n },\\n}\\n</script>\\n<style scoped>\\n.logo {\\n float: right;\\n margin: 15px;\\n}\\n.cosmos {\\n text-align: center;\\n font-size: 18pt;\\n}\\n.reason {\\n font-weight: bold;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.astro-icon[data-v-b942113a] {\\n fill: currentColor;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"],\"names\":[],\"mappings\":\";AAgDA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <rux-icon :icon=\\\"icon\\\" class=\\\"astro-icon\\\" />\\n</template>\\n\\n<script>\\nimport RuxIcon from './RuxIcon.vue'\\nimport { AstroIconLibrary } from '.'\\n\\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\\nexport default {\\n components: {\\n RuxIcon,\\n },\\n props: {\\n icon: {\\n type: String,\\n required: true,\\n validator: (val) => {\\n return AstroIconLibrary.includes(val)\\n },\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.astro-icon {\\n fill: currentColor;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.base[data-v-1f2e2c8b] {\\n margin-left: 5px;\\n cursor: pointer;\\n}\\n.enterprise[data-v-1f2e2c8b] {\\n margin-left: 5px;\\n}\\n#footer[data-v-1f2e2c8b] {\\n z-index: 1000; /* On TOP! */\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppFooter.vue\"],\"names\":[],\"mappings\":\";AAsGA;EACA,gBAAA;EACA,eAAA;AACA;AACA;EACA,gBAAA;AACA;AACA;EACA,aAAA,EAAA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2023, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <v-footer id=\\\"footer\\\" app color=\\\"tertiary darken-3\\\" height=\\\"33\\\">\\n <img :src=\\\"icon\\\" alt=\\\"OpenC3\\\" />\\n <span :class=\\\"footerClass\\\" @click=\\\"upgrade\\\"\\n >OpenC3 {{ edition }} {{ version }} © 2023 - License:\\n {{ license }}</span\\n >\\n <v-spacer />\\n <a :href=\\\"sourceUrl\\\" class=\\\"white--text text-decoration-underline\\\">\\n Source\\n </a>\\n <v-spacer />\\n <div class=\\\"justify-right\\\"><clock-footer /></div>\\n <upgrade-to-enterprise-dialog\\n v-model=\\\"showUpgradeToEnterpriseDialog\\\"\\n ></upgrade-to-enterprise-dialog>\\n </v-footer>\\n</template>\\n\\n<script>\\nimport ClockFooter from './components/ClockFooter.vue'\\nimport Api from '../../services/api'\\nimport { OpenC3Api } from '../../services/openc3-api'\\nimport icon from '../../../public/img/icon.png'\\nimport UpgradeToEnterpriseDialog from '../../components/UpgradeToEnterpriseDialog'\\n\\nexport default {\\n components: {\\n ClockFooter,\\n UpgradeToEnterpriseDialog,\\n },\\n data() {\\n return {\\n icon: icon,\\n edition: '',\\n enterprise: false,\\n license: '',\\n sourceUrl: '',\\n version: '',\\n showUpgradeToEnterpriseDialog: false,\\n }\\n },\\n created: function () {\\n this.getSourceUrl()\\n Api.get(`/openc3-api/info`).then((response) => {\\n if (response.data.enterprise) {\\n this.edition = 'COSMOS Enterprise'\\n } else {\\n this.edition = 'COSMOS Open Source'\\n }\\n this.enterprise = response.data.enterprise\\n this.license = response.data.license\\n this.version = response.data.version\\n })\\n },\\n computed: {\\n footerClass() {\\n if (this.enterprise) {\\n return 'enterprise'\\n } else {\\n return 'base'\\n }\\n },\\n },\\n methods: {\\n getSourceUrl: function () {\\n new OpenC3Api().get_settings(['source_url']).then((response) => {\\n this.sourceUrl = response[0]\\n })\\n },\\n upgrade: function () {\\n if (!this.enterprise) {\\n this.showUpgradeToEnterpriseDialog = true\\n }\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.base {\\n margin-left: 5px;\\n cursor: pointer;\\n}\\n.enterprise {\\n margin-left: 5px;\\n}\\n#footer {\\n z-index: 1000; /* On TOP! */\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.cosmos[data-v-00ae1763] {\\n cursor: pointer;\\n text-align: center;\\n font-size: 18pt;\\n}\\ndiv a[data-v-00ae1763] {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter[data-v-00ae1763] {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer[data-v-00ae1763] {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height[data-v-00ae1763] {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";AA0QA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;AACA;AACA;EACA,YAAA;EACA,eAAA;EACA,cAAA;EACA,YAAA;EACA,WAAA;AACA;AACA;EACA,aAAA;AACA;AACA;EACA,0CAAA;AACA;AACA;EACA,gBAAA;EACA,4BAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div class=\\\"cosmos\\\" @click=\\\"showUpgradeToEnterpriseDialog = true\\\">\\n COSMOS\\n </div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n <upgrade-to-enterprise-dialog\\n v-model=\\\"showUpgradeToEnterpriseDialog\\\"\\n ></upgrade-to-enterprise-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\nimport UpgradeToEnterpriseDialog from '../../components/UpgradeToEnterpriseDialog'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n UpgradeToEnterpriseDialog,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n showUpgradeToEnterpriseDialog: false,\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.cosmos {\\n cursor: pointer;\\n text-align: center;\\n font-size: 18pt;\\n}\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkSA,4EAAA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;EAGA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div class=\\\"cosmos\\\" @click=\\\"showUpgradeToEnterpriseDialog = true\\\">\\n COSMOS\\n </div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n <upgrade-to-enterprise-dialog\\n v-model=\\\"showUpgradeToEnterpriseDialog\\\"\\n ></upgrade-to-enterprise-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\nimport UpgradeToEnterpriseDialog from '../../components/UpgradeToEnterpriseDialog'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n UpgradeToEnterpriseDialog,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n showUpgradeToEnterpriseDialog: false,\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.cosmos {\\n cursor: pointer;\\n text-align: center;\\n font-size: 18pt;\\n}\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-3d0e2e40] {\\n height: 28px;\\n}\\n.v-badge[data-v-3d0e2e40] {\\n width: 100%;\\n}\\n.overlay[data-v-3d0e2e40] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"],\"names\":[],\"mappings\":\";AA4KA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showAlertPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showAlertPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Alert box icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-alert-box-outline </v-icon>\\n </v-btn>\\n </template>\\n\\n <!-- Alerts list -->\\n <v-card>\\n <v-card-title>\\n Alerts\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n @click=\\\"clearAlerts\\\"\\n class=\\\"ml-1\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n </v-card-title>\\n <v-card-text v-if=\\\"alerts.length === 0\\\"> No alerts </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n >\\n <template v-for=\\\"(alert, index) in alerts\\\">\\n <v-list-item\\n @click=\\\"openDialog(alert)\\\"\\n :key=\\\"`alert-${index}`\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title>\\n {{ alert.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ alert.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"alert.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full alert -->\\n <v-dialog v-model=\\\"alertDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedAlert.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedAlert.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-text>\\n {{ selectedAlert.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"alertDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n alerts: [],\\n alertDialog: false,\\n showAlertPane: false,\\n selectedAlert: {},\\n }\\n },\\n watch: {\\n showAlertPane: function (val) {\\n if (val) {\\n this.refreshList()\\n }\\n if (!val && this.selectedAlert.title) {\\n this.alertDialog = false\\n this.selectedAlert = {}\\n }\\n },\\n },\\n methods: {\\n refreshList: function () {\\n this.alerts = this.$store.state.notifyHistory\\n },\\n clearAlerts: function () {\\n this.$store.commit('notifyClearHistory')\\n this.refreshList()\\n this.showAlertPane = false\\n },\\n openDialog: function (alert, clearToast = false) {\\n this.selectedAlert = alert\\n this.alertDialog = true\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,wEAAA;AACA;;EAEA,4CAAA;AACA;AACA;EACA,qCAAA;AACA;AACA;EACA;;;GAGA;AACA;AACA;EACA,kDAAA;AACA;;AAEA,oCAAA;AACA;;EAEA,WAAA;EACA,eAAA;EACA,OAAA;EACA,QAAA;EACA,kBAAA;EACA,mCAAA;EACA,uCAAA;EACA,wDAAA;AACA;AACA;EACA,MAAA;EACA,uDAAA;EACA,wCAAA;AACA;AACA;EACA,SAAA;EACA,0DAAA;EACA,2CAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<script>\\nimport { OpenC3Api } from '../../../services/openc3-api'\\n\\nexport default {\\n data: function () {\\n return {\\n api: null,\\n classification: {\\n text: '',\\n fontColor: 'white',\\n backgroundColor: 'red',\\n topHeight: 0,\\n bottomHeight: 0,\\n },\\n }\\n },\\n computed: {\\n classificationStyles: function () {\\n // JavaScript can't access CSS psudo-elements (::before and ::after).\\n // This string sets these JS values to CSS variables, accessible to\\n // the style sheet via the style attribute on #app\\n return [\\n `--classification-text:\\\"${this.classification.text}\\\";`,\\n `--classification-font-color:${this.classification.fontColor};`,\\n `--classification-background-color:${this.classification.backgroundColor};`,\\n `--classification-height-top:${this.classification.topHeight}px;`,\\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\\n ].join('')\\n },\\n },\\n created: function () {\\n this.api = new OpenC3Api()\\n this.load()\\n },\\n methods: {\\n load: function () {\\n this.api\\n .get_setting('classification_banner')\\n .then((response) => {\\n if (response) {\\n this.classification = JSON.parse(response)\\n }\\n })\\n .catch((error) => {\\n // Do nothing\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style>\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-eda8ca60] {\\n height: 28px;\\n}\\n.v-badge[data-v-eda8ca60] {\\n width: 100%;\\n}\\n.overlay[data-v-eda8ca60] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"],\"names\":[],\"mappings\":\";AAmZA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showNotificationPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showNotificationPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Bell icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon v-if=\\\"unreadCount === 0\\\" :size=\\\"size\\\">\\n mdi-bell-outline\\n </v-icon>\\n <v-badge\\n v-else\\n left\\n offset-x=\\\"24\\\"\\n offset-y=\\\"8\\\"\\n :color=\\\"badgeColor\\\"\\n bordered\\n :content=\\\"unreadCount\\\"\\n >\\n <v-icon :size=\\\"size\\\" :color=\\\"badgeColor\\\"> mdi-bell </v-icon>\\n </v-badge>\\n </v-btn>\\n </template>\\n\\n <!-- Notifications list -->\\n <v-card>\\n <v-card-title>\\n Notifications\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n class=\\\"ml-1\\\"\\n @click=\\\"clearNotifications\\\"\\n data-test=\\\"clear-notifications\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n <v-btn\\n icon\\n @click=\\\"toggleSettingsDialog\\\"\\n class=\\\"ml-1\\\"\\n data-test=\\\"notification-settings\\\"\\n >\\n <v-icon> $astro-settings </v-icon>\\n </v-btn>\\n </v-card-title>\\n <v-card-text v-if=\\\"notifications.length === 0\\\">\\n No notifications\\n </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n data-test=\\\"notification-list\\\"\\n >\\n <template v-for=\\\"(notification, index) in notificationList\\\">\\n <template v-if=\\\"notification.header\\\">\\n <v-divider v-if=\\\"index !== 0\\\" :key=\\\"index\\\" class=\\\"mb-2\\\" />\\n <v-subheader :key=\\\"notification.header\\\">\\n {{ notification.header }}\\n </v-subheader>\\n </template>\\n\\n <v-list-item\\n v-else\\n :key=\\\"`notification-${index}`\\\"\\n @click=\\\"openDialog(notification)\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title\\n :class=\\\"{\\n 'text--secondary': notification.read,\\n 'text-wrap': true,\\n }\\\"\\n >\\n {{ notification.log }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ notification.time | shortDateTime }}\\n </v-list-item-subtitle>\\n <div style=\\\"height: 20px\\\" />\\n </v-list-item-content>\\n <template v-slot:badge>\\n <astro-status-indicator :status=\\\"notification.severity\\\" />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full notification -->\\n <v-dialog v-model=\\\"notificationDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedNotification.log }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedNotification.severity || 'INFO'\\\"\\n />\\n </v-card-title>\\n <v-card-subtitle>\\n {{ selectedNotification.time | shortDateTime }}\\n </v-card-subtitle>\\n <v-divider />\\n <v-card-actions>\\n <v-btn\\n color=\\\"primary\\\"\\n text\\n @click=\\\"navigate(selectedNotification.url)\\\"\\n >\\n Open\\n <v-icon right> mdi-open-in-new </v-icon>\\n </v-btn>\\n <v-btn color=\\\"primary\\\" text @click=\\\"notificationDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n\\n <!-- Dialog for changing notification settings -->\\n <v-dialog v-model=\\\"settingsDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title> Notification settings </v-card-title>\\n <v-card-text>\\n <v-switch v-model=\\\"showToast\\\" label=\\\"Show toasts\\\" />\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"toggleSettingsDialog\\\">\\n close\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { formatDistanceToNow } from 'date-fns'\\nimport {\\n AstroStatusColors,\\n UnknownToAstroStatus,\\n} from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\nimport Cable from '../../../services/cable.js'\\n\\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n cable: new Cable(),\\n subscription: null,\\n notifications: [],\\n showNotificationPane: false,\\n toastNotification: {},\\n notificationDialog: false,\\n selectedNotification: {},\\n settingsDialog: false,\\n showToast: true,\\n }\\n },\\n computed: {\\n badgeColor: function () {\\n if (!this.unreadCount) {\\n return AstroStatusColors['off']\\n }\\n const severities = this.unreadNotifications\\n .map((notification) => notification.severity)\\n .filter((val, index, self) => {\\n return self.indexOf(val) === index // Unique values\\n })\\n return AstroStatusColors[\\n UnknownToAstroStatus[highestSeverity(severities)]\\n ]\\n },\\n readNotifications: function () {\\n return this.notifications\\n .filter((notification) => notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadNotifications: function () {\\n return this.notifications\\n .filter((notification) => !notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadCount: function () {\\n let result = this.unreadNotifications.length\\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\\n result += '+' // Indicate there are more\\n }\\n return result\\n },\\n notificationList: function () {\\n const groups = groupBySeverity(this.unreadNotifications)\\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\\n (severity) => {\\n const header = {\\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\\n }\\n return [header, ...groups[severity]]\\n }\\n )\\n if (this.readNotifications.length) {\\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\\n }\\n return result\\n },\\n },\\n watch: {\\n showNotificationPane: function (val) {\\n if (!val) {\\n if (this.selectedNotification.title) {\\n this.notificationDialog = false\\n this.selectedNotification = {}\\n } else {\\n this.markAllAsRead()\\n }\\n }\\n },\\n showToast: function (val) {\\n localStorage.notoast = !val\\n },\\n },\\n created: function () {\\n this.showToast = localStorage.notoast === 'false'\\n this.subscribe()\\n },\\n destroyed: function () {\\n if (this.subscription) {\\n this.subscription.unsubscribe()\\n }\\n this.cable.disconnect()\\n },\\n methods: {\\n markAllAsRead: function () {\\n this.notifications.forEach((notification) => {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n })\\n },\\n clearNotifications: function () {\\n this.markAllAsRead()\\n this.notifications = []\\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\\n this.showNotificationPane = false\\n },\\n toggleNotificationPane: function () {\\n this.showNotificationPane = !this.showNotificationPane\\n },\\n toggleSettingsDialog: function () {\\n this.settingsDialog = !this.settingsDialog\\n },\\n openDialog: function (notification, clearToast = false) {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n this.selectedNotification = notification\\n this.notificationDialog = true\\n },\\n navigate: function (url) {\\n window.open(url, '_blank')\\n },\\n subscribe: function () {\\n this.cable\\n .createSubscription(\\n 'MessagesChannel',\\n window.openc3Scope,\\n {\\n received: (data) => this.received(data),\\n },\\n {\\n start_offset:\\n localStorage.notificationStreamOffset ||\\n localStorage.lastReadNotification,\\n types: ['notification', 'alert'],\\n }\\n )\\n .then((subscription) => {\\n this.subscription = subscription\\n })\\n },\\n received: function (parsed) {\\n this.cable.recordPing()\\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\\n }\\n let foundToast = false\\n parsed.forEach((notification) => {\\n notification.read =\\n notification.msg_id <= localStorage.lastReadNotification\\n notification.severity = notification.severity || 'INFO'\\n if (\\n !notification.read && // Don't toast read notifications\\n ['FATAL', 'ERROR', 'WARN'].includes(notification.severity) // Toast for these statuses\\n ) {\\n foundToast = true\\n this.toastNotification = notification\\n }\\n })\\n\\n if (this.showToast && foundToast) {\\n let duration = 5000\\n if (['FATAL', 'ERROR'].includes(notification.severity)) {\\n duration = null\\n }\\n\\n this.$notify[this.toastNotification.severity]({\\n ...this.toastNotification,\\n type: 'notification',\\n duration: duration,\\n saveToHistory: false,\\n })\\n }\\n\\n if (\\n this.notifications.length + parsed.length >\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n ) {\\n this.notifications.splice(\\n 0,\\n this.notifications.length +\\n parsed.length -\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n )\\n }\\n this.notifications = this.notifications.concat(parsed)\\n },\\n },\\n filters: {\\n shortDateTime: function (nsec) {\\n if (!nsec) return ''\\n const date = new Date(nsec / 1_000_000)\\n return formatDistanceToNow(date, { addSuffix: true })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.link[data-v-26b5fc12] {\\n cursor: pointer;\\n}\\n.overlay[data-v-26b5fc12] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"],\"names\":[],\"mappings\":\";AAgHA;EACA,eAAA;AACA;AACA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showUserMenu\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showUserMenu\\\"\\n transition=\\\"slide-y-transition\\\"\\n offset-y\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"120\\\"\\n :nudge-bottom=\\\"20\\\"\\n >\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-account </v-icon>\\n </v-btn>\\n </template>\\n\\n <v-card>\\n <v-card-text class=\\\"text-center\\\">\\n <div style=\\\"text-align: center; margin: 5px\\\">{{ username }}</div>\\n <div v-if=\\\"authenticated\\\">\\n <v-btn block @click=\\\"logout\\\" color=\\\"primary\\\"> Logout </v-btn>\\n </div>\\n <div v-else>\\n <v-btn block @click=\\\"login\\\" color=\\\"primary\\\"> Login </v-btn>\\n </div>\\n <div\\n v-if=\\\"username === 'Anonymous'\\\"\\n @click=\\\"showUpgradeToEnterpriseDialog = true\\\"\\n class=\\\"pt-2 link\\\"\\n >\\n Click to learn more about<br />\\n COSMOS Enterprise Edition\\n </div>\\n <div>\\n <v-switch label=\\\"Colorblind mode\\\" v-model=\\\"colorblindMode\\\" />\\n </div>\\n </v-card-text>\\n </v-card>\\n </v-menu>\\n <upgrade-to-enterprise-dialog\\n v-model=\\\"showUpgradeToEnterpriseDialog\\\"\\n ></upgrade-to-enterprise-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport UpgradeToEnterpriseDialog from '../../../components/UpgradeToEnterpriseDialog'\\n\\nexport default {\\n components: {\\n UpgradeToEnterpriseDialog,\\n },\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n let user = OpenC3Auth.user()\\n return {\\n showUserMenu: false,\\n authenticated: !!localStorage.openc3Token,\\n username: user['name'],\\n showUpgradeToEnterpriseDialog: false,\\n }\\n },\\n computed: {\\n colorblindMode: {\\n get: function () {\\n return localStorage.colorblindMode === 'true'\\n },\\n set: function (val) {\\n localStorage.colorblindMode = val\\n },\\n },\\n },\\n methods: {\\n logout: function () {\\n OpenC3Auth.logout()\\n },\\n login: function () {\\n OpenC3Auth.login(location.href)\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.link {\\n cursor: pointer;\\n}\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","const resolveDirectory = require(\"../public-path\").resolveDirectory;\n\nexports.autoPublicPath = function autoPublicPath(rootDirLevel) {\n if (!rootDirLevel) {\n rootDirLevel = 1;\n }\n\n if (typeof __webpack_public_path__ !== \"undefined\") {\n if (typeof __system_context__ === \"undefined\") {\n throw Error(\n \"systemjs-webpack-interop requires webpack@>=5.0.0-beta.15 and output.libraryTarget set to 'system'\"\n );\n }\n\n if (!__system_context__.meta || !__system_context__.meta.url) {\n console.error(\"__system_context__\", __system_context__);\n throw Error(\n \"systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(\n __system_context__.meta.url,\n rootDirLevel\n );\n }\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../openc3-tool-base/node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2eb15b17\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\", function() {\n var newContent = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\n if(newContent.__esModule) newContent = newContent.default;\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8645__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4091__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4688__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9731__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9191__;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.y = __system_context__;","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".openc3-tool-base.js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktool_base\"] = self[\"webpackChunktool_base\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","const autoPublicPath = require(\"./auto-public-path\").autoPublicPath;\n\nautoPublicPath(1);\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-app\",\n { style: _vm.classificationStyles },\n [\n _c(\"app-nav\", { staticClass: \"d-print-none\" }),\n _vm._v(\" \"),\n _c(\n \"v-main\",\n [\n _c(\"v-container\", { attrs: { fluid: \"\" } }, [\n _c(\"div\", { attrs: { id: \"openc3-tool\" } }),\n _vm._v(\" \"),\n _c(\"div\", [_c(\"router-view\")], 1),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"app-footer\", { staticClass: \"d-print-none\", attrs: { app: \"\" } }),\n _vm._v(\" \"),\n _c(\"time-check\"),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-footer\",\n {\n attrs: {\n id: \"footer\",\n app: \"\",\n color: \"tertiary darken-3\",\n height: \"33\",\n },\n },\n [\n _c(\"img\", { attrs: { src: _vm.icon, alt: \"OpenC3\" } }),\n _vm._v(\" \"),\n _c(\"span\", { class: _vm.footerClass, on: { click: _vm.upgrade } }, [\n _vm._v(\n \"OpenC3 \" +\n _vm._s(_vm.edition) +\n \" \" +\n _vm._s(_vm.version) +\n \" © 2023 - License:\\n \" +\n _vm._s(_vm.license)\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"white--text text-decoration-underline\",\n attrs: { href: _vm.sourceUrl },\n },\n [_vm._v(\"\\n Source\\n \")]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"justify-right\" }, [_c(\"clock-footer\")], 1),\n _vm._v(\" \"),\n _c(\"upgrade-to-enterprise-dialog\", {\n model: {\n value: _vm.showUpgradeToEnterpriseDialog,\n callback: function ($$v) {\n _vm.showUpgradeToEnterpriseDialog = $$v\n },\n expression: \"showUpgradeToEnterpriseDialog\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"span\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"font-weight-bold\",\n staticStyle: { cursor: \"context-menu\" },\n on: { contextmenu: _vm.openMenu },\n },\n \"span\",\n _vm.attrs,\n false\n ),\n _vm.on\n ),\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"date\")(\n _vm.displayLocal ? _vm.localDate : _vm.utcDate,\n _vm.formatString\n )\n ) +\n \"\\n (\" +\n _vm._s(_vm.displayLocal ? \"local\" : \"UTC\") +\n \")\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n \"position-x\": _vm.menuX,\n \"position-y\": _vm.menuY,\n absolute: \"\",\n \"offset-y\": \"\",\n },\n model: {\n value: _vm.showMenu,\n callback: function ($$v) {\n _vm.showMenu = $$v\n },\n expression: \"showMenu\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplayLocal },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.displayLocal ? \"UTC\" : \"local time\") +\n \"\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplay24h },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.display24h ? 12 : 24) +\n \" hour clock\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _vm.dateMode !== \"monthFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setMonthFirst },\n },\n [_vm._v(\"\\n Display mm/dd/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"dayFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setDayFirst },\n },\n [_vm._v(\"\\n Display dd/mm/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"number\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setNumber },\n },\n [_vm._v(\"\\n Display day of year\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span\n v-bind=\"attrs\"\n v-on=\"on\"\n style=\"cursor: context-menu\"\n class=\"font-weight-bold\"\n @contextmenu=\"openMenu\"\n >\n {{ (displayLocal ? localDate : utcDate) | date(formatString) }}\n ({{ displayLocal ? 'local' : 'UTC' }})\n </span>\n <v-menu\n v-model=\"showMenu\"\n :position-x=\"menuX\"\n :position-y=\"menuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item>\n <v-list-item-title\n style=\"cursor: pointer\"\n @click=\"toggleDisplayLocal\"\n >\n Display {{ displayLocal ? 'UTC' : 'local time' }}\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item>\n <v-list-item-title style=\"cursor: pointer\" @click=\"toggleDisplay24h\">\n Display {{ display24h ? 12 : 24 }} hour clock\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item v-if=\"dateMode !== 'monthFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setMonthFirst\">\n Display mm/dd/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'dayFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setDayFirst\">\n Display dd/mm/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'number'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setNumber\">\n Display day of year\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nexport default {\n data: function () {\n return {\n localDate: new Date(),\n displayLocal: localStorage.clock_zone === 'local',\n display24h: !localStorage.clock_12h,\n dateMode: localStorage.clock_dateMode || 'monthFirst',\n intervalCount: 0,\n showMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n utcDate: function () {\n return new Date(\n this.localDate.getTime() + this.localDate.getTimezoneOffset() * 60000\n )\n },\n formatString: function () {\n let dateFormat\n switch (this.dateMode) {\n case 'monthFirst':\n dateFormat = 'LL/dd/yyy'\n break\n case 'dayFirst':\n dateFormat = 'dd/LL/yyy'\n break\n case 'number':\n dateFormat = 'D'\n break\n }\n\n let timeFormat\n if (this.display24h) {\n timeFormat = 'HH:mm:ss'\n } else {\n timeFormat = 'hh:mm:ss a'\n }\n\n return `${dateFormat} ${timeFormat}`\n },\n },\n watch: {\n displayLocal: function (val) {\n localStorage.clock_zone = val ? 'local' : 'utc'\n },\n display24h: function (val) {\n // store opposite because it makes default value (true) easier\n if (val) {\n delete localStorage.clock_12h\n } else {\n localStorage.clock_12h = true\n }\n },\n dateMode: function (val) {\n if (val.match(/^monthFirst$|^dayFirst$|^number$/)) {\n localStorage.clock_dateMode = val\n }\n },\n },\n created: function () {\n setInterval(\n () => {\n this.intervalCount++\n this.localDate = new Date()\n },\n this.intervalCount < 10 ? 100 : 1000 // get the seconds to about 100ms accuracy\n )\n },\n methods: {\n openMenu: function (event) {\n event.preventDefault()\n this.showMenu = false\n this.menuX = event.clientX\n this.menuY = event.clientY\n this.$nextTick(() => {\n this.showMenu = true\n })\n },\n toggleDisplayLocal: function () {\n this.displayLocal = !this.displayLocal\n },\n toggleDisplay24h: function () {\n this.display24h = !this.display24h\n },\n setMonthFirst: function () {\n this.dateMode = 'monthFirst'\n },\n setDayFirst: function () {\n this.dateMode = 'dayFirst'\n },\n setNumber: function () {\n this.dateMode = 'number'\n },\n },\n filters: {\n date: function (val, formatString) {\n return format(val, formatString, { useAdditionalDayOfYearTokens: true })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClockFooter.vue?vue&type=template&id=e0e3869e&\"\nimport script from \"./ClockFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./ClockFooter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e0e3869e')) {\n api.createRecord('e0e3869e', component.options)\n } else {\n api.reload('e0e3869e', component.options)\n }\n module.hot.accept(\"./ClockFooter.vue?vue&type=template&id=e0e3869e&\", function () {\n api.rerender('e0e3869e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue\"\nexport default component.exports","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(\n method,\n params,\n kwparams = {},\n headerOptions = {},\n timeout = 60000\n ) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n timeout: timeout,\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n // NOTE: Openc3Screen.vue uses this specific message to determine\n // if the CmdTlmApi server is down. Don't change unless also changing there.\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n // get_target_list is DEPRECATED\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n get_target_names() {\n return this.exec('get_target_names', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30) {\n const data = await this.exec(\n 'get_tlm_values',\n [items],\n {\n stale_time: stale_time,\n },\n {},\n 10000 // 10s timeout ... should never be this long\n )\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED'\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n }\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-dialog\",\n {\n attrs: { width: \"650px\" },\n model: {\n value: _vm.show,\n callback: function ($$v) {\n _vm.show = $$v\n },\n expression: \"show\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-system-bar\",\n [\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"span\", [_vm._v(\" Upgrade to COSMOS Enterprise Edition \")]),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-text\", { staticClass: \"mt-2\" }, [\n _c(\"div\", { staticClass: \"logo\" }, [\n _c(\"img\", { attrs: { src: _vm.logo, alt: \"OpenC3\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"cosmos\" }, [\n _vm._v(\"Enterprise Edition\"),\n ]),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"pb-4\" }, [\n _vm._v(\n \"\\n Thank you for using the COSMOS Open Source Edition!\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _vm.reason\n ? _c(\"div\", [\n _c(\"div\", { staticClass: \"pb-4 pl-4 reason\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.reason) + \"\\n \"),\n ]),\n ])\n : _vm._e(),\n _vm._v(\n \"\\n COSMOS Enterprise Edition removes all restrictions and offers users with\\n role based access control, scaling on kubernetes, cloud platform\\n support, multiple scopes, various integrations with common protocols and\\n hardware, commercial licensing, and much more!\"\n ),\n _c(\"br\"),\n _c(\"br\"),\n _vm._v(\"\\n Learn more at\\n \"),\n _c(\"a\", { attrs: { href: \"https://openc3.com/enterprise\" } }, [\n _vm._v(\"https://openc3.com/enterprise\"),\n ]),\n _vm._v(\n \"\\n and help support COSMOS Open Source by supporting our business. Contact\\n us at \"\n ),\n _c(\"a\", { attrs: { href: \"mailto:support@openc3.com\" } }, [\n _vm._v(\"support@openc3.com\"),\n ]),\n _vm._v(\n \" for\\n more information about Enterprise Edition, COSMOS training, COSMOS\\n support, and custom COSMOS development.\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n staticClass: \"mx-2\",\n attrs: { color: \"primary\" },\n on: {\n click: function ($event) {\n _vm.show = !_vm.show\n },\n },\n },\n [_vm._v(\" Ok \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeToEnterpriseDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeToEnterpriseDialog.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"650px\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upgrade to COSMOS Enterprise Edition </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text class=\"mt-2\">\n <div class=\"logo\">\n <img :src=\"logo\" alt=\"OpenC3\" />\n <div class=\"cosmos\">Enterprise Edition</div>\n </div>\n <div class=\"pb-4\">\n Thank you for using the COSMOS Open Source Edition!\n </div>\n <div v-if=\"reason\">\n <div class=\"pb-4 pl-4 reason\">\n {{ reason }}\n </div>\n </div>\n COSMOS Enterprise Edition removes all restrictions and offers users with\n role based access control, scaling on kubernetes, cloud platform\n support, multiple scopes, various integrations with common protocols and\n hardware, commercial licensing, and much more!<br /><br />\n Learn more at\n <a href=\"https://openc3.com/enterprise\"\n >https://openc3.com/enterprise</a\n >\n and help support COSMOS Open Source by supporting our business. Contact\n us at <a href=\"mailto:support@openc3.com\">support@openc3.com</a> for\n more information about Enterprise Edition, COSMOS training, COSMOS\n support, and custom COSMOS development.\n </v-card-text>\n <v-card-actions>\n <v-spacer />\n <v-btn class=\"mx-2\" color=\"primary\" @click=\"show = !show\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport logo from '../../public/img/logo.png'\n\nexport default {\n props: {\n value: Boolean, // value is the default prop when using v-model\n reason: String,\n },\n data() {\n return {\n logo: logo,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n}\n</script>\n<style scoped>\n.logo {\n float: right;\n margin: 15px;\n}\n.cosmos {\n text-align: center;\n font-size: 18pt;\n}\n.reason {\n font-weight: bold;\n}\n</style>\n","\n import API from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeToEnterpriseDialog.vue?vue&type=style&index=0&id=36f1a220&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeToEnterpriseDialog.vue?vue&type=style&index=0&id=36f1a220&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpgradeToEnterpriseDialog.vue?vue&type=template&id=36f1a220&scoped=true&\"\nimport script from \"./UpgradeToEnterpriseDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpgradeToEnterpriseDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpgradeToEnterpriseDialog.vue?vue&type=style&index=0&id=36f1a220&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36f1a220\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('36f1a220')) {\n api.createRecord('36f1a220', component.options)\n } else {\n api.reload('36f1a220', component.options)\n }\n module.hot.accept(\"./UpgradeToEnterpriseDialog.vue?vue&type=template&id=36f1a220&scoped=true&\", function () {\n api.rerender('36f1a220', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/UpgradeToEnterpriseDialog.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-footer id=\"footer\" app color=\"tertiary darken-3\" height=\"33\">\n <img :src=\"icon\" alt=\"OpenC3\" />\n <span :class=\"footerClass\" @click=\"upgrade\"\n >OpenC3 {{ edition }} {{ version }} © 2023 - License:\n {{ license }}</span\n >\n <v-spacer />\n <a :href=\"sourceUrl\" class=\"white--text text-decoration-underline\">\n Source\n </a>\n <v-spacer />\n <div class=\"justify-right\"><clock-footer /></div>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n ></upgrade-to-enterprise-dialog>\n </v-footer>\n</template>\n\n<script>\nimport ClockFooter from './components/ClockFooter.vue'\nimport Api from '../../services/api'\nimport { OpenC3Api } from '../../services/openc3-api'\nimport icon from '../../../public/img/icon.png'\nimport UpgradeToEnterpriseDialog from '../../components/UpgradeToEnterpriseDialog'\n\nexport default {\n components: {\n ClockFooter,\n UpgradeToEnterpriseDialog,\n },\n data() {\n return {\n icon: icon,\n edition: '',\n enterprise: false,\n license: '',\n sourceUrl: '',\n version: '',\n showUpgradeToEnterpriseDialog: false,\n }\n },\n created: function () {\n this.getSourceUrl()\n Api.get(`/openc3-api/info`).then((response) => {\n if (response.data.enterprise) {\n this.edition = 'COSMOS Enterprise'\n } else {\n this.edition = 'COSMOS Open Source'\n }\n this.enterprise = response.data.enterprise\n this.license = response.data.license\n this.version = response.data.version\n })\n },\n computed: {\n footerClass() {\n if (this.enterprise) {\n return 'enterprise'\n } else {\n return 'base'\n }\n },\n },\n methods: {\n getSourceUrl: function () {\n new OpenC3Api().get_settings(['source_url']).then((response) => {\n this.sourceUrl = response[0]\n })\n },\n upgrade: function () {\n if (!this.enterprise) {\n this.showUpgradeToEnterpriseDialog = true\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.base {\n margin-left: 5px;\n cursor: pointer;\n}\n.enterprise {\n margin-left: 5px;\n}\n#footer {\n z-index: 1000; /* On TOP! */\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\"\nimport script from \"./AppFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./AppFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f2e2c8b\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1f2e2c8b')) {\n api.createRecord('1f2e2c8b', component.options)\n } else {\n api.reload('1f2e2c8b', component.options)\n }\n module.hot.accept(\"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\", function () {\n api.rerender('1f2e2c8b', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppFooter.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"v-navigation-drawer\",\n {\n attrs: { app: \"\", id: \"openc3-nav-drawer\" },\n model: {\n value: _vm.drawer,\n callback: function ($$v) {\n _vm.drawer = $$v\n },\n expression: \"drawer\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-icon\",\n {\n staticStyle: {\n \"margin-right\": \"auto !important\",\n \"margin-left\": \"auto\",\n \"margin-top\": \"0px\",\n \"margin-bottom\": \"0px\",\n },\n },\n [_c(\"img\", { attrs: { src: _vm.logo, alt: \"OpenC3\" } })]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"cosmos\",\n on: {\n click: function ($event) {\n _vm.showUpgradeToEnterpriseDialog = true\n },\n },\n },\n [_vm._v(\"\\n COSMOS\\n \")]\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n { staticClass: \"my-0\" },\n [\n _c(\n \"v-list-item-content\",\n _vm._l(_vm.adminTools, function (tool, name) {\n return _c(\n \"div\",\n { key: name },\n [\n _c(\n \"v-btn\",\n {\n staticClass: \"fixcenter\",\n attrs: {\n block: \"\",\n small: \"\",\n href: tool.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [_vm._v(\"\\n Admin\\n \")]\n ),\n ],\n 1\n )\n }),\n 0\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\"v-treeview\", {\n attrs: {\n items: _vm.items,\n open: _vm.initiallyOpen,\n \"item-key\": \"name\",\n dense: \"\",\n \"open-on-click\": \"\",\n \"expand-icon\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"prepend\",\n fn: function (ref) {\n var item = ref.item\n var open = ref.open\n return [\n !item.icon\n ? _c(\"v-icon\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n open\n ? \"mdi-chevron-down\"\n : \"mdi-chevron-right\"\n ) +\n \"\\n \"\n ),\n ])\n : _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _c(\"v-icon\", [\n _vm._v(\" \" + _vm._s(item.icon) + \" \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n {\n key: \"label\",\n fn: function (ref) {\n var item = ref.item\n return [\n _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(item.name) +\n \"\\n \"\n ),\n ]\n ),\n ]\n },\n },\n {\n key: \"append\",\n fn: function (ref) {\n var item = ref.item\n return [\n item.icon\n ? _c(\n \"a\",\n {\n attrs: {\n href: _vm.newTabUrl(item),\n target: \"_blank\",\n },\n },\n [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])],\n 1\n )\n : _vm._e(),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-app-bar\",\n {\n attrs: {\n app: \"\",\n color: \"tertiary darken-3\",\n id: \"openc3-app-toolbar\",\n },\n },\n [\n _c(\"v-app-bar-nav-icon\", {\n on: {\n click: function ($event) {\n _vm.drawer = !_vm.drawer\n },\n },\n }),\n _vm._v(\" \"),\n _c(\"v-divider\", {\n staticClass: \"top-bar-divider-full-height\",\n attrs: { vertical: \"\" },\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticStyle: { width: \"100%\" } }, [\n _c(\"span\", { attrs: { id: \"openc3-menu\" } }),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"justify-right mr-2 pt-2\" },\n [_c(\"scope-selector\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"alert-history\" },\n },\n [_c(\"alert-history\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"notifications\" },\n },\n [_c(\"notifications\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"user-menu\" },\n },\n [_c(\"user-menu\")],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"upgrade-to-enterprise-dialog\", {\n model: {\n value: _vm.showUpgradeToEnterpriseDialog,\n callback: function ($$v) {\n _vm.showUpgradeToEnterpriseDialog = $$v\n },\n expression: \"showUpgradeToEnterpriseDialog\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: {\n click: function ($event) {\n _vm.showUpgradeToEnterpriseDialog = true\n },\n },\n },\n [\n _c(\"v-select\", {\n attrs: {\n items: _vm.scopes,\n disabled: _vm.scopes.length <= 1,\n label: \"Scope\",\n dense: \"\",\n \"hide-details\": \"\",\n },\n model: {\n value: _vm.scope,\n callback: function ($$v) {\n _vm.scope = $$v\n },\n expression: \"scope\",\n },\n }),\n _vm._v(\" \"),\n _c(\"upgrade-to-enterprise-dialog\", {\n attrs: { reason: \"Open Source has a single DEFAULT scope.\" },\n model: {\n value: _vm.showUpgradeToEnterpriseDialog,\n callback: function ($$v) {\n _vm.showUpgradeToEnterpriseDialog = $$v\n },\n expression: \"showUpgradeToEnterpriseDialog\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div style=\"cursor: pointer\" @click=\"showUpgradeToEnterpriseDialog = true\">\n <v-select\n v-model=\"scope\"\n :items=\"scopes\"\n :disabled=\"scopes.length <= 1\"\n label=\"Scope\"\n dense\n hide-details\n />\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n reason=\"Open Source has a single DEFAULT scope.\"\n ></upgrade-to-enterprise-dialog>\n </div>\n</template>\n\n<script>\nimport UpgradeToEnterpriseDialog from '../../../components/UpgradeToEnterpriseDialog'\nexport default {\n components: {\n UpgradeToEnterpriseDialog,\n },\n data: function () {\n return {\n scopes: ['DEFAULT'],\n scope: 'DEFAULT',\n showUpgradeToEnterpriseDialog: false,\n }\n },\n}\n</script>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScopeSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScopeSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\"\nimport script from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1d174a8a')) {\n api.createRecord('1d174a8a', component.options)\n } else {\n api.reload('1d174a8a', component.options)\n }\n module.hot.accept(\"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\", function () {\n api.rerender('1d174a8a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showAlertPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-alert-box-outline \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showAlertPane,\n callback: function ($$v) {\n _vm.showAlertPane = $$v\n },\n expression: \"showAlertPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Alerts\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.clearAlerts },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.alerts.length === 0\n ? _c(\"v-card-text\", [_vm._v(\" No alerts \")])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n },\n },\n [\n _vm._l(_vm.alerts, function (alert, index) {\n return [\n _c(\n \"v-list-item\",\n {\n key: \"alert-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(alert)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n alert.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\"v-list-item-title\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.title) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.alertDialog,\n callback: function ($$v) {\n _vm.alertDialog = $$v\n },\n expression: \"alertDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedAlert.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: { status: _vm.selectedAlert.severity || \"normal\" },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" + _vm._s(_vm.selectedAlert.body) + \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.alertDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"rux-icon\", {\n staticClass: \"astro-icon\",\n attrs: { icon: _vm.icon },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n {\n style: _vm.style,\n attrs: { id: \"rux-icon\", title: _vm.label, size: _vm.size },\n },\n [\n _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 128 128\",\n preserveAspectRatio: \"xMidYMid meet\",\n focusable: \"false\",\n },\n },\n [_c(\"use\", { attrs: { href: _vm.getIcon(this.library, this.icon) } })]\n ),\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <span id=\"rux-icon\" :title=\"label\" :style=\"style\" :size=\"size\">\n <!-- Camel case props becase svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 128 128\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <use :href=\"getIcon(this.library, this.icon)\" />\n </svg>\n </span>\n</template>\n\n<script>\n// This component is a rewrite of the Astro UXDS RuxIcon into Vue\n// Prevents multiple customElement problem with single-spa\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'extra-small',\n },\n color: {\n type: String,\n },\n library: {\n type: String,\n default: '/icons/astro.svg',\n },\n label: {\n type: String,\n default: 'icon',\n },\n },\n computed: {\n style: function () {\n return '--iconColor=' + this.propscolor\n },\n },\n methods: {\n getIcon() {\n return this.library + '#' + this.icon\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RuxIcon.vue?vue&type=template&id=342f670e&\"\nimport script from \"./RuxIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./RuxIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('342f670e')) {\n api.createRecord('342f670e', component.options)\n } else {\n api.reload('342f670e', component.options)\n }\n module.hot.accept(\"./RuxIcon.vue?vue&type=template&id=342f670e&\", function () {\n api.rerender('342f670e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/RuxIcon.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :icon=\"icon\" class=\"astro-icon\" />\n</template>\n\n<script>\nimport RuxIcon from './RuxIcon.vue'\nimport { AstroIconLibrary } from '.'\n\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\nexport default {\n components: {\n RuxIcon,\n },\n props: {\n icon: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroIconLibrary.includes(val)\n },\n },\n },\n}\n</script>\n\n<style scoped>\n.astro-icon {\n fill: currentColor;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\"\nimport script from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b942113a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b942113a')) {\n api.createRecord('b942113a', component.options)\n } else {\n api.reload('b942113a', component.options)\n }\n module.hot.accept(\"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\", function () {\n api.rerender('b942113a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport AstroIcon from './AstroIcon'\n\nconst AstroIconLibrary = [\n // These are from the IDs in the default RuxIcon library: https://github.com/RocketCommunicationsInc/astro-components/blob/master/static/icons/astro.svg\n 'altitude',\n 'antenna',\n 'antenna-off',\n 'antenna-receive',\n 'antenna-transmit',\n 'equipment',\n 'mission',\n 'payload',\n 'processor',\n 'processor-alt',\n 'netcom',\n 'propulsion-power',\n 'thermal',\n 'satellite-off',\n 'satellite-receive',\n 'satellite-transmit',\n 'add-large',\n 'add-small',\n 'close-large',\n 'close-small',\n 'collapse',\n 'expand',\n 'lock',\n 'unlock',\n 'search',\n 'caution',\n 'maintenance',\n 'notifications',\n 'settings',\n\n // These are in that SVG file, but they're broken in RuxIcon:\n // 'twitter', // the twitter logo\n // 'progress', // circle\n // 'resources', // filing cabinet\n // 'solar', // grid\n]\n\nconst AstroIconVuetifyValues = AstroIconLibrary.reduce((values, icon) => {\n return {\n [`astro-${icon}`]: {\n component: AstroIcon,\n props: {\n icon,\n },\n },\n ...values,\n }\n}, {})\n\nconst UnknownToAstroStatus = {\n fatal: 'fatal',\n FATAL: 'fatal',\n error: 'critical',\n ERROR: 'critical',\n warn: 'serious',\n WARN: 'serious',\n info: 'normal',\n INFO: 'normal',\n debug: 'off',\n DEBUG: 'off',\n critical: 'critical',\n CRITICAL: 'critical',\n serious: 'serious',\n SERIOUS: 'serious',\n caution: 'caution',\n CAUTION: 'caution',\n normal: 'normal',\n NORMAL: 'normal',\n standby: 'standby',\n STANDBY: 'standby',\n off: 'off',\n OFF: 'OFF',\n}\n\nconst UnknownToCosmosStatus = {\n fatal: 'FATAL',\n FATAL: 'FATAL',\n error: 'ERROR',\n ERROR: 'ERROR',\n warn: 'WARN',\n WARN: 'WARN',\n info: 'INFO',\n INFO: 'INFO',\n debug: 'DEBUG',\n DEBUG: 'DEBUG',\n critical: 'ERROR',\n CRITICAL: 'ERROR',\n serious: 'WARN',\n SERIOUS: 'WARN',\n caution: 'WARN',\n CAUTION: 'WARN',\n normal: 'INFO',\n NORMAL: 'INFO',\n standby: 'INFO',\n STANDBY: 'INFO',\n off: 'INFO',\n OFF: 'INFO',\n}\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#9ea7ad',\n}\n\nconst getStatusColorContrast = function (severity) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[UnknownToAstroStatus[severity]]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nexport {\n AstroIconLibrary,\n AstroIconVuetifyValues,\n AstroStatuses,\n AstroStatusColors,\n getStatusColorContrast,\n UnknownToAstroStatus,\n UnknownToCosmosStatus,\n}\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showAlertPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showAlertPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Alert box icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-alert-box-outline </v-icon>\n </v-btn>\n </template>\n\n <!-- Alerts list -->\n <v-card>\n <v-card-title>\n Alerts\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clearAlerts\"\n class=\"ml-1\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n </v-card-title>\n <v-card-text v-if=\"alerts.length === 0\"> No alerts </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n >\n <template v-for=\"(alert, index) in alerts\">\n <v-list-item\n @click=\"openDialog(alert)\"\n :key=\"`alert-${index}`\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title>\n {{ alert.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ alert.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"alert.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full alert -->\n <v-dialog v-model=\"alertDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedAlert.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedAlert.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-text>\n {{ selectedAlert.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"alertDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n alerts: [],\n alertDialog: false,\n showAlertPane: false,\n selectedAlert: {},\n }\n },\n watch: {\n showAlertPane: function (val) {\n if (val) {\n this.refreshList()\n }\n if (!val && this.selectedAlert.title) {\n this.alertDialog = false\n this.selectedAlert = {}\n }\n },\n },\n methods: {\n refreshList: function () {\n this.alerts = this.$store.state.notifyHistory\n },\n clearAlerts: function () {\n this.$store.commit('notifyClearHistory')\n this.refreshList()\n this.showAlertPane = false\n },\n openDialog: function (alert, clearToast = false) {\n this.selectedAlert = alert\n this.alertDialog = true\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\"\nimport script from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0e2e40\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3d0e2e40')) {\n api.createRecord('3d0e2e40', component.options)\n } else {\n api.reload('3d0e2e40', component.options)\n }\n module.hot.accept(\"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\", function () {\n api.rerender('3d0e2e40', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showNotificationPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _vm.unreadCount === 0\n ? _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\"\\n mdi-bell-outline\\n \"),\n ])\n : _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n \"offset-x\": \"24\",\n \"offset-y\": \"8\",\n color: _vm.badgeColor,\n bordered: \"\",\n content: _vm.unreadCount,\n },\n },\n [\n _c(\n \"v-icon\",\n {\n attrs: {\n size: _vm.size,\n color: _vm.badgeColor,\n },\n },\n [_vm._v(\" mdi-bell \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showNotificationPane,\n callback: function ($$v) {\n _vm.showNotificationPane = $$v\n },\n expression: \"showNotificationPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Notifications\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: {\n icon: \"\",\n \"data-test\": \"clear-notifications\",\n },\n on: { click: _vm.clearNotifications },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\", \"data-test\": \"notification-settings\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_c(\"v-icon\", [_vm._v(\" $astro-settings \")])],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.notifications.length === 0\n ? _c(\"v-card-text\", [\n _vm._v(\"\\n No notifications\\n \"),\n ])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n \"data-test\": \"notification-list\",\n },\n },\n [\n _vm._l(\n _vm.notificationList,\n function (notification, index) {\n return [\n notification.header\n ? [\n index !== 0\n ? _c(\"v-divider\", {\n key: index,\n staticClass: \"mb-2\",\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"v-subheader\",\n { key: notification.header },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.header) +\n \"\\n \"\n ),\n ]\n ),\n ]\n : _c(\n \"v-list-item\",\n {\n key: \"notification-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(notification)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n notification.severity,\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\n \"v-list-item-title\",\n {\n class: {\n \"text--secondary\":\n notification.read,\n \"text-wrap\": true,\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.log) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(\n notification.time\n )\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", {\n staticStyle: { height: \"20px\" },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }\n ),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.notificationDialog,\n callback: function ($$v) {\n _vm.notificationDialog = $$v\n },\n expression: \"notificationDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.log) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: {\n status: _vm.selectedNotification.severity || \"INFO\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(_vm.selectedNotification.time)\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n return _vm.navigate(_vm.selectedNotification.url)\n },\n },\n },\n [\n _vm._v(\"\\n Open\\n \"),\n _c(\"v-icon\", { attrs: { right: \"\" } }, [\n _vm._v(\" mdi-open-in-new \"),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.notificationDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.settingsDialog,\n callback: function ($$v) {\n _vm.settingsDialog = $$v\n },\n expression: \"settingsDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Notification settings \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Show toasts\" },\n model: {\n value: _vm.showToast,\n callback: function ($$v) {\n _vm.showToast = $$v\n },\n expression: \"showToast\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_vm._v(\"\\n close\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","const _severities = [\n // order of severities from highest to lowest\n 'FATAL',\n 'fatal',\n 'ERROR',\n 'critical',\n 'serious',\n 'WARN',\n 'caution',\n 'INFO',\n 'normal',\n 'standby',\n 'off',\n 'DEBUG',\n]\n\nconst _getSeverityIndeces = function (severities) {\n return severities.map((severity) => _severities.indexOf(severity))\n}\n\nconst highestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.min(...indeces)\n return _severities[index]\n}\n\nconst lowestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.max(...indeces)\n return _severities[index]\n}\n\nconst orderBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.sort((a, b) => {\n return (\n _severities.indexOf(severityGetter(a)) -\n _severities.indexOf(severityGetter(b))\n )\n })\n}\n\nconst groupBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.reduce((groups, obj) => {\n const severity = severityGetter(obj)\n groups[severity] ||= []\n groups[severity].push(obj)\n return groups\n }, {})\n}\n\nexport { highestSeverity, lowestSeverity, orderBySeverity, groupBySeverity }\n","var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordPing() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ActionCable from '@rails/actioncable'\n//ActionCable.logger.enabled = true\nActionCable.ConnectionMonitor.staleThreshold = 10\n\nexport default class Cable {\n constructor(url = '/openc3-api/cable') {\n this._cable = null\n this._url = url\n }\n disconnect() {\n if (this._cable) {\n this._cable.disconnect()\n }\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n if (this._cable == null) {\n let final_url =\n this._url +\n '?scope=' +\n window.openc3Scope +\n '&authorization=' +\n localStorage.openc3Token\n this._cable = ActionCable.createConsumer(encodeURI(final_url))\n }\n return this._cable.subscriptions.create(\n {\n channel,\n ...additionalOptions,\n },\n callbacks\n )\n }\n )\n }\n recordPing() {\n this._cable.connection.monitor.recordPing()\n }\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showNotificationPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showNotificationPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Bell icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon v-if=\"unreadCount === 0\" :size=\"size\">\n mdi-bell-outline\n </v-icon>\n <v-badge\n v-else\n left\n offset-x=\"24\"\n offset-y=\"8\"\n :color=\"badgeColor\"\n bordered\n :content=\"unreadCount\"\n >\n <v-icon :size=\"size\" :color=\"badgeColor\"> mdi-bell </v-icon>\n </v-badge>\n </v-btn>\n </template>\n\n <!-- Notifications list -->\n <v-card>\n <v-card-title>\n Notifications\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"ml-1\"\n @click=\"clearNotifications\"\n data-test=\"clear-notifications\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n <v-btn\n icon\n @click=\"toggleSettingsDialog\"\n class=\"ml-1\"\n data-test=\"notification-settings\"\n >\n <v-icon> $astro-settings </v-icon>\n </v-btn>\n </v-card-title>\n <v-card-text v-if=\"notifications.length === 0\">\n No notifications\n </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n data-test=\"notification-list\"\n >\n <template v-for=\"(notification, index) in notificationList\">\n <template v-if=\"notification.header\">\n <v-divider v-if=\"index !== 0\" :key=\"index\" class=\"mb-2\" />\n <v-subheader :key=\"notification.header\">\n {{ notification.header }}\n </v-subheader>\n </template>\n\n <v-list-item\n v-else\n :key=\"`notification-${index}`\"\n @click=\"openDialog(notification)\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title\n :class=\"{\n 'text--secondary': notification.read,\n 'text-wrap': true,\n }\"\n >\n {{ notification.log }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ notification.time | shortDateTime }}\n </v-list-item-subtitle>\n <div style=\"height: 20px\" />\n </v-list-item-content>\n <template v-slot:badge>\n <astro-status-indicator :status=\"notification.severity\" />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full notification -->\n <v-dialog v-model=\"notificationDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedNotification.log }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedNotification.severity || 'INFO'\"\n />\n </v-card-title>\n <v-card-subtitle>\n {{ selectedNotification.time | shortDateTime }}\n </v-card-subtitle>\n <v-divider />\n <v-card-actions>\n <v-btn\n color=\"primary\"\n text\n @click=\"navigate(selectedNotification.url)\"\n >\n Open\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n <v-btn color=\"primary\" text @click=\"notificationDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Dialog for changing notification settings -->\n <v-dialog v-model=\"settingsDialog\" width=\"600\">\n <v-card>\n <v-card-title> Notification settings </v-card-title>\n <v-card-text>\n <v-switch v-model=\"showToast\" label=\"Show toasts\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"toggleSettingsDialog\">\n close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { formatDistanceToNow } from 'date-fns'\nimport {\n AstroStatusColors,\n UnknownToAstroStatus,\n} from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\nimport Cable from '../../../services/cable.js'\n\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n cable: new Cable(),\n subscription: null,\n notifications: [],\n showNotificationPane: false,\n toastNotification: {},\n notificationDialog: false,\n selectedNotification: {},\n settingsDialog: false,\n showToast: true,\n }\n },\n computed: {\n badgeColor: function () {\n if (!this.unreadCount) {\n return AstroStatusColors['off']\n }\n const severities = this.unreadNotifications\n .map((notification) => notification.severity)\n .filter((val, index, self) => {\n return self.indexOf(val) === index // Unique values\n })\n return AstroStatusColors[\n UnknownToAstroStatus[highestSeverity(severities)]\n ]\n },\n readNotifications: function () {\n return this.notifications\n .filter((notification) => notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadNotifications: function () {\n return this.notifications\n .filter((notification) => !notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadCount: function () {\n let result = this.unreadNotifications.length\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\n result += '+' // Indicate there are more\n }\n return result\n },\n notificationList: function () {\n const groups = groupBySeverity(this.unreadNotifications)\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\n (severity) => {\n const header = {\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\n }\n return [header, ...groups[severity]]\n }\n )\n if (this.readNotifications.length) {\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\n }\n return result\n },\n },\n watch: {\n showNotificationPane: function (val) {\n if (!val) {\n if (this.selectedNotification.title) {\n this.notificationDialog = false\n this.selectedNotification = {}\n } else {\n this.markAllAsRead()\n }\n }\n },\n showToast: function (val) {\n localStorage.notoast = !val\n },\n },\n created: function () {\n this.showToast = localStorage.notoast === 'false'\n this.subscribe()\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n markAllAsRead: function () {\n this.notifications.forEach((notification) => {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n })\n },\n clearNotifications: function () {\n this.markAllAsRead()\n this.notifications = []\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\n this.showNotificationPane = false\n },\n toggleNotificationPane: function () {\n this.showNotificationPane = !this.showNotificationPane\n },\n toggleSettingsDialog: function () {\n this.settingsDialog = !this.settingsDialog\n },\n openDialog: function (notification, clearToast = false) {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n this.selectedNotification = notification\n this.notificationDialog = true\n },\n navigate: function (url) {\n window.open(url, '_blank')\n },\n subscribe: function () {\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (data) => this.received(data),\n },\n {\n start_offset:\n localStorage.notificationStreamOffset ||\n localStorage.lastReadNotification,\n types: ['notification', 'alert'],\n }\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n received: function (parsed) {\n this.cable.recordPing()\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\n }\n let foundToast = false\n parsed.forEach((notification) => {\n notification.read =\n notification.msg_id <= localStorage.lastReadNotification\n notification.severity = notification.severity || 'INFO'\n if (\n !notification.read && // Don't toast read notifications\n ['FATAL', 'ERROR', 'WARN'].includes(notification.severity) // Toast for these statuses\n ) {\n foundToast = true\n this.toastNotification = notification\n }\n })\n\n if (this.showToast && foundToast) {\n let duration = 5000\n if (['FATAL', 'ERROR'].includes(notification.severity)) {\n duration = null\n }\n\n this.$notify[this.toastNotification.severity]({\n ...this.toastNotification,\n type: 'notification',\n duration: duration,\n saveToHistory: false,\n })\n }\n\n if (\n this.notifications.length + parsed.length >\n NOTIFICATION_HISTORY_MAX_LENGTH\n ) {\n this.notifications.splice(\n 0,\n this.notifications.length +\n parsed.length -\n NOTIFICATION_HISTORY_MAX_LENGTH\n )\n }\n this.notifications = this.notifications.concat(parsed)\n },\n },\n filters: {\n shortDateTime: function (nsec) {\n if (!nsec) return ''\n const date = new Date(nsec / 1_000_000)\n return formatDistanceToNow(date, { addSuffix: true })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eda8ca60\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('eda8ca60')) {\n api.createRecord('eda8ca60', component.options)\n } else {\n api.reload('eda8ca60', component.options)\n }\n module.hot.accept(\"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\", function () {\n api.rerender('eda8ca60', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showUserMenu },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"offset-y\": \"\",\n \"close-on-content-click\": false,\n \"nudge-width\": 120,\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-account \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showUserMenu,\n callback: function ($$v) {\n _vm.showUserMenu = $$v\n },\n expression: \"showUserMenu\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\"v-card-text\", { staticClass: \"text-center\" }, [\n _c(\n \"div\",\n { staticStyle: { \"text-align\": \"center\", margin: \"5px\" } },\n [_vm._v(_vm._s(_vm.username))]\n ),\n _vm._v(\" \"),\n _vm.authenticated\n ? _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.logout },\n },\n [_vm._v(\" Logout \")]\n ),\n ],\n 1\n )\n : _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.login },\n },\n [_vm._v(\" Login \")]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.username === \"Anonymous\"\n ? _c(\n \"div\",\n {\n staticClass: \"pt-2 link\",\n on: {\n click: function ($event) {\n _vm.showUpgradeToEnterpriseDialog = true\n },\n },\n },\n [\n _vm._v(\"\\n Click to learn more about\"),\n _c(\"br\"),\n _vm._v(\n \"\\n COSMOS Enterprise Edition\\n \"\n ),\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Colorblind mode\" },\n model: {\n value: _vm.colorblindMode,\n callback: function ($$v) {\n _vm.colorblindMode = $$v\n },\n expression: \"colorblindMode\",\n },\n }),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"upgrade-to-enterprise-dialog\", {\n model: {\n value: _vm.showUpgradeToEnterpriseDialog,\n callback: function ($$v) {\n _vm.showUpgradeToEnterpriseDialog = $$v\n },\n expression: \"showUpgradeToEnterpriseDialog\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showUserMenu\" class=\"overlay\" />\n <v-menu\n v-model=\"showUserMenu\"\n transition=\"slide-y-transition\"\n offset-y\n :close-on-content-click=\"false\"\n :nudge-width=\"120\"\n :nudge-bottom=\"20\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-account </v-icon>\n </v-btn>\n </template>\n\n <v-card>\n <v-card-text class=\"text-center\">\n <div style=\"text-align: center; margin: 5px\">{{ username }}</div>\n <div v-if=\"authenticated\">\n <v-btn block @click=\"logout\" color=\"primary\"> Logout </v-btn>\n </div>\n <div v-else>\n <v-btn block @click=\"login\" color=\"primary\"> Login </v-btn>\n </div>\n <div\n v-if=\"username === 'Anonymous'\"\n @click=\"showUpgradeToEnterpriseDialog = true\"\n class=\"pt-2 link\"\n >\n Click to learn more about<br />\n COSMOS Enterprise Edition\n </div>\n <div>\n <v-switch label=\"Colorblind mode\" v-model=\"colorblindMode\" />\n </div>\n </v-card-text>\n </v-card>\n </v-menu>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n ></upgrade-to-enterprise-dialog>\n </div>\n</template>\n\n<script>\nimport UpgradeToEnterpriseDialog from '../../../components/UpgradeToEnterpriseDialog'\n\nexport default {\n components: {\n UpgradeToEnterpriseDialog,\n },\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n let user = OpenC3Auth.user()\n return {\n showUserMenu: false,\n authenticated: !!localStorage.openc3Token,\n username: user['name'],\n showUpgradeToEnterpriseDialog: false,\n }\n },\n computed: {\n colorblindMode: {\n get: function () {\n return localStorage.colorblindMode === 'true'\n },\n set: function (val) {\n localStorage.colorblindMode = val\n },\n },\n },\n methods: {\n logout: function () {\n OpenC3Auth.logout()\n },\n login: function () {\n OpenC3Auth.login(location.href)\n },\n },\n}\n</script>\n\n<style scoped>\n.link {\n cursor: pointer;\n}\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26b5fc12\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('26b5fc12')) {\n api.createRecord('26b5fc12', component.options)\n } else {\n api.reload('26b5fc12', component.options)\n }\n module.hot.accept(\"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\", function () {\n api.rerender('26b5fc12', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-navigation-drawer v-model=\"drawer\" app id=\"openc3-nav-drawer\">\n <v-list>\n <v-list-item>\n <v-list-item-icon\n style=\"\n margin-right: auto !important;\n margin-left: auto;\n margin-top: 0px;\n margin-bottom: 0px;\n \"\n >\n <img :src=\"logo\" alt=\"OpenC3\" />\n </v-list-item-icon>\n </v-list-item>\n <div class=\"cosmos\" @click=\"showUpgradeToEnterpriseDialog = true\">\n COSMOS\n </div>\n <v-list-item class=\"my-0\">\n <v-list-item-content>\n <div v-for=\"(tool, name) in adminTools\" :key=\"name\">\n <v-btn\n block\n small\n :href=\"tool.url\"\n onclick=\"singleSpaNavigate(event)\"\n class=\"fixcenter\"\n >\n Admin\n </v-btn>\n </div>\n </v-list-item-content>\n </v-list-item>\n <v-divider />\n <v-treeview\n :items=\"items\"\n :open=\"initiallyOpen\"\n item-key=\"name\"\n dense\n open-on-click\n expand-icon=\"\"\n >\n <template v-slot:prepend=\"{ item, open }\">\n <v-icon v-if=\"!item.icon\">\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\n </v-icon>\n <a v-else :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n <v-icon> {{ item.icon }} </v-icon>\n </a>\n </template>\n <template v-slot:label=\"{ item }\">\n <a :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n {{ item.name }}\n </a>\n </template>\n <template v-slot:append=\"{ item }\">\n <a v-if=\"item.icon\" :href=\"newTabUrl(item)\" target=\"_blank\">\n <v-icon>mdi-open-in-new</v-icon>\n </a>\n </template>\n </v-treeview>\n </v-list>\n </v-navigation-drawer>\n <v-app-bar app color=\"tertiary darken-3\" id=\"openc3-app-toolbar\">\n <v-app-bar-nav-icon @click=\"drawer = !drawer\" />\n <v-divider vertical class=\"top-bar-divider-full-height\" />\n <span style=\"width: 100%\"><span id=\"openc3-menu\"></span></span>\n <div class=\"justify-right mr-2 pt-2\"><scope-selector /></div>\n <div class=\"justify-right\" data-test=\"alert-history\">\n <alert-history />\n </div>\n <div class=\"justify-right\" data-test=\"notifications\">\n <notifications />\n </div>\n <div class=\"justify-right\" data-test=\"user-menu\"><user-menu /></div>\n </v-app-bar>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n ></upgrade-to-enterprise-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '../../services/api'\nimport logo from '../../../public/img/logo.png'\nimport { registerApplication, start } from 'single-spa'\nimport ScopeSelector from './components/ScopeSelector.vue'\nimport AlertHistory from './components/AlertHistory.vue'\nimport Notifications from './components/Notifications.vue'\nimport UserMenu from './components/UserMenu.vue'\nimport UpgradeToEnterpriseDialog from '../../components/UpgradeToEnterpriseDialog'\n\nexport default {\n components: {\n ScopeSelector,\n AlertHistory,\n Notifications,\n UserMenu,\n UpgradeToEnterpriseDialog,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n items: [],\n drawer: true,\n appNav: {},\n logo: logo,\n initiallyOpen: [],\n showUpgradeToEnterpriseDialog: false,\n }\n },\n computed: {\n // a computed getter\n shownTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n adminTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n },\n created() {\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\n (response) => {\n this.appNav = response.data\n\n let id = 1\n // Register apps and start single-spa\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown) {\n if (\n this.appNav[key].category &&\n this.appNav[key].category !== 'Admin'\n ) {\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\n this.initiallyOpen.push(this.appNav[key].category)\n const result = this.items.filter(\n (item) => item.name === this.appNav[key].category\n )\n if (result.length === 0) {\n this.items.push({\n id: id,\n name: this.appNav[key].category,\n children: [\n {\n id: id + 1,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n },\n ],\n })\n id++\n } else {\n result[0].children.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n } else if (!this.appNav[key].category) {\n this.items.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n id++\n\n if (this.appNav[key].folder_name) {\n let folder_name = this.appNav[key].folder_name\n let name = '@openc3/tool-' + folder_name\n registerApplication({\n name: name,\n app: () => System.import(name),\n activeWhen: ['/tools/' + folder_name],\n })\n }\n }\n }\n start({\n urlRerouteOnly: true,\n })\n\n // Redirect some base paths to the first tool\n if (\n window.location.pathname == '/' ||\n window.location.pathname == '/tools' ||\n window.location.pathname == '/tools/'\n ) {\n for (var key of Object.keys(this.shownTools)) {\n if (this.appNav[key].shown) {\n history.replaceState(null, '', this.appNav[key].url)\n break\n }\n }\n }\n\n // Check every minute if we need to update our token\n setInterval(() => {\n OpenC3Auth.updateToken(120).then(function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n })\n }, 60000)\n }\n )\n },\n methods: {\n newTabUrl(tool) {\n let url = null\n if (tool.url[0] == '/' && tool.url[1] != '/') {\n url = new URL(tool.url, window.location.origin)\n } else {\n url = new URL(tool.url)\n }\n url.searchParams.set('scope', window.openc3Scope)\n return url.href\n },\n },\n}\n</script>\n\n<style scoped>\n.cosmos {\n cursor: pointer;\n text-align: center;\n font-size: 18pt;\n}\ndiv a {\n color: white;\n font-size: 16px;\n display: block;\n height: 100%;\n width: 100%;\n}\na.fixcenter {\n display: flex;\n}\n.theme--dark.v-navigation-drawer {\n background-color: var(--v-primary-darken2);\n}\n#openc3-app-toolbar .top-bar-divider-full-height {\n margin: -4px 4px;\n min-height: calc(100% + 8px);\n}\n</style>\n<style>\n/* Remove the padding on root level nodes since we removed the expand icon */\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__level {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__toggle {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview-node__children\n div.v-treeview-node__level:nth-child(1) {\n width: 0px;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js&\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\"\nimport style1 from \"./AppNav.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00ae1763\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('00ae1763')) {\n api.createRecord('00ae1763', component.options)\n } else {\n api.reload('00ae1763', component.options)\n }\n module.hot.accept(\"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\", function () {\n api.rerender('00ae1763', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppNav.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-dialog\",\n {\n attrs: { width: \"500\" },\n model: {\n value: _vm.dialog,\n callback: function ($$v) {\n _vm.dialog = $$v\n },\n expression: \"dialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Clock out of sync \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _vm._v(\n \"\\n We've detected that your clock is approximately\\n \" +\n _vm._s(Math.abs(_vm.approximateDiscrepancySec)) +\n \" seconds\\n \" +\n _vm._s(\n _vm.approximateDiscrepancySec > 0 ? \"behind\" : \"ahead of\"\n ) +\n \" server time.\\n This can cause issues and might have unknown side effects.\\n \"\n ),\n _c(\"v-checkbox\", {\n attrs: { label: \"Don't show this again\" },\n model: {\n value: _vm.suppress,\n callback: function ($$v) {\n _vm.suppress = $$v\n },\n expression: \"suppress\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.dismiss },\n },\n [_vm._v(\" Dismiss \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"dialog\" width=\"500\">\n <v-card>\n <v-card-title> Clock out of sync </v-card-title>\n <v-card-text>\n We've detected that your clock is approximately\n {{ Math.abs(approximateDiscrepancySec) }} seconds\n {{ approximateDiscrepancySec > 0 ? 'behind' : 'ahead of' }} server time.\n This can cause issues and might have unknown side effects.\n <v-checkbox v-model=\"suppress\" label=\"Don't show this again\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"dismiss\"> Dismiss </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nconst ALLOWABLE_DISCREPANCY_MS = 3000\n\nexport default {\n data: function () {\n return {\n dismissed: false,\n suppress: false,\n discrepancy: 0,\n }\n },\n created: function () {\n this.suppress =\n localStorage['suppresswarning__clock_out_of_sync_with_server'] === 'true'\n if (!this.suppress) {\n axios\n .get('/openc3-api/time')\n .then((response) => {\n this.discrepancy = response.data.now_nsec / 1_000_000 - Date.now()\n })\n .catch((error) => {\n // Silently fail\n this.dismissed = true\n })\n }\n },\n methods: {\n dismiss: function () {\n localStorage['suppresswarning__clock_out_of_sync_with_server'] =\n this.suppress\n this.dismissed = true\n },\n },\n computed: {\n approximateDiscrepancySec: function () {\n return (this.discrepancy / 1000).toFixed()\n },\n dialog: function () {\n return (\n !this.dismissed &&\n Math.abs(this.discrepancy) >= ALLOWABLE_DISCREPANCY_MS\n )\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./TimeCheck.vue?vue&type=template&id=2963a6a3&\"\nimport script from \"./TimeCheck.vue?vue&type=script&lang=js&\"\nexport * from \"./TimeCheck.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2963a6a3')) {\n api.createRecord('2963a6a3', component.options)\n } else {\n api.reload('2963a6a3', component.options)\n }\n module.hot.accept(\"./TimeCheck.vue?vue&type=template&id=2963a6a3&\", function () {\n api.rerender('2963a6a3', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue\"\nexport default component.exports","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<script>\nimport { OpenC3Api } from '../../../services/openc3-api'\n\nexport default {\n data: function () {\n return {\n api: null,\n classification: {\n text: '',\n fontColor: 'white',\n backgroundColor: 'red',\n topHeight: 0,\n bottomHeight: 0,\n },\n }\n },\n computed: {\n classificationStyles: function () {\n // JavaScript can't access CSS psudo-elements (::before and ::after).\n // This string sets these JS values to CSS variables, accessible to\n // the style sheet via the style attribute on #app\n return [\n `--classification-text:\"${this.classification.text}\";`,\n `--classification-font-color:${this.classification.fontColor};`,\n `--classification-background-color:${this.classification.backgroundColor};`,\n `--classification-height-top:${this.classification.topHeight}px;`,\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\n ].join('')\n },\n },\n created: function () {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting('classification_banner')\n .then((response) => {\n if (response) {\n this.classification = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n },\n}\n</script>\n\n<style>\n/* push things up and down to make room for the classification banners */\n#app,\n#openc3-nav-drawer {\n margin-top: var(--classification-height-top);\n}\n#openc3-app-toolbar {\n top: var(--classification-height-top);\n}\n#openc3-nav-drawer .v-navigation-drawer__content {\n height: calc(\n 100% - var(--classification-height-top) -\n var(--classification-height-bottom)\n );\n}\n#footer {\n margin-bottom: var(--classification-height-bottom);\n}\n\n/* make the classification banners */\n#app::before,\n#app::after {\n z-index: 99;\n position: fixed;\n left: 0;\n right: 0;\n text-align: center;\n content: var(--classification-text);\n color: var(--classification-font-color);\n background-color: var(--classification-background-color);\n}\n#app::before {\n top: 0;\n font-size: calc(var(--classification-height-top) * 0.7);\n height: var(--classification-height-top);\n}\n#app::after {\n bottom: 0;\n font-size: calc(var(--classification-height-bottom) * 0.7);\n height: var(--classification-height-bottom);\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","var render, staticRenderFns\nimport script from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nexport * from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6e8d3d69')) {\n api.createRecord('6e8d3d69', component.options)\n } else {\n api.reload('6e8d3d69', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"\nexport default component.exports","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-app :style=\"classificationStyles\">\n <app-nav class=\"d-print-none\" />\n\n <!-- Sizes your content based upon application components -->\n <v-main>\n <v-container fluid>\n <div id=\"openc3-tool\"></div>\n <div><router-view /></div>\n </v-container>\n </v-main>\n <app-footer app class=\"d-print-none\" />\n <time-check />\n </v-app>\n</template>\n\n<script>\nimport AppFooter from '../../packages/openc3-tool-common/src/tools/base/AppFooter'\nimport AppNav from '../../packages/openc3-tool-common/src/tools/base/AppNav'\nimport TimeCheck from '../../packages/openc3-tool-common/src/tools/base/components/TimeCheck'\nimport ClassificationBanners from '../../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners'\nexport default {\n components: {\n AppFooter,\n AppNav,\n TimeCheck,\n },\n mixins: [ClassificationBanners],\n}\n</script>\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7ba5bd90')) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/login',\n name: 'Login',\n component: () =>\n import(\n '../../packages/openc3-tool-common/src/tools/base/components/Login'\n ),\n },\n ],\n})\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nconst NOTIFY_HISTORY_MAX_LENGTH = 100\n\nif (!window.hasOwnProperty('OpenC3Store')) {\n window.OpenC3Store = new Vuex.Store({\n state: {\n notifyHistory: [],\n },\n getters: {},\n mutations: {\n notifyAddHistory: function (state, notification) {\n if (state.notifyHistory.length >= NOTIFY_HISTORY_MAX_LENGTH) {\n state.notifyHistory.length = NOTIFY_HISTORY_MAX_LENGTH - 1\n }\n state.notifyHistory.unshift(notification)\n },\n notifyClearHistory: function (state) {\n state.notifyHistory = []\n },\n },\n modules: {},\n })\n}\n\nexport default window.OpenC3Store\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport Vue from 'vue'\nimport Vuetify from 'vuetify'\nimport { AstroIconVuetifyValues } from '../../../packages/openc3-tool-common/src/components/icons/index.js'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n theme: {\n dark: true,\n options: {\n customProperties: true,\n },\n themes: {\n dark: {\n primary: '#005a8f',\n secondary: '#4dacff',\n tertiary: '#283f58',\n },\n light: {\n primary: '#cce6ff',\n secondary: '#cce6ff',\n },\n },\n },\n icons: {\n values: {\n ...AstroIconVuetifyValues,\n },\n },\n})\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { style: _vm.iconStyle })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses, UnknownToAstroStatus } from '.'\nimport dark from '../../../public/icons/status-dark.png'\nimport light from '../../../public/icons/status-light.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor\n const bgHeight = 32 * this.scaleFactor\n const iconWidth = 32 * this.scaleFactor // Each icon in the png is 32px wide with no space in between\n const offset = AstroStatuses.indexOf(UnknownToAstroStatus[this.status])\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\"\nimport script from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3821337a')) {\n api.createRecord('3821337a', component.options)\n } else {\n api.reload('3821337a', component.options)\n }\n module.hot.accept(\"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\", function () {\n api.rerender('3821337a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue\"\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nVue.config.productionTip = false\n\nimport store from '../../packages/openc3-tool-common/src/plugins/store'\nimport '../../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss'\nimport vuetify from './plugins/vuetify'\n\nimport AstroStatusIndicator from '../../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator'\nVue.component('astro-status-indicator', AstroStatusIndicator)\n\nconst options = OpenC3Auth.getInitOptions()\nOpenC3Auth.init(options).then(() => {\n // Set the scope variable that will be used for the life of this page load\n // It is always default in standard edition\n window.openc3Scope = 'DEFAULT'\n\n new Vue({\n router,\n store,\n vuetify,\n render: (h) => h(App),\n }).$mount('#openc3-main')\n})\n"],"names":["inProgress","dataWebpackPrefix","module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","_ref2","_ref2$params","_ref2$noAuth","noAuth","_ref2$noScope","noScope","_args","wrap","_context","prev","next","OpenC3Auth","updateToken","defaultMinValidity","sent","setTokens","t0","login","localStorage","openc3Token","openc3Scope","abrupt","stop","_x","_x2","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","_objectSpread","get","_ref3","_ref3$headers","put","_ref4","_ref4$headers","post","_ref5","_ref5$headers","delete","_ref6","_ref6$headers","vueInstance","Vue","axiosInstance","origin","_error$response","_error$response2","_error$response3","_error$response4","_error$response5","refreshed","includes","body","exception","class","_error$response6","$notify","serious","title","___CSS_LOADER_EXPORT___","cssWithMappingToString","list","map","item","modules","mediaQuery","dedupe","alreadyImportedModules","_i","_arrayLikeToArray","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","_iterableToArrayLimit","o","minLen","n","_unsupportedIterableToArray","_nonIterableRest","cssMapping","base64","sourceMapping","sourceURLs","sources","sourceRoot","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","memo","insert","style","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","setAttributes","attributes","styleElement","nonce","insertStyleElement","needLayer","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","resolveDirectory","rootDirLevel","meta","urlString","rootDirectoryLevel","numDirsProcessed","finalPath","Number","isInteger","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","__esModule","default","locals","listToStyles","parentId","styles","newStyles","part","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleIndex","applyToSingletonTag","applyToTag","textStore","replaceText","replacement","Boolean","cssNode","childNodes","insertBefore","ssrId","__WEBPACK_EXTERNAL_MODULE__8645__","__WEBPACK_EXTERNAL_MODULE__4091__","__WEBPACK_EXTERNAL_MODULE__4688__","__WEBPACK_EXTERNAL_MODULE__9731__","__WEBPACK_EXTERNAL_MODULE__9191__","asyncGeneratorStep","gen","_next","_throw","arg","info","self","_defineProperty","enumerable","configurable","writable","_toPropertyKey","input","hint","prim","toPrimitive","res","_typeof","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","y","__system_context__","getter","d","definition","f","chunkId","reduce","u","script","needAttach","scripts","s","getAttribute","charset","nc","src","onScriptComplete","event","onload","clearTimeout","doneFns","r","toStringTag","p","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","autoPublicPath","_vm","_h","$createElement","_c","_self","classificationStyles","staticClass","_v","attrs","fluid","app","_withStripped","color","height","icon","alt","footerClass","on","click","upgrade","edition","license","sourceUrl","model","showUpgradeToEnterpriseDialog","$$v","expression","_g","_b","staticStyle","cursor","contextmenu","openMenu","_f","displayLocal","localDate","utcDate","formatString","menuX","menuY","absolute","showMenu","toggleDisplayLocal","toggleDisplay24h","display24h","dateMode","setMonthFirst","setDayFirst","setNumber","requiredArgs","required","toDate","argument","argStr","getTime","NaN","toInteger","dirtyNumber","isNaN","ceil","startOfUTCISOWeek","dirtyDate","date","day","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","output","abs","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","G","localize","era","width","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","quarter","q","M","L","w","week","firstWeek","startOfUTCWeekYear","round","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","B","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","formatLong","timeLongFormatter","time","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","getTimezoneOffsetInMilliseconds","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","clock_zone","clock_12h","clock_dateMode","intervalCount","computed","dateFormat","timeFormat","watch","created","_this","setInterval","methods","_this2","preventDefault","clientX","clientY","$nextTick","filters","component","__file","_classCallCheck","Constructor","_defineProperties","descriptor","toPropertyKey","_createClass","protoProps","staticProps","OpenC3Api","_hashString","_inject_tlm","_tlm","_get_tlm_values","_get_tlm_packet","_exec","kwparams","headerOptions","jsonrpc","keyword_params","t1","json_class","raw","Infinity","POSITIVE_INFINITY","NEGATIVE_INFINITY","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","target_name","interface_name","_len","interface_params","_key","router_name","target_commands","packet","log_writer_name","limits_set","packet_name","_callee2","value_type","stale_time","converted","_args2","_context2","decode_openc3_type","_x3","_x4","_x5","_callee3","items","_args3","_context3","_x6","item_name","_callee4","_args4","_context4","_x7","_x8","_x9","_callee5","item_hash","_args5","_context5","_x10","_x11","command_name","parameter_name","param_list","encode_openc3_type","_cmd","tool","ignored","_callee6","arrayBuffer","hashAsArrayBuffer","uint8ViewOfHash","_context6","isSecureContext","TextEncoder","crypto","subtle","digest","padStart","_x12","show","logo","$event","set","$emit","components","ClockFooter","UpgradeToEnterpriseDialog","enterprise","getSourceUrl","Api","get_settings","drawer","_l","adminTools","block","small","onclick","initiallyOpen","dense","scopedSlots","_u","ref","newTabUrl","vertical","scopes","disabled","label","scope","showAlertPane","transition","size","top","clearAlerts","alerts","alert","openDialog","left","inline","severity","proxy","alertDialog","selectedAlert","text","xmlns","viewBox","preserveAspectRatio","focusable","getIcon","library","propscolor","RuxIcon","AstroIconLibrary","AstroIconVuetifyValues","AstroIcon","UnknownToAstroStatus","fatal","FATAL","ERROR","WARN","INFO","debug","critical","CRITICAL","SERIOUS","caution","CAUTION","normal","NORMAL","standby","STANDBY","off","OFF","AstroStatusColors","AstroStatuses","refreshList","$store","state","notifyHistory","commit","showNotificationPane","unreadCount","badgeColor","bordered","clearNotifications","toggleSettingsDialog","notifications","notificationList","notification","header","log","notificationDialog","selectedNotification","navigate","right","settingsDialog","showToast","iter","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","differenceInMonths","differenceInCalendarMonths","setDate","setMonth","isLastMonthNotFull","setHours","endOfDay","setFullYear","endOfMonth","isLastDayOfMonth","roundingMap","trunc","defaultRoundingMethod","property","MINUTES_IN_MONTH","dirtyBaseDate","localizeOptions","months","seconds","differenceInMilliseconds","roundingMethod","differenceInSeconds","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","_severities","adapters","logger","WebSocket","messages","enabled","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","getPollInterval","reconnectionBackoffRate","min","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","events","handler","reconnect","reload","confirmSubscription","notify","notifyAll","willAttemptReconnect","Subscription","mixin","properties","perform","action","command","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","findAll","sendCommand","callbackName","Consumer","_url","createWebSocketURL","connect","ActionCable","Cable","_cable","callbacks","additionalOptions","final_url","getConfig","encodeURI","NOTIFICATION_HISTORY_MAX_LENGTH","cable","toastNotification","severities","unreadNotifications","indeces","_getSeverityIndeces","_toConsumableArray","highestSeverity","readNotifications","sort","groups","objects","severityGetter","groupBySeverity","orderBySeverity","flatMap","markAllAsRead","notoast","destroyed","lastReadNotification","msg_id","notificationStreamOffset","toggleNotificationPane","createSubscription","received","start_offset","types","foundToast","duration","saveToHistory","shortDateTime","nsec","formatDistanceToNow","showUserMenu","margin","authenticated","logout","colorblindMode","user","ScopeSelector","AlertHistory","Notifications","UserMenu","appNav","shownTools","_Object$keys","shown","category","_i2","_Object$keys2","_loop","_Object$keys3","_i3","children","folder_name","registerApplication","System","import","activeWhen","urlRerouteOnly","_i4","_Object$keys4","history","replaceState","URL","searchParams","dialog","approximateDiscrepancySec","suppress","dismiss","dismissed","discrepancy","now_nsec","catch","toFixed","classification","fontColor","backgroundColor","topHeight","bottomHeight","load","get_setting","AppFooter","AppNav","TimeCheck","mixins","ClassificationBanners","cov_1khetde6f7","actualCoverage","Router","mode","routes","Vuex","OpenC3Store","getters","mutations","notifyAddHistory","NOTIFY_HISTORY_MAX_LENGTH","notifyClearHistory","cov_hlr4jmzey","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","Vuetify","theme","dark","customProperties","themes","primary","secondary","tertiary","light","icons","getOwnPropertyDescriptors","iconStyle","large","scale","scaleFactor","bgWidth","bgHeight","iconWidth","cov_14089wz6i9","productionTip","AstroStatusIndicator","getInitOptions","init","router","store","vuetify","App","$mount"],"sourceRoot":""}
|