@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.
@@ -1,5 +1,5 @@
1
1
  import { createContext, useRef, useState, useCallback, useEffect, useMemo, use } from 'react';
2
- import { StyleSheet, Platform } from 'react-native';
2
+ import { Dimensions, StyleSheet, Platform } from 'react-native';
3
3
  import { jsx, Fragment } from 'react/jsx-runtime';
4
4
 
5
5
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -1557,8 +1557,8 @@ function error(message, code) {
1557
1557
  function createDesignHandlers(registry) {
1558
1558
  function getScreenDimensions() {
1559
1559
  try {
1560
- const { Dimensions } = __require("react-native");
1561
- const screen = Dimensions.get("screen");
1560
+ const { Dimensions: Dimensions2 } = __require("react-native");
1561
+ const screen = Dimensions2.get("screen");
1562
1562
  return { width: screen.width, height: screen.height };
1563
1563
  } catch {
1564
1564
  return { width: 0, height: 0 };
@@ -2192,15 +2192,6 @@ async function executeWorkflowStep(step, registry, executor) {
2192
2192
  };
2193
2193
  }
2194
2194
  }
2195
- function getWindowDimensions() {
2196
- try {
2197
- const { Dimensions } = __require("react-native");
2198
- const win = Dimensions.get("window");
2199
- return { width: win.width, height: win.height };
2200
- } catch {
2201
- return { width: 0, height: 0 };
2202
- }
2203
- }
2204
2195
  function success2(data) {
2205
2196
  return {
2206
2197
  success: true,
@@ -2408,7 +2399,7 @@ function createServerHandlers(registry, executor, config) {
2408
2399
  },
2409
2400
  getPageHealth: async (ctx) => {
2410
2401
  const bodyViewport = ctx.body?.viewport;
2411
- const viewport = bodyViewport ?? getWindowDimensions();
2402
+ const viewport = bodyViewport ?? config?.viewportProvider?.() ?? { width: 0, height: 0 };
2412
2403
  const elements = registry.getAllElements().map((e) => ({
2413
2404
  type: e.type,
2414
2405
  state: e.getState()
@@ -3379,7 +3370,8 @@ var NativeUIBridgeServer = class {
3379
3370
  this.handlers = createServerHandlers(registry, executor, {
3380
3371
  appInfo: this.config.appInfo,
3381
3372
  consoleErrorBuffer: this.consoleErrorBuffer,
3382
- networkRequestBuffer: this.networkRequestBuffer
3373
+ networkRequestBuffer: this.networkRequestBuffer,
3374
+ viewportProvider: this.config.viewportProvider
3383
3375
  });
3384
3376
  this.handlers.getMethods = async () => {
3385
3377
  const testHooks = this.config.testHooks === true;
@@ -5145,7 +5137,17 @@ function UIBridgeNativeProvider({
5145
5137
  serverPort: config.serverPort || 8087,
5146
5138
  cors: true,
5147
5139
  appInfo: config.appInfo,
5148
- testHooks: features.testHooks === true
5140
+ testHooks: features.testHooks === true,
5141
+ // Injected device-viewport getter for POST /control/page-health. The
5142
+ // server doesn't import `react-native` itself — the require/import
5143
+ // pattern there crashed the host RN app in 0.6.3/0.6.4 (Metro/Hermes
5144
+ // raised `unknownModuleError` past every try/catch). This provider
5145
+ // already has a live react-native import, so it's the safe injection
5146
+ // point. See feedback_metro_require_gotcha for the full incident.
5147
+ viewportProvider: () => {
5148
+ const win = Dimensions.get("window");
5149
+ return { width: win.width, height: win.height };
5150
+ }
5149
5151
  });
5150
5152
  server.setAdapter(serverAdapter);
5151
5153
  if (navigationProvider) {
@@ -5240,7 +5242,11 @@ function UIBridgeNativeProvider({
5240
5242
  serverPort: config.serverPort || 8087,
5241
5243
  cors: true,
5242
5244
  appInfo: config.appInfo,
5243
- testHooks: features.testHooks === true
5245
+ testHooks: features.testHooks === true,
5246
+ viewportProvider: () => {
5247
+ const win = Dimensions.get("window");
5248
+ return { width: win.width, height: win.height };
5249
+ }
5244
5250
  });
5245
5251
  if (navigationProvider) bareServer.setNavigationProvider(navigationProvider);
5246
5252
  if (screenshotProvider) bareServer.setScreenshotProvider(screenshotProvider);