// jshint esversion: 6 // eslint-disable-next-line // ==UserScript== // @name appendShadow // @namespace https://dniness.github.io/ // @version 0.03 // @description 💜 // @author Dniness // @match *://*/* // @icon data:image/svg+xml, // @grant none // @run-at document-body // @license MPL2.0 // @downloadURL https://update.greasyfork.icu/scripts/452732/appendShadow.user.js // @updateURL https://update.greasyfork.icu/scripts/452732/appendShadow.meta.js // ==/UserScript== (document.appendShadow=(func,name)=>{ 'use strict'; const mode = name?'open':'closed'; [,name,func]=(func+'').match(/([^ =]+)[^{]+\{(.+)\}$/); name = name.replace(/([A-Z])/g,"-$1").toLowerCase(); customElements.define(name, class extends HTMLElement { constructor() { super(); new Function(func).call(this.attachShadow({mode})); } }) document.body.appendChild(document.createElement(name)); })(exampleMonkeyShadow=>{this.appendChild(document.createElement('h2'))});