import type { UmbApi } from '../models/index.js'; import type { ManifestBase } from './manifest-base.interface.js'; import type { ApiLoaderProperty, CssLoaderProperty, ElementAndApiLoaderProperty, ElementLoaderProperty, JsLoaderProperty } from './utils.js'; import type { UmbControllerHostElement } from '../../controller-api/index.js'; export interface ManifestWithView extends ManifestElement { meta: MetaManifestWithView; } export interface MetaManifestWithView { pathname: string; label: string; icon: string; } export interface ManifestElementWithElementName extends ManifestElement { /** * The HTML web component name to use such as 'my-dashboard' * Note it is NOT but just the name */ elementName: string; } export interface ManifestPlainCss extends ManifestBase { /** * The file location of the stylesheet file to load * @TJS-type string */ css?: CssLoaderProperty; } export interface ManifestPlainJs extends ManifestBase { /** * The file location of the javascript file to load * @TJS-type string */ js?: JsLoaderProperty; } /** * The type of extension such as dashboard etc... */ export interface ManifestApi extends ManifestBase { /** * @TJS-ignore */ readonly API_TYPE?: ApiType; /** * The file location of the javascript file to load * @TJS-type string */ js?: ApiLoaderProperty; /** * @TJS-type string */ api?: ApiLoaderProperty; } export interface ManifestElement extends ManifestBase { /** * @TJS-ignore */ readonly ELEMENT_TYPE?: ElementType; /** * The file location of the javascript file to load * @TJS-type string */ js?: ElementLoaderProperty; /** * The file location of the element javascript file to load * @TJS-type string */ element?: ElementLoaderProperty; /** * The HTML web component name to use such as 'my-dashboard' * Note it is NOT , just the element name. */ elementName?: string; /** * This contains properties specific to the type of extension */ meta?: unknown; } export interface ManifestElementAndApi extends ManifestBase { /** * @TJS-ignore */ readonly API_TYPE?: ApiType; /** * @TJS-ignore */ readonly ELEMENT_TYPE?: ElementType; /** * The file location of the javascript file to load * @TJS-type string */ js?: ElementAndApiLoaderProperty; /** * The file location of the api javascript file to load * @TJS-type string */ api?: ApiLoaderProperty; /** * The file location of the element javascript file to load * @TJS-type string */ element?: ElementLoaderProperty; /** * The HTML web component name to use such as 'my-dashboard' * Note it is NOT , just the element name. */ elementName?: string; }