@telemetryos/development-application-host-ui 1.3.0 → 1.4.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.
@@ -0,0 +1,2 @@
1
+ import './AccountConfig.css';
2
+ export declare function AccountConfig(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import './ApplicationInfo.css';
2
+ export declare function ApplicationInfo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import './ApplicationSettings.css';
2
+ export declare function ApplicationSettings(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import './DeviceConfig.css';
2
+ export declare function DeviceConfig(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import './MediaConfig.css';
2
+ export declare function MediaConfig(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import './StubsConfig.css';
2
+ export declare function StubsConfig(): import("react/jsx-runtime").JSX.Element;
package/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>TelemetryOS Development Environment</title>
7
- <script type="module" crossorigin src="/assets/index-TSgaYT51.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BuOgYdoA.css">
7
+ <script type="module" crossorigin src="/assets/index-CqQcXFOF.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-BN-rsOqF.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
@@ -0,0 +1,44 @@
1
+ import type { Bridge } from '@telemetryos/root-sdk/bridge';
2
+ import type { Message } from './sdk-bridge';
3
+ export declare class ApiCoordinator {
4
+ private _bridge;
5
+ private _handlers;
6
+ private _storeSubscriptions;
7
+ private _subscriptionStates;
8
+ constructor(bridge: Bridge);
9
+ handleMessage(message: Message): Promise<void> | undefined;
10
+ private _handleDevicesGetInformation;
11
+ private _handleEnvironmentGetColorScheme;
12
+ private _handleAccountsGetCurrent;
13
+ private _handleUsersGetCurrent;
14
+ private _handleApplicationsGetAllByMountPoint;
15
+ private _handleApplicationsGetByName;
16
+ private _handleApplicationsSetDependencies;
17
+ private _handleMediaFoldersGetAll;
18
+ private _handleMediaGetAllByFolderId;
19
+ private _handleMediaGetAllByTag;
20
+ private _handleMediaGetById;
21
+ private _handleWeatherGetConditions;
22
+ private _handleWeatherGetDailyForecast;
23
+ private _handleWeatherGetHourlyForecast;
24
+ private _handleWeatherGetAccuWeatherConditions;
25
+ private _handleWeatherGetAccuWeatherDailyForecast;
26
+ private _handleWeatherGetAccuWeatherHourlyForecast;
27
+ private _handleProxyFetch;
28
+ private _handlePlaylistNextPage;
29
+ private _handlePlaylistPreviousPage;
30
+ private _handlePlaylistSetDuration;
31
+ private _handleOverridesSetOverride;
32
+ private _handleOverridesClearOverride;
33
+ private _handleWebsiteAppInjectScriptToIframe;
34
+ private _handleReportPlayback;
35
+ private _handleReportCampaignView;
36
+ private _handleReportAdPlayed;
37
+ private _handleReportDeviceLog;
38
+ private _handleCampaignsGetNextAd;
39
+ private _handleStoreSet;
40
+ private _handleStoreGet;
41
+ private _handleStoreSubscribe;
42
+ private _handleStoreUnsubscribe;
43
+ private _handleStoreDelete;
44
+ }
@@ -0,0 +1,19 @@
1
+ import type { StubsConfig, StubsPreset, PresetName } from '../types/stubs';
2
+ export declare class StubsConfigManager {
3
+ private config;
4
+ private listeners;
5
+ constructor();
6
+ get(path: string): any;
7
+ set(path: string, value: any): void;
8
+ getAll(): StubsConfig;
9
+ reset(): void;
10
+ loadPreset(name: PresetName): void;
11
+ getPresets(): StubsPreset[];
12
+ exportConfig(): string;
13
+ importConfig(jsonString: string): boolean;
14
+ onChange(listener: () => void): () => void;
15
+ private notifyListeners;
16
+ private saveToLocalStorage;
17
+ private loadFromLocalStorage;
18
+ }
19
+ export declare const stubsConfigManager: StubsConfigManager;
@@ -0,0 +1,110 @@
1
+ export interface DeviceStubConfig {
2
+ id: string;
3
+ name: string;
4
+ status: 'online' | 'offline';
5
+ lastSeen?: string;
6
+ serialNumber?: string;
7
+ model?: string;
8
+ manufacturer?: string;
9
+ platform?: string;
10
+ }
11
+ export interface AccountStubConfig {
12
+ id: string;
13
+ name: string;
14
+ email: string;
15
+ }
16
+ export interface UserStubConfig {
17
+ id: string;
18
+ name: string;
19
+ email: string;
20
+ }
21
+ export interface MediaFolderStubConfig {
22
+ id: string;
23
+ name: string;
24
+ parentId: string | null;
25
+ children: MediaFolderStubConfig[];
26
+ }
27
+ export interface EnvironmentStubConfig {
28
+ colorScheme: 'dark' | 'light';
29
+ }
30
+ export type ApplicationStubConfig = {
31
+ name: string;
32
+ mountPoints: Record<string, {
33
+ path: string;
34
+ [key: string]: any;
35
+ }>;
36
+ };
37
+ export type MediaContentStubConfig = {
38
+ id: string;
39
+ contentFolderId: string;
40
+ contentType: string;
41
+ name: string;
42
+ description: string;
43
+ thumbnailUrl: string;
44
+ keys: string[];
45
+ publicUrls: string[];
46
+ hidden: boolean;
47
+ tags?: string[];
48
+ validFrom?: string;
49
+ validTo?: string;
50
+ createdAt: string;
51
+ updatedAt: string;
52
+ };
53
+ export type WeatherConditionsStub = {
54
+ CityLocalized: string;
55
+ CityEnglish: string;
56
+ WindAbbr: string;
57
+ CountryCode: string;
58
+ Timezone: string;
59
+ WeatherText: string;
60
+ State: string;
61
+ Pod: string;
62
+ WeatherCode: string;
63
+ WindDirectionDegrees: string;
64
+ WindDirectionEnglish: string;
65
+ WindDirectionLocalized: string;
66
+ RelativeHumidity: number;
67
+ Timestamp: number;
68
+ Longitude: number;
69
+ Latitude: number;
70
+ Temp: number;
71
+ Pressure: number;
72
+ WindSpeed: number;
73
+ Visibility: number;
74
+ Precip: number;
75
+ };
76
+ export type WeatherForecastStub = {
77
+ Datetime: string;
78
+ Pod: string;
79
+ Label: string;
80
+ WeatherCode: string;
81
+ Timestamp: number;
82
+ Temp: number;
83
+ MinTemp: number;
84
+ MaxTemp: number;
85
+ };
86
+ export type WeatherStubConfig = {
87
+ conditions?: WeatherConditionsStub;
88
+ dailyForecast?: WeatherForecastStub[];
89
+ hourlyForecast?: WeatherForecastStub[];
90
+ accuWeatherConditions?: Record<string, any>;
91
+ accuWeatherDailyForecast?: Record<string, any>;
92
+ accuWeatherHourlyForecast?: Record<string, any>;
93
+ };
94
+ export interface StubsConfig {
95
+ device: DeviceStubConfig;
96
+ account: AccountStubConfig;
97
+ user: UserStubConfig;
98
+ applications?: ApplicationStubConfig[];
99
+ mediaFolders: MediaFolderStubConfig[];
100
+ mediaContents?: MediaContentStubConfig[];
101
+ environment: EnvironmentStubConfig;
102
+ overrides: string[];
103
+ weather?: WeatherStubConfig;
104
+ }
105
+ export type PresetName = 'default' | 'minimal' | 'rich' | 'errors';
106
+ export interface StubsPreset {
107
+ name: PresetName;
108
+ label: string;
109
+ config: StubsConfig;
110
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telemetryos/development-application-host-ui",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "The official TelemetryOS application CLI package. Use it to build applications that run on the TelemetryOS platform",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,7 +36,9 @@
36
36
  "vitest": "^3.1.3"
37
37
  },
38
38
  "dependencies": {
39
- "@telemetryos/root-sdk": "^1.3.0",
39
+ "@hugeicons/core-free-icons": "^1.0.5",
40
+ "@hugeicons/react": "^1.0.5",
41
+ "@telemetryos/root-sdk": "^1.4.1",
40
42
  "react": "^19.1.1",
41
43
  "react-dom": "^19.1.1"
42
44
  },
@@ -1 +0,0 @@
1
- *{box-sizing:border-box}html{height:100%;font-family:Arial,sans-serif}body{display:flex;flex-direction:column;min-height:100%;margin:0;background:#1b1b1d;font-family:Rubik,sans-serif}#app{display:flex;flex:1}.app__canvas-surround{display:flex;flex:1;padding:20px;min-width:0;min-height:0}.canvas{display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center}.canvas__application-container{position:relative;display:flex;flex-direction:column;border:1px solid rgb(54,52,55);border-radius:8px;background:#1b1b1d}.canvas__application-container iframe{flex:1;border:none}.canvas__application-container-drag-handle{position:absolute;bottom:2px;right:2px;display:flex;align-items:center;justify-content:center;width:12px;height:12px;opacity:.3;cursor:se-resize}.canvas__application-container-drag-handle svg{width:12px;height:12px}.right-sidebar{display:flex;flex-direction:column;width:260px}.right-sidebar__navigation{display:flex;flex-direction:column;width:120px}.right-sidebar__container{display:flex;flex-direction:column;flex:1;border:1px solid rgb(54,52,55);border-radius:8px;margin:20px 8px 20px 0}.right-sidebar__header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid rgb(54,52,55);border-radius:8px 8px 0 0;background:#161618}.right-sidebar__header-title{color:#cacace;font-size:14px;font-weight:600}.right-sidebar__container iframe{flex:1;border:none}.scaling-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:0}.scaling-container__inner{display:flex;flex-direction:column}