expo-snowui 1.2.23 → 1.3.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React from 'react';
4
4
  import _ from 'lodash';
5
- import { Platform, useTVEventHandler, Keyboard } from 'react-native';
5
+ import { Platform, useTVEventHandler, Keyboard, findNodeHandle, UIManager, Dimensions } from 'react-native';
6
6
  import { SnowSafeArea } from "../component/snow-safe-area.js";
7
7
 
8
8
  /*
@@ -229,17 +229,6 @@ export function FocusContextProvider(props) {
229
229
  setFocusedKey(null);
230
230
  setCurrentLayer('app');
231
231
  };
232
-
233
- // This only sets the scroll view for the current map
234
- const setScrollViewRef = scrollViewRef => {
235
- setFocusLayers(prev => {
236
- let result = [...prev];
237
- let focusLayer = result[result.length - 1];
238
- focusLayer.scrollViewRef = scrollViewRef;
239
- result[result.length - 1] = focusLayer;
240
- return result;
241
- });
242
- };
243
232
  const addFocusMap = (elementRef, elementProps) => {
244
233
  const focusKey = elementProps.focusKey;
245
234
  const refs = {
@@ -324,35 +313,53 @@ export function FocusContextProvider(props) {
324
313
  });
325
314
  };
326
315
  const focusOn = (elementRef, focusKey) => {
327
- if (DEBUG_FOCUS) {
316
+ const element = elementRef?.current;
317
+ if (!element) {
318
+ return;
319
+ }
320
+ if (DEBUG_FOCUS === 'verbose') {
328
321
  prettyLog({
329
322
  action: 'focusOn',
330
- focusKey,
331
- hasElement: !!elementRef?.current
323
+ elementRef,
324
+ focusKey
332
325
  });
333
326
  }
334
- const element = elementRef?.current;
335
- if (element) {
336
- element.focus?.();
337
- const scrollRef = focusLayersRef.current?.at(-1)?.scrollViewRef;
338
- const scroll = scrollRef?.current;
339
- if (scroll && element.measureLayout) {
340
- const scrollHandle = typeof scroll.getNativeScrollRef === 'function' ? findNodeHandle(scroll.getNativeScrollRef()) : findNodeHandle(scroll);
341
- if (scrollHandle) {
342
- element.measureLayout(scrollHandle, (x, y) => {
327
+ element.requestTVFocus?.();
328
+ element.focus?.();
329
+ const scroll = props?.scrollViewRef?.current;
330
+ const node = findNodeHandle(element);
331
+ if (scroll && node) {
332
+ const scrollHandle = typeof scroll.getNativeScrollRef === 'function' ? findNodeHandle(scroll.getNativeScrollRef()) : findNodeHandle(scroll);
333
+ if (scrollHandle) {
334
+ UIManager.measureLayout(node, scrollHandle, err => {
335
+ if (DEBUG_FOCUS === 'verbose') {
336
+ prettyLog({
337
+ action: 'focusOn',
338
+ error: 'Measurement error',
339
+ err
340
+ });
341
+ }
342
+ }, (x, y, width, height) => {
343
+ const viewportHeight = Dimensions.get('window').height;
344
+ const verticalOffset = 200;
345
+ const currentOffsetY = scroll?.scrollProperties?.offset || 0;
346
+ const top = y;
347
+ const bottom = y + height;
348
+ const viewTop = currentOffsetY;
349
+ const viewBottom = currentOffsetY + viewportHeight;
350
+ if (top - verticalOffset < viewTop) {
343
351
  scroll.scrollTo?.({
344
- y,
345
- animated: true
352
+ y: Math.max(top - verticalOffset, 0),
353
+ animated: false
346
354
  });
347
- }, err => {
348
- if (DEBUG_FOCUS) {
349
- prettyLog({
350
- error: 'Measurement error for scrollview',
351
- err
352
- });
353
- }
354
- });
355
- }
355
+ } else if (bottom > viewBottom) {
356
+ const target = bottom - viewportHeight + verticalOffset;
357
+ scroll.scrollTo?.({
358
+ y: target,
359
+ animated: false
360
+ });
361
+ }
362
+ });
356
363
  }
357
364
  }
358
365
  setFocusedKey(focusKey);
@@ -456,57 +463,38 @@ export function FocusContextProvider(props) {
456
463
  const moveFocusDown = () => {
457
464
  moveFocus('down');
458
465
  };
459
- const pressFocusedElement = focusKey => {
466
+ const focusedElementAction = (focusKey, action) => {
460
467
  if (!focusKey) {
461
468
  focusKey = focusedKeyRef.current;
462
469
  }
463
470
  const focusMap = focusLayersRef.current.at(-1);
464
- const canPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.onPress;
471
+ const shouldNotPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.[action];
465
472
  if (DEBUG_FOCUS) {
466
473
  prettyLog({
467
- action: 'pressFocusedElement',
474
+ action: 'focusedElementAction',
475
+ kind: action,
468
476
  focusKey,
469
- canPress,
477
+ shouldNotPress,
470
478
  keyboardVisible: Keyboard.isVisible(),
471
- onPress: focusMap?.refs?.[focusKey]?.onPress
479
+ [action]: focusMap?.refs?.[focusKey]?.[action]
472
480
  });
473
481
  }
474
- if (canPress) {
482
+ if (shouldNotPress) {
475
483
  return false;
476
484
  }
477
- return focusMap.refs[focusKey].onPress();
485
+ return focusMap.refs[focusKey][action]();
478
486
  };
479
- const longPressFocusedElement = focusKey => {
480
- if (!focusKey) {
481
- focusKey = focusedKeyRef.current;
482
- }
483
- const focusMap = focusLayersRef.current.at(-1);
484
- const canPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.onLongPress;
485
- if (DEBUG_FOCUS) {
486
- prettyLog({
487
- action: 'longPressFocusedElement',
488
- focusKey,
489
- canPress,
490
- keyboardVisible: Keyboard.isVisible(),
491
- onLongPress: focusMap?.refs?.[focusKey]?.onLongPress
492
- });
493
- }
494
- if (canPress) {
495
- return false;
496
- }
497
- return focusMap.refs[focusKey].onLongPress();
498
- };
499
- const focusPress = (elementRef, focusKey) => {
487
+ const focusAction = (elementRef, focusKey, action) => {
500
488
  return () => {
501
489
  focusOn(elementRef, focusKey);
502
- pressFocusedElement(focusKey);
490
+ focusedElementAction(focusKey, action);
503
491
  };
504
492
  };
493
+ const focusPress = (elementRef, focusKey) => {
494
+ return focusAction(elementRef, focusKey, 'onPress');
495
+ };
505
496
  const focusLongPress = (elementRef, focusKey) => {
506
- return () => {
507
- focusOn(elementRef, focusKey);
508
- longPressFocusedElement(focusKey);
509
- };
497
+ return focusAction(elementRef, focusKey, 'onLongPress');
510
498
  };
511
499
  if (Platform.isTV) {
512
500
  const remoteHandler = remoteEvent => {
@@ -529,14 +517,6 @@ export function FocusContextProvider(props) {
529
517
  });
530
518
  }
531
519
  switch (kind) {
532
- case 'select':
533
- pressFocusedElement();
534
- break;
535
- case 'longselect':
536
- if (action === 1) {
537
- longPressFocusedElement();
538
- }
539
- break;
540
520
  case 'up':
541
521
  moveFocusUp();
542
522
  break;
@@ -559,13 +539,6 @@ export function FocusContextProvider(props) {
559
539
  React.useEffect(() => {
560
540
  const focusKeyboardHandler = event => {
561
541
  switch (event.key) {
562
- case 'Enter':
563
- if (event.code === 'NumpadEnter') {
564
- longPressFocusedElement();
565
- } else {
566
- pressFocusedElement();
567
- }
568
- break;
569
542
  case 'ArrowUp':
570
543
  moveFocusUp();
571
544
  break;
@@ -638,7 +611,6 @@ export function FocusContextProvider(props) {
638
611
  clearFocusLayers,
639
612
  readFocusProps,
640
613
  setRemoteCallbacks,
641
- setScrollViewRef,
642
614
  focusLongPress,
643
615
  focusOn,
644
616
  focusPress
@@ -1 +1 @@
1
- {"version":3,"names":["React","_","Platform","useTVEventHandler","Keyboard","SnowSafeArea","jsx","_jsx","FocusContext","createContext","useFocusContext","value","useContext","Error","getCircularReplacer","seen","WeakSet","key","indexOf","has","add","prettyLog","payload","OS","console","log","JSON","stringify","emptyLayers","layerName","refs","directions","FocusContextProvider","props","focusedKey","setFocusedKey","useState","focusedKeyRef","useRef","focusLayers","setFocusLayers","focusLayersRef","remoteCallbacks","setRemoteCallbacks","remoteCallbacksRef","currentLayer","setCurrentLayer","DEBUG_FOCUS","useEffect","current","topLayer","at","action","shouldFocus","hasOwnProperty","focusStartKey","focusStartElementRef","prev","result","hasFocusedStart","focusOn","isFocused","elementFocusKey","isFocusedLayer","pushFocusLayer","layerIsUncloned","push","isUncloned","popFocusLayer","pop","useFocusLayer","name","useLayoutEffect","useFocusWiring","elementProps","addFocusMap","elementRef","focusStart","focusKey","focusDown","focusUp","focusRight","focusLeft","clearFocusLayers","setScrollViewRef","scrollViewRef","focusLayer","length","element","onPress","onLongPress","focus","merge","hasElement","scrollRef","scroll","measureLayout","scrollHandle","getNativeScrollRef","findNodeHandle","x","y","scrollTo","animated","err","error","moveFocus","direction","isVisible","sourceKey","destinationKey","request","normalDestination","isGridCell","split","replace","target","moveFocusRight","moveFocusLeft","moveFocusUp","moveFocusDown","pressFocusedElement","focusMap","canPress","keyboardVisible","longPressFocusedElement","focusPress","focusLongPress","isTV","remoteHandler","remoteEvent","callbacks","kind","eventType","eventKeyAction","callback","Object","entries","focusKeyboardHandler","event","code","window","addEventListener","removeEventListener","readFocusProps","focusProps","tvRemoteProps","focusable","hasTVPreferredFocus","focusContext","Provider","style","flex","children"],"sourceRoot":"../../../src","sources":["context/snow-focus-context.js"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","_","Platform","useTVEventHandler","Keyboard","findNodeHandle","UIManager","Dimensions","SnowSafeArea","jsx","_jsx","FocusContext","createContext","useFocusContext","value","useContext","Error","getCircularReplacer","seen","WeakSet","key","indexOf","has","add","prettyLog","payload","OS","console","log","JSON","stringify","emptyLayers","layerName","refs","directions","FocusContextProvider","props","focusedKey","setFocusedKey","useState","focusedKeyRef","useRef","focusLayers","setFocusLayers","focusLayersRef","remoteCallbacks","setRemoteCallbacks","remoteCallbacksRef","currentLayer","setCurrentLayer","DEBUG_FOCUS","useEffect","current","topLayer","at","action","shouldFocus","hasOwnProperty","focusStartKey","focusStartElementRef","prev","result","hasFocusedStart","focusOn","isFocused","elementFocusKey","isFocusedLayer","pushFocusLayer","layerIsUncloned","push","isUncloned","popFocusLayer","pop","useFocusLayer","name","useLayoutEffect","useFocusWiring","elementProps","addFocusMap","elementRef","focusStart","focusKey","focusDown","focusUp","focusRight","focusLeft","clearFocusLayers","element","onPress","onLongPress","focus","focusLayer","length","merge","requestTVFocus","scroll","scrollViewRef","node","scrollHandle","getNativeScrollRef","measureLayout","err","error","x","y","width","height","viewportHeight","get","verticalOffset","currentOffsetY","scrollProperties","offset","top","bottom","viewTop","viewBottom","scrollTo","Math","max","animated","target","moveFocus","direction","isVisible","sourceKey","destinationKey","request","normalDestination","isGridCell","split","replace","moveFocusRight","moveFocusLeft","moveFocusUp","moveFocusDown","focusedElementAction","focusMap","shouldNotPress","kind","keyboardVisible","focusAction","focusPress","focusLongPress","isTV","remoteHandler","remoteEvent","callbacks","eventType","eventKeyAction","callback","Object","entries","focusKeyboardHandler","event","window","addEventListener","removeEventListener","readFocusProps","focusProps","tvRemoteProps","focusable","hasTVPreferredFocus","focusContext","Provider","style","flex","children"],"sourceRoot":"../../../src","sources":["context/snow-focus-context.js"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import React from 'react';
3
4
  import { View, ScrollView, Platform, Dimensions } from 'react-native';
4
5
  import { StyleContextProvider, useStyleContext } from "./context/snow-style-context.js";
5
6
  import { FocusContextProvider } from "./context/snow-focus-context.js";
@@ -8,6 +9,7 @@ export function SnowApp(props) {
8
9
  const {
9
10
  SnowStyle
10
11
  } = useStyleContext(props);
12
+ const scrollViewRef = React.useRef(null);
11
13
  let rootInnerStyle = [];
12
14
  if (Platform.OS === 'web') {
13
15
  rootInnerStyle.push({
@@ -16,6 +18,7 @@ export function SnowApp(props) {
16
18
  });
17
19
  }
18
20
  return /*#__PURE__*/_jsx(ScrollView, {
21
+ ref: scrollViewRef,
19
22
  style: {
20
23
  flex: 1,
21
24
  backgroundColor: 'black'
@@ -25,6 +28,7 @@ export function SnowApp(props) {
25
28
  snowStyle: props.snowStyle,
26
29
  snowConfig: props.snowConfig,
27
30
  children: /*#__PURE__*/_jsx(FocusContextProvider, {
31
+ scrollViewRef: scrollViewRef,
28
32
  DEBUG_FOCUS: props.DEBUG_FOCUS,
29
33
  children: /*#__PURE__*/_jsx(View, {
30
34
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["View","ScrollView","Platform","Dimensions","StyleContextProvider","useStyleContext","FocusContextProvider","jsx","_jsx","SnowApp","props","SnowStyle","rootInnerStyle","OS","push","height","get","backgroundColor","style","flex","contentContainerStyle","children","snowStyle","snowConfig","DEBUG_FOCUS","marginBottom"],"sourceRoot":"../../src","sources":["snow-app.js"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AACrE,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,iCAA8B;AACpF,SAASC,oBAAoB,QAAQ,iCAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEnE,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;EAC3B,MAAM;IAAEC;EAAU,CAAC,GAAGN,eAAe,CAACK,KAAK,CAAC;EAC5C,IAAIE,cAAc,GAAG,EAAE;EACvB,IAAIV,QAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACvBD,cAAc,CAACE,IAAI,CAAC;MAChBC,MAAM,EAAEZ,UAAU,CAACa,GAAG,CAAC,QAAQ,CAAC,CAACD,MAAM;MACvCE,eAAe,EAAE;IACrB,CAAC,CAAC;EACN;EACA,oBACIT,IAAA,CAACP,UAAU;IAACiB,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAC;MAAEF,eAAe,EAAE;IAAQ,CAAE;IAACG,qBAAqB,EAAER,cAAe;IAAAS,QAAA,eAC5Fb,IAAA,CAACJ,oBAAoB;MAACkB,SAAS,EAAEZ,KAAK,CAACY,SAAU;MAACC,UAAU,EAAEb,KAAK,CAACa,UAAW;MAAAF,QAAA,eAC3Eb,IAAA,CAACF,oBAAoB;QAACkB,WAAW,EAAEd,KAAK,CAACc,WAAY;QAAAH,QAAA,eACjDb,IAAA,CAACR,IAAI;UAACkB,KAAK,EAAE;YAAEC,IAAI,EAAE,CAAC;YAAEM,YAAY,EAAE;UAAG,CAAE;UAAAJ,QAAA,EACtCX,KAAK,CAACW;QAAQ,CACb;MAAC,CACW;IAAC,CACL;EAAC,CACf,CAAC;AAErB;AAEA,eAAeZ,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["React","View","ScrollView","Platform","Dimensions","StyleContextProvider","useStyleContext","FocusContextProvider","jsx","_jsx","SnowApp","props","SnowStyle","scrollViewRef","useRef","rootInnerStyle","OS","push","height","get","backgroundColor","ref","style","flex","contentContainerStyle","children","snowStyle","snowConfig","DEBUG_FOCUS","marginBottom"],"sourceRoot":"../../src","sources":["snow-app.js"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AACrE,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,iCAA8B;AACpF,SAASC,oBAAoB,QAAQ,iCAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEnE,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;EAC3B,MAAM;IAAEC;EAAU,CAAC,GAAGN,eAAe,CAACK,KAAK,CAAC;EAC5C,MAAME,aAAa,GAAGb,KAAK,CAACc,MAAM,CAAC,IAAI,CAAC;EACxC,IAAIC,cAAc,GAAG,EAAE;EACvB,IAAIZ,QAAQ,CAACa,EAAE,KAAK,KAAK,EAAE;IACvBD,cAAc,CAACE,IAAI,CAAC;MAChBC,MAAM,EAAEd,UAAU,CAACe,GAAG,CAAC,QAAQ,CAAC,CAACD,MAAM;MACvCE,eAAe,EAAE;IACrB,CAAC,CAAC;EACN;EACA,oBACIX,IAAA,CAACP,UAAU;IAACmB,GAAG,EAAER,aAAc;IAACS,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAC;MAAEH,eAAe,EAAE;IAAQ,CAAE;IAACI,qBAAqB,EAAET,cAAe;IAAAU,QAAA,eAChHhB,IAAA,CAACJ,oBAAoB;MAACqB,SAAS,EAAEf,KAAK,CAACe,SAAU;MAACC,UAAU,EAAEhB,KAAK,CAACgB,UAAW;MAAAF,QAAA,eAC3EhB,IAAA,CAACF,oBAAoB;QAACM,aAAa,EAAEA,aAAc;QAACe,WAAW,EAAEjB,KAAK,CAACiB,WAAY;QAAAH,QAAA,eAC/EhB,IAAA,CAACR,IAAI;UAACqB,KAAK,EAAE;YAAEC,IAAI,EAAE,CAAC;YAAEM,YAAY,EAAE;UAAG,CAAE;UAAAJ,QAAA,EACtCd,KAAK,CAACc;QAAQ,CACb;MAAC,CACW;IAAC,CACL;EAAC,CACf,CAAC;AAErB;AAEA,eAAef,OAAO","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-snowui",
3
- "version": "1.2.23",
3
+ "version": "1.3.0",
4
4
  "description": "GUI components and contexts shared by the snowsuite apps",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,6 +1,13 @@
1
1
  import React from 'react';
2
2
  import _ from 'lodash'
3
- import { Platform, useTVEventHandler, Keyboard } from 'react-native'
3
+ import {
4
+ Platform,
5
+ useTVEventHandler,
6
+ Keyboard,
7
+ findNodeHandle,
8
+ UIManager,
9
+ Dimensions
10
+ } from 'react-native'
4
11
  import { SnowSafeArea } from '../component/snow-safe-area'
5
12
 
6
13
  /*
@@ -213,17 +220,6 @@ export function FocusContextProvider(props) {
213
220
  setCurrentLayer('app')
214
221
  }
215
222
 
216
- // This only sets the scroll view for the current map
217
- const setScrollViewRef = (scrollViewRef) => {
218
- setFocusLayers((prev) => {
219
- let result = [...prev]
220
- let focusLayer = result[result.length - 1]
221
- focusLayer.scrollViewRef = scrollViewRef
222
- result[result.length - 1] = focusLayer
223
- return result
224
- })
225
- }
226
-
227
223
  const addFocusMap = (elementRef, elementProps) => {
228
224
  const focusKey = elementProps.focusKey
229
225
  const refs = {
@@ -297,35 +293,55 @@ export function FocusContextProvider(props) {
297
293
  }
298
294
 
299
295
  const focusOn = (elementRef, focusKey) => {
300
- if (DEBUG_FOCUS) {
301
- prettyLog({ action: 'focusOn', focusKey, hasElement: !!elementRef?.current });
296
+ const element = elementRef?.current;
297
+ if (!element) {
298
+ return
299
+ }
300
+ if (DEBUG_FOCUS === 'verbose') {
301
+ prettyLog({ action: 'focusOn', elementRef, focusKey });
302
302
  }
303
303
 
304
- const element = elementRef?.current;
305
- if (element) {
306
- element.focus?.()
307
- const scrollRef = focusLayersRef.current?.at(-1)?.scrollViewRef
308
- const scroll = scrollRef?.current
309
-
310
- if (scroll && element.measureLayout) {
311
- const scrollHandle =
312
- typeof scroll.getNativeScrollRef === 'function'
313
- ? findNodeHandle(scroll.getNativeScrollRef())
314
- : findNodeHandle(scroll);
315
-
316
- if (scrollHandle) {
317
- element.measureLayout(
318
- scrollHandle,
319
- (x, y) => {
320
- scroll.scrollTo?.({ y, animated: true });
321
- },
322
- (err) => {
323
- if (DEBUG_FOCUS) {
324
- prettyLog({ error: 'Measurement error for scrollview', err });
325
- }
304
+ element.requestTVFocus?.();
305
+ element.focus?.();
306
+
307
+ const scroll = props?.scrollViewRef?.current;
308
+ const node = findNodeHandle(element);
309
+
310
+ if (scroll && node) {
311
+ const scrollHandle =
312
+ typeof scroll.getNativeScrollRef === 'function'
313
+ ? findNodeHandle(scroll.getNativeScrollRef())
314
+ : findNodeHandle(scroll);
315
+
316
+ if (scrollHandle) {
317
+ UIManager.measureLayout(
318
+ node,
319
+ scrollHandle,
320
+ (err) => {
321
+ if (DEBUG_FOCUS === 'verbose') {
322
+ prettyLog({ action: 'focusOn', error: 'Measurement error', err });
326
323
  }
327
- );
328
- }
324
+ },
325
+ (x, y, width, height) => {
326
+ const viewportHeight = Dimensions.get('window').height;
327
+ const verticalOffset = 200;
328
+
329
+ const currentOffsetY = scroll?.scrollProperties?.offset || 0;
330
+
331
+ const top = y;
332
+ const bottom = y + height;
333
+
334
+ const viewTop = currentOffsetY;
335
+ const viewBottom = currentOffsetY + viewportHeight;
336
+
337
+ if (top - verticalOffset < viewTop) {
338
+ scroll.scrollTo?.({ y: Math.max(top - verticalOffset, 0), animated: false });
339
+ } else if (bottom > viewBottom) {
340
+ const target = bottom - viewportHeight + verticalOffset;
341
+ scroll.scrollTo?.({ y: target, animated: false });
342
+ }
343
+ }
344
+ );
329
345
  }
330
346
  }
331
347
 
@@ -414,48 +430,34 @@ export function FocusContextProvider(props) {
414
430
  moveFocus('down')
415
431
  }
416
432
 
417
- const pressFocusedElement = (focusKey) => {
433
+ const focusedElementAction = (focusKey, action) => {
418
434
  if (!focusKey) {
419
435
  focusKey = focusedKeyRef.current
420
436
  }
421
437
  const focusMap = focusLayersRef.current.at(-1)
422
- const canPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.onPress)
438
+ const shouldNotPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.[action])
423
439
  if (DEBUG_FOCUS) {
424
- prettyLog({ action: 'pressFocusedElement', focusKey, canPress, keyboardVisible: Keyboard.isVisible(), onPress: focusMap?.refs?.[focusKey]?.onPress })
440
+ prettyLog({ action: 'focusedElementAction', kind: action, focusKey, shouldNotPress, keyboardVisible: Keyboard.isVisible(), [action]: focusMap?.refs?.[focusKey]?.[action] })
425
441
  }
426
- if (canPress) {
442
+ if (shouldNotPress) {
427
443
  return false
428
444
  }
429
- return focusMap.refs[focusKey].onPress()
445
+ return focusMap.refs[focusKey][action]()
430
446
  }
431
447
 
432
- const longPressFocusedElement = (focusKey) => {
433
- if (!focusKey) {
434
- focusKey = focusedKeyRef.current
435
- }
436
- const focusMap = focusLayersRef.current.at(-1)
437
- const canPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.onLongPress)
438
- if (DEBUG_FOCUS) {
439
- prettyLog({ action: 'longPressFocusedElement', focusKey, canPress, keyboardVisible: Keyboard.isVisible(), onLongPress: focusMap?.refs?.[focusKey]?.onLongPress })
440
- }
441
- if (canPress) {
442
- return false
448
+ const focusAction = (elementRef, focusKey, action) => {
449
+ return () => {
450
+ focusOn(elementRef, focusKey)
451
+ focusedElementAction(focusKey, action)
443
452
  }
444
- return focusMap.refs[focusKey].onLongPress()
445
453
  }
446
454
 
447
455
  const focusPress = (elementRef, focusKey) => {
448
- return () => {
449
- focusOn(elementRef, focusKey)
450
- pressFocusedElement(focusKey)
451
- }
456
+ return focusAction(elementRef, focusKey, 'onPress')
452
457
  }
453
458
 
454
459
  const focusLongPress = (elementRef, focusKey) => {
455
- return () => {
456
- focusOn(elementRef, focusKey)
457
- longPressFocusedElement(focusKey)
458
- }
460
+ return focusAction(elementRef, focusKey, 'onLongPress')
459
461
  }
460
462
 
461
463
  if (Platform.isTV) {
@@ -474,14 +476,6 @@ export function FocusContextProvider(props) {
474
476
  prettyLog({ action: 'remoteHandler', kind, action, focusedKey: focusedKeyRef.current })
475
477
  }
476
478
  switch (kind) {
477
- case 'select':
478
- pressFocusedElement()
479
- break
480
- case 'longselect':
481
- if (action === 1) {
482
- longPressFocusedElement()
483
- }
484
- break
485
479
  case 'up':
486
480
  moveFocusUp()
487
481
  break
@@ -507,14 +501,6 @@ export function FocusContextProvider(props) {
507
501
  React.useEffect(() => {
508
502
  const focusKeyboardHandler = (event) => {
509
503
  switch (event.key) {
510
- case 'Enter':
511
- if (event.code === 'NumpadEnter') {
512
- longPressFocusedElement()
513
- }
514
- else {
515
- pressFocusedElement()
516
- }
517
- break
518
504
  case 'ArrowUp':
519
505
  moveFocusUp()
520
506
  break
@@ -589,7 +575,6 @@ export function FocusContextProvider(props) {
589
575
  clearFocusLayers,
590
576
  readFocusProps,
591
577
  setRemoteCallbacks,
592
- setScrollViewRef,
593
578
  focusLongPress,
594
579
  focusOn,
595
580
  focusPress
package/src/snow-app.js CHANGED
@@ -1,9 +1,11 @@
1
+ import React from 'react'
1
2
  import { View, ScrollView, Platform, Dimensions } from 'react-native'
2
3
  import { StyleContextProvider, useStyleContext } from './context/snow-style-context'
3
4
  import { FocusContextProvider } from './context/snow-focus-context'
4
5
 
5
6
  export function SnowApp(props) {
6
7
  const { SnowStyle } = useStyleContext(props)
8
+ const scrollViewRef = React.useRef(null)
7
9
  let rootInnerStyle = []
8
10
  if (Platform.OS === 'web') {
9
11
  rootInnerStyle.push({
@@ -12,9 +14,9 @@ export function SnowApp(props) {
12
14
  })
13
15
  }
14
16
  return (
15
- <ScrollView style={{ flex: 1, backgroundColor: 'black' }} contentContainerStyle={rootInnerStyle}>
17
+ <ScrollView ref={scrollViewRef} style={{ flex: 1, backgroundColor: 'black' }} contentContainerStyle={rootInnerStyle}>
16
18
  <StyleContextProvider snowStyle={props.snowStyle} snowConfig={props.snowConfig}>
17
- <FocusContextProvider DEBUG_FOCUS={props.DEBUG_FOCUS}>
19
+ <FocusContextProvider scrollViewRef={scrollViewRef} DEBUG_FOCUS={props.DEBUG_FOCUS}>
18
20
  <View style={{ flex: 1, marginBottom: 50 }}>
19
21
  {props.children}
20
22
  </View>