nfx-ui 0.1.5 → 0.3.0
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/events.cjs.map +1 -1
- package/dist/events.d.ts +17 -19
- package/dist/events.mjs.map +1 -1
- package/package.json +1 -1
package/dist/events.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.cjs","names":[],"sources":["../src/events/EventEmitter.ts"],"sourcesContent":["/**\n * 通用事件发射器(按事件名注册/注销/触发)\n * Generic event emitter: subscribe, unsubscribe, and emit by event name.\n *\n * @example
|
|
1
|
+
{"version":3,"file":"events.cjs","names":[],"sources":["../src/events/EventEmitter.ts"],"sourcesContent":["/**\n * 通用事件发射器(按事件名注册/注销/触发)\n * Generic event emitter: subscribe, unsubscribe, and emit by event name.\n * PayloadMap 支持:void(无参)、单类型(单参)、元组(多参)。\n *\n * @example 无 PayloadMap(全部无参)\n * ```ts\n * const events = defineEvents({ A: \"a\", B: \"b\" });\n * class Em extends EventEmitter<EventNamesOf<typeof events>> { constructor() { super(events); } }\n * const em = new Em(); em.on(events.A, () => {}); em.emit(events.A);\n * ```\n * @example 单参\n * ```ts\n * type Map = { FOO: string };\n * class Em extends EventEmitter<\"FOO\", Map> { ... }\n * em.on(events.FOO, (x) => console.log(x)); em.emit(events.FOO, \"hi\");\n * ```\n * @example 多参(PayloadMap[K] 为元组)\n * ```ts\n * type Map = { LOG: [string, number] };\n * em.on(events.LOG, (msg, level) => {}); em.emit(events.LOG, \"ok\", 1);\n * ```\n */\n\nimport type { Defined } from \"@/types\";\n\n/** 内部存储用回调类型。Internal storage type for listeners. */\ntype EventCallback<Args extends unknown[] = unknown[]> = (...args: Args) => void;\n\n/** 将 PayloadMap[K] 规范为参数元组:void→[],单类型 T→[T],已是元组则不变。Normalize payload to args tuple for emit/on. */\ntype ToArgs<P> = P extends void ? [] : P extends unknown[] ? P : [P];\n\n/** 由 defineEvents 返回的「已规范事件名对象」类型;constructor 只接受此类型。 */\ntype DefinedEvents<T extends Record<string, string>> = Defined<T, \"events\">;\n\n/** 从 events 对象推导出事件名联合类型。Event name union from an events key-value object. */\ntype EventNamesOf<T> = T extends Defined<infer O, \"events\"> ? O[keyof O] : T extends Record<string, string> ? T[keyof T] : never;\n\n/**\n * 规范创建「一级 key-value」事件名对象:仅允许 key → 字符串 value,禁止嵌套(类型约束)。\n * 返回 DefinedEvents<T>,供 EventEmitter 构造使用。\n * Define events object: one-level key-value (string values), no nested objects (type-only). Returns DefinedEvents<T> for EventEmitter.\n *\n * @param events - 事件名 key-value 对象。Event name key-value object (e.g. { FOO: \"DOMAIN:FOO\" }).\n * @returns DefinedEvents<E>,仅此类型可传入 EventEmitter 构造。DefinedEvents<E>; only this type is accepted by EventEmitter constructor.\n * @example\n * ```ts\n * const routerEvents = defineEvents({ NAVIGATE: \"ROUTER:NAVIGATE\", NAVIGATE_BACK: \"ROUTER:NAVIGATE_BACK\" });\n * class RouterEmitter extends EventEmitter<EventNamesOf<typeof routerEvents>> { constructor() { super(routerEvents); } }\n * ```\n */\nfunction defineEvents<E extends Record<string, string>>(events: E): DefinedEvents<E> {\n return events as DefinedEvents<E>;\n}\n\nfunction createListenersMap<E extends string>(eventNames: readonly E[]): Record<E, Set<EventCallback>> {\n const map = {} as Record<E, Set<EventCallback>>;\n for (const e of eventNames) {\n map[e] = new Set();\n }\n return map;\n}\n\n/**\n * 泛型 EventEmitter:构造函数仅接受 defineEvents 返回的 DefinedEvents 类型,提供 on / off / emit。\n * PayloadMap[K] 可为 void(无参)、单类型 T(单参)、或元组 [A, B, ...](多参),统一规范为参数列表。\n * PayloadMap[K] can be void (no args), single type T (one arg), or tuple [A, B, ...] (multi arg).\n *\n * @param events - 须为 defineEvents(...) 的返回值(DefinedEvents)。Must be the return value of defineEvents(...) (DefinedEvents).\n */\nclass EventEmitter<E extends string, PayloadMap extends Record<E, unknown> = Record<E, void>> {\n private listeners: Record<E, Set<EventCallback>>;\n\n constructor(events: DefinedEvents<Record<string, E>>) {\n this.listeners = createListenersMap(Object.values(events as Record<string, E>));\n }\n\n /**\n * 注册事件监听;回调参数由 PayloadMap[K] 规范为 ...args(无参/单参/多参均支持)。\n * Register a listener; callback args are normalized from PayloadMap[K] (void / single / tuple).\n */\n on<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void {\n this.listeners[event].add(callback as EventCallback);\n }\n\n /**\n * 移除事件监听(需与 on 时同一引用)。\n * Remove a listener (same reference as passed to on).\n */\n off<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void {\n this.listeners[event].delete(callback as EventCallback);\n }\n\n /**\n * 触发事件;参数与 PayloadMap[K] 一致:void 无参,T 单参,[A,B] 多参。\n * Emit an event; args match PayloadMap[K]: void → no args, T → one arg, [A,B] → spread.\n */\n emit<K extends E>(event: K, ...args: ToArgs<PayloadMap[K]>): void {\n this.listeners[event].forEach((cb) => cb(...args));\n }\n}\n\nexport { EventEmitter, defineEvents };\nexport type { EventCallback, DefinedEvents, EventNamesOf };\n"],"mappings":"mEAmDA,SAAS,EAA+C,EAA6B,CACnF,OAAO,EAGT,SAAS,EAAqC,EAAyD,CACrG,MAAM,EAAM,CAAA,EACZ,UAAW,KAAK,EACd,EAAI,CAAA,EAAK,IAAI,IAEf,OAAO,EAUT,IAAM,EAAN,KAA8F,CAC5F,UAEA,YAAY,EAA0C,CACpD,KAAK,UAAY,EAAmB,OAAO,OAAO,CAAA,CAA4B,EAOhF,GAAgB,EAAU,EAA0D,CAClF,KAAK,UAAU,CAAA,EAAO,IAAI,CAAA,EAO5B,IAAiB,EAAU,EAA0D,CACnF,KAAK,UAAU,CAAA,EAAO,OAAO,CAAA,EAO/B,KAAkB,KAAa,EAAmC,CAChE,KAAK,UAAU,CAAA,EAAO,QAAS,GAAO,EAAG,GAAG,CAAA,CAAK"}
|
package/dist/events.d.ts
CHANGED
|
@@ -25,42 +25,40 @@ export declare type DefinedEvents<T extends Record<string, string>> = Defined<T,
|
|
|
25
25
|
*/
|
|
26
26
|
export declare function defineEvents<E extends Record<string, string>>(events: E): DefinedEvents<E>;
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
export declare type EventCallback = (...args:
|
|
28
|
+
/** 内部存储用回调类型。Internal storage type for listeners. */
|
|
29
|
+
export declare type EventCallback<Args extends unknown[] = unknown[]> = (...args: Args) => void;
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* 泛型 EventEmitter:构造函数仅接受 defineEvents 返回的 DefinedEvents 类型,提供 on / off / emit。
|
|
33
|
-
*
|
|
33
|
+
* PayloadMap[K] 可为 void(无参)、单类型 T(单参)、或元组 [A, B, ...](多参),统一规范为参数列表。
|
|
34
|
+
* PayloadMap[K] can be void (no args), single type T (one arg), or tuple [A, B, ...] (multi arg).
|
|
34
35
|
*
|
|
35
36
|
* @param events - 须为 defineEvents(...) 的返回值(DefinedEvents)。Must be the return value of defineEvents(...) (DefinedEvents).
|
|
36
37
|
*/
|
|
37
|
-
export declare class EventEmitter<E extends string> {
|
|
38
|
+
export declare class EventEmitter<E extends string, PayloadMap extends Record<E, unknown> = Record<E, void>> {
|
|
38
39
|
private listeners;
|
|
39
40
|
constructor(events: DefinedEvents<Record<string, E>>);
|
|
40
41
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* @param event - 事件名。Event name.
|
|
44
|
-
* @param callback - 回调。Callback (...args) => void.
|
|
42
|
+
* 注册事件监听;回调参数由 PayloadMap[K] 规范为 ...args(无参/单参/多参均支持)。
|
|
43
|
+
* Register a listener; callback args are normalized from PayloadMap[K] (void / single / tuple).
|
|
45
44
|
*/
|
|
46
|
-
on(event:
|
|
45
|
+
on<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void;
|
|
47
46
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @param event - 事件名。Event name.
|
|
51
|
-
* @param callback - 要移除的回调(需与 on 时同一引用)。Callback to remove (same reference as passed to on).
|
|
47
|
+
* 移除事件监听(需与 on 时同一引用)。
|
|
48
|
+
* Remove a listener (same reference as passed to on).
|
|
52
49
|
*/
|
|
53
|
-
off(event:
|
|
50
|
+
off<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void;
|
|
54
51
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @param event - 事件名。Event name.
|
|
58
|
-
* @param args - 传给监听器的参数。Arguments passed to listeners.
|
|
52
|
+
* 触发事件;参数与 PayloadMap[K] 一致:void 无参,T 单参,[A,B] 多参。
|
|
53
|
+
* Emit an event; args match PayloadMap[K]: void → no args, T → one arg, [A,B] → spread.
|
|
59
54
|
*/
|
|
60
|
-
emit(event:
|
|
55
|
+
emit<K extends E>(event: K, ...args: ToArgs<PayloadMap[K]>): void;
|
|
61
56
|
}
|
|
62
57
|
|
|
63
58
|
/** 从 events 对象推导出事件名联合类型。Event name union from an events key-value object. */
|
|
64
59
|
export declare type EventNamesOf<T> = T extends Defined<infer O, "events"> ? O[keyof O] : T extends Record<string, string> ? T[keyof T] : never;
|
|
65
60
|
|
|
61
|
+
/** 将 PayloadMap[K] 规范为参数元组:void→[],单类型 T→[T],已是元组则不变。Normalize payload to args tuple for emit/on. */
|
|
62
|
+
declare type ToArgs<P> = P extends void ? [] : P extends unknown[] ? P : [P];
|
|
63
|
+
|
|
66
64
|
export { }
|
package/dist/events.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.mjs","names":[],"sources":["../src/events/EventEmitter.ts"],"sourcesContent":["/**\n * 通用事件发射器(按事件名注册/注销/触发)\n * Generic event emitter: subscribe, unsubscribe, and emit by event name.\n *\n * @example
|
|
1
|
+
{"version":3,"file":"events.mjs","names":[],"sources":["../src/events/EventEmitter.ts"],"sourcesContent":["/**\n * 通用事件发射器(按事件名注册/注销/触发)\n * Generic event emitter: subscribe, unsubscribe, and emit by event name.\n * PayloadMap 支持:void(无参)、单类型(单参)、元组(多参)。\n *\n * @example 无 PayloadMap(全部无参)\n * ```ts\n * const events = defineEvents({ A: \"a\", B: \"b\" });\n * class Em extends EventEmitter<EventNamesOf<typeof events>> { constructor() { super(events); } }\n * const em = new Em(); em.on(events.A, () => {}); em.emit(events.A);\n * ```\n * @example 单参\n * ```ts\n * type Map = { FOO: string };\n * class Em extends EventEmitter<\"FOO\", Map> { ... }\n * em.on(events.FOO, (x) => console.log(x)); em.emit(events.FOO, \"hi\");\n * ```\n * @example 多参(PayloadMap[K] 为元组)\n * ```ts\n * type Map = { LOG: [string, number] };\n * em.on(events.LOG, (msg, level) => {}); em.emit(events.LOG, \"ok\", 1);\n * ```\n */\n\nimport type { Defined } from \"@/types\";\n\n/** 内部存储用回调类型。Internal storage type for listeners. */\ntype EventCallback<Args extends unknown[] = unknown[]> = (...args: Args) => void;\n\n/** 将 PayloadMap[K] 规范为参数元组:void→[],单类型 T→[T],已是元组则不变。Normalize payload to args tuple for emit/on. */\ntype ToArgs<P> = P extends void ? [] : P extends unknown[] ? P : [P];\n\n/** 由 defineEvents 返回的「已规范事件名对象」类型;constructor 只接受此类型。 */\ntype DefinedEvents<T extends Record<string, string>> = Defined<T, \"events\">;\n\n/** 从 events 对象推导出事件名联合类型。Event name union from an events key-value object. */\ntype EventNamesOf<T> = T extends Defined<infer O, \"events\"> ? O[keyof O] : T extends Record<string, string> ? T[keyof T] : never;\n\n/**\n * 规范创建「一级 key-value」事件名对象:仅允许 key → 字符串 value,禁止嵌套(类型约束)。\n * 返回 DefinedEvents<T>,供 EventEmitter 构造使用。\n * Define events object: one-level key-value (string values), no nested objects (type-only). Returns DefinedEvents<T> for EventEmitter.\n *\n * @param events - 事件名 key-value 对象。Event name key-value object (e.g. { FOO: \"DOMAIN:FOO\" }).\n * @returns DefinedEvents<E>,仅此类型可传入 EventEmitter 构造。DefinedEvents<E>; only this type is accepted by EventEmitter constructor.\n * @example\n * ```ts\n * const routerEvents = defineEvents({ NAVIGATE: \"ROUTER:NAVIGATE\", NAVIGATE_BACK: \"ROUTER:NAVIGATE_BACK\" });\n * class RouterEmitter extends EventEmitter<EventNamesOf<typeof routerEvents>> { constructor() { super(routerEvents); } }\n * ```\n */\nfunction defineEvents<E extends Record<string, string>>(events: E): DefinedEvents<E> {\n return events as DefinedEvents<E>;\n}\n\nfunction createListenersMap<E extends string>(eventNames: readonly E[]): Record<E, Set<EventCallback>> {\n const map = {} as Record<E, Set<EventCallback>>;\n for (const e of eventNames) {\n map[e] = new Set();\n }\n return map;\n}\n\n/**\n * 泛型 EventEmitter:构造函数仅接受 defineEvents 返回的 DefinedEvents 类型,提供 on / off / emit。\n * PayloadMap[K] 可为 void(无参)、单类型 T(单参)、或元组 [A, B, ...](多参),统一规范为参数列表。\n * PayloadMap[K] can be void (no args), single type T (one arg), or tuple [A, B, ...] (multi arg).\n *\n * @param events - 须为 defineEvents(...) 的返回值(DefinedEvents)。Must be the return value of defineEvents(...) (DefinedEvents).\n */\nclass EventEmitter<E extends string, PayloadMap extends Record<E, unknown> = Record<E, void>> {\n private listeners: Record<E, Set<EventCallback>>;\n\n constructor(events: DefinedEvents<Record<string, E>>) {\n this.listeners = createListenersMap(Object.values(events as Record<string, E>));\n }\n\n /**\n * 注册事件监听;回调参数由 PayloadMap[K] 规范为 ...args(无参/单参/多参均支持)。\n * Register a listener; callback args are normalized from PayloadMap[K] (void / single / tuple).\n */\n on<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void {\n this.listeners[event].add(callback as EventCallback);\n }\n\n /**\n * 移除事件监听(需与 on 时同一引用)。\n * Remove a listener (same reference as passed to on).\n */\n off<K extends E>(event: K, callback: (...args: ToArgs<PayloadMap[K]>) => void): void {\n this.listeners[event].delete(callback as EventCallback);\n }\n\n /**\n * 触发事件;参数与 PayloadMap[K] 一致:void 无参,T 单参,[A,B] 多参。\n * Emit an event; args match PayloadMap[K]: void → no args, T → one arg, [A,B] → spread.\n */\n emit<K extends E>(event: K, ...args: ToArgs<PayloadMap[K]>): void {\n this.listeners[event].forEach((cb) => cb(...args));\n }\n}\n\nexport { EventEmitter, defineEvents };\nexport type { EventCallback, DefinedEvents, EventNamesOf };\n"],"mappings":"AAmDA,SAAS,EAA+C,GAA6B;AACnF,SAAO;;AAGT,SAAS,EAAqC,GAAyD;AACrG,QAAM,IAAM,CAAA;AACZ,aAAW,KAAK,EACd,CAAA,EAAI,CAAA,IAAK,oBAAI,IAAA;AAEf,SAAO;;AAUT,IAAM,IAAN,MAA8F;AAAA,EAC5F;AAAA,EAEA,YAAY,GAA0C;AACpD,SAAK,YAAY,EAAmB,OAAO,OAAO,CAAA,CAA4B;AAAA;EAOhF,GAAgB,GAAU,GAA0D;AAClF,SAAK,UAAU,CAAA,EAAO,IAAI,CAAA;AAAA;EAO5B,IAAiB,GAAU,GAA0D;AACnF,SAAK,UAAU,CAAA,EAAO,OAAO,CAAA;AAAA;EAO/B,KAAkB,MAAa,GAAmC;AAChE,SAAK,UAAU,CAAA,EAAO,QAAA,CAAS,MAAO,EAAG,GAAG,CAAA,CAAK;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nfx-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Unified frontend UI library for the NFX product family: shared React components, design tokens, theme variables, and layout primitives for a consistent look and behavior across NFX console and other apps.",
|
|
6
6
|
"repository": {
|