@bit.rhplus/signal 0.0.11 → 0.0.13

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.
@@ -35,17 +35,21 @@ export function SignalProvider({
35
35
 
36
36
 
37
37
  React.useEffect(() => {
38
- if (!connection) return;
38
+ if (!connection) {
39
+ return;
40
+ }
41
+
39
42
 
40
43
  const startConnection = async () => {
41
44
  try {
42
45
  await connection.start();
46
+
43
47
  connection.on("Signal", message => {
44
- // Removed console.log for production
45
48
  emit("Signal", message);
46
49
  });
50
+
47
51
  } catch (e) {
48
- // Removed console.error for production
52
+ console.error('[SignalProvider] Failed to start connection:', e);
49
53
  }
50
54
  };
51
55
 
@@ -54,7 +58,7 @@ export function SignalProvider({
54
58
  /* eslint-disable consistent-return */
55
59
  return () => {
56
60
  connection.stop().catch(e => {
57
- // Removed console.error for production
61
+ console.error('[SignalProvider] Error stopping connection:', e);
58
62
  });
59
63
  };
60
64
  }, [connection, emit]);
@@ -21,25 +21,25 @@ export function SignalProvider({ children, authority, endpoint, accessToken, req
21
21
  setConnection(newConnection);
22
22
  }, [accessToken]); // Oprava: odstraněná nadbytečná čárka ve závislostech
23
23
  React.useEffect(() => {
24
- if (!connection)
24
+ if (!connection) {
25
25
  return;
26
+ }
26
27
  const startConnection = async () => {
27
28
  try {
28
29
  await connection.start();
29
30
  connection.on("Signal", message => {
30
- // Removed console.log for production
31
31
  emit("Signal", message);
32
32
  });
33
33
  }
34
34
  catch (e) {
35
- // Removed console.error for production
35
+ console.error('[SignalProvider] Failed to start connection:', e);
36
36
  }
37
37
  };
38
38
  startConnection();
39
39
  /* eslint-disable consistent-return */
40
40
  return () => {
41
41
  connection.stop().catch(e => {
42
- // Removed console.error for production
42
+ console.error('[SignalProvider] Error stopping connection:', e);
43
43
  });
44
44
  };
45
45
  }, [connection, emit]);
@@ -1 +1 @@
1
- {"version":3,"file":"SignalProvider.js","sourceRoot":"","sources":["../SignalProvider.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEvD,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,WAAW,GAAG,KAAK,EACpB;IACC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,mBAAmB,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,CAAC,uCAAuC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAI,oBAAoB,EAAE;aAC7C,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;aACrB,sBAAsB,EAAE;aACxB,gBAAgB,CAAC,QAAQ,CAAC;aAC1B,KAAK,EAAE,CAAC;QAEX,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,sDAAsD;IAGzE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;gBACzB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;oBAChC,qCAAqC;oBACrC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,uCAAuC;YACzC,CAAC;QACH,CAAC,CAAC;QAEF,eAAe,EAAE,CAAC;QAElB,sCAAsC;QACtC,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC1B,uCAAuC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAC1C,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAChC,SAAS;oBACT,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,uCAAuC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAC1C,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SignalProvider.js","sourceRoot":"","sources":["../SignalProvider.jsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEventEmitter.js","sourceRoot":"","sources":["../useEventEmitter.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,EAAE;YACV,MAAM,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QACnF,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"useEventEmitter.js","sourceRoot":"","sources":["../useEventEmitter.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE5D,OAAO,GAAG,EAAE;YACV,MAAM,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QACnF,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;AACpB,CAAC"}
@@ -1,2 +1,2 @@
1
- export function useSignalListeners(eventNames: any, callback: any): void;
2
- export function useSignalListener(eventName: any, callback: any): void;
1
+ export function useSignalListeners(eventNames: any, callback: any, enableConsole?: boolean): void;
2
+ export function useSignalListener(eventName: any, callback: any, enableConsole?: boolean): void;
@@ -1,17 +1,32 @@
1
+ /* eslint-disable */
1
2
  import * as React from "react";
2
3
  import { SignalContext } from "./SignalProvider";
3
4
  // Hook pro poslech na více signálů (pole eventNames)
4
- export function useSignalListeners(eventNames, callback) {
5
+ export function useSignalListeners(eventNames, callback, enableConsole = false) {
5
6
  // Uložíme callback do refu, aby se aktualizoval při každé změně
6
7
  const listenerCallback = React.useRef(callback);
8
+ const consoleRef = React.useRef(enableConsole);
9
+ const eventNamesRef = React.useRef(eventNames);
7
10
  const { on } = React.useContext(SignalContext);
8
- // Přihlášení a odhlášení od signálů
11
+ // Aktualizace refů při každém renderu
9
12
  React.useEffect(() => {
10
- // Ujistíme se, že ref se aktualizuje kdykoli se změní callback
11
13
  listenerCallback.current = callback;
14
+ consoleRef.current = enableConsole;
15
+ eventNamesRef.current = eventNames;
16
+ });
17
+ // Přihlášení a odhlášení od signálů - spustí se pouze jednou
18
+ React.useEffect(() => {
19
+ if (!on) {
20
+ console.warn('[useSignalListeners] 4. No "on" function - cannot subscribe!');
21
+ return;
22
+ }
12
23
  // Funkce, která se spustí, když přijde signál
13
24
  const onSignal = (data) => {
14
- if (eventNames.includes(data.eventName)) {
25
+ if (eventNamesRef.current.includes(data.eventName)) {
26
+ // Logování pokud je console === true
27
+ if (consoleRef.current === true) {
28
+ console.log('[SignalR]', data.eventName, data);
29
+ }
15
30
  listenerCallback.current(data);
16
31
  }
17
32
  };
@@ -20,11 +35,11 @@ export function useSignalListeners(eventNames, callback) {
20
35
  return () => {
21
36
  unsubscribe();
22
37
  };
23
- }, [eventNames, callback, on]); // Přidáme eventNames jako závislost
38
+ }, [on]); // Pouze 'on' jako závislost - registruje se jen jednou
24
39
  }
25
40
  // Hook pro poslech na jeden signál
26
- export function useSignalListener(eventName, callback) {
41
+ export function useSignalListener(eventName, callback, enableConsole = false) {
27
42
  // Voláme rozšířenou funkci s jedním eventName zabaleným do pole
28
- useSignalListeners([eventName], callback);
43
+ useSignalListeners([eventName], callback, enableConsole);
29
44
  }
30
45
  //# sourceMappingURL=useSignalListener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSignalListener.js","sourceRoot":"","sources":["../useSignalListener.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAAC,UAAU,EAAE,QAAQ;IACrD,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE/C,oCAAoC;IACpC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,+DAA+D;QAC/D,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC;QAEpC,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3C,6DAA6D;QAC7D,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,oCAAoC;AACtE,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,iBAAiB,CAAC,SAAS,EAAE,QAAQ;IACnD,gEAAgE;IAChE,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"useSignalListener.js","sourceRoot":"","sources":["../useSignalListener.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK;IAC5E,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE/C,sCAAsC;IACtC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC;QACpC,UAAU,CAAC,OAAO,GAAG,aAAa,CAAC;QACnC,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,qCAAqC;gBACrC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACjD,CAAC;gBACD,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,6DAA6D;QAC7D,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uDAAuD;AACnE,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK;IAC1E,gEAAgE;IAChE,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bit.rhplus/signal",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "homepage": "https://bit.cloud/remote-scope/signal",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "remote-scope",
8
8
  "name": "signal",
9
- "version": "0.0.11"
9
+ "version": "0.0.13"
10
10
  },
11
11
  "dependencies": {
12
12
  "@microsoft/signalr": "8.0.0"
@@ -5,18 +5,19 @@ export function useEventEmitter() {
5
5
  const listeners = React.useRef(new Map());
6
6
 
7
7
  const emit = React.useCallback((event, data) => {
8
- const eventListenersToEmit = listeners.current.get(event) || [];
8
+ const eventListenersToEmit = listeners.current.get(event) || [];
9
9
  eventListenersToEmit.forEach(listener => listener(data));
10
10
  }, [])
11
11
 
12
12
  const on = React.useCallback((event, listener) => {
13
13
  const eventListeners = listeners.current.get(event) || [];
14
14
  listeners.current.set(event, [...eventListeners, listener]);
15
+
15
16
  return () => {
16
17
  const eventListenersToRemove = listeners.current.get(event) || [];
17
18
  listeners.current.set(event, eventListenersToRemove.filter(l => l !== listener));
18
19
  }
19
- })
20
+ })
20
21
 
21
22
  return {emit, on};
22
23
  }
@@ -1,35 +1,50 @@
1
+ /* eslint-disable */
1
2
  import * as React from "react";
2
3
  import { SignalContext } from "./SignalProvider";
3
4
 
4
5
  // Hook pro poslech na více signálů (pole eventNames)
5
- export function useSignalListeners(eventNames, callback) {
6
+ export function useSignalListeners(eventNames, callback, enableConsole = false) {
6
7
  // Uložíme callback do refu, aby se aktualizoval při každé změně
7
8
  const listenerCallback = React.useRef(callback);
9
+ const consoleRef = React.useRef(enableConsole);
10
+ const eventNamesRef = React.useRef(eventNames);
8
11
  const { on } = React.useContext(SignalContext);
9
12
 
10
- // Přihlášení a odhlášení od signálů
11
- React.useEffect(() => {
12
- // Ujistíme se, že ref se aktualizuje kdykoli se změní callback
13
+ // Aktualizace refů při každém renderu
14
+ React.useEffect(() => {
13
15
  listenerCallback.current = callback;
16
+ consoleRef.current = enableConsole;
17
+ eventNamesRef.current = eventNames;
18
+ });
19
+
20
+ // Přihlášení a odhlášení od signálů - spustí se pouze jednou
21
+ React.useEffect(() => {
22
+ if (!on) {
23
+ console.warn('[useSignalListeners] 4. No "on" function - cannot subscribe!');
24
+ return;
25
+ }
14
26
 
15
27
  // Funkce, která se spustí, když přijde signál
16
28
  const onSignal = (data) => {
17
- if (eventNames.includes(data.eventName)) {
29
+ if (eventNamesRef.current.includes(data.eventName)) {
30
+ // Logování pokud je console === true
31
+ if (consoleRef.current === true) {
32
+ console.log('[SignalR]', data.eventName, data);
33
+ }
18
34
  listenerCallback.current(data);
19
35
  }
20
36
  };
21
37
 
22
38
  const unsubscribe = on("Signal", onSignal);
23
-
24
39
  // Při unmountu komponenty se odhlásíme od poslechu na signál
25
40
  return () => {
26
41
  unsubscribe();
27
42
  };
28
- }, [eventNames, callback, on]); // Přidáme eventNames jako závislost
43
+ }, [on]); // Pouze 'on' jako závislost - registruje se jen jednou
29
44
  }
30
45
 
31
46
  // Hook pro poslech na jeden signál
32
- export function useSignalListener(eventName, callback) {
47
+ export function useSignalListener(eventName, callback, enableConsole = false) {
33
48
  // Voláme rozšířenou funkci s jedním eventName zabaleným do pole
34
- useSignalListeners([eventName], callback);
49
+ useSignalListeners([eventName], callback, enableConsole);
35
50
  }