@ledvance/group-ui-biz-bundle 1.0.14 → 1.0.16
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
|
@@ -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: '',
|
|
303
|
+
name: I18n.getLang('flag_leverkusen'),
|
|
304
304
|
icon: res.leverkusen_icon,
|
|
305
305
|
whiteColors: [
|
|
306
306
|
{ brightness: 100, colorTemp: 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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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 {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
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 {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
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
|
-
|
|
59
|
-
|
|
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[],
|