@ledvance/ui-biz-bundle 1.1.38 → 1.1.40
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/package.json +1 -1
- package/src/modules/mood/AddMoodPage.tsx +11 -7
- package/src/modules/mood/DynamicMoodEditorPage.tsx +2 -0
- package/src/modules/mood/MixMood/AddMixMoodPage.tsx +3 -3
- package/src/modules/mood/MixMood/MixMoodEditPage.tsx +2 -0
- package/src/modules/mood/MixMood/MixMoodItem.tsx +1 -0
- package/src/modules/mood/MoodItem.tsx +1 -0
- package/src/modules/mood/MoodPage.tsx +1 -1
- package/src/modules/scene/SceneInfo.ts +216 -0
- package/src/modules/timeSchedule/TimeScheduleEditpage.tsx +5 -4
- package/src/modules/timeSchedule/TimeSchedulePage.tsx +2 -2
package/package.json
CHANGED
|
@@ -5,11 +5,12 @@ import {FlatList, StyleSheet, Text, View} from 'react-native'
|
|
|
5
5
|
import {Utils} from 'tuya-panel-kit'
|
|
6
6
|
import RecommendMoodItem, {ColorsLineProps} from './RecommendMoodItem'
|
|
7
7
|
import Spacer from '@ledvance/base/src/components/Spacer'
|
|
8
|
-
import {useReactive} from 'ahooks'
|
|
8
|
+
import {useReactive, useCreation} from 'ahooks'
|
|
9
9
|
import {useNavigation, useRoute} from '@react-navigation/native'
|
|
10
10
|
import {SceneNodeTransitionMode, SceneUIState} from '../scene/SceneInfo'
|
|
11
11
|
import {toDynamicMoodEditorPage, toStaticMoodEditorPage} from '../../navigation/tools'
|
|
12
12
|
import {MoodPageProps} from './MoodPage'
|
|
13
|
+
import { difference, head, map, range } from 'lodash'
|
|
13
14
|
|
|
14
15
|
const cx = Utils.RatioUtils.convertX
|
|
15
16
|
|
|
@@ -28,6 +29,11 @@ const AddMoodPage = () => {
|
|
|
28
29
|
const navigation = useNavigation()
|
|
29
30
|
const routeParams = useRoute().params as AddMoodPageParams
|
|
30
31
|
const moduleParams = routeParams.moduleParams
|
|
32
|
+
const moodId = useCreation(() => {
|
|
33
|
+
const useIds = map(routeParams.moods, 'id')
|
|
34
|
+
const idRange = range(0, 256)
|
|
35
|
+
return Math.max(head(difference(idRange, useIds)) || 0, 0)
|
|
36
|
+
}, [routeParams.moods])
|
|
31
37
|
const state = useReactive<AddMoodPageState>({
|
|
32
38
|
data: getRecommendMoods(
|
|
33
39
|
routeParams.isStatic,
|
|
@@ -36,16 +42,15 @@ const AddMoodPage = () => {
|
|
|
36
42
|
),
|
|
37
43
|
})
|
|
38
44
|
const recommendMood2SceneUIState = useCallback((recommendMood: RecommendMood) => {
|
|
39
|
-
const id = routeParams.moods.length > 0 ? Math.max(...routeParams.moods.map(m => m.id)) + 1 : 0
|
|
40
45
|
return {
|
|
41
|
-
id:
|
|
46
|
+
id: moodId,
|
|
42
47
|
image: '',
|
|
43
48
|
fanEnable: recommendMood.fanEnable,
|
|
44
49
|
fanSpeed: recommendMood.fanSpeed,
|
|
45
50
|
name: recommendMood.name,
|
|
46
51
|
nodes: recommendMood.moodColorsLineProps?.nodes || [],
|
|
47
52
|
}
|
|
48
|
-
}, [routeParams, routeParams.moods])
|
|
53
|
+
}, [routeParams, routeParams.moods, moodId])
|
|
49
54
|
|
|
50
55
|
return (
|
|
51
56
|
<Page
|
|
@@ -63,13 +68,12 @@ const AddMoodPage = () => {
|
|
|
63
68
|
title={item.name}
|
|
64
69
|
moodColorsLineProps={item.moodColorsLineProps}
|
|
65
70
|
onPress={() => {
|
|
66
|
-
const id = routeParams.moods.length > 0 ? Math.max(...routeParams.moods.map(m => m.id)) + 1 : 0
|
|
67
71
|
if (routeParams.isStatic) {
|
|
68
72
|
toStaticMoodEditorPage(navigation,
|
|
69
73
|
{
|
|
70
74
|
mode: 'add',
|
|
71
75
|
currentMood: index === 0 ? newMood(
|
|
72
|
-
|
|
76
|
+
moodId,
|
|
73
77
|
moduleParams.isSupportColor && moduleParams.isSupportTemperature,
|
|
74
78
|
routeParams.isStatic,
|
|
75
79
|
moduleParams.isSupportColor,
|
|
@@ -83,7 +87,7 @@ const AddMoodPage = () => {
|
|
|
83
87
|
{
|
|
84
88
|
mode: 'add',
|
|
85
89
|
currentMood: index === 0 ? newMood(
|
|
86
|
-
|
|
90
|
+
moodId,
|
|
87
91
|
moduleParams.isSupportColor && moduleParams.isSupportTemperature,
|
|
88
92
|
routeParams.isStatic,
|
|
89
93
|
moduleParams.isSupportColor,
|
|
@@ -10,7 +10,7 @@ import Spacer from '@ledvance/base/src/components/Spacer'
|
|
|
10
10
|
import RecommendMixMoodItem from './RecommendMixMoodItem'
|
|
11
11
|
import { SceneNodeTransitionMode } from '@ledvance/ui-biz-bundle/src/modules/scene/SceneInfo'
|
|
12
12
|
import { ui_biz_routerKey } from '../../../navigation/Routers'
|
|
13
|
-
import { difference,
|
|
13
|
+
import { difference, head, map, range } from 'lodash'
|
|
14
14
|
import { Result } from '@ledvance/base/src/models/modules/Result'
|
|
15
15
|
import { MixMoodPageProps } from './MixMoodPage'
|
|
16
16
|
|
|
@@ -43,9 +43,9 @@ const AddMixMoodPage = () => {
|
|
|
43
43
|
})
|
|
44
44
|
const useIds = map(mixMoods, 'id')
|
|
45
45
|
const idRange = range(0, 256)
|
|
46
|
-
const mainId: number =
|
|
46
|
+
const mainId: number = head(difference(idRange, useIds)) || -1
|
|
47
47
|
useIds.push(mainId)
|
|
48
|
-
const secondlyId: number =
|
|
48
|
+
const secondlyId: number = head(difference(idRange, useIds)) || -1
|
|
49
49
|
return { mainId, secondlyId }
|
|
50
50
|
}, [routeParams.mixMoods])
|
|
51
51
|
const state = useReactive<AddMoodPageState>({
|
|
@@ -67,6 +67,7 @@ export function MixMoodColorsLine(props: { mixSubLight: MixMainLampInfo, colorLi
|
|
|
67
67
|
<View style={styles.gradientItem}>
|
|
68
68
|
<Spacer height={0} width={cx(16)} />
|
|
69
69
|
<MoodColorsLine
|
|
70
|
+
nodeStyle={{ borderColor: '#ccc', borderWidth: 1 }}
|
|
70
71
|
width={cx(264)}
|
|
71
72
|
type={'separate'}
|
|
72
73
|
colors={lightColors} />
|
|
@@ -52,6 +52,7 @@ const MoodItem = (props: MoodItemProps) => {
|
|
|
52
52
|
<Spacer />
|
|
53
53
|
<View style={styles.gradientItem}>
|
|
54
54
|
<MoodColorsLine
|
|
55
|
+
nodeStyle={{ borderColor: '#ccc', borderWidth: 1 }}
|
|
55
56
|
type={mood.nodes[0].transitionMode === SceneNodeTransitionMode.Gradient ? 'gradient' : 'separate'}
|
|
56
57
|
colors={state.colors} />
|
|
57
58
|
</View>
|
|
@@ -255,6 +255,7 @@ function getRGBWDefSceneList(): RemoteSceneInfo[] {
|
|
|
255
255
|
t: 0,
|
|
256
256
|
e: false,
|
|
257
257
|
},
|
|
258
|
+
...defColorSceneList
|
|
258
259
|
]
|
|
259
260
|
}
|
|
260
261
|
|
|
@@ -302,6 +303,7 @@ function getRGBDefSceneList(): RemoteSceneInfo[] {
|
|
|
302
303
|
t: 0,
|
|
303
304
|
e: false,
|
|
304
305
|
},
|
|
306
|
+
...defColorSceneList
|
|
305
307
|
]
|
|
306
308
|
}
|
|
307
309
|
|
|
@@ -349,6 +351,7 @@ function getOnlyRGBDefSceneList(): RemoteSceneInfo[] {
|
|
|
349
351
|
t: 0,
|
|
350
352
|
e: false,
|
|
351
353
|
},
|
|
354
|
+
...defColorSceneList
|
|
352
355
|
]
|
|
353
356
|
}
|
|
354
357
|
|
|
@@ -825,6 +828,219 @@ function getStripLightSceneList(): RemoteSceneInfo[] {
|
|
|
825
828
|
]
|
|
826
829
|
}
|
|
827
830
|
|
|
831
|
+
const defColorSceneList: RemoteSceneInfo[] = [
|
|
832
|
+
{
|
|
833
|
+
n: I18n.getLang('dynamicmoods_forest'),
|
|
834
|
+
i: '074b4b01007802f80226000000004b4b01003303e803e8000000004b4b01007803e8018600000000',
|
|
835
|
+
s: '',
|
|
836
|
+
t: 0,
|
|
837
|
+
e: false,
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
n: I18n.getLang('dynamicmoods_desert'),
|
|
841
|
+
i: '084b4b010022014a0334000000004b4b01001002b203e8000000004b4b01001003e803e800000000',
|
|
842
|
+
s: '',
|
|
843
|
+
t: 0,
|
|
844
|
+
e: false,
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
n: I18n.getLang('dynamicmoods_dreams'),
|
|
848
|
+
i: '094b4b01014b00c803e8000000004b4b0100b4010403a2000000004b4b01001c010e03e800000000',
|
|
849
|
+
s: '',
|
|
850
|
+
t: 0,
|
|
851
|
+
e: false,
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
n: I18n.getLang('dynamicmoods_breeze'),
|
|
855
|
+
i: '0a4b4b01002b03520352000000004b4b010000032a02bc000000004b4b01002703e803e800000000',
|
|
856
|
+
s: '',
|
|
857
|
+
t: 0,
|
|
858
|
+
e: false,
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
n: I18n.getLang('dynamicmoods_waters'),
|
|
862
|
+
i: '0b4b4b0100c303e803e8000000004b4b0100a001f403e8000000004b4b0100f0030c01b800000000',
|
|
863
|
+
s: '',
|
|
864
|
+
t: 0,
|
|
865
|
+
e: false,
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
n: I18n.getLang('dynamicmoods_splash'),
|
|
869
|
+
i: '0c4b4b01003c03e803e8000000004b4b01002703e803e8000000004b4b01001003e803e800000000',
|
|
870
|
+
s: '',
|
|
871
|
+
t: 0,
|
|
872
|
+
e: false,
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
n: I18n.getLang("dynamicmoods_sunrise"),
|
|
876
|
+
i: '0d4b4b01000902d003e8000000004b4b010026012203e8000000004b4b01003303e803e800000000',
|
|
877
|
+
s: '',
|
|
878
|
+
t: 0,
|
|
879
|
+
e: false,
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
n: I18n.getLang('dynamicmoods_wonderland'),
|
|
883
|
+
i: '0e4b4b01003c03e803e8000000004b4b01002703e803e8000000004b4b01001003e803e800000000',
|
|
884
|
+
s: '',
|
|
885
|
+
t: 0,
|
|
886
|
+
e: false,
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
n: I18n.getLang('dynamicmoods_Twilight'),
|
|
890
|
+
i: '0f4b4b01014a024e03e8000000004b4b01002703e803e8000000004b4b0100b403e801f400000000',
|
|
891
|
+
s: '',
|
|
892
|
+
t: 0,
|
|
893
|
+
e: false,
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
n: I18n.getLang('dynamicmoods_symphony'),
|
|
897
|
+
i: '104b4b0100d3034803e8000000004b4b010000000003e8000000004b4b01003303e803e800000000',
|
|
898
|
+
s: '',
|
|
899
|
+
t: 0,
|
|
900
|
+
e: false,
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
n: I18n.getLang('dynamicmoods_sorbet'),
|
|
904
|
+
i: '114b4b01015e00fa03e8000000004b4b010011020803e8000000004b4b01003c03e803e800000000',
|
|
905
|
+
s: '',
|
|
906
|
+
t: 0,
|
|
907
|
+
e: false,
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
n: I18n.getLang('dynamicmoods_mansion'),
|
|
911
|
+
i: '124b4b01012c03e801f4000000004b4b0100b403e803e8000000004b4b01002703e803e800000000',
|
|
912
|
+
s: '',
|
|
913
|
+
t: 0,
|
|
914
|
+
e: false,
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
n: I18n.getLang('dynamicmoods_hour'),
|
|
918
|
+
i: '134b4b01003303e803e8000000004b4b01002103e803e8000000004b4b010026012203e800000000',
|
|
919
|
+
s: '',
|
|
920
|
+
t: 0,
|
|
921
|
+
e: false,
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
n: I18n.getLang('dynamicmoods_isle'),
|
|
925
|
+
i: '144b4b01007803e801f4000000004b4b010092029e0226000000004b4b01005a03e803de00000000',
|
|
926
|
+
s: '',
|
|
927
|
+
t: 0,
|
|
928
|
+
e: false,
|
|
929
|
+
},
|
|
930
|
+
{
|
|
931
|
+
n: I18n.getLang('dynamicmoods_Beat'),
|
|
932
|
+
i: '154b4b0100b403e803e8000000004b4b01012c03e803e8000000004b4b01003c03e803e800000000',
|
|
933
|
+
s: '',
|
|
934
|
+
t: 0,
|
|
935
|
+
e: false,
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
n: I18n.getLang('dynamicmoods_glamour'),
|
|
939
|
+
i: '164b4b01003303e803e8000000004b4b01012c03e801f4000000004b4b01015e00fa03e800000000',
|
|
940
|
+
s: '',
|
|
941
|
+
t: 0,
|
|
942
|
+
e: false,
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
n: I18n.getLang('dynamicmoods_edreams'),
|
|
946
|
+
i: '174b4b01012c03e803e8000000004b4b0100b403e803e8000000004b4b01002703e803e800000000',
|
|
947
|
+
s: '',
|
|
948
|
+
t: 0,
|
|
949
|
+
e: false,
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
n: I18n.getLang('dynamicmoods_sunset'),
|
|
953
|
+
i: '184b4b01001003e803e8000000004b4b01001d02b203e8000000004b4b01002b0352035200000000',
|
|
954
|
+
s: '',
|
|
955
|
+
t: 0,
|
|
956
|
+
e: false,
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
n: I18n.getLang('dynamicmoods_carnival'),
|
|
960
|
+
i: '194b4b01012c03e803e8000000004b4b01002703e803e8000000004b4b01003c03e803e800000000',
|
|
961
|
+
s: '',
|
|
962
|
+
t: 0,
|
|
963
|
+
e: false,
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
n: I18n.getLang('dynamicmoods_serenade'),
|
|
967
|
+
i: '1a4b4b0100f0030c01b8000000004b4b0100b4019a0136000000004b4b0100f0005003d400000000',
|
|
968
|
+
s: '',
|
|
969
|
+
t: 0,
|
|
970
|
+
e: false,
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
n: I18n.getLang('dynamicmoods_glow'),
|
|
974
|
+
i: '1b4b4b01001e03e803e8000000004b4b01003003e803e8000000004b4b010000032003e800000000',
|
|
975
|
+
s: '',
|
|
976
|
+
t: 0,
|
|
977
|
+
e: false,
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
n: I18n.getLang('dynamicmoods_Canopy'),
|
|
981
|
+
i: '1c4b4b01007803e80190000000004b4b010078029e0258000000004b4b01001e029e025800000000',
|
|
982
|
+
s: '',
|
|
983
|
+
t: 0,
|
|
984
|
+
e: false,
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
n: I18n.getLang('dynamicmoods_Burst'),
|
|
988
|
+
i: '1d4b4b01000003e803e8000000004b4b01002703e803e8000000004b4b01003c03e803e8000000004b4b01007803e803e8000000004b4b0100d203e803e8000000004b4b01011103e803e800000000',
|
|
989
|
+
s: '',
|
|
990
|
+
t: 0,
|
|
991
|
+
e: false,
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
n: I18n.getLang('dynamicmoods_Lights'),
|
|
995
|
+
i: '1e4b4b01012c03e803e8000000004b4b01003c03e803e8000000004b4b0100b403e803e8000000004b4b01001803e803e800000000',
|
|
996
|
+
s: '',
|
|
997
|
+
t: 0,
|
|
998
|
+
e: false,
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
n: I18n.getLang('dynamicmoods_Dreamscape'),
|
|
1002
|
+
i: '1f4b4b01012c00c803e8000000004b4b0100f000c803e8000000004b4b01003c00c803e8000000004b4b0100b400c803e800000000',
|
|
1003
|
+
s: '',
|
|
1004
|
+
t: 0,
|
|
1005
|
+
e: false,
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
n: I18n.getLang('dynamicmoods_NLights'),
|
|
1009
|
+
i: '204b4b01009603e803e8000000004b4b0100d203e803e8000000004b4b01010e03e803e800000000',
|
|
1010
|
+
s: '',
|
|
1011
|
+
t: 0,
|
|
1012
|
+
e: false,
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
n: I18n.getLang('dynamicmoods_paradise'),
|
|
1016
|
+
i: '214b4b010140025803e8000000004b4b01001e032003e8000000004b4b01003c025803e800000000',
|
|
1017
|
+
s: '',
|
|
1018
|
+
t: 0,
|
|
1019
|
+
e: false,
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
n: I18n.getLang('dynamicmoods_ice'),
|
|
1023
|
+
i: '224b4b01001803e803e8000000004b4b010000000003e8000000004b4b0100d803e803e800000000',
|
|
1024
|
+
s: '',
|
|
1025
|
+
t: 0,
|
|
1026
|
+
e: false,
|
|
1027
|
+
},
|
|
1028
|
+
{
|
|
1029
|
+
n: I18n.getLang('dynamicmoods_voyage'),
|
|
1030
|
+
i: '234b4b0100f003e80190000000004b4b01010e03e80190000000004b4b010000000003e800000000',
|
|
1031
|
+
s: '',
|
|
1032
|
+
t: 0,
|
|
1033
|
+
e: false,
|
|
1034
|
+
},
|
|
1035
|
+
{
|
|
1036
|
+
n: I18n.getLang('dynamicmoods_wave'),
|
|
1037
|
+
i: '244b4b0100d203e803e8000000004b4b0100b403e803e8000000004b4b01009603e803e800000000',
|
|
1038
|
+
s: '',
|
|
1039
|
+
t: 0,
|
|
1040
|
+
e: false,
|
|
1041
|
+
},
|
|
1042
|
+
]
|
|
1043
|
+
|
|
828
1044
|
export const MAXSCENE = 8
|
|
829
1045
|
|
|
830
1046
|
export const AddScene = {
|
|
@@ -59,7 +59,7 @@ const TimeScheduleEditPage = () => {
|
|
|
59
59
|
isManual: true,
|
|
60
60
|
singleActions: {
|
|
61
61
|
enable: true, // colorLightSwitch
|
|
62
|
-
whiteLightSwitch:
|
|
62
|
+
whiteLightSwitch: true,
|
|
63
63
|
isColor: true,
|
|
64
64
|
h: 0,
|
|
65
65
|
s: 100,
|
|
@@ -114,6 +114,7 @@ const TimeScheduleEditPage = () => {
|
|
|
114
114
|
}
|
|
115
115
|
state.isManual = lightData.isManual
|
|
116
116
|
state.actionScene = lightData.actionScene
|
|
117
|
+
|
|
117
118
|
return
|
|
118
119
|
}
|
|
119
120
|
|
|
@@ -629,11 +630,11 @@ const TimeScheduleEditPage = () => {
|
|
|
629
630
|
style={styles.leftTitle}>{I18n.getLang('motion_detection_add_time_schedule_actions_text1')}</Text>
|
|
630
631
|
</View>
|
|
631
632
|
</View>
|
|
632
|
-
<View style={{marginLeft: cx(16)}}>
|
|
633
|
+
<View style={{marginLeft: cx(16), flex: 1}}>
|
|
633
634
|
{!!state.selectedSkill.length && <>
|
|
634
635
|
{(!!state.selectedSkill.filter(skill => skill.enable).length) && <>
|
|
635
636
|
<Text style={{ marginLeft: cx(5) }}>{I18n.getLang('feature_summary_action_txt_1')}</Text>
|
|
636
|
-
<View style={{ flexDirection: 'row' }}>{
|
|
637
|
+
<View style={{ flexDirection: 'row',flexWrap: 'wrap' }}>{
|
|
637
638
|
state.selectedSkill.filter(skill => skill.enable).map(item => (
|
|
638
639
|
<View style={[styles.summaryRight, { marginLeft: cx(5), marginBottom: cx(5) }]}
|
|
639
640
|
key={item.dpId}>
|
|
@@ -646,7 +647,7 @@ const TimeScheduleEditPage = () => {
|
|
|
646
647
|
|
|
647
648
|
{(!!state.selectedSkill.filter(skill => !skill.enable).length) && <>
|
|
648
649
|
<Text style={{ marginLeft: cx(5) }}>{I18n.getLang('feature_summary_action_txt_2')}</Text>
|
|
649
|
-
<View style={{ flexDirection: 'row' }}>{
|
|
650
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap' }}>{
|
|
650
651
|
state.selectedSkill.filter(skill => !skill.enable).map(item => (
|
|
651
652
|
<View style={[styles.summaryRight, { marginLeft: cx(5), marginBottom: cx(5) }]}
|
|
652
653
|
key={item.dpId}>
|
|
@@ -71,7 +71,7 @@ const TimeSchedulePage = () => {
|
|
|
71
71
|
|
|
72
72
|
const [, setTimeSchedule] = useTimeSchedule()
|
|
73
73
|
|
|
74
|
-
useEffect(() => {
|
|
74
|
+
useEffect(() => {
|
|
75
75
|
getTimerScheduleList().then()
|
|
76
76
|
}, [])
|
|
77
77
|
|
|
@@ -238,7 +238,7 @@ const TimeSchedulePage = () => {
|
|
|
238
238
|
<Text>{I18n.getLang('motion_detection_time_schedule_notifications_warning_text')}</Text>
|
|
239
239
|
</View>}
|
|
240
240
|
{showTags() && <View style={styles.categoryList}>
|
|
241
|
-
{Object.keys(state.filterTags).map(tag => {
|
|
241
|
+
{(props.isCeilingLight ? [...Object.keys(state.filterTags)].reverse() : Object.keys(state.filterTags)).map(tag => {
|
|
242
242
|
return <Tag
|
|
243
243
|
key={tag}
|
|
244
244
|
text={getLabelByDp(tag)}
|