Buckets:
| // ported from hterm.Terminal.prototype.showOverlay | |
| // https://chromium.googlesource.com/apps/libapps/+/master/hterm/js/hterm_terminal.js | |
| import { bind } from 'decko'; | |
| import { ITerminalAddon, Terminal } from '@xterm/xterm'; | |
| export class OverlayAddon implements ITerminalAddon { | |
| private terminal: Terminal; | |
| private overlayNode: HTMLElement; | |
| private overlayTimeout?: number; | |
| constructor() { | |
| this.overlayNode = document.createElement('div'); | |
| this.overlayNode.style.cssText = `border-radius: 15px; | |
| font-size: xx-large; | |
| opacity: 0.75; | |
| padding: 0.2em 0.5em 0.2em 0.5em; | |
| position: absolute; | |
| -webkit-user-select: none; | |
| -webkit-transition: opacity 180ms ease-in; | |
| -moz-user-select: none; | |
| -moz-transition: opacity 180ms ease-in;`; | |
| this.overlayNode.addEventListener( | |
| 'mousedown', | |
| e => { | |
| e.preventDefault(); | |
| e.stopPropagation(); | |
| }, | |
| true | |
| ); | |
| } | |
| activate(terminal: Terminal): void { | |
| this.terminal = terminal; | |
| } | |
| dispose(): void {} | |
| showOverlay(msg: string, timeout?: number): void { | |
| const { terminal, overlayNode } = this; | |
| if (!terminal.element) return; | |
| overlayNode.style.color = '#101010'; | |
| overlayNode.style.backgroundColor = '#f0f0f0'; | |
| overlayNode.textContent = msg; | |
| overlayNode.style.opacity = '0.75'; | |
| if (!overlayNode.parentNode) { | |
| terminal.element.appendChild(overlayNode); | |
| } | |
| const divSize = terminal.element.getBoundingClientRect(); | |
| const overlaySize = overlayNode.getBoundingClientRect(); | |
| overlayNode.style.top = (divSize.height - overlaySize.height) / 2 + 'px'; | |
| overlayNode.style.left = (divSize.width - overlaySize.width) / 2 + 'px'; | |
| if (this.overlayTimeout) clearTimeout(this.overlayTimeout); | |
| if (!timeout) return; | |
| this.overlayTimeout = window.setTimeout(() => { | |
| overlayNode.style.opacity = '0'; | |
| this.overlayTimeout = window.setTimeout(() => { | |
| if (overlayNode.parentNode) { | |
| overlayNode.parentNode.removeChild(overlayNode); | |
| } | |
| this.overlayTimeout = undefined; | |
| overlayNode.style.opacity = '0.75'; | |
| }, 200); | |
| }, timeout || 1500); | |
| } | |
| } | |
Xet Storage Details
- Size:
- 2.36 kB
- Xet hash:
- 9e07b03e0f127fcd47f89c20c5910565529604335877a603fd96fbc2dbf64da1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.