dsh-token-gauge 0.1.3 → 0.1.5
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/lib/client.mjs +15 -11
- package/package.json +1 -1
- package/src/client.ts +34 -11
package/lib/client.mjs
CHANGED
|
@@ -32,7 +32,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
var client_exports = {};
|
|
33
33
|
__export(client_exports, {
|
|
34
34
|
apply: () => apply,
|
|
35
|
-
inject: () => inject,
|
|
36
35
|
name: () => name
|
|
37
36
|
});
|
|
38
37
|
module.exports = __toCommonJS(client_exports);
|
|
@@ -948,17 +947,22 @@ function GaugeTab() {
|
|
|
948
947
|
return import_react.default.createElement("div", { ref: gaugeRef, className: "tg-tab-root" });
|
|
949
948
|
}
|
|
950
949
|
var name = PLUGIN_ID;
|
|
951
|
-
var inject = ["betterSidebar"];
|
|
952
950
|
function apply(ctx) {
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
return;
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
951
|
+
const disposeSidebar = ctx.inject(["betterSidebar"], (sidebarCtx) => {
|
|
952
|
+
const sidebar = sidebarCtx.betterSidebar;
|
|
953
|
+
if (!sidebar || typeof sidebar.registerTab !== "function") return;
|
|
954
|
+
const unregister = sidebar.registerTab({
|
|
955
|
+
id: PLUGIN_ID,
|
|
956
|
+
title: "Token \u4EEA\u8868\u76D8",
|
|
957
|
+
single: true,
|
|
958
|
+
component: GaugeTab
|
|
959
|
+
});
|
|
960
|
+
return () => {
|
|
961
|
+
if (typeof unregister === "function") unregister();
|
|
962
|
+
};
|
|
962
963
|
});
|
|
964
|
+
return () => {
|
|
965
|
+
if (typeof disposeSidebar === "function") disposeSidebar();
|
|
966
|
+
};
|
|
963
967
|
}
|
|
964
968
|
; return module.exports; } });
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -204,16 +204,39 @@ function GaugeTab(): React.ReactElement {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
export const name = PLUGIN_ID
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
207
|
+
|
|
208
|
+
// 兄弟 bundle 提供的服务(betterSidebar)在本机这个 cordis 里两种读法都不行,必须用
|
|
209
|
+
// ctx.inject 回调模式。原因(已实测坐实,见本文件末尾注释与 dsh-plugin-guide 官方
|
|
210
|
+
// postmortem):
|
|
211
|
+
// 1) 插件级 `export const inject = ['betterSidebar']`
|
|
212
|
+
// -> cordis 把整插件 defer,单趟 boot 的 assertEntriesActivated 检查点在
|
|
213
|
+
// loader.await() 后跑,此时兄弟 bundle 的 provide 还没落到本 fiber,
|
|
214
|
+
// 直接判 "pending (waiting for service: betterSidebar)"(0.1.3 实测)。
|
|
215
|
+
// 2) apply 顶层 `ctx.get('betterSidebar')` 或 `ctx.betterSidebar`
|
|
216
|
+
// -> 0811 cordis 是「严格注入」:未声明 inject 直接读服务属性,走 ancestor-only
|
|
217
|
+
// fiber 遍历到 root 找不到就抛
|
|
218
|
+
// "cannot get property betterSidebar without inject"(0.1.4 实测)。
|
|
219
|
+
// 正确姿势:插件级不声明任何 inject(插件立即激活,不 pending),改用
|
|
220
|
+
// ctx.inject(['betterSidebar'], cb) —— 回调拿到的子上下文里 betterSidebar 是已注入的
|
|
221
|
+
// 合法属性,读它不触发守卫;且注册被延迟到服务就绪那一刻(兄弟 bundle 提供得早或晚
|
|
222
|
+
// 都能注册上)。生态插件 @linxin666/dsh-client-ui-aionui-panel 用的正是这个模式。
|
|
223
|
+
export function apply(ctx: any): (() => void) | void {
|
|
224
|
+
const disposeSidebar = ctx.inject(['betterSidebar'], (sidebarCtx: any) => {
|
|
225
|
+
const sidebar = sidebarCtx.betterSidebar
|
|
226
|
+
if (!sidebar || typeof sidebar.registerTab !== 'function') return
|
|
227
|
+
const unregister = sidebar.registerTab({
|
|
228
|
+
id: PLUGIN_ID,
|
|
229
|
+
title: 'Token 仪表盘',
|
|
230
|
+
single: true,
|
|
231
|
+
component: GaugeTab,
|
|
232
|
+
})
|
|
233
|
+
return () => {
|
|
234
|
+
if (typeof unregister === 'function') unregister()
|
|
235
|
+
}
|
|
218
236
|
})
|
|
237
|
+
|
|
238
|
+
// 返回插件级 disposer:卸载时一并撤掉未完成的注入
|
|
239
|
+
return () => {
|
|
240
|
+
if (typeof disposeSidebar === 'function') disposeSidebar()
|
|
241
|
+
}
|
|
219
242
|
}
|