<html><head></head><body><dom-module id="ha-panel-dev-state"><template><style include="ha-style">:host{-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial;}.content{padding:16px;}ha-entity-picker, .state-input, paper-textarea{display:block;max-width:400px;}.entities th{text-align:left;}.entities tr{vertical-align:top;}.entities tr:nth-child(odd){background-color:var(--table-row-background-color, #fff);}.entities tr:nth-child(even){background-color:var(--table-row-alternative-background-color, #eee);}.entities td:nth-child(3){white-space:pre-wrap;word-break:break-word;}.entities a{color:var(--primary-color);}</style><app-header-layout has-scrolling-region=""><app-header slot="header" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">States</div></app-toolbar></app-header><div class="content"><div><p>Set the representation of a device within Home Assistant.<br>This will not communicate with the actual device.</p><ha-entity-picker autofocus="" hass="[[hass]]" value="{{_entityId}}" allow-custom-entity=""></ha-entity-picker><paper-input label="State" required="" value="{{_state}}" class="state-input"></paper-input><paper-textarea label="State attributes (JSON, optional)" value="{{_stateAttributes}}"></paper-textarea><paper-button on-tap="handleSetState" raised="">Set State</paper-button></div><h1>Current entities</h1><table class="entities"><tbody><tr><th>Entity</th><th>State</th><th hidden$="[[narrow]]">Attributes<paper-checkbox checked="{{_showAttributes}}"></paper-checkbox></th></tr><tr><th><paper-input label="Filter entities" type="search" value="{{_entityFilter}}"></paper-input></th><th><paper-input label="Filter states" type="search" value="{{_stateFilter}}"></paper-input></th><th hidden$="[[!computeShowAttributes(narrow, _showAttributes)]]"><paper-input label="Filter attributes" type="search" value="{{_attributeFilter}}"></paper-input></th></tr><tr hidden$="[[!computeShowEntitiesPlaceholder(_entities)]]"><td colspan="3">No entities</td></tr><template is="dom-repeat" items="[[_entities]]" as="entity"><tr><td><a href="#" on-tap="entitySelected">[[entity.entity_id]]</a></td><td>[[entity.state]]</td><template is="dom-if" if="[[computeShowAttributes(narrow, _showAttributes)]]"><td>[[attributeString(entity)]]</td></template></tr></template></tbody></table></div></app-header-layout></template></dom-module><script>class HaPanelDevState extends Polymer.Element{static get is(){return"ha-panel-dev-state"}static get properties(){return{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},_entityId:{type:String,value:""},_entityFilter:{type:String,value:""},_stateFilter:{type:String,value:""},_attributeFilter:{type:String,value:""},_state:{type:String,value:""},_stateAttributes:{type:String,value:""},_showAttributes:{type:Boolean,value:!0},_entities:{type:Array,computed:"computeEntities(hass, _entityFilter, _stateFilter, _attributeFilter)"}}}entitySelected(t){var e=t.model.entity;this._entityId=e.entity_id,this._state=e.state,this._stateAttributes=JSON.stringify(e.attributes,null,"  "),t.preventDefault()}handleSetState(){var t,e=this._stateAttributes.replace(/^\s+|\s+$/g,"");try{t=e?JSON.parse(e):{}}catch(t){return void alert("Error parsing JSON: "+t)}this.hass.callApi("POST","states/"+this._entityId,{state:this._state,attributes:t})}computeEntities(t,e,r,i){return Object.keys(t.states).map(function(e){return t.states[e]}).filter(function(t){if(!t.entity_id.includes(e.toLowerCase()))return!1;if(!t.state.includes(r.toLowerCase()))return!1;if(""!==i){var s=i.toLowerCase(),n=s.indexOf(":"),a=-1!==n,u=s,l=s;a&&(u=s.substring(0,n).trim(),l=s.substring(n+1).trim());for(var o=Object.keys(t.attributes),y=0;y<o.length;y++){var c=o[y];if(c.includes(u)&&!a)return!0;if(c.includes(u)||!a){var p=t.attributes[c];if(null!==p&&JSON.stringify(p).toLowerCase().includes(l))return!0}}return!1}return!0}).sort(function(t,e){return t.entity_id<e.entity_id?-1:t.entity_id>e.entity_id?1:0})}computeShowEntitiesPlaceholder(t){return 0===t.length}computeShowAttributes(t,e){return!t&&e}attributeString(t){var e,r,i,s,n="";for(e=0,r=Object.keys(t.attributes);e<r.length;e++)i=r[e],s=t.attributes[i],!Array.isArray(s)&&s instanceof Object&&(s=JSON.stringify(s,null,"  ")),n+=i+": "+s+"\n";return n}}customElements.define(HaPanelDevState.is,HaPanelDevState);</script></body></html>