@kosdev-code/kos-ui-sdk 2.0.38 → 2.0.40

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.
@@ -25,7 +25,14 @@ declare interface OneShotCapable extends DoneAware {
25
25
 
26
26
  declare type RendererOptions = "sweep" | "matrix" | "video" | "drop" | "none";
27
27
 
28
- declare type RendererMode = "video" | "image" | "color" | "sequence" | "matrix" | "text";
28
+ declare type RendererMode =
29
+ | "video"
30
+ | "image"
31
+ | "color"
32
+ | "sequence"
33
+ | "matrix"
34
+ | "text"
35
+ | "overlay";
29
36
  declare interface RenderSpecification<T extends RendererMode> {
30
37
  type: T;
31
38
  id: string;
@@ -86,9 +93,10 @@ declare interface MatrixRenderDataSpecification {
86
93
  }
87
94
 
88
95
  declare interface TextRenderDataSpecification {
89
- text: string; // The text to display
96
+ text: string; // The text to display (use \n for line breaks)
90
97
  fontSize?: number; // Font size in pixels (default: 8, optimized for small LED panels)
91
98
  fontFamily?: string; // Font family name (default: monospace font stack for LED readability)
99
+ lineHeight?: number; // Line height in pixels (default: fontSize + 2 for spacing)
92
100
  color?: { r: number; g: number; b: number } | string; // Text color (RGB object or hex string, default: white)
93
101
  duration?: number; // how long to display in milliseconds (for static text)
94
102
  loop?: boolean | number; // for repeating display or scrolling
@@ -103,6 +111,40 @@ declare interface TextRenderDataSpecification {
103
111
  };
104
112
  }
105
113
 
114
+ declare type OverlayPosition =
115
+ | "top-left"
116
+ | "top-center"
117
+ | "top-right"
118
+ | "center-left"
119
+ | "center"
120
+ | "center-right"
121
+ | "bottom-left"
122
+ | "bottom-center"
123
+ | "bottom-right";
124
+
125
+ declare interface OverlayCustomPosition {
126
+ x: number;
127
+ y: number;
128
+ }
129
+
130
+ declare interface OverlayIconConfig {
131
+ src: string; // Image source for the overlay icon
132
+ size: number; // Size of the overlay icon (width and height)
133
+ position: OverlayPosition | OverlayCustomPosition; // Position of the overlay
134
+ offset?: { x?: number; y?: number }; // Optional offset from the position in pixels
135
+ opacity?: number; // Optional opacity (0-1)
136
+ persistent?: boolean; // Whether the overlay should always be visible (default: true)
137
+ }
138
+
139
+ declare interface OverlayRenderDataSpecification {
140
+ baseRenderer: {
141
+ type: string;
142
+ data: any;
143
+ }; // The base renderer configuration
144
+ overlays: OverlayIconConfig[]; // Array of overlay icons to display
145
+ persistOverlaysOnComplete?: boolean; // Whether overlays remain visible after base renderer completes (default: true)
146
+ }
147
+
106
148
  declare type RenderDataSpecification<T extends RendererMode> = T extends "video"
107
149
  ? VideoRenderDataSpecification
108
150
  : T extends "image"
@@ -115,6 +157,8 @@ declare type RenderDataSpecification<T extends RendererMode> = T extends "video"
115
157
  ? MatrixRenderDataSpecification
116
158
  : T extends "text"
117
159
  ? TextRenderDataSpecification
160
+ : T extends "overlay"
161
+ ? OverlayRenderDataSpecification
118
162
  : any;
119
163
 
120
164
  declare type VideoRenderData = RenderSpecification<"video">;
@@ -127,12 +171,15 @@ declare type MatrixRenderData = RenderSpecification<"matrix">;
127
171
 
128
172
  declare type TextRenderData = RenderSpecification<"text">;
129
173
 
174
+ declare type OverlayRenderData = RenderSpecification<"overlay">;
175
+
130
176
  declare type RenderData =
131
177
  | VideoRenderData
132
178
  | ImageRenderData
133
179
  | ColorRenderData
134
180
  | MatrixRenderData
135
181
  | TextRenderData
182
+ | OverlayRenderData
136
183
  | any;
137
184
 
138
185
  declare interface EndpointData {
@@ -0,0 +1,76 @@
1
+ import { DoneAware, Renderer } from '../../types';
2
+
3
+ /**
4
+ * Predefined overlay positions for easy positioning
5
+ */
6
+ export type OverlayPosition = "top-left" | "top-center" | "top-right" | "center-left" | "center" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right";
7
+ /**
8
+ * Custom positioning with explicit coordinates
9
+ */
10
+ export interface OverlayCustomPosition {
11
+ x: number;
12
+ y: number;
13
+ }
14
+ /**
15
+ * Configuration for a single overlay icon
16
+ */
17
+ export interface OverlayIconConfig {
18
+ /** Image source for the overlay icon */
19
+ src: string;
20
+ /** Size of the overlay icon (width and height) */
21
+ size: number;
22
+ /** Position of the overlay - either predefined name or custom coordinates */
23
+ position: OverlayPosition | OverlayCustomPosition;
24
+ /** Optional offset from the position in pixels */
25
+ offset?: {
26
+ x?: number;
27
+ y?: number;
28
+ };
29
+ /** Optional opacity (0-1) */
30
+ opacity?: number;
31
+ /** Whether the overlay should always be visible (default: true) */
32
+ persistent?: boolean;
33
+ }
34
+ /**
35
+ * Configuration for overlay renderer
36
+ */
37
+ export interface OverlayRenderDataSpecification {
38
+ /** The base renderer configuration */
39
+ baseRenderer: {
40
+ type: string;
41
+ data: any;
42
+ };
43
+ /** Array of overlay icons to display */
44
+ overlays: OverlayIconConfig[];
45
+ /** Whether overlays should remain visible after base renderer completes (default: true) */
46
+ persistOverlaysOnComplete?: boolean;
47
+ }
48
+ /**
49
+ * A renderer that wraps another renderer and adds static overlay icons
50
+ * that are not affected by scrolling, scaling, or other transformations.
51
+ */
52
+ export declare class OverlayRenderer implements Renderer, DoneAware {
53
+ private baseRenderer;
54
+ private overlayIcons;
55
+ private overlayConfigs;
56
+ private loadedIcons;
57
+ private canvas;
58
+ private ctx;
59
+ private persistOverlaysOnComplete;
60
+ private baseRendererCompleted;
61
+ private completionCallback;
62
+ private hasSignaledCompletion;
63
+ constructor(data: OverlayRenderDataSpecification, rendererFactory: (type: string, data: any) => Renderer);
64
+ private loadOverlayImages;
65
+ private calculateOverlayPosition;
66
+ reset(): void;
67
+ renderFrame(width: number, height: number): void;
68
+ private renderOverlays;
69
+ readPixels(width: number, height: number): Uint8ClampedArray;
70
+ play?(): void;
71
+ pause?(): void;
72
+ dispose?(): void;
73
+ onDone(callback: () => void): void;
74
+ isOneShot?(): boolean;
75
+ }
76
+ //# sourceMappingURL=overlay-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/overlay-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgC,QAAQ,EAAE,MAAM,aAAa,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,QAAQ,GACR,cAAc,GACd,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,eAAe,GAAG,qBAAqB,CAAC;IAClD,kDAAkD;IAClD,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,sCAAsC;IACtC,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IACF,wCAAwC;IACxC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,2FAA2F;IAC3F,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ,EAAE,SAAS;IACzD,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,yBAAyB,CAAU;IAC3C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,IAAI,EAAE,8BAA8B,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,QAAQ;YA2B1F,iBAAiB;IAkB/B,OAAO,CAAC,wBAAwB;IAkEhC,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgChD,OAAO,CAAC,cAAc;IAmCtB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAK5D,IAAI,CAAC,IAAI,IAAI;IAMb,KAAK,CAAC,IAAI,IAAI;IAMd,OAAO,CAAC,IAAI,IAAI;IAgBhB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IASlC,SAAS,CAAC,IAAI,OAAO;CAYtB"}
@@ -1 +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":"AAKA,OAAO,KAAK,EACV,uBAAuB,EACvB,QAAQ,EAER,YAAY,EACb,MAAM,aAAa,CAAC;AA+DrB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,4CAGrB;IACD,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1C,KAAG,QAAQ,GAAG,IAQd,CAAC"}
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":"AAKA,OAAO,KAAK,EACV,uBAAuB,EACvB,QAAQ,EAER,YAAY,EACb,MAAM,aAAa,CAAC;AAmGrB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,4CAGrB;IACD,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1C,KAAG,QAAQ,GAAG,IAQd,CAAC"}
@@ -14,8 +14,10 @@ import { DoneAware, Renderer, TextRenderDataSpecification } from '../../types';
14
14
  */
15
15
  export declare class ScrollingTextRenderer extends Canvas2DRendererBase implements Renderer, DoneAware {
16
16
  private text;
17
+ private lines;
17
18
  private fontSize;
18
19
  private fontFamily;
20
+ private lineHeight;
19
21
  private textColor;
20
22
  private scrollConfig;
21
23
  private loopConfig;
@@ -32,6 +34,7 @@ export declare class ScrollingTextRenderer extends Canvas2DRendererBase implemen
32
34
  private pauseStartTime;
33
35
  private textWidth;
34
36
  private textHeight;
37
+ private lineWidths;
35
38
  private textMeasured;
36
39
  constructor(data: TextRenderDataSpecification);
37
40
  private measureText;
@@ -41,6 +44,8 @@ export declare class ScrollingTextRenderer extends Canvas2DRendererBase implemen
41
44
  renderFrame(width: number, height: number): void;
42
45
  private drawStaticText;
43
46
  private drawScrollingText;
47
+ private drawMultiLineScrollText;
48
+ private drawTextBlock;
44
49
  private checkScrollCompletion;
45
50
  private startPauseOrNextLoop;
46
51
  private handleCompletion;
@@ -1 +1 @@
1
- {"version":3,"file":"scrolling-text-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/scrolling-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,qBAAa,qBACX,SAAQ,oBACR,YAAW,QAAQ,EAAE,SAAS;IAE9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,2BAA2B;IAsB7C,OAAO,CAAC,WAAW;IAaV,KAAK,IAAI,IAAI;IAYtB,IAAI,IAAI,IAAI;IAQZ,KAAK,IAAI,IAAI;IAIJ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA6EzD,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,iBAAiB;IA0IzB,OAAO,CAAC,qBAAqB;IAqD7B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,gBAAgB;IAQxB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,SAAS,IAAI,OAAO;IAIX,OAAO,IAAI,IAAI;CAGzB"}
1
+ {"version":3,"file":"scrolling-text-renderer.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/canvas-dispatcher/utils/renderers/scrolling-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,qBAAa,qBACX,SAAQ,oBACR,YAAW,QAAQ,EAAE,SAAS;IAE9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,2BAA2B;IAyB7C,OAAO,CAAC,WAAW;IAuBV,KAAK,IAAI,IAAI;IAatB,IAAI,IAAI,IAAI;IAQZ,KAAK,IAAI,IAAI;IAIJ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA6EzD,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iBAAiB;IAuDzB,OAAO,CAAC,uBAAuB;IAuG/B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,qBAAqB;IAqD7B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,gBAAgB;IAQxB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,SAAS,IAAI,OAAO;IAIX,OAAO,IAAI,IAAI;CAGzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosdev-code/kos-ui-sdk",
3
- "version": "2.0.38",
3
+ "version": "2.0.40",
4
4
  "type": "module",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "kos": {
38
38
  "build": {
39
- "gitHash": "947b05a4e1860e92198ad178749395ee6e4531fd"
39
+ "gitHash": "e892e3567f1518d84fb37df390a1b23e5bc40ccd"
40
40
  }
41
41
  }
42
42
  }