diff --git a/package.json b/package.json index 6b5dc097..a726c04d 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.8.0", + "version": "4.8.1", "description": "FrankerFaceZ is a Twitch enhancement suite.", "license": "Apache-2.0", "scripts": { diff --git a/socketserver/cmd/mergecounts/mergecounts.go b/socketserver/cmd/mergecounts/mergecounts.go index 6ffb4dc1..0570ef2f 100644 --- a/socketserver/cmd/mergecounts/mergecounts.go +++ b/socketserver/cmd/mergecounts/mergecounts.go @@ -17,7 +17,7 @@ var SERVERS = []string{ "https://tuturu.frankerfacez.com", "https://yoohoo.frankerfacez.com", "https://lilz.frankerfacez.com", - "https://pog.frankerfacez.com" + "https://pog.frankerfacez.com", } const folderPrefix = "/hll/" diff --git a/src/modules/chat/actions/index.jsx b/src/modules/chat/actions/index.jsx index cd920a92..17cef020 100644 --- a/src/modules/chat/actions/index.jsx +++ b/src/modules/chat/actions/index.jsx @@ -366,6 +366,7 @@ export default class Actions extends Module { live: false, html: true, hover_events: true, + no_update: true, tooltipClass: 'ffz-action-balloon tw-balloon tw-block tw-border tw-elevation-1 tw-border-radius-small tw-c-background-base', arrowClass: 'tw-balloon__tail tw-overflow-hidden tw-absolute', diff --git a/src/utilities/tooltip.js b/src/utilities/tooltip.js index df4d7945..a7c970ac 100644 --- a/src/utilities/tooltip.js +++ b/src/utilities/tooltip.js @@ -9,7 +9,7 @@ // ============================================================================ import {createElement, setChildren} from 'utilities/dom'; -import {maybe_call} from 'utilities/object'; +import {maybe_call, debounce} from 'utilities/object'; import Popper from 'popper.js'; @@ -253,7 +253,7 @@ export class Tooltip { }); el.addEventListener('mouseover', el._ffz_over_handler = event => { - if ( ! document.contains(target) ) + if ( ! opts.no_auto_remove && ! document.contains(target) ) this.hide(tip); if ( hover_events && opts.onHover ) @@ -290,10 +290,19 @@ export class Tooltip { arrowElement: arrow }, opts.popper); + pop_opts.onUpdate = tip._on_update = debounce(() => { + if ( ! opts.no_auto_remove && ! document.contains(tip.target) ) + this.hide(tip); + }, 250); + + let popper_target = target; + if ( opts.no_update ) + popper_target = makeReference(target); + tip._update = () => { if ( tip.popper ) { tip.popper.destroy(); - tip.popper = new Popper(target, el, pop_opts); + tip.popper = new Popper(popper_target, el, pop_opts); } } @@ -333,7 +342,7 @@ export class Tooltip { // Add everything to the DOM and create the Popper instance. - tip.popper = new Popper(target, el, pop_opts); + tip.popper = new Popper(popper_target, el, pop_opts); this.parent.appendChild(el); tip.visible = true; @@ -379,5 +388,34 @@ export class Tooltip { export default Tooltip; +export function makeReference(x, y, height=0, width=0) { + if ( x instanceof Node ) { + const rect = x.getBoundingClientRect(); + x = rect.x; + y = rect.y; + height = rect.height; + width = rect.width; + } + + const out = { + getBoundingClientRect: () => ({ + top: y, + bottom: y + height, + y, + left: x, + right: x + width, + x, + height, + width + }), + clientWidth: width, + clientHeight: height + }; + + console.log('makeReference', out); + return out; +} + + // Function Intentionally Left Blank function noop() { } \ No newline at end of file