UNPKG

sweetpea

Version:

Signal and Web Component Enhanced Web Apps

34 lines (28 loc) 1.01 kB
import Movable from './mouse/Movable.js'; import Connectable from './mouse/Connectable.js'; import Selectable from './mouse/Selectable.js'; import Focusable from './mouse/Focusable.js'; export default Inheritance => class UseAttribute extends Inheritance { extensions = { movable: Movable, connectable: Connectable, selectable: Selectable, focusable: Focusable, }; useExtensions(){ const elements = this.search('*[use]'); for (const element of elements) { const extensions = element.getAttribute('use').split(/ /); for (const extension of extensions) { if(!this.extensions[extension]) { continue; throw new TypeError(`Unknown extension ${extension}`) } const ext = new this.extensions[extension](element, this); ext.connectedCallback(); this.subscriptions.push( {type:'use/ext/disconnectedCallback', id:extension, subscription:()=>ext.disconnectedCallback()} ); } } return this; } }