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.
- package/lib/module/context/snow-focus-context.js +56 -84
- 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 +65 -80
- 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
|
/*
|
|
@@ -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
|
-
|
|
316
|
+
const element = elementRef?.current;
|
|
317
|
+
if (!element) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
328
321
|
prettyLog({
|
|
329
322
|
action: 'focusOn',
|
|
330
|
-
|
|
331
|
-
|
|
323
|
+
elementRef,
|
|
324
|
+
focusKey
|
|
332
325
|
});
|
|
333
326
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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:
|
|
352
|
+
y: Math.max(top - verticalOffset, 0),
|
|
353
|
+
animated: false
|
|
346
354
|
});
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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
|
|
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
|
|
471
|
+
const shouldNotPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.[action];
|
|
465
472
|
if (DEBUG_FOCUS) {
|
|
466
473
|
prettyLog({
|
|
467
|
-
action: '
|
|
474
|
+
action: 'focusedElementAction',
|
|
475
|
+
kind: action,
|
|
468
476
|
focusKey,
|
|
469
|
-
|
|
477
|
+
shouldNotPress,
|
|
470
478
|
keyboardVisible: Keyboard.isVisible(),
|
|
471
|
-
|
|
479
|
+
[action]: focusMap?.refs?.[focusKey]?.[action]
|
|
472
480
|
});
|
|
473
481
|
}
|
|
474
|
-
if (
|
|
482
|
+
if (shouldNotPress) {
|
|
475
483
|
return false;
|
|
476
484
|
}
|
|
477
|
-
return focusMap.refs[focusKey]
|
|
485
|
+
return focusMap.refs[focusKey][action]();
|
|
478
486
|
};
|
|
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) => {
|
|
487
|
+
const focusAction = (elementRef, focusKey, action) => {
|
|
500
488
|
return () => {
|
|
501
489
|
focusOn(elementRef, focusKey);
|
|
502
|
-
|
|
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":[]}
|
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
|
/*
|
|
@@ -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
|
-
|
|
301
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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
|
|
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
|
|
438
|
+
const shouldNotPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.[action])
|
|
423
439
|
if (DEBUG_FOCUS) {
|
|
424
|
-
prettyLog({ action: '
|
|
440
|
+
prettyLog({ action: 'focusedElementAction', kind: action, focusKey, shouldNotPress, keyboardVisible: Keyboard.isVisible(), [action]: focusMap?.refs?.[focusKey]?.[action] })
|
|
425
441
|
}
|
|
426
|
-
if (
|
|
442
|
+
if (shouldNotPress) {
|
|
427
443
|
return false
|
|
428
444
|
}
|
|
429
|
-
return focusMap.refs[focusKey]
|
|
445
|
+
return focusMap.refs[focusKey][action]()
|
|
430
446
|
}
|
|
431
447
|
|
|
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
|
|
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>
|