You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.1 KiB
JavaScript

'use strict';
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;