@iobroker/json-config 8.4.9 → 8.4.11
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/README.md +7 -1
- package/build/JsonConfigComponent/ConfigState.js +8 -2
- package/build/JsonConfigComponent/ConfigState.js.map +1 -1
- package/build/JsonConfigComponent/i18n/de.json +20 -0
- package/build/JsonConfigComponent/i18n/es.json +20 -0
- package/build/JsonConfigComponent/i18n/fr.json +20 -0
- package/build/JsonConfigComponent/i18n/it.json +20 -0
- package/build/JsonConfigComponent/i18n/nl.json +20 -0
- package/build/JsonConfigComponent/i18n/pl.json +20 -0
- package/build/JsonConfigComponent/i18n/pt.json +20 -0
- package/build/JsonConfigComponent/i18n/ru.json +20 -0
- package/build/JsonConfigComponent/i18n/uk.json +20 -0
- package/build/JsonConfigComponent/i18n/zh-cn.json +20 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1822,6 +1822,12 @@ The schema is used here: https://github.com/SchemaStore/schemastore/blob/6da29cd
|
|
|
1822
1822
|
### **WORK IN PROGRESS**
|
|
1823
1823
|
-->
|
|
1824
1824
|
## Changelog
|
|
1825
|
+
### 8.4.11 (2026-06-21)
|
|
1826
|
+
- (@GermanBluefox) Added missing translations
|
|
1827
|
+
|
|
1828
|
+
### 8.4.10 (2026-06-20)
|
|
1829
|
+
- (@GermanBluefox) Fixed state component
|
|
1830
|
+
|
|
1825
1831
|
### 8.4.9 (2026-06-19)
|
|
1826
1832
|
- (@GermanBluefox) Moved translations from adapter-react to this repository
|
|
1827
1833
|
|
|
@@ -1829,7 +1835,7 @@ The schema is used here: https://github.com/SchemaStore/schemastore/blob/6da29cd
|
|
|
1829
1835
|
- (@GermanBluefox) Allowed creating credentials directly in the `credential` component (templates with icons, filtered by `credentialType`; can be disabled with `disableCreation`)
|
|
1830
1836
|
|
|
1831
1837
|
### 8.4.7 (2026-06-07)
|
|
1832
|
-
- (@GermanBluefox) Added credential component
|
|
1838
|
+
- (@GermanBluefox) Added a credential component
|
|
1833
1839
|
|
|
1834
1840
|
### 8.4.5 (2026-05-30)
|
|
1835
1841
|
- (@GermanBluefox) Fixing help rendering
|
|
@@ -124,8 +124,14 @@ class ConfigState extends ConfigGeneric {
|
|
|
124
124
|
this.delayedUpdate.timer = null;
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
else
|
|
128
|
-
this.
|
|
127
|
+
else {
|
|
128
|
+
const oldValue = this.state.stateValue === null || this.state.stateValue === undefined
|
|
129
|
+
? null
|
|
130
|
+
: this.state.stateValue.toString();
|
|
131
|
+
const newValue = val === null || val === undefined ? null : val.toString();
|
|
132
|
+
if (oldValue !== newValue) {
|
|
133
|
+
this.setState({ stateValue: val });
|
|
134
|
+
}
|
|
129
135
|
}
|
|
130
136
|
};
|
|
131
137
|
detectType(obj) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigState.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigState.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport {\n TextField,\n IconButton,\n Button,\n Switch,\n Slider,\n Box,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n} from '@mui/material';\n\nimport { I18n, Icon, type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport type { ConfigItemState } from '../types';\nimport getIconByName from './Icons';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\n\nfunction valueBlinkOnce(theme: IobTheme, color?: string | boolean): any {\n if (typeof color === 'string') {\n return {\n '@keyframes newStateAnimationOnceColor': {\n '0%': {\n color,\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n },\n },\n animation: 'newStateAnimationOnceColor 2s ease-in-out',\n };\n }\n return {\n '@keyframes newStateAnimationOnce': {\n '0%': {\n color: '#00f900',\n },\n '80%': {\n color: theme.palette.mode === 'dark' ? '#518851' : '#008000',\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n },\n },\n animation: 'newStateAnimationOnce 2s ease-in-out',\n };\n}\n\ninterface ConfigStateProps extends ConfigGenericProps {\n schema: ConfigItemState;\n}\n\ninterface ConfigStateState extends ConfigGenericState {\n stateValue?: string | number | boolean | null;\n controlType?: 'text' | 'html' | 'input' | 'slider' | 'select' | 'button' | 'switch' | 'number';\n obj?: ioBroker.Object | null;\n objId?: string;\n}\n\nclass ConfigState extends ConfigGeneric<ConfigStateProps, ConfigStateState> {\n controlTimeout: ReturnType<typeof setTimeout> | null = null;\n\n delayedUpdate: { timer: ReturnType<typeof setTimeout> | null; value: string | boolean | number | null } = {\n timer: null,\n value: null,\n };\n\n private async getObjectID(): Promise<string> {\n let oid = (this.props.schema.oid || '').toString();\n if (oid.includes('${')) {\n oid = await this.getPatternAsync(oid, null, true);\n }\n\n if (this.props.schema.foreign) {\n return oid;\n }\n\n return `${this.props.schema.system ? 'system.adapter.' : ''}${this.props.oContext.adapterName}.${this.props.oContext.instance || 0}.${oid}`;\n }\n\n async componentDidMount(): Promise<void> {\n await super.componentDidMount();\n const objId = await this.getObjectID();\n const obj: ioBroker.StateObject = (await this.getCachedObject(objId)) as ioBroker.StateObject;\n\n if (obj?.common?.states && !this.props.schema.options) {\n // Normalize states to object\n if (Array.isArray(obj?.common?.states)) {\n // convert array to object\n const states: Record<string, string> = {};\n obj.common.states.forEach((state, index) => {\n states[index.toString()] = state;\n });\n obj.common.states = states;\n }\n if (!Object.keys(obj.common.states).length) {\n obj.common.states = undefined; // remove empty states\n }\n }\n\n const controlType = this.props.schema.control || this.detectType(obj);\n\n try {\n const state = await this.props.oContext.socket.getState(objId);\n\n this.setState({ stateValue: state ? state.val : null, controlType, obj, objId }, async () => {\n const objId = await this.getObjectID();\n await this.props.oContext.socket.subscribeState(objId, this.onStateChanged);\n });\n } catch (e) {\n console.error(`Cannot get state ${objId}: ${e}`);\n this.setState({ controlType, obj, objId });\n }\n }\n\n componentWillUnmount(): void {\n super.componentWillUnmount();\n if (this.state.objId) {\n this.props.oContext.socket.unsubscribeState(this.state.objId, this.onStateChanged);\n }\n if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n this.controlTimeout = null;\n if (this.state.objId) {\n this.props.oContext.socket\n .setState(this.state.objId, this.state.stateValue, false)\n .catch((e: Error) => console.error(`Cannot control value: ${e.toString()}`));\n }\n }\n }\n\n onStateChanged = (_id: string, state: ioBroker.State | null | undefined): void => {\n let val = state ? state.val : null;\n if (this.state.controlType === 'button' || this.state.controlType === 'switch') {\n val = !!val;\n if (this.state.stateValue !== val) {\n this.setState({ stateValue: val });\n }\n } else if (val !== null && (this.state.controlType === 'slider' || this.state.controlType === 'number')) {\n val = parseFloat(val as unknown as string);\n console.log(`${Date.now()} Received new value: ${val}`);\n if (val !== this.state.stateValue) {\n if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n this.delayedUpdate.value = val;\n this.delayedUpdate.timer = setTimeout(() => {\n this.setState({ stateValue: this.delayedUpdate.value });\n }, 500);\n } else if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n } else if (this.state.stateValue.toString() !== val.toString()) {\n this.setState({ stateValue: val });\n }\n };\n\n detectType(obj: ioBroker.StateObject): 'button' | 'switch' | 'slider' | 'input' | 'text' | 'select' {\n obj ||= {} as ioBroker.StateObject;\n obj.common ||= {} as ioBroker.StateCommon;\n\n // read an object\n if (obj.common.type === 'boolean') {\n if (this.props.schema.controlled !== false) {\n if (obj.common.read === false || this.props.schema.controlled === true) {\n return 'button';\n }\n if (obj.common.write || this.props.schema.controlled === true) {\n return 'switch';\n }\n }\n\n return 'text';\n }\n\n if (obj.common.type === 'number' && this.props.schema.controlled !== false) {\n if (obj.common.write || this.props.schema.controlled === true) {\n if (obj.common.states || this.props.schema.options) {\n return 'select';\n }\n if (obj.common.max !== undefined) {\n return 'slider';\n }\n return 'input';\n }\n return 'text';\n }\n\n if (obj.common.write && this.props.schema.controlled !== false) {\n if (obj.common.states || this.props.schema.options) {\n return 'select';\n }\n return 'input';\n }\n\n return 'text';\n }\n\n getNormalizedStates(): {\n label: string;\n value: number | string;\n hidden?: string | boolean;\n color?: string;\n }[] {\n let states: {\n label: string;\n value: number | string;\n hidden?: string | boolean;\n color?: string;\n }[];\n if (this.props.schema.options) {\n states = this.props.schema.options.map(state => {\n if (typeof state === 'string') {\n return { value: state, label: this.getText(state, this.props.schema.noTranslation) };\n }\n return {\n value: state.value,\n label: this.getText(state.label, this.props.schema.noTranslation),\n color: state.color,\n };\n });\n } else if (this.state.obj.common.states) {\n states = [];\n Object.keys(this.state.obj.common.states).forEach(key => {\n states.push({\n value: key,\n label: this.getText(this.state.obj.common.states[key], this.props.schema.noTranslation),\n });\n });\n } else {\n states = [];\n }\n\n return states;\n }\n\n renderItem(_error: string, disabled: boolean /*, defaultValue */): JSX.Element {\n if (!this.state.obj) {\n return null;\n }\n\n let content: JSX.Element;\n\n if (\n this.state.controlType === 'select' ||\n (!this.state.controlType &&\n (this.state.obj.common.type === 'number' || this.state.obj.common.type === 'string') &&\n this.state.obj.common.write !== false &&\n (this.props.schema.options || this.state.obj.common.states))\n ) {\n const states = this.getNormalizedStates();\n const item = states.find(it => it.value === this.state.stateValue);\n\n content = (\n <FormControl fullWidth>\n <InputLabel>{this.getText(this.props.schema.label)}</InputLabel>\n <Select\n value={this.state.stateValue}\n disabled={!!this.props.schema.readOnly || disabled}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n let value: string | number = this.state.stateValue as string | number;\n if (this.state.obj.common.type === 'number') {\n value = parseFloat((value as unknown as string).toString().replace(',', '.'));\n }\n void this.props.oContext.socket.setState(this.state.objId, value, false);\n });\n }}\n renderValue={(val: string) =>\n item?.color ? <div style={{ color: item.color }}>{item.label}</div> : val\n }\n >\n {states.map(item => (\n <MenuItem\n key={(item.value ?? '').toString()}\n value={item.value}\n style={{ color: item.color }}\n >\n ${item.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (\n this.state.controlType === 'button' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'boolean' &&\n ((this.state.obj.common.write && this.state.obj.common.read === false) ||\n this.state.obj.common.role?.includes('button')))\n ) {\n let icon: JSX.Element | null = null;\n if (this.props.schema.falseImage) {\n icon = getIconByName(this.props.schema.falseImage);\n }\n\n const text = this.getText(\n this.props.schema.falseText || this.props.schema.label,\n this.props.schema.noTranslation,\n );\n\n if (!text && icon) {\n content = (\n <IconButton\n style={this.props.schema.falseTextStyle}\n disabled={!!this.props.schema.readOnly}\n onClick={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined\n ? this.props.schema.buttonValue\n : true,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined ? this.props.schema.buttonValue : true,\n false,\n );\n }\n }}\n >\n {icon}\n </IconButton>\n );\n } else {\n content = (\n <Button\n variant={this.props.schema.variant || 'contained'}\n startIcon={icon}\n style={this.props.schema.falseTextStyle}\n disabled={disabled || !!this.props.schema.readOnly}\n onClick={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined\n ? this.props.schema.buttonValue\n : true,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined ? this.props.schema.buttonValue : true,\n false,\n );\n }\n }}\n >\n {text || (this.state.objId || '').split('.').pop()}\n </Button>\n );\n }\n } else if (\n this.state.controlType === 'input' ||\n (!this.state.controlType && this.state.obj.common.write && this.state.obj.common.type === 'string')\n ) {\n content = (\n <div style={{ width: '100%', display: 'flex', flexDirection: 'row', gap: 8, alignItems: 'baseline' }}>\n <TextField\n style={{ flex: 1 }}\n value={this.state.stateValue}\n variant=\"standard\"\n disabled={!!this.props.schema.readOnly || disabled}\n slotProps={{\n input: {\n endAdornment:\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) ||\n this.state.obj.common.unit ||\n undefined,\n },\n htmlInput: {\n readOnly: !!this.props.schema.readOnly,\n },\n }}\n onKeyUp={e => {\n if (this.props.schema.setOnEnterKey && e.key === 'Enter') {\n void this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }\n }}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n if (this.props.schema.setOnEnterKey || this.props.schema.showEnterButton) {\n return;\n }\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n this.controlTimeout = null;\n let value: string | number = this.state.stateValue as string | number;\n if (this.state.obj.common.type === 'number') {\n value = parseFloat((value as unknown as string).toString().replace(',', '.'));\n }\n\n await this.props.oContext.socket.setState(this.state.objId, value, false);\n }, this.props.schema.controlDelay || 0);\n });\n }}\n label={this.getText(this.props.schema.label)}\n helperText={this.renderHelp(\n this.props.schema.help,\n this.props.schema.helpLink,\n this.props.schema.noTranslation,\n )}\n />\n {this.props.schema.showEnterButton && !this.props.schema.readOnly && (\n <Button\n variant=\"outlined\"\n disabled={disabled}\n onClick={() => {\n void this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }}\n >\n {this.getText(\n typeof this.props.schema.showEnterButton === 'string'\n ? this.props.schema.showEnterButton\n : 'Set',\n )}\n </Button>\n )}\n </div>\n );\n } else {\n let fontSize: number | undefined;\n if (this.props.schema.size === 'normal') {\n fontSize = 16;\n } else if (this.props.schema.size === 'large') {\n fontSize = 20;\n } else if (typeof this.props.schema.size === 'number') {\n fontSize = this.props.schema.size;\n }\n let label = this.getText(this.props.schema.label, this.props.schema.noTranslation);\n\n const divStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n fontSize: fontSize || '1rem',\n gap: 8,\n };\n\n if (!this.props.schema.narrow) {\n divStyle.width = '100%';\n divStyle.justifyContent = 'space-between';\n }\n\n if (label.trim()) {\n if (!label.trim().endsWith(':') && this.props.schema.addColon) {\n label = `${label.trim()}:`;\n }\n }\n\n let blinkStyle: React.CSSProperties | undefined;\n if (this.props.schema.blinkOnUpdate) {\n blinkStyle = valueBlinkOnce(this.props.oContext.theme, this.props.schema.blinkOnUpdate);\n }\n\n let labelIcon: React.JSX.Element | undefined;\n if (this.props.schema.labelIcon) {\n labelIcon = (\n <Icon\n src={this.props.schema.labelIcon}\n style={{ marginRight: 4 }}\n />\n );\n }\n\n let labelControl: React.JSX.Element | undefined;\n if (label && labelIcon) {\n labelControl = (\n <div style={{ whiteSpace: 'nowrap' }}>\n {labelIcon}\n {label}\n </div>\n );\n } else if (label) {\n labelControl = <div style={{ whiteSpace: 'nowrap' }}>{label}</div>;\n } else if (labelIcon) {\n labelControl = labelIcon;\n }\n\n if (\n this.state.controlType === 'switch' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'boolean' &&\n ((this.state.obj.common.write && this.state.obj.common.read !== false) ||\n this.state.obj.common.role?.includes('switch')))\n ) {\n let iconFalse: JSX.Element | null = null;\n const textFalse = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n iconFalse = getIconByName(this.props.schema.falseImage, textFalse ? { marginLeft: 8 } : undefined);\n }\n let iconTrue: JSX.Element | null = null;\n const textTrue = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n iconTrue = getIconByName(this.props.schema.trueImage, textTrue ? { marginRight: 8 } : undefined);\n }\n\n content = (\n <Switch\n checked={!!this.state.stateValue}\n disabled={!!this.props.schema.readOnly || disabled}\n onChange={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n !this.state.stateValue,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n !this.state.stateValue,\n false,\n );\n }\n }}\n />\n );\n\n if (textFalse || iconFalse || textTrue || iconTrue) {\n content = (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: 14 }}>\n <span style={this.props.schema.falseTextStyle}>\n {textFalse}\n {iconFalse}\n </span>\n {content}\n <span style={this.props.schema.trueTextStyle}>\n {iconTrue}\n {textTrue}\n </span>\n </div>\n );\n }\n\n if (labelControl) {\n content = (\n <div style={divStyle}>\n {labelControl}\n {content}\n </div>\n );\n }\n } else if (\n this.state.controlType === 'slider' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'number' &&\n ((this.state.obj.common.write &&\n (this.state.obj.common.max !== undefined || this.state.obj.common.unit === '%')) ||\n this.state.obj.common.role?.includes('slider') ||\n this.state.obj.common.role?.includes('dimmer') ||\n this.state.obj.common.role?.includes('blind')))\n ) {\n let iconFalse: JSX.Element | null = null;\n const textFalse = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n iconFalse = getIconByName(this.props.schema.falseImage, textFalse ? { marginLeft: 8 } : undefined);\n }\n let iconTrue: JSX.Element | null = null;\n const textTrue = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n iconTrue = getIconByName(this.props.schema.trueImage, textTrue ? { marginRight: 8 } : undefined);\n }\n\n const min = this.props.schema.min ?? (this.state.obj.common.min || 0);\n const max = this.props.schema.max ?? this.state.obj.common.max ?? 100;\n const step = this.props.schema.step ?? (this.state.obj.common.step || 1);\n\n content = (\n <Slider\n style={{ width: '100%', flexGrow: 1 }}\n min={min}\n max={max}\n disabled={!!this.props.schema.readOnly || disabled}\n step={step}\n value={this.state.stateValue as number}\n valueLabelDisplay=\"auto\"\n valueLabelFormat={(value: number) => {\n let displayValue: string =\n this.props.schema.digits !== undefined\n ? value.toFixed(this.props.schema.digits)\n : value.toString();\n if (this.props.oContext.isFloatComma) {\n displayValue = displayValue.replace('.', ',');\n }\n return `${displayValue}${this.getText(this.props.schema.unit, this.props.schema.noTranslation) || this.state.obj.common.unit || ''}`;\n }}\n onChange={(_e: Event, value: number) => {\n this.setState({ stateValue: value }, (): void => {\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n console.log(`${Date.now()} Send new value: ${this.state.stateValue}`);\n this.controlTimeout = null;\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }, this.props.schema.controlDelay || 0);\n });\n }}\n />\n );\n\n if (textFalse || iconFalse || textTrue || iconTrue) {\n content = (\n <div\n style={{\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n alignItems: 'center',\n }}\n >\n <span style={{ marginRight: 16, ...this.props.schema.falseTextStyle }}>\n {textFalse}\n {iconFalse}\n </span>\n {content}\n <span style={{ marginLeft: 16, ...this.props.schema.trueTextStyle }}>\n {iconTrue}\n {textTrue}\n </span>\n </div>\n );\n }\n if (labelControl) {\n content = (\n <div style={divStyle}>\n {labelControl}\n {content}\n </div>\n );\n }\n } else if (\n this.state.obj.common.type === 'number' &&\n this.state.obj.common.write &&\n !this.state.controlType\n ) {\n // Auto-detection of the type\n const min = this.props.schema.min ?? this.state.obj.common.min ?? undefined;\n const max = this.props.schema.max ?? this.state.obj.common.max ?? undefined;\n const step = this.props.schema.step ?? this.state.obj.common.step ?? undefined;\n\n content = (\n <TextField\n variant=\"standard\"\n style={{ width: '100%' }}\n value={this.state.stateValue}\n type=\"number\"\n disabled={!!this.props.schema.readOnly || disabled}\n slotProps={{\n htmlInput: { min, max, step, readOnly: !!this.props.schema.readOnly },\n input: {\n endAdornment:\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) ||\n this.state.obj.common.unit ||\n undefined,\n },\n }}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n this.controlTimeout = null;\n const val = parseFloat(this.state.stateValue as unknown as string);\n await this.props.oContext.socket.setState(this.state.objId, val, false);\n }, this.props.schema.controlDelay || 0);\n });\n }}\n label={this.getText(this.props.schema.label, this.props.schema.noTranslation)}\n helperText={this.renderHelp(\n this.props.schema.help,\n this.props.schema.helpLink,\n this.props.schema.noTranslation,\n )}\n />\n );\n } else if (this.state.obj.common.type === 'boolean') {\n let icon: JSX.Element | null = null;\n let text: string;\n let style: React.CSSProperties | undefined;\n if (!this.state.stateValue) {\n text = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n icon = getIconByName(this.props.schema.falseImage, text ? { marginLeft: 8 } : undefined);\n }\n style = this.props.schema.falseTextStyle;\n } else {\n text = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n icon = getIconByName(this.props.schema.falseImage, text ? { marginRight: 8 } : undefined);\n }\n style = this.props.schema.trueTextStyle;\n }\n style = Object.assign(divStyle, style);\n\n content = (\n <div style={style}>\n {labelControl}\n <Box\n style={{ display: 'flex', alignItems: 'center', gap: 8 }}\n sx={blinkStyle}\n key={this.props.schema.blinkOnUpdate ? text : undefined}\n >\n {icon}\n {text || (this.state.stateValue ? I18n.t('jc_true') : I18n.t('jc_false'))}\n </Box>\n </div>\n );\n } else {\n // text or HTML\n const unit =\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) || this.state.obj.common.unit;\n\n let mappedValue = this.state.stateValue;\n\n // if options or states are defined, map the value to the label\n if (\n mappedValue !== null &&\n mappedValue !== undefined &&\n (this.props.schema.options || this.state.obj.common.states)\n ) {\n const states = this.getNormalizedStates();\n const state = states.find(s => s.value.toString() === mappedValue.toString());\n if (state) {\n mappedValue = state.label;\n }\n }\n\n let value;\n let key: string;\n if (this.state.controlType === 'html') {\n key = (mappedValue || '').toString();\n value = <span dangerouslySetInnerHTML={{ __html: mappedValue as string }} />;\n } else if (this.state.stateValue === null) {\n value = 'null';\n key = value;\n } else if (this.state.stateValue === undefined) {\n value = 'undefined';\n key = value;\n } else {\n if (this.props.schema.digits !== undefined && typeof mappedValue === 'number') {\n value = mappedValue.toFixed(this.props.schema.digits);\n if (this.props.oContext.isFloatComma) {\n value = value.replace('.', ',');\n }\n } else {\n value = mappedValue.toString();\n }\n key = value;\n }\n\n content = (\n <div style={divStyle}>\n {labelControl}\n <div style={{ display: 'flex', alignItems: 'baseline', gap: 4 }}>\n <Box\n sx={blinkStyle}\n key={this.props.schema.blinkOnUpdate ? key : undefined}\n >\n {value}\n </Box>\n {unit ? <span style={{ opacity: 0.7, fontSize: 'smaller' }}>{unit}</span> : null}\n </div>\n </div>\n );\n }\n }\n\n return content;\n }\n}\n\nexport default ConfigState;\n"]}
|
|
1
|
+
{"version":3,"file":"ConfigState.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EACH,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,EACN,GAAG,EACH,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAiB,MAAM,4BAA4B,CAAC;AAGvE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,aAAmE,MAAM,iBAAiB,CAAC;AAElG,SAAS,cAAc,CAAC,KAAe,EAAE,KAAwB;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACH,uCAAuC,EAAE;gBACrC,IAAI,EAAE;oBACF,KAAK;iBACR;gBACD,MAAM,EAAE;oBACJ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;iBACzD;aACJ;YACD,SAAS,EAAE,2CAA2C;SACzD,CAAC;IACN,CAAC;IACD,OAAO;QACH,kCAAkC,EAAE;YAChC,IAAI,EAAE;gBACF,KAAK,EAAE,SAAS;aACnB;YACD,KAAK,EAAE;gBACH,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;aAC/D;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aACzD;SACJ;QACD,SAAS,EAAE,sCAAsC;KACpD,CAAC;AACN,CAAC;AAaD,MAAM,WAAY,SAAQ,aAAiD;IACvE,cAAc,GAAyC,IAAI,CAAC;IAE5D,aAAa,GAA6F;QACtG,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;KACd,CAAC;IAEM,KAAK,CAAC,WAAW;QACrB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACf,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAChJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,GAAG,GAAyB,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAyB,CAAC;QAE9F,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpD,6BAA6B;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBACrC,0BAA0B;gBAC1B,MAAM,MAAM,GAA2B,EAAE,CAAC;gBAC1C,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;gBACrC,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,sBAAsB;YACzD,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEtE,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,oBAAoB,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,oBAAoB;QAChB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;qBACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;qBACxD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;IACL,CAAC;IAED,cAAc,GAAG,CAAC,GAAW,EAAE,KAAwC,EAAQ,EAAE;QAC7E,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7E,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtG,GAAG,GAAG,UAAU,CAAC,GAAwB,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,wBAAwB,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;oBAC3B,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC5D,CAAC,EAAE,GAAG,CAAC,CAAC;YACZ,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;YACpC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GACV,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;gBACjE,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3E,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,UAAU,CAAC,GAAyB;QAChC,GAAG,KAAK,EAA0B,CAAC;QACnC,GAAG,CAAC,MAAM,KAAK,EAA0B,CAAC;QAE1C,iBAAiB;QACjB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBACzC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACrE,OAAO,QAAQ,CAAC;gBACpB,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAC5D,OAAO,QAAQ,CAAC;gBACpB,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACzE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC5D,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjD,OAAO,QAAQ,CAAC;gBACpB,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,QAAQ,CAAC;gBACpB,CAAC;gBACD,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC7D,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjD,OAAO,QAAQ,CAAC;YACpB,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mBAAmB;QAMf,IAAI,MAKD,CAAC;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzF,CAAC;gBACD,OAAO;oBACH,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;oBACjE,KAAK,EAAE,KAAK,CAAC,KAAK;iBACrB,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACpD,MAAM,CAAC,IAAI,CAAC;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;iBAC1F,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,QAAiB,CAAC,mBAAmB;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,OAAoB,CAAC;QAEzB,IACI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;gBACpB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;gBACpF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;gBACrC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAClE,CAAC;YACC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEnE,OAAO,GAAG,CACN,oBAAC,WAAW,IAAC,SAAS;gBAClB,oBAAC,UAAU,QAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAc;gBAChE,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAClD,QAAQ,EAAE,CAAC,CAAC,EAAE;wBACV,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAS,EAAE;4BACrD,IAAI,KAAK,GAAoB,IAAI,CAAC,KAAK,CAAC,UAA6B,CAAC;4BACtE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCAC1C,KAAK,GAAG,UAAU,CAAE,KAA2B,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;4BAClF,CAAC;4BACD,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;wBAC7E,CAAC,CAAC,CAAC;oBACP,CAAC,EACD,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAG,IAAI,CAAC,KAAK,CAAO,CAAC,CAAC,CAAC,GAAG,IAG5E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAChB,oBAAC,QAAQ,IACL,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,EAClC,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;;oBAE1B,IAAI,CAAC,KAAK,CACL,CACd,CAAC,CACG,CACC,CACjB,CAAC;QACN,CAAC;aAAM,IACH,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;oBAClE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1D,CAAC;YACC,IAAI,IAAI,GAAuB,IAAI,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/B,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAClC,CAAC;YAEF,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBAChB,OAAO,GAAG,CACN,oBAAC,UAAU,IACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EACvC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EACtC,OAAO,EAAE,KAAK,IAAI,EAAE;wBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BAC5B,IAAI,CAAC,QAAQ,CAAC;gCACV,aAAa,EAAE,IAAI;gCACnB,eAAe,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;oCACvC,IAAI,MAAM,EAAE,CAAC;wCACT,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;4CACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW;4CAC/B,CAAC,CAAC,IAAI,EACV,KAAK,CACR,CAAC;oCACN,CAAC;gCACL,CAAC;6BACJ,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAClF,KAAK,CACR,CAAC;wBACN,CAAC;oBACL,CAAC,IAEA,IAAI,CACI,CAChB,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,CACN,oBAAC,MAAM,IACH,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,WAAW,EACjD,SAAS,EAAE,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EACvC,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAClD,OAAO,EAAE,KAAK,IAAI,EAAE;wBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BAC5B,IAAI,CAAC,QAAQ,CAAC;gCACV,aAAa,EAAE,IAAI;gCACnB,eAAe,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;oCACvC,IAAI,MAAM,EAAE,CAAC;wCACT,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;4CACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW;4CAC/B,CAAC,CAAC,IAAI,EACV,KAAK,CACR,CAAC;oCACN,CAAC;gCACL,CAAC;6BACJ,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAClF,KAAK,CACR,CAAC;wBACN,CAAC;oBACL,CAAC,IAEA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAC7C,CACZ,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IACH,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EACrG,CAAC;YACC,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;gBAChG,oBAAC,SAAS,IACN,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAC5B,OAAO,EAAC,UAAU,EAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAClD,SAAS,EAAE;wBACP,KAAK,EAAE;4BACH,YAAY,EACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;gCACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;gCAC1B,SAAS;yBAChB;wBACD,SAAS,EAAE;4BACP,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;yBACzC;qBACJ,EACD,OAAO,EAAE,CAAC,CAAC,EAAE;wBACT,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;4BACvD,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACpC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAK,CACR,CAAC;wBACN,CAAC;oBACL,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE;wBACV,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAS,EAAE;4BACrD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gCACvE,OAAO;4BACX,CAAC;4BACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gCACtB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;4BACtC,CAAC;4BACD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gCACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gCAC3B,IAAI,KAAK,GAAoB,IAAI,CAAC,KAAK,CAAC,UAA6B,CAAC;gCACtE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oCAC1C,KAAK,GAAG,UAAU,CAAE,KAA2B,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gCAClF,CAAC;gCAED,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;4BAC9E,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;wBAC5C,CAAC,CAAC,CAAC;oBACP,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,CACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAClC,GACH;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CACjE,oBAAC,MAAM,IACH,OAAO,EAAC,UAAU,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;wBACV,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACpC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAK,CACR,CAAC;oBACN,CAAC,IAEA,IAAI,CAAC,OAAO,CACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ;oBACjD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe;oBACnC,CAAC,CAAC,KAAK,CACd,CACI,CACZ,CACC,CACT,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,IAAI,QAA4B,CAAC;YACjC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAEnF,MAAM,QAAQ,GAAwB;gBAClC,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,QAAQ,IAAI,MAAM;gBAC5B,GAAG,EAAE,CAAC;aACT,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;gBACxB,QAAQ,CAAC,cAAc,GAAG,eAAe,CAAC;YAC9C,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC5D,KAAK,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;gBAC/B,CAAC;YACL,CAAC;YAED,IAAI,UAA2C,CAAC;YAChD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAClC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5F,CAAC;YAED,IAAI,SAAwC,CAAC;YAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC9B,SAAS,GAAG,CACR,oBAAC,IAAI,IACD,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAChC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,GAC3B,CACL,CAAC;YACN,CAAC;YAED,IAAI,YAA2C,CAAC;YAChD,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;gBACrB,YAAY,GAAG,CACX,6BAAK,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;oBAC/B,SAAS;oBACT,KAAK,CACJ,CACT,CAAC;YACN,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACf,YAAY,GAAG,6BAAK,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAG,KAAK,CAAO,CAAC;YACvE,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACnB,YAAY,GAAG,SAAS,CAAC;YAC7B,CAAC;YAED,IACI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ;gBACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;oBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;oBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;wBAClE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1D,CAAC;gBACC,IAAI,SAAS,GAAuB,IAAI,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7F,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC/B,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACvG,CAAC;gBACD,IAAI,QAAQ,GAAuB,IAAI,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC3F,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC9B,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrG,CAAC;gBAED,OAAO,GAAG,CACN,oBAAC,MAAM,IACH,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAChC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAClD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BAC5B,IAAI,CAAC,QAAQ,CAAC;gCACV,aAAa,EAAE,IAAI;gCACnB,eAAe,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;oCACvC,IAAI,MAAM,EAAE,CAAC;wCACT,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EACtB,KAAK,CACR,CAAC;oCACN,CAAC;gCACL,CAAC;6BACJ,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EACtB,KAAK,CACR,CAAC;wBACN,CAAC;oBACL,CAAC,GACH,CACL,CAAC;gBAEF,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;oBACjD,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;wBAC/D,8BAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc;4BACxC,SAAS;4BACT,SAAS,CACP;wBACN,OAAO;wBACR,8BAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa;4BACvC,QAAQ;4BACR,QAAQ,CACN,CACL,CACT,CAAC;gBACN,CAAC;gBAED,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,QAAQ;wBACf,YAAY;wBACZ,OAAO,CACN,CACT,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,IACH,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ;gBACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;oBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;wBACzB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;wBAChF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;wBAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;wBAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EACzD,CAAC;gBACC,IAAI,SAAS,GAAuB,IAAI,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7F,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC/B,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACvG,CAAC;gBACD,IAAI,QAAQ,GAAuB,IAAI,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC3F,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC9B,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrG,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC;gBACtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBAEzE,OAAO,GAAG,CACN,oBAAC,MAAM,IACH,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EACrC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAClD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAoB,EACtC,iBAAiB,EAAC,MAAM,EACxB,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE;wBAChC,IAAI,YAAY,GACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;4BAClC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;4BACzC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;wBAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;4BACnC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBAClD,CAAC;wBACD,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;oBACzI,CAAC,EACD,QAAQ,EAAE,CAAC,EAAS,EAAE,KAAa,EAAE,EAAE;wBACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAS,EAAE;4BAC5C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gCACtB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;4BACtC,CAAC;4BACD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gCACxC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gCACtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gCAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAK,CACR,CAAC;4BACN,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;wBAC5C,CAAC,CAAC,CAAC;oBACP,CAAC,GACH,CACL,CAAC;gBAEF,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;oBACjD,OAAO,GAAG,CACN,6BACI,KAAK,EAAE;4BACH,OAAO,EAAE,MAAM;4BACf,KAAK,EAAE,MAAM;4BACb,QAAQ,EAAE,CAAC;4BACX,UAAU,EAAE,QAAQ;yBACvB;wBAED,8BAAM,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE;4BAChE,SAAS;4BACT,SAAS,CACP;wBACN,OAAO;wBACR,8BAAM,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;4BAC9D,QAAQ;4BACR,QAAQ,CACN,CACL,CACT,CAAC;gBACN,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,QAAQ;wBACf,YAAY;wBACZ,OAAO,CACN,CACT,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,IACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;gBACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;gBAC3B,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EACzB,CAAC;gBACC,6BAA6B;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;gBAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;gBAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;gBAE/E,OAAO,GAAG,CACN,oBAAC,SAAS,IACN,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACxB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAC5B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAClD,SAAS,EAAE;wBACP,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACrE,KAAK,EAAE;4BACH,YAAY,EACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;gCACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;gCAC1B,SAAS;yBAChB;qBACJ,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE;wBACV,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAS,EAAE;4BACrD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gCACtB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;4BACtC,CAAC;4BACD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gCACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gCAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAA+B,CAAC,CAAC;gCACnE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;4BAC5E,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;wBAC5C,CAAC,CAAC,CAAC;oBACP,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAC7E,UAAU,EAAE,IAAI,CAAC,UAAU,CACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAClC,GACH,CACL,CAAC;YACN,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClD,IAAI,IAAI,GAAuB,IAAI,CAAC;gBACpC,IAAI,IAAY,CAAC;gBACjB,IAAI,KAAsC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;oBACzB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAClF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC/B,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC7F,CAAC;oBACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACJ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACjF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;wBAC9B,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC9F,CAAC;oBACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5C,CAAC;gBACD,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAEvC,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,KAAK;oBACZ,YAAY;oBACb,oBAAC,GAAG,IACA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EACxD,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;wBAEtD,IAAI;wBACJ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CACvE,CACJ,CACT,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,eAAe;gBACf,MAAM,IAAI,GACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAExG,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBAExC,+DAA+D;gBAC/D,IACI,WAAW,KAAK,IAAI;oBACpB,WAAW,KAAK,SAAS;oBACzB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7D,CAAC;oBACC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC9E,IAAI,KAAK,EAAE,CAAC;wBACR,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC9B,CAAC;gBACL,CAAC;gBAED,IAAI,KAAK,CAAC;gBACV,IAAI,GAAW,CAAC;gBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;oBACpC,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACrC,KAAK,GAAG,8BAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,WAAqB,EAAE,GAAI,CAAC;gBACjF,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxC,KAAK,GAAG,MAAM,CAAC;oBACf,GAAG,GAAG,KAAK,CAAC;gBAChB,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7C,KAAK,GAAG,WAAW,CAAC;oBACpB,GAAG,GAAG,KAAK,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;wBAC5E,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACtD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;4BACnC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACpC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACnC,CAAC;oBACD,GAAG,GAAG,KAAK,CAAC;gBAChB,CAAC;gBAED,OAAO,GAAG,CACN,6BAAK,KAAK,EAAE,QAAQ;oBACf,YAAY;oBACb,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE;wBAC3D,oBAAC,GAAG,IACA,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAErD,KAAK,CACJ;wBACL,IAAI,CAAC,CAAC,CAAC,8BAAM,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAG,IAAI,CAAQ,CAAC,CAAC,CAAC,IAAI,CAC9E,CACJ,CACT,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAED,eAAe,WAAW,CAAC","sourcesContent":["import React, { type JSX } from 'react';\n\nimport {\n TextField,\n IconButton,\n Button,\n Switch,\n Slider,\n Box,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n} from '@mui/material';\n\nimport { I18n, Icon, type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport type { ConfigItemState } from '../types';\nimport getIconByName from './Icons';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\n\nfunction valueBlinkOnce(theme: IobTheme, color?: string | boolean): any {\n if (typeof color === 'string') {\n return {\n '@keyframes newStateAnimationOnceColor': {\n '0%': {\n color,\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n },\n },\n animation: 'newStateAnimationOnceColor 2s ease-in-out',\n };\n }\n return {\n '@keyframes newStateAnimationOnce': {\n '0%': {\n color: '#00f900',\n },\n '80%': {\n color: theme.palette.mode === 'dark' ? '#518851' : '#008000',\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n },\n },\n animation: 'newStateAnimationOnce 2s ease-in-out',\n };\n}\n\ninterface ConfigStateProps extends ConfigGenericProps {\n schema: ConfigItemState;\n}\n\ninterface ConfigStateState extends ConfigGenericState {\n stateValue?: string | number | boolean | null;\n controlType?: 'text' | 'html' | 'input' | 'slider' | 'select' | 'button' | 'switch' | 'number';\n obj?: ioBroker.Object | null;\n objId?: string;\n}\n\nclass ConfigState extends ConfigGeneric<ConfigStateProps, ConfigStateState> {\n controlTimeout: ReturnType<typeof setTimeout> | null = null;\n\n delayedUpdate: { timer: ReturnType<typeof setTimeout> | null; value: string | boolean | number | null } = {\n timer: null,\n value: null,\n };\n\n private async getObjectID(): Promise<string> {\n let oid = (this.props.schema.oid || '').toString();\n if (oid.includes('${')) {\n oid = await this.getPatternAsync(oid, null, true);\n }\n\n if (this.props.schema.foreign) {\n return oid;\n }\n\n return `${this.props.schema.system ? 'system.adapter.' : ''}${this.props.oContext.adapterName}.${this.props.oContext.instance || 0}.${oid}`;\n }\n\n async componentDidMount(): Promise<void> {\n await super.componentDidMount();\n const objId = await this.getObjectID();\n const obj: ioBroker.StateObject = (await this.getCachedObject(objId)) as ioBroker.StateObject;\n\n if (obj?.common?.states && !this.props.schema.options) {\n // Normalize states to object\n if (Array.isArray(obj?.common?.states)) {\n // convert array to object\n const states: Record<string, string> = {};\n obj.common.states.forEach((state, index) => {\n states[index.toString()] = state;\n });\n obj.common.states = states;\n }\n if (!Object.keys(obj.common.states).length) {\n obj.common.states = undefined; // remove empty states\n }\n }\n\n const controlType = this.props.schema.control || this.detectType(obj);\n\n try {\n const state = await this.props.oContext.socket.getState(objId);\n\n this.setState({ stateValue: state ? state.val : null, controlType, obj, objId }, async () => {\n const objId = await this.getObjectID();\n await this.props.oContext.socket.subscribeState(objId, this.onStateChanged);\n });\n } catch (e) {\n console.error(`Cannot get state ${objId}: ${e}`);\n this.setState({ controlType, obj, objId });\n }\n }\n\n componentWillUnmount(): void {\n super.componentWillUnmount();\n if (this.state.objId) {\n this.props.oContext.socket.unsubscribeState(this.state.objId, this.onStateChanged);\n }\n if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n this.controlTimeout = null;\n if (this.state.objId) {\n this.props.oContext.socket\n .setState(this.state.objId, this.state.stateValue, false)\n .catch((e: Error) => console.error(`Cannot control value: ${e.toString()}`));\n }\n }\n }\n\n onStateChanged = (_id: string, state: ioBroker.State | null | undefined): void => {\n let val = state ? state.val : null;\n if (this.state.controlType === 'button' || this.state.controlType === 'switch') {\n val = !!val;\n if (this.state.stateValue !== val) {\n this.setState({ stateValue: val });\n }\n } else if (val !== null && (this.state.controlType === 'slider' || this.state.controlType === 'number')) {\n val = parseFloat(val as unknown as string);\n console.log(`${Date.now()} Received new value: ${val}`);\n if (val !== this.state.stateValue) {\n if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n this.delayedUpdate.value = val;\n this.delayedUpdate.timer = setTimeout(() => {\n this.setState({ stateValue: this.delayedUpdate.value });\n }, 500);\n } else if (this.delayedUpdate.timer) {\n clearTimeout(this.delayedUpdate.timer);\n this.delayedUpdate.timer = null;\n }\n } else {\n const oldValue =\n this.state.stateValue === null || this.state.stateValue === undefined\n ? null\n : this.state.stateValue.toString();\n const newValue = val === null || val === undefined ? null : val.toString();\n if (oldValue !== newValue) {\n this.setState({ stateValue: val });\n }\n }\n };\n\n detectType(obj: ioBroker.StateObject): 'button' | 'switch' | 'slider' | 'input' | 'text' | 'select' {\n obj ||= {} as ioBroker.StateObject;\n obj.common ||= {} as ioBroker.StateCommon;\n\n // read an object\n if (obj.common.type === 'boolean') {\n if (this.props.schema.controlled !== false) {\n if (obj.common.read === false || this.props.schema.controlled === true) {\n return 'button';\n }\n if (obj.common.write || this.props.schema.controlled === true) {\n return 'switch';\n }\n }\n\n return 'text';\n }\n\n if (obj.common.type === 'number' && this.props.schema.controlled !== false) {\n if (obj.common.write || this.props.schema.controlled === true) {\n if (obj.common.states || this.props.schema.options) {\n return 'select';\n }\n if (obj.common.max !== undefined) {\n return 'slider';\n }\n return 'input';\n }\n return 'text';\n }\n\n if (obj.common.write && this.props.schema.controlled !== false) {\n if (obj.common.states || this.props.schema.options) {\n return 'select';\n }\n return 'input';\n }\n\n return 'text';\n }\n\n getNormalizedStates(): {\n label: string;\n value: number | string;\n hidden?: string | boolean;\n color?: string;\n }[] {\n let states: {\n label: string;\n value: number | string;\n hidden?: string | boolean;\n color?: string;\n }[];\n if (this.props.schema.options) {\n states = this.props.schema.options.map(state => {\n if (typeof state === 'string') {\n return { value: state, label: this.getText(state, this.props.schema.noTranslation) };\n }\n return {\n value: state.value,\n label: this.getText(state.label, this.props.schema.noTranslation),\n color: state.color,\n };\n });\n } else if (this.state.obj.common.states) {\n states = [];\n Object.keys(this.state.obj.common.states).forEach(key => {\n states.push({\n value: key,\n label: this.getText(this.state.obj.common.states[key], this.props.schema.noTranslation),\n });\n });\n } else {\n states = [];\n }\n\n return states;\n }\n\n renderItem(_error: string, disabled: boolean /*, defaultValue */): JSX.Element {\n if (!this.state.obj) {\n return null;\n }\n\n let content: JSX.Element;\n\n if (\n this.state.controlType === 'select' ||\n (!this.state.controlType &&\n (this.state.obj.common.type === 'number' || this.state.obj.common.type === 'string') &&\n this.state.obj.common.write !== false &&\n (this.props.schema.options || this.state.obj.common.states))\n ) {\n const states = this.getNormalizedStates();\n const item = states.find(it => it.value === this.state.stateValue);\n\n content = (\n <FormControl fullWidth>\n <InputLabel>{this.getText(this.props.schema.label)}</InputLabel>\n <Select\n value={this.state.stateValue}\n disabled={!!this.props.schema.readOnly || disabled}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n let value: string | number = this.state.stateValue as string | number;\n if (this.state.obj.common.type === 'number') {\n value = parseFloat((value as unknown as string).toString().replace(',', '.'));\n }\n void this.props.oContext.socket.setState(this.state.objId, value, false);\n });\n }}\n renderValue={(val: string) =>\n item?.color ? <div style={{ color: item.color }}>{item.label}</div> : val\n }\n >\n {states.map(item => (\n <MenuItem\n key={(item.value ?? '').toString()}\n value={item.value}\n style={{ color: item.color }}\n >\n ${item.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (\n this.state.controlType === 'button' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'boolean' &&\n ((this.state.obj.common.write && this.state.obj.common.read === false) ||\n this.state.obj.common.role?.includes('button')))\n ) {\n let icon: JSX.Element | null = null;\n if (this.props.schema.falseImage) {\n icon = getIconByName(this.props.schema.falseImage);\n }\n\n const text = this.getText(\n this.props.schema.falseText || this.props.schema.label,\n this.props.schema.noTranslation,\n );\n\n if (!text && icon) {\n content = (\n <IconButton\n style={this.props.schema.falseTextStyle}\n disabled={!!this.props.schema.readOnly}\n onClick={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined\n ? this.props.schema.buttonValue\n : true,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined ? this.props.schema.buttonValue : true,\n false,\n );\n }\n }}\n >\n {icon}\n </IconButton>\n );\n } else {\n content = (\n <Button\n variant={this.props.schema.variant || 'contained'}\n startIcon={icon}\n style={this.props.schema.falseTextStyle}\n disabled={disabled || !!this.props.schema.readOnly}\n onClick={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined\n ? this.props.schema.buttonValue\n : true,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.props.schema.buttonValue !== undefined ? this.props.schema.buttonValue : true,\n false,\n );\n }\n }}\n >\n {text || (this.state.objId || '').split('.').pop()}\n </Button>\n );\n }\n } else if (\n this.state.controlType === 'input' ||\n (!this.state.controlType && this.state.obj.common.write && this.state.obj.common.type === 'string')\n ) {\n content = (\n <div style={{ width: '100%', display: 'flex', flexDirection: 'row', gap: 8, alignItems: 'baseline' }}>\n <TextField\n style={{ flex: 1 }}\n value={this.state.stateValue}\n variant=\"standard\"\n disabled={!!this.props.schema.readOnly || disabled}\n slotProps={{\n input: {\n endAdornment:\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) ||\n this.state.obj.common.unit ||\n undefined,\n },\n htmlInput: {\n readOnly: !!this.props.schema.readOnly,\n },\n }}\n onKeyUp={e => {\n if (this.props.schema.setOnEnterKey && e.key === 'Enter') {\n void this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }\n }}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n if (this.props.schema.setOnEnterKey || this.props.schema.showEnterButton) {\n return;\n }\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n this.controlTimeout = null;\n let value: string | number = this.state.stateValue as string | number;\n if (this.state.obj.common.type === 'number') {\n value = parseFloat((value as unknown as string).toString().replace(',', '.'));\n }\n\n await this.props.oContext.socket.setState(this.state.objId, value, false);\n }, this.props.schema.controlDelay || 0);\n });\n }}\n label={this.getText(this.props.schema.label)}\n helperText={this.renderHelp(\n this.props.schema.help,\n this.props.schema.helpLink,\n this.props.schema.noTranslation,\n )}\n />\n {this.props.schema.showEnterButton && !this.props.schema.readOnly && (\n <Button\n variant=\"outlined\"\n disabled={disabled}\n onClick={() => {\n void this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }}\n >\n {this.getText(\n typeof this.props.schema.showEnterButton === 'string'\n ? this.props.schema.showEnterButton\n : 'Set',\n )}\n </Button>\n )}\n </div>\n );\n } else {\n let fontSize: number | undefined;\n if (this.props.schema.size === 'normal') {\n fontSize = 16;\n } else if (this.props.schema.size === 'large') {\n fontSize = 20;\n } else if (typeof this.props.schema.size === 'number') {\n fontSize = this.props.schema.size;\n }\n let label = this.getText(this.props.schema.label, this.props.schema.noTranslation);\n\n const divStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n fontSize: fontSize || '1rem',\n gap: 8,\n };\n\n if (!this.props.schema.narrow) {\n divStyle.width = '100%';\n divStyle.justifyContent = 'space-between';\n }\n\n if (label.trim()) {\n if (!label.trim().endsWith(':') && this.props.schema.addColon) {\n label = `${label.trim()}:`;\n }\n }\n\n let blinkStyle: React.CSSProperties | undefined;\n if (this.props.schema.blinkOnUpdate) {\n blinkStyle = valueBlinkOnce(this.props.oContext.theme, this.props.schema.blinkOnUpdate);\n }\n\n let labelIcon: React.JSX.Element | undefined;\n if (this.props.schema.labelIcon) {\n labelIcon = (\n <Icon\n src={this.props.schema.labelIcon}\n style={{ marginRight: 4 }}\n />\n );\n }\n\n let labelControl: React.JSX.Element | undefined;\n if (label && labelIcon) {\n labelControl = (\n <div style={{ whiteSpace: 'nowrap' }}>\n {labelIcon}\n {label}\n </div>\n );\n } else if (label) {\n labelControl = <div style={{ whiteSpace: 'nowrap' }}>{label}</div>;\n } else if (labelIcon) {\n labelControl = labelIcon;\n }\n\n if (\n this.state.controlType === 'switch' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'boolean' &&\n ((this.state.obj.common.write && this.state.obj.common.read !== false) ||\n this.state.obj.common.role?.includes('switch')))\n ) {\n let iconFalse: JSX.Element | null = null;\n const textFalse = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n iconFalse = getIconByName(this.props.schema.falseImage, textFalse ? { marginLeft: 8 } : undefined);\n }\n let iconTrue: JSX.Element | null = null;\n const textTrue = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n iconTrue = getIconByName(this.props.schema.trueImage, textTrue ? { marginRight: 8 } : undefined);\n }\n\n content = (\n <Switch\n checked={!!this.state.stateValue}\n disabled={!!this.props.schema.readOnly || disabled}\n onChange={async () => {\n if (this.props.schema.confirm) {\n this.setState({\n confirmDialog: true,\n confirmCallback: async (result: boolean) => {\n if (result) {\n await this.props.oContext.socket.setState(\n this.state.objId,\n !this.state.stateValue,\n false,\n );\n }\n },\n });\n } else {\n await this.props.oContext.socket.setState(\n this.state.objId,\n !this.state.stateValue,\n false,\n );\n }\n }}\n />\n );\n\n if (textFalse || iconFalse || textTrue || iconTrue) {\n content = (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: 14 }}>\n <span style={this.props.schema.falseTextStyle}>\n {textFalse}\n {iconFalse}\n </span>\n {content}\n <span style={this.props.schema.trueTextStyle}>\n {iconTrue}\n {textTrue}\n </span>\n </div>\n );\n }\n\n if (labelControl) {\n content = (\n <div style={divStyle}>\n {labelControl}\n {content}\n </div>\n );\n }\n } else if (\n this.state.controlType === 'slider' ||\n (!this.state.controlType &&\n this.state.obj.common.type === 'number' &&\n ((this.state.obj.common.write &&\n (this.state.obj.common.max !== undefined || this.state.obj.common.unit === '%')) ||\n this.state.obj.common.role?.includes('slider') ||\n this.state.obj.common.role?.includes('dimmer') ||\n this.state.obj.common.role?.includes('blind')))\n ) {\n let iconFalse: JSX.Element | null = null;\n const textFalse = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n iconFalse = getIconByName(this.props.schema.falseImage, textFalse ? { marginLeft: 8 } : undefined);\n }\n let iconTrue: JSX.Element | null = null;\n const textTrue = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n iconTrue = getIconByName(this.props.schema.trueImage, textTrue ? { marginRight: 8 } : undefined);\n }\n\n const min = this.props.schema.min ?? (this.state.obj.common.min || 0);\n const max = this.props.schema.max ?? this.state.obj.common.max ?? 100;\n const step = this.props.schema.step ?? (this.state.obj.common.step || 1);\n\n content = (\n <Slider\n style={{ width: '100%', flexGrow: 1 }}\n min={min}\n max={max}\n disabled={!!this.props.schema.readOnly || disabled}\n step={step}\n value={this.state.stateValue as number}\n valueLabelDisplay=\"auto\"\n valueLabelFormat={(value: number) => {\n let displayValue: string =\n this.props.schema.digits !== undefined\n ? value.toFixed(this.props.schema.digits)\n : value.toString();\n if (this.props.oContext.isFloatComma) {\n displayValue = displayValue.replace('.', ',');\n }\n return `${displayValue}${this.getText(this.props.schema.unit, this.props.schema.noTranslation) || this.state.obj.common.unit || ''}`;\n }}\n onChange={(_e: Event, value: number) => {\n this.setState({ stateValue: value }, (): void => {\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n console.log(`${Date.now()} Send new value: ${this.state.stateValue}`);\n this.controlTimeout = null;\n await this.props.oContext.socket.setState(\n this.state.objId,\n this.state.stateValue,\n false,\n );\n }, this.props.schema.controlDelay || 0);\n });\n }}\n />\n );\n\n if (textFalse || iconFalse || textTrue || iconTrue) {\n content = (\n <div\n style={{\n display: 'flex',\n width: '100%',\n flexGrow: 1,\n alignItems: 'center',\n }}\n >\n <span style={{ marginRight: 16, ...this.props.schema.falseTextStyle }}>\n {textFalse}\n {iconFalse}\n </span>\n {content}\n <span style={{ marginLeft: 16, ...this.props.schema.trueTextStyle }}>\n {iconTrue}\n {textTrue}\n </span>\n </div>\n );\n }\n if (labelControl) {\n content = (\n <div style={divStyle}>\n {labelControl}\n {content}\n </div>\n );\n }\n } else if (\n this.state.obj.common.type === 'number' &&\n this.state.obj.common.write &&\n !this.state.controlType\n ) {\n // Auto-detection of the type\n const min = this.props.schema.min ?? this.state.obj.common.min ?? undefined;\n const max = this.props.schema.max ?? this.state.obj.common.max ?? undefined;\n const step = this.props.schema.step ?? this.state.obj.common.step ?? undefined;\n\n content = (\n <TextField\n variant=\"standard\"\n style={{ width: '100%' }}\n value={this.state.stateValue}\n type=\"number\"\n disabled={!!this.props.schema.readOnly || disabled}\n slotProps={{\n htmlInput: { min, max, step, readOnly: !!this.props.schema.readOnly },\n input: {\n endAdornment:\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) ||\n this.state.obj.common.unit ||\n undefined,\n },\n }}\n onChange={e => {\n this.setState({ stateValue: e.target.value }, (): void => {\n if (this.controlTimeout) {\n clearTimeout(this.controlTimeout);\n }\n this.controlTimeout = setTimeout(async () => {\n this.controlTimeout = null;\n const val = parseFloat(this.state.stateValue as unknown as string);\n await this.props.oContext.socket.setState(this.state.objId, val, false);\n }, this.props.schema.controlDelay || 0);\n });\n }}\n label={this.getText(this.props.schema.label, this.props.schema.noTranslation)}\n helperText={this.renderHelp(\n this.props.schema.help,\n this.props.schema.helpLink,\n this.props.schema.noTranslation,\n )}\n />\n );\n } else if (this.state.obj.common.type === 'boolean') {\n let icon: JSX.Element | null = null;\n let text: string;\n let style: React.CSSProperties | undefined;\n if (!this.state.stateValue) {\n text = this.getText(this.props.schema.falseText, this.props.schema.noTranslation);\n if (this.props.schema.falseImage) {\n icon = getIconByName(this.props.schema.falseImage, text ? { marginLeft: 8 } : undefined);\n }\n style = this.props.schema.falseTextStyle;\n } else {\n text = this.getText(this.props.schema.trueText, this.props.schema.noTranslation);\n if (this.props.schema.trueImage) {\n icon = getIconByName(this.props.schema.falseImage, text ? { marginRight: 8 } : undefined);\n }\n style = this.props.schema.trueTextStyle;\n }\n style = Object.assign(divStyle, style);\n\n content = (\n <div style={style}>\n {labelControl}\n <Box\n style={{ display: 'flex', alignItems: 'center', gap: 8 }}\n sx={blinkStyle}\n key={this.props.schema.blinkOnUpdate ? text : undefined}\n >\n {icon}\n {text || (this.state.stateValue ? I18n.t('jc_true') : I18n.t('jc_false'))}\n </Box>\n </div>\n );\n } else {\n // text or HTML\n const unit =\n this.getText(this.props.schema.unit, this.props.schema.noTranslation) || this.state.obj.common.unit;\n\n let mappedValue = this.state.stateValue;\n\n // if options or states are defined, map the value to the label\n if (\n mappedValue !== null &&\n mappedValue !== undefined &&\n (this.props.schema.options || this.state.obj.common.states)\n ) {\n const states = this.getNormalizedStates();\n const state = states.find(s => s.value.toString() === mappedValue.toString());\n if (state) {\n mappedValue = state.label;\n }\n }\n\n let value;\n let key: string;\n if (this.state.controlType === 'html') {\n key = (mappedValue || '').toString();\n value = <span dangerouslySetInnerHTML={{ __html: mappedValue as string }} />;\n } else if (this.state.stateValue === null) {\n value = 'null';\n key = value;\n } else if (this.state.stateValue === undefined) {\n value = 'undefined';\n key = value;\n } else {\n if (this.props.schema.digits !== undefined && typeof mappedValue === 'number') {\n value = mappedValue.toFixed(this.props.schema.digits);\n if (this.props.oContext.isFloatComma) {\n value = value.replace('.', ',');\n }\n } else {\n value = mappedValue.toString();\n }\n key = value;\n }\n\n content = (\n <div style={divStyle}>\n {labelControl}\n <div style={{ display: 'flex', alignItems: 'baseline', gap: 4 }}>\n <Box\n sx={blinkStyle}\n key={this.props.schema.blinkOnUpdate ? key : undefined}\n >\n {value}\n </Box>\n {unit ? <span style={{ opacity: 0.7, fontSize: 'smaller' }}>{unit}</span> : null}\n </div>\n </div>\n );\n }\n }\n\n return content;\n }\n}\n\nexport default ConfigState;\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
+
"jc_A credential with this name already exists": "Es existiert bereits eine Berechtigung mit diesem Namen.",
|
|
3
|
+
"jc_A unique name is required": "Ein eindeutiger Name ist erforderlich.",
|
|
2
4
|
"jc_Accept license": "Lizenz akzeptieren",
|
|
3
5
|
"jc_Actions": "Aktionen",
|
|
6
|
+
"jc_Add credential": "Anmeldeinformationen hinzufügen",
|
|
4
7
|
"jc_Add row": "Zeile hinzufügen",
|
|
5
8
|
"jc_All items are filtered out": "Alle Elemente sind herausgefiltert",
|
|
6
9
|
"jc_Append": "Anhängen",
|
|
@@ -9,10 +12,12 @@
|
|
|
9
12
|
"jc_Are you sure?": "Bist du sicher?",
|
|
10
13
|
"jc_Cancel": "Abbrechen",
|
|
11
14
|
"jc_Cannot add items with set filter": "Elemente mit festgelegtem Filter können nicht hinzugefügt werden",
|
|
15
|
+
"jc_Cannot create credential: %s": "Anmeldeinformationen konnten nicht erstellt werden: %s",
|
|
12
16
|
"jc_Cannot decode license": "Lizenz kann nicht entschlüsselt werden",
|
|
13
17
|
"jc_Cannot determine position: System settings are empty and GPS detection is disabled in browser": "Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",
|
|
14
18
|
"jc_Cannot read licenses: %s": "Lizenzen können nicht gelesen werden: %s",
|
|
15
19
|
"jc_Cannot retrieve options, as instance is offline": "Optionen können nicht abgerufen werden, da die Instanz offline ist",
|
|
20
|
+
"jc_Cannot save configuration because of error in configuration": "Die Konfiguration konnte aufgrund eines Fehlers nicht gespeichert werden.",
|
|
16
21
|
"jc_Cannot upload": "Kann nicht hochladen",
|
|
17
22
|
"jc_Chained certificate": "Chained Zertifikat",
|
|
18
23
|
"jc_Checked": "Geprüft",
|
|
@@ -25,9 +30,11 @@
|
|
|
25
30
|
"jc_Copied %s": "\"%s\" kopiert",
|
|
26
31
|
"jc_Copy content": "Inhalte kopieren",
|
|
27
32
|
"jc_Create": "Erstellen",
|
|
33
|
+
"jc_Credential type": "Anmeldeinformationstyp",
|
|
28
34
|
"jc_Define schedule": "Zeitplan definieren",
|
|
29
35
|
"jc_Delete": "Löschen",
|
|
30
36
|
"jc_Delete current row": "Aktuelle Zeile löschen",
|
|
37
|
+
"jc_Disable/Enable translation": "Übersetzung deaktivieren/aktivieren",
|
|
31
38
|
"jc_Discard": "Verwerfen",
|
|
32
39
|
"jc_Do not use let's encrypt": "Let's encrypt nicht verwenden",
|
|
33
40
|
"jc_Docker is not available": "Docker ist nicht verfügbar",
|
|
@@ -38,8 +45,10 @@
|
|
|
38
45
|
"jc_Expand/Collapse card": "Karte ein-/ausklappen",
|
|
39
46
|
"jc_Export configuration section": "Konfigurationsabschnitt exportieren",
|
|
40
47
|
"jc_Export data to %s file": "Daten in %s-Datei exportieren",
|
|
48
|
+
"jc_Export setting to JSON file": "Einstellungen in eine JSON-Datei exportieren",
|
|
41
49
|
"jc_Fallback custom certificates": "Benutzerdefinierte Fallback-Zertifikate",
|
|
42
50
|
"jc_File is too big. Max %sk allowed. Try use SVG.": "Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",
|
|
51
|
+
"jc_File will be deleted": "Die Datei wird gelöscht",
|
|
43
52
|
"jc_Filter and Data Actions": "Filter- und Datenaktionen",
|
|
44
53
|
"jc_Get %s access": "%s Zugriff erhalten",
|
|
45
54
|
"jc_If the button above does not work, you can authorize manually this app by visiting this url": "Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen",
|
|
@@ -47,11 +56,13 @@
|
|
|
47
56
|
"jc_Import and replace configuration section": "Konfigurationsabschnitt importieren und ersetzen",
|
|
48
57
|
"jc_Import data from %s file": "Daten aus %s-Datei importieren",
|
|
49
58
|
"jc_Import from %s": "Von %s importieren",
|
|
59
|
+
"jc_Import settings from JSON file": "Einstellungen aus einer JSON-Datei importieren",
|
|
50
60
|
"jc_Instance %s is alive": "Instanz %s ist aktiv",
|
|
51
61
|
"jc_Instance %s is not alive": "Instanz %s ist nicht aktiv",
|
|
52
62
|
"jc_Invalid JSON": "Ungültiges JSON",
|
|
53
63
|
"jc_Invalid JSON file.": "Ungültige JSON-Datei.",
|
|
54
64
|
"jc_Invalid JSON format. Expected an array.": "Ungültiges JSON-Format. Array erwartet.",
|
|
65
|
+
"jc_Invalid YAML": "Ungültiges YAML",
|
|
55
66
|
"jc_JSON editor": "JSON-Editor",
|
|
56
67
|
"jc_Latitude": "Breite",
|
|
57
68
|
"jc_License %s": "Lizenz %s",
|
|
@@ -59,6 +70,7 @@
|
|
|
59
70
|
"jc_License does not exist": "Lizenz existiert nicht",
|
|
60
71
|
"jc_License expired on %s": "Lizenz am %s abgelaufen",
|
|
61
72
|
"jc_License for other product \"%s\"": "Lizenz für anderes Produkt „%s“",
|
|
73
|
+
"jc_License is for version %s, but required version is %s": "Die Lizenz gilt für Version %s, benötigt wird jedoch Version %s.",
|
|
62
74
|
"jc_License must be converted": "Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.",
|
|
63
75
|
"jc_License not found in license manager. Do you want to read licenses from iobroker.net?": "Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?",
|
|
64
76
|
"jc_Listen on all IPs": "Zugriff von allen IPs zulassen",
|
|
@@ -68,6 +80,7 @@
|
|
|
68
80
|
"jc_Name": "Name",
|
|
69
81
|
"jc_No one license found in license manager": "Im Lizenzmanager wurde keine Lizenz gefunden",
|
|
70
82
|
"jc_No response from admin": "Keine Antwort vom Administrator",
|
|
83
|
+
"jc_Non-allowed duplicate entry \"%s\" in column \"%s\"": "Nicht zulässiger doppelter Eintrag \"%s\" in Spalte \"%s\"",
|
|
71
84
|
"jc_OAuth Client ID": "OAuth-Client-ID",
|
|
72
85
|
"jc_OAuth Client secret": "OAuth-Client-Secret",
|
|
73
86
|
"jc_Ok": "OK",
|
|
@@ -77,6 +90,7 @@
|
|
|
77
90
|
"jc_Please confirm": "Bitte bestätigen",
|
|
78
91
|
"jc_Please create license": "Bitte erstellen Sie eine Lizenz",
|
|
79
92
|
"jc_Please enter the license": "Bitte die Lizenz eingeben",
|
|
93
|
+
"jc_Please fill in all required fields": "Bitte füllen Sie alle Pflichtfelder aus.",
|
|
80
94
|
"jc_Port could be used by %s": "Port könnte von %s verwendet werden",
|
|
81
95
|
"jc_Port is already used by %s": "Port wird bereits von %s verwendet",
|
|
82
96
|
"jc_Press ENTER Key to add new item": "Die Eingabetaste drücken, um ein neues Element hinzuzufügen",
|
|
@@ -85,8 +99,11 @@
|
|
|
85
99
|
"jc_Public certificate": "Öffentliches Zertifikat",
|
|
86
100
|
"jc_Renew %s access": "%s Zugriff erneuern",
|
|
87
101
|
"jc_Replace": "Ersetzen",
|
|
102
|
+
"jc_Request data by instance": "Daten pro Instanz anfordern",
|
|
88
103
|
"jc_Request timed out": "Zeitüberschreitung der Anforderung",
|
|
104
|
+
"jc_Result": "Ergebnis",
|
|
89
105
|
"jc_Save": "Speichern",
|
|
106
|
+
"jc_Save configuration?": "Konfiguration speichern?",
|
|
90
107
|
"jc_Serial number (UUID)": "Seriennummer (UUID)",
|
|
91
108
|
"jc_Serial number (UUID) \"%s\" in license is for other device.": "Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.",
|
|
92
109
|
"jc_Show/hide filter input": "Filtereingabe ein-/ausblenden",
|
|
@@ -97,6 +114,7 @@
|
|
|
97
114
|
"jc_System language": "Systemsprache",
|
|
98
115
|
"jc_Take browser position": "Position vom Browser einnehmen",
|
|
99
116
|
"jc_Take position from system settings": "Position aus den Systemeinstellungen übernehmen",
|
|
117
|
+
"jc_Template": "Vorlage",
|
|
100
118
|
"jc_Use all available let's encrypt certificates": "Alle verfügbaren Zertifikate von Let's encrypt benutzen",
|
|
101
119
|
"jc_Use system settings for position": "Systemeinstellungen für die Position verwenden",
|
|
102
120
|
"jc_Used system settings": "Systemeinstellungen",
|
|
@@ -105,6 +123,8 @@
|
|
|
105
123
|
"jc_YAML editor": "YAML-Editor",
|
|
106
124
|
"jc_Yes": "Ja",
|
|
107
125
|
"jc_You can filter entries by entering here some text": "Sie können Einträge filtern, indem Sie hier Text eingeben",
|
|
126
|
+
"jc_[JsonConfig] Failed to open JSON File": "[JsonConfig] Fehler beim Öffnen der JSON-Datei",
|
|
127
|
+
"jc_[JsonConfig] Failed to parse JSON file": "[JsonConfig] Fehler beim Parsen der JSON-Datei",
|
|
108
128
|
"jc___different__": "unterschiedlich",
|
|
109
129
|
"jc_false": "FALSCH",
|
|
110
130
|
"jc_locally": "örtlich",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
+
"jc_A credential with this name already exists": "Ya existe una credencial con ese nombre.",
|
|
3
|
+
"jc_A unique name is required": "Se requiere un nombre único.",
|
|
2
4
|
"jc_Accept license": "Aceptar licencia",
|
|
3
5
|
"jc_Actions": "Comportamiento",
|
|
6
|
+
"jc_Add credential": "Agregar credencial",
|
|
4
7
|
"jc_Add row": "Añadir fila",
|
|
5
8
|
"jc_All items are filtered out": "Todos los elementos se filtran",
|
|
6
9
|
"jc_Append": "Adjuntar",
|
|
@@ -9,10 +12,12 @@
|
|
|
9
12
|
"jc_Are you sure?": "¿Estás seguro?",
|
|
10
13
|
"jc_Cancel": "Cancelar",
|
|
11
14
|
"jc_Cannot add items with set filter": "No se pueden agregar elementos con el filtro establecido",
|
|
15
|
+
"jc_Cannot create credential: %s": "No se puede crear la credencial: %s",
|
|
12
16
|
"jc_Cannot decode license": "No se puede decodificar la licencia",
|
|
13
17
|
"jc_Cannot determine position: System settings are empty and GPS detection is disabled in browser": "No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",
|
|
14
18
|
"jc_Cannot read licenses: %s": "No se pueden leer licencias: %s",
|
|
15
19
|
"jc_Cannot retrieve options, as instance is offline": "No se pueden recuperar las opciones, ya que la instancia está fuera de línea",
|
|
20
|
+
"jc_Cannot save configuration because of error in configuration": "No se puede guardar la configuración debido a un error en la configuración.",
|
|
16
21
|
"jc_Cannot upload": "no se puede cargar",
|
|
17
22
|
"jc_Chained certificate": "certificado encadenado",
|
|
18
23
|
"jc_Checked": "Comprobado",
|
|
@@ -25,9 +30,11 @@
|
|
|
25
30
|
"jc_Copied %s": "Copiado \"%s\"",
|
|
26
31
|
"jc_Copy content": "Copiar contenido",
|
|
27
32
|
"jc_Create": "Crear",
|
|
33
|
+
"jc_Credential type": "Tipo de credencial",
|
|
28
34
|
"jc_Define schedule": "Definir horario",
|
|
29
35
|
"jc_Delete": "Eliminar",
|
|
30
36
|
"jc_Delete current row": "Eliminar fila actual",
|
|
37
|
+
"jc_Disable/Enable translation": "Desactivar/Activar traducción",
|
|
31
38
|
"jc_Discard": "Desechar",
|
|
32
39
|
"jc_Do not use let's encrypt": "No use vamos a cifrar",
|
|
33
40
|
"jc_Docker is not available": "Docker no está disponible",
|
|
@@ -38,8 +45,10 @@
|
|
|
38
45
|
"jc_Expand/Collapse card": "Expandir/Contraer tarjeta",
|
|
39
46
|
"jc_Export configuration section": "Exportar sección de configuración",
|
|
40
47
|
"jc_Export data to %s file": "Exportar datos al archivo %s",
|
|
48
|
+
"jc_Export setting to JSON file": "Exportar configuración a un archivo JSON",
|
|
41
49
|
"jc_Fallback custom certificates": "Certificados personalizados alternativos",
|
|
42
50
|
"jc_File is too big. Max %sk allowed. Try use SVG.": "El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",
|
|
51
|
+
"jc_File will be deleted": "El archivo será eliminado",
|
|
43
52
|
"jc_Filter and Data Actions": "Acciones de filtrado y datos",
|
|
44
53
|
"jc_Get %s access": "Obtener %s acceso",
|
|
45
54
|
"jc_If the button above does not work, you can authorize manually this app by visiting this url": "Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL",
|
|
@@ -47,11 +56,13 @@
|
|
|
47
56
|
"jc_Import and replace configuration section": "Importar y reemplazar sección de configuración",
|
|
48
57
|
"jc_Import data from %s file": "Importar datos del archivo %s",
|
|
49
58
|
"jc_Import from %s": "Importar desde %s",
|
|
59
|
+
"jc_Import settings from JSON file": "Importar configuración desde un archivo JSON",
|
|
50
60
|
"jc_Instance %s is alive": "Instancia %s está vivo",
|
|
51
61
|
"jc_Instance %s is not alive": "Instancia %s no está vivo",
|
|
52
62
|
"jc_Invalid JSON": "JSON no válido",
|
|
53
63
|
"jc_Invalid JSON file.": "Archivo JSON inválido.",
|
|
54
64
|
"jc_Invalid JSON format. Expected an array.": "Formato JSON inválido. Se esperaba un array.",
|
|
65
|
+
"jc_Invalid YAML": "YAML no válido",
|
|
55
66
|
"jc_JSON editor": "editor JSON",
|
|
56
67
|
"jc_Latitude": "Latitud",
|
|
57
68
|
"jc_License %s": "Licencia %s",
|
|
@@ -59,6 +70,7 @@
|
|
|
59
70
|
"jc_License does not exist": "La licencia no existe",
|
|
60
71
|
"jc_License expired on %s": "La licencia venció el %s",
|
|
61
72
|
"jc_License for other product \"%s\"": "Licencia para otro producto \"%s\"",
|
|
73
|
+
"jc_License is for version %s, but required version is %s": "La licencia es para la versión %s, pero la versión requerida es %s.",
|
|
62
74
|
"jc_License must be converted": "La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.",
|
|
63
75
|
"jc_License not found in license manager. Do you want to read licenses from iobroker.net?": "Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?",
|
|
64
76
|
"jc_Listen on all IPs": "Escuche en todas las IP",
|
|
@@ -68,6 +80,7 @@
|
|
|
68
80
|
"jc_Name": "Nombre",
|
|
69
81
|
"jc_No one license found in license manager": "No se encontró ninguna licencia en el administrador de licencias",
|
|
70
82
|
"jc_No response from admin": "No hay respuesta del administrador",
|
|
83
|
+
"jc_Non-allowed duplicate entry \"%s\" in column \"%s\"": "Entrada duplicada no permitida \"%s\" en la columna \"%s\"",
|
|
71
84
|
"jc_OAuth Client ID": "ID de cliente OAuth",
|
|
72
85
|
"jc_OAuth Client secret": "Secreto de cliente OAuth",
|
|
73
86
|
"jc_Ok": "Okay",
|
|
@@ -77,6 +90,7 @@
|
|
|
77
90
|
"jc_Please confirm": "Por favor confirmar",
|
|
78
91
|
"jc_Please create license": "Por favor cree una licencia",
|
|
79
92
|
"jc_Please enter the license": "Por favor ingrese la licencia",
|
|
93
|
+
"jc_Please fill in all required fields": "Por favor, rellene todos los campos obligatorios.",
|
|
80
94
|
"jc_Port could be used by %s": "El puerto podría ser utilizado por %s",
|
|
81
95
|
"jc_Port is already used by %s": "El puerto ya está en uso por %s",
|
|
82
96
|
"jc_Press ENTER Key to add new item": "Presione la tecla ENTER para agregar un nuevo elemento",
|
|
@@ -85,8 +99,11 @@
|
|
|
85
99
|
"jc_Public certificate": "Certificado público",
|
|
86
100
|
"jc_Renew %s access": "Renovar el acceso a %s",
|
|
87
101
|
"jc_Replace": "Reemplazar",
|
|
102
|
+
"jc_Request data by instance": "Solicitar datos por instancia",
|
|
88
103
|
"jc_Request timed out": "Tiempo de espera agotado",
|
|
104
|
+
"jc_Result": "Resultado",
|
|
89
105
|
"jc_Save": "Salvar",
|
|
106
|
+
"jc_Save configuration?": "¿Guardar configuración?",
|
|
90
107
|
"jc_Serial number (UUID)": "Número de serie (UUID)",
|
|
91
108
|
"jc_Serial number (UUID) \"%s\" in license is for other device.": "El número de serie (UUID) \"%s\" en la licencia es para otro dispositivo.",
|
|
92
109
|
"jc_Show/hide filter input": "Mostrar/ocultar entrada de filtro",
|
|
@@ -97,6 +114,7 @@
|
|
|
97
114
|
"jc_System language": "Lenguaje del sistema",
|
|
98
115
|
"jc_Take browser position": "Tomar posición desde el navegador",
|
|
99
116
|
"jc_Take position from system settings": "Tomar posición desde la configuración del sistema",
|
|
117
|
+
"jc_Template": "Plantilla",
|
|
100
118
|
"jc_Use all available let's encrypt certificates": "Utilice todos los certificados let's encrypt disponibles",
|
|
101
119
|
"jc_Use system settings for position": "Usar la configuración del sistema para la posición",
|
|
102
120
|
"jc_Used system settings": "Configuraciones del sistema usadas",
|
|
@@ -105,6 +123,8 @@
|
|
|
105
123
|
"jc_YAML editor": "Editor YAML",
|
|
106
124
|
"jc_Yes": "Sí",
|
|
107
125
|
"jc_You can filter entries by entering here some text": "Puede filtrar las entradas ingresando aquí algún texto",
|
|
126
|
+
"jc_[JsonConfig] Failed to open JSON File": "[JsonConfig] Error al abrir el archivo JSON",
|
|
127
|
+
"jc_[JsonConfig] Failed to parse JSON file": "[JsonConfig] Error al analizar el archivo JSON",
|
|
108
128
|
"jc___different__": "diferente",
|
|
109
129
|
"jc_false": "FALSO",
|
|
110
130
|
"jc_locally": "en la zona",
|