expo-snowui 1.2.23 → 1.3.1
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/lib/module/context/snow-focus-context.js +65 -78
- package/lib/module/context/snow-focus-context.js.map +1 -1
- package/lib/module/snow-app.js +4 -0
- package/lib/module/snow-app.js.map +1 -1
- package/package.json +1 -1
- package/src/context/snow-focus-context.js +70 -68
- package/src/snow-app.js +4 -2
|
@@ -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
|
/*
|
|
@@ -95,6 +95,10 @@ export function FocusContextProvider(props) {
|
|
|
95
95
|
const remoteCallbacksRef = React.useRef({});
|
|
96
96
|
const [currentLayer, setCurrentLayer] = React.useState('app');
|
|
97
97
|
let DEBUG_FOCUS = props.DEBUG_FOCUS;
|
|
98
|
+
let SCROLL_OFFSET = 200;
|
|
99
|
+
if (props.focusVerticalOffset) {
|
|
100
|
+
SCROLL_OFFSET = props.focusVersionOffset;
|
|
101
|
+
}
|
|
98
102
|
React.useEffect(() => {
|
|
99
103
|
focusedKeyRef.current = focusedKey;
|
|
100
104
|
}, [focusedKey]);
|
|
@@ -229,17 +233,6 @@ export function FocusContextProvider(props) {
|
|
|
229
233
|
setFocusedKey(null);
|
|
230
234
|
setCurrentLayer('app');
|
|
231
235
|
};
|
|
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
236
|
const addFocusMap = (elementRef, elementProps) => {
|
|
244
237
|
const focusKey = elementProps.focusKey;
|
|
245
238
|
const refs = {
|
|
@@ -324,33 +317,62 @@ export function FocusContextProvider(props) {
|
|
|
324
317
|
});
|
|
325
318
|
};
|
|
326
319
|
const focusOn = (elementRef, focusKey) => {
|
|
327
|
-
|
|
320
|
+
const element = elementRef?.current;
|
|
321
|
+
if (!element) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
328
325
|
prettyLog({
|
|
329
326
|
action: 'focusOn',
|
|
330
|
-
|
|
331
|
-
|
|
327
|
+
elementRef,
|
|
328
|
+
focusKey
|
|
332
329
|
});
|
|
333
330
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
331
|
+
element.requestTVFocus?.();
|
|
332
|
+
element.focus?.();
|
|
333
|
+
const scroll = props?.scrollViewRef?.current;
|
|
334
|
+
if (Platform.OS === 'web') {
|
|
335
|
+
if (element && scroll) {
|
|
336
|
+
const elementBounds = element.getBoundingClientRect();
|
|
337
|
+
const scrollBounds = scroll.getBoundingClientRect();
|
|
338
|
+
if (elementBounds.top < scrollBounds.top + SCROLL_OFFSET) {
|
|
339
|
+
scroll.scrollTop += elementBounds.top - scrollBounds.top - SCROLL_OFFSET;
|
|
340
|
+
} else if (elementBounds.bottom > scrollBounds.bottom) {
|
|
341
|
+
scroll.scrollTop += elementBounds.bottom - scrollBounds.bottom + SCROLL_OFFSET;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
} else {
|
|
345
|
+
const node = findNodeHandle(element);
|
|
346
|
+
if (scroll && node) {
|
|
340
347
|
const scrollHandle = typeof scroll.getNativeScrollRef === 'function' ? findNodeHandle(scroll.getNativeScrollRef()) : findNodeHandle(scroll);
|
|
341
348
|
if (scrollHandle) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
y,
|
|
345
|
-
animated: true
|
|
346
|
-
});
|
|
347
|
-
}, err => {
|
|
348
|
-
if (DEBUG_FOCUS) {
|
|
349
|
+
UIManager.measureLayout(node, scrollHandle, err => {
|
|
350
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
349
351
|
prettyLog({
|
|
350
|
-
|
|
352
|
+
action: 'focusOn',
|
|
353
|
+
error: 'Measurement error',
|
|
351
354
|
err
|
|
352
355
|
});
|
|
353
356
|
}
|
|
357
|
+
}, (x, y, width, height) => {
|
|
358
|
+
const viewportHeight = Dimensions.get('window').height;
|
|
359
|
+
const currentOffsetY = scroll?.scrollProperties?.offset || 0;
|
|
360
|
+
const top = y;
|
|
361
|
+
const bottom = y + height;
|
|
362
|
+
const viewTop = currentOffsetY;
|
|
363
|
+
const viewBottom = currentOffsetY + viewportHeight;
|
|
364
|
+
if (top - SCROLL_OFFSET < viewTop) {
|
|
365
|
+
scroll.scrollTo?.({
|
|
366
|
+
y: Math.max(top - SCROLL_OFFSET, 0),
|
|
367
|
+
animated: false
|
|
368
|
+
});
|
|
369
|
+
} else if (bottom > viewBottom) {
|
|
370
|
+
const target = bottom - viewportHeight + SCROLL_OFFSET;
|
|
371
|
+
scroll.scrollTo?.({
|
|
372
|
+
y: target,
|
|
373
|
+
animated: false
|
|
374
|
+
});
|
|
375
|
+
}
|
|
354
376
|
});
|
|
355
377
|
}
|
|
356
378
|
}
|
|
@@ -456,57 +478,38 @@ export function FocusContextProvider(props) {
|
|
|
456
478
|
const moveFocusDown = () => {
|
|
457
479
|
moveFocus('down');
|
|
458
480
|
};
|
|
459
|
-
const
|
|
481
|
+
const focusedElementAction = (focusKey, action) => {
|
|
460
482
|
if (!focusKey) {
|
|
461
483
|
focusKey = focusedKeyRef.current;
|
|
462
484
|
}
|
|
463
485
|
const focusMap = focusLayersRef.current.at(-1);
|
|
464
|
-
const
|
|
486
|
+
const shouldNotPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.[action];
|
|
465
487
|
if (DEBUG_FOCUS) {
|
|
466
488
|
prettyLog({
|
|
467
|
-
action: '
|
|
489
|
+
action: 'focusedElementAction',
|
|
490
|
+
kind: action,
|
|
468
491
|
focusKey,
|
|
469
|
-
|
|
492
|
+
shouldNotPress,
|
|
470
493
|
keyboardVisible: Keyboard.isVisible(),
|
|
471
|
-
|
|
494
|
+
[action]: focusMap?.refs?.[focusKey]?.[action]
|
|
472
495
|
});
|
|
473
496
|
}
|
|
474
|
-
if (
|
|
497
|
+
if (shouldNotPress) {
|
|
475
498
|
return false;
|
|
476
499
|
}
|
|
477
|
-
return focusMap.refs[focusKey]
|
|
500
|
+
return focusMap.refs[focusKey][action]();
|
|
478
501
|
};
|
|
479
|
-
const
|
|
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) => {
|
|
502
|
+
const focusAction = (elementRef, focusKey, action) => {
|
|
500
503
|
return () => {
|
|
501
504
|
focusOn(elementRef, focusKey);
|
|
502
|
-
|
|
505
|
+
focusedElementAction(focusKey, action);
|
|
503
506
|
};
|
|
504
507
|
};
|
|
508
|
+
const focusPress = (elementRef, focusKey) => {
|
|
509
|
+
return focusAction(elementRef, focusKey, 'onPress');
|
|
510
|
+
};
|
|
505
511
|
const focusLongPress = (elementRef, focusKey) => {
|
|
506
|
-
return (
|
|
507
|
-
focusOn(elementRef, focusKey);
|
|
508
|
-
longPressFocusedElement(focusKey);
|
|
509
|
-
};
|
|
512
|
+
return focusAction(elementRef, focusKey, 'onLongPress');
|
|
510
513
|
};
|
|
511
514
|
if (Platform.isTV) {
|
|
512
515
|
const remoteHandler = remoteEvent => {
|
|
@@ -529,14 +532,6 @@ export function FocusContextProvider(props) {
|
|
|
529
532
|
});
|
|
530
533
|
}
|
|
531
534
|
switch (kind) {
|
|
532
|
-
case 'select':
|
|
533
|
-
pressFocusedElement();
|
|
534
|
-
break;
|
|
535
|
-
case 'longselect':
|
|
536
|
-
if (action === 1) {
|
|
537
|
-
longPressFocusedElement();
|
|
538
|
-
}
|
|
539
|
-
break;
|
|
540
535
|
case 'up':
|
|
541
536
|
moveFocusUp();
|
|
542
537
|
break;
|
|
@@ -559,13 +554,6 @@ export function FocusContextProvider(props) {
|
|
|
559
554
|
React.useEffect(() => {
|
|
560
555
|
const focusKeyboardHandler = event => {
|
|
561
556
|
switch (event.key) {
|
|
562
|
-
case 'Enter':
|
|
563
|
-
if (event.code === 'NumpadEnter') {
|
|
564
|
-
longPressFocusedElement();
|
|
565
|
-
} else {
|
|
566
|
-
pressFocusedElement();
|
|
567
|
-
}
|
|
568
|
-
break;
|
|
569
557
|
case 'ArrowUp':
|
|
570
558
|
moveFocusUp();
|
|
571
559
|
break;
|
|
@@ -638,7 +626,6 @@ export function FocusContextProvider(props) {
|
|
|
638
626
|
clearFocusLayers,
|
|
639
627
|
readFocusProps,
|
|
640
628
|
setRemoteCallbacks,
|
|
641
|
-
setScrollViewRef,
|
|
642
629
|
focusLongPress,
|
|
643
630
|
focusOn,
|
|
644
631
|
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","SCROLL_OFFSET","focusVerticalOffset","focusVersionOffset","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","elementBounds","getBoundingClientRect","scrollBounds","top","scrollTop","bottom","node","scrollHandle","getNativeScrollRef","measureLayout","err","error","x","y","width","height","viewportHeight","get","currentOffsetY","scrollProperties","offset","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":[]}
|
package/lib/module/snow-app.js
CHANGED
|
@@ -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,
|
|
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,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import _ from 'lodash'
|
|
3
|
-
import {
|
|
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
|
/*
|
|
@@ -95,6 +102,10 @@ export function FocusContextProvider(props) {
|
|
|
95
102
|
const remoteCallbacksRef = React.useRef({});
|
|
96
103
|
const [currentLayer, setCurrentLayer] = React.useState('app')
|
|
97
104
|
let DEBUG_FOCUS = props.DEBUG_FOCUS
|
|
105
|
+
let SCROLL_OFFSET = 200
|
|
106
|
+
if (props.focusVerticalOffset) {
|
|
107
|
+
SCROLL_OFFSET = props.focusVersionOffset
|
|
108
|
+
}
|
|
98
109
|
|
|
99
110
|
React.useEffect(() => {
|
|
100
111
|
focusedKeyRef.current = focusedKey
|
|
@@ -213,17 +224,6 @@ export function FocusContextProvider(props) {
|
|
|
213
224
|
setCurrentLayer('app')
|
|
214
225
|
}
|
|
215
226
|
|
|
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
227
|
const addFocusMap = (elementRef, elementProps) => {
|
|
228
228
|
const focusKey = elementProps.focusKey
|
|
229
229
|
const refs = {
|
|
@@ -297,31 +297,64 @@ export function FocusContextProvider(props) {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
const focusOn = (elementRef, focusKey) => {
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
const element = elementRef?.current;
|
|
301
|
+
if (!element) {
|
|
302
|
+
return
|
|
303
|
+
}
|
|
304
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
305
|
+
prettyLog({ action: 'focusOn', elementRef, focusKey });
|
|
302
306
|
}
|
|
303
307
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
308
|
+
element.requestTVFocus?.();
|
|
309
|
+
element.focus?.();
|
|
310
|
+
|
|
311
|
+
const scroll = props?.scrollViewRef?.current;
|
|
312
|
+
|
|
313
|
+
if (Platform.OS === 'web') {
|
|
314
|
+
if (element && scroll) {
|
|
315
|
+
const elementBounds = element.getBoundingClientRect();
|
|
316
|
+
const scrollBounds = scroll.getBoundingClientRect();
|
|
317
|
+
|
|
318
|
+
if (elementBounds.top < scrollBounds.top + SCROLL_OFFSET) {
|
|
319
|
+
scroll.scrollTop += elementBounds.top - scrollBounds.top - SCROLL_OFFSET;
|
|
320
|
+
} else if (elementBounds.bottom > scrollBounds.bottom) {
|
|
321
|
+
scroll.scrollTop += elementBounds.bottom - scrollBounds.bottom + SCROLL_OFFSET;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
} else {
|
|
325
|
+
const node = findNodeHandle(element);
|
|
309
326
|
|
|
310
|
-
if (scroll &&
|
|
327
|
+
if (scroll && node) {
|
|
311
328
|
const scrollHandle =
|
|
312
329
|
typeof scroll.getNativeScrollRef === 'function'
|
|
313
330
|
? findNodeHandle(scroll.getNativeScrollRef())
|
|
314
331
|
: findNodeHandle(scroll);
|
|
315
332
|
|
|
316
333
|
if (scrollHandle) {
|
|
317
|
-
|
|
334
|
+
UIManager.measureLayout(
|
|
335
|
+
node,
|
|
318
336
|
scrollHandle,
|
|
319
|
-
(x, y) => {
|
|
320
|
-
scroll.scrollTo?.({ y, animated: true });
|
|
321
|
-
},
|
|
322
337
|
(err) => {
|
|
323
|
-
if (DEBUG_FOCUS) {
|
|
324
|
-
prettyLog({ error: 'Measurement error
|
|
338
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
339
|
+
prettyLog({ action: 'focusOn', error: 'Measurement error', err });
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
(x, y, width, height) => {
|
|
343
|
+
const viewportHeight = Dimensions.get('window').height;
|
|
344
|
+
|
|
345
|
+
const currentOffsetY = scroll?.scrollProperties?.offset || 0;
|
|
346
|
+
|
|
347
|
+
const top = y;
|
|
348
|
+
const bottom = y + height;
|
|
349
|
+
|
|
350
|
+
const viewTop = currentOffsetY;
|
|
351
|
+
const viewBottom = currentOffsetY + viewportHeight;
|
|
352
|
+
|
|
353
|
+
if (top - SCROLL_OFFSET < viewTop) {
|
|
354
|
+
scroll.scrollTo?.({ y: Math.max(top - SCROLL_OFFSET, 0), animated: false });
|
|
355
|
+
} else if (bottom > viewBottom) {
|
|
356
|
+
const target = bottom - viewportHeight + SCROLL_OFFSET;
|
|
357
|
+
scroll.scrollTo?.({ y: target, animated: false });
|
|
325
358
|
}
|
|
326
359
|
}
|
|
327
360
|
);
|
|
@@ -414,48 +447,34 @@ export function FocusContextProvider(props) {
|
|
|
414
447
|
moveFocus('down')
|
|
415
448
|
}
|
|
416
449
|
|
|
417
|
-
const
|
|
450
|
+
const focusedElementAction = (focusKey, action) => {
|
|
418
451
|
if (!focusKey) {
|
|
419
452
|
focusKey = focusedKeyRef.current
|
|
420
453
|
}
|
|
421
454
|
const focusMap = focusLayersRef.current.at(-1)
|
|
422
|
-
const
|
|
455
|
+
const shouldNotPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.[action])
|
|
423
456
|
if (DEBUG_FOCUS) {
|
|
424
|
-
prettyLog({ action: '
|
|
457
|
+
prettyLog({ action: 'focusedElementAction', kind: action, focusKey, shouldNotPress, keyboardVisible: Keyboard.isVisible(), [action]: focusMap?.refs?.[focusKey]?.[action] })
|
|
425
458
|
}
|
|
426
|
-
if (
|
|
459
|
+
if (shouldNotPress) {
|
|
427
460
|
return false
|
|
428
461
|
}
|
|
429
|
-
return focusMap.refs[focusKey]
|
|
462
|
+
return focusMap.refs[focusKey][action]()
|
|
430
463
|
}
|
|
431
464
|
|
|
432
|
-
const
|
|
433
|
-
|
|
434
|
-
focusKey
|
|
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
|
|
465
|
+
const focusAction = (elementRef, focusKey, action) => {
|
|
466
|
+
return () => {
|
|
467
|
+
focusOn(elementRef, focusKey)
|
|
468
|
+
focusedElementAction(focusKey, action)
|
|
443
469
|
}
|
|
444
|
-
return focusMap.refs[focusKey].onLongPress()
|
|
445
470
|
}
|
|
446
471
|
|
|
447
472
|
const focusPress = (elementRef, focusKey) => {
|
|
448
|
-
return (
|
|
449
|
-
focusOn(elementRef, focusKey)
|
|
450
|
-
pressFocusedElement(focusKey)
|
|
451
|
-
}
|
|
473
|
+
return focusAction(elementRef, focusKey, 'onPress')
|
|
452
474
|
}
|
|
453
475
|
|
|
454
476
|
const focusLongPress = (elementRef, focusKey) => {
|
|
455
|
-
return (
|
|
456
|
-
focusOn(elementRef, focusKey)
|
|
457
|
-
longPressFocusedElement(focusKey)
|
|
458
|
-
}
|
|
477
|
+
return focusAction(elementRef, focusKey, 'onLongPress')
|
|
459
478
|
}
|
|
460
479
|
|
|
461
480
|
if (Platform.isTV) {
|
|
@@ -474,14 +493,6 @@ export function FocusContextProvider(props) {
|
|
|
474
493
|
prettyLog({ action: 'remoteHandler', kind, action, focusedKey: focusedKeyRef.current })
|
|
475
494
|
}
|
|
476
495
|
switch (kind) {
|
|
477
|
-
case 'select':
|
|
478
|
-
pressFocusedElement()
|
|
479
|
-
break
|
|
480
|
-
case 'longselect':
|
|
481
|
-
if (action === 1) {
|
|
482
|
-
longPressFocusedElement()
|
|
483
|
-
}
|
|
484
|
-
break
|
|
485
496
|
case 'up':
|
|
486
497
|
moveFocusUp()
|
|
487
498
|
break
|
|
@@ -507,14 +518,6 @@ export function FocusContextProvider(props) {
|
|
|
507
518
|
React.useEffect(() => {
|
|
508
519
|
const focusKeyboardHandler = (event) => {
|
|
509
520
|
switch (event.key) {
|
|
510
|
-
case 'Enter':
|
|
511
|
-
if (event.code === 'NumpadEnter') {
|
|
512
|
-
longPressFocusedElement()
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
pressFocusedElement()
|
|
516
|
-
}
|
|
517
|
-
break
|
|
518
521
|
case 'ArrowUp':
|
|
519
522
|
moveFocusUp()
|
|
520
523
|
break
|
|
@@ -589,7 +592,6 @@ export function FocusContextProvider(props) {
|
|
|
589
592
|
clearFocusLayers,
|
|
590
593
|
readFocusProps,
|
|
591
594
|
setRemoteCallbacks,
|
|
592
|
-
setScrollViewRef,
|
|
593
595
|
focusLongPress,
|
|
594
596
|
focusOn,
|
|
595
597
|
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>
|