import{r as t,f as s,h as i,H as e,g as o}from"./p-5925f187.js";import{x as r,q as n}from"./p-4fb8ce4b.js";import{I as c}from"./p-1e3b01c2.js";import"./p-e9c4f463.js";import"./p-1580513b.js";const a="atomic-icon{display:inline-block;fill:currentColor;aspect-ratio:1 / 1;height:auto}@supports not (aspect-ratio: 1 / 1){atomic-icon{height:auto}}atomic-icon>svg{width:100%;max-height:100%;aspect-ratio:1 / 1;height:auto}@supports not (aspect-ratio: 1 / 1){atomic-icon>svg{height:auto}}";const h=a;var u=undefined&&undefined.__decorate||function(t,s,i,e){var o=arguments.length,r=o<3?s:e===null?e=Object.getOwnPropertyDescriptor(s,i):e,n;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")r=Reflect.decorate(t,s,i,e);else for(var c=t.length-1;c>=0;c--)if(n=t[c])r=(o<3?n(r):o>3?n(s,i,r):n(s,i))||r;return o>3&&r&&Object.defineProperty(s,i,r),r};class f extends Error{static fromStatusCode(t,s,i){return new f(t,`status code ${s} (${i})`)}static fromError(t,s){return new f(t,"an error",s)}constructor(t,s,i){super(`Could not fetch icon from ${t}, got ${s}.`);this.url=t;this.errorObject=i}}const l=class{constructor(s){t(this,s);this.svg=null;this.icon=undefined;this.svg=null}async fetchIcon(t){try{const s=await fetch(t).catch((s=>{throw f.fromError(t,s)}));if(s.status!==200&&s.status!==304){throw f.fromStatusCode(t,s.status,s.statusText)}return await s.text()}catch(t){this.error=t;s(this);return null}}validateSVG(t){if(!/^$/gm.test(t)){this.bindings.engine.logger.warn('The inline "icon" prop is not an svg element. You may encounter rendering issues.',this.icon)}}async getIcon(){const t=r(this.icon,this.bindings.store.getIconAssetsPath());const s=t?await this.fetchIcon(t):this.icon;if(s){this.validateSVG(s)}const i=s?n.exports.sanitize(s,{USE_PROFILES:{svg:true,svgFilters:true}}):null;return i}async updateIcon(){const t=this.getIcon();this.svg=await t}initialize(){this.updateIcon()}render(){if(this.error){console.error(this.error,this.host);this.host.remove();return}return i(e,{innerHTML:this.svg,"aria-hidden":"true"})}static get assetsDirs(){return["assets"]}get host(){return o(this)}static get watchers(){return{icon:["updateIcon"]}}};u([c()],l.prototype,"bindings",void 0);l.style=h;export{l as atomic_icon}; //# sourceMappingURL=p-a9ca045b.entry.js.map