linkedom
Version:
A triple-linked lists based DOM implementation
54 lines (45 loc) • 1.15 kB
JavaScript
;
const {parse} = require('cssom');
const {registerHTMLClass} = require('../shared/register-html-class.js');
const {SHEET} = require('../shared/symbols.js');
const {TextElement} = require('./text-element.js');
const tagName = 'style';
/**
* @implements globalThis.HTMLStyleElement
*/
class HTMLStyleElement extends TextElement {
constructor(ownerDocument, localName = tagName) {
super(ownerDocument, localName);
this[SHEET] = null;
}
get sheet() {
const sheet = this[SHEET];
if (sheet !== null) {
return sheet;
}
return this[SHEET] = parse(this.textContent);
}
get innerHTML() {
return super.innerHTML || '';
}
set innerHTML(value) {
super.textContent = value;
this[SHEET] = null;
}
get innerText() {
return super.innerText || '';
}
set innerText(value) {
super.textContent = value;
this[SHEET] = null;
}
get textContent() {
return super.textContent || '';
}
set textContent(value) {
super.textContent = value;
this[SHEET] = null;
}
}
registerHTMLClass(tagName, HTMLStyleElement);
exports.HTMLStyleElement = HTMLStyleElement;