text: "use strict";(self.webpackChunkhome_assistant_frontend=self.webpackChunkhome_assistant_frontend||[]).push([[6444],{80033:function(e,t,n){n.d(t,{xC:function(){return r},p4:function(){return i},jg:function(){return o},pN:function(){return s},Dm:function(){return a}});var r=function(e){var t=e;return"string"==typeof e&&(t=parseInt(e,16)),"0x"+t.toString(16).padStart(4,"0")},i=function(e){return e.split(":").slice(-4).reverse().join("")},o=function(e,t){var n=e.user_given_name?e.user_given_name:e.name,r=t.user_given_name?t.user_given_name:t.name;return n.localeCompare(r)},s=function(e,t){var n=e.name,r=t.name;return n.localeCompare(r)},a=function(e){return"".concat(e.name," (Endpoint id: ").concat(e.endpoint_id,", Id: ").concat(r(e.id),", Type: ").concat(e.type,")")}},86444:function(e,t,n){n.r(t),n.d(t,{ZHAGroupPage:function(){return G}});n(53918);var r,i,o,s,a,c,l,d,u=n(37500),p=n(26767),f=n(5701),h=n(17717),m=n(67352),v=n(83849),y=(n(31206),n(10983),n(22383)),g=(n(48811),n(60010),n(88165),n(80033));n(79484);function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function k(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(l){return void n(l)}a.done?t(c):Promise.resolve(c).then(r,i)}function _(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function s(e){k(o,r,i,s,a,"next",e)}function a(e){k(o,r,i,s,a,"throw",e)}s(void 0)}))}}function w(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function E(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(e,t){return D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},D(e,t)}function z(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=F(e);if(t){var i=F(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return A(this,n)}}function A(e,t){if(t&&("object"===b(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return C(e)}function C(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function T(){T=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach((function(n){t.forEach((function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)}),this)}),this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach((function(r){t.forEach((function(t){var i=t.placement;if(t.kind===r&&("static"===i||"prototype"===i)){var o="static"===i?e:n;this.defineClassElement(o,t)}}),this)}),this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var r=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===r?void 0:r.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],r=[],i={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,i)}),this),e.forEach((function(e){if(!P(e))return n.push(e);var t=this.decorateElement(e,i);n.push(t.element),n.push.apply(n,t.extras),r.push.apply(r,t.finishers)}),this),!t)return{elements:n,finishers:r};var o=this.decorateConstructor(n,t);return r.push.apply(r,o.finishers),o.finishers=r,o},addElementPlacement:function(e,t,n){var r=t[e.placement];if(!n&&-1!==r.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");r.push(e.key)},decorateElement:function(e,t){for(var n=[],r=[],i=e.decorators,o=i.length-1;o>=0;o--){var s=t[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(a)||a);e=c.element,this.addElementPlacement(e,t),c.finisher&&r.push(c.finisher);var l=c.extras;if(l){for(var d=0;d<l.length;d++)this.addElementPlacement(l[d],t);n.push.apply(n,l)}}return{element:e,finishers:r,extras:n}},decorateConstructor:function(e,t){for(var n=[],r=t.length-1;r>=0;r--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[r])(i)||i);if(void 0!==o.finisher&&n.push(o.finisher),void 0!==o.elements){e=o.elements;for(var s=0;s<e.length-1;s++)for(var a=s+1;a<e.length;a++)if(e[s].key===e[a].key&&e[s].placement===e[a].placement)throw new TypeError("Duplicated element ("+e[s].key+")")}}return{elements:e,finishers:n}},fromElementDescriptor:function(e){var t={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(t.initializer=e.initializer),t},toElementDescriptors:function(e){var t;if(void 0!==e)return(t=e,function(e){if(Array.isArray(e))return e}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?I(e,t):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(e){var t=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),t}),this)},toElementDescriptor:function(e){var t=String(e.kind);if("method"!==t&&"field"!==t)throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "'+t+'"');var n=j(e.key),r=String(e.placement);if("static"!==r&&"prototype"!==r&&"own"!==r)throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "'+r+'"');var i=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var o={kind:t,key:n,placement:r,descriptor:Object.assign({},i)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(i,"get","The property descriptor of a field descriptor"),this.disallowProperty(i,"set","The property descriptor of a field descriptor"),this.disallowProperty(i,"value","The property descriptor of a field descriptor"),o.initializer=e.initializer),o},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:O(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var t={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),t},toClassDescriptor:function(e){var t=String(e.kind);if("class"!==t)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+t+'"');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var n=O(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:n}},runClassFinishers:function(e,t){for(var n=0;n<t.length;n++){var r=(0,t[n])(e);if(void 0!==r){if("function"!=typeof r)throw new TypeError("Finishers must return a constructor.");e=r}}return e},disallowProperty:function(e,t,n){if(void 0!==e[t])throw new TypeError(n+" can't have a ."+t+" property.")}};return e}function R(e){var t,n=j(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var r={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(r.decorators=e.decorators),"field"===e.kind&&(r.initializer=e.value),r}function S(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function P(e){return e.decorators&&e.decorators.length}function x(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function O(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function j(e){var t=function(e,t){if("object"!==b(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==b(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===b(t)?t:String(t)}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function M(e,t,n){return M="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=F(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(n):i.value}},M(e,t,n||e)}function F(e){return F=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},F(e)}var G=function(e,t,n,r){var i=T();if(r)for(var o=0;o<r.length;o++)i=r[o](i);var s=t((function(e){i.initializeInstanceElements(e,a.elements)}),n),a=i.decorateClass(function(e){for(var t=[],n=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},r=0;r<e.length;r++){var i,o=e[r];if("method"===o.kind&&(i=t.find(n)))if(x(o.descriptor)||x(i.descriptor)){if(P(o)||P(i))throw new ReferenceError("Duplicated methods ("+o.key+") can't be decorated.");i.descriptor=o.descriptor}else{if(P(o)){if(P(i))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}S(o,i)}else t.push(o)}return t}(s.d.map(R)),e);return i.initializeClassElements(s.F,a.elements),i.runClassFinishers(s.F,a.finishers)}([(0,p.M)("zha-group-page")],(function(e,t){var n,p,b,k,A=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&D(e,t)}(r,t);var n=z(r);function r(){var t;E(this,r);for(var i=arguments.length,o=new Array(i),s=0;s<i;s++)o[s]=arguments[s];return t=n.call.apply(n,[this].concat(o)),e(C(t)),t}return r}(t);return{F:A,d:[{kind:"field",decorators:[(0,f.C)({type:Object})],key:"hass",value:void 0},{kind:"field",decorators:[(0,f.C)({type:Object})],key:"group",value:void 0},{kind:"field",decorators:[(0,f.C)({type:Number})],key:"groupId",value:void 0},{kind:"field",decorators:[(0,f.C)({type:Boolean})],key:"narrow",value:void 0},{kind:"field",decorators:[(0,f.C)({type:Boolean})],key:"isWide",value:void 0},{kind:"field",decorators:[(0,f.C)({type:Array})],key:"deviceEndpoints",value:function(){return[]}},{kind:"field",decorators:[(0,h.S)()],key:"_processingAdd",value:function(){return!1}},{kind:"field",decorators:[(0,h.S)()],key:"_processingRemove",value:function(){return!1}},{kind:"field",decorators:[(0,h.S)()],key:"_filteredDeviceEndpoints",value:function(){return[]}},{kind:"field",decorators:[(0,h.S)()],key:"_selectedDevicesToAdd",value:function(){return[]}},{kind:"field",decorators:[(0,h.S)()],key:"_selectedDevicesToRemove",value:function(){return[]}},{kind:"field",decorators:[(0,m.I)("#addMembers",!0)],key:"_zhaAddMembersDataTable",value:void 0},{kind:"field",decorators:[(0,m.I)("#removeMembers")],key:"_zhaRemoveMembersDataTable",value:void 0},{kind:"field",key:"_firstUpdatedCalled",value:function(){return!1}},{kind:"method",key:"connectedCallback",value:function(){M(F(A.prototype),"connectedCallback",this).call(this),this.hass&&this._firstUpdatedCalled&&this._fetchData()}},{kind:"method",key:"disconnectedCallback",value:function(){M(F(A.prototype),"disconnectedCallback",this).call(this),this._processingAdd=!1,this._processingRemove=!1,this._selectedDevicesToRemove=[],this._selectedDevicesToAdd=[],this.deviceEndpoints=[],this._filteredDeviceEndpoints=[]}},{kind:"method",key:"firstUpdated",value:function(e){M(F(A.prototype),"firstUpdated",this).call(this,e),this.hass&&this._fetchData(),this._firstUpdatedCalled=!0}},{kind:"method",key:"render",value:function(){return this.group?(0,u.dy)(i||(i=w(["\n      <hass-subpage\n        .hass=","\n        .narrow=","\n        .header=",'\n      >\n        <ha-icon-button\n          slot="toolbar-icon"\n          .path=',"\n          @click=","\n          .label=","\n        ></ha-icon-button>\n        <ha-config-section .isWide=",'>\n          <div class="header">\n            ','\n          </div>\n\n          <p slot="introduction">\n            ',"\n          </p>\n\n          <p><b>Name:</b> ","</p>\n          <p><b>Group Id:</b> ",'</p>\n\n          <div class="header">\n            ',"\n          </div>\n          <ha-card>\n            ","\n          </ha-card>\n          ",'\n\n          <div class="header">\n            ','\n          </div>\n\n          <zha-device-endpoint-data-table\n            id="addMembers"\n            .hass=',"\n            .deviceEndpoints=","\n            .narrow=","\n            selectable\n            @selection-changed=",'\n          >\n          </zha-device-endpoint-data-table>\n\n          <div class="buttons">\n            <mwc-button\n              .disabled=',"\n              @click=",'\n              class="button"\n            >\n              ',"\n              ","</mwc-button\n            >\n          </div>\n        </ha-config-section>\n      </hass-subpage>\n    "])),this.hass,this.narrow,this.group.name,"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",this._deleteGroup,this.hass.localize("ui.panel.config.zha.groups.delete"),this.isWide,this.hass.localize("ui.panel.config.zha.groups.group_info"),this.hass.localize("ui.panel.config.zha.groups.group_details"),this.group.name,(0,g.xC)(this.group.group_id),this.hass.localize("ui.panel.config.zha.groups.members"),this.group.members.length?this.group.members.map((function(e){return(0,u.dy)(o||(o=w(['<a\n                      href="/config/devices/device/','"\n                    >\n                      <paper-item\n                        >',"</paper-item\n                      >\n                    </a>"])),e.device.device_reg_id,e.device.user_given_name||e.device.name)})):(0,u.dy)(s||(s=w([" <paper-item> This group has no members </paper-item> "]))),this.group.members.length?(0,u.dy)(a||(a=w(['\n                <div class="header">\n                  ','\n                </div>\n\n                <zha-device-endpoint-data-table\n                  id="removeMembers"\n                  .hass=',"\n                  .deviceEndpoints=","\n                  .narrow=","\n                  selectable\n                  @selection-changed=",'\n                >\n                </zha-device-endpoint-data-table>\n\n                <div class="buttons">\n                  <mwc-button\n                    .disabled=',"\n                    @click=",'\n                    class="button"\n                  >\n                    <ha-circular-progress\n                      ?active=',"\n                      alt=","\n                    ></ha-circular-progress>\n                    ","</mwc-button\n                  >\n                </div>\n              "])),this.hass.localize("ui.panel.config.zha.groups.remove_members"),this.hass,this.group.members,this.narrow,this._handleRemoveSelectionChanged,!this._selectedDevicesToRemove.length||this._processingRemove,this._removeMembersFromGroup,this._processingRemove,this.hass.localize("ui.panel.config.zha.groups.removing_members"),this.hass.localize("ui.panel.config.zha.groups.remove_members")):(0,u.dy)(c||(c=w([""]))),this.hass.localize("ui.panel.config.zha.groups.add_members"),this.hass,this._filteredDeviceEndpoints,this.narrow,this._handleAddSelectionChanged,!this._selectedDevicesToAdd.length||this._processingAdd,this._addMembersToGroup,this._processingAdd?(0,u.dy)(l||(l=w(['<ha-circular-progress\n                    active\n                    size="small"\n                    title="Saving"\n                  ></ha-circular-progress>']))):"",this.hass.localize("ui.panel.config.zha.groups.add_members")):(0,u.dy)(r||(r=w(["\n        <hass-error-screen\n          .hass=","\n          .error=","\n        ></hass-error-screen>\n      "])),this.hass,this.hass.localize("ui.panel.config.zha.groups.group_not_found"))}},{kind:"method",key:"_fetchData",value:(k=_(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===this.groupId||void 0===this.groupId){e.next=4;break}return e.next=3,(0,y.yi)(this.hass,this.groupId);case 3:this.group=e.sent;case 4:return e.next=6,(0,y.pT)(this.hass);case 6:this.deviceEndpoints=e.sent,this._filterDevices();case 8:case"end":return e.stop()}}),e,this)}))),function(){return k.apply(this,arguments)})},{kind:"method",key:"_filterDevices",value:function(){var e=this;this._filteredDeviceEndpoints=this.deviceEndpoints.filter((function(t){return!e.group.members.some((function(e){return e.device.ieee===t.device.ieee&&e.endpoint_id===t.endpoint_id}))}))}},{kind:"method",key:"_handleAddSelectionChanged",value:function(e){this._selectedDevicesToAdd=e.detail.value}},{kind:"method",key:"_handleRemoveSelectionChanged",value:function(e){this._selectedDevicesToRemove=e.detail.value}},{kind:"method",key:"_addMembersToGroup",value:(b=_(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._processingAdd=!0,t=this._selectedDevicesToAdd.map((function(e){var t=e.split("_");return{ieee:t[0],endpoint_id:t[1]}})),e.next=4,(0,y.dy)(this.hass,this.groupId,t);case 4:this.group=e.sent,this._filterDevices(),this._selectedDevicesToAdd=[],this._zhaAddMembersDataTable.clearSelection(),this._processingAdd=!1;case 9:case"end":return e.stop()}}),e,this)}))),function(){return b.apply(this,arguments)})},{kind:"method",key:"_removeMembersFromGroup",value:(p=_(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._processingRemove=!0,t=this._selectedDevicesToRemove.map((function(e){var t=e.split("_");return{ieee:t[0],endpoint_id:t[1]}})),e.next=4,(0,y.tz)(this.hass,this.groupId,t);case 4:this.group=e.sent,this._filterDevices(),this._selectedDevicesToRemove=[],this._zhaRemoveMembersDataTable.clearSelection(),this._processingRemove=!1;case 9:case"end":return e.stop()}}),e,this)}))),function(){return p.apply(this,arguments)})},{kind:"method",key:"_deleteGroup",value:(n=_(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,y.gg)(this.hass,[this.groupId]);case 2:(0,v.c)("/config/zha/groups",{replace:!0});case 3:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{kind:"get",static:!0,key:"styles",value:function(){return[(0,u.iv)(d||(d=w(["\n        hass-subpage {\n          --app-header-text-color: var(--sidebar-icon-color);\n        }\n        .header {\n          font-family: var(--paper-font-display1_-_font-family);\n          -webkit-font-smoothing: var(\n            --paper-font-display1_-_-webkit-font-smoothing\n          );\n          font-size: var(--paper-font-display1_-_font-size);\n          font-weight: var(--paper-font-display1_-_font-weight);\n          letter-spacing: var(--paper-font-display1_-_letter-spacing);\n          line-height: var(--paper-font-display1_-_line-height);\n          opacity: var(--dark-primary-opacity);\n        }\n\n        .button {\n          float: right;\n        }\n\n        a {\n          color: var(--primary-color);\n          text-decoration: none;\n        }\n        .buttons {\n          align-items: flex-end;\n          padding: 8px;\n        }\n        .buttons .warning {\n          --mdc-theme-primary: var(--error-color);\n        }\n      "])))]}}]}}),u.oi)}}]);