UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

11 lines 33.7 kB
export const __rspack_esm_id=34310;export const __rspack_esm_ids=[34310];export const __webpack_modules__={42653(t,e,o){o(18111),o(61701);var i=o(62826),r=o(5124),s=o(22441);class a extends r.WF{render(){return this.items.map(t=>r.qy` <span><strong>${t.label}</strong>:</span> <span>${t.value}${t.subValue&&t.subValue.length>0?r.qy` (<pre>${t.subValue}</pre>)`:r.s6}</span> `)}constructor(...t){super(...t),this.items=[]}}a.styles=r.AH`:host{display:grid;grid-template-columns:auto 1fr;gap:6px;white-space:pre-wrap;flex-wrap:nowrap}span{display:flex;align-items:center;flex-flow:wrap;word-wrap:break-word}pre{margin:0 3px;padding:3px;background-color:var(--markdown-code-background-color,none);border-radius:var(--ha-border-radius-sm);line-height:var(--ha-line-height-condensed)}`,(0,i.Cg)([(0,s.MZ)({attribute:!1})],a.prototype,"items",void 0),a=(0,i.Cg)([(0,s.EM)("ha-code-editor-completion-items")],a)},15717(t,e,o){o.a(t,async function(t,i){try{o.r(e),o.d(e,{HaCodeEditor:()=>$});o(44114),o(18111),o(22489),o(61701),o(17642),o(58004),o(33853),o(45876),o(32475),o(15024),o(31698);var r=o(62826),s=o(40158),a=o(9657),n=o(81329),l=o(5124),d=o(22441),c=o(22786),h=o(35211),p=o(1087),m=o(57237),u=o(28455),_=o(37981),f=o(65522),b=o(55931),g=o(63130),C=o(14503),v=o(81619),y=o(36918),M=o(22792),x=(o(42653),o(47680),o(9882)),w=t([s,x]);[s,x]=w.then?(await w)():w;const k="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z",I="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z",L="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z",F="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z",H="M20,8H17.19C16.74,7.2 16.12,6.5 15.37,6L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.05,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6C7.87,6.5 7.26,7.21 6.81,8H4V10H6.09C6.03,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.03,15.67 6.09,16H4V18H6.81C8.47,20.87 12.14,21.84 15,20.18C15.91,19.66 16.67,18.9 17.19,18H20V16H17.91C17.97,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.97,10.33 17.91,10H20V8M16,15A4,4 0 0,1 12,19A4,4 0 0,1 8,15V11A4,4 0 0,1 12,7A4,4 0 0,1 16,11V15M14,10V12H10V10H14M10,14H14V16H10V14Z",S="M11,6C12.38,6 13.63,6.56 14.54,7.46L12,10H18V4L15.95,6.05C14.68,4.78 12.93,4 11,4C7.47,4 4.57,6.61 4.08,10H6.1C6.56,7.72 8.58,6 11,6M16.64,15.14C17.3,14.24 17.76,13.17 17.92,12H15.9C15.44,14.28 13.42,16 11,16C9.62,16 8.37,15.44 7.46,14.54L10,12H4V18L6.05,15.95C7.32,17.22 9.07,18 11,18C12.55,18 14,17.5 15.14,16.64L20,21.5L21.5,20L16.64,15.14Z",V="M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z",E="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z",T={key:"Mod-s",run:t=>((0,p.r)(t.dom,"editor-save"),!0)},A=t=>{const e=document.createElement("ha-icon");return e.icon=t.label,e};class $ extends l.mN{set value(t){this._value=t}get value(){return this.codemirror?this.codemirror.state.doc.toString():this._value}get hasComments(){if(!this.codemirror||!this._loadedCodeMirror)return!1;const t=this._loadedCodeMirror.highlightingFor(this.codemirror.state,[this._loadedCodeMirror.tags.comment]);return!!this.renderRoot.querySelector(`span.${t}`)}setYamlError(t){if(!this.codemirror||!this._loadedCodeMirror)return;let e=[];if(t){const o=this.codemirror.state.doc,i=t.mark?Math.min(t.mark.position,o.length):0,r=o.lineAt(i),s=`${t.reason||this._i18n?.localize("ui.components.yaml-editor.error")||"YAML syntax error"}${t.mark?` (${this._i18n?.localize("ui.components.yaml-editor.error_location",{line:t.mark.line+1,column:t.mark.column+1})})`:""}`;e=[{from:i,to:r.to,severity:"error",message:s}]}this.codemirror.dispatch(this._loadedCodeMirror.setDiagnostics(this.codemirror.state,e))}connectedCallback(){super.connectedCallback(),this.classList.toggle("in-dialog",this.inDialog),this.hasUpdated&&this.requestUpdate(),this.addEventListener("keydown",m.d),this.addEventListener("keydown",this._handleKeyDown),this.codemirror&&!1!==this.autofocus&&this.codemirror.focus()}disconnectedCallback(){(0,p.r)(this,"dialog-set-fullscreen",!1),this._clearCompletionInfo(),void 0!==this._completionInfoFrame&&(cancelAnimationFrame(this._completionInfoFrame),this._completionInfoFrame=void 0),this._completionInfoPopover?.remove(),this._completionInfoPopover=void 0,this._completionInfoContainer=void 0,super.disconnectedCallback(),this.removeEventListener("keydown",m.d),this.removeEventListener("keydown",this._handleKeyDown),this._updateFullscreenState(!1),this.updateComplete.then(()=>{this.codemirror.destroy(),delete this.codemirror})}async scheduleUpdate(){this._loadedCodeMirror??=await Promise.all([o.e(69510),o.e(47313)]).then(o.bind(o,93480)),super.scheduleUpdate()}update(t){if(super.update(t),!this.codemirror)return void this._createCodeMirror();const e=[];t.has("mode")&&e.push({effects:[this._loadedCodeMirror.langCompartment.reconfigure(this._mode),this._loadedCodeMirror.yamlLintCompartment.reconfigure(this.lint&&!this.readOnly?[this._loadedCodeMirror.lintGutter()]:[])]}),t.has("readOnly")&&(e.push({effects:[this._loadedCodeMirror.readonlyCompartment.reconfigure(this._loadedCodeMirror.EditorView.editable.of(!this.readOnly)),this._loadedCodeMirror.yamlLintCompartment.reconfigure(this.lint&&!this.readOnly?[this._loadedCodeMirror.lintGutter()]:[])]}),this._updateToolbarButtons()),t.has("lint")&&e.push({effects:this._loadedCodeMirror.yamlLintCompartment.reconfigure(this.lint&&!this.readOnly?[this._loadedCodeMirror.lintGutter()]:[])}),t.has("linewrap")&&e.push({effects:this._loadedCodeMirror.linewrapCompartment.reconfigure(this.linewrap?this._loadedCodeMirror.EditorView.lineWrapping:[])}),t.has("_value")&&this._value!==this.value&&e.push({changes:{from:0,to:this.codemirror.state.doc.length,insert:this._value}}),e.length>0&&this.codemirror.dispatch(...e),t.has("hasToolbar")&&this._updateToolbar(),t.has("error")&&this.classList.toggle("error-state",this.error),t.has("inDialog")&&this.classList.toggle("in-dialog",this.inDialog),t.has("_isFullscreen")&&(this.classList.toggle("fullscreen",this._isFullscreen),this._updateToolbarButtons()),(t.has("_canCopy")||t.has("_canUndo")||t.has("_canRedo")||t.has("testing"))&&this._updateToolbarButtons(),t.has("disableFullscreen")&&this._updateFullscreenState()}get _mode(){return this._loadedCodeMirror.langs[this.mode]}_createCodeMirror(){if(!this._loadedCodeMirror)throw new Error("Cannot create editor before CodeMirror is loaded");const t=[this._loadedCodeMirror.lineNumbers(),this._loadedCodeMirror.foldGutter(),this._loadedCodeMirror.bracketMatching(),this._loadedCodeMirror.history(),this._loadedCodeMirror.drawSelection(),this._loadedCodeMirror.EditorState.allowMultipleSelections.of(!0),this._loadedCodeMirror.rectangularSelection(),this._loadedCodeMirror.crosshairCursor(),this._loadedCodeMirror.highlightSelectionMatches(),this._loadedCodeMirror.highlightActiveLine(),this._loadedCodeMirror.dropCursor(),this._loadedCodeMirror.indentationMarkers({thickness:0,activeThickness:1,colors:{activeLight:"var(--secondary-text-color)",activeDark:"var(--secondary-text-color)"}}),this._loadedCodeMirror.keymap.of([...this.readOnly?[]:this._loadedCodeMirror.closeBracketsKeymap,...this._loadedCodeMirror.defaultKeymap,...this._loadedCodeMirror.searchKeymap,...this._loadedCodeMirror.historyKeymap,...this._loadedCodeMirror.tabKeyBindings,...this._loadedCodeMirror.lintKeymap,T]),this._loadedCodeMirror.search({top:!0}),this._loadedCodeMirror.langCompartment.of(this._mode),this._loadedCodeMirror.haTheme,this._loadedCodeMirror.haSyntaxHighlighting,this._loadedCodeMirror.yamlScalarHighlighter,this._loadedCodeMirror.yamlScalarHighlightStyle,this._loadedCodeMirror.readonlyCompartment.of(this._loadedCodeMirror.EditorView.editable.of(!this.readOnly)),this._loadedCodeMirror.linewrapCompartment.of(this.linewrap?this._loadedCodeMirror.EditorView.lineWrapping:[]),this._loadedCodeMirror.yamlLintCompartment.of(this.lint&&!this.readOnly?[this._loadedCodeMirror.lintGutter()]:[]),this._loadedCodeMirror.EditorView.updateListener.of(this._onUpdate),this._loadedCodeMirror.tooltips({position:"absolute"}),this._loadedCodeMirror.hoverTooltip((t,e)=>this._loadedCodeMirror.haJinjaHoverSource(t,e,this._config?(0,y.o)(this._config,""):void 0,this._hassArgHoverContext()),{hoverTime:300}),...this.placeholder?[(0,n.qf)(this.placeholder)]:[]];if(!this.readOnly){const e=[this._loadedCodeMirror.haJinjaCompletionSource];this.autocompleteEntities&&e.push(this._entityCompletions.bind(this)),this.autocompleteIcons&&e.push(this._mdiCompletions.bind(this)),t.push(this._loadedCodeMirror.autocompletion({override:e,maxRenderedOptions:10}),this._loadedCodeMirror.closeBrackets(),this._loadedCodeMirror.closeBracketsOverride,this._loadedCodeMirror.closePercentBrace)}this.codemirror=new this._loadedCodeMirror.EditorView({state:this._loadedCodeMirror.EditorState.create({doc:this._value,extensions:t}),parent:this.renderRoot}),this._canCopy=this._value?.length>0;const e=this.codemirror.dom.querySelector(".cm-scroller");e&&e.classList.add("ha-scrollbar"),this._updateToolbar()}_fullscreenLabel(){return this._isFullscreen?this._i18n?.localize("ui.components.yaml-editor.exit_fullscreen")||"Exit fullscreen":this._i18n?.localize("ui.components.yaml-editor.enter_fullscreen")||"Enter fullscreen"}_fullscreenIcon(){return this._isFullscreen?k:I}_createEditorToolbar(){const t=document.createElement("ha-icon-button-toolbar");return t.classList.add("code-editor-toolbar"),t.items=[],t}_updateToolbar(){this.classList.toggle("hasToolbar",this.hasToolbar),this._updateFullscreenState(),this.hasToolbar&&(this._editorToolbar||(this._editorToolbar=this._createEditorToolbar()),this._updateToolbarButtons(),this.codemirror?.dom.appendChild(this._editorToolbar))}_updateToolbarButtons(){this._editorToolbar&&(this._editorToolbar.items=[...this.hasTest&&!this._isFullscreen?[{id:"test",label:this._i18n?.localize("ui.components.yaml-editor.test_"+(this.testing?"off":"on"))||"Test",path:this.testing?H:F,action:t=>this._handleTestClick(t)}]:[],{id:"undo",disabled:!this._canUndo,label:this._i18n?.localize("ui.common.undo")||"Undo",path:E,action:t=>this._handleUndoClick(t)},{id:"redo",disabled:!this._canRedo,label:this._i18n?.localize("ui.common.redo")||"Redo",path:V,action:t=>this._handleRedoClick(t)},{id:"copy",disabled:!this._canCopy,label:this._i18n?.localize("ui.components.yaml-editor.copy_to_clipboard")||"Copy to Clipboard",path:L,action:t=>this._handleClipboardClick(t)},{id:"find-replace",label:this._i18n?.localize("ui.components.yaml-editor.find_and_replace")||"Find and replace",path:S,action:t=>this._handleFindReplaceClick(t)},{id:"fullscreen",disabled:this.disableFullscreen,label:this._fullscreenLabel(),path:this._fullscreenIcon(),action:t=>this._handleFullscreenClick(t)}])}_updateFullscreenState(t=this._isFullscreen){const e=this._isFullscreen;return this.classList.toggle("in-dialog",this.inDialog),this._isFullscreen=t&&!this.disableFullscreen&&this.hasToolbar,e!==this._isFullscreen&&(0,p.r)(this,"dialog-set-fullscreen",this._isFullscreen),this._isFullscreen===t}_hassArgHoverContext(){const t={};for(const e of this._labels??[])t[e.label_id]={name:e.name,description:e.description};return{states:this._states,devices:this._registries?.devices,areas:this._registries?.areas,floors:this._registries?.floors,entities:this._registries?.entities,labels:t,formatEntityState:t=>this._formatters.formatEntityState(this._states[t]),formatEntityName:t=>{const e=this._states?.[t];return e?.attributes.friendly_name??this._registries?.entities?.[t]?.name??void 0},formatAttributeName:(t,e)=>this._formatters.formatEntityAttributeName(this._states[t],e),formatAttributeValue:(t,e)=>this._formatters.formatEntityAttributeValue(this._states[t],e),localize:t=>this._i18n.localize(t)}}_ensureCompletionInfoPopover(){return this._completionInfoPopover||(this._completionInfoPopover=document.createElement("wa-popup"),this._completionInfoPopover.classList.add("completion-info-popover"),this._completionInfoPopover.placement="right-start",this._completionInfoPopover.distance=4,this._completionInfoPopover.flip=!0,this._completionInfoPopover.flipFallbackPlacements="left-start bottom-start top-start",this._completionInfoPopover.shift=!0,this._completionInfoPopover.shiftPadding=8,this._completionInfoPopover.autoSize="both",this._completionInfoPopover.autoSizePadding=8,this._completionInfoContainer=document.createElement("div"),this._completionInfoPopover.appendChild(this._completionInfoContainer),this.renderRoot.appendChild(this._completionInfoPopover)),this._completionInfoPopover}_clearCompletionInfo(){this._completionInfoRequest+=1,this._completionInfoKey=void 0,this._completionInfoDestroy?.(),this._completionInfoDestroy=void 0,this._completionInfoContainer?.replaceChildren(),this._completionInfoPopover?.active&&(this._completionInfoPopover.active=!1)}_renderCompletionInfoContent(t){this._completionInfoDestroy?.(),this._completionInfoDestroy=void 0,this._completionInfoContainer&&(null!==t?"nodeType"in t?this._completionInfoContainer.replaceChildren(t):(this._completionInfoContainer.replaceChildren(t.dom),this._completionInfoDestroy=t.destroy):this._completionInfoContainer.replaceChildren())}get _jinjaFunctionArgTypes(){return this._loadedCodeMirror.JINJA_FUNCTION_ARG_TYPES}_statesDotNotationCompletions(t){if(!this._states)return;const{state:e,pos:o}=t,i=this._loadedCodeMirror.syntaxTree(e).resolveInner(o,-1),r=i.parent;let s;if("PropertyName"===i.name&&"MemberExpression"===r?.name)s=i.from;else{if("."!==i.name||"MemberExpression"!==r?.name)return;s=o}const a=[];let n=r,l="PropertyName"===i.name;for(;"MemberExpression"===n?.name;){let t=n.lastChild;for(;t&&"PropertyName"!==t.name;)t=t.prevSibling;t&&(l?l=!1:a.unshift(e.doc.sliceString(t.from,t.to)));const o=n.firstChild;if(!o)break;if("VariableName"===o.name){if("states"!==e.doc.sliceString(o.from,o.to))return;break}if("MemberExpression"!==o.name)return;n=o}const d=n?.firstChild;if(!d||"VariableName"!==d.name)return;if("states"!==e.doc.sliceString(d.from,d.to))return;switch(a.length){case 0:return{from:s,options:[...new Set(Object.keys(this._states).map(t=>t.split(".")[0]))].sort().map(t=>({label:t,type:"variable"})),validFor:/^\w*$/};case 1:{const[t]=a,e=Object.keys(this._states).filter(e=>e.startsWith(`${t}.`)).map(t=>t.split(".").slice(1).join("."));return e.length?{from:s,options:e.map(t=>({label:t,type:"variable"})),validFor:/^\w*$/}:{from:s,options:[]}}case 2:return{from:s,options:$._STATE_FIELDS.map(t=>({label:t,type:"property"})),validFor:/^\w*$/};case 3:{const[t,e,o]=a;if("attributes"!==o)return{from:s,options:[]};const i=`${t}.${e}`,r=this._states[i];if(!r)return{from:s,options:[]};return{from:s,options:Object.keys(r.attributes).sort().map(t=>({label:t,type:"property"})),validFor:/^\w*$/}}default:return{from:s,options:[]}}}_jinjaStringArgCompletions(t){const{state:e,pos:o}=t,i=this._loadedCodeMirror.syntaxTree(e).resolveInner(o,-1);if("StringLiteral"!==i.name)return;const r=i.parent;if("SubscriptExpression"===r?.name){const t=r.firstChild;if(t&&"states"===e.doc.sliceString(t.from,t.to))return this._completionResultForArgType("entity_id",i)}const s=i.parent;if("ArgumentList"!==s?.name)return;const a=s.parent;if("CallExpression"!==a?.name)return;const n=a.firstChild;if(!n)return;const l=e.doc.sliceString(n.from,n.to),d=this._jinjaFunctionArgTypes.get(l);if(!d)return;let c=0,h=s.firstChild?.nextSibling;for(;h&&")"!==h.name;){if(","!==h.name){if(h.from===i.from)break;c++}h=h.nextSibling}const p=d.get(c);if(p){if("attribute"===p){const t=this._entityIdFromSiblingArg(s,d,e);return this._attributeCompletionResult(i,t)}return this._completionResultForArgType(p,i)}}_entityIdFromSiblingArg(t,e,o){let i;for(const[t,o]of e)if("entity_id"===o){i=t;break}if(void 0===i)return null;let r=0,s=t.firstChild?.nextSibling;for(;s&&")"!==s.name;){if(","!==s.name){if(r===i){if("StringLiteral"!==s.name)return null;return o.doc.sliceString(s.from,s.to).slice(1,-1)}r++}s=s.nextSibling}return null}_completionResultForArgType(t,e){const o={from:e.from+1,options:[]};switch(t){case"entity_id":return this._entityCompletionResult(e)??o;case"device_id":return this._deviceCompletionResult(e)??o;case"area_id":return this._areaCompletionResult(e)??o;case"floor_id":return this._floorCompletionResult(e)??o;case"label_id":return this._labelCompletionResult(e)??o;default:return o}}_attributeCompletionResult(t,e){const o=t.from+1,i={from:o,options:[]};if(!e||!this._states)return i;const r=this._states[e];if(!r)return i;const s=Object.keys(r.attributes).sort();return s.length?{from:o,options:s.map(t=>({label:t,type:"property",info:()=>this._renderAttributeInfo(e,t)})),validFor:/^[\w.]*$/}:i}_entityCompletionResult(t){const e=this._getStates(this._states);if(!e?.length)return null;return{from:t.from+1,options:e,validFor:/^[\w.]*$/}}_deviceCompletionResult(t){if(!this._registries?.devices)return null;const e=this._getDevices(this._registries.devices);return e.length?{from:t.from+1,options:e,validFor:/^[^"]*$/}:null}_areaCompletionResult(t){if(!this._registries?.areas)return null;const e=this._getAreas(this._registries.areas);return e.length?{from:t.from+1,options:e,validFor:/^[^"]*$/}:null}_floorCompletionResult(t){if(!this._registries?.floors)return null;const e=this._getFloors(this._registries.floors);return e.length?{from:t.from+1,options:e,validFor:/^[^"]*$/}:null}_labelCompletionResult(t){if(!this._labels?.length)return null;const e=this._getLabels(this._labels);return e.length?{from:t.from+1,options:e,validFor:/^[^"]*$/}:null}_entityCompletions(t){if("yaml"===this.mode||"jinja2"===this.mode){const e=this._statesDotNotationCompletions(t);if(void 0!==e)return e;const o=this._jinjaStringArgCompletions(t);if(void 0!==o)return o}if("yaml"===this.mode){const e=t.state.doc.lineAt(t.pos),o=e.text,i=["entity_id","entity","entities","badges","devices","lights","light","group_members","scene","zone","zones"].join("|"),r=new RegExp(`^\\s*(-\\s+)?(${i}):\\s*`),s=o.match(r),a=o.match(/^\s*-\s+/);if(s){const o=e.from+s[0].length,i=o>0&&":"===t.state.doc.sliceString(o-1,o);if(t.pos>=o){const e=this._getStates(this._states);if(!e||!e.length)return null;const r=t.state.sliceDoc(o,t.pos),s=r?e.filter(t=>t.displayLabel?.toLowerCase().startsWith(r.toLowerCase())):e;return{from:o,options:i?s.map(t=>({...t,apply:` ${t.label}`})):s,validFor:/^[a-z_]*\.?\w*$/}}}else if(a){const o=e.number;for(let r=o-1;r>0&&r>=o-10;r--){const o=t.state.doc.line(r).text;if(o.trim()&&!o.startsWith(" ")&&!o.startsWith("\t"))break;const s=new RegExp(`^\\s*(${i}):\\s*$`);if(o.match(s)){const o=e.from+a[0].length;if(t.pos>=o){const e=this._getStates(this._states);if(!e||!e.length)return null;const i=t.state.sliceDoc(o,t.pos);return{from:o,options:i?e.filter(t=>t.displayLabel?.toLowerCase().startsWith(i.toLowerCase())):e,validFor:/^[a-z_]*\.?\w*$/}}}}}const n=["action"].join("|"),l=new RegExp(`^\\s*(-\\s+)?(${n}):\\s*`);if(o.match(l))return null}if("jinja2"===this.mode)return null;const e=t.matchBefore(/[a-z_]{3,}\.\w*/);if(!e||e.from===e.to&&!t.explicit)return null;const o=this._getStates(this._states);return o&&o.length?{from:Number(e.from),options:o,validFor:/^[a-z_]{3,}\.\w*$/}:null}async _mdiCompletions(t){const e=t.matchBefore(/mdi:\S*/);if(!e||e.from===e.to&&!t.explicit)return null;const o=await this._getIconItems();return{from:Number(e.from),options:o,validFor:/^mdi:\S*$/}}static get styles(){return[C.dp,l.AH`:host{position:relative;display:block;--code-editor-toolbar-height:28px}:host(.error-state) .cm-gutters{border-color:var(--error-state-color,var(--error-color))!important}:host(.hasToolbar) .cm-gutters{padding-top:0}:host(.hasToolbar) .cm-focused .cm-gutters{padding-top:1px}:host(.error-state) .cm-content{border-color:var(--error-state-color,var(--error-color))!important}:host(.hasToolbar) .cm-content{border:none;border-top:1px solid var(--secondary-text-color)}:host(.hasToolbar) .cm-focused .cm-content{border-top:2px solid var(--primary-color);padding-top:15px}:host(.fullscreen){position:fixed!important;top:calc(var(--header-height,56px) + var(--ha-space-2))!important;left:var(--ha-space-2)!important;right:var(--ha-space-2)!important;bottom:var(--ha-space-2)!important;z-index:6;border-radius:var(--ha-border-radius-lg)!important;box-shadow:0 2px 10px rgba(0,0,0,.3)!important;overflow:hidden!important;background-color:var(--code-editor-background-color,var(--card-background-color))!important;margin:0!important;padding-top:var(--safe-area-inset-top)!important;padding-left:var(--safe-area-inset-left)!important;padding-right:var(--safe-area-inset-right)!important;padding-bottom:var(--safe-area-inset-bottom)!important;box-sizing:border-box!important;display:block!important}:host(.in-dialog.fullscreen){position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;border-radius:0!important;box-shadow:none!important;padding:0!important}:host(.hasToolbar) .cm-editor{padding-top:var(--code-editor-toolbar-height)}:host(.fullscreen) .cm-editor{height:100%!important;max-height:100%!important;border-radius:var(--ha-border-radius-square)!important}:host(:not(.hasToolbar)) .code-editor-toolbar{display:none!important}.code-editor-toolbar{--icon-button-toolbar-height:var(--code-editor-toolbar-height);--icon-button-toolbar-color:var( --code-editor-gutter-color, var(--secondary-background-color, whitesmoke) );border-top-left-radius:var(--ha-border-radius-sm);border-top-right-radius:var(--ha-border-radius-sm)}.completion-info{display:grid;gap:3px;padding:8px}wa-popup.completion-info-popover{--auto-size-available-width:min( 420px, calc(var(--safe-width) - var(--ha-space-8)) )}wa-popup.completion-info-popover::part(popup){padding:0;color:var(--primary-text-color);background-color:var(--code-editor-background-color,var(--card-background-color));border:1px solid var(--divider-color);border-radius:var(--mdc-shape-medium,4px);box-shadow:0px 5px 5px -3px rgb(0 0 0 / 20%),0px 8px 10px 1px rgb(0 0 0 / 14%),0px 3px 14px 2px rgb(0 0 0 / 12%)}@media (max-width:600px){.completion-info,wa-popup.completion-info-popover{display:none}}`]}constructor(...t){super(...t),this.mode="yaml",this.autofocus=!1,this.readOnly=!1,this.linewrap=!1,this.autocompleteEntities=!1,this.autocompleteIcons=!1,this.error=!1,this.lint=!1,this.disableFullscreen=!1,this.inDialog=!1,this.hasToolbar=!0,this.hasTest=!1,this.testing=!1,this._value="",this._isFullscreen=!1,this._canUndo=!1,this._canRedo=!1,this._canCopy=!1,this._completionInfoRequest=0,this._handleClipboardClick=async t=>{t.preventDefault(),t.stopPropagation(),this.value&&(await(0,g.l)(this.value),(0,v.P)(this,{message:this._i18n?.localize("ui.common.copied_clipboard")||"Copied to clipboard"}))},this._handleTestClick=t=>{t.preventDefault(),t.stopPropagation(),this.codemirror&&(0,p.r)(this,"test-toggle")},this._handleUndoClick=t=>{t.preventDefault(),t.stopPropagation(),this.codemirror&&(0,a.tN)(this.codemirror)},this._handleRedoClick=t=>{t.preventDefault(),t.stopPropagation(),this.codemirror&&(0,a.ZS)(this.codemirror)},this._handleFullscreenClick=t=>{t.preventDefault(),t.stopPropagation(),this._updateFullscreenState(!this._isFullscreen)},this._handleFindReplaceClick=t=>{if(t.preventDefault(),t.stopPropagation(),!this.codemirror||!this._loadedCodeMirror)return;this.codemirror.dom.querySelector(".cm-search")?this._loadedCodeMirror.closeSearchPanel(this.codemirror):this._loadedCodeMirror.openSearchPanel(this.codemirror)},this._handleKeyDown=t=>{("Escape"===t.key&&this._isFullscreen&&this._updateFullscreenState(!1)||"F11"===t.key&&this._updateFullscreenState(!0))&&(t.preventDefault(),t.stopPropagation())},this._renderInfo=t=>{const e="string"==typeof t.apply?t.apply:t.label,o=(0,u.ln)(this._states[e],this._registries.entities,this._registries.devices,this._registries.areas,this._registries.floors),i=document.createElement("div");i.classList.add("completion-info");const r=this._formatters.formatEntityState(this._states[e]),s=[{label:this._i18n.localize("ui.components.entity.entity-state-picker.state"),value:r,subValue:this._states[e].state===r?void 0:this._states[e].state}];return o.device&&o.device.name&&s.push({label:this._i18n.localize("ui.components.device-picker.device"),value:o.device.name}),o.area&&o.area.name&&s.push({label:this._i18n.localize("ui.components.area-picker.area"),value:o.area.name}),o.floor&&o.floor.name&&s.push({label:this._i18n.localize("ui.components.floor-picker.floor"),value:o.floor.name}),(0,l.XX)(l.qy` <ha-code-editor-completion-items .items="${s}"></ha-code-editor-completion-items> `,i),i},this._renderAttributeInfo=(t,e)=>{if(!this._states||!this._formatters)return null;const o=this._states[t];if(!o)return null;const i=this._formatters.formatEntityAttributeName(o,e),r=this._formatters.formatEntityAttributeValue(o,e),s=o.attributes[e],a=null!=s?String(s):void 0,n=[{label:i,value:r,subValue:void 0!==a&&a!==r?a:void 0}],d=document.createElement("div");return d.classList.add("completion-info"),(0,l.XX)(l.qy` <ha-code-editor-completion-items .items="${n}"></ha-code-editor-completion-items> `,d),d},this._getCompletionInfo=t=>this._states&&"string"==typeof t.apply&&t.apply in this._states?this._renderInfo(t):t.label.startsWith("mdi:")?A(t):"function"==typeof t.info?t.info(t):null,this._syncCompletionInfoPopover=()=>{void 0!==this._completionInfoFrame&&cancelAnimationFrame(this._completionInfoFrame),this._completionInfoFrame=requestAnimationFrame(()=>{this._completionInfoFrame=void 0,this._syncCompletionInfoPopoverNow()})},this._syncCompletionInfoPopoverNow=()=>{if(!this.codemirror||!this._loadedCodeMirror)return;if(window.matchMedia("(max-width: 600px)").matches)return void this._clearCompletionInfo();const t=this._loadedCodeMirror.selectedCompletion(this.codemirror.state),e=this.codemirror.dom.querySelector(".cm-tooltip-autocomplete li[aria-selected]");if(!t||!e)return void this._clearCompletionInfo();const o=this._getCompletionInfo(t);if(!o)return void this._clearCompletionInfo();const i=++this._completionInfoRequest,r=t.label,s=this._ensureCompletionInfoPopover();s.anchor=e;const a=async t=>{i===this._completionInfoRequest?(r!==this._completionInfoKey&&(this._renderCompletionInfoContent(t),this._completionInfoKey=r),await s.updateComplete,s.active=!0,s.reposition()):t&&"object"==typeof t&&"destroy"in t&&t.destroy?.()};"then"in o?o.then(a).catch(()=>{i===this._completionInfoRequest&&this._clearCompletionInfo()}):a(o).catch(()=>{i===this._completionInfoRequest&&this._clearCompletionInfo()})},this._getStates=(0,c.A)(t=>{if(!t)return[];return Object.keys(t).map(e=>({type:"variable",label:t[e].attributes.friendly_name?`${t[e].attributes.friendly_name} ${e}`:e,displayLabel:e,detail:t[e].attributes.friendly_name,apply:e}))}),this._getDevices=(0,c.A)(t=>Object.values(t).filter(t=>!t.disabled_by).map(t=>{const e=(0,_.xn)(t);return{type:"variable",label:`${e} ${t.id}`,displayLabel:e??t.id,detail:t.id,apply:t.id}})),this._getAreas=(0,c.A)(t=>Object.values(t).map(t=>{const e=(0,f.A)(t)??t.area_id;return{type:"variable",label:`${e} ${t.area_id}`,displayLabel:e,detail:t.area_id,apply:t.area_id}})),this._getFloors=(0,c.A)(t=>Object.values(t).map(t=>{const e=(0,b.X)(t)??t.floor_id;return{type:"variable",label:`${e} ${t.floor_id}`,displayLabel:e,detail:t.floor_id,apply:t.floor_id}})),this._getLabels=(0,c.A)(t=>t.map(t=>{const e=t.name.trim()||t.label_id;return{type:"variable",label:`${e} ${t.label_id}`,displayLabel:e,detail:t.label_id,apply:t.label_id}})),this._getIconItems=async()=>{if(!this._iconList){const t=(await o.e(81340).then(o.t.bind(o,25143,19))).default;this._iconList=t.map(t=>({type:"variable",label:`mdi:${t.name}`,detail:t.keywords.join(", ")}))}return this._iconList},this._onUpdate=t=>{this._canUndo=!this.readOnly&&(0,a.mk)(t.state)>0,this._canRedo=!this.readOnly&&(0,a.mL)(t.state)>0,this._syncCompletionInfoPopover(),t.docChanged&&(this._value=t.state.doc.toString(),this._canCopy=this._value?.length>0,(0,p.r)(this,"value-changed",{value:this._value}))}}}$._STATE_FIELDS=["state","attributes","last_changed","last_updated","context","domain","object_id","name","entity_id","state_with_unit"],(0,r.Cg)([(0,d.MZ)()],$.prototype,"mode",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean})],$.prototype,"autofocus",void 0),(0,r.Cg)([(0,d.MZ)({attribute:"read-only",type:Boolean})],$.prototype,"readOnly",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean})],$.prototype,"linewrap",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"autocomplete-entities"})],$.prototype,"autocompleteEntities",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"autocomplete-icons"})],$.prototype,"autocompleteIcons",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean})],$.prototype,"error",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean})],$.prototype,"lint",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"disable-fullscreen"})],$.prototype,"disableFullscreen",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"in-dialog"})],$.prototype,"inDialog",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"has-toolbar"})],$.prototype,"hasToolbar",void 0),(0,r.Cg)([(0,d.MZ)({type:Boolean,attribute:"has-test"})],$.prototype,"hasTest",void 0),(0,r.Cg)([(0,d.MZ)({attribute:!1})],$.prototype,"testing",void 0),(0,r.Cg)([(0,d.MZ)({type:String})],$.prototype,"placeholder",void 0),(0,r.Cg)([(0,d.wk)()],$.prototype,"_value",void 0),(0,r.Cg)([(0,d.wk)()],$.prototype,"_isFullscreen",void 0),(0,r.Cg)([(0,d.wk)()],$.prototype,"_canUndo",void 0),(0,r.Cg)([(0,d.wk)()],$.prototype,"_canRedo",void 0),(0,r.Cg)([(0,d.wk)()],$.prototype,"_canCopy",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.WF,subscribe:!0})],$.prototype,"_config",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.D5,subscribe:!0})],$.prototype,"_i18n",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.HD,subscribe:!0})],$.prototype,"_labels",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.Hd,subscribe:!0})],$.prototype,"_registries",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.p0,subscribe:!0})],$.prototype,"_formatters",void 0),(0,r.Cg)([(0,d.wk)(),(0,h.Fg)({context:M.iN,subscribe:!0})],$.prototype,"_states",void 0),$=(0,r.Cg)([(0,d.EM)("ha-code-editor")],$),i()}catch(t){i(t)}})},39826(t,e,o){o.r(e),o.d(e,{HaIconButtonGroup:()=>a});var i=o(62826),r=o(5124),s=o(22441);class a extends r.WF{render(){return r.qy`<slot></slot>`}}a.styles=r.AH`:host{position:relative;display:flex;flex-direction:row;align-items:center;height:48px;border-radius:var(--ha-border-radius-4xl);background-color:rgba(139,145,151,.1);box-sizing:border-box;width:auto;padding:0}::slotted(.separator){background-color:rgba(var(--rgb-primary-text-color),.15);width:1px;margin:0 1px;height:40px}`,a=(0,i.Cg)([(0,s.EM)("ha-icon-button-group")],a)},9882(t,e,o){o.a(t,async function(t,i){try{o.r(e),o.d(e,{HaIconButtonToolbar:()=>c});o(18111),o(22489),o(61701);var r=o(62826),s=o(5124),a=o(22441),n=(o(47680),o(26300)),l=(o(39826),o(34127)),d=t([n,l]);[n,l]=d.then?(await d)():d;class c extends s.WF{findToolbarButtons(t=""){const e=this._buttons?.filter(t=>t.classList.contains("icon-toolbar-button"));if(!e||!e.length)return;if(!t.length)return e;const o=e.filter(e=>e.querySelector(t));return o.length?o:void 0}findToolbarButtonById(t){const e=this.shadowRoot?.getElementById(t);if(e&&"ha-icon-button"===e.localName)return e}render(){return s.qy` <ha-icon-button-group class="icon-toolbar-buttongroup"> ${this.items.map(t=>"string"==typeof t?s.qy`<div class="icon-toolbar-divider" role="separator"></div>`:s.qy`<ha-tooltip .disabled="${!t.tooltip}" .for="${t.id??"icon-button-"+t.label}">${t.tooltip??""}</ha-tooltip> <ha-icon-button class="icon-toolbar-button" .id="${t.id??"icon-button-"+t.label}" @click="${t.action}" .label="${t.label}" .path="${t.path}" .disabled="${t.disabled??!1}"></ha-icon-button>`)} </ha-icon-button-group> `}constructor(...t){super(...t),this.items=[]}}c.styles=s.AH`:host{position:absolute;top:0px;width:100%;display:flex;flex-direction:row-reverse;background-color:var(--icon-button-toolbar-color,var(--secondary-background-color,#f5f5f5));--icon-button-toolbar-height:32px;--icon-button-toolbar-button:calc( var(--icon-button-toolbar-height) - 4px );--icon-button-toolbar-icon:calc( var(--icon-button-toolbar-height) - 10px )}.icon-toolbar-divider{height:var(--icon-button-toolbar-icon);margin:0px 4px;border:.5px solid var(--divider-color,var(--secondary-text-color,transparent))}.icon-toolbar-buttongroup{background-color:transparent;padding-right:4px;height:var(--icon-button-toolbar-height);gap:var(--ha-space-2)}.icon-toolbar-button{color:var(--secondary-text-color);--ha-icon-button-size:var(--icon-button-toolbar-button);--mdc-icon-size:var(--icon-button-toolbar-icon);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}`,(0,r.Cg)([(0,a.MZ)({attribute:!1})],c.prototype,"items",void 0),(0,r.Cg)([(0,a.YG)("ha-icon-button")],c.prototype,"_buttons",void 0),c=(0,r.Cg)([(0,a.EM)("ha-icon-button-toolbar")],c),i()}catch(t){i(t)}})}};