blob: 22e34af4825c271b55db42c2cc8bf52b49ad4e71 [file] [log] [blame]
import { NodeWatcherScriptHandler } from './NodeWatcherScriptHandler';
import { NodeMutation, NodeMutationType } from '../../../../nodeWatcher/NodeWatcherHandler';
export default abstract class CssSelectorNodeWatcherScriptHandler<
Options,
> extends NodeWatcherScriptHandler<Options> {
readonly mutationTypesProcessed: NodeMutationType[] = [
NodeMutationType.InitialDiscovery,
NodeMutationType.NewNode,
];
abstract readonly cssSelector: string;
nodeFilter(nodeMutation: NodeMutation): boolean {
if (
!this.mutationTypesProcessed.includes(nodeMutation.type) ||
!(nodeMutation.node instanceof Element)
) {
return false;
}
return nodeMutation.node.matches(this.cssSelector);
}
get initialDiscoverySelector() {
return this.cssSelector;
}
}