All files / src/custom-element CustomElement.ts

88.89% Statements 8/9
100% Branches 0/0
50% Functions 1/2
88.89% Lines 8/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3917x 17x 17x 17x 17x 17x     17x                                 4x                          
import ParentChildMixin from "./mixins/core/ParentChildMixin";
import ReactiveElementMixin from "./mixins/core/ReactiveElementMixin";
import StylePatcherMixin from "./mixins/core/StylePatcherMixin";
import VirtualDomMixin from "./mixins/core/VirtualDomMixin";
import ShadowRootMixin from "./mixins/core/ShadowRootMixin";
import MetadataInitializerMixin from "./mixins/core/MetadataInitializerMixin";
import { NodePatchingData } from "../renderer/NodePatcher";
 
export default abstract class CustomElement extends
    ParentChildMixin(
        ReactiveElementMixin(
            StylePatcherMixin(
                VirtualDomMixin(
                    ShadowRootMixin(
                        MetadataInitializerMixin(
                            HTMLElement
                        )
                    )
                )
            )   
        )
    ) {
 
    dispatchCustomEvent(type: string, detail: Record<string, any>) {
 
        setTimeout(() => { // Repaint before dispatching the event
 
            this.dispatchEvent(new CustomEvent(type, {
                detail: detail,
                bubbles: true,
                composed: true // To bubble through the shadow DOM
            }));
 
        }, 0);  
    }
 
    abstract render() : NodePatchingData | NodePatchingData[];
}