happy-dom
Version:
Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.
85 lines (75 loc) • 2.59 kB
text/typescript
import type CSSStyleSheet from './CSSStyleSheet.js';
import CSSRuleTypeEnum from './CSSRuleTypeEnum.js';
import * as PropertySymbol from '../PropertySymbol.js';
import type BrowserWindow from '../window/BrowserWindow.js';
import type CSSParser from './utilities/CSSParser.js';
/**
* CSSRule interface.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/CSSRule
*/
export default abstract class CSSRule {
// Static properties
public static CONTAINER_RULE = CSSRuleTypeEnum.containerRule;
public static STYLE_RULE = CSSRuleTypeEnum.styleRule;
public static IMPORT_RULE = CSSRuleTypeEnum.importRule;
public static MEDIA_RULE = CSSRuleTypeEnum.mediaRule;
public static FONT_FACE_RULE = CSSRuleTypeEnum.fontFaceRule;
public static PAGE_RULE = CSSRuleTypeEnum.pageRule;
public static KEYFRAMES_RULE = CSSRuleTypeEnum.keyframesRule;
public static KEYFRAME_RULE = CSSRuleTypeEnum.keyframeRule;
public static NAMESPACE_RULE = CSSRuleTypeEnum.namespaceRule;
public static COUNTER_STYLE_RULE = CSSRuleTypeEnum.counterStyleRule;
public static SUPPORTS_RULE = CSSRuleTypeEnum.supportsRule;
public static DOCUMENT_RULE = CSSRuleTypeEnum.documentRule;
public static FONT_FEATURE_VALUES_RULE = CSSRuleTypeEnum.fontFeatureValuesRule;
public static REGION_STYLE_RULE = CSSRuleTypeEnum.regionStyleRule;
// Internal properties
public [PropertySymbol.window]: BrowserWindow;
public [PropertySymbol.cssParser]: CSSParser;
// Public properties
public [PropertySymbol.parentRule]: CSSRule | null = null;
public [PropertySymbol.parentStyleSheet]: CSSStyleSheet | null = null;
/**
* Constructor.
*
* @param illegalConstructorSymbol Illegal constructor symbol.
* @param window Window.
* @param cssParser CSS parser.
*/
constructor(illegalConstructorSymbol: Symbol, window: BrowserWindow, cssParser: CSSParser) {
if (illegalConstructorSymbol !== PropertySymbol.illegalConstructor) {
throw new TypeError('Illegal constructor');
}
this[PropertySymbol.window] = window;
this[PropertySymbol.cssParser] = cssParser;
}
/**
* Returns parent rule.
*
* @returns Parent rule.
*/
public get parentRule(): CSSRule | null {
return this[PropertySymbol.parentRule];
}
/**
* Returns parent style sheet.
*
* @returns Parent style sheet.
*/
public get parentStyleSheet(): CSSStyleSheet | null {
return this[PropertySymbol.parentStyleSheet];
}
/**
* Returns type.
*
* @returns Type.
*/
public abstract get type(): CSSRuleTypeEnum;
/**
* Returns CSS text.
*
* @returns CSS text.
*/
public abstract get cssText(): string;
}