@iobroker/adapter-react-v5 3.0.11 → 3.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IconSelector.js","names":["IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","rooms","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","devices","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","onChange","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"sources":["IconSelector.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\nimport devices from '../assets/devices/list.json';\nimport rooms from '../assets/rooms/list.json';\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\"\n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\"\n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('ra_Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return <Tooltip title={this.state.names[i] || ''} key={i}>\n <IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n (this.props.onSelect || this.props.onChange)(icon))\n }\n size=\"large\"\n >\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton>\n </Tooltip>;\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('ra_Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func, // one of onSelect or onChange are required\n onChange: PropTypes.func,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"mappings":"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"}
1
+ {"version":3,"file":"IconSelector.js","names":["devices","rooms","IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","onChange","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"sources":["IconSelector.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\n// import devices from '../assets/devices/list.json';\nconst devices = [\n {\n \"_id\": \"hood\",\n \"name\": {\n \"en\": \"Hood\",\n \"ru\": \"Вытяжка\",\n \"de\": \"Abzugshaube\",\n \"fr\": \"Capot\",\n \"it\": \"Cappe\",\n \"nl\": \"Hood\",\n \"pl\": \"Okapy\",\n \"pt\": \"Hood\",\n \"es\": \"Campana\",\n \"zh-cn\": \"抽油烟机\"\n },\n \"icon\": \"Hoods.svg\"\n },\n {\n \"_id\": \"alarm_system\",\n \"name\": {\n \"en\": \"Alarm System\",\n \"ru\": \"Сигнализация\",\n \"de\": \"Alarmanlage\",\n \"fr\": \"Systèmes D'Alarme\",\n \"it\": \"Sistemi Di Allarme\",\n \"nl\": \"Alarm Systems\",\n \"pl\": \"Systemy Alarmowe\",\n \"pt\": \"Sistemas De Alarme\",\n \"es\": \"Sistemas De Alarma\",\n \"zh-cn\": \"报警系统\"\n },\n \"icon\": \"Alarm Systems.svg\"\n },\n {\n \"_id\": \"battery_status\",\n \"name\": {\n \"en\": \"Battery Status\",\n \"ru\": \"Заряд батареи\",\n \"de\": \"Batteriestatus\",\n \"fr\": \"État De La Batterie\",\n \"it\": \"Stato Della Batteria\",\n \"nl\": \"Batterij Status\",\n \"pl\": \"Stan Baterii\",\n \"pt\": \"Estado Da Bateria\",\n \"es\": \"Estado De La Batería\",\n \"zh-cn\": \"电池状态\"\n },\n \"icon\": \"Battery Status.svg\"\n },\n {\n \"_id\": \"lighting\",\n \"name\": {\n \"en\": \"Lighting\",\n \"ru\": \"Светильник\",\n \"de\": \"Beleuchtung\",\n \"fr\": \"Éclairages\",\n \"it\": \"Illuminazione\",\n \"nl\": \"Verlichting\",\n \"pl\": \"Oprawy Oświetleniowe\",\n \"pt\": \"Iluminações\",\n \"es\": \"Iluminaciones\",\n \"zh-cn\": \"照明\"\n },\n \"icon\": \"Lightings.svg\"\n },\n {\n \"_id\": \"shading\",\n \"name\": {\n \"en\": \"Shading\",\n \"ru\": \"Затенение\",\n \"de\": \"Beschattungen\",\n \"fr\": \"Ombres\",\n \"it\": \"Ombreggiatura\",\n \"nl\": \"Shading\",\n \"pl\": \"Zacienienie\",\n \"pt\": \"Shading\",\n \"es\": \"Sombreado\",\n \"zh-cn\": \"底纹\"\n },\n \"icon\": \"Shading.svg\"\n },\n {\n \"_id\": \"irrigation\",\n \"name\": {\n \"en\": \"Irrigation\",\n \"ru\": \"Орошение\",\n \"de\": \"Bewässerung\",\n \"fr\": \"Irrigation\",\n \"it\": \"Irrigazione\",\n \"nl\": \"Irrigatie\",\n \"pl\": \"Nawadnianie\",\n \"pt\": \"Irrigação\",\n \"es\": \"Irrigación\",\n \"zh-cn\": \"灌溉\"\n },\n \"icon\": \"Irrigation.svg\"\n },\n {\n \"_id\": \"iron\",\n \"name\": {\n \"en\": \"Iron\",\n \"ru\": \"Утюг\",\n \"de\": \"Bügeleisen\",\n \"fr\": \"Le Fer\",\n \"it\": \"Ferro\",\n \"nl\": \"Ijzer\",\n \"pl\": \"Żelazo\",\n \"pt\": \"Ferro\",\n \"es\": \"Hierro\",\n \"zh-cn\": \"铁\"\n },\n \"icon\": \"Iron.svg\"\n },\n {\n \"_id\": \"computer\",\n \"name\": {\n \"en\": \"Computer\",\n \"ru\": \"Компьютер\",\n \"de\": \"Rechner\",\n \"fr\": \"L'Ordinateur\",\n \"it\": \"Computer\",\n \"nl\": \"Computer\",\n \"pl\": \"Komputer\",\n \"pt\": \"Computador\",\n \"es\": \"Ordenador\",\n \"zh-cn\": \"电脑\"\n },\n \"icon\": \"Computer.svg\"\n },\n {\n \"_id\": \"ceiling_spotlight\",\n \"name\": {\n \"en\": \"Ceiling Spotlight\",\n \"ru\": \"Потолочный прожектор\",\n \"de\": \"Deckenspot\",\n \"fr\": \"Plafond Spotlight\",\n \"it\": \"Faretti A Soffitto\",\n \"nl\": \"Plafond Spotlight\",\n \"pl\": \"Reflektory Sufitowe\",\n \"pt\": \"Tecto Foco\",\n \"es\": \"Focos De Techo\",\n \"zh-cn\": \"天花射灯\"\n },\n \"icon\": \"Ceiling Spotlights.svg\"\n },\n {\n \"_id\": \"printer\",\n \"name\": {\n \"en\": \"Printer\",\n \"de\": \"Drucker\",\n \"ru\": \"Принтер\",\n \"pt\": \"Impressora\",\n \"nl\": \"Printer\",\n \"fr\": \"Imprimante\",\n \"it\": \"Stampante\",\n \"es\": \"Impresora\",\n \"pl\": \"Drukarka\",\n \"zh-cn\": \"打印机\"\n },\n \"icon\": \"Printer.svg\"\n },\n {\n \"_id\": \"power_consumption\",\n \"name\": {\n \"en\": \"Power Consumption\",\n \"ru\": \"Потребляемая мощность\",\n \"de\": \"Stromverbrauch\",\n \"fr\": \"Consommation D'Énergie\",\n \"it\": \"Consumo Di Energia\",\n \"nl\": \"Energieverbruik\",\n \"pl\": \"Pobór Energii\",\n \"pt\": \"Consumo De Energia\",\n \"es\": \"El Consumo De Energía\",\n \"zh-cn\": \"能量消耗\"\n },\n \"icon\": \"Power Consumption.svg\"\n },\n {\n \"_id\": \"window\",\n \"name\": {\n \"en\": \"Window\",\n \"ru\": \"Окно\",\n \"de\": \"Fenster\",\n \"fr\": \"La Fenêtre\",\n \"it\": \"Finestra\",\n \"nl\": \"Venster\",\n \"pl\": \"Okno\",\n \"pt\": \"Janela\",\n \"es\": \"Ventana\",\n \"zh-cn\": \"窗户\"\n },\n \"icon\": \"Window.svg\"\n },\n {\n \"_id\": \"garage_door\",\n \"name\": {\n \"en\": \"Garage Door\",\n \"ru\": \"Гаражные Ворота\",\n \"de\": \"Garagentor\",\n \"fr\": \"Portes De Garage\",\n \"it\": \"Garage Door\",\n \"nl\": \"Garage Door\",\n \"pl\": \"Bramy Garażowe\",\n \"pt\": \"Portas De Garagem\",\n \"es\": \"Las Puertas De Garaje\",\n \"zh-cn\": \"车库门\"\n },\n \"icon\": \"Garage Doors.svg\"\n },\n {\n \"_id\": \"hairdryer\",\n \"name\": {\n \"en\": \"Hairdryer\",\n \"ru\": \"Фен\",\n \"de\": \"Haartrockner\",\n \"fr\": \"Sèche-Cheveux\",\n \"it\": \"Asciugacapelli\",\n \"nl\": \"Haardroger\",\n \"pl\": \"Suszarka Do Włosów\",\n \"pt\": \"Secador De Cabelo\",\n \"es\": \"Secador De Pelo\",\n \"zh-cn\": \"电吹风\"\n },\n \"icon\": \"Hairdryer.svg\"\n },\n {\n \"_id\": \"hanging_lamp\",\n \"name\": {\n \"en\": \"Hanging Lamp\",\n \"ru\": \"Подвесной светильник\",\n \"de\": \"Hängelampe\",\n \"fr\": \"Lampes Suspendues\",\n \"it\": \"Lampade A Sospensione\",\n \"nl\": \"Opknoping Lampen\",\n \"pl\": \"Lampy Wiszące\",\n \"pt\": \"Lâmpadas De Suspensão\",\n \"es\": \"Lámparas Colgantes\",\n \"zh-cn\": \"挂灯\"\n },\n \"icon\": \"Hanging Lamps.svg\"\n },\n {\n \"_id\": \"doorstep\",\n \"name\": {\n \"en\": \"Enterance\",\n \"ru\": \"Входная дверь\",\n \"de\": \"Haustür\",\n \"fr\": \"Seuil De Porte\",\n \"it\": \"Gradino Della Porta\",\n \"nl\": \"Drempel\",\n \"pl\": \"Próg\",\n \"pt\": \"Porta\",\n \"es\": \"Peldaño\",\n \"zh-cn\": \"门阶\"\n },\n \"icon\": \"Doorstep.svg\"\n },\n {\n \"_id\": \"hot_water\",\n \"name\": {\n \"en\": \"Hot Water\",\n \"ru\": \"Горячая вода\",\n \"de\": \"Heißwasser\",\n \"fr\": \"Eau Chaude\",\n \"it\": \"Acqua Calda\",\n \"nl\": \"Heet Water\",\n \"pl\": \"Gorąca Woda\",\n \"pt\": \"Água Quente\",\n \"es\": \"Agua Caliente\",\n \"zh-cn\": \"热水\"\n },\n \"icon\": \"Hot Water.svg\"\n },\n {\n \"_id\": \"heating\",\n \"name\": {\n \"en\": \"Heating\",\n \"ru\": \"Отопление\",\n \"de\": \"Heizung\",\n \"fr\": \"Chauffe-Eau\",\n \"it\": \"Riscaldatore\",\n \"nl\": \"Verwarmer\",\n \"pl\": \"Podgrzewacz\",\n \"pt\": \"Aquecedor\",\n \"es\": \"Calentador\",\n \"zh-cn\": \"加热器\"\n },\n \"icon\": \"Heater.svg\"\n },\n {\n \"_id\": \"stove\",\n \"name\": {\n \"en\": \"Stove\",\n \"ru\": \"Печь\",\n \"de\": \"Herd\",\n \"fr\": \"Le Fourneau\",\n \"it\": \"Stufa\",\n \"nl\": \"Fornuis\",\n \"pl\": \"Kuchenka\",\n \"pt\": \"Forno\",\n \"es\": \"Cocina\",\n \"zh-cn\": \"火炉\"\n },\n \"icon\": \"Stove.svg\"\n },\n {\n \"_id\": \"louvre\",\n \"name\": {\n \"en\": \"Louvre\",\n \"ru\": \"Жалюзи\",\n \"de\": \"Jalousie\",\n \"fr\": \"Persienne\",\n \"it\": \"Persiana Di Ventilazione\",\n \"nl\": \"Louvre\",\n \"pl\": \"Żaluzja\",\n \"pt\": \"Trapeira\",\n \"es\": \"Lumbrera\",\n \"zh-cn\": \"卢浮宫\"\n },\n \"icon\": \"Louvre.svg\"\n },\n {\n \"_id\": \"coffee_maker\",\n \"name\": {\n \"en\": \"Coffee Maker\",\n \"ru\": \"Кофеварка\",\n \"de\": \"Kaffemaschine\",\n \"fr\": \"Cafetière\",\n \"it\": \"Macchine Da Caffè\",\n \"nl\": \"Koffie Maker\",\n \"pl\": \"Ekspresy Do Kawy\",\n \"pt\": \"Cafeteira\",\n \"es\": \"Cafetera\",\n \"zh-cn\": \"咖啡壶\"\n },\n \"icon\": \"Coffee Makers.svg\"\n },\n {\n \"_id\": \"cold_water\",\n \"name\": {\n \"en\": \"Cold Water\",\n \"ru\": \"Холодная вода\",\n \"de\": \"Kaltwasser\",\n \"fr\": \"Eau Froide\",\n \"it\": \"Acqua Fredda\",\n \"nl\": \"Koud Water\",\n \"pl\": \"Zimna Woda\",\n \"pt\": \"Água Fria\",\n \"es\": \"Agua Fría\",\n \"zh-cn\": \"冷水\"\n },\n \"icon\": \"Cold Water.svg\"\n },\n {\n \"_id\": \"climate\",\n \"name\": {\n \"en\": \"Climate\",\n \"ru\": \"Климат\",\n \"de\": \"Klima\",\n \"fr\": \"Climat\",\n \"it\": \"Clima\",\n \"nl\": \"Klimaat\",\n \"pl\": \"Klimat\",\n \"pt\": \"Clima\",\n \"es\": \"Clima\",\n \"zh-cn\": \"气候\"\n },\n \"icon\": \"Climate.svg\"\n },\n {\n \"_id\": \"speaker\",\n \"name\": {\n \"en\": \"Speaker\",\n \"ru\": \"Звуковая система\",\n \"de\": \"Lautsprecher\",\n \"fr\": \"Orateur\",\n \"it\": \"Altoparlante\",\n \"nl\": \"Spreker\",\n \"pl\": \"Głośnik\",\n \"pt\": \"Palestrante\",\n \"es\": \"Altavoz\",\n \"zh-cn\": \"扬声器\"\n },\n \"icon\": \"Speaker.svg\"\n },\n {\n \"_id\": \"led_strip\",\n \"name\": {\n \"en\": \"Led Strip\",\n \"ru\": \"Светодиодная лента\",\n \"de\": \"LED Leiste\",\n \"fr\": \"Led Strip\",\n \"it\": \"Led Strip\",\n \"nl\": \"Loden Strip\",\n \"pl\": \"Pasek Ledowy\",\n \"pt\": \"Led Faixa\",\n \"es\": \"Tira Llevada\",\n \"zh-cn\": \"灯带\"\n },\n \"icon\": \"Led Strip.svg\"\n },\n {\n \"_id\": \"light\",\n \"name\": {\n \"en\": \"Light\",\n \"ru\": \"Свет\",\n \"de\": \"Licht\",\n \"fr\": \"Lumière\",\n \"it\": \"Leggero\",\n \"nl\": \"Licht\",\n \"pl\": \"Lekki\",\n \"pt\": \"Luz\",\n \"es\": \"Luz\",\n \"zh-cn\": \"光\"\n },\n \"icon\": \"Light.svg\"\n },\n {\n \"_id\": \"fan\",\n \"name\": {\n \"en\": \"Fan\",\n \"ru\": \"Вентилятор\",\n \"de\": \"Lüfter\",\n \"fr\": \"Ventilateur\",\n \"it\": \"Fan\",\n \"nl\": \"Ventilator\",\n \"pl\": \"Wentylator\",\n \"pt\": \"Ventilador\",\n \"es\": \"Ventilador\",\n \"zh-cn\": \"扇子\"\n },\n \"icon\": \"Fan.svg\"\n },\n {\n \"_id\": \"humidity\",\n \"name\": {\n \"en\": \"Humidity\",\n \"ru\": \"Влажность\",\n \"de\": \"Luftfeuchtigkeit\",\n \"fr\": \"Humidité\",\n \"it\": \"Umidità\",\n \"nl\": \"Vochtigheid\",\n \"pl\": \"Wilgotność\",\n \"pt\": \"Umidade\",\n \"es\": \"Humedad\",\n \"zh-cn\": \"湿度\"\n },\n \"icon\": \"Humidity.svg\"\n },\n {\n \"_id\": \"ventilation\",\n \"name\": {\n \"en\": \"Ventilation\",\n \"ru\": \"Вентиляция\",\n \"de\": \"Lüftung\",\n \"fr\": \"Ventilation\",\n \"it\": \"Ventilazione\",\n \"nl\": \"Ventilatie\",\n \"pl\": \"Wentylacja\",\n \"pt\": \"Ventilação\",\n \"es\": \"Ventilación\",\n \"zh-cn\": \"通风\"\n },\n \"icon\": \"Ventilation.svg\"\n },\n {\n \"_id\": \"chandelier\",\n \"name\": {\n \"en\": \"Chandelier\",\n \"ru\": \"Люстра\",\n \"de\": \"Kronleuchter\",\n \"fr\": \"Lustre\",\n \"it\": \"Lampadario\",\n \"nl\": \"Kroonluchter\",\n \"pl\": \"Żyrandol\",\n \"pt\": \"Lustre\",\n \"es\": \"Candelabro\",\n \"zh-cn\": \"枝形吊灯\"\n },\n \"icon\": \"Chandelier.svg\"\n },\n {\n \"_id\": \"awning\",\n \"name\": {\n \"en\": \"Awning\",\n \"ru\": \"Маркиза\",\n \"de\": \"Markise\",\n \"fr\": \"Auvents\",\n \"it\": \"Tende\",\n \"nl\": \"Luifels\",\n \"pl\": \"Okrycia\",\n \"pt\": \"Toldos\",\n \"es\": \"Toldos\",\n \"zh-cn\": \"遮阳篷\"\n },\n \"icon\": \"Awnings.svg\"\n },\n {\n \"_id\": \"music\",\n \"name\": {\n \"en\": \"Music\",\n \"ru\": \"Музыка\",\n \"de\": \"Musik\",\n \"fr\": \"Musique\",\n \"it\": \"Musica\",\n \"nl\": \"Muziek\",\n \"pl\": \"Muzyka\",\n \"pt\": \"Música\",\n \"es\": \"Música\",\n \"zh-cn\": \"音乐\"\n },\n \"icon\": \"Music.svg\"\n },\n {\n \"_id\": \"people\",\n \"name\": {\n \"en\": \"People\",\n \"ru\": \"Люди\",\n \"de\": \"Personen\",\n \"fr\": \"Gens\",\n \"it\": \"Persone\",\n \"nl\": \"Mensen\",\n \"pl\": \"Ludzie\",\n \"pt\": \"Pessoas\",\n \"es\": \"Personas\",\n \"zh-cn\": \"人们\"\n },\n \"icon\": \"People.svg\"\n },\n {\n \"_id\": \"pool\",\n \"name\": {\n \"en\": \"Pool\",\n \"ru\": \"Бассейн\",\n \"de\": \"Pool\",\n \"fr\": \"Piscine\",\n \"it\": \"Piscina\",\n \"nl\": \"Zwembad\",\n \"pl\": \"Basen\",\n \"pt\": \"Piscina\",\n \"es\": \"Piscina\",\n \"zh-cn\": \"水池\"\n },\n \"icon\": \"Pool.svg\"\n },\n {\n \"_id\": \"pump\",\n \"name\": {\n \"en\": \"Pump\",\n \"ru\": \"Насос\",\n \"de\": \"Pumpe\",\n \"fr\": \"Pompe\",\n \"it\": \"Pompa\",\n \"nl\": \"Pomp\",\n \"pl\": \"Pompa\",\n \"pt\": \"Bombear\",\n \"es\": \"Bomba\",\n \"zh-cn\": \"泵\"\n },\n \"icon\": \"Pump.svg\"\n },\n {\n \"_id\": \"outdoor_blinds\",\n \"name\": {\n \"en\": \"Outdoor Blinds\",\n \"ru\": \"Внещгте жалюзи\",\n \"de\": \"Raffstore\",\n \"fr\": \"Volets\",\n \"it\": \"Tende Da Esterni\",\n \"nl\": \"Outdoor Blinds\",\n \"pl\": \"Rolety Zewnętrzne\",\n \"pt\": \"Estores Exteriores\",\n \"es\": \"Persianas Exteriores\",\n \"zh-cn\": \"室外百叶窗\"\n },\n \"icon\": \"Outdoor Blinds.svg\"\n },\n {\n \"_id\": \"mowing_machine\",\n \"name\": {\n \"en\": \"Mowing Machine\",\n \"ru\": \"Газонокосилка\",\n \"de\": \"Rasenmäher\",\n \"fr\": \"Machine De Fauchage\",\n \"it\": \"Macchina Di Falciatura\",\n \"nl\": \"Maaimachine\",\n \"pl\": \"Kosiarka\",\n \"pt\": \"Roçada Máquina\",\n \"es\": \"Segadora\",\n \"zh-cn\": \"割草机\"\n },\n \"icon\": \"Mowing Machine.svg\"\n },\n {\n \"_id\": \"receiver\",\n \"name\": {\n \"en\": \"Receiver\",\n \"ru\": \"Приставка\",\n \"de\": \"Receiver\",\n \"fr\": \"Destinataire\",\n \"it\": \"Ricevitore\",\n \"nl\": \"Ontvanger\",\n \"pl\": \"Odbiorca\",\n \"pt\": \"Recebedor\",\n \"es\": \"Receptor\",\n \"zh-cn\": \"接收者\"\n },\n \"icon\": \"Receiver.svg\"\n },\n {\n \"_id\": \"shutters\",\n \"name\": {\n \"en\": \"Shutters\",\n \"ru\": \"Ставни\",\n \"de\": \"Rollladen\",\n \"fr\": \"Volets\",\n \"it\": \"Persiane\",\n \"nl\": \"Shutters\",\n \"pl\": \"Żaluzje\",\n \"pt\": \"Persianas\",\n \"es\": \"Persianas\",\n \"zh-cn\": \"百叶窗\"\n },\n \"icon\": \"Shutters.svg\"\n },\n {\n \"_id\": \"smoke_detector\",\n \"name\": {\n \"en\": \"Smoke detector\",\n \"de\": \"Rauchmelder\",\n \"ru\": \"Детектор дыма\",\n \"pt\": \"Detector de fumaça\",\n \"nl\": \"Rookdetector\",\n \"fr\": \"Détecteur de fumée\",\n \"it\": \"Rilevatore di fumo\",\n \"es\": \"Detector de humo\",\n \"pl\": \"Wykrywacz dymu\",\n \"zh-cn\": \"烟雾探测器\"\n },\n \"icon\": \"SmokeDetector.svg\"\n },\n {\n \"_id\": \"lock\",\n \"name\": {\n \"en\": \"Lock\",\n \"ru\": \"Замок\",\n \"de\": \"Schloß\",\n \"fr\": \"Fermer À Clé\",\n \"it\": \"Serratura\",\n \"nl\": \"Slot\",\n \"pl\": \"Zamek\",\n \"pt\": \"Trancar\",\n \"es\": \"Cerrar Con Llave\",\n \"zh-cn\": \"锁\"\n },\n \"icon\": \"Lock.svg\"\n },\n {\n \"_id\": \"security\",\n \"name\": {\n \"en\": \"Security\",\n \"ru\": \"Безопасность\",\n \"de\": \"Sicherheit\",\n \"fr\": \"Sécurité\",\n \"it\": \"Sicurezza\",\n \"nl\": \"Veiligheid\",\n \"pl\": \"Bezpieczeństwo\",\n \"pt\": \"Segurança\",\n \"es\": \"Seguridad\",\n \"zh-cn\": \"安全\"\n },\n \"icon\": \"Security.svg\"\n },\n {\n \"_id\": \"dishwasher\",\n \"name\": {\n \"en\": \"Dishwasher\",\n \"ru\": \"Посудомоечная машина\",\n \"de\": \"Spülmaschine\",\n \"fr\": \"Lave-Vaisselles\",\n \"it\": \"Lavastoviglie\",\n \"nl\": \"Vaatwassers\",\n \"pl\": \"Zmywarki\",\n \"pt\": \"Máquinas De Lavar Louça\",\n \"es\": \"Lavaplatos\",\n \"zh-cn\": \"洗碗机\"\n },\n \"icon\": \"Dishwashers.svg\"\n },\n {\n \"_id\": \"vacuum_cleaner\",\n \"name\": {\n \"en\": \"Vacuum Cleaner\",\n \"ru\": \"Пылесос\",\n \"de\": \"Staubsauger\",\n \"fr\": \"Aspirateur\",\n \"it\": \"Aspirapolvere\",\n \"nl\": \"Stofzuiger\",\n \"pl\": \"Odkurzacz\",\n \"pt\": \"Aspirador De Pó\",\n \"es\": \"Aspiradora\",\n \"zh-cn\": \"吸尘器\"\n },\n \"icon\": \"Vacuum Cleaner.svg\"\n },\n {\n \"_id\": \"socket\",\n \"name\": {\n \"en\": \"Socket\",\n \"ru\": \"Розетка\",\n \"de\": \"Steckdose\",\n \"fr\": \"Prise\",\n \"it\": \"Socket\",\n \"nl\": \"Socket\",\n \"pl\": \"Gniazdka\",\n \"pt\": \"Tomada\",\n \"es\": \"Zócalo\",\n \"zh-cn\": \"套接字\"\n },\n \"icon\": \"Sockets.svg\"\n },\n {\n \"_id\": \"floor_lamp\",\n \"name\": {\n \"en\": \"Floor Lamp\",\n \"ru\": \"Торшер\",\n \"de\": \"Stehlampe\",\n \"fr\": \"Lampes Pour Plancher\",\n \"it\": \"Lampade A Stelo\",\n \"nl\": \"Vloerlampen\",\n \"pl\": \"Lampy Podłogowe\",\n \"pt\": \"Lâmpadas Chão\",\n \"es\": \"Lámparas De Pie\",\n \"zh-cn\": \"落地灯\"\n },\n \"icon\": \"Floor Lamps.svg\"\n },\n {\n \"_id\": \"power_consumption\",\n \"name\": {\n \"en\": \"Power Consumption\",\n \"ru\": \"Потребляемая мощность\",\n \"de\": \"Stromverbrauch\",\n \"fr\": \"Consommation D'Énergie\",\n \"it\": \"Consumo Di Energia\",\n \"nl\": \"Energieverbruik\",\n \"pl\": \"Pobór Energii\",\n \"pt\": \"Consumo De Energia\",\n \"es\": \"El Consumo De Energía\",\n \"zh-cn\": \"能量消耗\"\n },\n \"icon\": \"Power Consumption.svg\"\n },\n {\n \"_id\": \"temperature_sensor\",\n \"name\": {\n \"en\": \"Temperature Sensor\",\n \"ru\": \"Температурный датчик\",\n \"de\": \"Temperatur-Sensor\",\n \"fr\": \"Capteur De Température\",\n \"it\": \"Sensori Di Temperatura\",\n \"nl\": \"Temperatuursensor\",\n \"pl\": \"Czujniki Temperatury\",\n \"pt\": \"Sensores De Temperatura\",\n \"es\": \"Sensores De Temperatura\",\n \"zh-cn\": \"温度传感器\"\n },\n \"icon\": \"Temperature Sensors.svg\"\n },\n {\n \"_id\": \"table_lamp\",\n \"name\": {\n \"en\": \"Table Lamp\",\n \"ru\": \"Настольная лампа\",\n \"de\": \"Tischlampe\",\n \"fr\": \"Lampe De Chevet\",\n \"it\": \"Lampade Da Tavolo\",\n \"nl\": \"Tafellampen\",\n \"pl\": \"Lampy Stołowe\",\n \"pt\": \"Lâmpadas De Mesa\",\n \"es\": \"Lámparas De Mesa\",\n \"zh-cn\": \"台灯\"\n },\n \"icon\": \"Table Lamps.svg\"\n },\n {\n \"_id\": \"gate\",\n \"name\": {\n \"en\": \"Gate\",\n \"ru\": \"Ворота\",\n \"de\": \"Tor\",\n \"fr\": \"Porte\",\n \"it\": \"Gate\",\n \"nl\": \"Gate\",\n \"pl\": \"Bramy\",\n \"pt\": \"Portões\",\n \"es\": \"Puertas\",\n \"zh-cn\": \"盖茨\"\n },\n \"icon\": \"Gates.svg\"\n },\n {\n \"_id\": \"dryer\",\n \"name\": {\n \"en\": \"Dryer\",\n \"ru\": \"Сушилка\",\n \"de\": \"Trockner\",\n \"fr\": \"Séchoir\",\n \"it\": \"Asciugatrice\",\n \"nl\": \"Droger\",\n \"pl\": \"Suszarka\",\n \"pt\": \"Secador\",\n \"es\": \"Secadora\",\n \"zh-cn\": \"烘干机\"\n },\n \"icon\": \"Dryer.svg\"\n },\n {\n \"_id\": \"door\",\n \"name\": {\n \"en\": \"Door\",\n \"ru\": \"Дверь\",\n \"de\": \"Tür\",\n \"fr\": \"Des Portes\",\n \"it\": \"Porte\",\n \"nl\": \"Deuren\",\n \"pl\": \"Drzwi\",\n \"pt\": \"Portas\",\n \"es\": \"Puertas\",\n \"zh-cn\": \"门\"\n },\n \"icon\": \"Doors.svg\"\n },\n {\n \"_id\": \"tv\",\n \"name\": {\n \"en\": \"Tv\",\n \"ru\": \"Телевизор\",\n \"de\": \"TV\",\n \"fr\": \"La Télé\",\n \"it\": \"Tv\",\n \"nl\": \"Tv\",\n \"pl\": \"Telewizja\",\n \"pt\": \"Televisão\",\n \"es\": \"Televisor\",\n \"zh-cn\": \"电视\"\n },\n \"icon\": \"Tv.svg\"\n },\n {\n \"_id\": \"consumption\",\n \"name\": {\n \"en\": \"Consumption\",\n \"ru\": \"Потребление\",\n \"de\": \"Verbrauch\",\n \"fr\": \"Consommation\",\n \"it\": \"Consumo\",\n \"nl\": \"Consumptie\",\n \"pl\": \"Konsumpcja\",\n \"pt\": \"Consumo\",\n \"es\": \"Consumo\",\n \"zh-cn\": \"消费\"\n },\n \"icon\": \"Consumption.svg\"\n },\n {\n \"_id\": \"amplifier\",\n \"name\": {\n \"en\": \"Amplifier\",\n \"ru\": \"Усилитель звука\",\n \"de\": \"Verstärker\",\n \"fr\": \"Amplificateur\",\n \"it\": \"Amplificatore\",\n \"nl\": \"Versterker\",\n \"pl\": \"Wzmacniacz\",\n \"pt\": \"Amplificador\",\n \"es\": \"Amplificador\",\n \"zh-cn\": \"放大器\"\n },\n \"icon\": \"Amplifier.svg\"\n },\n {\n \"_id\": \"curtains\",\n \"name\": {\n \"en\": \"Curtains\",\n \"ru\": \"Шторы\",\n \"de\": \"Vorhänge\",\n \"fr\": \"Des Rideaux\",\n \"it\": \"Le Tende\",\n \"nl\": \"Gordijnen\",\n \"pl\": \"Zasłony\",\n \"pt\": \"Cortinas\",\n \"es\": \"Cortinas\",\n \"zh-cn\": \"窗帘\"\n },\n \"icon\": \"Curtains.svg\"\n },\n {\n \"_id\": \"sconce\",\n \"name\": {\n \"en\": \"Sconce\",\n \"ru\": \"Настенный светильник\",\n \"de\": \"Wandlampe\",\n \"fr\": \"Sconce\",\n \"it\": \"Sconce\",\n \"nl\": \"Sconce\",\n \"pl\": \"Kinkiety\",\n \"pt\": \"Arandelas\",\n \"es\": \"Los Apliques\",\n \"zh-cn\": \"壁灯\"\n },\n \"icon\": \"Sconces.svg\"\n },\n {\n \"_id\": \"washing_machine\",\n \"name\": {\n \"en\": \"Washing Machine\",\n \"ru\": \"Стиральная машина\",\n \"de\": \"Waschmaschine\",\n \"fr\": \"Machines À Laver\",\n \"it\": \"Lavatrici\",\n \"nl\": \"Wasmachines\",\n \"pl\": \"Pralki\",\n \"pt\": \"Máquinas De Lavar Roupas\",\n \"es\": \"Lavadoras\",\n \"zh-cn\": \"洗衣机\"\n },\n \"icon\": \"Washing Machines.svg\"\n },\n {\n \"_id\": \"water\",\n \"name\": {\n \"en\": \"Water\",\n \"ru\": \"Вода\",\n \"de\": \"Wasser\",\n \"fr\": \"L'Eau\",\n \"it\": \"Acqua\",\n \"nl\": \"Water\",\n \"pl\": \"Woda\",\n \"pt\": \"Água\",\n \"es\": \"Agua\",\n \"zh-cn\": \"水\"\n },\n \"icon\": \"Water.svg\"\n },\n {\n \"_id\": \"water_heater\",\n \"name\": {\n \"en\": \"Water Heater\",\n \"ru\": \"Нагреватель воды\",\n \"de\": \"Wasserkocher\",\n \"fr\": \"Chauffe-Eau\",\n \"it\": \"Scaldabagno\",\n \"nl\": \"Waterkoker\",\n \"pl\": \"Podgrzewacz Wody\",\n \"pt\": \"Aquecedor De Água\",\n \"es\": \"Calentador De Agua\",\n \"zh-cn\": \"热水器\"\n },\n \"icon\": \"Water Heater.svg\"\n },\n {\n \"_id\": \"water_consumption\",\n \"name\": {\n \"en\": \"Water Consumption\",\n \"ru\": \"Потребление воды\",\n \"de\": \"Wasserverbrauch\",\n \"fr\": \"Consommation D'Eau\",\n \"it\": \"Consumo D'Acqua\",\n \"nl\": \"Waterverbruik\",\n \"pl\": \"Konsumpcja Wody\",\n \"pt\": \"Consumo De Água\",\n \"es\": \"Consumo De Agua\",\n \"zh-cn\": \"耗水量\"\n },\n \"icon\": \"Water Consumption.svg\"\n },\n {\n \"_id\": \"weather\",\n \"name\": {\n \"en\": \"Weather\",\n \"ru\": \"Погода\",\n \"de\": \"Wetter\",\n \"fr\": \"La Météo\",\n \"it\": \"Tempo Metereologico\",\n \"nl\": \"Weer\",\n \"pl\": \"Pogoda\",\n \"pt\": \"Clima\",\n \"es\": \"Tiempo\",\n \"zh-cn\": \"天气\"\n },\n \"icon\": \"Weather.svg\"\n }\n];\n\n// import rooms from '../assets/rooms/list.json';\nconst rooms = [\n {\n \"_id\": \"storeroom\",\n \"name\": {\n \"en\": \"Storeroom\",\n \"ru\": \"Кладовая\",\n \"de\": \"Abstellraum\",\n \"fr\": \"Débarras\",\n \"it\": \"Dispensa\",\n \"nl\": \"Bergplaats\",\n \"pl\": \"Magazyn\",\n \"pt\": \"Despensa\",\n \"es\": \"Trastero\",\n \"zh-cn\": \"库房\"\n },\n \"icon\": \"Storeroom.svg\"\n },\n {\n \"_id\": \"second_floor\",\n \"name\": {\n \"en\": \"Second floor\",\n \"ru\": \"Второй этаж\",\n \"de\": \"Erster OG\",\n \"pt\": \"Primeiro andar\",\n \"nl\": \"Eerste verdieping\",\n \"fr\": \"Premier étage\",\n \"it\": \"Primo piano\",\n \"es\": \"Primer piso\",\n \"pl\": \"Pierwsze piętro\",\n \"zh-cn\": \"第一层\"\n },\n \"icon\": \"Second Floor.svg\"\n },\n {\n \"_id\": \"dressing_room\",\n \"name\": {\n \"en\": \"Dressing Room\",\n \"ru\": \"Гардеробная\",\n \"de\": \"Ankleide\",\n \"fr\": \"Vestiaire\",\n \"it\": \"Camerino\",\n \"nl\": \"Kleedkamer\",\n \"pl\": \"Przebieralnia\",\n \"pt\": \"Provador\",\n \"es\": \"Vestidor\",\n \"zh-cn\": \"更衣室\"\n },\n \"icon\": \"Dressing Room.svg\"\n },\n {\n \"_id\": \"workspace\",\n \"name\": {\n \"en\": \"Workspace\",\n \"ru\": \"Рабочая Среда\",\n \"de\": \"Arbeitszimmer\",\n \"fr\": \"Espace De Travail\",\n \"it\": \"Area Di Lavoro\",\n \"nl\": \"Workspace\",\n \"pl\": \"Workspace\",\n \"pt\": \"Área De Trabalho\",\n \"es\": \"Espacio De Trabajo\",\n \"zh-cn\": \"工作区\"\n },\n \"icon\": \"Workspace.svg\"\n },\n {\n \"_id\": \"driveway\",\n \"name\": {\n \"en\": \"Driveway\",\n \"ru\": \"Дорога\",\n \"de\": \"Auffahrt\",\n \"fr\": \"Allée\",\n \"it\": \"Viale\",\n \"nl\": \"Pad\",\n \"pl\": \"Podjazd\",\n \"pt\": \"Entrada Da Garagem\",\n \"es\": \"Entrada De Coches\",\n \"zh-cn\": \"车道\"\n },\n \"icon\": \"Driveway.svg\"\n },\n {\n \"_id\": \"outdoors\",\n \"name\": {\n \"en\": \"Outdoors\",\n \"ru\": \"На Улице\",\n \"de\": \"Außenbereich\",\n \"fr\": \"En Plein Air\",\n \"it\": \"All'Aperto\",\n \"nl\": \"Buitenshuis\",\n \"pl\": \"Na Dworze\",\n \"pt\": \"Ao Ar Livre\",\n \"es\": \"Al Aire Libre\",\n \"zh-cn\": \"户外\"\n },\n \"icon\": \"Outdoors.svg\"\n },\n {\n \"_id\": \"bathroom\",\n \"name\": {\n \"en\": \"Bathroom\",\n \"ru\": \"Ванная Комната\",\n \"de\": \"Badezimmer\",\n \"fr\": \"Salle De Bains\",\n \"it\": \"Bagno\",\n \"nl\": \"Badkamer\",\n \"pl\": \"Łazienka\",\n \"pt\": \"Banheiro\",\n \"es\": \"Baño\",\n \"zh-cn\": \"浴室\"\n },\n \"icon\": \"Bathroom.svg\"\n },\n {\n \"_id\": \"balcony\",\n \"name\": {\n \"en\": \"Balcony\",\n \"ru\": \"Балкон\",\n \"de\": \"Balkon\",\n \"fr\": \"Balcon\",\n \"it\": \"Balcone\",\n \"nl\": \"Balkon\",\n \"pl\": \"Balkon\",\n \"pt\": \"Sacada\",\n \"es\": \"Balcón\",\n \"zh-cn\": \"阳台\"\n },\n \"icon\": \"Balcony.svg\"\n },\n {\n \"_id\": \"office\",\n \"name\": {\n \"en\": \"Office\",\n \"ru\": \"Офис\",\n \"de\": \"Office\",\n \"fr\": \"Bureau\",\n \"it\": \"Ufficio\",\n \"nl\": \"Kantoor\",\n \"pl\": \"Gabinet\",\n \"pt\": \"Escritório\",\n \"es\": \"Oficina\",\n \"zh-cn\": \"办公室\"\n },\n \"icon\": \"Office.svg\"\n },\n {\n \"_id\": \"carport\",\n \"name\": {\n \"en\": \"Carport\",\n \"ru\": \"Навес\",\n \"de\": \"Carport\",\n \"fr\": \"Carport\",\n \"it\": \"Posto Auto Coperto\",\n \"nl\": \"Carport\",\n \"pl\": \"Wiata\",\n \"pt\": \"Telheiro\",\n \"es\": \"Cochera\",\n \"zh-cn\": \"车棚\"\n },\n \"icon\": \"Carport.svg\"\n },\n {\n \"_id\": \"attic\",\n \"name\": {\n \"en\": \"Attic\",\n \"ru\": \"Чердак\",\n \"de\": \"Dachgeschoss\",\n \"fr\": \"Grenier\",\n \"it\": \"Attico\",\n \"nl\": \"Zolder\",\n \"pl\": \"Poddasze\",\n \"pt\": \"Sótão\",\n \"es\": \"Ático\",\n \"zh-cn\": \"阁楼\"\n },\n \"icon\": \"Attic.svg\"\n },\n {\n \"_id\": \"hall\",\n \"name\": {\n \"en\": \"Hall\",\n \"ru\": \"Зал\",\n \"de\": \"Diele\",\n \"fr\": \"Salle\",\n \"it\": \"Sala\",\n \"nl\": \"Hal\",\n \"pl\": \"Sala\",\n \"pt\": \"Corredor\",\n \"es\": \"Sala\",\n \"zh-cn\": \"大厅\"\n },\n \"icon\": \"Hall.svg\"\n },\n {\n \"_id\": \"entrance\",\n \"name\": {\n \"en\": \"Entrance\",\n \"ru\": \"Вход\",\n \"de\": \"Eingang\",\n \"fr\": \"Entrée\",\n \"it\": \"Ingresso\",\n \"nl\": \"Ingang\",\n \"pl\": \"Wejście\",\n \"pt\": \"Entrada\",\n \"es\": \"Entrada\",\n \"zh-cn\": \"入口\"\n },\n \"icon\": \"Entrance.svg\"\n },\n {\n \"_id\": \"ground_floor\",\n \"name\": {\n \"en\": \"Ground Floor\",\n \"ru\": \"Первый Этаж\",\n \"de\": \"Erdgeschoss\",\n \"fr\": \"Rez-De-Chaussée\",\n \"it\": \"Piano Terra\",\n \"nl\": \"Begane Grond\",\n \"pl\": \"Parter\",\n \"pt\": \"Térreo\",\n \"es\": \"Planta Baja\",\n \"zh-cn\": \"一楼\"\n },\n \"icon\": \"Ground Floor.svg\"\n },\n {\n \"_id\": \"dining_area\",\n \"name\": {\n \"en\": \"Dining Area\",\n \"ru\": \"Столовая\",\n \"de\": \"Essbereich\",\n \"fr\": \"Salle À Manger\",\n \"it\": \"Zona Pranzo\",\n \"nl\": \"Eethoek\",\n \"pl\": \"Jadalnia\",\n \"pt\": \"Área De Refeições\",\n \"es\": \"Comedor\",\n \"zh-cn\": \"用餐区\"\n },\n \"icon\": \"Dining Area.svg\"\n },\n {\n \"_id\": \"dining_room\",\n \"name\": {\n \"en\": \"Dining Room\",\n \"ru\": \"Столовая\",\n \"de\": \"Esszimmer\",\n \"fr\": \"Salle À Manger\",\n \"it\": \"Sala Da Pranzo\",\n \"nl\": \"Eetkamer\",\n \"pl\": \"Jadalnia\",\n \"pt\": \"Sala De Jantar\",\n \"es\": \"Comedor\",\n \"zh-cn\": \"饭厅\"\n },\n \"icon\": \"Dining Room.svg\"\n },\n {\n \"_id\": \"gym\",\n \"name\": {\n \"en\": \"Gym\",\n \"ru\": \"Спортзал\",\n \"de\": \"Fitnessraum\",\n \"fr\": \"Gym\",\n \"it\": \"Palestra\",\n \"nl\": \"Sportschool\",\n \"pl\": \"Siłownia\",\n \"pt\": \"Ginásio\",\n \"es\": \"Gimnasio\",\n \"zh-cn\": \"健身房\"\n },\n \"icon\": \"Gym.svg\"\n },\n {\n \"_id\": \"gallery\",\n \"name\": {\n \"en\": \"Gallery\",\n \"ru\": \"Галерея\",\n \"de\": \"Galerie\",\n \"fr\": \"Galerie\",\n \"it\": \"Galleria\",\n \"nl\": \"Galerij\",\n \"pl\": \"Galeria\",\n \"pt\": \"Galeria\",\n \"es\": \"Galería\",\n \"zh-cn\": \"画廊\"\n },\n \"icon\": \"Gallery.svg\"\n },\n {\n \"_id\": \"garage\",\n \"name\": {\n \"en\": \"Garage\",\n \"ru\": \"Гараж\",\n \"de\": \"Garage\",\n \"fr\": \"Garage\",\n \"it\": \"Box Auto\",\n \"nl\": \"Garage\",\n \"pl\": \"Garaż\",\n \"pt\": \"Garagem\",\n \"es\": \"Garaje\",\n \"zh-cn\": \"车库\"\n },\n \"icon\": \"Garage.svg\"\n },\n {\n \"_id\": \"wardrobe\",\n \"name\": {\n \"en\": \"Wardrobe\",\n \"ru\": \"Гардероб\",\n \"de\": \"Garderobe\",\n \"fr\": \"Penderie\",\n \"it\": \"Armadio\",\n \"nl\": \"Garderobe\",\n \"pl\": \"Szafa\",\n \"pt\": \"Guarda Roupa\",\n \"es\": \"Armario\",\n \"zh-cn\": \"衣柜\"\n },\n \"icon\": \"Wardrobe.svg\"\n },\n {\n \"_id\": \"garden\",\n \"name\": {\n \"en\": \"Garden\",\n \"ru\": \"Сад\",\n \"de\": \"Garten\",\n \"fr\": \"Jardin\",\n \"it\": \"Giardino\",\n \"nl\": \"Tuin\",\n \"pl\": \"Ogród\",\n \"pt\": \"Jardim\",\n \"es\": \"Jardín\",\n \"zh-cn\": \"花园\"\n },\n \"icon\": \"Garden.svg\"\n },\n {\n \"_id\": \"summer_house\",\n \"name\": {\n \"en\": \"Summer House\",\n \"ru\": \"Дача\",\n \"de\": \"Gartenhaus\",\n \"fr\": \"Maison D'Été\",\n \"it\": \"Casa Estiva\",\n \"nl\": \"Zomerhuis\",\n \"pl\": \"Domek Letniskowy\",\n \"pt\": \"Summer House\",\n \"es\": \"Casa De Verano\",\n \"zh-cn\": \"凉亭\"\n },\n \"icon\": \"Summer House.svg\"\n },\n {\n \"_id\": \"guest_bathroom\",\n \"name\": {\n \"en\": \"Guest Bathroom\",\n \"ru\": \"Гостевая Комната\",\n \"de\": \"Gäste-WC\",\n \"fr\": \"Salle De Bains Invité\",\n \"it\": \"Guest Bathroom\",\n \"nl\": \"Gastenbadkamer\",\n \"pl\": \"Łazienka Gościnna\",\n \"pt\": \"Banheiro De Hóspedes\",\n \"es\": \"Baño De Visitas\",\n \"zh-cn\": \"客用浴室\"\n },\n \"icon\": \"Guest Bathroom.svg\"\n },\n {\n \"_id\": \"guest_room\",\n \"name\": {\n \"en\": \"Guest Room\",\n \"ru\": \"Гостевая Комната\",\n \"de\": \"Gästezimmer\",\n \"fr\": \"Chambre D'Amis\",\n \"it\": \"Stanza Degli Ospiti\",\n \"nl\": \"Guest Room\",\n \"pl\": \"Pokój Gościnny\",\n \"pt\": \"Quarto De Hóspedes\",\n \"es\": \"Habitación De Huéspedes\",\n \"zh-cn\": \"客房\"\n },\n \"icon\": \"Guest Room.svg\"\n },\n {\n \"_id\": \"laundry_room\",\n \"name\": {\n \"en\": \"Laundry Room\",\n \"ru\": \"Прачечная\",\n \"de\": \"Hauswirtschaftsraum\",\n \"fr\": \"Buanderie\",\n \"it\": \"Lavanderia\",\n \"nl\": \"Wasruimte\",\n \"pl\": \"Pralnia\",\n \"pt\": \"Lavandaria\",\n \"es\": \"Cuarto De Lavado\",\n \"zh-cn\": \"洗衣房\"\n },\n \"icon\": \"Laundry Room.svg\"\n },\n {\n \"_id\": \"home_theater\",\n \"name\": {\n \"en\": \"Home Theater\",\n \"ru\": \"Домашний Театр\",\n \"de\": \"Heimkino\",\n \"fr\": \"Cinéma Maison\",\n \"it\": \"Home Theater\",\n \"nl\": \"Thuisbioscoop\",\n \"pl\": \"Kino Domowe\",\n \"pt\": \"Cinema Em Casa\",\n \"es\": \"Cine En Casa\",\n \"zh-cn\": \"家庭电影院\"\n },\n \"icon\": \"Home Theater.svg\"\n },\n {\n \"_id\": \"boiler_room\",\n \"name\": {\n \"en\": \"Boiler Room\",\n \"ru\": \"Бойлерная\",\n \"de\": \"Heizungsraum\",\n \"fr\": \"Chaufferie\",\n \"it\": \"Locale Caldaia\",\n \"nl\": \"Boiler Room\",\n \"pl\": \"Kotłownia\",\n \"pt\": \"Sala Da Caldeira\",\n \"es\": \"Sala De Calderas\",\n \"zh-cn\": \"锅炉房\"\n },\n \"icon\": \"Boiler Room.svg\"\n },\n {\n \"_id\": \"chamber\",\n \"name\": {\n \"en\": \"Chamber\",\n \"ru\": \"Камера\",\n \"de\": \"Kammer\",\n \"fr\": \"Chambre\",\n \"it\": \"Camera\",\n \"nl\": \"Kamer\",\n \"pl\": \"Izba\",\n \"pt\": \"Câmara\",\n \"es\": \"Cámara\",\n \"zh-cn\": \"商会\"\n },\n \"icon\": \"Chamber.svg\"\n },\n {\n \"_id\": \"basement,_cellar\",\n \"name\": {\n \"en\": \"Basement, Cellar\",\n \"ru\": \"Подвал, Погреб\",\n \"de\": \"Keller\",\n \"fr\": \"Sous-Sol, Cave\",\n \"it\": \"Taverna, Cantina\",\n \"nl\": \"Kelder, Kelder\",\n \"pl\": \"Piwnica, Piwnica\",\n \"pt\": \"Porão, Adega\",\n \"es\": \"Sótano, Bodega\",\n \"zh-cn\": \"地下室,地窖\"\n },\n \"icon\": \"Basement.svg\"\n },\n {\n \"_id\": \"nursery\",\n \"name\": {\n \"en\": \"Nursery\",\n \"ru\": \"Питомник\",\n \"de\": \"Kinderzimmer\",\n \"fr\": \"Garderie\",\n \"it\": \"Asilo\",\n \"nl\": \"Kinderkamer\",\n \"pl\": \"Żłobek\",\n \"pt\": \"Berçário\",\n \"es\": \"Guardería\",\n \"zh-cn\": \"苗圃\"\n },\n \"icon\": \"Nursery.svg\"\n },\n {\n \"_id\": \"corridor\",\n \"name\": {\n \"en\": \"Corridor\",\n \"ru\": \"Коридор\",\n \"de\": \"Korridor\",\n \"fr\": \"Couloir\",\n \"it\": \"Corridoio\",\n \"nl\": \"Gang\",\n \"pl\": \"Korytarz\",\n \"pt\": \"Corredor\",\n \"es\": \"Corredor\",\n \"zh-cn\": \"走廊\"\n },\n \"icon\": \"Corridor.svg\"\n },\n {\n \"_id\": \"kitchen\",\n \"name\": {\n \"en\": \"Kitchen\",\n \"ru\": \"Кухня\",\n \"de\": \"Küche\",\n \"fr\": \"Cuisine\",\n \"it\": \"Cucina\",\n \"nl\": \"Keuken\",\n \"pl\": \"Kuchnia\",\n \"pt\": \"Cozinha\",\n \"es\": \"Cocina\",\n \"zh-cn\": \"厨房\"\n },\n \"icon\": \"Kitchen.svg\"\n },\n {\n \"_id\": \"upstairs\",\n \"name\": {\n \"en\": \"Upstairs\",\n \"ru\": \"Вверх По Лестнице\",\n \"de\": \"Obergeschoss\",\n \"fr\": \"En Haut\",\n \"it\": \"Di Sopra\",\n \"nl\": \"Boven\",\n \"pl\": \"Na Górę\",\n \"pt\": \"Andar De Cima\",\n \"es\": \"Piso Superior\",\n \"zh-cn\": \"楼上\"\n },\n \"icon\": \"Upstairs.svg\"\n },\n {\n \"_id\": \"office\",\n \"name\": {\n \"en\": \"Office\",\n \"ru\": \"Офис\",\n \"de\": \"Office\",\n \"fr\": \"Bureau\",\n \"it\": \"Ufficio\",\n \"nl\": \"Kantoor\",\n \"pl\": \"Gabinet\",\n \"pt\": \"Escritório\",\n \"es\": \"Oficina\",\n \"zh-cn\": \"办公室\"\n },\n \"icon\": \"Office.svg\"\n },\n {\n \"_id\": \"pool\",\n \"name\": {\n \"en\": \"Pool\",\n \"ru\": \"Бассейн\",\n \"de\": \"Pool\",\n \"fr\": \"Piscine\",\n \"it\": \"Piscina\",\n \"nl\": \"Zwembad\",\n \"pl\": \"Basen\",\n \"pt\": \"Piscina\",\n \"es\": \"Piscina\",\n \"zh-cn\": \"水池\"\n },\n \"icon\": \"Pool.svg\"\n },\n {\n \"_id\": \"rear_wall\",\n \"name\": {\n \"en\": \"Rear Wall\",\n \"ru\": \"Задняя Стенка\",\n \"de\": \"Rückwand\",\n \"fr\": \"Paroi Arrière\",\n \"it\": \"Parete Posteriore\",\n \"nl\": \"Achterwand\",\n \"pl\": \"Tylna Ściana\",\n \"pt\": \"Parede Traseira\",\n \"es\": \"Pared Posterior\",\n \"zh-cn\": \"后墙\"\n },\n \"icon\": \"Rear Wall.svg\"\n },\n {\n \"_id\": \"barn\",\n \"name\": {\n \"en\": \"Barn\",\n \"ru\": \"Амбар\",\n \"de\": \"Scheune\",\n \"fr\": \"Grange\",\n \"it\": \"Fienile\",\n \"nl\": \"Schuur\",\n \"pl\": \"Stodoła\",\n \"pt\": \"Celeiro\",\n \"es\": \"Granero\",\n \"zh-cn\": \"谷仓\"\n },\n \"icon\": \"Barn.svg\"\n },\n {\n \"_id\": \"sleeping_area\",\n \"name\": {\n \"en\": \"Sleeping Area\",\n \"ru\": \"Спальное Место\",\n \"de\": \"Schlafbereich\",\n \"fr\": \"Coin Montagne\",\n \"it\": \"Area Sleeping\",\n \"nl\": \"Sleeping Area\",\n \"pl\": \"Powierzchnia Spania\",\n \"pt\": \"Sleeping Area\",\n \"es\": \"Área De Dormir\",\n \"zh-cn\": \"睡眠区\"\n },\n \"icon\": \"Sleeping Area.svg\"\n },\n {\n \"_id\": \"bedroom\",\n \"name\": {\n \"en\": \"Bedroom\",\n \"ru\": \"Спальная Комната\",\n \"de\": \"Schlafzimmer\",\n \"fr\": \"Chambre\",\n \"it\": \"Camera Da Letto\",\n \"nl\": \"Slaapkamer\",\n \"pl\": \"Sypialnia\",\n \"pt\": \"Quarto\",\n \"es\": \"Cuarto\",\n \"zh-cn\": \"卧室\"\n },\n \"icon\": \"Bedroom.svg\"\n },\n {\n \"_id\": \"shed\",\n \"name\": {\n \"en\": \"Shed\",\n \"ru\": \"Сбрасывать\",\n \"de\": \"Schuppen\",\n \"fr\": \"Hangar\",\n \"it\": \"Capannone\",\n \"nl\": \"Schuur\",\n \"pl\": \"Budka\",\n \"pt\": \"Cabana\",\n \"es\": \"Cobertizo\",\n \"zh-cn\": \"棚\"\n },\n \"icon\": \"Shed.svg\"\n },\n {\n \"_id\": \"swimming_pool\",\n \"name\": {\n \"en\": \"Swimming Pool\",\n \"ru\": \"Плавательный Бассейн\",\n \"de\": \"Schwimmbad\",\n \"fr\": \"Piscine\",\n \"it\": \"Piscina\",\n \"nl\": \"Zwembad\",\n \"pl\": \"Basen\",\n \"pt\": \"Piscina\",\n \"es\": \"Piscina\",\n \"zh-cn\": \"游泳池\"\n },\n \"icon\": \"Swimming Pool.svg\"\n },\n {\n \"_id\": \"dining\",\n \"name\": {\n \"en\": \"Dining\",\n \"ru\": \"Обеденный\",\n \"de\": \"Speis\",\n \"fr\": \"À Manger\",\n \"it\": \"Cenare\",\n \"nl\": \"Dining\",\n \"pl\": \"Jadalnia\",\n \"pt\": \"Jantar\",\n \"es\": \"Comida\",\n \"zh-cn\": \"用餐\"\n },\n \"icon\": \"Dining.svg\"\n },\n {\n \"_id\": \"playroom\",\n \"name\": {\n \"en\": \"Playroom\",\n \"ru\": \"Игровая Комната\",\n \"de\": \"Spielzimmer\",\n \"fr\": \"Salle De Jeux\",\n \"it\": \"Stanza Dei Giochi\",\n \"nl\": \"Speelkamer\",\n \"pl\": \"Pokój Zabaw\",\n \"pt\": \"Sala De Jogos\",\n \"es\": \"Cuarto De Jugar\",\n \"zh-cn\": \"游戏室\"\n },\n \"icon\": \"Playroom.svg\"\n },\n {\n \"_id\": \"stairway\",\n \"name\": {\n \"en\": \"Stairway\",\n \"ru\": \"Лестница\",\n \"de\": \"Treppe\",\n \"fr\": \"Escalier\",\n \"it\": \"Scala\",\n \"nl\": \"Trap\",\n \"pl\": \"Klatka Schodowa\",\n \"pt\": \"Escada\",\n \"es\": \"Escalera\",\n \"zh-cn\": \"楼梯\"\n },\n \"icon\": \"Stairway.svg\"\n },\n {\n \"_id\": \"equipment_room\",\n \"name\": {\n \"en\": \"Equipment Room\",\n \"ru\": \"Оборудование Номера\",\n \"de\": \"Technikraum\",\n \"fr\": \"Salle D'Équipement\",\n \"it\": \"Stanza Degli Attrezzi\",\n \"nl\": \"Technische Ruimte\",\n \"pl\": \"Wyposażenie Pokoi\",\n \"pt\": \"Sala De Equipamentos\",\n \"es\": \"Cuarto De Equipos\",\n \"zh-cn\": \"机房\"\n },\n \"icon\": \"Equipment Room.svg\"\n },\n {\n \"_id\": \"terrace\",\n \"name\": {\n \"en\": \"Terrace\",\n \"ru\": \"Терраса\",\n \"de\": \"Terrasse\",\n \"fr\": \"Terrasse\",\n \"it\": \"Terrazza\",\n \"nl\": \"Terras\",\n \"pl\": \"Taras\",\n \"pt\": \"Terraço\",\n \"es\": \"Terraza\",\n \"zh-cn\": \"阳台\"\n },\n \"icon\": \"Terrace.svg\"\n },\n {\n \"_id\": \"toilet\",\n \"name\": {\n \"en\": \"Toilet\",\n \"ru\": \"Туалет\",\n \"de\": \"Toilette\",\n \"fr\": \"Toilette\",\n \"it\": \"Gabinetto\",\n \"nl\": \"Toilet\",\n \"pl\": \"Toaleta\",\n \"pt\": \"Banheiro\",\n \"es\": \"Inodoro\",\n \"zh-cn\": \"洗手间\"\n },\n \"icon\": \"Toilet.svg\"\n },\n {\n \"_id\": \"stairwell\",\n \"name\": {\n \"en\": \"Stairwell\",\n \"ru\": \"Лестничная клетка\",\n \"de\": \"Treppenhaus\",\n \"fr\": \"Cage D'Escalier\",\n \"it\": \"Tromba Delle Scale\",\n \"nl\": \"Trappenhuis\",\n \"pl\": \"Klatka Schodowa\",\n \"pt\": \"Caixa De Escada\",\n \"es\": \"Hueco De Escalera\",\n \"zh-cn\": \"楼梯间\"\n },\n \"icon\": \"Stairwell.svg\"\n },\n {\n \"_id\": \"locker_room\",\n \"name\": {\n \"en\": \"Locker Room\",\n \"ru\": \"Камера Хранения\",\n \"de\": \"Umkleideraum\",\n \"fr\": \"Vestiaire\",\n \"it\": \"Spogliatoio\",\n \"nl\": \"Kleedkamer\",\n \"pl\": \"Szatnia\",\n \"pt\": \"Vestiário\",\n \"es\": \"Vestuario\",\n \"zh-cn\": \"更衣室\"\n },\n \"icon\": \"Locker Room.svg\"\n },\n {\n \"_id\": \"basement\",\n \"name\": {\n \"en\": \"Basement\",\n \"ru\": \"Подвал\",\n \"de\": \"Untergeschoss\",\n \"fr\": \"Sous-Sol\",\n \"it\": \"Seminterrato\",\n \"nl\": \"Kelder\",\n \"pl\": \"Piwnica\",\n \"pt\": \"Porão\",\n \"es\": \"Sótano\",\n \"zh-cn\": \"地下室\"\n },\n \"icon\": \"Basement.svg\"\n },\n {\n \"_id\": \"front_yard\",\n \"name\": {\n \"en\": \"Front Yard\",\n \"ru\": \"Передний Двор\",\n \"de\": \"Vorgarten\",\n \"fr\": \"Front Yard\",\n \"it\": \"Cortile\",\n \"nl\": \"Voortuin\",\n \"pl\": \"Podwórko\",\n \"pt\": \"Jardim Da Frente\",\n \"es\": \"Patio Delantero\",\n \"zh-cn\": \"前院\"\n },\n \"icon\": \"Front Yard.svg\"\n },\n {\n \"_id\": \"anteroom\",\n \"name\": {\n \"en\": \"Anteroom\",\n \"ru\": \"Передняя\",\n \"de\": \"Vorraum\",\n \"fr\": \"Antichambre\",\n \"it\": \"Anticamera\",\n \"nl\": \"Voorkamer\",\n \"pl\": \"Przedpokój\",\n \"pt\": \"Ante-Sala\",\n \"es\": \"Antesala\",\n \"zh-cn\": \"接待室\"\n },\n \"icon\": \"Anteroom.svg\"\n },\n {\n \"_id\": \"washroom\",\n \"name\": {\n \"en\": \"Washroom\",\n \"ru\": \"Уборная\",\n \"de\": \"Waschraum\",\n \"fr\": \"Toilettes\",\n \"it\": \"Bagno\",\n \"nl\": \"Waskamer\",\n \"pl\": \"Umywalnia\",\n \"pt\": \"Banheiro\",\n \"es\": \"Baño\",\n \"zh-cn\": \"卫生间\"\n },\n \"icon\": \"Washroom.svg\"\n },\n {\n \"_id\": \"wc\",\n \"name\": {\n \"en\": \"Wc\",\n \"ru\": \"Туалет\",\n \"de\": \"WC\",\n \"fr\": \"Toilettes\",\n \"it\": \"Bagno\",\n \"nl\": \"Wc\",\n \"pl\": \"Toaleta\",\n \"pt\": \"Banheiro\",\n \"es\": \"Wc\",\n \"zh-cn\": \"厕所\"\n },\n \"icon\": \"Wc.svg\"\n },\n {\n \"_id\": \"workshop\",\n \"name\": {\n \"en\": \"Workshop\",\n \"ru\": \"Мастерская\",\n \"de\": \"Werkstatt\",\n \"fr\": \"Atelier\",\n \"it\": \"Laboratorio\",\n \"nl\": \"Werkplaats\",\n \"pl\": \"Warsztat\",\n \"pt\": \"Oficina\",\n \"es\": \"Taller\",\n \"zh-cn\": \"作坊\"\n },\n \"icon\": \"Workshop.svg\"\n },\n {\n \"_id\": \"windscreen\",\n \"name\": {\n \"en\": \"Windscreen\",\n \"ru\": \"Ветровое Стекло\",\n \"de\": \"Windfang\",\n \"fr\": \"Pare-Brise\",\n \"it\": \"Parabrezza\",\n \"nl\": \"Voorruit\",\n \"pl\": \"Szyba Przednia\",\n \"pt\": \"Pára-Brisas\",\n \"es\": \"Parabrisas\",\n \"zh-cn\": \"风档\"\n },\n \"icon\": \"Windscreen.svg\"\n },\n {\n \"_id\": \"living_area\",\n \"name\": {\n \"en\": \"Living Area\",\n \"ru\": \"Жилая Площадь\",\n \"de\": \"Wohnbereich\",\n \"fr\": \"Salon\",\n \"it\": \"Zona Giorno\",\n \"nl\": \"Living Area\",\n \"pl\": \"Powierzchnia Mieszkalna\",\n \"pt\": \"Sala-De-Estar\",\n \"es\": \"Sala De Estar\",\n \"zh-cn\": \"生活区域\"\n },\n \"icon\": \"Living Area.svg\"\n },\n {\n \"_id\": \"living_room\",\n \"name\": {\n \"en\": \"Living Room\",\n \"ru\": \"Гостинная\",\n \"de\": \"Wohnzimmer\",\n \"fr\": \"Le Salon\",\n \"it\": \"Soggiorno\",\n \"nl\": \"Woonkamer\",\n \"pl\": \"Salon\",\n \"pt\": \"Sala De Estar\",\n \"es\": \"Sala De Estar\",\n \"zh-cn\": \"客厅\"\n },\n \"icon\": \"Living Room.svg\"\n },\n {\n \"_id\": \"living_room\",\n \"name\": {\n \"en\": \"Living Room\",\n \"ru\": \"Гостинная\",\n \"de\": \"Wohnzimmer\",\n \"fr\": \"Le Salon\",\n \"it\": \"Soggiorno\",\n \"nl\": \"Woonkamer\",\n \"pl\": \"Salon\",\n \"pt\": \"Sala De Estar\",\n \"es\": \"Sala De Estar\",\n \"zh-cn\": \"客厅\"\n },\n \"icon\": \"Living Room.svg\"\n }\n];\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\"\n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\"\n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('ra_Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return <Tooltip title={this.state.names[i] || ''} key={i}>\n <IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n (this.props.onSelect || this.props.onChange)(icon))\n }\n size=\"large\"\n >\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton>\n </Tooltip>;\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('ra_Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func, // one of onSelect or onChange are required\n onChange: PropTypes.func,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;;;AAEA;AACA,IAAMA,OAAO,GAAG,CACZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,MANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,MARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CADY,EAiBZ;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,cAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,mBAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,eANF;IAOJ,MAAM,kBAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,oBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjBY,EAiCZ;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,gBAHF;IAIJ,MAAM,qBAJF;IAKJ,MAAM,sBALF;IAMJ,MAAM,iBANF;IAOJ,MAAM,cAPF;IAQJ,MAAM,mBARF;IASJ,MAAM,sBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjCY,EAiDZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,YAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,aANF;IAOJ,MAAM,sBAPF;IAQJ,MAAM,aARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjDY,EAiEZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,SANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,SARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjEY,EAiFZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,WANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,WARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjFY,EAiGZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,OANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,OARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjGY,EAiHZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,UANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,YARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjHY,EAiIZ;EACI,OAAO,mBADX;EAEI,QAAQ;IACJ,MAAM,mBADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,mBAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,mBANF;IAOJ,MAAM,qBAPF;IAQJ,MAAM,YARF;IASJ,MAAM,gBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjIY,EAiJZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,YANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,WARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjJY,EAiKZ;EACI,OAAO,mBADX;EAEI,QAAQ;IACJ,MAAM,mBADF;IAEJ,MAAM,uBAFF;IAGJ,MAAM,gBAHF;IAIJ,MAAM,wBAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,iBANF;IAOJ,MAAM,eAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,uBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjKY,EAiLZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,SANF;IAOJ,MAAM,MAPF;IAQJ,MAAM,QARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjLY,EAiMZ;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,iBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,kBAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,aANF;IAOJ,MAAM,gBAPF;IAQJ,MAAM,mBARF;IASJ,MAAM,uBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjMY,EAiNZ;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,KAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,gBALF;IAMJ,MAAM,YANF;IAOJ,MAAM,oBAPF;IAQJ,MAAM,mBARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjNY,EAiOZ;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,mBAJF;IAKJ,MAAM,uBALF;IAMJ,MAAM,kBANF;IAOJ,MAAM,eAPF;IAQJ,MAAM,uBARF;IASJ,MAAM,oBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjOY,EAiPZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,qBALF;IAMJ,MAAM,SANF;IAOJ,MAAM,MAPF;IAQJ,MAAM,OARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjPY,EAiQZ;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,cAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,YANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,aARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjQY,EAiRZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,WANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,WARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjRY,EAiSZ;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,MAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,SANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,OARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjSY,EAiTZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,0BALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,UARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjTY,EAiUZ;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,mBALF;IAMJ,MAAM,cANF;IAOJ,MAAM,kBAPF;IAQJ,MAAM,WARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjUY,EAiVZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,YANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,WARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjVY,EAiWZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,SANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,OARF;IASJ,MAAM,OATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjWY,EAiXZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,SANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,aARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjXY,EAiYZ;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,oBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,aANF;IAOJ,MAAM,cAPF;IAQJ,MAAM,WARF;IASJ,MAAM,cATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjYY,EAiZZ;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,OANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,KARF;IASJ,MAAM,KATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjZY,EAiaZ;EACI,OAAO,KADX;EAEI,QAAQ;IACJ,MAAM,KADF;IAEJ,MAAM,YAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,KALF;IAMJ,MAAM,YANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,YARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjaY,EAibZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,kBAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,aANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjbY,EAicZ;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,YAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,YANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,YARF;IASJ,MAAM,aATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjcY,EAidZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,cANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,QARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjdY,EAieZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,SANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjeY,EAifZ;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjfY,EAigBZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,MAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,QANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,SARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjgBY,EAihBZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,MAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,SANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjhBY,EAiiBZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,MANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,OATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjiBY,EAijBZ;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,gBAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,kBALF;IAMJ,MAAM,gBANF;IAOJ,MAAM,mBAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,sBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjjBY,EAikBZ;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,qBAJF;IAKJ,MAAM,wBALF;IAMJ,MAAM,aANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,gBARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjkBY,EAilBZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,WANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,WARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjlBY,EAimBZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,UANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,WARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjmBY,EAinBZ;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,aAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,oBAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,oBANF;IAOJ,MAAM,oBAPF;IAQJ,MAAM,kBARF;IASJ,MAAM,gBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjnBY,EAioBZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,MANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,kBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjoBY,EAipBZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,cAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,YANF;IAOJ,MAAM,gBAPF;IAQJ,MAAM,WARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjpBY,EAiqBZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,iBAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,aANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,yBARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjqBY,EAirBZ;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,YANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,iBARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjrBY,EAisBZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjsBY,EAitBZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,sBAJF;IAKJ,MAAM,iBALF;IAMJ,MAAM,aANF;IAOJ,MAAM,iBAPF;IAQJ,MAAM,eARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjtBY,EAiuBZ;EACI,OAAO,mBADX;EAEI,QAAQ;IACJ,MAAM,mBADF;IAEJ,MAAM,uBAFF;IAGJ,MAAM,gBAHF;IAIJ,MAAM,wBAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,iBANF;IAOJ,MAAM,eAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,uBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjuBY,EAivBZ;EACI,OAAO,oBADX;EAEI,QAAQ;IACJ,MAAM,oBADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,mBAHF;IAIJ,MAAM,wBAJF;IAKJ,MAAM,wBALF;IAMJ,MAAM,mBANF;IAOJ,MAAM,sBAPF;IAQJ,MAAM,yBARF;IASJ,MAAM,yBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjvBY,EAiwBZ;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,iBAJF;IAKJ,MAAM,mBALF;IAMJ,MAAM,aANF;IAOJ,MAAM,eAPF;IAQJ,MAAM,kBARF;IASJ,MAAM,kBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjwBY,EAixBZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,KAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,MALF;IAMJ,MAAM,MANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjxBY,EAiyBZ;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,QANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,SARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjyBY,EAizBZ;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,KAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,QANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,QARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjzBY,EAi0BZ;EACI,OAAO,IADX;EAEI,QAAQ;IACJ,MAAM,IADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,IAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,IALF;IAMJ,MAAM,IANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,WARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj0BY,EAi1BZ;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,aAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,YANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj1BY,EAi2BZ;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,iBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,YANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,cARF;IASJ,MAAM,cATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj2BY,EAi3BZ;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,WANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,UARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj3BY,EAi4BZ;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,WARF;IASJ,MAAM,cATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj4BY,EAi5BZ;EACI,OAAO,iBADX;EAEI,QAAQ;IACJ,MAAM,iBADF;IAEJ,MAAM,mBAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,kBAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,aANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,0BARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj5BY,EAi6BZ;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,OANF;IAOJ,MAAM,MAPF;IAQJ,MAAM,MARF;IASJ,MAAM,MATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj6BY,EAi7BZ;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,YANF;IAOJ,MAAM,kBAPF;IAQJ,MAAM,mBARF;IASJ,MAAM,oBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj7BY,EAi8BZ;EACI,OAAO,mBADX;EAEI,QAAQ;IACJ,MAAM,mBADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,iBAHF;IAIJ,MAAM,oBAJF;IAKJ,MAAM,iBALF;IAMJ,MAAM,eANF;IAOJ,MAAM,iBAPF;IAQJ,MAAM,iBARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj8BY,EAi9BZ;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,qBALF;IAMJ,MAAM,MANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,OARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj9BY,CAAhB,C,CAm+BA;;AACA,IAAMC,KAAK,GAAG,CACV;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,YANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,UARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CADU,EAiBV;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,aAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,mBALF;IAMJ,MAAM,eANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,aARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjBU,EAiCV;EACI,OAAO,eADX;EAEI,QAAQ;IACJ,MAAM,eADF;IAEJ,MAAM,aAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,YANF;IAOJ,MAAM,eAPF;IAQJ,MAAM,UARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjCU,EAiDV;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,mBAJF;IAKJ,MAAM,gBALF;IAMJ,MAAM,WANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,kBARF;IASJ,MAAM,oBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjDU,EAiEV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,KANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,mBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjEU,EAiFV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,aANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,aARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjFU,EAiGV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,gBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,UANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,UARF;IASJ,MAAM,MATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjGU,EAiHV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,QANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjHU,EAiIV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,SANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,YARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjIU,EAiJV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,SANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,UARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjJU,EAiKV;EACI,OAAO,OADX;EAEI,QAAQ;IACJ,MAAM,OADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,OARF;IASJ,MAAM,OATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjKU,EAiLV;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,KAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,MALF;IAMJ,MAAM,KANF;IAOJ,MAAM,MAPF;IAQJ,MAAM,UARF;IASJ,MAAM,MATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjLU,EAiMV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjMU,EAiNV;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,aAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,iBAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,cANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,QARF;IASJ,MAAM,aATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjNU,EAiOV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,SANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,mBARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjOU,EAiPV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,gBALF;IAMJ,MAAM,UANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,gBARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjPU,EAiQV;EACI,OAAO,KADX;EAEI,QAAQ;IACJ,MAAM,KADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,KAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,aANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,SARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjQU,EAiRV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,SANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjRU,EAiSV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,QANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjSU,EAiTV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,WANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,cARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjTU,EAiUV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,KAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,MANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjUU,EAiVV;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,cAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,WANF;IAOJ,MAAM,kBAPF;IAQJ,MAAM,cARF;IASJ,MAAM,gBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjVU,EAiWV;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,uBAJF;IAKJ,MAAM,gBALF;IAMJ,MAAM,gBANF;IAOJ,MAAM,mBAPF;IAQJ,MAAM,sBARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjWU,EAiXV;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,qBALF;IAMJ,MAAM,YANF;IAOJ,MAAM,gBAPF;IAQJ,MAAM,oBARF;IASJ,MAAM,yBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjXU,EAiYV;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,qBAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,WANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,YARF;IASJ,MAAM,kBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjYU,EAiZV;EACI,OAAO,cADX;EAEI,QAAQ;IACJ,MAAM,cADF;IAEJ,MAAM,gBAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,eANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,gBARF;IASJ,MAAM,cATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjZU,EAiaV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,gBALF;IAMJ,MAAM,aANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,kBARF;IASJ,MAAM,kBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjaU,EAibV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,OANF;IAOJ,MAAM,MAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjbU,EAicV;EACI,OAAO,kBADX;EAEI,QAAQ;IACJ,MAAM,kBADF;IAEJ,MAAM,gBAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,gBAJF;IAKJ,MAAM,kBALF;IAMJ,MAAM,gBANF;IAOJ,MAAM,kBAPF;IAQJ,MAAM,cARF;IASJ,MAAM,gBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjcU,EAidV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,aANF;IAOJ,MAAM,QAPF;IAQJ,MAAM,UARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjdU,EAieV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,MANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,UARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjeU,EAifV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,SARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjfU,EAigBV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,mBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,OANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,eARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjgBU,EAihBV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,MAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,SANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,YARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjhBU,EAiiBV;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,MAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,SANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjiBU,EAijBV;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,mBALF;IAMJ,MAAM,YANF;IAOJ,MAAM,cAPF;IAQJ,MAAM,iBARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjjBU,EAikBV;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,OAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjkBU,EAilBV;EACI,OAAO,eADX;EAEI,QAAQ;IACJ,MAAM,eADF;IAEJ,MAAM,gBAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,eALF;IAMJ,MAAM,eANF;IAOJ,MAAM,qBAPF;IAQJ,MAAM,eARF;IASJ,MAAM,gBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjlBU,EAimBV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,kBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,iBALF;IAMJ,MAAM,YANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjmBU,EAinBV;EACI,OAAO,MADX;EAEI,QAAQ;IACJ,MAAM,MADF;IAEJ,MAAM,YAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,QAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,QANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,QARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjnBU,EAioBV;EACI,OAAO,eADX;EAEI,QAAQ;IACJ,MAAM,eADF;IAEJ,MAAM,sBAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,SANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjoBU,EAipBV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,OAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,QALF;IAMJ,MAAM,QANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,QARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjpBU,EAiqBV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,iBAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,eAJF;IAKJ,MAAM,mBALF;IAMJ,MAAM,YANF;IAOJ,MAAM,aAPF;IAQJ,MAAM,eARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjqBU,EAirBV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,QAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,MANF;IAOJ,MAAM,iBAPF;IAQJ,MAAM,QARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjrBU,EAisBV;EACI,OAAO,gBADX;EAEI,QAAQ;IACJ,MAAM,gBADF;IAEJ,MAAM,qBAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,oBAJF;IAKJ,MAAM,uBALF;IAMJ,MAAM,mBANF;IAOJ,MAAM,mBAPF;IAQJ,MAAM,sBARF;IASJ,MAAM,mBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjsBU,EAitBV;EACI,OAAO,SADX;EAEI,QAAQ;IACJ,MAAM,SADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,UALF;IAMJ,MAAM,QANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,SARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjtBU,EAiuBV;EACI,OAAO,QADX;EAEI,QAAQ;IACJ,MAAM,QADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,UARF;IASJ,MAAM,SATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjuBU,EAivBV;EACI,OAAO,WADX;EAEI,QAAQ;IACJ,MAAM,WADF;IAEJ,MAAM,mBAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,iBAJF;IAKJ,MAAM,oBALF;IAMJ,MAAM,aANF;IAOJ,MAAM,iBAPF;IAQJ,MAAM,iBARF;IASJ,MAAM,mBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjvBU,EAiwBV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,iBAFF;IAGJ,MAAM,cAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,YANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,WARF;IASJ,MAAM,WATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjwBU,EAixBV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,eAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,cALF;IAMJ,MAAM,QANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,OARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjxBU,EAiyBV;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,SALF;IAMJ,MAAM,UANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,kBARF;IASJ,MAAM,iBATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjyBU,EAizBV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,UAFF;IAGJ,MAAM,SAHF;IAIJ,MAAM,aAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,WANF;IAOJ,MAAM,YAPF;IAQJ,MAAM,WARF;IASJ,MAAM,UATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAjzBU,EAi0BV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,SAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,UANF;IAOJ,MAAM,WAPF;IAQJ,MAAM,UARF;IASJ,MAAM,MATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj0BU,EAi1BV;EACI,OAAO,IADX;EAEI,QAAQ;IACJ,MAAM,IADF;IAEJ,MAAM,QAFF;IAGJ,MAAM,IAHF;IAIJ,MAAM,WAJF;IAKJ,MAAM,OALF;IAMJ,MAAM,IANF;IAOJ,MAAM,SAPF;IAQJ,MAAM,UARF;IASJ,MAAM,IATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj1BU,EAi2BV;EACI,OAAO,UADX;EAEI,QAAQ;IACJ,MAAM,UADF;IAEJ,MAAM,YAFF;IAGJ,MAAM,WAHF;IAIJ,MAAM,SAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,YANF;IAOJ,MAAM,UAPF;IAQJ,MAAM,SARF;IASJ,MAAM,QATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj2BU,EAi3BV;EACI,OAAO,YADX;EAEI,QAAQ;IACJ,MAAM,YADF;IAEJ,MAAM,iBAFF;IAGJ,MAAM,UAHF;IAIJ,MAAM,YAJF;IAKJ,MAAM,YALF;IAMJ,MAAM,UANF;IAOJ,MAAM,gBAPF;IAQJ,MAAM,aARF;IASJ,MAAM,YATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj3BU,EAi4BV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,eAFF;IAGJ,MAAM,aAHF;IAIJ,MAAM,OAJF;IAKJ,MAAM,aALF;IAMJ,MAAM,aANF;IAOJ,MAAM,yBAPF;IAQJ,MAAM,eARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj4BU,EAi5BV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,WANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,eARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj5BU,EAi6BV;EACI,OAAO,aADX;EAEI,QAAQ;IACJ,MAAM,aADF;IAEJ,MAAM,WAFF;IAGJ,MAAM,YAHF;IAIJ,MAAM,UAJF;IAKJ,MAAM,WALF;IAMJ,MAAM,WANF;IAOJ,MAAM,OAPF;IAQJ,MAAM,eARF;IASJ,MAAM,eATF;IAUJ,SAAS;EAVL,CAFZ;EAcI,QAAQ;AAdZ,CAj6BU,CAAd;;IAm7BMC,Y;;;;;EACF,sBAAYC,KAAZ,EAAmB;IAAA;;IAAA;IACf,0BAAMA,KAAN;IACA,MAAKC,KAAL,GAAa;MACTC,MAAM,EAAE,KADC;MAETC,KAAK,EAAE,EAFE;MAGTC,MAAM,EAAE,EAHC;MAITC,KAAK,EAAEL,KAAK,CAACK,KAAN,IAAe;IAJb,CAAb;IAFe;EAQlB;;;;WAED,wBAAe;MAAA;;MACX,IAAI,KAAKJ,KAAL,CAAWK,OAAX,IAAsB,KAAKL,KAAL,CAAWI,KAArC,EAA4C;QACxC;MACH;;MACD,KAAKE,QAAL,CAAc;QAACD,OAAO,EAAE;MAAV,CAAd,EAA+B,YAAM;QACjC,IAAMD,KAAK,GAAG,EAAd;QACA,IAAMF,KAAK,GAAG,EAAd;;QAEA,IAAI,CAAC,MAAI,CAACH,KAAL,CAAWK,KAAhB,EAAuB;UACnB,IAAIG,SAAS,GAAG,MAAI,CAACR,KAAL,CAAWS,SAAX,IAAyB,CAAC,MAAI,CAACT,KAAL,CAAWS,SAAZ,IAAyB,CAAC,MAAI,CAACT,KAAL,CAAWU,WAA9D,GAA6EZ,KAA7E,GAAqF,IAArG;UAEA,IAAMa,QAAQ,GAAG,EAAjB;;UACA,IAAIH,SAAJ,EAAe;YACXA,SAAS,CAACI,OAAV,CAAkB,UAAAC,IAAI,EAAI;cACtB,IAAIA,IAAI,CAACC,IAAL,IAAa,yBAAOD,IAAI,CAACC,IAAZ,MAAqB,QAAtC,EAAgD;gBAC5CD,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAL,CAAU,MAAI,CAACd,KAAL,CAAWe,IAArB,KAA8BF,IAAI,CAACC,IAAL,CAAUE,EAAxC,IAA8CH,IAAI,CAACI,GAA/D;cACH;;cACDJ,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAL,IAAaD,IAAI,CAACI,GAA9B;YACH,CALD;YAOAT,SAAS,GAAGA,SAAS,CAACJ,MAAV,CAAiB,UAACS,IAAD,EAAOK,CAAP;cAAA,OAAa,CAACV,SAAS,CAACW,IAAV,CAAe,UAACC,KAAD,EAAQC,EAAR;gBAAA,OAAeH,CAAC,KAAKG,EAAN,IAAYD,KAAK,CAACE,IAAN,KAAeT,IAAI,CAACS,IAAhC,IAAwCF,KAAK,CAACN,IAAN,KAAeD,IAAI,CAACC,IAA3E;cAAA,CAAf,CAAd;YAAA,CAAjB,CAAZ;YAEAN,SAAS,CAACI,OAAV,CAAkB,UAACW,QAAD,EAAWL,CAAX,EAAiB;cAC/B,IAAIM,KAAJ;;cACA,IAAI;gBACAA,KAAK,GAAGC,OAAO,2BAAoBF,QAAQ,CAACD,IAA7B,EAAf;cACH,CAFD,CAEE,OAAOI,CAAP,EAAU;gBACR,OAAOC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;cACH;;cAEDzB,KAAK,CAACe,CAAD,CAAL,GAAWK,QAAQ,CAACT,IAApB;cAEAH,QAAQ,CAACkB,IAAT,CAAcC,iBAAA,CAAMC,MAAN,CAAaP,KAAb,EACTQ,IADS,CACJ,UAAAV,IAAI;gBAAA,OACNjB,KAAK,CAACa,CAAD,CAAL,GAAWI,IADL;cAAA,CADA,CAAd;YAGH,CAbD;UAcH;;UAEDd,SAAS,GAAG,MAAI,CAACR,KAAL,CAAWU,WAAX,IAA2B,CAAC,MAAI,CAACV,KAAL,CAAWS,SAAZ,IAAyB,CAAC,MAAI,CAACT,KAAL,CAAWU,WAAhE,GAA+Eb,OAA/E,GAAyF,IAArG;;UACA,IAAIW,SAAJ,EAAe;YACX,IAAMyB,MAAM,GAAGtB,QAAQ,CAACuB,MAAxB;YACA1B,SAAS,IAAIA,SAAS,CAACI,OAAV,CAAkB,UAAAC,IAAI,EAAI;cACnC,IAAIA,IAAI,CAACC,IAAL,IAAa,yBAAOD,IAAI,CAACC,IAAZ,MAAqB,QAAtC,EAAgD;gBAC5CD,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAL,CAAU,MAAI,CAACd,KAAL,CAAWe,IAArB,KAA8BF,IAAI,CAACC,IAAL,CAAUE,EAAxC,IAA8CH,IAAI,CAACI,GAA/D;cACH;;cACDJ,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAL,IAAaD,IAAI,CAACI,GAA9B;YACH,CALY,CAAb;YAOAT,SAAS,GAAGA,SAAS,CAACJ,MAAV,CAAiB,UAACS,IAAD,EAAOK,CAAP;cAAA,OAAa,CAACV,SAAS,CAACW,IAAV,CAAe,UAACC,KAAD,EAAQC,EAAR;gBAAA,OAAeH,CAAC,KAAKG,EAAN,IAAYD,KAAK,CAACE,IAAN,KAAeT,IAAI,CAACS,IAAhC,IAAwCF,KAAK,CAACN,IAAN,KAAeD,IAAI,CAACC,IAA3E;cAAA,CAAf,CAAd;YAAA,CAAjB,CAAZ;YAEAN,SAAS,CAACI,OAAV,CAAkB,UAACW,QAAD,EAAWL,CAAX,EAAiB;cAC/B,IAAIM,KAAJ;;cACA,IAAI;gBACAA,KAAK,GAAGC,OAAO,6BAAsBF,QAAQ,CAACD,IAA/B,EAAf;cACH,CAFD,CAEE,OAAOI,CAAP,EAAU;gBACR,OAAOC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;cACH;;cAEDzB,KAAK,CAACe,CAAC,GAAGe,MAAL,CAAL,GAAoBV,QAAQ,CAACT,IAA7B;cAEAH,QAAQ,CAACkB,IAAT,CAAcC,iBAAA,CAAMC,MAAN,CAAaP,KAAb,EACTQ,IADS,CACJ,UAAAV,IAAI;gBAAA,OACNjB,KAAK,CAACa,CAAC,GAAGe,MAAL,CAAL,GAAoBX,IADd;cAAA,CADA,CAAd;YAGH,CAbD;UAcH;;UACDK,OAAO,CAACQ,GAAR,CAAYxB,QAAZ,EACKqB,IADL,CACU;YAAA,OACF,MAAI,CAACzB,QAAL,CAAc;cAACF,KAAK,EAALA,KAAD;cAAQC,OAAO,EAAE,KAAjB;cAAwBH,KAAK,EAALA,KAAxB;cAA+BiC,SAAS,EAAEjC,KAAK,CAACgB,IAAN,CAAW,UAAAD,CAAC;gBAAA,OAAIA,CAAJ;cAAA,CAAZ;YAA1C,CAAd,CADE;UAAA,CADV;QAGH,CA5DD,MA4DO;UACH,IAAMP,SAAQ,GAAG,MAAI,CAACX,KAAL,CAAWK,KAAX,CAAiBgC,GAAjB,CAAqB,UAACxB,IAAD,EAAOK,CAAP,EAAa;YAC/C,IAAIoB,IAAJ;;YACA,IAAI,yBAAOzB,IAAP,MAAgB,QAApB,EAA8B;cAC1ByB,IAAI,GAAGzB,IAAI,CAACS,IAAL,IAAaT,IAAI,CAAC0B,GAAlB,IAAyB1B,IAAI,CAACyB,IAArC;cACAnC,KAAK,CAACe,CAAD,CAAL,GAAW,yBAAOL,IAAI,CAACC,IAAZ,MAAqB,QAArB,GAAgCD,IAAI,CAACC,IAAL,CAAU,MAAI,CAACd,KAAL,CAAWe,IAArB,KAA8BF,IAAI,CAACC,IAAL,CAAUE,EAAxC,IAA8CH,IAAI,CAACI,GAAnF,GAAyFJ,IAAI,CAACC,IAAzG;;cACA,IAAI,CAACX,KAAK,CAACe,CAAD,CAAV,EAAe;gBACX,IAAMsB,KAAK,GAAGF,IAAI,CAACG,KAAL,CAAW,GAAX,CAAd;gBACAD,KAAK,CAACE,GAAN;gBACAvC,KAAK,CAACe,CAAD,CAAL,GAAWsB,KAAK,CAACA,KAAK,CAACN,MAAN,GAAe,CAAhB,CAAhB;cACH;YACJ,CARD,MAQO;cACHI,IAAI,GAAGzB,IAAP;YACH;;YAED,IAAIyB,IAAJ,EAAU;cACN,IAAIA,IAAI,CAACK,UAAL,CAAgB,OAAhB,CAAJ,EAA8B;gBAC1BtC,KAAK,CAACa,CAAD,CAAL,GAAWoB,IAAX;gBACA,OAAOX,OAAO,CAACC,OAAR,EAAP;cACH,CAHD,MAGO;gBACH,OAAOE,iBAAA,CAAMC,MAAN,CAAaO,IAAb,EACFN,IADE,CACG,UAAAV,IAAI;kBAAA,OACNjB,KAAK,CAACa,CAAD,CAAL,GAAWI,IADL;gBAAA,CADP,CAAP;cAGH;YACJ,CATD,MASO;cACH,OAAOK,OAAO,CAACC,OAAR,EAAP;YACH;UACJ,CA1BgB,CAAjB;;UA4BAD,OAAO,CAACQ,GAAR,CAAYxB,SAAZ,EACKqB,IADL,CACU;YAAA,OACF,MAAI,CAACzB,QAAL,CAAc;cAACF,KAAK,EAALA,KAAD;cAAQC,OAAO,EAAE,KAAjB;cAAwBH,KAAK,EAALA,KAAxB;cAA+BiC,SAAS,EAAEjC,KAAK,CAACgB,IAAN,CAAW,UAAAD,CAAC;gBAAA,OAAIA,CAAJ;cAAA,CAAZ;YAA1C,CAAd,CADE;UAAA,CADV;QAGH;MACJ,CAjGD;IAkGH;;;WAED,kBAAS;MAAA;;MACL,IAAI,KAAKjB,KAAL,CAAWK,OAAf,EAAwB;QACpB,oBAAO,gCAAC,4BAAD,OAAP;MACH;;MAED,oBAAO,+EACH,gCAAC,kBAAD;QACI,KAAK,EAAC,MADV;QAEI,OAAO,EAAC,UAFZ;QAGI,KAAK,EAAE,KAAKN,KAAL,CAAW4C,CAAX,CAAa,2BAAb,CAHX;QAII,OAAO,EAAE;UAAA,OAAM,MAAI,CAACrC,QAAL,CAAc;YAACL,MAAM,EAAE;UAAT,CAAd,EAA8B;YAAA,OAAM,MAAI,CAAC2C,YAAL,EAAN;UAAA,CAA9B,CAAN;QAAA,CAJb;QAI6E,KAAK,EAAE;UAACC,QAAQ,EAAE,EAAX;UAAeC,WAAW,EAAE;QAA5B;MAJpF,SADG,EAOF,KAAK9C,KAAL,CAAWC,MAAX,gBAAoB,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAA,OAAM,MAAI,CAACK,QAAL,CAAc;YAACL,MAAM,EAAE;UAAT,CAAd,CAAN;QAAA,CAAjB;QAAuD,IAAI,EAAE;MAA7D,gBACjB,gCAAC,uBAAD,QAAc,KAAKF,KAAL,CAAW4C,CAAX,CAAa,2BAAb,CAAd,EACK,KAAK3C,KAAL,CAAWmC,SAAX,gBAAuB,gCAAC,qBAAD;QACpB,OAAO,EAAC,UADY;QAEpB,MAAM,EAAC,OAFa;QAGpB,KAAK,EAAE;UAACY,UAAU,EAAE;QAAb,CAHa;QAIpB,KAAK,EAAE,KAAK/C,KAAL,CAAWG,MAJE;QAKpB,QAAQ,EAAE,kBAAAsB,CAAC;UAAA,OAAI,MAAI,CAACnB,QAAL,CAAc;YAACH,MAAM,EAAEsB,CAAC,CAACuB,MAAF,CAASC,KAAT,CAAeC,WAAf;UAAT,CAAd,CAAJ;QAAA,CALS;QAMpB,WAAW,EAAE,KAAKnD,KAAL,CAAW4C,CAAX,CAAa,WAAb,CANO;QAOpB,UAAU,EAAE;UACRQ,YAAY,EAAE,KAAKnD,KAAL,CAAWG,MAAX,gBAEV,gCAAC,sBAAD;YACI,IAAI,EAAC,OADT;YAEI,OAAO,EAAE;cAAA,OAAM,MAAI,CAACG,QAAL,CAAc;gBAACH,MAAM,EAAE;cAAT,CAAd,CAAN;YAAA;UAFb,gBAGI,gCAAC,iBAAD,OAHJ,CAFU,GAQViD;QATI;MAPQ,EAAvB,GAkBI,IAnBT,CADiB,eAsBjB,gCAAC,yBAAD,qBACI;QAAK,KAAK,EAAE;UAACC,KAAK,EAAE,MAAR;UAAgBC,SAAS,EAAE;QAA3B;MAAZ,GACK,KAAKtD,KAAL,CAAWI,KAAX,IAAoB,KAAKJ,KAAL,CAAWI,KAAX,CAAiBgC,GAAjB,CAAqB,UAACf,IAAD,EAAOJ,CAAP,EAAa;QACnD,IAAI,CAAC,MAAI,CAACjB,KAAL,CAAWG,MAAZ,IAAuB,MAAI,CAACH,KAAL,CAAWE,KAAX,CAAiBe,CAAjB,KAAuB,MAAI,CAACjB,KAAL,CAAWE,KAAX,CAAiBe,CAAjB,EAAoBiC,WAApB,GAAkCK,QAAlC,CAA2C,MAAI,CAACvD,KAAL,CAAWG,MAAtD,CAAlD,EAAkH;UAC9G,oBAAO,gCAAC,mBAAD;YAAS,KAAK,EAAE,MAAI,CAACH,KAAL,CAAWE,KAAX,CAAiBe,CAAjB,KAAuB,EAAvC;YAA2C,GAAG,EAAEA;UAAhD,gBACH,gCAAC,sBAAD;YACI,OAAO,EAAE;cAAA,OACL,MAAI,CAACX,QAAL,CAAc;gBAACL,MAAM,EAAE;cAAT,CAAd,EAA+B;gBAAA,OAC3B,CAAC,MAAI,CAACF,KAAL,CAAWyD,QAAX,IAAuB,MAAI,CAACzD,KAAL,CAAW0D,QAAnC,EAA6CpC,IAA7C,CAD2B;cAAA,CAA/B,CADK;YAAA,CADb;YAKI,IAAI,EAAC;UALT,gBAOI,gCAAC,gBAAD;YAAM,GAAG,EAAEA,IAAX;YAAiB,GAAG,EAAEJ,CAAtB;YAAyB,KAAK,EAAE;cAACoC,KAAK,EAAE,EAAR;cAAYK,MAAM,EAAE,EAApB;cAAwBC,YAAY,EAAE;YAAtC;UAAhC,EAPJ,CADG,CAAP;QAWH,CAZD,MAYO;UACH,OAAO,IAAP;QACH;MACJ,CAhBoB,CADzB,CADJ,CAtBiB,eA2CjB,gCAAC,yBAAD,qBACI,gCAAC,kBAAD;QACI,KAAK,EAAC,MADV;QAEI,OAAO,EAAC,WAFZ;QAGI,OAAO,EAAE;UAAA,OAAM,MAAI,CAACrD,QAAL,CAAc;YAACL,MAAM,EAAE;UAAT,CAAd,CAAN;QAAA,CAHb;QAII,SAAS,eAAE,gCAAC,iBAAD;MAJf,GAMK,KAAKF,KAAL,CAAW4C,CAAX,CAAa,UAAb,CANL,CADJ,CA3CiB,CAApB,GAqDW,IA5DT,CAAP;IA8DH;;;EAtLsBiB,gB;;AAyL3B9D,YAAY,CAAC+D,SAAb,GAAyB;EACrBzD,KAAK,EAAE0D,qBAAA,CAAUC,KADI;EAErBvD,SAAS,EAAEsD,qBAAA,CAAUE,IAFA;EAGrBvD,WAAW,EAAEqD,qBAAA,CAAUE,IAHF;EAIrBR,QAAQ,EAAEM,qBAAA,CAAUG,IAJC;EAIK;EAC1BR,QAAQ,EAAEK,qBAAA,CAAUG,IALC;EAMrBtB,CAAC,EAAEmB,qBAAA,CAAUG,IAAV,CAAeC,UANG;EAOrBpD,IAAI,EAAEgD,qBAAA,CAAUK,MAAV,CAAiBD;AAPF,CAAzB;AAUA;;eACepE,Y"}
@@ -23,7 +23,7 @@ var _react = _interopRequireDefault(require("react"));
23
23
 
24
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
- var _no_icon = _interopRequireDefault(require("../assets/no_icon.svg"));
26
+ var _IconNoIcon = _interopRequireDefault(require("../icons/IconNoIcon"));
27
27
 
28
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
29
29
 
@@ -149,18 +149,24 @@ var Image = /*#__PURE__*/function (_React$Component) {
149
149
 
150
150
  return this.svg;
151
151
  } else if (this.state.src) {
152
- return /*#__PURE__*/_react["default"].createElement("img", {
153
- className: this.props.className,
154
- src: this.state.imgError ? _no_icon["default"] : (this.props.imagePrefix || '') + this.state.src || _no_icon["default"],
155
- alt: "",
156
- onError: function onError() {
157
- return _this2.props.showError ? _this2.setState({
158
- imgError: true
159
- }) : _this2.setState({
160
- src: ''
161
- });
162
- }
163
- });
152
+ if (this.state.imgError || !this.state.src) {
153
+ return /*#__PURE__*/_react["default"].createElement(_IconNoIcon["default"], {
154
+ className: this.props.className
155
+ });
156
+ } else {
157
+ return /*#__PURE__*/_react["default"].createElement("img", {
158
+ className: this.props.className,
159
+ src: (this.props.imagePrefix || '') + this.state.src,
160
+ alt: "",
161
+ onError: function onError() {
162
+ return _this2.props.showError ? _this2.setState({
163
+ imgError: true
164
+ }) : _this2.setState({
165
+ src: ''
166
+ });
167
+ }
168
+ });
169
+ }
164
170
  } else {
165
171
  return null;
166
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","names":["getElementFromSource","src","svgContainer","document","createElement","innerHTML","svg","firstElementChild","remove","removeChild","serializeAttrs","map","ret","prop","i","length","key","name","startsWith","replace","g","toUpperCase","value","Image","props","state","created","color","imgError","showError","getSvgFromData","len","substring","atob","inner","svgProps","attributes","className","__html","e","setTimeout","setState","IconNoIcon","imagePrefix","newState","changed","React","Component","propTypes","PropTypes","string","isRequired"],"sources":["Image.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconNoIcon from '../assets/no_icon.svg';\n\nfunction getElementFromSource(src) {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg = svgContainer.firstElementChild;\n if (svg.remove) {\n svg.remove();\n } else {\n svgContainer.removeChild(svg);\n }\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map) {\n const ret = {};\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n }\n else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\n/**\n * @typedef {object} ImageProps\n * @property {string} [key] The key to identify this component.\n * @property {string} [color] The color.\n * @property {string} [src] The source of the image.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {string} [className] The CSS class name.\n * @property {boolean} [showError] Show image errors (or just show no image)?\n *\n * @extends {React.Component<ImageProps>}\n */\nclass Image extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n svg: !!(this.props.src && this.props.src.startsWith('data:')),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: this.props.showError,\n };\n\n this.svg = this.state.svg ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src && props.src.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src) {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes || []);\n\n svg.remove();\n\n return <svg\n className={this.props.className}\n style={this.state.color ? {color: this.state.color} : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />;\n } catch (e) {\n\n }\n return null;\n }\n\n render() {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.getSvgFromData(this.state.src);\n this.setState({created: true});\n }, 50);\n }\n\n return this.svg;\n } else if (this.state.src) {\n return <img\n className={this.props.className}\n src={this.state.imgError ? IconNoIcon : (this.props.imagePrefix || '') + this.state.src || IconNoIcon}\n alt=\"\"\n onError={() => this.props.showError ? this.setState({imgError: true}) : this.setState({src: ''})}\n />;\n } else {\n return null;\n }\n }\n}\n\nImage.propTypes = {\n color: PropTypes.string,\n src: PropTypes.string.isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n};\n\nexport default Image;"],"mappings":"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"}
1
+ {"version":3,"file":"Image.js","names":["getElementFromSource","src","svgContainer","document","createElement","innerHTML","svg","firstElementChild","remove","removeChild","serializeAttrs","map","ret","prop","i","length","key","name","startsWith","replace","g","toUpperCase","value","Image","props","state","created","color","imgError","showError","getSvgFromData","len","substring","atob","inner","svgProps","attributes","className","__html","e","setTimeout","setState","imagePrefix","newState","changed","React","Component","propTypes","PropTypes","string","isRequired"],"sources":["Image.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconNoIcon from '../icons/IconNoIcon';\n\nfunction getElementFromSource(src) {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg = svgContainer.firstElementChild;\n if (svg.remove) {\n svg.remove();\n } else {\n svgContainer.removeChild(svg);\n }\n\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map) {\n const ret = {};\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n }\n else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\n/**\n * @typedef {object} ImageProps\n * @property {string} [key] The key to identify this component.\n * @property {string} [color] The color.\n * @property {string} [src] The source of the image.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {string} [className] The CSS class name.\n * @property {boolean} [showError] Show image errors (or just show no image)?\n *\n * @extends {React.Component<ImageProps>}\n */\nclass Image extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n svg: !!(this.props.src && this.props.src.startsWith('data:')),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: this.props.showError,\n };\n\n this.svg = this.state.svg ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src && props.src.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src) {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes || []);\n\n svg.remove();\n\n return <svg\n className={this.props.className}\n style={this.state.color ? {color: this.state.color} : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />;\n } catch (e) {\n\n }\n return null;\n }\n\n render() {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.getSvgFromData(this.state.src);\n this.setState({created: true});\n }, 50);\n }\n\n return this.svg;\n } else if (this.state.src) {\n if (this.state.imgError || !this.state.src) {\n return <IconNoIcon className={this.props.className} />;\n } else {\n return <img\n className={this.props.className}\n src={(this.props.imagePrefix || '') + this.state.src}\n alt=\"\"\n onError={() => this.props.showError ? this.setState({imgError: true}) : this.setState({src: ''})}\n />;\n }\n } else {\n return null;\n }\n }\n}\n\nImage.propTypes = {\n color: PropTypes.string,\n src: PropTypes.string.isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n};\n\nexport default Image;"],"mappings":"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"}
@@ -89,12 +89,13 @@ var ConfigCustom = /*#__PURE__*/function (_Component) {
89
89
  } // custom component always has constant name
90
90
 
91
91
 
92
- _context.next = 7;
92
+ _context.prev = 5;
93
+ _context.next = 8;
93
94
  return Promise.resolve().then(function () {
94
95
  return _interopRequireWildcard(require('CustomComponent/Components'));
95
96
  });
96
97
 
97
- case 7:
98
+ case 8:
98
99
  component = _context.sent;
99
100
 
100
101
  if (!component || !component["default"] || !component["default"][this.props.schema.name]) {
@@ -109,12 +110,22 @@ var ConfigCustom = /*#__PURE__*/function (_Component) {
109
110
  });
110
111
  }
111
112
 
112
- case 9:
113
+ _context.next = 15;
114
+ break;
115
+
116
+ case 12:
117
+ _context.prev = 12;
118
+ _context.t0 = _context["catch"](5);
119
+ this.setState({
120
+ error: "Cannot import from ".concat(this.props.schema.url, ": ").concat(_context.t0)
121
+ });
122
+
123
+ case 15:
113
124
  case "end":
114
125
  return _context.stop();
115
126
  }
116
127
  }
117
- }, _callee, this);
128
+ }, _callee, this, [[5, 12]]);
118
129
  }));
119
130
 
120
131
  function componentDidMount() {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigCustom.js","names":["ConfigCustom","props","state","Component","error","schema","url","console","setState","startsWith","window","_customComponent","location","protocol","host","replace","component","name","keys","Object","join","item","xs","undefined","lg","md","sm","assign","marginBottom","textAlign","width","type","style","themeType","darkStyle","newLine","flexBasis","height","propTypes","socket","PropTypes","object","isRequired","string","themeName","className","data","onError","func","onChange"],"sources":["JsonConfigComponent/ConfigCustom.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Grid from '@mui/material/Grid';\n\nclass ConfigCustom extends Component {\n constructor(props) {\n super(props);\n // schema.url - location of Widget\n // schema.name - Component name\n\n this.state = {\n Component: null,\n error: '',\n };\n }\n\n // load component dynamically\n async componentDidMount() {\n if (!this.props.schema.url) {\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: 'URL is empty. Cannot load custom component!' });\n return;\n }\n\n if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {\n window._customComponent = this.props.schema.url;\n } else if (this.props.schema.url.startsWith('./')) {\n window._customComponent = `${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\\./, '')}`;\n } else {\n window._customComponent = `${window.location.protocol}//${window.location.host}/${this.props.schema.url}`;\n }\n\n // custom component always has constant name\n const component = await import('CustomComponent/Components');\n\n if (!component || !component.default || !component.default[this.props.schema.name]) {\n const keys = Object.keys(component?.default || {});\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: `Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${keys.join(', ')}` });\n } else {\n this.setState({\n Component: component.default[this.props.schema.name]\n });\n }\n }\n\n render() {\n const Component = this.state.Component;\n\n // render temporary placeholder\n if (!Component) {\n if (this.state.error) {\n return ;\n } else {\n const schema = this.props.schema || {};\n\n const item = <Grid\n item\n xs={schema.xs || undefined}\n lg={schema.lg || undefined}\n md={schema.md || undefined}\n sm={schema.sm || undefined}\n style={Object.assign({}, {\n marginBottom: 0,\n //marginRight: 8,\n textAlign: 'left',\n width: schema.type === 'divider' || schema.type === 'header' ? schema.width || '100%' : undefined\n }, schema.style, this.props.themeType === 'dark' ? schema.darkStyle : {})}>\n {this.state.error ? <div>{this.state.error}</div> : <LinearProgress />}\n </Grid>;\n\n if (schema.newLine) {\n return <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>;\n } else {\n return item;\n }\n }\n }\n\n return <Component {...this.props} />;\n }\n}\n\nConfigCustom.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default ConfigCustom;"],"mappings":"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"}
1
+ {"version":3,"file":"ConfigCustom.js","names":["ConfigCustom","props","state","Component","error","schema","url","console","setState","startsWith","window","_customComponent","location","protocol","host","replace","component","name","keys","Object","join","item","xs","undefined","lg","md","sm","assign","marginBottom","textAlign","width","type","style","themeType","darkStyle","newLine","flexBasis","height","propTypes","socket","PropTypes","object","isRequired","string","themeName","className","data","onError","func","onChange"],"sources":["JsonConfigComponent/ConfigCustom.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Grid from '@mui/material/Grid';\n\nclass ConfigCustom extends Component {\n constructor(props) {\n super(props);\n // schema.url - location of Widget\n // schema.name - Component name\n\n this.state = {\n Component: null,\n error: '',\n };\n }\n\n // load component dynamically\n async componentDidMount() {\n if (!this.props.schema.url) {\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: 'URL is empty. Cannot load custom component!' });\n return;\n }\n\n if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {\n window._customComponent = this.props.schema.url;\n } else if (this.props.schema.url.startsWith('./')) {\n window._customComponent = `${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\\./, '')}`;\n } else {\n window._customComponent = `${window.location.protocol}//${window.location.host}/${this.props.schema.url}`;\n }\n\n // custom component always has constant name\n try {\n const component = await import('CustomComponent/Components');\n if (!component || !component.default || !component.default[this.props.schema.name]) {\n const keys = Object.keys(component?.default || {});\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: `Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${keys.join(', ')}` });\n } else {\n this.setState({\n Component: component.default[this.props.schema.name]\n });\n }\n } catch (error) {\n this.setState({ error: `Cannot import from ${this.props.schema.url}: ${error}` });\n }\n }\n\n render() {\n const Component = this.state.Component;\n\n // render temporary placeholder\n if (!Component) {\n if (this.state.error) {\n return ;\n } else {\n const schema = this.props.schema || {};\n\n const item = <Grid\n item\n xs={schema.xs || undefined}\n lg={schema.lg || undefined}\n md={schema.md || undefined}\n sm={schema.sm || undefined}\n style={Object.assign({}, {\n marginBottom: 0,\n //marginRight: 8,\n textAlign: 'left',\n width: schema.type === 'divider' || schema.type === 'header' ? schema.width || '100%' : undefined\n }, schema.style, this.props.themeType === 'dark' ? schema.darkStyle : {})}>\n {this.state.error ? <div>{this.state.error}</div> : <LinearProgress />}\n </Grid>;\n\n if (schema.newLine) {\n return <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>;\n } else {\n return item;\n }\n }\n }\n\n return <Component {...this.props} />;\n }\n}\n\nConfigCustom.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default ConfigCustom;"],"mappings":"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"}