@yamcs/opi 1.3.12 → 1.3.14

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.
@@ -3,6 +3,7 @@ import { ConsoleHandler } from "./ConsoleHandler";
3
3
  import { DialogHandler } from "./DialogHandler";
4
4
  import { FontResolver } from "./FontResolver";
5
5
  import { Formatter } from "./Formatter";
6
+ import { ImageLoader } from "./ImageLoader";
6
7
  import { PathResolver } from "./PathResolver";
7
8
  import { ScriptLoader } from "./ScriptLoader";
8
9
  import { Widget } from "./Widget";
@@ -57,6 +58,7 @@ export declare class Display {
57
58
  private pathResolver;
58
59
  private fontResolver?;
59
60
  private scriptLoader;
61
+ private imageLoader;
60
62
  private consoleHandler;
61
63
  private dialogHandler;
62
64
  formatter: Formatter;
@@ -93,6 +95,9 @@ export declare class Display {
93
95
  getPathResolver(): PathResolver;
94
96
  setScriptLoader(scriptLoader: ScriptLoader): void;
95
97
  getScriptLoader(): ScriptLoader;
98
+ loadContent(url: string): Promise<string | null>;
99
+ setImageLoader(imageLoader: ImageLoader): void;
100
+ getImageLoader(): ImageLoader;
96
101
  setConsoleHandler(consoleHandler: ConsoleHandler): void;
97
102
  getConsoleHandler(): ConsoleHandler;
98
103
  setDialogHandler(dialogHandler: DialogHandler): void;
@@ -113,7 +118,9 @@ export declare class Display {
113
118
  setSource(href: string, args?: {
114
119
  [key: string]: string;
115
120
  }): Promise<void>;
116
- private setSourceString;
121
+ setSourceString(source: string, args?: {
122
+ [key: string]: string;
123
+ }): void;
117
124
  getRefreshCycle(): number;
118
125
  setRefreshCycle(refreshCycle: number): void;
119
126
  private reset;
@@ -0,0 +1,8 @@
1
+ export interface ImageLoader {
2
+ /** Resolves a URL to a src value suitable for an HTMLImageElement. */
3
+ load(url: string): Promise<string>;
4
+ }
5
+ /** Default implementation: passes the URL through unchanged. */
6
+ export declare class DefaultImageLoader implements ImageLoader {
7
+ load(url: string): Promise<string>;
8
+ }
@@ -0,0 +1,10 @@
1
+ import { ImageLoader } from "./ImageLoader";
2
+ /**
3
+ * ImageLoader for use inside the sandboxed display iframe.
4
+ * Requests the outer frame to fetch images with credentials and return data URLs.
5
+ */
6
+ export declare class PostMessageImageLoader implements ImageLoader {
7
+ private pending;
8
+ load(url: string): Promise<string>;
9
+ receiveData(url: string, dataUrl: string | null): void;
10
+ }
@@ -0,0 +1,6 @@
1
+ import { ScriptLoader } from "./ScriptLoader";
2
+ export declare class PostMessageScriptLoader implements ScriptLoader {
3
+ private pending;
4
+ load(path: string): Promise<string | null>;
5
+ receiveContent(path: string, content: string | null): void;
6
+ }
@@ -4,6 +4,7 @@ export interface OPIEvent {
4
4
  export interface OPIEventMap {
5
5
  [index: string]: OPIEvent;
6
6
  closedisplay: CloseDisplayEvent;
7
+ displayloaded: DisplayLoadedEvent;
7
8
  opendisplay: OpenDisplayEvent;
8
9
  openpv: OpenPVEvent;
9
10
  runcommand: RunCommandEvent;
@@ -60,6 +61,12 @@ export interface RunProcedureEvent extends OPIEvent {
60
61
  [key: string]: string;
61
62
  };
62
63
  }
64
+ /**
65
+ * The display has finished loading and is ready to paint.
66
+ */
67
+ export interface DisplayLoadedEvent extends OPIEvent {
68
+ backgroundColor: string;
69
+ }
63
70
  /**
64
71
  * This display scale has changed.
65
72
  */
@@ -4,11 +4,15 @@ export { DefaultDialogHandler, DialogHandler } from "./DialogHandler";
4
4
  export { Display } from "./Display";
5
5
  export { Font } from "./Font";
6
6
  export { FontResolver } from "./FontResolver";
7
+ export { DefaultImageLoader, ImageLoader } from "./ImageLoader";
7
8
  export { DefaultPathResolver, PathResolver } from "./PathResolver";
8
9
  export { Dimension, NullablePoint, Point } from "./positioning";
10
+ export { PostMessageImageLoader } from "./PostMessageImageLoader";
11
+ export { PostMessageScriptLoader } from "./PostMessageScriptLoader";
9
12
  export { CompiledFormula, DataSourceStatus, } from "./pv/formulas/CompiledFormula";
10
13
  export { FormulaCompiler } from "./pv/formulas/FormulaCompiler";
11
14
  export { HistoricalDataProvider } from "./pv/HistoricalDataProvider";
15
+ export { PostMessagePVProvider } from "./pv/PostMessagePVProvider";
12
16
  export { AlarmSeverity, PV } from "./pv/PV";
13
17
  export { PVProvider } from "./pv/PVProvider";
14
18
  export { Sample } from "./pv/Sample";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { NullablePoint } from "../positioning";
2
+ import { Widget } from "../Widget";
3
+ import { HistoricalDataProvider } from "./HistoricalDataProvider";
4
+ export declare function handleHistorySamples(pvName: string, samples: NullablePoint[]): void;
5
+ export declare class PostMessageHistoricalDataProvider implements HistoricalDataProvider {
6
+ private pvName;
7
+ private widget;
8
+ private samples;
9
+ constructor(pvName: string, widget: Widget);
10
+ getSamples(): NullablePoint[];
11
+ updateSamples(samples: NullablePoint[]): void;
12
+ disconnect(): void;
13
+ }
@@ -0,0 +1,13 @@
1
+ import { Widget } from "../Widget";
2
+ import { HistoricalDataProvider } from "./HistoricalDataProvider";
3
+ import { PV } from "./PV";
4
+ import { PVProvider } from "./PVProvider";
5
+ export declare class PostMessagePVProvider implements PVProvider {
6
+ canProvide(_pvName: string): boolean;
7
+ startProviding(pvs: PV[]): void;
8
+ stopProviding(pvs: PV[]): void;
9
+ isNavigable(): boolean;
10
+ writeValue(pvName: string, value: any): void;
11
+ createHistoricalDataProvider(pvName: string, widget: Widget): HistoricalDataProvider | void;
12
+ shutdown(): void;
13
+ }
@@ -1,6 +1,5 @@
1
1
  import { PV } from "../pv/PV";
2
2
  import { Widget } from "../Widget";
3
- export declare function getIframeContentWindow(): Window | null;
4
3
  export declare class ScriptEngine {
5
4
  readonly widget: Widget;
6
5
  readonly scriptText: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yamcs/opi",
3
- "version": "1.3.12",
3
+ "version": "1.3.14",
4
4
  "description": "OPI Display Renderer",
5
5
  "author": "Yamcs Team <yamcs@spaceapplications.com>",
6
6
  "repository": {
@@ -36,5 +36,9 @@
36
36
  "prettier": "^3.5.3",
37
37
  "tslib": "^2.6.3",
38
38
  "typescript": "^6.0.3"
39
+ },
40
+ "allowScripts": {
41
+ "esbuild": true,
42
+ "fsevents": true
39
43
  }
40
44
  }