beatsaber-bot-core 0.3.0-rc.1 → 0.3.0-rc.10
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/cjs/cmd/bind/bind-beatleader.js +8 -11
- package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-beatsaver.js +7 -12
- package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatleader.js +8 -11
- package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js +7 -11
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-scoresaber.js +9 -14
- package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/cjs/cmd/rank.js +3 -3
- package/dist/cjs/cmd/rank.js.map +1 -1
- package/dist/cjs/cmd/score.js +2 -2
- package/dist/cjs/cmd/score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatleader.js +1 -1
- package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatsaver.js +1 -1
- package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js +1 -1
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +1 -1
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/cjs/cmd/subscribe/index.js +4 -4
- package/dist/cjs/cmd/subscribe/index.js.map +1 -1
- package/dist/cjs/cmd/subscribe/subleave.js +4 -4
- package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
- package/dist/cjs/common/i18n/index.js +1 -1
- package/dist/cjs/common/i18n/index.js.map +1 -1
- package/dist/cjs/components/components/RankDifficulty.js +32 -21
- package/dist/cjs/components/components/RankDifficulty.js.map +1 -1
- package/dist/cjs/components/components/base/avatar.js +12 -1
- package/dist/cjs/components/components/base/avatar.js.map +1 -1
- package/dist/cjs/components/components/bl-rank-score-item.js +8 -7
- package/dist/cjs/components/components/bl-rank-score-item.js.map +1 -1
- package/dist/cjs/components/components/bl-score-item.js +20 -9
- package/dist/cjs/components/components/bl-score-item.js.map +1 -1
- package/dist/cjs/components/components/characteristic.js +36 -25
- package/dist/cjs/components/components/characteristic.js.map +1 -1
- package/dist/cjs/components/components/flag.js +4 -3
- package/dist/cjs/components/components/flag.js.map +1 -1
- package/dist/cjs/components/components/icons/BeatLeader.js +30 -19
- package/dist/cjs/components/components/icons/BeatLeader.js.map +1 -1
- package/dist/cjs/components/components/scoreItem.js +20 -9
- package/dist/cjs/components/components/scoreItem.js.map +1 -1
- package/dist/cjs/components/components/scoregraph.js +2 -1
- package/dist/cjs/components/components/scoregraph.js.map +1 -1
- package/dist/cjs/components/components/skill-graph.js +33 -22
- package/dist/cjs/components/components/skill-graph.js.map +1 -1
- package/dist/cjs/components/components/socre-badge.js +14 -3
- package/dist/cjs/components/components/socre-badge.js.map +1 -1
- package/dist/cjs/components/components/ss-rank-score-item.js +8 -7
- package/dist/cjs/components/components/ss-rank-score-item.js.map +1 -1
- package/dist/cjs/components/components/ss-score-item.js.map +1 -1
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/pages/bl-player.js +1 -1
- package/dist/cjs/components/pages/bl-player.js.map +1 -1
- package/dist/cjs/components/pages/bl-score-with-rank.js +1 -1
- package/dist/cjs/components/pages/bl-score-with-rank.js.map +1 -1
- package/dist/cjs/components/pages/bl-score.js +1 -1
- package/dist/cjs/components/pages/bl-score.js.map +1 -1
- package/dist/cjs/components/pages/ss-player.js +1 -1
- package/dist/cjs/components/pages/ss-player.js.map +1 -1
- package/dist/esm/cmd/bind/bind-beatleader.js +8 -11
- package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-beatsaver.js +7 -12
- package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatleader.js +8 -11
- package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatsaver.js +7 -11
- package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-scoresaber.js +9 -14
- package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/esm/cmd/rank.js +3 -3
- package/dist/esm/cmd/rank.js.map +1 -1
- package/dist/esm/cmd/score.js +2 -2
- package/dist/esm/cmd/score.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatleader.js +1 -1
- package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/esm/cmd/subscribe/index.js +4 -4
- package/dist/esm/cmd/subscribe/index.js.map +1 -1
- package/dist/esm/cmd/subscribe/subleave.js +4 -4
- package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
- package/dist/esm/common/i18n/index.js +1 -1
- package/dist/esm/common/i18n/index.js.map +1 -1
- package/dist/esm/components/components/RankDifficulty.js +1 -0
- package/dist/esm/components/components/RankDifficulty.js.map +1 -1
- package/dist/esm/components/components/base/avatar.js +1 -0
- package/dist/esm/components/components/base/avatar.js.map +1 -1
- package/dist/esm/components/components/bl-rank-score-item.js +1 -0
- package/dist/esm/components/components/bl-rank-score-item.js.map +1 -1
- package/dist/esm/components/components/bl-score-item.js +1 -0
- package/dist/esm/components/components/bl-score-item.js.map +1 -1
- package/dist/esm/components/components/characteristic.js +1 -0
- package/dist/esm/components/components/characteristic.js.map +1 -1
- package/dist/esm/components/components/flag.js +1 -0
- package/dist/esm/components/components/flag.js.map +1 -1
- package/dist/esm/components/components/icons/BeatLeader.js +1 -0
- package/dist/esm/components/components/icons/BeatLeader.js.map +1 -1
- package/dist/esm/components/components/scoreItem.js +1 -0
- package/dist/esm/components/components/scoreItem.js.map +1 -1
- package/dist/esm/components/components/scoregraph.js +1 -0
- package/dist/esm/components/components/scoregraph.js.map +1 -1
- package/dist/esm/components/components/skill-graph.js +1 -0
- package/dist/esm/components/components/skill-graph.js.map +1 -1
- package/dist/esm/components/components/socre-badge.js +1 -0
- package/dist/esm/components/components/socre-badge.js.map +1 -1
- package/dist/esm/components/components/ss-rank-score-item.js +1 -0
- package/dist/esm/components/components/ss-rank-score-item.js.map +1 -1
- package/dist/esm/components/components/ss-score-item.js.map +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/pages/bl-player.js +1 -1
- package/dist/esm/components/pages/bl-player.js.map +1 -1
- package/dist/esm/components/pages/bl-score-with-rank.js +1 -1
- package/dist/esm/components/pages/bl-score-with-rank.js.map +1 -1
- package/dist/esm/components/pages/bl-score.js +1 -1
- package/dist/esm/components/pages/bl-score.js.map +1 -1
- package/dist/esm/components/pages/ss-player.js +1 -1
- package/dist/esm/components/pages/ss-player.js.map +1 -1
- package/package.json +8 -17
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/skill-graph.tsx"],"sourcesContent":["
|
1
|
+
{"version":3,"sources":["../../../../src/components/components/skill-graph.tsx"],"sourcesContent":["import React from 'react'\ninterface Point {\n x: number\n y: number\n}\n\nconst getPoint = (\n center: Point,\n edgePoint: Point,\n edgeFactor: number,\n pointFactor: number\n) => {\n const factorY = (center.y - edgePoint.y) / edgeFactor\n const factorX = (center.x - edgePoint.x) / edgeFactor\n return {\n x: center.x - pointFactor * factorX,\n y: center.y - pointFactor * factorY,\n }\n}\n\nexport default function SkillGraph({\n factorA = 0.4,\n factorB = 0.2,\n factorC = 0.2,\n}: {\n factorA?: number\n factorB?: number\n factorC?: number\n}) {\n const base = 0.4\n const sqrt3 = Math.sqrt(3)\n const centerPoint = {\n x: 60,\n y: 80 / sqrt3 + 10,\n }\n const edgePointA = {\n x: 20,\n y: 40 / sqrt3 + 10,\n }\n\n const edgePointB = {\n x: 100,\n y: 40 / sqrt3 + 10,\n }\n\n const edgePointC = {\n x: 60,\n y: 160 / sqrt3 + 10,\n }\n\n const PA = getPoint(centerPoint, edgePointA, base, factorA)\n const PB = getPoint(centerPoint, edgePointB, base, factorB)\n const PC = getPoint(centerPoint, edgePointC, base, factorC)\n // 50,78 90,10 10,10\n return (\n <>\n <svg\n height=\"145\"\n viewBox={`0 0 125 125`}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx={centerPoint.x}\n cy={centerPoint.y}\n r={80 / sqrt3}\n className=\"fill-gray-100/30\"\n filter=\"url(#blur)\"\n />\n {/* <polygon points={`${edgePointA.x},${edgePointA.y} ${edgePointB.x},${edgePointB.y} ${edgePointC.x},${edgePointC.y}`}\n className=\"fill-gray-300\"\n /> */}\n <circle cx={PA.x} cy={PA.y} />\n <text\n x={edgePointA.x - 10}\n y={edgePointA.y}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n Acc\n </text>\n <text\n x={edgePointA.x - 20}\n y={edgePointA.y + 10}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n {(factorA * 100).toFixed(2)}%\n </text>\n <text\n x={edgePointB.x - 6}\n y={edgePointB.y}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n Tech\n </text>\n <text\n x={edgePointB.x - 6}\n y={edgePointB.y + 8}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n {(factorB * 100).toFixed(2)}%\n </text>\n <text\n x={edgePointC.x - 6}\n y={edgePointC.y + 2}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n Pass\n </text>\n <text\n x={edgePointC.x - 8}\n y={edgePointC.y + 12}\n fill=\"url(#gradient1)\"\n className=\"text-[8px] font-bold text-white\"\n >\n {(factorC * 100).toFixed(2)}%\n </text>\n {/* 数据点b */}\n <circle cx={PB.x} cy={PB.y} />\n {/* 数据点c */}\n <circle cx={PC.x} cy={PC.y} />\n\n <line x1={PA.x} y1={PA.y} x2={PC.x} y2={PC.y} />\n <line x1={PA.x} y1={PA.y} x2={PB.x} y2={PB.y} />\n <line x1={PC.x} y1={PC.y} x2={PB.x} y2={PB.y} />\n <polygon\n points={`${PA.x},${PA.y} ${PB.x},${PB.y} ${PC.x},${PC.y}`}\n fill=\"url(#gradient)\"\n />\n <defs>\n <linearGradient\n id=\"gradient1\"\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n opacity={0}\n >\n <stop\n offset=\"0%\"\n style={{\n stopColor: 'rgb(252 165 165)',\n stopOpacity: 1,\n }}\n />\n <stop\n offset=\"100%\"\n style={{\n stopColor: 'rgb(147 197 253)',\n stopOpacity: 1,\n }}\n />\n </linearGradient>\n <linearGradient\n id=\"gradient\"\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n opacity={0}\n >\n <stop\n offset=\"0%\"\n style={{\n stopColor: 'red',\n stopOpacity: 0.3,\n }}\n />\n <stop\n offset=\"100%\"\n style={{\n stopColor: 'blue',\n stopOpacity: 0.4,\n }}\n />\n </linearGradient>\n <filter id=\"blur\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"1\" />\n </filter>\n </defs>\n </svg>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/socre-badge.tsx"],"sourcesContent":["import { twJoin } from '../utils/tw-join'\n\nexport default function ScoreBadge({\n name,\n count,\n className,\n}: {\n name: string\n count: string | number\n className?: string\n}) {\n return (\n <>\n <div\n className={twJoin(\n 'flex items-center self-center rounded-md w-18',\n 'bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n className\n )}\n >\n <span className=\"border-r-0.5 font-semibold m-auto text-center rounded-l-lg w-8\">\n {name}\n </span>\n <span className=\"bg-transparent m-auto text-ellipsis line-clamp-1\">\n {count}\n </span>\n </div>\n </>\n )\n}\n"],"mappings":"AAAA,SAAS,cAAc;AAER,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEA,oCAAC,UAAK,WAAU,oEACb,IACH;AAAA,IACA,oCAAC,UAAK,WAAU,sDACb,KACH;AAAA,EACF,CACF;AAEJ;","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/components/components/socre-badge.tsx"],"sourcesContent":["import React from 'react'\nimport { twJoin } from '../utils/tw-join'\n\nexport default function ScoreBadge({\n name,\n count,\n className,\n}: {\n name: string\n count: string | number\n className?: string\n}) {\n return (\n <>\n <div\n className={twJoin(\n 'flex items-center self-center rounded-md w-18',\n 'bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n className\n )}\n >\n <span className=\"border-r-0.5 font-semibold m-auto text-center rounded-l-lg w-8\">\n {name}\n </span>\n <span className=\"bg-transparent m-auto text-ellipsis line-clamp-1\">\n {count}\n </span>\n </div>\n </>\n )\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,cAAc;AAER,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEA,oCAAC,UAAK,WAAU,oEACb,IACH;AAAA,IACA,oCAAC,UAAK,WAAU,sDACb,KACH;AAAA,EACF,CACF;AAEJ;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/ss-rank-score-item.tsx"],"sourcesContent":["import dayjs from 'dayjs'\nimport Flags, { EarchIcon } from '@/components/components/flag'\nimport { formatDate, numberWithCommas } from '@/components/utils'\n\ninterface ScoreItemProps {\n name: string\n avatar: string\n globalRank: number\n countryCode: string\n isRegionRank: boolean\n score: number\n modifiers: string\n acc: number\n pp: number\n date: number\n self: boolean\n}\n\nexport function SSRankScoreItem(props: ScoreItemProps) {\n return (\n <div\n className={`${props.self ? 'gradient-border' : ''} bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`}\n >\n <div className=\"skew-x-12 relative\">\n <div className=\"flex items-center translate-x-2 justify-between\">\n <div className=\"flex gap-2\">\n <div className={'w-12 h-12 relative'}>\n <img\n src={props.avatar}\n className=\"shadow-lg w-12 h-12 rounded-full object-cover\"\n />\n <div className={'w-3 h-3 absolute bottom-0 right-3'}>\n <Flags flagNationCode={props.countryCode} />\n </div>\n </div>\n <div>\n <div className={'line-clamp-1 text-ellipsis max-w-[100px]'}>\n {props.name}\n </div>\n <span className=\"flex items-center space-x-1\">\n {!props.isRegionRank && <EarchIcon />}\n <span># {props.globalRank}</span>\n </span>\n </div>\n </div>\n\n <div className=\"flex flex-col items-end -translate-x-2 -skew-x-3\">\n <div>{(props.acc * 100).toFixed(2)} %</div>\n <div className={'flex gap-2'}>\n <div className={'space-x-1'}>\n {props.modifiers.split(',').map((it) => (\n <span key={it}>{it}</span>\n ))}\n </div>\n <div>{numberWithCommas(props.score)}</div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center justify-between mt-0 px-4 -translate-x-4\">\n <div className=\"flex gap-2\">\n <div className=\"flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60\">\n <div>\n {formatDate(\n dayjs(props.date * 1000).toDate(),\n 'YY 年 MM 月 DD 日'\n )}\n </div>\n </div>\n </div>\n <div>\n <div className=\"flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300\">\n <div> {props.pp.toFixed(2)} PP</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport function ScoreItemSkeleton({ isRegionRank }: { isRegionRank: boolean }) {\n return (\n <div\n className={`bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`}\n >\n <div className=\"skew-x-12 relative\">\n <div className=\"flex items-center translate-x-2 justify-between\">\n <div className=\"flex gap-2\">\n <div className={'w-12 h-12 relative'}>\n <img\n src={`https://avatar.iran.liara.run/public`}\n className=\"shadow-lg w-12 h-12 rounded-full object-cover\"\n />\n </div>\n <div>\n <div className={'line-clamp-1 text-ellipsis max-w-[100px]'}>\n 虚位以待\n </div>\n <span className=\"flex items-center space-x-1\">\n {!isRegionRank && <EarchIcon />}\n <span># 0 </span>\n </span>\n </div>\n </div>\n\n <div className=\"flex flex-col items-end -translate-x-2 -skew-x-3\">\n <div>0.00 %</div>\n <div className={'flex gap-2'}>\n <div className={'space-x-1'}> </div>\n <div>000,000</div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center justify-between mt-0 px-4 -translate-x-4\">\n <div className=\"flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60\">\n <div>00 年 00 月 00 日</div>\n </div>\n <div className=\"flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300\">\n <div> 0.00 PP</div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,OAAO,SAAS,iBAAiB;AACjC,SAAS,YAAY,wBAAwB;AAgBtC,SAAS,gBAAgB,OAAuB;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,MAAM,OAAO,oBAAoB,EAAE;AAAA;AAAA,IAEjD,oCAAC,SAAI,WAAU,wBACb,oCAAC,SAAI,WAAU,qDACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAW,wBACd;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,WAAU;AAAA;AAAA,IACZ,GACA,oCAAC,SAAI,WAAW,uCACd,oCAAC,SAAM,gBAAgB,MAAM,aAAa,CAC5C,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAW,8CACb,MAAM,IACT,GACA,oCAAC,UAAK,WAAU,iCACb,CAAC,MAAM,gBAAgB,oCAAC,eAAU,GACnC,oCAAC,cAAK,MAAG,MAAM,UAAW,CAC5B,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,sDACb,oCAAC,cAAM,MAAM,MAAM,KAAK,QAAQ,CAAC,GAAE,IAAE,GACrC,oCAAC,SAAI,WAAW,gBACd,oCAAC,SAAI,WAAW,eACb,MAAM,UAAU,MAAM,GAAG,EAAE,IAAI,CAAC,OAC/B,oCAAC,UAAK,KAAK,MAAK,EAAG,CACpB,CACH,GACA,oCAAC,aAAK,iBAAiB,MAAM,KAAK,CAAE,CACtC,CACF,CACF,GACA,oCAAC,SAAI,WAAU,gEACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAU,wEACb,oCAAC,aACE;AAAA,MACC,MAAM,MAAM,OAAO,GAAI,EAAE,OAAO;AAAA,MAChC;AAAA,IACF,CACF,CACF,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAU,0FACb,oCAAC,aAAI,KAAE,MAAM,GAAG,QAAQ,CAAC,GAAE,KAAG,CAChC,CACF,CACF,CACF;AAAA,EACF;AAEJ;AAEO,SAAS,kBAAkB,EAAE,aAAa,GAA8B;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA;AAAA,IAEX,oCAAC,SAAI,WAAU,wBACb,oCAAC,SAAI,WAAU,qDACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAW,wBACd;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAU;AAAA;AAAA,IACZ,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAW,8CAA4C,0BAE5D,GACA,oCAAC,UAAK,WAAU,iCACb,CAAC,gBAAgB,oCAAC,eAAU,GAC7B,oCAAC,cAAK,MAAI,CACZ,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,sDACb,oCAAC,aAAI,QAAM,GACX,oCAAC,SAAI,WAAW,gBACd,oCAAC,SAAI,WAAW,eAAa,GAAC,GAC9B,oCAAC,aAAI,SAAO,CACd,CACF,CACF,GACA,oCAAC,SAAI,WAAU,gEACb,oCAAC,SAAI,WAAU,wEACb,oCAAC,aAAI,+BAAc,CACrB,GACA,oCAAC,SAAI,WAAU,0FACb,oCAAC,aAAI,UAAQ,CACf,CACF,CACF;AAAA,EACF;AAEJ;","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/components/components/ss-rank-score-item.tsx"],"sourcesContent":["import React from 'react'\nimport dayjs from 'dayjs'\nimport Flags, { EarchIcon } from '@/components/components/flag'\nimport { formatDate, numberWithCommas } from '@/components/utils'\n\ninterface ScoreItemProps {\n name: string\n avatar: string\n globalRank: number\n countryCode: string\n isRegionRank: boolean\n score: number\n modifiers: string\n acc: number\n pp: number\n date: number\n self: boolean\n}\n\nexport function SSRankScoreItem(props: ScoreItemProps) {\n return (\n <div\n className={`${props.self ? 'gradient-border' : ''} bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`}\n >\n <div className=\"skew-x-12 relative\">\n <div className=\"flex items-center translate-x-2 justify-between\">\n <div className=\"flex gap-2\">\n <div className={'w-12 h-12 relative'}>\n <img\n src={props.avatar}\n className=\"shadow-lg w-12 h-12 rounded-full object-cover\"\n />\n <div className={'w-3 h-3 absolute bottom-0 right-3'}>\n <Flags flagNationCode={props.countryCode} />\n </div>\n </div>\n <div>\n <div className={'line-clamp-1 text-ellipsis max-w-[100px]'}>\n {props.name}\n </div>\n <span className=\"flex items-center space-x-1\">\n {!props.isRegionRank && <EarchIcon />}\n <span># {props.globalRank}</span>\n </span>\n </div>\n </div>\n\n <div className=\"flex flex-col items-end -translate-x-2 -skew-x-3\">\n <div>{(props.acc * 100).toFixed(2)} %</div>\n <div className={'flex gap-2'}>\n <div className={'space-x-1'}>\n {props.modifiers.split(',').map((it) => (\n <span key={it}>{it}</span>\n ))}\n </div>\n <div>{numberWithCommas(props.score)}</div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center justify-between mt-0 px-4 -translate-x-4\">\n <div className=\"flex gap-2\">\n <div className=\"flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60\">\n <div>\n {formatDate(\n dayjs(props.date * 1000).toDate(),\n 'YY 年 MM 月 DD 日'\n )}\n </div>\n </div>\n </div>\n <div>\n <div className=\"flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300\">\n <div> {props.pp.toFixed(2)} PP</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport function ScoreItemSkeleton({ isRegionRank }: { isRegionRank: boolean }) {\n return (\n <div\n className={`bs-bg-gradient shadow-xl rounded-lg -skew-x-12 w-80 h-20 text-white font-bold flex flex-col p-1 z-10 relative max-w-[300px]`}\n >\n <div className=\"skew-x-12 relative\">\n <div className=\"flex items-center translate-x-2 justify-between\">\n <div className=\"flex gap-2\">\n <div className={'w-12 h-12 relative'}>\n <img\n src={`https://avatar.iran.liara.run/public`}\n className=\"shadow-lg w-12 h-12 rounded-full object-cover\"\n />\n </div>\n <div>\n <div className={'line-clamp-1 text-ellipsis max-w-[100px]'}>\n 虚位以待\n </div>\n <span className=\"flex items-center space-x-1\">\n {!isRegionRank && <EarchIcon />}\n <span># 0 </span>\n </span>\n </div>\n </div>\n\n <div className=\"flex flex-col items-end -translate-x-2 -skew-x-3\">\n <div>0.00 %</div>\n <div className={'flex gap-2'}>\n <div className={'space-x-1'}> </div>\n <div>000,000</div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center justify-between mt-0 px-4 -translate-x-4\">\n <div className=\"flex gap-1 items-center justify-start -skew-x-2 text-xs opacity-60\">\n <div>00 年 00 月 00 日</div>\n </div>\n <div className=\"flex gap-1 items-center justify-start translate-x-6 text-xl font-bold text-green-300\">\n <div> 0.00 PP</div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,SAAS,iBAAiB;AACjC,SAAS,YAAY,wBAAwB;AAgBtC,SAAS,gBAAgB,OAAuB;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,MAAM,OAAO,oBAAoB,EAAE;AAAA;AAAA,IAEjD,oCAAC,SAAI,WAAU,wBACb,oCAAC,SAAI,WAAU,qDACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAW,wBACd;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,WAAU;AAAA;AAAA,IACZ,GACA,oCAAC,SAAI,WAAW,uCACd,oCAAC,SAAM,gBAAgB,MAAM,aAAa,CAC5C,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAW,8CACb,MAAM,IACT,GACA,oCAAC,UAAK,WAAU,iCACb,CAAC,MAAM,gBAAgB,oCAAC,eAAU,GACnC,oCAAC,cAAK,MAAG,MAAM,UAAW,CAC5B,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,sDACb,oCAAC,cAAM,MAAM,MAAM,KAAK,QAAQ,CAAC,GAAE,IAAE,GACrC,oCAAC,SAAI,WAAW,gBACd,oCAAC,SAAI,WAAW,eACb,MAAM,UAAU,MAAM,GAAG,EAAE,IAAI,CAAC,OAC/B,oCAAC,UAAK,KAAK,MAAK,EAAG,CACpB,CACH,GACA,oCAAC,aAAK,iBAAiB,MAAM,KAAK,CAAE,CACtC,CACF,CACF,GACA,oCAAC,SAAI,WAAU,gEACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAU,wEACb,oCAAC,aACE;AAAA,MACC,MAAM,MAAM,OAAO,GAAI,EAAE,OAAO;AAAA,MAChC;AAAA,IACF,CACF,CACF,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAU,0FACb,oCAAC,aAAI,KAAE,MAAM,GAAG,QAAQ,CAAC,GAAE,KAAG,CAChC,CACF,CACF,CACF;AAAA,EACF;AAEJ;AAEO,SAAS,kBAAkB,EAAE,aAAa,GAA8B;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA;AAAA,IAEX,oCAAC,SAAI,WAAU,wBACb,oCAAC,SAAI,WAAU,qDACb,oCAAC,SAAI,WAAU,gBACb,oCAAC,SAAI,WAAW,wBACd;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAU;AAAA;AAAA,IACZ,CACF,GACA,oCAAC,aACC,oCAAC,SAAI,WAAW,8CAA4C,0BAE5D,GACA,oCAAC,UAAK,WAAU,iCACb,CAAC,gBAAgB,oCAAC,eAAU,GAC7B,oCAAC,cAAK,MAAI,CACZ,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,sDACb,oCAAC,aAAI,QAAM,GACX,oCAAC,SAAI,WAAW,gBACd,oCAAC,SAAI,WAAW,eAAa,GAAC,GAC9B,oCAAC,aAAI,SAAO,CACd,CACF,CACF,GACA,oCAAC,SAAI,WAAU,gEACb,oCAAC,SAAI,WAAU,wEACb,oCAAC,aAAI,+BAAc,CACrB,GACA,oCAAC,SAAI,WAAU,0FACb,oCAAC,aAAI,UAAQ,CACf,CACF,CACF;AAAA,EACF;AAEJ;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/components/ss-score-item.tsx"],"sourcesContent":["import { BarChart, Key, Star, Wrench } from 'lucide-react'\nimport { diffConv, formatRelativeTimeByDay } from '../utils'\nimport React from 'react'\nimport { ScoreSaberItem } from '@/
|
1
|
+
{"version":3,"sources":["../../../../src/components/components/ss-score-item.tsx"],"sourcesContent":["import { BarChart, Key, Star, Wrench } from 'lucide-react'\nimport { diffConv, formatRelativeTimeByDay } from '../utils'\nimport React from 'react'\nimport type { ScoreSaberItem } from '@/services/api/interfaces/scoresaber'\n\nconst getModifiers = (modifiers: string) => {\n return modifiers ? modifiers.split(',') : []\n}\nexport default function SsScoreItem({\n scoreItem,\n}: {\n scoreItem: ScoreSaberItem\n}) {\n return (\n <div className={'relative'}>\n <div\n className={\n 'rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-none overflow-hidden'\n }\n >\n <img\n loading={'eager'}\n src={scoreItem.leaderboard.coverImage}\n className={'rounded-md h-20 w-20'}\n />\n <div className={'flex flex-col space-y-1 py-0.5'}>\n <div\n className={\n 'font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all'\n }\n >\n {scoreItem.leaderboard.songName}\n </div>\n <div\n className={\n 'text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 '\n }\n >\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>\n {diffConv(scoreItem.leaderboard.difficulty.difficultyRaw)}\n </span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.leaderboard.stars} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{scoreItem.mapId ?? 'unknown'}</span>\n </div>\n </div>\n <div className={'flex space-x-2 text-xs'}>\n <span>\n {(\n (scoreItem.score.baseScore / scoreItem.leaderboard.maxScore) *\n 100\n ).toFixed(2)}\n %\n </span>\n <span className={'text-orange-200'}>\n {scoreItem.score.pp.toFixed(1)}\n PP\n </span>\n <span className={'opacity-70'}>\n {formatRelativeTimeByDay(scoreItem.score.timeSet)}\n </span>\n </div>\n {getModifiers(scoreItem.score.modifiers).length > 0 && (\n <div className=\"text-xs flex flex-wrap space-x-2 items-center\">\n <Wrench className=\"h-3 w-3\" />\n {getModifiers(scoreItem.score.modifiers).map((modifier) => (\n <span key={modifier}>{modifier}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className=\"absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center\">\n {scoreItem.score.fullCombo && (\n <span className=\"from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent\">\n FC\n </span>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA,SAAS,UAAU,KAAK,MAAM,cAAc;AAC5C,SAAS,UAAU,+BAA+B;AAClD,OAAO,WAAW;AAGlB,MAAM,eAAe,CAAC,cAAsB;AAC1C,SAAO,YAAY,UAAU,MAAM,GAAG,IAAI,CAAC;AAC7C;AACe,SAAR,YAA6B;AAAA,EAClC;AACF,GAEG;AAZH;AAaE,SACE,oCAAC,SAAI,WAAW,cACd;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA;AAAA,IAGF;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,KAAK,UAAU,YAAY;AAAA,QAC3B,WAAW;AAAA;AAAA,IACb;AAAA,IACA,oCAAC,SAAI,WAAW,oCACd;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGD,UAAU,YAAY;AAAA,IACzB,GACA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGF,oCAAC,aACC,oCAAC,cACC,oCAAC,YAAS,WAAW,WAAW,CAClC,GACA,oCAAC,cACE,SAAS,UAAU,YAAY,WAAW,aAAa,CAC1D,CACF;AAAA,MACA,oCAAC,aACC,oCAAC,cACC,oCAAC,QAAK,WAAW,WAAW,CAC9B,GACA,oCAAC,cAAM,UAAU,YAAY,OAAM,GAAC,CACtC;AAAA,MACA,oCAAC,aACC,oCAAC,cACC,oCAAC,OAAI,WAAW,WAAW,CAC7B,GACA,oCAAC,eAAM,eAAU,UAAV,YAAmB,SAAU,CACtC;AAAA,IACF,GACA,oCAAC,SAAI,WAAW,4BACd,oCAAC,eAEI,UAAU,MAAM,YAAY,UAAU,YAAY,WACnD,KACA,QAAQ,CAAC,GAAE,GAEf,GACA,oCAAC,UAAK,WAAW,qBACd,UAAU,MAAM,GAAG,QAAQ,CAAC,GAAE,IAEjC,GACA,oCAAC,UAAK,WAAW,gBACd,wBAAwB,UAAU,MAAM,OAAO,CAClD,CACF,GACC,aAAa,UAAU,MAAM,SAAS,EAAE,SAAS,KAChD,oCAAC,SAAI,WAAU,mDACb,oCAAC,UAAO,WAAU,WAAU,GAC3B,aAAa,UAAU,MAAM,SAAS,EAAE,IAAI,CAAC,aAC5C,oCAAC,UAAK,KAAK,YAAW,QAAS,CAChC,CACH,CAEJ;AAAA,EACF,GACA,oCAAC,SAAI,WAAU,8EACZ,UAAU,MAAM,aACf,oCAAC,UAAK,WAAU,6EAA0E,IAE1F,CAEJ,CACF;AAEJ;","names":[]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import React from "react";
|
2
1
|
import * as ReactDOMServer from "react-dom/server";
|
2
|
+
import React from "react";
|
3
3
|
function App({ children }) {
|
4
4
|
return /* @__PURE__ */ React.createElement("html", null, /* @__PURE__ */ React.createElement("head", null, /* @__PURE__ */ React.createElement("script", { src: "https://cdn.tailwindcss.com" }), /* @__PURE__ */ React.createElement("title", null, "IMG Render")), /* @__PURE__ */ React.createElement("body", { className: "bg-transparent" }, children));
|
5
5
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/index.tsx"],"sourcesContent":["import
|
1
|
+
{"version":3,"sources":["../../../src/components/index.tsx"],"sourcesContent":["import * as ReactDOMServer from 'react-dom/server'\nimport React from \"react\";\n\nfunction App({ children }: { children?: React.ReactNode }) {\n return (\n <html>\n <head>\n <script src=\"https://cdn.tailwindcss.com\"></script>\n <title>IMG Render</title>\n </head>\n <body className={'bg-transparent'}>{children}</body>\n </html>\n )\n}\n\nexport const getHtml = (child: React.ReactNode) => {\n let res = ReactDOMServer.renderToString(<App>{child}</App>)\n res = ` <!DOCTYPE html>` + res\n return res\n}\n"],"mappings":"AAAA,YAAY,oBAAoB;AAChC,OAAO,WAAW;AAElB,SAAS,IAAI,EAAE,SAAS,GAAmC;AACzD,SACE,oCAAC,cACC,oCAAC,cACC,oCAAC,YAAO,KAAI,+BAA8B,GAC1C,oCAAC,eAAM,YAAU,CACnB,GACA,oCAAC,UAAK,WAAW,oBAAmB,QAAS,CAC/C;AAEJ;AAEO,MAAM,UAAU,CAAC,UAA2B;AACjD,MAAI,MAAM,eAAe,eAAe,oCAAC,WAAK,KAAM,CAAM;AAC1D,QAAM,qBAAqB;AAC3B,SAAO;AACT;","names":[]}
|
@@ -17,6 +17,7 @@ var __spreadValues = (a, b) => {
|
|
17
17
|
return a;
|
18
18
|
};
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
20
|
+
import React from "react";
|
20
21
|
import getPart from "../utils/bl/getPart.js";
|
21
22
|
import ScoreBadge from "../components/socre-badge.js";
|
22
23
|
import SkillGraph from "../components/skill-graph.js";
|
@@ -24,7 +25,6 @@ import BeatLeaderItem from "../components/bl-score-item.js";
|
|
24
25
|
import Flags, { EarchIcon } from "../components/flag.js";
|
25
26
|
import { twJoin } from "../utils/tw-join.js";
|
26
27
|
import { getHeadsetForHMD } from "../utils/bl/blheadset.js";
|
27
|
-
import React from "react";
|
28
28
|
function BLPlayerPage({
|
29
29
|
beatleaderItems: items,
|
30
30
|
user,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/pages/bl-player.tsx"],"sourcesContent":["import getPart from '../utils/bl/getPart'\nimport ScoreBadge from '../components/socre-badge'\nimport SkillGraph from '../components/skill-graph'\nimport BeatLeaderItem from '../components/bl-score-item'\nimport Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport { getHeadsetForHMD } from '../utils/bl/blheadset'\
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/bl-player.tsx"],"sourcesContent":["import React from 'react'\nimport getPart from '../utils/bl/getPart'\nimport ScoreBadge from '../components/socre-badge'\nimport SkillGraph from '../components/skill-graph'\nimport BeatLeaderItem from '../components/bl-score-item'\nimport Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport { getHeadsetForHMD } from '../utils/bl/blheadset'\n\ninterface BLPlayerInfoProps {\n beatleaderItems: any\n user: any\n params?: Record<string, string>\n bg: string\n}\n\nexport default function BLPlayerPage({\n beatleaderItems: items,\n user,\n params,\n bg,\n}: BLPlayerInfoProps) {\n const part = getPart(user)\n const beatleaderItems = items.map((it) => ({\n ...it,\n pinned: it.metadata?.pinnedContexts !== undefined,\n }))\n return (\n <>\n <div\n id={'render-result'}\n key={'render-result'}\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex justify-between'}>\n <div className=\"flex space-x-4 pb-2\">\n <img\n src={user.avatar}\n className={'h-36 w-36 rounded-md z-10'}\n loading={'eager'}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{user.name}</span>\n <div\n className={'flex space-x-2 text-md font-bold items-center'}\n >\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {user.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={user.country} />\n <span># {user.countryRank}</span>\n </span>\n </div>\n\n <div className=\"flex gap-2 align-items-center \">\n <ScoreBadge\n className=\"w-auto text-white\"\n name={'P'}\n count={user.scoreStats.topPlatform}\n />\n <ScoreBadge\n className=\"w-auto text-white\"\n name={'H'}\n count={getHeadsetForHMD(user.scoreStats.topHMD)}\n />\n <ScoreBadge\n className=\"w-auto text-white\"\n name={'R'}\n count={user.scoreStats.rankedPlayCount}\n />\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {user.pp} PP\n </div>\n </div>\n </div>\n <div className=\"px-3 flex flex-col justify-end items-center grow\">\n {user.badges.length > 0 && (\n <div className=\"grid grid-cols-3 gap-2 justify-self-center align-items-cener justify-items-center mb-auto mt-2\">\n {user.badges.map((badge) => (\n <>\n <img\n alt={badge.description}\n key={badge.id}\n src={badge.image}\n width={'70px'}\n height={'20px'}\n className=\"self-center w-[70px] h-5\"\n ></img>\n </>\n ))}\n </div>\n )}\n\n <div className=\"grid grid-cols-3 gap-2 align-items-center py-2\">\n <ScoreBadge name={'SS+'} count={user.scoreStats.sspPlays} />\n <ScoreBadge name={'SS'} count={user.scoreStats.ssPlays} />\n <ScoreBadge name={'S+'} count={user.scoreStats.spPlays} />\n <ScoreBadge name={'S'} count={user.scoreStats.sPlays} />\n <ScoreBadge name={'A'} count={user.scoreStats.aPlays} />\n </div>\n {/* more badages */}\n </div>\n\n <div className=\"ml-auto mr-4 flex justify-center items-center\">\n <SkillGraph\n factorA={part.accPpPart}\n factorB={part.techPpPart}\n factorC={part.passPpPart}\n />\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {beatleaderItems.map((item, idx) => (\n <BeatLeaderItem item={item} key={idx} />\n ))}\n </div>\n </div>\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
@@ -17,6 +17,7 @@ var __spreadValues = (a, b) => {
|
|
17
17
|
return a;
|
18
18
|
};
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
20
|
+
import React from "react";
|
20
21
|
import {
|
21
22
|
Check,
|
22
23
|
Key,
|
@@ -27,7 +28,6 @@ import {
|
|
27
28
|
HeartPulse
|
28
29
|
} from "lucide-react";
|
29
30
|
import ScoreGraph from "../components/scoregraph.js";
|
30
|
-
import React from "react";
|
31
31
|
import {
|
32
32
|
BlRankScoreItem,
|
33
33
|
ScoreItemSkeleton
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/pages/bl-score-with-rank.tsx"],"sourcesContent":["import {\n Check,\n Key,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n HeartPulse,\n} from 'lucide-react'\nimport ScoreGraph from '../components/scoregraph'\nimport React from 'react'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\nimport {\n BlRankScoreItem,\n ScoreItemSkeleton,\n} from '@/components/components/bl-rank-score-item'\nimport { RankDifficulty } from '@/components/components/RankDifficulty'\nimport { Avatar } from '@/components/components/base/avatar'\nimport { formatDuration, formatTime } from '@/components/utils'\nimport Progressbar from '@/components/components/progressbar'\n\ninterface BLScoreProps {\n score: Score\n aroundScores: Score[]\n regionTopScores: Score[]\n bsMap: BSMap\n difficulties: any[]\n statistic: any\n bsor: BSOR\n bg: string\n}\n\nexport default function BLRankScore({\n score,\n aroundScores,\n regionTopScores,\n difficulties,\n bsMap,\n statistic,\n bsor,\n bg,\n}: BLScoreProps) {\n let aroundScore = aroundScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n let regionTopScore = regionTopScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n if (aroundScore.length < 7) {\n aroundScore = aroundScore.concat(\n new Array(7 - aroundScore.length).fill({ template: true })\n )\n }\n if (regionTopScore.length < 7) {\n regionTopScore = regionTopScore.concat(\n new Array(7 - regionTopScore.length).fill({ template: true })\n )\n }\n\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className={'flex justify-between items-start gap-2 grow'}>\n <div className=\"flex flex-col items-start justify-between text-xl font-bold grow h-full\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <Avatar\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-4 h-52\">\n <Avatar\n className={'h-52 w-52 rounded-md'}\n src={score.song.cover}\n fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col items-start justify-between grow w-full\">\n <div className=\"flex space-x-2 items-center text-sm\">\n <Avatar\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center\">\n <HeartPulse className=\"h-3 w-3\" />\n <span>{bsMap.metadata.bpm.toFixed(0)}</span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>\n {score.song.id.toLowerCase().replaceAll('x', '')}\n </span>\n </div>\n\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n <div className=\"flex items-center text-ellipsis col-span-2 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 justify-between font-normal\">\n <Progressbar\n value={bsMap.stats.score * 100}\n // className=\"h-1.5\"\n // containerClassName=\"h-1.5\"\n />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n </div>\n <div className={'text-lg min-w-60 flex flex-col leading-6'}>\n <div className=\"flex justify-between items-center\">\n <span> # {score.pp.toFixed(2)} PP</span>\n <span> # {score.rank}</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n {/*diff code */}\n <div className=\"text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 \">\n {bsMap.versions[0].diffs\n .filter((it) => it.characteristic === 'Standard')\n .map((diff) => (\n <RankDifficulty\n difficulty={diff.difficulty}\n star={diff.stars}\n blStar={diff.blStars}\n current={\n score?.difficulty?.modeName === diff?.characteristic &&\n score?.difficulty?.difficultyName === diff?.difficulty\n }\n key={diff.difficulty}\n />\n ))}\n </div>\n\n {/*acc graph*/}\n <div className=\"align-end mt-2 mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={240}\n width={480}\n />\n {/*<ScoreGraph scoreId={score.id} scoreInfo={score} />*/}\n </div>\n </div>\n <div className={'flex justify-between gap-2 items-start mt-auto'}>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Global Rank\n </div>\n {aroundScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank={false}\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank={false} key={idx} />\n )\n )}\n </div>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Region Top Rank\n </div>\n {regionTopScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank key={idx} />\n )\n )}\n </div>\n </div>\n </div>\n </div>\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/bl-score-with-rank.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Check,\n Key,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n HeartPulse,\n} from 'lucide-react'\nimport ScoreGraph from '../components/scoregraph'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\nimport {\n BlRankScoreItem,\n ScoreItemSkeleton,\n} from '@/components/components/bl-rank-score-item'\nimport { RankDifficulty } from '@/components/components/RankDifficulty'\nimport { Avatar } from '@/components/components/base/avatar'\nimport { formatDuration, formatTime } from '@/components/utils'\nimport Progressbar from '@/components/components/progressbar'\n\ninterface BLScoreProps {\n score: Score\n aroundScores: Score[]\n regionTopScores: Score[]\n bsMap: BSMap\n difficulties: any[]\n statistic: any\n bsor: BSOR\n bg: string\n}\n\nexport default function BLRankScore({\n score,\n aroundScores,\n regionTopScores,\n difficulties,\n bsMap,\n statistic,\n bsor,\n bg,\n}: BLScoreProps) {\n let aroundScore = aroundScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n let regionTopScore = regionTopScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n if (aroundScore.length < 7) {\n aroundScore = aroundScore.concat(\n new Array(7 - aroundScore.length).fill({ template: true })\n )\n }\n if (regionTopScore.length < 7) {\n regionTopScore = regionTopScore.concat(\n new Array(7 - regionTopScore.length).fill({ template: true })\n )\n }\n\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className={'flex justify-between items-start gap-2 grow'}>\n <div className=\"flex flex-col items-start justify-between text-xl font-bold grow h-full\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <Avatar\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-4 h-52\">\n <Avatar\n className={'h-52 w-52 rounded-md'}\n src={score.song.cover}\n fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col items-start justify-between grow w-full\">\n <div className=\"flex space-x-2 items-center text-sm\">\n <Avatar\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center\">\n <HeartPulse className=\"h-3 w-3\" />\n <span>{bsMap.metadata.bpm.toFixed(0)}</span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>\n {score.song.id.toLowerCase().replaceAll('x', '')}\n </span>\n </div>\n\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n <div className=\"flex items-center text-ellipsis col-span-2 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 justify-between font-normal\">\n <Progressbar\n value={bsMap.stats.score * 100}\n // className=\"h-1.5\"\n // containerClassName=\"h-1.5\"\n />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n </div>\n <div className={'text-lg min-w-60 flex flex-col leading-6'}>\n <div className=\"flex justify-between items-center\">\n <span> # {score.pp.toFixed(2)} PP</span>\n <span> # {score.rank}</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n {/*diff code */}\n <div className=\"text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 \">\n {bsMap.versions[0].diffs\n .filter((it) => it.characteristic === 'Standard')\n .map((diff) => (\n <RankDifficulty\n difficulty={diff.difficulty}\n star={diff.stars}\n blStar={diff.blStars}\n current={\n score?.difficulty?.modeName === diff?.characteristic &&\n score?.difficulty?.difficultyName === diff?.difficulty\n }\n key={diff.difficulty}\n />\n ))}\n </div>\n\n {/*acc graph*/}\n <div className=\"align-end mt-2 mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={240}\n width={480}\n />\n {/*<ScoreGraph scoreId={score.id} scoreInfo={score} />*/}\n </div>\n </div>\n <div className={'flex justify-between gap-2 items-start mt-auto'}>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Global Rank\n </div>\n {aroundScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank={false}\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank={false} key={idx} />\n )\n )}\n </div>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Region Top Rank\n </div>\n {regionTopScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank key={idx} />\n )\n )}\n </div>\n </div>\n </div>\n </div>\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import React from "react";
|
1
2
|
import {
|
2
3
|
BarChart,
|
3
4
|
Check,
|
@@ -11,7 +12,6 @@ import {
|
|
11
12
|
import { diffConv, formatDuration, formatTime } from "../utils/index.js";
|
12
13
|
import Progressbar from "../components/progressbar.js";
|
13
14
|
import ScoreGraph from "../components/scoregraph.js";
|
14
|
-
import React from "react";
|
15
15
|
function BLScore({
|
16
16
|
score,
|
17
17
|
bsMap,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/pages/bl-score.tsx"],"sourcesContent":["import {\n BarChart,\n Check,\n Key,\n Star,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n} from 'lucide-react'\nimport { diffConv, formatDuration, formatTime } from '../utils'\nimport Progressbar from '../components/progressbar'\nimport ScoreGraph from '../components/scoregraph'\nimport React from 'react'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\n\ninterface BLScoreProps {\n score: Score\n bsMap: BSMap\n statistic: any\n bsor: BSOR\n qrcodeUrl: string\n}\n\nexport function BLScore({\n score,\n bsMap,\n statistic,\n bsor,\n qrcodeUrl,\n}: BLScoreProps) {\n const bg = 'https://www.loliapi.com/acg/pc/'\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[400px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className=\"flex space-x-4 items-center justify-between text-xl font-bold\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <img\n loading={'eager'}\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n // fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div\n className={'w-[100px] flex items-center justify-center flex-col'}\n >\n <img\n src={qrcodeUrl}\n width={80}\n height={80}\n className={'w-[80px] aspect-square'}\n />\n <span className={'text-xs'}>replay</span>\n </div>\n </div>\n <div className=\"flex space-x-4 h-40\">\n <img\n className={'h-40 w-40 rounded-md'}\n src={score.song.cover}\n // fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col justify-between\">\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-2 items-center text-sm\">\n <img\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n // fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs grid grid-cols-3 gap-1 *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center text-ellipsis col-span-3 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>{diffConv(score.difficulty.difficultyName)}</span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{score.difficulty.stars?.toFixed(2) ?? 'none'} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{score.song.id.toLowerCase().replaceAll('x', '')}</span>\n </div>\n\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 text-xs font-normal\">\n <Progressbar value={bsMap.stats.score * 100} />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n </div>\n </div>\n </div>\n <div className=\"text-xl font-bold pt-2\">\n <div className=\"flex justify-between\">\n <span> # {score.rank}</span>\n <span>{score.pp.toFixed(2)} PP</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n <div className=\"align-end mt-auto mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={192}\n width={400}\n />\n </div>\n </div>\n\n <img\n src={bg}\n className={'inset-0 rounded-lg absolute h-full object-cover'}\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/bl-score.tsx"],"sourcesContent":["import React from 'react'\nimport {\n BarChart,\n Check,\n Key,\n Star,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n} from 'lucide-react'\nimport { diffConv, formatDuration, formatTime } from '../utils'\nimport Progressbar from '../components/progressbar'\nimport ScoreGraph from '../components/scoregraph'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\n\ninterface BLScoreProps {\n score: Score\n bsMap: BSMap\n statistic: any\n bsor: BSOR\n qrcodeUrl: string\n}\n\nexport function BLScore({\n score,\n bsMap,\n statistic,\n bsor,\n qrcodeUrl,\n}: BLScoreProps) {\n const bg = 'https://www.loliapi.com/acg/pc/'\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[400px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className=\"flex space-x-4 items-center justify-between text-xl font-bold\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <img\n loading={'eager'}\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n // fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div\n className={'w-[100px] flex items-center justify-center flex-col'}\n >\n <img\n src={qrcodeUrl}\n width={80}\n height={80}\n className={'w-[80px] aspect-square'}\n />\n <span className={'text-xs'}>replay</span>\n </div>\n </div>\n <div className=\"flex space-x-4 h-40\">\n <img\n className={'h-40 w-40 rounded-md'}\n src={score.song.cover}\n // fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col justify-between\">\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-2 items-center text-sm\">\n <img\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n // fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs grid grid-cols-3 gap-1 *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center text-ellipsis col-span-3 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>{diffConv(score.difficulty.difficultyName)}</span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{score.difficulty.stars?.toFixed(2) ?? 'none'} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{score.song.id.toLowerCase().replaceAll('x', '')}</span>\n </div>\n\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 text-xs font-normal\">\n <Progressbar value={bsMap.stats.score * 100} />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n </div>\n </div>\n </div>\n <div className=\"text-xl font-bold pt-2\">\n <div className=\"flex justify-between\">\n <span> # {score.rank}</span>\n <span>{score.pp.toFixed(2)} PP</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n <div className=\"align-end mt-auto mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={192}\n width={400}\n />\n </div>\n </div>\n\n <img\n src={bg}\n className={'inset-0 rounded-lg absolute h-full object-cover'}\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
|
@@ -1,7 +1,7 @@
|
|
1
|
+
import React from "react";
|
1
2
|
import Flags, { EarchIcon } from "../components/flag.js";
|
2
3
|
import { twJoin } from "../utils/tw-join.js";
|
3
4
|
import ScoreItem from "../components/ss-score-item.js";
|
4
|
-
import React from "react";
|
5
5
|
function SSPlayerPage({
|
6
6
|
leaderItems,
|
7
7
|
scoreUser,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["import Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/services/api/interfaces/scoresaber'\
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["import React from 'react'\nimport Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/services/api/interfaces/scoresaber'\n\ninterface SSPlayerProps {\n leaderItems: ScoreSaberItem[]\n scoreUser: ScoreSaberUser\n params?: Record<string, string>\n bg: string\n}\n\nexport default function SSPlayerPage({\n leaderItems,\n scoreUser,\n bg,\n params,\n}: SSPlayerProps) {\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex space-x-4 pb-2'}>\n <img\n className={'h-32 w-32 rounded-md'}\n src={scoreUser.profilePicture}\n loading={'eager'}\n // fallback={scoreUser.name.slice(0, 1)}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{scoreUser.name}</span>\n <div className={'flex space-x-2 text-md font-bold items-center'}>\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {scoreUser.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={scoreUser.country} />\n <span># {scoreUser.countryRank}</span>\n </span>\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {scoreUser.pp.toFixed(3)} PP\n </div>\n </div>\n <div\n className={\n 'text-4xl pl-40 items-center flex text-gray-100 opacity-70'\n }\n >\n <span>coming soon, ... maybe?</span>\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {leaderItems.map((item, idx) => (\n <ScoreItem scoreItem={item} key={idx} />\n ))}\n </div>\n </div>\n\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,OAAO,SAAS,iBAAiB;AACjC,SAAS,cAAc;AACvB,OAAO,eAAe;AAUP,SAAR,aAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAEF,IAAG;AAAA;AAAA,IAEH;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGF,oCAAC,SAAI,WAAW,yBACd;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,KAAK,UAAU;AAAA,UACf,SAAS;AAAA;AAAA,MAEX,GACA,oCAAC,SAAI,WAAW,mCACd,oCAAC,UAAK,WAAW,wBAAuB,UAAU,IAAK,GACvD,oCAAC,SAAI,WAAW,mDACd,oCAAC,UAAK,WAAU,iCACd,oCAAC,eAAU,GACX,oCAAC,cAAK,MAAG,UAAU,IAAK,CAC1B,GACA,oCAAC,UAAK,WAAU,iCACd,oCAAC,SAAM,gBAAgB,UAAU,SAAS,GAC1C,oCAAC,cAAK,MAAG,UAAU,WAAY,CACjC,CACF,GACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,QAEC,UAAU,GAAG,QAAQ,CAAC;AAAA,QAAE;AAAA,MAC3B,CACF,GACA;AAAA,QAAC;AAAA;AAAA,UACC,WACE;AAAA;AAAA,QAGF,oCAAC,cAAK,yBAAuB;AAAA,MAC/B,CACF;AAAA,MACA,oCAAC,SAAI,WAAW,4BACb,YAAY,IAAI,CAAC,MAAM,QACtB,oCAAC,aAAU,WAAW,MAAM,KAAK,KAAK,CACvC,CACH;AAAA,IACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WACE;AAAA,QAEF,SAAS;AAAA;AAAA,IACX;AAAA,EACF,CACF;AAEJ;","names":[]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "beatsaber-bot-core",
|
3
3
|
"description": "Beatsaber bot",
|
4
|
-
"version": "0.3.0-rc.
|
4
|
+
"version": "0.3.0-rc.10",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
7
7
|
],
|
@@ -26,25 +26,15 @@
|
|
26
26
|
"require": "./dist/cjs/interface/**/*.js",
|
27
27
|
"import": "./dist/esm/interface/**/*.js"
|
28
28
|
},
|
29
|
-
"./
|
29
|
+
"./services": {
|
30
30
|
"types": "./dist/types/index.d.ts",
|
31
|
-
"require": "./dist/cjs/
|
32
|
-
"import": "./dist/esm/
|
31
|
+
"require": "./dist/cjs/services/*.js",
|
32
|
+
"import": "./dist/esm/services/*.js"
|
33
33
|
},
|
34
|
-
"./
|
34
|
+
"./services/*": {
|
35
35
|
"types": "./dist/types/index.d.ts",
|
36
|
-
"require": "./dist/cjs/
|
37
|
-
"import": "./dist/esm/
|
38
|
-
},
|
39
|
-
"./infra": {
|
40
|
-
"types": "./dist/types/index.d.ts",
|
41
|
-
"require": "./dist/cjs/infra/index.js",
|
42
|
-
"import": "./dist/esm/infra/index.js"
|
43
|
-
},
|
44
|
-
"./infra/*": {
|
45
|
-
"types": "./dist/types/index.d.ts",
|
46
|
-
"require": "./dist/cjs/infra/*/index.js",
|
47
|
-
"import": "./dist/esm/infra/*/index.js"
|
36
|
+
"require": "./dist/cjs/services/*",
|
37
|
+
"import": "./dist/esm/services/*"
|
48
38
|
}
|
49
39
|
},
|
50
40
|
"keywords": [
|
@@ -56,6 +46,7 @@
|
|
56
46
|
"access": "public"
|
57
47
|
},
|
58
48
|
"dependencies": {
|
49
|
+
"typeid-js": "1.2.0",
|
59
50
|
"@aws-sdk/client-s3": "^3.840.0",
|
60
51
|
"@ktfun/styled-qr-code-node": "^1.6.5",
|
61
52
|
"chart.js": "^4.5.0",
|