PageSourceSearch

https://zhenchengoffer.com/assets/MascotEagle-DaR3bjA1.js

js zhenchengoffer.com collected 2026-10-02 01:53:09 UTC 4,024 bytes, 59 lines download raw bytes

1import{j as a}from"./react-BGHvZxdX.js";const l=({state:t="idle",size:s=120,message:n,style:r,className:o,showBubble:i=!0,theme:e="light"})=>{const c=()=>{switch(t){case"coffee":return"/assets/mascot/mascot_coffee.png";case"loading":return"/assets/mascot/mascot_loading.png";case"analyzing":return"/assets/mascot/mascot_analyzing.png";case"tutorial":return"/assets/mascot/mascot_analyzing.png";case"searching":return"/assets/mascot/mascot_searching_nobg.png";case"delivering":return"/assets/mascot/mascot_delivering.png";case"success":return"/assets/mascot/mascot_success.png";case"hero":return"/assets/mascot/mascot_hero.png";case"404":return"/assets/mascot/mascot_404.png";default:return"/assets/mascot/mascot_idle.png"}};return a.jsxs("div",{className:`mascot-container ${o||""}`,style:{display:"inline-flex",flexDirection:"column",alignItems:"center",position:"relative",...r},children:[i&&n&&a.jsxs("div",{className:"mascot-bubble",style:{position:"absolute",bottom:"100%",marginBottom:12,background:"rgba(255, 255, 255, 0.9)",backdropFilter:"blur(10px)",border:"1px solid rgba(0, 0, 0, 0.06)",borderRadius:"14px 14px 14px 2px",padding:"6px 10px",fontSize:11,color:"#1d1d1f",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.08)",maxWidth:200,zIndex:10,animation:"bubbleIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)"},children:[n,a.jsx("div",{style:{position:"absolute",bottom:-6,left:2,width:0,height:0,borderLeft:"8px solid rgba(255, 255, 255, 0.9)",borderRight:"8px solid transparent",borderTop:"8px solid transparent"}})]}),a.jsx("div",{className:`mascot-body mascot-state-${t}`,style:{width:t==="hero"?s*1.5:s,height:s,backgroundImage:`url(${c()})`,backgroundSize:"contain",backgroundRepeat:"no-repeat",backgroundPosition:"center",transition:"all 0.3s ease",mixBlendMode:e==="dark"?"screen":"multiply",filter:e==="dark"?"invert(1) brightness(1.2) contrast(1.1)":"none",opacity:e==="dark"?.9:1}}),a.jsx("style",{children:`
2        .mascot-state-idle {
3          animation: mascotBreathe 3s infinite ease-in-out;
4        }
5        .mascot-state-coffee {
6          animation: mascotBreathe 4s infinite ease-in-out;
7        }
8        .mascot-state-loading {
9          animation: mascotThink 2.5s infinite ease-in-out;
10        }
11        .mascot-state-analyzing,
12        .mascot-state-tutorial {
13          animation: mascotScan 2s infinite ease-in-out;
14        }
15        .mascot-state-searching {
16          animation: mascotType 1.2s infinite linear;
17        }
18        .mascot-state-delivering {
19          animation: mascotPress 1.5s infinite ease-in-out;
20        }
21        .mascot-state-success {
22          animation: mascotCelebrate 0.6s ease;
23        }
24
25        @keyframes mascotBreathe {
26          0%, 100% { transform: translateY(0); }
27          50% { transform: translateY(-6px); }
28        }
29        @keyframes mascotThink {
30          0%, 100% { transform: translateY(0) scale(1); }
31          50% { transform: translateY(-4px) scale(1.02); }
32        }
33        @keyframes mascotScan {
34          0%, 100% { transform: translateX(0); }
35          30% { transform: translateX(3px); }
36          70% { transform: translateX(-3px); }
37        }
38        @keyframes mascotType {
39          0%, 100% { transform: translate(0, 0); }
40          20% { transform: translate(2px, -1px); }
41          40% { transform: translate(-1px, 0); }
42          60% { transform: translate(1px, -2px); }
43          80% { transform: translate(-2px, -1px); }
44        }
45        @keyframes mascotPress {
46          0%, 100% { transform: translateY(0); }
47          50% { transform: translateY(3px); }
48        }
49        @keyframes mascotCelebrate {
50          0% { transform: scale(1); }
51          40% { transform: scale(1.15) translateY(-10px); }
52          70% { transform: scale(1.05) translateY(2px); }
53          100% { transform: scale(1); }
54        }
55        @keyframes bubbleIn {
56          from { opacity: 0; transform: scale(0.8) translateY(10px); }
57          to { opacity: 1; transform: scale(1) translateY(0); }
58        }
59      `})]})};export{l as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.