@ledvance/ui-biz-bundle 1.1.69 → 1.1.71

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.
Files changed (222) hide show
  1. package/.babelrc +31 -31
  2. package/.eslintignore +5 -5
  3. package/.eslintrc.js +27 -27
  4. package/.prettierrc.js +1 -1
  5. package/.versionrc +5 -5
  6. package/package.json +74 -74
  7. package/rn-cli.config.js +8 -8
  8. package/src/hooks/DeviceDpStateHooks.d.ts +14 -14
  9. package/src/hooks/DeviceDpStateHooks.ts +50 -50
  10. package/src/modules/biorhythm/BiorhythmActions.d.ts +8 -8
  11. package/src/modules/biorhythm/BiorhythmActions.ts +324 -324
  12. package/src/modules/biorhythm/BiorhythmBean.d.ts +58 -58
  13. package/src/modules/biorhythm/BiorhythmBean.ts +230 -230
  14. package/src/modules/biorhythm/BiorhythmEditPage.d.ts +14 -14
  15. package/src/modules/biorhythm/BiorhythmEditPage.tsx +324 -324
  16. package/src/modules/biorhythm/BiorhythmPage.d.ts +10 -10
  17. package/src/modules/biorhythm/BiorhythmPage.tsx +796 -796
  18. package/src/modules/biorhythm/IconSelect.d.ts +2 -2
  19. package/src/modules/biorhythm/IconSelect.tsx +81 -81
  20. package/src/modules/biorhythm/Router.ts +34 -34
  21. package/src/modules/biorhythm/circular/ItemIcon.d.ts +22 -22
  22. package/src/modules/biorhythm/circular/ItemIcon.tsx +172 -172
  23. package/src/modules/biorhythm/circular/Progress.d.ts +24 -24
  24. package/src/modules/biorhythm/circular/Progress.tsx +411 -411
  25. package/src/modules/biorhythm/circular/TimeCircular.d.ts +11 -11
  26. package/src/modules/biorhythm/circular/TimeCircular.tsx +70 -70
  27. package/src/modules/biorhythm/iconListData.d.ts +7 -7
  28. package/src/modules/biorhythm/iconListData.ts +29 -29
  29. package/src/modules/biorhythm/pIdList.d.ts +2 -2
  30. package/src/modules/biorhythm/pIdList.ts +35 -35
  31. package/src/modules/biorhythm/res/BiologicalRes.d.ts +43 -43
  32. package/src/modules/biorhythm/res/BiologicalRes.ts +41 -41
  33. package/src/modules/config/ldvConfig.d.ts +2 -2
  34. package/src/modules/config/ldvConfig.tsx +18 -18
  35. package/src/modules/fixedTime/FixedTimeActions.ts +173 -173
  36. package/src/modules/fixedTime/FixedTimeDetailPage.tsx +372 -372
  37. package/src/modules/fixedTime/FixedTimePage.tsx +213 -213
  38. package/src/modules/fixedTime/Router.ts +26 -26
  39. package/src/modules/flags/FlagActions.ts +267 -267
  40. package/src/modules/flags/FlagEditPage.tsx +441 -441
  41. package/src/modules/flags/FlagInfo.tsx +563 -563
  42. package/src/modules/flags/FlagItem.tsx +90 -90
  43. package/src/modules/flags/FlagPage.tsx +277 -277
  44. package/src/modules/flags/Router.ts +25 -25
  45. package/src/modules/history/HistoryPage.d.ts +2 -2
  46. package/src/modules/history/HistoryPage.tsx +261 -261
  47. package/src/modules/history/Router.ts +16 -16
  48. package/src/modules/history/SwitchHistoryPageActions.d.ts +14 -14
  49. package/src/modules/history/SwitchHistoryPageActions.ts +76 -76
  50. package/src/modules/mood/AddMoodPage.d.ts +10 -10
  51. package/src/modules/mood/AddMoodPage.tsx +792 -792
  52. package/src/modules/mood/DynamicMoodEditorPage.d.ts +6 -6
  53. package/src/modules/mood/DynamicMoodEditorPage.tsx +561 -561
  54. package/src/modules/mood/FantasyMood.tsx +176 -176
  55. package/src/modules/mood/FantasyMoodEditPage.tsx +582 -582
  56. package/src/modules/mood/FantasyMoodItem.tsx +104 -104
  57. package/src/modules/mood/FantasyRouter.ts +35 -35
  58. package/src/modules/mood/MixMood/AddMixMoodPage.tsx +247 -247
  59. package/src/modules/mood/MixMood/MixMoodActions.ts +128 -128
  60. package/src/modules/mood/MixMood/MixMoodEditPage.tsx +721 -721
  61. package/src/modules/mood/MixMood/MixMoodItem.tsx +134 -134
  62. package/src/modules/mood/MixMood/MixMoodPage.tsx +326 -326
  63. package/src/modules/mood/MixMood/MixSceneBeans.ts +364 -364
  64. package/src/modules/mood/MixMood/RecommendMixMoodItem.tsx +69 -69
  65. package/src/modules/mood/MixMood/Router.ts +44 -44
  66. package/src/modules/mood/MoodItem.d.ts +11 -11
  67. package/src/modules/mood/MoodItem.tsx +114 -114
  68. package/src/modules/mood/MoodPage.d.ts +16 -16
  69. package/src/modules/mood/MoodPage.tsx +296 -296
  70. package/src/modules/mood/RecommendMoodItem.d.ts +13 -13
  71. package/src/modules/mood/RecommendMoodItem.tsx +74 -74
  72. package/src/modules/mood/Router.ts +53 -53
  73. package/src/modules/mood/StaticMoodEditorPage.d.ts +16 -16
  74. package/src/modules/mood/StaticMoodEditorPage.tsx +320 -320
  75. package/src/modules/mood/tools.d.ts +3 -3
  76. package/src/modules/mood/tools.ts +11 -11
  77. package/src/modules/music/MusicDataBean.d.ts +47 -47
  78. package/src/modules/music/MusicDataBean.ts +167 -167
  79. package/src/modules/music/MusicManager.d.ts +27 -27
  80. package/src/modules/music/MusicManager.ts +207 -207
  81. package/src/modules/music/MusicPage.d.ts +10 -10
  82. package/src/modules/music/MusicPage.tsx +347 -347
  83. package/src/modules/music/MusicPageActions.d.ts +35 -35
  84. package/src/modules/music/MusicPageActions.ts +317 -317
  85. package/src/modules/music/Router.ts +16 -16
  86. package/src/modules/music/SelecetGenre.d.ts +7 -7
  87. package/src/modules/music/SelecetGenre.tsx +63 -63
  88. package/src/modules/music/color.d.ts +2 -2
  89. package/src/modules/music/color.ts +73 -73
  90. package/src/modules/music/res/index.d.ts +10 -10
  91. package/src/modules/music/res/index.ts +9 -9
  92. package/src/modules/powerOnBehavior/PowerOnBehaviorActions.ts +11 -11
  93. package/src/modules/powerOnBehavior/PowerOnBehaviorPage.tsx +173 -173
  94. package/src/modules/powerOnBehavior/Router.ts +16 -16
  95. package/src/modules/randomTime/RandomTimeActions.ts +160 -160
  96. package/src/modules/randomTime/RandomTimeDetailPage.tsx +337 -337
  97. package/src/modules/randomTime/RandomTimePage.tsx +214 -214
  98. package/src/modules/randomTime/Router.ts +25 -25
  99. package/src/modules/randomTime/Summary.tsx +122 -122
  100. package/src/modules/scene/SceneAction.d.ts +13 -13
  101. package/src/modules/scene/SceneAction.ts +473 -473
  102. package/src/modules/scene/SceneDetailPage.d.ts +1 -1
  103. package/src/modules/scene/SceneDetailPage.tsx +421 -421
  104. package/src/modules/scene/SceneInfo.d.ts +72 -72
  105. package/src/modules/scene/SceneInfo.ts +1059 -1059
  106. package/src/modules/scene/ScenePage.d.ts +7 -7
  107. package/src/modules/scene/ScenePage.tsx +147 -147
  108. package/src/modules/select/SelectPage.d.ts +12 -12
  109. package/src/modules/select/SelectPage.tsx +137 -137
  110. package/src/modules/sleepWakeup/DeviceState.d.ts +9 -9
  111. package/src/modules/sleepWakeup/DeviceState.tsx +99 -99
  112. package/src/modules/sleepWakeup/LdvScheduleItem.d.ts +15 -15
  113. package/src/modules/sleepWakeup/LdvScheduleItem.tsx +176 -176
  114. package/src/modules/sleepWakeup/Router.ts +25 -25
  115. package/src/modules/sleepWakeup/SleepWakeUpActions.d.ts +2 -2
  116. package/src/modules/sleepWakeup/SleepWakeUpActions.ts +180 -180
  117. package/src/modules/sleepWakeup/SleepWakeUpDetailPage.d.ts +2 -2
  118. package/src/modules/sleepWakeup/SleepWakeUpDetailPage.tsx +616 -616
  119. package/src/modules/sleepWakeup/SleepWakeUpPage.d.ts +13 -13
  120. package/src/modules/sleepWakeup/SleepWakeUpPage.tsx +424 -424
  121. package/src/modules/sleepWakeup/utils.d.ts +44 -44
  122. package/src/modules/sleepWakeup/utils.ts +253 -253
  123. package/src/modules/timeSchedule/DeviceState.d.ts +17 -17
  124. package/src/modules/timeSchedule/DeviceState.tsx +94 -94
  125. package/src/modules/timeSchedule/LdvScheduleItem.d.ts +15 -15
  126. package/src/modules/timeSchedule/LdvScheduleItem.tsx +130 -130
  127. package/src/modules/timeSchedule/ManualSetting.d.ts +14 -14
  128. package/src/modules/timeSchedule/ManualSetting.tsx +219 -219
  129. package/src/modules/timeSchedule/MoodSetting.d.ts +11 -11
  130. package/src/modules/timeSchedule/MoodSetting.tsx +228 -228
  131. package/src/modules/timeSchedule/Router.ts +25 -25
  132. package/src/modules/timeSchedule/ScheduleScene.d.ts +6 -6
  133. package/src/modules/timeSchedule/ScheduleScene.tsx +144 -144
  134. package/src/modules/timeSchedule/SingleLightView.d.ts +12 -12
  135. package/src/modules/timeSchedule/SingleLightView.tsx +175 -175
  136. package/src/modules/timeSchedule/TimeScheduleBean.d.ts +14 -14
  137. package/src/modules/timeSchedule/TimeScheduleBean.ts +18 -18
  138. package/src/modules/timeSchedule/TimeScheduleEditpage.d.ts +6 -6
  139. package/src/modules/timeSchedule/TimeScheduleEditpage.tsx +765 -765
  140. package/src/modules/timeSchedule/TimeSchedulePage.d.ts +13 -13
  141. package/src/modules/timeSchedule/TimeSchedulePage.tsx +358 -358
  142. package/src/modules/timeSchedule/components/ColorList.ts +23 -23
  143. package/src/modules/timeSchedule/components/LampSwitchCard.tsx +106 -106
  144. package/src/modules/timeSchedule/mix/MixLightActions.d.ts +3 -3
  145. package/src/modules/timeSchedule/mix/MixLightActions.ts +49 -49
  146. package/src/modules/timeSchedule/mix/MixLightBean.d.ts +10 -10
  147. package/src/modules/timeSchedule/mix/MixLightBean.ts +9 -9
  148. package/src/modules/timeSchedule/mix/MixLightView.d.ts +7 -7
  149. package/src/modules/timeSchedule/mix/MixLightView.tsx +197 -197
  150. package/src/modules/timeSchedule/utils.d.ts +1 -1
  151. package/src/modules/timeSchedule/utils.ts +6 -6
  152. package/src/modules/timer/Router.ts +16 -16
  153. package/src/modules/timer/TimerPage.d.ts +11 -11
  154. package/src/modules/timer/TimerPage.tsx +384 -384
  155. package/src/modules/timer/TimerPageAction.d.ts +22 -22
  156. package/src/modules/timer/TimerPageAction.ts +131 -131
  157. package/src/navigation/Routers.d.ts +15 -15
  158. package/src/navigation/Routers.ts +46 -46
  159. package/src/navigation/tools.d.ts +9 -9
  160. package/src/navigation/tools.ts +21 -21
  161. package/src/newModules/biorhythm/BiorhythmActions.ts +62 -11
  162. package/src/newModules/biorhythm/BiorhythmPage.tsx +1 -4
  163. package/src/newModules/childLock/ChildLockPage.tsx +97 -97
  164. package/src/newModules/childLock/Router.ts +16 -16
  165. package/src/newModules/energyConsumption/EnergyConsumptionActions.ts +23 -23
  166. package/src/newModules/energyConsumption/EnergyConsumptionChart.tsx +84 -84
  167. package/src/newModules/energyConsumption/EnergyConsumptionDetail.tsx +322 -322
  168. package/src/newModules/energyConsumption/EnergyConsumptionPage.tsx +393 -393
  169. package/src/newModules/energyConsumption/Router.ts +34 -34
  170. package/src/newModules/energyConsumption/co2Data.ts +23655 -23655
  171. package/src/newModules/energyConsumption/component/BarChart.tsx +93 -93
  172. package/src/newModules/energyConsumption/component/EnergyModal.tsx +284 -284
  173. package/src/newModules/energyConsumption/component/Overview.tsx +118 -118
  174. package/src/newModules/fixedTime/FixedTimeActions.ts +241 -241
  175. package/src/newModules/fixedTime/FixedTimeDetailPage.tsx +345 -345
  176. package/src/newModules/fixedTime/FixedTimePage.tsx +302 -302
  177. package/src/newModules/fixedTime/Router.ts +25 -25
  178. package/src/newModules/lightMode/LightModePage.tsx +204 -204
  179. package/src/newModules/lightMode/Router.ts +16 -16
  180. package/src/newModules/mood/Interface.ts +5 -0
  181. package/src/newModules/mood/MixDynamicMoodEditor.tsx +8 -5
  182. package/src/newModules/mood/MoodActions.ts +32 -20
  183. package/src/newModules/mood/MoodItem.tsx +3 -3
  184. package/src/newModules/mood/MoodPage.tsx +31 -15
  185. package/src/newModules/mood/MoodParse.ts +5 -6
  186. package/src/newModules/mood/RecommendMoodItem.tsx +3 -3
  187. package/src/newModules/mood/Router.ts +9 -0
  188. package/src/newModules/overchargeSwitch/OverchargeSwitchPage.tsx +96 -96
  189. package/src/newModules/overchargeSwitch/Router.ts +16 -16
  190. package/src/newModules/powerOnBehavior/LightBehaviorPage.tsx +266 -266
  191. package/src/newModules/powerOnBehavior/PlugBehaviorPage.tsx +173 -173
  192. package/src/newModules/powerOnBehavior/PowerOnBehaviorActions.ts +106 -106
  193. package/src/newModules/powerOnBehavior/Router.ts +27 -27
  194. package/src/newModules/randomTime/RandomTimeActions.ts +238 -238
  195. package/src/newModules/randomTime/RandomTimeDetailPage.tsx +325 -325
  196. package/src/newModules/randomTime/RandomTimePage.tsx +299 -299
  197. package/src/newModules/randomTime/Router.ts +25 -25
  198. package/src/newModules/randomTime/Summary.tsx +116 -116
  199. package/src/newModules/remoteControl/RemoteControlActions.ts +5 -5
  200. package/src/newModules/remoteControl/RemoteControlPage.tsx +51 -51
  201. package/src/newModules/remoteControl/Router.ts +15 -15
  202. package/src/newModules/select/Route.ts +16 -16
  203. package/src/newModules/select/SelectPage.d.ts +12 -12
  204. package/src/newModules/select/SelectPage.tsx +137 -137
  205. package/src/newModules/sleepWakeUp/Interface.ts +69 -69
  206. package/src/newModules/sleepWakeUp/Router.ts +24 -24
  207. package/src/newModules/sleepWakeUp/SleepWakeUpActions.ts +317 -317
  208. package/src/newModules/sleepWakeUp/SleepWakeUpDetailPage.tsx +661 -661
  209. package/src/newModules/sleepWakeUp/SleepWakeUpPage.tsx +455 -455
  210. package/src/newModules/sleepWakeUp/utils.ts +253 -253
  211. package/src/newModules/swithInching/Router.ts +16 -16
  212. package/src/newModules/swithInching/SwithInching.tsx +231 -231
  213. package/src/newModules/swithInching/SwithInchingAction.ts +55 -55
  214. package/src/newModules/swithInching/pickerView.tsx +91 -91
  215. package/src/newModules/timeSchedule/Interface.ts +142 -142
  216. package/src/newModules/timeSchedule/Router.ts +25 -25
  217. package/src/newModules/timeSchedule/TimeScheduleActions.ts +53 -53
  218. package/src/newModules/timeSchedule/TimeScheduleDetailPage.tsx +648 -648
  219. package/src/newModules/timeSchedule/TimeSchedulePage.tsx +253 -253
  220. package/src/newModules/timeSchedule/components/ManuaSettings.tsx +460 -460
  221. package/src/newModules/timeSchedule/components/ScheduleCard.tsx +125 -125
  222. package/tsconfig.json +50 -50
@@ -1,204 +1,204 @@
1
- import React, { PropsWithChildren } from 'react'
2
- import { Image, ScrollView, StyleSheet, Text, TouchableOpacity, View, ViewProps } from 'react-native'
3
- import Page from '@ledvance/base/src/components/Page'
4
- import {useDeviceInfo, useDp} from '@ledvance/base/src/models/modules/NativePropsSlice'
5
- import I18n from '@ledvance/base/src/i18n'
6
- import { Utils } from 'tuya-panel-kit'
7
- import Spacer from '@ledvance/base/src/components/Spacer'
8
- import Card from '@ledvance/base/src/components/Card'
9
- import res from '@ledvance/base/src/res'
10
- import { useReactive, useUpdateEffect } from 'ahooks'
11
- import { useParams } from '@ledvance/base/src/hooks/Hooks'
12
- import {Result} from "@ledvance/base/src/models/modules/Result";
13
-
14
- const { convertX: cx } = Utils.RatioUtils
15
-
16
- const LIGHT_MODE_RELAY = 'relay'
17
- const LIGHT_MODE_POS = 'pos'
18
- const LIGHT_MODE_OFF = 'off'
19
- const LIGHT_MODE_ON = 'on'
20
-
21
- export interface LightModePageParams {
22
- lightModeCode: string
23
- }
24
-
25
- type LightMode = 'relay' | 'pos' | 'off' | 'on'
26
-
27
- export const useLightMode = (code: string): [LightMode, (v: LightMode) => Promise<Result<any>>] => {
28
- return useDp(code)
29
- }
30
-
31
- const LightModePage = () => {
32
- const params = useParams<LightModePageParams>()
33
- const deviceInfo = useDeviceInfo()
34
- const [lightMode, setLightMode] = useLightMode(params.lightModeCode)
35
-
36
- const state = useReactive({
37
- lightMode: lightMode,
38
- loading: false,
39
- })
40
-
41
- useUpdateEffect(() => {
42
- state.lightMode = lightMode
43
- }, [lightMode])
44
-
45
- return (
46
- <Page
47
- backText={deviceInfo.name}
48
- headlineText={I18n.getLang('matterplug_LED')}
49
- loading={state.loading}>
50
- <ScrollView style={styles.root} nestedScrollEnabled={true}>
51
- <Text style={styles.desc}>
52
- {I18n.getLang('matterplug_description')}
53
- </Text>
54
- <Spacer />
55
- <View style={styles.modeSelectGroup}>
56
- <Spacer height={cx(8)} />
57
- <Text style={styles.modeTip}>
58
- {I18n.getLang('matterplug_heading')}
59
- </Text>
60
- <Spacer height={cx(8)} />
61
- <Card style={styles.modeSelectCard}>
62
- <Spacer height={cx(12)} />
63
- <LightModeItem
64
- enable={state.lightMode === LIGHT_MODE_RELAY}
65
- title={I18n.getLang('matterplug_option1title')}
66
- content={I18n.getLang('matterplug_option1description')}
67
- onPress={async () => {
68
- state.lightMode = LIGHT_MODE_RELAY
69
- await setLightMode(state.lightMode)
70
- }} />
71
- <View style={styles.line} />
72
- <Spacer height={cx(8)} />
73
- <LightModeItem
74
- enable={state.lightMode === LIGHT_MODE_POS}
75
- title={I18n.getLang('matterplug_option2title')}
76
- content={I18n.getLang('matterplug_option2description')}
77
- onPress={async () => {
78
- state.lightMode = LIGHT_MODE_POS
79
- await setLightMode(state.lightMode)
80
- }} />
81
- <View style={styles.line} />
82
- <Spacer height={cx(8)} />
83
- <LightModeItem
84
- enable={state.lightMode === LIGHT_MODE_OFF}
85
- title={I18n.getLang('matterplug_option3title')}
86
- content={I18n.getLang('matterplug_option3description')}
87
- onPress={async () => {
88
- state.lightMode = LIGHT_MODE_OFF
89
- await setLightMode(state.lightMode)
90
- }} />
91
- <Spacer height={cx(8)} />
92
- <View style={styles.line} />
93
- <LightModeItem
94
- enable={state.lightMode === LIGHT_MODE_ON}
95
- title={I18n.getLang('matterplug_option4title')}
96
- content={I18n.getLang('matterplug_option4description')}
97
- onPress={async () => {
98
- state.lightMode = LIGHT_MODE_ON
99
- await setLightMode(state.lightMode)
100
- }} />
101
- <Spacer height={cx(4)} />
102
- </Card>
103
- <Spacer height={cx(8)} />
104
- </View>
105
- </ScrollView>
106
- </Page>
107
- )
108
- }
109
-
110
- interface LightModeItemProps extends PropsWithChildren<ViewProps> {
111
- onPress: () => void
112
- title: string
113
- content: string
114
- enable: boolean
115
- }
116
-
117
- function LightModeItem(props: LightModeItemProps) {
118
- return (
119
- <TouchableOpacity onPress={props.onPress}>
120
- <View style={styles.itemRoot}>
121
- <View style={styles.itemTextGroup}>
122
- <Text style={styles.itemTitle}>{props.title}</Text>
123
- <Spacer height={cx(4)} />
124
- <Text style={styles.itemContent}>{props.content}</Text>
125
- </View>
126
- <Image
127
- source={{ uri: res.ic_check }}
128
- style={[
129
- styles.itemCheckedIcon,
130
- {
131
- display: props.enable ? 'flex' : 'none',
132
- },
133
- ]} />
134
- </View>
135
- </TouchableOpacity>
136
- )
137
- }
138
-
139
- const styles = StyleSheet.create({
140
- root: {
141
- flex: 1,
142
- },
143
- desc: {
144
- marginHorizontal: cx(24),
145
- color: '#000',
146
- fontSize: cx(14),
147
- fontWeight: 'bold',
148
- fontFamily: 'helvetica_neue_lt_std_bd',
149
- },
150
- tipText: {
151
- marginHorizontal: cx(24),
152
- color: '#000',
153
- fontSize: cx(14),
154
- fontFamily: 'helvetica_neue_lt_std_roman',
155
- },
156
- modeSelectGroup: {
157
- marginHorizontal: cx(24),
158
- backgroundColor: '#f6f6f6',
159
- borderRadius: cx(4),
160
- },
161
- modeTip: {
162
- marginHorizontal: cx(8),
163
- color: '#000',
164
- fontSize: cx(14),
165
- fontWeight: 'bold',
166
- fontFamily: 'helvetica_neue_lt_std_bd',
167
- },
168
- modeSelectCard: {
169
- marginHorizontal: cx(8),
170
- },
171
- line: {
172
- height: cx(1),
173
- marginHorizontal: cx(12),
174
- backgroundColor: '#3C3C435B',
175
- },
176
- itemRoot: {
177
- flexDirection: 'row',
178
- alignItems: 'center',
179
- paddingHorizontal: cx(12),
180
- paddingBottom: cx(8),
181
- },
182
- itemTextGroup: {
183
- flex: 1,
184
- marginEnd: cx(12),
185
- justifyContent: 'center',
186
- },
187
- itemTitle: {
188
- color: '#000',
189
- fontSize: cx(14),
190
- fontFamily: 'helvetica_neue_lt_std_roman',
191
- },
192
- itemContent: {
193
- color: '#666',
194
- fontSize: cx(14),
195
- fontFamily: 'helvetica_neue_lt_std_roman',
196
- },
197
- itemCheckedIcon: {
198
- width: cx(32),
199
- height: cx(32),
200
- marginEnd: cx(4),
201
- },
202
- })
203
-
204
- export default LightModePage
1
+ import React, { PropsWithChildren } from 'react'
2
+ import { Image, ScrollView, StyleSheet, Text, TouchableOpacity, View, ViewProps } from 'react-native'
3
+ import Page from '@ledvance/base/src/components/Page'
4
+ import {useDeviceInfo, useDp} from '@ledvance/base/src/models/modules/NativePropsSlice'
5
+ import I18n from '@ledvance/base/src/i18n'
6
+ import { Utils } from 'tuya-panel-kit'
7
+ import Spacer from '@ledvance/base/src/components/Spacer'
8
+ import Card from '@ledvance/base/src/components/Card'
9
+ import res from '@ledvance/base/src/res'
10
+ import { useReactive, useUpdateEffect } from 'ahooks'
11
+ import { useParams } from '@ledvance/base/src/hooks/Hooks'
12
+ import {Result} from "@ledvance/base/src/models/modules/Result";
13
+
14
+ const { convertX: cx } = Utils.RatioUtils
15
+
16
+ const LIGHT_MODE_RELAY = 'relay'
17
+ const LIGHT_MODE_POS = 'pos'
18
+ const LIGHT_MODE_OFF = 'off'
19
+ const LIGHT_MODE_ON = 'on'
20
+
21
+ export interface LightModePageParams {
22
+ lightModeCode: string
23
+ }
24
+
25
+ type LightMode = 'relay' | 'pos' | 'off' | 'on'
26
+
27
+ export const useLightMode = (code: string): [LightMode, (v: LightMode) => Promise<Result<any>>] => {
28
+ return useDp(code)
29
+ }
30
+
31
+ const LightModePage = () => {
32
+ const params = useParams<LightModePageParams>()
33
+ const deviceInfo = useDeviceInfo()
34
+ const [lightMode, setLightMode] = useLightMode(params.lightModeCode)
35
+
36
+ const state = useReactive({
37
+ lightMode: lightMode,
38
+ loading: false,
39
+ })
40
+
41
+ useUpdateEffect(() => {
42
+ state.lightMode = lightMode
43
+ }, [lightMode])
44
+
45
+ return (
46
+ <Page
47
+ backText={deviceInfo.name}
48
+ headlineText={I18n.getLang('matterplug_LED')}
49
+ loading={state.loading}>
50
+ <ScrollView style={styles.root} nestedScrollEnabled={true}>
51
+ <Text style={styles.desc}>
52
+ {I18n.getLang('matterplug_description')}
53
+ </Text>
54
+ <Spacer />
55
+ <View style={styles.modeSelectGroup}>
56
+ <Spacer height={cx(8)} />
57
+ <Text style={styles.modeTip}>
58
+ {I18n.getLang('matterplug_heading')}
59
+ </Text>
60
+ <Spacer height={cx(8)} />
61
+ <Card style={styles.modeSelectCard}>
62
+ <Spacer height={cx(12)} />
63
+ <LightModeItem
64
+ enable={state.lightMode === LIGHT_MODE_RELAY}
65
+ title={I18n.getLang('matterplug_option1title')}
66
+ content={I18n.getLang('matterplug_option1description')}
67
+ onPress={async () => {
68
+ state.lightMode = LIGHT_MODE_RELAY
69
+ await setLightMode(state.lightMode)
70
+ }} />
71
+ <View style={styles.line} />
72
+ <Spacer height={cx(8)} />
73
+ <LightModeItem
74
+ enable={state.lightMode === LIGHT_MODE_POS}
75
+ title={I18n.getLang('matterplug_option2title')}
76
+ content={I18n.getLang('matterplug_option2description')}
77
+ onPress={async () => {
78
+ state.lightMode = LIGHT_MODE_POS
79
+ await setLightMode(state.lightMode)
80
+ }} />
81
+ <View style={styles.line} />
82
+ <Spacer height={cx(8)} />
83
+ <LightModeItem
84
+ enable={state.lightMode === LIGHT_MODE_OFF}
85
+ title={I18n.getLang('matterplug_option3title')}
86
+ content={I18n.getLang('matterplug_option3description')}
87
+ onPress={async () => {
88
+ state.lightMode = LIGHT_MODE_OFF
89
+ await setLightMode(state.lightMode)
90
+ }} />
91
+ <Spacer height={cx(8)} />
92
+ <View style={styles.line} />
93
+ <LightModeItem
94
+ enable={state.lightMode === LIGHT_MODE_ON}
95
+ title={I18n.getLang('matterplug_option4title')}
96
+ content={I18n.getLang('matterplug_option4description')}
97
+ onPress={async () => {
98
+ state.lightMode = LIGHT_MODE_ON
99
+ await setLightMode(state.lightMode)
100
+ }} />
101
+ <Spacer height={cx(4)} />
102
+ </Card>
103
+ <Spacer height={cx(8)} />
104
+ </View>
105
+ </ScrollView>
106
+ </Page>
107
+ )
108
+ }
109
+
110
+ interface LightModeItemProps extends PropsWithChildren<ViewProps> {
111
+ onPress: () => void
112
+ title: string
113
+ content: string
114
+ enable: boolean
115
+ }
116
+
117
+ function LightModeItem(props: LightModeItemProps) {
118
+ return (
119
+ <TouchableOpacity onPress={props.onPress}>
120
+ <View style={styles.itemRoot}>
121
+ <View style={styles.itemTextGroup}>
122
+ <Text style={styles.itemTitle}>{props.title}</Text>
123
+ <Spacer height={cx(4)} />
124
+ <Text style={styles.itemContent}>{props.content}</Text>
125
+ </View>
126
+ <Image
127
+ source={{ uri: res.ic_check }}
128
+ style={[
129
+ styles.itemCheckedIcon,
130
+ {
131
+ display: props.enable ? 'flex' : 'none',
132
+ },
133
+ ]} />
134
+ </View>
135
+ </TouchableOpacity>
136
+ )
137
+ }
138
+
139
+ const styles = StyleSheet.create({
140
+ root: {
141
+ flex: 1,
142
+ },
143
+ desc: {
144
+ marginHorizontal: cx(24),
145
+ color: '#000',
146
+ fontSize: cx(14),
147
+ fontWeight: 'bold',
148
+ fontFamily: 'helvetica_neue_lt_std_bd',
149
+ },
150
+ tipText: {
151
+ marginHorizontal: cx(24),
152
+ color: '#000',
153
+ fontSize: cx(14),
154
+ fontFamily: 'helvetica_neue_lt_std_roman',
155
+ },
156
+ modeSelectGroup: {
157
+ marginHorizontal: cx(24),
158
+ backgroundColor: '#f6f6f6',
159
+ borderRadius: cx(4),
160
+ },
161
+ modeTip: {
162
+ marginHorizontal: cx(8),
163
+ color: '#000',
164
+ fontSize: cx(14),
165
+ fontWeight: 'bold',
166
+ fontFamily: 'helvetica_neue_lt_std_bd',
167
+ },
168
+ modeSelectCard: {
169
+ marginHorizontal: cx(8),
170
+ },
171
+ line: {
172
+ height: cx(1),
173
+ marginHorizontal: cx(12),
174
+ backgroundColor: '#3C3C435B',
175
+ },
176
+ itemRoot: {
177
+ flexDirection: 'row',
178
+ alignItems: 'center',
179
+ paddingHorizontal: cx(12),
180
+ paddingBottom: cx(8),
181
+ },
182
+ itemTextGroup: {
183
+ flex: 1,
184
+ marginEnd: cx(12),
185
+ justifyContent: 'center',
186
+ },
187
+ itemTitle: {
188
+ color: '#000',
189
+ fontSize: cx(14),
190
+ fontFamily: 'helvetica_neue_lt_std_roman',
191
+ },
192
+ itemContent: {
193
+ color: '#666',
194
+ fontSize: cx(14),
195
+ fontFamily: 'helvetica_neue_lt_std_roman',
196
+ },
197
+ itemCheckedIcon: {
198
+ width: cx(32),
199
+ height: cx(32),
200
+ marginEnd: cx(4),
201
+ },
202
+ })
203
+
204
+ export default LightModePage
@@ -1,16 +1,16 @@
1
- import {NavigationRoute} from "tuya-panel-kit";
2
- import LightModePage from "./LightModePage";
3
- import {ui_biz_routerKey} from "../../navigation/Routers";
4
-
5
- const LightModePageRouters: NavigationRoute[] = [
6
- {
7
- name: ui_biz_routerKey.ui_biz_light_mode,
8
- component: LightModePage,
9
- options:{
10
- hideTopbar: true,
11
- showOfflineView: false,
12
- }
13
- }
14
- ]
15
-
16
- export default LightModePageRouters
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import LightModePage from "./LightModePage";
3
+ import {ui_biz_routerKey} from "../../navigation/Routers";
4
+
5
+ const LightModePageRouters: NavigationRoute[] = [
6
+ {
7
+ name: ui_biz_routerKey.ui_biz_light_mode,
8
+ component: LightModePage,
9
+ options:{
10
+ hideTopbar: true,
11
+ showOfflineView: false,
12
+ }
13
+ }
14
+ ]
15
+
16
+ export default LightModePageRouters
@@ -148,6 +148,11 @@ export interface StripLightMoodMode {
148
148
  };
149
149
  }
150
150
 
151
+ export const CeilingLightSceneMode: StripLightMoodMode = {
152
+ '1': { title: I18n.getLang('strip_lights_modes_flash_text'), mode: 1 },
153
+ '2': { title: I18n.getLang('strip_lights_modes_breath_text'), mode: 2 },
154
+ }
155
+
151
156
  export const lightMoodMode = {
152
157
  '1': { title: I18n.getLang('other_lights_modes_jump_text'), mode: 1 },
153
158
  '2': { title: I18n.getLang('other_lights_modes_gradient_text'), mode: 2 },
@@ -10,7 +10,7 @@ import {
10
10
  } from 'react-native';
11
11
  import { Utils } from 'tuya-panel-kit';
12
12
  import { useReactive } from 'ahooks';
13
- import { cloneDeep, find, isEqual } from 'lodash';
13
+ import { cloneDeep, isEqual } from 'lodash';
14
14
  import Page from '@ledvance/base/src/components/Page';
15
15
  import Strings from '@ledvance/base/src/i18n';
16
16
  import { StaticMoodEditorPageParams, StaticMoodEditorPageState } from './StaticMoodEditorPage';
@@ -28,6 +28,7 @@ import {
28
28
  stripLightMoodMode,
29
29
  lightMoodMode,
30
30
  StripLightMoodMode,
31
+ CeilingLightSceneMode
31
32
  } from './Interface';
32
33
  import TextFieldStyleButton from '@ledvance/base/src/components/TextFieldStyleButton';
33
34
  import {ui_biz_routerKey} from '../../navigation/Routers'
@@ -47,6 +48,7 @@ interface MixDynamicMoodEditorPageState extends StaticMoodEditorPageState {
47
48
  mainNodeIdx: number;
48
49
  secondaryIdx: number;
49
50
  sceneMode: StripLightMoodMode;
51
+ mainSceneMode: any
50
52
  }
51
53
  const MixDynamicMoodEditorPage = () => {
52
54
  const navigation = useNavigation();
@@ -65,6 +67,7 @@ const MixDynamicMoodEditorPage = () => {
65
67
  secondaryBucketSelected: false,
66
68
  loading: false,
67
69
  sceneMode: moduleParams.isCeilingLight ? stripLightMoodMode : lightMoodMode,
70
+ mainSceneMode: moduleParams.isCeilingLight ? CeilingLightSceneMode : lightMoodMode
68
71
  });
69
72
  useEffect(() => {
70
73
  state.headline = Strings.getLang(
@@ -223,16 +226,16 @@ const MixDynamicMoodEditorPage = () => {
223
226
  }}
224
227
  showSwitch={!!moduleParams.isMixLight}
225
228
  />
226
- {(!moduleParams.isMixLight || state.mood.mainLamp.enable) && (
229
+ {state.mood.mainLamp.enable && (
227
230
  <>
228
231
  <TextFieldStyleButton
229
232
  style={styles.transitionMode}
230
- text={lightMoodMode[state.mood.mainLamp.mode]?.title}
233
+ text={state.mainSceneMode[state.mood.mainLamp.mode]?.title}
231
234
  placeholder={I18n.getLang('add_new_dynamic_mood_color_changing_mode_headline')}
232
235
  onPress={() => {
233
236
  const paramsSelect: SelectPageParams<number> = {
234
237
  title: I18n.getLang('add_new_dynamic_mood_color_changing_mode_headline'),
235
- data: createSelectModeData(state.mood.mainLamp.mode, lightMoodMode),
238
+ data: createSelectModeData(state.mood.mainLamp.mode, state.mainSceneMode),
236
239
  onSelect: selectPageData => {
237
240
  state.mood.mainLamp.mode = selectPageData.value;
238
241
  },
@@ -417,7 +420,7 @@ const MixDynamicMoodEditorPage = () => {
417
420
  }}
418
421
  showSwitch={!!moduleParams.isMixLight}
419
422
  />
420
- {(!moduleParams.isMixLight || state.mood.secondaryLamp.enable) && (
423
+ {state.mood.secondaryLamp.enable && (
421
424
  <>
422
425
  <TextFieldStyleButton
423
426
  style={styles.transitionMode}
@@ -32,6 +32,10 @@ export const useWorkMode = (dp: string): [WorkMode, (value: WorkMode) => Promise
32
32
  return useDp(dp);
33
33
  };
34
34
 
35
+ export const useSwitchLed = (dp: string): [boolean, (value: boolean) => Promise<Result<any>>] => {
36
+ return useDp(dp);
37
+ };
38
+
35
39
  export const setRemoteMoodList = async (
36
40
  devId: string,
37
41
  isFeature: boolean,
@@ -73,7 +77,7 @@ const getMoodDp = (moodInfo: MoodUIInfo, option: LightCategory) => {
73
77
 
74
78
  const remoteMoodInfo2MoodUIState = (
75
79
  remoteMoodInfo,
76
- index: number,
80
+ _: number,
77
81
  option: DefMoodOption
78
82
  ): MoodUIInfo => {
79
83
  const moodInfo = option.isMixLight
@@ -96,7 +100,6 @@ export const getRemoteMoodList = async (
96
100
  const moodFeatureId = option.isMixLight ? MixLightSceneListFeatureId : SceneFeatureId;
97
101
  // await setRemoteMoodList(devId, isFeature, getDefMoodList(option), moodFeatureId);
98
102
  const res = await getFeature(devId, moodFeatureId);
99
- console.log(res, '< --- res=====')
100
103
  if (!res.result) {
101
104
  return { success: false };
102
105
  }
@@ -121,6 +124,8 @@ export const getRemoteMoodList = async (
121
124
  };
122
125
  } else {
123
126
  const moodFeatureId = option.isCeilingLight ? SceneFeatureId : featureId;
127
+ // const defaultScene = getDefMoodList(option);
128
+ // await setRemoteMoodList(devId, isFeature, defaultScene, moodFeatureId);
124
129
  const res = await NativeApi.getJson(devId, moodFeatureId);
125
130
  const isNormalData = Array.isArray(parseJSON(res?.data));
126
131
  if (res.success && isNormalData) {
@@ -152,7 +157,8 @@ export const getRemoteMoodList = async (
152
157
  export const useMoodScene = (params: MoodPageParams): [MoodInfo, (moodInfo: MoodUIInfo) => Promise<Result<any>>] => {
153
158
  const [dps, setDps] = useDps();
154
159
  const main = dps[params.mainDp];
155
- const secondary = params.secondaryDp ? dps[params.secondaryDp] : '';
160
+ const secondaryWorkMode = params.secondaryWorkMode ? dps[params.secondaryWorkMode] : ''
161
+ const secondary = params.secondaryDp && secondaryWorkMode === WorkMode.Scene ? dps[params.secondaryDp] : '';
156
162
  const [moodState, setMoodState] = useState(getMoodInfo(main, params, secondary));
157
163
 
158
164
  useUpdateEffect(() => {
@@ -160,30 +166,36 @@ export const useMoodScene = (params: MoodPageParams): [MoodInfo, (moodInfo: Mood
160
166
  }, [main, secondary]);
161
167
 
162
168
  const setMoodFn = (moodInfo: MoodUIInfo) => {
163
- const beforeDps = {}
164
- const afterDps = {}
169
+ const mainDps = {}
170
+ const secondaryDps = {}
165
171
  if (moodInfo) {
166
172
  const { mainLamp, secondaryLamp } = moodInfo
167
173
  if (mainLamp?.nodes?.length) {
168
174
  const mainHex = getMoodDp(params.isCeilingLight ? {...moodInfo, id: mainLamp.id!} : moodInfo, params);
169
- beforeDps[params.mainDp] = mainHex
170
- afterDps[params.mainWorkMode] = WorkMode.Scene;
171
- afterDps[params.mainSwitch] = true;
175
+ mainDps[params.mainDp] = mainHex
176
+ mainDps[params.mainWorkMode] = WorkMode.Scene;
177
+ mainDps[params.mainSwitch] = true;
172
178
  }
173
- if (params.isCeilingLight && secondaryLamp.nodes?.length && params.secondaryDp) {
174
- const secondaryHex = stripObj2Dp({
175
- ...moodInfo,
176
- mainLamp: moodInfo.secondaryLamp,
177
- id: secondaryLamp.id!
178
- });
179
- beforeDps[params.secondaryDp] = secondaryHex
180
- afterDps[params.secondaryWorkMode!] = WorkMode.Scene
181
- afterDps[params.secondarySwitch!] = true
179
+ if (params.isCeilingLight && params.secondaryDp) {
180
+ if (secondaryLamp.nodes?.length){
181
+ const secondaryHex = stripObj2Dp({
182
+ ...moodInfo,
183
+ mainLamp: secondaryLamp,
184
+ id: secondaryLamp.id!,
185
+ version: 1
186
+ });
187
+ console.log(secondaryHex, secondaryLamp, 'hexxxxx')
188
+ secondaryDps[params.secondaryDp] = secondaryHex
189
+ secondaryDps[params.secondaryWorkMode!] = WorkMode.Scene
190
+ secondaryDps[params.secondarySwitch!] = true
191
+ }else{
192
+ secondaryDps[params.secondaryWorkMode!] = WorkMode.Colour
193
+ }
194
+ setDps(secondaryDps).then()
182
195
  }
183
- afterDps[params.switchLedDp] = true
196
+ mainLamp[params.switchLedDp] = true
184
197
  }
185
- setDps(afterDps).then()
186
- return setDps(beforeDps)
198
+ return setDps(mainDps)
187
199
  };
188
200
  return [moodState, setMoodFn];
189
201
  };
@@ -37,7 +37,7 @@ const MoodItem = (props: MoodItemProps) => {
37
37
  }, [mood.mainLamp.nodes, mood.secondaryLamp.nodes]);
38
38
 
39
39
  const gradientMode = useMemo(() => (
40
- deviceTypeOption?.isStringLight ? MoodJumpGradientMode.StringGradient : (deviceTypeOption?.isStripLight || deviceTypeOption?.isCeilingLight) ? MoodJumpGradientMode.StripGradient : MoodJumpGradientMode.SourceGradient
40
+ deviceTypeOption?.isStringLight ? MoodJumpGradientMode.StringGradient : deviceTypeOption?.isStripLight ? MoodJumpGradientMode.StripGradient : MoodJumpGradientMode.SourceGradient
41
41
  ), [MoodJumpGradientMode, deviceTypeOption])
42
42
 
43
43
  return (
@@ -53,11 +53,11 @@ const MoodItem = (props: MoodItemProps) => {
53
53
  />
54
54
  </View>
55
55
  <Spacer />
56
- <MixMoodColorsLine mixSubLight={mood.mainLamp} isMix={isMix} type={mood.mainLamp.mode === gradientMode ? 'gradient' : 'separate'}/>
56
+ <MixMoodColorsLine mixSubLight={mood.mainLamp} isMix={isMix} type={(mood.mainLamp.mode === gradientMode && !deviceTypeOption?.isCeilingLight) ? 'gradient' : 'separate'}/>
57
57
  {(isMix && !!mood.secondaryLamp.nodes.length) && (
58
58
  <>
59
59
  <Spacer height={cx(7)} />
60
- <MixMoodColorsLine mixSubLight={mood.secondaryLamp} isMix={isMix} type={mood.secondaryLamp.mode === gradientMode ? 'gradient' : 'separate'}/>
60
+ <MixMoodColorsLine mixSubLight={mood.secondaryLamp} isMix={isMix} type={mood.secondaryLamp.mode === (deviceTypeOption?.isMixLight ? MoodJumpGradientMode.SourceGradient : MoodJumpGradientMode.StripGradient) ? 'gradient' : 'separate'}/>
61
61
  </>
62
62
  )}
63
63
  <Spacer height={cx(12)} />