@3r1s_s/erisui 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/erisui.js +27 -27
- package/dist/erisui.mjs +212 -198
- package/package.json +1 -1
package/dist/erisui.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(h,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(h=typeof globalThis<"u"?globalThis:h||self,g(h.eui={}))})(this,(function(h){"use strict";var G=Object.defineProperty;var Q=(h,g,
|
|
1
|
+
(function(h,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(h=typeof globalThis<"u"?globalThis:h||self,g(h.eui={}))})(this,(function(h){"use strict";var G=Object.defineProperty;var Q=(h,g,p)=>g in h?G(h,g,{enumerable:!0,configurable:!0,writable:!0,value:p}):h[g]=p;var C=(h,g,p)=>Q(h,typeof g!="symbol"?g+"":g,p);class g extends HTMLElement{static get observedAttributes(){return["size","border-radius","name","color"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
aspect-ratio: 1 / 1;
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<slot></slot>
|
|
44
44
|
<span id="initials"></span>
|
|
45
45
|
</div>
|
|
46
|
-
`}connectedCallback(){this.avatar=this.shadowRoot.querySelector(".avatar"),this.initials=this.shadowRoot.querySelector("#initials");const t=this.shadowRoot.querySelector("slot"),
|
|
46
|
+
`}connectedCallback(){this.avatar=this.shadowRoot.querySelector(".avatar"),this.initials=this.shadowRoot.querySelector("#initials");const t=this.shadowRoot.querySelector("slot"),e=t&&t.assignedNodes().length>0;if(e){const i=t.assignedNodes()[0];i&&i.tagName==="IMG"&&(this.initials.style.display="none",this.avatar.style.backgroundColor="transparent")}else this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color"));if(this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color")),this.hasAttribute("size")){const i=this.getAttribute("size");this.avatar.style.width=i+"px",this.avatar.style.height=i+"px",this.initials.style.fontSize=i/2+"px"}if(this.hasAttribute("border-radius")&&(this.avatar.style.borderRadius=this.getAttribute("border-radius")+"px"),this.hasAttribute("name")&&(this.avatar.title=this.getAttribute("name")),!e&&this.hasAttribute("name")){const r=this.getAttribute("name").trim().split(/\s+/);let s="";r.length===1?s=r[0][0]||"":s=(r[0][0]||"")+(r[r.length-1][0]||""),this.initials.textContent=s.toUpperCase()}}}customElements.define("eui-avatar",g);const p=(()=>{let o={};return{register(t,e){o[t]=e},get(t){return o[t]||""}}})();p.register("menu",'<svg width="24" height="24" viewBox="0 0 24 24" focusable="false"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"></path></svg>'),p.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),p.register("kit",'<svg width="26" height="28" viewBox="0 0 26 28" xmlns="http://www.w3.org/2000/svg"><path d="m13.118 14.831c0.433 0 1.257-0.024 1.795-0.344l9.151-4.057c0.869-0.59 1.051-1.255 1.067-1.773 0.02-0.662-0.313-1.634-1.181-2.15l-8.515-3.921c-0.537-0.309-2.096-0.552-2.529-0.552-0.444 0-1.958 0.42-2.496 0.73l-8.643 4.034c-0.85 0.602-1.022 1.284-0.951 1.942 0.098 0.887 0.206 0.857 0.889 1.503l9.577 4.212c0.537 0.32 1.391 0.376 1.836 0.376zm-0.12 5.467c0.403 0 1.443-0.068 1.928-0.345l8.858-3.991c0.497-0.3 1.448-1.117 1.382-1.952-0.091-1.138-0.598-1.7-0.948-1.906l-9.22 3.888c-0.454 0.261-1.417 0.478-1.916 0.478-0.542 0-1.539-0.228-1.766-0.362l-9.395-4.012c-0.462 0.022-1.174 0.911-1.201 1.642-0.03 0.761 0.7 1.62 1.135 1.839l9.408 4.384c0.485 0.278 1.322 0.337 1.735 0.337zm0.09 5.344c0.403 0 1.296-0.053 1.781-0.342l9.147-4.299c0.485-0.289 1.129-0.789 1.053-1.879-0.056-0.794-0.071-1.123-0.918-1.765l-9.203 4.113c-0.228 0.134-0.948 0.39-1.853 0.39-0.939 0-1.603-0.224-1.831-0.359l-9.451-4.017c-0.979 0.247-1.005 1.45-1.005 1.947 0 0.455 0.403 1.279 0.9 1.568l9.465 4.262c0.486 0.29 1.502 0.381 1.915 0.381z" fill="currentColor"></path></svg>'),p.register("settings",'<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.644169 15.2044C0.751639 15.4175 0.866389 15.627 0.988219 15.8323C1.34503 16.445 1.76284 17.0223 2.23048 17.545C2.3967 17.7307 2.65856 17.7968 2.89375 17.7126L5.25826 16.8621C5.96645 16.608 6.74841 17.07 6.87902 17.8018L7.32018 20.2764C7.36418 20.5227 7.55119 20.7167 7.79454 20.7688C8.86201 20.9976 9.95753 21.057 11.0418 20.9452C11.427 20.9061 11.8095 20.8457 12.1863 20.7643C12.375 20.7232 12.5303 20.5969 12.6121 20.4275C12.6441 20.37 12.6671 20.3068 12.6794 20.2397L13.132 17.7739C13.1978 17.4162 13.4191 17.1252 13.7102 16.9498C13.7478 16.9275 13.7867 16.9072 13.8264 16.8889C14.1041 16.7654 14.426 16.7408 14.7301 16.8496L17.0889 17.6938C17.2068 17.7362 17.3318 17.7406 17.4482 17.7107C17.5805 17.6872 17.7044 17.6208 17.7983 17.5172C18.2857 16.9783 18.7189 16.3833 19.0875 15.7497C19.4503 15.1137 19.748 14.4403 19.9703 13.7471C20.0128 13.6142 20.0083 13.4742 19.9629 13.3481C19.9307 13.2315 19.8646 13.1245 19.7685 13.043L17.8596 11.4179C17.6114 11.2067 17.4714 10.912 17.4409 10.6065C17.4371 10.563 17.4355 10.5194 17.4361 10.4758C17.444 10.1379 17.5847 9.80337 17.8591 9.56905L19.7638 7.94348C19.8146 7.90007 19.857 7.84958 19.8904 7.7944C19.9978 7.63842 20.0299 7.43844 19.9706 7.25291C19.8534 6.88733 19.7151 6.52704 19.5572 6.17466C19.1114 5.17572 18.5115 4.2528 17.7787 3.43934C17.612 3.25429 17.3509 3.18886 17.1161 3.27382L14.7569 4.12827C14.0592 4.38082 13.2679 3.93321 13.1344 3.19155L12.6871 0.714256C12.6423 0.468053 12.4542 0.273849 12.2106 0.22246C11.5182 0.0764882 10.803 0.00250031 10.088 0.000608251C9.88769 -0.0015584 9.68739 0.002064 9.48735 0.0114648C8.92415 0.0369819 8.36389 0.107332 7.81778 0.222459C7.78135 0.230146 7.74615 0.241028 7.71249 0.2548C7.5098 0.328781 7.35888 0.505679 7.31996 0.723547L6.8788 3.19817C6.81394 3.56157 6.58834 3.85866 6.29097 4.03446C5.98991 4.2061 5.61923 4.25412 5.27153 4.12827L2.91237 3.27382C2.70694 3.1995 2.48138 3.24016 2.31657 3.37545C2.2857 3.39886 2.25676 3.42543 2.23026 3.45505C1.81793 3.91588 1.44433 4.4192 1.11714 4.95183C1.05788 5.04799 1.00019 5.14513 0.944072 5.24319C0.878302 5.35619 0.814661 5.4704 0.753186 5.58577C0.464267 6.12611 0.222113 6.69081 0.0338354 7.26739C0.0213426 7.30567 0.0127871 7.34455 0.00802709 7.38352C-0.0257478 7.59364 0.0518458 7.809 0.218337 7.94974L2.13633 9.56992C2.41146 9.80242 2.55518 10.1364 2.56469 10.4743C2.56917 10.8294 2.42529 11.1857 2.13611 11.4301L0.218115 13.0503C0.0484589 13.1937 -0.0289685 13.4145 0.00982709 13.6284C0.0147983 13.6634 0.0228404 13.6982 0.0340542 13.7326C0.198098 14.235 0.403035 14.7283 0.644169 15.2044ZM10 14.5C12.2091 14.5 14 12.7091 14 10.5C14 8.29086 12.2091 6.5 10 6.5C7.79086 6.5 6 8.29086 6 10.5C6 12.7091 7.79086 14.5 10 14.5Z" fill="currentColor"></path></svg>'),p.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),p.register("copy",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 11C2 11.7956 2.31607 12.5587 2.87868 13.1213C3.44129 13.6839 4.20435 14 5 14H11C11.7956 14 12.5587 13.6839 13.1213 13.1213C13.6839 12.5587 14 11.7956 14 11V8H11.75C10.7554 8 9.80161 7.60491 9.09835 6.90165C8.39509 6.19839 8 5.24456 8 4.25V2H5C4.20435 2 3.44129 2.31607 2.87868 2.87868C2.31607 3.44129 2 4.20435 2 5V11Z" fill="currentColor"/><path d="M13.7975 6.49965C13.6881 6.25457 13.5357 6.03105 13.3475 5.83965L10.16 2.65965C9.96921 2.4688 9.74565 2.31384 9.5 2.20215V4.24965C9.5 4.54512 9.5582 4.8377 9.67127 5.11069C9.78434 5.38367 9.95008 5.63171 10.159 5.84064C10.3679 6.04957 10.616 6.2153 10.889 6.32838C11.1619 6.44145 11.4545 6.49965 11.75 6.49965H13.7975Z" fill="currentColor"/></svg>'),p.register("arrow",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>'),p.register("back",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" style="transform: rotate(180deg)"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>'),p.register("check",'<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.86368 9.12226C3.82463 9.16131 3.76131 9.16131 3.72226 9.12226L0.146522 5.54652C-0.0487403 5.35126 -0.0487401 5.03468 0.146522 4.83942L0.839416 4.14652C1.03468 3.95126 1.35126 3.95126 1.54652 4.14652L3.72226 6.32226C3.76131 6.36131 3.82463 6.36131 3.86368 6.32226L10.0394 0.146522C10.2347 -0.0487398 10.5513 -0.0487399 10.7465 0.146522L11.4394 0.839416C11.6347 1.03468 11.6347 1.35126 11.4394 1.54652L3.86368 9.12226Z" fill="currentColor"/></svg>');class M extends HTMLElement{static get observedAttributes(){return["name","width","height"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}render(){const t=this.getAttribute("name"),e=p.get(t);if(!e){this.shadowRoot.innerHTML='<span style="color:red;">?</span>';return}const i=document.createElement("template");i.innerHTML=e.trim();const r=i.content.cloneNode(!0),s=r.firstElementChild;if(s&&s.style){const n=this.getAttribute("width"),c=this.getAttribute("height");n&&s.setAttribute("width",n),c&&s.setAttribute("height",c),s.style.display="block"}this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(r)}}customElements.define("eui-icon",M);class z extends HTMLElement{static get observedAttributes(){return["label","value","id","type","filled"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
47
47
|
<style>
|
|
48
48
|
.form {
|
|
49
49
|
display: flex;
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
<input class="form-input" placeholder=" ">
|
|
144
144
|
<label></label>
|
|
145
145
|
</div>
|
|
146
|
-
`}connectedCallback(){this.form=this.shadowRoot.querySelector(".form"),this.inputEl=this.shadowRoot.querySelector(".form-input"),this.labelEl=this.shadowRoot.querySelector("label"),this.hasAttribute("value")&&(this.inputEl.value=this.getAttribute("value")),this.hasAttribute("id")&&(this.inputEl.id=this.getAttribute("id")),this.hasAttribute("label")&&(this.labelEl.textContent=this.getAttribute("label")),this.hasAttribute("type")&&(this.inputEl.type=this.getAttribute("type")),this.hasAttribute("filled")&&this.form.classList.add("filled"),this.inputEl.addEventListener("input",()=>{this.setAttribute("value",this.inputEl.value)})}attributeChangedCallback(t,i
|
|
146
|
+
`}connectedCallback(){this.form=this.shadowRoot.querySelector(".form"),this.inputEl=this.shadowRoot.querySelector(".form-input"),this.labelEl=this.shadowRoot.querySelector("label"),this.hasAttribute("value")&&(this.inputEl.value=this.getAttribute("value")),this.hasAttribute("id")&&(this.inputEl.id=this.getAttribute("id")),this.hasAttribute("label")&&(this.labelEl.textContent=this.getAttribute("label")),this.hasAttribute("type")&&(this.inputEl.type=this.getAttribute("type")),this.hasAttribute("filled")&&this.form.classList.add("filled"),this.inputEl.addEventListener("input",()=>{this.setAttribute("value",this.inputEl.value)})}attributeChangedCallback(t,e,i){if(!(!this.inputEl||!this.labelEl))switch(t){case"value":this.inputEl.value!==i&&(this.inputEl.value=i);break;case"id":this.inputEl.id=i;break;case"label":this.labelEl.textContent=i;break}}get value(){return this.inputEl.value}set value(t){this.setAttribute("value",t)}}customElements.define("eui-input",z);class T extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
147
147
|
<style>
|
|
148
148
|
.loader {
|
|
149
149
|
width: 24px;
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
<div class="progressbar">
|
|
233
233
|
<span class="progress"></span>
|
|
234
234
|
</div>
|
|
235
|
-
`}set value(t){this.setAttribute("value",t)}attributeChangedCallback(){this.connectedCallback()}connectedCallback(){const t=this.shadowRoot.querySelector(".progress");this.hasAttribute("id")&&(this.progress.id=this.getAttribute("id")),this.hasAttribute("intermediate")&&t.classList.add("intermediate"),this.hasAttribute("value")&&(t.style.width=this.getAttribute("value")+"%")}}customElements.define("eui-progressbar",$);const v={is:{iPhone:/iPhone/.test(navigator.userAgent),iPad:/iPad/.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/.test(navigator.userAgent),android:/Android/.test(navigator.userAgent),mobile:/Mobi|Android/i.test(navigator.userAgent)},prefers:{language:navigator.language||navigator.userLanguage,reducedMotion:window.matchMedia("(prefers-reduced-motion: reduce)").matches,reducedTransparency:window.matchMedia("(prefers-reduced-transparency: reduce)").matches},supports:{share:typeof navigator.share=="function",directDownload:"download"in document.createElement("a"),haptics:"vibrate"in navigator||"Vibrate"in window||typeof window.navigator.vibrate=="function"},userAgent:navigator.userAgent},R=Object.freeze(Object.defineProperty({__proto__:null,device:v},Symbol.toStringTag,{value:"Module"}));function H(){try{const o=document.createElement("label");o.ariaHidden="true",o.style.display="none";const t=document.createElement("input");t.type="checkbox",t.setAttribute("switch",""),o.appendChild(t),document.head.appendChild(o),o.click(),document.head.removeChild(o)}catch{}}function x(o){v.supports.haptics?navigator.vibrate(o||50):v.is.iPhone&&H()}const _=Object.freeze(Object.defineProperty({__proto__:null,haptic:x},Symbol.toStringTag,{value:"Module"})),
|
|
235
|
+
`}set value(t){this.setAttribute("value",t)}attributeChangedCallback(){this.connectedCallback()}connectedCallback(){const t=this.shadowRoot.querySelector(".progress");this.hasAttribute("id")&&(this.progress.id=this.getAttribute("id")),this.hasAttribute("intermediate")&&t.classList.add("intermediate"),this.hasAttribute("value")&&(t.style.width=this.getAttribute("value")+"%")}}customElements.define("eui-progressbar",$);const v={is:{iPhone:/iPhone/.test(navigator.userAgent),iPad:/iPad/.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/.test(navigator.userAgent),android:/Android/.test(navigator.userAgent),mobile:/Mobi|Android/i.test(navigator.userAgent)},prefers:{language:navigator.language||navigator.userLanguage,reducedMotion:window.matchMedia("(prefers-reduced-motion: reduce)").matches,reducedTransparency:window.matchMedia("(prefers-reduced-transparency: reduce)").matches},supports:{share:typeof navigator.share=="function",directDownload:"download"in document.createElement("a"),haptics:"vibrate"in navigator||"Vibrate"in window||typeof window.navigator.vibrate=="function"},userAgent:navigator.userAgent},R=Object.freeze(Object.defineProperty({__proto__:null,device:v},Symbol.toStringTag,{value:"Module"}));function H(){try{const o=document.createElement("label");o.ariaHidden="true",o.style.display="none";const t=document.createElement("input");t.type="checkbox",t.setAttribute("switch",""),o.appendChild(t),document.head.appendChild(o),o.click(),document.head.removeChild(o)}catch{}}function x(o){v.supports.haptics?navigator.vibrate(o||50):v.is.iPhone&&H()}const _=Object.freeze(Object.defineProperty({__proto__:null,haptic:x},Symbol.toStringTag,{value:"Module"})),E=(()=>{let o={},t;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(e){console.error(e)}return{get(e){return o[e]},set(e,i){o[e]=i,localStorage.setItem(t,JSON.stringify(o))},delete(e){delete o[e],localStorage.setItem(t,JSON.stringify(o))},all(){return o},clear(){o={},localStorage.setItem(t,JSON.stringify(o))},name(e){t=e;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(i){console.error(i)}},settings:{get(e){return o&&o.settings&&o.settings[e]},set(e,i){o.settings||(o.settings={}),o.settings[e]=i,localStorage.setItem(t,JSON.stringify(o))},delete(e){o.settings&&(delete o.settings[e],localStorage.setItem(t,JSON.stringify(o)))},all(){return o.settings||{}},clear(){o.settings&&(o.settings={},localStorage.setItem(t,JSON.stringify(o)))}}}})(),A=E.settings,F=Object.freeze(Object.defineProperty({__proto__:null,settings:A,storage:E},Symbol.toStringTag,{value:"Module"}));class I extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
236
236
|
<style>
|
|
237
237
|
.switch {
|
|
238
238
|
background-color: var(--app-200);
|
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
<input type="checkbox" role="switch">
|
|
302
302
|
<span class="handle"></span>
|
|
303
303
|
</div>
|
|
304
|
-
`}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.switchEl=this.shadowRoot.querySelector(".switch"),this.updateFromAttribute(),this.switchEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x()}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.switchEl.classList.toggle("selected",t)}attributeChangedCallback(t,i
|
|
304
|
+
`}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.switchEl=this.shadowRoot.querySelector(".switch"),this.updateFromAttribute(),this.switchEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x()}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.switchEl.classList.toggle("selected",t)}attributeChangedCallback(t,e,i){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-switch",I);class j extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.shadowRoot.innerHTML=`
|
|
305
305
|
<style>
|
|
306
306
|
:host {
|
|
307
307
|
display: inline-flex;
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
}
|
|
347
347
|
</style>
|
|
348
348
|
<slot></slot>
|
|
349
|
-
`,this.addEventListener("pointerdown",t=>{const
|
|
349
|
+
`,this.addEventListener("pointerdown",t=>{const e=document.createElement("span"),i=t.currentTarget,r=Math.max(i.offsetWidth,i.offsetHeight);e.classList.add("ripple"),e.style.left=t.clientX-i.getBoundingClientRect().left-r/2+"px",e.style.top=t.clientY-i.getBoundingClientRect().top-r/2+"px",e.style.width=r+"px",e.style.height=r+"px",this.shadowRoot.appendChild(e),setTimeout(()=>{e.remove()},600)})}}customElements.define("eui-chip",j);const f="",w=(()=>{const o=[];function t(a,l){const u=[],b=a.replace(/:([^/]+)/g,(y,k)=>(u.push(k),"([^/]+)")).replace(/\//g,"\\/"),m=new RegExp(`^${f}${b}$`);o.push({regex:m,paramNames:u,renderFn:l})}function e(a){for(const{regex:l,paramNames:u,renderFn:b}of o){const m=a.match(l);if(m){const y={};return u.forEach((k,Y)=>{y[k]=decodeURIComponent(m[Y+1])}),{renderFn:b,params:y}}}return null}function i(a,l=!0){a.startsWith(f)||(a=f+(a.startsWith("/")?"":"/")+a);const u=a.split(/[?#]/)[0];if(u===window.location.pathname&&a.includes("#")){l&&history.pushState({},"",a);const m="#"+a.split("#")[1];r(m);return}const b=e(u);if(b)if(l&&history.pushState({},"",a),b.renderFn(b.params),window.dispatchEvent(new CustomEvent("route-changed",{detail:{path:a}})),a.includes("#")){const m="#"+a.split("#")[1];setTimeout(()=>r(m),100)}else{const m=document.getElementById("main");m&&m.scrollTo(0,0)}else s?(l&&history.pushState({},"",a),s()):console.warn(`No route found for ${u}`)}function r(a){if(a)try{const l=document.querySelector(a);l&&l.scrollIntoView({behavior:"smooth"})}catch{console.warn("Invalid hash:",a)}}let s=null;function n(a){s=a}function c(){history.back()}function d(){return window.location.pathname.replace(f,"")||"/"}return window.addEventListener("popstate",()=>{const a=window.location.pathname+window.location.search+window.location.hash;i(a,!1)}),window.addEventListener("click",a=>{if(a.button!==0||a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)return;const l=a.target.closest("a");if(!l||l.hasAttribute("download")||l.getAttribute("target")==="_blank")return;const u=l.getAttribute("href");if(!(!u||u.startsWith("http")&&!u.startsWith(window.location.origin))){if(a.preventDefault(),u.startsWith("#")){history.pushState({},"",u),r(u);return}i(u)}}),{add:t,navigate:i,back:c,location:d,setNotFound:n}})();async function q(o){try{const t=document.getElementById("main");t.classList.add("fade-out"),await new Promise(i=>setTimeout(i,200));const e=await fetch(`/src/pages/${o}.html`).then(i=>i.text());t.innerHTML=e,t.classList.remove("fade-out"),t.classList.add("fade-in"),window.location.hash?setTimeout(()=>{try{const i=document.querySelector(window.location.hash);i&&i.scrollIntoView({behavior:"smooth"})}catch{}},100):t&&t.scrollTo(0,0),setTimeout(()=>{t.classList.remove("fade-in")},200)}catch(t){console.error("Page load failed:",t)}}class B extends HTMLElement{constructor(){super();C(this,"handleClick",()=>{const e=this.getAttribute("path");e&&w.navigate(e)});this.attachShadow({mode:"open"})}static get observedAttributes(){return["path","icon","label","badge","active","avatar-src","avatar-name"]}connectedCallback(){this.hasRendered||(this.render(),this.setupEventListeners(),this.hasRendered=!0),this.updateContent(),this.addEventListener("click",this.handleClick)}disconnectedCallback(){this.removeEventListener("click",this.handleClick)}attributeChangedCallback(e,i,r){if(i!==r&&this.hasRendered){if(e==="active")return;this.updateContent()}}setupEventListeners(){this.addEventListener("pointerdown",e=>{const i=document.createElement("span"),r=e.currentTarget,s=r.getBoundingClientRect(),n=Math.max(r.offsetWidth,r.offsetHeight),c=n/2;i.classList.add("ripple"),i.style.width=`${n}px`,i.style.height=`${n}px`,i.style.left=`${e.clientX-s.left-c}px`,i.style.top=`${e.clientY-s.top-c}px`,this.shadowRoot.appendChild(i),i.addEventListener("animationend",()=>{i.remove()})})}updateContent(){const e=this.getAttribute("icon"),i=this.getAttribute("avatar-src"),r=this.getAttribute("avatar-name"),s=this.getAttribute("label")||"",n=this.getAttribute("badge"),c=this.shadowRoot.querySelector(".badge");if(n)if(c)c.textContent=n;else{const l=document.createElement("span");l.className="badge",l.textContent=n,this.shadowRoot.appendChild(l)}else c&&c.remove();const d=this.shadowRoot.querySelector("slot[name='icon']");if(d)if(i||r){let l='<eui-avatar size="24"';r&&(l+=` name="${r}"`),l+=">",i&&(l+=`<img src="${i}" alt="${r||"Avatar"}" />`),l+="</eui-avatar>",d.innerHTML=l}else{const l=d.querySelector("eui-icon");e&&l?l.getAttribute("name")!==e&&l.setAttribute("name",e):e?d.innerHTML=`<eui-icon width="24" height="24" name="${e}"></eui-icon>`:d.innerHTML=""}const a=this.shadowRoot.querySelector(".label");a&&(a.textContent=s)}render(){this.shadowRoot.innerHTML=`
|
|
350
350
|
<style>
|
|
351
351
|
:host {
|
|
352
352
|
position: relative;
|
|
@@ -551,10 +551,10 @@
|
|
|
551
551
|
<div class="app-nav-container">
|
|
552
552
|
<a href="#content" id="skip_navigation_link">Skip To Content</a>
|
|
553
553
|
<div class="nav-items">
|
|
554
|
-
${this.navItems.map(t=>{var s
|
|
554
|
+
${this.navItems.map(t=>{var r,s;if(t.type==="divider")return'<div style="height: 1px; background: var(--app-300); margin: 0.5rem 0;"></div>';const e=((r=t.avatar)==null?void 0:r.src)||"",i=((s=t.avatar)==null?void 0:s.name)||"";return`<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${e}" avatar-name="${i}" label="${t.label}"></eui-nav-item>`}).join("")}
|
|
555
555
|
</div>
|
|
556
556
|
</div>
|
|
557
|
-
`}set navItems(t){this._navItems=t,this.render(),this.updateActiveState()}get navItems(){return this._navItems||[]}updateActiveState(t){t||(t=w.location()),t.startsWith("/")||(t="/"+t),this.shadowRoot.querySelectorAll("eui-nav-item").forEach(
|
|
557
|
+
`}set navItems(t){this._navItems=t,this.render(),this.updateActiveState()}get navItems(){return this._navItems||[]}updateActiveState(t){t||(t=w.location()),t.startsWith("/")||(t="/"+t),this.shadowRoot.querySelectorAll("eui-nav-item").forEach(i=>{i.getAttribute("path")===t?i.setAttribute("active",""):i.removeAttribute("active")})}}customElements.define("eui-app-nav",N);class O extends HTMLElement{static get observedAttributes(){return["type","title","subtitle","img"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
558
558
|
<style>
|
|
559
559
|
:host {
|
|
560
560
|
border-radius: 24px;
|
|
@@ -623,7 +623,7 @@
|
|
|
623
623
|
<p></p>
|
|
624
624
|
</div>
|
|
625
625
|
</div>
|
|
626
|
-
`}connectedCallback(){this.hd=this.shadowRoot.querySelector(".header"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}attributeChangedCallback(t,i
|
|
626
|
+
`}connectedCallback(){this.hd=this.shadowRoot.querySelector(".header"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}attributeChangedCallback(t,e,i){const r=this.shadowRoot.querySelector("h1"),s=this.shadowRoot.querySelector("p"),n=this.shadowRoot.querySelector(".img");t==="title"&&(r.textContent=i),t==="subtitle"&&(s.textContent=i),t==="img"&&(n.style.backgroundImage=i?`url(${i})`:"")}}customElements.define("eui-header",O);class P extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
627
627
|
<style>
|
|
628
628
|
:host {
|
|
629
629
|
display: block;
|
|
@@ -706,7 +706,7 @@
|
|
|
706
706
|
<rect class="mark long"></rect>
|
|
707
707
|
</svg>
|
|
708
708
|
</div>
|
|
709
|
-
`}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.checkEl=this.shadowRoot.querySelector(".checkbox"),this.updateFromAttribute(),this.checkEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x();const t=this.selected,
|
|
709
|
+
`}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.checkEl=this.shadowRoot.querySelector(".checkbox"),this.updateFromAttribute(),this.checkEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x();const t=this.selected,e=this.dataset.setting;e&&A.set(e,t)}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.checkEl.classList.toggle("selected",t)}attributeChangedCallback(t,e,i){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-checkbox",P);class L extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}render(){const t=this.getAttribute("href"),e=t?"a":"button";this.shadowRoot.innerHTML=`
|
|
710
710
|
<style>
|
|
711
711
|
button, a {
|
|
712
712
|
display: flex;
|
|
@@ -809,10 +809,10 @@
|
|
|
809
809
|
}
|
|
810
810
|
|
|
811
811
|
</style>
|
|
812
|
-
<${
|
|
812
|
+
<${e}>
|
|
813
813
|
<slot></slot>
|
|
814
|
-
</${
|
|
815
|
-
`;const
|
|
814
|
+
</${e}>
|
|
815
|
+
`;const i=this.shadowRoot.querySelector(e);t&&i.setAttribute("href",t),this.hasAttribute("type")&&i.classList.add(this.getAttribute("type")),this.hasAttribute("icon")&&i.classList.add("icon"),this.hasAttribute("width")&&(i.style.width=this.getAttribute("width")+"px"),this.hasAttribute("height")&&(i.style.height=this.getAttribute("height")+"px"),this.hasAttribute("border-radius")&&(i.style.borderRadius=this.getAttribute("border-radius")+"px"),i.addEventListener("pointerdown",r=>{const s=document.createElement("span"),n=r.currentTarget,c=n.getBoundingClientRect(),d=Math.max(n.offsetWidth,n.offsetHeight),a=d/2;s.classList.add("ripple"),s.style.width=`${d}px`,s.style.height=`${d}px`,s.style.left=`${r.clientX-c.left-a}px`,s.style.top=`${r.clientY-c.top-a}px`,i.appendChild(s),s.addEventListener("animationend",()=>{s.remove()})})}}C(L,"observedAttributes",["type","width","height","border-radius","icon","link","href"]),customElements.define("eui-button",L);class V extends HTMLElement{static get observedAttributes(){return["type","anchor"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.hd=this.shadowRoot.querySelector(".hd"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}render(){this.shadowRoot.innerHTML=`
|
|
816
816
|
<style>
|
|
817
817
|
:host {
|
|
818
818
|
display: block;
|
|
@@ -870,7 +870,7 @@
|
|
|
870
870
|
<span class="anchor-hash">#</span>
|
|
871
871
|
</a>
|
|
872
872
|
`:""}
|
|
873
|
-
`}}customElements.define("eui-heading",V);function
|
|
873
|
+
`}}customElements.define("eui-heading",V);function D(o){const i=Date.now()-o,r=Math.floor(i/1e3),s=Math.floor(r/60),n=Math.floor(s/60),c=Math.floor(n/24),d=Math.floor(c/30),a=Math.floor(d/12);return a>0?`${a}y`:d>0?`${d}mo`:c>0?`${c}d`:n>0?`${n}h`:s>0?`${s}m`:`${r}s`}function U(o){const i=Date.now()-o,r=Math.floor(i/1e3),s=Math.floor(r/60),n=Math.floor(s/60),c=Math.floor(n/24),d=Math.floor(c/30),a=Math.floor(d/12);return a>0?`${a} year${a>1?"s":""} ago`:d>0?`${d} month${d>1?"s":""} ago`:c>0?`${c} day${c>1?"s":""} ago`:n>0?`${n} hour${n>1?"s":""} ago`:s>0?`${s} minute${s>1?"s":""} ago`:`${r} second${r>1?"s":""} ago`}function Z(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/`/g,"`").replace(/'/g,"'")}function S(o){const t=document.createElement("input");t.value=o,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}const X=Object.freeze(Object.defineProperty({__proto__:null,copystr:S,joinedAgo:U,sanitize:Z,timeAgo:D},Symbol.toStringTag,{value:"Module"}));class W extends HTMLElement{static get observedAttributes(){return["copy","id","type","language"]}constructor(){super(),this.attachShadow({mode:"open"}),this._boundCopy=this._onCopy.bind(this),this._isRendered=!1}connectedCallback(){this._isRendered||(this.render(),this._isRendered=!0)}attributeChangedCallback(t,e,i){this._isRendered&&e!==i&&this.render()}render(){const t=this.hasAttribute("copy"),e=this.getAttribute("language")||"text";this.shadowRoot.innerHTML=`
|
|
874
874
|
<style>
|
|
875
875
|
:host {
|
|
876
876
|
position: relative;
|
|
@@ -907,14 +907,14 @@
|
|
|
907
907
|
}
|
|
908
908
|
|
|
909
909
|
.token.comment { color: var(--app-700); font-style: italic; }
|
|
910
|
-
.token.string { color:
|
|
911
|
-
.token.number { color:
|
|
912
|
-
.token.keyword { color:
|
|
913
|
-
.token.function { color:
|
|
914
|
-
.token.tag { color:
|
|
915
|
-
.token.attr-name { color:
|
|
916
|
-
.token.attr-value { color:
|
|
917
|
-
.token.boolean { color:
|
|
910
|
+
.token.string { color: #9ECE6A; }
|
|
911
|
+
.token.number { color: #F97C5F; }
|
|
912
|
+
.token.keyword { color: #7DCFFF; }
|
|
913
|
+
.token.function { color: #7DCFFF; }
|
|
914
|
+
.token.tag { color: #DE5971; }
|
|
915
|
+
.token.attr-name { color: #BB9AF7; }
|
|
916
|
+
.token.attr-value { color: #9ECE6A; }
|
|
917
|
+
.token.boolean { color: #F97C5F; }
|
|
918
918
|
</style>
|
|
919
919
|
|
|
920
920
|
<eui-button class="copy" width="36" height="36" border-radius="100">
|
|
@@ -922,9 +922,9 @@
|
|
|
922
922
|
</eui-button>
|
|
923
923
|
|
|
924
924
|
<pre class="${t?"g":""}"><code></code></pre>
|
|
925
|
-
`,this.copyBtn=this.shadowRoot.querySelector(".copy"),this.codeEl=this.shadowRoot.querySelector("code");const
|
|
926
|
-
`),
|
|
927
|
-
`)}
|
|
925
|
+
`,this.copyBtn=this.shadowRoot.querySelector(".copy"),this.codeEl=this.shadowRoot.querySelector("code");const i=this._getFormattedText();this.codeEl.innerHTML=this._highlight(i,e),t?this.copyBtn.addEventListener("click",this._boundCopy):this.copyBtn.style.display="none"}_getFormattedText(){let e=(this.querySelector("code")||this).innerHTML||"";e=this._unescapeHtml(e),e=e.replace(/^\s*\n/,"").replace(/\n\s*$/,"");const i=e.split(`
|
|
926
|
+
`),r=i.filter(n=>n.trim()).map(n=>n.match(/^\s*/)[0].length),s=r.length?Math.min(...r):0;return i.map(n=>n.slice(s)).join(`
|
|
927
|
+
`)}_unescapeHtml(t){const e=document.createElement("textarea");return e.innerHTML=t,e.value}_highlight(t,e){t=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");const i={};let r=0;function s(n,c){const d=`__TOKEN_${c}_${r++}__`;return i[d]=`<span class="token ${c}">${n}</span>`,d}return["javascript","js","json","bash","sh","css"].includes(e)?(t=t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g,n=>s(n,"string")),e==="bash"||e==="sh"?t=t.replace(/(#.*$)/gm,n=>s(n,"comment")):e==="css"?t=t.replace(/(\/\*[\s\S]*?\*\/)/g,n=>s(n,"comment")):t=t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm,n=>s(n,"comment"))):["html","xml"].includes(e)&&(t=t.replace(/(<!--[\s\S]*?-->)/g,n=>s(n,"comment")),t=t.replace(/(<\/?[a-z0-9:-]+)/gi,n=>s(n,"tag"))),e==="javascript"||e==="js"||e==="json"?(t=t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(true|false|null|undefined)\b/g,'<span class="token boolean">$1</span>'),t=t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g,'<span class="token function">$1</span>')):e==="bash"||e==="sh"?(t=t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g,'<span class="token function">$1</span>'),t=t.replace(/(\s-+[a-zA-Z0-9-]+)/g,'<span class="token attr-name">$1</span>'),t=t.replace(/(\$[A-Z0-9_]+)/g,'<span class="token number">$1</span>')):e==="html"||e==="xml"?(t=t.replace(/\s([a-z0-9:-]+)=/gi,(n,c)=>" "+s(c,"attr-name")+"="),t=t.replace(/(".*?")/g,n=>s(n,"attr-value")),t=t.replace(/>/g,'<span class="token tag">></span>')):e==="css"&&(t=t.replace(/([a-z-]+)(?=:)/g,'<span class="token keyword">$1</span>')),Object.keys(i).reverse().forEach(n=>{t=t.replace(n,i[n])}),t}_onCopy(){S(this._getFormattedText());const t=this.copyBtn.querySelector("eui-icon");if(t){const e=t.getAttribute("name");t.setAttribute("name","check"),setTimeout(()=>t.setAttribute("name",e),2e3)}}disconnectedCallback(){this.copyBtn&&this.copyBtn.removeEventListener("click",this._boundCopy)}}customElements.define("eui-code",W);class J extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["name"]}attributeChangedCallback(t,e,i){t==="name"&&(this.render(),this.setupEventListeners())}setupEventListeners(){const t=this.shadowRoot.querySelector("#nav-toggle");t&&t.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("toggle-nav"))})}render(){const t=this.getAttribute("name")||"Title";this.shadowRoot.innerHTML=`
|
|
928
928
|
<style>
|
|
929
929
|
:host {
|
|
930
930
|
display: block;
|
|
@@ -1016,7 +1016,7 @@
|
|
|
1016
1016
|
<slot></slot>
|
|
1017
1017
|
</div>
|
|
1018
1018
|
</div>
|
|
1019
|
-
`}}customElements.define("eui-app-titlebar",J);class
|
|
1019
|
+
`}}customElements.define("eui-app-titlebar",J);class K extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._handleMouseDown=this._addRipple.bind(this)}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["elevated","interactive","ripple"]}attributeChangedCallback(t,e,i){e!==i&&t==="ripple"&&this.setupEventListeners()}setupEventListeners(){this.removeEventListener("mousedown",this._handleMouseDown),this.hasAttribute("ripple")&&this.addEventListener("mousedown",this._handleMouseDown)}_addRipple(t){const e=this.getBoundingClientRect(),i=document.createElement("span"),r=Math.max(e.width,e.height),s=r/2;i.style.width=i.style.height=`${r}px`,i.style.left=`${t.clientX-e.left-s}px`,i.style.top=`${t.clientY-e.top-s}px`,i.classList.add("ripple"),this.shadowRoot.querySelector(".surface").appendChild(i),i.addEventListener("animationend",()=>{i.remove()})}render(){this.shadowRoot.innerHTML=`
|
|
1020
1020
|
<style>
|
|
1021
1021
|
:host {
|
|
1022
1022
|
display: block;
|
|
@@ -1077,4 +1077,4 @@
|
|
|
1077
1077
|
<div class="surface">
|
|
1078
1078
|
<slot></slot>
|
|
1079
1079
|
</div>
|
|
1080
|
-
`}}customElements.define("eui-surface",
|
|
1080
|
+
`}}customElements.define("eui-surface",K),typeof window<"u"&&console.log("ErisUI loaded successfully"),h.device=R,h.haptics=_,h.icons=p,h.loadPage=q,h.router=w,h.storage=F,h.utils=X,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
|
package/dist/erisui.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var S = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var v = (o, t,
|
|
4
|
-
class
|
|
2
|
+
var M = (o, t, e) => t in o ? S(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
|
|
3
|
+
var v = (o, t, e) => M(o, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
+
class z extends HTMLElement {
|
|
5
5
|
static get observedAttributes() {
|
|
6
6
|
return ["size", "border-radius", "name", "color"];
|
|
7
7
|
}
|
|
@@ -55,29 +55,29 @@ class M extends HTMLElement {
|
|
|
55
55
|
}
|
|
56
56
|
connectedCallback() {
|
|
57
57
|
this.avatar = this.shadowRoot.querySelector(".avatar"), this.initials = this.shadowRoot.querySelector("#initials");
|
|
58
|
-
const t = this.shadowRoot.querySelector("slot"),
|
|
59
|
-
if (
|
|
60
|
-
const
|
|
61
|
-
|
|
58
|
+
const t = this.shadowRoot.querySelector("slot"), e = t && t.assignedNodes().length > 0;
|
|
59
|
+
if (e) {
|
|
60
|
+
const i = t.assignedNodes()[0];
|
|
61
|
+
i && i.tagName === "IMG" && (this.initials.style.display = "none", this.avatar.style.backgroundColor = "transparent");
|
|
62
62
|
} else
|
|
63
63
|
this.hasAttribute("color") && (this.avatar.style.backgroundColor = this.getAttribute("color"));
|
|
64
64
|
if (this.hasAttribute("color") && (this.avatar.style.backgroundColor = this.getAttribute("color")), this.hasAttribute("size")) {
|
|
65
|
-
const
|
|
66
|
-
this.avatar.style.width =
|
|
65
|
+
const i = this.getAttribute("size");
|
|
66
|
+
this.avatar.style.width = i + "px", this.avatar.style.height = i + "px", this.initials.style.fontSize = i / 2 + "px";
|
|
67
67
|
}
|
|
68
|
-
if (this.hasAttribute("border-radius") && (this.avatar.style.borderRadius = this.getAttribute("border-radius") + "px"), this.hasAttribute("name") && (this.avatar.title = this.getAttribute("name")), !
|
|
69
|
-
const
|
|
70
|
-
let
|
|
71
|
-
|
|
68
|
+
if (this.hasAttribute("border-radius") && (this.avatar.style.borderRadius = this.getAttribute("border-radius") + "px"), this.hasAttribute("name") && (this.avatar.title = this.getAttribute("name")), !e && this.hasAttribute("name")) {
|
|
69
|
+
const n = this.getAttribute("name").trim().split(/\s+/);
|
|
70
|
+
let s = "";
|
|
71
|
+
n.length === 1 ? s = n[0][0] || "" : s = (n[0][0] || "") + (n[n.length - 1][0] || ""), this.initials.textContent = s.toUpperCase();
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
customElements.define("eui-avatar",
|
|
75
|
+
customElements.define("eui-avatar", z);
|
|
76
76
|
const u = /* @__PURE__ */ (() => {
|
|
77
77
|
let o = {};
|
|
78
78
|
return {
|
|
79
|
-
register(t,
|
|
80
|
-
o[t] =
|
|
79
|
+
register(t, e) {
|
|
80
|
+
o[t] = e;
|
|
81
81
|
},
|
|
82
82
|
get(t) {
|
|
83
83
|
return o[t] || "";
|
|
@@ -92,7 +92,8 @@ u.register("home", '<svg width="22" height="21" viewBox="0 0 22 21" fill="none"
|
|
|
92
92
|
u.register("copy", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 11C2 11.7956 2.31607 12.5587 2.87868 13.1213C3.44129 13.6839 4.20435 14 5 14H11C11.7956 14 12.5587 13.6839 13.1213 13.1213C13.6839 12.5587 14 11.7956 14 11V8H11.75C10.7554 8 9.80161 7.60491 9.09835 6.90165C8.39509 6.19839 8 5.24456 8 4.25V2H5C4.20435 2 3.44129 2.31607 2.87868 2.87868C2.31607 3.44129 2 4.20435 2 5V11Z" fill="currentColor"/><path d="M13.7975 6.49965C13.6881 6.25457 13.5357 6.03105 13.3475 5.83965L10.16 2.65965C9.96921 2.4688 9.74565 2.31384 9.5 2.20215V4.24965C9.5 4.54512 9.5582 4.8377 9.67127 5.11069C9.78434 5.38367 9.95008 5.63171 10.159 5.84064C10.3679 6.04957 10.616 6.2153 10.889 6.32838C11.1619 6.44145 11.4545 6.49965 11.75 6.49965H13.7975Z" fill="currentColor"/></svg>');
|
|
93
93
|
u.register("arrow", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>');
|
|
94
94
|
u.register("back", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" style="transform: rotate(180deg)"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>');
|
|
95
|
-
|
|
95
|
+
u.register("check", '<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.86368 9.12226C3.82463 9.16131 3.76131 9.16131 3.72226 9.12226L0.146522 5.54652C-0.0487403 5.35126 -0.0487401 5.03468 0.146522 4.83942L0.839416 4.14652C1.03468 3.95126 1.35126 3.95126 1.54652 4.14652L3.72226 6.32226C3.76131 6.36131 3.82463 6.36131 3.86368 6.32226L10.0394 0.146522C10.2347 -0.0487398 10.5513 -0.0487399 10.7465 0.146522L11.4394 0.839416C11.6347 1.03468 11.6347 1.35126 11.4394 1.54652L3.86368 9.12226Z" fill="currentColor"/></svg>');
|
|
96
|
+
class T extends HTMLElement {
|
|
96
97
|
static get observedAttributes() {
|
|
97
98
|
return ["name", "width", "height"];
|
|
98
99
|
}
|
|
@@ -106,23 +107,23 @@ class $ extends HTMLElement {
|
|
|
106
107
|
this.render();
|
|
107
108
|
}
|
|
108
109
|
render() {
|
|
109
|
-
const t = this.getAttribute("name"),
|
|
110
|
-
if (!
|
|
110
|
+
const t = this.getAttribute("name"), e = u.get(t);
|
|
111
|
+
if (!e) {
|
|
111
112
|
this.shadowRoot.innerHTML = '<span style="color:red;">?</span>';
|
|
112
113
|
return;
|
|
113
114
|
}
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
const
|
|
119
|
-
|
|
115
|
+
const i = document.createElement("template");
|
|
116
|
+
i.innerHTML = e.trim();
|
|
117
|
+
const n = i.content.cloneNode(!0), s = n.firstElementChild;
|
|
118
|
+
if (s && s.style) {
|
|
119
|
+
const r = this.getAttribute("width"), c = this.getAttribute("height");
|
|
120
|
+
r && s.setAttribute("width", r), c && s.setAttribute("height", c), s.style.display = "block";
|
|
120
121
|
}
|
|
121
|
-
this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(
|
|
122
|
+
this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(n);
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
|
-
customElements.define("eui-icon",
|
|
125
|
-
class
|
|
125
|
+
customElements.define("eui-icon", T);
|
|
126
|
+
class $ extends HTMLElement {
|
|
126
127
|
static get observedAttributes() {
|
|
127
128
|
return ["label", "value", "id", "type", "filled"];
|
|
128
129
|
}
|
|
@@ -234,17 +235,17 @@ class T extends HTMLElement {
|
|
|
234
235
|
this.setAttribute("value", this.inputEl.value);
|
|
235
236
|
});
|
|
236
237
|
}
|
|
237
|
-
attributeChangedCallback(t,
|
|
238
|
+
attributeChangedCallback(t, e, i) {
|
|
238
239
|
if (!(!this.inputEl || !this.labelEl))
|
|
239
240
|
switch (t) {
|
|
240
241
|
case "value":
|
|
241
|
-
this.inputEl.value !==
|
|
242
|
+
this.inputEl.value !== i && (this.inputEl.value = i);
|
|
242
243
|
break;
|
|
243
244
|
case "id":
|
|
244
|
-
this.inputEl.id =
|
|
245
|
+
this.inputEl.id = i;
|
|
245
246
|
break;
|
|
246
247
|
case "label":
|
|
247
|
-
this.labelEl.textContent =
|
|
248
|
+
this.labelEl.textContent = i;
|
|
248
249
|
break;
|
|
249
250
|
}
|
|
250
251
|
}
|
|
@@ -255,7 +256,7 @@ class T extends HTMLElement {
|
|
|
255
256
|
this.setAttribute("value", t);
|
|
256
257
|
}
|
|
257
258
|
}
|
|
258
|
-
customElements.define("eui-input",
|
|
259
|
+
customElements.define("eui-input", $);
|
|
259
260
|
class R extends HTMLElement {
|
|
260
261
|
constructor() {
|
|
261
262
|
super(), this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = `
|
|
@@ -406,25 +407,25 @@ function _() {
|
|
|
406
407
|
function w(o) {
|
|
407
408
|
x.supports.haptics ? navigator.vibrate(o || 50) : x.is.iPhone && _();
|
|
408
409
|
}
|
|
409
|
-
const
|
|
410
|
+
const K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
410
411
|
__proto__: null,
|
|
411
412
|
haptic: w
|
|
412
413
|
}, Symbol.toStringTag, { value: "Module" })), y = (() => {
|
|
413
414
|
let o = {}, t;
|
|
414
415
|
try {
|
|
415
416
|
o = JSON.parse(localStorage.getItem(t) || "{}");
|
|
416
|
-
} catch (
|
|
417
|
-
console.error(
|
|
417
|
+
} catch (e) {
|
|
418
|
+
console.error(e);
|
|
418
419
|
}
|
|
419
420
|
return {
|
|
420
|
-
get(
|
|
421
|
-
return o[
|
|
421
|
+
get(e) {
|
|
422
|
+
return o[e];
|
|
422
423
|
},
|
|
423
|
-
set(
|
|
424
|
-
o[
|
|
424
|
+
set(e, i) {
|
|
425
|
+
o[e] = i, localStorage.setItem(t, JSON.stringify(o));
|
|
425
426
|
},
|
|
426
|
-
delete(
|
|
427
|
-
delete o[
|
|
427
|
+
delete(e) {
|
|
428
|
+
delete o[e], localStorage.setItem(t, JSON.stringify(o));
|
|
428
429
|
},
|
|
429
430
|
all() {
|
|
430
431
|
return o;
|
|
@@ -432,23 +433,23 @@ const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
432
433
|
clear() {
|
|
433
434
|
o = {}, localStorage.setItem(t, JSON.stringify(o));
|
|
434
435
|
},
|
|
435
|
-
name(
|
|
436
|
-
t =
|
|
436
|
+
name(e) {
|
|
437
|
+
t = e;
|
|
437
438
|
try {
|
|
438
439
|
o = JSON.parse(localStorage.getItem(t) || "{}");
|
|
439
|
-
} catch (
|
|
440
|
-
console.error(
|
|
440
|
+
} catch (i) {
|
|
441
|
+
console.error(i);
|
|
441
442
|
}
|
|
442
443
|
},
|
|
443
444
|
settings: {
|
|
444
|
-
get(
|
|
445
|
-
return o && o.settings && o.settings[
|
|
445
|
+
get(e) {
|
|
446
|
+
return o && o.settings && o.settings[e];
|
|
446
447
|
},
|
|
447
|
-
set(
|
|
448
|
-
o.settings || (o.settings = {}), o.settings[
|
|
448
|
+
set(e, i) {
|
|
449
|
+
o.settings || (o.settings = {}), o.settings[e] = i, localStorage.setItem(t, JSON.stringify(o));
|
|
449
450
|
},
|
|
450
|
-
delete(
|
|
451
|
-
o.settings && (delete o.settings[
|
|
451
|
+
delete(e) {
|
|
452
|
+
o.settings && (delete o.settings[e], localStorage.setItem(t, JSON.stringify(o)));
|
|
452
453
|
},
|
|
453
454
|
all() {
|
|
454
455
|
return o.settings || {};
|
|
@@ -458,12 +459,12 @@ const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
458
459
|
}
|
|
459
460
|
}
|
|
460
461
|
};
|
|
461
|
-
})(), k = y.settings,
|
|
462
|
+
})(), k = y.settings, Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
462
463
|
__proto__: null,
|
|
463
464
|
settings: k,
|
|
464
465
|
storage: y
|
|
465
466
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
466
|
-
class
|
|
467
|
+
class F extends HTMLElement {
|
|
467
468
|
static get observedAttributes() {
|
|
468
469
|
return ["selected"];
|
|
469
470
|
}
|
|
@@ -549,7 +550,7 @@ class I extends HTMLElement {
|
|
|
549
550
|
const t = this.hasAttribute("selected");
|
|
550
551
|
this.inputEl.checked = t, this.switchEl.classList.toggle("selected", t);
|
|
551
552
|
}
|
|
552
|
-
attributeChangedCallback(t,
|
|
553
|
+
attributeChangedCallback(t, e, i) {
|
|
553
554
|
t === "selected" && this.inputEl && this.updateFromAttribute();
|
|
554
555
|
}
|
|
555
556
|
get selected() {
|
|
@@ -559,8 +560,8 @@ class I extends HTMLElement {
|
|
|
559
560
|
t ? this.setAttribute("selected", "") : this.removeAttribute("selected");
|
|
560
561
|
}
|
|
561
562
|
}
|
|
562
|
-
customElements.define("eui-switch",
|
|
563
|
-
class
|
|
563
|
+
customElements.define("eui-switch", F);
|
|
564
|
+
class I extends HTMLElement {
|
|
564
565
|
constructor() {
|
|
565
566
|
super(), this.attachShadow({ mode: "open" });
|
|
566
567
|
}
|
|
@@ -611,97 +612,97 @@ class F extends HTMLElement {
|
|
|
611
612
|
</style>
|
|
612
613
|
<slot></slot>
|
|
613
614
|
`, this.addEventListener("pointerdown", (t) => {
|
|
614
|
-
const
|
|
615
|
-
|
|
616
|
-
|
|
615
|
+
const e = document.createElement("span"), i = t.currentTarget, n = Math.max(i.offsetWidth, i.offsetHeight);
|
|
616
|
+
e.classList.add("ripple"), e.style.left = t.clientX - i.getBoundingClientRect().left - n / 2 + "px", e.style.top = t.clientY - i.getBoundingClientRect().top - n / 2 + "px", e.style.width = n + "px", e.style.height = n + "px", this.shadowRoot.appendChild(e), setTimeout(() => {
|
|
617
|
+
e.remove();
|
|
617
618
|
}, 600);
|
|
618
619
|
});
|
|
619
620
|
}
|
|
620
621
|
}
|
|
621
|
-
customElements.define("eui-chip",
|
|
622
|
-
const
|
|
622
|
+
customElements.define("eui-chip", I);
|
|
623
|
+
const m = "", C = (() => {
|
|
623
624
|
const o = [];
|
|
624
|
-
function t(
|
|
625
|
-
const h = [], g =
|
|
626
|
-
o.push({ regex: p, paramNames: h, renderFn:
|
|
625
|
+
function t(a, l) {
|
|
626
|
+
const h = [], g = a.replace(/:([^/]+)/g, (b, f) => (h.push(f), "([^/]+)")).replace(/\//g, "\\/"), p = new RegExp(`^${m}${g}$`);
|
|
627
|
+
o.push({ regex: p, paramNames: h, renderFn: l });
|
|
627
628
|
}
|
|
628
|
-
function
|
|
629
|
-
for (const { regex:
|
|
630
|
-
const p =
|
|
629
|
+
function e(a) {
|
|
630
|
+
for (const { regex: l, paramNames: h, renderFn: g } of o) {
|
|
631
|
+
const p = a.match(l);
|
|
631
632
|
if (p) {
|
|
632
|
-
const
|
|
633
|
+
const b = {};
|
|
633
634
|
return h.forEach((f, L) => {
|
|
634
|
-
|
|
635
|
-
}), { renderFn: g, params:
|
|
635
|
+
b[f] = decodeURIComponent(p[L + 1]);
|
|
636
|
+
}), { renderFn: g, params: b };
|
|
636
637
|
}
|
|
637
638
|
}
|
|
638
639
|
return null;
|
|
639
640
|
}
|
|
640
|
-
function
|
|
641
|
-
|
|
642
|
-
const h =
|
|
643
|
-
if (h === window.location.pathname &&
|
|
644
|
-
|
|
645
|
-
const p = "#" +
|
|
646
|
-
|
|
641
|
+
function i(a, l = !0) {
|
|
642
|
+
a.startsWith(m) || (a = m + (a.startsWith("/") ? "" : "/") + a);
|
|
643
|
+
const h = a.split(/[?#]/)[0];
|
|
644
|
+
if (h === window.location.pathname && a.includes("#")) {
|
|
645
|
+
l && history.pushState({}, "", a);
|
|
646
|
+
const p = "#" + a.split("#")[1];
|
|
647
|
+
n(p);
|
|
647
648
|
return;
|
|
648
649
|
}
|
|
649
|
-
const g =
|
|
650
|
+
const g = e(h);
|
|
650
651
|
if (g)
|
|
651
|
-
if (
|
|
652
|
-
const p = "#" +
|
|
653
|
-
setTimeout(() =>
|
|
652
|
+
if (l && history.pushState({}, "", a), g.renderFn(g.params), window.dispatchEvent(new CustomEvent("route-changed", { detail: { path: a } })), a.includes("#")) {
|
|
653
|
+
const p = "#" + a.split("#")[1];
|
|
654
|
+
setTimeout(() => n(p), 100);
|
|
654
655
|
} else {
|
|
655
656
|
const p = document.getElementById("main");
|
|
656
657
|
p && p.scrollTo(0, 0);
|
|
657
658
|
}
|
|
658
|
-
else
|
|
659
|
+
else s ? (l && history.pushState({}, "", a), s()) : console.warn(`No route found for ${h}`);
|
|
659
660
|
}
|
|
660
|
-
function
|
|
661
|
-
if (
|
|
661
|
+
function n(a) {
|
|
662
|
+
if (a)
|
|
662
663
|
try {
|
|
663
|
-
const
|
|
664
|
-
|
|
664
|
+
const l = document.querySelector(a);
|
|
665
|
+
l && l.scrollIntoView({ behavior: "smooth" });
|
|
665
666
|
} catch {
|
|
666
|
-
console.warn("Invalid hash:",
|
|
667
|
+
console.warn("Invalid hash:", a);
|
|
667
668
|
}
|
|
668
669
|
}
|
|
669
|
-
let
|
|
670
|
-
function
|
|
671
|
-
|
|
670
|
+
let s = null;
|
|
671
|
+
function r(a) {
|
|
672
|
+
s = a;
|
|
672
673
|
}
|
|
673
674
|
function c() {
|
|
674
675
|
history.back();
|
|
675
676
|
}
|
|
676
677
|
function d() {
|
|
677
|
-
return window.location.pathname.replace(
|
|
678
|
+
return window.location.pathname.replace(m, "") || "/";
|
|
678
679
|
}
|
|
679
680
|
return window.addEventListener("popstate", () => {
|
|
680
|
-
const
|
|
681
|
-
|
|
682
|
-
}), window.addEventListener("click", (
|
|
683
|
-
if (
|
|
684
|
-
const
|
|
685
|
-
if (!
|
|
686
|
-
const h =
|
|
681
|
+
const a = window.location.pathname + window.location.search + window.location.hash;
|
|
682
|
+
i(a, !1);
|
|
683
|
+
}), window.addEventListener("click", (a) => {
|
|
684
|
+
if (a.button !== 0 || a.metaKey || a.altKey || a.ctrlKey || a.shiftKey) return;
|
|
685
|
+
const l = a.target.closest("a");
|
|
686
|
+
if (!l || l.hasAttribute("download") || l.getAttribute("target") === "_blank") return;
|
|
687
|
+
const h = l.getAttribute("href");
|
|
687
688
|
if (!(!h || h.startsWith("http") && !h.startsWith(window.location.origin))) {
|
|
688
|
-
if (
|
|
689
|
-
history.pushState({}, "", h),
|
|
689
|
+
if (a.preventDefault(), h.startsWith("#")) {
|
|
690
|
+
history.pushState({}, "", h), n(h);
|
|
690
691
|
return;
|
|
691
692
|
}
|
|
692
|
-
|
|
693
|
+
i(h);
|
|
693
694
|
}
|
|
694
|
-
}), { add: t, navigate:
|
|
695
|
+
}), { add: t, navigate: i, back: c, location: d, setNotFound: r };
|
|
695
696
|
})();
|
|
696
697
|
async function G(o) {
|
|
697
698
|
try {
|
|
698
699
|
const t = document.getElementById("main");
|
|
699
|
-
t.classList.add("fade-out"), await new Promise((
|
|
700
|
-
const
|
|
701
|
-
t.innerHTML =
|
|
700
|
+
t.classList.add("fade-out"), await new Promise((i) => setTimeout(i, 200));
|
|
701
|
+
const e = await fetch(`/src/pages/${o}.html`).then((i) => i.text());
|
|
702
|
+
t.innerHTML = e, t.classList.remove("fade-out"), t.classList.add("fade-in"), window.location.hash ? setTimeout(() => {
|
|
702
703
|
try {
|
|
703
|
-
const
|
|
704
|
-
|
|
704
|
+
const i = document.querySelector(window.location.hash);
|
|
705
|
+
i && i.scrollIntoView({ behavior: "smooth" });
|
|
705
706
|
} catch {
|
|
706
707
|
}
|
|
707
708
|
}, 100) : t && t.scrollTo(0, 0), setTimeout(() => {
|
|
@@ -711,12 +712,12 @@ async function G(o) {
|
|
|
711
712
|
console.error("Page load failed:", t);
|
|
712
713
|
}
|
|
713
714
|
}
|
|
714
|
-
class
|
|
715
|
+
class j extends HTMLElement {
|
|
715
716
|
constructor() {
|
|
716
717
|
super();
|
|
717
718
|
v(this, "handleClick", () => {
|
|
718
|
-
const
|
|
719
|
-
|
|
719
|
+
const e = this.getAttribute("path");
|
|
720
|
+
e && C.navigate(e);
|
|
720
721
|
});
|
|
721
722
|
this.attachShadow({ mode: "open" });
|
|
722
723
|
}
|
|
@@ -729,42 +730,42 @@ class q extends HTMLElement {
|
|
|
729
730
|
disconnectedCallback() {
|
|
730
731
|
this.removeEventListener("click", this.handleClick);
|
|
731
732
|
}
|
|
732
|
-
attributeChangedCallback(
|
|
733
|
-
if (
|
|
734
|
-
if (
|
|
733
|
+
attributeChangedCallback(e, i, n) {
|
|
734
|
+
if (i !== n && this.hasRendered) {
|
|
735
|
+
if (e === "active")
|
|
735
736
|
return;
|
|
736
737
|
this.updateContent();
|
|
737
738
|
}
|
|
738
739
|
}
|
|
739
740
|
setupEventListeners() {
|
|
740
|
-
this.addEventListener("pointerdown", (
|
|
741
|
-
const
|
|
742
|
-
|
|
743
|
-
|
|
741
|
+
this.addEventListener("pointerdown", (e) => {
|
|
742
|
+
const i = document.createElement("span"), n = e.currentTarget, s = n.getBoundingClientRect(), r = Math.max(n.offsetWidth, n.offsetHeight), c = r / 2;
|
|
743
|
+
i.classList.add("ripple"), i.style.width = `${r}px`, i.style.height = `${r}px`, i.style.left = `${e.clientX - s.left - c}px`, i.style.top = `${e.clientY - s.top - c}px`, this.shadowRoot.appendChild(i), i.addEventListener("animationend", () => {
|
|
744
|
+
i.remove();
|
|
744
745
|
});
|
|
745
746
|
});
|
|
746
747
|
}
|
|
747
748
|
updateContent() {
|
|
748
|
-
const
|
|
749
|
-
if (
|
|
749
|
+
const e = this.getAttribute("icon"), i = this.getAttribute("avatar-src"), n = this.getAttribute("avatar-name"), s = this.getAttribute("label") || "", r = this.getAttribute("badge"), c = this.shadowRoot.querySelector(".badge");
|
|
750
|
+
if (r)
|
|
750
751
|
if (c)
|
|
751
|
-
c.textContent =
|
|
752
|
+
c.textContent = r;
|
|
752
753
|
else {
|
|
753
|
-
const
|
|
754
|
-
|
|
754
|
+
const l = document.createElement("span");
|
|
755
|
+
l.className = "badge", l.textContent = r, this.shadowRoot.appendChild(l);
|
|
755
756
|
}
|
|
756
757
|
else c && c.remove();
|
|
757
758
|
const d = this.shadowRoot.querySelector("slot[name='icon']");
|
|
758
759
|
if (d)
|
|
759
|
-
if (
|
|
760
|
-
let
|
|
761
|
-
|
|
760
|
+
if (i || n) {
|
|
761
|
+
let l = '<eui-avatar size="24"';
|
|
762
|
+
n && (l += ` name="${n}"`), l += ">", i && (l += `<img src="${i}" alt="${n || "Avatar"}" />`), l += "</eui-avatar>", d.innerHTML = l;
|
|
762
763
|
} else {
|
|
763
|
-
const
|
|
764
|
-
|
|
764
|
+
const l = d.querySelector("eui-icon");
|
|
765
|
+
e && l ? l.getAttribute("name") !== e && l.setAttribute("name", e) : e ? d.innerHTML = `<eui-icon width="24" height="24" name="${e}"></eui-icon>` : d.innerHTML = "";
|
|
765
766
|
}
|
|
766
|
-
const
|
|
767
|
-
|
|
767
|
+
const a = this.shadowRoot.querySelector(".label");
|
|
768
|
+
a && (a.textContent = s);
|
|
768
769
|
}
|
|
769
770
|
render() {
|
|
770
771
|
this.shadowRoot.innerHTML = `
|
|
@@ -875,8 +876,8 @@ class q extends HTMLElement {
|
|
|
875
876
|
`;
|
|
876
877
|
}
|
|
877
878
|
}
|
|
878
|
-
customElements.define("eui-nav-item",
|
|
879
|
-
class
|
|
879
|
+
customElements.define("eui-nav-item", j);
|
|
880
|
+
class q extends HTMLElement {
|
|
880
881
|
constructor() {
|
|
881
882
|
super(), this.attachShadow({ mode: "open" });
|
|
882
883
|
}
|
|
@@ -985,11 +986,11 @@ class j extends HTMLElement {
|
|
|
985
986
|
<a href="#content" id="skip_navigation_link">Skip To Content</a>
|
|
986
987
|
<div class="nav-items">
|
|
987
988
|
${this.navItems.map((t) => {
|
|
988
|
-
var
|
|
989
|
+
var n, s;
|
|
989
990
|
if (t.type === "divider")
|
|
990
991
|
return '<div style="height: 1px; background: var(--app-300); margin: 0.5rem 0;"></div>';
|
|
991
|
-
const
|
|
992
|
-
return `<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${
|
|
992
|
+
const e = ((n = t.avatar) == null ? void 0 : n.src) || "", i = ((s = t.avatar) == null ? void 0 : s.name) || "";
|
|
993
|
+
return `<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${e}" avatar-name="${i}" label="${t.label}"></eui-nav-item>`;
|
|
993
994
|
}).join("")}
|
|
994
995
|
</div>
|
|
995
996
|
</div>
|
|
@@ -1002,12 +1003,12 @@ class j extends HTMLElement {
|
|
|
1002
1003
|
return this._navItems || [];
|
|
1003
1004
|
}
|
|
1004
1005
|
updateActiveState(t) {
|
|
1005
|
-
t || (t = C.location()), t.startsWith("/") || (t = "/" + t), this.shadowRoot.querySelectorAll("eui-nav-item").forEach((
|
|
1006
|
-
|
|
1006
|
+
t || (t = C.location()), t.startsWith("/") || (t = "/" + t), this.shadowRoot.querySelectorAll("eui-nav-item").forEach((i) => {
|
|
1007
|
+
i.getAttribute("path") === t ? i.setAttribute("active", "") : i.removeAttribute("active");
|
|
1007
1008
|
});
|
|
1008
1009
|
}
|
|
1009
1010
|
}
|
|
1010
|
-
customElements.define("eui-app-nav",
|
|
1011
|
+
customElements.define("eui-app-nav", q);
|
|
1011
1012
|
class B extends HTMLElement {
|
|
1012
1013
|
static get observedAttributes() {
|
|
1013
1014
|
return ["type", "title", "subtitle", "img"];
|
|
@@ -1087,9 +1088,9 @@ class B extends HTMLElement {
|
|
|
1087
1088
|
connectedCallback() {
|
|
1088
1089
|
this.hd = this.shadowRoot.querySelector(".header"), this.hasAttribute("type") && this.hd.classList.add(this.getAttribute("type"));
|
|
1089
1090
|
}
|
|
1090
|
-
attributeChangedCallback(t,
|
|
1091
|
-
const
|
|
1092
|
-
t === "title" && (
|
|
1091
|
+
attributeChangedCallback(t, e, i) {
|
|
1092
|
+
const n = this.shadowRoot.querySelector("h1"), s = this.shadowRoot.querySelector("p"), r = this.shadowRoot.querySelector(".img");
|
|
1093
|
+
t === "title" && (n.textContent = i), t === "subtitle" && (s.textContent = i), t === "img" && (r.style.backgroundImage = i ? `url(${i})` : "");
|
|
1093
1094
|
}
|
|
1094
1095
|
}
|
|
1095
1096
|
customElements.define("eui-header", B);
|
|
@@ -1188,14 +1189,14 @@ class N extends HTMLElement {
|
|
|
1188
1189
|
}
|
|
1189
1190
|
toggle() {
|
|
1190
1191
|
this.selected = !this.selected, w();
|
|
1191
|
-
const t = this.selected,
|
|
1192
|
-
|
|
1192
|
+
const t = this.selected, e = this.dataset.setting;
|
|
1193
|
+
e && k.set(e, t);
|
|
1193
1194
|
}
|
|
1194
1195
|
updateFromAttribute() {
|
|
1195
1196
|
const t = this.hasAttribute("selected");
|
|
1196
1197
|
this.inputEl.checked = t, this.checkEl.classList.toggle("selected", t);
|
|
1197
1198
|
}
|
|
1198
|
-
attributeChangedCallback(t,
|
|
1199
|
+
attributeChangedCallback(t, e, i) {
|
|
1199
1200
|
t === "selected" && this.inputEl && this.updateFromAttribute();
|
|
1200
1201
|
}
|
|
1201
1202
|
get selected() {
|
|
@@ -1206,7 +1207,7 @@ class N extends HTMLElement {
|
|
|
1206
1207
|
}
|
|
1207
1208
|
}
|
|
1208
1209
|
customElements.define("eui-checkbox", N);
|
|
1209
|
-
class
|
|
1210
|
+
class E extends HTMLElement {
|
|
1210
1211
|
constructor() {
|
|
1211
1212
|
super(), this.attachShadow({ mode: "open" });
|
|
1212
1213
|
}
|
|
@@ -1214,7 +1215,7 @@ class A extends HTMLElement {
|
|
|
1214
1215
|
this.render();
|
|
1215
1216
|
}
|
|
1216
1217
|
render() {
|
|
1217
|
-
const t = this.getAttribute("href"),
|
|
1218
|
+
const t = this.getAttribute("href"), e = t ? "a" : "button";
|
|
1218
1219
|
this.shadowRoot.innerHTML = `
|
|
1219
1220
|
<style>
|
|
1220
1221
|
button, a {
|
|
@@ -1318,21 +1319,21 @@ class A extends HTMLElement {
|
|
|
1318
1319
|
}
|
|
1319
1320
|
|
|
1320
1321
|
</style>
|
|
1321
|
-
<${
|
|
1322
|
+
<${e}>
|
|
1322
1323
|
<slot></slot>
|
|
1323
|
-
</${
|
|
1324
|
+
</${e}>
|
|
1324
1325
|
`;
|
|
1325
|
-
const
|
|
1326
|
-
t &&
|
|
1327
|
-
const
|
|
1328
|
-
|
|
1329
|
-
|
|
1326
|
+
const i = this.shadowRoot.querySelector(e);
|
|
1327
|
+
t && i.setAttribute("href", t), this.hasAttribute("type") && i.classList.add(this.getAttribute("type")), this.hasAttribute("icon") && i.classList.add("icon"), this.hasAttribute("width") && (i.style.width = this.getAttribute("width") + "px"), this.hasAttribute("height") && (i.style.height = this.getAttribute("height") + "px"), this.hasAttribute("border-radius") && (i.style.borderRadius = this.getAttribute("border-radius") + "px"), i.addEventListener("pointerdown", (n) => {
|
|
1328
|
+
const s = document.createElement("span"), r = n.currentTarget, c = r.getBoundingClientRect(), d = Math.max(r.offsetWidth, r.offsetHeight), a = d / 2;
|
|
1329
|
+
s.classList.add("ripple"), s.style.width = `${d}px`, s.style.height = `${d}px`, s.style.left = `${n.clientX - c.left - a}px`, s.style.top = `${n.clientY - c.top - a}px`, i.appendChild(s), s.addEventListener("animationend", () => {
|
|
1330
|
+
s.remove();
|
|
1330
1331
|
});
|
|
1331
1332
|
});
|
|
1332
1333
|
}
|
|
1333
1334
|
}
|
|
1334
|
-
v(
|
|
1335
|
-
customElements.define("eui-button",
|
|
1335
|
+
v(E, "observedAttributes", ["type", "width", "height", "border-radius", "icon", "link", "href"]);
|
|
1336
|
+
customElements.define("eui-button", E);
|
|
1336
1337
|
class O extends HTMLElement {
|
|
1337
1338
|
static get observedAttributes() {
|
|
1338
1339
|
return ["type", "anchor"];
|
|
@@ -1407,28 +1408,28 @@ class O extends HTMLElement {
|
|
|
1407
1408
|
}
|
|
1408
1409
|
customElements.define("eui-heading", O);
|
|
1409
1410
|
function P(o) {
|
|
1410
|
-
const
|
|
1411
|
-
return
|
|
1411
|
+
const i = Date.now() - o, n = Math.floor(i / 1e3), s = Math.floor(n / 60), r = Math.floor(s / 60), c = Math.floor(r / 24), d = Math.floor(c / 30), a = Math.floor(d / 12);
|
|
1412
|
+
return a > 0 ? `${a}y` : d > 0 ? `${d}mo` : c > 0 ? `${c}d` : r > 0 ? `${r}h` : s > 0 ? `${s}m` : `${n}s`;
|
|
1412
1413
|
}
|
|
1413
1414
|
function V(o) {
|
|
1414
|
-
const
|
|
1415
|
-
return
|
|
1415
|
+
const i = Date.now() - o, n = Math.floor(i / 1e3), s = Math.floor(n / 60), r = Math.floor(s / 60), c = Math.floor(r / 24), d = Math.floor(c / 30), a = Math.floor(d / 12);
|
|
1416
|
+
return a > 0 ? `${a} year${a > 1 ? "s" : ""} ago` : d > 0 ? `${d} month${d > 1 ? "s" : ""} ago` : c > 0 ? `${c} day${c > 1 ? "s" : ""} ago` : r > 0 ? `${r} hour${r > 1 ? "s" : ""} ago` : s > 0 ? `${s} minute${s > 1 ? "s" : ""} ago` : `${n} second${n > 1 ? "s" : ""} ago`;
|
|
1416
1417
|
}
|
|
1417
|
-
function
|
|
1418
|
+
function D(o) {
|
|
1418
1419
|
return o.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/`/g, "`").replace(/'/g, "'");
|
|
1419
1420
|
}
|
|
1420
|
-
function
|
|
1421
|
+
function A(o) {
|
|
1421
1422
|
const t = document.createElement("input");
|
|
1422
1423
|
t.value = o, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t);
|
|
1423
1424
|
}
|
|
1424
1425
|
const Q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1425
1426
|
__proto__: null,
|
|
1426
|
-
copystr:
|
|
1427
|
+
copystr: A,
|
|
1427
1428
|
joinedAgo: V,
|
|
1428
|
-
sanitize:
|
|
1429
|
+
sanitize: D,
|
|
1429
1430
|
timeAgo: P
|
|
1430
1431
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1431
|
-
class
|
|
1432
|
+
class U extends HTMLElement {
|
|
1432
1433
|
static get observedAttributes() {
|
|
1433
1434
|
return ["copy", "id", "type", "language"];
|
|
1434
1435
|
}
|
|
@@ -1438,11 +1439,11 @@ class Z extends HTMLElement {
|
|
|
1438
1439
|
connectedCallback() {
|
|
1439
1440
|
this._isRendered || (this.render(), this._isRendered = !0);
|
|
1440
1441
|
}
|
|
1441
|
-
attributeChangedCallback(t,
|
|
1442
|
-
this._isRendered &&
|
|
1442
|
+
attributeChangedCallback(t, e, i) {
|
|
1443
|
+
this._isRendered && e !== i && this.render();
|
|
1443
1444
|
}
|
|
1444
1445
|
render() {
|
|
1445
|
-
const t = this.hasAttribute("copy"),
|
|
1446
|
+
const t = this.hasAttribute("copy"), e = this.getAttribute("language") || "text";
|
|
1446
1447
|
this.shadowRoot.innerHTML = `
|
|
1447
1448
|
<style>
|
|
1448
1449
|
:host {
|
|
@@ -1480,14 +1481,14 @@ class Z extends HTMLElement {
|
|
|
1480
1481
|
}
|
|
1481
1482
|
|
|
1482
1483
|
.token.comment { color: var(--app-700); font-style: italic; }
|
|
1483
|
-
.token.string { color:
|
|
1484
|
-
.token.number { color:
|
|
1485
|
-
.token.keyword { color:
|
|
1486
|
-
.token.function { color:
|
|
1487
|
-
.token.tag { color:
|
|
1488
|
-
.token.attr-name { color:
|
|
1489
|
-
.token.attr-value { color:
|
|
1490
|
-
.token.boolean { color:
|
|
1484
|
+
.token.string { color: #9ECE6A; }
|
|
1485
|
+
.token.number { color: #F97C5F; }
|
|
1486
|
+
.token.keyword { color: #7DCFFF; }
|
|
1487
|
+
.token.function { color: #7DCFFF; }
|
|
1488
|
+
.token.tag { color: #DE5971; }
|
|
1489
|
+
.token.attr-name { color: #BB9AF7; }
|
|
1490
|
+
.token.attr-value { color: #9ECE6A; }
|
|
1491
|
+
.token.boolean { color: #F97C5F; }
|
|
1491
1492
|
</style>
|
|
1492
1493
|
|
|
1493
1494
|
<eui-button class="copy" width="36" height="36" border-radius="100">
|
|
@@ -1496,34 +1497,47 @@ class Z extends HTMLElement {
|
|
|
1496
1497
|
|
|
1497
1498
|
<pre class="${t ? "g" : ""}"><code></code></pre>
|
|
1498
1499
|
`, this.copyBtn = this.shadowRoot.querySelector(".copy"), this.codeEl = this.shadowRoot.querySelector("code");
|
|
1499
|
-
const
|
|
1500
|
-
this.codeEl.innerHTML = this._highlight(
|
|
1500
|
+
const i = this._getFormattedText();
|
|
1501
|
+
this.codeEl.innerHTML = this._highlight(i, e), t ? this.copyBtn.addEventListener("click", this._boundCopy) : this.copyBtn.style.display = "none";
|
|
1501
1502
|
}
|
|
1502
1503
|
_getFormattedText() {
|
|
1503
|
-
let
|
|
1504
|
-
|
|
1505
|
-
const i =
|
|
1506
|
-
`),
|
|
1507
|
-
return i.map((
|
|
1504
|
+
let e = (this.querySelector("code") || this).innerHTML || "";
|
|
1505
|
+
e = this._unescapeHtml(e), e = e.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
|
|
1506
|
+
const i = e.split(`
|
|
1507
|
+
`), n = i.filter((r) => r.trim()).map((r) => r.match(/^\s*/)[0].length), s = n.length ? Math.min(...n) : 0;
|
|
1508
|
+
return i.map((r) => r.slice(s)).join(`
|
|
1508
1509
|
`);
|
|
1509
1510
|
}
|
|
1510
|
-
|
|
1511
|
-
|
|
1511
|
+
_unescapeHtml(t) {
|
|
1512
|
+
const e = document.createElement("textarea");
|
|
1513
|
+
return e.innerHTML = t, e.value;
|
|
1514
|
+
}
|
|
1515
|
+
_highlight(t, e) {
|
|
1516
|
+
t = t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
1517
|
+
const i = {};
|
|
1518
|
+
let n = 0;
|
|
1519
|
+
function s(r, c) {
|
|
1520
|
+
const d = `__TOKEN_${c}_${n++}__`;
|
|
1521
|
+
return i[d] = `<span class="token ${c}">${r}</span>`, d;
|
|
1522
|
+
}
|
|
1523
|
+
return ["javascript", "js", "json", "bash", "sh", "css"].includes(e) ? (t = t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g, (r) => s(r, "string")), e === "bash" || e === "sh" ? t = t.replace(/(#.*$)/gm, (r) => s(r, "comment")) : e === "css" ? t = t.replace(/(\/\*[\s\S]*?\*\/)/g, (r) => s(r, "comment")) : t = t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm, (r) => s(r, "comment"))) : ["html", "xml"].includes(e) && (t = t.replace(/(<!--[\s\S]*?-->)/g, (r) => s(r, "comment")), t = t.replace(/(<\/?[a-z0-9:-]+)/gi, (r) => s(r, "tag"))), e === "javascript" || e === "js" || e === "json" ? (t = t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(true|false|null|undefined)\b/g, '<span class="token boolean">$1</span>'), t = t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g, '<span class="token function">$1</span>')) : e === "bash" || e === "sh" ? (t = t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g, '<span class="token function">$1</span>'), t = t.replace(/(\s-+[a-zA-Z0-9-]+)/g, '<span class="token attr-name">$1</span>'), t = t.replace(/(\$[A-Z0-9_]+)/g, '<span class="token number">$1</span>')) : e === "html" || e === "xml" ? (t = t.replace(/\s([a-z0-9:-]+)=/gi, (r, c) => " " + s(c, "attr-name") + "="), t = t.replace(/(".*?")/g, (r) => s(r, "attr-value")), t = t.replace(/>/g, '<span class="token tag">></span>')) : e === "css" && (t = t.replace(/([a-z-]+)(?=:)/g, '<span class="token keyword">$1</span>')), Object.keys(i).reverse().forEach((r) => {
|
|
1524
|
+
t = t.replace(r, i[r]);
|
|
1525
|
+
}), t;
|
|
1512
1526
|
}
|
|
1513
1527
|
_onCopy() {
|
|
1514
|
-
|
|
1528
|
+
A(this._getFormattedText());
|
|
1515
1529
|
const t = this.copyBtn.querySelector("eui-icon");
|
|
1516
1530
|
if (t) {
|
|
1517
|
-
const
|
|
1518
|
-
t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name",
|
|
1531
|
+
const e = t.getAttribute("name");
|
|
1532
|
+
t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name", e), 2e3);
|
|
1519
1533
|
}
|
|
1520
1534
|
}
|
|
1521
1535
|
disconnectedCallback() {
|
|
1522
1536
|
this.copyBtn && this.copyBtn.removeEventListener("click", this._boundCopy);
|
|
1523
1537
|
}
|
|
1524
1538
|
}
|
|
1525
|
-
customElements.define("eui-code",
|
|
1526
|
-
class
|
|
1539
|
+
customElements.define("eui-code", U);
|
|
1540
|
+
class Z extends HTMLElement {
|
|
1527
1541
|
constructor() {
|
|
1528
1542
|
super(), this.attachShadow({ mode: "open" });
|
|
1529
1543
|
}
|
|
@@ -1533,7 +1547,7 @@ class D extends HTMLElement {
|
|
|
1533
1547
|
static get observedAttributes() {
|
|
1534
1548
|
return ["name"];
|
|
1535
1549
|
}
|
|
1536
|
-
attributeChangedCallback(t,
|
|
1550
|
+
attributeChangedCallback(t, e, i) {
|
|
1537
1551
|
t === "name" && (this.render(), this.setupEventListeners());
|
|
1538
1552
|
}
|
|
1539
1553
|
setupEventListeners() {
|
|
@@ -1639,7 +1653,7 @@ class D extends HTMLElement {
|
|
|
1639
1653
|
`;
|
|
1640
1654
|
}
|
|
1641
1655
|
}
|
|
1642
|
-
customElements.define("eui-app-titlebar",
|
|
1656
|
+
customElements.define("eui-app-titlebar", Z);
|
|
1643
1657
|
class X extends HTMLElement {
|
|
1644
1658
|
constructor() {
|
|
1645
1659
|
super(), this.attachShadow({ mode: "open" }), this._handleMouseDown = this._addRipple.bind(this);
|
|
@@ -1650,16 +1664,16 @@ class X extends HTMLElement {
|
|
|
1650
1664
|
static get observedAttributes() {
|
|
1651
1665
|
return ["elevated", "interactive", "ripple"];
|
|
1652
1666
|
}
|
|
1653
|
-
attributeChangedCallback(t,
|
|
1654
|
-
|
|
1667
|
+
attributeChangedCallback(t, e, i) {
|
|
1668
|
+
e !== i && t === "ripple" && this.setupEventListeners();
|
|
1655
1669
|
}
|
|
1656
1670
|
setupEventListeners() {
|
|
1657
1671
|
this.removeEventListener("mousedown", this._handleMouseDown), this.hasAttribute("ripple") && this.addEventListener("mousedown", this._handleMouseDown);
|
|
1658
1672
|
}
|
|
1659
1673
|
_addRipple(t) {
|
|
1660
|
-
const
|
|
1661
|
-
|
|
1662
|
-
|
|
1674
|
+
const e = this.getBoundingClientRect(), i = document.createElement("span"), n = Math.max(e.width, e.height), s = n / 2;
|
|
1675
|
+
i.style.width = i.style.height = `${n}px`, i.style.left = `${t.clientX - e.left - s}px`, i.style.top = `${t.clientY - e.top - s}px`, i.classList.add("ripple"), this.shadowRoot.querySelector(".surface").appendChild(i), i.addEventListener("animationend", () => {
|
|
1676
|
+
i.remove();
|
|
1663
1677
|
});
|
|
1664
1678
|
}
|
|
1665
1679
|
render() {
|
|
@@ -1731,10 +1745,10 @@ customElements.define("eui-surface", X);
|
|
|
1731
1745
|
typeof window < "u" && console.log("ErisUI loaded successfully");
|
|
1732
1746
|
export {
|
|
1733
1747
|
J as device,
|
|
1734
|
-
|
|
1748
|
+
K as haptics,
|
|
1735
1749
|
u as icons,
|
|
1736
1750
|
G as loadPage,
|
|
1737
1751
|
C as router,
|
|
1738
|
-
|
|
1752
|
+
Y as storage,
|
|
1739
1753
|
Q as utils
|
|
1740
1754
|
};
|