@allior/wmake-streamelements-events 0.0.1

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.
Files changed (98) hide show
  1. package/README.md +46 -0
  2. package/README_RU.md +46 -0
  3. package/dist/react/hooks/index.d.ts +4 -0
  4. package/dist/react/hooks/index.d.ts.map +1 -0
  5. package/dist/react/hooks/use-event-listener.d.ts +4 -0
  6. package/dist/react/hooks/use-event-listener.d.ts.map +1 -0
  7. package/dist/react/hooks/use-on-event-received.d.ts +44 -0
  8. package/dist/react/hooks/use-on-event-received.d.ts.map +1 -0
  9. package/dist/react/hooks/use-on-widget-load.d.ts +4 -0
  10. package/dist/react/hooks/use-on-widget-load.d.ts.map +1 -0
  11. package/dist/react/index.d.ts +4 -0
  12. package/dist/react/index.d.ts.map +1 -0
  13. package/dist/react/index.iife.js +2 -0
  14. package/dist/react/index.iife.js.map +1 -0
  15. package/dist/react/index.js +179 -0
  16. package/dist/react/index.js.map +1 -0
  17. package/dist/react/types/index.d.ts +2 -0
  18. package/dist/react/types/index.d.ts.map +1 -0
  19. package/dist/react/types/window-events.d.ts +3 -0
  20. package/dist/react/types/window-events.d.ts.map +1 -0
  21. package/dist/root/aggregate.d.ts +12 -0
  22. package/dist/root/aggregate.d.ts.map +1 -0
  23. package/dist/root/classifier.d.ts +9 -0
  24. package/dist/root/classifier.d.ts.map +1 -0
  25. package/dist/root/commands.d.ts +9 -0
  26. package/dist/root/commands.d.ts.map +1 -0
  27. package/dist/root/data/event-detail.d.ts +10 -0
  28. package/dist/root/data/event-detail.d.ts.map +1 -0
  29. package/dist/root/data/field-value.d.ts +3 -0
  30. package/dist/root/data/field-value.d.ts.map +1 -0
  31. package/dist/root/data/index.d.ts +3 -0
  32. package/dist/root/data/index.d.ts.map +1 -0
  33. package/dist/root/data/widget-load.d.ts +5 -0
  34. package/dist/root/data/widget-load.d.ts.map +1 -0
  35. package/dist/root/index.d.ts +10 -0
  36. package/dist/root/index.d.ts.map +1 -0
  37. package/dist/root/index.iife.js +2 -0
  38. package/dist/root/index.iife.js.map +1 -0
  39. package/dist/root/index.js +2692 -0
  40. package/dist/root/index.js.map +1 -0
  41. package/dist/root/keys.d.ts +6 -0
  42. package/dist/root/keys.d.ts.map +1 -0
  43. package/dist/root/message/event.d.ts +7 -0
  44. package/dist/root/message/event.d.ts.map +1 -0
  45. package/dist/root/message/index.d.ts +5 -0
  46. package/dist/root/message/index.d.ts.map +1 -0
  47. package/dist/root/message/message.d.ts +37 -0
  48. package/dist/root/message/message.d.ts.map +1 -0
  49. package/dist/root/message/roles.d.ts +4 -0
  50. package/dist/root/message/roles.d.ts.map +1 -0
  51. package/dist/root/message/tags.d.ts +69 -0
  52. package/dist/root/message/tags.d.ts.map +1 -0
  53. package/dist/root/sources/alerts.d.ts +162 -0
  54. package/dist/root/sources/alerts.d.ts.map +1 -0
  55. package/dist/root/sources/index.d.ts +5 -0
  56. package/dist/root/sources/index.d.ts.map +1 -0
  57. package/dist/root/sources/messages.d.ts +963 -0
  58. package/dist/root/sources/messages.d.ts.map +1 -0
  59. package/dist/root/sources/on-widget-load-detail.d.ts +542 -0
  60. package/dist/root/sources/on-widget-load-detail.d.ts.map +1 -0
  61. package/dist/root/types/index.d.ts +3 -0
  62. package/dist/root/types/index.d.ts.map +1 -0
  63. package/dist/root/types/on-event-received.d.ts +170 -0
  64. package/dist/root/types/on-event-received.d.ts.map +1 -0
  65. package/dist/root/types/on-widget-load.d.ts +135 -0
  66. package/dist/root/types/on-widget-load.d.ts.map +1 -0
  67. package/dist/root/window-event-map.d.ts +10 -0
  68. package/dist/root/window-event-map.d.ts.map +1 -0
  69. package/package.json +48 -0
  70. package/src/react/hooks/index.ts +3 -0
  71. package/src/react/hooks/use-event-listener.ts +17 -0
  72. package/src/react/hooks/use-on-event-received.ts +206 -0
  73. package/src/react/hooks/use-on-widget-load.ts +15 -0
  74. package/src/react/index.ts +3 -0
  75. package/src/react/types/index.ts +1 -0
  76. package/src/react/types/window-events.ts +6 -0
  77. package/src/root/aggregate.ts +258 -0
  78. package/src/root/classifier.ts +208 -0
  79. package/src/root/commands.ts +33 -0
  80. package/src/root/data/event-detail.ts +14 -0
  81. package/src/root/data/field-value.ts +2 -0
  82. package/src/root/data/index.ts +2 -0
  83. package/src/root/data/widget-load.ts +5 -0
  84. package/src/root/index.ts +9 -0
  85. package/src/root/keys.ts +14 -0
  86. package/src/root/message/event.ts +7 -0
  87. package/src/root/message/index.ts +4 -0
  88. package/src/root/message/message.ts +40 -0
  89. package/src/root/message/roles.ts +43 -0
  90. package/src/root/message/tags.ts +119 -0
  91. package/src/root/sources/alerts.ts +163 -0
  92. package/src/root/sources/index.ts +5 -0
  93. package/src/root/sources/messages.ts +1245 -0
  94. package/src/root/sources/on-widget-load-detail.ts +969 -0
  95. package/src/root/types/index.ts +2 -0
  96. package/src/root/types/on-event-received.ts +198 -0
  97. package/src/root/types/on-widget-load.ts +171 -0
  98. package/src/root/window-event-map.ts +11 -0
package/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # @allior/wmake-streamelements-events
2
+
3
+ **Language / Язык:** English | [Русский](README_RU.md)
4
+
5
+ Twitch/StreamElements subscription event normalizer for widgets (alerts).
6
+
7
+ - **shared** — classification and tiers: `parseTier`, `getCacheKey`, `classifyEvent`.
8
+ - **aggregate** — buffer by `activityGroup`, one normalized event per group (2.5 s timeout): `normalizeIncomingEvent`.
9
+
10
+ Ported from RishamonAlerts (event-normalizer-shared.js, event-normalizer-aggregate.js).
11
+
12
+ ## Installation
13
+
14
+ In the wmake monorepo the package is already in workspaces. From the root:
15
+
16
+ ```bash
17
+ bun install
18
+ bun run --filter @allior/wmake-streamelements-events build
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```ts
24
+ import {
25
+ normalizeIncomingEvent,
26
+ classifyEvent,
27
+ getCacheKey,
28
+ parseTier,
29
+ } from "@allior/wmake-streamelements-events";
30
+
31
+ // detail = { listener: "event", event: { type: "subscriber", ... } }
32
+ normalizeIncomingEvent(
33
+ detail,
34
+ { cacheSubs: cacheByType, broadcasterLogin: "mychannel" },
35
+ (normalized) => {
36
+ if (normalized) console.log(normalized);
37
+ },
38
+ );
39
+ ```
40
+
41
+ ## API
42
+
43
+ - `classifyEvent(detail)` — returns the classified object or `null`.
44
+ - `getCacheKey(detail)` — key for deduplication.
45
+ - `parseTier(raw)` — `{ tier: 0|1|2|3, tierText }`.
46
+ - `normalizeIncomingEvent(detail, options, onNormalized)` — buffers community-gift; for others calls `onNormalized` immediately (with cache).
package/README_RU.md ADDED
@@ -0,0 +1,46 @@
1
+ # @allior/wmake-events
2
+
3
+ Нормализатор событий подписок Twitch/StreamElements для виджетов (алерты).
4
+
5
+ - **shared** — классификация и тиры: `parseTier`, `getCacheKey`, `classifyEvent`.
6
+ - **aggregate** — буфер по `activityGroup`, один нормализованный ивент на группу (таймаут 2.5 с): `normalizeIncomingEvent`.
7
+
8
+ Перенесено из RishamonAlerts (event-normalizer-shared.js, event-normalizer-aggregate.js).
9
+
10
+ ## Установка
11
+
12
+ В монорепозитории wmake пакет уже в workspaces. Из корня:
13
+
14
+ ```bash
15
+ bun install
16
+ bun run --filter @allior/wmake-events build
17
+ ```
18
+
19
+ ## Использование
20
+
21
+ ```ts
22
+ import {
23
+ normalizeIncomingEvent,
24
+ classifyEvent,
25
+ getCacheKey,
26
+ parseTier,
27
+ } from "@allior/wmake-events";
28
+
29
+ // detail = { listener: "event", event: { type: "subscriber", ... } }
30
+ normalizeIncomingEvent(
31
+ detail,
32
+ { cacheSubs: cacheByType, broadcasterLogin: "mychannel" },
33
+ (normalized) => {
34
+ if (normalized) console.log(normalized);
35
+ },
36
+ );
37
+ ```
38
+
39
+ ## API
40
+
41
+ - `classifyEvent(detail)` — возвращает классифицированный объект или `null`.
42
+ - `getCacheKey(detail)` — ключ для дедупа.
43
+ - `parseTier(raw)` — `{ tier: 0|1|2|3, tierText }`.
44
+ - `normalizeIncomingEvent(detail, options, onNormalized)` — буферизует community-gift, для остальных вызывает `onNormalized` сразу (с учётом cache).
45
+
46
+ **[English](README.md)**
@@ -0,0 +1,4 @@
1
+ export * from "./use-event-listener.js";
2
+ export * from "./use-on-event-received.js";
3
+ export * from "./use-on-widget-load.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DependencyList } from "react";
2
+ import type { WindowEventKey, WindowEventListener } from "../types/window-events.js";
3
+ export declare function useEventListener<K extends WindowEventKey>(eventName: K, handler: WindowEventListener<K>, deps?: DependencyList): void;
4
+ //# sourceMappingURL=use-event-listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-event-listener.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-event-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,cAAc,EACvD,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN"}
@@ -0,0 +1,44 @@
1
+ import type { DependencyList } from "react";
2
+ import type { WindowEventListener } from "../types/window-events";
3
+ import type { CheerDetail, CommunityGiftPurchaseDetail, DonationDetail, FollowerDetail, RaidDetail, SubscriberDetail, SubscriberLatestDetail } from "@/root/types/on-event-received";
4
+ import type { WidgetButtonDetail } from "@/root/data/event-detail";
5
+ import type { MessageEvent } from "@/root/message";
6
+ /** Проверка, что detail — сообщение чата (listener "message"). */
7
+ export declare function isMessageEvent(d: unknown): d is MessageEvent;
8
+ /** Проверка, что detail — FollowerDetail (follower-latest). */
9
+ export declare function isFollowerDetail(d: unknown): d is FollowerDetail;
10
+ /** Проверка, что detail — CommunityGiftPurchaseDetail. */
11
+ export declare function isCommunityGiftPurchaseDetail(d: unknown): d is CommunityGiftPurchaseDetail;
12
+ /** Проверка, что detail — SubscriberLatestDetail. */
13
+ export declare function isSubscriberLatestDetail(d: unknown): d is SubscriberLatestDetail;
14
+ /** Проверка, что detail — SubscriberDetail (event type subscriber). */
15
+ export declare function isSubscriberDetail(d: unknown): d is SubscriberDetail;
16
+ /** Проверка, что detail — CheerDetail. */
17
+ export declare function isCheerDetail(d: unknown): d is CheerDetail;
18
+ /** Проверка, что detail — RaidDetail. */
19
+ export declare function isRaidDetail(d: unknown): d is RaidDetail;
20
+ /** Проверка, что detail — DonationDetail. */
21
+ export declare function isDonationDetail(d: unknown): d is DonationDetail;
22
+ /** Проверка, что detail — WidgetButtonDetail (event:test, widget-button). */
23
+ export declare function isWidgetButtonDetail(d: unknown): d is WidgetButtonDetail;
24
+ /** Общий хук на любое событие onEventReceived. */
25
+ export declare function useOnEventReceived(handler: WindowEventListener<"onEventReceived">, deps?: DependencyList): void;
26
+ /** Хук на сообщение чата (listener "message"). */
27
+ export declare function useOnMessageReceived(handler: (ev: CustomEvent<MessageEvent>) => void, deps?: DependencyList): void;
28
+ /** Хук на нажатие кнопки виджета (event:test, widget-button). В detail.event.field — имя поля кнопки. */
29
+ export declare function useOnWidgetButtonReceived(handler: (ev: CustomEvent<WidgetButtonDetail>) => void, deps?: DependencyList): void;
30
+ /** Хук на алерт follower-latest. */
31
+ export declare function useOnFollowerReceived(handler: (ev: CustomEvent<FollowerDetail>) => void, deps?: DependencyList): void;
32
+ /** Хук на алерт communityGiftPurchase. */
33
+ export declare function useOnCommunityGiftPurchaseReceived(handler: (ev: CustomEvent<CommunityGiftPurchaseDetail>) => void, deps?: DependencyList): void;
34
+ /** Хук на алерт subscriber-latest. */
35
+ export declare function useOnSubscriberLatestReceived(handler: (ev: CustomEvent<SubscriberLatestDetail>) => void, deps?: DependencyList): void;
36
+ /** Хук на алерт subscriber (self / подарок / продление). */
37
+ export declare function useOnSubscriberReceived(handler: (ev: CustomEvent<SubscriberDetail>) => void, deps?: DependencyList): void;
38
+ /** Хук на алерт cheer-latest (биты). */
39
+ export declare function useOnCheerReceived(handler: (ev: CustomEvent<CheerDetail>) => void, deps?: DependencyList): void;
40
+ /** Хук на алерт raid-latest. */
41
+ export declare function useOnRaidReceived(handler: (ev: CustomEvent<RaidDetail>) => void, deps?: DependencyList): void;
42
+ /** Хук на алерт donation. */
43
+ export declare function useOnDonationReceived(handler: (ev: CustomEvent<DonationDetail>) => void, deps?: DependencyList): void;
44
+ //# sourceMappingURL=use-on-event-received.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-event-received.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-on-event-received.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EACV,WAAW,EACX,2BAA2B,EAC3B,cAAc,EACd,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAE5D;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAEhE;AAED,0DAA0D;AAC1D,wBAAgB,6BAA6B,CAC3C,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,2BAA2B,CAGlC;AAED,qDAAqD;AACrD,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,sBAAsB,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAGpE;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAE1D;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAExD;AAED,6CAA6C;AAC7C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAEhE;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAGxE;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,EAC/C,IAAI,GAAE,cAAmB,GACxB,IAAI,CAEN;AAED,kDAAkD;AAClD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,KAAK,IAAI,EAChD,IAAI,GAAE,cAAmB,GACxB,IAAI,CAQN;AAED,yGAAyG;AACzG,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,kBAAkB,CAAC,KAAK,IAAI,EACtD,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC,KAAK,IAAI,EAClD,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN;AAED,0CAA0C;AAC1C,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,2BAA2B,CAAC,KAAK,IAAI,EAC/D,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN;AAED,sCAAsC;AACtC,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,IAAI,EAC1D,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,EACpD,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI,EAC/C,IAAI,GAAE,cAAmB,GACxB,IAAI,CAQN;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,EAC9C,IAAI,GAAE,cAAmB,GACxB,IAAI,CAQN;AAED,6BAA6B;AAC7B,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC,KAAK,IAAI,EAClD,IAAI,GAAE,cAAmB,GACxB,IAAI,CASN"}
@@ -0,0 +1,4 @@
1
+ import type { DependencyList } from "react";
2
+ import type { OnWidgetLoadEventDetails } from "@/root/types/on-widget-load";
3
+ export declare function useOnWidgetLoad(handler: (ev: CustomEvent<OnWidgetLoadEventDetails>) => void, deps?: DependencyList): void;
4
+ //# sourceMappingURL=use-on-widget-load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-widget-load.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-on-widget-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAG5E,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAC5D,IAAI,GAAE,cAAmB,GACxB,IAAI,CAMN"}
@@ -0,0 +1,4 @@
1
+ export * from "../root";
2
+ export * from "./hooks";
3
+ export * from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ (function(i,w){"use strict";function T(e){if(e==null)return{tier:0,tierText:""};const n=typeof e=="string"?e:String(e),t=parseInt(n,10);return isNaN(t)?{tier:0,tierText:n}:{tier:t>=3e3?3:t>=2e3?2:t>=1e3?1:0,tierText:n}}function A(e){const n=e.listener,t=e.event??{},r=t.activityGroup,a=t.activityId??t._id;return r?String(r):a?String(a):n==="subscriber-latest"&&t.bulkGifted?"sl-bulk-"+(t.sender??"")+"-"+(t.amount??"")+"-"+(t.tier??"")+"-"+(t._id??""):"sl-"+(t._id??t.activityId??"")}function x(e){const n=e.listener,t=e.event??{},r=t.data??t,a=T(r.tier??t.tier);if(n==="event"){if(t.type==="communityGiftPurchase"){const s=r.username&&String(r.username).toLowerCase()==="anonymous"||r.sender==="Anonymous";return{type:s?"community-gift-anonymous":"community-gift",tier:a.tier,tierText:a.tierText,totalAmount:parseInt(String(r.amount),10)||1,recipients:[],sender:s?void 0:r.sender??r.displayName??r.username,anonymousDisplayName:s?r.displayName??"Anonymous":void 0}}if(t.type==="subscriber"){const s=r.gifted===!0,c=r.sender,u=parseInt(String(r.amount),10)||1,d=r.username??r.displayName,m=t.activityGroup;if(c==="Anonymous"&&m)return{type:"community-gift-anonymous",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:a.tier,tierText:a.tierText};if(s&&c&&c!=="Anonymous"){if(!(r.communityGifted===!0||m!=null&&m!=="")){const o=String(r.message??"").indexOf("first Gift Sub")!==-1;return{type:"solo-sub-to-someone",sender:c,recipient:d??r.displayName,tier:a.tier,tierText:a.tierText,firstGiftInChannel:o}}return{type:"community-gift",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:a.tier,tierText:a.tierText}}return!s&&u>1?{type:"sub-renewal",name:d??r.displayName,months:u,tier:a.tier,tierText:a.tierText}:!s&&u===1?{type:"self-sub",name:d??r.displayName,tier:a.tier,tierText:a.tierText}:m?{type:"community-gift",_role:"recipient",activityGroup:m,recipient:d??r.displayName,tier:a.tier,tierText:a.tierText}:null}return null}if(n==="subscriber-latest"){const s=t.bulkGifted===!0,c=t.sender,u=t.name,d=parseInt(String(t.amount),10)||1,m=t.gifted===!0,p=t.isCommunityGift===!0||t.communityGifted===!0;if(s&&c==="Anonymous")return{type:"community-gift-anonymous",tier:a.tier,tierText:a.tierText,totalAmount:d,recipients:[]};if(s&&c)return{type:"community-gift",sender:c,tier:a.tier,tierText:a.tierText,totalAmount:d,recipients:[]};if(m&&!p&&c){const o=String(t.message??"").indexOf("first Gift Sub")!==-1;return{type:"solo-sub-to-someone",sender:c,recipient:u??"",tier:a.tier,tierText:a.tierText,firstGiftInChannel:o}}return!m&&d>1?{type:"sub-renewal",name:u??"",months:d,tier:a.tier,tierText:a.tierText}:!m&&d===1&&(c==null||u===c)?{type:"self-sub",name:u??"",tier:a.tier,tierText:a.tierText}:null}return null}const y=2500,l={},f={};function R(e,n){if(!e)return null;if(typeof e._has=="function"&&typeof e._set=="function")return e;const t=e[n];return t&&typeof t._has=="function"?t:null}function B(e,n,t,r){const a=R(t,n.type);a&&a._has(e)||(a&&a._set(e,!0),r(n))}function v(e,n,t,r){const a=l[e];if(!a)return;delete l[e],f[e]&&(clearTimeout(f[e]),delete f[e]);const s=a.purchase,c=a.subscribers??[],u=a.type,d=a.tier,m=a.tierText,p=a.totalAmount??c.length,o=c.map(g=>g.recipient??g.username??g.name).filter(Boolean),h=c[0],le=h==null?void 0:h.sender,Y=(s==null?void 0:s.sender)??a.sender??le;u==="community-gift"&&r&&Y===r||(u==="community-gift-anonymous"?B(e,{type:"community-gift-anonymous",tier:d,tierText:m,totalAmount:p,recipients:o,anonymousDisplayName:s==null?void 0:s.anonymousDisplayName},n,t):B(e,{type:"community-gift",sender:Y,tier:d,tierText:m,totalAmount:p,recipients:o},n,t))}function O(e,n,t){const r=n==null?void 0:n.cacheSubs,a=(n==null?void 0:n.broadcasterLogin)??"",s=x(e);if(!s){t(null);return}const c=R(r,s.type),u=A(e),d=e.event??{},m=d.data??d;if(s._role==="recipient"){const p=s.activityGroup??u;l[p]||(l[p]={type:s.type,subscribers:[],tier:s.tier,tierText:s.tierText,totalAmount:0}),f[p]&&clearTimeout(f[p]),f[p]=setTimeout(()=>{v(p,r,t,a)},y),l[p].subscribers.push({recipient:s.recipient,username:m.username,name:m.displayName,sender:m.sender}),l[p].totalAmount===0&&(l[p].totalAmount=1);return}if(s.type==="community-gift-anonymous"||s.type==="community-gift"){if(e.listener==="event"&&d.type==="communityGiftPurchase"){const o=d.activityGroup??(m&&m.activityGroup)??u;l[o]?(l[o].purchase=s,l[o].tier=s.tier,l[o].tierText=s.tierText,l[o].totalAmount=s.totalAmount??l[o].totalAmount,l[o].sender=s.sender,f[o]&&clearTimeout(f[o]),f[o]=setTimeout(()=>{v(o,r,t,a)},y)):(l[o]={type:s.type,purchase:s,subscribers:[],tier:s.tier,tierText:s.tierText,totalAmount:Number(s.totalAmount)||0,sender:s.sender},f[o]=setTimeout(()=>{v(o,r,t,a)},y));return}if(e.listener==="subscriber-latest"){const o=s;if(s.type==="community-gift"&&a&&o.sender===a){t(null);return}return}return}if(s.type==="self-sub"||s.type==="solo-sub-to-someone"||s.type==="sub-renewal"){if(c!=null&&c._has(u)){t(null);return}c&&c._set(u,!0);const p=s;if(s.type==="solo-sub-to-someone"&&a&&p.sender===a){t(null);return}t(s)}}const L={session:{data:{"follower-latest":{name:"imacanadiannn"},"follower-session":{count:0},"follower-week":{count:0},"follower-month":{count:0},"follower-goal":{amount:137},"follower-total":{count:118,activityId:"",sessionTop:!1},"subscriber-latest":{name:"",amount:0,tier:"",message:""},"subscriber-new-latest":{name:"",amount:0,message:""},"subscriber-resub-latest":{name:"",amount:0,message:""},"subscriber-gifted-latest":{name:"",amount:0,message:"",tier:"",sender:""},"subscriber-session":{count:0},"subscriber-new-session":{count:0},"subscriber-resub-session":{count:0},"subscriber-gifted-session":{count:0},"subscriber-week":{count:0},"subscriber-month":{count:0},"subscriber-goal":{amount:0},"subscriber-total":{count:0,activityId:"",sessionTop:!1},"subscriber-points":{amount:0,activityId:"",sessionTop:!1},"subscriber-alltime-gifter":{name:"",amount:0},"host-latest":{name:"",amount:0},"raid-latest":{name:"agnascor2",amount:6},"cheer-session":{amount:0},"cheer-week":{amount:0},"cheer-month":{amount:0},"cheer-total":{amount:0},"cheer-count":{count:0},"cheer-goal":{amount:0},"cheer-latest":{name:"",amount:0},"cheer-session-top-donation":{amount:0,name:""},"cheer-weekly-top-donation":{amount:0,name:""},"cheer-monthly-top-donation":{amount:0,name:""},"cheer-alltime-top-donation":{amount:0,name:""},"cheer-session-top-donator":{amount:0,name:""},"cheer-weekly-top-donator":{amount:0,name:""},"cheer-monthly-top-donator":{amount:0,name:""},"cheer-alltime-top-donator":{amount:0,name:""},"tip-latest":{name:"",amount:0},"tip-session-top-donation":{amount:0,name:""},"tip-weekly-top-donation":{name:"",amount:0},"tip-monthly-top-donation":{name:"",amount:0},"tip-alltime-top-donation":{name:"",amount:0},"tip-session-top-donator":{amount:0,name:""},"tip-weekly-top-donator":{name:"",amount:0},"tip-monthly-top-donator":{name:"",amount:0},"tip-alltime-top-donator":{name:"",amount:0},"tip-session":{amount:0},"tip-week":{amount:0},"tip-month":{amount:0},"tip-total":{amount:0},"tip-count":{count:0},"tip-goal":{amount:0},"merch-goal-orders":{amount:0},"merch-goal-items":{amount:0},"merch-goal-total":{amount:0},"merch-latest":{name:"",amount:0,items:[]},"charityCampaignDonation-latest":{name:"",amount:0},"charityCampaignDonation-weekly-top-donation":{name:"",amount:0},"charityCampaignDonation-monthly-top-donation":{name:"",amount:0},"charityCampaignDonation-alltime-top-donation":{name:"",amount:0},"charityCampaignDonation-weekly-top-donator":{name:"",amount:0},"charityCampaignDonation-monthly-top-donator":{name:"",amount:0},"charityCampaignDonation-alltime-top-donator":{name:"",amount:0},"cheerPurchase-latest":{name:"",amount:0},"cheerPurchase-weekly-top-donation":{name:"",amount:0},"cheerPurchase-monthly-top-donation":{name:"",amount:0},"cheerPurchase-alltime-top-donation":{name:"",amount:0},"cheerPurchase-weekly-top-donator":{name:"",amount:0},"cheerPurchase-monthly-top-donator":{name:"",amount:0},"cheerPurchase-alltime-top-donator":{name:"",amount:0},"superchat-latest":{name:"",amount:0},"superchat-weekly-top-donation":{name:"",amount:0},"superchat-monthly-top-donation":{name:"",amount:0},"superchat-alltime-top-donation":{name:"",amount:0},"superchat-weekly-top-donator":{name:"",amount:0},"superchat-monthly-top-donator":{name:"",amount:0},"superchat-alltime-top-donator":{name:"",amount:0},"superchat-session":{amount:0},"superchat-week":{amount:0},"superchat-month":{amount:0},"superchat-total":{amount:0},"superchat-count":{count:0},"superchat-goal":{amount:0},"purchase-latest":{name:"",amount:0,avatar:"",message:"",items:[]},"follower-recent":[{name:"imacanadiannn",createdAt:"2026-01-13T01:53:50.296Z",type:"follower"},{name:"piwo143",createdAt:"2026-01-13T01:51:39.472Z",type:"follower"},{name:"latvan_",createdAt:"2026-01-12T23:54:29.235Z",type:"follower"},{name:"wheinwait",createdAt:"2026-01-12T23:11:28.946Z",type:"follower"},{name:"agnascor2",createdAt:"2026-01-12T23:11:14.880Z",type:"follower"},{name:"sunlitetuts",createdAt:"2026-01-12T21:03:59.207Z",type:"follower"},{name:"ayanamya",createdAt:"2026-01-12T20:00:55.509Z",type:"follower"},{name:"hopeless28",createdAt:"2026-01-12T18:35:21.731Z",type:"follower"},{name:"kakoytoclown",createdAt:"2026-01-11T18:39:36.843Z",type:"follower"},{name:"dababe__jq1",createdAt:"2024-10-10T23:27:49.699Z",type:"follower"},{name:"jjjllkmf",createdAt:"2024-05-05T09:44:16.287Z",type:"follower"},{name:"d4c_valintine",createdAt:"2024-05-03T15:13:28.365Z",type:"follower"},{name:"angelbliss_",createdAt:"2024-04-30T20:07:23.132Z",type:"follower"},{name:"o1zich",createdAt:"2024-04-22T16:23:26.139Z",type:"follower"},{name:"nearbuziky",createdAt:"2024-04-19T19:21:27.569Z",type:"follower"},{name:"samirkasamsa",createdAt:"2024-04-19T17:06:38.963Z",type:"follower"},{name:"flip1mip",createdAt:"2024-04-19T17:06:18.276Z",type:"follower"},{name:"valerie_solo",createdAt:"2024-04-19T17:06:07.473Z",type:"follower"},{name:"sxaelence",createdAt:"2024-04-19T07:06:46.330Z",type:"follower"},{name:"avokadik99",createdAt:"2024-04-17T16:11:29.604Z",type:"follower"},{name:"blackvoronstream",createdAt:"2024-04-16T21:29:33.306Z",type:"follower"},{name:"baldejniyy",createdAt:"2024-04-16T21:29:09.647Z",type:"follower"},{name:"p3ch4n_ka",createdAt:"2024-04-16T16:37:31.841Z",type:"follower"},{name:"kakosik_bee",createdAt:"2024-04-16T15:56:27.435Z",type:"follower"},{name:"hikotoru",createdAt:"2024-04-16T15:13:25.226Z",type:"follower"}],"subscriber-recent":[],"host-recent":[],"raid-recent":[{name:"agnascor2",amount:6,createdAt:"2026-01-12T23:08:21.815Z",type:"raid"},{name:"justduckomgg",amount:7,createdAt:"2024-04-19T17:05:53.185Z",type:"raid"},{name:"veessmk",amount:6,createdAt:"2024-04-17T15:40:43.945Z",type:"raid"},{name:"night_sculptor",amount:12,createdAt:"2024-04-16T18:07:40.040Z",type:"raid"},{name:"pixiemays",amount:6,createdAt:"2024-04-16T16:37:24.433Z",type:"raid"},{name:"night_sculptor",amount:8,createdAt:"2024-04-14T18:31:20.049Z",type:"raid"},{name:"pixiemays",amount:19,createdAt:"2024-04-14T13:22:05.794Z",type:"raid"},{name:"pixiemays",amount:15,createdAt:"2024-04-12T17:03:36.115Z",type:"raid"},{name:"alechkavt",amount:9,createdAt:"2024-04-11T17:54:47.691Z",type:"raid"},{name:"pixiemays",amount:8,createdAt:"2024-04-11T14:10:49.548Z",type:"raid"},{name:"night_sculptor",amount:22,createdAt:"2024-04-09T16:13:41.195Z",type:"raid"},{name:"pixiemays",amount:5,createdAt:"2024-04-08T09:54:01.603Z",type:"raid"},{name:"aki_neki",amount:5,createdAt:"2024-04-07T21:52:45.919Z",type:"raid"},{name:"alechkavt",amount:11,createdAt:"2024-04-07T18:59:39.286Z",type:"raid"},{name:"veessmk",amount:15,createdAt:"2024-04-07T16:13:25.172Z",type:"raid"},{name:"veessmk",amount:10,createdAt:"2024-03-17T16:11:38.631Z",type:"raid"}],"charityCampaignDonation-recent":[],"cheer-recent":[],"cheerPurchase-recent":[],"superchat-recent":[],"tip-recent":[],"merch-recent":[],"channel-points-latest":{amount:0,message:"",name:"",redemption:""},"community-gift-latest":{amount:0,name:"",tier:""},"charityCampaignDonation-session-top-donation":{amount:0,name:""},"charityCampaignDonation-session-top-donator":{amount:0,name:""},"cheerPurchase-session-top-donation":{amount:0,name:""},"cheerPurchase-session-top-donator":{amount:0,name:""},"hypetrain-latest":{active:0,amount:0,level:0,levelChanged:0,name:"",type:""},"hypetrain-latest-top-contributors":[],"hypetrain-level-goal":{amount:0},"hypetrain-level-progress":{amount:0,percent:0},"hypetrain-total":{amount:0},"superchat-session-top-donation":{amount:0,name:""},"superchat-session-top-donator":{amount:0,name:""}},settings:{autoReset:!0,calendar:!1,resetOnStart:!1}},recents:[{name:"imacanadiannn",createdAt:"2026-01-13T01:53:50.296Z",type:"follower"},{name:"piwo143",createdAt:"2026-01-13T01:51:39.472Z",type:"follower"},{name:"latvan_",createdAt:"2026-01-12T23:54:29.235Z",type:"follower"},{name:"wheinwait",createdAt:"2026-01-12T23:11:28.946Z",type:"follower"},{name:"agnascor2",createdAt:"2026-01-12T23:11:14.880Z",type:"follower"},{name:"sunlitetuts",createdAt:"2026-01-12T21:03:59.207Z",type:"follower"},{name:"ayanamya",createdAt:"2026-01-12T20:00:55.509Z",type:"follower"},{name:"hopeless28",createdAt:"2026-01-12T18:35:21.731Z",type:"follower"},{name:"kakoytoclown",createdAt:"2026-01-11T18:39:36.843Z",type:"follower"},{name:"dababe__jq1",createdAt:"2024-10-10T23:27:49.699Z",type:"follower"},{name:"jjjllkmf",createdAt:"2024-05-05T09:44:16.287Z",type:"follower"},{name:"d4c_valintine",createdAt:"2024-05-03T15:13:28.365Z",type:"follower"},{name:"angelbliss_",createdAt:"2024-04-30T20:07:23.132Z",type:"follower"},{name:"o1zich",createdAt:"2024-04-22T16:23:26.139Z",type:"follower"},{name:"nearbuziky",createdAt:"2024-04-19T19:21:27.569Z",type:"follower"},{name:"samirkasamsa",createdAt:"2024-04-19T17:06:38.963Z",type:"follower"},{name:"flip1mip",createdAt:"2024-04-19T17:06:18.276Z",type:"follower"},{name:"valerie_solo",createdAt:"2024-04-19T17:06:07.473Z",type:"follower"},{name:"sxaelence",createdAt:"2024-04-19T07:06:46.330Z",type:"follower"},{name:"avokadik99",createdAt:"2024-04-17T16:11:29.604Z",type:"follower"},{name:"blackvoronstream",createdAt:"2024-04-16T21:29:33.306Z",type:"follower"},{name:"baldejniyy",createdAt:"2024-04-16T21:29:09.647Z",type:"follower"},{name:"p3ch4n_ka",createdAt:"2024-04-16T16:37:31.841Z",type:"follower"},{name:"kakosik_bee",createdAt:"2024-04-16T15:56:27.435Z",type:"follower"},{name:"hikotoru",createdAt:"2024-04-16T15:13:25.226Z",type:"follower"},{name:"agnascor2",amount:6,createdAt:"2026-01-12T23:08:21.815Z",type:"raid"},{name:"justduckomgg",amount:7,createdAt:"2024-04-19T17:05:53.185Z",type:"raid"},{name:"veessmk",amount:6,createdAt:"2024-04-17T15:40:43.945Z",type:"raid"},{name:"night_sculptor",amount:12,createdAt:"2024-04-16T18:07:40.040Z",type:"raid"},{name:"pixiemays",amount:6,createdAt:"2024-04-16T16:37:24.433Z",type:"raid"},{name:"night_sculptor",amount:8,createdAt:"2024-04-14T18:31:20.049Z",type:"raid"},{name:"pixiemays",amount:19,createdAt:"2024-04-14T13:22:05.794Z",type:"raid"},{name:"pixiemays",amount:15,createdAt:"2024-04-12T17:03:36.115Z",type:"raid"},{name:"alechkavt",amount:9,createdAt:"2024-04-11T17:54:47.691Z",type:"raid"},{name:"pixiemays",amount:8,createdAt:"2024-04-11T14:10:49.548Z",type:"raid"},{name:"night_sculptor",amount:22,createdAt:"2024-04-09T16:13:41.195Z",type:"raid"},{name:"pixiemays",amount:5,createdAt:"2024-04-08T09:54:01.603Z",type:"raid"},{name:"aki_neki",amount:5,createdAt:"2024-04-07T21:52:45.919Z",type:"raid"},{name:"alechkavt",amount:11,createdAt:"2024-04-07T18:59:39.286Z",type:"raid"},{name:"veessmk",amount:15,createdAt:"2024-04-07T16:13:25.172Z",type:"raid"},{name:"veessmk",amount:10,createdAt:"2024-03-17T16:11:38.631Z",type:"raid"}],currency:{code:"USD",name:"U.S. Dollar",symbol:"$"},channel:{username:"encry_s",apiToken:"HAHANOTNOW",id:"65ba7503dc0415cb368947b1",providerId:"485678132",avatar:"https://static-cdn.jtvnw.net/jtv_user_pictures/6fe93724-803a-4e5a-b58a-1d42fbc84661-profile_image-300x300.jpeg"},fieldData:{testMessageButton:"zaytri_dynamicchatbubbles",previewMode:!1,previewType:"random",previewMessage:"",theme:"animal-crossing",corner:"round",darkMode:!1,highlightStyle:"normal",actionStyle:"italics",maxWidth:400,maxHeight:300,fixedWidth:!1,positionMode:"list",listDirection:"bottom",listAlignment:"center",topEdge:!0,bottomEdge:!0,leftEdge:!0,rightEdge:!0,edgeDeviation:0,padding:30,animation:"dynamic",dynamicModifier:1.75,maxMessages:25,hideOutOfBounds:!0,lifetime:0,delay:1,googleFont:"Nunito",customFont:"",fontSize:18,fontWeight:"bold",textDirection:"ltr",useCustomBorderColors:!0,borderColor:"#fed400",nameColor:"#000000",useCustomMessageColors:!0,backgroundColor:"#fff3c0",textColor:"#000000",pronounsMode:"suffix",pronounsLowercase:!0,pronounsBadgeCustomColors:!1,pronounsBadgeBackgroundColor:"#000000",pronounsBadgeBorderColor:"#FFFFFF",pronounsBadgeTextColor:"#FFFFFF",showBadges:!0,largeEmotes:!0,ffzGlobal:!1,bttvGlobal:!1,emoteOnly:!1,highlightOnly:!1,allowedStrings:[],minMessages:0,messageCooldown:0,raidCooldown:0,raidMin:0,includeEveryone:!0,includeFollowers:"true",minFollowTime:1,includeSubs:!0,includeVIPs:!0,includeMods:!0,allowUserList:[],ignoreUserList:["StreamElements","Streamlabs","Nightbot","Sery_Bot"],ignorePrefixList:["!"],volume:50,soundGroup1:[],userLevelSoundGroup1:"everyone",specificUsersSoundGroup1:[],messageTypeSoundGroup1:"all",soundGroup2:[],userLevelSoundGroup2:"everyone",specificUsersSoundGroup2:[],messageTypeSoundGroup2:"all",soundGroup3:[],userLevelSoundGroup3:"everyone",specificUsersSoundGroup3:[],messageTypeSoundGroup3:"all",soundGroup4:[],userLevelSoundGroup4:"everyone",specificUsersSoundGroup4:[],messageTypeSoundGroup4:"all",soundGroup5:[],userLevelSoundGroup5:"everyone",specificUsersSoundGroup5:[],messageTypeSoundGroup5:"all",soundGroup6:[],userLevelSoundGroup6:"everyone",specificUsersSoundGroup6:[],messageTypeSoundGroup6:"all",soundGroup7:[],userLevelSoundGroup7:"everyone",specificUsersSoundGroup7:[],messageTypeSoundGroup7:"all",soundGroup8:[],userLevelSoundGroup8:"everyone",specificUsersSoundGroup8:[],messageTypeSoundGroup8:"all",soundGroup9:[],userLevelSoundGroup9:"everyone",specificUsersSoundGroup9:[],messageTypeSoundGroup9:"all",soundGroup10:[],userLevelSoundGroup10:"everyone",specificUsersSoundGroup10:[],messageTypeSoundGroup10:"all",widgetName:"Chat Bubbles",widgetAuthor:"Zaytri",widgetVersion:"2.12.0",widgetUpdateUrl:"https://github.com/zaytri/stream-elements-widgets/blob/main/DynamicChatBubbles",ignoreFirst:!0},overlay:{isEditorMode:!0,muted:!1}},D={follower:{listener:"follower-latest",event:{name:"An1by"}},communityGiftAnonymous:{listener:"event",event:{type:"communityGiftPurchase",provider:"twitch",channel:"663b10ba6cd449c4162a2230",activityGroup:"41a50a915794e4ae7cf5e600fd3445d4",data:{amount:2,username:"anonymous",displayName:"AnAnonymousGifter",tier:"2000",sender:"Anonymous"},_id:"699868d7df734989ec85d393",activityId:"699868d7df734989ec85d393"}},communityGift:{listener:"event",event:{type:"communityGiftPurchase",provider:"twitch",channel:"663b10ba6cd449c4162a2230",activityGroup:"841592c0bccbf3e1e7de71e1c8f4d9f0",data:{amount:1,username:"rishamon",displayName:"rishamon",tier:"1000",sender:"rishamon"},_id:"699867c7fef23197a6a089f5",activityId:"699867c7fef23197a6a089f5"}},sub:{listener:"subscriber-latest",event:{name:"An1by",amount:1}},selfSub:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:1,username:"rishamon",displayName:"rishamon",tier:"1000"},_id:"6998676317aed69e62b8f283",activityId:"6998676317aed69e62b8f283"}},soloSubToSomeone:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:1,username:"encry_s",displayName:"encry_s",message:"rishamon gifted a Tier 1 sub to encry_s! This is their first Gift Sub in the channel!",tier:"1000",sender:"rishamon",gifted:!0},_id:"699866e82d9cd9a70854baf2",activityId:"699866e82d9cd9a70854baf2"}},subRenewal:{listener:"event",event:{type:"subscriber",provider:"twitch",channel:"663b10ba6cd449c4162a2230",data:{amount:8,username:"silgestian",displayName:"SilgeStian",tier:"1000"},_id:"69986dfaf25724ff4162bd1a",activityId:"69986dfaf25724ff4162bd1a"}},bits:{listener:"cheer-latest",event:{name:"An1by",amount:30}},raid:{listener:"raid-latest",event:{name:"An1by",amount:50}},donationShortText:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:"Simple message text"}}},donationLongText:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:`A plain gray stone lay on the shore, basking in the sun's warmth. A shove broke its peace—a thoughtless toss sent it flying. The stone splashed into water. Ripples spread, yet none noticed. It sank to the bottom, heavy with loneliness. "Didn't I deserve to stay where I was happy still?" it wondered.`}}},donation:{listener:"donation",event:{data:{alert_type:"1",currency:"RUB",billing_system:"CARD",id:5,amount_main:500,amount:500,username:"An1by",message:""}}}},E={zeroWidthEmotesInRow:{listener:"message",event:{service:"twitch",data:{time:1768317417111,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"f70c4cd8b6034d1f805298246ee1bc35",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"5f752ae3-4be9-4f93-82d1-d78575ba07fd",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317416862",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"Censored Censored Censored emotes in row",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:0,end:8},{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:9,end:17},{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:18,end:26}],msgId:"5f752ae3-4be9-4f93-82d1-d78575ba07fd"},renderedText:'<img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote"><img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote"><img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">emotes in row'}},zeroWidthEmoteInMiddle:{listener:"message",event:{service:"twitch",data:{time:1768317383248,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"847f9c27722340d090eddcb0d0662b5b",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3dea1e1e-89f7-4a5f-b743-13ba0386492f",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317382987",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"text and Censored emote",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:9,end:17}],msgId:"3dea1e1e-89f7-4a5f-b743-13ba0386492f"},renderedText:'text and <img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">emote'}},zeroWidthEmoteFirst:{listener:"message",event:{service:"twitch",data:{time:1768317236883,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"e9d0621827184c1b940fd700ae599d60",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"6f347337-354a-42e5-bab0-935e19d74152",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768317236625",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"Censored <- zeroWidth emote on the first place",isAction:!1,emotes:[{type:"7tv",name:"Censored",id:"01GC2KBETR0009QMKQRDSHDTVB",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp",2:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp",3:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp",4:"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp"},start:0,end:8}],msgId:"6f347337-354a-42e5-bab0-935e19d74152"},renderedText:'<img src="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp" srcset="https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x" title="Censored" class="emote">&lt;- zeroWidth emote on the first place'}},veryShort:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"IHaveVeryBigNickname",userId:"958683839",displayName:"IHaveVeryBigNickname",displayColor:"",badges:[],channel:"IHaveVeryBigNickname",text:"A!",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"A!"}},viewer:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"SimpleViewer",userId:"958683839",displayName:"SimpleViewer",displayColor:"",badges:[],channel:"SimpleViewer",text:"I finally finished it...",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"I finally finished it..."}},vip:{listener:"message",event:{service:"twitch",data:{time:1749743844261,tags:{"badge-info":"",badges:"vip/1","client-nonce":"fd72ba163a9cc1a6486b2eddb0f5d893",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"51cac44b-9908-49d2-b424-489276e1e521",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743843170",turbo:"0","user-id":"958683839","user-type":"",vip:"1"},nick:"VipPersona",userId:"958683839",displayName:"VipPersona",displayColor:"",badges:[{type:"vip",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3",description:"VIP"}],channel:"VipPersona",text:"I am a VIP persona!",isAction:!1,emotes:[],msgId:"51cac44b-9908-49d2-b424-489276e1e521"},renderedText:"I am a VIP persona!"}},vipLong:{listener:"message",event:{service:"twitch",data:{time:1749743844261,tags:{"badge-info":"",badges:"vip/1","client-nonce":"fd72ba163a9cc1a6486b2eddb0f5d893",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"51cac44b-9908-49d2-b424-489276e1e521",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743843170",turbo:"0","user-id":"958683839","user-type":"",vip:"1"},nick:"VipPersona",userId:"958683839",displayName:"VipPersona",displayColor:"",badges:[{type:"vip",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3",description:"VIP"}],channel:"VipPersona",text:"I am a VIP persona! Are you see this?",isAction:!1,emotes:[],msgId:"51cac44b-9908-49d2-b424-489276e1e521"},renderedText:"I am a VIP persona! Are you see this?"}},artist:{listener:"message",event:{service:"twitch",data:{time:1749743916482,tags:{"badge-info":"",badges:"artist-badge/1","client-nonce":"54128d734d44e28ffc32e1ce236993f5",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"8ee7e71a-3608-486a-bd82-a82b65982ca7",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743915371",turbo:"0","user-id":"958683839","user-type":""},nick:"StarArtist",userId:"958683839",displayName:"StarArtist",displayColor:"",badges:[{type:"artist-badge",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3",description:"Artist"}],channel:"StarArtist",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",isAction:!1,emotes:[],msgId:"8ee7e71a-3608-486a-bd82-a82b65982ca7"},renderedText:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}},subscriber:{listener:"message",event:{data:{tags:{badges:"subscriber/1",color:"#ff69b4",vip:"0",subscriber:"1","user-id":"100135110","user-type":"subscriber"},userId:"100135110",displayName:"YourSub",displayColor:"#ff69b4",badges:[{type:"partner",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3",description:"Verified"}],text:"This is a subscriber's test message. I'm just a subscriber, srsly.",emotes:[],msgId:"43285909-412c-4eee-b80d-89f1482ba53142"},renderedText:"This is a subscriber's test message. I'm just a subscriber, srsly."}},founder:{listener:"message",event:{service:"twitch",data:{time:1749743750546,tags:{"badge-info":"",badges:"founder/1,subscriber/1","client-nonce":"a3fe71a5771d0c31466dd333c963231e",color:"","display-name":"sub__founder",emotes:"","first-msg":"0",flags:"",id:"3d0d1a43-45e5-4652-be59-0b31dfeba796",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749743749437",turbo:"0","user-id":"958683839","user-type":""},nick:"sub__founder",userId:"958683839",displayName:"sub__founder",displayColor:"",badges:[{type:"founder"}],channel:"an1by",text:"I finally finished it...",isAction:!1,emotes:[],msgId:"3d0d1a43-45e5-4652-be59-0b31dfeba796"},renderedText:"I finally finished it..."}},moderator:{listener:"message",event:{service:"twitch",data:{time:1749743997223,tags:{"badge-info":"",badges:"moderator/1",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820",mod:"1","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743996136",turbo:"0","user-id":"958683839","user-type":"mod"},nick:"mediator",userId:"958683839",displayName:"mediator",displayColor:"",badges:[{type:"moderator",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3",description:"Moderator"}],channel:"mediator",text:"Did someone say... MODERATOR!?",isAction:!1,emotes:[],msgId:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820"},renderedText:"Did someone say... MODERATOR!?"}},moderatorLong:{listener:"message",event:{service:"twitch",data:{time:1749743997223,tags:{"badge-info":"",badges:"moderator/1",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820",mod:"1","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749743996136",turbo:"0","user-id":"958683839","user-type":"mod"},nick:"mediator",userId:"958683839",displayName:"mediator",displayColor:"",badges:[{type:"moderator",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3",description:"Moderator"}],channel:"mediator",text:"Did someone say... MODERATOR!? Yes, I am moderator!",isAction:!1,emotes:[],msgId:"3e7ba532-f181-4bcc-90f1-a3c48ca3c820"},renderedText:"Did someone say... MODERATOR!? Yes, I am moderator!"}},broadcaster:{listener:"message",event:{service:"twitch",data:{time:1749744800809,tags:{"badge-info":"subscriber/16",badges:"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1","client-nonce":"6989104421ee14c0a8c216ef1c6bb5ed",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749744799706",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"},{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"an1by",text:"I made this chat Besplatno",isAction:!1,emotes:[{type:"7tv",name:"Besplatno",id:"01FE70VRT00009TR6M9N941A28",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp",2:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp",3:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/3x.webp",4:"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp"},start:17,end:26}],msgId:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d"},renderedText:'I made this chat <img src="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp" srcset="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x" title="Besplatno" class="emote">'}},broadcasterShort:{listener:"message",event:{service:"twitch",data:{time:1749744800809,tags:{"badge-info":"subscriber/16",badges:"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1","client-nonce":"6989104421ee14c0a8c216ef1c6bb5ed",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1749744799706",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"},{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"an1by",text:"okak",isAction:!1,emotes:[],msgId:"35a9bea7-076e-4d17-8cb7-7e65c8111b3d"},renderedText:'I made this chat <img src="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp" srcset="https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x" title="Besplatno" class="emote">'}},emoteSolo:{listener:"message",event:{service:"twitch",data:{time:1749744097330,tags:{"badge-info":"",badges:"",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"9ab645b9-7c27-4c6f-99fd-f63727ca3700",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744096217",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"🤤😮💀👈👉",isAction:!1,emotes:[{type:"emoji",name:"1f62e",id:"1f62e",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f62e.png"}},{type:"emoji",name:"1f480",id:"1f480",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f480.png"}},{type:"emoji",name:"1f448",id:"1f448",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f448.png"}},{type:"emoji",name:"1f449",id:"1f449",gif:!1,urls:{1:"https://twemoji.maxcdn.com/36x36/1f449.png"}}],msgId:"9ab645b9-7c27-4c6f-99fd-f63727ca3700"},renderedText:"🤤😮💀👈👉"}},emoteOne:{listener:"message",event:{service:"twitch",data:{time:1749744131183,tags:{"badge-info":"",badges:"",color:"","display-name":"An1by",emotes:"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18","first-msg":"0",flags:"",id:"beb957ea-dfbd-4184-82a3-458121f44867",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744130018",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"SeemsGood",isAction:!1,emotes:[{type:"twitch",name:"SeemsGood",id:"64138",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0"},start:0,end:9}],msgId:"beb957ea-dfbd-4184-82a3-458121f44867"},renderedText:'<img src="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x" title="SeemsGood" class="emote">'}},emoteText:{listener:"message",event:{service:"twitch",data:{time:1749744131183,tags:{"badge-info":"",badges:"",color:"","display-name":"7TVUser",emotes:"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18","first-msg":"0",flags:"",id:"beb957ea-dfbd-4184-82a3-458121f44867",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744130018",turbo:"0","user-id":"958683839","user-type":""},nick:"7TVUser",userId:"958683839",displayName:"7TVUser",displayColor:"",badges:[],channel:"7TVUser",text:"Not emote SeemsGood Kreygasm ResidentSleeper WutFace NotLikeThis <3",isAction:!1,emotes:[{type:"twitch",name:"SeemsGood",id:"64138",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0"},start:10,end:19},{type:"twitch",name:"Kreygasm",id:"41",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0"},start:20,end:28},{type:"twitch",name:"ResidentSleeper",id:"245",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0"},start:29,end:44},{type:"twitch",name:"WutFace",id:"28087",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0"},start:45,end:52},{type:"twitch",name:"NotLikeThis",id:"58765",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0"},start:53,end:64},{type:"twitch",name:"<3",id:"9",gif:!1,animated:!1,urls:{1:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0",2:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0",4:"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0"},start:65,end:67}],msgId:"beb957ea-dfbd-4184-82a3-458121f44867"},renderedText:'Not emote <img src="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x" title="SeemsGood" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0 4x" title="Kreygasm" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0 4x" title="ResidentSleeper" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0 4x" title="WutFace" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0 4x" title="NotLikeThis" class="emote"><img src="https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0" srcset="https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0 4x" title="<3" class="emote">'}},zeroWidthEmotes:{listener:"message",event:{service:"twitch",data:{time:1759956619137,tags:{"badge-info":"subscriber/20",badges:"","client-nonce":"f7b17aea5c07c5c08fd920278fb52b5a",color:"#DAA520","display-name":"7TVUser",emotes:"","first-msg":"0",flags:"",id:"b44d1c53-1de9-454c-a269-bd8849cbcd2d",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1759956618295",turbo:"0","user-id":"958683839","user-type":""},nick:"7TVUser",userId:"958683839",displayName:"7TVUser",displayColor:"#DAA520",badges:[{type:"minecraft-15th-anniversary-celebration",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3",description:"Minecraft 15th Anniversary Celebration"}],channel:"7TVUser",text:"Zero-width emotes AYAYA PETPET right there!!",isAction:!1,emotes:[{type:"7tv",name:"AYAYA",id:"01GB32XE6R00018VJGJ4A9BNCV",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp",2:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp",3:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/3x.webp",4:"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp"},start:18,end:23},{type:"7tv",name:"PETPET",id:"01FE3XY508000AA32JP519W2EW",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp",2:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp",3:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/3x.webp",4:"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp"},start:24,end:30}],msgId:"b44d1c53-1de9-454c-a269-bd8849cbcd2d"},renderedText:'Zero-width emotes <img src="https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp" srcset="https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp 1x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp 2x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp 4x" title="AYAYA" class="emote"><img src="https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp" srcset="https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp 1x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp 2x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp 4x" title="PETPET" class="emote">right there!!'}},sevenTv:{listener:"message",event:{service:"twitch",data:{time:1749744413746,tags:{"badge-info":"",badges:"","client-nonce":"2bd56e3c058b5a4fc4e46c3e369891e6",color:"","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"4c71789c-8c02-4e25-a71f-3a7d0ef19a33",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"0","tmi-sent-ts":"1749744412641",turbo:"0","user-id":"958683839","user-type":""},nick:"tr0l1",userId:"958683839",displayName:"tr0l1",displayColor:"",badges:[],channel:"tr0l1",text:"ало ало Инса Каори Hello everyone! Hello everyone! Hello everyone!Hello everyone! Hello everyone! Hello everyone! Hello everyone! Hello everyone!",isAction:!1,emotes:[{type:"7tv",name:"ало",id:"01F6PRA3N80003BH8AEY9DWKDQ",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp",2:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp",3:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp",4:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp"},start:0,end:3},{type:"7tv",name:"ало",id:"01F6PRA3N80003BH8AEY9DWKDQ",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp",2:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp",3:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp",4:"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp"},start:4,end:7},{type:"7tv",name:"Инса",id:"01JRE4VRRXWF0922HA3F9BZG6M",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp",2:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp",3:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/3x.webp",4:"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp"},start:8,end:12},{type:"7tv",name:"Каори",id:"01GY6TCEFG000BGHWA5T6NGBRA",gif:!1,animated:!1,urls:{1:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp",2:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp",3:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/3x.webp",4:"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp"},start:13,end:18}],msgId:"4c71789c-8c02-4e25-a71f-3a7d0ef19a33"},renderedText:'<img src="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp" srcset="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x" title="ало" class="emote"><img src="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp" srcset="https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x" title="ало" class="emote"><img src="https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp" srcset="https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp 1x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp 2x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp 4x" title="Инса" class="emote"><img src="https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp" srcset="https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp 1x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp 2x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp 4x" title="Каори" class="emote">Hello everyone!'}},sevenTvSolo:{listener:"message",event:{service:"twitch",data:{time:1768321684253,tags:{"badge-info":"subscriber/23",badges:"broadcaster/1,subscriber/0","client-nonce":"51cc77206bf346eda20774b75aac675d",color:"#DAA520","display-name":"An1by",emotes:"","first-msg":"0",flags:"",id:"e30a02bf-a3c7-40f2-9325-cdc2690d3631",mod:"0","returning-chatter":"0","room-id":"958683839",subscriber:"1","tmi-sent-ts":"1768321684074",turbo:"0","user-id":"958683839","user-type":""},nick:"an1by",userId:"958683839",displayName:"An1by",displayColor:"#DAA520",badges:[{type:"broadcaster",version:"1",url:"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3",description:"Broadcaster"},{type:"subscriber",version:"0",url:"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3",description:"Subscriber"}],channel:"an1by",text:"DurkaDance ͏",isAction:!1,emotes:[{type:"7tv",name:"DurkaDance",id:"01JQBC7K2FX7HE4SFZFJEN6CWY",gif:!0,animated:!0,urls:{1:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp",2:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp",3:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/3x.webp",4:"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp"},start:0,end:10}],msgId:"e30a02bf-a3c7-40f2-9325-cdc2690d3631"},renderedText:'<img src="https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp" srcset="https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp 1x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp 2x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp 4x" title="DurkaDance" class="emote"> ͏'}}},G="onEventReceived";function X(e){if(typeof window>"u")return;const n=E[e];n&&window.dispatchEvent(new CustomEvent(G,{detail:n}))}function U(e){if(typeof window>"u")return;const n=D[e];n&&window.dispatchEvent(new CustomEvent(G,{detail:n}))}function q(e){if(!e.startsWith("testMessage"))return null;const n=e.replace("testMessage","");return n.charAt(0).toLowerCase()+n.slice(1)}function z(e){if(!e.startsWith("testAlert"))return null;const n=e.replace("testAlert","");return n.charAt(0).toLowerCase()+n.slice(1)}function C(e){const t=(e["badge-info"]??"").match(/^subscriber\/(\d+)$/);if(!t)return null;const r=parseInt(t[1],10);return Number.isNaN(r)?null:r}function S(e){const n=C(e);return n!==null&&n!==0?!0:(e.badges??"").includes("broadcaster/1")}const k=S;function F(e){return(e.badges??"").includes("broadcaster/1")}function $(e){return e["first-msg"]==="1"}function K(e){return e.turbo==="1"}function Q(e){const n=e.badges??"";return e.vip==="1"||n.includes("vip/1")}function V(e){const n=e.badges??"",t=e["user-type"]??"";return e.mod==="1"||n.includes("moderator/1")||t==="mod"}function M(e){return(e.badges??"").includes("artist-badge/1")}function ee(e,n){const t=e.find(r=>r.type===n);return t==null?void 0:t.url}function te(e){const n=["default"];return F(e)&&n.push("broadcaster"),V(e)&&n.push("moderator"),Q(e)&&n.push("vip"),M(e)&&n.push("artist"),k(e)&&n.push("subscriber"),K(e)&&n.push("turbo"),n}function b(e,n,t=[]){const r=w.useRef(n);r.current=n,w.useEffect(()=>{const a=s=>r.current.call(window,s);return window.addEventListener(e,a),()=>window.removeEventListener(e,a)},[e,...t])}function N(e){return e.listener==="message"}function H(e){return e.listener==="follower-latest"}function Z(e){var t;const n=e;return n.listener==="event"&&((t=n.event)==null?void 0:t.type)==="communityGiftPurchase"}function j(e){return e.listener==="subscriber-latest"}function I(e){var t;const n=e;return n.listener==="event"&&((t=n.event)==null?void 0:t.type)==="subscriber"}function W(e){return e.listener==="cheer-latest"}function _(e){return e.listener==="raid-latest"}function P(e){return e.listener==="donation"}function J(e){var t;const n=e;return n.listener==="event:test"&&((t=n.event)==null?void 0:t.listener)==="widget-button"}function ne(e,n=[]){b("onEventReceived",e,n)}function ae(e,n=[]){b("onEventReceived",function(t){N(t.detail)&&e(t)},n)}function se(e,n=[]){b("onEventReceived",function(t){J(t.detail)&&e(t)},n)}function ie(e,n=[]){b("onEventReceived",function(t){H(t.detail)&&e(t)},n)}function re(e,n=[]){b("onEventReceived",function(t){Z(t.detail)&&e(t)},n)}function oe(e,n=[]){b("onEventReceived",function(t){j(t.detail)&&e(t)},n)}function ce(e,n=[]){b("onEventReceived",function(t){I(t.detail)&&e(t)},n)}function de(e,n=[]){b("onEventReceived",function(t){W(t.detail)&&e(t)},n)}function me(e,n=[]){b("onEventReceived",function(t){_(t.detail)&&e(t)},n)}function pe(e,n=[]){b("onEventReceived",function(t){P(t.detail)&&e(t)},n)}function ue(e,n=[]){b("onWidgetLoad",e,n)}i.classifyEvent=x,i.determineUserRoles=te,i.getBadgeUrlByType=ee,i.getCacheKey=A,i.getTestAlertKey=z,i.getTestMessageKey=q,i.isArtist=M,i.isBroadcaster=F,i.isCheerDetail=W,i.isCommunityGiftPurchaseDetail=Z,i.isDonationDetail=P,i.isFirstMessageChatter=$,i.isFollowerDetail=H,i.isMessageEvent=N,i.isModerator=V,i.isRaidDetail=_,i.isSubscriber=k,i.isSubscriberDetail=I,i.isSubscriberLatestDetail=j,i.isSubscriptionActive=S,i.isTurbo=K,i.isVip=Q,i.isWidgetButtonDetail=J,i.normalizeIncomingEvent=O,i.parseSubscriberMonth=C,i.parseTier=T,i.testAlert=U,i.testAlerts=D,i.testMessage=X,i.testMessages=E,i.testOnWidgetLoadDetail=L,i.useEventListener=b,i.useOnCheerReceived=de,i.useOnCommunityGiftPurchaseReceived=re,i.useOnDonationReceived=pe,i.useOnEventReceived=ne,i.useOnFollowerReceived=ie,i.useOnMessageReceived=ae,i.useOnRaidReceived=me,i.useOnSubscriberLatestReceived=oe,i.useOnSubscriberReceived=ce,i.useOnWidgetButtonReceived=se,i.useOnWidgetLoad=ue,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})})(this.WmakeStreamelementsEventsReact=this.WmakeStreamelementsEventsReact||{},React);
2
+ //# sourceMappingURL=index.iife.js.map