From 1afdd160c8a3b9a056ba007582f86616bb6ab5dd Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Thu, 14 Nov 2024 16:40:12 +0200 Subject: [PATCH 1/9] G4E-8461 - New window sizing changes. --- js/connect-related.js | 16 +------ js/index.js | 17 ++----- js/utils.js | 75 ++++++++++-------------------- js/window-sizing.js | 104 ++++++++++++++++++++++++++++-------------- scss/app.css | 2 +- scss/app.css.map | 2 +- scss/app.scss | 3 +- scss/horizontal.scss | 1 - scss/vertical.scss | 9 +--- 9 files changed, 103 insertions(+), 126 deletions(-) diff --git a/js/connect-related.js b/js/connect-related.js index ec6d1ad..f18b12a 100644 --- a/js/connect-related.js +++ b/js/connect-related.js @@ -4,11 +4,7 @@ import { getSettings, setSetting, } from './settings.js'; -import { - setOrientation, - setWindowPosition, - setDrawerOpenClasses, -} from './utils.js'; +import { setOrientation, setWindowPosition } from './utils.js'; console.time('Glue'); @@ -60,7 +56,6 @@ gluePromise.then(() => { trackLayouts(); trackWorkspaces(); trackThemeChanges(); - trackWindowMove(); trackConnection(); trackNotificationCount(); trackNotificationPanelVisibilityChange(); @@ -172,14 +167,6 @@ async function trackThemeChanges() { }); } -async function trackWindowMove() { - const glue = await gluePromise; - - glue.windows.my().onBoundsChanged(async () => { - await setDrawerOpenClasses(); - }); -} - async function trackNotificationPanelVisibilityChange() { const glue = await gluePromise; const notificationPanel = document.querySelector('#notification-panel'); @@ -662,7 +649,6 @@ async function getPrefs() { }); } - await setDrawerOpenClasses(); await setWindowPosition(); glue.prefs.subscribe(() => { diff --git a/js/index.js b/js/index.js index 5125d3b..c15f6ef 100644 --- a/js/index.js +++ b/js/index.js @@ -33,7 +33,7 @@ import { import { getSetting } from './settings.js'; import { populateSID } from './profile.js'; import handleScheduledShutdownRestart from './schedule-shutdown-restart.js'; -import { observeSizeChange, setWindowSize } from './window-sizing.js'; +import { setWindowBounds } from './window-sizing.js'; const rxjs = window.rxjs; let { @@ -84,17 +84,11 @@ async function init() { glueModule.registerHotkey(); glueModule.focusWindow(utils.focusInputAfterWindowRecover); + await setWindowBounds().catch(console.error); + populateSID(); showFeedbackPanel(); showProfilePanel(); - setWindowSize(); - - observeSizeChange(app, (width, height) => { - glueModule.moveMyWindow({ - width, - height, - }); - }); } function finishLoading() { @@ -109,13 +103,12 @@ function observeAppElement() { attributeOldValue: true, }; - function handleAttributeChange(entry) { + async function handleAttributeChange(entry) { const { attributeName, oldValue, target } = entry; const newValue = target.getAttribute(attributeName); if (attributeName === 'class' && newValue !== oldValue) { - utils.setDrawerOpenClasses(); - setWindowSize(newValue); + await setWindowBounds().catch(console.error); } } diff --git a/js/utils.js b/js/utils.js index 181c3df..fbace9e 100644 --- a/js/utils.js +++ b/js/utils.js @@ -36,7 +36,7 @@ import { handleNotificationClick, handleEnableNotifications, } from './notifications.js'; -import { setWindowSize } from './window-sizing.js'; +import { setWindowBounds } from './window-sizing.js'; import handleKeyboardNavigation from './keyboard-navigation.js'; @@ -244,23 +244,27 @@ function handleTopMenuClicks() { ); if (hasVisibleDrawers) { - document.querySelector('.app').classList.add('has-drawer'); + const openDirection = await getDrawerOpenDirection(); + + document + .querySelector('.app') + .classList.add('has-drawer', `open-${openDirection}`); } else { document.querySelector('.app').classList.remove('has-drawer'); + + if (document.querySelector('.app').classList.contains('open-left')) { + document.querySelector('.app').classList.remove('open-left'); + } + + if (document.querySelector('.app').classList.contains('open-top')) { + document.querySelector('.app').classList.remove('open-top'); + } } const app = getAppElement(); const bounds = await getVisibleArea(app); const workArea = await getWindowWorkArea(); - if (prevWndBounds.width !== bounds.width) { - await handleOpenLeft(); - } - - if (prevWndBounds.height !== bounds.height) { - await handleOpenTop(); - } - if ( bounds.top < workArea.top || bounds.left < workArea.left || @@ -714,7 +718,7 @@ async function handleAppRowsChange() { const selectedLength = e.target.getAttribute('length-name'); setSetting({ toolbarAppRows: selectedLength }); - setWindowSize(); + await setWindowBounds().catch(console.error); } }); } @@ -733,58 +737,25 @@ async function getAppState() { }; } -async function handleOpenLeft() { - const { isVertical, isOpenLeft, hasDrawer, appBounds } = await getAppState(); - - if (!isVertical || !isOpenLeft) return; - - if (hasDrawer) { - await moveMyWindow({ left: appBounds.left - toolbarDrawerSize.vertical }); - } else { - await moveMyWindow({ left: appBounds.left + toolbarDrawerSize.vertical }); - } -} - -async function handleOpenTop() { - const { isVertical, isOpenTop, hasDrawer, appBounds, visibleArea } = - await getAppState(); - const horizontalHeight = getHorizontalToolbarHeight(); - - if (isVertical || !isOpenTop) return; - - if (hasDrawer) { - await moveMyWindow({ - top: appBounds.top + visibleArea.height - horizontalHeight, - }); - } else { - await moveMyWindow({ - top: appBounds.top - visibleArea.height + horizontalHeight, - }); - } -} - -async function setDrawerOpenClasses() { - const app = getAppElement(); - const isVertical = getSetting('vertical'); - const { visibleArea, workArea } = await getAppState(); - - if (app.classList.contains('has-drawer')) return; +async function getDrawerOpenDirection() { + const { isVertical, visibleArea, workArea } = await getAppState(); + let drawerDirection = ''; if (isVertical) { const shouldOpenLeft = visibleArea.right + toolbarDrawerSize.vertical >= workArea.right; - app.classList.toggle('open-left', shouldOpenLeft); - app.classList.remove('open-top'); + drawerDirection = shouldOpenLeft ? 'left' : 'right'; } else { const horizontalHeight = getHorizontalToolbarHeight(); const shouldOpenTop = visibleArea.top + horizontalHeight >= workArea.bottom && visibleArea.bottom - horizontalHeight >= workArea.top; - app.classList.toggle('open-top', shouldOpenTop); - app.classList.remove('open-left'); + drawerDirection = shouldOpenTop ? 'top' : 'bottom'; } + + return drawerDirection; } function setOrientation() { @@ -1010,9 +981,9 @@ export { escapeHtml, getAppIcon, setWindowPosition, - setDrawerOpenClasses, elementObserver, populateSettingsDropdown, renderAlert, getHorizontalToolbarHeight, + getAppState, }; diff --git a/js/window-sizing.js b/js/window-sizing.js index 6bfa406..5328d4f 100644 --- a/js/window-sizing.js +++ b/js/window-sizing.js @@ -1,56 +1,90 @@ import { toolbarWidth, toolbarDrawerSize } from './settings.js'; -import { getHorizontalToolbarHeight } from './utils.js'; - -function observeSizeChange(element, callback) { - const resizeObserver = new ResizeObserver((entries) => { - for (let entry of entries) { - const { width, height, top, left } = entry.contentRect; - - callback( - Math.floor(width), - Math.floor(height), - Math.floor(top), - Math.floor(left) - ); +import { getAppState, getHorizontalToolbarHeight } from './utils.js'; +import { moveMyWindow } from './connect-related.js'; + +const prevBounds = { + top: 0, + left: 0, + width: 0, + height: 0, +}; + +let hadOpenLeft = false; +let hadOpenTop = false; + +function getChangedProperties(prevBounds, newBounds) { + const diff = {}; + + for (const key in newBounds) { + if (newBounds[key] !== prevBounds[key]) { + diff[key] = newBounds[key]; } - }); - resizeObserver.observe(element); + } - return resizeObserver; + return diff; } -function setWindowSize() { +async function setWindowBounds() { const app = document.querySelector('.app'); - const appClasses = Array.from(app.classList); - - const isVertical = appClasses.includes('vertical'); - const isExpanded = appClasses.includes('expanded'); - const hasDrawer = appClasses.includes('has-drawer'); + const classNames = Array.from(app.classList); + const isVertical = classNames.includes('vertical'); + const isExpanded = classNames.includes('expanded'); + const hasDrawer = classNames.includes('has-drawer'); + const isOpenLeft = classNames.includes('open-left'); + const isOpenTop = classNames.includes('open-top'); const toolbarHeight = getHorizontalToolbarHeight(); const expandedToolbarWidth = 200; + const newBounds = {}; + const { appBounds, visibleArea } = await getAppState(); function setVerticalSize() { - const calculatedWidth = hasDrawer ? toolbarDrawerSize.vertical : 0; + newBounds.width = hasDrawer + ? expandedToolbarWidth + toolbarDrawerSize.vertical + : isExpanded + ? expandedToolbarWidth + : toolbarWidth.vertical; + newBounds.height = toolbarHeight; + + if (isOpenLeft) { + hadOpenLeft = true; + newBounds.left = appBounds.left - toolbarDrawerSize.vertical; + } - app.style.width = isExpanded - ? `${expandedToolbarWidth + calculatedWidth}px` - : `${toolbarWidth.vertical}px`; - app.style.height = `${toolbarHeight}px`; + if (hadOpenLeft && !isOpenLeft) { + newBounds.left = appBounds.left + toolbarDrawerSize.vertical; + hadOpenLeft = false; + } } function setHorizontalSize() { - app.style.width = `${toolbarWidth.horizontal}px`; - if (hasDrawer) { - app.style.height = `${toolbarHeight}px`; - } else if (isExpanded) { - app.style.height = '175px'; - } else { - app.style.height = '48px'; + const horizontalHeight = getHorizontalToolbarHeight(); + + newBounds.width = toolbarWidth.horizontal; + newBounds.height = hasDrawer ? toolbarHeight : isExpanded ? 175 : 48; + + if (isOpenTop) { + hadOpenTop = true; + newBounds.top = appBounds.top + visibleArea.height - horizontalHeight; + } + + if (hadOpenTop && !isOpenTop) { + newBounds.top = appBounds.top - visibleArea.height + horizontalHeight; + hadOpenTop = false; } } isVertical ? setVerticalSize() : setHorizontalSize(); + + const bounds = getChangedProperties(prevBounds, newBounds); + + if (Object.keys(bounds).length === 0) return; + + console.log('Setting window bounds:', bounds); + + moveMyWindow(bounds); + + Object.assign(prevBounds, newBounds); } -export { observeSizeChange, setWindowSize }; +export { setWindowBounds }; diff --git a/scss/app.css b/scss/app.css index 607e0cf..f9f1bac 100644 --- a/scss/app.css +++ b/scss/app.css @@ -1 +1 @@ -@keyframes runleft{0%{opacity:0;transform:translateX(1rem)}100%{opacity:1;transform:translateX(0)}}@keyframes runright{0%{opacity:0;transform:translateX(-1rem)}100%{opacity:1;transform:translateX(0)}}html.dark .viewport{border:1px solid rgba(255,255,255,.075)}html.dark .toggle-content{background-color:var(--t42-body);border-top:1px solid rgba(255,255,255,.075);border-bottom:1px solid rgba(255,255,255,.075);border-right:1px solid rgba(255,255,255,.075);border-left-color:rgba(255,255,255,.075)}html.dark .toggle-content .close-drawer{color:#bbb}html.dark .toggle-content .close-drawer:hover{color:#fff}html.dark .applications-nav::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.dark .viewport-footer::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.dark .favorite::after{background-color:rgba(255,255,255,.075)}html.dark .favorite i{background:#1e1e1e}html.dark .nav .layout-menu-tool{background-color:rgba(var(--t42-bg-light), 0.95)}html.dark .nav .layout-menu-tool li:first-of-type{border-right:1px solid rgba(255,255,255,.05)}html.dark .nav .layout-menu-tool li:hover,html.dark .nav .layout-menu-tool li.hover,html.dark .nav .layout-menu-tool li.active{background-color:rgba(255,255,255,.05);color:#fff}html.dark .nav .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;filter:grayscale(100%) brightness(1)}html.dark .nav .nav-link.active img,html.dark .nav .nav-link:hover img{filter:none}html.dark .select:hover{background-color:#252525}html.dark .select_items{border-color:rgba(255,255,255,.075)}html.dark .select_items:hover{border-color:#2080d3}html.dark .select_option{background-color:#1e1e1e}html.dark .select_expand::after{color:#eee}html.dark .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#252525}html.dark .horizontal .layout-menu-tool{border:1px solid rgba(255,255,255,.075)}html.dark .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(255,255,255,.1)}html.dark .folder-content{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 100%)}html.light .viewport{border:1px solid rgba(219,222,230,.8)}html.light .toggle-content{background-color:#fafafa;border-top:1px solid rgba(219,222,230,.8);border-bottom:1px solid rgba(219,222,230,.8);border-right:1px solid rgba(219,222,230,.8);border-left-color:rgba(219,222,230,.8)}html.light .toggle-content .close-drawer{color:#757575}html.light .toggle-content .close-drawer:hover{color:#0d0d0d}html.light .applications-nav::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.light .viewport-footer::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.light .favorite::after{background-color:rgba(219,222,230,.8)}html.light .favorite i{background:#fafafa}html.light .nav .layout-menu-tool{background:#fff}html.light .nav .layouts-nav div:first-of-type{border-right:1px solid rgba(219,222,230,.8)}html.light .nav .layouts-nav div:hover,html.light .nav .layouts-nav div.hover,html.light .nav .layouts-nav div.active{background-color:rgba(219,222,230,.8);color:#000}html.light .nav .nav-link img{filter:invert(1)}html.light .nav .nav-link.active img,html.light .nav .nav-link:hover img{filter:invert(1) brightness(1.2)}html.light .select:hover{background-color:#fff}html.light .select_items:hover{border-color:#2080d3}html.light .select_option{background-color:#fafafa}html.light .select_option label{color:#757575}html.light .select_expand::after{color:#2c2c2c}html.light .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#f2f2f2;color:#2c2c2c}html.light .horizontal .layout-menu-tool{border:1px solid rgba(219,222,230,.8)}html.light .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(0,0,0,.075)}html.light .folder-content{background:linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.05) 100%)}.nav li.folder{flex-grow:0;overflow:hidden}.nav li.folder .action-menu .icon-size-16{width:1rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down{margin-right:.188rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down::before{display:inline-block;transform:rotate(-90deg)}.nav li.folder .action-menu .icon-folder-open-empty{display:none}.nav li.folder .action-menu:hover span:last-of-type{padding-right:0}.nav li.folder .nav-link.action-menu{min-height:3rem;max-height:3rem}.nav li.folder .folder-content{margin-left:5px}.nav li.folder.folder-open{flex-grow:0;flex-basis:auto}.nav li.folder.folder-open>.action-menu .icon-folder-open-empty{display:block}.nav li.folder.folder-open>.action-menu .icon-folder-empty{display:none}.nav li.folder.folder-open>.action-menu .action-menu-tool .icon-angle-down::before{transform:rotate(0)}html body{background-color:rgba(0,0,0,0)}html .loaded{background-color:var(--t42-body)}html .loaded .app{position:relative;top:0;opacity:1}html .app{height:100%;overflow:hidden;opacity:0}html .app.vertical{display:inline-flex}html .app.horizontal{display:flex;flex-direction:column}html .app.switching-orientation *{transition:none !important}html .app.switching-orientation *::before,html .app.switching-orientation *::after{transition:none !important}html .app *:focus{outline:none}html img,html a{user-select:none;-webkit-user-drag:none;-webkit-user-select:none}html .draggable{-webkit-app-region:drag}html .logo{display:flex;align-items:center;width:100%;height:100%;padding:0 1.25em;overflow:hidden}html .logo-icon,html .logo-wordmark{background-size:contain;background-repeat:no-repeat;height:100%}html .logo-icon img,html .logo-wordmark img{width:100%}html .logo-icon{flex-shrink:0;width:2.33em;height:60%}html .logo-wordmark{height:100%}html .logo-wordmark img{height:100%}html .toggle-content{height:100%;width:300px;overflow:hidden;visibility:visible;display:flex;flex-direction:column}html .toggle-content .input-group{flex-wrap:nowrap}html .toggle-content.hide{width:0;border-right:0 solid rgba(0,0,0,0)}html .toggle-content.hide .action-menu-tool{opacity:0}html .toggle-content>.nav{overflow:auto}html .toggle-content h5{white-space:nowrap;padding:0 .063rem}html .toggle-content .close-drawer{transition-property:color;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;font-size:.688rem;margin-left:.125rem;margin-right:.3125rem;cursor:pointer;transform:rotate(90deg)}html .settings-header{position:sticky;top:0;z-index:15;background-color:var(--t42-body)}html .settings-content{display:flex;flex-direction:column;overflow-y:auto}html .settings-content h5{margin:0}html .settings-content>div{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}html .settings-content>div>div{display:flex;justify-content:space-between;align-items:center}html .settings-system-schedule-restart,html .settings-system-schedule-shutdown{align-items:normal !important;justify-content:flex-start !important;gap:.5rem}html .settings-system-schedule-restart .select,html .settings-system-schedule-shutdown .select{margin-bottom:0}html .settings-system-schedule-restart-time,html .settings-system-schedule-shutdown-time{position:relative}html .settings-system-schedule-restart-time::after,html .settings-system-schedule-shutdown-time::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%);pointer-events:none}html .settings-system-schedule-restart-period,html .settings-system-schedule-shutdown-period{min-width:7.5em}html .settings-system-schedule-restart-interval,html .settings-system-schedule-shutdown-interval{min-width:6.5em}html .settings-system-schedule-restart-interval .select_items,html .settings-system-schedule-shutdown-interval .select_items{top:auto;bottom:0}html .settings-system-schedule-restart-period{z-index:13}html .form-control.flatpickr-input{height:34px;color:var(--t42-content-color-muted);background-color:var(--t42-input-bg);opacity:1;transition:none}html .form-control.flatpickr-input:hover:not(:disabled){border-color:var(--primary)}html .form-control.flatpickr-input:disabled{background-color:var(--t42-input-disabled-bg);opacity:.65;pointer-events:none}html .flatpickr-calendar{width:10rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;background-color:var(--t42-input-bg);box-shadow:none}html .flatpickr-calendar:hover{border-color:var(--primary)}html .flatpickr-calendar.arrowTop::before,html .flatpickr-calendar.arrowTop::after{content:none}html .flatpickr-calendar.hasTime .flatpickr-time{border-top:none}html .flatpickr-calendar input,html .flatpickr-calendar .flatpickr-am-pm{font-size:inherit;font-weight:inherit !important;border:none !important;color:var(--t42-content-color-muted)}html .flatpickr-calendar input:hover,html .flatpickr-calendar input:focus,html .flatpickr-calendar .flatpickr-am-pm:hover,html .flatpickr-calendar .flatpickr-am-pm:focus{background-color:var(--t42-input-bg)}html .flatpickr-calendar input{padding-right:1rem}html .flatpickr-calendar .flatpickr-am-pm{width:25%}html .flatpickr-calendar .numInputWrapper span{width:1rem;border-color:var(--t42-color-opacity-10)}html .flatpickr-calendar .flatpickr-time span.arrowUp:after{border-bottom-color:var(--t42-content-color)}html .flatpickr-calendar .flatpickr-time span.arrowDown:after{border-top-color:var(--t42-content-color)}html .switch .slider{border-color:rgba(0,0,0,0) !important;border-radius:.5rem;background-color:color-mix(in srgb, var(--secondary), transparent 75%)}html .switch .slider::before{border-radius:50%}html .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;transform:translateX(-1rem);overflow:hidden;text-overflow:ellipsis;margin:0 .5rem}html .nav-item.hover .nav-link{border-color:var(--t42-color-opacity-10);color:var(--t42-link-color);background-color:var(--t42-link-hover-bg)}html .nav.nav-tabs{border-bottom:none}html .nav.nav-tabs li{white-space:nowrap;flex-basis:3rem;flex-shrink:0}html .nav.nav-tabs .nav-item{user-select:none;position:relative;display:flex;flex-direction:column}html .nav.nav-tabs .nav-item.is-active .chevron{transform:rotate(180deg)}html .nav.nav-tabs .nav-link{height:auto;border:0;padding-left:14px;flex-grow:1;margin-right:0}html .nav.nav-tabs .nav-link .icon-size-16,html .nav.nav-tabs .nav-link>img,html .nav.nav-tabs .nav-link .title-app,html .nav.nav-tabs .nav-link .title-folder{margin:0 .5rem}html .nav.nav-tabs .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav.flex-column{flex-wrap:nowrap}html .nav.flex-column .nav-link{margin-bottom:0 !important}html .nav .applications-nav{position:relative;overflow:hidden}html .nav .applications-nav i{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .applications-nav:hover .icon-angle-down,html .nav .applications-nav.active .icon-angle-down{opacity:1}html .nav .favorite{white-space:nowrap;flex-basis:1.25rem !important;user-select:none;overflow:hidden;text-align:center}html .nav .favorite i{position:relative;z-index:20;padding:0 .25rem}html .nav .favorite::after{content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px);bottom:11px}html .nav #favorites>li:not(.nav-item){transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;white-space:nowrap}html .nav ul.nav .nav-item .nav-link.active::before,html .nav ul.nav .nav-item .nav-link:hover::before{width:0;height:0}html .nav .action-menu-tool{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:.65;margin-left:auto}html .nav .action-menu-tool .dropdown-menu{left:auto;right:0;z-index:20}html .nav .action-menu{cursor:pointer;overflow:hidden}html .nav .action-menu .dropdown-menu{min-width:auto}html .nav .action-menu a{text-decoration:none}html .nav .action-menu a:hover{text-decoration:none}html .nav .action-menu span:last-of-type{text-overflow:ellipsis;overflow:hidden;transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .action-menu .add-favorite{padding:0;height:2rem;width:2rem}html .nav .action-menu:hover .action-menu-tool{opacity:1}html .nav .layout-menu-tool{transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;display:flex;height:3rem;padding:0;opacity:0;position:absolute;visibility:hidden;width:100%;top:0;z-index:1}html .nav .layout-menu-tool li{display:flex;align-items:center;justify-content:center;flex:1 1 auto;width:100%;height:100%;cursor:pointer}html .nav .show-actions{position:relative;flex-shrink:0}html .nav .show-actions:hover i,html .nav .show-actions:hover .text-animation,html .nav .show-actions:hover .action-menu-tool,html .nav .show-actions:hover span,html .nav .show-actions.hover i,html .nav .show-actions.hover .text-animation,html .nav .show-actions.hover .action-menu-tool,html .nav .show-actions.hover span,html .nav .show-actions.active i,html .nav .show-actions.active .text-animation,html .nav .show-actions.active .action-menu-tool,html .nav .show-actions.active span{opacity:0;visibility:hidden}html .nav .show-actions:hover .layout-menu-tool,html .nav .show-actions.hover .layout-menu-tool,html .nav .show-actions.active .layout-menu-tool{opacity:1;visibility:visible}html .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:runleft 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:runright 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav-item[client-id] .action-menu,html .nav-item[instrument-id] .action-menu{cursor:initial}html .nav-item[client-id] .second-level .nav-link,html .nav-item[instrument-id] .second-level .nav-link{cursor:pointer}html .viewport{position:relative;z-index:15;border:1px solid rgba(255,255,255,.075);width:60px;user-select:none;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .viewport .menu{display:flex;align-items:center;gap:.5em;height:100%}html .viewport .menu .icon-window-minimize{font-size:.5rem}html .viewport .menu .dropdown-menu{background-color:rgba(var(--t42-bg-light), 0.95)}html .viewport .viewport-header{position:relative}html .viewport .viewport-header a{text-decoration:none}html .viewport .viewport-header a:hover{text-decoration:none}html .viewport .viewport-header .menu{position:relative}html .viewport .viewport-header .menu .btn-icon{display:flex;align-items:center}html .viewport .viewport-header .dropdown-menu{top:32px;right:0;left:auto}html .viewport .accordion .active-app{position:absolute;left:57px}html .viewport .viewport-footer{position:relative;margin-top:auto}html .viewport .viewport-footer .nav.nav-tabs .nav-link{text-decoration:none}html .viewport .viewport-footer .nav.nav-tabs .nav-link:hover{text-decoration:none}html .viewport .viewport-footer .circle-index{transition-property:transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;align-items:center;background-color:#2080d3;border-radius:50%;display:flex;font-size:.5rem;height:.875rem;justify-content:center;margin-left:.875rem;margin-top:-0.375rem;position:absolute;transform:scale(1);width:.875rem}html .viewport .viewport-footer .circle-index.empty{transform:scale(0)}html .profile-actions .btn{flex:1 1 auto}html .modal.fade{display:block;width:200px;visibility:hidden}html .modal.fade .about-logo{width:2.5rem;overflow:hidden;margin:0 auto}html .modal.fade .modal-fill-in{justify-content:flex-start}html .modal.fade .modal-fill-in .modal-header .close{position:absolute;right:1rem;top:1rem}html .modal.fade.show{visibility:visible}html .active-app{margin-left:-14px}html [layout-name].nav-item.fav-layout i.icon-star-empty-1{display:none}html [layout-name].nav-item:not(.fav-layout) i.icon-star-full{display:none}html [app-name].nav-item.fav-app i.icon-star-empty-1{display:none}html [app-name].nav-item:not(.fav-app) i.icon-star-full{display:none}html .layout-save-alert-wrapper{position:relative}html .layout-save-alert-wrapper .alert{position:absolute;top:0;right:.5rem;left:.5rem;z-index:1;max-height:0;padding:0 4em 0 1em;border-color:rgba(0,0,0,0);opacity:0;transition:all .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .layout-save-alert-wrapper .alert::before{flex-shrink:0}html .layout-save-alert-wrapper .alert.show{max-height:10em;padding:.5em 4em .5em 1em;border-color:var(--t42-color-opacity-10);opacity:1}html .layout-save-input-group .input-control{padding-right:1.25rem}html .layout-save-input-group .input-group-append{position:relative}html .layout-save-input-group .loader-wrapper{position:absolute;inset:0 25%;z-index:10;display:flex;align-items:center;justify-content:center;transform:translateX(-150%)}html .layout-save-input-group .loader{display:none;width:.5em;height:.5em;border-radius:50%;background-color:var(--primary);animation:pulse 1s linear infinite}html .layout-save-input-group .loader.show{display:block}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}html .select::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%) rotate(0);transition:transform 250ms cubic-bezier(0.4, 0.25, 0.3, 1);pointer-events:none}html .select:has(.select_expand:checked)::after{transform:translateY(-50%) rotate(180deg)}html .select.disabled{pointer-events:none;opacity:.65}html .select.disabled .select_option{background-color:var(--t42-input-disabled-bg)}html .select_expand::after{display:none}html .select_expand:hover::after{opacity:1}html .select_expand:checked::after{transform:translate(-65%, -55%) rotate(-180deg)}html .select_expandLabel{display:block;width:100%;height:2rem;position:absolute;top:0;left:0;cursor:pointer;margin-bottom:0}html .select_close{display:none}html .select_closeLabel{position:fixed;top:0;left:0;display:none;margin-bottom:0}html .select_input{display:none}html .select_label{transition:all 250ms cubic-bezier(0.4, 0.25, 0.3, 1);display:block;height:0;line-height:2rem;overflow:hidden;cursor:pointer;margin-bottom:0;padding-left:.875rem}html .select_label-placeholder{height:2rem;vertical-align:middle;position:absolute;top:0;left:0;background-color:rgba(0,0,0,0)}html .select_expand:checked+.select_closeLabel{display:block}html .select_expand:checked+.select_closeLabel::before,html .select_expand:checked+.select_closeLabel::after{display:none}html .select_expand:checked+.select_closeLabel+.select_options .select_label{height:2rem}html .select_expand:checked+.select_closeLabel+.select_options+.select_expandLabel{display:none}html .select_input:checked+.select_label{height:2rem}html .select_options{list-style:none;padding-left:0}html .vertical.open-left.has-drawer{left:0}html .vertical.open-left .viewport{order:1}html .vertical.open-left .toggle-content{width:300px}html .vertical.open-left .toggle-content.hide{width:0px}html .vertical.open-left .toggle-content>div,html .vertical.open-left .toggle-content>.nav{width:auto}html .vertical.open-left .toggle-content h3{padding-right:0}html .vertical.open-left .toggle-content .close-drawer{transform:rotate(-90deg)}html .vertical .viewport>.flex-column{height:100%}html .vertical .menu{max-width:0;opacity:0;transition-property:max-width, opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header{overflow:hidden}html .vertical .viewport-header .logo-wordmark{display:flex;align-items:center;justify-content:center;max-width:0;min-width:0;height:auto;margin-left:0;opacity:0;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header .menu{max-width:0;opacity:0;pointer-events:none;margin-right:0;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header .dropdown-menu{right:-0.75em}html .vertical .favorites-nav{flex-grow:1;overflow:hidden}html .vertical .expand{width:200px}html .vertical .expand .viewport-header{display:flex;align-items:center;justify-content:space-between;overflow:initial}html .vertical .expand .viewport-header .logo-wordmark{max-width:100%;margin-left:.8em;opacity:1}html .vertical .expand .menu{max-width:100%;opacity:1;pointer-events:all;margin-right:.75em}html .vertical .expand .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:1;transform:translateX(0)}html .vertical .expand .favorite{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:300ms}html .vertical .expand .favorite i{padding:0 .75rem}html .vertical .expand .favorites-nav{overflow-y:auto}html .vertical .expand .nav-link{max-width:200px}html .vertical .expand .accordion .nav .toggle-content{left:200px;display:list-item;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand .accordion .nav .hide{width:0;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand #favorites>li:not(.nav-item){opacity:1}html .horizontal.open-top.has-drawer .dropdown-menu{top:auto !important;bottom:100%}html .horizontal.open-top.has-drawer .layouts-nav .layout-menu-tool{top:calc(-6rem + 2px)}html .horizontal.open-top .viewport{order:1;margin-bottom:0;transition-property:margin-bottom;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .horizontal.open-top .viewport .nav-item .chevron{transform:rotate(-90deg)}html .horizontal.open-top .viewport .nav-item.is-active .chevron{transform:rotate(90deg)}html .horizontal.open-top .toggle-content{border-top:1px solid rgba(255,255,255,.075);border-bottom:0}html .horizontal.open-top .toggle-content.hide{border-top:0}html .horizontal.open-top .toggle-content h3{padding-right:.25rem}html .horizontal.open-top .toggle-content .close-drawer{transform:rotate(0);margin:.25rem 0 0 0}html .horizontal{width:100%;justify-content:flex-start}html .horizontal .viewport{display:flex;width:100%;z-index:20}html .horizontal .viewport>.nav{flex-wrap:nowrap;width:calc(100% - 40px)}html .horizontal .viewport .accordion{overflow-x:auto;overflow-y:hidden}html .horizontal .viewport .logo-wordmark{display:none}html .horizontal .viewport .viewport-header{position:static}html .horizontal .viewport .viewport-header .menu{position:absolute;top:50%;right:0;z-index:1;padding:0 .5em;background-color:var(--t42-body);transform:translateY(-50%)}html .horizontal .viewport .viewport-header .dropdown-menu{top:100%;border:none;background-color:var(--t42-body)}html .horizontal .viewport .app-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .app-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .layout-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .layout-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .nav-item .chevron{transform:rotate(90deg)}html .horizontal .viewport .nav-item.is-active .chevron{transform:rotate(-90deg)}html .horizontal .viewport .nav .applications-nav::before,html .horizontal .viewport .nav .favorite::after,html .horizontal .viewport .nav .viewport-footer:before{left:0;width:1px;height:calc(100% - 16px);top:8px}html .horizontal .viewport .nav .favorite::after{left:.563rem}html .horizontal .viewport .nav .favorite{height:3rem}html .horizontal .viewport .nav .favorite i{padding:.25rem 0;top:1rem}html .horizontal .viewport .nav .show-actions{overflow:hidden}html .horizontal .viewport .nav .show-actions:hover,html .horizontal .viewport .nav .show-actions.hover,html .horizontal .viewport .nav .show-actions.active{overflow:visible}html .horizontal .viewport .nav .show-actions:hover i,html .horizontal .viewport .nav .show-actions:hover .text-animation,html .horizontal .viewport .nav .show-actions:hover .action-menu-tool,html .horizontal .viewport .nav .show-actions:hover span,html .horizontal .viewport .nav .show-actions.hover i,html .horizontal .viewport .nav .show-actions.hover .text-animation,html .horizontal .viewport .nav .show-actions.hover .action-menu-tool,html .horizontal .viewport .nav .show-actions.hover span,html .horizontal .viewport .nav .show-actions.active i,html .horizontal .viewport .nav .show-actions.active .text-animation,html .horizontal .viewport .nav .show-actions.active .action-menu-tool,html .horizontal .viewport .nav .show-actions.active span{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.active .layouts-nav .icon-size-16{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:none;border-right:0}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:none}html .horizontal .viewport .favorites-nav{flex-wrap:nowrap}html .horizontal .viewport .nav-tabs{height:100%}html .horizontal .viewport .nav-tabs li{flex-basis:59px;width:60px}html .horizontal .viewport .nav-tabs li.favorites-nav{flex-grow:1;display:flex;align-items:center}html .horizontal .viewport .nav-tabs li.favorites-nav::-webkit-scrollbar{height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav{flex-wrap:nowrap;width:100%}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar{width:0;height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-button{display:none}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3)}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover{overflow-x:auto;overflow-y:scroll}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .app-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .layout-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item{flex-basis:59px;overflow:hidden}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation,html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation:hover{display:none}html .horizontal .viewport .nav-tabs .nav-item{transition-property:flex-basis;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .viewport .nav-tabs .nav-item.hover,html .horizontal .viewport .nav-tabs .nav-item:hover{flex-basis:11rem}html .horizontal .viewport .nav-tabs .nav-item.hover .nav-link .text-animation,html .horizontal .viewport .nav-tabs .nav-item:hover .nav-link .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active::before{bottom:0}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:0;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active:hover .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .layout-menu-tool{top:100%;flex-direction:column;height:6rem;border:none;background-color:var(--t42-body)}html .horizontal .viewport .nav-tabs .layout-menu-tool li{width:100%;flex:0 1 auto}html .horizontal .viewport .nav-tabs .layout-menu-tool li:hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.active{flex:0 1 auto}html .horizontal .viewport .nav-tabs.expand .menu{display:flex}html .horizontal .viewport .nav-tabs .viewport-footer{margin-top:initial;margin-left:auto;overflow-x:clip}html .horizontal .toggle-content{width:100%;max-height:1000px;border-top:0 solid rgba(0,0,0,0);border-left-width:1px;border-left-style:solid;transition-property:max-height;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .toggle-content>.nav,html .horizontal .toggle-content>div{width:100%}html .horizontal .toggle-content:not(#app-content){height:100%}html .horizontal .toggle-content.hide{width:100%;max-height:0;border-bottom:0 solid rgba(0,0,0,0)}html .horizontal .close-drawer{transform:rotate(180deg);margin-left:0;margin-bottom:.375rem}.app-active{position:relative;background-color:rgba(255,255,255,.025)}.app-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.app-active:hover::before{top:0;bottom:0}.layout-active{position:relative;background-color:rgba(255,255,255,.025)}.layout-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.layout-active:hover::before{top:0;bottom:0}/*# sourceMappingURL=app.css.map */ +@keyframes runleft{0%{opacity:0;transform:translateX(1rem)}100%{opacity:1;transform:translateX(0)}}@keyframes runright{0%{opacity:0;transform:translateX(-1rem)}100%{opacity:1;transform:translateX(0)}}html.dark .viewport{border:1px solid rgba(255,255,255,.075)}html.dark .toggle-content{background-color:var(--t42-body);border-top:1px solid rgba(255,255,255,.075);border-bottom:1px solid rgba(255,255,255,.075);border-right:1px solid rgba(255,255,255,.075);border-left-color:rgba(255,255,255,.075)}html.dark .toggle-content .close-drawer{color:#bbb}html.dark .toggle-content .close-drawer:hover{color:#fff}html.dark .applications-nav::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.dark .viewport-footer::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.dark .favorite::after{background-color:rgba(255,255,255,.075)}html.dark .favorite i{background:#1e1e1e}html.dark .nav .layout-menu-tool{background-color:rgba(var(--t42-bg-light), 0.95)}html.dark .nav .layout-menu-tool li:first-of-type{border-right:1px solid rgba(255,255,255,.05)}html.dark .nav .layout-menu-tool li:hover,html.dark .nav .layout-menu-tool li.hover,html.dark .nav .layout-menu-tool li.active{background-color:rgba(255,255,255,.05);color:#fff}html.dark .nav .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;filter:grayscale(100%) brightness(1)}html.dark .nav .nav-link.active img,html.dark .nav .nav-link:hover img{filter:none}html.dark .select:hover{background-color:#252525}html.dark .select_items{border-color:rgba(255,255,255,.075)}html.dark .select_items:hover{border-color:#2080d3}html.dark .select_option{background-color:#1e1e1e}html.dark .select_expand::after{color:#eee}html.dark .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#252525}html.dark .horizontal .layout-menu-tool{border:1px solid rgba(255,255,255,.075)}html.dark .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(255,255,255,.1)}html.dark .folder-content{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 100%)}html.light .viewport{border:1px solid rgba(219,222,230,.8)}html.light .toggle-content{background-color:#fafafa;border-top:1px solid rgba(219,222,230,.8);border-bottom:1px solid rgba(219,222,230,.8);border-right:1px solid rgba(219,222,230,.8);border-left-color:rgba(219,222,230,.8)}html.light .toggle-content .close-drawer{color:#757575}html.light .toggle-content .close-drawer:hover{color:#0d0d0d}html.light .applications-nav::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.light .viewport-footer::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.light .favorite::after{background-color:rgba(219,222,230,.8)}html.light .favorite i{background:#fafafa}html.light .nav .layout-menu-tool{background:#fff}html.light .nav .layouts-nav div:first-of-type{border-right:1px solid rgba(219,222,230,.8)}html.light .nav .layouts-nav div:hover,html.light .nav .layouts-nav div.hover,html.light .nav .layouts-nav div.active{background-color:rgba(219,222,230,.8);color:#000}html.light .nav .nav-link img{filter:invert(1)}html.light .nav .nav-link.active img,html.light .nav .nav-link:hover img{filter:invert(1) brightness(1.2)}html.light .select:hover{background-color:#fff}html.light .select_items:hover{border-color:#2080d3}html.light .select_option{background-color:#fafafa}html.light .select_option label{color:#757575}html.light .select_expand::after{color:#2c2c2c}html.light .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#f2f2f2;color:#2c2c2c}html.light .horizontal .layout-menu-tool{border:1px solid rgba(219,222,230,.8)}html.light .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(0,0,0,.075)}html.light .folder-content{background:linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.05) 100%)}.nav li.folder{flex-grow:0;overflow:hidden}.nav li.folder .action-menu .icon-size-16{width:1rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down{margin-right:.188rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down::before{display:inline-block;transform:rotate(-90deg)}.nav li.folder .action-menu .icon-folder-open-empty{display:none}.nav li.folder .action-menu:hover span:last-of-type{padding-right:0}.nav li.folder .nav-link.action-menu{min-height:3rem;max-height:3rem}.nav li.folder .folder-content{margin-left:5px}.nav li.folder.folder-open{flex-grow:0;flex-basis:auto}.nav li.folder.folder-open>.action-menu .icon-folder-open-empty{display:block}.nav li.folder.folder-open>.action-menu .icon-folder-empty{display:none}.nav li.folder.folder-open>.action-menu .action-menu-tool .icon-angle-down::before{transform:rotate(0)}html body{background-color:rgba(0,0,0,0)}html .loaded{background-color:var(--t42-body)}html .loaded .app{position:relative;top:0;height:100vh;opacity:1}html .app{height:100%;overflow:hidden;opacity:0}html .app.vertical{display:inline-flex}html .app.horizontal{display:flex;flex-direction:column}html .app.switching-orientation *{transition:none !important}html .app.switching-orientation *::before,html .app.switching-orientation *::after{transition:none !important}html .app *:focus{outline:none}html img,html a{user-select:none;-webkit-user-drag:none;-webkit-user-select:none}html .draggable{-webkit-app-region:drag}html .logo{display:flex;align-items:center;width:100%;height:100%;padding:0 1.25em;overflow:hidden}html .logo-icon,html .logo-wordmark{background-size:contain;background-repeat:no-repeat;height:100%}html .logo-icon img,html .logo-wordmark img{width:100%}html .logo-icon{flex-shrink:0;width:2.33em;height:60%}html .logo-wordmark{height:100%}html .logo-wordmark img{height:100%}html .toggle-content{height:100%;width:300px;overflow:hidden;visibility:visible;display:flex;flex-direction:column}html .toggle-content .input-group{flex-wrap:nowrap}html .toggle-content.hide{width:0;border-right:0 solid rgba(0,0,0,0)}html .toggle-content.hide .action-menu-tool{opacity:0}html .toggle-content>.nav{overflow:auto}html .toggle-content h5{white-space:nowrap;padding:0 .063rem}html .toggle-content .close-drawer{transition-property:color;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;font-size:.688rem;margin-left:.125rem;margin-right:.3125rem;cursor:pointer;transform:rotate(90deg)}html .settings-header{position:sticky;top:0;z-index:15;background-color:var(--t42-body)}html .settings-content{display:flex;flex-direction:column;overflow-y:auto}html .settings-content h5{margin:0}html .settings-content>div{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}html .settings-content>div>div{display:flex;justify-content:space-between;align-items:center}html .settings-system-schedule-restart,html .settings-system-schedule-shutdown{align-items:normal !important;justify-content:flex-start !important;gap:.5rem}html .settings-system-schedule-restart .select,html .settings-system-schedule-shutdown .select{margin-bottom:0}html .settings-system-schedule-restart-time,html .settings-system-schedule-shutdown-time{position:relative}html .settings-system-schedule-restart-time::after,html .settings-system-schedule-shutdown-time::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%);pointer-events:none}html .settings-system-schedule-restart-period,html .settings-system-schedule-shutdown-period{min-width:7.5em}html .settings-system-schedule-restart-interval,html .settings-system-schedule-shutdown-interval{min-width:6.5em}html .settings-system-schedule-restart-interval .select_items,html .settings-system-schedule-shutdown-interval .select_items{top:auto;bottom:0}html .settings-system-schedule-restart-period{z-index:13}html .form-control.flatpickr-input{height:34px;color:var(--t42-content-color-muted);background-color:var(--t42-input-bg);opacity:1;transition:none}html .form-control.flatpickr-input:hover:not(:disabled){border-color:var(--primary)}html .form-control.flatpickr-input:disabled{background-color:var(--t42-input-disabled-bg);opacity:.65;pointer-events:none}html .flatpickr-calendar{width:10rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;background-color:var(--t42-input-bg);box-shadow:none}html .flatpickr-calendar:hover{border-color:var(--primary)}html .flatpickr-calendar.arrowTop::before,html .flatpickr-calendar.arrowTop::after{content:none}html .flatpickr-calendar.hasTime .flatpickr-time{border-top:none}html .flatpickr-calendar input,html .flatpickr-calendar .flatpickr-am-pm{font-size:inherit;font-weight:inherit !important;border:none !important;color:var(--t42-content-color-muted)}html .flatpickr-calendar input:hover,html .flatpickr-calendar input:focus,html .flatpickr-calendar .flatpickr-am-pm:hover,html .flatpickr-calendar .flatpickr-am-pm:focus{background-color:var(--t42-input-bg)}html .flatpickr-calendar input{padding-right:1rem}html .flatpickr-calendar .flatpickr-am-pm{width:25%}html .flatpickr-calendar .numInputWrapper span{width:1rem;border-color:var(--t42-color-opacity-10)}html .flatpickr-calendar .flatpickr-time span.arrowUp:after{border-bottom-color:var(--t42-content-color)}html .flatpickr-calendar .flatpickr-time span.arrowDown:after{border-top-color:var(--t42-content-color)}html .switch .slider{border-color:rgba(0,0,0,0) !important;border-radius:.5rem;background-color:color-mix(in srgb, var(--secondary), transparent 75%)}html .switch .slider::before{border-radius:50%}html .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;transform:translateX(-1rem);overflow:hidden;text-overflow:ellipsis;margin:0 .5rem}html .nav-item.hover .nav-link{border-color:var(--t42-color-opacity-10);color:var(--t42-link-color);background-color:var(--t42-link-hover-bg)}html .nav.nav-tabs{border-bottom:none}html .nav.nav-tabs li{white-space:nowrap;flex-basis:3rem;flex-shrink:0}html .nav.nav-tabs .nav-item{user-select:none;position:relative;display:flex;flex-direction:column}html .nav.nav-tabs .nav-item.is-active .chevron{transform:rotate(180deg)}html .nav.nav-tabs .nav-link{height:auto;border:0;padding-left:14px;flex-grow:1;margin-right:0}html .nav.nav-tabs .nav-link .icon-size-16,html .nav.nav-tabs .nav-link>img,html .nav.nav-tabs .nav-link .title-app,html .nav.nav-tabs .nav-link .title-folder{margin:0 .5rem}html .nav.nav-tabs .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav.flex-column{flex-wrap:nowrap}html .nav.flex-column .nav-link{margin-bottom:0 !important}html .nav .applications-nav{position:relative;overflow:hidden}html .nav .applications-nav i{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .applications-nav:hover .icon-angle-down,html .nav .applications-nav.active .icon-angle-down{opacity:1}html .nav .favorite{white-space:nowrap;flex-basis:1.25rem !important;user-select:none;overflow:hidden;text-align:center}html .nav .favorite i{position:relative;z-index:20;padding:0 .25rem}html .nav .favorite::after{content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px);bottom:11px}html .nav #favorites>li:not(.nav-item){transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;white-space:nowrap}html .nav ul.nav .nav-item .nav-link.active::before,html .nav ul.nav .nav-item .nav-link:hover::before{width:0;height:0}html .nav .action-menu-tool{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:.65;margin-left:auto}html .nav .action-menu-tool .dropdown-menu{left:auto;right:0;z-index:20}html .nav .action-menu{cursor:pointer;overflow:hidden}html .nav .action-menu .dropdown-menu{min-width:auto}html .nav .action-menu a{text-decoration:none}html .nav .action-menu a:hover{text-decoration:none}html .nav .action-menu span:last-of-type{text-overflow:ellipsis;overflow:hidden;transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .action-menu .add-favorite{padding:0;height:2rem;width:2rem}html .nav .action-menu:hover .action-menu-tool{opacity:1}html .nav .layout-menu-tool{transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;display:flex;height:3rem;padding:0;opacity:0;position:absolute;visibility:hidden;width:100%;top:0;z-index:1}html .nav .layout-menu-tool li{display:flex;align-items:center;justify-content:center;flex:1 1 auto;width:100%;height:100%;cursor:pointer}html .nav .show-actions{position:relative;flex-shrink:0}html .nav .show-actions:hover i,html .nav .show-actions:hover .text-animation,html .nav .show-actions:hover .action-menu-tool,html .nav .show-actions:hover span,html .nav .show-actions.hover i,html .nav .show-actions.hover .text-animation,html .nav .show-actions.hover .action-menu-tool,html .nav .show-actions.hover span,html .nav .show-actions.active i,html .nav .show-actions.active .text-animation,html .nav .show-actions.active .action-menu-tool,html .nav .show-actions.active span{opacity:0;visibility:hidden}html .nav .show-actions:hover .layout-menu-tool,html .nav .show-actions.hover .layout-menu-tool,html .nav .show-actions.active .layout-menu-tool{opacity:1;visibility:visible}html .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:runleft 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:runright 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav-item[client-id] .action-menu,html .nav-item[instrument-id] .action-menu{cursor:initial}html .nav-item[client-id] .second-level .nav-link,html .nav-item[instrument-id] .second-level .nav-link{cursor:pointer}html .viewport{position:relative;z-index:15;border:1px solid rgba(255,255,255,.075);width:60px;user-select:none;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .viewport .menu{display:flex;align-items:center;gap:.5em;height:100%}html .viewport .menu .icon-window-minimize{font-size:.5rem}html .viewport .menu .dropdown-menu{background-color:rgba(var(--t42-bg-light), 0.95)}html .viewport .viewport-header{position:relative}html .viewport .viewport-header a{text-decoration:none}html .viewport .viewport-header a:hover{text-decoration:none}html .viewport .viewport-header .menu{position:relative}html .viewport .viewport-header .menu .btn-icon{display:flex;align-items:center}html .viewport .viewport-header .dropdown-menu{top:100%;right:0;left:auto}html .viewport .accordion .active-app{position:absolute;left:57px}html .viewport .viewport-footer{position:relative;margin-top:auto}html .viewport .viewport-footer .nav.nav-tabs .nav-link{text-decoration:none}html .viewport .viewport-footer .nav.nav-tabs .nav-link:hover{text-decoration:none}html .viewport .viewport-footer .circle-index{transition-property:transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;align-items:center;background-color:#2080d3;border-radius:50%;display:flex;font-size:.5rem;height:.875rem;justify-content:center;margin-left:.875rem;margin-top:-0.375rem;position:absolute;transform:scale(1);width:.875rem}html .viewport .viewport-footer .circle-index.empty{transform:scale(0)}html .profile-actions .btn{flex:1 1 auto}html .modal.fade{display:block;width:200px;visibility:hidden}html .modal.fade .about-logo{width:2.5rem;overflow:hidden;margin:0 auto}html .modal.fade .modal-fill-in{justify-content:flex-start}html .modal.fade .modal-fill-in .modal-header .close{position:absolute;right:1rem;top:1rem}html .modal.fade.show{visibility:visible}html .active-app{margin-left:-14px}html [layout-name].nav-item.fav-layout i.icon-star-empty-1{display:none}html [layout-name].nav-item:not(.fav-layout) i.icon-star-full{display:none}html [app-name].nav-item.fav-app i.icon-star-empty-1{display:none}html [app-name].nav-item:not(.fav-app) i.icon-star-full{display:none}html .layout-save-alert-wrapper{position:relative}html .layout-save-alert-wrapper .alert{position:absolute;top:0;right:.5rem;left:.5rem;z-index:1;max-height:0;padding:0 4em 0 1em;border-color:rgba(0,0,0,0);opacity:0;transition:all .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .layout-save-alert-wrapper .alert::before{flex-shrink:0}html .layout-save-alert-wrapper .alert.show{max-height:10em;padding:.5em 4em .5em 1em;border-color:var(--t42-color-opacity-10);opacity:1}html .layout-save-input-group .input-control{padding-right:1.25rem}html .layout-save-input-group .input-group-append{position:relative}html .layout-save-input-group .loader-wrapper{position:absolute;inset:0 25%;z-index:10;display:flex;align-items:center;justify-content:center;transform:translateX(-150%)}html .layout-save-input-group .loader{display:none;width:.5em;height:.5em;border-radius:50%;background-color:var(--primary);animation:pulse 1s linear infinite}html .layout-save-input-group .loader.show{display:block}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}html .select::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%) rotate(0);transition:transform 250ms cubic-bezier(0.4, 0.25, 0.3, 1);pointer-events:none}html .select:has(.select_expand:checked)::after{transform:translateY(-50%) rotate(180deg)}html .select.disabled{pointer-events:none;opacity:.65}html .select.disabled .select_option{background-color:var(--t42-input-disabled-bg)}html .select_expand::after{display:none}html .select_expand:hover::after{opacity:1}html .select_expand:checked::after{transform:translate(-65%, -55%) rotate(-180deg)}html .select_expandLabel{display:block;width:100%;height:2rem;position:absolute;top:0;left:0;cursor:pointer;margin-bottom:0}html .select_close{display:none}html .select_closeLabel{position:fixed;top:0;left:0;display:none;margin-bottom:0}html .select_input{display:none}html .select_label{transition:all 250ms cubic-bezier(0.4, 0.25, 0.3, 1);display:block;height:0;line-height:2rem;overflow:hidden;cursor:pointer;margin-bottom:0;padding-left:.875rem}html .select_label-placeholder{height:2rem;vertical-align:middle;position:absolute;top:0;left:0;background-color:rgba(0,0,0,0)}html .select_expand:checked+.select_closeLabel{display:block}html .select_expand:checked+.select_closeLabel::before,html .select_expand:checked+.select_closeLabel::after{display:none}html .select_expand:checked+.select_closeLabel+.select_options .select_label{height:2rem}html .select_expand:checked+.select_closeLabel+.select_options+.select_expandLabel{display:none}html .select_input:checked+.select_label{height:2rem}html .select_options{list-style:none;padding-left:0}html .vertical.open-left.has-drawer{left:0}html .vertical.open-left .viewport{order:1}html .vertical.open-left .toggle-content{width:300px}html .vertical.open-left .toggle-content.hide{width:0px}html .vertical.open-left .toggle-content>div,html .vertical.open-left .toggle-content>.nav{width:auto}html .vertical.open-left .toggle-content h3{padding-right:0}html .vertical.open-left .toggle-content .close-drawer{transform:rotate(-90deg)}html .vertical .viewport>.flex-column{height:100%}html .vertical .menu{max-width:0;opacity:0;transition-property:max-width, opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header{overflow:hidden}html .vertical .viewport-header .logo-wordmark{display:flex;align-items:center;justify-content:center;max-width:0;min-width:0;height:auto;margin-left:0;opacity:0;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header .menu{pointer-events:none;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .favorites-nav{flex-grow:1;overflow:hidden}html .vertical .expand{width:200px}html .vertical .expand .viewport-header{display:flex;align-items:center;justify-content:space-between;overflow:initial}html .vertical .expand .viewport-header .logo-wordmark{max-width:100%;margin-left:.8em;opacity:1}html .vertical .expand .menu{max-width:100%;padding-right:.75em;opacity:1;pointer-events:all}html .vertical .expand .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:1;transform:translateX(0)}html .vertical .expand .favorite{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:300ms}html .vertical .expand .favorite i{padding:0 .75rem}html .vertical .expand .favorites-nav{overflow-y:auto}html .vertical .expand .nav-link{max-width:200px}html .vertical .expand .accordion .nav .toggle-content{left:200px;display:list-item;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand .accordion .nav .hide{width:0;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand #favorites>li:not(.nav-item){opacity:1}html .horizontal.open-top.has-drawer .dropdown-menu{top:auto !important;bottom:100%}html .horizontal.open-top.has-drawer .layouts-nav .layout-menu-tool{top:calc(-6rem + 2px)}html .horizontal.open-top .viewport{order:1;margin-bottom:0;transition-property:margin-bottom;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .horizontal.open-top .viewport .nav-item .chevron{transform:rotate(-90deg)}html .horizontal.open-top .viewport .nav-item.is-active .chevron{transform:rotate(90deg)}html .horizontal.open-top .toggle-content{border-top:1px solid rgba(255,255,255,.075);border-bottom:0}html .horizontal.open-top .toggle-content.hide{border-top:0}html .horizontal.open-top .toggle-content h3{padding-right:.25rem}html .horizontal.open-top .toggle-content .close-drawer{transform:rotate(0);margin:.25rem 0 0 0}html .horizontal{width:100%;justify-content:flex-start}html .horizontal .viewport{display:flex;width:100%;z-index:20}html .horizontal .viewport>.nav{flex-wrap:nowrap;width:calc(100% - 40px)}html .horizontal .viewport .accordion{overflow-x:auto;overflow-y:hidden}html .horizontal .viewport .logo-wordmark{display:none}html .horizontal .viewport .viewport-header{position:static}html .horizontal .viewport .viewport-header .menu{position:absolute;top:50%;right:0;z-index:1;padding:0 .5em;background-color:var(--t42-body);transform:translateY(-50%)}html .horizontal .viewport .viewport-header .dropdown-menu{border:none;background-color:var(--t42-body)}html .horizontal .viewport .app-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .app-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .layout-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .layout-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .nav-item .chevron{transform:rotate(90deg)}html .horizontal .viewport .nav-item.is-active .chevron{transform:rotate(-90deg)}html .horizontal .viewport .nav .applications-nav::before,html .horizontal .viewport .nav .favorite::after,html .horizontal .viewport .nav .viewport-footer:before{left:0;width:1px;height:calc(100% - 16px);top:8px}html .horizontal .viewport .nav .favorite::after{left:.563rem}html .horizontal .viewport .nav .favorite{height:3rem}html .horizontal .viewport .nav .favorite i{padding:.25rem 0;top:1rem}html .horizontal .viewport .nav .show-actions{overflow:hidden}html .horizontal .viewport .nav .show-actions:hover,html .horizontal .viewport .nav .show-actions.hover,html .horizontal .viewport .nav .show-actions.active{overflow:visible}html .horizontal .viewport .nav .show-actions:hover i,html .horizontal .viewport .nav .show-actions:hover .text-animation,html .horizontal .viewport .nav .show-actions:hover .action-menu-tool,html .horizontal .viewport .nav .show-actions:hover span,html .horizontal .viewport .nav .show-actions.hover i,html .horizontal .viewport .nav .show-actions.hover .text-animation,html .horizontal .viewport .nav .show-actions.hover .action-menu-tool,html .horizontal .viewport .nav .show-actions.hover span,html .horizontal .viewport .nav .show-actions.active i,html .horizontal .viewport .nav .show-actions.active .text-animation,html .horizontal .viewport .nav .show-actions.active .action-menu-tool,html .horizontal .viewport .nav .show-actions.active span{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.active .layouts-nav .icon-size-16{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:none;border-right:0}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:none}html .horizontal .viewport .favorites-nav{flex-wrap:nowrap}html .horizontal .viewport .nav-tabs{height:100%}html .horizontal .viewport .nav-tabs li{flex-basis:59px;width:60px}html .horizontal .viewport .nav-tabs li.favorites-nav{flex-grow:1;display:flex;align-items:center}html .horizontal .viewport .nav-tabs li.favorites-nav::-webkit-scrollbar{height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav{flex-wrap:nowrap;width:100%}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar{width:0;height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-button{display:none}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3)}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover{overflow-x:auto;overflow-y:scroll}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .app-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .layout-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item{flex-basis:59px;overflow:hidden}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation,html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation:hover{display:none}html .horizontal .viewport .nav-tabs .nav-item{transition-property:flex-basis;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .viewport .nav-tabs .nav-item.hover,html .horizontal .viewport .nav-tabs .nav-item:hover{flex-basis:11rem}html .horizontal .viewport .nav-tabs .nav-item.hover .nav-link .text-animation,html .horizontal .viewport .nav-tabs .nav-item:hover .nav-link .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active::before{bottom:0}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:0;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active:hover .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .layout-menu-tool{top:100%;flex-direction:column;height:6rem;border:none;background-color:var(--t42-body)}html .horizontal .viewport .nav-tabs .layout-menu-tool li{width:100%;flex:0 1 auto}html .horizontal .viewport .nav-tabs .layout-menu-tool li:hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.active{flex:0 1 auto}html .horizontal .viewport .nav-tabs.expand .menu{display:flex}html .horizontal .viewport .nav-tabs .viewport-footer{margin-top:initial;margin-left:auto;overflow-x:clip}html .horizontal .toggle-content{width:100%;max-height:1000px;border-top:0 solid rgba(0,0,0,0);border-left-width:1px;border-left-style:solid;transition-property:max-height;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .toggle-content>.nav,html .horizontal .toggle-content>div{width:100%}html .horizontal .toggle-content:not(#app-content){height:100%}html .horizontal .toggle-content.hide{width:100%;max-height:0;border-bottom:0 solid rgba(0,0,0,0)}html .horizontal .close-drawer{transform:rotate(180deg);margin-left:0;margin-bottom:.375rem}.app-active{position:relative;background-color:rgba(255,255,255,.025)}.app-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.app-active:hover::before{top:0;bottom:0}.layout-active{position:relative;background-color:rgba(255,255,255,.025)}.layout-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.layout-active:hover::before{top:0;bottom:0}/*# sourceMappingURL=app.css.map */ diff --git a/scss/app.css.map b/scss/app.css.map index b1d6629..a9e391a 100644 --- a/scss/app.css.map +++ b/scss/app.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["mixin.scss","color.scss","folders.scss","app.scss","select.scss","left.scss","vertical.scss","top.scss","horizontal.scss"],"names":[],"mappings":"CAgFE,mBACE,GACE,UACA,2BAGF,KACE,UACA,yBAIJ,oBACE,GACE,UACA,4BAGF,KACE,UACA,yBClGJ,oBACE,wCAGF,0BACE,iCACA,4CACA,+CACA,8CACA,yCAEA,wCACE,WAEA,8CACE,WDPJ,mCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BAhBJ,kCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,wCACE,+BCKJ,2BACE,wCAGF,sBACE,mBAKF,iCACE,iDAGE,kDACE,6CAGF,+HAGE,uCACA,WAMJ,6BDpBF,2BACA,0BACA,gEACA,qBCmBI,qCAKA,uEACE,YAON,wBACE,yBAGF,wBACE,oCAEA,8BACE,qBAIJ,yBACE,yBAIA,gCACE,WAIA,wFACE,yBAON,wCACE,wCAEA,uDACE,6CAMN,0BACE,6FASF,qBACE,sCAGF,2BACE,yBACA,0CACA,6CACA,4CACA,uCAEA,yCACE,cAEA,+CACE,cDjIJ,oCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,0CACE,+BAhBJ,mCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BC+HJ,4BACE,sCAGF,uBACE,mBAKF,kCACE,gBAIA,+CACE,4CAGF,sHAGE,sCACA,WAKF,8BACE,iBAKA,yEACE,iCAON,yBACE,sBAIA,+BACE,qBAIJ,0BACE,yBAEA,gCACE,cAKF,iCACE,cAIA,yFACE,yBACA,cAON,yCACE,sCAEA,wDACE,yCAMN,2BACE,iFC/OJ,eACE,YACA,gBAGE,0CACE,WAGF,+DACE,qBAEA,uEACE,qBACA,yBAIJ,oDACE,aAIA,oDACE,gBAKN,qCACE,gBACA,gBAGF,+BACE,gBAGF,2BACE,YACA,gBAGE,gEACE,cAGF,2DACE,aAIA,mFACE,oBChDR,UACE,+BAGF,aACE,iCAEA,kBACE,kBACA,MACA,UAIJ,UACE,YACA,gBACA,UAEA,mBACE,oBAGF,qBACE,aACA,sBAGF,kCACE,2BAEA,mFAEE,2BAIJ,kBACE,aAIJ,gBAEE,iBACA,uBACA,yBAGF,gBACE,wBAGF,WACE,aACA,mBACA,WACA,YACA,iBACA,gBAEA,oCAEE,wBACA,4BACA,YAEA,4CACE,WAIJ,gBACE,cACA,aACA,WAGF,oBACE,YAEA,wBACE,YAKN,qBACE,YACA,YACA,gBACA,mBACA,aACA,sBAGA,kCACE,iBAGF,0BACE,QACA,mCAEA,4CACE,UAIJ,0BACE,cAGF,wBACE,mBACA,kBAGF,mCHpFA,0BACA,0BACA,gEACA,qBGmFE,kBACA,oBACA,sBACA,eACA,wBAIJ,sBACE,gBACA,MACA,WACA,iCAGF,uBACE,aACA,sBACA,gBAEA,0BACE,SAGF,2BACE,aACA,sBACA,UACA,cAEA,+BACE,aACA,8BACA,mBAKN,+EAEE,8BACA,sCACA,UAEA,+FACE,gBAGF,yFACE,kBAEA,uGACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,2BACA,oBAIJ,6FACE,gBAGF,iGACE,gBAGE,6HACE,SACA,SAMR,8CACE,WAGF,mCACE,YACA,qCACA,qCACA,UACA,gBAEA,wDACE,4BAGF,4CACE,8CACA,YACA,oBAIJ,yBACE,YACA,6CACA,gBACA,qCACA,gBAEA,+BACE,4BAIA,mFAEE,aAIJ,iDACE,gBAGF,yEAEE,kBACA,+BACA,uBACA,qCAEA,0KAEE,qCAIJ,+BACE,mBAGF,0CACE,UAGF,+CACE,WACA,yCAIA,4DACE,6CAGF,8DACE,0CAMJ,qBACE,sCACA,oBACA,uEAEA,6BACE,kBAKN,qBHlQE,uCACA,0BACA,gEACA,qBAME,UAMA,4BGqPF,gBACA,uBACA,eAMI,+BACE,yCACA,4BACA,0CAKN,mBACE,mBAEA,sBACE,mBACA,gBACA,cAGF,6BACE,iBACA,kBACA,aACA,sBAGE,gDACE,yBAKN,6BACE,YACA,SACA,kBACA,YACA,eAEA,+JAIE,eAGF,iCHxTJ,2BACA,0BACA,gEACA,qBG2TA,sBACE,iBAEA,gCACE,2BAIJ,4BACE,kBACA,gBAEA,8BH1UF,uCACA,0BACA,gEACA,qBG6UI,uGACE,UAKN,oBACE,mBACA,8BACA,iBACA,gBACA,kBAEA,sBACE,kBACA,WACA,iBAGF,2BACE,WACA,WACA,SACA,kBACA,wBACA,YAKF,uCH9WF,4BACA,0BACA,gEACA,qBG6WI,UACA,mBAIJ,uGAEE,QACA,SAGF,4BH3XA,4BACA,0BACA,gEACA,qBG0XE,YACA,iBAEA,2CACE,UACA,QACA,WAIJ,uBACE,eACA,gBAEA,sCACE,eAGF,yBHpbF,qBAEA,+BACE,qBGqbA,yCACE,uBACA,gBHrZJ,4BACA,0BACA,gEACA,qBGsZE,qCACE,UACA,YACA,WAIA,+CACE,UAKN,4BHtaA,0BACA,0BACA,gEACA,qBGqaE,aACA,YACA,UACA,UACA,kBACA,kBACA,WACA,MACA,UAEA,+BACE,aACA,mBACA,uBACA,cACA,WACA,YACA,eAIJ,wBACE,kBACA,cAKE,ueAIE,UACA,kBAGF,iJACE,UACA,mBAGE,oMACE,6DAGF,iMACE,8DAUV,kFACE,eAGF,wGACE,eAIJ,eACE,kBACA,WACA,wCACA,WACA,iBH9eA,0BACA,0BACA,gEACA,qBG8eA,qBACE,aACA,mBACA,SACA,YAEA,2CACE,gBAGF,oCACE,iDAIJ,gCACE,kBAEA,kCHxiBF,qBAEA,wCACE,qBGyiBA,sCACE,kBAEA,gDACE,aACA,mBAIJ,+CACE,SACA,QACA,UAKF,sCACE,kBACA,UAIJ,gCACE,kBACA,gBAGE,wDHxkBJ,qBAEA,8DACE,qBG0kBA,8CHxiBF,8BACA,0BACA,gEACA,qBGuiBI,mBACA,yBACA,kBACA,aACA,gBACA,eACA,uBACA,oBACA,qBACA,kBACA,mBACA,cAEA,oDACE,mBAMR,2BACE,cAGF,iBACE,cACA,YACA,kBAEA,6BACE,aACA,gBACA,cAGF,gCACE,2BAEA,qDACE,kBACA,WACA,SAIJ,sBACE,mBAIJ,iBACE,kBAKE,2DACE,aAKF,8DACE,aAOF,qDACE,aAKF,wDACE,aAKN,gCACE,kBAEA,uCACE,kBACA,MACA,YACA,WACA,UACA,aACA,oBACA,2BACA,UACA,wDAEA,+CACE,cAGF,4CACE,gBACA,0BACA,yCACA,UAMJ,6CACE,sBAGF,kDACE,kBAGF,8CACE,kBACA,YACA,WACA,aACA,mBACA,uBACA,4BAGF,sCACE,aACA,WACA,YACA,kBACA,gCACA,mCAEA,2CACE,cAKN,iBACE,GACE,UACA,mBAEF,IACE,UACA,qBAEF,KACE,UACA,oBC1uBJ,oBACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,qCACA,2DACA,oBAIA,gDACE,0CAIJ,sBACE,oBACA,YAEA,qCACE,8CAKF,2BACE,aAGF,iCACE,UAGF,mCACE,gDAIJ,yBACE,cACA,WACA,YACA,kBACA,MACA,OACA,eACA,gBAGF,mBACE,aAGF,wBACE,eACA,MACA,OACA,aACA,gBAGF,mBACE,aAGF,mBACE,qDACA,cACA,SACA,iBACA,gBACA,eACA,gBACA,qBAEA,+BACE,YACA,sBACA,kBACA,MACA,OACA,+BAKF,+CACE,cAEA,6GAEE,aAIA,6EACE,YAGF,mFACE,aAMR,yCACE,YAGF,qBACE,gBACA,eClHA,oCACE,OAGF,mCACE,QAGF,yCACE,YAEA,8CACE,UAGF,2FAEE,WAGF,4CACE,gBAGF,uDACE,yBCvBJ,sCACE,YAIJ,qBACE,YACA,UN4BA,uCACA,0BACA,gEACA,qBM3BF,gCACE,gBAEA,+CACE,aACA,mBACA,uBACA,YACA,YACA,YACA,cACA,UNaF,wBACA,0BACA,gEACA,qBMZA,sCACE,YACA,UACA,oBACA,eNKF,wBACA,0BACA,gEACA,qBMJA,+CACE,cAIJ,8BACE,YACA,gBAGF,uBACE,YAEA,wCACE,aACA,mBACA,8BACA,iBAEA,uDACE,eACA,iBACA,UAIJ,6BACE,eACA,UACA,mBACA,mBAGF,uCNhCA,uCACA,0BACA,gEACA,qBAQE,UAQA,wBMiBF,iCNpCA,4BACA,0BACA,gEACA,uBMmCE,mCACE,iBAIJ,sCACE,gBAGF,iCACE,gBAKE,uDACE,WACA,kBNvDN,0BACA,0BACA,gEACA,sBMwDI,6CACE,QN5DN,0BACA,0BACA,gEACA,sBMgEE,oDACE,UCxGF,oDACE,oBACA,YAIA,oEACE,sBAKN,oCACE,QACA,gBPsBF,kCACA,0BACA,gEACA,sBOrBI,uDACE,yBAIA,iEACE,wBAMR,0CACE,4CACA,gBAEA,+CACE,aAGF,6CACE,qBAGF,wDACE,oBACA,oBC7CR,iBACE,WACA,2BAEA,2BACE,aACA,WACA,WAEA,gCACE,iBACA,wBAGF,sCACE,gBACA,kBAGF,0CACE,aAGF,4CACE,gBAEA,kDACE,kBACA,QACA,QACA,UACA,eACA,iCACA,2BAGF,2DACE,SACA,YACA,iCAKF,+CRPF,uCACA,0BACA,gEACA,qBQMI,WACA,WACA,UACA,UACA,SACA,SAIA,qDACE,UACA,WACA,OAMJ,kDR3BF,uCACA,0BACA,gEACA,qBQ0BI,WACA,WACA,UACA,UACA,SACA,SAIA,wDACE,UACA,WACA,OAOF,8CACE,wBAIA,wDACE,yBAKN,mKRlEF,OACA,UACA,yBACA,QQqEE,iDACE,aAGF,0CACE,YAEA,4CACE,iBACA,SAIJ,8CACE,gBAEA,6JAGE,iBAEA,+uBAIE,UACA,mBAIA,8OACE,UACA,mBAKF,sQACE,eACA,eAGF,mQACE,eAOV,0CACE,iBAGF,qCACE,YAEA,wCACE,gBACA,WAEA,sDACE,YACA,aACA,mBAEA,yEACE,WAGF,2DACE,iBACA,WAEA,8EACE,QACA,WAGF,qFACE,aAGF,oFACE,sCAGF,iEACE,gBACA,kBAEA,qFACE,WAGF,wFACE,WAIJ,qEACE,gBACA,gBAEA,gLAEE,aAOV,+CRlLF,+BACA,0BACA,gEACA,qBQkLI,0GAEE,iBAGE,8JR1LR,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ+KM,wEACE,SAGF,gFRtMR,uCACA,0BACA,gEACA,uBAME,UAUA,wBQwLQ,sFR3MV,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQgMA,uDACE,SACA,sBACA,YACA,YACA,iCAEA,0DACE,WACA,cAEA,iMAGE,cAMJ,kDACE,aAIJ,sDACE,mBACA,iBACA,gBAKN,iCACE,WACA,kBACA,iCACA,sBACA,wBRzPA,+BACA,0BACA,gEACA,qBQyPA,2EAEE,WAGF,mDACE,YAGF,sCACE,WACA,aACA,oCAIJ,+BACE,yBACA,cACA,sBL8bJ,YACE,kBACA,wCAEA,oBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,0BACE,MACA,SAKN,eACE,kBACA,wCAEA,uBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,6BACE,MACA","file":"app.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["mixin.scss","color.scss","folders.scss","app.scss","select.scss","left.scss","vertical.scss","top.scss","horizontal.scss"],"names":[],"mappings":"CAgFE,mBACE,GACE,UACA,2BAGF,KACE,UACA,yBAIJ,oBACE,GACE,UACA,4BAGF,KACE,UACA,yBClGJ,oBACE,wCAGF,0BACE,iCACA,4CACA,+CACA,8CACA,yCAEA,wCACE,WAEA,8CACE,WDPJ,mCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BAhBJ,kCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,wCACE,+BCKJ,2BACE,wCAGF,sBACE,mBAKF,iCACE,iDAGE,kDACE,6CAGF,+HAGE,uCACA,WAMJ,6BDpBF,2BACA,0BACA,gEACA,qBCmBI,qCAKA,uEACE,YAON,wBACE,yBAGF,wBACE,oCAEA,8BACE,qBAIJ,yBACE,yBAIA,gCACE,WAIA,wFACE,yBAON,wCACE,wCAEA,uDACE,6CAMN,0BACE,6FASF,qBACE,sCAGF,2BACE,yBACA,0CACA,6CACA,4CACA,uCAEA,yCACE,cAEA,+CACE,cDjIJ,oCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,0CACE,+BAhBJ,mCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BC+HJ,4BACE,sCAGF,uBACE,mBAKF,kCACE,gBAIA,+CACE,4CAGF,sHAGE,sCACA,WAKF,8BACE,iBAKA,yEACE,iCAON,yBACE,sBAIA,+BACE,qBAIJ,0BACE,yBAEA,gCACE,cAKF,iCACE,cAIA,yFACE,yBACA,cAON,yCACE,sCAEA,wDACE,yCAMN,2BACE,iFC/OJ,eACE,YACA,gBAGE,0CACE,WAGF,+DACE,qBAEA,uEACE,qBACA,yBAIJ,oDACE,aAIA,oDACE,gBAKN,qCACE,gBACA,gBAGF,+BACE,gBAGF,2BACE,YACA,gBAGE,gEACE,cAGF,2DACE,aAIA,mFACE,oBChDR,UACE,+BAGF,aACE,iCAEA,kBACE,kBACA,MACA,aACA,UAIJ,UACE,YACA,gBACA,UAEA,mBACE,oBAGF,qBACE,aACA,sBAGF,kCACE,2BAEA,mFAEE,2BAIJ,kBACE,aAIJ,gBAEE,iBACA,uBACA,yBAGF,gBACE,wBAGF,WACE,aACA,mBACA,WACA,YACA,iBACA,gBAEA,oCAEE,wBACA,4BACA,YAEA,4CACE,WAIJ,gBACE,cACA,aACA,WAGF,oBACE,YAEA,wBACE,YAKN,qBACE,YACA,YACA,gBACA,mBACA,aACA,sBAGA,kCACE,iBAGF,0BACE,QACA,mCAEA,4CACE,UAIJ,0BACE,cAGF,wBACE,mBACA,kBAGF,mCHrFA,0BACA,0BACA,gEACA,qBGoFE,kBACA,oBACA,sBACA,eACA,wBAIJ,sBACE,gBACA,MACA,WACA,iCAGF,uBACE,aACA,sBACA,gBAEA,0BACE,SAGF,2BACE,aACA,sBACA,UACA,cAEA,+BACE,aACA,8BACA,mBAKN,+EAEE,8BACA,sCACA,UAEA,+FACE,gBAGF,yFACE,kBAEA,uGACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,2BACA,oBAIJ,6FACE,gBAGF,iGACE,gBAGE,6HACE,SACA,SAMR,8CACE,WAGF,mCACE,YACA,qCACA,qCACA,UACA,gBAEA,wDACE,4BAGF,4CACE,8CACA,YACA,oBAIJ,yBACE,YACA,6CACA,gBACA,qCACA,gBAEA,+BACE,4BAIA,mFAEE,aAIJ,iDACE,gBAGF,yEAEE,kBACA,+BACA,uBACA,qCAEA,0KAEE,qCAIJ,+BACE,mBAGF,0CACE,UAGF,+CACE,WACA,yCAIA,4DACE,6CAGF,8DACE,0CAMJ,qBACE,sCACA,oBACA,uEAEA,6BACE,kBAKN,qBHnQE,uCACA,0BACA,gEACA,qBAME,UAMA,4BGsPF,gBACA,uBACA,eAMI,+BACE,yCACA,4BACA,0CAKN,mBACE,mBAEA,sBACE,mBACA,gBACA,cAGF,6BACE,iBACA,kBACA,aACA,sBAGE,gDACE,yBAKN,6BACE,YACA,SACA,kBACA,YACA,eAEA,+JAIE,eAGF,iCHzTJ,2BACA,0BACA,gEACA,qBG4TA,sBACE,iBAEA,gCACE,2BAIJ,4BACE,kBACA,gBAEA,8BH3UF,uCACA,0BACA,gEACA,qBG8UI,uGACE,UAKN,oBACE,mBACA,8BACA,iBACA,gBACA,kBAEA,sBACE,kBACA,WACA,iBAGF,2BACE,WACA,WACA,SACA,kBACA,wBACA,YAKF,uCH/WF,4BACA,0BACA,gEACA,qBG8WI,UACA,mBAIJ,uGAEE,QACA,SAGF,4BH5XA,4BACA,0BACA,gEACA,qBG2XE,YACA,iBAEA,2CACE,UACA,QACA,WAIJ,uBACE,eACA,gBAEA,sCACE,eAGF,yBHrbF,qBAEA,+BACE,qBGsbA,yCACE,uBACA,gBHtZJ,4BACA,0BACA,gEACA,qBGuZE,qCACE,UACA,YACA,WAIA,+CACE,UAKN,4BHvaA,0BACA,0BACA,gEACA,qBGsaE,aACA,YACA,UACA,UACA,kBACA,kBACA,WACA,MACA,UAEA,+BACE,aACA,mBACA,uBACA,cACA,WACA,YACA,eAIJ,wBACE,kBACA,cAKE,ueAIE,UACA,kBAGF,iJACE,UACA,mBAGE,oMACE,6DAGF,iMACE,8DAUV,kFACE,eAGF,wGACE,eAIJ,eACE,kBACA,WACA,wCACA,WACA,iBH/eA,0BACA,0BACA,gEACA,qBG+eA,qBACE,aACA,mBACA,SACA,YAEA,2CACE,gBAGF,oCACE,iDAIJ,gCACE,kBAEA,kCHziBF,qBAEA,wCACE,qBG0iBA,sCACE,kBAEA,gDACE,aACA,mBAIJ,+CACE,SACA,QACA,UAKF,sCACE,kBACA,UAIJ,gCACE,kBACA,gBAGE,wDHzkBJ,qBAEA,8DACE,qBG2kBA,8CHziBF,8BACA,0BACA,gEACA,qBGwiBI,mBACA,yBACA,kBACA,aACA,gBACA,eACA,uBACA,oBACA,qBACA,kBACA,mBACA,cAEA,oDACE,mBAMR,2BACE,cAGF,iBACE,cACA,YACA,kBAEA,6BACE,aACA,gBACA,cAGF,gCACE,2BAEA,qDACE,kBACA,WACA,SAIJ,sBACE,mBAIJ,iBACE,kBAKE,2DACE,aAKF,8DACE,aAOF,qDACE,aAKF,wDACE,aAKN,gCACE,kBAEA,uCACE,kBACA,MACA,YACA,WACA,UACA,aACA,oBACA,2BACA,UACA,wDAEA,+CACE,cAGF,4CACE,gBACA,0BACA,yCACA,UAMJ,6CACE,sBAGF,kDACE,kBAGF,8CACE,kBACA,YACA,WACA,aACA,mBACA,uBACA,4BAGF,sCACE,aACA,WACA,YACA,kBACA,gCACA,mCAEA,2CACE,cAKN,iBACE,GACE,UACA,mBAEF,IACE,UACA,qBAEF,KACE,UACA,oBC3uBJ,oBACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,qCACA,2DACA,oBAIA,gDACE,0CAIJ,sBACE,oBACA,YAEA,qCACE,8CAKF,2BACE,aAGF,iCACE,UAGF,mCACE,gDAIJ,yBACE,cACA,WACA,YACA,kBACA,MACA,OACA,eACA,gBAGF,mBACE,aAGF,wBACE,eACA,MACA,OACA,aACA,gBAGF,mBACE,aAGF,mBACE,qDACA,cACA,SACA,iBACA,gBACA,eACA,gBACA,qBAEA,+BACE,YACA,sBACA,kBACA,MACA,OACA,+BAKF,+CACE,cAEA,6GAEE,aAIA,6EACE,YAGF,mFACE,aAMR,yCACE,YAGF,qBACE,gBACA,eClHA,oCACE,OAGF,mCACE,QAGF,yCACE,YAEA,8CACE,UAGF,2FAEE,WAGF,4CACE,gBAGF,uDACE,yBCvBJ,sCACE,YAIJ,qBACE,YACA,UN4BA,uCACA,0BACA,gEACA,qBM3BF,gCACE,gBAEA,+CACE,aACA,mBACA,uBACA,YACA,YACA,YACA,cACA,UNaF,wBACA,0BACA,gEACA,qBMZA,sCACE,oBNQF,wBACA,0BACA,gEACA,qBMNF,8BACE,YACA,gBAGF,uBACE,YAEA,wCACE,aACA,mBACA,8BACA,iBAEA,uDACE,eACA,iBACA,UAIJ,6BACE,eACA,oBACA,UACA,mBAGF,uCNzBA,uCACA,0BACA,gEACA,qBAQE,UAQA,wBMUF,iCN7BA,4BACA,0BACA,gEACA,uBM4BE,mCACE,iBAIJ,sCACE,gBAGF,iCACE,gBAKE,uDACE,WACA,kBNhDN,0BACA,0BACA,gEACA,sBMiDI,6CACE,QNrDN,0BACA,0BACA,gEACA,sBMyDE,oDACE,UCjGF,oDACE,oBACA,YAIA,oEACE,sBAKN,oCACE,QACA,gBPsBF,kCACA,0BACA,gEACA,sBOrBI,uDACE,yBAIA,iEACE,wBAMR,0CACE,4CACA,gBAEA,+CACE,aAGF,6CACE,qBAGF,wDACE,oBACA,oBC7CR,iBACE,WACA,2BAEA,2BACE,aACA,WACA,WAEA,gCACE,iBACA,wBAGF,sCACE,gBACA,kBAGF,0CACE,aAGF,4CACE,gBAEA,kDACE,kBACA,QACA,QACA,UACA,eACA,iCACA,2BAGF,2DACE,YACA,iCAKF,+CRNF,uCACA,0BACA,gEACA,qBQKI,WACA,WACA,UACA,UACA,SACA,SAIA,qDACE,UACA,WACA,OAMJ,kDR1BF,uCACA,0BACA,gEACA,qBQyBI,WACA,WACA,UACA,UACA,SACA,SAIA,wDACE,UACA,WACA,OAOF,8CACE,wBAIA,wDACE,yBAKN,mKRjEF,OACA,UACA,yBACA,QQoEE,iDACE,aAGF,0CACE,YAEA,4CACE,iBACA,SAIJ,8CACE,gBAEA,6JAGE,iBAEA,+uBAIE,UACA,mBAIA,8OACE,UACA,mBAKF,sQACE,eACA,eAGF,mQACE,eAOV,0CACE,iBAGF,qCACE,YAEA,wCACE,gBACA,WAEA,sDACE,YACA,aACA,mBAEA,yEACE,WAGF,2DACE,iBACA,WAEA,8EACE,QACA,WAGF,qFACE,aAGF,oFACE,sCAGF,iEACE,gBACA,kBAEA,qFACE,WAGF,wFACE,WAIJ,qEACE,gBACA,gBAEA,gLAEE,aAOV,+CRjLF,+BACA,0BACA,gEACA,qBQiLI,0GAEE,iBAGE,8JRzLR,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ8KM,wEACE,SAGF,gFRrMR,uCACA,0BACA,gEACA,uBAME,UAUA,wBQuLQ,sFR1MV,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ+LA,uDACE,SACA,sBACA,YACA,YACA,iCAEA,0DACE,WACA,cAEA,iMAGE,cAMJ,kDACE,aAIJ,sDACE,mBACA,iBACA,gBAKN,iCACE,WACA,kBACA,iCACA,sBACA,wBRxPA,+BACA,0BACA,gEACA,qBQwPA,2EAEE,WAGF,mDACE,YAGF,sCACE,WACA,aACA,oCAIJ,+BACE,yBACA,cACA,sBLgcJ,YACE,kBACA,wCAEA,oBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,0BACE,MACA,SAKN,eACE,kBACA,wCAEA,uBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,6BACE,MACA","file":"app.css"} \ No newline at end of file diff --git a/scss/app.scss b/scss/app.scss index 8db54c2..a5343b6 100644 --- a/scss/app.scss +++ b/scss/app.scss @@ -13,6 +13,7 @@ html { .app { position: relative; top: 0; + height: 100vh; opacity: 1; } } @@ -566,7 +567,7 @@ html { } .dropdown-menu { - top: 32px; + top: 100%; right: 0; left: auto; } diff --git a/scss/horizontal.scss b/scss/horizontal.scss index db3c061..83c75ea 100644 --- a/scss/horizontal.scss +++ b/scss/horizontal.scss @@ -37,7 +37,6 @@ } .dropdown-menu { - top: 100%; border: none; background-color: var(--t42-body); } diff --git a/scss/vertical.scss b/scss/vertical.scss index 4b97d06..4063f97 100644 --- a/scss/vertical.scss +++ b/scss/vertical.scss @@ -29,16 +29,9 @@ } .menu { - max-width: 0; - opacity: 0; pointer-events: none; - margin-right: 0; @include transition(all, 0); } - - .dropdown-menu { - right: -0.75em; - } } .favorites-nav { @@ -64,9 +57,9 @@ .menu { max-width: 100%; + padding-right: 0.75em; opacity: 1; pointer-events: all; - margin-right: 0.75em; } .text-animation { From 3f6c898a6df26340132c55f580b06978a6c65754 Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Thu, 14 Nov 2024 16:47:46 +0200 Subject: [PATCH 2/9] G4E-8461 - Remove obsolete setWindowPosition function. --- js/connect-related.js | 4 +- js/utils.js | 121 +----------------------------------------- 2 files changed, 2 insertions(+), 123 deletions(-) diff --git a/js/connect-related.js b/js/connect-related.js index f18b12a..a95f621 100644 --- a/js/connect-related.js +++ b/js/connect-related.js @@ -4,7 +4,7 @@ import { getSettings, setSetting, } from './settings.js'; -import { setOrientation, setWindowPosition } from './utils.js'; +import { setOrientation } from './utils.js'; console.time('Glue'); @@ -649,8 +649,6 @@ async function getPrefs() { }); } - await setWindowPosition(); - glue.prefs.subscribe(() => { setOrientation(); }); diff --git a/js/utils.js b/js/utils.js index fbace9e..1d75764 100644 --- a/js/utils.js +++ b/js/utils.js @@ -9,23 +9,16 @@ import { refreshApps, glueVersion, getMonitorInfo, - moveMyWindow, minimize, isMinimizeAllowed, openFeedbackForm, getWindowWorkArea, getScaleFactor, - getPrimaryScaleFactor, windowCenter, getPhysicalWindowBounds, restoreLayout, } from './connect-related.js'; -import { - toolbarDrawerSize, - initialPosition, - setSetting, - getSetting, -} from './settings.js'; +import { toolbarDrawerSize, setSetting, getSetting } from './settings.js'; import { populateProfileData, profile_handleShutdownClick, @@ -263,16 +256,6 @@ function handleTopMenuClicks() { const app = getAppElement(); const bounds = await getVisibleArea(app); - const workArea = await getWindowWorkArea(); - - if ( - bounds.top < workArea.top || - bounds.left < workArea.left || - bounds.left > workArea.right || - bounds.top > workArea.bottom - ) { - await setWindowPosition(); - } prevWndBounds.width = bounds.width; prevWndBounds.height = bounds.height; @@ -852,107 +835,6 @@ async function checkWindowPosition() { return checkRectangleOffBounds(workArea, visibleArea); } -async function setWindowPosition() { - const isVertical = getSetting('vertical'); - const workArea = await getWindowWorkArea(); - const visibleArea = await getVisibleArea( - document.querySelector('.draggable') - ); - const offBounds = await checkWindowPosition(); - const primaryScaleFactor = await getPrimaryScaleFactor(); - const scaleFactor = await getScaleFactor(); - const startPosition = initialPosition / scaleFactor; - const drawerSize = toolbarDrawerSize.vertical / scaleFactor; - - if (offBounds.length === 0) return; - - offBounds.forEach(async (offset) => { - if (isVertical) { - switch (Object.keys(offset)[0]) { - case 'left': - await moveMyWindow({ - left: - (workArea.left + startPosition - drawerSize) * primaryScaleFactor, - }); - break; - - case 'top': - await moveMyWindow({ - top: (workArea.top + startPosition) * primaryScaleFactor, - }); - break; - - case 'right': - await moveMyWindow({ - left: - (workArea.right - - visibleArea.width - - drawerSize - - startPosition) * - primaryScaleFactor, - }); - break; - - case 'bottom': - await moveMyWindow({ - top: - (workArea.bottom - visibleArea.height - startPosition) * - primaryScaleFactor, - }); - break; - - default: - break; - } - } else { - const horizontalHeight = getHorizontalToolbarHeight(); - const drawerHeight = horizontalHeight / scaleFactor; - - switch (Object.keys(offset)[0]) { - case 'left': - await moveMyWindow({ - left: (workArea.left + startPosition) * primaryScaleFactor, - }); - break; - - case 'top': - await moveMyWindow({ - top: - (workArea.top + startPosition - drawerHeight) * - primaryScaleFactor, - }); - break; - - case 'right': - await moveMyWindow({ - left: - (workArea.left + - workArea.width - - visibleArea.width - - startPosition) * - primaryScaleFactor, - }); - break; - - case 'bottom': - await moveMyWindow({ - top: - (workArea.top + - workArea.height - - visibleArea.height - - drawerHeight - - startPosition) * - primaryScaleFactor, - }); - break; - - default: - break; - } - } - }); -} - async function resetWindow() { setSetting({ vertical: true }); windowCenter(); @@ -980,7 +862,6 @@ export { startTutorial, escapeHtml, getAppIcon, - setWindowPosition, elementObserver, populateSettingsDropdown, renderAlert, From 634dad37649eb39e8c497ab439c0ec7cb9fc01e2 Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Thu, 14 Nov 2024 18:23:25 +0200 Subject: [PATCH 3/9] G4E-8461 - Removed more obsolete stuff. --- js/utils.js | 75 +++++++++----------------------------------- js/window-sizing.js | 23 ++++++++++++-- scss/app.css | 2 +- scss/app.css.map | 2 +- scss/app.scss | 3 -- scss/horizontal.scss | 45 ++------------------------ scss/top.scss | 6 ---- 7 files changed, 39 insertions(+), 117 deletions(-) diff --git a/js/utils.js b/js/utils.js index 1d75764..9ac5758 100644 --- a/js/utils.js +++ b/js/utils.js @@ -187,6 +187,8 @@ function handleTopMenuClicks() { }; document.addEventListener('click', async (e) => { + const isVertical = getSetting('vertical'); + if (e.target.matches('a, a *') && e.ctrlKey) { e.preventDefault(); } @@ -236,21 +238,25 @@ function handleTopMenuClicks() { '.toggle-content:not(.hide)' ); - if (hasVisibleDrawers) { - const openDirection = await getDrawerOpenDirection(); + const openDirection = await getDrawerOpenDirection(); + if (hasVisibleDrawers) { document .querySelector('.app') .classList.add('has-drawer', `open-${openDirection}`); } else { document.querySelector('.app').classList.remove('has-drawer'); - if (document.querySelector('.app').classList.contains('open-left')) { - document.querySelector('.app').classList.remove('open-left'); - } + const openClasses = document.querySelector('.app').classList; - if (document.querySelector('.app').classList.contains('open-top')) { - document.querySelector('.app').classList.remove('open-top'); + openClasses.forEach((className) => { + if (className.startsWith('open-')) { + openClasses.remove(className); + } + }); + + if (!isVertical) { + document.querySelector('.app').classList.remove('expanded'); } } @@ -379,30 +385,20 @@ async function handleJumpListAction() { } function handleLayoutsHover() { - const app = getAppElement(); const menuItem = '.show-actions'; document.addEventListener('mouseover', (event) => { const target = event.target.closest(menuItem); - const dropdownsOpen = document.querySelectorAll('.dropdown-menu.show'); - const isVertical = app.classList.contains('vertical'); - if (target || dropdownsOpen.length > 0) { + if (target) { target?.classList?.add('hover'); - if (!isVertical) { - app.classList.add('expanded'); - } } else { document.querySelectorAll(menuItem).forEach((item) => { item.classList.remove('hover'); - if (!isVertical) { - app.classList.remove('expanded'); - } }); } }); } - async function handleMouseHover() { document.querySelector('#favorites').addEventListener( 'mousewheel', @@ -792,49 +788,6 @@ async function getVisibleArea(element) { }; } -function checkRectangleOffBounds(rect1, rect2) { - const offBounds = []; - - // if rect2 moves beyond left boundaries of rect1 - if (rect2.left < rect1.left) { - offBounds.push({ - left: rect2.left - rect1.left, - }); - } - - // if rect2 moves beyond top boundaries of rect1 - if (rect2.top < rect1.top) { - offBounds.push({ - top: rect2.top - rect1.top, - }); - } - - // if rect2 moves beyond right boundaries of rect1 - if (rect2.right > rect1.right) { - offBounds.push({ - right: rect2.right - rect1.right, - }); - } - - // if rect2 moves beyond bottom boundaries of rect1 - if (rect2.bottom > rect1.bottom) { - offBounds.push({ - bottom: rect2.bottom - rect1.bottom, - }); - } - - return offBounds; -} - -async function checkWindowPosition() { - const workArea = await getWindowWorkArea(); - const visibleArea = await getVisibleArea( - document.querySelector('.draggable') - ); - - return checkRectangleOffBounds(workArea, visibleArea); -} - async function resetWindow() { setSetting({ vertical: true }); windowCenter(); diff --git a/js/window-sizing.js b/js/window-sizing.js index 5328d4f..e2be6a7 100644 --- a/js/window-sizing.js +++ b/js/window-sizing.js @@ -11,6 +11,7 @@ const prevBounds = { let hadOpenLeft = false; let hadOpenTop = false; +let wasExpanded = false; function getChangedProperties(prevBounds, newBounds) { const diff = {}; @@ -33,6 +34,8 @@ async function setWindowBounds() { const isOpenLeft = classNames.includes('open-left'); const isOpenTop = classNames.includes('open-top'); + console.log('Setting window bounds:', classNames); + const toolbarHeight = getHorizontalToolbarHeight(); const expandedToolbarWidth = 200; const newBounds = {}; @@ -46,6 +49,13 @@ async function setWindowBounds() { : toolbarWidth.vertical; newBounds.height = toolbarHeight; + if (isExpanded) { + wasExpanded = true; + newBounds.left = prevBounds.left; + } else { + wasExpanded = false; + } + if (isOpenLeft) { hadOpenLeft = true; newBounds.left = appBounds.left - toolbarDrawerSize.vertical; @@ -65,7 +75,16 @@ async function setWindowBounds() { if (isOpenTop) { hadOpenTop = true; - newBounds.top = appBounds.top + visibleArea.height - horizontalHeight; + + if (isExpanded && hadOpenTop) { + wasExpanded = true; + newBounds.top = prevBounds.top; + } else if (wasExpanded && !isExpanded) { + wasExpanded = false; + newBounds.top = prevBounds.top; + } else { + newBounds.top = appBounds.top + visibleArea.height - horizontalHeight; + } } if (hadOpenTop && !isOpenTop) { @@ -80,8 +99,6 @@ async function setWindowBounds() { if (Object.keys(bounds).length === 0) return; - console.log('Setting window bounds:', bounds); - moveMyWindow(bounds); Object.assign(prevBounds, newBounds); diff --git a/scss/app.css b/scss/app.css index f9f1bac..eed8137 100644 --- a/scss/app.css +++ b/scss/app.css @@ -1 +1 @@ -@keyframes runleft{0%{opacity:0;transform:translateX(1rem)}100%{opacity:1;transform:translateX(0)}}@keyframes runright{0%{opacity:0;transform:translateX(-1rem)}100%{opacity:1;transform:translateX(0)}}html.dark .viewport{border:1px solid rgba(255,255,255,.075)}html.dark .toggle-content{background-color:var(--t42-body);border-top:1px solid rgba(255,255,255,.075);border-bottom:1px solid rgba(255,255,255,.075);border-right:1px solid rgba(255,255,255,.075);border-left-color:rgba(255,255,255,.075)}html.dark .toggle-content .close-drawer{color:#bbb}html.dark .toggle-content .close-drawer:hover{color:#fff}html.dark .applications-nav::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.dark .viewport-footer::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.dark .favorite::after{background-color:rgba(255,255,255,.075)}html.dark .favorite i{background:#1e1e1e}html.dark .nav .layout-menu-tool{background-color:rgba(var(--t42-bg-light), 0.95)}html.dark .nav .layout-menu-tool li:first-of-type{border-right:1px solid rgba(255,255,255,.05)}html.dark .nav .layout-menu-tool li:hover,html.dark .nav .layout-menu-tool li.hover,html.dark .nav .layout-menu-tool li.active{background-color:rgba(255,255,255,.05);color:#fff}html.dark .nav .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;filter:grayscale(100%) brightness(1)}html.dark .nav .nav-link.active img,html.dark .nav .nav-link:hover img{filter:none}html.dark .select:hover{background-color:#252525}html.dark .select_items{border-color:rgba(255,255,255,.075)}html.dark .select_items:hover{border-color:#2080d3}html.dark .select_option{background-color:#1e1e1e}html.dark .select_expand::after{color:#eee}html.dark .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#252525}html.dark .horizontal .layout-menu-tool{border:1px solid rgba(255,255,255,.075)}html.dark .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(255,255,255,.1)}html.dark .folder-content{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 100%)}html.light .viewport{border:1px solid rgba(219,222,230,.8)}html.light .toggle-content{background-color:#fafafa;border-top:1px solid rgba(219,222,230,.8);border-bottom:1px solid rgba(219,222,230,.8);border-right:1px solid rgba(219,222,230,.8);border-left-color:rgba(219,222,230,.8)}html.light .toggle-content .close-drawer{color:#757575}html.light .toggle-content .close-drawer:hover{color:#0d0d0d}html.light .applications-nav::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.light .viewport-footer::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.light .favorite::after{background-color:rgba(219,222,230,.8)}html.light .favorite i{background:#fafafa}html.light .nav .layout-menu-tool{background:#fff}html.light .nav .layouts-nav div:first-of-type{border-right:1px solid rgba(219,222,230,.8)}html.light .nav .layouts-nav div:hover,html.light .nav .layouts-nav div.hover,html.light .nav .layouts-nav div.active{background-color:rgba(219,222,230,.8);color:#000}html.light .nav .nav-link img{filter:invert(1)}html.light .nav .nav-link.active img,html.light .nav .nav-link:hover img{filter:invert(1) brightness(1.2)}html.light .select:hover{background-color:#fff}html.light .select_items:hover{border-color:#2080d3}html.light .select_option{background-color:#fafafa}html.light .select_option label{color:#757575}html.light .select_expand::after{color:#2c2c2c}html.light .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#f2f2f2;color:#2c2c2c}html.light .horizontal .layout-menu-tool{border:1px solid rgba(219,222,230,.8)}html.light .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(0,0,0,.075)}html.light .folder-content{background:linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.05) 100%)}.nav li.folder{flex-grow:0;overflow:hidden}.nav li.folder .action-menu .icon-size-16{width:1rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down{margin-right:.188rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down::before{display:inline-block;transform:rotate(-90deg)}.nav li.folder .action-menu .icon-folder-open-empty{display:none}.nav li.folder .action-menu:hover span:last-of-type{padding-right:0}.nav li.folder .nav-link.action-menu{min-height:3rem;max-height:3rem}.nav li.folder .folder-content{margin-left:5px}.nav li.folder.folder-open{flex-grow:0;flex-basis:auto}.nav li.folder.folder-open>.action-menu .icon-folder-open-empty{display:block}.nav li.folder.folder-open>.action-menu .icon-folder-empty{display:none}.nav li.folder.folder-open>.action-menu .action-menu-tool .icon-angle-down::before{transform:rotate(0)}html body{background-color:rgba(0,0,0,0)}html .loaded{background-color:var(--t42-body)}html .loaded .app{position:relative;top:0;height:100vh;opacity:1}html .app{height:100%;overflow:hidden;opacity:0}html .app.vertical{display:inline-flex}html .app.horizontal{display:flex;flex-direction:column}html .app.switching-orientation *{transition:none !important}html .app.switching-orientation *::before,html .app.switching-orientation *::after{transition:none !important}html .app *:focus{outline:none}html img,html a{user-select:none;-webkit-user-drag:none;-webkit-user-select:none}html .draggable{-webkit-app-region:drag}html .logo{display:flex;align-items:center;width:100%;height:100%;padding:0 1.25em;overflow:hidden}html .logo-icon,html .logo-wordmark{background-size:contain;background-repeat:no-repeat;height:100%}html .logo-icon img,html .logo-wordmark img{width:100%}html .logo-icon{flex-shrink:0;width:2.33em;height:60%}html .logo-wordmark{height:100%}html .logo-wordmark img{height:100%}html .toggle-content{height:100%;width:300px;overflow:hidden;visibility:visible;display:flex;flex-direction:column}html .toggle-content .input-group{flex-wrap:nowrap}html .toggle-content.hide{width:0;border-right:0 solid rgba(0,0,0,0)}html .toggle-content.hide .action-menu-tool{opacity:0}html .toggle-content>.nav{overflow:auto}html .toggle-content h5{white-space:nowrap;padding:0 .063rem}html .toggle-content .close-drawer{transition-property:color;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;font-size:.688rem;margin-left:.125rem;margin-right:.3125rem;cursor:pointer;transform:rotate(90deg)}html .settings-header{position:sticky;top:0;z-index:15;background-color:var(--t42-body)}html .settings-content{display:flex;flex-direction:column;overflow-y:auto}html .settings-content h5{margin:0}html .settings-content>div{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}html .settings-content>div>div{display:flex;justify-content:space-between;align-items:center}html .settings-system-schedule-restart,html .settings-system-schedule-shutdown{align-items:normal !important;justify-content:flex-start !important;gap:.5rem}html .settings-system-schedule-restart .select,html .settings-system-schedule-shutdown .select{margin-bottom:0}html .settings-system-schedule-restart-time,html .settings-system-schedule-shutdown-time{position:relative}html .settings-system-schedule-restart-time::after,html .settings-system-schedule-shutdown-time::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%);pointer-events:none}html .settings-system-schedule-restart-period,html .settings-system-schedule-shutdown-period{min-width:7.5em}html .settings-system-schedule-restart-interval,html .settings-system-schedule-shutdown-interval{min-width:6.5em}html .settings-system-schedule-restart-interval .select_items,html .settings-system-schedule-shutdown-interval .select_items{top:auto;bottom:0}html .settings-system-schedule-restart-period{z-index:13}html .form-control.flatpickr-input{height:34px;color:var(--t42-content-color-muted);background-color:var(--t42-input-bg);opacity:1;transition:none}html .form-control.flatpickr-input:hover:not(:disabled){border-color:var(--primary)}html .form-control.flatpickr-input:disabled{background-color:var(--t42-input-disabled-bg);opacity:.65;pointer-events:none}html .flatpickr-calendar{width:10rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;background-color:var(--t42-input-bg);box-shadow:none}html .flatpickr-calendar:hover{border-color:var(--primary)}html .flatpickr-calendar.arrowTop::before,html .flatpickr-calendar.arrowTop::after{content:none}html .flatpickr-calendar.hasTime .flatpickr-time{border-top:none}html .flatpickr-calendar input,html .flatpickr-calendar .flatpickr-am-pm{font-size:inherit;font-weight:inherit !important;border:none !important;color:var(--t42-content-color-muted)}html .flatpickr-calendar input:hover,html .flatpickr-calendar input:focus,html .flatpickr-calendar .flatpickr-am-pm:hover,html .flatpickr-calendar .flatpickr-am-pm:focus{background-color:var(--t42-input-bg)}html .flatpickr-calendar input{padding-right:1rem}html .flatpickr-calendar .flatpickr-am-pm{width:25%}html .flatpickr-calendar .numInputWrapper span{width:1rem;border-color:var(--t42-color-opacity-10)}html .flatpickr-calendar .flatpickr-time span.arrowUp:after{border-bottom-color:var(--t42-content-color)}html .flatpickr-calendar .flatpickr-time span.arrowDown:after{border-top-color:var(--t42-content-color)}html .switch .slider{border-color:rgba(0,0,0,0) !important;border-radius:.5rem;background-color:color-mix(in srgb, var(--secondary), transparent 75%)}html .switch .slider::before{border-radius:50%}html .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;transform:translateX(-1rem);overflow:hidden;text-overflow:ellipsis;margin:0 .5rem}html .nav-item.hover .nav-link{border-color:var(--t42-color-opacity-10);color:var(--t42-link-color);background-color:var(--t42-link-hover-bg)}html .nav.nav-tabs{border-bottom:none}html .nav.nav-tabs li{white-space:nowrap;flex-basis:3rem;flex-shrink:0}html .nav.nav-tabs .nav-item{user-select:none;position:relative;display:flex;flex-direction:column}html .nav.nav-tabs .nav-item.is-active .chevron{transform:rotate(180deg)}html .nav.nav-tabs .nav-link{height:auto;border:0;padding-left:14px;flex-grow:1;margin-right:0}html .nav.nav-tabs .nav-link .icon-size-16,html .nav.nav-tabs .nav-link>img,html .nav.nav-tabs .nav-link .title-app,html .nav.nav-tabs .nav-link .title-folder{margin:0 .5rem}html .nav.nav-tabs .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav.flex-column{flex-wrap:nowrap}html .nav.flex-column .nav-link{margin-bottom:0 !important}html .nav .applications-nav{position:relative;overflow:hidden}html .nav .applications-nav i{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .applications-nav:hover .icon-angle-down,html .nav .applications-nav.active .icon-angle-down{opacity:1}html .nav .favorite{white-space:nowrap;flex-basis:1.25rem !important;user-select:none;overflow:hidden;text-align:center}html .nav .favorite i{position:relative;z-index:20;padding:0 .25rem}html .nav .favorite::after{content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px);bottom:11px}html .nav #favorites>li:not(.nav-item){transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;white-space:nowrap}html .nav ul.nav .nav-item .nav-link.active::before,html .nav ul.nav .nav-item .nav-link:hover::before{width:0;height:0}html .nav .action-menu-tool{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:.65;margin-left:auto}html .nav .action-menu-tool .dropdown-menu{left:auto;right:0;z-index:20}html .nav .action-menu{cursor:pointer;overflow:hidden}html .nav .action-menu .dropdown-menu{min-width:auto}html .nav .action-menu a{text-decoration:none}html .nav .action-menu a:hover{text-decoration:none}html .nav .action-menu span:last-of-type{text-overflow:ellipsis;overflow:hidden;transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .action-menu .add-favorite{padding:0;height:2rem;width:2rem}html .nav .action-menu:hover .action-menu-tool{opacity:1}html .nav .layout-menu-tool{transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;display:flex;height:3rem;padding:0;opacity:0;position:absolute;visibility:hidden;width:100%;top:0;z-index:1}html .nav .layout-menu-tool li{display:flex;align-items:center;justify-content:center;flex:1 1 auto;width:100%;height:100%;cursor:pointer}html .nav .show-actions{position:relative;flex-shrink:0}html .nav .show-actions:hover i,html .nav .show-actions:hover .text-animation,html .nav .show-actions:hover .action-menu-tool,html .nav .show-actions:hover span,html .nav .show-actions.hover i,html .nav .show-actions.hover .text-animation,html .nav .show-actions.hover .action-menu-tool,html .nav .show-actions.hover span,html .nav .show-actions.active i,html .nav .show-actions.active .text-animation,html .nav .show-actions.active .action-menu-tool,html .nav .show-actions.active span{opacity:0;visibility:hidden}html .nav .show-actions:hover .layout-menu-tool,html .nav .show-actions.hover .layout-menu-tool,html .nav .show-actions.active .layout-menu-tool{opacity:1;visibility:visible}html .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:runleft 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:runright 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav-item[client-id] .action-menu,html .nav-item[instrument-id] .action-menu{cursor:initial}html .nav-item[client-id] .second-level .nav-link,html .nav-item[instrument-id] .second-level .nav-link{cursor:pointer}html .viewport{position:relative;z-index:15;border:1px solid rgba(255,255,255,.075);width:60px;user-select:none;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .viewport .menu{display:flex;align-items:center;gap:.5em;height:100%}html .viewport .menu .icon-window-minimize{font-size:.5rem}html .viewport .menu .dropdown-menu{background-color:rgba(var(--t42-bg-light), 0.95)}html .viewport .viewport-header{position:relative}html .viewport .viewport-header a{text-decoration:none}html .viewport .viewport-header a:hover{text-decoration:none}html .viewport .viewport-header .menu{position:relative}html .viewport .viewport-header .menu .btn-icon{display:flex;align-items:center}html .viewport .viewport-header .dropdown-menu{top:100%;right:0;left:auto}html .viewport .accordion .active-app{position:absolute;left:57px}html .viewport .viewport-footer{position:relative;margin-top:auto}html .viewport .viewport-footer .nav.nav-tabs .nav-link{text-decoration:none}html .viewport .viewport-footer .nav.nav-tabs .nav-link:hover{text-decoration:none}html .viewport .viewport-footer .circle-index{transition-property:transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;align-items:center;background-color:#2080d3;border-radius:50%;display:flex;font-size:.5rem;height:.875rem;justify-content:center;margin-left:.875rem;margin-top:-0.375rem;position:absolute;transform:scale(1);width:.875rem}html .viewport .viewport-footer .circle-index.empty{transform:scale(0)}html .profile-actions .btn{flex:1 1 auto}html .modal.fade{display:block;width:200px;visibility:hidden}html .modal.fade .about-logo{width:2.5rem;overflow:hidden;margin:0 auto}html .modal.fade .modal-fill-in{justify-content:flex-start}html .modal.fade .modal-fill-in .modal-header .close{position:absolute;right:1rem;top:1rem}html .modal.fade.show{visibility:visible}html .active-app{margin-left:-14px}html [layout-name].nav-item.fav-layout i.icon-star-empty-1{display:none}html [layout-name].nav-item:not(.fav-layout) i.icon-star-full{display:none}html [app-name].nav-item.fav-app i.icon-star-empty-1{display:none}html [app-name].nav-item:not(.fav-app) i.icon-star-full{display:none}html .layout-save-alert-wrapper{position:relative}html .layout-save-alert-wrapper .alert{position:absolute;top:0;right:.5rem;left:.5rem;z-index:1;max-height:0;padding:0 4em 0 1em;border-color:rgba(0,0,0,0);opacity:0;transition:all .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .layout-save-alert-wrapper .alert::before{flex-shrink:0}html .layout-save-alert-wrapper .alert.show{max-height:10em;padding:.5em 4em .5em 1em;border-color:var(--t42-color-opacity-10);opacity:1}html .layout-save-input-group .input-control{padding-right:1.25rem}html .layout-save-input-group .input-group-append{position:relative}html .layout-save-input-group .loader-wrapper{position:absolute;inset:0 25%;z-index:10;display:flex;align-items:center;justify-content:center;transform:translateX(-150%)}html .layout-save-input-group .loader{display:none;width:.5em;height:.5em;border-radius:50%;background-color:var(--primary);animation:pulse 1s linear infinite}html .layout-save-input-group .loader.show{display:block}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}html .select::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%) rotate(0);transition:transform 250ms cubic-bezier(0.4, 0.25, 0.3, 1);pointer-events:none}html .select:has(.select_expand:checked)::after{transform:translateY(-50%) rotate(180deg)}html .select.disabled{pointer-events:none;opacity:.65}html .select.disabled .select_option{background-color:var(--t42-input-disabled-bg)}html .select_expand::after{display:none}html .select_expand:hover::after{opacity:1}html .select_expand:checked::after{transform:translate(-65%, -55%) rotate(-180deg)}html .select_expandLabel{display:block;width:100%;height:2rem;position:absolute;top:0;left:0;cursor:pointer;margin-bottom:0}html .select_close{display:none}html .select_closeLabel{position:fixed;top:0;left:0;display:none;margin-bottom:0}html .select_input{display:none}html .select_label{transition:all 250ms cubic-bezier(0.4, 0.25, 0.3, 1);display:block;height:0;line-height:2rem;overflow:hidden;cursor:pointer;margin-bottom:0;padding-left:.875rem}html .select_label-placeholder{height:2rem;vertical-align:middle;position:absolute;top:0;left:0;background-color:rgba(0,0,0,0)}html .select_expand:checked+.select_closeLabel{display:block}html .select_expand:checked+.select_closeLabel::before,html .select_expand:checked+.select_closeLabel::after{display:none}html .select_expand:checked+.select_closeLabel+.select_options .select_label{height:2rem}html .select_expand:checked+.select_closeLabel+.select_options+.select_expandLabel{display:none}html .select_input:checked+.select_label{height:2rem}html .select_options{list-style:none;padding-left:0}html .vertical.open-left.has-drawer{left:0}html .vertical.open-left .viewport{order:1}html .vertical.open-left .toggle-content{width:300px}html .vertical.open-left .toggle-content.hide{width:0px}html .vertical.open-left .toggle-content>div,html .vertical.open-left .toggle-content>.nav{width:auto}html .vertical.open-left .toggle-content h3{padding-right:0}html .vertical.open-left .toggle-content .close-drawer{transform:rotate(-90deg)}html .vertical .viewport>.flex-column{height:100%}html .vertical .menu{max-width:0;opacity:0;transition-property:max-width, opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header{overflow:hidden}html .vertical .viewport-header .logo-wordmark{display:flex;align-items:center;justify-content:center;max-width:0;min-width:0;height:auto;margin-left:0;opacity:0;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header .menu{pointer-events:none;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .favorites-nav{flex-grow:1;overflow:hidden}html .vertical .expand{width:200px}html .vertical .expand .viewport-header{display:flex;align-items:center;justify-content:space-between;overflow:initial}html .vertical .expand .viewport-header .logo-wordmark{max-width:100%;margin-left:.8em;opacity:1}html .vertical .expand .menu{max-width:100%;padding-right:.75em;opacity:1;pointer-events:all}html .vertical .expand .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:1;transform:translateX(0)}html .vertical .expand .favorite{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:300ms}html .vertical .expand .favorite i{padding:0 .75rem}html .vertical .expand .favorites-nav{overflow-y:auto}html .vertical .expand .nav-link{max-width:200px}html .vertical .expand .accordion .nav .toggle-content{left:200px;display:list-item;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand .accordion .nav .hide{width:0;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand #favorites>li:not(.nav-item){opacity:1}html .horizontal.open-top.has-drawer .dropdown-menu{top:auto !important;bottom:100%}html .horizontal.open-top.has-drawer .layouts-nav .layout-menu-tool{top:calc(-6rem + 2px)}html .horizontal.open-top .viewport{order:1;margin-bottom:0;transition-property:margin-bottom;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .horizontal.open-top .viewport .nav-item .chevron{transform:rotate(-90deg)}html .horizontal.open-top .viewport .nav-item.is-active .chevron{transform:rotate(90deg)}html .horizontal.open-top .toggle-content{border-top:1px solid rgba(255,255,255,.075);border-bottom:0}html .horizontal.open-top .toggle-content.hide{border-top:0}html .horizontal.open-top .toggle-content h3{padding-right:.25rem}html .horizontal.open-top .toggle-content .close-drawer{transform:rotate(0);margin:.25rem 0 0 0}html .horizontal{width:100%;justify-content:flex-start}html .horizontal .viewport{display:flex;width:100%;z-index:20}html .horizontal .viewport>.nav{flex-wrap:nowrap;width:calc(100% - 40px)}html .horizontal .viewport .accordion{overflow-x:auto;overflow-y:hidden}html .horizontal .viewport .logo-wordmark{display:none}html .horizontal .viewport .viewport-header{position:static}html .horizontal .viewport .viewport-header .menu{position:absolute;top:50%;right:0;z-index:1;padding:0 .5em;background-color:var(--t42-body);transform:translateY(-50%)}html .horizontal .viewport .viewport-header .dropdown-menu{border:none;background-color:var(--t42-body)}html .horizontal .viewport .app-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .app-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .layout-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .layout-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .nav-item .chevron{transform:rotate(90deg)}html .horizontal .viewport .nav-item.is-active .chevron{transform:rotate(-90deg)}html .horizontal .viewport .nav .applications-nav::before,html .horizontal .viewport .nav .favorite::after,html .horizontal .viewport .nav .viewport-footer:before{left:0;width:1px;height:calc(100% - 16px);top:8px}html .horizontal .viewport .nav .favorite::after{left:.563rem}html .horizontal .viewport .nav .favorite{height:3rem}html .horizontal .viewport .nav .favorite i{padding:.25rem 0;top:1rem}html .horizontal .viewport .nav .show-actions{overflow:hidden}html .horizontal .viewport .nav .show-actions:hover,html .horizontal .viewport .nav .show-actions.hover,html .horizontal .viewport .nav .show-actions.active{overflow:visible}html .horizontal .viewport .nav .show-actions:hover i,html .horizontal .viewport .nav .show-actions:hover .text-animation,html .horizontal .viewport .nav .show-actions:hover .action-menu-tool,html .horizontal .viewport .nav .show-actions:hover span,html .horizontal .viewport .nav .show-actions.hover i,html .horizontal .viewport .nav .show-actions.hover .text-animation,html .horizontal .viewport .nav .show-actions.hover .action-menu-tool,html .horizontal .viewport .nav .show-actions.hover span,html .horizontal .viewport .nav .show-actions.active i,html .horizontal .viewport .nav .show-actions.active .text-animation,html .horizontal .viewport .nav .show-actions.active .action-menu-tool,html .horizontal .viewport .nav .show-actions.active span{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.hover .layouts-nav .icon-size-16,html .horizontal .viewport .nav .show-actions.active .layouts-nav .icon-size-16{opacity:1;visibility:visible}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:none;border-right:0}html .horizontal .viewport .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .horizontal .viewport .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:none}html .horizontal .viewport .favorites-nav{flex-wrap:nowrap}html .horizontal .viewport .nav-tabs{height:100%}html .horizontal .viewport .nav-tabs li{flex-basis:59px;width:60px}html .horizontal .viewport .nav-tabs li.favorites-nav{flex-grow:1;display:flex;align-items:center}html .horizontal .viewport .nav-tabs li.favorites-nav::-webkit-scrollbar{height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav{flex-wrap:nowrap;width:100%}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar{width:0;height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-button{display:none}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3)}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover{overflow-x:auto;overflow-y:scroll}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .app-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .layout-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item{flex-basis:59px;overflow:hidden}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation,html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation:hover{display:none}html .horizontal .viewport .nav-tabs .nav-item{transition-property:flex-basis;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .viewport .nav-tabs .nav-item.hover,html .horizontal .viewport .nav-tabs .nav-item:hover{flex-basis:11rem}html .horizontal .viewport .nav-tabs .nav-item.hover .nav-link .text-animation,html .horizontal .viewport .nav-tabs .nav-item:hover .nav-link .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active::before{bottom:0}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:0;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active:hover .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .layout-menu-tool{top:100%;flex-direction:column;height:6rem;border:none;background-color:var(--t42-body)}html .horizontal .viewport .nav-tabs .layout-menu-tool li{width:100%;flex:0 1 auto}html .horizontal .viewport .nav-tabs .layout-menu-tool li:hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.active{flex:0 1 auto}html .horizontal .viewport .nav-tabs.expand .menu{display:flex}html .horizontal .viewport .nav-tabs .viewport-footer{margin-top:initial;margin-left:auto;overflow-x:clip}html .horizontal .toggle-content{width:100%;max-height:1000px;border-top:0 solid rgba(0,0,0,0);border-left-width:1px;border-left-style:solid;transition-property:max-height;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .toggle-content>.nav,html .horizontal .toggle-content>div{width:100%}html .horizontal .toggle-content:not(#app-content){height:100%}html .horizontal .toggle-content.hide{width:100%;max-height:0;border-bottom:0 solid rgba(0,0,0,0)}html .horizontal .close-drawer{transform:rotate(180deg);margin-left:0;margin-bottom:.375rem}.app-active{position:relative;background-color:rgba(255,255,255,.025)}.app-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.app-active:hover::before{top:0;bottom:0}.layout-active{position:relative;background-color:rgba(255,255,255,.025)}.layout-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.layout-active:hover::before{top:0;bottom:0}/*# sourceMappingURL=app.css.map */ +@keyframes runleft{0%{opacity:0;transform:translateX(1rem)}100%{opacity:1;transform:translateX(0)}}@keyframes runright{0%{opacity:0;transform:translateX(-1rem)}100%{opacity:1;transform:translateX(0)}}html.dark .viewport{border:1px solid rgba(255,255,255,.075)}html.dark .toggle-content{background-color:var(--t42-body);border-top:1px solid rgba(255,255,255,.075);border-bottom:1px solid rgba(255,255,255,.075);border-right:1px solid rgba(255,255,255,.075);border-left-color:rgba(255,255,255,.075)}html.dark .toggle-content .close-drawer{color:#bbb}html.dark .toggle-content .close-drawer:hover{color:#fff}html.dark .applications-nav::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.dark .viewport-footer::after{background-color:rgba(255,255,255,.075);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.dark .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.dark .favorite::after{background-color:rgba(255,255,255,.075)}html.dark .favorite i{background:#1e1e1e}html.dark .nav .layout-menu-tool{background-color:rgba(var(--t42-bg-light), 0.95)}html.dark .nav .layout-menu-tool li:first-of-type{border-right:1px solid rgba(255,255,255,.05)}html.dark .nav .layout-menu-tool li:hover,html.dark .nav .layout-menu-tool li.hover,html.dark .nav .layout-menu-tool li.active{background-color:rgba(255,255,255,.05);color:#fff}html.dark .nav .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;filter:grayscale(100%) brightness(1)}html.dark .nav .nav-link.active img,html.dark .nav .nav-link:hover img{filter:none}html.dark .select:hover{background-color:#252525}html.dark .select_items{border-color:rgba(255,255,255,.075)}html.dark .select_items:hover{border-color:#2080d3}html.dark .select_option{background-color:#1e1e1e}html.dark .select_expand::after{color:#eee}html.dark .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#252525}html.dark .horizontal .layout-menu-tool{border:1px solid rgba(255,255,255,.075)}html.dark .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(255,255,255,.1)}html.dark .folder-content{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 100%)}html.light .viewport{border:1px solid rgba(219,222,230,.8)}html.light .toggle-content{background-color:#fafafa;border-top:1px solid rgba(219,222,230,.8);border-bottom:1px solid rgba(219,222,230,.8);border-right:1px solid rgba(219,222,230,.8);border-left-color:rgba(219,222,230,.8)}html.light .toggle-content .close-drawer{color:#757575}html.light .toggle-content .close-drawer:hover{color:#0d0d0d}html.light .applications-nav::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .applications-nav:hover::after{background-color:rgba(0,0,0,0)}html.light .viewport-footer::after{background-color:rgba(219,222,230,.8);content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px)}html.light .viewport-footer:hover::after{background-color:rgba(0,0,0,0)}html.light .favorite::after{background-color:rgba(219,222,230,.8)}html.light .favorite i{background:#fafafa}html.light .nav .layout-menu-tool{background:#fff}html.light .nav .layouts-nav div:first-of-type{border-right:1px solid rgba(219,222,230,.8)}html.light .nav .layouts-nav div:hover,html.light .nav .layouts-nav div.hover,html.light .nav .layouts-nav div.active{background-color:rgba(219,222,230,.8);color:#000}html.light .nav .nav-link img{filter:invert(1)}html.light .nav .nav-link.active img,html.light .nav .nav-link:hover img{filter:invert(1) brightness(1.2)}html.light .select:hover{background-color:#fff}html.light .select_items:hover{border-color:#2080d3}html.light .select_option{background-color:#fafafa}html.light .select_option label{color:#757575}html.light .select_expand::after{color:#2c2c2c}html.light .select_expand:checked+.select_closeLabel+.select_options .select_label:hover{background-color:#f2f2f2;color:#2c2c2c}html.light .horizontal .layout-menu-tool{border:1px solid rgba(219,222,230,.8)}html.light .horizontal .layout-menu-tool li:first-child{border-bottom:1px solid rgba(0,0,0,.075)}html.light .folder-content{background:linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.05) 100%)}.nav li.folder{flex-grow:0;overflow:hidden}.nav li.folder .action-menu .icon-size-16{width:1rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down{margin-right:.188rem}.nav li.folder .action-menu .action-menu-tool .icon-angle-down::before{display:inline-block;transform:rotate(-90deg)}.nav li.folder .action-menu .icon-folder-open-empty{display:none}.nav li.folder .action-menu:hover span:last-of-type{padding-right:0}.nav li.folder .nav-link.action-menu{min-height:3rem;max-height:3rem}.nav li.folder .folder-content{margin-left:5px}.nav li.folder.folder-open{flex-grow:0;flex-basis:auto}.nav li.folder.folder-open>.action-menu .icon-folder-open-empty{display:block}.nav li.folder.folder-open>.action-menu .icon-folder-empty{display:none}.nav li.folder.folder-open>.action-menu .action-menu-tool .icon-angle-down::before{transform:rotate(0)}html body{background-color:rgba(0,0,0,0)}html .loaded{background-color:var(--t42-body)}html .loaded .app{position:relative;top:0;height:100vh;opacity:1}html .app{height:100%;overflow:hidden;opacity:0}html .app.vertical{display:inline-flex}html .app.horizontal{display:flex;flex-direction:column}html .app.switching-orientation *{transition:none !important}html .app.switching-orientation *::before,html .app.switching-orientation *::after{transition:none !important}html .app *:focus{outline:none}html img,html a{user-select:none;-webkit-user-drag:none;-webkit-user-select:none}html .draggable{-webkit-app-region:drag}html .logo{display:flex;align-items:center;width:100%;height:100%;padding:0 1.25em;overflow:hidden}html .logo-icon,html .logo-wordmark{background-size:contain;background-repeat:no-repeat;height:100%}html .logo-icon img,html .logo-wordmark img{width:100%}html .logo-icon{flex-shrink:0;width:2.33em;height:60%}html .logo-wordmark{height:100%}html .logo-wordmark img{height:100%}html .toggle-content{height:100%;width:300px;overflow:hidden;visibility:visible;display:flex;flex-direction:column}html .toggle-content .input-group{flex-wrap:nowrap}html .toggle-content.hide{width:0;border-right:0 solid rgba(0,0,0,0)}html .toggle-content.hide .action-menu-tool{opacity:0}html .toggle-content>.nav{overflow:auto}html .toggle-content h5{white-space:nowrap;padding:0 .063rem}html .toggle-content .close-drawer{transition-property:color;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;font-size:.688rem;margin-left:.125rem;margin-right:.3125rem;cursor:pointer;transform:rotate(90deg)}html .settings-header{position:sticky;top:0;z-index:15;background-color:var(--t42-body)}html .settings-content{display:flex;flex-direction:column;overflow-y:auto}html .settings-content h5{margin:0}html .settings-content>div{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}html .settings-content>div>div{display:flex;justify-content:space-between;align-items:center}html .settings-system-schedule-restart,html .settings-system-schedule-shutdown{align-items:normal !important;justify-content:flex-start !important;gap:.5rem}html .settings-system-schedule-restart .select,html .settings-system-schedule-shutdown .select{margin-bottom:0}html .settings-system-schedule-restart-time,html .settings-system-schedule-shutdown-time{position:relative}html .settings-system-schedule-restart-time::after,html .settings-system-schedule-shutdown-time::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%);pointer-events:none}html .settings-system-schedule-restart-period,html .settings-system-schedule-shutdown-period{min-width:7.5em}html .settings-system-schedule-restart-interval,html .settings-system-schedule-shutdown-interval{min-width:6.5em}html .settings-system-schedule-restart-interval .select_items,html .settings-system-schedule-shutdown-interval .select_items{top:auto;bottom:0}html .settings-system-schedule-restart-period{z-index:13}html .form-control.flatpickr-input{height:34px;color:var(--t42-content-color-muted);background-color:var(--t42-input-bg);opacity:1;transition:none}html .form-control.flatpickr-input:hover:not(:disabled){border-color:var(--primary)}html .form-control.flatpickr-input:disabled{background-color:var(--t42-input-disabled-bg);opacity:.65;pointer-events:none}html .flatpickr-calendar{width:10rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;background-color:var(--t42-input-bg);box-shadow:none}html .flatpickr-calendar:hover{border-color:var(--primary)}html .flatpickr-calendar.arrowTop::before,html .flatpickr-calendar.arrowTop::after{content:none}html .flatpickr-calendar.hasTime .flatpickr-time{border-top:none}html .flatpickr-calendar input,html .flatpickr-calendar .flatpickr-am-pm{font-size:inherit;font-weight:inherit !important;border:none !important;color:var(--t42-content-color-muted)}html .flatpickr-calendar input:hover,html .flatpickr-calendar input:focus,html .flatpickr-calendar .flatpickr-am-pm:hover,html .flatpickr-calendar .flatpickr-am-pm:focus{background-color:var(--t42-input-bg)}html .flatpickr-calendar input{padding-right:1rem}html .flatpickr-calendar .flatpickr-am-pm{width:25%}html .flatpickr-calendar .numInputWrapper span{width:1rem;border-color:var(--t42-color-opacity-10)}html .flatpickr-calendar .flatpickr-time span.arrowUp:after{border-bottom-color:var(--t42-content-color)}html .flatpickr-calendar .flatpickr-time span.arrowDown:after{border-top-color:var(--t42-content-color)}html .switch .slider{border-color:rgba(0,0,0,0) !important;border-radius:.5rem;background-color:color-mix(in srgb, var(--secondary), transparent 75%)}html .switch .slider::before{border-radius:50%}html .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;transform:translateX(-1rem);overflow:hidden;text-overflow:ellipsis;margin:0 .5rem}html .nav-item.hover .nav-link{border-color:var(--t42-color-opacity-10);color:var(--t42-link-color);background-color:var(--t42-link-hover-bg)}html .nav.nav-tabs{border-bottom:none}html .nav.nav-tabs li{white-space:nowrap;flex-basis:3rem;flex-shrink:0}html .nav.nav-tabs .nav-item{user-select:none;position:relative;display:flex;flex-direction:column}html .nav.nav-tabs .nav-item.is-active .chevron{transform:rotate(180deg)}html .nav.nav-tabs .nav-link{height:auto;border:0;padding-left:14px;flex-grow:1;margin-right:0}html .nav.nav-tabs .nav-link .icon-size-16,html .nav.nav-tabs .nav-link>img,html .nav.nav-tabs .nav-link .title-app,html .nav.nav-tabs .nav-link .title-folder{margin:0 .5rem}html .nav.nav-tabs .nav-link img{transition-property:filter;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav.flex-column{flex-wrap:nowrap}html .nav.flex-column .nav-link{margin-bottom:0 !important}html .nav .applications-nav{position:relative;overflow:hidden}html .nav .applications-nav i{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .applications-nav:hover .icon-angle-down,html .nav .applications-nav.active .icon-angle-down{opacity:1}html .nav .favorite{white-space:nowrap;flex-basis:1.25rem !important;user-select:none;overflow:hidden;text-align:center}html .nav .favorite i{position:relative;z-index:20;padding:0 .25rem}html .nav .favorite::after{content:"";height:1px;left:8px;position:absolute;width:calc(100% - 16px);bottom:11px}html .nav #favorites>li:not(.nav-item){transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:0;white-space:nowrap}html .nav ul.nav .nav-item .nav-link.active::before,html .nav ul.nav .nav-item .nav-link:hover::before{width:0;height:0}html .nav .action-menu-tool{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:.65;margin-left:auto}html .nav .action-menu-tool .dropdown-menu{left:auto;right:0;z-index:20}html .nav .action-menu{cursor:pointer;overflow:hidden}html .nav .action-menu .dropdown-menu{min-width:auto}html .nav .action-menu a{text-decoration:none}html .nav .action-menu a:hover{text-decoration:none}html .nav .action-menu span:last-of-type{text-overflow:ellipsis;overflow:hidden;transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .nav .action-menu .add-favorite{padding:0;height:2rem;width:2rem}html .nav .action-menu:hover .action-menu-tool{opacity:1}html .nav .layout-menu-tool{transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;display:flex;height:3rem;padding:0;opacity:0;position:absolute;visibility:hidden;width:100%;top:0;z-index:1}html .nav .layout-menu-tool li{display:flex;align-items:center;justify-content:center;flex:1 1 auto;width:100%;height:100%;cursor:pointer}html .nav .show-actions:hover i,html .nav .show-actions:hover .text-animation,html .nav .show-actions:hover .action-menu-tool,html .nav .show-actions:hover span,html .nav .show-actions.hover i,html .nav .show-actions.hover .text-animation,html .nav .show-actions.hover .action-menu-tool,html .nav .show-actions.hover span,html .nav .show-actions.active i,html .nav .show-actions.active .text-animation,html .nav .show-actions.active .action-menu-tool,html .nav .show-actions.active span{opacity:0;visibility:hidden}html .nav .show-actions:hover .layout-menu-tool,html .nav .show-actions.hover .layout-menu-tool,html .nav .show-actions.active .layout-menu-tool{opacity:1;visibility:visible}html .nav .show-actions:hover .layout-menu-tool li:first-of-type,html .nav .show-actions.hover .layout-menu-tool li:first-of-type,html .nav .show-actions.active .layout-menu-tool li:first-of-type{animation:runleft 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav .show-actions:hover .layout-menu-tool li:last-of-type,html .nav .show-actions.hover .layout-menu-tool li:last-of-type,html .nav .show-actions.active .layout-menu-tool li:last-of-type{animation:runright 300ms cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .nav-item[client-id] .action-menu,html .nav-item[instrument-id] .action-menu{cursor:initial}html .nav-item[client-id] .second-level .nav-link,html .nav-item[instrument-id] .second-level .nav-link{cursor:pointer}html .viewport{position:relative;z-index:15;border:1px solid rgba(255,255,255,.075);width:60px;user-select:none;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .viewport .menu{display:flex;align-items:center;gap:.5em;height:100%}html .viewport .menu .icon-window-minimize{font-size:.5rem}html .viewport .menu .dropdown-menu{background-color:rgba(var(--t42-bg-light), 0.95)}html .viewport .viewport-header{position:relative}html .viewport .viewport-header a{text-decoration:none}html .viewport .viewport-header a:hover{text-decoration:none}html .viewport .viewport-header .menu{position:relative}html .viewport .viewport-header .menu .btn-icon{display:flex;align-items:center}html .viewport .viewport-header .dropdown-menu{top:100%;right:0;left:auto}html .viewport .accordion .active-app{position:absolute;left:57px}html .viewport .viewport-footer{position:relative;margin-top:auto}html .viewport .viewport-footer .nav.nav-tabs .nav-link{text-decoration:none}html .viewport .viewport-footer .nav.nav-tabs .nav-link:hover{text-decoration:none}html .viewport .viewport-footer .circle-index{transition-property:transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;align-items:center;background-color:#2080d3;border-radius:50%;display:flex;font-size:.5rem;height:.875rem;justify-content:center;margin-left:.875rem;margin-top:-0.375rem;position:absolute;transform:scale(1);width:.875rem}html .viewport .viewport-footer .circle-index.empty{transform:scale(0)}html .profile-actions .btn{flex:1 1 auto}html .modal.fade{display:block;width:200px;visibility:hidden}html .modal.fade .about-logo{width:2.5rem;overflow:hidden;margin:0 auto}html .modal.fade .modal-fill-in{justify-content:flex-start}html .modal.fade .modal-fill-in .modal-header .close{position:absolute;right:1rem;top:1rem}html .modal.fade.show{visibility:visible}html .active-app{margin-left:-14px}html [layout-name].nav-item.fav-layout i.icon-star-empty-1{display:none}html [layout-name].nav-item:not(.fav-layout) i.icon-star-full{display:none}html [app-name].nav-item.fav-app i.icon-star-empty-1{display:none}html [app-name].nav-item:not(.fav-app) i.icon-star-full{display:none}html .layout-save-alert-wrapper{position:relative}html .layout-save-alert-wrapper .alert{position:absolute;top:0;right:.5rem;left:.5rem;z-index:1;max-height:0;padding:0 4em 0 1em;border-color:rgba(0,0,0,0);opacity:0;transition:all .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}html .layout-save-alert-wrapper .alert::before{flex-shrink:0}html .layout-save-alert-wrapper .alert.show{max-height:10em;padding:.5em 4em .5em 1em;border-color:var(--t42-color-opacity-10);opacity:1}html .layout-save-input-group .input-control{padding-right:1.25rem}html .layout-save-input-group .input-group-append{position:relative}html .layout-save-input-group .loader-wrapper{position:absolute;inset:0 25%;z-index:10;display:flex;align-items:center;justify-content:center;transform:translateX(-150%)}html .layout-save-input-group .loader{display:none;width:.5em;height:.5em;border-radius:50%;background-color:var(--primary);animation:pulse 1s linear infinite}html .layout-save-input-group .loader.show{display:block}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}html .select::after{content:"";position:absolute;top:50%;right:.75rem;font-family:"tick42-icons";color:var(--t42-link-color);transform:translateY(-50%) rotate(0);transition:transform 250ms cubic-bezier(0.4, 0.25, 0.3, 1);pointer-events:none}html .select:has(.select_expand:checked)::after{transform:translateY(-50%) rotate(180deg)}html .select.disabled{pointer-events:none;opacity:.65}html .select.disabled .select_option{background-color:var(--t42-input-disabled-bg)}html .select_expand::after{display:none}html .select_expand:hover::after{opacity:1}html .select_expand:checked::after{transform:translate(-65%, -55%) rotate(-180deg)}html .select_expandLabel{display:block;width:100%;height:2rem;position:absolute;top:0;left:0;cursor:pointer;margin-bottom:0}html .select_close{display:none}html .select_closeLabel{position:fixed;top:0;left:0;display:none;margin-bottom:0}html .select_input{display:none}html .select_label{transition:all 250ms cubic-bezier(0.4, 0.25, 0.3, 1);display:block;height:0;line-height:2rem;overflow:hidden;cursor:pointer;margin-bottom:0;padding-left:.875rem}html .select_label-placeholder{height:2rem;vertical-align:middle;position:absolute;top:0;left:0;background-color:rgba(0,0,0,0)}html .select_expand:checked+.select_closeLabel{display:block}html .select_expand:checked+.select_closeLabel::before,html .select_expand:checked+.select_closeLabel::after{display:none}html .select_expand:checked+.select_closeLabel+.select_options .select_label{height:2rem}html .select_expand:checked+.select_closeLabel+.select_options+.select_expandLabel{display:none}html .select_input:checked+.select_label{height:2rem}html .select_options{list-style:none;padding-left:0}html .vertical.open-left.has-drawer{left:0}html .vertical.open-left .viewport{order:1}html .vertical.open-left .toggle-content{width:300px}html .vertical.open-left .toggle-content.hide{width:0px}html .vertical.open-left .toggle-content>div,html .vertical.open-left .toggle-content>.nav{width:auto}html .vertical.open-left .toggle-content h3{padding-right:0}html .vertical.open-left .toggle-content .close-drawer{transform:rotate(-90deg)}html .vertical .viewport>.flex-column{height:100%}html .vertical .menu{max-width:0;opacity:0;transition-property:max-width, opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header{overflow:hidden}html .vertical .viewport-header .logo-wordmark{display:flex;align-items:center;justify-content:center;max-width:0;min-width:0;height:auto;margin-left:0;opacity:0;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .viewport-header .menu{pointer-events:none;transition-property:all;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .vertical .favorites-nav{flex-grow:1;overflow:hidden}html .vertical .expand{width:200px}html .vertical .expand .viewport-header{display:flex;align-items:center;justify-content:space-between;overflow:initial}html .vertical .expand .viewport-header .logo-wordmark{max-width:100%;margin-left:.8em;opacity:1}html .vertical .expand .menu{max-width:100%;padding-right:.75em;opacity:1;pointer-events:all}html .vertical .expand .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;opacity:1;transform:translateX(0)}html .vertical .expand .favorite{transition-property:opacity;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:300ms}html .vertical .expand .favorite i{padding:0 .75rem}html .vertical .expand .favorites-nav{overflow-y:auto}html .vertical .expand .nav-link{max-width:200px}html .vertical .expand .accordion .nav .toggle-content{left:200px;display:list-item;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand .accordion .nav .hide{width:0;transition-property:width;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .vertical .expand #favorites>li:not(.nav-item){opacity:1}html .horizontal.open-top.has-drawer .dropdown-menu{top:auto !important;bottom:100%}html .horizontal.open-top .viewport{order:1;margin-bottom:0;transition-property:margin-bottom;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:50ms}html .horizontal.open-top .viewport .nav-item .chevron{transform:rotate(-90deg)}html .horizontal.open-top .viewport .nav-item.is-active .chevron{transform:rotate(90deg)}html .horizontal.open-top .toggle-content{border-top:1px solid rgba(255,255,255,.075);border-bottom:0}html .horizontal.open-top .toggle-content.hide{border-top:0}html .horizontal.open-top .toggle-content h3{padding-right:.25rem}html .horizontal.open-top .toggle-content .close-drawer{transform:rotate(0);margin:.25rem 0 0 0}html .horizontal{width:100%;justify-content:flex-start}html .horizontal .viewport{top:0;display:flex;width:100%;z-index:20}html .horizontal .viewport>.nav{flex-wrap:nowrap;width:calc(100% - 40px)}html .horizontal .viewport .accordion{overflow-x:auto;overflow-y:hidden}html .horizontal .viewport .logo-wordmark{display:none}html .horizontal .viewport .viewport-header{position:static}html .horizontal .viewport .viewport-header .menu{position:absolute;top:50%;right:0;z-index:1;padding:0 .5em;background-color:var(--t42-body);transform:translateY(-50%)}html .horizontal .viewport .viewport-header .dropdown-menu{border:none;background-color:var(--t42-body)}html .horizontal .viewport .app-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .app-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .layout-active::before{transition-property:width, left, right;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms;width:23px;height:3px;top:unset;right:30%;bottom:0;left:30%}html .horizontal .viewport .layout-active:hover::before{top:unset;width:100%;left:0}html .horizontal .viewport .nav-item .chevron{transform:rotate(90deg)}html .horizontal .viewport .nav-item.is-active .chevron{transform:rotate(-90deg)}html .horizontal .viewport .nav .applications-nav::before,html .horizontal .viewport .nav .favorite::after,html .horizontal .viewport .nav .viewport-footer:before{left:0;width:1px;height:calc(100% - 16px);top:8px}html .horizontal .viewport .nav .favorite::after{left:.563rem}html .horizontal .viewport .nav .favorite{height:3rem}html .horizontal .viewport .nav .favorite i{padding:.25rem 0;top:1rem}html .horizontal .viewport .favorites-nav{flex-wrap:nowrap}html .horizontal .viewport .nav-tabs{height:100%}html .horizontal .viewport .nav-tabs li{flex-basis:59px;width:60px;height:3rem}html .horizontal .viewport .nav-tabs li.favorites-nav{flex-grow:1;display:flex;align-items:center}html .horizontal .viewport .nav-tabs li.favorites-nav::-webkit-scrollbar{height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav{flex-wrap:nowrap;width:100%}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar{width:0;height:1px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-button{display:none}html .horizontal .viewport .nav-tabs li.favorites-nav .nav::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3)}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover{overflow-x:auto;overflow-y:scroll}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .app-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav:hover .layout-active::before{height:2px}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item{flex-basis:59px;overflow:hidden}html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation,html .horizontal .viewport .nav-tabs li.favorites-nav .nav .nav-item .text-animation:hover{display:none}html .horizontal .viewport .nav-tabs .nav-item{transition-property:flex-basis;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .viewport .nav-tabs .nav-item.is-active,html .horizontal .viewport .nav-tabs .nav-item.hover,html .horizontal .viewport .nav-tabs .nav-item:hover{flex-basis:11rem}html .horizontal .viewport .nav-tabs .nav-item.is-active .nav-link .text-animation,html .horizontal .viewport .nav-tabs .nav-item.hover .nav-link .text-animation,html .horizontal .viewport .nav-tabs .nav-item:hover .nav-link .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active::before{bottom:0}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:0;transform:translateX(0)}html .horizontal .viewport .nav-tabs .nav-item .nav-link.active:hover .text-animation{transition-property:opacity, transform;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:100ms;opacity:1;transform:translateX(0)}html .horizontal .viewport .nav-tabs .layout-menu-tool li{width:100%;flex:0 1 auto}html .horizontal .viewport .nav-tabs .layout-menu-tool li:hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.hover,html .horizontal .viewport .nav-tabs .layout-menu-tool li.active{flex:0 1 auto}html .horizontal .viewport .nav-tabs.expand .menu{display:flex}html .horizontal .viewport .nav-tabs .viewport-footer{margin-top:initial;margin-left:auto;overflow-x:clip}html .horizontal .toggle-content{width:100%;max-height:1000px;border-top:0 solid rgba(0,0,0,0);border-left-width:1px;border-left-style:solid;transition-property:max-height;transition-duration:300ms;transition-timing-function:cubic-bezier(0.34, 0.03, 0.13, 0.93);transition-delay:0ms}html .horizontal .toggle-content>.nav,html .horizontal .toggle-content>div{width:100%}html .horizontal .toggle-content:not(#app-content){height:100%}html .horizontal .toggle-content.hide{width:100%;max-height:0;border-bottom:0 solid rgba(0,0,0,0)}html .horizontal .close-drawer{transform:rotate(180deg);margin-left:0;margin-bottom:.375rem}.app-active{position:relative;background-color:rgba(255,255,255,.025)}.app-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.app-active:hover::before{top:0;bottom:0}.layout-active{position:relative;background-color:rgba(255,255,255,.025)}.layout-active::before{content:"";width:3px;position:absolute;top:30%;bottom:30%;left:0;background-color:#2080d3;transition:top .3s cubic-bezier(0.34, 0.03, 0.13, 0.93),bottom .3s cubic-bezier(0.34, 0.03, 0.13, 0.93)}.layout-active:hover::before{top:0;bottom:0}/*# sourceMappingURL=app.css.map */ diff --git a/scss/app.css.map b/scss/app.css.map index a9e391a..f81abe1 100644 --- a/scss/app.css.map +++ b/scss/app.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["mixin.scss","color.scss","folders.scss","app.scss","select.scss","left.scss","vertical.scss","top.scss","horizontal.scss"],"names":[],"mappings":"CAgFE,mBACE,GACE,UACA,2BAGF,KACE,UACA,yBAIJ,oBACE,GACE,UACA,4BAGF,KACE,UACA,yBClGJ,oBACE,wCAGF,0BACE,iCACA,4CACA,+CACA,8CACA,yCAEA,wCACE,WAEA,8CACE,WDPJ,mCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BAhBJ,kCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,wCACE,+BCKJ,2BACE,wCAGF,sBACE,mBAKF,iCACE,iDAGE,kDACE,6CAGF,+HAGE,uCACA,WAMJ,6BDpBF,2BACA,0BACA,gEACA,qBCmBI,qCAKA,uEACE,YAON,wBACE,yBAGF,wBACE,oCAEA,8BACE,qBAIJ,yBACE,yBAIA,gCACE,WAIA,wFACE,yBAON,wCACE,wCAEA,uDACE,6CAMN,0BACE,6FASF,qBACE,sCAGF,2BACE,yBACA,0CACA,6CACA,4CACA,uCAEA,yCACE,cAEA,+CACE,cDjIJ,oCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,0CACE,+BAhBJ,mCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BC+HJ,4BACE,sCAGF,uBACE,mBAKF,kCACE,gBAIA,+CACE,4CAGF,sHAGE,sCACA,WAKF,8BACE,iBAKA,yEACE,iCAON,yBACE,sBAIA,+BACE,qBAIJ,0BACE,yBAEA,gCACE,cAKF,iCACE,cAIA,yFACE,yBACA,cAON,yCACE,sCAEA,wDACE,yCAMN,2BACE,iFC/OJ,eACE,YACA,gBAGE,0CACE,WAGF,+DACE,qBAEA,uEACE,qBACA,yBAIJ,oDACE,aAIA,oDACE,gBAKN,qCACE,gBACA,gBAGF,+BACE,gBAGF,2BACE,YACA,gBAGE,gEACE,cAGF,2DACE,aAIA,mFACE,oBChDR,UACE,+BAGF,aACE,iCAEA,kBACE,kBACA,MACA,aACA,UAIJ,UACE,YACA,gBACA,UAEA,mBACE,oBAGF,qBACE,aACA,sBAGF,kCACE,2BAEA,mFAEE,2BAIJ,kBACE,aAIJ,gBAEE,iBACA,uBACA,yBAGF,gBACE,wBAGF,WACE,aACA,mBACA,WACA,YACA,iBACA,gBAEA,oCAEE,wBACA,4BACA,YAEA,4CACE,WAIJ,gBACE,cACA,aACA,WAGF,oBACE,YAEA,wBACE,YAKN,qBACE,YACA,YACA,gBACA,mBACA,aACA,sBAGA,kCACE,iBAGF,0BACE,QACA,mCAEA,4CACE,UAIJ,0BACE,cAGF,wBACE,mBACA,kBAGF,mCHrFA,0BACA,0BACA,gEACA,qBGoFE,kBACA,oBACA,sBACA,eACA,wBAIJ,sBACE,gBACA,MACA,WACA,iCAGF,uBACE,aACA,sBACA,gBAEA,0BACE,SAGF,2BACE,aACA,sBACA,UACA,cAEA,+BACE,aACA,8BACA,mBAKN,+EAEE,8BACA,sCACA,UAEA,+FACE,gBAGF,yFACE,kBAEA,uGACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,2BACA,oBAIJ,6FACE,gBAGF,iGACE,gBAGE,6HACE,SACA,SAMR,8CACE,WAGF,mCACE,YACA,qCACA,qCACA,UACA,gBAEA,wDACE,4BAGF,4CACE,8CACA,YACA,oBAIJ,yBACE,YACA,6CACA,gBACA,qCACA,gBAEA,+BACE,4BAIA,mFAEE,aAIJ,iDACE,gBAGF,yEAEE,kBACA,+BACA,uBACA,qCAEA,0KAEE,qCAIJ,+BACE,mBAGF,0CACE,UAGF,+CACE,WACA,yCAIA,4DACE,6CAGF,8DACE,0CAMJ,qBACE,sCACA,oBACA,uEAEA,6BACE,kBAKN,qBHnQE,uCACA,0BACA,gEACA,qBAME,UAMA,4BGsPF,gBACA,uBACA,eAMI,+BACE,yCACA,4BACA,0CAKN,mBACE,mBAEA,sBACE,mBACA,gBACA,cAGF,6BACE,iBACA,kBACA,aACA,sBAGE,gDACE,yBAKN,6BACE,YACA,SACA,kBACA,YACA,eAEA,+JAIE,eAGF,iCHzTJ,2BACA,0BACA,gEACA,qBG4TA,sBACE,iBAEA,gCACE,2BAIJ,4BACE,kBACA,gBAEA,8BH3UF,uCACA,0BACA,gEACA,qBG8UI,uGACE,UAKN,oBACE,mBACA,8BACA,iBACA,gBACA,kBAEA,sBACE,kBACA,WACA,iBAGF,2BACE,WACA,WACA,SACA,kBACA,wBACA,YAKF,uCH/WF,4BACA,0BACA,gEACA,qBG8WI,UACA,mBAIJ,uGAEE,QACA,SAGF,4BH5XA,4BACA,0BACA,gEACA,qBG2XE,YACA,iBAEA,2CACE,UACA,QACA,WAIJ,uBACE,eACA,gBAEA,sCACE,eAGF,yBHrbF,qBAEA,+BACE,qBGsbA,yCACE,uBACA,gBHtZJ,4BACA,0BACA,gEACA,qBGuZE,qCACE,UACA,YACA,WAIA,+CACE,UAKN,4BHvaA,0BACA,0BACA,gEACA,qBGsaE,aACA,YACA,UACA,UACA,kBACA,kBACA,WACA,MACA,UAEA,+BACE,aACA,mBACA,uBACA,cACA,WACA,YACA,eAIJ,wBACE,kBACA,cAKE,ueAIE,UACA,kBAGF,iJACE,UACA,mBAGE,oMACE,6DAGF,iMACE,8DAUV,kFACE,eAGF,wGACE,eAIJ,eACE,kBACA,WACA,wCACA,WACA,iBH/eA,0BACA,0BACA,gEACA,qBG+eA,qBACE,aACA,mBACA,SACA,YAEA,2CACE,gBAGF,oCACE,iDAIJ,gCACE,kBAEA,kCHziBF,qBAEA,wCACE,qBG0iBA,sCACE,kBAEA,gDACE,aACA,mBAIJ,+CACE,SACA,QACA,UAKF,sCACE,kBACA,UAIJ,gCACE,kBACA,gBAGE,wDHzkBJ,qBAEA,8DACE,qBG2kBA,8CHziBF,8BACA,0BACA,gEACA,qBGwiBI,mBACA,yBACA,kBACA,aACA,gBACA,eACA,uBACA,oBACA,qBACA,kBACA,mBACA,cAEA,oDACE,mBAMR,2BACE,cAGF,iBACE,cACA,YACA,kBAEA,6BACE,aACA,gBACA,cAGF,gCACE,2BAEA,qDACE,kBACA,WACA,SAIJ,sBACE,mBAIJ,iBACE,kBAKE,2DACE,aAKF,8DACE,aAOF,qDACE,aAKF,wDACE,aAKN,gCACE,kBAEA,uCACE,kBACA,MACA,YACA,WACA,UACA,aACA,oBACA,2BACA,UACA,wDAEA,+CACE,cAGF,4CACE,gBACA,0BACA,yCACA,UAMJ,6CACE,sBAGF,kDACE,kBAGF,8CACE,kBACA,YACA,WACA,aACA,mBACA,uBACA,4BAGF,sCACE,aACA,WACA,YACA,kBACA,gCACA,mCAEA,2CACE,cAKN,iBACE,GACE,UACA,mBAEF,IACE,UACA,qBAEF,KACE,UACA,oBC3uBJ,oBACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,qCACA,2DACA,oBAIA,gDACE,0CAIJ,sBACE,oBACA,YAEA,qCACE,8CAKF,2BACE,aAGF,iCACE,UAGF,mCACE,gDAIJ,yBACE,cACA,WACA,YACA,kBACA,MACA,OACA,eACA,gBAGF,mBACE,aAGF,wBACE,eACA,MACA,OACA,aACA,gBAGF,mBACE,aAGF,mBACE,qDACA,cACA,SACA,iBACA,gBACA,eACA,gBACA,qBAEA,+BACE,YACA,sBACA,kBACA,MACA,OACA,+BAKF,+CACE,cAEA,6GAEE,aAIA,6EACE,YAGF,mFACE,aAMR,yCACE,YAGF,qBACE,gBACA,eClHA,oCACE,OAGF,mCACE,QAGF,yCACE,YAEA,8CACE,UAGF,2FAEE,WAGF,4CACE,gBAGF,uDACE,yBCvBJ,sCACE,YAIJ,qBACE,YACA,UN4BA,uCACA,0BACA,gEACA,qBM3BF,gCACE,gBAEA,+CACE,aACA,mBACA,uBACA,YACA,YACA,YACA,cACA,UNaF,wBACA,0BACA,gEACA,qBMZA,sCACE,oBNQF,wBACA,0BACA,gEACA,qBMNF,8BACE,YACA,gBAGF,uBACE,YAEA,wCACE,aACA,mBACA,8BACA,iBAEA,uDACE,eACA,iBACA,UAIJ,6BACE,eACA,oBACA,UACA,mBAGF,uCNzBA,uCACA,0BACA,gEACA,qBAQE,UAQA,wBMUF,iCN7BA,4BACA,0BACA,gEACA,uBM4BE,mCACE,iBAIJ,sCACE,gBAGF,iCACE,gBAKE,uDACE,WACA,kBNhDN,0BACA,0BACA,gEACA,sBMiDI,6CACE,QNrDN,0BACA,0BACA,gEACA,sBMyDE,oDACE,UCjGF,oDACE,oBACA,YAIA,oEACE,sBAKN,oCACE,QACA,gBPsBF,kCACA,0BACA,gEACA,sBOrBI,uDACE,yBAIA,iEACE,wBAMR,0CACE,4CACA,gBAEA,+CACE,aAGF,6CACE,qBAGF,wDACE,oBACA,oBC7CR,iBACE,WACA,2BAEA,2BACE,aACA,WACA,WAEA,gCACE,iBACA,wBAGF,sCACE,gBACA,kBAGF,0CACE,aAGF,4CACE,gBAEA,kDACE,kBACA,QACA,QACA,UACA,eACA,iCACA,2BAGF,2DACE,YACA,iCAKF,+CRNF,uCACA,0BACA,gEACA,qBQKI,WACA,WACA,UACA,UACA,SACA,SAIA,qDACE,UACA,WACA,OAMJ,kDR1BF,uCACA,0BACA,gEACA,qBQyBI,WACA,WACA,UACA,UACA,SACA,SAIA,wDACE,UACA,WACA,OAOF,8CACE,wBAIA,wDACE,yBAKN,mKRjEF,OACA,UACA,yBACA,QQoEE,iDACE,aAGF,0CACE,YAEA,4CACE,iBACA,SAIJ,8CACE,gBAEA,6JAGE,iBAEA,+uBAIE,UACA,mBAIA,8OACE,UACA,mBAKF,sQACE,eACA,eAGF,mQACE,eAOV,0CACE,iBAGF,qCACE,YAEA,wCACE,gBACA,WAEA,sDACE,YACA,aACA,mBAEA,yEACE,WAGF,2DACE,iBACA,WAEA,8EACE,QACA,WAGF,qFACE,aAGF,oFACE,sCAGF,iEACE,gBACA,kBAEA,qFACE,WAGF,wFACE,WAIJ,qEACE,gBACA,gBAEA,gLAEE,aAOV,+CRjLF,+BACA,0BACA,gEACA,qBQiLI,0GAEE,iBAGE,8JRzLR,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ8KM,wEACE,SAGF,gFRrMR,uCACA,0BACA,gEACA,uBAME,UAUA,wBQuLQ,sFR1MV,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ+LA,uDACE,SACA,sBACA,YACA,YACA,iCAEA,0DACE,WACA,cAEA,iMAGE,cAMJ,kDACE,aAIJ,sDACE,mBACA,iBACA,gBAKN,iCACE,WACA,kBACA,iCACA,sBACA,wBRxPA,+BACA,0BACA,gEACA,qBQwPA,2EAEE,WAGF,mDACE,YAGF,sCACE,WACA,aACA,oCAIJ,+BACE,yBACA,cACA,sBLgcJ,YACE,kBACA,wCAEA,oBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,0BACE,MACA,SAKN,eACE,kBACA,wCAEA,uBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,6BACE,MACA","file":"app.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["mixin.scss","color.scss","folders.scss","app.scss","select.scss","left.scss","vertical.scss","top.scss","horizontal.scss"],"names":[],"mappings":"CAgFE,mBACE,GACE,UACA,2BAGF,KACE,UACA,yBAIJ,oBACE,GACE,UACA,4BAGF,KACE,UACA,yBClGJ,oBACE,wCAGF,0BACE,iCACA,4CACA,+CACA,8CACA,yCAEA,wCACE,WAEA,8CACE,WDPJ,mCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BAhBJ,kCAEI,wCAKF,WACA,WACA,SACA,kBACA,wBAIA,wCACE,+BCKJ,2BACE,wCAGF,sBACE,mBAKF,iCACE,iDAGE,kDACE,6CAGF,+HAGE,uCACA,WAMJ,6BDpBF,2BACA,0BACA,gEACA,qBCmBI,qCAKA,uEACE,YAON,wBACE,yBAGF,wBACE,oCAEA,8BACE,qBAIJ,yBACE,yBAIA,gCACE,WAIA,wFACE,yBAON,wCACE,wCAEA,uDACE,6CAMN,0BACE,6FASF,qBACE,sCAGF,2BACE,yBACA,0CACA,6CACA,4CACA,uCAEA,yCACE,cAEA,+CACE,cDjIJ,oCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,0CACE,+BAhBJ,mCAII,sCAGF,WACA,WACA,SACA,kBACA,wBAIA,yCACE,+BC+HJ,4BACE,sCAGF,uBACE,mBAKF,kCACE,gBAIA,+CACE,4CAGF,sHAGE,sCACA,WAKF,8BACE,iBAKA,yEACE,iCAON,yBACE,sBAIA,+BACE,qBAIJ,0BACE,yBAEA,gCACE,cAKF,iCACE,cAIA,yFACE,yBACA,cAON,yCACE,sCAEA,wDACE,yCAMN,2BACE,iFC/OJ,eACE,YACA,gBAGE,0CACE,WAGF,+DACE,qBAEA,uEACE,qBACA,yBAIJ,oDACE,aAIA,oDACE,gBAKN,qCACE,gBACA,gBAGF,+BACE,gBAGF,2BACE,YACA,gBAGE,gEACE,cAGF,2DACE,aAIA,mFACE,oBChDR,UACE,+BAGF,aACE,iCAEA,kBACE,kBACA,MACA,aACA,UAIJ,UACE,YACA,gBACA,UAEA,mBACE,oBAGF,qBACE,aACA,sBAGF,kCACE,2BAEA,mFAEE,2BAIJ,kBACE,aAIJ,gBAEE,iBACA,uBACA,yBAGF,gBACE,wBAGF,WACE,aACA,mBACA,WACA,YACA,iBACA,gBAEA,oCAEE,wBACA,4BACA,YAEA,4CACE,WAIJ,gBACE,cACA,aACA,WAGF,oBACE,YAEA,wBACE,YAKN,qBACE,YACA,YACA,gBACA,mBACA,aACA,sBAGA,kCACE,iBAGF,0BACE,QACA,mCAEA,4CACE,UAIJ,0BACE,cAGF,wBACE,mBACA,kBAGF,mCHrFA,0BACA,0BACA,gEACA,qBGoFE,kBACA,oBACA,sBACA,eACA,wBAIJ,sBACE,gBACA,MACA,WACA,iCAGF,uBACE,aACA,sBACA,gBAEA,0BACE,SAGF,2BACE,aACA,sBACA,UACA,cAEA,+BACE,aACA,8BACA,mBAKN,+EAEE,8BACA,sCACA,UAEA,+FACE,gBAGF,yFACE,kBAEA,uGACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,2BACA,oBAIJ,6FACE,gBAGF,iGACE,gBAGE,6HACE,SACA,SAMR,8CACE,WAGF,mCACE,YACA,qCACA,qCACA,UACA,gBAEA,wDACE,4BAGF,4CACE,8CACA,YACA,oBAIJ,yBACE,YACA,6CACA,gBACA,qCACA,gBAEA,+BACE,4BAIA,mFAEE,aAIJ,iDACE,gBAGF,yEAEE,kBACA,+BACA,uBACA,qCAEA,0KAEE,qCAIJ,+BACE,mBAGF,0CACE,UAGF,+CACE,WACA,yCAIA,4DACE,6CAGF,8DACE,0CAMJ,qBACE,sCACA,oBACA,uEAEA,6BACE,kBAKN,qBHnQE,uCACA,0BACA,gEACA,qBAME,UAMA,4BGsPF,gBACA,uBACA,eAMI,+BACE,yCACA,4BACA,0CAKN,mBACE,mBAEA,sBACE,mBACA,gBACA,cAGF,6BACE,iBACA,kBACA,aACA,sBAGE,gDACE,yBAKN,6BACE,YACA,SACA,kBACA,YACA,eAEA,+JAIE,eAGF,iCHzTJ,2BACA,0BACA,gEACA,qBG4TA,sBACE,iBAEA,gCACE,2BAIJ,4BACE,kBACA,gBAEA,8BH3UF,uCACA,0BACA,gEACA,qBG8UI,uGACE,UAKN,oBACE,mBACA,8BACA,iBACA,gBACA,kBAEA,sBACE,kBACA,WACA,iBAGF,2BACE,WACA,WACA,SACA,kBACA,wBACA,YAKF,uCH/WF,4BACA,0BACA,gEACA,qBG8WI,UACA,mBAIJ,uGAEE,QACA,SAGF,4BH5XA,4BACA,0BACA,gEACA,qBG2XE,YACA,iBAEA,2CACE,UACA,QACA,WAIJ,uBACE,eACA,gBAEA,sCACE,eAGF,yBHrbF,qBAEA,+BACE,qBGsbA,yCACE,uBACA,gBHtZJ,4BACA,0BACA,gEACA,qBGuZE,qCACE,UACA,YACA,WAIA,+CACE,UAKN,4BHvaA,0BACA,0BACA,gEACA,qBGsaE,aACA,YACA,UACA,UACA,kBACA,kBACA,WACA,MACA,UAEA,+BACE,aACA,mBACA,uBACA,cACA,WACA,YACA,eAQA,ueAIE,UACA,kBAGF,iJACE,UACA,mBAGE,oMACE,6DAGF,iMACE,8DAUV,kFACE,eAGF,wGACE,eAIJ,eACE,kBACA,WACA,wCACA,WACA,iBH5eA,0BACA,0BACA,gEACA,qBG4eA,qBACE,aACA,mBACA,SACA,YAEA,2CACE,gBAGF,oCACE,iDAIJ,gCACE,kBAEA,kCHtiBF,qBAEA,wCACE,qBGuiBA,sCACE,kBAEA,gDACE,aACA,mBAIJ,+CACE,SACA,QACA,UAKF,sCACE,kBACA,UAIJ,gCACE,kBACA,gBAGE,wDHtkBJ,qBAEA,8DACE,qBGwkBA,8CHtiBF,8BACA,0BACA,gEACA,qBGqiBI,mBACA,yBACA,kBACA,aACA,gBACA,eACA,uBACA,oBACA,qBACA,kBACA,mBACA,cAEA,oDACE,mBAMR,2BACE,cAGF,iBACE,cACA,YACA,kBAEA,6BACE,aACA,gBACA,cAGF,gCACE,2BAEA,qDACE,kBACA,WACA,SAIJ,sBACE,mBAIJ,iBACE,kBAKE,2DACE,aAKF,8DACE,aAOF,qDACE,aAKF,wDACE,aAKN,gCACE,kBAEA,uCACE,kBACA,MACA,YACA,WACA,UACA,aACA,oBACA,2BACA,UACA,wDAEA,+CACE,cAGF,4CACE,gBACA,0BACA,yCACA,UAMJ,6CACE,sBAGF,kDACE,kBAGF,8CACE,kBACA,YACA,WACA,aACA,mBACA,uBACA,4BAGF,sCACE,aACA,WACA,YACA,kBACA,gCACA,mCAEA,2CACE,cAKN,iBACE,GACE,UACA,mBAEF,IACE,UACA,qBAEF,KACE,UACA,oBCxuBJ,oBACE,YACA,kBACA,QACA,aACA,2BACA,4BACA,qCACA,2DACA,oBAIA,gDACE,0CAIJ,sBACE,oBACA,YAEA,qCACE,8CAKF,2BACE,aAGF,iCACE,UAGF,mCACE,gDAIJ,yBACE,cACA,WACA,YACA,kBACA,MACA,OACA,eACA,gBAGF,mBACE,aAGF,wBACE,eACA,MACA,OACA,aACA,gBAGF,mBACE,aAGF,mBACE,qDACA,cACA,SACA,iBACA,gBACA,eACA,gBACA,qBAEA,+BACE,YACA,sBACA,kBACA,MACA,OACA,+BAKF,+CACE,cAEA,6GAEE,aAIA,6EACE,YAGF,mFACE,aAMR,yCACE,YAGF,qBACE,gBACA,eClHA,oCACE,OAGF,mCACE,QAGF,yCACE,YAEA,8CACE,UAGF,2FAEE,WAGF,4CACE,gBAGF,uDACE,yBCvBJ,sCACE,YAIJ,qBACE,YACA,UN4BA,uCACA,0BACA,gEACA,qBM3BF,gCACE,gBAEA,+CACE,aACA,mBACA,uBACA,YACA,YACA,YACA,cACA,UNaF,wBACA,0BACA,gEACA,qBMZA,sCACE,oBNQF,wBACA,0BACA,gEACA,qBMNF,8BACE,YACA,gBAGF,uBACE,YAEA,wCACE,aACA,mBACA,8BACA,iBAEA,uDACE,eACA,iBACA,UAIJ,6BACE,eACA,oBACA,UACA,mBAGF,uCNzBA,uCACA,0BACA,gEACA,qBAQE,UAQA,wBMUF,iCN7BA,4BACA,0BACA,gEACA,uBM4BE,mCACE,iBAIJ,sCACE,gBAGF,iCACE,gBAKE,uDACE,WACA,kBNhDN,0BACA,0BACA,gEACA,sBMiDI,6CACE,QNrDN,0BACA,0BACA,gEACA,sBMyDE,oDACE,UCjGF,oDACE,oBACA,YAIJ,oCACE,QACA,gBP4BF,kCACA,0BACA,gEACA,sBO3BI,uDACE,yBAIA,iEACE,wBAMR,0CACE,4CACA,gBAEA,+CACE,aAGF,6CACE,qBAGF,wDACE,oBACA,oBCvCR,iBACE,WACA,2BAEA,2BACE,MACA,aACA,WACA,WAEA,gCACE,iBACA,wBAGF,sCACE,gBACA,kBAGF,0CACE,aAGF,4CACE,gBAEA,kDACE,kBACA,QACA,QACA,UACA,eACA,iCACA,2BAGF,2DACE,YACA,iCAKF,+CRPF,uCACA,0BACA,gEACA,qBQMI,WACA,WACA,UACA,UACA,SACA,SAIA,qDACE,UACA,WACA,OAMJ,kDR3BF,uCACA,0BACA,gEACA,qBQ0BI,WACA,WACA,UACA,UACA,SACA,SAIA,wDACE,UACA,WACA,OAOF,8CACE,wBAIA,wDACE,yBAKN,mKRlEF,OACA,UACA,yBACA,QQqEE,iDACE,aAGF,0CACE,YAEA,4CACE,iBACA,SAKN,0CACE,iBAGF,qCACE,YAEA,wCACE,gBACA,WACA,YAEA,sDACE,YACA,aACA,mBAEA,yEACE,WAGF,2DACE,iBACA,WAEA,8EACE,QACA,WAGF,qFACE,aAGF,oFACE,sCAGF,iEACE,gBACA,kBAEA,qFACE,WAGF,wFACE,WAIJ,qEACE,gBACA,gBAEA,gLAEE,aAOV,+CR/IF,+BACA,0BACA,gEACA,qBQ+II,mKAGE,iBAGE,iPRxJR,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ6IM,wEACE,SAGF,gFRpKR,uCACA,0BACA,gEACA,uBAME,UAUA,wBQsJQ,sFRzKV,uCACA,0BACA,gEACA,uBAQE,UAQA,wBQ+JE,0DACE,WACA,cAEA,iMAGE,cAMJ,kDACE,aAIJ,sDACE,mBACA,iBACA,gBAKN,iCACE,WACA,kBACA,iCACA,sBACA,wBRjNA,+BACA,0BACA,gEACA,qBQiNA,2EAEE,WAGF,mDACE,YAGF,sCACE,WACA,aACA,oCAIJ,+BACE,yBACA,cACA,sBLoeJ,YACE,kBACA,wCAEA,oBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,0BACE,MACA,SAKN,eACE,kBACA,wCAEA,uBACE,WACA,UACA,kBACA,QACA,WACA,OACA,yBACA,wGAKA,6BACE,MACA","file":"app.css"} \ No newline at end of file diff --git a/scss/app.scss b/scss/app.scss index a5343b6..5ef6af0 100644 --- a/scss/app.scss +++ b/scss/app.scss @@ -484,9 +484,6 @@ html { } .show-actions { - position: relative; - flex-shrink: 0; - &:hover, &.hover, &.active { diff --git a/scss/horizontal.scss b/scss/horizontal.scss index 83c75ea..c3cba4f 100644 --- a/scss/horizontal.scss +++ b/scss/horizontal.scss @@ -5,6 +5,7 @@ justify-content: flex-start; .viewport { + top: 0; display: flex; width: 100%; z-index: 20; @@ -113,42 +114,6 @@ top: 1rem; } } - - .show-actions { - overflow: hidden; - - &:hover, - &.hover, - &.active { - overflow: visible; - - i, - .text-animation, - .action-menu-tool, - span { - opacity: 1; - visibility: visible; - } - - .layouts-nav { - .icon-size-16 { - opacity: 1; - visibility: visible; - } - } - - .layout-menu-tool li { - &:first-of-type { - animation: none; - border-right: 0; - } - - &:last-of-type { - animation: none; - } - } - } - } } .favorites-nav { @@ -161,6 +126,7 @@ li { flex-basis: 59px; width: 60px; + height: 3rem; &.favorites-nav { flex-grow: 1; @@ -217,6 +183,7 @@ .nav-item { @include transition("flex-basis", 0); + &.is-active, &.hover, &:hover { flex-basis: 11rem; @@ -248,12 +215,6 @@ } .layout-menu-tool { - top: 100%; - flex-direction: column; - height: 6rem; - border: none; - background-color: var(--t42-body); - li { width: 100%; flex: 0 1 auto; diff --git a/scss/top.scss b/scss/top.scss index 6e1d5b0..f5a6ccc 100644 --- a/scss/top.scss +++ b/scss/top.scss @@ -5,12 +5,6 @@ top: auto !important; bottom: 100%; } - - .layouts-nav { - .layout-menu-tool { - top: calc(-6rem + 2px); - } - } } .viewport { From 39a752c73a87cd3882c705b3195ba591a00283f4 Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Fri, 15 Nov 2024 12:26:57 +0200 Subject: [PATCH 4/9] G4E-8461 - Fixed top, left positioning of window. Feature implemented. --- js/utils.js | 13 ++++++++++--- js/window-sizing.js | 23 ++++++++++++----------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/js/utils.js b/js/utils.js index 9ac5758..ed8fea1 100644 --- a/js/utils.js +++ b/js/utils.js @@ -169,10 +169,13 @@ function handleTopDropdownClicks() { .addEventListener('click', () => { if (app.classList.contains('expanded')) { if ( - !document.querySelector('.dropdown-menu').classList.contains('show') - ) { + !document + .querySelector('.dropdown-menu') + .classList.contains('show') || + app.classList.contains('has-drawer') + ) return; - } + app.classList.remove('expanded'); } else { app.classList.add('expanded'); @@ -244,6 +247,10 @@ function handleTopMenuClicks() { document .querySelector('.app') .classList.add('has-drawer', `open-${openDirection}`); + + if (!isVertical) { + document.querySelector('.app').classList.add('expanded'); + } } else { document.querySelector('.app').classList.remove('has-drawer'); diff --git a/js/window-sizing.js b/js/window-sizing.js index e2be6a7..7651c26 100644 --- a/js/window-sizing.js +++ b/js/window-sizing.js @@ -1,6 +1,6 @@ import { toolbarWidth, toolbarDrawerSize } from './settings.js'; import { getAppState, getHorizontalToolbarHeight } from './utils.js'; -import { moveMyWindow } from './connect-related.js'; +import { moveMyWindow, getScaleFactor } from './connect-related.js'; const prevBounds = { top: 0, @@ -34,12 +34,11 @@ async function setWindowBounds() { const isOpenLeft = classNames.includes('open-left'); const isOpenTop = classNames.includes('open-top'); - console.log('Setting window bounds:', classNames); - const toolbarHeight = getHorizontalToolbarHeight(); const expandedToolbarWidth = 200; const newBounds = {}; const { appBounds, visibleArea } = await getAppState(); + const scaleFactor = await getScaleFactor(); function setVerticalSize() { newBounds.width = hasDrawer @@ -58,17 +57,19 @@ async function setWindowBounds() { if (isOpenLeft) { hadOpenLeft = true; - newBounds.left = appBounds.left - toolbarDrawerSize.vertical; + newBounds.left = + appBounds.left - toolbarDrawerSize.vertical / scaleFactor; } if (hadOpenLeft && !isOpenLeft) { - newBounds.left = appBounds.left + toolbarDrawerSize.vertical; + newBounds.left = + appBounds.left + toolbarDrawerSize.vertical / scaleFactor; hadOpenLeft = false; } } function setHorizontalSize() { - const horizontalHeight = getHorizontalToolbarHeight(); + const horizontalHeight = getHorizontalToolbarHeight() / scaleFactor; newBounds.width = toolbarWidth.horizontal; newBounds.height = hasDrawer ? toolbarHeight : isExpanded ? 175 : 48; @@ -78,18 +79,18 @@ async function setWindowBounds() { if (isExpanded && hadOpenTop) { wasExpanded = true; - newBounds.top = prevBounds.top; - } else if (wasExpanded && !isExpanded) { + newBounds.top = appBounds.top + visibleArea.height - horizontalHeight; + } + + if (wasExpanded && !isExpanded) { wasExpanded = false; newBounds.top = prevBounds.top; - } else { - newBounds.top = appBounds.top + visibleArea.height - horizontalHeight; } } if (hadOpenTop && !isOpenTop) { - newBounds.top = appBounds.top - visibleArea.height + horizontalHeight; hadOpenTop = false; + newBounds.top = appBounds.top - visibleArea.height + horizontalHeight; } } From 7f48224f6adf2747524fa27f9c77cb4a7615cb00 Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Fri, 15 Nov 2024 16:12:22 +0200 Subject: [PATCH 5/9] G4E-8135 - Issue fixed. --- js/index.js | 2 +- js/schedule-shutdown-restart.js | 36 ++++++++++++++++++++++++++++++++- js/settings.js | 27 ++++++++----------------- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/js/index.js b/js/index.js index c15f6ef..d49380d 100644 --- a/js/index.js +++ b/js/index.js @@ -32,7 +32,7 @@ import { } from './clients-and-instrument-search.js'; import { getSetting } from './settings.js'; import { populateSID } from './profile.js'; -import handleScheduledShutdownRestart from './schedule-shutdown-restart.js'; +import { handleScheduledShutdownRestart } from './schedule-shutdown-restart.js'; import { setWindowBounds } from './window-sizing.js'; const rxjs = window.rxjs; diff --git a/js/schedule-shutdown-restart.js b/js/schedule-shutdown-restart.js index 2e157e9..9e0f9f0 100644 --- a/js/schedule-shutdown-restart.js +++ b/js/schedule-shutdown-restart.js @@ -449,6 +449,7 @@ async function setInputStatesOnChange(option, checked) { periodDropdown.classList.add('disabled'); intervalDropdown.classList.add('disabled'); container.classList.add('d-none'); + try { await cancelSchedule(option); } catch (e) { @@ -493,6 +494,7 @@ async function handleScheduleToggleClick() { period: prevSettings[option].period, interval: prevSettings[option].interval, }); + try { await setSchedule(option, parsedString); } catch (e) { @@ -510,6 +512,38 @@ async function handleScheduleToggleClick() { }); } +async function scheduleShutdownRestartSaveLayout() { + const schedule = getSetting('schedule'); + const scheduleArray = Object.entries(schedule).map(([key, value]) => ({ + key, + ...value, + })); + + scheduleArray.forEach(async (setting) => { + const option = setting.key; + + if (setting.enable) { + const parsedString = parseScheduleToString({ + time: schedule[option].time, + period: schedule[option].period, + interval: schedule[option].interval, + }); + + try { + await setSchedule(option, parsedString); + } catch (e) { + console.error(e); + } + } else { + try { + await cancelSchedule(option); + } catch (e) { + console.error(e); + } + } + }); +} + async function handleScheduledShutdownRestart() { const options = ['shutdown', 'restart']; @@ -525,4 +559,4 @@ async function handleScheduledShutdownRestart() { .catch(console.error); } -export default handleScheduledShutdownRestart; +export { handleScheduledShutdownRestart, scheduleShutdownRestartSaveLayout }; diff --git a/js/settings.js b/js/settings.js index 97d06e3..06ce184 100644 --- a/js/settings.js +++ b/js/settings.js @@ -1,4 +1,5 @@ import { updatePrefs } from './connect-related.js'; +import { scheduleShutdownRestartSaveLayout } from './schedule-shutdown-restart.js'; let settings = { showTutorial: true, @@ -108,7 +109,9 @@ function trackSettingsChange() { setting[settingElement.dataset.setting] = e.target.checked; - if ( + if (e.target.dataset.setting === 'saveDefaultLayout') { + scheduleShutdownRestartSaveLayout(e.target.checked); + } else if ( e.target.dataset.setting === 'enableNotifications' && e.target.checked === false ) { @@ -118,17 +121,10 @@ function trackSettingsChange() { setting = { schedule: { - shutdown: { - enable: prevSetting.shutdown.enable, - time: prevSetting.shutdown.time, - period: prevSetting.shutdown.period, - interval: prevSetting.shutdown.interval, - }, + shutdown: { ...prevSetting.shutdown }, restart: { + ...prevSetting.restart, enable: e.target.checked, - time: prevSetting.restart.time, - period: prevSetting.restart.period, - interval: prevSetting.restart.interval, }, }, }; @@ -137,18 +133,11 @@ function trackSettingsChange() { setting = { schedule: { - restart: { - enable: prevSetting.restart.enable, - time: prevSetting.restart.time, - period: prevSetting.restart.period, - interval: prevSetting.restart.interval, - }, shutdown: { + ...prevSetting.shutdown, enable: e.target.checked, - time: prevSetting.shutdown.time, - period: prevSetting.shutdown.period, - interval: prevSetting.shutdown.interval, }, + restart: { ...prevSetting.restart }, }, }; } From edd69127e3fa98ede8f5cbd9e491afb0988ecefb Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Tue, 14 Jan 2025 18:09:32 +0200 Subject: [PATCH 6/9] G4E-8250 - Issue fixed. --- app-config.json | 6 +++-- js/connect-related.js | 51 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/app-config.json b/app-config.json index 2f1e0bc..f8691c9 100644 --- a/app-config.json +++ b/app-config.json @@ -13,8 +13,10 @@ }, "url": "file://%GDDIR%/assets/app-toolbar/index.html", "mode": "frameless", - "top": 5, - "left": 5, + "top": 100, + "left": 100, + "width": 58, + "height": 48, "isSticky": false, "allowClose": false, "allowMaximize": false, diff --git a/js/connect-related.js b/js/connect-related.js index a95f621..76561e4 100644 --- a/js/connect-related.js +++ b/js/connect-related.js @@ -396,18 +396,59 @@ const showHideNotificationBadge = (flag) => { async function openNotificationPanel() { const glue = await gluePromise; - const panelApp = glue.windows.find( - 'io-connect-notifications-panel-application' - ); + const isPanelVisible = await glue.notifications.panel.isVisible(); + + if (isPanelVisible) { + return; + } try { await glue.notifications.panel.show(); - await panelApp.focus(); + + const panelApp = await waitForPanelApp( + glue, + 'io-connect-notifications-panel-application', + 5000 + ); + + if (!panelApp) { + console.error('Notifications panel application failed to initialize.'); + return; + } + + await panelApp.show().catch((error) => { + console.error('Failed to show notifications panel.', error); + }); + + await panelApp.focus().catch((error) => { + console.error('Failed to focus notifications panel.', error); + }); } catch (error) { - console.error('Failed to open notification panel.', error); + console.error('Failed to open notifications panel.', error); } } +async function waitForPanelApp( + glue, + windowName, + timeout = 5000, + interval = 100 +) { + const startTime = Date.now(); + + while (Date.now() - startTime < timeout) { + const panelApp = glue.windows.find(windowName); + + if (panelApp) { + return panelApp; + } + + await new Promise((resolve) => setTimeout(resolve, interval)); + } + + return null; +} + async function openFeedbackForm() { const glue = await gluePromise; From 6e91765e5cfe68037212e8f4fbe5bf7d4db3e9fd Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Fri, 11 Apr 2025 16:09:39 +0300 Subject: [PATCH 7/9] G4E-8250 - Issue fixed. --- js/connect-related.js | 42 +----------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/js/connect-related.js b/js/connect-related.js index 76561e4..68b612f 100644 --- a/js/connect-related.js +++ b/js/connect-related.js @@ -10,7 +10,7 @@ console.time('Glue'); const rxjs = window.rxjs; -var gluePromise = new Promise(async (res, rej) => { +const gluePromise = new Promise(async (res, rej) => { window.addEventListener('load', async () => { let glue = await Glue({ appManager: 'full', @@ -404,51 +404,11 @@ async function openNotificationPanel() { try { await glue.notifications.panel.show(); - - const panelApp = await waitForPanelApp( - glue, - 'io-connect-notifications-panel-application', - 5000 - ); - - if (!panelApp) { - console.error('Notifications panel application failed to initialize.'); - return; - } - - await panelApp.show().catch((error) => { - console.error('Failed to show notifications panel.', error); - }); - - await panelApp.focus().catch((error) => { - console.error('Failed to focus notifications panel.', error); - }); } catch (error) { console.error('Failed to open notifications panel.', error); } } -async function waitForPanelApp( - glue, - windowName, - timeout = 5000, - interval = 100 -) { - const startTime = Date.now(); - - while (Date.now() - startTime < timeout) { - const panelApp = glue.windows.find(windowName); - - if (panelApp) { - return panelApp; - } - - await new Promise((resolve) => setTimeout(resolve, interval)); - } - - return null; -} - async function openFeedbackForm() { const glue = await gluePromise; From 6f8adae665e2e5bb537c111907c5e65203f45b58 Mon Sep 17 00:00:00 2001 From: Galin Iliev Date: Thu, 17 Apr 2025 14:54:24 +0300 Subject: [PATCH 8/9] G4E-8271 - Issue fuxed. UL id's added. --- index.html | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index fe24577..0c6d6ce 100644 --- a/index.html +++ b/index.html @@ -27,7 +27,7 @@
-
-
    +
    • System
-
    +
    • System
-
    +
    • System
-
    +
    • System
-
    +
    • Profile
Select Theme
-
    +
    • Date: Fri, 18 Jul 2025 17:08:13 +0300 Subject: [PATCH 9/9] G4E-8409 - Add onShuttingDown check and handle correct window sizing on shutdown and restart. --- app-config.json | 96 +++++++++++++++++++++---------------------- js/connect-related.js | 29 +++++++++++++ 2 files changed, 77 insertions(+), 48 deletions(-) diff --git a/app-config.json b/app-config.json index f8691c9..b8509a8 100644 --- a/app-config.json +++ b/app-config.json @@ -1,49 +1,49 @@ -{ - "title": "AppManager-Embedded", - "type": "window", - "name": "io-connect-toolbar", - "shell": true, - "details": { - "autoInjectAPI": { - "enabled": true, - "autoInit": { - "appManager": "full", - "layouts": "fullWaitSnapshot" - } - }, - "url": "file://%GDDIR%/assets/app-toolbar/index.html", - "mode": "frameless", - "top": 100, - "left": 100, - "width": 58, - "height": 48, - "isSticky": false, - "allowClose": false, - "allowMaximize": false, - "allowMinimize": false, - "allowCollapse": false, - "moveAreaPassThroughMouseHover": true, - "nativeWindowOpen": "off", - "zoom": { - "enabled": false - }, - "search": { - "enabled": false - }, - "taskbar": { - "allowPin": true, - "appId": "io-connect-toolbar" - }, - "jumpList": { - "enabled": true - } - }, - "autoStart": true, - "allowMultiple": false, - "ignoreSavedLayout": false, - "customProperties": { - "hideFeedbackButton": true, - "hideProfileButton": false, - "hideTutorialOnStartup": false - } +{ + "title": "AppManager-Embedded", + "type": "window", + "name": "io-connect-toolbar", + "shell": true, + "details": { + "autoInjectAPI": { + "enabled": true, + "autoInit": { + "appManager": "full", + "layouts": "fullWaitSnapshot" + } + }, + "url": "file://%GDDIR%/assets/app-toolbar/index.html", + "mode": "frameless", + "top": 100, + "left": 100, + "width": 60, + "height": 48, + "isSticky": false, + "allowClose": false, + "allowMaximize": false, + "allowMinimize": false, + "allowCollapse": false, + "moveAreaPassThroughMouseHover": true, + "nativeWindowOpen": "off", + "zoom": { + "enabled": false + }, + "search": { + "enabled": false + }, + "taskbar": { + "allowPin": true, + "appId": "io-connect-toolbar" + }, + "jumpList": { + "enabled": true + } + }, + "autoStart": true, + "allowMultiple": false, + "ignoreSavedLayout": false, + "customProperties": { + "hideFeedbackButton": true, + "hideProfileButton": false, + "hideTutorialOnStartup": false + } } \ No newline at end of file diff --git a/js/connect-related.js b/js/connect-related.js index 68b612f..3891541 100644 --- a/js/connect-related.js +++ b/js/connect-related.js @@ -3,6 +3,7 @@ import { getSetting, getSettings, setSetting, + toolbarWidth, } from './settings.js'; import { setOrientation } from './utils.js'; @@ -59,6 +60,7 @@ gluePromise.then(() => { trackConnection(); trackNotificationCount(); trackNotificationPanelVisibilityChange(); + trackPlatformShutdown(); }); async function trackApplications() { @@ -167,6 +169,33 @@ async function trackThemeChanges() { }); } +async function trackPlatformShutdown() { + const glue = await gluePromise; + const app = document.querySelector('.app'); + const viewport = document.querySelector('.viewport'); + + const unSubscribe = glue.appManager.onShuttingDown(async () => { + try { + const isVertical = app.classList.contains('vertical'); + const bounds = glue.windows.my().bounds; + + await moveMyWindow({ + left: bounds.left, + top: bounds.top, + width: isVertical ? toolbarWidth.vertical : bounds.width, + height: isVertical ? bounds.height : 48, + }); + + app.classList.remove('expanded', 'has-drawer'); + viewport.classList.remove('expand'); + } catch (error) { + console.error('Failed to set default window size before shutdown', error); + } + }); + + return () => unSubscribe(); +} + async function trackNotificationPanelVisibilityChange() { const glue = await gluePromise; const notificationPanel = document.querySelector('#notification-panel');