ugly-app 0.1.577 → 0.1.578

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,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.577";
1
+ export declare const CLI_VERSION = "0.1.578";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.577";
2
+ export const CLI_VERSION = "0.1.578";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardProvider.d.ts","sourceRoot":"","sources":["../../../src/client/components/KeyboardProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,yEAAyE;IACzE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAUD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAO,cAEpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AAmCF,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CA4YtE;AAID,wBAAgB,cAAc,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,2CAM9E"}
1
+ {"version":3,"file":"KeyboardProvider.d.ts","sourceRoot":"","sources":["../../../src/client/components/KeyboardProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAGf,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,yEAAyE;IACzE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAUD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAO,cAEpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AA4CF,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAybtE;AAID,wBAAgB,cAAc,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,2CAM9E"}
@@ -1,5 +1,6 @@
1
1
  import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from 'react';
3
+ import { createPortal } from 'react-dom';
3
4
  const SafeAreaContext = createContext({
4
5
  top: 0,
5
6
  bottom: 0,
@@ -41,6 +42,13 @@ function useStateRef(initialValue) {
41
42
  return [state, setState, ref];
42
43
  }
43
44
  // ---------- KeyboardProvider ----------
45
+ // When the VirtualKeyboard API is present (real on Chrome, polyfilled by the
46
+ // iOS/Android native shells), it is the AUTHORITATIVE keyboard-height source via
47
+ // geometrychange. In that case the visualViewport-diff heuristic must NOT also
48
+ // set the keyboard height — the two disagree (the diff path subtracts the CSS
49
+ // safe-area, yielding e.g. 346 vs the real 380) and fight, double-counting.
50
+ const hasVirtualKeyboardAPI = () => typeof navigator !== 'undefined' &&
51
+ !!navigator.virtualKeyboard;
44
52
  export function KeyboardProvider({ children }) {
45
53
  // Initialize with native values persisted on window or localStorage
46
54
  // (window globals are cleared on reload, localStorage survives).
@@ -110,9 +118,11 @@ export function KeyboardProvider({ children }) {
110
118
  offsets.bottom = Math.max(offsets.bottom, keyboardHeightRef.current);
111
119
  }
112
120
  // Detect keyboard from visualViewport when no native keyboard event
113
- // (fallback for Android PWA / browser)
121
+ // (fallback for Android PWA / browser). Skip when the VirtualKeyboard API
122
+ // owns the height — see hasVirtualKeyboardAPI.
114
123
  if (window.visualViewport &&
115
124
  !hasNativeOverrideRef.current &&
125
+ !hasVirtualKeyboardAPI() &&
116
126
  keyboardHeightRef.current === 0) {
117
127
  const diff = window.innerHeight - window.visualViewport.height;
118
128
  if (diff > 100) {
@@ -152,7 +162,10 @@ export function KeyboardProvider({ children }) {
152
162
  // Detect keyboard from visualViewport when no native keyboard height events.
153
163
  // This is needed on Android (browser, PWA, and native WebView) where
154
164
  // update() may return early and no native keyboard-height event is sent.
155
- if (!hasNativeOverrideRef.current && window.visualViewport) {
165
+ // Skip when the VirtualKeyboard API owns the height (else the two fight).
166
+ if (!hasNativeOverrideRef.current &&
167
+ !hasVirtualKeyboardAPI() &&
168
+ window.visualViewport) {
156
169
  const diff = window.innerHeight - window.visualViewport.height;
157
170
  // Subtract the CSS safe area bottom to avoid double-counting
158
171
  // (the page layout already adds safe area padding)
@@ -173,6 +186,21 @@ export function KeyboardProvider({ children }) {
173
186
  setKeyboardHeight(newHeight);
174
187
  }
175
188
  }
189
+ // Corrective for the VirtualKeyboard path: the native→web geometrychange
190
+ // can be dropped/reordered on rapid open/close (the JS bridge is async),
191
+ // leaving keyboardHeight stuck > 0 after the keyboard is already gone. The
192
+ // visual viewport is authoritative for "keyboard gone" (it returns to full
193
+ // height), so use it to CLEAR a stuck height — downward only, so it never
194
+ // re-introduces the fight with the VK API on the way up.
195
+ if (hasVirtualKeyboardAPI() &&
196
+ window.visualViewport &&
197
+ keyboardHeightRef.current > 0) {
198
+ const diff = window.innerHeight - window.visualViewport.height;
199
+ if (diff < 100) {
200
+ setKeyboardHeight(0);
201
+ update();
202
+ }
203
+ }
176
204
  };
177
205
  if (window.visualViewport)
178
206
  window.visualViewport.addEventListener('resize', onVisualViewportResize);
@@ -258,14 +286,23 @@ export function KeyboardProvider({ children }) {
258
286
  });
259
287
  if (kbHeight !== keyboardHeightRef.current) {
260
288
  setKeyboardHeight(kbHeight);
261
- // Update safe area bottom to include keyboard
262
- setSafeArea((prev) => {
263
- const nativeBottom = nativeSafeAreaRef.current.bottom;
264
- const newBottom = Math.max(nativeBottom, kbHeight);
265
- if (prev.bottom !== newBottom)
266
- return { ...prev, bottom: newBottom };
267
- return prev;
268
- });
289
+ if (hasNativeOverrideRef.current) {
290
+ // Native override active → update() returns early, so recompute the
291
+ // bottom directly against the native inset (Android path).
292
+ setSafeArea((prev) => {
293
+ const newBottom = Math.max(nativeSafeAreaRef.current.bottom, kbHeight);
294
+ if (prev.bottom !== newBottom)
295
+ return { ...prev, bottom: newBottom };
296
+ return prev;
297
+ });
298
+ }
299
+ else {
300
+ // iOS / WKWebView: getOffsets() takes the env-based device inset as
301
+ // the floor and folds in keyboardHeightRef. Going through update()
302
+ // (instead of max(nativeSafeArea.bottom, …), which is 0 on iOS)
303
+ // preserves the home-indicator inset when the keyboard closes.
304
+ update();
305
+ }
269
306
  }
270
307
  };
271
308
  nav.virtualKeyboard.addEventListener('geometrychange', onVKGeometryChange);
@@ -310,27 +347,33 @@ export function KeyboardProvider({ children }) {
310
347
  return (_jsxs(SafeAreaContext.Provider, { value: useMemo(() => ({
311
348
  ...safeArea,
312
349
  keyboard: { showing: keyboardHeight > 0, height: keyboardHeight },
313
- }), [safeArea, keyboardHeight]), children: [children, showDebugOverlay && (_jsxs(_Fragment, { children: [_jsxs("div", { style: {
314
- ...debugOverlayBase,
315
- top: 0,
316
- height: safeArea.top,
317
- backgroundColor: 'rgba(255, 0, 0, 0.2)',
318
- color: 'red',
319
- }, children: ["top: ", safeArea.top] }), _jsxs("div", { style: {
320
- ...debugOverlayBase,
321
- bottom: 0,
322
- height: safeArea.bottom,
323
- backgroundColor: 'rgba(0, 0, 255, 0.2)',
324
- color: 'blue',
325
- }, children: ["bottom: ", safeArea.bottom, keyboardHeight > 0 && ` (kbd: ${keyboardHeight})`] }), keyboardHeight > 0 && (_jsxs("div", { style: {
326
- ...debugOverlayBase,
327
- bottom: 0,
328
- height: keyboardHeight,
329
- backgroundColor: 'rgba(0, 255, 0, 0.15)',
330
- zIndex: 99998,
331
- fontSize: 12,
332
- color: 'green',
333
- }, children: ["keyboard: ", keyboardHeight] }))] }))] }));
350
+ }), [safeArea, keyboardHeight]), children: [children, showDebugOverlay &&
351
+ typeof document !== 'undefined' &&
352
+ createPortal(
353
+ // Portalled to <body> so the bars are positioned against the visual
354
+ // viewport not a transformed/padded ancestor, which was pushing the
355
+ // top bar down and letting the bottom bar ride up with the keyboard.
356
+ _jsxs(_Fragment, { children: [_jsxs("div", { style: {
357
+ ...debugOverlayBase,
358
+ top: 0,
359
+ height: safeArea.top,
360
+ backgroundColor: 'rgba(255, 0, 0, 0.2)',
361
+ color: 'red',
362
+ }, children: ["top: ", safeArea.top] }), _jsxs("div", { style: {
363
+ ...debugOverlayBase,
364
+ bottom: 0,
365
+ height: safeArea.bottom,
366
+ backgroundColor: 'rgba(0, 0, 255, 0.2)',
367
+ color: 'blue',
368
+ }, children: ["bottom: ", safeArea.bottom, keyboardHeight > 0 && ` (kbd: ${keyboardHeight})`] }), keyboardHeight > 0 && (_jsxs("div", { style: {
369
+ ...debugOverlayBase,
370
+ bottom: 0,
371
+ height: keyboardHeight,
372
+ backgroundColor: 'rgba(0, 255, 0, 0.15)',
373
+ zIndex: 99998,
374
+ fontSize: 12,
375
+ color: 'green',
376
+ }, children: ["keyboard: ", keyboardHeight] }))] }), document.body)] }));
334
377
  }
335
378
  // ---------- KeyboardSpacer ----------
336
379
  export function KeyboardSpacer({ ignoreSafeArea }) {
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardProvider.js","sourceRoot":"","sources":["../../../src/client/components/KeyboardProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyboardProvider.js","sourceRoot":"","sources":["../../../src/client/components/KeyboardProvider.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.577",
3
+ "version": "0.1.578",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.577";
2
+ export const CLI_VERSION = "0.1.578";
@@ -9,6 +9,7 @@ import {
9
9
  useRef,
10
10
  useState,
11
11
  } from 'react';
12
+ import { createPortal } from 'react-dom';
12
13
 
13
14
  export interface EdgeInsets {
14
15
  top: number;
@@ -93,6 +94,15 @@ interface AppHostEvent extends Event {
93
94
 
94
95
  // ---------- KeyboardProvider ----------
95
96
 
97
+ // When the VirtualKeyboard API is present (real on Chrome, polyfilled by the
98
+ // iOS/Android native shells), it is the AUTHORITATIVE keyboard-height source via
99
+ // geometrychange. In that case the visualViewport-diff heuristic must NOT also
100
+ // set the keyboard height — the two disagree (the diff path subtracts the CSS
101
+ // safe-area, yielding e.g. 346 vs the real 380) and fight, double-counting.
102
+ const hasVirtualKeyboardAPI = (): boolean =>
103
+ typeof navigator !== 'undefined' &&
104
+ !!(navigator as { virtualKeyboard?: unknown }).virtualKeyboard;
105
+
96
106
  export function KeyboardProvider({ children }: { children?: ReactNode }) {
97
107
  // Initialize with native values persisted on window or localStorage
98
108
  // (window globals are cleared on reload, localStorage survives).
@@ -181,10 +191,12 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
181
191
  }
182
192
 
183
193
  // Detect keyboard from visualViewport when no native keyboard event
184
- // (fallback for Android PWA / browser)
194
+ // (fallback for Android PWA / browser). Skip when the VirtualKeyboard API
195
+ // owns the height — see hasVirtualKeyboardAPI.
185
196
  if (
186
197
  window.visualViewport &&
187
198
  !hasNativeOverrideRef.current &&
199
+ !hasVirtualKeyboardAPI() &&
188
200
  keyboardHeightRef.current === 0
189
201
  ) {
190
202
  const diff = window.innerHeight - window.visualViewport.height;
@@ -237,7 +249,12 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
237
249
  // Detect keyboard from visualViewport when no native keyboard height events.
238
250
  // This is needed on Android (browser, PWA, and native WebView) where
239
251
  // update() may return early and no native keyboard-height event is sent.
240
- if (!hasNativeOverrideRef.current && window.visualViewport) {
252
+ // Skip when the VirtualKeyboard API owns the height (else the two fight).
253
+ if (
254
+ !hasNativeOverrideRef.current &&
255
+ !hasVirtualKeyboardAPI() &&
256
+ window.visualViewport
257
+ ) {
241
258
  const diff = window.innerHeight - window.visualViewport.height;
242
259
  // Subtract the CSS safe area bottom to avoid double-counting
243
260
  // (the page layout already adds safe area padding)
@@ -261,6 +278,24 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
261
278
  setKeyboardHeight(newHeight);
262
279
  }
263
280
  }
281
+
282
+ // Corrective for the VirtualKeyboard path: the native→web geometrychange
283
+ // can be dropped/reordered on rapid open/close (the JS bridge is async),
284
+ // leaving keyboardHeight stuck > 0 after the keyboard is already gone. The
285
+ // visual viewport is authoritative for "keyboard gone" (it returns to full
286
+ // height), so use it to CLEAR a stuck height — downward only, so it never
287
+ // re-introduces the fight with the VK API on the way up.
288
+ if (
289
+ hasVirtualKeyboardAPI() &&
290
+ window.visualViewport &&
291
+ keyboardHeightRef.current > 0
292
+ ) {
293
+ const diff = window.innerHeight - window.visualViewport.height;
294
+ if (diff < 100) {
295
+ setKeyboardHeight(0);
296
+ update();
297
+ }
298
+ }
264
299
  };
265
300
 
266
301
  if (window.visualViewport)
@@ -370,14 +405,25 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
370
405
  });
371
406
  if (kbHeight !== keyboardHeightRef.current) {
372
407
  setKeyboardHeight(kbHeight);
373
- // Update safe area bottom to include keyboard
374
- setSafeArea((prev) => {
375
- const nativeBottom = nativeSafeAreaRef.current.bottom;
376
- const newBottom = Math.max(nativeBottom, kbHeight);
377
- if (prev.bottom !== newBottom)
378
- return { ...prev, bottom: newBottom };
379
- return prev;
380
- });
408
+ if (hasNativeOverrideRef.current) {
409
+ // Native override active → update() returns early, so recompute the
410
+ // bottom directly against the native inset (Android path).
411
+ setSafeArea((prev) => {
412
+ const newBottom = Math.max(
413
+ nativeSafeAreaRef.current.bottom,
414
+ kbHeight,
415
+ );
416
+ if (prev.bottom !== newBottom)
417
+ return { ...prev, bottom: newBottom };
418
+ return prev;
419
+ });
420
+ } else {
421
+ // iOS / WKWebView: getOffsets() takes the env-based device inset as
422
+ // the floor and folds in keyboardHeightRef. Going through update()
423
+ // (instead of max(nativeSafeArea.bottom, …), which is 0 on iOS)
424
+ // preserves the home-indicator inset when the keyboard closes.
425
+ update();
426
+ }
381
427
  }
382
428
  };
383
429
  nav.virtualKeyboard.addEventListener(
@@ -442,9 +488,14 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
442
488
  )}
443
489
  >
444
490
  {children}
445
- {showDebugOverlay && (
491
+ {showDebugOverlay &&
492
+ typeof document !== 'undefined' &&
493
+ createPortal(
494
+ // Portalled to <body> so the bars are positioned against the visual
495
+ // viewport — not a transformed/padded ancestor, which was pushing the
496
+ // top bar down and letting the bottom bar ride up with the keyboard.
446
497
  <>
447
- {/* Top safe area */}
498
+ {/* Top safe area (device) */}
448
499
  <div
449
500
  style={{
450
501
  ...debugOverlayBase,
@@ -456,7 +507,9 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
456
507
  >
457
508
  top: {safeArea.top}
458
509
  </div>
459
- {/* Bottom safe area */}
510
+ {/* Bottom inset the effective value the layout uses
511
+ (max of device home-indicator and the keyboard). Sits at the very
512
+ bottom, so it stays behind the keyboard when one is open. */}
460
513
  <div
461
514
  style={{
462
515
  ...debugOverlayBase,
@@ -469,7 +522,8 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
469
522
  bottom: {safeArea.bottom}
470
523
  {keyboardHeight > 0 && ` (kbd: ${keyboardHeight})`}
471
524
  </div>
472
- {/* Keyboard area */}
525
+ {/* Keyboard region, drawn over the bottom inset so the keyboard's
526
+ share of the inset is visible distinctly. */}
473
527
  {keyboardHeight > 0 && (
474
528
  <div
475
529
  style={{
@@ -485,7 +539,8 @@ export function KeyboardProvider({ children }: { children?: ReactNode }) {
485
539
  keyboard: {keyboardHeight}
486
540
  </div>
487
541
  )}
488
- </>
542
+ </>,
543
+ document.body,
489
544
  )}
490
545
  </SafeAreaContext.Provider>
491
546
  );