phrase-engine
Version:
Language files on steroids for conversational UIs that aren't boring.
42 lines (34 loc) • 1.31 kB
text/typescript
import { PhraseNode } from './Node';
import { InitPacketInterface, EvalPacketInterface } from './Node';
export abstract class RefableNode extends PhraseNode {
protected __classnames: string[];
protected __id: string;
protected registararGenerate(root: Node): void {
const ele: Element = <Element>root;
if (ele.hasAttribute('id')) {
this.__id = ele.getAttribute('id').trim();
}
if (ele.hasAttribute('class')) {
this.__classnames = ele.getAttribute('class')
.replace(/\s+/ig, ' ')
.trim()
.split(' ');
}
}
protected registerRender(packet: EvalPacketInterface): void {
!!this.__id && (packet.id_render_map[this.__id] = true);
if (this.__classnames) {
this.__classnames.forEach(classname => {
packet.class_render_map[classname] = true;
});
}
}
protected deregisterRender(packet: EvalPacketInterface): void {
!!this.__id && (packet.id_render_map[this.__id] = false);
if (this.__classnames) {
this.__classnames.forEach(classname => {
packet.class_render_map[classname] = false;
});
}
}
}