@ledvance/group-ui-biz-bundle 1.0.46 → 1.0.48

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 (37) hide show
  1. package/package.json +1 -1
  2. package/src/modules/biorhythm/BiorhythmActions.ts +5 -13
  3. package/src/modules/biorhythm/BiorhythmBean.ts +6 -6
  4. package/src/modules/biorhythm/BiorhythmPage.tsx +373 -420
  5. package/src/modules/biorhythm/Router.ts +34 -0
  6. package/src/modules/fixedTimeForPlug/Router.ts +25 -0
  7. package/src/modules/fixedTimingForLight/Router.ts +25 -0
  8. package/src/modules/flags/Router.ts +25 -0
  9. package/src/modules/mood/AddMoodPage.tsx +2 -2
  10. package/src/modules/mood_new/AddMoodPage.tsx +197 -0
  11. package/src/modules/mood_new/DynamicMoodEditorPage.tsx +654 -0
  12. package/src/modules/mood_new/Interface.ts +219 -0
  13. package/src/modules/mood_new/MixDynamicMoodEditor.tsx +788 -0
  14. package/src/modules/mood_new/MoodActions.ts +227 -0
  15. package/src/modules/mood_new/MoodInfo.ts +2151 -0
  16. package/src/modules/mood_new/MoodItem.tsx +148 -0
  17. package/src/modules/mood_new/MoodPage.tsx +374 -0
  18. package/src/modules/mood_new/MoodParse.ts +442 -0
  19. package/src/modules/mood_new/RecommendMoodItem.tsx +69 -0
  20. package/src/modules/mood_new/Router.ts +43 -0
  21. package/src/modules/mood_new/StaticMoodEditorPage.tsx +293 -0
  22. package/src/modules/music/Router.ts +16 -0
  23. package/src/modules/randomTimeForPlug/Router.ts +25 -0
  24. package/src/modules/randomTimingForLight/Router.ts +25 -0
  25. package/src/modules/remoteSwitch/Router.ts +16 -0
  26. package/src/modules/select/Router.ts +16 -0
  27. package/src/modules/switchGradient/Router.ts +16 -0
  28. package/src/modules/timeSchedule/Interface.ts +150 -0
  29. package/src/modules/timeSchedule/Router.ts +25 -0
  30. package/src/modules/timeSchedule/TimeScheduleActions.ts +140 -0
  31. package/src/modules/timeSchedule/TimeScheduleDetailPage.tsx +625 -0
  32. package/src/modules/timeSchedule/TimeSchedulePage.tsx +220 -0
  33. package/src/modules/timeSchedule/components/ManuaSettings.tsx +376 -0
  34. package/src/modules/timeSchedule/components/ScheduleCard.tsx +109 -0
  35. package/src/modules/timeSchedule/components/Summary.tsx +124 -0
  36. package/src/modules/timer/Router.ts +16 -0
  37. package/src/navigation/Routers.ts +1 -0
@@ -0,0 +1,293 @@
1
+ import React, { useCallback, useEffect, useMemo } from 'react';
2
+ import { ScrollView, StyleSheet, View } from 'react-native';
3
+ import { cloneDeep, find, isEqual } from 'lodash';
4
+ import { useReactive } from 'ahooks';
5
+ import Page from '@ledvance/base/src/components/Page';
6
+ import I18n from '@ledvance/base/src/i18n';
7
+ import { useNavigation } from '@react-navigation/native';
8
+ import TextField from '@ledvance/base/src/components/TextField';
9
+ import { Utils } from 'tuya-panel-kit';
10
+ import Card from '@ledvance/base/src/components/Card';
11
+ import Spacer from '@ledvance/base/src/components/Spacer';
12
+ import res from '@ledvance/base/src/res';
13
+ import TextButton from '@ledvance/base/src/components/TextButton';
14
+ import { useFanMaxSpeed } from '@ledvance/base/src/models/modules/NativePropsSlice';
15
+ import LampAdjustView2 from '@ledvance/base/src/components/LampAdjustView2';
16
+ import FanAdjustView from '@ledvance/base/src/components/FanAdjustView';
17
+ import { MoodNodeInfo, MoodPageParams, MoodUIInfo } from './Interface';
18
+ import { Result } from '@ledvance/base/src/models/modules/Result';
19
+ import { hsv2Hex, mapFloatToRange } from '@ledvance/base/src/utils';
20
+ import { cctToColor } from '@ledvance/base/src/utils/cctUtils';
21
+ import { useParams } from '@ledvance/base/src/hooks/Hooks';
22
+ import { ui_biz_routerKey } from '../../navigation/Routers'
23
+ import LdvSwitch from '@ledvance/base/src/components/ldvSwitch';
24
+ import { showDialog } from '@ledvance/base/src/utils/common';
25
+
26
+ const cx = Utils.RatioUtils.convertX;
27
+
28
+ export interface StaticMoodEditorPageParams {
29
+ mode: 'add' | 'edit';
30
+ moods: MoodUIInfo[];
31
+ currentMood: MoodUIInfo;
32
+ onSave: () => void;
33
+ moduleParams: MoodPageParams;
34
+ modDeleteMood: (mode: 'add' | 'edit' | 'del', currentMood: MoodUIInfo) => Promise<Result<any>>;
35
+ }
36
+
37
+ export interface StaticMoodEditorPageState {
38
+ headline: string;
39
+ mood: MoodUIInfo;
40
+ mainNode: MoodNodeInfo;
41
+ secondaryNode: MoodNodeInfo;
42
+ loading: boolean;
43
+ }
44
+
45
+ const StaticMoodEditorPage = () => {
46
+ const navigation = useNavigation();
47
+ const routeParams = useParams<StaticMoodEditorPageParams>();
48
+ const params = cloneDeep(routeParams);
49
+ const moduleParams = params.moduleParams;
50
+ const isMix = !!(moduleParams.isCeilingLight || moduleParams.isMixLight);
51
+ const state = useReactive<StaticMoodEditorPageState>({
52
+ headline: '',
53
+ mood: params.currentMood,
54
+ mainNode: params.currentMood.mainLamp.nodes[0],
55
+ secondaryNode: params.currentMood?.secondaryLamp?.nodes[0],
56
+ loading: false,
57
+ });
58
+
59
+ useEffect(() => {
60
+ state.headline = I18n.getLang(
61
+ params.mode === 'add' ? 'add_new_static_mood_headline_text' : 'edit_static_mood_headline_text'
62
+ );
63
+ }, [params.mode]);
64
+
65
+ const getColorBlockColor = useCallback((node: MoodNodeInfo) => {
66
+ const s = Math.round(mapFloatToRange(node.s / 100, 30, 100));
67
+ if (node.isColorNode) {
68
+ return hsv2Hex(node.h, s, 100);
69
+ } else {
70
+ return cctToColor(node.colorTemp.toFixed());
71
+ }
72
+ }, []);
73
+
74
+ const onRightClick = async () => {
75
+ if (state.loading) return;
76
+ state.loading = true;
77
+ const newMood: MoodUIInfo = {
78
+ ...state.mood,
79
+ mainLamp: {
80
+ ...state.mood.mainLamp,
81
+ nodes: [cloneDeep(state.mainNode)],
82
+ },
83
+ secondaryLamp: {
84
+ ...state.mood.secondaryLamp,
85
+ id: undefined
86
+ }
87
+ };
88
+ if (isMix && moduleParams.isMixLight) {
89
+ newMood.secondaryLamp = {
90
+ ...newMood.secondaryLamp,
91
+ nodes: [cloneDeep(state.secondaryNode)],
92
+ };
93
+ newMood.mainLamp.type = 2
94
+ if (moduleParams.isSupportBrightness && !moduleParams.isSupportTemperature) {
95
+ newMood.mainLamp.type = 1
96
+ }
97
+ if (moduleParams.isSupportColor) {
98
+ newMood.secondaryLamp.type = 3
99
+ }
100
+ }
101
+ const res = await params.modDeleteMood(params.mode, newMood);
102
+ state.loading = false;
103
+ if (res.success) {
104
+ navigation.navigate(ui_biz_routerKey.group_ui_biz_mood);
105
+ }
106
+ };
107
+
108
+ const getButtonStatus = () => {
109
+ return (
110
+ (params.mode === 'edit' && isEqual(state.mood, params.currentMood)) ||
111
+ !state.mood.name ||
112
+ nameRepeat ||
113
+ state.mood.name.length > 32
114
+ );
115
+ };
116
+
117
+ const nameRepeat = useMemo(() => {
118
+ return !!find(params.moods, m => m.id !== state.mood.id && m.name === state.mood.name);
119
+ }, [state.mood.name]);
120
+
121
+ return (
122
+ <Page
123
+ backText={I18n.getLang('mesh_device_detail_mode')}
124
+ showBackDialog={true}
125
+ backDialogTitle={I18n.getLang(
126
+ params.mode === 'add'
127
+ ? 'string_light_pp_dialog_sm_add_headline_c'
128
+ : 'manage_user_unsaved_changes_dialog_headline'
129
+ )}
130
+ backDialogContent={I18n.getLang(
131
+ params.mode === 'add'
132
+ ? 'strip_light_static_mood_add_step_2_dialog_text'
133
+ : 'strip_light_static_mood_editor_step_2_dialog_text'
134
+ )}
135
+ headlineText={state.headline}
136
+ rightButtonIcon={getButtonStatus() ? res.ic_uncheck : res.ic_check}
137
+ rightButtonDisabled={getButtonStatus()}
138
+ rightButtonIconClick={onRightClick}
139
+ loading={state.loading}
140
+ >
141
+ <ScrollView style={{ flex: 1 }} nestedScrollEnabled={true}>
142
+ <View style={styles.root}>
143
+ <TextField
144
+ style={styles.name}
145
+ value={state.mood.name}
146
+ placeholder={I18n.getLang('edit_static_mood_inputfield_topic_text')}
147
+ onChangeText={text => {
148
+ state.mood.name = text;
149
+ }}
150
+ maxLength={33}
151
+ showError={state.mood.name.length > 32 || nameRepeat}
152
+ tipColor={nameRepeat ? '#f00' : undefined}
153
+ tipIcon={nameRepeat ? res.ic_text_field_input_error : undefined}
154
+ errorText={I18n.getLang(
155
+ nameRepeat ? 'string_light_pp_field_sm_add_error1' : 'add_new_dynamic_mood_alert_text'
156
+ )}
157
+ />
158
+ <Card style={styles.adjustCard}>
159
+ <LdvSwitch
160
+ title={I18n.getLang(
161
+ isMix
162
+ ? 'light_sources_tile_main_lighting_headline'
163
+ : 'light_sources_tile_tw_lighting_headline'
164
+ )}
165
+ color={getColorBlockColor(state.mainNode)}
166
+ colorAlpha={1}
167
+ enable={!!state.mood.mainLamp.enable}
168
+ setEnable={v => {
169
+ state.mood.mainLamp.enable = v;
170
+ }}
171
+ showSwitch={!!moduleParams.isMixLight}
172
+ />
173
+ {(!moduleParams.isMixLight || state.mood.mainLamp.enable) && (
174
+ <LampAdjustView2
175
+ isSupportColor={isMix ? false : moduleParams.isSupportColor}
176
+ isSupportBrightness={moduleParams.isSupportBrightness}
177
+ isSupportCCT={moduleParams.isSupportTemperature}
178
+ isColorMode={state.mainNode.isColorNode}
179
+ reserveSV={true}
180
+ setIsColorMode={isColorMode => {
181
+ state.mainNode.isColorNode = isColorMode;
182
+ }}
183
+ hsv={state.mainNode}
184
+ onHSVChange={(hsv) => {
185
+ state.mainNode.h = hsv.h
186
+ state.mainNode.s = hsv.s
187
+ state.mainNode.v = hsv.v
188
+ }}
189
+ cct={state.mainNode.colorTemp}
190
+ brightness={state.mainNode.brightness}
191
+ onCCTChange={(cct) => {
192
+ state.mainNode.colorTemp = cct;
193
+ }}
194
+ onBrightnessChange={(brightness) => {
195
+ state.mainNode.brightness = brightness;
196
+ }}
197
+ />
198
+ )}
199
+ </Card>
200
+ <Spacer />
201
+ {!!(moduleParams.isFanLight || moduleParams.isUVCFan) && (
202
+ <FanAdjustView
203
+ fanEnable={!!state.mood.mainLamp.fanEnable}
204
+ fanSpeed={state.mood.mainLamp.fanSpeed || 1}
205
+ maxFanSpeed={useFanMaxSpeed()}
206
+ onFanSwitch={fanEnable => {
207
+ state.mood.mainLamp.fanEnable = fanEnable;
208
+ }}
209
+ onFanSpeedChange={fanSpeed => {
210
+ state.mood.mainLamp.fanSpeed = fanSpeed;
211
+ }}
212
+ onFanSpeedChangeComplete={fanSpeed => {
213
+ state.mood.mainLamp.fanSpeed = fanSpeed;
214
+ }}
215
+ style={styles.fanAdjustCard}
216
+ />
217
+ )}
218
+ {params.mode === 'edit' && (
219
+ <View style={{ marginTop: cx(20), marginHorizontal: cx(24) }}>
220
+ <TextButton
221
+ style={styles.deleteBtn}
222
+ textStyle={styles.deleteBtnText}
223
+ text={I18n.getLang('edit_static_mood_button_delete_text')}
224
+ onPress={() => {
225
+ showDialog({
226
+ method: 'confirm',
227
+ title: I18n.getLang('string_light_pp_dialog_sm_ed_headline_d'),
228
+ subTitle: I18n.getLang(`strip_light_static_mood_edit_dialog_text`),
229
+ onConfirm: async (_, {close})=>{
230
+ close();
231
+ state.loading = true;
232
+ const res = await params.modDeleteMood('del', state.mood);
233
+ state.loading = false;
234
+ if (res.success) {
235
+ navigation.navigate(ui_biz_routerKey.group_ui_biz_mood);
236
+ }
237
+ }
238
+ })
239
+ }}
240
+ />
241
+ </View>
242
+ )}
243
+ <Spacer />
244
+ </View>
245
+ </ScrollView>
246
+ </Page>
247
+ );
248
+ };
249
+
250
+ const styles = StyleSheet.create({
251
+ root: {
252
+ flex: 1,
253
+ flexDirection: 'column',
254
+ },
255
+ name: {
256
+ marginHorizontal: cx(24),
257
+ },
258
+ adjustCard: {
259
+ marginTop: cx(12),
260
+ marginHorizontal: cx(24),
261
+ },
262
+ fanAdjustCard: {
263
+ marginHorizontal: cx(24),
264
+ },
265
+ lightLine: {
266
+ flexDirection: 'row',
267
+ marginHorizontal: cx(16),
268
+ },
269
+ light: {
270
+ color: '#000',
271
+ fontSize: cx(18),
272
+ fontFamily: 'helvetica_neue_lt_std_bd',
273
+ },
274
+ preview: {
275
+ width: cx(20),
276
+ height: cx(20),
277
+ marginStart: cx(12),
278
+ borderRadius: cx(4),
279
+ },
280
+ deleteBtn: {
281
+ width: '100%',
282
+ height: cx(50),
283
+ backgroundColor: '#666',
284
+ borderRadius: cx(8),
285
+ },
286
+ deleteBtnText: {
287
+ color: '#fff',
288
+ fontSize: cx(16),
289
+ fontFamily: 'helvetica_neue_lt_std_bd',
290
+ },
291
+ });
292
+
293
+ export default StaticMoodEditorPage;
@@ -0,0 +1,16 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import MusicPage from "./MusicPage";
3
+ import {ui_biz_routerKey} from "../../navigation/Routers";
4
+
5
+ const MusicPageRouters: NavigationRoute[] = [
6
+ {
7
+ name: ui_biz_routerKey.group_ui_biz_music,
8
+ component: MusicPage,
9
+ options:{
10
+ hideTopbar: true,
11
+ showOfflineView: false,
12
+ }
13
+ }
14
+ ]
15
+
16
+ export default MusicPageRouters
@@ -0,0 +1,25 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import RandomTimeForPlugPage from "./RandomTimeForPlugPage";
3
+ import RandomTimeForPlugDetailPage from "./RandomTimeForPlugDetailPage";
4
+ import {ui_biz_routerKey} from "../../navigation/Routers";
5
+
6
+ const RandomTimeForPlugRouters: NavigationRoute[] = [
7
+ {
8
+ name: ui_biz_routerKey.group_ui_biz_fixed_time_plug,
9
+ component: RandomTimeForPlugPage,
10
+ options:{
11
+ hideTopbar: true,
12
+ showOfflineView: false,
13
+ }
14
+ },
15
+ {
16
+ name: ui_biz_routerKey.group_ui_biz_fixed_time_plug_detail,
17
+ component: RandomTimeForPlugDetailPage,
18
+ options:{
19
+ hideTopbar: true,
20
+ showOfflineView: false,
21
+ }
22
+ }
23
+ ]
24
+
25
+ export default RandomTimeForPlugRouters
@@ -0,0 +1,25 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import RandomTimingForLightPage from "./RandomTimingForLightPage";
3
+ import RandomTimingForLightDetailPage from "./RandomTimingForLightDetailPage";
4
+ import {ui_biz_routerKey} from "../../navigation/Routers";
5
+
6
+ const RandomTimingForLightRouters: NavigationRoute[] = [
7
+ {
8
+ name: ui_biz_routerKey.group_ui_biz_fixed_timing_light,
9
+ component: RandomTimingForLightPage,
10
+ options:{
11
+ hideTopbar: true,
12
+ showOfflineView: false,
13
+ }
14
+ },
15
+ {
16
+ name: ui_biz_routerKey.group_ui_biz_fixed_timing_light_detail,
17
+ component: RandomTimingForLightDetailPage,
18
+ options:{
19
+ hideTopbar: true,
20
+ showOfflineView: false,
21
+ }
22
+ }
23
+ ]
24
+
25
+ export default RandomTimingForLightRouters
@@ -0,0 +1,16 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import RemoteSwitchPage from "./RemoteSwitchPage";
3
+ import {ui_biz_routerKey} from "../../navigation/Routers";
4
+
5
+ const RemoteSwitchPageRouters: NavigationRoute[] = [
6
+ {
7
+ name: ui_biz_routerKey.group_ui_biz_remote_switch,
8
+ component: RemoteSwitchPage,
9
+ options:{
10
+ hideTopbar: true,
11
+ showOfflineView: false,
12
+ }
13
+ }
14
+ ]
15
+
16
+ export default RemoteSwitchPageRouters
@@ -0,0 +1,16 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import SelectPage from "./SelectPage";
3
+ import {ui_biz_routerKey} from "../../navigation/Routers";
4
+
5
+ const SelectPagePageRouters: NavigationRoute[] = [
6
+ {
7
+ name: ui_biz_routerKey.group_ui_biz_select_page,
8
+ component: SelectPage,
9
+ options:{
10
+ hideTopbar: true,
11
+ showOfflineView: false,
12
+ }
13
+ }
14
+ ]
15
+
16
+ export default SelectPagePageRouters
@@ -0,0 +1,16 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import SwitchGradientPage from "./SwitchGradientPage";
3
+ import {ui_biz_routerKey} from "../../navigation/Routers";
4
+
5
+ const SwitchGradientPageRouters: NavigationRoute[] = [
6
+ {
7
+ name: ui_biz_routerKey.group_ui_biz_switch_gradient,
8
+ component: SwitchGradientPage,
9
+ options:{
10
+ hideTopbar: true,
11
+ showOfflineView: false,
12
+ }
13
+ }
14
+ ]
15
+
16
+ export default SwitchGradientPageRouters
@@ -0,0 +1,150 @@
1
+ export interface IAddSingleTime {
2
+ bizId: string;
3
+ bizType?: string;
4
+ actions: any;
5
+ loops?: string;
6
+ category?: string;
7
+ status?: number;
8
+ isAppPush?: boolean;
9
+ aliasName?: string;
10
+ }
11
+
12
+ export interface IQueryTimerTasks {
13
+ bizId: string;
14
+ bizType?: string;
15
+ category?: string;
16
+ }
17
+
18
+
19
+
20
+ export interface IModifySingleTimer {
21
+ bizId: string;
22
+ bizType?: string;
23
+ id: string | number;
24
+ actions: any;
25
+ loops?: string;
26
+ status?: number;
27
+ isAppPush?: boolean;
28
+ aliasName?: string;
29
+ }
30
+
31
+ export interface IModDeleteTaskByIds {
32
+ bizId: string;
33
+ bizType?: string;
34
+ ids: string;
35
+ status?: number;
36
+ }
37
+
38
+ export enum UVCFanMode {
39
+ Nature = 'nature',
40
+ Normal = 'normal'
41
+ }
42
+
43
+
44
+ import { MoodInfo, MoodUIInfo } from "@ledvance/group-ui-biz-bundle/src/modules/mood/Interface";
45
+
46
+ export interface Timer {
47
+ status: number;
48
+ loops: string;
49
+ time: string;
50
+ id: number;
51
+ isAppPush: boolean;
52
+ dps: Record<string, any>;
53
+ groupOrder?: number;
54
+ groupId?: string;
55
+ aliasName: string;
56
+ }
57
+
58
+ export type TimerActions = 'add' | 'delete' | 'update'
59
+
60
+ export interface HSV {
61
+ h: number;
62
+ s: number;
63
+ v: number;
64
+ }
65
+
66
+ export type Category = 'light' | 'socket' | 'fan' | 'mainLight' | 'secondaryLight'
67
+
68
+ export interface ApplyForItem {
69
+ key: string;
70
+ dp: string;
71
+ type: Category;
72
+ enable: boolean;
73
+ }
74
+
75
+ interface judgmentSupport {
76
+ isSupportColor: boolean;
77
+ isSupportBrightness: boolean;
78
+ isSupportTemperature: boolean;
79
+ isCeilingLight?: boolean;
80
+ isStripLight?: boolean;
81
+ isStringLight?: boolean;
82
+ isMixLight?: boolean;
83
+ }
84
+
85
+ export interface ManualSettingProps extends judgmentSupport {
86
+ applyForList: ApplyForItem[];
87
+ dps: Record<string, any>;
88
+ manualData: ComponentConfig;
89
+ onManualChange?: (manualData: DeviceData | MixLightData | StripLightData) => void
90
+ onApplyChange?: (applyForList: ApplyForItem[]) => void
91
+ }
92
+
93
+ export enum DeviceType {
94
+ LightSource = 'lightSource',
95
+ MixLight = 'mixLight',
96
+ StripLight = 'stripLight',
97
+ CeilingLight = 'ceilingLight'
98
+ }
99
+ // export type DeviceType = 'LightSource' | 'CeilingLight' | 'StringLight' | 'StripLight' | 'MixLight';
100
+
101
+ export interface DeviceData {
102
+ h: number;
103
+ s: number;
104
+ v: number;
105
+ brightness: number;
106
+ temperature: number;
107
+ isColorMode: boolean;
108
+ }
109
+
110
+ export interface MixLightData extends DeviceData {
111
+ colorLightSwitch: boolean;
112
+ whiteLightSwitch: boolean;
113
+ mixRgbcwEnabled: boolean
114
+ }
115
+
116
+ export interface StripLightData extends DeviceData {
117
+ colors: string[];
118
+ activeKey: number;
119
+ colorDiskActiveKey: number
120
+ }
121
+
122
+ export interface CeilingLightData extends DeviceData, StripLightData, MixLightData {
123
+ }
124
+
125
+ export type ComponentConfig =
126
+ | { type: DeviceType.LightSource; deviceData: DeviceData }
127
+ | { type: DeviceType.MixLight; deviceData: MixLightData }
128
+ | { type: DeviceType.StripLight; deviceData: StripLightData }
129
+ | { type: DeviceType.CeilingLight; deviceData: CeilingLightData }
130
+
131
+ export interface TimeScheduleDetailState {
132
+ timeSchedule: Timer;
133
+ dps: Record<string, any>;
134
+ isManual: boolean;
135
+ selectedSkill: ApplyForItem[];
136
+ unSelectedSkill: ApplyForItem[];
137
+ loading: boolean;
138
+ moodLoading: boolean;
139
+ manualData: ComponentConfig;
140
+ mood?: MoodInfo;
141
+ moods: MoodUIInfo[];
142
+ timerId: any;
143
+ moodName: string;
144
+ }
145
+
146
+ export interface DeviceStateType {
147
+ deviceData: ComponentConfig
148
+ mood?: MoodInfo
149
+ isManual: boolean
150
+ }
@@ -0,0 +1,25 @@
1
+ import {NavigationRoute} from "tuya-panel-kit";
2
+ import TimeSchedulePage from "./TimeSchedulePage";
3
+ import TimeScheduleDetailPage from "./TimeScheduleDetailPage";
4
+ import {ui_biz_routerKey} from "../../navigation/Routers";
5
+
6
+ const TimeSchedulePageRouters: NavigationRoute[] = [
7
+ {
8
+ name: ui_biz_routerKey.group_ui_biz_time_schedule,
9
+ component: TimeSchedulePage,
10
+ options:{
11
+ hideTopbar: true,
12
+ showOfflineView: false,
13
+ }
14
+ },
15
+ {
16
+ name: ui_biz_routerKey.group_ui_biz_time_schedule_edit,
17
+ component: TimeScheduleDetailPage,
18
+ options:{
19
+ hideTopbar: true,
20
+ showOfflineView: false,
21
+ }
22
+ }
23
+ ]
24
+
25
+ export default TimeSchedulePageRouters