diff --git a/packages/iobroker.vis-2/src/.eslintrc.js b/packages/iobroker.vis-2/src/.eslintrc.js index d7bfe5fd..e18dcae3 100644 --- a/packages/iobroker.vis-2/src/.eslintrc.js +++ b/packages/iobroker.vis-2/src/.eslintrc.js @@ -96,5 +96,7 @@ module.exports = { }, }, ], + '@typescript-eslint/type-annotation-spacing': 'error', + '@typescript-eslint/consistent-type-imports': 'error', }, }; diff --git a/packages/iobroker.vis-2/src/src/Attributes/View.tsx b/packages/iobroker.vis-2/src/src/Attributes/View.tsx index d40e7016..7da76ae8 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View.tsx @@ -26,7 +26,7 @@ import { } from '@iobroker/adapter-react-v5'; import { store } from '@/Store'; -import { Project, View } from '@iobroker/types-vis-2'; +import type { Project, View } from '@iobroker/types-vis-2'; import { resolution, getFields, type Field } from './View/Items'; import getEditField from './View/EditField'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/View/AllViewsDialog.tsx b/packages/iobroker.vis-2/src/src/Attributes/View/AllViewsDialog.tsx index aabb450e..38ddbc45 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View/AllViewsDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View/AllViewsDialog.tsx @@ -10,9 +10,10 @@ import { import { Close, DragHandle, FormatPaint } from '@mui/icons-material'; -import { I18n, LegacyConnection, type ThemeType } from '@iobroker/adapter-react-v5'; +import { I18n } from '@iobroker/adapter-react-v5'; +import type { LegacyConnection, type ThemeType } from '@iobroker/adapter-react-v5'; -import { Project } from '@iobroker/types-vis-2'; +import type { Project } from '@iobroker/types-vis-2'; import { getViewsWithDifferentValues } from '@/Attributes/View/ApplyProperties'; import getEditField from '@/Attributes/View/EditField'; import type { Field } from '@/Attributes/View/Items'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/View/ApplyProperties.tsx b/packages/iobroker.vis-2/src/src/Attributes/View/ApplyProperties.tsx index a4b000dd..7ba0824d 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View/ApplyProperties.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View/ApplyProperties.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Confirm as ConfirmDialog, I18n } from '@iobroker/adapter-react-v5'; -import { Field, FieldGroup } from '@/Attributes/View/Items'; -import { Project } from '@iobroker/types-vis-2'; +import type { Field, FieldGroup } from '@/Attributes/View/Items'; +import type { Project } from '@iobroker/types-vis-2'; export function getViewsWithDifferentValues( project: Project, diff --git a/packages/iobroker.vis-2/src/src/Attributes/View/EditField.tsx b/packages/iobroker.vis-2/src/src/Attributes/View/EditField.tsx index 05dfdbb3..fe235c57 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View/EditField.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View/EditField.tsx @@ -11,17 +11,20 @@ import { import { ColorPicker, I18n, - IconPicker, LegacyConnection, + IconPicker, TextWithIcon, Utils, +} from '@iobroker/adapter-react-v5'; +import type { + LegacyConnection, type ThemeType, } from '@iobroker/adapter-react-v5'; import { Clear as ClearIcon } from '@mui/icons-material'; import { deepClone } from '@/Utils/utils'; -import { Field } from '@/Attributes/View/Items'; -import { Project } from '@iobroker/types-vis-2'; +import type { Field } from '@/Attributes/View/Items'; +import type { Project } from '@iobroker/types-vis-2'; import EditFieldImage from './EditFieldImage'; import EditFieldIcon64 from './EditFieldIcon64'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/View/EditFieldImage.tsx b/packages/iobroker.vis-2/src/src/Attributes/View/EditFieldImage.tsx index 9bcc0f7e..1864f563 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View/EditFieldImage.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View/EditFieldImage.tsx @@ -1,4 +1,5 @@ -import React, { RefObject, useRef, useState } from 'react'; +import type { RefObject } from 'react'; +import React, { useRef, useState } from 'react'; import { Button, Fade, IconButton, Paper, Popper, TextField, @@ -7,15 +8,17 @@ import { import { Clear as ClearIcon } from '@mui/icons-material'; import { - type Connection, I18n, - LegacyConnection, SelectFile as SelectFileDialog, Utils, +} from '@iobroker/adapter-react-v5'; +import type { + LegacyConnection, + type Connection, type ThemeType, } from '@iobroker/adapter-react-v5'; -import { Field } from '@/Attributes/View/Items'; +import type { Field } from '@/Attributes/View/Items'; interface EditFieldImageProps { value: string; diff --git a/packages/iobroker.vis-2/src/src/Attributes/View/Items.tsx b/packages/iobroker.vis-2/src/src/Attributes/View/Items.tsx index 82b1b04f..605c0a38 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/View/Items.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/View/Items.tsx @@ -4,7 +4,7 @@ import { type SelectChangeEvent, TextField } from '@mui/material'; import { Close as CloseIcon } from '@mui/icons-material'; import { I18n, Utils } from '@iobroker/adapter-react-v5'; import { store } from '@/Store'; -import { Project, View } from '@iobroker/types-vis-2'; +import type { Project, View } from '@iobroker/types-vis-2'; export interface Field { label: string; diff --git a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetBindingField.tsx b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetBindingField.tsx index 2360fcac..11ca60b0 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetBindingField.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetBindingField.tsx @@ -29,13 +29,13 @@ import { Clear, Link as LinkIcon, } from '@mui/icons-material'; +import type { LegacyConnection, Connection } from '@iobroker/adapter-react-v5'; import { I18n, Utils, SelectID, - LegacyConnection, Connection, } from '@iobroker/adapter-react-v5'; -import { AnyWidgetId, Project, VisBindingOperationArgument } from '@iobroker/types-vis-2'; +import type { AnyWidgetId, Project, VisBindingOperationArgument } from '@iobroker/types-vis-2'; import { store, recalculateFields } from '@/Store'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetCSS.tsx b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetCSS.tsx index eeb424eb..800a7d91 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetCSS.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetCSS.tsx @@ -8,7 +8,7 @@ import { Close } from '@mui/icons-material'; import { I18n } from '@iobroker/adapter-react-v5'; -import { Widget } from '@iobroker/types-vis-2'; +import type { Widget } from '@iobroker/types-vis-2'; import CustomAceEditor from '../../Components/CustomAceEditor'; interface WidgetCSSProps { diff --git a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetField.tsx b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetField.tsx index 2e6d2529..85300b4c 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetField.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetField.tsx @@ -2,11 +2,12 @@ import React, { useEffect, useRef, useState, } from 'react'; +import type { SelectChangeEvent } from '@mui/material'; import { Autocomplete, Box, Button, Checkbox, Fade, IconButton, Input, ListItemText, ListSubheader, MenuItem, Paper, Popper, Select, Slider, TextField, FormControl, FormHelperText, ListItemIcon, DialogActions, - Dialog, DialogTitle, DialogContent, DialogContentText, SelectChangeEvent, + Dialog, DialogTitle, DialogContent, DialogContentText, } from '@mui/material'; import { @@ -18,6 +19,7 @@ import { } from '@mui/icons-material'; import { FaFolderOpen as FolderOpenedIcon } from 'react-icons/fa'; +import type { Connection, LegacyConnection } from '@iobroker/adapter-react-v5'; import { I18n, IconPicker, @@ -26,25 +28,27 @@ import { TextWithIcon, ColorPicker, SelectID, - SelectFile as SelectFileDialog, Connection, LegacyConnection, + SelectFile as SelectFileDialog, } from '@iobroker/adapter-react-v5'; import { findWidgetUsages } from '@/Vis/visUtils'; import { store, recalculateFields, selectWidget } from '@/Store'; import { deepClone } from '@/Utils/utils'; -import { +import type { AnyWidgetId, Project, Widget, WidgetData, WidgetStyle, - ClassesValue, type RxWidgetInfoAttributesField, + ClassesValue, + type RxWidgetInfoAttributesField, } from '@iobroker/types-vis-2'; -import { + +import type { ObjectBrowserCustomFilter, ObjectBrowserType, } from '@iobroker/adapter-react-v5/Components/types'; -import { RxFieldOption, WidgetAttributeInfoStored, WidgetType } from '@/Vis/visWidgetsCatalog'; +import type { RxFieldOption, WidgetAttributeInfoStored, WidgetType } from '@/Vis/visWidgetsCatalog'; import TextDialog from './TextDialog'; import MaterialIconSelector from '../../Components/MaterialIconSelector'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetJS.tsx b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetJS.tsx index d1046858..58b652b8 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetJS.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/Widget/WidgetJS.tsx @@ -8,7 +8,7 @@ import { Close } from '@mui/icons-material'; import { I18n } from '@iobroker/adapter-react-v5'; -import { Widget } from '@iobroker/types-vis-2'; +import type { Widget } from '@iobroker/types-vis-2'; import CustomAceEditor from '../../Components/CustomAceEditor'; interface WidgetJSProps { diff --git a/packages/iobroker.vis-2/src/src/Attributes/Widget/index.tsx b/packages/iobroker.vis-2/src/src/Attributes/Widget/index.tsx index ede8a1ee..a773be4b 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/Widget/index.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/Widget/index.tsx @@ -22,25 +22,30 @@ import { Link as LinkIcon, } from '@mui/icons-material'; -import { - I18n, Icon, - LegacyConnection, Utils, +import { I18n, Icon, Utils } from '@iobroker/adapter-react-v5'; +import type { + LegacyConnection, type ThemeType, } from '@iobroker/adapter-react-v5'; + import { store, recalculateFields, updateWidget, selectWidget, } from '@/Store'; -import { - getWidgetTypes, parseAttributes, WidgetAttributeInfoStored, WidgetAttributeIterable, +import type { + WidgetAttributeInfoStored, WidgetAttributeIterable, WidgetAttributesGroupInfoStored, WidgetType, } from '@/Vis/visWidgetsCatalog'; -import { deepClone } from '@/Utils/utils'; import { + getWidgetTypes, parseAttributes, +} from '@/Vis/visWidgetsCatalog'; +import { deepClone } from '@/Utils/utils'; +import type { AnyWidgetId, - Project, type RxWidgetInfoGroup, + Project, Widget as SingleGroupWidget, VisTheme, WidgetData, WidgetStyle, GroupData, + type RxWidgetInfoGroup, } from '@iobroker/types-vis-2'; import WidgetField from './WidgetField'; diff --git a/packages/iobroker.vis-2/src/src/Attributes/index.tsx b/packages/iobroker.vis-2/src/src/Attributes/index.tsx index 775cedff..92b5da65 100644 --- a/packages/iobroker.vis-2/src/src/Attributes/index.tsx +++ b/packages/iobroker.vis-2/src/src/Attributes/index.tsx @@ -1,8 +1,9 @@ -import React, { +import React, type { JSXElementConstructor, useEffect, useState, - type ReactNode, JSXElementConstructor, + type ReactNode } from 'react'; + import { withStyles } from '@mui/styles'; import { @@ -16,14 +17,15 @@ import { UnfoldLess as UnfoldLessIcon, ListAlt as IconAttributes, } from '@mui/icons-material'; -import { I18n, LegacyConnection, Utils } from '@iobroker/adapter-react-v5'; +import type { LegacyConnection } from '@iobroker/adapter-react-v5'; +import { I18n, Utils } from '@iobroker/adapter-react-v5'; +import type { EditorClass } from '@/Editor'; import CSS from './CSS'; import Scripts from './Scripts'; import View from './View'; import Widget from './Widget'; import usePrevious from '../Utils/usePrevious'; -import { EditorClass } from '@/Editor'; const style: Record = (theme: Record) => ({ blockHeader: theme.classes.blockHeader, diff --git a/packages/iobroker.vis-2/src/src/Components/MaterialIconSelector.tsx b/packages/iobroker.vis-2/src/src/Components/MaterialIconSelector.tsx index 719f7c72..e4b325d2 100644 --- a/packages/iobroker.vis-2/src/src/Components/MaterialIconSelector.tsx +++ b/packages/iobroker.vis-2/src/src/Components/MaterialIconSelector.tsx @@ -24,7 +24,7 @@ import { } from '@mui/icons-material'; import { I18n, Utils, Icon } from '@iobroker/adapter-react-v5'; -import { MaterialIconSelectorProps } from '@iobroker/types-vis-2'; +import type { MaterialIconSelectorProps } from '@iobroker/types-vis-2'; import UploadFile from './UploadFile'; diff --git a/packages/iobroker.vis-2/src/src/Components/UploadFile.tsx b/packages/iobroker.vis-2/src/src/Components/UploadFile.tsx index 10eef14b..26e3b149 100644 --- a/packages/iobroker.vis-2/src/src/Components/UploadFile.tsx +++ b/packages/iobroker.vis-2/src/src/Components/UploadFile.tsx @@ -1,5 +1,6 @@ import React, { useState, useCallback } from 'react'; -import { FileError, useDropzone } from 'react-dropzone'; +import type { FileError } from 'react-dropzone'; +import { useDropzone } from 'react-dropzone'; import { CircularProgress } from '@mui/material'; diff --git a/packages/iobroker.vis-2/src/src/Components/WizardHelpers.tsx b/packages/iobroker.vis-2/src/src/Components/WizardHelpers.tsx index 89741041..78b655f2 100644 --- a/packages/iobroker.vis-2/src/src/Components/WizardHelpers.tsx +++ b/packages/iobroker.vis-2/src/src/Components/WizardHelpers.tsx @@ -21,8 +21,9 @@ import { } from '@mui/icons-material'; import { TbVacuumCleaner } from 'react-icons/tb'; -import ChannelDetector, { DetectOptions, Types } from '@iobroker/type-detector'; -import { LegacyConnection } from '@iobroker/adapter-react-v5'; +import type { DetectOptions } from '@iobroker/type-detector'; +import ChannelDetector, { Types } from '@iobroker/type-detector'; +import type { LegacyConnection } from '@iobroker/adapter-react-v5'; import { getNewWidgetIdNumber, getNewWidgetId } from '@/Utils/utils'; const deviceIcons = { diff --git a/packages/iobroker.vis-2/src/src/Editor.tsx b/packages/iobroker.vis-2/src/src/Editor.tsx index 4586d686..e579954b 100644 --- a/packages/iobroker.vis-2/src/src/Editor.tsx +++ b/packages/iobroker.vis-2/src/src/Editor.tsx @@ -1,8 +1,9 @@ import React, { useRef } from 'react'; import PropTypes from 'prop-types'; import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles'; +import type { Styles, CSSProperties } from '@mui/styles'; import { - withStyles, StylesProvider, createGenerateClassName, Styles, CSSProperties, + withStyles, StylesProvider, createGenerateClassName, } from '@mui/styles'; import { DndProvider, useDrop } from 'react-dnd'; import { TouchBackend } from 'react-dnd-touch-backend'; @@ -27,16 +28,18 @@ import { Layers, } from '@mui/icons-material'; +import type { IobTheme, LegacyConnection } from '@iobroker/adapter-react-v5'; import { I18n, Utils, Confirm as ConfirmDialog, Message as MessageDialog, - SelectFile as SelectFileDialog, Icon, IobTheme, LegacyConnection, + SelectFile as SelectFileDialog, Icon, } from '@iobroker/adapter-react-v5'; -import { - AnyWidgetId, GroupData, GroupWidget, GroupWidgetId, MarketplaceWidgetRevision, Project, RxWidgetInfoGroup, SingleWidget, SingleWidgetId, View, ViewSettings, Widget, WidgetData, WidgetSetName, WidgetStyle, +import type { + AnyWidgetId, GroupData, GroupWidget, GroupWidgetId, MarketplaceWidgetRevision, Project, RxWidgetInfoGroup, SingleWidget, SingleWidgetId, ViewSettings, Widget, WidgetData, WidgetSetName, WidgetStyle, } from '@iobroker/types-vis-2'; +import { View } from '@iobroker/types-vis-2'; import { recalculateFields, store, updateProject } from './Store'; import { isGroup, getNewWidgetId, getNewGroupId, pasteGroup, unsyncMultipleWidgets, deepClone, pasteSingleWidget, @@ -48,15 +51,16 @@ import Toolbar from './Toolbar'; import CodeDialog from './Components/CodeDialog'; import CreateFirstProjectDialog from './Components/CreateFirstProjectDialog'; import { DndPreview, isTouchDevice } from './Utils'; -import { - WidgetAttributesGroupInfoStored, WidgetType, getWidgetTypes, parseAttributes, -} from './Vis/visWidgetsCatalog'; +import type { WidgetAttributesGroupInfoStored, WidgetType } from './Vis/visWidgetsCatalog'; +import { getWidgetTypes, parseAttributes } from './Vis/visWidgetsCatalog'; import VisContextMenu from './Vis/visContextMenu'; -import Runtime, { RuntimeProps, RuntimeState } from './Runtime'; +import type { RuntimeProps, RuntimeState } from './Runtime'; +import Runtime from './Runtime'; import ImportProjectDialog from './Toolbar/ProjectsManager/ImportProjectDialog'; import { findWidgetUsages } from './Vis/visUtils'; -import MarketplaceDialog, { MarketplaceDialogProps } from './Marketplace/MarketplaceDialog'; -import { VisEngineHandlers } from './Vis/visView'; +import type { MarketplaceDialogProps } from './Marketplace/MarketplaceDialog'; +import MarketplaceDialog from './Marketplace/MarketplaceDialog'; +import type { VisEngineHandlers } from './Vis/visView'; import VisEngine from './Vis/visEngine'; const generateClassName = createGenerateClassName({ @@ -182,7 +186,7 @@ interface ViewDropProps { children: React.JSX.Element; } -const ViewDrop:React.FC = props => { +const ViewDrop: React.FC = props => { const targetRef = useRef(); const [{ CanDrop, isOver }, drop] = useDrop<{ @@ -673,7 +677,7 @@ class Editor extends Runtime { const project = deepClone(store.getState().visProject); const widgets = project[this.state.selectedView].widgets; - const newKeys:AnyWidgetId[] = []; + const newKeys: AnyWidgetId[] = []; let widgetOffset = 0; let groupOffset = 0; @@ -713,7 +717,7 @@ class Editor extends Runtime { const project = deepClone(store.getState().visProject); const widgets = project[this.state.selectedView].widgets; - const newKeys:SingleWidgetId[] = []; + const newKeys: SingleWidgetId[] = []; this.state.selectedWidgets.forEach(selectedWidget => { const newWidget = deepClone(widgets[selectedWidget]); const boundingRect = Editor.getWidgetRelativeRect(selectedWidget); @@ -745,7 +749,7 @@ class Editor extends Runtime { const newCoordinates = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0, }; - const selectedWidgets:{ + const selectedWidgets: { id: AnyWidgetId; widget: Widget; coordinate: DOMRect; @@ -959,7 +963,7 @@ class Editor extends Runtime { groupWidgets = async () => { const project = deepClone(store.getState().visProject); const widgets = project[this.state.selectedView].widgets; - const group:GroupWidget = { + const group: GroupWidget = { tpl: '_tplGroup', widgetSet: 'basic', data: { @@ -1326,7 +1330,7 @@ class Editor extends Runtime { } }; - onPxToPercent = (wids:AnyWidgetId[], attr: string, cb: (results: string[]) => void) => { + onPxToPercent = (wids: AnyWidgetId[], attr: string, cb: (results: string[]) => void) => { if (this.visEngineHandlers[this.state.selectedView] && this.visEngineHandlers[this.state.selectedView].onPxToPercent) { return this.visEngineHandlers[this.state.selectedView].onPxToPercent(wids, attr, cb); } @@ -1407,14 +1411,14 @@ class Editor extends Runtime { }; static importMarketplaceWidget(project: Project, view: string, widgets: (GroupWidget | SingleWidget)[], id: string, x: number, y: number, widgetId: AnyWidgetId, oldData: WidgetData, oldStyle: WidgetStyle) { - const newWidgets:Record = {}; + const newWidgets: Record = {}; widgets.forEach(_widget => { if (_widget.isRoot) { _widget.marketplace = deepClone(store.getState().visProject.___settings.marketplace.find(item => item.id === id)); } if (isGroup(_widget)) { - let newKey:AnyWidgetId = getNewGroupId(store.getState().visProject); + let newKey: AnyWidgetId = getNewGroupId(store.getState().visProject); if (_widget.isRoot) { if (widgetId) { newKey = widgetId; @@ -1454,7 +1458,7 @@ class Editor extends Runtime { return project; } - addMarketplaceWidget = async (id: string, x: number, y: number, widgetId?: AnyWidgetId, oldData?: WidgetData, oldStyle?:WidgetStyle) => { + addMarketplaceWidget = async (id: string, x: number, y: number, widgetId?: AnyWidgetId, oldData?: WidgetData, oldStyle?: WidgetStyle) => { const project = deepClone(store.getState().visProject); const widgets = deepClone(store.getState().visProject.___settings.marketplace.find(item => item.id === id).widget); Editor.importMarketplaceWidget(project, this.state.selectedView, widgets, id, x, y, widgetId, oldData, oldStyle); @@ -1836,7 +1840,7 @@ class Editor extends Runtime { if (!this.state.updateWidgetsDialog) { return null; } - const widgets:{ + const widgets: { name: string; widgets: AnyWidgetId[]; }[] = []; diff --git a/packages/iobroker.vis-2/src/src/Marketplace/MarketplaceDialog.tsx b/packages/iobroker.vis-2/src/src/Marketplace/MarketplaceDialog.tsx index 318211ed..679eba54 100644 --- a/packages/iobroker.vis-2/src/src/Marketplace/MarketplaceDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Marketplace/MarketplaceDialog.tsx @@ -6,7 +6,7 @@ import { import { Close } from '@mui/icons-material'; import { I18n, type ThemeName } from '@iobroker/adapter-react-v5'; -import { +import type { GroupWidgetId, MarketplaceWidgetRevision, Widget, diff --git a/packages/iobroker.vis-2/src/src/Palette/Widget.tsx b/packages/iobroker.vis-2/src/src/Palette/Widget.tsx index 602d9966..c448bf91 100644 --- a/packages/iobroker.vis-2/src/src/Palette/Widget.tsx +++ b/packages/iobroker.vis-2/src/src/Palette/Widget.tsx @@ -11,14 +11,18 @@ import { } from '@mui/icons-material'; import { - I18n, LegacyConnection, + I18n, Utils, +} from '@iobroker/adapter-react-v5'; +import type { + LegacyConnection, type ThemeType, } from '@iobroker/adapter-react-v5'; -import { MarketplaceWidgetRevision, Project } from '@iobroker/types-vis-2'; + +import type { MarketplaceWidgetRevision, Project } from '@iobroker/types-vis-2'; import { store } from '@/Store'; -import { WidgetType } from '@/Vis/visWidgetsCatalog'; +import type { WidgetType } from '@/Vis/visWidgetsCatalog'; import helpers from '../Components/WizardHelpers'; const IMAGE_TYPES = ['.png', '.jpg', '.svg', '.gif', '.apng', '.avif', '.webp']; diff --git a/packages/iobroker.vis-2/src/src/Palette/index.tsx b/packages/iobroker.vis-2/src/src/Palette/index.tsx index 2a08b2de..0af3e65a 100644 --- a/packages/iobroker.vis-2/src/src/Palette/index.tsx +++ b/packages/iobroker.vis-2/src/src/Palette/index.tsx @@ -23,17 +23,21 @@ import { import { I18n, Utils, - Icon, LegacyConnection, + Icon, +} from '@iobroker/adapter-react-v5'; +import type { + LegacyConnection, type ThemeType, } from '@iobroker/adapter-react-v5'; -import { Marketplace, MarketplaceWidgetRevision, Project } from '@iobroker/types-vis-2'; +import type { Marketplace, MarketplaceWidgetRevision, Project } from '@iobroker/types-vis-2'; import { store } from '@/Store'; -import { getWidgetTypes, WidgetType } from '@/Vis/visWidgetsCatalog'; +import type { WidgetType } from '@/Vis/visWidgetsCatalog'; +import { getWidgetTypes } from '@/Vis/visWidgetsCatalog'; import { loadComponent } from '@/Vis/visLoadWidgets'; import type { MarketplaceDialogProps } from '@/Marketplace/MarketplaceDialog'; -import { EditorClass } from '../Editor'; +import type { EditorClass } from '../Editor'; import Widget from './Widget'; import MarketplacePalette from '../Marketplace/MarketplacePalette'; diff --git a/packages/iobroker.vis-2/src/src/Runtime.tsx b/packages/iobroker.vis-2/src/src/Runtime.tsx index ac249535..3fda71ab 100644 --- a/packages/iobroker.vis-2/src/src/Runtime.tsx +++ b/packages/iobroker.vis-2/src/src/Runtime.tsx @@ -29,9 +29,12 @@ import { LoaderMV, LoaderPT, LoaderVendor, } from '@iobroker/adapter-react-v5'; -import { GenericAppProps, GenericAppState, ThemeName } from '@iobroker/adapter-react-v5/types'; +import type { GenericAppProps, GenericAppState, ThemeName } from '@iobroker/adapter-react-v5/types'; +import type { + AnyWidgetId, GroupWidgetId, Project, SingleWidgetId, ViewSettings, WidgetData, WidgetStyle, +} from '@iobroker/types-vis-2'; import { - AnyWidgetId, GroupWidget, GroupWidgetId, Project, SingleWidget, SingleWidgetId, View, ViewSettings, Widget, WidgetData, WidgetStyle, + GroupWidget, SingleWidget, View, Widget, } from '@iobroker/types-vis-2'; import VisEngine from './Vis/visEngine'; import { @@ -265,7 +268,7 @@ class Runtime

= { + const newState: Partial = { alert: false, alertType: 'info', alertMessage: '', @@ -449,7 +452,7 @@ class Runtime

v !== view && project[v].widgets && project[v].widgets[wid])) { - const _newWid:AnyWidgetId = wid[0] === 'g' ? this.getNewGroupId(project) : this.getNewWidgetId(project); + const _newWid: AnyWidgetId = wid[0] === 'g' ? this.getNewGroupId(project) : this.getNewWidgetId(project); console.log(`Rename widget ${wid} to ${_newWid}`); delete project[view].widgets[wid]; project[view].widgets[_newWid as SingleWidgetId] = widget; @@ -535,7 +538,7 @@ class Runtime

= {}; + const userGroups: Record = {}; groups.forEach(group => userGroups[group._id] = group); await this.setStateAsync({ @@ -861,11 +864,11 @@ class Runtime

= { + const newState: Partial = { selectedView, }; - let selectedWidgets:AnyWidgetId[] = JSON.parse(window.localStorage.getItem( + let selectedWidgets: AnyWidgetId[] = JSON.parse(window.localStorage.getItem( `${this.state.projectName}.${selectedView}.widgets`, ) || '[]') || []; @@ -965,7 +968,7 @@ class Runtime

{ try { - const project:Project = ({ + const project: Project = ({ ___settings: { folders: [], openedViews: [], diff --git a/packages/iobroker.vis-2/src/src/Toolbar/Projects.tsx b/packages/iobroker.vis-2/src/src/Toolbar/Projects.tsx index 4414152b..0ae08fc3 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/Projects.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/Projects.tsx @@ -12,11 +12,13 @@ import { SelectID, I18n, SelectFile as SelectFileDialog, - Utils, type LegacyConnection, Connection, ThemeType, + Utils, } from '@iobroker/adapter-react-v5'; +import type { Connection, ThemeType, type LegacyConnection } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; -import ToolbarItems, { ToolbarItem } from './ToolbarItems'; +import type { EditorClass } from '@/Editor'; +import type { ToolbarItem } from './ToolbarItems'; +import ToolbarItems from './ToolbarItems'; import Settings from './Settings'; import ProjectsManager from './ProjectsManager'; @@ -53,7 +55,7 @@ const Tools = (props: ToolsProps) => { const [objectsDialog, setObjectsDialog] = useState(false); const [filesDialog, setFilesDialog] = useState(false); - const toolbar:{ + const toolbar: { name: string; items: (ToolbarItem | ToolbarItem[] | ToolbarItem[][])[]; } = { diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ImportProjectDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ImportProjectDialog.tsx index 83023f30..485781ec 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ImportProjectDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ImportProjectDialog.tsx @@ -6,9 +6,10 @@ import { import { BiImport } from 'react-icons/bi'; -import { I18n, Confirm as ConfirmDialog, LegacyConnection } from '@iobroker/adapter-react-v5'; +import type { LegacyConnection } from '@iobroker/adapter-react-v5'; +import { I18n, Confirm as ConfirmDialog } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; +import type { EditorClass } from '@/Editor'; import UploadFile from '../../Components/UploadFile'; import IODialog from '../../Components/IODialog'; @@ -41,7 +42,7 @@ interface ImportProjectDialogProps { projects: string[]; } -const ImportProjectDialog:React.FC = props => { +const ImportProjectDialog: React.FC = props => { const [projectName, setProjectName] = useState(''); const [projectData, setProjectData] = useState(null); const [showConfirmation, setShowConfirmation] = useState(false); diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/PermissionsDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/PermissionsDialog.tsx index 1393bfc9..9795d4b7 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/PermissionsDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/PermissionsDialog.tsx @@ -15,7 +15,7 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; import Collapse from '@mui/material/Collapse'; import { type LegacyConnection, I18n } from '@iobroker/adapter-react-v5'; -import { +import type { AnyWidgetId, Permissions, Project, Widget, } from '@iobroker/types-vis-2'; import { store } from '@/Store'; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ProjectDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ProjectDialog.tsx index 52090d3e..b1c963cc 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ProjectDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/ProjectDialog.tsx @@ -28,7 +28,7 @@ interface ProjectDialogProps { renameProject: (project: string, name: string) => void; } -const ProjectDialog:React.FC = props => { +const ProjectDialog: React.FC = props => { const inputField = useFocus(props.dialog && props.dialog !== 'delete', props.dialog === 'add'); if (!props.dialog) { diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/index.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/index.tsx index d8b347b8..39c797d5 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/index.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ProjectsManager/index.tsx @@ -1,8 +1,10 @@ import React, { useState } from 'react'; +import type { PopoverProps } from '@mui/material'; import { - AppBar, Button, IconButton, Tooltip, Menu, MenuItem, CircularProgress, PopoverProps, + AppBar, Button, IconButton, Tooltip, Menu, MenuItem, CircularProgress, } from '@mui/material'; -import { Styles, withStyles } from '@mui/styles'; +import type { Styles } from '@mui/styles'; +import { withStyles } from '@mui/styles'; import { Add as AddIcon, @@ -13,11 +15,12 @@ import { } from '@mui/icons-material'; import { BiImport, BiExport } from 'react-icons/bi'; +import type { IobTheme, LegacyConnection } from '@iobroker/adapter-react-v5'; import { - I18n, IobTheme, LegacyConnection, Utils, + I18n, Utils, } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; +import type { EditorClass } from '@/Editor'; import IODialog from '../../Components/IODialog'; import ImportProjectDialog, { getLiveHost } from './ImportProjectDialog'; import ProjectDialog from './ProjectDialog'; @@ -29,7 +32,7 @@ declare global { } } -const styles:Styles = theme => ({ +const styles: Styles = theme => ({ projectBlock: { display: 'flex', alignItems: 'center', @@ -89,7 +92,7 @@ interface ProjectsManageProps { renameProject: EditorClass['renameProject']; } -const ProjectsManage:React.FC = props => { +const ProjectsManage: React.FC = props => { const [dialog, setDialog] = useState<'add' | 'rename' | 'delete' | null>(null); const [dialogName, setDialogName] = useState(''); const [dialogProject, setDialogProject] = useState(null); @@ -237,7 +240,7 @@ const ProjectsManage:React.FC = props => { }} size="small" > - + } diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ToolbarItems.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ToolbarItems.tsx index 79434a0d..555dd748 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ToolbarItems.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ToolbarItems.tsx @@ -1,6 +1,8 @@ import PropTypes from 'prop-types'; -import { Styles, withStyles } from '@mui/styles'; +import type { Styles } from '@mui/styles'; +import { withStyles } from '@mui/styles'; +import type { SelectChangeEvent } from '@mui/material'; import { Button, ButtonBase, @@ -12,21 +14,21 @@ import { InputLabel, MenuItem, Select, - SelectChangeEvent, TextField, Tooltip, } from '@mui/material'; -import { I18n, IobTheme, ThemeType } from '@iobroker/adapter-react-v5'; +import type { IobTheme, ThemeType } from '@iobroker/adapter-react-v5'; +import { I18n } from '@iobroker/adapter-react-v5'; import { deepClone } from '@/Utils/utils'; -import { ViewSettings } from '@iobroker/types-vis-2'; +import type { ViewSettings } from '@iobroker/types-vis-2'; import React from 'react'; -import { EditorClass } from '@/Editor'; +import type { EditorClass } from '@/Editor'; import { store } from '../Store'; import MultiSelect from './MultiSelect'; -const styles:Styles = theme => ({ +const styles: Styles = theme => ({ toolbarBlock: { display: 'flex', flexDirection: 'column', @@ -124,7 +126,7 @@ export interface TextFieldToolbarItem extends BaseToolbarItem { export type ToolbarItem = SelectToolbarItem | MultiselectToolbarItem | CheckboxToolbarItem | IconButtonToolbarItem | TextToolbarItem | ButtonToolbarItem | DividerToolbarItem | TextFieldToolbarItem; -const getItem = (item: ToolbarItem, key: number, props:ToolbarItemsProps, full?: boolean) => { +const getItem = (item: ToolbarItem, key: number, props: ToolbarItemsProps, full?: boolean) => { const { visProject } = store.getState(); const view = visProject[props.selectedView]; @@ -176,7 +178,9 @@ const getItem = (item: ToolbarItem, key: number, props:ToolbarItemsProps, full?: value={item.value ? item.value : value as string[]} onChange={_value => item.onChange(_value)} setSelectedWidgets={props.setSelectedWidgets} - options={item.items.map(option => ({ name: option.name as string, subname: option.subName, value: option.value, color: option.color, icon: option.icon }))} + options={item.items.map(option => ({ + name: option.name as string, subname: option.subName, value: option.value, color: option.color, icon: option.icon, + }))} themeType={props.themeType} />; /* @@ -308,14 +312,14 @@ interface ToolbarItemsProps { setSelectedWidgets: EditorClass['setSelectedWidgets']; } -const ToolbarItems:React.FC = props => { +const ToolbarItems: React.FC = props => { let items = props.group.items; const name = props.group.name; const doNotTranslateName = props.group.doNotTranslateName; // flatten buttons if (props.toolbarHeight === 'veryNarrow') { - const _items:ToolbarItem[] = []; + const _items: ToolbarItem[] = []; items.forEach(item => { if (Array.isArray(item)) { item.forEach(_item => { diff --git a/packages/iobroker.vis-2/src/src/Toolbar/Views.tsx b/packages/iobroker.vis-2/src/src/Toolbar/Views.tsx index bbfec9b8..07f61e30 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/Views.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/Views.tsx @@ -12,11 +12,13 @@ import { Menu as MenuIcon, } from '@mui/icons-material'; -import { I18n, ThemeName, ThemeType } from '@iobroker/adapter-react-v5'; +import type { ThemeName, ThemeType } from '@iobroker/adapter-react-v5'; +import { I18n } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; +import type { EditorClass } from '@/Editor'; import ViewsManager from './ViewsManager'; -import ToolbarItems, { ToolbarItem } from './ToolbarItems'; +import type { ToolbarItem } from './ToolbarItems'; +import ToolbarItems from './ToolbarItems'; import ViewDialog from './ViewsManager/ViewDialog'; @@ -80,7 +82,7 @@ const Views = (props: ViewsProps) => { setDialogCallback(cb ? { cb } : null); }; - const toolbar:{ + const toolbar: { name: React.JSX.Element; items: (ToolbarItem | ToolbarItem[] | ToolbarItem[][])[]; } = { diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ExportDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ExportDialog.tsx index c2674c2d..0d049a0d 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ExportDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ExportDialog.tsx @@ -2,7 +2,8 @@ import PropTypes from 'prop-types'; import { FileCopy as FileCopyIcon } from '@mui/icons-material'; -import { Utils, I18n, ThemeType } from '@iobroker/adapter-react-v5'; +import type { ThemeType } from '@iobroker/adapter-react-v5'; +import { Utils, I18n } from '@iobroker/adapter-react-v5'; import React from 'react'; import IODialog from '../../Components/IODialog'; @@ -16,7 +17,7 @@ interface ExportDialogProps { view: string; } -const ExportDialog:React.FC = props => = props => }, any> = theme => ({ +const styles: Styles}, any> = theme => ({ viewManageBlock: theme.classes.viewManageBlock, viewManageButtonActions: theme.classes.viewManageButtonActions, folderName: { @@ -73,7 +75,7 @@ interface FolderProps { showDialog: (dialog: string, view: string, parentId: string) => void; } -const Folder:React.FC = props => { +const Folder: React.FC = props => { const folderBlock =

{props.foldersCollapsed.includes(props.folder.id) ? diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/FolderDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/FolderDialog.tsx index 41e04422..b7931cd8 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/FolderDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/FolderDialog.tsx @@ -11,12 +11,12 @@ import DeleteIcon from '@mui/icons-material/Delete'; import { I18n } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; +import type { EditorClass } from '@/Editor'; import React from 'react'; +import { deepClone } from '@/Utils/utils'; import IODialog from '../../Components/IODialog'; import { useFocus } from '../../Utils'; import { store } from '../../Store'; -import { deepClone } from '@/Utils/utils'; interface FolderDialogProps { changeProject: EditorClass['changeProject']; @@ -29,7 +29,7 @@ interface FolderDialogProps { setDialogName: (name: string) => void; } -const FolderDialog:React.FC = props => { +const FolderDialog: React.FC = props => { const inputField = useFocus(props.dialog && props.dialog !== 'delete', props.dialog === 'add'); if (!props.dialog) { diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ImportDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ImportDialog.tsx index 798bcafc..acf08f64 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ImportDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ImportDialog.tsx @@ -19,7 +19,7 @@ interface ImportDialogProps { themeType: string; } -const ImportDialog:React.FC = props => { +const ImportDialog: React.FC = props => { const [data, setData] = useState(''); const [view, setView] = useState(''); const [errors, setErrors] = useState([]); diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/Root.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/Root.tsx index 4e76a242..14fb56e6 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/Root.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/Root.tsx @@ -4,14 +4,14 @@ import React, { useEffect } from 'react'; import { I18n } from '@iobroker/adapter-react-v5'; import { store } from '../../Store'; -import { FolderType } from './Folder'; +import type { FolderType } from './Folder'; interface RootProps { setIsOverRoot: (isOver: boolean) => void; isDragging: string; } -const Root:React.FC = props => { +const Root: React.FC = props => { const [{ canDrop, isOver }, drop] = useDrop<{ name: string; folder: FolderType; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ViewDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ViewDialog.tsx index 3c478796..36a1f8b0 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ViewDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/ViewDialog.tsx @@ -18,7 +18,7 @@ import { } from '@/Utils/utils'; import { useFocus } from '@/Utils'; import IODialog from '@/Components/IODialog'; -import { Project, SingleWidgetId } from '@iobroker/types-vis-2'; +import type { Project, SingleWidgetId } from '@iobroker/types-vis-2'; interface ViewDialogProps { changeProject: (project: Project) => Promise; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/index.tsx b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/index.tsx index fe45710b..29806aca 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/index.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/ViewsManager/index.tsx @@ -1,7 +1,8 @@ import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; -import { CSSProperties, Styles, withStyles } from '@mui/styles'; +import type { CSSProperties, Styles } from '@mui/styles'; +import { withStyles } from '@mui/styles'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; @@ -17,10 +18,11 @@ import { } from '@mui/icons-material'; import { BiImport } from 'react-icons/bi'; -import { I18n, IobTheme, ThemeName, ThemeType } from '@iobroker/adapter-react-v5'; +import type { IobTheme, ThemeName, ThemeType } from '@iobroker/adapter-react-v5'; +import { I18n } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; -import { +import type { EditorClass } from '@/Editor'; +import type { View as ViewType, AnyWidgetId, } from '@iobroker/types-vis-2'; @@ -37,7 +39,7 @@ import { deepClone, getNewWidgetId, hasViewAccess, isGroup, pasteGroup, } from '../../Utils/utils'; -const styles:Styles}, any> = theme => ({ +const styles: Styles}, any> = theme => ({ viewManageButtonActions: theme.classes.viewManageButtonActions, dialog: { minWidth: 400, @@ -91,7 +93,7 @@ interface ViewsManagerProps { } -const ViewsManager:React.FC = props => { +const ViewsManager: React.FC = props => { const [exportDialog, setExportDialog] = useState(false); const [importDialog, setImportDialog] = useState(false); @@ -125,7 +127,7 @@ const ViewsManager:React.FC = props => { const importViewAction = (view: string, data: string) => { const project = deepClone(visProject); - const viewObject:ViewType = JSON.parse(data); + const viewObject: ViewType = JSON.parse(data); if (viewObject.parentId !== undefined) { delete viewObject.parentId; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/WidgetExportDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/WidgetExportDialog.tsx index c988692c..f710c16a 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/WidgetExportDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/WidgetExportDialog.tsx @@ -2,9 +2,10 @@ import PropTypes from 'prop-types'; import { FileCopy as FileCopyIcon } from '@mui/icons-material'; -import { Utils, I18n, ThemeType } from '@iobroker/adapter-react-v5'; +import type { ThemeType } from '@iobroker/adapter-react-v5'; +import { Utils, I18n } from '@iobroker/adapter-react-v5'; -import { AnyWidgetId, GroupWidgetId, Widget } from '@iobroker/types-vis-2'; +import type { AnyWidgetId, GroupWidgetId, Widget } from '@iobroker/types-vis-2'; import React from 'react'; import IODialog from '../Components/IODialog'; import CustomAceEditor from '../Components/CustomAceEditor'; @@ -17,14 +18,14 @@ interface WidgetExportDialogProps { selectedWidgets: string[]; } -const WidgetExportDialog:React.FC = props => { +const WidgetExportDialog: React.FC = props => { const widgets = props.selectedWidgets.map(wid => { const w = deepClone(props.widgets[wid]); w._id = wid; return w; }); - const groupWidgets:AnyWidgetId[] = []; + const groupWidgets: AnyWidgetId[] = []; let gIdx = 1; let wIdx = 1; @@ -36,7 +37,7 @@ const WidgetExportDialog:React.FC = props => { gIdx++; if (widget.data?.members) { - const members:string[] = []; + const members: string[] = []; widget.data.members.forEach(member => { if (groupWidgets.includes(member)) { return; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/WidgetImportDialog.tsx b/packages/iobroker.vis-2/src/src/Toolbar/WidgetImportDialog.tsx index 2d1ed4f5..204774a0 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/WidgetImportDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/WidgetImportDialog.tsx @@ -13,7 +13,7 @@ import { import { useFocus } from '@/Utils'; import { store } from '@/Store'; -import { +import type { AnyWidgetId, GroupWidget, GroupWidgetId, Project, Widget, } from '@iobroker/types-vis-2'; @@ -21,7 +21,7 @@ import CustomAceEditor from '../Components/CustomAceEditor'; interface WidgetImportDialogProps { changeProject: (project: Project) => void; - onClose:() => void; + onClose: () => void; themeType: 'dark' | 'light'; selectedView: string; selectedGroup?: GroupWidgetId; diff --git a/packages/iobroker.vis-2/src/src/Toolbar/Widgets.tsx b/packages/iobroker.vis-2/src/src/Toolbar/Widgets.tsx index 878cab33..7841bb92 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/Widgets.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/Widgets.tsx @@ -24,23 +24,25 @@ import { VisibilityOff as VisibilityOffIcon, } from '@mui/icons-material'; -import { I18n, ThemeType } from '@iobroker/adapter-react-v5'; +import type { ThemeType } from '@iobroker/adapter-react-v5'; +import { I18n } from '@iobroker/adapter-react-v5'; +import type { AnyWidgetId, GroupWidgetId } from '@iobroker/types-vis-2'; +import type { EditorClass } from '@/Editor'; import { store } from '../Store'; -import ToolbarItems, { ToolbarItem } from './ToolbarItems'; +import type { ToolbarItem } from './ToolbarItems'; +import ToolbarItems from './ToolbarItems'; import { getWidgetTypes } from '../Vis/visWidgetsCatalog'; import WidgetImportDialog from './WidgetImportDialog'; import WidgetExportDialog from './WidgetExportDialog'; import WidgetFilterDialog from './WidgetFilterDialog'; -import { AnyWidgetId, GroupWidgetId } from '@iobroker/types-vis-2'; -import { EditorClass } from '@/Editor'; interface WidgetsProps { openedViews: string[]; themeType: ThemeType; selectedView: string; selectedWidgets: AnyWidgetId[]; - setSelectedWidgets: EditorClass['setSelectedWidgets'] + setSelectedWidgets: EditorClass['setSelectedWidgets']; selectedGroup: GroupWidgetId; editMode: boolean; lockDragging: boolean; @@ -409,12 +411,14 @@ const Widgets: React.FC = props => { } return <> - {importDialog ? setImportDialog(false)} diff --git a/packages/iobroker.vis-2/src/src/Toolbar/index.tsx b/packages/iobroker.vis-2/src/src/Toolbar/index.tsx index e5d25697..09b0ea3a 100644 --- a/packages/iobroker.vis-2/src/src/Toolbar/index.tsx +++ b/packages/iobroker.vis-2/src/src/Toolbar/index.tsx @@ -8,7 +8,8 @@ import { MenuItem as DropMenuItem, } from '@mui/material'; -import { CSSProperties, Styles, withStyles } from '@mui/styles'; +import type { CSSProperties, Styles } from '@mui/styles'; +import { withStyles } from '@mui/styles'; import { Close as CloseIcon, @@ -23,24 +24,26 @@ import { Save as SaveIcon, } from '@mui/icons-material'; +import type { + IobTheme, + LegacyConnection, + ThemeName, + ThemeType, +} from '@iobroker/adapter-react-v5'; import { Icon, Utils, I18n, ToggleThemeMenu, - IobTheme, - LegacyConnection, - ThemeName, - ThemeType, } from '@iobroker/adapter-react-v5'; -import { EditorClass } from '@/Editor'; -import { AnyWidgetId, GroupWidgetId } from '@iobroker/types-vis-2'; +import type { EditorClass } from '@/Editor'; +import type { AnyWidgetId, GroupWidgetId } from '@iobroker/types-vis-2'; import Views from './Views'; import Widgets from './Widgets'; import Projects from './Projects'; -const styles:Styles} | any, any> = theme => ({ +const styles: Styles} | any, any> = theme => ({ text: { paddingRight: 4, }, @@ -153,7 +156,7 @@ interface ToolbarProps { renameProject: EditorClass['renameProject']; } -const Toolbar:React.FC = props => { +const Toolbar: React.FC = props => { const { classes } = props; const [right, setRight] = useState(false); const [lastCommand, setLastCommand] = useState(window.localStorage.getItem('Vis.lastCommand') || 'close'); diff --git a/packages/iobroker.vis-2/src/src/Utils.tsx b/packages/iobroker.vis-2/src/src/Utils.tsx index ac45f937..99e55a5d 100644 --- a/packages/iobroker.vis-2/src/src/Utils.tsx +++ b/packages/iobroker.vis-2/src/src/Utils.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef } from 'react'; import { usePreview } from 'react-dnd-preview'; -import { Timer } from '@iobroker/types-vis-2'; +import type { Timer } from '@iobroker/types-vis-2'; export const DndPreview = () => { const preview = usePreview(); diff --git a/packages/iobroker.vis-2/src/src/Utils/utils.tsx b/packages/iobroker.vis-2/src/src/Utils/utils.tsx index 02504a04..ad3cfbfc 100644 --- a/packages/iobroker.vis-2/src/src/Utils/utils.tsx +++ b/packages/iobroker.vis-2/src/src/Utils/utils.tsx @@ -1,9 +1,9 @@ /** * This file contains shared utils between edit and runtime */ -import React from 'react'; +import type React from 'react'; import { store } from '@/Store'; -import { +import type { GroupWidget, Widget, Project, SingleWidget, SingleWidgetId, GroupWidgetId, AnyWidgetId, Permissions, diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBar.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBar.tsx index c1cac53f..464da8a0 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBar.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBar.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBulb.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBulb.tsx index 7c535419..ff095704 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBulb.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicBulb.tsx @@ -1,7 +1,7 @@ import React from 'react'; // eslint-disable-next-line import/no-cycle import VisRxWidget from '@/Vis/visRxWidget'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import { NOTHING_SELECTED } from '@/Utils/utils'; // eslint-disable-next-line no-use-before-define @@ -159,29 +159,29 @@ export default class BasicBulb extends VisRxWidget { (finalMin !== '' && finalMin === val)) { typeof oid === 'string' && this.props.context.setValue(oid, finalMax !== '' ? finalMax : true); } else - if ((finalMax === '' && (val === true || val === 'true')) || + if ((finalMax === '' && (val === true || val === 'true')) || (finalMax !== '' && val === finalMax)) { - typeof oid === 'string' && this.props.context.setValue(oid, finalMin !== '' ? finalMin : false); - } else if (typeof oid === 'string') { - val = parseFloat(val); - if (finalMin !== '' && + typeof oid === 'string' && this.props.context.setValue(oid, finalMin !== '' ? finalMin : false); + } else if (typeof oid === 'string') { + val = parseFloat(val); + if (finalMin !== '' && finalMax !== '' && (typeof finalMax === 'number' || typeof finalMax === 'string') && (typeof finalMin === 'number' || typeof finalMin === 'string') - ) { - if (val >= (parseFloat(finalMax) - parseFloat(finalMin)) / 2) { - val = finalMin; - } else { - val = finalMax; - } - } else if (val >= 0.5) { - val = 0; + ) { + if (val >= (parseFloat(finalMax) - parseFloat(finalMin)) / 2) { + val = finalMin; } else { - val = 1; + val = finalMax; } - - this.props.context.setValue(oid, val); + } else if (val >= 0.5) { + val = 0; + } else { + val = 1; } + + this.props.context.setValue(oid, val); + } } /** diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicFilterDropdown.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicFilterDropdown.tsx index c7cc8277..deb4cfd2 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicFilterDropdown.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicFilterDropdown.tsx @@ -25,12 +25,12 @@ import { Edit } from '@mui/icons-material'; import { I18n, Icon } from '@iobroker/adapter-react-v5'; -import { +import type { GetRxDataFromWidget, RxRenderWidgetProps, RxWidgetInfo, WidgetData, RxWidgetInfoAttributesField, RxWidgetInfoCustomComponentProperties, RxWidgetInfoCustomComponentContext, } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; -import { VisWidgetCommand } from '@/Vis/visBaseWidget'; +import type { VisWidgetCommand } from '@/Vis/visBaseWidget'; import FiltersEditorDialog from './FiltersEditorDialog'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicGroup.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicGroup.tsx index 108637a2..fda93907 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicGroup.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicGroup.tsx @@ -13,11 +13,11 @@ * (Free for non-commercial use). */ -import React from 'react'; +import type React from 'react'; import { I18n } from '@iobroker/adapter-react-v5'; -import { +import type { GetRxDataFromWidget, RxRenderWidgetProps, RxWidgetInfo, @@ -34,7 +34,8 @@ import { import VisView from '@/Vis/visView'; // eslint-disable-next-line import/no-cycle -import VisRxWidget, { VisRxWidgetState } from '../../visRxWidget'; +import type { VisRxWidgetState } from '../../visRxWidget'; +import VisRxWidget from '../../visRxWidget'; // eslint-disable-next-line no-use-before-define type RxData = GetRxDataFromWidget; diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicHtmlNav.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicHtmlNav.tsx index 255f93f3..c8084ff5 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicHtmlNav.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicHtmlNav.tsx @@ -15,7 +15,7 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; import DangerousHtmlWithScript from '../Utils/DangerousHtmlWithScript'; diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicIFrame.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicIFrame.tsx index 6339a200..93cbc1ab 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicIFrame.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicIFrame.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicImage.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicImage.tsx index 08799428..535b957b 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicImage.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicImage.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Icon } from '@iobroker/adapter-react-v5'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicLink.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicLink.tsx index 49be77e7..63e44615 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicLink.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicLink.tsx @@ -15,7 +15,7 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; import DangerousHtmlWithScript from '../Utils/DangerousHtmlWithScript'; diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicRedNumber.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicRedNumber.tsx index a9857c83..4a1f9765 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicRedNumber.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicRedNumber.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicScreenResolution.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicScreenResolution.tsx index 87fdadaa..b80c9422 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicScreenResolution.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicScreenResolution.tsx @@ -2,10 +2,11 @@ import React from 'react'; import { I18n } from '@iobroker/adapter-react-v5'; -import { +import type { RxRenderWidgetProps, VisLegacy, RxWidgetProps, GetRxDataFromWidget, } from '@iobroker/types-vis-2'; -import VisRxWidget, { VisRxWidgetState } from '@/Vis/visRxWidget'; +import type { VisRxWidgetState } from '@/Vis/visRxWidget'; +import VisRxWidget from '@/Vis/visRxWidget'; declare global { interface Window { diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicSvgShape.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicSvgShape.tsx index 503dd9a3..86f902e8 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicSvgShape.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/BasicSvgShape.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import VisRxWidget from '@/Vis/visRxWidget'; // eslint-disable-next-line no-use-before-define diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/FiltersEditorDialog.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/FiltersEditorDialog.tsx index 778d4e7d..b321c806 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/FiltersEditorDialog.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/Basic/FiltersEditorDialog.tsx @@ -33,7 +33,7 @@ import { SelectFile as SelectFileDialog, } from '@iobroker/adapter-react-v5'; -import { VisContext } from '@iobroker/types-vis-2'; +import type { VisContext } from '@iobroker/types-vis-2'; import MaterialIconSelector from '../../../Components/MaterialIconSelector'; diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiInputDateTime.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiInputDateTime.tsx index a2278f2e..c2a18560 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiInputDateTime.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiInputDateTime.tsx @@ -32,7 +32,7 @@ import 'dayjs/locale/pt'; import 'dayjs/locale/nl'; // eslint-disable-next-line import/no-cycle -import { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; +import type { GetRxDataFromWidget, RxRenderWidgetProps } from '@iobroker/types-vis-2'; import type { TextFieldVariants } from '@mui/material'; import VisRxWidget from '../../visRxWidget'; diff --git a/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiWriteState.tsx b/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiWriteState.tsx index 55ba0611..e3deb6aa 100644 --- a/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiWriteState.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/Widgets/JQui/JQuiWriteState.tsx @@ -25,7 +25,7 @@ import { type LegacyConnection, } from '@iobroker/adapter-react-v5'; -import { +import type { GetRxDataFromWidget, RxRenderWidgetProps, RxWidgetInfo, @@ -35,7 +35,8 @@ import { import VisBaseWidget from '@/Vis/visBaseWidget'; // eslint-disable-next-line import/no-cycle -import VisRxWidget, { VisRxWidgetState } from '../../visRxWidget'; +import type { VisRxWidgetState } from '../../visRxWidget'; +import VisRxWidget from '../../visRxWidget'; // eslint-disable-next-line no-use-before-define type RxData = GetRxDataFromWidget diff --git a/packages/iobroker.vis-2/src/src/Vis/visBaseWidget.tsx b/packages/iobroker.vis-2/src/src/Vis/visBaseWidget.tsx index 68e53d3e..322516f6 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visBaseWidget.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visBaseWidget.tsx @@ -23,10 +23,11 @@ import { KeyboardReturn, } from '@mui/icons-material'; -import { I18n, LegacyConnection, Utils } from '@iobroker/adapter-react-v5'; +import type { LegacyConnection } from '@iobroker/adapter-react-v5'; +import { I18n, Utils } from '@iobroker/adapter-react-v5'; import { calculateOverflow, deepClone, isVarFinite } from '@/Utils/utils'; -import { +import type { AnyWidgetId, ResizeHandler, VisContext, GroupData, WidgetData, WidgetStyle, diff --git a/packages/iobroker.vis-2/src/src/Vis/visContextMenu.tsx b/packages/iobroker.vis-2/src/src/Vis/visContextMenu.tsx index 462d1f37..87bd7c1f 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visContextMenu.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visContextMenu.tsx @@ -20,7 +20,7 @@ import { import { I18n } from '@iobroker/adapter-react-v5'; import { store } from '@/Store'; -import { +import type { AnyWidgetId, Project, GroupWidgetId, @@ -28,11 +28,12 @@ import { View, Widget, } from '@iobroker/types-vis-2'; +import type { EditorClass } from '@/Editor'; import IOContextMenu from '../Components/IOContextMenu'; import WidgetExportDialog from '../Toolbar/WidgetExportDialog'; import WidgetImportDialog from '../Toolbar/WidgetImportDialog'; -import { getWidgetTypes, WidgetType } from './visWidgetsCatalog'; -import { EditorClass } from '@/Editor'; +import type { WidgetType } from './visWidgetsCatalog'; +import { getWidgetTypes } from './visWidgetsCatalog'; interface VisContextMenuProps { changeProject: (project: Project) => void; diff --git a/packages/iobroker.vis-2/src/src/Vis/visFormatUtils.tsx b/packages/iobroker.vis-2/src/src/Vis/visFormatUtils.tsx index eec07a1f..0bc5401a 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visFormatUtils.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visFormatUtils.tsx @@ -14,7 +14,7 @@ */ import { type Moment } from 'moment'; import { deepClone } from '@/Utils/utils'; -import { +import type { VisLegacy, AnyWidgetId, WidgetData, Widget, VisRxWidgetStateValues, VisBinding, VisBindingOperationArgument, } from '@iobroker/types-vis-2'; diff --git a/packages/iobroker.vis-2/src/src/Vis/visLoadWidgets.tsx b/packages/iobroker.vis-2/src/src/Vis/visLoadWidgets.tsx index 66d2df0f..0f911d67 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visLoadWidgets.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visLoadWidgets.tsx @@ -13,8 +13,9 @@ * (Free for non-commercial use). */ import { I18n, type LegacyConnection } from '@iobroker/adapter-react-v5'; -import VisRxWidget, { VisRxWidgetState } from '@/Vis/visRxWidget'; -import { Branded } from '@iobroker/types-vis-2'; +import type { VisRxWidgetState } from '@/Vis/visRxWidget'; +import type VisRxWidget from '@/Vis/visRxWidget'; +import type { Branded } from '@iobroker/types-vis-2'; export type WidgetSetName = Branded; export type PromiseName = `_promise_${WidgetSetName}`; diff --git a/packages/iobroker.vis-2/src/src/Vis/visNavigation.tsx b/packages/iobroker.vis-2/src/src/Vis/visNavigation.tsx index 5260155e..afddf167 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visNavigation.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visNavigation.tsx @@ -20,7 +20,7 @@ import { } from '@mui/icons-material'; import { Utils, Icon } from '@iobroker/adapter-react-v5'; -import { ViewSettings } from '@iobroker/types-vis-2'; +import type { ViewSettings } from '@iobroker/types-vis-2'; const MENU_WIDTH_FULL = 200; const MENU_WIDTH_NARROW = 56; diff --git a/packages/iobroker.vis-2/src/src/Vis/visOrderMenu.tsx b/packages/iobroker.vis-2/src/src/Vis/visOrderMenu.tsx index 8d46aed7..55473344 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visOrderMenu.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visOrderMenu.tsx @@ -6,7 +6,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend'; import { Menu, MenuItem } from '@mui/material'; import { I18n, Utils } from '@iobroker/adapter-react-v5'; -import { AnyWidgetId } from '@iobroker/types-vis-2'; +import type { AnyWidgetId } from '@iobroker/types-vis-2'; import { getWidgetTypes, type WidgetType } from './visWidgetsCatalog'; diff --git a/packages/iobroker.vis-2/src/src/Vis/visRxWidget.tsx b/packages/iobroker.vis-2/src/src/Vis/visRxWidget.tsx index eb8599c8..9e5e204d 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visRxWidget.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visRxWidget.tsx @@ -13,7 +13,8 @@ * (Free for non-commercial use). */ -import React, { Component } from 'react'; +import type { Component } from 'react'; +import React from 'react'; import { Card, CardContent, @@ -21,7 +22,7 @@ import { import { type LegacyConnection, I18n, Icon } from '@iobroker/adapter-react-v5'; -import { +import type { Project, AnyWidgetId, RxWidgetInfo, @@ -36,12 +37,13 @@ import { } from '@iobroker/types-vis-2'; import { deepClone, calculateOverflow } from '@/Utils/utils'; // eslint-disable-next-line import/no-cycle -import VisBaseWidget, { +import type { VisBaseWidgetProps, VisBaseWidgetState, WidgetStyleState, VisWidgetCommand, } from './visBaseWidget'; +import VisBaseWidget from './visBaseWidget'; import VisView from './visView'; import { addClass, getUsedObjectIDsInWidget } from './visUtils'; diff --git a/packages/iobroker.vis-2/src/src/Vis/visUtils.tsx b/packages/iobroker.vis-2/src/src/Vis/visUtils.tsx index 7ee46990..8fd783f4 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visUtils.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visUtils.tsx @@ -13,7 +13,7 @@ * (Free for non-commercial use). */ import { type LegacyConnection } from '@iobroker/adapter-react-v5'; -import { +import type { Project, AnyWidgetId, GroupWidgetId, diff --git a/packages/iobroker.vis-2/src/src/Vis/visView.tsx b/packages/iobroker.vis-2/src/src/Vis/visView.tsx index e2690649..a067019a 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visView.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visView.tsx @@ -15,7 +15,8 @@ import React from 'react'; import { ThemeProvider, StyledEngineProvider, createTheme } from '@mui/material/styles'; -import { StylesProvider, createGenerateClassName, CSSProperties } from '@mui/styles'; +import type { CSSProperties } from '@mui/styles'; +import { StylesProvider, createGenerateClassName } from '@mui/styles'; import { Utils, Theme } from '@iobroker/adapter-react-v5'; @@ -27,7 +28,7 @@ import type { } from '@iobroker/types-vis-2'; import { hasWidgetAccess, isVarFinite } from '@/Utils/utils'; import { recalculateFields, selectView, store } from '@/Store'; -import { Property } from 'csstype'; +import type { Property } from 'csstype'; import VisBaseWidget from './visBaseWidget'; import { type VisWidgetCommand } from './visBaseWidget'; diff --git a/packages/iobroker.vis-2/src/src/Vis/visWidgetsCatalog.tsx b/packages/iobroker.vis-2/src/src/Vis/visWidgetsCatalog.tsx index 0a29ae9b..41670df9 100644 --- a/packages/iobroker.vis-2/src/src/Vis/visWidgetsCatalog.tsx +++ b/packages/iobroker.vis-2/src/src/Vis/visWidgetsCatalog.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import type React from 'react'; import { type LegacyConnection, type ThemeType } from '@iobroker/adapter-react-v5'; import type { @@ -12,8 +12,8 @@ import type { RxWidgetInfoCustomComponentProperties, RxWidgetAttributeType, Widget, } from '@iobroker/types-vis-2'; -import VisRxWidget from '@/Vis/visRxWidget'; -import { ObjectBrowserCustomFilter, ObjectBrowserType } from '@iobroker/adapter-react-v5/Components/types'; +import type VisRxWidget from '@/Vis/visRxWidget'; +import type { ObjectBrowserCustomFilter, ObjectBrowserType } from '@iobroker/adapter-react-v5/Components/types'; import { getRemoteWidgets } from './visLoadWidgets'; // eslint-disable-next-line import/no-cycle