UNPKG

remix-ide

Version:

Minimalistic browser-based Solidity IDE

60 lines (53 loc) 1.56 kB
var yo = require('yo-yo') // -------------- copyToClipboard ---------------------- var csjs = require('csjs-inject') var css = csjs` .container { display: none; position: fixed; border-radius: 2px; z-index: 1000; box-shadow: 0 0 4px var(--dark); } .liitem { padding: 2px; padding-left: 6px; cursor: pointer; color: var(--text-dark); background-color: var(--light); } .liitem:hover { background-color: var(--secondary); } #menuitems { list-style: none; margin: 0px; } ` module.exports = (event, items) => { event.preventDefault() function hide (event, force) { if (container && container.parentElement && (force || (event.target !== container))) { container.parentElement.removeChild(container) } window.removeEventListener('click', hide) } var menu = Object.keys(items).map((item, index) => { var current = yo`<li id="menuitem${item.toLowerCase()}" class=${css.liitem}>${item}</li>` current.onclick = () => { hide(null, true); items[item]() } return current }) var container = yo`<div class="${css.container} bg-light"><ul id='menuitems'>${menu}</ul></div>` container.style.left = event.pageX + 'px' container.style.top = event.pageY + 'px' container.style.display = 'block' document.querySelector('body').appendChild(container) setTimeout(() => { window.addEventListener('click', hide) }, 500) return { hide } }