@midscene/playground-app 1.7.6 → 1.7.7-beta-20260428102047.0

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.
@@ -13,7 +13,7 @@ function isNonLocalhostHttp() {
13
13
  return false;
14
14
  }
15
15
  }
16
- function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating }) {
16
+ function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, scrcpyViewportStyle, screenshotViewerMode, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating }) {
17
17
  const previewConnection = resolvePreviewConnectionInfo(runtimeInfo, serverUrl);
18
18
  const scrcpyAvailable = 'scrcpy' === previewConnection.type && WebCodecsVideoDecoder.isSupported;
19
19
  const useScreenshot = 'screenshot' === previewConnection.type || 'scrcpy' === previewConnection.type && !scrcpyAvailable;
@@ -122,13 +122,15 @@ function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorO
122
122
  deviceId: previewConnection.deviceId,
123
123
  onStatusChange: onScrcpyStatusChange,
124
124
  renderErrorOverlay: renderErrorOverlay,
125
- serverUrl: previewConnection.scrcpyUrl
125
+ serverUrl: previewConnection.scrcpyUrl,
126
+ viewportStyle: scrcpyViewportStyle
126
127
  }) : /*#__PURE__*/ jsx(ScreenshotViewer, {
127
128
  getScreenshot: ()=>useScreenshot ? playgroundSDK.getScreenshot() : Promise.resolve(null),
128
129
  getInterfaceInfo: ()=>playgroundSDK.getInterfaceInfo(),
129
130
  serverOnline: serverOnline,
130
131
  isUserOperating: isUserOperating,
131
- mjpegUrl: previewConnection.mjpegUrl
132
+ mjpegUrl: previewConnection.mjpegUrl,
133
+ mode: screenshotViewerMode
132
134
  })
133
135
  ]
134
136
  });
@@ -75,7 +75,7 @@ function _object_spread_props(target, source) {
75
75
  return target;
76
76
  }
77
77
  const { Text } = Typography;
78
- function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs = SCRCPY_METADATA_TIMEOUT_MS, reconnectInterval = 3000 }) {
78
+ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs = SCRCPY_METADATA_TIMEOUT_MS, reconnectInterval = 3000, viewportStyle }) {
79
79
  const canvasStageRef = useRef(null);
80
80
  const socketRef = useRef(null);
81
81
  const decoderRef = useRef(null);
@@ -302,7 +302,7 @@ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorO
302
302
  description: errorMessage
303
303
  }) : null,
304
304
  /*#__PURE__*/ jsxs("div", {
305
- style: {
305
+ style: _object_spread({
306
306
  position: 'relative',
307
307
  flex: 1,
308
308
  minHeight: 0,
@@ -312,7 +312,7 @@ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorO
312
312
  background: '#111827',
313
313
  borderRadius: 8,
314
314
  overflow: 'hidden'
315
- },
315
+ }, viewportStyle),
316
316
  children: [
317
317
  /*#__PURE__*/ jsx("div", {
318
318
  ref: canvasStageRef,
@@ -129,6 +129,13 @@ function SessionSetupPanel({ form, sessionSetup, sessionSetupError, sessionViewS
129
129
  description: sessionSetupError,
130
130
  className: "session-setup-alert"
131
131
  }) : null,
132
+ (null == sessionSetup ? void 0 : sessionSetup.notice) ? /*#__PURE__*/ jsx(Alert, {
133
+ type: sessionSetup.notice.type,
134
+ showIcon: true,
135
+ message: sessionSetup.notice.message,
136
+ description: sessionSetup.notice.description,
137
+ className: "session-setup-alert"
138
+ }) : null,
132
139
  /*#__PURE__*/ jsxs(Form, {
133
140
  form: form,
134
141
  layout: "vertical",
@@ -41,7 +41,7 @@ function isNonLocalhostHttp() {
41
41
  return false;
42
42
  }
43
43
  }
44
- function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating }) {
44
+ function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, scrcpyViewportStyle, screenshotViewerMode, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating }) {
45
45
  const previewConnection = (0, external_runtime_info_js_namespaceObject.resolvePreviewConnectionInfo)(runtimeInfo, serverUrl);
46
46
  const scrcpyAvailable = 'scrcpy' === previewConnection.type && scrcpy_decoder_webcodecs_namespaceObject.WebCodecsVideoDecoder.isSupported;
47
47
  const useScreenshot = 'screenshot' === previewConnection.type || 'scrcpy' === previewConnection.type && !scrcpyAvailable;
@@ -150,13 +150,15 @@ function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorO
150
150
  deviceId: previewConnection.deviceId,
151
151
  onStatusChange: onScrcpyStatusChange,
152
152
  renderErrorOverlay: renderErrorOverlay,
153
- serverUrl: previewConnection.scrcpyUrl
153
+ serverUrl: previewConnection.scrcpyUrl,
154
+ viewportStyle: scrcpyViewportStyle
154
155
  }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(visualizer_namespaceObject.ScreenshotViewer, {
155
156
  getScreenshot: ()=>useScreenshot ? playgroundSDK.getScreenshot() : Promise.resolve(null),
156
157
  getInterfaceInfo: ()=>playgroundSDK.getInterfaceInfo(),
157
158
  serverOnline: serverOnline,
158
159
  isUserOperating: isUserOperating,
159
- mjpegUrl: previewConnection.mjpegUrl
160
+ mjpegUrl: previewConnection.mjpegUrl,
161
+ mode: screenshotViewerMode
160
162
  })
161
163
  ]
162
164
  });
@@ -103,7 +103,7 @@ function _object_spread_props(target, source) {
103
103
  return target;
104
104
  }
105
105
  const { Text } = external_antd_namespaceObject.Typography;
106
- function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs = external_scrcpy_preview_js_namespaceObject.SCRCPY_METADATA_TIMEOUT_MS, reconnectInterval = 3000 }) {
106
+ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs = external_scrcpy_preview_js_namespaceObject.SCRCPY_METADATA_TIMEOUT_MS, reconnectInterval = 3000, viewportStyle }) {
107
107
  const canvasStageRef = (0, external_react_namespaceObject.useRef)(null);
108
108
  const socketRef = (0, external_react_namespaceObject.useRef)(null);
109
109
  const decoderRef = (0, external_react_namespaceObject.useRef)(null);
@@ -330,7 +330,7 @@ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorO
330
330
  description: errorMessage
331
331
  }) : null,
332
332
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
333
- style: {
333
+ style: _object_spread({
334
334
  position: 'relative',
335
335
  flex: 1,
336
336
  minHeight: 0,
@@ -340,7 +340,7 @@ function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorO
340
340
  background: '#111827',
341
341
  borderRadius: 8,
342
342
  overflow: 'hidden'
343
- },
343
+ }, viewportStyle),
344
344
  children: [
345
345
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
346
346
  ref: canvasStageRef,
@@ -168,6 +168,13 @@ function SessionSetupPanel({ form, sessionSetup, sessionSetupError, sessionViewS
168
168
  description: sessionSetupError,
169
169
  className: "session-setup-alert"
170
170
  }) : null,
171
+ (null == sessionSetup ? void 0 : sessionSetup.notice) ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Alert, {
172
+ type: sessionSetup.notice.type,
173
+ showIcon: true,
174
+ message: sessionSetup.notice.message,
175
+ description: sessionSetup.notice.description,
176
+ className: "session-setup-alert"
177
+ }) : null,
171
178
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_antd_namespaceObject.Form, {
172
179
  form: form,
173
180
  layout: "vertical",
@@ -1,11 +1,14 @@
1
1
  import type { PlaygroundRuntimeInfo, PlaygroundSDK } from '@midscene/playground';
2
- import type { ReactNode } from 'react';
2
+ import type { ScreenshotViewerMode } from '@midscene/visualizer';
3
+ import type { CSSProperties, ReactNode } from 'react';
3
4
  import type { ScrcpyErrorOverlayRenderer } from './ScrcpyPanel';
4
5
  import type { ScrcpyPreviewStatus } from './scrcpy-preview';
5
6
  export interface PlaygroundPreviewProps {
6
7
  connectingOverlay?: ReactNode;
7
8
  onScrcpyStatusChange?: (status: ScrcpyPreviewStatus, statusText: string) => void;
8
9
  renderErrorOverlay?: ScrcpyErrorOverlayRenderer;
10
+ scrcpyViewportStyle?: CSSProperties;
11
+ screenshotViewerMode?: ScreenshotViewerMode;
9
12
  playgroundSDK: PlaygroundSDK;
10
13
  runtimeInfo: PlaygroundRuntimeInfo | null;
11
14
  serverUrl: string;
@@ -1,16 +1,19 @@
1
1
  import type { PlaygroundRuntimeInfo, PlaygroundSDK } from '@midscene/playground';
2
- import type { ReactNode } from 'react';
2
+ import { type ScreenshotViewerMode } from '@midscene/visualizer';
3
+ import type { CSSProperties, ReactNode } from 'react';
3
4
  import { type ScrcpyErrorOverlayRenderer } from './ScrcpyPanel';
4
5
  import type { ScrcpyPreviewStatus } from './scrcpy-preview';
5
6
  interface PreviewRendererProps {
6
7
  connectingOverlay?: ReactNode;
7
8
  onScrcpyStatusChange?: (status: ScrcpyPreviewStatus, statusText: string) => void;
8
9
  renderErrorOverlay?: ScrcpyErrorOverlayRenderer;
10
+ scrcpyViewportStyle?: CSSProperties;
11
+ screenshotViewerMode?: ScreenshotViewerMode;
9
12
  playgroundSDK: PlaygroundSDK;
10
13
  runtimeInfo: PlaygroundRuntimeInfo | null;
11
14
  serverUrl: string;
12
15
  serverOnline: boolean;
13
16
  isUserOperating: boolean;
14
17
  }
15
- export declare function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating, }: PreviewRendererProps): import("react").JSX.Element;
18
+ export declare function PreviewRenderer({ connectingOverlay, onScrcpyStatusChange, renderErrorOverlay, scrcpyViewportStyle, screenshotViewerMode, playgroundSDK, runtimeInfo, serverUrl, serverOnline, isUserOperating, }: PreviewRendererProps): import("react").JSX.Element;
16
19
  export {};
@@ -1,4 +1,4 @@
1
- import React, { type ReactNode } from 'react';
1
+ import React, { type CSSProperties, type ReactNode } from 'react';
2
2
  import { type ScrcpyPreviewStatus } from './scrcpy-preview';
3
3
  export interface ScrcpyErrorOverlayContext {
4
4
  errorMessage: string | null;
@@ -15,6 +15,7 @@ interface ScrcpyPanelProps {
15
15
  serverUrl?: string;
16
16
  metadataTimeoutMs?: number;
17
17
  reconnectInterval?: number;
18
+ viewportStyle?: CSSProperties;
18
19
  }
19
- export declare function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs, reconnectInterval, }: ScrcpyPanelProps): React.JSX.Element;
20
+ export declare function ScrcpyPanel({ connectingOverlay, deviceId, onStatusChange, renderErrorOverlay, serverUrl, metadataTimeoutMs, reconnectInterval, viewportStyle, }: ScrcpyPanelProps): React.JSX.Element;
20
21
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midscene/playground-app",
3
- "version": "1.7.6",
3
+ "version": "1.7.7-beta-20260428102047.0",
4
4
  "description": "Reusable React shell for Midscene playground applications",
5
5
  "repository": "https://github.com/web-infra-dev/midscene",
6
6
  "homepage": "https://midscenejs.com/",
@@ -28,9 +28,9 @@
28
28
  "antd": "^5.21.6",
29
29
  "react-resizable-panels": "2.0.22",
30
30
  "socket.io-client": "4.8.1",
31
- "@midscene/playground": "1.7.6",
32
- "@midscene/shared": "1.7.6",
33
- "@midscene/visualizer": "1.7.6"
31
+ "@midscene/shared": "1.7.7-beta-20260428102047.0",
32
+ "@midscene/visualizer": "1.7.7-beta-20260428102047.0",
33
+ "@midscene/playground": "1.7.7-beta-20260428102047.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@rsbuild/plugin-less": "^1.5.0",