From f57163f2bb186c92b88aec17dc4a2f46de70622d Mon Sep 17 00:00:00 2001 From: Tamius Han Date: Tue, 27 Jan 2026 20:36:50 +0100 Subject: [PATCH] Player selection should be functional enough --- src/ext/module/EventBus.ts | 3 +- src/ext/module/uwui/UI.ts | 72 +++-- src/ext/module/video-data/PlayerData.ts | 58 +++- .../uw_player___element-list-hover.webp | Bin 26806 -> 44290 bytes src/ui/components/SettingsWindowContent.vue | 9 +- .../Panels/PlayerSelectorSimple.vue | 258 +++++++++++++----- .../PlayerElementWindow.vue | 216 --------------- 7 files changed, 284 insertions(+), 332 deletions(-) delete mode 100644 src/ui/components/segments/PlayerElementSelection/PlayerElementWindow.vue diff --git a/src/ext/module/EventBus.ts b/src/ext/module/EventBus.ts index c297caf..de5b253 100644 --- a/src/ext/module/EventBus.ts +++ b/src/ext/module/EventBus.ts @@ -92,9 +92,11 @@ export default class EventBus { send(command: string, commandData: any, context: EventBusContext = {}) { if (context.visitedBusses?.includes(this.uuid)) { + console.warn('this bus was already visited before. Doing nothing.'); return; } if (context.commandId && this.lastExecutedCommandIds.includes(context.commandId)) { + console.warn('this command was already sent'); return; } context.visitedBusses = [...context.visitedBusses ?? [], this.uuid]; @@ -165,7 +167,6 @@ export default class EventBus { console.error('Visited busses is missing from context. This is illegal.'); return; } - context.visitedBusses = [...context.visitedBusses ?? [], this.uuid]; if (!this.disableTunnel && typeof window !== 'undefined') { window.parent.postMessage( diff --git a/src/ext/module/uwui/UI.ts b/src/ext/module/uwui/UI.ts index dec7e35..863a2e7 100644 --- a/src/ext/module/uwui/UI.ts +++ b/src/ext/module/uwui/UI.ts @@ -117,32 +117,41 @@ class UI { this.initMessaging(); } + private messageListener?: (event?: MessageEvent) => void; + private initMessaging() { - window.addEventListener('message', (event: MessageEvent) => { - const data = event.data; + if (this.messageListener) { + window.removeEventListener('message', this.messageListener); + } else { + this.messageListener = (event: MessageEvent) => { + const data = event.data; - if (data?.action !== 'uw-bus-tunnel') { - return; - } - - const payload = data.payload; - - console.log('forwarding from tunnel to event bus. payload', payload); - - // Forward to all iframes except the source - (UwuiWindow as any).instances?.forEach(win => { - const iframe = win.content as HTMLIFrameElement; - if (iframe && event.source !== iframe.contentWindow) { - iframe.contentWindow?.postMessage( - { - action: 'uw-bus-tunnel', - payload, - }, - '*' - ); + if (data?.action !== 'uw-bus-tunnel') { + return; } - }); - }); + + + const payload = data.payload; + + console.log('forwarding from tunnel to event bus. payload', payload); + + // Forward to all iframes except the source + (UwuiWindow as any).instances?.forEach(win => { + const iframe = win.content as HTMLIFrameElement; + if (iframe && event.source !== iframe.contentWindow) { + iframe.contentWindow?.postMessage( + { + action: 'uw-bus-tunnel', + payload, + }, + '*' + ); + } + }); + }; + } + + window.addEventListener('message', this.messageListener); } executeCommand(x: CommandInterface) { @@ -464,6 +473,18 @@ class UI { createSettingsWindow(path?: string) { const iframe = document.createElement('iframe'); + // we don't enforce minimum margin on small screens + const margin = (window.innerWidth < 1024 || window.innerHeight < 720) ? 0 : 64; + + const params = { + width: Math.min(1600, window.innerWidth - margin), + height: Math.min(920, window.innerHeight - margin), + x: 0, + y: 0 + }; + params.x = Math.floor((window.innerWidth - params.width) / 2); + params.y = Math.floor((window.innerHeight - params.height) / 2); + iframe.src = chrome.runtime.getURL(`ui/pages/settings/index.html#ui${path ? `/${path}` : ''}`); iframe.setAttribute('allowtransparency', 'true'); Object.assign(iframe.style, { @@ -475,10 +496,7 @@ class UI { new UwuiWindow({ title: `Ultrawidify settings (${window.location.host})`, - width: 1200, - height: 800, - x: 0, - y: 0, + ...params, content: iframe, onClose: () => { this.eventBus.cancelIframeForwarding(iframe) diff --git a/src/ext/module/video-data/PlayerData.ts b/src/ext/module/video-data/PlayerData.ts index eeef6d9..142ea84 100644 --- a/src/ext/module/video-data/PlayerData.ts +++ b/src/ext/module/video-data/PlayerData.ts @@ -103,6 +103,7 @@ class PlayerData { private trackChangesTimeout: any; private markedElement: HTMLElement; + private markedElementIndex: number | undefined; private ui: UI; @@ -114,7 +115,7 @@ class PlayerData { //#region event bus configuration private eventBusCommands = { 'get-player-tree': [{ - function: () => this.handlePlayerTreeRequest() + function: (data) => this.handlePlayerTreeRequest(data) }], 'get-player-dimensions': [{ function: () => { @@ -530,6 +531,7 @@ class PlayerData { private getElementStack(): ElementStack { const elementStack: ElementStack = [{ + index: 0, element: this.videoElement, type: 'video', tagName: 'video', @@ -540,8 +542,10 @@ class PlayerData { let element = this.videoElement.parentNode as HTMLElement; // first pass to generate the element stack and translate it into array + let i = 1; while (element) { elementStack.push({ + index: i, element, type: '', tagName: element.tagName, @@ -552,6 +556,7 @@ class PlayerData { heuristics: {}, }); element = element.parentElement; + i++; } this.elementStack = elementStack; @@ -610,6 +615,7 @@ class PlayerData { // on verbose, get both qs and index player if (options?.verbose) { + this.getPlayerAuto(elementStack, videoHeight, videoHeight, {listOnly: true}); if (playerIndex) { playerCandidate = elementStack[playerIndex]; playerCandidate.heuristics['manualElementByParentIndex'] = true; @@ -622,6 +628,7 @@ class PlayerData { if (detectionMode === PlayerDetectionMode.AncestorIndex) { playerCandidate = elementStack[playerIndex]; playerCandidate.heuristics['manualElementByParentIndex'] = true; + playerCandidate.heuristics['activePlayer'] = true; } else if (detectionMode === PlayerDetectionMode.QuerySelectors) { playerCandidate = this.getPlayerQs(playerQs, elementStack, videoWidth, videoHeight); } @@ -677,7 +684,7 @@ class PlayerData { * @param videoHeight * @returns */ - private getPlayerAuto(elementStack: ElementStack, videoWidth, videoHeight) { + private getPlayerAuto(elementStack: ElementStack, videoWidth, videoHeight, options?: {listOnly?: boolean}) { let penaltyMultiplier = 2; const sizePenaltyMultiplier = 0.1; const perLevelScorePenalty = 10; @@ -791,7 +798,7 @@ class PlayerData { // Some sites (youtube) can re-parent elements, causing current player element to vanish from DOM // Which means we need to set up an observer that will re-acquire the player when that happens. // TODO: Ideally, observer should request a tick - if (bestCandidate) { + if (bestCandidate && !options?.listOnly) { const observer = new MutationObserver( (mutations) => { mutations.forEach((mutation) => { @@ -868,30 +875,65 @@ class PlayerData { bestCandidate.heuristics['qsMatch'] = true; } + bestCandidate.heuristics['activePlayer'] = true; return bestCandidate; } /** * Lists elements between video and DOM root for display in player selector (UI) */ - private handlePlayerTreeRequest() { + private handlePlayerTreeRequest(data: {requestId: string}) { // this populates this.elementStack fully // this.updatePlayer({verbose: true}); - this.eventBus.send('uw-config-broadcast', {type: 'player-tree', config: JSON.parse(JSON.stringify(this.elementStack))}); + this.eventBus.send( + 'uw-config-broadcast', + { + type: 'player-tree', + requestId: data.requestId, + elementStack: JSON.parse(JSON.stringify(this.elementStack)) + } + ); } private markElement(data: {parentIndex: number, enable: boolean}) { if (data.enable === false) { this.markedElement.remove(); + this.elementStack[this.markedElementIndex]?.element.classList.remove('uw-mark-element'); + this.markedElementIndex = undefined; return; } - if (this.markedElement) { this.markedElement.remove(); } - const elementBB = this.elementStack[data.parentIndex].element.getBoundingClientRect();; + if (this.markedElementIndex !== undefined) { + this.elementStack[this.markedElementIndex]?.element.classList.remove('uw-mark-element'); + } else { + this.eventBus.send( + 'inject-css', + { + cssString: ` + .uw-mark-element { + border: 5px solid #fa6 !important; + box-sizing: border-box !important; + filter: + sepia(1) + saturate(5) + hue-rotate(-20deg) + brightness(1.15); + } + ` + } + ); + } + + this.markedElementIndex = data.parentIndex; + this.elementStack[this.markedElementIndex]?.element.classList.add('uw-mark-element'); + + console.log('———— setting element as active:', data.parentIndex, this.elementStack.length, this.elementStack, this.elementStack[data.parentIndex]) + + const elementBB = this.elementStack[data.parentIndex].element.getBoundingClientRect(); // console.log('element bounding box:', elementBB); @@ -910,6 +952,8 @@ class PlayerData { document.body.insertBefore(div, document.body.firstChild); this.markedElement = div; + + // this.elementStack[data.parentIndex].element.style.outline = data.enable ? '5px dashed #fa6' : null; // this.elementStack[data.parentIndex].element.style.filter = data.enable ? 'sepia(1) brightness(2) contrast(0.5)' : null; } diff --git a/src/res/img/player-select-demo/uw_player___element-list-hover.webp b/src/res/img/player-select-demo/uw_player___element-list-hover.webp index d0fe97d9979007f4cc359cee9c2bd1a7cb382779..bb22bc4f7c3206b8656be3ca250dfa6bdc7e0a45 100644 GIT binary patch literal 44290 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
~>`)-ZSYX9t65=&7-^NICCsa_oOW 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 - - --> + --> @@ -94,11 +169,16 @@ export default defineComponent({ data() { return { elementStack: [], + elementStacks: { + requestId: undefined, + stacks: [] + }, cssStack: [], showLegend: false, showAdvancedOptions: false, tutorialVisible: false, - tutorialStep: 0 + tutorialStep: 0, + lastTreeId: undefined, }; }, computed: { @@ -130,17 +210,47 @@ export default defineComponent({ this.tutorialStep = 0; }, getPlayerTree() { - this.eventBus.send('get-player-tree'); + this.lastTreeId = crypto.randomUUID() + this.eventBus.send('get-player-tree', {requestId: this.lastTreeId}); }, handleElementStack(configBroadcast) { if (configBroadcast.type === 'player-tree') { - this.elementStack = configBroadcast.config.reverse(); - this.$nextTick( () => this.$forceUpdate() ); + // reset tree if lastTreeId has changed + if (this.elementStacks.requestId !== this.lastTreeId) { + this.elementStacks = { + requestId: this.lastTreeId, + stacks: [] + }; + } + + if (configBroadcast.requestId === this.lastTreeId) { + const stack = configBroadcast.elementStack.sort((a, b) => a.index - b.index); + this.elementStacks.stacks.push({ + elementStack: stack + }); + this.elementStack = stack; + + this.$nextTick( () => this.$forceUpdate() ); + } } }, markElement(parentIndex, enable) { this.eventBus.send('set-mark-element', {parentIndex, enable}); }, + async resetSettings() { + if (!this.siteSettings.raw?.activeDOMConfig) { + console.warn('') + return; + } + + await this.siteSettings.setUpdateFlags(['PlayerData']); + await this.siteSettings.set(`DOMConfig.${this.siteSettings.data.activeDOMConfig}.player.detectionMode`, PlayerDetectionMode.Auto, {noSave: true}); + await this.siteSettings.set(`DOMConfig.${this.siteSettings.data.activeDOMConfig}.player.ancestorIndex`, undefined); + + this.getPlayerTree(); + setTimeout( () => this.getPlayerTree(), 500); + setTimeout( () => this.getPlayerTree(), 1000); + }, /** * Designates new element as player element. Currently, we only need * 'index', however at some point we might also set mode according @@ -170,6 +280,8 @@ export default defineComponent({ await this.siteSettings.set('activeDOMConfig', domConfigName); this.getPlayerTree(); + setTimeout(() => this.getPlayerTree(), 500); + setTimeout(() => this.getPlayerTree(), 1000); }, /** * Toggles active CSS for element of certain parent index. diff --git a/src/ui/components/segments/PlayerElementSelection/PlayerElementWindow.vue b/src/ui/components/segments/PlayerElementSelection/PlayerElementWindow.vue deleted file mode 100644 index bc9f1e3..0000000 --- a/src/ui/components/segments/PlayerElementSelection/PlayerElementWindow.vue +++ /dev/null @@ -1,216 +0,0 @@ - - -