UNPKG

@iobroker/adapter-react-v5

Version:

React components to develop ioBroker interfaces with react.

346 lines (345 loc) 12.3 kB
/** * Copyright 2018-2024 Denis Haev <dogafox@gmail.com> * * MIT License * */ import React from 'react'; import type { Types } from '@iobroker/type-detector'; import type { IobTheme, ThemeName, ThemeType } from '../types'; type SmartNameObject = { [lang in ioBroker.Languages]?: string; } & { /** Which kind of device it is */ smartType?: string | null; /** Which value to set when the ON command is issued */ byON?: string | null; }; type SmartName = null | false | string | SmartNameObject; type ClassDictionary = Record<string, any>; type ClassValue = ClassArray | ClassDictionary | string | number | null | boolean | undefined; type ClassArray = ClassValue[]; export declare class Utils { static namespace: string; static INSTANCES: string; static dateFormat: string[]; static FORBIDDEN_CHARS: RegExp; /** * Capitalize words. */ static CapitalWords(name: string | null | undefined): string; static formatSeconds(seconds: number): string; /** * Get the name of the object by id from the name or description. */ static getObjectName(objects: Record<string, ioBroker.Object>, id: string, settings?: { name: ioBroker.StringOrTranslated; } | ioBroker.Languages | null, options?: { language?: ioBroker.Languages; }, /** Set to true to get the description. */ isDesc?: boolean): string; /** * Get the name of the object from the name or description. */ static getObjectNameFromObj(obj: ioBroker.PartialObject, /** settings or language */ settings: { name: ioBroker.StringOrTranslated; } | ioBroker.Languages | null, options?: { language?: ioBroker.Languages; }, /** Set to true to get the description. */ isDesc?: boolean, /** Allow using spaces in name (by edit) */ noTrim?: boolean): string; /** * Extracts from the object material settings, depends on username */ static getSettingsOrder(obj: ioBroker.StateObject | ioBroker.StateCommon, forEnumId: string, options: { user?: string; }): string | null; /** Used in material */ static getSettingsCustomURLs(obj: ioBroker.StateObject | ioBroker.StateCommon, forEnumId: string, options: { user?: string; }): string | null; /** * Reorder the array items in list between source and dest. */ static reorder(list: Iterable<any> | ArrayLike<any>, source: number, dest: number): Iterable<any> | ArrayLike<any>; /** Get smart name settings for the given object. */ static getSettings(obj: ioBroker.StateObject | ioBroker.StateCommon, options: { id?: string; user?: string; name?: ioBroker.StringOrTranslated; icon?: string; color?: string; language?: ioBroker.Languages; }, defaultEnabling?: boolean): { name: string; enabled?: boolean; useCustom?: boolean; icon?: string; color?: string; }; /** Sets smartName settings for the given object. */ static setSettings(obj: Partial<ioBroker.Object>, settings: Record<string, any>, options: { user?: string; language?: ioBroker.Languages; }): boolean; /** * Get the icon for the given settings. */ static getIcon(settings: { icon?: string; name?: string; prefix?: string; }, style?: React.CSSProperties): React.JSX.Element | null; /** * Get the icon for the given object. */ static getObjectIcon(id: string | ioBroker.PartialObject, obj?: ioBroker.PartialObject): string | null; /** * Converts word1_word2 to word1Word2. */ static splitCamelCase(text: string | null | undefined): string; /** * Check if the given color is bright. * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color */ static isUseBright(color: string | null | undefined, defaultValue?: boolean): boolean; /** * Get the time string in the format 00:00. */ static getTimeString(seconds: string | number): string; /** * Gets the wind direction with the given angle (degrees). */ static getWindDirection( /** angle in degrees from 0° to 360° */ angle: number): string; /** * Pad the given number with a zero if it's not two digits long. */ static padding(num: string | number): string; /** * Sets the date format. */ static setDataFormat(format: string): void; /** * Converts the date to a string. */ static date2string(now: string | number | Date): string; /** * Render a text as a link. */ static renderTextWithA(text: string): React.JSX.Element[] | string; /** * Get the smart name of the given state. */ static getSmartName(states: Record<string, ioBroker.StateObject> | ioBroker.StateObject | ioBroker.StateCommon, id: string, instanceId: string, noCommon?: boolean): SmartName | undefined; /** * Get the smart name from a state. */ static getSmartNameFromObj(obj: ioBroker.StateObject | ioBroker.StateCommon, instanceId: string, noCommon?: boolean): SmartName | undefined; /** * Enable smart name for a state. */ static enableSmartName(obj: ioBroker.StateObject | ioBroker.EnumObject, instanceId: string, noCommon?: boolean): void; /** * Completely remove smart name from a state. */ static removeSmartName(obj: ioBroker.StateObject | ioBroker.EnumObject, instanceId: string, noCommon?: boolean): void; /** * Update the smart name of a state. * * @deprecated Use updateSmartNameEx instead */ static updateSmartName(obj: ioBroker.StateObject | ioBroker.EnumObject, newSmartName: ioBroker.StringOrTranslated | undefined, byON: string | null | undefined, smartType: string | null | undefined, instanceId: string, noCommon?: boolean): void; /** * Update the smart name of a state. */ static updateSmartNameEx(obj: ioBroker.StateObject | ioBroker.EnumObject, options: { smartName?: ioBroker.StringOrTranslated; byON?: string | null; smartType?: Types | null; instanceId: string; noCommon?: boolean; noAutoDetect?: boolean; }): void; /** * Disable the smart name of a state. */ static disableSmartName(obj: ioBroker.StateObject | ioBroker.EnumObject, instanceId: string, noCommon?: boolean): void; /** * Copy text to the clipboard. */ static copyToClipboard(text: string, e?: Event): boolean; /** * Gets the extension of a file name. * * @param fileName the file name. * @returns The extension in lower case. */ static getFileExtension(fileName: string): string | null; /** * Format number of bytes as a string with B, KB, MB or GB. * The base for all calculations is 1024. * * @param bytes The number of bytes. * @returns The formatted string (e.g. '723.5 KB') */ static formatBytes(bytes: number): string; /** * Invert the given color according to a theme type to get the inverted text color for background * * @param color Color in the format '#rrggbb' or '#rgb' (or without a hash) * @param themeType 'light' or 'dark' * @param invert If true, the dark theme has a light color in the control, or the dark theme has a light color in the control */ static getInvertedColor(color: string, themeType: ThemeType, invert?: boolean): string | undefined; /** * Invert the given color * * @param hex Color in the format '#rrggbb' or '#rgb' (or without a hash) * @param bw Set to black or white. */ static invertColor(hex: string | null | undefined, bw?: boolean): string; /** * Convert RGB to array [r, g, b] * * @param hex Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a) * @returns Array with 3 elements [r, g, b] */ static color2rgb(hex: string): false | [number, number, number] | ''; /** * Convert RGB to LAB * * @param rgb color in format [r,g,b] * @returns lab color in format [l,a,b] */ static rgb2lab(rgb: [number, number, number]): [number, number, number]; /** * Calculate the distance between two colors in LAB color space in the range 0-100^2 * If the distance is less than 1000, the colors are similar * * @param color1 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a) * @param color2 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a) * @returns distance in the range 0-100^2 */ static colorDistance(color1: string, color2: string): number; private static _toVal; /** * Convert any object to a string with its values. */ static clsx(...inputs: ClassValue[]): string; /** * Get the current theme name (either from local storage or the browser settings). */ static getThemeName(themeName?: ThemeName | null): ThemeName; /** * Get the type of theme. */ static getThemeType(themeName?: ThemeName): ThemeType; /** * Set the theme name and theme type. */ static setThemeName(themeName: ThemeName): void; /** * Toggle the theme name between 'dark' and 'colored'. * * @returns the new theme name. */ static toggleTheme(themeName?: ThemeName | null): ThemeName; /** * Get the list of themes * * @returns list of possible themes */ static getThemeNames(): ThemeName[]; /** * Parse a query string into its parts. */ static parseQuery(query: string): Record<string, string | number | boolean>; /** * Returns parent ID. * * @returns parent ID or null if no parent */ static getParentId(id: string): string | null; static formatDate(dateObj: Date, dateFormat: string): string; /** * Format seconds to string like 'h:mm:ss' or 'd.hh:mm:ss' */ static formatTime(seconds: number): string; static MDtext2link(text: string): string; /** * Open url link in the new target window */ static openLink(url: string, target?: string): void; static MDgetTitle(text: string): string; static MDextractHeader(text: string): { header: Record<string, string | boolean | number>; body: string; }; static MDremoveDocsify(text: string): string; /** * Generate the file for download from JSON object. */ static generateFile(fileName: string, /** json file data */ json: Record<string, any>): void; /** * Convert quality code into text * * @returns lines that decode quality */ static quality2text(quality: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY]): string[]; /** * Deep copy object */ static clone(object: Record<string, any>): Record<string, any>; /** * Get states of object * * @returns states as an object in form {"value1": "label1", "value2": "label2"} or null */ static getStates(obj: ioBroker.StateObject | null | undefined): Record<string, string> | null; /** * Get svg file as text * * @param url URL of SVG file * @returns Promise with "data:image..." */ static getSvg(url: string): Promise<string>; /** * Detect a file extension by its content * * @returns The detected extension, like 'jpg' */ static detectMimeType( /** Base64 encoded binary file */ base64: string): string | null; /** * Check if configured repository is the stable repository */ static isStableRepository( /** current configured repository or multi repository */ activeRepo: string | string[]): boolean; /** * Check if a given string is an integer */ static isStringInteger(str: string | number): boolean; /** * Check if the date is valid */ static isValidDate(date: any): boolean; static getStyle(theme: IobTheme, ...args: (((_theme: IobTheme) => Record<string, any>) | undefined | Record<string, any>)[]): Record<string, any>; } export {};