UNPKG

hswidget

Version:
64 lines 4.71 kB
import { Log } from 'hsutil'; const log = new Log('Popup'); import m from "mithril"; import { Widget } from './Widget'; export class Popup extends Widget { constructor() { super(...arguments); this.x = 0; this.y = 0; this.showPopup = false; this.content = '...Popup...'; } static arm(content, attrs = {}) { if (content) { attrs.onmouseenter = (e) => Popup.instance.show(e, content); attrs.onmousemove = (e) => Popup.instance.move(e); attrs.onmouseleave = () => Popup.instance.hide(); attrs.class = `popup ${attrs.class || ''}`; } return attrs; } show(e, content) { this.showPopup = true; this.content = content; this.move(e); } move(e) { this.x = e.x; this.y = e.y; } hide() { this.showPopup = false; } view(node) { Popup.instance = this; const pos = xy(window.innerWidth, window.innerHeight, this.x, this.y); const style = `left:${pos[0]}px; top:${pos[1]}px; transform: translate(${pos[2]}%, ${pos[3]}%);`; return !this.showPopup ? m('span.hs_popup.idle') : m(`.hs_popup`, { style: style }, this.content); } } function xy(w, h, x, y) { let left = x; let top = y; let transX = 50; let transY = -50; if (2 * x > w) { left += 15; transX = -100; } else { left -= 15; transX = 0; } if (2 * y > h) { top -= 15; transY = -100; } else { top += 15; transY = 0; } return [left, top, transX, transY]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUG9wdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBZSxRQUFRLENBQUM7QUFBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwRSxPQUFPLENBQUMsTUFBcUIsU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBWSxVQUFVLENBQUM7QUFZeEMsTUFBTSxPQUFPLEtBQU0sU0FBUSxNQUFNO0lBQWpDOztRQW9CSSxNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRU4sTUFBQyxHQUFHLENBQUMsQ0FBQztRQUVOLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsWUFBTyxHQUFjLGFBQWEsQ0FBQztJQW9CdkMsQ0FBQztJQXZDVSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQWtCLEVBQUUsUUFBVSxFQUFFO1FBQzlDLElBQUksT0FBTyxFQUFFO1lBQ1QsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLEtBQUssSUFBRSxFQUFFLEVBQUUsQ0FBQztTQUM1QztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFhTyxJQUFJLENBQUMsQ0FBSyxFQUFFLE9BQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNPLElBQUksQ0FBQyxDQUFLO1FBQ2QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDTyxJQUFJO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksQ0FBQyxJQUEyQjtRQUM1QixLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Q0FDSjtBQUVELFNBQVMsRUFBRSxDQUFDLENBQVEsRUFBRSxDQUFRLEVBQUUsQ0FBUSxFQUFFLENBQVE7SUFDOUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDVCxJQUFJLElBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQzVCO1NBQU07UUFDSCxJQUFJLElBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztLQUN6QjtJQUNELElBQUksQ0FBQyxHQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDVCxHQUFHLElBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQzNCO1NBQU07UUFDSCxHQUFHLElBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztLQUN4QjtJQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxDQUFDIn0=