@grasco/profile-picture 0.1.8 → 0.2.0
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/angular.cjs +82 -82
- package/dist/angular.cjs.map +1 -1
- package/dist/angular.js +82 -82
- package/dist/angular.js.map +1 -1
- package/dist/index.cjs +51 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +51 -51
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +36 -36
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +36 -36
- package/dist/react.js.map +1 -1
- package/dist/standalone.standalone.js +84 -84
- package/dist/standalone.standalone.js.map +1 -1
- package/dist/svelte.cjs +82 -82
- package/dist/svelte.cjs.map +1 -1
- package/dist/svelte.js +82 -82
- package/dist/svelte.js.map +1 -1
- package/dist/vue.cjs +82 -82
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js +82 -82
- package/dist/vue.js.map +1 -1
- package/package.json +1 -1
package/dist/react.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Ae,{useRef,useCallback,useEffect}from'react';import {LitElement,nothing,html,render}from'lit';import {property,state
|
|
1
|
+
import Ae,{useRef,useCallback,useEffect}from'react';import {LitElement,nothing,html,render}from'lit';import {property,state}from'lit/decorators.js';import {styleMap}from'lit/directives/style-map.js';var Be=Object.defineProperty;var s=(r,n,e,t)=>{for(var o=void 0,i=r.length-1,p;i>=0;i--)(p=r[i])&&(o=(p(n,e,o))||o);return o&&Be(n,e,o),o};var te="grasco-profile-picture-styles",G=false,de=false;function le(){if(G||typeof document>"u")return;if(document.getElementById(te)){G=true;return}if(document.querySelector('link[href*="profile-picture"][href$="styles.css"]')){G=true;return}de||(de=true,Ge());}function Ge(){(typeof requestIdleCallback<"u"?requestIdleCallback:n=>setTimeout(n,1))(()=>Fe());}function Fe(){if(G||typeof document>"u")return;if(document.getElementById(te)){G=true;return}let r=Ne();if(!r)return;let n=document.createElement("link");n.id=te,n.rel="stylesheet",n.href=r,document.head.appendChild(n),G=true;}function Ne(){if(typeof window<"u"&&window.__GRASCO_PROFILE_PICTURE_CSS__)return window.__GRASCO_PROFILE_PICTURE_CSS__;try{let n=import.meta.url;if(n)return `${n.substring(0,n.lastIndexOf("/")+1)}dist/styles.css`}catch{}let r=document.currentScript;if(r?.src){let n=new URL(r.src);return `${n.href.substring(0,n.href.lastIndexOf("/")+1)}dist/styles.css`}return null}var F={"2xs":20,xs:24,sm:32,md:40,lg:48,xl:64,"2xl":80,"3xl":120},ce={online:"#30D158",away:"#FFD60A",busy:"#FF453A",offline:"#8E8E93",dnd:"#FF453A"},ue={none:"none",sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",glow:"0 0 20px 0 rgba(99, 102, 241, 0.3)"},$={size:"md",variant:"circle",loading:"lazy",placeholder:"shimmer",borderWidth:2,borderColor:"#ffffff",placeholderColor:"#f3f4f6",shadow:"sm"};var N={circle:"9999px",rounded:"12px",squircle:"30%",square:"0px"},I={max:4,direction:"ltr",overlap:.3,size:"md",tooltipDelay:300,dropdownMaxHeight:280,animated:true};function R(...r){return r.filter(Boolean).join(" ")}function re(r){return /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/.test(r)}function Y(r){let e=r.trim().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean);return e.length===0?"?":e.length===1?e[0].slice(0,1).toUpperCase():(e[0][0]+(e.at(-1)?.[0]??"")).toUpperCase()}function ne(r){return Math.round(r*.38)}function ge(r,n){let e;if(n){let o=Math.round(r*.31);e=Math.min(24,Math.max(14,o));}else {let o=Math.round(r*.22);e=Math.min(14,Math.max(8,o));}let t=Math.max(9,Math.round(e*.55));return {size:e,fontSize:t}}function fe(r,n){let e=Math.min(16,Math.max(8,Math.round(r*.2)));return Math.min(18,e+(n-1)*2)}function me(r,n){return typeof r=="string"?r:n&&r>n?`${n}+`:r.toString()}function he(r){return r.length===0?"transparent":r.length===1?r[0]:`conic-gradient(${r.map((e,t)=>{let o=t/r.length*360,i=(t+1)/r.length*360;return `${e} ${o}deg ${i}deg`}).join(", ")})`}function He(r){let n=0;for(let e=0;e<r.length;e++){let t=r.charCodeAt(e);n=(n<<5)-n+t,n&=n;}return Math.abs(n)}function be(r,n,e){let o=Math.max(0,Math.min(100,r))/100*360;return `conic-gradient(from 270deg, ${n} 0deg ${o}deg, ${e} ${o}deg 360deg)`}function K(r){let n=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)","linear-gradient(135deg, #d299c2 0%, #fef9d7 100%)","linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%)","linear-gradient(135deg, #cd9cf2 0%, #f6f3ff 100%)","linear-gradient(135deg, #fddb92 0%, #d1fdff 100%)"],e=He(r)%n.length;return n[e]}function xe(r){return typeof r=="number"?r:F[r]??F[I.size]}function oe(r,n,e){let t=e?n-1:n;if(r<=t)return {visible:r,hidden:0,showCounter:false};let o=t-1,i=r-o;return {visible:o,hidden:i,showCounter:true}}function X(r,n,e,t,o){let i=o??n*(1-e);return r*i}function ve(r,n,e){return e==="ltr"?n-r:r+1}function we(r,n,e,t){if(r===0)return 0;if(r===1)return n;let o=t??n*(1-e);return n+o*(r-1)}function ye(r){return r>99?"+99":`+${r}`}function Ce(r){return r<=80?"80":r<=120?"120":r<=240?"240":r<=480?"480":"960"}function Se(r){if(!(r&&re(r)))return "light";let n=r.replace("#","");n.length===3&&(n=n.split("").map(p=>p+p).join(""));let e=Number.parseInt(n.slice(0,2),16),t=Number.parseInt(n.slice(2,4),16),o=Number.parseInt(n.slice(4,6),16);return (.299*e+.587*t+.114*o)/255>.5?"light":"dark"}function ke(r,n,e,t,o){let i=r.endsWith("/")?r.slice(0,-1):r,p=`${n}_${e}_${t}.webp`;return `${i}/api/profile-picture/cdn/${p}?hostname=${o}`}function $e(r){return {circle:"np:rounded-full",rounded:"np:rounded-xl",squircle:"np:rounded-[30%]",square:"np:rounded-none"}[r]}function Ie(r,n){return {className:{1:"np:border",2:"np:border-2",3:"np:border-[3px]",4:"np:border-4",5:"np:border-[5px]",6:"np:border-[6px]",8:"np:border-8"}[r],style:{borderColor:n,borderStyle:"solid"}}}function Ee(r,n){return n?{className:"",style:{background:n}}:r?r.includes("gradient")?{className:"",style:{background:r}}:{className:"",style:{backgroundColor:r}}:{className:"",style:{backgroundColor:"#e7e7e7"}}}function ze(r){return {boxShadow:ue[r]}}var je={shimmer:`
|
|
2
2
|
@keyframes pp-shimmer {
|
|
3
3
|
0% { transform: translateX(-100%); }
|
|
4
4
|
100% { transform: translateX(100%); }
|
|
@@ -240,8 +240,8 @@ import Ae,{useRef,useCallback,useEffect}from'react';import {LitElement,nothing,h
|
|
|
240
240
|
transition: none !important;
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
|
-
`,
|
|
244
|
-
${We}`,
|
|
243
|
+
`,Te=`${Ve}
|
|
244
|
+
${We}`,De=`
|
|
245
245
|
@keyframes np-shimmer {
|
|
246
246
|
0% { background-position: -200% 0; }
|
|
247
247
|
100% { background-position: 200% 0; }
|
|
@@ -251,7 +251,7 @@ ${We}`,Te=`
|
|
|
251
251
|
background-size: 200% 100%;
|
|
252
252
|
animation: np-shimmer 1.5s infinite;
|
|
253
253
|
}
|
|
254
|
-
`;function
|
|
254
|
+
`;function Pe(r,n=.3){if(re(r)){let e=Number.parseInt(r.slice(1,3),16),t=Number.parseInt(r.slice(3,5),16),o=Number.parseInt(r.slice(5,7),16);return `0 0 20px 0 rgba(${e}, ${t}, ${o}, ${n})`}return `0 0 20px 0 ${r}`}var qe=`
|
|
255
255
|
@keyframes ppg-tooltip-in {
|
|
256
256
|
from {
|
|
257
257
|
opacity: 0;
|
|
@@ -748,22 +748,22 @@ ${We}`,Te=`
|
|
|
748
748
|
}
|
|
749
749
|
}
|
|
750
750
|
`,Re=`${qe}
|
|
751
|
-
${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src="";this.alt="";this.size=$.size;this.variant=$.variant;this.shadow=$.shadow;this.border=false;this.borderWidth=$.borderWidth;this.borderColor=$.borderColor;this.rotation=0;this.loading=$.loading;this.placeholder=$.placeholder;this.placeholderColor=$.placeholderColor;this.isLoaded=false;this.hasError=false;this.cdnLoadFailed=false;this.previousSrc="";this.RETRY_DELAY_MS=3e4;}static setCdnBaseUrl(e){a.cdnBaseUrl=e,a.instances.forEach(t=>{t.extCustomerId&&!t.cdnImageUrl&&(t.cdnLoadFailed=false,t.retryTimeoutId&&(clearTimeout(t.retryTimeoutId),t.retryTimeoutId=void 0),t.previousExtCustomerId||(t.previousExtCustomerId=t.extCustomerId),t.loadCdnImage());});}static getCdnBaseUrl(){return a.cdnBaseUrl}createRenderRoot(){return a.injectStylesOnce(),this}static injectStylesOnce(){if(a.stylesInjected||typeof document>"u")return;(typeof requestIdleCallback<"u"?requestIdleCallback:t=>setTimeout(t,1))(()=>{if(a.stylesInjected)return;let t=document.createElement("style");t.textContent=
|
|
752
|
-
${this.placeholder==="shimmer"?html`<style>${
|
|
751
|
+
${Je}`;var a=class a extends LitElement{constructor(){super(...arguments);this.src="";this.alt="";this.size=$.size;this.variant=$.variant;this.shadow=$.shadow;this.border=false;this.borderWidth=$.borderWidth;this.borderColor=$.borderColor;this.rotation=0;this.loading=$.loading;this.placeholder=$.placeholder;this.placeholderColor=$.placeholderColor;this.isLoaded=false;this.hasError=false;this.cdnLoadFailed=false;this.previousSrc="";this.RETRY_DELAY_MS=3e4;}static{this.stylesInjected=false;}static{this.cdnBaseUrl="";}static{this.instances=new Set;}static setCdnBaseUrl(e){a.cdnBaseUrl=e,a.instances.forEach(t=>{t.extCustomerId&&!t.cdnImageUrl&&(t.cdnLoadFailed=false,t.retryTimeoutId&&(clearTimeout(t.retryTimeoutId),t.retryTimeoutId=void 0),t.previousExtCustomerId||(t.previousExtCustomerId=t.extCustomerId),t.loadCdnImage());});}static getCdnBaseUrl(){return a.cdnBaseUrl}createRenderRoot(){return a.injectStylesOnce(),this}static injectStylesOnce(){if(a.stylesInjected||typeof document>"u")return;(typeof requestIdleCallback<"u"?requestIdleCallback:t=>setTimeout(t,1))(()=>{if(a.stylesInjected)return;let t=document.createElement("style");t.textContent=Te,document.head.appendChild(t),a.stylesInjected=true;});}get pixelSize(){let e=this.size;return typeof e=="number"?e:F[e]??F[$.size]}connectedCallback(){super.connectedCallback(),a.instances.add(this);}disconnectedCallback(){super.disconnectedCallback(),a.instances.delete(this),this.retryTimeoutId&&(clearTimeout(this.retryTimeoutId),this.retryTimeoutId=void 0);}firstUpdated(){this.extCustomerId&&a.cdnBaseUrl&&(this.previousExtCustomerId=this.extCustomerId,this.loadCdnImage());}updated(e){super.updated(e),this.extCustomerId&&a.cdnBaseUrl&&!this.cdnImageUrl&&(this.cdnLoadFailed||!this.previousExtCustomerId)&&(this.previousExtCustomerId||(this.previousExtCustomerId=this.extCustomerId),this.cdnLoadFailed=false,this.loadCdnImage());}willUpdate(e){e.has("src")&&this.src!==this.previousSrc&&(this.isLoaded=false,this.hasError=false,this.previousSrc=this.src),(e.has("extCustomerId")||e.has("size")||e.has("bgColor"))&&this.extCustomerId!==this.previousExtCustomerId&&(this.previousExtCustomerId=this.extCustomerId,this.cdnImageUrl=void 0,this.cdnLoadFailed=false,this.isLoaded=false,this.hasError=false,this.retryTimeoutId&&(clearTimeout(this.retryTimeoutId),this.retryTimeoutId=void 0),this.loadCdnImage());}handleLoad(){this.isLoaded=true,this.dispatchEvent(new CustomEvent("load",{bubbles:true,composed:true}));}handleError(){if(this.cdnImageUrl&&!this.cdnLoadFailed){this.cdnLoadFailed=true,this.cdnImageUrl=void 0,this.dispatchEvent(new CustomEvent("cdn-error",{bubbles:true,composed:true,detail:{error:"Image load failed"}})),this.retryTimeoutId&&clearTimeout(this.retryTimeoutId),this.retryTimeoutId=setTimeout(()=>{this.retryTimeoutId=void 0,this.extCustomerId&&a.cdnBaseUrl&&(this.cdnLoadFailed=false,this.hasError=false,this.isLoaded=false,this.loadCdnImage());},this.RETRY_DELAY_MS);return}this.hasError=true,this.isLoaded=true,this.dispatchEvent(new CustomEvent("error",{bubbles:true,composed:true}));}loadCdnImage(){if(!(this.extCustomerId&&a.cdnBaseUrl)){this.cdnLoadFailed=true;return}let e=Ce(this.pixelSize),t=Se(this.bgColor),o=typeof window<"u"?window.location.hostname:"localhost";this.cdnImageUrl=ke(a.cdnBaseUrl,this.extCustomerId,e,t,o);}getContainerStyles(){let e=Ee(this.bgColor,this.bgGradient),t=this.border?Ie(this.borderWidth,this.borderColor):null,o=ze(this.shadow),i={};if(this.glow){let d=this.glow.color??this.borderColor??"#6366f1";i={"--pp-glow-color":d,boxShadow:Pe(d,this.glow.intensity??.3)};}let p=this.interactive?.hoverable||this.interactive?.pressable;return {classes:R("pp-container",$e(this.variant),e.className,t?.className,p&&"pp-interactive",this.glow?.animate&&"pp-glow"),styles:{width:`${this.pixelSize}px`,height:`${this.pixelSize}px`,borderRadius:N[this.variant],...e.style,...t?.style,...o,...i,cursor:this.interactive?.cursor??(p?"pointer":"default"),transform:this.rotation?`rotate(${this.rotation}deg)`:void 0}}}renderPlaceholder(){if(this.isLoaded||this.placeholder==="none")return nothing;let e={shimmer:"pp-shimmer",pulse:"pp-pulse",skeleton:"pp-skeleton",blur:"",none:""}[this.placeholder];return html`
|
|
752
|
+
${this.placeholder==="shimmer"?html`<style>${De}</style>`:nothing}
|
|
753
753
|
<div
|
|
754
|
-
class=${
|
|
754
|
+
class=${R("np:absolute np:inset-0",e)}
|
|
755
755
|
style=${styleMap({backgroundColor:this.placeholderColor,borderRadius:"inherit"})}>
|
|
756
756
|
</div>
|
|
757
757
|
`}renderFallback(){if(this.fallback)return html`
|
|
758
758
|
<span
|
|
759
759
|
class="pp-fallback"
|
|
760
|
-
style=${styleMap({fontSize:`${
|
|
760
|
+
style=${styleMap({fontSize:`${ne(this.pixelSize)}px`})}>
|
|
761
761
|
${this.fallback}
|
|
762
762
|
</span>
|
|
763
763
|
`;if(this.alt){let t=K(this.alt);return html`
|
|
764
764
|
<div
|
|
765
765
|
class="pp-fallback np:absolute np:inset-0"
|
|
766
|
-
style=${styleMap({background:this.bgColor??t,fontSize:`${
|
|
766
|
+
style=${styleMap({background:this.bgColor??t,fontSize:`${ne(this.pixelSize)}px`})}>
|
|
767
767
|
${Y(this.alt)}
|
|
768
768
|
</div>
|
|
769
769
|
`}let e=this.pixelSize*.5;return html`
|
|
@@ -782,25 +782,25 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
782
782
|
decoding="async"
|
|
783
783
|
@load=${this.handleLoad}
|
|
784
784
|
@error=${this.handleError}
|
|
785
|
-
class=${
|
|
785
|
+
class=${R("pp-image",this.isLoaded?"pp-image-loaded":"pp-image-loading")}
|
|
786
786
|
draggable="false" />
|
|
787
|
-
`}renderRing(){if(!this.ring?.show)return nothing;let e=this.ring.width??3,t=this.ring.gap??3,o=e+t,i,p=this.ring.progress!==void 0;if(p){let d=this.ring.progress??0,g=this.ring.color??"#30D158",
|
|
787
|
+
`}renderRing(){if(!this.ring?.show)return nothing;let e=this.ring.width??3,t=this.ring.gap??3,o=e+t,i,p=this.ring.progress!==void 0;if(p){let d=this.ring.progress??0,g=this.ring.color??"#30D158",f=this.ring.emptyColor??"#8E8E93";i=be(d,g,f);}else this.ring.gradient&&this.ring.gradient.length>0?i=he(this.ring.gradient):i=this.ring.color??"linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888)";return html`
|
|
788
788
|
<div
|
|
789
|
-
class=${
|
|
790
|
-
style=${styleMap({inset:`-${o}px`,padding:`${e}px`,background:i,borderRadius:
|
|
789
|
+
class=${R("pp-ring",this.ring.animate&&!p&&"pp-ring-animated",p&&"pp-ring-progress")}
|
|
790
|
+
style=${styleMap({inset:`-${o}px`,padding:`${e}px`,background:i,borderRadius:N[this.variant]})}>
|
|
791
791
|
</div>
|
|
792
|
-
`}getCornerOffset(){let e=this.border?this.borderWidth:0,t=this.pixelSize*.08,i={circle:1,square:.5,rounded:.8,squircle:1.2}[this.variant];return Math.round(t*i-e*.5)}renderPresence(){if(!this.presence)return nothing;let e=this.presence.thickness??2,t=
|
|
792
|
+
`}getCornerOffset(){let e=this.border?this.borderWidth:0,t=this.pixelSize*.08,i={circle:1,square:.5,rounded:.8,squircle:1.2}[this.variant];return Math.round(t*i-e*.5)}renderPresence(){if(!this.presence)return nothing;let e=this.presence.thickness??2,t=fe(this.pixelSize,e),o=ce[this.presence.status],i=this.getCornerOffset();return html`
|
|
793
793
|
<div
|
|
794
|
-
class=${
|
|
794
|
+
class=${R("pp-presence",this.presence.animate&&"pp-presence-animated")}
|
|
795
795
|
style=${styleMap({width:`${t}px`,height:`${t}px`,backgroundColor:o,bottom:`${i}px`,right:`${i}px`,color:o})}
|
|
796
796
|
title=${this.presence.status}>
|
|
797
797
|
</div>
|
|
798
|
-
`}renderBadge(){if(!this.badge)return nothing;let e=this.badge.position??"bottom-right",t=this.badge.content!==void 0,o=this.badge.icon!==void 0,i=t||o,{size:p,fontSize:d}=
|
|
798
|
+
`}renderBadge(){if(!this.badge)return nothing;let e=this.badge.position??"bottom-right",t=this.badge.content!==void 0,o=this.badge.icon!==void 0,i=t||o,{size:p,fontSize:d}=ge(this.pixelSize,i),g=this.badge.bgColor??"#22c55e",f=this.badge.color??"#ffffff",m=this.badge.borderRadius??"9999px",h=t&&this.badge.content!==void 0?me(this.badge.content,this.badge.max):null,v=o?this.badge.icon:null,T=d*.9,c=`${-this.getCornerOffset()}px`,L={"top-left":{top:c,left:c},"top-center":{top:c,left:"50%",transform:"translateX(-50%)"},"top-right":{top:c,right:c},"bottom-left":{bottom:c,left:c},"bottom-center":{bottom:c,left:"50%",transform:"translateX(-50%)"},"bottom-right":{bottom:c,right:c}};return html`
|
|
799
799
|
<div
|
|
800
|
-
class=${
|
|
801
|
-
style=${styleMap({width:i?"auto":`${p}px`,minWidth:`${p}px`,height:`${p}px`,padding:i?"0 6px":"0",fontSize:`${d}px`,backgroundColor:g,color:
|
|
800
|
+
class=${R("pp-badge",this.badge.pulse&&"pp-badge-pulse",this.badge.glow&&"pp-badge-glow",o&&"pp-badge-with-icon")}
|
|
801
|
+
style=${styleMap({width:i?"auto":`${p}px`,minWidth:`${p}px`,height:`${p}px`,padding:i?"0 6px":"0",fontSize:`${d}px`,backgroundColor:g,color:f,borderRadius:m,"--pp-badge-glow-color":g,gap:o&&t?"4px":"0",...L[e]})}>
|
|
802
802
|
${v?html`<span class="pp-badge-icon" style=${styleMap({fontSize:`${T}px`})}>${v}</span>`:nothing}
|
|
803
|
-
${
|
|
803
|
+
${h??nothing}
|
|
804
804
|
</div>
|
|
805
805
|
`}render(){let e=this.getContainerStyles(),t=this.interactive?.focusable||this.interactive?.pressable?0:void 0;return html`
|
|
806
806
|
<div
|
|
@@ -817,7 +817,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
817
817
|
<!-- Inner container for image clipping -->
|
|
818
818
|
<div
|
|
819
819
|
class="pp-inner"
|
|
820
|
-
style=${styleMap({borderRadius:
|
|
820
|
+
style=${styleMap({borderRadius:N[this.variant]})}>
|
|
821
821
|
<!-- Placeholder -->
|
|
822
822
|
${this.renderPlaceholder()}
|
|
823
823
|
|
|
@@ -831,7 +831,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
831
831
|
<!-- Presence Indicator -->
|
|
832
832
|
${this.renderPresence()}
|
|
833
833
|
</div>
|
|
834
|
-
`}};
|
|
834
|
+
`}};s([property({type:String})],a.prototype,"src"),s([property({type:String})],a.prototype,"alt"),s([property({type:String,attribute:"ext-customer-id"})],a.prototype,"extCustomerId"),s([property({type:String})],a.prototype,"size"),s([property({type:String})],a.prototype,"variant"),s([property({type:String})],a.prototype,"shadow"),s([property({type:Boolean})],a.prototype,"border"),s([property({type:Number,attribute:"border-width"})],a.prototype,"borderWidth"),s([property({type:String,attribute:"border-color"})],a.prototype,"borderColor"),s([property({type:Number})],a.prototype,"rotation"),s([property({type:String,attribute:"bg-color"})],a.prototype,"bgColor"),s([property({type:String,attribute:"bg-gradient"})],a.prototype,"bgGradient"),s([property({type:Object,attribute:"ring",converter:{fromAttribute:e=>{if(e)try{return JSON.parse(e)}catch{return}},toAttribute:e=>e?JSON.stringify(e):null}})],a.prototype,"ring"),s([property({type:Object,attribute:"presence",converter:{fromAttribute:e=>{if(e)try{return JSON.parse(e)}catch{return}},toAttribute:e=>e?JSON.stringify(e):null}})],a.prototype,"presence"),s([property({type:Object,attribute:"glow",converter:{fromAttribute:e=>{if(e)try{return JSON.parse(e)}catch{return}},toAttribute:e=>e?JSON.stringify(e):null}})],a.prototype,"glow"),s([property({type:Object,attribute:"badge",converter:{fromAttribute:e=>{if(e)try{return JSON.parse(e)}catch{return}},toAttribute:e=>e?JSON.stringify(e):null}})],a.prototype,"badge"),s([property({type:String})],a.prototype,"loading"),s([property({type:String})],a.prototype,"placeholder"),s([property({type:String,attribute:"placeholder-color"})],a.prototype,"placeholderColor"),s([property({type:String})],a.prototype,"fallback"),s([property({type:Object,attribute:"interactive",converter:{fromAttribute:e=>{if(e)try{return JSON.parse(e)}catch{return}},toAttribute:e=>e?JSON.stringify(e):null}})],a.prototype,"interactive"),s([state()],a.prototype,"isLoaded"),s([state()],a.prototype,"hasError"),s([state()],a.prototype,"cdnImageUrl"),s([state()],a.prototype,"cdnLoadFailed");var H=a;customElements.get("profile-picture")||customElements.define("profile-picture",H);var se=false;function Xe(){if(se||typeof document>"u")return;(typeof requestIdleCallback<"u"?requestIdleCallback:n=>setTimeout(n,1))(()=>{if(se)return;let n=document.createElement("style");n.textContent=Re,document.head.appendChild(n),se=true;});}var b=class extends LitElement{constructor(){super(...arguments);this.max=I.max;this.direction=I.direction;this.overlap=I.overlap;this.size=I.size;this.showAddButton=false;this.addButtonLabel="Add user";this.animated=I.animated;this.rotationAmount=0;this.users=[];this.dropdownOpen=false;this.tooltipData=null;this.tooltipTimeout=null;this.slotObserver=null;this.portalContainer=null;this.counterRef=null;this.handleBackdropClick=()=>{this.dropdownOpen=false,this.destroyPortal();};}createRenderRoot(){return Xe(),this}get pixelSize(){return xe(this.size)}get tooltipEnabled(){return this.tooltip?.enabled!==false}get tooltipPosition(){return this.tooltip?.position??"top"}get tooltipDelay(){return this.tooltip?.delay??I.tooltipDelay}get dropdownMaxHeight(){return this.dropdown?.maxHeight??I.dropdownMaxHeight}get showPresence(){return this.dropdown?.showPresence!==false}get dropdownPosition(){return this.dropdown?.position??"bottom"}connectedCallback(){super.connectedCallback(),this.updateUsers(),this.setupSlotObserver();}disconnectedCallback(){super.disconnectedCallback(),this.slotObserver?.disconnect(),this.clearTooltipTimeout(),this.destroyPortal();}setupSlotObserver(){this.slotObserver=new MutationObserver(()=>{this.updateUsers();}),this.slotObserver.observe(this,{childList:true,subtree:true,attributes:true,attributeFilter:["src","alt","ext-customer-id","data-user-id","data-status","variant","shadow","border","border-width","border-color","bg-color","bg-gradient"]});}updateUsers(){let e=Array.from(this.children).filter(t=>t.tagName.toLowerCase()==="profile-picture"&&t.getAttribute("slot")!=="internal");this.users=e.map((t,o)=>{let i=(g,f)=>{let m=f??g,h=t[g];return h!=null&&h!==""?String(h):t.getAttribute(m)??void 0},p=i("borderWidth","border-width"),d=p?Number.parseInt(String(p),10):void 0;return {id:i("dataUserId","data-user-id"),name:i("alt")??`User ${o+1}`,src:i("src"),extCustomerId:i("extCustomerId","ext-customer-id"),status:i("dataStatus","data-status"),element:t,index:o,variant:i("variant"),shadow:i("shadow"),border:!!(t.border??t.hasAttribute("border")),borderWidth:d,borderColor:i("borderColor","border-color"),bgColor:i("bgColor","bg-color"),bgGradient:i("bgGradient","bg-gradient")}});for(let t of this.users)t.element&&(t.element.style.display="none");}createPortal(){this.portalContainer||(this.portalContainer=document.createElement("div"),this.portalContainer.className="ppg-portal",this.portalContainer.style.cssText="position: fixed; z-index: 99999; pointer-events: none;",document.body.appendChild(this.portalContainer),document.body.style.overflow="hidden");}destroyPortal(){this.portalContainer&&(render(nothing,this.portalContainer),this.portalContainer.remove(),this.portalContainer=null,document.body.style.overflow="");}updatePortalContent(e){if(!(this.portalContainer&&this.counterRef))return;let t=this.counterRef.getBoundingClientRect(),o=10,i=280,p=Math.min(this.dropdownMaxHeight+60,e.length*56+60),d=window.innerWidth,g=window.innerHeight;if(d<480){let y=html`
|
|
835
835
|
<div
|
|
836
836
|
class="ppg-backdrop ppg-backdrop-visible"
|
|
837
837
|
style="pointer-events: auto; background: rgba(0,0,0,0.5);"
|
|
@@ -855,7 +855,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
855
855
|
${e.map(D=>this.renderDropdownItem(D))}
|
|
856
856
|
</div>
|
|
857
857
|
</div>
|
|
858
|
-
`;render(y,this.portalContainer);return}let
|
|
858
|
+
`;render(y,this.portalContainer);return}let m=g-t.bottom-o,h=t.top-o,v=d-t.left,T=t.right,x=this.dropdownPosition;x==="bottom"&&m<p&&h>m?x="top":x==="top"&&h<p&&m>h&&(x="bottom");let c;v>=i?c=t.left:T>=i?c=t.right-i:c=(d-i)/2,c=Math.max(8,Math.min(c,d-i-8));let L=x==="bottom"?t.bottom+o:void 0,U=x==="top"?g-t.top+o:void 0,j=html`
|
|
859
859
|
<div
|
|
860
860
|
class="ppg-backdrop"
|
|
861
861
|
style="pointer-events: auto;"
|
|
@@ -864,7 +864,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
864
864
|
></div>
|
|
865
865
|
<div
|
|
866
866
|
class="ppg-dropdown ppg-dropdown-portal"
|
|
867
|
-
style=${styleMap({position:"fixed",pointerEvents:"auto",top:
|
|
867
|
+
style=${styleMap({position:"fixed",pointerEvents:"auto",top:L!==void 0?`${L}px`:"auto",bottom:U!==void 0?`${U}px`:"auto",left:`${c}px`,width:`${i}px`})}
|
|
868
868
|
data-position=${x}
|
|
869
869
|
role="menu"
|
|
870
870
|
aria-label="Hidden users"
|
|
@@ -879,7 +879,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
879
879
|
${e.map(y=>this.renderDropdownItem(y))}
|
|
880
880
|
</div>
|
|
881
881
|
</div>
|
|
882
|
-
`;render(j,this.portalContainer);}handleAvatarClick(e){this.dispatchEvent(new CustomEvent("avatar-click",{detail:{user:e},bubbles:true,composed:true}));}handleAvatarHover(e,t){if(!this.tooltipEnabled)return;this.clearTooltipTimeout();let o=t.currentTarget;this.tooltipTimeout=window.setTimeout(()=>{this.tooltipData={user:e,rect:o.getBoundingClientRect()};},this.tooltipDelay),this.dispatchEvent(new CustomEvent("avatar-hover",{detail:{user:e},bubbles:true,composed:true}));}handleAvatarLeave(){this.clearTooltipTimeout(),this.tooltipData=null;}clearTooltipTimeout(){this.tooltipTimeout&&(window.clearTimeout(this.tooltipTimeout),this.tooltipTimeout=null);}handleCounterClick(e){this.dropdownOpen=!this.dropdownOpen,this.dropdownOpen?(this.createPortal(),this.updatePortalContent(e)):this.destroyPortal(),this.dispatchEvent(new CustomEvent("counter-click",{detail:{hiddenUsers:e,open:this.dropdownOpen},bubbles:true,composed:true}));}handleDropdownItemClick(e){this.dropdownOpen=false,this.destroyPortal(),this.dispatchEvent(new CustomEvent("dropdown-item-click",{detail:{user:e},bubbles:true,composed:true}));}handleAddClick(){this.dispatchEvent(new CustomEvent("add-click",{bubbles:true,composed:true}));}handleKeyDown(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),t());}renderAvatar(e,t,o){let i=X(t,this.pixelSize,this.overlap,this.direction,this.spacing),p=
|
|
882
|
+
`;render(j,this.portalContainer);}handleAvatarClick(e){this.dispatchEvent(new CustomEvent("avatar-click",{detail:{user:e},bubbles:true,composed:true}));}handleAvatarHover(e,t){if(!this.tooltipEnabled)return;this.clearTooltipTimeout();let o=t.currentTarget;this.tooltipTimeout=window.setTimeout(()=>{this.tooltipData={user:e,rect:o.getBoundingClientRect()};},this.tooltipDelay),this.dispatchEvent(new CustomEvent("avatar-hover",{detail:{user:e},bubbles:true,composed:true}));}handleAvatarLeave(){this.clearTooltipTimeout(),this.tooltipData=null;}clearTooltipTimeout(){this.tooltipTimeout&&(window.clearTimeout(this.tooltipTimeout),this.tooltipTimeout=null);}handleCounterClick(e){this.dropdownOpen=!this.dropdownOpen,this.dropdownOpen?(this.createPortal(),this.updatePortalContent(e)):this.destroyPortal(),this.dispatchEvent(new CustomEvent("counter-click",{detail:{hiddenUsers:e,open:this.dropdownOpen},bubbles:true,composed:true}));}handleDropdownItemClick(e){this.dropdownOpen=false,this.destroyPortal(),this.dispatchEvent(new CustomEvent("dropdown-item-click",{detail:{user:e},bubbles:true,composed:true}));}handleAddClick(){this.dispatchEvent(new CustomEvent("add-click",{bubbles:true,composed:true}));}handleKeyDown(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),t());}renderAvatar(e,t,o){let i=X(t,this.pixelSize,this.overlap,this.direction,this.spacing),p=ve(t,o,this.direction),d=e.variant??"circle",g=e.shadow??"none",f=this.rotationAmount?t%2===0?-this.rotationAmount:this.rotationAmount:0;return html`
|
|
883
883
|
<div
|
|
884
884
|
class="ppg-avatar-wrapper"
|
|
885
885
|
style=${styleMap({left:`${i}px`,zIndex:String(p),width:`${this.pixelSize}px`,height:`${this.pixelSize}px`})}
|
|
@@ -887,11 +887,11 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
887
887
|
role="button"
|
|
888
888
|
aria-label=${e.name}
|
|
889
889
|
@click=${()=>this.handleAvatarClick(e)}
|
|
890
|
-
@mouseenter=${
|
|
890
|
+
@mouseenter=${m=>this.handleAvatarHover(e,m)}
|
|
891
891
|
@mouseleave=${this.handleAvatarLeave}
|
|
892
|
-
@keydown=${
|
|
892
|
+
@keydown=${m=>this.handleKeyDown(m,()=>this.handleAvatarClick(e))}
|
|
893
893
|
>
|
|
894
|
-
${this.renderProfilePicture(e,d,g,
|
|
894
|
+
${this.renderProfilePicture(e,d,g,f)}
|
|
895
895
|
</div>
|
|
896
896
|
`}renderProfilePicture(e,t,o,i){return html`
|
|
897
897
|
<profile-picture
|
|
@@ -919,7 +919,7 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
919
919
|
aria-haspopup="true"
|
|
920
920
|
@click=${()=>this.handleCounterClick(o)}
|
|
921
921
|
>
|
|
922
|
-
${
|
|
922
|
+
${ye(e)}
|
|
923
923
|
</button>
|
|
924
924
|
`}renderAddButton(e){let t=Math.round(this.pixelSize*.4);return html`
|
|
925
925
|
<button
|
|
@@ -943,10 +943,10 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
943
943
|
<line x1="5" y1="12" x2="19" y2="12"></line>
|
|
944
944
|
</svg>
|
|
945
945
|
</button>
|
|
946
|
-
`}renderTooltip(){if(!this.tooltipData)return nothing;let{user:e,rect:t}=this.tooltipData,o=8,i=this.getBoundingClientRect(),p=t.left-i.left+t.width/2,d=t.top-i.top,g=t.bottom-i.top,
|
|
946
|
+
`}renderTooltip(){if(!this.tooltipData)return nothing;let{user:e,rect:t}=this.tooltipData,o=8,i=this.getBoundingClientRect(),p=t.left-i.left+t.width/2,d=t.top-i.top,g=t.bottom-i.top,f=this.tooltipPosition==="top";return html`
|
|
947
947
|
<div
|
|
948
948
|
class="ppg-tooltip"
|
|
949
|
-
style=${styleMap({top:
|
|
949
|
+
style=${styleMap({top:f?"auto":`${g+o}px`,bottom:f?`${i.height-d+o}px`:"auto",left:`${p}px`})}
|
|
950
950
|
data-position=${this.tooltipPosition}
|
|
951
951
|
role="tooltip"
|
|
952
952
|
>
|
|
@@ -987,9 +987,9 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
987
987
|
`:nothing}
|
|
988
988
|
</div>
|
|
989
989
|
</div>
|
|
990
|
-
`}formatStatus(e){return {online:"Online",away:"Away",busy:"Busy",offline:"Offline",dnd:"Do not disturb"}[e]??e}updated(e){super.updated(e);let t=this.querySelector(".ppg-counter");if(t&&(this.counterRef=t),this.dropdownOpen&&this.portalContainer){let{visible:o}=
|
|
990
|
+
`}formatStatus(e){return {online:"Online",away:"Away",busy:"Busy",offline:"Offline",dnd:"Do not disturb"}[e]??e}updated(e){super.updated(e);let t=this.querySelector(".ppg-counter");if(t&&(this.counterRef=t),this.dropdownOpen&&this.portalContainer){let{visible:o}=oe(this.users.length,this.max,this.showAddButton),i=this.users.slice(o);this.updatePortalContent(i);}}render(){let{visible:e,hidden:t,showCounter:o}=oe(this.users.length,this.max,this.showAddButton),i=this.direction==="ltr"?this.users.slice(0,e):this.users.slice(0,e).reverse(),p=this.users.slice(e),d=e;o&&d++,this.showAddButton&&d++;let g=we(d,this.pixelSize,this.overlap,this.spacing),f=o?X(e,this.pixelSize,this.overlap,this.direction,this.spacing):0,m=X(e+(o?1:0),this.pixelSize,this.overlap,this.direction,this.spacing);return html`
|
|
991
991
|
<div
|
|
992
|
-
class=${
|
|
992
|
+
class=${R("ppg-container",this.animated&&"ppg-animated")}
|
|
993
993
|
style=${styleMap({width:`${g}px`,height:`${this.pixelSize}px`})}
|
|
994
994
|
role="group"
|
|
995
995
|
aria-label="User avatars"
|
|
@@ -998,16 +998,16 @@ ${Je}`;var a=class extends LitElement{constructor(){super(...arguments);this.src
|
|
|
998
998
|
<slot style="display: none;"></slot>
|
|
999
999
|
|
|
1000
1000
|
<!-- Visible avatars -->
|
|
1001
|
-
${i.map((
|
|
1001
|
+
${i.map((h,v)=>this.renderAvatar(h,v,e))}
|
|
1002
1002
|
|
|
1003
1003
|
<!-- Counter -->
|
|
1004
|
-
${o?this.renderCounter(t,
|
|
1004
|
+
${o?this.renderCounter(t,f,p):nothing}
|
|
1005
1005
|
|
|
1006
1006
|
<!-- Add button -->
|
|
1007
|
-
${this.showAddButton?this.renderAddButton(
|
|
1007
|
+
${this.showAddButton?this.renderAddButton(m):nothing}
|
|
1008
1008
|
|
|
1009
1009
|
<!-- Tooltip -->
|
|
1010
1010
|
${this.renderTooltip()}
|
|
1011
1011
|
</div>
|
|
1012
|
-
`}};s([property({type:Number})],
|
|
1012
|
+
`}};s([property({type:Number})],b.prototype,"max"),s([property({type:String})],b.prototype,"direction"),s([property({type:Number})],b.prototype,"overlap"),s([property({type:String})],b.prototype,"size"),s([property({type:Number})],b.prototype,"spacing"),s([property({type:Object})],b.prototype,"tooltip"),s([property({type:Object})],b.prototype,"dropdown"),s([property({type:Boolean,attribute:"show-add-button"})],b.prototype,"showAddButton"),s([property({type:String,attribute:"add-button-label"})],b.prototype,"addButtonLabel"),s([property({type:Boolean})],b.prototype,"animated"),s([property({type:Number,attribute:"rotation-amount"})],b.prototype,"rotationAmount"),s([state()],b.prototype,"users"),s([state()],b.prototype,"dropdownOpen"),s([state()],b.prototype,"tooltipData");customElements.get("profile-picture-group")||customElements.define("profile-picture-group",b);var Ue=Ae.forwardRef(({max:r,direction:n,overlap:e,size:t,spacing:o,tooltip:i,dropdown:p,showAddButton:d,addButtonLabel:g,animated:f,rotationAmount:m,onAvatarClick:h,onAvatarHover:v,onCounterClick:T,onDropdownItemClick:x,onAddClick:c,className:L,style:U,children:j},y)=>{let D=useRef(null),M=useCallback(l=>{h?.(l.detail.user);},[h]),B=useCallback(l=>{v?.(l.detail.user);},[v]),O=useCallback(l=>{let k=l;T?.(k.detail.hiddenUsers,k.detail.open);},[T]),V=useCallback(l=>{x?.(l.detail.user);},[x]),W=useCallback(()=>{c?.();},[c]);return useEffect(()=>{let l=D.current;if(l)return l.addEventListener("avatar-click",M),l.addEventListener("avatar-hover",B),l.addEventListener("counter-click",O),l.addEventListener("dropdown-item-click",V),l.addEventListener("add-click",W),()=>{l.removeEventListener("avatar-click",M),l.removeEventListener("avatar-hover",B),l.removeEventListener("counter-click",O),l.removeEventListener("dropdown-item-click",V),l.removeEventListener("add-click",W);}},[M,B,O,V,W]),useEffect(()=>{typeof y=="function"?y(D.current):y&&(y.current=D.current);},[y]),Ae.createElement("profile-picture-group",{ref:D,max:r,direction:n,overlap:e,size:t,spacing:o,tooltip:i?JSON.stringify(i):void 0,dropdown:p?JSON.stringify(p):void 0,"show-add-button":d||void 0,"add-button-label":g,animated:f,"rotation-amount":m,class:L,style:U},j)});Ue.displayName="ProfilePictureGroup";function Rt(r){H.setCdnBaseUrl(r);}function At(){return H.getCdnBaseUrl()}function et({src:r,alt:n,extCustomerId:e,size:t,variant:o,shadow:i,border:p,borderWidth:d,borderColor:g,rotation:f,bgColor:m,bgGradient:h,glow:v,ring:T,presence:x,badge:c,loading:L,placeholder:U,placeholderColor:j,fallback:y,interactive:D,onLoad:M,onError:B,onCdnError:O,className:V,style:W,ref:l}){let k=useRef(null),Q=useCallback(()=>{M?.();},[M]),_=useCallback(()=>{B?.();},[B]),ee=useCallback(P=>{O?.(P.detail);},[O]);return useEffect(()=>{let P=k.current;if(P)return P.addEventListener("load",Q),P.addEventListener("error",_),P.addEventListener("cdn-error",ee),()=>{P.removeEventListener("load",Q),P.removeEventListener("error",_),P.removeEventListener("cdn-error",ee);}},[Q,_,ee]),useEffect(()=>{typeof l=="function"?l(k.current):l&&(l.current=k.current);},[l]),Ae.createElement("profile-picture",{ref:k,src:r||void 0,alt:n,"ext-customer-id":e,size:t,variant:o,shadow:i,border:p||void 0,"border-width":d,"border-color":g,rotation:f,"bg-color":m,"bg-gradient":h,glow:v?JSON.stringify(v):void 0,ring:T?JSON.stringify(T):void 0,presence:x?JSON.stringify(x):void 0,badge:c?JSON.stringify(c):void 0,loading:L,placeholder:U,"placeholder-color":j,fallback:y,interactive:D?JSON.stringify(D):void 0,class:V,style:W})}et.displayName="ProfilePicture";le();export{et as ProfilePicture,Ue as ProfilePictureGroup,At as getCdnBaseUrl,Rt as setCdnBaseUrl};//# sourceMappingURL=react.js.map
|
|
1013
1013
|
//# sourceMappingURL=react.js.map
|