UNPKG

@nexim/element

Version:

Utility functions and mixins for building high-performance web components with Lit.

5 lines (4 loc) 2.48 kB
/** 📦 @nexim/element v2.0.7 */ __dev_mode__: console.debug("📦 @nexim/element v2.0.7"); import{packageTracer}from"@alwatr/package-tracer";function lightDomMixin(superClass){class MixinClass extends superClass{static flatCssText(styles){if(styles===void 0)return"";if("cssText"in styles)return styles.cssText.trim();if(Array.isArray(styles)){return styles.map(style=>"cssText"in style?style.cssText:MixinClass.flatCssText(style)).join("\n").trim()}return""}static lightDomStyles(tagName,element){const className=`${tagName}-light-dom-style`;if(document.querySelector(`style.${className}`)!==null)return;const cssText=MixinClass.flatCssText(element.styles);if(cssText==="")return;const styleEl=document.createElement("style");styleEl.classList.add(className);styleEl.innerHTML=cssText;document.head.append(styleEl)}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();MixinClass.lightDomStyles(this.tagName.toLowerCase(),this.constructor)}}return MixinClass}import{createLogger}from"@alwatr/logger";var elementIndex=0;function loggerMixin(superClass){return class MixinClass extends superClass{constructor(...args){super(...args);this.elementIndex__=++elementIndex;this.logger_=createLogger(`<${this.tagName.toLowerCase()}-${this.elementIndex__.toString()}>`);this.logger_.logMethod?.("constructor")}connectedCallback(){this.logger_.logMethod?.("connectedCallback");super.connectedCallback()}disconnectedCallback(){this.logger_.logMethod?.("disconnectedCallback");super.disconnectedCallback()}update(changedProperties){this.logger_.logMethodArgs?.("update",{changedProperties});this.logger_.time?.(this.firstUpdated__?"update-time":"first-update-time");super.update(changedProperties)}firstUpdated(changedProperties){this.logger_.logMethodArgs?.("firstUpdated",{changedProperties});this.logger_.timeEnd?.("first-update-time");super.firstUpdated(changedProperties)}updated(changedProperties){this.logger_.logMethodArgs?.("updated",{changedProperties});if(this.firstUpdated__){this.logger_.timeEnd?.("update-time")}else{this.firstUpdated__=true}super.updated(changedProperties)}render(){this.logger_.logMethod?.("render");return}dispatchEvent(event){this.logger_.logMethodArgs?.("dispatchEvent",{type:event.type,detail:event.detail});return super.dispatchEvent(event)}remove(){this.logger_.logMethod?.("remove");super.remove()}}}__dev_mode__:packageTracer.add("@nexim/element","2.0.7");export{lightDomMixin,loggerMixin}; //# sourceMappingURL=main.mjs.map