@ledvance/group-ui-biz-bundle 1.0.13 → 1.0.15

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.13",
7
+ "version": "1.0.15",
8
8
  "scripts": {},
9
9
  "dependencies": {
10
10
  "@ledvance/base": "^1.x",
@@ -65,7 +65,7 @@ const FlagEditPage = () => {
65
65
  }, [state.currentNode, state.currentWhiteNode])
66
66
 
67
67
  const nameRepeat = useMemo(() => {
68
- return !!find(params.moods, m => (m.id !== state.mood.id && m.name === state.mood.name))
68
+ return !!find(params.moods, m => (m.id !== state.mood.id && m.name === state.mood.name && state.mood.name !== ''))
69
69
  }, [state.mood.name])
70
70
 
71
71
  return (
@@ -300,7 +300,7 @@ export const defFlagList: FlagUiInfo[] = [
300
300
  version: 0,
301
301
  mode: SceneNodeTransitionMode.Jump,
302
302
  speed: 70,
303
- name: I18n.getLang('flag_leverkusen'),
303
+ name: '',
304
304
  icon: res.leverkusen_icon,
305
305
  whiteColors: [
306
306
  { brightness: 100, colorTemp: 0},
@@ -28,8 +28,8 @@ export default function FlagItem(props: RecommendMoodItemProps) {
28
28
  <Spacer height={cx(16)} />
29
29
  <View style={styles.headline}>
30
30
  <View style={{ flexDirection: 'row', flex: 1, paddingRight: cx(5), justifyContent: 'flex-start' }}>
31
- <Text style={styles.headText}>{props.title}</Text>
32
- {props.icon && <Image source={icon} style={{ width: cx(60), aspectRatio: 2.14, marginRight: cx(10) }} />}
31
+ {props.title ? <Text style={styles.headText}>{props.title}</Text> : undefined}
32
+ {props.icon ? <Image source={icon} style={{ width: cx(60), aspectRatio: 2.14, marginRight: cx(10) }} /> : undefined}
33
33
  </View>
34
34
  <SwitchButton
35
35
  thumbStyle={{ elevation: 0 }}
@@ -33,6 +33,7 @@ interface MoodPageUIState extends ScenePageUIState {
33
33
  export interface MoodPageProps {
34
34
  switchLedDpCode: string
35
35
  sceneDataDpCode: string
36
+ mixSceneDataDpCode: string
36
37
  workModeDpCode: string
37
38
  isSupportFan?: boolean
38
39
  isSupportUVC?: boolean
@@ -182,6 +183,7 @@ const MoodPage = () => {
182
183
  return setScene({
183
184
  scene: cloneDeep(mood),
184
185
  sceneDataDpCode: params.sceneDataDpCode,
186
+ mixSceneDataDpCode: params.mixSceneDataDpCode,
185
187
  workModeDpCode: params.workModeDpCode,
186
188
  workMode: mood ? WorkMode.Scene : (params.isSupportColor ? WorkMode.Colour : WorkMode.White),
187
189
  switchLedDpCode: params.switchLedDpCode
@@ -251,14 +253,14 @@ const MoodPage = () => {
251
253
  <Spacer height={cx(10)} />
252
254
  {
253
255
  state.scenes.length >= MAX_MOOD_COUNT &&
254
- <View style={styles.infoLine}>
255
- <Spacer height={cx(10)} />
256
- <InfoText
257
- icon={res.ic_warning_amber}
258
- text={Strings.getLang('mood_overview_warning_max_number_text')}
259
- contentColor={'#ff9500'} />
260
- <Spacer height={cx(6)} />
261
- </View>
256
+ <View style={styles.infoLine}>
257
+ <Spacer height={cx(10)} />
258
+ <InfoText
259
+ icon={res.ic_warning_amber}
260
+ text={Strings.getLang('mood_overview_warning_max_number_text')}
261
+ contentColor={'#ff9500'} />
262
+ <Spacer height={cx(6)} />
263
+ </View>
262
264
  }
263
265
  <FlatList
264
266
  // @ts-ignore
@@ -277,6 +279,7 @@ const MoodPage = () => {
277
279
  await setScene({
278
280
  scene: cloneDeep(item),
279
281
  sceneDataDpCode: params.sceneDataDpCode,
282
+ mixSceneDataDpCode: params.mixSceneDataDpCode,
280
283
  workModeDpCode: params.workModeDpCode,
281
284
  workMode: WorkMode.Scene,
282
285
  switchLedDpCode: params.switchLedDpCode
@@ -334,4 +337,4 @@ const styles = StyleSheet.create({
334
337
  },
335
338
  })
336
339
 
337
- export default MoodPage
340
+ export default MoodPage
@@ -1,24 +1,25 @@
1
- import { useState } from 'react'
2
- import { useUpdateEffect } from 'ahooks'
3
- import { Result } from '@ledvance/base/src/models/modules/Result'
1
+ import {useState} from 'react'
2
+ import {useUpdateEffect} from 'ahooks'
3
+ import {Result} from '@ledvance/base/src/models/modules/Result'
4
4
  import {
5
- getDefSceneList,
6
5
  getDefFantasyScene,
6
+ getDefSceneList,
7
7
  RemoteSceneInfo,
8
8
  SceneInfo,
9
9
  SceneNodeInfo,
10
10
  SceneUIState,
11
- StripSceneUIState,
12
- StripSceneInfo,
13
11
  StripNodeInfo,
12
+ StripSceneInfo,
13
+ StripSceneUIState,
14
14
  } from './SceneInfo'
15
- import { NativeApi } from '@ledvance/base/src/api/native'
16
- import { hex2Int, spliceByStep } from '@ledvance/base/src/utils/common'
17
- import { useDps, useFeatureHook } from '@ledvance/base/src/models/modules/NativePropsSlice'
15
+ import {NativeApi} from '@ledvance/base/src/api/native'
16
+ import {hex2Int, spliceByStep} from '@ledvance/base/src/utils/common'
17
+ import {useDps, useFeatureHook} from '@ledvance/base/src/models/modules/NativePropsSlice'
18
18
  import res from '@ledvance/base/src/res'
19
- import { Utils } from '@tuya/tuya-panel-lamp-sdk'
20
- import { parseJSON } from '@tuya/tuya-panel-lamp-sdk/lib/utils'
21
- import { WorkMode } from "@ledvance/base/src/utils/interface"
19
+ import {Utils} from '@tuya/tuya-panel-lamp-sdk'
20
+ import {parseJSON} from '@tuya/tuya-panel-lamp-sdk/lib/utils'
21
+ import {WorkMode} from "@ledvance/base/src/utils/interface"
22
+
22
23
  const { nToHS, toFixed, sToN } = Utils
23
24
 
24
25
  export function useWorkMode(): [WorkMode, (value: WorkMode) => Promise<Result<any>>] {
@@ -31,6 +32,7 @@ export function useSwitchLed(): [boolean, (value: boolean) => Promise<Result<any
31
32
 
32
33
  interface SceneDataType {
33
34
  sceneDataDpCode: string
35
+ mixSceneDataDpCode: string
34
36
  scene?: SceneUIState
35
37
  workModeDpCode: string
36
38
  workMode: WorkMode
@@ -55,8 +57,14 @@ export function useScene(params: LightType): [SceneDataType | undefined, (scene?
55
57
  const isFantasy = params.isStringLight || params.isStripLight
56
58
  console.log(scene.scene, isFantasy, '< --- scene')
57
59
  const dps = {}
58
- // @ts-ignore
59
- dps[scene.sceneDataDpCode] = scene.scene ? (isFantasy ? stripObj2Dp(scene.scene, params.isStringLight) : obj2Dp(scene.scene, params.isSupportFan, params.isSupportUVC)) : ''
60
+ if (scene.sceneDataDpCode && scene.scene) {
61
+ // @ts-ignore
62
+ dps[scene.sceneDataDpCode] = isFantasy ? stripObj2Dp(scene.scene, params.isStringLight) : obj2Dp(scene.scene, params.isSupportFan, params.isSupportUVC)
63
+ }
64
+ if (scene.mixSceneDataDpCode && scene.scene) {
65
+ // @ts-ignore
66
+ dps[scene.mixSceneDataDpCode] = mixScene2Dp(scene.scene)
67
+ }
60
68
  dps[scene.workModeDpCode] = scene.workMode
61
69
  dps[scene.switchLedDpCode] = true
62
70
  console.log(dps, '< --- dpss')
@@ -245,6 +253,50 @@ export function obj2Dp(scene: SceneInfo, isFan: boolean = false, isUVCFan?: bool
245
253
  return hex
246
254
  }
247
255
 
256
+ export function mixScene2Dp(scene: SceneInfo) {
257
+ if (!scene.speed) {
258
+ scene.speed = 12
259
+ }
260
+ if (!scene.mode) {
261
+ scene.mode = 0
262
+ }
263
+ const versionHex = Number(0).toString(16).padStart(2, '0')
264
+ const sceneNoHex = scene.id.toString(16).padStart(2, '0')
265
+ const onlyColor = scene.nodes.some(node => node.isColorNode)
266
+ const onlyWhite = scene.nodes.some(node => !node.isColorNode)
267
+
268
+ let whiteHex = ''
269
+ if (onlyColor) {
270
+ whiteHex = '0000'
271
+ } else {
272
+ whiteHex += '01' + scene.nodes.length.toString(16).padStart(2, '0') + Number(2).toString(16).padStart(2, '0') + scene.nodes.map(node => {
273
+ let nodeHex = ''
274
+ nodeHex += scene.speed.toString(16).padStart(2, '0')
275
+ nodeHex += scene.speed.toString(16).padStart(2, '0')
276
+ nodeHex += scene.mode.toString(16).padStart(2, '0')
277
+ nodeHex += (node.brightness * 10).toString(16).padStart(4, '0')
278
+ nodeHex += (node.colorTemp * 10).toString(16).padStart(4, '0')
279
+ return nodeHex
280
+ }).join('')
281
+ }
282
+ let colourHex = ''
283
+ if (onlyWhite) {
284
+ colourHex = '0000'
285
+ } else {
286
+ colourHex += '01' + scene.nodes.length.toString(16).padStart(2, '0') + Number(3).toString(16).padStart(2, '0') + scene.nodes.map(node => {
287
+ let nodeHex = ''
288
+ nodeHex += scene.speed.toString(16).padStart(2, '0')
289
+ nodeHex += scene.speed.toString(16).padStart(2, '0')
290
+ nodeHex += scene.mode.toString(16).padStart(2, '0')
291
+ nodeHex += node.h.toString(16).padStart(4, '0')
292
+ nodeHex += (node.s * 10).toString(16).padStart(4, '0')
293
+ nodeHex += (node.v * 10).toString(16).padStart(4, '0')
294
+ return nodeHex
295
+ }).join('')
296
+ }
297
+ return versionHex + sceneNoHex + whiteHex + colourHex
298
+ }
299
+
248
300
  export function saveScene(
249
301
  devId: string,
250
302
  scenes: SceneUIState[] | StripSceneUIState[],
@@ -63,9 +63,12 @@ const StaticMoodEditorPage = () => {
63
63
  if (state.currentNode.isColorNode) {
64
64
  return hsv2Hex(state.currentNode.h, s, 100)
65
65
  }
66
- if (moduleParams.isSupportTemperature) {
67
- return cctToColor(state.currentNode.colorTemp.toFixed())
66
+ if (moduleParams.isSupportColor) {
67
+ return hsv2Hex(state.currentNode.h, s, 100)
68
+ } else if (moduleParams.isSupportTemperature) {
69
+ return cctToColor(state.currentNode.colorTemp.toFixed());
68
70
  }
71
+ return '#fff'
69
72
  }, [state.currentNode.colorTemp])
70
73
 
71
74
  const getButtonStatus = () => {