dsh-calorie 0.3.43 → 0.3.44
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/client.js +23 -19
- package/dist/client.js.map +1 -1
- package/package.json +2 -2
package/dist/client.js
CHANGED
|
@@ -1653,7 +1653,7 @@ window.__ModuleLoader__.load({
|
|
|
1653
1653
|
left: "0.5em",
|
|
1654
1654
|
right: "0.5em",
|
|
1655
1655
|
top: "8.8em",
|
|
1656
|
-
zIndex:
|
|
1656
|
+
zIndex: 20,
|
|
1657
1657
|
display: "flex",
|
|
1658
1658
|
justifyContent: "center",
|
|
1659
1659
|
pointerEvents: "auto"
|
|
@@ -1722,7 +1722,7 @@ window.__ModuleLoader__.load({
|
|
|
1722
1722
|
* 印章交互(悬停上浮高亮/按压回缩/焦点环/级别 tooltip)也住这里:scoped 类名,纯 CSS、无 hook。
|
|
1723
1723
|
* 悬停高亮须把糙边 url 原样带上(filter 单属性,另写会把糙边冲掉)。 */
|
|
1724
1724
|
function SealFilterDefs() {
|
|
1725
|
-
return react.createElement(react.Fragment, null, react.createElement("style", null, ".dshLifeSealBtn{position:relative;transition:transform 160ms ease-out,filter 160ms ease-out}.dshLifeSealBtn:hover{transform:translateY(-2px);filter:url(#dshLifeSealRoughEdge) brightness(1.12)}.dshLifeSealBtn:active{transform:translateY(0) scale(.96)}.dshLifeSealBtn:focus-visible{outline:2px solid #f5d97a;outline-offset:2px}.dshLifeSealBtn::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#241f19ee;color:#f8f1e2;font-size:.72em;letter-spacing:.1em;padding:.4em .9em;border-radius:.5em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 150ms ease;z-index:30}.dshLifeSealBtn:hover::after,.dshLifeSealBtn:focus-visible::after{opacity:1}"), react.createElement("svg", {
|
|
1725
|
+
return react.createElement(react.Fragment, null, react.createElement("style", null, ".dshLifeSealBtn{position:relative;transition:transform 160ms ease-out,filter 160ms ease-out}.dshLifeSealBtn:hover{transform:translateY(-2px);filter:url(#dshLifeSealRoughEdge) brightness(1.12)}.dshLifeSealBtn:active{transform:translateY(0) scale(.96)}.dshLifeSealBtn:focus-visible{outline:2px solid #f5d97a;outline-offset:2px}.dshLifeSealBtn::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#241f19ee;color:#f8f1e2;font-size:.72em;letter-spacing:.1em;padding:.4em .9em;border-radius:.5em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 150ms ease;z-index:30}.dshLifeSealBtn:hover::after,.dshLifeSealBtn:focus-visible::after{opacity:1}[data-ilife-press][data-ilife-close]{overflow:visible}[data-tip]{position:relative}[data-tip]::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#241f19ee;color:#f8f1e2;font-size:.72em;letter-spacing:.1em;padding:.4em .9em;border-radius:.5em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 150ms ease;z-index:60}[data-tip]:hover::after,[data-tip]:focus-within::after{opacity:1}.dshLifeSealSlot .dshLifeSealBtn::after{content:none}"), react.createElement("svg", {
|
|
1726
1726
|
width: 0,
|
|
1727
1727
|
height: 0,
|
|
1728
1728
|
"aria-hidden": true,
|
|
@@ -1996,31 +1996,33 @@ window.__ModuleLoader__.load({
|
|
|
1996
1996
|
silver: "inset 0 1px 0 #ffffffdd,inset 0 -2px 5px #0005,0 0 0 1px #6f767c",
|
|
1997
1997
|
gold: "inset 0 1px 0 #fff8d8dd,inset 0 -2px 5px #0005,0 0 0 1px #8a6a15,0 3px 14px #c9a22766"
|
|
1998
1998
|
};
|
|
1999
|
+
/** 级别 tooltip 那一句(印本体与面板槽位共用一份定义):档位名 + 档位话。 */
|
|
2000
|
+
function sealTipOf(tier) {
|
|
2001
|
+
return (tier === "copper" ? "铜" : tier === "silver" ? "银" : "金") + "章 · " + TIER_TEXT[tier];
|
|
2002
|
+
}
|
|
1999
2003
|
/** 一枚印章(button,点章弹卷)。未知组合直接抛错,不静默退化。 */
|
|
2000
2004
|
function SealStamp(props) {
|
|
2001
2005
|
const palette = SEAL_PALETTE[props.role]?.[props.tier];
|
|
2002
2006
|
if (palette === void 0) throw new Error("未知印章组合:" + String(props.role) + "/" + String(props.tier));
|
|
2003
|
-
const style = {
|
|
2004
|
-
display: "inline-flex",
|
|
2005
|
-
alignItems: "center",
|
|
2006
|
-
cursor: "pointer",
|
|
2007
|
-
fontWeight: 800,
|
|
2008
|
-
lineHeight: 1.2,
|
|
2009
|
-
whiteSpace: "nowrap",
|
|
2010
|
-
filter: "url(#dshLifeSealRoughEdge)",
|
|
2011
|
-
...ROLE_BASE[props.role],
|
|
2012
|
-
background: palette.background,
|
|
2013
|
-
...palette.border === void 0 ? {} : { border: palette.border },
|
|
2014
|
-
...FACE_EXTRA[props.role][props.tier]
|
|
2015
|
-
};
|
|
2016
|
-
const tierName = props.tier === "copper" ? "铜" : props.tier === "silver" ? "银" : "金";
|
|
2017
2007
|
const buttonProps = {
|
|
2018
2008
|
type: "button",
|
|
2019
|
-
style
|
|
2009
|
+
style: {
|
|
2010
|
+
display: "inline-flex",
|
|
2011
|
+
alignItems: "center",
|
|
2012
|
+
cursor: "pointer",
|
|
2013
|
+
fontWeight: 800,
|
|
2014
|
+
lineHeight: 1.2,
|
|
2015
|
+
whiteSpace: "nowrap",
|
|
2016
|
+
filter: "url(#dshLifeSealRoughEdge)",
|
|
2017
|
+
...ROLE_BASE[props.role],
|
|
2018
|
+
background: palette.background,
|
|
2019
|
+
...palette.border === void 0 ? {} : { border: palette.border },
|
|
2020
|
+
...FACE_EXTRA[props.role][props.tier]
|
|
2021
|
+
},
|
|
2020
2022
|
className: "dshLifeSealBtn",
|
|
2021
2023
|
"aria-label": props.label,
|
|
2022
2024
|
"aria-haspopup": "dialog",
|
|
2023
|
-
"data-tip":
|
|
2025
|
+
"data-tip": sealTipOf(props.tier),
|
|
2024
2026
|
onClick: props.onSelect
|
|
2025
2027
|
};
|
|
2026
2028
|
if (props.role !== "plugin") return react.createElement("button", buttonProps, props.label);
|
|
@@ -2157,7 +2159,7 @@ window.__ModuleLoader__.load({
|
|
|
2157
2159
|
width: "38%",
|
|
2158
2160
|
height: "9em",
|
|
2159
2161
|
pointerEvents: "none",
|
|
2160
|
-
zIndex:
|
|
2162
|
+
zIndex: 15
|
|
2161
2163
|
},
|
|
2162
2164
|
/** `.ic-title{font-size:13.5px;font-weight:640}`——字号按 60 行那条锚点换算成 `1.08em`。
|
|
2163
2165
|
* #996:卡片标题行改用 `TitleBlock`(见 `title-seal.ts`,原型 A 锁 1.15em/700+0.85em/400),
|
|
@@ -2771,6 +2773,8 @@ window.__ModuleLoader__.load({
|
|
|
2771
2773
|
const zOfRole = (role) => role === "help" ? 4 : role === "skill" ? 3 : 2;
|
|
2772
2774
|
const overlay = seals.length === 0 ? null : react.createElement("div", { style: S.sealOverlay }, react.createElement(SealFilterDefs, {}), ...order.map((dataIndex, slot) => react.createElement("span", {
|
|
2773
2775
|
key: seals[dataIndex].role + ":" + seals[dataIndex].tier,
|
|
2776
|
+
className: "dshLifeSealSlot",
|
|
2777
|
+
"data-tip": sealTipOf(seals[dataIndex].tier),
|
|
2774
2778
|
style: (() => {
|
|
2775
2779
|
const g = slotGeom(slot, seed);
|
|
2776
2780
|
return {
|