@nent/core
Version:
4 lines • 1.56 kB
JavaScript
/*!
* NENT 2022
*/
import{a as t}from"./index-f7016b94.js";import{w as i,f as s}from"./logging-5a93c8af.js";import{a}from"./state-27a8a5bc.js";class n{constructor(t,i){this.element=t,this.elementName=i}async getAction(){if(!this.element.topic)return i(`${this.elementName}: unable to fire action, missing topic`),null;if(!this.element.command)return i(`${this.elementName}: unable to fire action, missing command`),null;let t=Object.assign({},this.element.el.dataset);if(this.element.childScript&&Object.assign(t,JSON.parse(this.element.childScript.textContent||"{}")),this.element.valid=!0,this.element.childInputs.forEach(((i,s)=>{var a,n;!1===(null===(a=i.checkValidity)||void 0===a?void 0:a.call(i))?(null===(n=i.reportValidity)||void 0===n||n.call(i),this.element.valid=!1):t[i.id||i.name||s]=i.value||("checkbox"==i.type?i.checked:null)})),!this.element.valid)return null;if(a.dataEnabled){if(this.element.when){const{evaluatePredicate:t}=await import("./expressions-2c27c47c.js").then((function(t){return t.f}));if(0==await t(this.element.when))return s(a.debug,`${this.elementName}: not fired, predicate '${this.element.when}' evaluated to false`),null}const{hasToken:i,resolveTokens:n}=await import("./tokens-78f8cdbe.js");await Promise.all(Object.keys(t).map((async s=>{const a=t[s];"string"==typeof a&&i(a)&&(t[s]=await n(a))})))}return{topic:this.element.topic,command:this.element.command,data:t}}async sendAction(i){const s=await this.element.getAction();s&&this.element.valid&&(i&&Object.assign(s.data,i),t.emit(s.topic,s))}}export{n as A}