Files
haos_config/www/community/advanced-camera-card/engine-tplink-574781a5.js
2026-01-30 23:31:00 -06:00

2 lines
1.8 KiB
JavaScript

import{g as t,G as e}from"./engine-generic-75ad9390.js";import{ex as i,eA as n}from"./card-b98d578d.js";import{E as s}from"./entity-camera-94c8dadf.js";import"./live-provider-845afb16.js";class a extends s{constructor(){super(...arguments),this._ptzEntities=null}async _initialize(t){this._ptzEntities=await this._getPTZEntities(t.hass,t.entityRegistryManager)}async _getRawCapabilities(e){const i=t(this.getConfig()),n=this._ptzEntities?this._entitiesToCapabilities(this._ptzEntities):null,s=i||n?{...n,...i}:null;return{...await super._getRawCapabilities(e),...s&&{ptz:s}}}async _getPTZEntities(t,e){if(!this._entity?.device_id)return null;const i=await e.getMatchingEntities(t,(t=>t.device_id===this._entity?.device_id&&t.entity_id.startsWith("button.")&&!t.disabled_by)),n={pan_left:"left",pan_right:"right",tilt_up:"up",tilt_down:"down"},s={};for(const t of i)for(const[e,i]of Object.entries(n))t.entity_id.endsWith(`_${e}`)&&(s[i]=t.entity_id);return Object.keys(s).length?s:null}_entitiesToCapabilities(t){const e={};for(const n of Object.keys(t))e[n]=[i.Relative];return e}async executePTZAction(t,e,i){if(await super.executePTZAction(t,e,i))return!0;if(!this._ptzEntities)return!1;if("preset"===e)return!1;if("zoom_in"===e||"zoom_out"===e)return!1;if("stop"===i?.phase)return!0;const n=this._ptzEntities[e];return!!n&&(await t.executeActions({actions:[{action:"perform-action",perform_action:"button.press",target:{entity_id:n}}]}),!0)}}class r extends e{constructor(t,e,i){super(e,i),this._entityRegistryManager=t}getEngineType(){return n.TPLink}async createCamera(t,e){const i=new a(e,this,{eventCallback:this._eventCallback});return await i.initialize({entityRegistryManager:this._entityRegistryManager,hass:t,stateWatcher:this._stateWatcher})}getCameraMetadata(t,e){return{...super.getCameraMetadata(t,e),engineIcon:"tplink"}}}export{r as TPLinkCameraManagerEngine};