From 008d34c549c060e6829a8da3ebb07c0eda444f1d Mon Sep 17 00:00:00 2001 From: NewsguyTor Date: Tue, 28 Jan 2025 01:36:03 +0100 Subject: [PATCH] Markdown support **Really nice** with Markdown --- flower-card.js | 5 ++--- flower-card.js.gz | Bin 20973 -> 21003 bytes package-lock.json | 13 +++++++++++++ package.json | 1 + src/flower-card.ts | 2 +- src/styles.ts | 1 - src/types/flower-card-types.ts | 1 + 7 files changed, 18 insertions(+), 5 deletions(-) diff --git a/flower-card.js b/flower-card.js index 036243e..d171c72 100644 --- a/flower-card.js +++ b/flower-card.js @@ -123,7 +123,7 @@
${(0,u.renderAttributes)(this)} - ${(()=>{var t,e;return(null===(e=null===(t=this.config)||void 0===t?void 0:t.show_info)||void 0===e?void 0:e.includes("notes"))?"notes"in this.stateObj.attributes?null===this.stateObj.attributes.notes||""===this.stateObj.attributes.notes.trim()?o.html`
Plant has no notes, add one in the device's configuration. Edit this card and uncheck "Notes" if you want to hide this.
`:o.html`
${this.stateObj.attributes.notes}
`:o.html`
Plant has no notes, add one in the device's configuration. Edit this card and uncheck "Notes" if you want to hide this.
`:""})()} + ${(()=>{var t,e;return(null===(e=null===(t=this.config)||void 0===t?void 0:t.show_info)||void 0===e?void 0:e.includes("notes"))?"notes"in this.stateObj.attributes?null===this.stateObj.attributes.notes||""===this.stateObj.attributes.notes.trim()?o.html`
Plant has no notes, add one in the device's configuration. Edit this card and uncheck "Notes" if you want to hide this.
`:o.html`
`:o.html`
Plant has no notes, add one in the device's configuration. Edit this card and uncheck "Notes" if you want to hide this.
`:""})()} `}get_data(t){return n(this,void 0,void 0,(function*(){var e;try{this.plantinfo=yield t.callWS({type:"plant/get_info",entity_id:null===(e=this.config)||void 0===e?void 0:e.entity})}catch(t){this.plantinfo={result:{}}}}))}getCardSize(){return 5}static get styles(){return a.style}};r([(0,s.property)()],m.prototype,"_hass",void 0),r([(0,s.property)()],m.prototype,"config",void 0),m=r([(0,s.customElement)(d.CARD_NAME)],m),e.default=m},800:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.style=void 0;const r=i(161);e.style=r.css` .card-margin-top { @@ -151,7 +151,6 @@ .notes { padding: 15px; color: var(--primary-text-color); - white-space: pre-wrap; } .notes-empty { color: var(--secondary-text-color); @@ -339,4 +338,4 @@ ${t.config.display_type===r.DisplayType.Compact?"":n.html`
${h} ${(0,o.unsafeHTML)(f)}
`} - `},e.getChunkedDisplayed=(t,e)=>Object.values(t).reduce(((t,i,r)=>{const n=Math.floor(r/e);return t[n]||(t[n]=[]),t[n].push(i),t}),[]),e.renderAttributeChunks=(t,i)=>{const o=(0,e.getChunkedDisplayed)(i,t.config.display_type===r.DisplayType.Compact?1:2),s="attributes "+(t.config.display_type===r.DisplayType.Compact?"width-100":"");return o.map((i=>n.html`
${i.map((i=>i?n.html`${(0,e.renderAttribute)(t,i)}`:""))}
`)).flat()}},139:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.plantAttributes=e.missingImage=e.default_show_info=e.CARD_EDITOR_NAME=e.CARD_NAME=void 0,e.CARD_NAME="flower-card",e.CARD_EDITOR_NAME=`${e.CARD_NAME}-editor`,e.default_show_info=["moisture","conductivity","temperature","illuminance","humidity","dli","notes"],e.missingImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgIDxnPgogICAgICA8IS0tP2xpdCQ0MTM0MjMxNjkkLS0+PHBhdGggZD0iTTMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLDE3IDcuOTcsMTMgMywxM00xMiw1LjVBMi41LDIuNSAwIDAsMSAxNC41LDhBMi41LDIuNSAwIDAsMSAxMiwxMC41QTIuNSwyLjUgMCAwLDEgOS41LDhBMi41LDIuNSAwIDAsMSAxMiw1LjVNNS42LDEwLjI1QTIuNSwyLjUgMCAwLDAgOC4xLDEyLjc1QzguNjMsMTIuNzUgOS4xMiwxMi41OCA5LjUsMTIuMzFDOS41LDEyLjM3IDkuNSwxMi40MyA5LjUsMTIuNUEyLjUsMi41IDAgMCwwIDEyLDE1QTIuNSwyLjUgMCAwLDAgMTQuNSwxMi41QzE0LjUsMTIuNDMgMTQuNSwxMi4zNyAxNC41LDEyLjMxQzE0Ljg4LDEyLjU4IDE1LjM3LDEyLjc1IDE1LjksMTIuNzVDMTcuMjgsMTIuNzUgMTguNCwxMS42MyAxOC40LDEwLjI1QzE4LjQsOS4yNSAxNy44MSw4LjQgMTYuOTcsOEMxNy44MSw3LjYgMTguNCw2Ljc0IDE4LjQsNS43NUMxOC40LDQuMzcgMTcuMjgsMy4yNSAxNS45LDMuMjVDMTUuMzcsMy4yNSAxNC44OCwzLjQxIDE0LjUsMy42OUMxNC41LDMuNjMgMTQuNSwzLjU2IDE0LjUsMy41QTIuNSwyLjUgMCAwLDAgMTIsMUEyLjUsMi41IDAgMCwwIDkuNSwzLjVDOS41LDMuNTYgOS41LDMuNjMgOS41LDMuNjlDOS4xMiwzLjQxIDguNjMsMy4yNSA4LjEsMy4yNUEyLjUsMi41IDAgMCwwIDUuNiw1Ljc1QzUuNiw2Ljc0IDYuMTksNy42IDcuMDMsOEM2LjE5LDguNCA1LjYsOS4yNSA1LjYsMTAuMjVNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQzE2LDEzIDEyLDE3IDEyLDIyWiI+PC9wYXRoPgogICAgICA8L2c+Cjwvc3ZnPgo=",e.plantAttributes=[{label:"Moisture",value:"moisture"},{label:"Conductivity",value:"conductivity"},{label:"Temperature",value:"temperature"},{label:"Illuminance",value:"illuminance"},{label:"Humidity",value:"humidity"},{label:"Daily Light Integral",value:"dli"},{label:"Notes",value:"notes"}]},135:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.moreInfo=e.getStubConfig=e.getConfigElement=void 0;const r=i(356),n=i(139);e.getConfigElement=()=>document.createElement("flower-card-editor"),e.getStubConfig=t=>{const e=t=>{if("object"==typeof t&&"entity_id"in t&&"string"==typeof t.entity_id&&0===t.entity_id.indexOf("plant."))return!!t};let i=[];try{i=Object.values(t.states).filter(e)}catch(t){console.info(`Unable to get ha-data: ${t}`)}return{entity:i.length>0?i[0].entity_id:"plant.my_plant",battery_sensor:"sensor.myflower_battery",show_info:n.default_show_info}},e.moreInfo=(t,e)=>{(0,r.fireEvent)(t,"hass-more-info",{entityId:e},{bubbles:!1,composed:!0})}},842:(t,e,i)=>{i.d(e,{BO:()=>a,mN:()=>x,Rf:()=>u,AH:()=>l,W3:()=>A,sk:()=>d,Ec:()=>E,qM:()=>n,iz:()=>c});const r=globalThis,n=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(n&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}}const c=t=>new a("string"==typeof t?t:t+"",void 0,o),l=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,r)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[r+1]),t[0]);return new a(i,t,o)},u=(t,e)=>{if(n)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),n=r.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}},d=n?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return c(e)})(t):t,{is:h,defineProperty:m,getOwnPropertyDescriptor:p,getOwnPropertyNames:f,getOwnPropertySymbols:g,getPrototypeOf:y}=Object,b=globalThis,_=b.trustedTypes,v=_?_.emptyScript:"",w=b.reactiveElementPolyfillSupport,$=(t,e)=>t,A={toAttribute(t,e){switch(e){case Boolean:t=t?v:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},E=(t,e)=>!h(t,e),S={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:E};Symbol.metadata??=Symbol("metadata"),b.litPropertyMetadata??=new WeakMap;class x extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=S){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,e);void 0!==r&&m(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){const{get:r,set:n}=p(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return r?.call(this)},set(e){const o=r?.call(this);n.call(this,e),this.requestUpdate(t,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??S}static _$Ei(){if(this.hasOwnProperty($("elementProperties")))return;const t=y(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty($("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty($("properties"))){const t=this.properties,e=[...f(t),...g(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(d(t))}else void 0!==t&&e.push(d(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EC(t,e){const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:A).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:A;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??E)(this[t],e))return;this.P(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EU()}catch(e){throw t=!1,this._$EU(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}x.elementStyles=[],x.shadowRootOptions={mode:"open"},x[$("elementProperties")]=new Map,x[$("finalized")]=new Map,w?.({ReactiveElement:x}),(b.reactiveElementVersions??=[]).push("2.0.4")},407:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>S.BO,LitElement:()=>S.WF,ReactiveElement:()=>S.mN,_$LE:()=>S.Zm,_$LH:()=>S.ge,adoptStyles:()=>S.Rf,css:()=>S.AH,defaultConverter:()=>S.W3,getCompatibleStyle:()=>S.sk,html:()=>S.qy,isServer:()=>x.S,mathml:()=>S.ej,noChange:()=>S.c0,notEqual:()=>S.Ec,nothing:()=>S.s6,render:()=>S.XX,supportsAdoptingStyleSheets:()=>S.qM,svg:()=>S.JW,unsafeCSS:()=>S.iz});const r=globalThis,n=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(n&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}}const c=(t,e)=>{if(n)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),n=r.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}},l=n?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new a("string"==typeof t?t:t+"",void 0,o))(e)})(t):t,{is:u,defineProperty:d,getOwnPropertyDescriptor:h,getOwnPropertyNames:m,getOwnPropertySymbols:p,getPrototypeOf:f}=Object,g=globalThis,y=g.trustedTypes,b=y?y.emptyScript:"",_=g.reactiveElementPolyfillSupport,v=(t,e)=>t,w={toAttribute(t,e){switch(e){case Boolean:t=t?b:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},$=(t,e)=>!u(t,e),A={attribute:!0,type:String,converter:w,reflect:!1,hasChanged:$};Symbol.metadata??=Symbol("metadata"),g.litPropertyMetadata??=new WeakMap;class E extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=A){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,e);void 0!==r&&d(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){const{get:r,set:n}=h(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return r?.call(this)},set(e){const o=r?.call(this);n.call(this,e),this.requestUpdate(t,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??A}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const t=f(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const t=this.properties,e=[...m(t),...p(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return c(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EC(t,e){const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:w).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:w;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??$)(this[t],e))return;this.P(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EU()}catch(e){throw t=!1,this._$EU(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[v("elementProperties")]=new Map,E[v("finalized")]=new Map,_?.({ReactiveElement:E}),(g.reactiveElementVersions??=[]).push("2.0.4"),i(752);var S=i(228),x=i(793)},228:(t,e,i)=>{i.d(e,{AH:()=>r.AH,BO:()=>r.BO,Ec:()=>r.Ec,JW:()=>n.JW,Rf:()=>r.Rf,W3:()=>r.W3,WF:()=>o,XX:()=>n.XX,Zm:()=>a,c0:()=>n.c0,ej:()=>n.ej,ge:()=>n.ge,iz:()=>r.iz,mN:()=>r.mN,qM:()=>r.qM,qy:()=>n.qy,s6:()=>n.s6,sk:()=>r.sk});var r=i(842),n=i(752);class o extends r.mN{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=(0,n.XX)(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return n.c0}}o._$litElement$=!0,o.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:o});const s=globalThis.litElementPolyfillSupport;s?.({LitElement:o});const a={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push("4.1.0")},793:(t,e,i)=>{i.d(e,{S:()=>r});const r=!1},752:(t,e,i)=>{i.d(e,{JW:()=>S,XX:()=>W,c0:()=>M,ej:()=>x,ge:()=>H,qy:()=>E,s6:()=>C});const r=globalThis,n=r.trustedTypes,o=n?n.createPolicy("lit-html",{createHTML:t=>t}):void 0,s="$lit$",a=`lit$${Math.random().toFixed(9).slice(2)}$`,c="?"+a,l=`<${c}>`,u=document,d=()=>u.createComment(""),h=t=>null===t||"object"!=typeof t&&"function"!=typeof t,m=Array.isArray,p=t=>m(t)||"function"==typeof t?.[Symbol.iterator],f="[ \t\n\f\r]",g=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,y=/-->/g,b=/>/g,_=RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),v=/'/g,w=/"/g,$=/^(?:script|style|textarea|title)$/i,A=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),E=A(1),S=A(2),x=A(3),M=Symbol.for("lit-noChange"),C=Symbol.for("lit-nothing"),D=new WeakMap,O=u.createTreeWalker(u,129);function k(t,e){if(!m(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==o?o.createHTML(e):e}const T=(t,e)=>{const i=t.length-1,r=[];let n,o=2===e?"":3===e?"":"",c=g;for(let e=0;e"===d[0]?(c=n??g,h=-1):void 0===d[1]?h=-2:(h=c.lastIndex-d[2].length,u=d[1],c=void 0===d[3]?_:'"'===d[3]?w:v):c===w||c===v?c=_:c===y||c===b?c=g:(c=_,n=void 0);const p=c===_&&t[e+1].startsWith("/>")?" ":"";o+=c===g?i+l:h>=0?(r.push(u),i.slice(0,h)+s+i.slice(h)+a+p):i+a+(-2===h?e:p)}return[k(t,o+(t[i]||"")+(2===e?"":3===e?"":"")),r]};class N{constructor({strings:t,_$litType$:e},i){let r;this.parts=[];let o=0,l=0;const u=t.length-1,h=this.parts,[m,p]=T(t,e);if(this.el=N.createElement(m,i),O.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=O.nextNode())&&h.length0){r.textContent=n?n.emptyScript:"";for(let i=0;i2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=C}_$AI(t,e=this,i,r){const n=this.strings;let o=!1;if(void 0===n)t=j(this,t,e,0),o=!h(t)||t!==this._$AH&&t!==M,o&&(this._$AH=t);else{const r=t;let s,a;for(t=n[0],s=0;s{const r=i?.renderBefore??e;let n=r._$litPart$;if(void 0===n){const t=i?.renderBefore??null;r._$litPart$=n=new P(e.insertBefore(d(),t),t,void 0,i??{})}return n._$AI(t),n}},924:(t,e,i)=>{i.r(e),i.d(e,{customElement:()=>r,eventOptions:()=>l,property:()=>a,query:()=>d,queryAll:()=>m,queryAssignedElements:()=>f,queryAssignedNodes:()=>g,queryAsync:()=>p,standardProperty:()=>s,state:()=>c});const r=t=>(e,i)=>{void 0!==i?i.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};var n=i(842);const o={attribute:!0,type:String,converter:n.W3,reflect:!1,hasChanged:n.Ec},s=(t=o,e,i)=>{const{kind:r,metadata:n}=i;let s=globalThis.litPropertyMetadata.get(n);if(void 0===s&&globalThis.litPropertyMetadata.set(n,s=new Map),s.set(i.name,t),"accessor"===r){const{name:r}=i;return{set(i){const n=e.get.call(this);e.set.call(this,i),this.requestUpdate(r,n,t)},init(e){return void 0!==e&&this.P(r,void 0,t),e}}}if("setter"===r){const{name:r}=i;return function(i){const n=this[r];e.call(this,i),this.requestUpdate(r,n,t)}}throw Error("Unsupported decorator location: "+r)};function a(t){return(e,i)=>"object"==typeof i?s(t,e,i):((t,e,i)=>{const r=e.hasOwnProperty(i);return e.constructor.createProperty(i,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function c(t){return a({...t,state:!0,attribute:!1})}function l(t){return(e,i)=>{const r="function"==typeof e?e:e[i];Object.assign(r,t)}}const u=(t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.decorate&&"object"!=typeof e&&Object.defineProperty(t,e,i),i);function d(t,e){return(i,r,n)=>{const o=e=>e.renderRoot?.querySelector(t)??null;if(e){const{get:t,set:e}="object"==typeof r?i:n??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return u(i,r,{get(){let i=t.call(this);return void 0===i&&(i=o(this),(null!==i||this.hasUpdated)&&e.call(this,i)),i}})}return u(i,r,{get(){return o(this)}})}}let h;function m(t){return(e,i)=>u(e,i,{get(){return(this.renderRoot??(h??=document.createDocumentFragment())).querySelectorAll(t)}})}function p(t){return(e,i)=>u(e,i,{async get(){return await this.updateComplete,this.renderRoot?.querySelector(t)??null}})}function f(t){return(e,i)=>{const{slot:r,selector:n}=t??{},o="slot"+(r?`[name=${r}]`:":not([name])");return u(e,i,{get(){const e=this.renderRoot?.querySelector(o),i=e?.assignedElements(t)??[];return void 0===n?i:i.filter((t=>t.matches(n)))}})}}function g(t){return(e,i)=>{const{slot:r}=t??{},n="slot"+(r?`[name=${r}]`:":not([name])");return u(e,i,{get(){const e=this.renderRoot?.querySelector(n);return e?.assignedNodes(t)??[]}})}}},534:(t,e,i)=>{i.r(e),i.d(e,{UnsafeHTMLDirective:()=>o,unsafeHTML:()=>s});var r=i(752);class n{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this.t=t,this._$AM=e,this.i=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}class o extends n{constructor(t){if(super(t),this.it=r.s6,2!==t.type)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===r.s6||null==t)return this._t=void 0,this.it=t;if(t===r.c0)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}}o.directiveName="unsafeHTML",o.resultType=1;const s=(a=o,(...t)=>({_$litDirective$:a,values:t}));var a},161:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>r.BO,LitElement:()=>r.WF,ReactiveElement:()=>r.mN,_$LE:()=>r.Zm,_$LH:()=>r.ge,adoptStyles:()=>r.Rf,css:()=>r.AH,defaultConverter:()=>r.W3,getCompatibleStyle:()=>r.sk,html:()=>r.qy,isServer:()=>n.S,mathml:()=>r.ej,noChange:()=>r.c0,notEqual:()=>r.Ec,nothing:()=>r.s6,render:()=>r.XX,supportsAdoptingStyleSheets:()=>r.qM,svg:()=>r.JW,unsafeCSS:()=>r.iz}),i(842),i(752);var r=i(228),n=i(793)},330:t=>{t.exports=JSON.parse('{"name":"flower-card","version":"2025.1.0","description":"Custom flower card for https://github.com/Olen/homeassistant-plant","keywords":["home-assistant","homeassistant","lovelace","custom-cards"],"module":"flower-card.js","license":"MIT","dependencies":{"@marcokreeft/ha-editor-formbuilder":"^2024.9.1","babel-loader":"^9.2.1","compression-webpack-plugin":"^11.1.0","custom-card-helpers":"^1.9.0","home-assistant-js-websocket":"^9.4.0","lit":"^3.2.0","webpack":"^5.95.0","yarn":"^1.22.22"},"scripts":{"lint":"eslint src/**/*.ts","dev":"webpack -c webpack.config.js","build":"yarn lint && webpack -c webpack.config.js"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.8.0","eslint":"^8.57.1","eslint-config-love":"^83.0.0","eslint-plugin-import":"^2.31.0","eslint-plugin-n":"^17.10.3","eslint-plugin-promise":"^7.1.0","eslint-plugin-react":"^7.37.1","ts-loader":"^9.5.1","typescript":"<5.6.0","webpack-cli":"^5.1.4"}}')}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var o=e[r]={exports:{}};return t[r].call(o.exports,o,o.exports,i),o.exports}i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i(248)})(); \ No newline at end of file + `},e.getChunkedDisplayed=(t,e)=>Object.values(t).reduce(((t,i,r)=>{const n=Math.floor(r/e);return t[n]||(t[n]=[]),t[n].push(i),t}),[]),e.renderAttributeChunks=(t,i)=>{const o=(0,e.getChunkedDisplayed)(i,t.config.display_type===r.DisplayType.Compact?1:2),s="attributes "+(t.config.display_type===r.DisplayType.Compact?"width-100":"");return o.map((i=>n.html`
${i.map((i=>i?n.html`${(0,e.renderAttribute)(t,i)}`:""))}
`)).flat()}},139:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.plantAttributes=e.missingImage=e.default_show_info=e.CARD_EDITOR_NAME=e.CARD_NAME=void 0,e.CARD_NAME="flower-card",e.CARD_EDITOR_NAME=`${e.CARD_NAME}-editor`,e.default_show_info=["moisture","conductivity","temperature","illuminance","humidity","dli","notes"],e.missingImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgIDxnPgogICAgICA8IS0tP2xpdCQ0MTM0MjMxNjkkLS0+PHBhdGggZD0iTTMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLDE3IDcuOTcsMTMgMywxM00xMiw1LjVBMi41LDIuNSAwIDAsMSAxNC41LDhBMi41LDIuNSAwIDAsMSAxMiwxMC41QTIuNSwyLjUgMCAwLDEgOS41LDhBMi41LDIuNSAwIDAsMSAxMiw1LjVNNS42LDEwLjI1QTIuNSwyLjUgMCAwLDAgOC4xLDEyLjc1QzguNjMsMTIuNzUgOS4xMiwxMi41OCA5LjUsMTIuMzFDOS41LDEyLjM3IDkuNSwxMi40MyA5LjUsMTIuNUEyLjUsMi41IDAgMCwwIDEyLDE1QTIuNSwyLjUgMCAwLDAgMTQuNSwxMi41QzE0LjUsMTIuNDMgMTQuNSwxMi4zNyAxNC41LDEyLjMxQzE0Ljg4LDEyLjU4IDE1LjM3LDEyLjc1IDE1LjksMTIuNzVDMTcuMjgsMTIuNzUgMTguNCwxMS42MyAxOC40LDEwLjI1QzE4LjQsOS4yNSAxNy44MSw4LjQgMTYuOTcsOEMxNy44MSw3LjYgMTguNCw2Ljc0IDE4LjQsNS43NUMxOC40LDQuMzcgMTcuMjgsMy4yNSAxNS45LDMuMjVDMTUuMzcsMy4yNSAxNC44OCwzLjQxIDE0LjUsMy42OUMxNC41LDMuNjMgMTQuNSwzLjU2IDE0LjUsMy41QTIuNSwyLjUgMCAwLDAgMTIsMUEyLjUsMi41IDAgMCwwIDkuNSwzLjVDOS41LDMuNTYgOS41LDMuNjMgOS41LDMuNjlDOS4xMiwzLjQxIDguNjMsMy4yNSA4LjEsMy4yNUEyLjUsMi41IDAgMCwwIDUuNiw1Ljc1QzUuNiw2Ljc0IDYuMTksNy42IDcuMDMsOEM2LjE5LDguNCA1LjYsOS4yNSA1LjYsMTAuMjVNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQzE2LDEzIDEyLDE3IDEyLDIyWiI+PC9wYXRoPgogICAgICA8L2c+Cjwvc3ZnPgo=",e.plantAttributes=[{label:"Moisture",value:"moisture"},{label:"Conductivity",value:"conductivity"},{label:"Temperature",value:"temperature"},{label:"Illuminance",value:"illuminance"},{label:"Humidity",value:"humidity"},{label:"Daily Light Integral",value:"dli"},{label:"Notes",value:"notes"}]},135:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.moreInfo=e.getStubConfig=e.getConfigElement=void 0;const r=i(356),n=i(139);e.getConfigElement=()=>document.createElement("flower-card-editor"),e.getStubConfig=t=>{const e=t=>{if("object"==typeof t&&"entity_id"in t&&"string"==typeof t.entity_id&&0===t.entity_id.indexOf("plant."))return!!t};let i=[];try{i=Object.values(t.states).filter(e)}catch(t){console.info(`Unable to get ha-data: ${t}`)}return{entity:i.length>0?i[0].entity_id:"plant.my_plant",battery_sensor:"sensor.myflower_battery",show_info:n.default_show_info}},e.moreInfo=(t,e)=>{(0,r.fireEvent)(t,"hass-more-info",{entityId:e},{bubbles:!1,composed:!0})}},842:(t,e,i)=>{i.d(e,{BO:()=>a,mN:()=>x,Rf:()=>u,AH:()=>l,W3:()=>A,sk:()=>d,Ec:()=>E,qM:()=>n,iz:()=>c});const r=globalThis,n=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(n&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}}const c=t=>new a("string"==typeof t?t:t+"",void 0,o),l=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,r)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[r+1]),t[0]);return new a(i,t,o)},u=(t,e)=>{if(n)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),n=r.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}},d=n?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return c(e)})(t):t,{is:h,defineProperty:m,getOwnPropertyDescriptor:p,getOwnPropertyNames:f,getOwnPropertySymbols:g,getPrototypeOf:y}=Object,b=globalThis,_=b.trustedTypes,v=_?_.emptyScript:"",w=b.reactiveElementPolyfillSupport,$=(t,e)=>t,A={toAttribute(t,e){switch(e){case Boolean:t=t?v:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},E=(t,e)=>!h(t,e),S={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:E};Symbol.metadata??=Symbol("metadata"),b.litPropertyMetadata??=new WeakMap;class x extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=S){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,e);void 0!==r&&m(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){const{get:r,set:n}=p(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return r?.call(this)},set(e){const o=r?.call(this);n.call(this,e),this.requestUpdate(t,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??S}static _$Ei(){if(this.hasOwnProperty($("elementProperties")))return;const t=y(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty($("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty($("properties"))){const t=this.properties,e=[...f(t),...g(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(d(t))}else void 0!==t&&e.push(d(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EC(t,e){const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:A).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:A;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??E)(this[t],e))return;this.P(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EU()}catch(e){throw t=!1,this._$EU(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}x.elementStyles=[],x.shadowRootOptions={mode:"open"},x[$("elementProperties")]=new Map,x[$("finalized")]=new Map,w?.({ReactiveElement:x}),(b.reactiveElementVersions??=[]).push("2.0.4")},407:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>S.BO,LitElement:()=>S.WF,ReactiveElement:()=>S.mN,_$LE:()=>S.Zm,_$LH:()=>S.ge,adoptStyles:()=>S.Rf,css:()=>S.AH,defaultConverter:()=>S.W3,getCompatibleStyle:()=>S.sk,html:()=>S.qy,isServer:()=>x.S,mathml:()=>S.ej,noChange:()=>S.c0,notEqual:()=>S.Ec,nothing:()=>S.s6,render:()=>S.XX,supportsAdoptingStyleSheets:()=>S.qM,svg:()=>S.JW,unsafeCSS:()=>S.iz});const r=globalThis,n=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(n&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}}const c=(t,e)=>{if(n)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),n=r.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}},l=n?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new a("string"==typeof t?t:t+"",void 0,o))(e)})(t):t,{is:u,defineProperty:d,getOwnPropertyDescriptor:h,getOwnPropertyNames:m,getOwnPropertySymbols:p,getPrototypeOf:f}=Object,g=globalThis,y=g.trustedTypes,b=y?y.emptyScript:"",_=g.reactiveElementPolyfillSupport,v=(t,e)=>t,w={toAttribute(t,e){switch(e){case Boolean:t=t?b:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},$=(t,e)=>!u(t,e),A={attribute:!0,type:String,converter:w,reflect:!1,hasChanged:$};Symbol.metadata??=Symbol("metadata"),g.litPropertyMetadata??=new WeakMap;class E extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=A){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,e);void 0!==r&&d(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){const{get:r,set:n}=h(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return r?.call(this)},set(e){const o=r?.call(this);n.call(this,e),this.requestUpdate(t,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??A}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const t=f(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const t=this.properties,e=[...m(t),...p(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return c(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EC(t,e){const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:w).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:w;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??$)(this[t],e))return;this.P(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EU()}catch(e){throw t=!1,this._$EU(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[v("elementProperties")]=new Map,E[v("finalized")]=new Map,_?.({ReactiveElement:E}),(g.reactiveElementVersions??=[]).push("2.0.4"),i(752);var S=i(228),x=i(793)},228:(t,e,i)=>{i.d(e,{AH:()=>r.AH,BO:()=>r.BO,Ec:()=>r.Ec,JW:()=>n.JW,Rf:()=>r.Rf,W3:()=>r.W3,WF:()=>o,XX:()=>n.XX,Zm:()=>a,c0:()=>n.c0,ej:()=>n.ej,ge:()=>n.ge,iz:()=>r.iz,mN:()=>r.mN,qM:()=>r.qM,qy:()=>n.qy,s6:()=>n.s6,sk:()=>r.sk});var r=i(842),n=i(752);class o extends r.mN{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=(0,n.XX)(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return n.c0}}o._$litElement$=!0,o.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:o});const s=globalThis.litElementPolyfillSupport;s?.({LitElement:o});const a={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push("4.1.0")},793:(t,e,i)=>{i.d(e,{S:()=>r});const r=!1},752:(t,e,i)=>{i.d(e,{JW:()=>S,XX:()=>W,c0:()=>M,ej:()=>x,ge:()=>H,qy:()=>E,s6:()=>C});const r=globalThis,n=r.trustedTypes,o=n?n.createPolicy("lit-html",{createHTML:t=>t}):void 0,s="$lit$",a=`lit$${Math.random().toFixed(9).slice(2)}$`,c="?"+a,l=`<${c}>`,u=document,d=()=>u.createComment(""),h=t=>null===t||"object"!=typeof t&&"function"!=typeof t,m=Array.isArray,p=t=>m(t)||"function"==typeof t?.[Symbol.iterator],f="[ \t\n\f\r]",g=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,y=/-->/g,b=/>/g,_=RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),v=/'/g,w=/"/g,$=/^(?:script|style|textarea|title)$/i,A=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),E=A(1),S=A(2),x=A(3),M=Symbol.for("lit-noChange"),C=Symbol.for("lit-nothing"),D=new WeakMap,O=u.createTreeWalker(u,129);function k(t,e){if(!m(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==o?o.createHTML(e):e}const T=(t,e)=>{const i=t.length-1,r=[];let n,o=2===e?"":3===e?"":"",c=g;for(let e=0;e"===d[0]?(c=n??g,h=-1):void 0===d[1]?h=-2:(h=c.lastIndex-d[2].length,u=d[1],c=void 0===d[3]?_:'"'===d[3]?w:v):c===w||c===v?c=_:c===y||c===b?c=g:(c=_,n=void 0);const p=c===_&&t[e+1].startsWith("/>")?" ":"";o+=c===g?i+l:h>=0?(r.push(u),i.slice(0,h)+s+i.slice(h)+a+p):i+a+(-2===h?e:p)}return[k(t,o+(t[i]||"")+(2===e?"":3===e?"":"")),r]};class N{constructor({strings:t,_$litType$:e},i){let r;this.parts=[];let o=0,l=0;const u=t.length-1,h=this.parts,[m,p]=T(t,e);if(this.el=N.createElement(m,i),O.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=O.nextNode())&&h.length0){r.textContent=n?n.emptyScript:"";for(let i=0;i2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=C}_$AI(t,e=this,i,r){const n=this.strings;let o=!1;if(void 0===n)t=j(this,t,e,0),o=!h(t)||t!==this._$AH&&t!==M,o&&(this._$AH=t);else{const r=t;let s,a;for(t=n[0],s=0;s{const r=i?.renderBefore??e;let n=r._$litPart$;if(void 0===n){const t=i?.renderBefore??null;r._$litPart$=n=new P(e.insertBefore(d(),t),t,void 0,i??{})}return n._$AI(t),n}},924:(t,e,i)=>{i.r(e),i.d(e,{customElement:()=>r,eventOptions:()=>l,property:()=>a,query:()=>d,queryAll:()=>m,queryAssignedElements:()=>f,queryAssignedNodes:()=>g,queryAsync:()=>p,standardProperty:()=>s,state:()=>c});const r=t=>(e,i)=>{void 0!==i?i.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};var n=i(842);const o={attribute:!0,type:String,converter:n.W3,reflect:!1,hasChanged:n.Ec},s=(t=o,e,i)=>{const{kind:r,metadata:n}=i;let s=globalThis.litPropertyMetadata.get(n);if(void 0===s&&globalThis.litPropertyMetadata.set(n,s=new Map),s.set(i.name,t),"accessor"===r){const{name:r}=i;return{set(i){const n=e.get.call(this);e.set.call(this,i),this.requestUpdate(r,n,t)},init(e){return void 0!==e&&this.P(r,void 0,t),e}}}if("setter"===r){const{name:r}=i;return function(i){const n=this[r];e.call(this,i),this.requestUpdate(r,n,t)}}throw Error("Unsupported decorator location: "+r)};function a(t){return(e,i)=>"object"==typeof i?s(t,e,i):((t,e,i)=>{const r=e.hasOwnProperty(i);return e.constructor.createProperty(i,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function c(t){return a({...t,state:!0,attribute:!1})}function l(t){return(e,i)=>{const r="function"==typeof e?e:e[i];Object.assign(r,t)}}const u=(t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.decorate&&"object"!=typeof e&&Object.defineProperty(t,e,i),i);function d(t,e){return(i,r,n)=>{const o=e=>e.renderRoot?.querySelector(t)??null;if(e){const{get:t,set:e}="object"==typeof r?i:n??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return u(i,r,{get(){let i=t.call(this);return void 0===i&&(i=o(this),(null!==i||this.hasUpdated)&&e.call(this,i)),i}})}return u(i,r,{get(){return o(this)}})}}let h;function m(t){return(e,i)=>u(e,i,{get(){return(this.renderRoot??(h??=document.createDocumentFragment())).querySelectorAll(t)}})}function p(t){return(e,i)=>u(e,i,{async get(){return await this.updateComplete,this.renderRoot?.querySelector(t)??null}})}function f(t){return(e,i)=>{const{slot:r,selector:n}=t??{},o="slot"+(r?`[name=${r}]`:":not([name])");return u(e,i,{get(){const e=this.renderRoot?.querySelector(o),i=e?.assignedElements(t)??[];return void 0===n?i:i.filter((t=>t.matches(n)))}})}}function g(t){return(e,i)=>{const{slot:r}=t??{},n="slot"+(r?`[name=${r}]`:":not([name])");return u(e,i,{get(){const e=this.renderRoot?.querySelector(n);return e?.assignedNodes(t)??[]}})}}},534:(t,e,i)=>{i.r(e),i.d(e,{UnsafeHTMLDirective:()=>o,unsafeHTML:()=>s});var r=i(752);class n{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this.t=t,this._$AM=e,this.i=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}class o extends n{constructor(t){if(super(t),this.it=r.s6,2!==t.type)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===r.s6||null==t)return this._t=void 0,this.it=t;if(t===r.c0)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}}o.directiveName="unsafeHTML",o.resultType=1;const s=(a=o,(...t)=>({_$litDirective$:a,values:t}));var a},161:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>r.BO,LitElement:()=>r.WF,ReactiveElement:()=>r.mN,_$LE:()=>r.Zm,_$LH:()=>r.ge,adoptStyles:()=>r.Rf,css:()=>r.AH,defaultConverter:()=>r.W3,getCompatibleStyle:()=>r.sk,html:()=>r.qy,isServer:()=>n.S,mathml:()=>r.ej,noChange:()=>r.c0,notEqual:()=>r.Ec,nothing:()=>r.s6,render:()=>r.XX,supportsAdoptingStyleSheets:()=>r.qM,svg:()=>r.JW,unsafeCSS:()=>r.iz}),i(842),i(752);var r=i(228),n=i(793)},330:t=>{t.exports=JSON.parse('{"name":"flower-card","version":"2025.1.0","description":"Custom flower card for https://github.com/Olen/homeassistant-plant","keywords":["home-assistant","homeassistant","lovelace","custom-cards"],"module":"flower-card.js","license":"MIT","dependencies":{"@marcokreeft/ha-editor-formbuilder":"^2024.9.1","babel-loader":"^9.2.1","compression-webpack-plugin":"^11.1.0","custom-card-helpers":"^1.9.0","home-assistant-js-websocket":"^9.4.0","lit":"^3.2.0","marked":"^15.0.6","webpack":"^5.95.0","yarn":"^1.22.22"},"scripts":{"lint":"eslint src/**/*.ts","dev":"webpack -c webpack.config.js","build":"yarn lint && webpack -c webpack.config.js"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.8.0","eslint":"^8.57.1","eslint-config-love":"^83.0.0","eslint-plugin-import":"^2.31.0","eslint-plugin-n":"^17.10.3","eslint-plugin-promise":"^7.1.0","eslint-plugin-react":"^7.37.1","ts-loader":"^9.5.1","typescript":"<5.6.0","webpack-cli":"^5.1.4"}}')}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var o=e[r]={exports:{}};return t[r].call(o.exports,o,o.exports,i),o.exports}i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i(248)})(); \ No newline at end of file diff --git a/flower-card.js.gz b/flower-card.js.gz index de02748ce998be67b0a55e2af3c06e4bdd3fc001..f556c26fa4e99174e8c62b2c48cb6dfc9454b159 100644 GIT binary patch delta 11183 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 N{r|M_V1Abs0RV$p9m@a! delta 11153 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 diff --git a/package-lock.json b/package-lock.json index b97e325..6cf6527 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "custom-card-helpers": "^1.9.0", "home-assistant-js-websocket": "^9.4.0", "lit": "^3.2.0", + "marked": "^15.0.6", "webpack": "^5.95.0", "yarn": "^1.22.22" }, @@ -4135,6 +4136,18 @@ "yallist": "^3.0.2" } }, + "node_modules/marked": { + "version": "15.0.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.6.tgz", + "integrity": "sha512-Y07CUOE+HQXbVDCGl3LXggqJDbXDP2pArc2C1N1RRMN0ONiShoSsIInMd5Gsxupe7fKLpgimTV+HOJ9r7bA+pg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", diff --git a/package.json b/package.json index 38d2e5e..0331c1d 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "custom-card-helpers": "^1.9.0", "home-assistant-js-websocket": "^9.4.0", "lit": "^3.2.0", + "marked": "^15.0.6", "webpack": "^5.95.0", "yarn": "^1.22.22" }, diff --git a/src/flower-card.ts b/src/flower-card.ts index 9cb628d..6c8d7e1 100644 --- a/src/flower-card.ts +++ b/src/flower-card.ts @@ -131,7 +131,7 @@ export default class FlowerCard extends LitElement { if (this.stateObj.attributes.notes === null || this.stateObj.attributes.notes.trim() === '') { return html`
Plant has no notes, add one in the device's configuration. Edit this card and uncheck "Notes" if you want to hide this.
`; } - return html`
${this.stateObj.attributes.notes}
`; + return html`
`; })()} `; diff --git a/src/styles.ts b/src/styles.ts index 4ffef08..6d58e71 100644 --- a/src/styles.ts +++ b/src/styles.ts @@ -26,7 +26,6 @@ export const style = css` .notes { padding: 15px; color: var(--primary-text-color); - white-space: pre-wrap; } .notes-empty { color: var(--secondary-text-color); diff --git a/src/types/flower-card-types.ts b/src/types/flower-card-types.ts index 93c42ac..b9efb1e 100644 --- a/src/types/flower-card-types.ts +++ b/src/types/flower-card-types.ts @@ -6,6 +6,7 @@ export interface FlowerCardConfig extends LovelaceCardConfig { battery_sensor?: string; display_type?: DisplayType; show_info?: string[]; + markdown?: string; } export enum DisplayType {