@qontinui/ui-bridge-native 0.6.4 → 0.6.5

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/dist/index.mjs CHANGED
@@ -1609,8 +1609,8 @@ function error(message, code) {
1609
1609
  function createDesignHandlers(registry) {
1610
1610
  function getScreenDimensions() {
1611
1611
  try {
1612
- const { Dimensions: Dimensions2 } = __require("react-native");
1613
- const screen = Dimensions2.get("screen");
1612
+ const { Dimensions: Dimensions3 } = __require("react-native");
1613
+ const screen = Dimensions3.get("screen");
1614
1614
  return { width: screen.width, height: screen.height };
1615
1615
  } catch {
1616
1616
  return { width: 0, height: 0 };
@@ -2244,15 +2244,6 @@ async function executeWorkflowStep(step, registry, executor) {
2244
2244
  };
2245
2245
  }
2246
2246
  }
2247
- function getWindowDimensions() {
2248
- try {
2249
- const { Dimensions: Dimensions2 } = __require("react-native");
2250
- const win = Dimensions2.get("window");
2251
- return { width: win.width, height: win.height };
2252
- } catch {
2253
- return { width: 0, height: 0 };
2254
- }
2255
- }
2256
2247
  function success2(data) {
2257
2248
  return {
2258
2249
  success: true,
@@ -2460,7 +2451,7 @@ function createServerHandlers(registry, executor, config) {
2460
2451
  },
2461
2452
  getPageHealth: async (ctx) => {
2462
2453
  const bodyViewport = ctx.body?.viewport;
2463
- const viewport = bodyViewport ?? getWindowDimensions();
2454
+ const viewport = bodyViewport ?? config?.viewportProvider?.() ?? { width: 0, height: 0 };
2464
2455
  const elements = registry.getAllElements().map((e) => ({
2465
2456
  type: e.type,
2466
2457
  state: e.getState()
@@ -3431,7 +3422,8 @@ var NativeUIBridgeServer = class {
3431
3422
  this.handlers = createServerHandlers(registry, executor, {
3432
3423
  appInfo: this.config.appInfo,
3433
3424
  consoleErrorBuffer: this.consoleErrorBuffer,
3434
- networkRequestBuffer: this.networkRequestBuffer
3425
+ networkRequestBuffer: this.networkRequestBuffer,
3426
+ viewportProvider: this.config.viewportProvider
3435
3427
  });
3436
3428
  this.handlers.getMethods = async () => {
3437
3429
  const testHooks = this.config.testHooks === true;
@@ -5197,7 +5189,17 @@ function UIBridgeNativeProvider({
5197
5189
  serverPort: config.serverPort || 8087,
5198
5190
  cors: true,
5199
5191
  appInfo: config.appInfo,
5200
- testHooks: features.testHooks === true
5192
+ testHooks: features.testHooks === true,
5193
+ // Injected device-viewport getter for POST /control/page-health. The
5194
+ // server doesn't import `react-native` itself — the require/import
5195
+ // pattern there crashed the host RN app in 0.6.3/0.6.4 (Metro/Hermes
5196
+ // raised `unknownModuleError` past every try/catch). This provider
5197
+ // already has a live react-native import, so it's the safe injection
5198
+ // point. See feedback_metro_require_gotcha for the full incident.
5199
+ viewportProvider: () => {
5200
+ const win = Dimensions.get("window");
5201
+ return { width: win.width, height: win.height };
5202
+ }
5201
5203
  });
5202
5204
  server.setAdapter(serverAdapter);
5203
5205
  if (navigationProvider) {
@@ -5292,7 +5294,11 @@ function UIBridgeNativeProvider({
5292
5294
  serverPort: config.serverPort || 8087,
5293
5295
  cors: true,
5294
5296
  appInfo: config.appInfo,
5295
- testHooks: features.testHooks === true
5297
+ testHooks: features.testHooks === true,
5298
+ viewportProvider: () => {
5299
+ const win = Dimensions.get("window");
5300
+ return { width: win.width, height: win.height };
5301
+ }
5296
5302
  });
5297
5303
  if (navigationProvider) bareServer.setNavigationProvider(navigationProvider);
5298
5304
  if (screenshotProvider) bareServer.setScreenshotProvider(screenshotProvider);