xxf_react 0.5.2 → 0.5.3
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.
|
@@ -89,11 +89,15 @@ declare class EventBus {
|
|
|
89
89
|
*/
|
|
90
90
|
private ensureInitialized;
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
92
|
+
* 分发事件到对应的处理器(用于跨 Tab 消息)
|
|
93
93
|
*/
|
|
94
94
|
private dispatch;
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
96
|
+
* 调用事件处理器
|
|
97
|
+
*/
|
|
98
|
+
private invokeHandlers;
|
|
99
|
+
/**
|
|
100
|
+
* 发送事件(同时触发本地和跨 Tab 监听)
|
|
97
101
|
* @param event 事件实例
|
|
98
102
|
*
|
|
99
103
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/event-bus/EventBus.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;AAEpC;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,SAAS;IAC3B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAE5B;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,MAAM;IAUxB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxB;AAED;;;;;;;;;;;;;;GAcG;AACH,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAE/C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO;IAIP;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,SAAc,GAAG,QAAQ;IAOhD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/event-bus/EventBus.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;AAEpC;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,SAAS;IAC3B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAE5B;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,MAAM;IAUxB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxB;AAED;;;;;;;;;;;;;;GAcG;AACH,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAE/C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO;IAIP;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,SAAc,GAAG,QAAQ;IAOhD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;;;;;;OAQG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBlD;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,CAAC,CAAC,SAAS,SAAS,EAClB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACpB,MAAM,IAAI;IAoBb;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,SAAS,EACnB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACpB,IAAI;IAYP;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EACpB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACpB,MAAM,IAAI;IAQb;;;OAGG;IACH,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAMxE;;;OAGG;IACH,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM;IAKxE;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAM5D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CASjC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,UAAyB,CAAA"}
|
|
@@ -101,7 +101,7 @@ class EventBus {
|
|
|
101
101
|
this.isInitialized = true;
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
|
-
*
|
|
104
|
+
* 分发事件到对应的处理器(用于跨 Tab 消息)
|
|
105
105
|
*/
|
|
106
106
|
dispatch(type, data) {
|
|
107
107
|
const EventClass = this.eventRegistry.get(type);
|
|
@@ -112,6 +112,15 @@ class EventBus {
|
|
|
112
112
|
return;
|
|
113
113
|
// 还原事件对象
|
|
114
114
|
const event = Object.assign(Object.create(EventClass.prototype), data);
|
|
115
|
+
this.invokeHandlers(type, event);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 调用事件处理器
|
|
119
|
+
*/
|
|
120
|
+
invokeHandlers(type, event) {
|
|
121
|
+
const handlers = this.handlers.get(type);
|
|
122
|
+
if (!handlers || handlers.size === 0)
|
|
123
|
+
return;
|
|
115
124
|
handlers.forEach(handler => {
|
|
116
125
|
try {
|
|
117
126
|
handler(event);
|
|
@@ -122,7 +131,7 @@ class EventBus {
|
|
|
122
131
|
});
|
|
123
132
|
}
|
|
124
133
|
/**
|
|
125
|
-
*
|
|
134
|
+
* 发送事件(同时触发本地和跨 Tab 监听)
|
|
126
135
|
* @param event 事件实例
|
|
127
136
|
*
|
|
128
137
|
* @example
|
|
@@ -132,12 +141,14 @@ class EventBus {
|
|
|
132
141
|
*/
|
|
133
142
|
emit(event) {
|
|
134
143
|
this.ensureInitialized();
|
|
144
|
+
const EventClass = event.constructor;
|
|
145
|
+
const type = EventClass.getType();
|
|
146
|
+
// 1. 触发本地 handlers(当前 Tab)
|
|
147
|
+
this.invokeHandlers(type, event);
|
|
148
|
+
// 2. 发送到 BroadcastChannel(其他 Tab)
|
|
135
149
|
if (!this.channel) {
|
|
136
|
-
console.warn('[EventBus] Channel not available (SSR environment)');
|
|
137
150
|
return Promise.resolve();
|
|
138
151
|
}
|
|
139
|
-
const EventClass = event.constructor;
|
|
140
|
-
const type = EventClass.getType();
|
|
141
152
|
// 序列化事件数据(排除原型方法)
|
|
142
153
|
const data = Object.keys(event).reduce((acc, key) => {
|
|
143
154
|
acc[key] = event[key];
|