@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.
- package/index.cjs +27 -26
- package/index.cjs.map +1 -1
- package/index.js +1508 -1326
- package/index.js.map +1 -1
- package/models/models/canvas-dispatcher/types/index.d.ts +49 -2
- package/models/models/canvas-dispatcher/utils/renderers/overlay-renderer.d.ts +76 -0
- package/models/models/canvas-dispatcher/utils/renderers/overlay-renderer.d.ts.map +1 -0
- package/models/models/canvas-dispatcher/utils/renderers/renderer-factory.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/scrolling-text-renderer.d.ts +5 -0
- package/models/models/canvas-dispatcher/utils/renderers/scrolling-text-renderer.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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 =
|
|
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;
|
|
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;
|
|
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.
|
|
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": "
|
|
39
|
+
"gitHash": "e892e3567f1518d84fb37df390a1b23e5bc40ccd"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|