Refactor views to support dynamic updates.

This commit is contained in:
Dermot Duffy
2024-07-26 19:15:38 -07:00
parent 33dee47205
commit d5c4e56c45
80 changed files with 3714 additions and 4021 deletions
+14 -10
View File
@@ -35,7 +35,7 @@ import { MicrophoneManager } from '../src/card-controller/microphone-manager';
import { QueryStringManager } from '../src/card-controller/query-string-manager';
import { StyleManager } from '../src/card-controller/style-manager';
import { TriggersManager } from '../src/card-controller/triggers-manager';
import { ViewManager } from '../src/card-controller/view-manager';
import { ViewManager } from '../src/card-controller/view/view-manager';
import {
CameraConfig,
FrigateCardCondition,
@@ -278,14 +278,6 @@ export const createMediaLoadedInfoEvent = (
});
};
export const createViewChangeEvent = (view?: View): CustomEvent<View> => {
return new CustomEvent('frigate-card:view:change', {
detail: view ?? createView(),
composed: true,
bubbles: true,
});
};
export const createPerformanceConfig = (config: unknown): PerformanceConfig => {
return performanceConfigSchema.parse(config);
};
@@ -297,7 +289,12 @@ export const generateViewMediaArray = (options?: {
const media: ViewMedia[] = [];
for (let i = 0; i < (options?.count ?? 100); ++i) {
for (const cameraID of options?.cameraIDs ?? ['kitchen', 'office']) {
media.push(new TestViewMedia({ cameraID: cameraID, id: `id-${cameraID}-${i}` }));
media.push(
new TestViewMedia({
cameraID: cameraID,
id: `id-${cameraID}-${i}`,
}),
);
}
}
return media;
@@ -469,3 +466,10 @@ export const callHASubscribeMessageHandler = (
expect(mock.calls.length).greaterThan(n);
mock.calls[n][0](ev);
};
/**
* Flush resolved promises.
*/
export const flushPromises = async (): Promise<void> => {
await new Promise(process.nextTick);
};