UNPKG

@pietrolubini/homebridge-ecoflow

Version:
1 lines 6.71 kB
(()=>{"use strict";var e={999:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ComponentRenderer=void 0,r.ComponentRenderer=class{renderTextBox(e,r,i,n,t){const o='\n <div class="form-group">\n <label for="device{id}" class="{requiredClass}">{title}</label>\n <input type="text" class="form-control" id="device{id}" placeholder="{description}" required="{required}" />\n </div>'.replace(/{id}/g,r).replace(/{title}/g,i.title).replace(/{description}/g,i.description??"").replace(/{requiredClass}/g,i.required?"required-label":"").replace(/{required}/g,(i.required??!1).toString());e.append(o);const a=e.find(`#device${r}`);a.val(n),a.on("change",(()=>t(a.val()?.toString()||"")))}renderDropDown(e,r,i,n,t){const o='\n <div class="form-group">\n <label for="device{id}" class="{requiredClass}">{title}</label>\n <select class="form-control" id="device{id}" required="{required}"></select>\n </div>'.replace(/{id}/g,r).replace(/{title}/g,i.title).replace(/{requiredClass}/g,i.required?"required-label":"").replace(/{required}/g,(i.required??!1).toString());e.append(o);const a=e.find(`#device${r}`);i.enum.forEach((e=>{const r=$("<option>").val(e).text(e);a.append(r)})),a.val(n),a.on("change",(()=>t(a.val()?.toString()||"")))}}},84:(e,r,i)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PluginConfigDevicesRenderer=void 0;const n=i(536);class t extends n.PluginConfigRendererBase{form;$tabs;$tabPanels;_hideDeviceSettingsPerModel;constructor(e){super(e),this.$tabs=$("#devicesTabs"),this.$tabPanels=$("#devicesPanels"),this._hideDeviceSettingsPerModel={"Delta 2":["powerStream","powerOcean","outlet"],"Delta 2 Max":["powerStream","powerOcean","outlet"],"Delta Pro":["powerStream","powerOcean","outlet"],"Delta Pro 3":["powerStream","powerOcean","outlet"],"Delta Pro Ultra":["powerStream","powerOcean","outlet"],PowerStream:["battery","powerOcean","outlet"],PowerOcean:["battery","powerStream","outlet"],"Smart Plug":["battery","powerStream","powerOcean"],Glacier:["powerStream","powerOcean","outlet"]}}get hideDeviceSettingsPerModel(){return this._hideDeviceSettingsPerModel}render(e){this.renderDevicesSettings({homebridgeProvider:e.homebridgeProvider,configSchema:e.configSchema,configuration:e.configuration,hideDeviceSettingsPerModel:this.hideDeviceSettingsPerModel})}renderDevicesSettings(e,r){$("#devicesLabel").text(e.configSchema.schema.properties.devices.title);const i=!r||r<0?0:r;this.renderDeviceTabs(e,i)}renderDeviceTabs(e,r){this.clearDeviceTabs();const i='\n <li class="nav-item">\n <a class="nav-link {activeClass}" data-toggle="tab" href="#deviceTabPanel{index}" id="deviceTab{index}">{name}</a>\n </li>\n ';e.configuration.devices.forEach(((n,t)=>{const o=i.replace(/{activeClass}/g,t===r?"active":"").replace(/{index}/g,t.toString()).replace(/{name}/g,n.name??`Device${t+1}`);this.$tabs.append(o),this.renderDeviceTabPanel(e,n,t,r,this.$tabs.find(`#deviceTab${t}`))})),this.renderAddNewDeviceTab(i,e)}clearDeviceTabs(){this.$tabs.empty(),this.$tabPanels.empty(),this.form?.end()}renderAddNewDeviceTab(e,r){const i=e.replace(/{activeClass}/g,"").replace(/{index}/g,"Add").replace(/{name}/g,"Add Device");this.$tabs.append(i),this.$tabs.find("#deviceTabAdd").on("click",(()=>{r.configuration.devices.push(this.getDefaultDeviceConfiguration(r.configSchema)),this.renderDevicesSettings(r,r.configuration.devices.length-1)}))}renderDeviceTabPanel(e,r,i,n,t){const o='\n <div class="tab-pane container fade {activeClass} card card-body list-group-item" id="deviceTabPanel{index}">\n <button type="button" class="close pull-right" id="deviceTabPanelClose{index}">\n <span>×</span>\n <span class="sr-only">Close</span>\n </button>\n </div>\n '.replace(/{activeClass}/g,i===n?"in show active":"").replace(/{index}/g,i.toString());this.$tabPanels.append(o);const a=this.$tabPanels.find(`#deviceTabPanel${i}`),s=this.clone(e.configSchema.schema.properties.devices.items),c=s.properties.model;this.renderModelDropDown(t,a,i,e,s,c,r),this.renderRemoveButton(a,i,e),this.renderForm(t,i,n,e,s,r)}renderModelDropDown(e,r,i,n,t,o,a){this.componentRenderer.renderDropDown(r,"model"+i,o,a.model,(r=>{a.model=r,this.renderForm(e,i,i,n,t,a)}))}renderRemoveButton(e,r,i){e.find(`#deviceTabPanelClose${r}`).on("click",(()=>{i.configuration.devices.splice(r,1),this.renderDevicesSettings(i,r-1)}))}renderForm(e,r,i,n,t,o){delete(t=this.clone(t)).properties.model,n.hideDeviceSettingsPerModel[o.model].forEach((e=>{delete t.properties[e]})),e.off("click").on("click",(()=>{this.form?.end(),this.form=n.homebridgeProvider.createForm({schema:t},o),this.form.onChange((async i=>{const t=n.configuration.devices[r].name;this.applyChanges(n.configuration.devices[r],i,["model"]),await this.updatePluginConfig(n),i.name!==t&&e.text(i.name)}))})),r===i&&e.trigger("click")}getDefaultDeviceConfiguration(e){const r={},i=e.schema.properties.devices.items.properties;return Object.keys(i).filter((e=>!!i[e]?.default)).forEach((e=>{r[e]=i[e]?.default})),r}applyChanges(e,r,i){Object.assign(e,r);for(const n in e)void 0!==r[n]||i.includes(n)||delete e[n]}}r.PluginConfigDevicesRenderer=t},102:(e,r,i)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PluginConfigNameRenderer=void 0;const n=i(536);class t extends n.PluginConfigRendererBase{render(e){this.componentRenderer.renderTextBox($("#generalSettings"),"name",e.configSchema.schema.properties.name,e.configuration.name,(async r=>{e.configuration.name=r,await this.updatePluginConfig(e)}))}}r.PluginConfigNameRenderer=t},653:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PluginConfigRenderer=void 0,r.PluginConfigRenderer=class{renderers;constructor(e){this.renderers=e}render(e){void 0===e.configuration&&(e.configuration={name:void 0,devices:[]}),this.renderers.forEach((r=>r.render(e)))}}},536:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PluginConfigRendererBase=void 0,r.PluginConfigRendererBase=class{componentRenderer;constructor(e){this.componentRenderer=e}async updatePluginConfig(e){const r=this.clone(e.configuration);delete r.platform,await e.homebridgeProvider.updatePluginConfig([r])}clone(e){return JSON.parse(JSON.stringify(e))}}}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={exports:{}};return e[n](o,o.exports,i),o.exports}(()=>{const e=i(999),r=i(84),n=i(102),t=i(653);window.renderEcoFlowPluginConfig=async function(i){const o=await i.getPluginConfig(),a=await i.getPluginConfigSchema(),s=o[0],c=new e.ComponentRenderer;new t.PluginConfigRenderer([new n.PluginConfigNameRenderer(c),new r.PluginConfigDevicesRenderer(c)]).render({homebridgeProvider:i,configuration:s,configSchema:a})}})()})();