@kosdev-code/kos-ui-sdk 2.0.24 → 2.0.26

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 (73) hide show
  1. package/index.cjs +71 -37
  2. package/index.cjs.map +1 -1
  3. package/index.js +2915 -2425
  4. package/index.js.map +1 -1
  5. package/models/models/canvas-dispatcher/canvas-dispatcher-model.d.ts +29 -0
  6. package/models/models/canvas-dispatcher/canvas-dispatcher-model.d.ts.map +1 -0
  7. package/models/models/canvas-dispatcher/canvas-dispatcher-registration.d.ts +89 -0
  8. package/models/models/canvas-dispatcher/canvas-dispatcher-registration.d.ts.map +1 -0
  9. package/models/models/canvas-dispatcher/index.d.ts +5 -0
  10. package/models/models/canvas-dispatcher/index.d.ts.map +1 -0
  11. package/models/models/canvas-dispatcher/services/canvas-dispatcher-services.d.ts +8 -0
  12. package/models/models/canvas-dispatcher/services/canvas-dispatcher-services.d.ts.map +1 -0
  13. package/models/models/canvas-dispatcher/services/index.d.ts +2 -0
  14. package/models/models/canvas-dispatcher/services/index.d.ts.map +1 -0
  15. package/models/models/canvas-dispatcher/types/index.d.ts +55 -0
  16. package/models/models/canvas-dispatcher/utils/renderers/base/canvas-2d-renderer.d.ts +36 -0
  17. package/models/models/canvas-dispatcher/utils/renderers/base/canvas-2d-renderer.d.ts.map +1 -0
  18. package/models/models/canvas-dispatcher/utils/renderers/base/gradient-base-renderer.d.ts +2 -0
  19. package/models/models/canvas-dispatcher/utils/renderers/base/gradient-base-renderer.d.ts.map +1 -0
  20. package/models/models/canvas-dispatcher/utils/renderers/base/video-base-renderer.d.ts +67 -0
  21. package/models/models/canvas-dispatcher/utils/renderers/base/video-base-renderer.d.ts.map +1 -0
  22. package/models/models/canvas-dispatcher/utils/renderers/base/webgl-base-renderer.d.ts +51 -0
  23. package/models/models/canvas-dispatcher/utils/renderers/base/webgl-base-renderer.d.ts.map +1 -0
  24. package/models/models/canvas-dispatcher/utils/renderers/drop-renderer.d.ts +58 -0
  25. package/models/models/canvas-dispatcher/utils/renderers/drop-renderer.d.ts.map +1 -0
  26. package/models/models/canvas-dispatcher/utils/renderers/gradient-renderer.d.ts +17 -0
  27. package/models/models/canvas-dispatcher/utils/renderers/gradient-renderer.d.ts.map +1 -0
  28. package/models/models/canvas-dispatcher/utils/renderers/image-renderer.d.ts +13 -0
  29. package/models/models/canvas-dispatcher/utils/renderers/image-renderer.d.ts.map +1 -0
  30. package/models/models/canvas-dispatcher/utils/renderers/matrix-renderer.d.ts +36 -0
  31. package/models/models/canvas-dispatcher/utils/renderers/matrix-renderer.d.ts.map +1 -0
  32. package/models/models/canvas-dispatcher/utils/renderers/mixins/one-shot-renderer-mixin.d.ts +5 -0
  33. package/models/models/canvas-dispatcher/utils/renderers/mixins/one-shot-renderer-mixin.d.ts.map +1 -0
  34. package/models/models/canvas-dispatcher/utils/renderers/renderer-factory.d.ts +30 -0
  35. package/models/models/canvas-dispatcher/utils/renderers/renderer-factory.d.ts.map +1 -0
  36. package/models/models/canvas-dispatcher/utils/renderers/solid-color-renderer.d.ts +17 -0
  37. package/models/models/canvas-dispatcher/utils/renderers/solid-color-renderer.d.ts.map +1 -0
  38. package/models/models/canvas-dispatcher/utils/renderers/sweep-renderer.d.ts +48 -0
  39. package/models/models/canvas-dispatcher/utils/renderers/sweep-renderer.d.ts.map +1 -0
  40. package/models/models/canvas-dispatcher/utils/renderers/swirl-renderer.d.ts +13 -0
  41. package/models/models/canvas-dispatcher/utils/renderers/swirl-renderer.d.ts.map +1 -0
  42. package/models/utils/core-registration-manager.d.ts.map +1 -1
  43. package/package.json +2 -2
  44. package/ui/features/canvas/components/canvas-streamer/canvas-streamer.d.ts +13 -0
  45. package/ui/features/canvas/components/canvas-streamer/canvas-streamer.d.ts.map +1 -0
  46. package/ui/features/canvas/components/canvas-streamer/index.d.ts +2 -0
  47. package/ui/features/canvas/components/canvas-streamer/index.d.ts.map +1 -0
  48. package/ui/features/canvas/components/rgb-332-visualizer/rgb-332-visualizer.d.ts +5 -0
  49. package/ui/features/canvas/components/rgb-332-visualizer/rgb-332-visualizer.d.ts.map +1 -0
  50. package/ui/features/canvas/hooks/canvas-dispatcher/index.d.ts +3 -0
  51. package/ui/features/canvas/hooks/canvas-dispatcher/index.d.ts.map +1 -0
  52. package/ui/features/canvas/hooks/canvas-dispatcher/use-canvas-dispatcher.d.ts +14 -0
  53. package/ui/features/canvas/hooks/canvas-dispatcher/use-canvas-dispatcher.d.ts.map +1 -0
  54. package/ui/features/canvas/hooks/canvas-dispatcher/with-canvas-dispatcher.d.ts +9 -0
  55. package/ui/features/canvas/hooks/canvas-dispatcher/with-canvas-dispatcher.d.ts.map +1 -0
  56. package/ui/features/canvas/hooks/use-gradient-renderer.d.ts +14 -0
  57. package/ui/features/canvas/hooks/use-gradient-renderer.d.ts.map +1 -0
  58. package/ui/features/canvas/hooks/use-image-renderer.d.ts +22 -0
  59. package/ui/features/canvas/hooks/use-image-renderer.d.ts.map +1 -0
  60. package/ui/features/canvas/hooks/use-solid-color-renderer.d.ts +11 -0
  61. package/ui/features/canvas/hooks/use-solid-color-renderer.d.ts.map +1 -0
  62. package/ui/features/canvas/hooks/use-streamable-renderer.d.ts +17 -0
  63. package/ui/features/canvas/hooks/use-streamable-renderer.d.ts.map +1 -0
  64. package/ui/features/canvas/hooks/use-sweep-renderer.d.ts +32 -0
  65. package/ui/features/canvas/hooks/use-sweep-renderer.d.ts.map +1 -0
  66. package/ui/features/canvas/hooks/use-swirl-renderer.d.ts +22 -0
  67. package/ui/features/canvas/hooks/use-swirl-renderer.d.ts.map +1 -0
  68. package/ui/features/canvas/hooks/use-video-renderer.d.ts +24 -0
  69. package/ui/features/canvas/hooks/use-video-renderer.d.ts.map +1 -0
  70. package/ui/features/canvas/utils/encode-frame.d.ts +14 -0
  71. package/ui/features/canvas/utils/encode-frame.d.ts.map +1 -0
  72. package/ui/features/canvas/utils/preview-decoder.d.ts +29 -0
  73. package/ui/features/canvas/utils/preview-decoder.d.ts.map +1 -0
@@ -0,0 +1,29 @@
1
+ import { CanvasDispatcherOptions, RenderDataSpecification, Renderer } from './types';
2
+ import { PublicModelInterface } from '../../../core/types';
3
+ import { IKosIdentifiable } from '../../../core/core/types';
4
+ import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';
5
+
6
+ export declare const MODEL_TYPE = "canvas-dispatcher-model";
7
+ export type CanvasDispatcherModel = PublicModelInterface<CanvasDispatcherModelImpl>;
8
+ export declare class CanvasDispatcherModelImpl implements IKosDataModel, IKosIdentifiable {
9
+ id: string;
10
+ private logger;
11
+ private router;
12
+ pattern?: string;
13
+ data?: RenderDataSpecification<any> | null;
14
+ active: boolean;
15
+ constructor(modelId: string, options: CanvasDispatcherOptions, context: KosCreationContext);
16
+ get renderer(): Renderer | null;
17
+ /**
18
+ * Sends a data frame to the canvas dispatcher.
19
+ *
20
+ * @param data - The data frame to be sent as a string.
21
+ *
22
+ * @remarks
23
+ * This method is responsible for dispatching the provided data frame
24
+ * to the canvas system using the `sendCanvasData` function.
25
+ */
26
+ sendDataFrame(data: string): void;
27
+ load(): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=canvas-dispatcher-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-dispatcher-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/canvas-dispatcher-model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACvB,QAAQ,EACT,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,UAAU,4BAA4B,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAC/B,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AAElD,qBACa,yBACX,YAAW,aAAa,EAAE,gBAAgB;IAE1C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IAKjC,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,uBAAuB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAE3C,MAAM,UAAS;gBAEb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,kBAAkB;IAU7B,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAW9B;IACD;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B5B"}
@@ -0,0 +1,89 @@
1
+ import { CanvasDispatcherOptions } from './types';
2
+ import { CanvasDispatcherModel } from './canvas-dispatcher-model';
3
+ import { SingletonKosModelRegistrationFactory } from '../../../core';
4
+
5
+ /**
6
+ * # CanvasDispatcher
7
+ *
8
+ * The registration bean includes convenience methods for creating and working with CanvasDispatcherModel instances.
9
+ *
10
+ * ## type
11
+ * The type property is a string that identifies the model type.
12
+ * The type is used to identify the model type in the model registry and to narrow down the model type in type predicates. It's most frequently
13
+ * used when declaring dependencies on models.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ *
18
+ * @kosDependency({modelType: CanvasDispatcher.type, id: "canvasDispatcherId"})
19
+ * private canvasDispatcherModel: CanvasDispatcherModel;
20
+ * ```
21
+ *
22
+ *
23
+ * ## factory
24
+ *
25
+ * The factory method creates a factory function that can be used to create new CanvasDispatcherModel instances.
26
+ *
27
+
28
+ * As this is a singleton model, the factory function accepts the model options as its argument.
29
+ *
30
+ * If a model with the same model type already exists, the factory function will return the existing model. The options will be ignored
31
+ * in this case and the existing model will be returned in its current state.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const model = CanvasDispatcher.factory({
36
+ * // Add option data
37
+ * });
38
+ * ```
39
+
40
+
41
+ *
42
+ * ## predicate
43
+ *
44
+ * [Typescript type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates) function that will identify and narrow down a model to a CanvasDispatcherModel.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ *
49
+ * const model: IKosDataModel = ...; // some model
50
+ *
51
+ * if (CanvasDispatcher.predicate(model)) {
52
+ * // if the function evaluates to true, the model is narrowed down to CanvasDispatcherModel
53
+ * // and the compiler will know that the model has the CanvasDispatcherModel interface
54
+ * model.updateAvailability(false);
55
+ * }
56
+ * ```
57
+ *
58
+ * ## registration
59
+ *
60
+ * The registration property is an object that can be used to simplify registration of the model with the model registry. The registration object
61
+ * can be spread into the model registration and provides all of the required information to register the model implementation class against the model type.
62
+ *
63
+ *
64
+ * @example
65
+ *
66
+ * In an application registration file you can declare the model registration as follows:
67
+ *
68
+ * **registration.ts**
69
+ * ```typescript
70
+ * import { CanvasDispatcher } from "@kos-ui/project-models";
71
+ * import { KosModelRegistry } from "@kosdev-code/kos-dispense-sdk";
72
+ *
73
+ * import { initKosProvider } from "@kosdev-code/kos-ui-sdk";
74
+ *
75
+ * KosModelRegistry.dispense
76
+ * .models()
77
+ * .model(CanvasDispatcher);
78
+ * ```
79
+ *
80
+ * ## registration.singleton
81
+
82
+ * The canvasDispatcher model is a singleton model. This means that each time the factory function is called , the same instance will be returned.
83
+ * If the model does not yet exist, it will be created passing in the provided options to initialize it.
84
+ *
85
+ * Singleton models don't require an ID as they will use the model type as their ID to guarantee uniqueness throughout the system.
86
+
87
+ * */
88
+ export declare const CanvasDispatcher: SingletonKosModelRegistrationFactory<CanvasDispatcherModel, CanvasDispatcherOptions>;
89
+ //# sourceMappingURL=canvas-dispatcher-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-dispatcher-registration.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/canvas-dispatcher-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkFK;AACL,eAAO,MAAM,gBAAgB,sFAM3B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { CanvasDispatcher } from './canvas-dispatcher-registration';
2
+ export type * from './types';
3
+ export type { CanvasDispatcherModel } from './canvas-dispatcher-model';
4
+ export * as CanvasDispatcherServices from './services';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,mBAAmB,SAAS,CAAC;AAC7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,wBAAwB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sends canvas data to a specified endpoint using a POST request.
3
+ *
4
+ * @param data - The data to be sent to the canvas endpoint.
5
+ * @returns A promise that resolves when the data has been successfully sent.
6
+ */
7
+ export declare const sendCanvasData: (data: any) => Promise<void>;
8
+ //# sourceMappingURL=canvas-dispatcher-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-dispatcher-services.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/services/canvas-dispatcher-services.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAgB,GAAG,kBAW7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './canvas-dispatcher-services';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,55 @@
1
+ export interface CanvasDispatcherOptions {}
2
+ declare interface Renderer {
3
+ reset(): void;
4
+ renderFrame(width: number, height: number): void | Uint8ClampedArray;
5
+ readPixels(width: number, height: number): Uint8ClampedArray;
6
+ play?(): void;
7
+ pause?(): void;
8
+ }
9
+
10
+ declare interface DoneAware {
11
+ onDone(cb: () => void): void;
12
+ isOneShot?: () => boolean; // optional flag
13
+ }
14
+
15
+ declare interface OneShotCapable extends DoneAware {
16
+ resetOneShot(): void;
17
+ signalDoneIfNeeded(): void;
18
+ readonly isOneShotDone: boolean;
19
+ }
20
+
21
+ declare type RendererOptions = "sweep" | "matrix" | "video" | "drop" | "none";
22
+
23
+ declare interface RenderSpecification<T extends string> {
24
+ type: T;
25
+ id: string;
26
+ data: RenderDataSpecification<T>;
27
+ }
28
+
29
+ declare interface SourceRenderDataSpecification {
30
+ src: string;
31
+ }
32
+
33
+ declare interface ColorRenderDataSpecification {
34
+ color: string;
35
+ }
36
+
37
+ declare type RenderDataSpecification<T extends string> = T extends "video"
38
+ ? SourceRenderDataSpecification
39
+ : T extends "image"
40
+ ? SourceRenderDataSpecification
41
+ : T extends "color"
42
+ ? ColorRenderDataSpecification
43
+ : Record<string, any>;
44
+
45
+ declare type VideoRenderData = RenderSpecification<"video">;
46
+
47
+ declare type ImageRenderData = RenderSpecification<"image">;
48
+
49
+ declare type ColorRenderData = RenderSpecification<"color">;
50
+
51
+ declare type RenderData =
52
+ | VideoRenderData
53
+ | ImageRenderData
54
+ | ColorRenderData
55
+ | RenderSpecification<"none">;
@@ -0,0 +1,36 @@
1
+ import { Renderer } from '../../../types';
2
+
3
+ /**
4
+ * An abstract base class for 2D canvas rendering. This class provides a foundational
5
+ * implementation for managing a canvas element and its 2D rendering context, as well
6
+ * as utility methods for rendering and pixel data extraction.
7
+ *
8
+ * Subclasses must implement the `reset` and `renderFrame` methods to define specific
9
+ * rendering behavior.
10
+ *
11
+ * @implements Renderer
12
+ */
13
+ export declare abstract class Canvas2DRendererBase implements Renderer {
14
+ protected canvas: HTMLCanvasElement;
15
+ protected ctx: CanvasRenderingContext2D;
16
+ protected lastUpdate: number;
17
+ constructor();
18
+ /**
19
+ * Determines whether a specified time interval has elapsed since the last update.
20
+ *
21
+ * @param intervalMs - The time interval in milliseconds to check against.
22
+ * @returns `true` if the elapsed time since the last update is greater than or equal to the specified interval; otherwise, `false`.
23
+ */
24
+ protected shouldStep(intervalMs: number): boolean;
25
+ abstract reset(): void;
26
+ abstract renderFrame(width: number, height: number): void;
27
+ /**
28
+ * Reads pixel data from the canvas context within the specified width and height.
29
+ *
30
+ * @param width - The width of the area to read pixels from, starting at the top-left corner (0, 0).
31
+ * @param height - The height of the area to read pixels from, starting at the top-left corner (0, 0).
32
+ * @returns A `Uint8ClampedArray` containing the RGBA pixel data for the specified area.
33
+ */
34
+ readPixels(width: number, height: number): Uint8ClampedArray;
35
+ }
36
+ //# sourceMappingURL=canvas-2d-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-2d-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/base/canvas-2d-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;GASG;AACH,8BAAsB,oBAAqB,YAAW,QAAQ;IAC5D,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC;IACxC,SAAS,CAAC,UAAU,SAAK;;IASzB;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQjD,QAAQ,CAAC,KAAK,IAAI,IAAI;IACtB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzD;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB;CAG7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gradient-base-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-base-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/base/gradient-base-renderer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import { DoneAware, Renderer } from '../../../types';
2
+
3
+ /**
4
+ * A base class for rendering video frames using a 2D canvas.
5
+ *
6
+ * Provides utilities for frame capture, playback control, and detecting when a video has finished playing.
7
+ * Implements the `Renderer` and `DoneAware` interfaces to integrate with a unified animation/rendering system.
8
+ */
9
+ export declare class VideoRendererBase implements Renderer, DoneAware {
10
+ /** The underlying HTML video element used as the media source */
11
+ protected video: HTMLVideoElement;
12
+ /** Internal offscreen canvas used to draw current video frame */
13
+ protected canvas: HTMLCanvasElement;
14
+ /** 2D rendering context for the offscreen canvas */
15
+ protected ctx: CanvasRenderingContext2D;
16
+ /** Timestamp of the last update (used for throttling if needed) */
17
+ protected lastUpdate: number;
18
+ /** Callback to invoke when video playback completes */
19
+ private doneCallback;
20
+ /**
21
+ * Constructs a video renderer that will play and extract pixels from the provided source.
22
+ *
23
+ * @param src - The URL or path of the video to play
24
+ */
25
+ constructor(src: string);
26
+ /**
27
+ * Resets the video to the beginning and pauses playback.
28
+ */
29
+ reset(): void;
30
+ /**
31
+ * Starts or resumes playback of the video.
32
+ */
33
+ play(): void;
34
+ /**
35
+ * Pauses video playback.
36
+ */
37
+ pause(): void;
38
+ /**
39
+ * Draws the current video frame onto the offscreen canvas at the given resolution.
40
+ *
41
+ * @param width - Desired canvas width
42
+ * @param height - Desired canvas height
43
+ */
44
+ renderFrame(width: number, height: number): void;
45
+ /**
46
+ * Extracts the most recently rendered frame's pixel data as a flat RGBA array.
47
+ *
48
+ * @param width - Width of the canvas area to extract
49
+ * @param height - Height of the canvas area to extract
50
+ * @returns A Uint8ClampedArray containing RGBA values
51
+ */
52
+ readPixels(width: number, height: number): Uint8ClampedArray;
53
+ /**
54
+ * Registers a callback to be invoked once the video finishes playing.
55
+ *
56
+ * @param callback - Function to call on video end
57
+ */
58
+ onDone(callback: () => void): void;
59
+ /**
60
+ * Utility method for timing-based frame updates (optional use).
61
+ *
62
+ * @param intervalMs - Minimum time between steps in milliseconds
63
+ * @returns `true` if enough time has passed to trigger a new update
64
+ */
65
+ protected shouldStep(intervalMs: number): boolean;
66
+ }
67
+ //# sourceMappingURL=video-base-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-base-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/base/video-base-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,QAAQ,EAAE,SAAS;IAC3D,iEAAiE;IACjE,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAElC,iEAAiE;IACjE,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,oDAAoD;IACpD,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC;IAExC,mEAAmE;IACnE,SAAS,CAAC,UAAU,SAAK;IAEzB,uDAAuD;IACvD,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;OAIG;gBACS,GAAG,EAAE,MAAM;IAkBvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAShD;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAI5D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAQlD"}
@@ -0,0 +1,51 @@
1
+ import { Renderer } from '../../../types';
2
+
3
+ /**
4
+ * Abstract base class for WebGL-based renderers.
5
+ *
6
+ * Provides a shared WebGL canvas, rendering context, and utility methods for
7
+ * consistent pixel reading and throttled animation timing.
8
+ */
9
+ export declare abstract class WebGLRendererBase implements Renderer {
10
+ /** The internal offscreen canvas used for rendering */
11
+ protected canvas: HTMLCanvasElement;
12
+ /** The WebGL rendering context used to draw and sample frames */
13
+ protected gl: WebGLRenderingContext;
14
+ /** The last known canvas width used for reading pixels */
15
+ protected lastWidth: number;
16
+ /** The last known canvas height used for reading pixels */
17
+ protected lastHeight: number;
18
+ /** Timestamp of the last frame update used for throttling */
19
+ protected lastUpdate: number;
20
+ constructor();
21
+ /**
22
+ * Reset the internal renderer state.
23
+ * Must be implemented by subclasses to reset animation state.
24
+ */
25
+ abstract reset(): void;
26
+ /**
27
+ * Render a frame at the given resolution into the internal WebGL canvas.
28
+ * This method should perform the draw but not return the pixels.
29
+ *
30
+ * @param width - The width of the canvas to render to
31
+ * @param height - The height of the canvas to render to
32
+ */
33
+ abstract renderFrame(width: number, height: number): void;
34
+ /**
35
+ * Throttle rendering logic based on a minimum time interval.
36
+ *
37
+ * @param intervalMs - The minimum time in milliseconds between steps
38
+ * @returns `true` if enough time has passed to perform a new step
39
+ */
40
+ protected shouldStep(intervalMs: number): boolean;
41
+ /**
42
+ * Read and return the current pixel buffer from the WebGL canvas.
43
+ * The result is vertically flipped to match 2D canvas expectations.
44
+ *
45
+ * @param width - Optional override for width (defaults to `lastWidth`)
46
+ * @param height - Optional override for height (defaults to `lastHeight`)
47
+ * @returns A `Uint8ClampedArray` of RGBA pixel data
48
+ */
49
+ readPixels(width?: number, height?: number): Uint8ClampedArray;
50
+ }
51
+ //# sourceMappingURL=webgl-base-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-base-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/base/webgl-base-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;GAKG;AACH,8BAAsB,iBAAkB,YAAW,QAAQ;IACzD,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,iEAAiE;IACjE,SAAS,CAAC,EAAE,EAAE,qBAAqB,CAAC;IAEpC,0DAA0D;IAC1D,SAAS,CAAC,SAAS,SAAK;IAExB,2DAA2D;IAC3D,SAAS,CAAC,UAAU,SAAK;IAEzB,6DAA6D;IAC7D,SAAS,CAAC,UAAU,SAAK;;IASzB;;;OAGG;IACH,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzD;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IASjD;;;;;;;OAOG;IACH,UAAU,CACR,KAAK,SAAiB,EACtB,MAAM,SAAkB,GACvB,iBAAiB;CAsBrB"}
@@ -0,0 +1,58 @@
1
+ import { WebGLRendererBase } from './base/webgl-base-renderer';
2
+ import { Renderer } from '../../types';
3
+
4
+ /**
5
+ * A WebGL-based renderer that creates a vertical color-drop animation.
6
+ *
7
+ * This renderer simulates falling color bands (like a waterfall or rain)
8
+ * by animating a vertical gradient of hues within a specified hue range.
9
+ *
10
+ * The animation is driven by a shader program and controlled through
11
+ * uniform parameters including `hueOffset`, `minHue`, and `maxHue`.
12
+ */
13
+ export declare class DropRenderer extends WebGLRendererBase implements Renderer {
14
+ private program;
15
+ private posBuffer;
16
+ private aPosition;
17
+ private uMinHue;
18
+ private uMaxHue;
19
+ private uHueOffset;
20
+ private uGridHeight;
21
+ private minHue;
22
+ private maxHue;
23
+ private hueOffset;
24
+ private speedPx;
25
+ /**
26
+ * Creates a new DropRenderer with the specified scroll speed.
27
+ * @param speedPx - The vertical speed in pixels per update cycle.
28
+ */
29
+ constructor(speedPx?: number);
30
+ /**
31
+ * Resets the renderer's animation state to its initial values.
32
+ */
33
+ reset(): void;
34
+ /**
35
+ * Renders a new frame by updating hueOffset and redrawing the gradient.
36
+ *
37
+ * @param width - Width of the output frame
38
+ * @param height - Height of the output frame
39
+ */
40
+ renderFrame(width: number, height: number): void;
41
+ /**
42
+ * Compiles a GLSL shader of the given type.
43
+ *
44
+ * @param type - gl.VERTEX_SHADER or gl.FRAGMENT_SHADER
45
+ * @param source - GLSL source code
46
+ * @returns The compiled shader object
47
+ */
48
+ private compileShader;
49
+ /**
50
+ * Links a vertex and fragment shader into a complete WebGL program.
51
+ *
52
+ * @param vertexShader - Compiled vertex shader
53
+ * @param fragmentShader - Compiled fragment shader
54
+ * @returns The linked WebGL program
55
+ */
56
+ private createProgram;
57
+ }
58
+ //# sourceMappingURL=drop-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/drop-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,iBAAkB,YAAW,QAAQ;IAErE,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IAEpB;;;OAGG;gBACS,OAAO,SAAI;IAwEvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA6BhD;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAatB"}
@@ -0,0 +1,17 @@
1
+ import { Canvas2DRendererBase } from './base/canvas-2d-renderer';
2
+ import { OneShotCapable, Renderer } from '../../types';
3
+
4
+ declare const GradientBase: import('./mixins/one-shot-renderer-mixin').AbstractConstructor<Canvas2DRendererBase & OneShotCapable>;
5
+ export type GradientDirection = "horizontal" | "vertical" | "radial";
6
+ export declare class GradientRenderer extends GradientBase implements Renderer, OneShotCapable {
7
+ private offset;
8
+ private speed;
9
+ private colors;
10
+ private direction;
11
+ private loop;
12
+ constructor(colors?: string[], direction?: GradientDirection, speed?: number, loop?: boolean);
13
+ reset(): void;
14
+ renderFrame(width: number, height: number): void;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=gradient-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/gradient-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,QAAA,MAAM,YAAY,uGAA6C,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAErE,qBAAa,gBACX,SAAQ,YACR,YAAW,QAAQ,EAAE,cAAc;IAEnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,IAAI,CAAU;gBAGpB,MAAM,GAAE,MAAM,EAA+B,EAC7C,SAAS,GAAE,iBAAgC,EAC3C,KAAK,SAAI,EACT,IAAI,UAAO;IASJ,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAyB1D"}
@@ -0,0 +1,13 @@
1
+ import { Canvas2DRendererBase } from './base/canvas-2d-renderer';
2
+ import { OneShotCapable, Renderer } from '../../types';
3
+
4
+ declare const Base: import('./mixins/one-shot-renderer-mixin').AbstractConstructor<Canvas2DRendererBase & OneShotCapable>;
5
+ export declare class ImageRenderer extends Base implements Renderer, OneShotCapable {
6
+ private img;
7
+ private loaded;
8
+ constructor(src: string);
9
+ reset(): void;
10
+ renderFrame(width: number, height: number): void;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=image-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/image-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,QAAA,MAAM,IAAI,uGAA6C,CAAC;AAExD,qBAAa,aAAc,SAAQ,IAAK,YAAW,QAAQ,EAAE,cAAc;IACzE,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,GAAG,EAAE,MAAM;IAYd,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAS1D"}
@@ -0,0 +1,36 @@
1
+ import { Canvas2DRendererBase } from './base/canvas-2d-renderer';
2
+ import { Renderer } from '../../types';
3
+
4
+ /**
5
+ * A falling-character visual effect inspired by the Matrix.
6
+ *
7
+ * This renderer creates animated vertical columns of glowing characters that fall
8
+ * at different speeds and randomness, using a 2D canvas buffer.
9
+ */
10
+ export declare class MatrixRenderer extends Canvas2DRendererBase implements Renderer {
11
+ /** Tracks the Y position of the falling highlight in each column */
12
+ private columns;
13
+ /** Probability that a column will advance during an update */
14
+ private fallChance;
15
+ /** Vertical step size (in pixels) for falling columns */
16
+ private speed;
17
+ /**
18
+ * Constructs a Matrix-style renderer.
19
+ *
20
+ * @param speed - How many pixels each column advances per update (default: 1)
21
+ * @param fallChance - Probability (0 to 1) that a column will fall on each frame (default: 0.7)
22
+ */
23
+ constructor(speed?: number, fallChance?: number);
24
+ /**
25
+ * Resets all column positions and timing state.
26
+ */
27
+ reset(): void;
28
+ /**
29
+ * Renders the next frame of the animation into the internal canvas buffer.
30
+ *
31
+ * @param width - Width of the canvas in pixels
32
+ * @param height - Height of the canvas in pixels
33
+ */
34
+ renderFrame(width: number, height: number): void;
35
+ }
36
+ //# sourceMappingURL=matrix-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/matrix-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,oBAAqB,YAAW,QAAQ;IAC1E,oEAAoE;IACpE,OAAO,CAAC,OAAO,CAAgB;IAE/B,8DAA8D;IAC9D,OAAO,CAAC,UAAU,CAAS;IAE3B,yDAAyD;IACzD,OAAO,CAAC,KAAK,CAAS;IAEtB;;;;;OAKG;gBACS,KAAK,SAAI,EAAE,UAAU,SAAM;IAMvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAkDjD"}
@@ -0,0 +1,5 @@
1
+ import { OneShotCapable } from '../../../types';
2
+
3
+ export type AbstractConstructor<T = any> = abstract new (...args: any[]) => T;
4
+ export declare function OneShotRendererMixin<TBase extends AbstractConstructor>(Base: TBase): AbstractConstructor<InstanceType<TBase> & OneShotCapable>;
5
+ //# sourceMappingURL=one-shot-renderer-mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-shot-renderer-mixin.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/mixins/one-shot-renderer-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE9E,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,mBAAmB,EACpE,IAAI,EAAE,KAAK,GACV,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,CAiC3D"}
@@ -0,0 +1,30 @@
1
+ import { RenderDataSpecification, Renderer } from '../../types';
2
+
3
+ export declare const VIDEO_MAP: Record<string, {
4
+ url: string;
5
+ label: string;
6
+ }>;
7
+ export type VideoKeys = keyof typeof VIDEO_MAP;
8
+ /**
9
+ * Returns a renderer instance based on the specified mode and parameters.
10
+ *
11
+ * @param params - An object containing the parameters for the renderer.
12
+ * @param params.mode - The mode of the renderer. Supported values are:
13
+ * - `'matrix'`: Creates a matrix renderer with a specified fall chance.
14
+ * - `'video'`: Creates a video renderer with a specified video source.
15
+ * - `'image'`: Creates a image renderer with a specified inmage source.
16
+ *
17
+ * @param params.fallChance - The chance of falling, used only in `'matrix'` mode.
18
+ * @param params.video - The video source identifier, used only in `'video'` mode.
19
+ * - `'video1'`: Uses the `/assets/video.mp4` file.
20
+ * - Any other value: Uses the `/assets/circle-spin.mp4` file.
21
+ *
22
+ * @returns A `Renderer` instance corresponding to the specified mode.
23
+ *
24
+ * @throws {Error} If an unknown mode is provided.
25
+ */
26
+ export declare const getRenderer: <T extends string>({ mode, data, }: {
27
+ mode: T;
28
+ data?: RenderDataSpecification<T> | null;
29
+ }) => Renderer | null;
30
+ //# sourceMappingURL=renderer-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-factory.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/renderer-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,QAAQ,EAET,MAAM,aAAa,CAAC;AAOrB,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ3D,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,SAAS,CAAC;AAC/C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,sCAGrB;IACD,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1C,KAAG,QAAQ,GAAG,IAmBd,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Canvas2DRendererBase } from './base/canvas-2d-renderer';
2
+ import { OneShotCapable, Renderer } from '../../types';
3
+
4
+ declare const Base: import('./mixins/one-shot-renderer-mixin').AbstractConstructor<Canvas2DRendererBase & OneShotCapable>;
5
+ /**
6
+ * Renders a single solid color frame onto the canvas.
7
+ * Implements OneShotCapable, signaling `onDone()` after the first render.
8
+ */
9
+ export declare class SolidColorRenderer extends Base implements Renderer, OneShotCapable {
10
+ private color;
11
+ constructor(r?: number, g?: number, b?: number);
12
+ setColor(r: number, g: number, b: number): void;
13
+ reset(): void;
14
+ renderFrame(width: number, height: number): void;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=solid-color-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-color-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/solid-color-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,QAAA,MAAM,IAAI,uGAA6C,CAAC;AAExD;;;GAGG;AACH,qBAAa,kBACX,SAAQ,IACR,YAAW,QAAQ,EAAE,cAAc;IAEnC,OAAO,CAAC,KAAK,CAAS;gBAEV,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI;IAK/B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtC,KAAK,IAAI,IAAI;IAIb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAW1D"}