import type { OrVaadinButton } from "@openremote/or-vaadin-components/or-vaadin-button"; import { type LitElement, type PropertyValues, type TemplateResult } from "lit"; import { OrElement } from "@openremote/or-element"; import "@openremote/or-icon"; import "@openremote/or-mwc-components/or-mwc-input"; import "@openremote/or-attribute-input"; import "@openremote/or-attribute-history"; import "@openremote/or-chart"; import "@openremote/or-mwc-components/or-mwc-table"; import "@openremote/or-components/or-panel"; import "@openremote/or-mwc-components/or-mwc-dialog"; import "@openremote/or-mwc-components/or-mwc-list"; import { InputType } from "@openremote/or-mwc-components/or-mwc-input"; import { Util } from "@openremote/core"; import type { OrChartConfig } from "@openremote/or-chart"; import type { HistoryConfig } from "@openremote/or-attribute-history"; import { type Asset, type Attribute, type SentAlarm, type SharedEvent } from "@openremote/model"; import { type InitOptions } from "i18next"; import "./or-edit-asset-panel"; import { type OrEditAssetPanel, type ValidatorResult } from "./or-edit-asset-panel"; import "@openremote/or-mwc-components/or-mwc-snackbar"; export interface PanelConfig { type: "info" | "setup" | "history" | "group" | "linkedUsers" | "alarm.linkedAlarms"; title?: string; hide?: boolean; column?: number; hideOnMobile?: boolean; panelStyles?: { [style: string]: string; }; } export interface InfoPanelItemConfig { label?: string; hideOnMobile?: boolean; readonly?: boolean; disabled?: boolean; disableButton?: boolean; disableHelperText?: boolean; inputTypeOverride?: InputType; fullWidth?: boolean; priority?: number; styles?: { [style: string]: string; }; } export interface InfoPanelConfig extends PanelConfig { type: "info"; attributes: { include?: string[]; exclude?: string[]; itemConfig?: { [name: string]: InfoPanelItemConfig; }; }; properties: { include?: string[]; exclude?: string[]; itemConfig?: { [name: string]: InfoPanelItemConfig; }; }; } export interface SetupPanelConfig extends PanelConfig { type: "setup"; } export interface HistoryPanelConfig extends PanelConfig { type: "history"; include?: string[]; exclude?: string[]; } export interface GroupPanelConfig extends PanelConfig { type: "group"; childAssetTypes?: { [assetType: string]: { availableAttributes?: string[]; selectedAttributes?: string[]; }; }; } export interface AssetViewerConfig { panels?: PanelConfigUnion[]; viewerStyles?: { [style: string]: string; }; propertyViewProvider?: PropertyViewProvider; attributeViewProvider?: AttributeViewProvider; panelViewProvider?: PanelViewProvider; historyConfig?: HistoryConfig; chartConfig?: OrChartConfig; } export type PanelConfigUnion = InfoPanelConfig | SetupPanelConfig | GroupPanelConfig | HistoryPanelConfig | PanelConfig; export interface ViewerConfig { default?: AssetViewerConfig; assetTypes?: { [assetType: string]: AssetViewerConfig; }; historyConfig?: HistoryConfig; } interface UserAssetLinkInfo { userId: string; usernameAndId: string; restrictedUser: boolean; } interface AssetInfo { asset: Asset; userAssetLinks?: UserAssetLinkInfo[]; alarmAssetLinks?: SentAlarm[]; childAssets?: Asset[]; viewerConfig: AssetViewerConfig; modified: boolean; attributeTemplateMap: { [attrName: string]: TemplateResult; }; } export type PanelViewProvider = (asset: Asset, attributes: { [index: string]: Attribute; }, panelName: string, hostElement: LitElement, viewerConfig: AssetViewerConfig, panelConfig: PanelConfigUnion) => TemplateResult | undefined; export type PropertyViewProvider = (asset: Asset, property: string, value: any, hostElement: LitElement, viewerConfig: AssetViewerConfig, panelConfig: PanelConfigUnion) => TemplateResult | undefined; export type AttributeViewProvider = (asset: Asset, attribute: Attribute, hostElement: LitElement, viewerConfig: AssetViewerConfig, panelConfig: PanelConfigUnion) => TemplateResult | undefined; export declare function getIncludedProperties(config?: InfoPanelConfig): string[]; export declare function getIncludedAttributes(attributes: { [index: string]: Attribute; }, config?: InfoPanelConfig): Attribute[]; export declare class OrAssetViewerComputeGridEvent extends CustomEvent { static readonly NAME = "or-asset-viewer-compute-grid-event"; constructor(); } export type SaveResult = { success: boolean; asset: Asset | undefined; isNew?: boolean; }; export declare class OrAssetViewerRequestSaveEvent extends CustomEvent> { static readonly NAME = "or-asset-viewer-request-save"; constructor(asset: Asset); } export declare class OrAssetViewerSaveEvent extends CustomEvent { static readonly NAME = "or-asset-viewer-save"; constructor(saveResult: SaveResult); } export declare class OrAssetViewerRequestEditToggleEvent extends CustomEvent> { static readonly NAME = "or-asset-viewer-request-edit-toggle"; constructor(edit: boolean); } export declare class OrAssetViewerEditToggleEvent extends CustomEvent { static readonly NAME = "or-asset-viewer-edit-toggle"; constructor(edit: boolean); } export declare class OrAssetViewerLoadUserEvent extends CustomEvent { static readonly NAME = "or-asset-viewer-load-user-event"; constructor(userId: string); } export declare class OrAssetViewerLoadAlarmEvent extends CustomEvent { static readonly NAME = "or-asset-viewer-load-alarm-event"; constructor(alarmId: number); } declare global { export interface HTMLElementEventMap { [OrAssetViewerComputeGridEvent.NAME]: OrAssetViewerComputeGridEvent; [OrAssetViewerRequestSaveEvent.NAME]: OrAssetViewerRequestSaveEvent; [OrAssetViewerSaveEvent.NAME]: OrAssetViewerSaveEvent; [OrAssetViewerRequestEditToggleEvent.NAME]: OrAssetViewerRequestEditToggleEvent; [OrAssetViewerEditToggleEvent.NAME]: OrAssetViewerEditToggleEvent; [OrAssetViewerLoadUserEvent.NAME]: OrAssetViewerLoadUserEvent; [OrAssetViewerLoadAlarmEvent.NAME]: OrAssetViewerLoadAlarmEvent; } } export declare function getPanel(id: string, panelConfig: PanelConfig, content: TemplateResult | undefined): TemplateResult<1> | undefined; export declare function getAttributeTemplate(asset: Asset, attribute: Attribute, hostElement: LitElement, viewerConfig: AssetViewerConfig, panelConfig: PanelConfig, itemConfig: InfoPanelItemConfig): TemplateResult; export declare function getPropertyTemplate(asset: Asset, property: string, hostElement: LitElement, viewerConfig: AssetViewerConfig | undefined, panelConfig: PanelConfig | undefined, itemConfig: InfoPanelItemConfig): TemplateResult; export declare function getField(name: string, itemConfig?: InfoPanelItemConfig, content?: TemplateResult): TemplateResult; export declare function saveAsset(asset: Asset): Promise; export declare const DEFAULT_ASSET_PROPERTIES: string[]; export declare const DEFAULT_VIEWER_CONFIG: AssetViewerConfig; declare const OrAssetViewer_base: (new (...args: any[]) => { _connectRequested: boolean; _subscriptionIds?: string[]; _assetIds?: string[]; _attributeRefs?: import("@openremote/model").AttributeRef[]; _status: import("@openremote/core").EventProviderStatus; _statusCallback: (status: import("@openremote/core").EventProviderStatus) => void; connectedCallback(): void; disconnectedCallback(): void; connectEvents(): void; disconnectEvents(): void; _doConnect(): Promise; readonly eventsConnected: boolean; _onEventProviderStatusChanged(status: import("@openremote/core").EventProviderStatus): void; _onEventsConnect(): void; _onEventsDisconnect(): void; _addEventSubscriptions(): Promise; _removeEventSubscriptions(): void; _refreshEventSubscriptions(): void; assetIds: string[] | undefined; attributeRefs: import("@openremote/model").AttributeRef[] | undefined; _sendEvent(event: SharedEvent): void; _sendEventWithReply(event: U): Promise; onEventsConnect(): void; onEventsDisconnect(): void; _onEvent(event: SharedEvent): void; requestUpdate(name?: PropertyKey, oldValue?: unknown): void; readonly isConnected: boolean; }) & (new (...args: any[]) => { _i18nextJustInitialized: boolean; _language: string; connectedCallback(): void; disconnectedCallback(): void; shouldUpdate(changedProps: PropertyValues): any; initCallback: (options: InitOptions) => void; langChangedCallback: () => void; readonly isConnected: boolean; }) & typeof OrElement; export declare class OrAssetViewer extends OrAssetViewer_base { static get styles(): import("lit").CSSResult[]; asset?: Asset; assetId: string | undefined; config?: ViewerConfig; editMode?: boolean; readonly?: boolean; protected _assetInfo?: AssetInfo; protected _validationResults: ValidatorResult[]; protected wrapperElem: HTMLDivElement; protected saveBtnElem: OrVaadinButton; protected editBtnElem: OrVaadinButton; protected editor: OrEditAssetPanel; protected headerElem: HTMLDivElement; protected containerElem: HTMLDivElement; protected _saveInProgress: boolean; constructor(); isModified(): boolean | undefined; /** * When language is changed, we clear the cached templates, * so can be rendered differently according to the selected language. */ langChangedCallback: () => void; shouldUpdate(changedProperties: PropertyValues): boolean; updated(_changedProperties: PropertyValues): void; loadAssetInfo(asset: Asset): Promise; protected _doValidation(): void; protected render(): TemplateResult | void; protected _toggleHeaderShadow(): void; protected _isReadonly(): boolean; protected _onEditToggleClicked(edit: boolean): void; protected _doEditToggle(edit: boolean): void; protected _onSaveClicked(): void; save(): Promise; protected _onAssetModified(validationResults: ValidatorResult[]): void; _onEvent(event: SharedEvent): Promise; protected _getPanelConfig(asset: Asset): AssetViewerConfig; } export {}; //# sourceMappingURL=index.d.ts.map