expo-snowui 1.2.9 → 1.2.11
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/component/wired/snow-image-button.js +3 -1
- package/lib/module/component/wired/snow-image-button.js.map +1 -1
- package/lib/module/component/wired/snow-input.js +3 -1
- package/lib/module/component/wired/snow-input.js.map +1 -1
- package/lib/module/component/wired/snow-range-slider.js +32 -11
- package/lib/module/component/wired/snow-range-slider.js.map +1 -1
- package/lib/module/component/wired/snow-text-button.js +3 -1
- package/lib/module/component/wired/snow-text-button.js.map +1 -1
- package/lib/module/component/wired/snow-toggle.js +3 -1
- package/lib/module/component/wired/snow-toggle.js.map +1 -1
- package/lib/module/context/snow-focus-context.js +74 -23
- package/lib/module/context/snow-focus-context.js.map +1 -1
- package/package.json +1 -1
- package/src/component/wired/snow-image-button.js +2 -1
- package/src/component/wired/snow-input.js +2 -1
- package/src/component/wired/snow-range-slider.js +33 -10
- package/src/component/wired/snow-text-button.js +5 -2
- package/src/component/wired/snow-toggle.js +2 -1
- package/src/context/snow-focus-context.js +55 -22
|
@@ -15,7 +15,8 @@ const SnowImageButtonW = props => {
|
|
|
15
15
|
isFocused,
|
|
16
16
|
useFocusWiring,
|
|
17
17
|
focusPress,
|
|
18
|
-
focusLongPress
|
|
18
|
+
focusLongPress,
|
|
19
|
+
tvRemoteProps
|
|
19
20
|
} = useFocusContext();
|
|
20
21
|
const elementRef = useFocusWiring(props);
|
|
21
22
|
let fontStyle = [SnowStyle.component.imageButton.text];
|
|
@@ -60,6 +61,7 @@ const SnowImageButtonW = props => {
|
|
|
60
61
|
return /*#__PURE__*/_jsx(View, {
|
|
61
62
|
children: /*#__PURE__*/_jsxs(Pressable, {
|
|
62
63
|
ref: elementRef,
|
|
64
|
+
...tvRemoteProps(props),
|
|
63
65
|
style: wrapperStyle,
|
|
64
66
|
onPress: focusPress(elementRef, props.focusKey),
|
|
65
67
|
onLongPress: focusLongPress(elementRef, props.focusKey),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Pressable","Image","useStyleContext","useFocusContext","SnowText","jsx","_jsx","jsxs","_jsxs","SnowImageButtonW","props","SnowStyle","isFocused","useFocusWiring","focusPress","focusLongPress","elementRef","fontStyle","component","imageButton","text","title","length","push","smallText","substring","wrapperStyle","wrapper","imageStyle","image","wide","wrapperWide","imageWide","square","wrapperSquare","imageSquare","textWrapperStyle","textWrapper","dull","selected","focusKey","focused","imageSource","imageUrl","uri","children","ref","style","onPress","onLongPress","contentFit","source","placeholder","isSnowFocusWired","SnowImageButton"],"sourceRoot":"../../../../src","sources":["component/wired/snow-image-button.js"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,SAAS,QAAQ,cAAc;AAC9C,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAClE,OAAOC,QAAQ,MAAM,iBAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEnC,MAAMC,gBAAgB,GAAIC,KAAK,IAAK;EAChC,MAAM;IAAEC;EAAU,CAAC,GAAGT,eAAe,CAACQ,KAAK,CAAC;EAC5C,MAAM;IAAEE,SAAS;IAAEC,cAAc;IAAEC,UAAU;IAAEC;
|
|
1
|
+
{"version":3,"names":["React","View","Pressable","Image","useStyleContext","useFocusContext","SnowText","jsx","_jsx","jsxs","_jsxs","SnowImageButtonW","props","SnowStyle","isFocused","useFocusWiring","focusPress","focusLongPress","tvRemoteProps","elementRef","fontStyle","component","imageButton","text","title","length","push","smallText","substring","wrapperStyle","wrapper","imageStyle","image","wide","wrapperWide","imageWide","square","wrapperSquare","imageSquare","textWrapperStyle","textWrapper","dull","selected","focusKey","focused","imageSource","imageUrl","uri","children","ref","style","onPress","onLongPress","contentFit","source","placeholder","isSnowFocusWired","SnowImageButton"],"sourceRoot":"../../../../src","sources":["component/wired/snow-image-button.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,8 @@ const SnowInputW = props => {
|
|
|
12
12
|
} = useStyleContext(props);
|
|
13
13
|
const {
|
|
14
14
|
isFocused,
|
|
15
|
-
useFocusWiring
|
|
15
|
+
useFocusWiring,
|
|
16
|
+
tvRemoteProps
|
|
16
17
|
} = useFocusContext();
|
|
17
18
|
const elementRef = useFocusWiring(props);
|
|
18
19
|
let textStyle = [SnowStyle.component.input.text];
|
|
@@ -28,6 +29,7 @@ const SnowInputW = props => {
|
|
|
28
29
|
}
|
|
29
30
|
return /*#__PURE__*/_jsx(TextInput, {
|
|
30
31
|
ref: elementRef,
|
|
32
|
+
...tvRemoteProps(props),
|
|
31
33
|
secureTextEntry: props.secureTextEntry,
|
|
32
34
|
style: textStyle,
|
|
33
35
|
editable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TextInput","useDebouncedCallback","useStyleContext","useFocusContext","jsx","_jsx","SnowInputW","props","SnowStyle","SnowConfig","isFocused","useFocusWiring","elementRef","textStyle","component","input","text","short","push","small","focusKey","focused","onDebounce","inputDebounceMilliseconds","ref","secureTextEntry","style","editable","onChangeText","val","onValueChange","onSubmitEditing","onSubmit","value","isSnowFocusWired","SnowInput"],"sourceRoot":"../../../../src","sources":["component/wired/snow-input.js"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,oBAAoB,QAAQ,cAAc;AACnD,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAElE,MAAMC,UAAU,GAAIC,KAAK,IAAK;EAC1B,MAAM;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGP,eAAe,CAACK,KAAK,CAAC;EACxD,MAAM;IAAEG,SAAS;IAAEC;
|
|
1
|
+
{"version":3,"names":["TextInput","useDebouncedCallback","useStyleContext","useFocusContext","jsx","_jsx","SnowInputW","props","SnowStyle","SnowConfig","isFocused","useFocusWiring","tvRemoteProps","elementRef","textStyle","component","input","text","short","push","small","focusKey","focused","onDebounce","inputDebounceMilliseconds","ref","secureTextEntry","style","editable","onChangeText","val","onValueChange","onSubmitEditing","onSubmit","value","isSnowFocusWired","SnowInput"],"sourceRoot":"../../../../src","sources":["component/wired/snow-input.js"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,oBAAoB,QAAQ,cAAc;AACnD,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAElE,MAAMC,UAAU,GAAIC,KAAK,IAAK;EAC1B,MAAM;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGP,eAAe,CAACK,KAAK,CAAC;EACxD,MAAM;IAAEG,SAAS;IAAEC,cAAc;IAAEC;EAAc,CAAC,GAAGT,eAAe,CAAC,CAAC;EACtE,MAAMU,UAAU,GAAGF,cAAc,CAACJ,KAAK,CAAC;EAExC,IAAIO,SAAS,GAAG,CAACN,SAAS,CAACO,SAAS,CAACC,KAAK,CAACC,IAAI,CAAC;EAChD,IAAIV,KAAK,CAACW,KAAK,EAAE;IACbJ,SAAS,CAACK,IAAI,CAACX,SAAS,CAACO,SAAS,CAACC,KAAK,CAACI,KAAK,CAAC;EACnD;EACA,IAAIV,SAAS,CAACH,KAAK,CAACc,QAAQ,CAAC,EAAE;IAC3BP,SAAS,CAACK,IAAI,CAACX,SAAS,CAACO,SAAS,CAACC,KAAK,CAACM,OAAO,CAAC;EACrD;EAEA,IAAIC,UAAU,GAAG,IAAI;EACrB,IAAIhB,KAAK,CAACgB,UAAU,EAAE;IAClBA,UAAU,GAAGtB,oBAAoB,CAACM,KAAK,CAACgB,UAAU,EAAEd,UAAU,CAACe,yBAAyB,CAAC;EAC7F;EACA,oBAAOnB,IAAA,CAACL,SAAS;IACbyB,GAAG,EAAEZ,UAAW;IAAA,GACZD,aAAa,CAACL,KAAK,CAAC;IACxBmB,eAAe,EAAEnB,KAAK,CAACmB,eAAgB;IACvCC,KAAK,EAAEb,SAAU;IACjBc,QAAQ,EAAE,IAAK;IACfC,YAAY,EAAGC,GAAG,IAAK;MACnB,IAAIvB,KAAK,CAACwB,aAAa,EAAE;QACrBxB,KAAK,CAACwB,aAAa,CAACD,GAAG,CAAC;MAC5B;MACA,IAAIP,UAAU,EAAE;QACZA,UAAU,CAACO,GAAG,CAAC;MACnB;IACJ,CAAE;IACFE,eAAe,EAAEA,CAAA,KAAM;MACnB,IAAIzB,KAAK,CAAC0B,QAAQ,EAAE;QAChB1B,KAAK,CAAC0B,QAAQ,CAAC,CAAC;MACpB;IACJ,CAAE;IACFC,KAAK,EAAE3B,KAAK,CAAC2B;EAAM,CACtB,CAAC;AACN,CAAC;AAED5B,UAAU,CAAC6B,gBAAgB,GAAG,IAAI;AAElC,OAAO,MAAMC,SAAS,GAAG9B,UAAU;AAEnC,eAAe8B,SAAS","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
|
-
import { PanResponder, Pressable, View } from "react-native";
|
|
4
|
+
import { PanResponder, Platform, Pressable, View } from "react-native";
|
|
5
5
|
import { useDebouncedCallback } from 'use-debounce';
|
|
6
6
|
import { useFocusContext } from "../../context/snow-focus-context.js";
|
|
7
7
|
import { useStyleContext } from "../../context/snow-style-context.js";
|
|
@@ -111,18 +111,40 @@ const SnowRangeSliderW = props => {
|
|
|
111
111
|
React.useEffect(() => {
|
|
112
112
|
percentRef.current = percent;
|
|
113
113
|
}, [percent]);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
callbacks['slider'] = sliderHandleRemote;
|
|
117
|
-
return callbacks;
|
|
118
|
-
});
|
|
119
|
-
return () => {
|
|
114
|
+
if (Platform.isTV) {
|
|
115
|
+
React.useEffect(() => {
|
|
120
116
|
setRemoteCallbacks(callbacks => {
|
|
121
|
-
callbacks['slider'] =
|
|
117
|
+
callbacks['slider'] = sliderHandleRemote;
|
|
122
118
|
return callbacks;
|
|
123
119
|
});
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
return () => {
|
|
121
|
+
setRemoteCallbacks(callbacks => {
|
|
122
|
+
callbacks['slider'] = null;
|
|
123
|
+
return callbacks;
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
}, []);
|
|
127
|
+
}
|
|
128
|
+
if (Platform.OS === 'web') {
|
|
129
|
+
React.useEffect(() => {
|
|
130
|
+
const rangeSliderKeyboardHandler = event => {
|
|
131
|
+
switch (event.key) {
|
|
132
|
+
case 'ArrowLeft':
|
|
133
|
+
applyStep(-step);
|
|
134
|
+
break;
|
|
135
|
+
case 'ArrowRight':
|
|
136
|
+
applyStep(step);
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
window.addEventListener('keydown', rangeSliderKeyboardHandler);
|
|
143
|
+
return () => {
|
|
144
|
+
window.removeEventListener('keydown', rangeSliderKeyboardHandler);
|
|
145
|
+
};
|
|
146
|
+
}, []);
|
|
147
|
+
}
|
|
126
148
|
const applyStep = amount => {
|
|
127
149
|
let result = percentRef.current + amount;
|
|
128
150
|
if (result < min) {
|
|
@@ -207,7 +229,6 @@ const SnowRangeSliderW = props => {
|
|
|
207
229
|
ref: elementRef,
|
|
208
230
|
style: thumbStyle,
|
|
209
231
|
onLayout: handleLayout('thumb'),
|
|
210
|
-
focusStart: props.focusStart,
|
|
211
232
|
focusKey: props.focusKey,
|
|
212
233
|
focusUp: props.focusUp,
|
|
213
234
|
focusDown: props.focusDown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PanResponder","Pressable","View","useDebouncedCallback","useFocusContext","useStyleContext","jsx","_jsx","jsxs","_jsxs","min","max","step","SnowRangeSliderW","props","SnowStyle","SnowConfig","setRemoteCallbacks","useFocusWiring","isFocused","isDraggingRef","useRef","percent","setPercent","useState","percentRef","applyStepInterval","setApplyStepInterval","elementRef","sliderWidth","component","rangeSlider","trackWrapper","width","layoutsRef","slider","track","thumb","leftTrack","rightTrack","onValueChange","debounce","inputDebounceMilliseconds","thumbPositionToPercent","positionX","actionPositionX","current","x","newPercent","panRef","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderEnd","onPanResponderRelease","onPanResponderMove","pressEvent","gestureState","moveX","x0","onPanResponderGrant","useEffect","callbacks","sliderHandleRemote","applyStep","amount","result","longPress","action","setInterval","clearInterval","kind","focusKey","handleLayout","
|
|
1
|
+
{"version":3,"names":["React","PanResponder","Platform","Pressable","View","useDebouncedCallback","useFocusContext","useStyleContext","jsx","_jsx","jsxs","_jsxs","min","max","step","SnowRangeSliderW","props","SnowStyle","SnowConfig","setRemoteCallbacks","useFocusWiring","isFocused","isDraggingRef","useRef","percent","setPercent","useState","percentRef","applyStepInterval","setApplyStepInterval","elementRef","sliderWidth","component","rangeSlider","trackWrapper","width","layoutsRef","slider","track","thumb","leftTrack","rightTrack","onValueChange","debounce","inputDebounceMilliseconds","thumbPositionToPercent","positionX","actionPositionX","current","x","newPercent","panRef","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderEnd","onPanResponderRelease","onPanResponderMove","pressEvent","gestureState","moveX","x0","onPanResponderGrant","useEffect","isTV","callbacks","sliderHandleRemote","OS","rangeSliderKeyboardHandler","event","key","applyStep","window","addEventListener","removeEventListener","amount","result","longPress","action","setInterval","clearInterval","kind","focusKey","handleLayout","widths","nativeEvent","layout","trackWrapperStyle","thumbX","leftTrackStyle","thumbStyle","left","push","backgroundColor","color","hover","onLayout","style","wrapper","children","panHandlers","ref","focusUp","focusDown","isSnowFocusWired","SnowRangeSlider"],"sourceRoot":"../../../../src","sources":["component/wired/snow-range-slider.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,8 @@ const SnowTextButtonW = props => {
|
|
|
13
13
|
isFocused,
|
|
14
14
|
focusPress,
|
|
15
15
|
focusLongPress,
|
|
16
|
-
useFocusWiring
|
|
16
|
+
useFocusWiring,
|
|
17
|
+
tvRemoteProps
|
|
17
18
|
} = useFocusContext();
|
|
18
19
|
const elementRef = useFocusWiring(props);
|
|
19
20
|
const wrapperStyle = [SnowStyle.component.textButton.wrapper];
|
|
@@ -49,6 +50,7 @@ const SnowTextButtonW = props => {
|
|
|
49
50
|
}
|
|
50
51
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
51
52
|
ref: elementRef,
|
|
53
|
+
...tvRemoteProps(props),
|
|
52
54
|
style: wrapperStyle,
|
|
53
55
|
onPress: focusPress(elementRef, props.focusKey),
|
|
54
56
|
onLongPress: focusLongPress(elementRef, props.focusKey),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Pressable","useFocusContext","useStyleContext","SnowText","jsx","_jsx","SnowTextButtonW","props","SnowStyle","isFocused","focusPress","focusLongPress","useFocusWiring","elementRef","wrapperStyle","component","textButton","wrapper","disabled","push","selected","focusKey","focused","fade","tall","isWeb","tallWrapper","style","textStyle","text","title","length","smallText","fadeText","short","shortWrapper","ref","onPress","onLongPress","children","noSelect","isSnowFocusWired","SnowTextButton"],"sourceRoot":"../../../../src","sources":["component/wired/snow-text-button.js"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAClE,OAAOC,QAAQ,MAAM,iBAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEnC,MAAMC,eAAe,GAAIC,KAAK,IAAK;EAC/B,MAAM;IAAEC;EAAU,CAAC,GAAGN,eAAe,CAACK,KAAK,CAAC;EAC5C,MAAM;IAAEE,SAAS;IAAEC,UAAU;IAAEC,cAAc;IAAEC;
|
|
1
|
+
{"version":3,"names":["Pressable","useFocusContext","useStyleContext","SnowText","jsx","_jsx","SnowTextButtonW","props","SnowStyle","isFocused","focusPress","focusLongPress","useFocusWiring","tvRemoteProps","elementRef","wrapperStyle","component","textButton","wrapper","disabled","push","selected","focusKey","focused","fade","tall","isWeb","tallWrapper","style","textStyle","text","title","length","smallText","fadeText","short","shortWrapper","ref","onPress","onLongPress","children","noSelect","isSnowFocusWired","SnowTextButton"],"sourceRoot":"../../../../src","sources":["component/wired/snow-text-button.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,7 +11,8 @@ const SnowToggleW = props => {
|
|
|
11
11
|
} = useStyleContext(props);
|
|
12
12
|
const {
|
|
13
13
|
useFocusWiring,
|
|
14
|
-
isFocused
|
|
14
|
+
isFocused,
|
|
15
|
+
tvRemoteProps
|
|
15
16
|
} = useFocusContext();
|
|
16
17
|
const elementRef = useFocusWiring(props);
|
|
17
18
|
const toggleValue = () => {
|
|
@@ -29,6 +30,7 @@ const SnowToggleW = props => {
|
|
|
29
30
|
}
|
|
30
31
|
return /*#__PURE__*/_jsxs(Pressable, {
|
|
31
32
|
ref: elementRef,
|
|
33
|
+
...tvRemoteProps(props),
|
|
32
34
|
style: SnowStyle.component.toggle.center,
|
|
33
35
|
onPress: toggleValue,
|
|
34
36
|
children: [/*#__PURE__*/_jsx(SnowLabel, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Switch","Pressable","useStyleContext","useFocusContext","SnowLabel","jsx","_jsx","jsxs","_jsxs","SnowToggleW","props","SnowStyle","useFocusWiring","isFocused","elementRef","toggleValue","onValueChange","value","thumbColor","component","toggle","color","thumb","focusKey","hover","true","false","ref","style","center","onPress","children","title","trackColor","marginLeft","marginRight","isSnowFocusWired","SnowToggle"],"sourceRoot":"../../../../src","sources":["component/wired/snow-toggle.js"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,cAAc;AAChD,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,SAAS,QAAQ,kBAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEzC,MAAMC,WAAW,GAAIC,KAAK,IAAK;EAC3B,MAAM;IAAEC;EAAU,CAAC,GAAGT,eAAe,CAACQ,KAAK,CAAC;EAC5C,MAAM;IAAEE,cAAc;IAAEC;
|
|
1
|
+
{"version":3,"names":["Switch","Pressable","useStyleContext","useFocusContext","SnowLabel","jsx","_jsx","jsxs","_jsxs","SnowToggleW","props","SnowStyle","useFocusWiring","isFocused","tvRemoteProps","elementRef","toggleValue","onValueChange","value","thumbColor","component","toggle","color","thumb","focusKey","hover","true","false","ref","style","center","onPress","children","title","trackColor","marginLeft","marginRight","isSnowFocusWired","SnowToggle"],"sourceRoot":"../../../../src","sources":["component/wired/snow-toggle.js"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,cAAc;AAChD,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,eAAe,QAAQ,qCAAkC;AAClE,SAASC,SAAS,QAAQ,kBAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEzC,MAAMC,WAAW,GAAIC,KAAK,IAAK;EAC3B,MAAM;IAAEC;EAAU,CAAC,GAAGT,eAAe,CAACQ,KAAK,CAAC;EAC5C,MAAM;IAAEE,cAAc;IAAEC,SAAS;IAAEC;EAAc,CAAC,GAAGX,eAAe,CAAC,CAAC;EACtE,MAAMY,UAAU,GAAGH,cAAc,CAACF,KAAK,CAAC;EAExC,MAAMM,WAAW,GAAGA,CAAA,KAAM;IACtBN,KAAK,CAACO,aAAa,CAAC,CAACP,KAAK,CAACQ,KAAK,CAAC;EACrC,CAAC;EAED,IAAIC,UAAU,GAAGR,SAAS,CAACS,SAAS,CAACC,MAAM,CAACC,KAAK,CAACC,KAAK;EACvD,IAAIV,SAAS,CAACH,KAAK,CAACc,QAAQ,CAAC,EAAE;IAC3BL,UAAU,GAAGR,SAAS,CAACW,KAAK,CAACG,KAAK;EACtC,CAAC,MAAM;IACH,IAAIf,KAAK,CAACQ,KAAK,EAAE;MACbC,UAAU,GAAGR,SAAS,CAACS,SAAS,CAACC,MAAM,CAACC,KAAK,CAACI,IAAI;IACtD,CAAC,MAAM;MACHP,UAAU,GAAGR,SAAS,CAACS,SAAS,CAACC,MAAM,CAACC,KAAK,CAACK,KAAK;IACvD;EACJ;EAIA,oBACInB,KAAA,CAACP,SAAS;IACN2B,GAAG,EAAEb,UAAW;IAAA,GACZD,aAAa,CAACJ,KAAK,CAAC;IACxBmB,KAAK,EAAElB,SAAS,CAACS,SAAS,CAACC,MAAM,CAACS,MAAO;IACzCC,OAAO,EAAEf,WAAY;IAAAgB,QAAA,gBAErB1B,IAAA,CAACF,SAAS;MAAA4B,QAAA,EAAEtB,KAAK,CAACuB;IAAK,CAAY,CAAC,eACpC3B,IAAA,CAACN,MAAM;MACHmB,UAAU,EAAEA,UAAW;MACvBe,UAAU,EACN;QACIR,IAAI,EAAEf,SAAS,CAACS,SAAS,CAACC,MAAM,CAACC,KAAK,CAACI,IAAI;QAC3CC,KAAK,EAAEhB,SAAS,CAACS,SAAS,CAACC,MAAM,CAACC,KAAK,CAACK;MAC5C,CAAE;MACNE,KAAK,EAAE;QAAEM,UAAU,EAAE,MAAM;QAAEC,WAAW,EAAE;MAAO,CAAE;MACnDlB,KAAK,EAAER,KAAK,CAACQ,KAAM;MACnBD,aAAa,EAAED;IAAY,CAAE,CAAC;EAAA,CAC3B,CAAC;AAEpB,CAAC;AAEDP,WAAW,CAAC4B,gBAAgB,GAAG,IAAI;AAEnC,OAAO,MAAMC,UAAU,GAAG7B,WAAW;AAErC,eAAe6B,UAAU","ignoreList":[]}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import _ from 'lodash';
|
|
5
|
-
import { Platform, useTVEventHandler, Keyboard
|
|
5
|
+
import { Platform, useTVEventHandler, Keyboard } from 'react-native';
|
|
6
6
|
import { SnowSafeArea } from "../component/snow-safe-area.js";
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
9
|
TODO
|
|
10
|
+
Hitting select on tv remote after first load, focused button doesn't get pressed.
|
|
11
|
+
|
|
10
12
|
Focus can get lost if in a tabs element there is only text.
|
|
11
13
|
Nothing inside the tab should be selectable, but the outer view gets a focusKey
|
|
12
14
|
|
|
@@ -115,7 +117,7 @@ export function FocusContextProvider(props) {
|
|
|
115
117
|
prettyLog({
|
|
116
118
|
action: 'isFocusedLayer',
|
|
117
119
|
layerName,
|
|
118
|
-
|
|
120
|
+
focusLayers
|
|
119
121
|
});
|
|
120
122
|
}
|
|
121
123
|
return layerName && focusLayers.at(-1).layerName === layerName;
|
|
@@ -145,7 +147,7 @@ export function FocusContextProvider(props) {
|
|
|
145
147
|
}
|
|
146
148
|
});
|
|
147
149
|
}
|
|
148
|
-
if (DEBUG_FOCUS) {
|
|
150
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
149
151
|
prettyLog({
|
|
150
152
|
action: 'pushFocusLayer',
|
|
151
153
|
layerName,
|
|
@@ -183,18 +185,19 @@ export function FocusContextProvider(props) {
|
|
|
183
185
|
const useFocusWiring = elementProps => {
|
|
184
186
|
const {
|
|
185
187
|
addFocusMap,
|
|
186
|
-
focusOn,
|
|
187
188
|
currentLayer
|
|
188
189
|
} = useFocusContext();
|
|
190
|
+
const [startedFocused, setStartedFocused] = React.useState(false);
|
|
189
191
|
const elementRef = React.useRef(null);
|
|
190
192
|
React.useEffect(() => {
|
|
191
193
|
if (elementRef.current) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
const focusOnAdd = !startedFocused && elementProps.focusStart;
|
|
195
|
+
addFocusMap(elementRef, elementProps, focusOnAdd);
|
|
196
|
+
if (focusOnAdd) {
|
|
197
|
+
setStartedFocused(true);
|
|
195
198
|
}
|
|
196
199
|
}
|
|
197
|
-
}, [elementProps.focusKey, elementProps.focusDown, elementProps.focusUp, elementProps.focusRight, elementProps.focusLeft, currentLayer]);
|
|
200
|
+
}, [elementProps.focusStart, elementProps.focusKey, elementProps.focusDown, elementProps.focusUp, elementProps.focusRight, elementProps.focusLeft, currentLayer]);
|
|
198
201
|
return elementRef;
|
|
199
202
|
};
|
|
200
203
|
const clearFocusLayers = () => {
|
|
@@ -218,7 +221,7 @@ export function FocusContextProvider(props) {
|
|
|
218
221
|
return result;
|
|
219
222
|
});
|
|
220
223
|
};
|
|
221
|
-
const addFocusMap = (elementRef, elementProps) => {
|
|
224
|
+
const addFocusMap = (elementRef, elementProps, elementStartsFocused) => {
|
|
222
225
|
const focusKey = elementProps.focusKey;
|
|
223
226
|
const refs = {
|
|
224
227
|
[focusKey]: {
|
|
@@ -227,6 +230,9 @@ export function FocusContextProvider(props) {
|
|
|
227
230
|
onLongPress: elementProps.onLongPress
|
|
228
231
|
}
|
|
229
232
|
};
|
|
233
|
+
if (elementStartsFocused) {
|
|
234
|
+
focusedKeyRef.current = elementProps.focusKey;
|
|
235
|
+
}
|
|
230
236
|
let focus = {};
|
|
231
237
|
if (elementProps.focusUp) {
|
|
232
238
|
focus['up'] = elementProps.focusUp;
|
|
@@ -243,7 +249,7 @@ export function FocusContextProvider(props) {
|
|
|
243
249
|
const directions = {
|
|
244
250
|
[focusKey]: focus
|
|
245
251
|
};
|
|
246
|
-
if (DEBUG_FOCUS) {
|
|
252
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
247
253
|
prettyLog({
|
|
248
254
|
action: 'addFocusMap',
|
|
249
255
|
elementRef,
|
|
@@ -296,8 +302,19 @@ export function FocusContextProvider(props) {
|
|
|
296
302
|
});
|
|
297
303
|
return result;
|
|
298
304
|
});
|
|
305
|
+
if (elementStartsFocused) {
|
|
306
|
+
elementRef.current.focus();
|
|
307
|
+
setFocusedKey(elementProps.focusKey);
|
|
308
|
+
}
|
|
299
309
|
};
|
|
300
310
|
const focusOn = (elementRef, focusKey) => {
|
|
311
|
+
if (DEBUG_FOCUS) {
|
|
312
|
+
prettyLog({
|
|
313
|
+
action: 'focusOn',
|
|
314
|
+
focusKey,
|
|
315
|
+
elementRef
|
|
316
|
+
});
|
|
317
|
+
}
|
|
301
318
|
elementRef.current.focus();
|
|
302
319
|
let scroll = focusLayersRef.current?.at(-1)?.scrollViewRef;
|
|
303
320
|
if (scroll) {
|
|
@@ -419,7 +436,17 @@ export function FocusContextProvider(props) {
|
|
|
419
436
|
focusKey = focusedKeyRef.current;
|
|
420
437
|
}
|
|
421
438
|
const focusMap = focusLayersRef.current.at(-1);
|
|
422
|
-
|
|
439
|
+
const canPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.onPress;
|
|
440
|
+
if (DEBUG_FOCUS) {
|
|
441
|
+
prettyLog({
|
|
442
|
+
action: 'pressFocusedElement',
|
|
443
|
+
focusKey,
|
|
444
|
+
canPress,
|
|
445
|
+
keyboardVisible: Keyboard.isVisible(),
|
|
446
|
+
onPress: focusMap?.refs?.[focusKey]?.onPress
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (canPress) {
|
|
423
450
|
return false;
|
|
424
451
|
}
|
|
425
452
|
return focusMap.refs[focusKey].onPress();
|
|
@@ -429,26 +456,28 @@ export function FocusContextProvider(props) {
|
|
|
429
456
|
focusKey = focusedKeyRef.current;
|
|
430
457
|
}
|
|
431
458
|
const focusMap = focusLayersRef.current.at(-1);
|
|
432
|
-
|
|
459
|
+
const canPress = Keyboard.isVisible() || !focusMap?.refs?.[focusKey]?.onLongPress;
|
|
460
|
+
if (DEBUG_FOCUS) {
|
|
461
|
+
prettyLog({
|
|
462
|
+
action: 'longPressFocusedElement',
|
|
463
|
+
focusKey,
|
|
464
|
+
canPress,
|
|
465
|
+
keyboardVisible: Keyboard.isVisible(),
|
|
466
|
+
onLongPress: focusMap?.refs?.[focusKey]?.onLongPress
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
if (canPress) {
|
|
433
470
|
return false;
|
|
434
471
|
}
|
|
435
472
|
return focusMap.refs[focusKey].onLongPress();
|
|
436
473
|
};
|
|
437
474
|
const focusPress = (elementRef, focusKey) => {
|
|
438
|
-
// This is done by the remoteHandler on TV
|
|
439
|
-
if (Platform.isTV) {
|
|
440
|
-
return () => {};
|
|
441
|
-
}
|
|
442
475
|
return () => {
|
|
443
476
|
focusOn(elementRef, focusKey);
|
|
444
477
|
pressFocusedElement(focusKey);
|
|
445
478
|
};
|
|
446
479
|
};
|
|
447
480
|
const focusLongPress = (elementRef, focusKey) => {
|
|
448
|
-
// This is done by the remoteHandler on TV
|
|
449
|
-
if (Platform.isTV) {
|
|
450
|
-
return () => {};
|
|
451
|
-
}
|
|
452
481
|
return () => {
|
|
453
482
|
focusOn(elementRef, focusKey);
|
|
454
483
|
longPressFocusedElement(focusKey);
|
|
@@ -466,6 +495,14 @@ export function FocusContextProvider(props) {
|
|
|
466
495
|
}
|
|
467
496
|
callback(kind, action);
|
|
468
497
|
}
|
|
498
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
499
|
+
prettyLog({
|
|
500
|
+
action: 'remoteHandler',
|
|
501
|
+
kind,
|
|
502
|
+
action,
|
|
503
|
+
focusedKey: focusedKeyRef.current
|
|
504
|
+
});
|
|
505
|
+
}
|
|
469
506
|
switch (kind) {
|
|
470
507
|
case 'select':
|
|
471
508
|
pressFocusedElement();
|
|
@@ -548,18 +585,32 @@ export function FocusContextProvider(props) {
|
|
|
548
585
|
}
|
|
549
586
|
return focusProps;
|
|
550
587
|
};
|
|
588
|
+
|
|
589
|
+
// If these are omitted, then TV remote doesn't work on first launch
|
|
590
|
+
// This is another low level helper for wired components
|
|
591
|
+
// Nothing outside snowui should need it
|
|
592
|
+
const tvRemoteProps = elementProps => {
|
|
593
|
+
if (!Platform.isTV || !elementProps.focusStart) {
|
|
594
|
+
return {};
|
|
595
|
+
}
|
|
596
|
+
return {
|
|
597
|
+
focusable: elementProps.focusStart,
|
|
598
|
+
hasTVPreferredFocus: elementProps.focusStart
|
|
599
|
+
};
|
|
600
|
+
};
|
|
551
601
|
const focusContext = {
|
|
552
602
|
DEBUG_FOCUS,
|
|
553
603
|
focusedKey,
|
|
604
|
+
currentLayer,
|
|
605
|
+
isFocused,
|
|
606
|
+
isFocusedLayer,
|
|
607
|
+
tvRemoteProps,
|
|
554
608
|
useFocusWiring,
|
|
555
609
|
addFocusMap,
|
|
556
610
|
useFocusLayer,
|
|
557
611
|
popFocusLayer,
|
|
558
612
|
pushFocusLayer,
|
|
559
613
|
clearFocusLayers,
|
|
560
|
-
isFocused,
|
|
561
|
-
isFocusedLayer,
|
|
562
|
-
layersAreClear: focusedKey === null,
|
|
563
614
|
readFocusProps,
|
|
564
615
|
setRemoteCallbacks,
|
|
565
616
|
setScrollViewRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_","Platform","useTVEventHandler","Keyboard","findNodeHandle","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","isFocused","elementFocusKey","action","isFocusedLayer","layerMaps","at","pushFocusLayer","layerIsUncloned","prev","result","push","popFocusLayer","pop","useFocusLayer","name","isUncloned","useLayoutEffect","useFocusWiring","elementProps","addFocusMap","focusOn","elementRef","focusStart","focusKey","focusDown","focusUp","focusRight","focusLeft","clearFocusLayers","setScrollViewRef","scrollViewRef","focusLayer","length","element","onPress","onLongPress","focus","hasOwnProperty","merge","scroll","measureLayout","getInnerViewNode","x","y","scrollTo","animated","err","error","moveFocus","direction","isVisible","sourceKey","destinationKey","request","normalDestination","isGridCell","split","replace","target","moveFocusRight","moveFocusLeft","moveFocusUp","moveFocusDown","pressFocusedElement","focusMap","longPressFocusedElement","focusPress","isTV","focusLongPress","remoteHandler","remoteEvent","callbacks","kind","eventType","eventKeyAction","callback","Object","entries","focusKeyboardHandler","event","code","window","addEventListener","removeEventListener","readFocusProps","focusProps","focusContext","layersAreClear","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","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","isFocused","elementFocusKey","action","isFocusedLayer","at","pushFocusLayer","layerIsUncloned","prev","result","push","popFocusLayer","pop","useFocusLayer","name","isUncloned","useLayoutEffect","useFocusWiring","elementProps","addFocusMap","startedFocused","setStartedFocused","elementRef","focusOnAdd","focusStart","focusKey","focusDown","focusUp","focusRight","focusLeft","clearFocusLayers","setScrollViewRef","scrollViewRef","focusLayer","length","elementStartsFocused","element","onPress","onLongPress","focus","hasOwnProperty","merge","focusOn","scroll","measureLayout","getInnerViewNode","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":[]}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ import SnowText from '../snow-text'
|
|
|
7
7
|
|
|
8
8
|
const SnowImageButtonW = (props) => {
|
|
9
9
|
const { SnowStyle } = useStyleContext(props)
|
|
10
|
-
const { isFocused, useFocusWiring, focusPress, focusLongPress } = useFocusContext()
|
|
10
|
+
const { isFocused, useFocusWiring, focusPress, focusLongPress, tvRemoteProps } = useFocusContext()
|
|
11
11
|
const elementRef = useFocusWiring(props)
|
|
12
12
|
|
|
13
13
|
let fontStyle = [SnowStyle.component.imageButton.text]
|
|
@@ -57,6 +57,7 @@ const SnowImageButtonW = (props) => {
|
|
|
57
57
|
<View>
|
|
58
58
|
<Pressable
|
|
59
59
|
ref={elementRef}
|
|
60
|
+
{...tvRemoteProps(props)}
|
|
60
61
|
style={wrapperStyle}
|
|
61
62
|
onPress={focusPress(elementRef, props.focusKey)}
|
|
62
63
|
onLongPress={focusLongPress(elementRef, props.focusKey)}
|
|
@@ -5,7 +5,7 @@ import { useFocusContext } from '../../context/snow-focus-context'
|
|
|
5
5
|
|
|
6
6
|
const SnowInputW = (props) => {
|
|
7
7
|
const { SnowStyle, SnowConfig } = useStyleContext(props)
|
|
8
|
-
const { isFocused, useFocusWiring } = useFocusContext()
|
|
8
|
+
const { isFocused, useFocusWiring, tvRemoteProps } = useFocusContext()
|
|
9
9
|
const elementRef = useFocusWiring(props)
|
|
10
10
|
|
|
11
11
|
let textStyle = [SnowStyle.component.input.text]
|
|
@@ -22,6 +22,7 @@ const SnowInputW = (props) => {
|
|
|
22
22
|
}
|
|
23
23
|
return <TextInput
|
|
24
24
|
ref={elementRef}
|
|
25
|
+
{...tvRemoteProps(props)}
|
|
25
26
|
secureTextEntry={props.secureTextEntry}
|
|
26
27
|
style={textStyle}
|
|
27
28
|
editable={true}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
PanResponder,
|
|
4
|
+
Platform,
|
|
4
5
|
Pressable,
|
|
5
6
|
View
|
|
6
7
|
} from "react-native";
|
|
@@ -116,18 +117,41 @@ const SnowRangeSliderW = (props) => {
|
|
|
116
117
|
percentRef.current = percent
|
|
117
118
|
}, [percent])
|
|
118
119
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
callbacks['slider'] = sliderHandleRemote
|
|
122
|
-
return callbacks
|
|
123
|
-
})
|
|
124
|
-
return () => {
|
|
120
|
+
if (Platform.isTV) {
|
|
121
|
+
React.useEffect(() => {
|
|
125
122
|
setRemoteCallbacks((callbacks) => {
|
|
126
|
-
callbacks['slider'] =
|
|
123
|
+
callbacks['slider'] = sliderHandleRemote
|
|
127
124
|
return callbacks
|
|
128
125
|
})
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
return () => {
|
|
127
|
+
setRemoteCallbacks((callbacks) => {
|
|
128
|
+
callbacks['slider'] = null
|
|
129
|
+
return callbacks
|
|
130
|
+
})
|
|
131
|
+
}
|
|
132
|
+
}, [])
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (Platform.OS === 'web') {
|
|
136
|
+
React.useEffect(() => {
|
|
137
|
+
const rangeSliderKeyboardHandler = (event) => {
|
|
138
|
+
switch (event.key) {
|
|
139
|
+
case 'ArrowLeft':
|
|
140
|
+
applyStep(-step)
|
|
141
|
+
break
|
|
142
|
+
case 'ArrowRight':
|
|
143
|
+
applyStep(step)
|
|
144
|
+
break
|
|
145
|
+
default:
|
|
146
|
+
break
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
window.addEventListener('keydown', rangeSliderKeyboardHandler);
|
|
150
|
+
return () => {
|
|
151
|
+
window.removeEventListener('keydown', rangeSliderKeyboardHandler);
|
|
152
|
+
};
|
|
153
|
+
}, []);
|
|
154
|
+
}
|
|
131
155
|
|
|
132
156
|
const applyStep = (amount) => {
|
|
133
157
|
let result = percentRef.current + amount
|
|
@@ -222,7 +246,6 @@ const SnowRangeSliderW = (props) => {
|
|
|
222
246
|
ref={elementRef}
|
|
223
247
|
style={thumbStyle}
|
|
224
248
|
onLayout={handleLayout('thumb')}
|
|
225
|
-
focusStart={props.focusStart}
|
|
226
249
|
focusKey={props.focusKey}
|
|
227
250
|
focusUp={props.focusUp}
|
|
228
251
|
focusDown={props.focusDown}
|
|
@@ -5,7 +5,7 @@ import SnowText from '../snow-text'
|
|
|
5
5
|
|
|
6
6
|
const SnowTextButtonW = (props) => {
|
|
7
7
|
const { SnowStyle } = useStyleContext(props)
|
|
8
|
-
const { isFocused, focusPress, focusLongPress, useFocusWiring } = useFocusContext()
|
|
8
|
+
const { isFocused, focusPress, focusLongPress, useFocusWiring, tvRemoteProps } = useFocusContext()
|
|
9
9
|
const elementRef = useFocusWiring(props)
|
|
10
10
|
|
|
11
11
|
const wrapperStyle = [SnowStyle.component.textButton.wrapper]
|
|
@@ -50,10 +50,13 @@ const SnowTextButtonW = (props) => {
|
|
|
50
50
|
return (
|
|
51
51
|
<Pressable
|
|
52
52
|
ref={elementRef}
|
|
53
|
+
{...tvRemoteProps(props)}
|
|
53
54
|
style={wrapperStyle}
|
|
54
55
|
onPress={focusPress(elementRef, props.focusKey)}
|
|
55
56
|
onLongPress={focusLongPress(elementRef, props.focusKey)}
|
|
56
|
-
disabled={props.disabled}
|
|
57
|
+
disabled={props.disabled}
|
|
58
|
+
|
|
59
|
+
>
|
|
57
60
|
<SnowText noSelect style={textStyle}>{props.title}</SnowText>
|
|
58
61
|
</Pressable >
|
|
59
62
|
)
|
|
@@ -5,7 +5,7 @@ import { SnowLabel } from '../snow-label'
|
|
|
5
5
|
|
|
6
6
|
const SnowToggleW = (props) => {
|
|
7
7
|
const { SnowStyle } = useStyleContext(props)
|
|
8
|
-
const { useFocusWiring, isFocused } = useFocusContext()
|
|
8
|
+
const { useFocusWiring, isFocused, tvRemoteProps } = useFocusContext()
|
|
9
9
|
const elementRef = useFocusWiring(props)
|
|
10
10
|
|
|
11
11
|
const toggleValue = () => {
|
|
@@ -28,6 +28,7 @@ const SnowToggleW = (props) => {
|
|
|
28
28
|
return (
|
|
29
29
|
<Pressable
|
|
30
30
|
ref={elementRef}
|
|
31
|
+
{...tvRemoteProps(props)}
|
|
31
32
|
style={SnowStyle.component.toggle.center}
|
|
32
33
|
onPress={toggleValue}
|
|
33
34
|
>
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import _ from 'lodash'
|
|
3
|
-
import { Platform, useTVEventHandler, Keyboard
|
|
3
|
+
import { Platform, useTVEventHandler, Keyboard } from 'react-native'
|
|
4
4
|
import { SnowSafeArea } from '../component/snow-safe-area'
|
|
5
5
|
|
|
6
6
|
/*
|
|
7
7
|
TODO
|
|
8
|
+
Hitting select on tv remote after first load, focused button doesn't get pressed.
|
|
9
|
+
|
|
8
10
|
Focus can get lost if in a tabs element there is only text.
|
|
9
11
|
Nothing inside the tab should be selectable, but the outer view gets a focusKey
|
|
10
12
|
|
|
@@ -113,7 +115,7 @@ export function FocusContextProvider(props) {
|
|
|
113
115
|
|
|
114
116
|
const isFocusedLayer = (layerName) => {
|
|
115
117
|
if (DEBUG_FOCUS === 'verbose') {
|
|
116
|
-
prettyLog({ action: 'isFocusedLayer', layerName,
|
|
118
|
+
prettyLog({ action: 'isFocusedLayer', layerName, focusLayers })
|
|
117
119
|
}
|
|
118
120
|
return layerName && focusLayers.at(-1).layerName === layerName
|
|
119
121
|
}
|
|
@@ -132,7 +134,7 @@ export function FocusContextProvider(props) {
|
|
|
132
134
|
else {
|
|
133
135
|
result.push({ layerName, refs: { ...prev.at(-1).refs }, directions: { ...prev.at(-1).directions } })
|
|
134
136
|
}
|
|
135
|
-
if (DEBUG_FOCUS) {
|
|
137
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
136
138
|
prettyLog({ action: 'pushFocusLayer', layerName, focusLayers: result })
|
|
137
139
|
}
|
|
138
140
|
return result
|
|
@@ -163,17 +165,21 @@ export function FocusContextProvider(props) {
|
|
|
163
165
|
|
|
164
166
|
// This is only used by low level components to interact with the focus system
|
|
165
167
|
const useFocusWiring = (elementProps) => {
|
|
166
|
-
const { addFocusMap,
|
|
168
|
+
const { addFocusMap, currentLayer } = useFocusContext();
|
|
169
|
+
const [startedFocused, setStartedFocused] = React.useState(false)
|
|
167
170
|
const elementRef = React.useRef(null);
|
|
168
171
|
|
|
169
172
|
React.useEffect(() => {
|
|
170
173
|
if (elementRef.current) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
const focusOnAdd = !startedFocused && elementProps.focusStart
|
|
175
|
+
addFocusMap(elementRef, elementProps, focusOnAdd);
|
|
176
|
+
if (focusOnAdd) {
|
|
177
|
+
setStartedFocused(true)
|
|
174
178
|
}
|
|
179
|
+
|
|
175
180
|
}
|
|
176
181
|
}, [
|
|
182
|
+
elementProps.focusStart,
|
|
177
183
|
elementProps.focusKey,
|
|
178
184
|
elementProps.focusDown,
|
|
179
185
|
elementProps.focusUp,
|
|
@@ -205,7 +211,7 @@ export function FocusContextProvider(props) {
|
|
|
205
211
|
})
|
|
206
212
|
}
|
|
207
213
|
|
|
208
|
-
const addFocusMap = (elementRef, elementProps) => {
|
|
214
|
+
const addFocusMap = (elementRef, elementProps, elementStartsFocused) => {
|
|
209
215
|
const focusKey = elementProps.focusKey
|
|
210
216
|
const refs = {
|
|
211
217
|
[focusKey]: {
|
|
@@ -214,6 +220,9 @@ export function FocusContextProvider(props) {
|
|
|
214
220
|
onLongPress: elementProps.onLongPress
|
|
215
221
|
}
|
|
216
222
|
}
|
|
223
|
+
if (elementStartsFocused) {
|
|
224
|
+
focusedKeyRef.current = elementProps.focusKey
|
|
225
|
+
}
|
|
217
226
|
let focus = {}
|
|
218
227
|
if (elementProps.focusUp) {
|
|
219
228
|
focus['up'] = elementProps.focusUp
|
|
@@ -230,7 +239,7 @@ export function FocusContextProvider(props) {
|
|
|
230
239
|
const directions = {
|
|
231
240
|
[focusKey]: focus
|
|
232
241
|
}
|
|
233
|
-
if (DEBUG_FOCUS) {
|
|
242
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
234
243
|
prettyLog({ action: 'addFocusMap', elementRef, elementProps, focusKey, refs, directions })
|
|
235
244
|
}
|
|
236
245
|
setFocusLayers((prev) => {
|
|
@@ -271,9 +280,16 @@ export function FocusContextProvider(props) {
|
|
|
271
280
|
result[result.length - 1] = _.merge({}, { ...focusLayer }, { refs, directions })
|
|
272
281
|
return result
|
|
273
282
|
})
|
|
283
|
+
if (elementStartsFocused) {
|
|
284
|
+
elementRef.current.focus()
|
|
285
|
+
setFocusedKey(elementProps.focusKey)
|
|
286
|
+
}
|
|
274
287
|
}
|
|
275
288
|
|
|
276
289
|
const focusOn = (elementRef, focusKey) => {
|
|
290
|
+
if (DEBUG_FOCUS) {
|
|
291
|
+
prettyLog({ action: 'focusOn', focusKey, elementRef })
|
|
292
|
+
}
|
|
277
293
|
elementRef.current.focus()
|
|
278
294
|
let scroll = focusLayersRef.current?.at(-1)?.scrollViewRef
|
|
279
295
|
if (scroll) {
|
|
@@ -378,7 +394,11 @@ export function FocusContextProvider(props) {
|
|
|
378
394
|
focusKey = focusedKeyRef.current
|
|
379
395
|
}
|
|
380
396
|
const focusMap = focusLayersRef.current.at(-1)
|
|
381
|
-
|
|
397
|
+
const canPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.onPress)
|
|
398
|
+
if (DEBUG_FOCUS) {
|
|
399
|
+
prettyLog({ action: 'pressFocusedElement', focusKey, canPress, keyboardVisible: Keyboard.isVisible(), onPress: focusMap?.refs?.[focusKey]?.onPress })
|
|
400
|
+
}
|
|
401
|
+
if (canPress) {
|
|
382
402
|
return false
|
|
383
403
|
}
|
|
384
404
|
return focusMap.refs[focusKey].onPress()
|
|
@@ -389,17 +409,17 @@ export function FocusContextProvider(props) {
|
|
|
389
409
|
focusKey = focusedKeyRef.current
|
|
390
410
|
}
|
|
391
411
|
const focusMap = focusLayersRef.current.at(-1)
|
|
392
|
-
|
|
412
|
+
const canPress = Keyboard.isVisible() || !(focusMap?.refs?.[focusKey]?.onLongPress)
|
|
413
|
+
if (DEBUG_FOCUS) {
|
|
414
|
+
prettyLog({ action: 'longPressFocusedElement', focusKey, canPress, keyboardVisible: Keyboard.isVisible(), onLongPress: focusMap?.refs?.[focusKey]?.onLongPress })
|
|
415
|
+
}
|
|
416
|
+
if (canPress) {
|
|
393
417
|
return false
|
|
394
418
|
}
|
|
395
419
|
return focusMap.refs[focusKey].onLongPress()
|
|
396
420
|
}
|
|
397
421
|
|
|
398
422
|
const focusPress = (elementRef, focusKey) => {
|
|
399
|
-
// This is done by the remoteHandler on TV
|
|
400
|
-
if (Platform.isTV) {
|
|
401
|
-
return () => { }
|
|
402
|
-
}
|
|
403
423
|
return () => {
|
|
404
424
|
focusOn(elementRef, focusKey)
|
|
405
425
|
pressFocusedElement(focusKey)
|
|
@@ -407,10 +427,6 @@ export function FocusContextProvider(props) {
|
|
|
407
427
|
}
|
|
408
428
|
|
|
409
429
|
const focusLongPress = (elementRef, focusKey) => {
|
|
410
|
-
// This is done by the remoteHandler on TV
|
|
411
|
-
if (Platform.isTV) {
|
|
412
|
-
return () => { }
|
|
413
|
-
}
|
|
414
430
|
return () => {
|
|
415
431
|
focusOn(elementRef, focusKey)
|
|
416
432
|
longPressFocusedElement(focusKey)
|
|
@@ -429,6 +445,9 @@ export function FocusContextProvider(props) {
|
|
|
429
445
|
}
|
|
430
446
|
callback(kind, action)
|
|
431
447
|
}
|
|
448
|
+
if (DEBUG_FOCUS === 'verbose') {
|
|
449
|
+
prettyLog({ action: 'remoteHandler', kind, action, focusedKey: focusedKeyRef.current })
|
|
450
|
+
}
|
|
432
451
|
switch (kind) {
|
|
433
452
|
case 'select':
|
|
434
453
|
pressFocusedElement()
|
|
@@ -517,18 +536,32 @@ export function FocusContextProvider(props) {
|
|
|
517
536
|
return focusProps
|
|
518
537
|
}
|
|
519
538
|
|
|
539
|
+
// If these are omitted, then TV remote doesn't work on first launch
|
|
540
|
+
// This is another low level helper for wired components
|
|
541
|
+
// Nothing outside snowui should need it
|
|
542
|
+
const tvRemoteProps = (elementProps) => {
|
|
543
|
+
if (!Platform.isTV || !elementProps.focusStart) {
|
|
544
|
+
return {}
|
|
545
|
+
}
|
|
546
|
+
return {
|
|
547
|
+
focusable: elementProps.focusStart,
|
|
548
|
+
hasTVPreferredFocus: elementProps.focusStart
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
520
552
|
const focusContext = {
|
|
521
553
|
DEBUG_FOCUS,
|
|
522
554
|
focusedKey,
|
|
555
|
+
currentLayer,
|
|
556
|
+
isFocused,
|
|
557
|
+
isFocusedLayer,
|
|
558
|
+
tvRemoteProps,
|
|
523
559
|
useFocusWiring,
|
|
524
560
|
addFocusMap,
|
|
525
561
|
useFocusLayer,
|
|
526
562
|
popFocusLayer,
|
|
527
563
|
pushFocusLayer,
|
|
528
564
|
clearFocusLayers,
|
|
529
|
-
isFocused,
|
|
530
|
-
isFocusedLayer,
|
|
531
|
-
layersAreClear: focusedKey === null,
|
|
532
565
|
readFocusProps,
|
|
533
566
|
setRemoteCallbacks,
|
|
534
567
|
setScrollViewRef,
|