@ledvance/group-ui-biz-bundle 1.0.33 → 1.0.35

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 CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "@ledvance/group-ui-biz-bundle",
5
5
  "pid": [],
6
6
  "uiid": "",
7
- "version": "1.0.33",
7
+ "version": "1.0.35",
8
8
  "scripts": {},
9
9
  "dependencies": {
10
10
  "@ledvance/base": "^1.x",
@@ -223,7 +223,7 @@ const FlagPage = () => {
223
223
  enable={flagState?.workMode === (params.isStripLight ? WorkMode.Colour : WorkMode.Scene) && flagId === item.id && flagMode?.flagMode}
224
224
  title={item.name}
225
225
  icon={item.icon}
226
- colors={item.colors.map(item => hsv2Hex(item.h, item.s, item.v))}
226
+ colors={item.colors.map(item => hsv2Hex(item.h, item.s, item.v)).reverse()}
227
227
  onSwitch={async (enable) => {
228
228
  if (enable) {
229
229
  await setFlag({
@@ -136,8 +136,8 @@ function newMood(
136
136
  brightness: 100,
137
137
  colorTemp: 100,
138
138
  h: 0,
139
- s: 50,
140
- v: 80,
139
+ s: 100,
140
+ v: 100,
141
141
  isColorNode: isColorMode,
142
142
  switchingInterval: 13,
143
143
  transitionMode: isStatic ? SceneNodeTransitionMode.Static : jump,
@@ -503,6 +503,8 @@ const styles = StyleSheet.create({
503
503
  flex: 1,
504
504
  height: cx(40),
505
505
  borderRadius: cx(8),
506
+ borderWidth: 1,
507
+ borderColor: '#ccc'
506
508
  },
507
509
  nodeDeleteBtn: {
508
510
  width: cx(24),
@@ -53,6 +53,7 @@ const MoodItem = (props: MoodItemProps) => {
53
53
  <Spacer />
54
54
  <View style={styles.gradientItem}>
55
55
  <MoodColorsLine
56
+ nodeStyle={{ borderColor: '#ccc', borderWidth: 1 }}
56
57
  type={props.type}
57
58
  colors={state.colors} />
58
59
  </View>
@@ -186,7 +186,7 @@ const MoodPage = () => {
186
186
  sceneDataDpCode: params.sceneDataDpCode,
187
187
  mixSceneDataDpCode: params.mixSceneDataDpCode,
188
188
  workModeDpCode: params.workModeDpCode,
189
- workMode: mood ? WorkMode.Scene : (params.isSupportColor ? WorkMode.Colour : WorkMode.White),
189
+ workMode,
190
190
  switchLedDpCode: params.switchLedDpCode
191
191
  })
192
192
  }
@@ -195,6 +195,13 @@ const MoodPage = () => {
195
195
  }
196
196
  }
197
197
 
198
+ function getWorkMode(mood: SceneUIState | undefined, params: MoodPageProps): WorkMode {
199
+ if (mood) return WorkMode.Scene;
200
+ if (params.isSupportFan) return WorkMode.Control;
201
+ if (params.isSupportColor) return WorkMode.Colour;
202
+ return WorkMode.White;
203
+ }
204
+
198
205
  const updateFlagMode = () =>{
199
206
  if(flagMode?.flagMode && params.isSupportColor){
200
207
  saveFlagMode(uaGroupInfo.tyGroupId.toString(), JSON.stringify({
@@ -20,7 +20,7 @@ export interface SceneInfo {
20
20
  expand: number,
21
21
  // 方向 0 顺时针方向, 1 逆时针方向
22
22
  direction: number,
23
-
23
+
24
24
  }
25
25
 
26
26
  export interface SceneNodeInfo {
@@ -290,6 +290,7 @@ function getRGBWDefSceneList(): RemoteSceneInfo[] {
290
290
  t: 0,
291
291
  e: false,
292
292
  },
293
+ ...defColorSceneList
293
294
  ]
294
295
  }
295
296
 
@@ -337,6 +338,7 @@ function getRGBDefSceneList(): RemoteSceneInfo[] {
337
338
  t: 0,
338
339
  e: false,
339
340
  },
341
+ ...defColorSceneList
340
342
  ]
341
343
  }
342
344
 
@@ -349,13 +351,6 @@ function getOnlyRGBDefSceneList(): RemoteSceneInfo[] {
349
351
  t: 0,
350
352
  e: false,
351
353
  },
352
- {
353
- n: I18n.getLang('mesh_device_detail_lighting_read'),
354
- i: '010e0d000084000003e800000000',
355
- s: '',
356
- t: 0,
357
- e: false,
358
- },
359
354
  {
360
355
  n: I18n.getLang('mesh_device_detail_lighting_work'),
361
356
  i: '020e0d00001403e803e800000000',
@@ -377,13 +372,7 @@ function getOnlyRGBDefSceneList(): RemoteSceneInfo[] {
377
372
  t: 0,
378
373
  e: false,
379
374
  },
380
- {
381
- n: I18n.getLang('mesh_device_detail_lighting_white_mode'),
382
- i: '0646460100000000000003e8000046460100000000000003e8019046460100000000000003e803e8',
383
- s: '',
384
- t: 0,
385
- e: false,
386
- },
375
+ ...defColorSceneList
387
376
  ]
388
377
  }
389
378
 
@@ -860,6 +849,219 @@ function getStripLightSceneList(): RemoteSceneInfo[] {
860
849
  ]
861
850
  }
862
851
 
852
+ const defColorSceneList: RemoteSceneInfo[] = [
853
+ {
854
+ n: I18n.getLang('dynamicmoods_forest'),
855
+ i: '074b4b02007802f80226000000004b4b02003303e803e8000000004b4b02007803e8018600000000',
856
+ s: '',
857
+ t: 0,
858
+ e: false,
859
+ },
860
+ {
861
+ n: I18n.getLang('dynamicmoods_desert'),
862
+ i: '084b4b020022014a0334000000004b4b02001002b203e8000000004b4b02001003e803e800000000',
863
+ s: '',
864
+ t: 0,
865
+ e: false,
866
+ },
867
+ {
868
+ n: I18n.getLang('dynamicmoods_dreams'),
869
+ i: '094b4b02014b00c803e8000000004b4b0200b4010403a2000000004b4b02001c010e03e800000000',
870
+ s: '',
871
+ t: 0,
872
+ e: false,
873
+ },
874
+ {
875
+ n: I18n.getLang('dynamicmoods_breeze'),
876
+ i: '0a4b4b02002b03520352000000004b4b020000032a02bc000000004b4b02002703e803e800000000',
877
+ s: '',
878
+ t: 0,
879
+ e: false,
880
+ },
881
+ {
882
+ n: I18n.getLang('dynamicmoods_waters'),
883
+ i: '0b4b4b0200c303e803e8000000004b4b0200a001f403e8000000004b4b0200f0030c01b800000000',
884
+ s: '',
885
+ t: 0,
886
+ e: false,
887
+ },
888
+ {
889
+ n: I18n.getLang('dynamicmoods_splash'),
890
+ i: '0c4b4b02003c03e803e8000000004b4b02002703e803e8000000004b4b02001003e803e800000000',
891
+ s: '',
892
+ t: 0,
893
+ e: false,
894
+ },
895
+ {
896
+ n: I18n.getLang("dynamicmoods_sunrise"),
897
+ i: '0d4b4b02000902d003e8000000004b4b020026012203e8000000004b4b02003303e803e800000000',
898
+ s: '',
899
+ t: 0,
900
+ e: false,
901
+ },
902
+ {
903
+ n: I18n.getLang('dynamicmoods_wonderland'),
904
+ i: '0e4b4b0200bb00e60384000000004b4b020000001403e8000000004b4b020000000002ee00000000',
905
+ s: '',
906
+ t: 0,
907
+ e: false,
908
+ },
909
+ {
910
+ n: I18n.getLang('dynamicmoods_Twilight'),
911
+ i: '0f4b4b02014a024e03e8000000004b4b02002703e803e8000000004b4b0200b403e801f400000000',
912
+ s: '',
913
+ t: 0,
914
+ e: false,
915
+ },
916
+ {
917
+ n: I18n.getLang('dynamicmoods_symphony'),
918
+ i: '104b4b0200d2037003e8000000004b4b020000000003e8000000004b4b02003303e803e800000000',
919
+ s: '',
920
+ t: 0,
921
+ e: false,
922
+ },
923
+ {
924
+ n: I18n.getLang('dynamicmoods_sorbet'),
925
+ i: '114b4b02015e00fa03e8000000004b4b020011020803e8000000004b4b02003c03e803e800000000',
926
+ s: '',
927
+ t: 0,
928
+ e: false,
929
+ },
930
+ {
931
+ n: I18n.getLang('dynamicmoods_mansion'),
932
+ i: '124b4b02012c03e801f4000000004b4b0200b403e803e8000000004b4b02002703e803e800000000',
933
+ s: '',
934
+ t: 0,
935
+ e: false,
936
+ },
937
+ {
938
+ n: I18n.getLang('dynamicmoods_hour'),
939
+ i: '134b4b02003303e803e8000000004b4b02002103e803e8000000004b4b020026012203e800000000',
940
+ s: '',
941
+ t: 0,
942
+ e: false,
943
+ },
944
+ {
945
+ n: I18n.getLang('dynamicmoods_isle'),
946
+ i: '144b4b02007803e801f4000000004b4b020092029e0226000000004b4b02005a03e803de00000000',
947
+ s: '',
948
+ t: 0,
949
+ e: false,
950
+ },
951
+ {
952
+ n: I18n.getLang('dynamicmoods_Beat'),
953
+ i: '154b4b0200b403e803e8000000004b4b02012c03e803e8000000004b4b02003c03e803e800000000',
954
+ s: '',
955
+ t: 0,
956
+ e: false,
957
+ },
958
+ {
959
+ n: I18n.getLang('dynamicmoods_glamour'),
960
+ i: '164b4b02003303e803e8000000004b4b02012c03e801f4000000004b4b02015e00fa03e800000000',
961
+ s: '',
962
+ t: 0,
963
+ e: false,
964
+ },
965
+ {
966
+ n: I18n.getLang('dynamicmoods_edreams'),
967
+ i: '174b4b02012c03e803e8000000004b4b0200b403e803e8000000004b4b02002703e803e800000000',
968
+ s: '',
969
+ t: 0,
970
+ e: false,
971
+ },
972
+ {
973
+ n: I18n.getLang('dynamicmoods_sunset'),
974
+ i: '184b4b02001003e803e8000000004b4b02001d02b203e8000000004b4b02002b0352035200000000',
975
+ s: '',
976
+ t: 0,
977
+ e: false,
978
+ },
979
+ {
980
+ n: I18n.getLang('dynamicmoods_carnival'),
981
+ i: '194b4b02012c03e803e8000000004b4b02002703e803e8000000004b4b02003c03e803e800000000',
982
+ s: '',
983
+ t: 0,
984
+ e: false,
985
+ },
986
+ {
987
+ n: I18n.getLang('dynamicmoods_serenade'),
988
+ i: '1a4b4b0200f0030c01b8000000004b4b0200b4019a0136000000004b4b0200f0005003d400000000',
989
+ s: '',
990
+ t: 0,
991
+ e: false,
992
+ },
993
+ {
994
+ n: I18n.getLang('dynamicmoods_glow'),
995
+ i: '1b4b4b02001e03e803e8000000004b4b02003003e803e8000000004b4b020000032003e800000000',
996
+ s: '',
997
+ t: 0,
998
+ e: false,
999
+ },
1000
+ {
1001
+ n: I18n.getLang('dynamicmoods_Canopy'),
1002
+ i: '1c4b4b02007803e80190000000004b4b020078029e0258000000004b4b02001e029e025800000000',
1003
+ s: '',
1004
+ t: 0,
1005
+ e: false,
1006
+ },
1007
+ {
1008
+ n: I18n.getLang('dynamicmoods_Burst'),
1009
+ i: '1d4b4b02000003e803e8000000004b4b02002703e803e8000000004b4b02003c03e803e8000000004b4b02007803e803e8000000004b4b0200d203e803e8000000004b4b02011103e803e800000000',
1010
+ s: '',
1011
+ t: 0,
1012
+ e: false,
1013
+ },
1014
+ {
1015
+ n: I18n.getLang('dynamicmoods_Lights'),
1016
+ i: '1e4b4b02012c03e803e8000000004b4b02003c03e803e8000000004b4b0200b403e803e8000000004b4b02001803e803e800000000',
1017
+ s: '',
1018
+ t: 0,
1019
+ e: false,
1020
+ },
1021
+ {
1022
+ n: I18n.getLang('dynamicmoods_Dreamscape'),
1023
+ i: '1f4b4b02012c00c803e8000000004b4b0200f000c803e8000000004b4b02003c00c803e8000000004b4b0200b400c803e800000000',
1024
+ s: '',
1025
+ t: 0,
1026
+ e: false,
1027
+ },
1028
+ {
1029
+ n: I18n.getLang('dynamicmoods_NLights'),
1030
+ i: '204b4b02009603e803e8000000004b4b0200d203e803e8000000004b4b02010e03e803e800000000',
1031
+ s: '',
1032
+ t: 0,
1033
+ e: false,
1034
+ },
1035
+ {
1036
+ n: I18n.getLang('dynamicmoods_paradise'),
1037
+ i: '214b4b020140025803e8000000004b4b02001e032003e8000000004b4b02003c025803e800000000',
1038
+ s: '',
1039
+ t: 0,
1040
+ e: false,
1041
+ },
1042
+ {
1043
+ n: I18n.getLang('dynamicmoods_ice'),
1044
+ i: '224b4b02001803e803e8000000004b4b020000000003e8000000004b4b0200d803e803e800000000',
1045
+ s: '',
1046
+ t: 0,
1047
+ e: false,
1048
+ },
1049
+ {
1050
+ n: I18n.getLang('dynamicmoods_voyage'),
1051
+ i: '234b4b0200f003e80190000000004b4b02010e03e80190000000004b4b020000000003e800000000',
1052
+ s: '',
1053
+ t: 0,
1054
+ e: false,
1055
+ },
1056
+ {
1057
+ n: I18n.getLang('dynamicmoods_wave'),
1058
+ i: '244b4b0200d203e803e8000000004b4b0200b403e803e8000000004b4b02009603e803e800000000',
1059
+ s: '',
1060
+ t: 0,
1061
+ e: false,
1062
+ },
1063
+ ]
1064
+
863
1065
  export const MAXSCENE = 8
864
1066
 
865
1067
  export const AddScene = {
@@ -8,6 +8,7 @@
8
8
  */
9
9
 
10
10
  import {useFeatureHook} from "@ledvance/base/src/models/modules/NativePropsSlice";
11
+ import {Buffer} from "buffer";
11
12
 
12
13
 
13
14
  export interface RandomTimeParam {
@@ -33,80 +34,39 @@ export function useRandomTime() {
33
34
  return useFeatureHook<PlugConfig, RandomTimeItem[]>('randomTime', [], (val) => randomTimeItemsToBase64(val))
34
35
  }
35
36
 
36
- const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
37
-
38
- const decodeBase64 = (base64: string): Uint8Array => {
39
- const bufferLength = base64.length * 0.75;
40
- const buffer = new Uint8Array(bufferLength);
41
- let encoded1: number, encoded2: number, encoded3: number, encoded4: number;
42
- let p = 0;
43
-
44
- for (let i = 0; i < base64.length; i += 4) {
45
- encoded1 = base64Chars.indexOf(base64[i]);
46
- encoded2 = base64Chars.indexOf(base64[i + 1]);
47
- encoded3 = base64Chars.indexOf(base64[i + 2]);
48
- encoded4 = base64Chars.indexOf(base64[i + 3]);
49
-
50
- buffer[p++] = (encoded1 << 2) | (encoded2 >> 4);
51
- buffer[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
52
- buffer[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
53
- }
54
-
55
- return buffer;
56
- }
57
-
58
- const encodeBase64 = (buffer: Uint8Array): string => {
59
- let base64 = '';
60
- let p = 0;
61
- const length = buffer.length;
62
-
63
- while (p < length) {
64
- const byte1 = buffer[p++];
65
- const byte2 = p < length ? buffer[p++] : 0;
66
- const byte3 = p < length ? buffer[p++] : 0;
67
-
68
- const encoded1 = byte1 >> 2;
69
- const encoded2 = ((byte1 & 3) << 4) | (byte2 >> 4);
70
- const encoded3 = ((byte2 & 15) << 2) | (byte3 >> 6);
71
- const encoded4 = byte3 & 63;
72
-
73
- base64 += base64Chars[encoded1] + base64Chars[encoded2];
74
- base64 += p < length + 2 ? base64Chars[encoded3] : '=';
75
- base64 += p < length + 1 ? base64Chars[encoded4] : '=';
76
- }
77
-
78
- return base64;
79
- }
80
-
81
37
  // @ts-ignore
82
- const randomTimeItemsFromBase64 = (base64: string): RandomTimeItem[] => {
83
- const bytes = decodeBase64(base64);
38
+ const randomTimeItemsFromBase64 = (base64Str: string): RandomTimeItem[] => {
39
+ const buffer = Buffer.from(base64Str, 'base64');
40
+
84
41
  const items: RandomTimeItem[] = [];
85
42
 
86
- for (let i = 0; i < bytes.length; i += 6) {
87
- const channelByte = bytes[i];
88
- const enable = (channelByte & 1) === 1;
89
- const channel = (channelByte >> 1) & 0x7F;
90
- const week = bytes[i + 1];
91
- const startTime = (bytes[i + 2] << 8) | bytes[i + 3];
92
- const endTime = (bytes[i + 4] << 8) | bytes[i + 5];
43
+ for (let i = 0; i < buffer.length; i += 6) {
44
+ const enable = (buffer[i] & 0x01) === 1;
45
+ const channel = (buffer[i] >> 1) & 0x7F;
46
+
47
+ const week = buffer[i + 1];
48
+ const weeks: number[] = [
49
+ (week & 0b00000001) >> 0,
50
+ (week & 0b00000010) >> 1,
51
+ (week & 0b00000100) >> 2,
52
+ (week & 0b00001000) >> 3,
53
+ (week & 0b00010000) >> 4,
54
+ (week & 0b00100000) >> 5,
55
+ (week & 0b01000000) >> 6,
56
+ (week & 0b10000000) >> 7,
57
+ ];
58
+
59
+ const startTime = (buffer[i + 2] << 8) | buffer[i + 3];
60
+ const endTime = (buffer[i + 4] << 8) | buffer[i + 5];
93
61
 
94
62
  items.push({
95
63
  enable,
96
64
  channel,
97
- weeks: [
98
- (week & 0b00000001) >> 0,
99
- (week & 0b00000010) >> 1,
100
- (week & 0b00000100) >> 2,
101
- (week & 0b00001000) >> 3,
102
- (week & 0b00010000) >> 4,
103
- (week & 0b00100000) >> 5,
104
- (week & 0b01000000) >> 6,
105
- (week & 0b10000000) >> 7,
106
- ],
65
+ weeks,
107
66
  startTime,
108
67
  endTime,
109
- index: i % 6
68
+ name: `RandomTime ${items.length}`,
69
+ index: items.length
110
70
  });
111
71
  }
112
72
 
@@ -114,23 +74,26 @@ const randomTimeItemsFromBase64 = (base64: string): RandomTimeItem[] => {
114
74
  }
115
75
 
116
76
  export const randomTimeItemsToBase64 = (items: RandomTimeItem[]): string => {
117
- const bytes = new Uint8Array(items.length * 6);
77
+ const buffer = new Uint8Array(6 * items.length);
118
78
 
119
79
  items.forEach((item, index) => {
120
- const channelByte = (item.channel!! << 1) | (item.enable ? 1 : 0);
121
- const week = item.weeks.reduce((acc, bit, i) => acc | (bit << i), 0);
122
- const startTime = item.startTime;
123
- const endTime = item.endTime;
124
-
125
80
  const offset = index * 6;
126
- bytes[offset] = channelByte;
127
- bytes[offset + 1] = week;
128
- bytes[offset + 2] = (startTime >> 8) & 0xFF;
129
- bytes[offset + 3] = startTime & 0xFF;
130
- bytes[offset + 4] = (endTime >> 8) & 0xFF;
131
- bytes[offset + 5] = endTime & 0xFF;
81
+
82
+ // Byte 1: Channel (bit0: enable, bit7-bit1: channel)
83
+ buffer[offset] = (item.enable ? 1 : 0) | ((item.channel ?? 0) << 1);
84
+
85
+ // Byte 2: Weeks
86
+ buffer[offset + 1] = item.weeks.reduce((acc, bit, i) => acc | (bit << i), 0);
87
+
88
+ // Byte 3-4: Start time
89
+ buffer[offset + 2] = (item.startTime >> 8) & 0xFF;
90
+ buffer[offset + 3] = item.startTime & 0xFF;
91
+
92
+ // Byte 5-6: End time
93
+ buffer[offset + 4] = (item.endTime >> 8) & 0xFF;
94
+ buffer[offset + 5] = item.endTime & 0xFF;
132
95
  });
133
96
 
134
- return encodeBase64(bytes);
97
+ return Buffer.from(buffer).toString('base64');
135
98
  }
136
99