2020-12-15 00:26:19 +01:00
|
|
|
<template>
|
2022-06-11 15:40:36 +02:00
|
|
|
<div
|
|
|
|
v-if="uwTriggerZoneVisible"
|
|
|
|
class="uw-hover uv-hover-trigger-region uw-clickable"
|
|
|
|
:style="uwTriggerRegionConf"
|
|
|
|
@mouseenter="showUwWindow"
|
|
|
|
>
|
|
|
|
<h1>Aspect ratio controls</h1>
|
|
|
|
<div>Hover to activate</div>
|
2020-12-17 01:49:28 +01:00
|
|
|
</div>
|
2022-06-11 15:40:36 +02:00
|
|
|
<div
|
|
|
|
v-if="uwWindowVisible"
|
|
|
|
class="popup-panel flex flex-column uw-clickable"
|
|
|
|
:class="{'fade-out': uwWindowFadeOut}"
|
|
|
|
@mouseenter="cancelUwWindowHide"
|
|
|
|
@mouseleave="hideUwWindow"
|
|
|
|
>
|
2022-03-28 23:14:52 +02:00
|
|
|
<div class="popup-window-header">
|
2021-10-22 00:30:56 +02:00
|
|
|
<div class="popup-title">Ultrawidify <small>{{settings?.active?.version}} - {{BrowserDetect.processEnvChannel}}</small></div>
|
2021-11-21 02:08:53 +01:00
|
|
|
<div class="site-support-info">
|
|
|
|
<div class="site-support-site">{{site}}</div>
|
|
|
|
<div v-if="siteSupportLevel === 'official'" class="site-support official">
|
2022-01-29 16:23:40 +01:00
|
|
|
<mdicon name="check-decagram" />
|
2022-03-29 02:01:03 +02:00
|
|
|
<div>Verified</div>
|
2021-11-21 02:08:53 +01:00
|
|
|
<div class="tooltip">The extension is being tested and should work on this site.</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
|
|
|
<div v-if="siteSupportLevel === 'community'" class="site-support community">
|
|
|
|
<mdicon name="handshake" />
|
2021-11-21 02:08:53 +01:00
|
|
|
<div>Community</div>
|
|
|
|
<div class="tooltip">
|
|
|
|
People say extension works on this site (or have provided help getting the extension to work if it didn't).<br/><br/>
|
|
|
|
Tamius (the dev) does not test the extension on this site, probably because it requires a subscription or
|
|
|
|
is geoblocked.
|
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
2021-11-21 02:08:53 +01:00
|
|
|
<div v-if="siteSupportLevel === 'no-support'" class="site-support no-support">
|
2021-10-22 00:30:56 +02:00
|
|
|
<mdicon name="help-circle-outline" />
|
2021-11-21 02:08:53 +01:00
|
|
|
<div>Unknown</div>
|
|
|
|
<div class="tooltip">
|
|
|
|
Not officially supported. Extension will try to fix things, but no promises.<br/><br/>
|
|
|
|
Tamius (the dev) does not test the extension on this site for various reasons
|
2022-03-29 02:01:03 +02:00
|
|
|
(unaware, not using the site, language barrier, geoblocking, paid services Tam doesn't use).
|
2021-11-21 02:08:53 +01:00
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
|
|
|
<div v-if="siteSupportLevel === 'user-added'" class="site-support user-added">
|
2022-06-09 01:29:26 +02:00
|
|
|
<mdicon name="account" />
|
2021-11-21 02:08:53 +01:00
|
|
|
<div>Custom</div>
|
|
|
|
<div class="tooltip">
|
|
|
|
You have manually changed settings for this site. The extension is doing what you told it to do.
|
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
|
|
|
<mdicon v-if="siteSupportLevel === 'community'" class="site-support supported" name="checkbox-marked-circle" />
|
2021-10-19 22:49:56 +02:00
|
|
|
</div>
|
2022-06-15 00:43:36 +02:00
|
|
|
<div><a @click="uwWindowFadeOutDisabled = !uwWindowFadeOutDisabled">{{uwWindowFadeOutDisabled ? 'allow auto-close' : 'prevent auto-close'}}</a></div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
2022-07-26 23:55:39 +02:00
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
<div class="tab-main flex flex-row">
|
2021-10-22 00:30:56 +02:00
|
|
|
<div class="tab-row flex flex-column">
|
2021-11-21 02:08:53 +01:00
|
|
|
<div
|
2022-03-28 23:14:52 +02:00
|
|
|
v-for="tab of tabs"
|
|
|
|
:key="tab.id"
|
2021-11-21 02:08:53 +01:00
|
|
|
class="tab"
|
2022-03-28 23:14:52 +02:00
|
|
|
:class="{'active': tab.id === selectedTab}"
|
|
|
|
@click="selectTab(tab.id)"
|
2021-11-21 02:08:53 +01:00
|
|
|
>
|
2022-03-28 23:14:52 +02:00
|
|
|
<div class="icon-container">
|
|
|
|
<mdicon
|
|
|
|
:name="tab.icon"
|
2022-06-15 00:43:36 +02:00
|
|
|
:size="32"
|
2022-03-28 23:14:52 +02:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div class="label">
|
|
|
|
{{tab.label}}
|
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
2021-10-19 22:49:56 +02:00
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
<div class="content flex flex-column">
|
|
|
|
<!-- autodetection warning -->
|
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
<div class="warning-area">
|
2022-07-28 00:45:27 +02:00
|
|
|
<div
|
|
|
|
v-if="statusFlags.hasDrm"
|
|
|
|
class="warning-box"
|
|
|
|
>
|
2022-06-15 00:43:36 +02:00
|
|
|
<div class="icon-container">
|
|
|
|
<mdicon name="alert" :size="32" />
|
|
|
|
</div>
|
2021-10-22 00:30:56 +02:00
|
|
|
<div>
|
2022-06-15 00:43:36 +02:00
|
|
|
This site is blocking automatic aspect ratio detection. You will have to adjust aspect ratio manually.<br/>
|
|
|
|
<a>Learn more ...</a>
|
2021-10-22 00:30:56 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
<div class="flex flex-row panel-content">
|
2021-10-22 00:30:56 +02:00
|
|
|
<!-- Panel section -->
|
|
|
|
<template v-if="settingsInitialized">
|
|
|
|
<VideoSettings
|
2022-06-09 01:29:26 +02:00
|
|
|
v-if="selectedTab === 'videoSettings'"
|
2021-10-22 00:30:56 +02:00
|
|
|
:settings="settings"
|
2022-03-29 01:53:16 +02:00
|
|
|
:eventBus="eventBus"
|
|
|
|
:site="site"
|
2021-10-22 00:30:56 +02:00
|
|
|
></VideoSettings>
|
2022-06-09 01:29:26 +02:00
|
|
|
<PlayerDetectionPanel
|
|
|
|
v-if="selectedTab === 'playerDetection'"
|
2022-06-10 00:22:06 +02:00
|
|
|
:settings="settings"
|
|
|
|
:eventBus="eventBus"
|
|
|
|
:site="site"
|
2022-06-09 01:29:26 +02:00
|
|
|
>
|
|
|
|
</PlayerDetectionPanel>
|
2022-07-13 00:21:21 +02:00
|
|
|
<AutodetectionSettingsPanel
|
|
|
|
v-if="selectedTab === 'autodetectionSettings'"
|
|
|
|
:settings="settings"
|
|
|
|
:eventBus="eventBus"
|
|
|
|
:site="site"
|
|
|
|
>
|
|
|
|
</AutodetectionSettingsPanel>
|
2022-07-27 01:16:14 +02:00
|
|
|
<DebugPanel
|
|
|
|
v-if="selectedTab === 'debugging'"
|
|
|
|
:settings="settings"
|
|
|
|
:eventBus="eventBus"
|
|
|
|
:site="site"
|
|
|
|
></DebugPanel>
|
2021-10-22 00:30:56 +02:00
|
|
|
<!-- <ResizerDebugPanel :debugData="debugData">
|
|
|
|
</ResizerDebugPanel> -->
|
|
|
|
</template>
|
|
|
|
</div>
|
2021-10-19 22:49:56 +02:00
|
|
|
</div>
|
2021-01-21 00:21:15 +01:00
|
|
|
</div>
|
2020-12-15 00:26:19 +01:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2022-07-27 01:16:14 +02:00
|
|
|
import DebugPanel from './src/PlayerUiPanels/DebugPanel.vue'
|
2022-01-07 00:50:58 +01:00
|
|
|
import VideoSettings from './src/PlayerUiPanels/VideoSettings.vue'
|
2022-07-13 00:21:21 +02:00
|
|
|
import AutodetectionSettingsPanel from './src/PlayerUiPanels/AutodetectionSettingsPanel.vue'
|
2022-06-09 01:29:26 +02:00
|
|
|
import PlayerDetectionPanel from './src/PlayerUiPanels/PlayerDetectionPanel.vue'
|
2020-12-15 00:26:19 +01:00
|
|
|
import { mapState } from 'vuex';
|
2021-10-22 00:30:36 +02:00
|
|
|
// import Icon from '../common/components/Icon';
|
2022-01-07 00:50:58 +01:00
|
|
|
import ResizerDebugPanel from './src/PlayerUiPanels/ResizerDebugPanelComponent';
|
2021-01-21 00:21:15 +01:00
|
|
|
import BrowserDetect from '../ext/conf/BrowserDetect';
|
2022-01-07 00:50:58 +01:00
|
|
|
import ExecAction from './src/ui-libs/ExecAction';
|
2021-01-21 00:21:15 +01:00
|
|
|
import Logger from '../ext/lib/Logger';
|
|
|
|
import Settings from '../ext/lib/Settings';
|
2022-03-29 01:53:16 +02:00
|
|
|
import EventBus from '../ext/lib/EventBus';
|
2020-12-15 00:26:19 +01:00
|
|
|
|
|
|
|
export default {
|
|
|
|
components: {
|
2021-10-22 00:30:36 +02:00
|
|
|
// Icon,
|
2022-06-09 01:29:26 +02:00
|
|
|
ResizerDebugPanel,
|
|
|
|
VideoSettings,
|
2022-07-13 00:21:21 +02:00
|
|
|
PlayerDetectionPanel,
|
2022-07-27 01:16:14 +02:00
|
|
|
AutodetectionSettingsPanel, DebugPanel
|
2020-12-15 00:26:19 +01:00
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
2022-06-11 15:40:36 +02:00
|
|
|
uwTriggerZoneVisible: false,
|
|
|
|
uwTriggerZoneTimeout: undefined,
|
|
|
|
uwTriggerRegionConf: {
|
|
|
|
left: "10%",
|
|
|
|
top: "10%",
|
|
|
|
height: "30%",
|
|
|
|
width: "30%",
|
|
|
|
maxWidth: "24rem",
|
|
|
|
maxHeight: "13.37rem",
|
|
|
|
},
|
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
uwWindowFadeOutDisabled: false,
|
2022-06-11 15:40:36 +02:00
|
|
|
uwWindowFadeOut: false,
|
|
|
|
uwWindowCloseTimeout: undefined,
|
|
|
|
uwWindowVisible: false,
|
|
|
|
|
2021-01-21 00:21:15 +01:00
|
|
|
// component properties
|
|
|
|
settings: {},
|
2021-10-22 00:30:56 +02:00
|
|
|
BrowserDetect: BrowserDetect,
|
2021-01-21 00:21:15 +01:00
|
|
|
settingsInitialized: false,
|
|
|
|
execAction: new ExecAction(),
|
2022-03-29 01:53:16 +02:00
|
|
|
eventBus: new EventBus(),
|
2021-01-21 00:21:15 +01:00
|
|
|
logger: null,
|
|
|
|
|
2022-03-21 00:50:03 +01:00
|
|
|
// NOTE: chromium doesn't allow us to access window.parent.location
|
|
|
|
// meaning we will have to correct this value from our uwui-probe
|
|
|
|
// messages ... which is a bummer.
|
|
|
|
site: null,
|
2022-03-22 01:23:15 +01:00
|
|
|
origin: '*', // will be set appropriately once the first uwui-probe event is received
|
2022-03-20 20:44:50 +01:00
|
|
|
lastProbeTs: null,
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2020-12-16 00:19:02 +01:00
|
|
|
uiVisible: true,
|
|
|
|
debugData: {
|
|
|
|
resizer: {},
|
|
|
|
player: {},
|
2020-12-16 01:40:09 +01:00
|
|
|
},
|
2022-03-28 23:14:52 +02:00
|
|
|
debugDataPrettified: '',
|
|
|
|
|
2022-07-28 00:45:27 +02:00
|
|
|
statusFlags: {
|
|
|
|
hasDrm: undefined,
|
|
|
|
},
|
|
|
|
|
2022-03-28 23:14:52 +02:00
|
|
|
tabs: [
|
|
|
|
{id: 'videoSettings', label: 'Video settings', icon: 'crop'},
|
2022-06-14 23:20:26 +02:00
|
|
|
{id: 'playerDetection', label: 'Player detection', icon: 'television-play'},
|
2022-03-28 23:14:52 +02:00
|
|
|
{id: 'autodetectionSettings', label: 'Autodetection options', icon: ''},
|
|
|
|
{id: 'advancedOptions', label: 'Advanced options', icon: 'cogs' },
|
|
|
|
{id: 'debugging', label: 'Debugging', icon: 'bug-outline' }
|
|
|
|
],
|
|
|
|
selectedTab: 'videoSettings',
|
2020-12-15 00:26:19 +01:00
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: {
|
2021-11-21 02:08:53 +01:00
|
|
|
// LPT: NO ARROW FUNCTIONS IN COMPUTED,
|
|
|
|
// IS SUPER HARAM
|
|
|
|
// THINGS WILL NOT WORK IF YOU USE ARROWS
|
|
|
|
windowWidth() {
|
2020-12-16 01:40:09 +01:00
|
|
|
return window.innerWidth;
|
|
|
|
},
|
2021-11-21 02:08:53 +01:00
|
|
|
windowHeight() {
|
2020-12-16 01:40:09 +01:00
|
|
|
return window.innerHeight;
|
|
|
|
},
|
2021-11-21 02:08:53 +01:00
|
|
|
siteSupportLevel() {
|
2022-03-28 23:14:52 +02:00
|
|
|
// console.warn('\n\n\n\n\n\n\n\n\n\n\nsite support level. site:', this, this?.site, this?.settings, this?.settings?.active?.sites[this.site]);
|
2021-11-21 02:08:53 +01:00
|
|
|
return (this.site && this.settings?.active) ? this.settings.active.sites[this.site]?.type || 'no-support' : 'waiting';
|
|
|
|
}
|
2020-12-15 00:26:19 +01:00
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
showUi(visible) {
|
|
|
|
if (visible !== undefined) {
|
|
|
|
this.uiVisible = visible;
|
|
|
|
}
|
2020-12-16 00:19:02 +01:00
|
|
|
},
|
|
|
|
resizerDebugData(newData) {
|
|
|
|
this.debugData.resizer = newData;
|
2020-12-16 01:40:09 +01:00
|
|
|
this.debugDataPrettified = JSON.stringify(this.debugData, null, 2);
|
2020-12-16 00:19:02 +01:00
|
|
|
},
|
|
|
|
playerDebugData(newData) {
|
|
|
|
this.debugData.player = newData;
|
2020-12-16 01:40:09 +01:00
|
|
|
this.debugDataPrettified = JSON.stringify(this.debugData, null, 2);
|
2020-12-15 00:26:19 +01:00
|
|
|
}
|
|
|
|
},
|
2022-03-20 20:43:49 +01:00
|
|
|
|
2021-01-21 00:21:15 +01:00
|
|
|
async created() {
|
2022-03-22 01:23:15 +01:00
|
|
|
this.logger = new Logger();
|
|
|
|
await this.logger.init({
|
|
|
|
allowLogging: true,
|
|
|
|
});
|
2021-01-21 00:21:15 +01:00
|
|
|
|
2022-03-22 01:23:15 +01:00
|
|
|
this.settings = new Settings({afterSettingsSaved: this.updateConfig, logger: this.logger});
|
|
|
|
await this.settings.init();
|
|
|
|
this.settingsInitialized = true;
|
2021-01-21 00:21:15 +01:00
|
|
|
|
2022-03-22 01:23:15 +01:00
|
|
|
// set up communication with client script
|
|
|
|
window.addEventListener('message', event => {
|
|
|
|
this.handleMessage(event);
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Setup the "companion" onMouseMove handler to the one in the content script.
|
|
|
|
* We can handle events with the same function we use to handle events from
|
|
|
|
* the content script.
|
|
|
|
*/
|
|
|
|
document.addEventListener('mousemove', (event) => {
|
|
|
|
this.handleProbe({
|
|
|
|
coords: {
|
|
|
|
x: event.clientX,
|
|
|
|
y: event.clientY
|
2022-03-21 00:50:03 +01:00
|
|
|
}
|
2022-03-22 01:23:15 +01:00
|
|
|
}, this.origin);
|
|
|
|
});
|
2022-07-28 00:45:27 +02:00
|
|
|
|
2022-07-30 00:47:11 +02:00
|
|
|
this.eventBus.subscribe('uw-config-broadcast', {function: (data) => {
|
2022-07-28 00:45:27 +02:00
|
|
|
if (data.type === 'drm-status') {
|
|
|
|
this.statusFlags.hasDrm = data.hasDrm;
|
|
|
|
}
|
2022-07-30 00:47:11 +02:00
|
|
|
}});
|
2020-12-15 00:26:19 +01:00
|
|
|
},
|
2022-03-21 00:50:03 +01:00
|
|
|
|
2020-12-15 00:26:19 +01:00
|
|
|
methods: {
|
2022-03-21 00:50:03 +01:00
|
|
|
/**
|
|
|
|
* Gets URL of the browser settings page (i think?)
|
|
|
|
*/
|
2020-12-22 03:14:03 +01:00
|
|
|
getUrl(url) {
|
2020-12-30 15:35:54 +01:00
|
|
|
return BrowserDetect.getURL(url);
|
2020-12-22 23:23:03 +01:00
|
|
|
},
|
2022-03-21 00:50:03 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Mostly intended to process messages received via window.addEventListener('message').
|
|
|
|
* This method should include minimal logic — instead, it should only route messages
|
|
|
|
* to the correct function down the line.
|
|
|
|
*/
|
|
|
|
handleMessage(event) {
|
2022-03-22 01:21:18 +01:00
|
|
|
if (event.data.action === 'uwui-probe') {
|
2022-03-21 00:50:03 +01:00
|
|
|
if (!this.site) {
|
2022-03-22 01:23:15 +01:00
|
|
|
this.origin = event.origin;
|
2022-03-21 00:50:03 +01:00
|
|
|
this.site = event.origin.split('//')[1];
|
|
|
|
}
|
|
|
|
this.handleProbe(event.data, event.origin);
|
2022-03-29 01:53:16 +02:00
|
|
|
} else if (event.data.action === 'uw-bus-tunnel') {
|
|
|
|
this.handleBusTunnelIn(event.data.payload);
|
2022-03-21 00:50:03 +01:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handles 'uwui-probe' events. It checks whether there's a clickable element under
|
|
|
|
* cursor, and sends a reply to the content scripts that indicates whether pointer-events
|
|
|
|
* property of the iframe should be set to capture or ignore the clicks.
|
|
|
|
*/
|
|
|
|
handleProbe(eventData, origin) {
|
|
|
|
if (eventData.ts < this.lastProbeTs) {
|
2022-03-22 01:23:15 +01:00
|
|
|
return; // i don't know if events can arrive out-of-order. Prolly not. We still check.
|
2022-03-21 00:50:03 +01:00
|
|
|
}
|
|
|
|
this.lastProbeTs = eventData.ts;
|
|
|
|
|
2022-06-11 15:40:36 +02:00
|
|
|
// show ultrawidify trigger zone and set it to vanish after 250ms
|
|
|
|
// but don't show the trigger zone behind an active popup
|
|
|
|
if (! this.uwWindowVisible) {
|
|
|
|
this.uwTriggerZoneVisible = true;
|
|
|
|
clearTimeout(this.uwTriggerZoneTimeout);
|
|
|
|
this.uwTriggerZoneTimeout = setTimeout(
|
|
|
|
() => this.uwTriggerZoneVisible = false,
|
|
|
|
250
|
2022-07-28 00:45:27 +02:00
|
|
|
);
|
2022-06-11 15:40:36 +02:00
|
|
|
}
|
|
|
|
|
2022-03-21 00:50:03 +01:00
|
|
|
/* we check if our mouse is hovering over an element.
|
|
|
|
*
|
|
|
|
* gentleman's agreement: elements with uw-clickable inside the iframe will
|
|
|
|
* toggle pointerEvents on the iframe from 'none' to 'auto'
|
|
|
|
* Children of uw-clickable events should also do that.
|
|
|
|
*
|
|
|
|
* TODO: rename uw-clickable to something else, since we pretty much need that on
|
|
|
|
* our top-level element.
|
|
|
|
*/
|
|
|
|
let isClickable = false;
|
|
|
|
let element = document.elementFromPoint(eventData.coords.x, eventData.coords.y);
|
|
|
|
|
|
|
|
while (element) {
|
|
|
|
if (element?.classList.contains('uw-clickable')) {
|
|
|
|
// we could set 'pointerEvents' here and now & simply use return, but that
|
|
|
|
// might cause us a problem if we ever try to add more shit to this function
|
|
|
|
isClickable = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
element = element.parentElement;
|
|
|
|
}
|
|
|
|
|
|
|
|
window.parent.postMessage(
|
|
|
|
{
|
2022-03-22 01:23:15 +01:00
|
|
|
action: 'uwui-clickable',
|
2022-03-21 00:50:03 +01:00
|
|
|
clickable: isClickable,
|
|
|
|
ts: +new Date()
|
|
|
|
},
|
|
|
|
origin
|
|
|
|
);
|
2022-03-22 01:23:15 +01:00
|
|
|
},
|
|
|
|
|
2022-06-11 15:40:36 +02:00
|
|
|
showUwWindow() {
|
|
|
|
this.uwWindowFadeOut = false;
|
|
|
|
this.uwWindowVisible = true;
|
|
|
|
this.uwTriggerZoneVisible = false;
|
2022-07-28 00:45:27 +02:00
|
|
|
|
|
|
|
// refresh DRM status
|
|
|
|
this.eventBus.send('get-drm-status');
|
2022-06-11 15:40:36 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
hideUwWindow() {
|
2022-06-15 00:43:36 +02:00
|
|
|
if (this.uwWindowFadeOutDisabled) {
|
|
|
|
return;
|
|
|
|
}
|
2022-06-11 15:40:36 +02:00
|
|
|
this.uwWindowCloseTimeout = setTimeout(() => this.uwWindowVisible = false, 1100);
|
|
|
|
this.uwWindowFadeOut = true;
|
|
|
|
},
|
|
|
|
|
|
|
|
cancelUwWindowHide() {
|
|
|
|
this.uwWindowFadeOut = false;
|
|
|
|
clearTimeout(this.uwWindowCloseTimeout);
|
|
|
|
},
|
|
|
|
|
2022-03-29 01:53:16 +02:00
|
|
|
handleBusTunnelIn(payload) {
|
|
|
|
this.eventBus.send(payload.action, payload.config);
|
|
|
|
},
|
|
|
|
|
2022-03-22 01:23:15 +01:00
|
|
|
selectTab(tab) {
|
2022-06-09 01:29:26 +02:00
|
|
|
this.selectedTab = tab;
|
2022-03-21 00:50:03 +01:00
|
|
|
}
|
2020-12-15 00:26:19 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import 'res/css/uwui-base.scss';
|
|
|
|
@import 'res/css/colors.scss';
|
|
|
|
@import 'res/css/font/overpass.css';
|
|
|
|
@import 'res/css/font/overpass-mono.css';
|
|
|
|
@import 'res/css/common.scss';
|
2022-03-29 01:53:16 +02:00
|
|
|
@import './src/res-common/_variables';
|
2022-01-29 16:23:40 +01:00
|
|
|
|
|
|
|
// .relative-wrapper {
|
|
|
|
// position: relative;
|
|
|
|
// width: 100%;
|
|
|
|
// height: 100%;
|
|
|
|
// }
|
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
.tab-main {
|
|
|
|
flex-grow: 1;
|
|
|
|
flex-shrink: 1;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.site-support-info {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
2022-03-28 23:14:52 +02:00
|
|
|
align-items: center;
|
2022-01-29 16:23:40 +01:00
|
|
|
|
|
|
|
.site-support-site {
|
2022-03-28 23:14:52 +02:00
|
|
|
font-size: 1.5em;
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.site-support {
|
|
|
|
display: inline-flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-03-28 23:14:52 +02:00
|
|
|
margin-left: 1rem;
|
2022-01-29 16:23:40 +01:00
|
|
|
border-radius: 8px;
|
|
|
|
padding: 0rem 1.5rem 0rem 1rem;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
position: relative;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.tooltip {
|
|
|
|
padding: 1rem;
|
|
|
|
display: none;
|
|
|
|
position: absolute;
|
|
|
|
bottom: 0;
|
|
|
|
transform: translateY(110%);
|
|
|
|
width: 42em;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
background-color: rgba(0,0,0,0.90);
|
|
|
|
color: #ccc;
|
|
|
|
}
|
|
|
|
&:hover {
|
2021-11-21 02:08:53 +01:00
|
|
|
.tooltip {
|
2022-01-29 16:23:40 +01:00
|
|
|
display: block;
|
2021-11-21 02:08:53 +01:00
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.mdi {
|
|
|
|
margin-right: 1rem;
|
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
&.official {
|
|
|
|
background-color: #fa6;
|
|
|
|
color: #000;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.mdi {
|
|
|
|
fill: #000 !important;
|
2021-11-21 02:08:53 +01:00
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
&.community {
|
|
|
|
background-color: rgb(47, 47, 97);
|
|
|
|
color: #fff;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.mdi {
|
|
|
|
fill: #fff !important;
|
2021-11-21 02:08:53 +01:00
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
&.no-support {
|
|
|
|
background-color: rgb(138, 65, 126);
|
|
|
|
color: #eee;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.mdi {
|
|
|
|
fill: #eee !important;
|
2021-11-21 02:08:53 +01:00
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
&.user-added {
|
|
|
|
border: 1px solid #ff0;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
color: #ff0;
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.mdi {
|
|
|
|
fill: #ff0 !important;
|
2021-11-21 02:08:53 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2021-11-21 02:08:53 +01:00
|
|
|
|
2022-06-15 00:43:36 +02:00
|
|
|
.content {
|
|
|
|
flex-grow: 1;
|
|
|
|
|
|
|
|
.warning-area {
|
|
|
|
flex-grow: 0;
|
|
|
|
flex-shrink: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.panel-content {
|
|
|
|
flex-grow: 1;
|
|
|
|
flex-shrink: 1;
|
|
|
|
|
|
|
|
overflow-y: auto;
|
|
|
|
padding: 1rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.warning-box {
|
|
|
|
background: rgb(255, 174, 107);
|
|
|
|
color: #000;
|
|
|
|
margin: 1rem;
|
|
|
|
padding: 1rem;
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
.icon-container {
|
|
|
|
margin-right: 1rem;
|
|
|
|
flex-shrink: 0;
|
|
|
|
flex-grow: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
a {
|
|
|
|
color: rgba(0,0,0,0.7);
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.uw-hover {
|
|
|
|
position: absolute;
|
2020-12-16 01:40:09 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
z-index: 999999999999999999;
|
|
|
|
}
|
2022-06-11 15:40:36 +02:00
|
|
|
|
|
|
|
.uv-hover-trigger-region {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
|
|
|
|
border: 0.5rem dashed #fff;
|
|
|
|
color: #fff;
|
|
|
|
backdrop-filter: blur(0.5rem) brightness(0.5);
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2020-12-17 01:49:28 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
.popup-panel {
|
|
|
|
position: absolute;
|
2021-10-19 22:49:56 +02:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
top: 10%;
|
|
|
|
left: 10%;
|
2020-12-17 01:49:28 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
z-index: 999999999999999999;
|
2020-12-16 01:40:09 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
width: 2500px;
|
|
|
|
height: 1200px;
|
|
|
|
max-width: 80%;
|
|
|
|
max-height: 80%;
|
2020-12-16 01:40:09 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
pointer-events: all !important;
|
2020-12-16 01:40:09 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
background-color: rgba(0,0,0,0.50);
|
|
|
|
color: #fff;
|
2021-01-21 00:21:15 +01:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
overflow-y: auto;
|
2021-10-22 00:30:56 +02:00
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
backdrop-filter: blur(16px) saturate(120%);
|
2021-10-22 00:30:56 +02:00
|
|
|
|
2022-06-11 15:40:36 +02:00
|
|
|
opacity: 1;
|
|
|
|
&.fade-out {
|
|
|
|
opacity: 0;
|
|
|
|
transition: opacity 1s;
|
|
|
|
}
|
|
|
|
|
2022-03-28 23:14:52 +02:00
|
|
|
.popup-window-header {
|
|
|
|
padding: 1rem;
|
|
|
|
background-color: rgba(5,5,5, 0.75);
|
2020-12-16 01:40:09 +01:00
|
|
|
}
|
2022-03-28 23:14:52 +02:00
|
|
|
.tab-row {
|
|
|
|
background-color: rgba(11,11,11, 0.75);
|
|
|
|
|
|
|
|
.tab {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
padding: 2rem;
|
|
|
|
font-size: 1.5rem;
|
|
|
|
height: 4rem;
|
|
|
|
|
|
|
|
border-bottom: 1px solid rgba(128, 128, 128, 0.5);
|
|
|
|
border-top: 1px solid rgba(128, 128, 128, 0.5);
|
|
|
|
opacity: 0.5;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
&.active {
|
2022-03-29 01:53:16 +02:00
|
|
|
opacity: 1.0;
|
|
|
|
background-color: $primaryBg;
|
2022-03-28 23:14:52 +02:00
|
|
|
color: rgb(255, 174, 107);
|
|
|
|
border-bottom: 1px solid rgba(116, 78, 47, 0.5);
|
|
|
|
border-top: 1px solid rgba(116, 78, 47, 0.5);
|
|
|
|
}
|
2020-12-16 01:40:09 +01:00
|
|
|
|
2022-03-28 23:14:52 +02:00
|
|
|
.icon-container {
|
|
|
|
width: 64px;
|
|
|
|
flex-grow: 0;
|
|
|
|
flex-shrink: 0;
|
|
|
|
}
|
|
|
|
.label {
|
|
|
|
flex-grow: 1;
|
|
|
|
flex-shrink: 1;
|
|
|
|
padding: 0 !important;
|
|
|
|
}
|
|
|
|
}
|
2022-01-29 16:23:40 +01:00
|
|
|
}
|
2022-03-28 23:14:52 +02:00
|
|
|
|
|
|
|
.popup-title, .popup-title h1 {
|
|
|
|
font-size: 48px !important;
|
2020-12-16 01:40:09 +01:00
|
|
|
}
|
2020-12-15 00:26:19 +01:00
|
|
|
}
|
|
|
|
|
2022-01-29 16:23:40 +01:00
|
|
|
pre {
|
|
|
|
white-space: pre-wrap;
|
|
|
|
}
|
2020-12-15 00:26:19 +01:00
|
|
|
|
2021-10-19 22:49:56 +02:00
|
|
|
</style>
|