@c8y/ngx-components 1023.14.96 → 1023.14.98
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.
- package/fesm2022/c8y-ngx-components-search.mjs +4 -1
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +14 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
- package/package.json +1 -1
- package/search/index.d.ts.map +1 -1
- package/widgets/implementations/html-widget/index.d.ts +4 -1
- package/widgets/implementations/html-widget/index.d.ts.map +1 -1
|
@@ -597,7 +597,10 @@ class SearchGridComponent {
|
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
getGridConfigContext() {
|
|
600
|
-
return {
|
|
600
|
+
return {
|
|
601
|
+
key: this.columnsConfigKey || this.assetSearchService.GRID_CONFIG_STORAGE_KEY,
|
|
602
|
+
configFilter: { filter: false, sort: false }
|
|
603
|
+
};
|
|
601
604
|
}
|
|
602
605
|
ngOnInit() {
|
|
603
606
|
if (!this.filteringName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-search.mjs","sources":["../../search/search.service.ts","../../search/search-config.model.ts","../../search/search-custom-filters.component.ts","../../search/search-custom-filters.component.html","../../search/search-action.component.ts","../../search/search-action.component.html","../../search/columns/asset-type-search-grid-column.ts","../../search/search-grid.component.ts","../../search/search-grid.component.html","../../search/search-results.component.ts","../../search/search-results.component.html","../../search/search.module.ts","../../search/c8y-ngx-components-search.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { QueriesUtil } from '@c8y/client';\nimport {\n ActionControl,\n BulkActionControl,\n Column,\n ContextRouteService,\n FeatureCacheService,\n Pagination,\n SearchFilters,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridService,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { BehaviorSubject, catchError, firstValueFrom, of } from 'rxjs';\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetSearchService {\n GRID_CONFIG_STORAGE_KEY = 'search-grid-config';\n DEFAULT_PAGE_SIZE = 50;\n getGlobalSearchData = this.getSearchData.bind(this);\n appliedFilters$: BehaviorSubject<{\n [SearchFilters.ALL_FILTERS]: boolean;\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: boolean;\n [SearchFilters.ONLY_DEVICES]: boolean;\n [SearchFilters.CURRENT_HIERARCHY]: boolean;\n }> = new BehaviorSubject({\n allFilters: true,\n onlyDevices: true,\n onlyGroupsAndAssets: true,\n currentHierarchy: false\n });\n private queriesUtil: QueriesUtil;\n private featureCacheService: FeatureCacheService = inject(FeatureCacheService);\n private deviceGridService: DeviceGridService = inject(DeviceGridService);\n private assetNodeService: AssetNodeService = inject(AssetNodeService);\n private contextRouteService: ContextRouteService = inject(ContextRouteService);\n\n constructor() {\n this.queriesUtil = new QueriesUtil();\n }\n\n /**\n * Resets the status of applied filters, used during the search.\n * Applies only to filters: 'All', 'Show only devices', 'Show only groups and assets'.\n */\n resetAppliedFilters() {\n this.appliedFilters$.next({\n allFilters: true,\n onlyDevices: true,\n onlyGroupsAndAssets: true,\n currentHierarchy: false\n });\n }\n\n buildCombinedRootQueryFilter(columns: Column[], pagination: Pagination) {\n const rootQuery = {\n __filter: {\n __and: { __not: { __has: `c8y_IsBinary` } }\n }\n };\n\n const { onlyDevices, onlyGroupsAndAssets } = this.appliedFilters$.value;\n const searchQuery = this.buildSearchQuery({ onlyDevices, onlyGroupsAndAssets });\n\n const userQuery = this.deviceGridService.getQueryObj(columns, pagination);\n const queryPart = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\n const queryWithSearch = this.queriesUtil.addAndFilter(fullQuery, searchQuery);\n return queryWithSearch;\n }\n\n async getData(columns: Column[], pagination: Pagination, text?: string) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination);\n if (await this.isWildcardSearchEnabled()) {\n const wildcardQuery = this.queriesUtil.addAndFilter(query, {\n __or: {\n name: `*${text.trim().replace(/\\s+/g, '*')}*`,\n id: text.trim(),\n 'c8y_Hardware.serialNumber': `*${text.trim().replace(/\\s+/g, '*')}*`\n }\n });\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(wildcardQuery)\n });\n }\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(query),\n text\n });\n }\n\n getDefaultColumns(): Column[] {\n const defaultColumns = [\n new NameDeviceGridColumn({ sortOrder: 'asc' }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n return defaultColumns;\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 25,\n currentPage: 1\n };\n }\n\n async isWildcardSearchEnabled(): Promise<boolean> {\n return firstValueFrom(\n this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)))\n );\n }\n\n private buildSearchQuery(model) {\n const filter: any = {};\n const ors = [];\n if (model.types?.length) {\n ors.push({ type: { __in: model.types } });\n }\n if (model.onlyDevices) {\n ors.push({ __has: 'c8y_IsDevice' });\n }\n if (model.onlyGroupsAndAssets) {\n ors.push({ __has: 'c8y_IsDynamicGroup' });\n ors.push({ __has: 'c8y_IsDeviceGroup' });\n }\n if (!model.onlyDevices && !model.onlyGroupsAndAssets) {\n ors.push([\n { __has: 'c8y_IsDeviceGroup' },\n { __has: 'c8y_IsDevice' },\n { __has: 'c8y_IsAsset' }\n ]);\n }\n\n if (ors.length) {\n filter.__or = ors;\n }\n\n if (model.currentHierarchy && this.contextRouteService.activatedContextData?.contextData?.id) {\n filter.__and = [\n { __isinhierarchyof: this.contextRouteService.activatedContextData.contextData.id }\n ];\n }\n return filter;\n }\n\n /**\n * Get search data based on the provided text and pagination.\n * @param text The search text.\n * @param pagination The pagination options.\n * @returns The search results.\n */\n private async getSearchData(\n text: string,\n pagination: Pagination = { currentPage: 1, pageSize: this.DEFAULT_PAGE_SIZE }\n ) {\n const { onlyDevices, onlyGroupsAndAssets, currentHierarchy } = this.appliedFilters$.value;\n const query = this.buildSearchQuery({ onlyDevices, onlyGroupsAndAssets, currentHierarchy });\n const queryString = this.queriesUtil.buildQuery(query);\n if (await this.isWildcardSearchEnabled()) {\n const wildcardQuery = this.queriesUtil.addAndFilter(query, {\n __or: {\n name: `*${text.trim().replace(/\\s+/g, '*')}*`,\n id: text.trim(),\n 'c8y_Hardware.serialNumber': `*${text.trim().replace(/\\s+/g, '*')}*`\n }\n });\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(wildcardQuery)\n });\n }\n return this.assetNodeService.getAllInventories({ ...pagination, query: queryString, text });\n }\n}\n","import { InjectionToken } from '@angular/core';\nexport const SEARCH_CONFIG = new InjectionToken<SearchConfig>('SearchConfig');\n\n/**\n * Configuration object of the SearchModule.\n */\nexport interface SearchConfig {\n /**\n * Allows to enable advanced filters.\n * Default value: true.\n */\n showAdvancedFilters?: boolean;\n /**\n * Allows a custom placeholder.\n * Default value: ''\n */\n placeholder?: string;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ActivationEnd, Router } from '@angular/router';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n C8yTranslatePipe,\n ContextRouteService,\n SearchFilters,\n TabComponent,\n TabsOutletComponent,\n ViewContext\n} from '@c8y/ngx-components';\nimport { filter, map, startWith } from 'rxjs/operators';\nimport { AssetSearchService } from './search.service';\n\nexport type Checkbox = {\n label: string;\n name: string;\n value: boolean;\n indeterminate?: boolean;\n isDisabled?: boolean;\n};\n\n@Component({\n selector: 'c8y-search-custom-filters',\n templateUrl: 'search-custom-filters.component.html',\n imports: [C8yTranslatePipe, TabsOutletComponent, TabComponent, AsyncPipe, FormsModule]\n})\nexport class SearchCustomFiltersComponent implements OnInit {\n @Input() useTabs = false;\n @Output() customDataQuery = new EventEmitter();\n @Output() refresh = new EventEmitter();\n tabNames = {\n all: gettext('All'),\n devices: gettext('Devices'),\n groupsAndAssets: gettext('Groups and assets')\n };\n selectedTab: (typeof this.tabNames)[keyof typeof this.tabNames] = this.tabNames.all;\n\n checkboxesState: Array<Checkbox> = [\n {\n label: gettext('All'),\n name: SearchFilters.ALL_FILTERS,\n value: true,\n indeterminate: false,\n isDisabled: true\n },\n { label: gettext('Show only devices'), name: SearchFilters.ONLY_DEVICES, value: true },\n {\n label: gettext('Show only groups and assets'),\n name: SearchFilters.ONLY_GROUPS_AND_ASSETS,\n value: true\n }\n ];\n\n @Input()\n isOnlyHierarchyQuery = false;\n @Output()\n isOnlyHierarchyQueryChange = new EventEmitter<boolean>();\n\n private assetSearchService = inject(AssetSearchService);\n private contextRouteService = inject(ContextRouteService);\n private router = inject(Router);\n\n contextRouteData$ = this.router.events.pipe(\n filter(event => event instanceof ActivationEnd),\n map((routeData: ActivationEnd) => {\n const data = this.contextRouteService.getContextData(routeData.snapshot);\n if (data?.context === ViewContext.Group) {\n return data;\n }\n return null;\n }),\n takeUntilDestroyed()\n );\n\n context$ = this.contextRouteData$.pipe(\n startWith(this.contextRouteService.activatedContextData),\n takeUntilDestroyed()\n );\n\n ngOnInit() {\n this.customDataQuery.next(this.assetSearchService.getGlobalSearchData);\n }\n\n onCheckboxChange(event: Event, checkbox: Checkbox): void {\n const { checked } = event.target as HTMLInputElement;\n\n if (checked == undefined) {\n return;\n }\n\n switch (checkbox.name) {\n case SearchFilters.ALL_FILTERS:\n this.onSelectAll(checkbox, checked);\n break;\n case SearchFilters.ONLY_DEVICES:\n this.onAllDevices(checkbox, checked);\n break;\n case SearchFilters.ONLY_GROUPS_AND_ASSETS:\n this.onGroupsAndAssets(checkbox, checked);\n break;\n }\n\n // Handle allFilters checkbox when ONLY_GROUPS_AND_ASSETS and ONLY_DEVICES are selected\n if (\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value &&\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n ) {\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: false,\n isDisabled: true,\n value: true\n });\n }\n\n this.onSearchFilterChange(\n this.getCheckbox(SearchFilters.ALL_FILTERS).value,\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value,\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n );\n\n this.refresh.next(null);\n }\n\n onTabChange(\n tabName: (typeof this.tabNames)[keyof typeof this.tabNames] = this.tabNames.all\n ): void {\n this.selectedTab = tabName;\n this.onSearchFilterChange(\n tabName === this.tabNames.all,\n tabName === this.tabNames.devices,\n tabName === this.tabNames.groupsAndAssets,\n this.isOnlyHierarchyQuery\n );\n }\n\n onHierarchyQueryChange(checked: boolean): void {\n this.isOnlyHierarchyQuery = checked;\n this.isOnlyHierarchyQueryChange.next(checked);\n this.onSearchFilterChange(\n this.selectedTab === this.tabNames.all,\n this.selectedTab === this.tabNames.devices,\n this.selectedTab === this.tabNames.groupsAndAssets,\n checked\n );\n }\n\n onSearchFilterChange(\n all: boolean,\n devices: boolean,\n groupsAndAssets: boolean,\n currentHierarchy = false\n ) {\n this.assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: all,\n [SearchFilters.ONLY_DEVICES]: devices,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: groupsAndAssets,\n [SearchFilters.CURRENT_HIERARCHY]: currentHierarchy\n });\n this.refresh.next(null);\n }\n\n private saveCheckboxValue(checkbox, value) {\n checkbox.value = value;\n }\n\n private onSelectAll(currentCheckbox: Checkbox, checked: boolean) {\n // Block unchecked state\n if (checked) {\n this.saveCheckboxValue(currentCheckbox, checked);\n }\n this.getCheckbox(SearchFilters.ALL_FILTERS).isDisabled = true;\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;\n }\n\n private onAllDevices(currentCheckbox: Checkbox, checked: boolean) {\n this.saveCheckboxValue(currentCheckbox, checked);\n\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: true,\n isDisabled: false,\n value: null\n });\n\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;\n }\n\n private onGroupsAndAssets(currentCheckbox: Checkbox, checked: boolean) {\n this.saveCheckboxValue(currentCheckbox, checked);\n\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: true,\n isDisabled: false,\n value: null\n });\n\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;\n }\n\n private getCheckbox(checkboxName: SearchFilters): Checkbox {\n return this.checkboxesState.find(checkbox => checkbox.name === checkboxName);\n }\n}\n","<div class=\"d-flex gap-16 p-l-4 p-l-24 p-r-24\">\n @if (!useTabs) {\n <div class=\"p-b-8 separator-bottom sticky-top p-t-4\">\n @for (checkbox of checkboxesState; track $index) {\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"checkbox.value\"\n [indeterminate]=\"checkbox.indeterminate\"\n (click)=\"onCheckboxChange($event, checkbox)\"\n [attr.disabled]=\"checkbox.isDisabled ? true : null\"\n />\n <span></span>\n <span>{{ checkbox.label | translate }}</span>\n </label>\n }\n </div>\n }\n</div>\n\n@if (useTabs) {\n <c8y-tabs-outlet\n class=\"elevation-none\"\n outletName=\"searchTabs\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n}\n\n<c8y-tab\n [icon]=\"'asterisk-key'\"\n [title]=\"'All devices, assets and groups' | translate\"\n [isActive]=\"selectedTab === tabNames.all\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.all | translate\"\n [priority]=\"1000\"\n (onSelect)=\"onTabChange(tabNames.all)\"\n></c8y-tab>\n<c8y-tab\n [icon]=\"'exchange'\"\n [title]=\"'Devices only' | translate\"\n [isActive]=\"selectedTab === tabNames.devices\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.devices | translate\"\n [priority]=\"750\"\n (onSelect)=\"onTabChange(tabNames.devices)\"\n></c8y-tab>\n<c8y-tab\n [icon]=\"'c8y-modules'\"\n [title]=\"'Assets and groups only' | translate\"\n [isActive]=\"selectedTab === tabNames.groupsAndAssets\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.groupsAndAssets | translate\"\n [priority]=\"500\"\n (onSelect)=\"onTabChange(tabNames.groupsAndAssets)\"\n></c8y-tab>\n\n@if (useTabs && (context$ | async)?.contextData?.name) {\n <div class=\"p-l-48 p-t-8 d-flex a-i-center\">\n <span translate>Search only in`specified group or asset`</span>\n <span class=\"text-bold p-l-4\">{{ (context$ | async)?.contextData?.name }}</span>\n <label\n class=\"m-l-8 c8y-switch c8y-switch--inline\"\n [title]=\"'Search only within the current group or asset hierarchy' | translate\"\n >\n <input\n [attr.aria-label]=\"'Search only within the current group or asset hierarchy' | translate\"\n type=\"checkbox\"\n [ngModel]=\"isOnlyHierarchyQuery\"\n (ngModelChange)=\"onHierarchyQueryChange($event)\"\n />\n <span></span>\n </label>\n </div>\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, EventEmitter, inject } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { IManagedObject, IResultList } from '@c8y/client';\nimport {\n RouterService as C8yRouter,\n FeatureCacheService,\n SearchInputComponent,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { catchError, lastValueFrom, Observable, of, UnaryFunction } from 'rxjs';\nimport { SEARCH_CONFIG, SearchConfig } from './search-config.model';\nimport { SearchCustomFiltersComponent } from './search-custom-filters.component';\n\n@Component({\n selector: 'c8y-search-action',\n templateUrl: './search-action.component.html',\n imports: [SearchInputComponent, SearchCustomFiltersComponent, AsyncPipe]\n})\nexport class SearchActionComponent {\n showAdvancedFilters: boolean;\n customPlaceholder: string;\n customQuery: UnaryFunction<string, Observable<IResultList<IManagedObject>>>;\n typeaheadReload = new EventEmitter();\n\n featureCacheService = inject(FeatureCacheService);\n\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n c8yRouter = inject(C8yRouter);\n router = inject(Router);\n moduleConfig: SearchConfig = inject(SEARCH_CONFIG, { optional: true });\n isOnlyHierarchyQuery = false;\n\n constructor() {\n this.showAdvancedFilters = this.moduleConfig?.showAdvancedFilters ?? true;\n this.customPlaceholder = this.moduleConfig?.placeholder;\n }\n\n triggerDataLoad() {\n this.typeaheadReload.next(null);\n }\n\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.triggerDataLoad();\n }\n }\n\n async onSearch(on: string) {\n if (await lastValueFrom(this.isWildcardSearchEnabled$)) {\n return;\n }\n this.navigate(['/assetsearch'], {\n queryParams: { search: on },\n replaceUrl: true\n });\n }\n\n onFilter(on: string) {\n this.navigate(['/assetsearch'], {\n queryParams: { filter: on },\n replaceUrl: true\n });\n }\n\n onClick(mo: IManagedObject) {\n this.router.navigateByUrl(this.c8yRouter.getHref(mo, '/'));\n }\n\n private navigate(commands: any[], extras?: NavigationExtras) {\n this.router\n .navigateByUrl('/', { skipLocationChange: true })\n .then(() => this.router.navigate(commands, extras));\n }\n}\n","<c8y-search-input\n #input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n (onOpenToggle)=\"onOpenChange($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n [mode]=\"(isWildcardSearchEnabled$ | async) ? 'wildcardsearch' : 'search'\"\n>\n @if (showAdvancedFilters && input.term.length > 0) {\n <c8y-search-custom-filters\n (refresh)=\"triggerDataLoad()\"\n [useTabs]=\"isWildcardSearchEnabled$ | async\"\n [(isOnlyHierarchyQuery)]=\"isOnlyHierarchyQuery\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n }\n</c8y-search-input>\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n SearchFilters\n} from '@c8y/ngx-components';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { AssetSearchService } from '../search.service';\nimport { AssetTypeGridColumn } from '@c8y/ngx-components/data-grid-columns/asset-type';\n\nexport class AssetTypeSearchGridColumn extends AssetTypeGridColumn {\n constructor(\n hideExtendedFilters: boolean,\n initialColumnConfig?: ColumnConfig,\n assetSearchService?: AssetSearchService,\n customPlaceholder?: string\n ) {\n super(initialColumnConfig);\n\n this.filterable = true;\n this.filteringConfig = this.getFilteringConfig(\n hideExtendedFilters,\n assetSearchService,\n customPlaceholder\n );\n }\n\n private getFilteringConfig(\n hideExtendedFilters: boolean,\n assetSearchService: AssetSearchService,\n customPlaceholder?: string\n ) {\n return {\n fields: [\n ...getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: gettext('Show items with type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: customPlaceholder ? customPlaceholder : gettext('building`e.g. house`'),\n optional: !hideExtendedFilters\n }),\n {\n key: SearchFilters.ALL_FILTERS,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n disabled: false,\n label: gettext('All'),\n click: (field, clickEvent) => {\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ONLY_DEVICES).setValue(true);\n field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: checked,\n [SearchFilters.ONLY_DEVICES]: true,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: true,\n [SearchFilters.CURRENT_HIERARCHY]: null\n });\n }\n }\n },\n expressionProperties: {\n 'props.indeterminate': (model: any, formState: any, field: FormlyFieldConfig) => {\n // Do nothing\n if (field.form.get(SearchFilters.ALL_FILTERS).value === true) {\n return;\n }\n // Set indeterminate state\n if (\n !field.form.get(SearchFilters.ONLY_DEVICES).value ||\n !field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n ) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null);\n return true;\n }\n return false;\n },\n 'props.disabled': (model: any, formState: any, field: FormlyFieldConfig) => {\n if (field.form.get(SearchFilters.ALL_FILTERS).value === true) {\n return true;\n }\n return false;\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { allFilters } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(allFilters);\n }\n }\n },\n {\n key: SearchFilters.ONLY_DEVICES,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n label: gettext('Show only devices'),\n click: (field, clickEvent) => {\n const oldFilterValue = assetSearchService.appliedFilters$.value;\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(true);\n // Emit new state\n assetSearchService.appliedFilters$.next({\n ...oldFilterValue,\n [SearchFilters.ALL_FILTERS]: true,\n [SearchFilters.ONLY_DEVICES]: checked\n });\n return;\n }\n // Handle unchecked state\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null); // Trigger indeterminate state\n field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: null,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: true,\n [SearchFilters.ONLY_DEVICES]: checked,\n [SearchFilters.CURRENT_HIERARCHY]: null\n });\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { onlyDevices } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(onlyDevices);\n }\n }\n },\n {\n key: SearchFilters.ONLY_GROUPS_AND_ASSETS,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n label: gettext('Show only groups and assets'),\n click: (field, clickEvent) => {\n const oldFilterValue = assetSearchService.appliedFilters$.value;\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(true);\n // Emit new state\n assetSearchService.appliedFilters$.next({\n ...oldFilterValue,\n [SearchFilters.ALL_FILTERS]: true,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checked\n });\n return;\n }\n // Handle unchecked state\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null); // Trigger indeterminate state\n field.form.get(SearchFilters.ONLY_DEVICES).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: null,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checked,\n [SearchFilters.ONLY_DEVICES]: true,\n [SearchFilters.CURRENT_HIERARCHY]: false\n });\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { onlyGroupsAndAssets } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(onlyGroupsAndAssets);\n }\n }\n }\n ],\n /**\n * Adding devices and groups to a filter is already handled in {@link AssetSearchService#buildSearchQuery}\n * */\n getFilter(model: any): any {\n const filter: any = {};\n const ors = [];\n if (model.types?.length) {\n ors.push({ type: { __in: model.types } });\n }\n if (ors.length) {\n filter.__or = ors;\n }\n return filter;\n }\n };\n }\n}\n","import { Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n C8yTranslatePipe,\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n DataGridComponent,\n DataSourceModifier,\n EmptyStateComponent,\n FeatureCacheService,\n FilteringActionType,\n FilteringModifier,\n GridConfigContextProvider,\n Pagination,\n Row,\n SearchFilters,\n ServerSideDataResult,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport {\n AlarmsDeviceGridColumn,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DeleteAssetsModalComponent,\n DeleteModalCheckboxes,\n SubAssetsService\n} from '@c8y/ngx-components/sub-assets';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { catchError, of } from 'rxjs';\nimport { AssetTypeSearchGridColumn } from './columns/asset-type-search-grid-column';\nimport { SEARCH_CONFIG } from './search-config.model';\nimport { AssetSearchService } from './search.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-search-grid',\n templateUrl: './search-grid.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: SearchGridComponent\n }\n ],\n imports: [DataGridComponent, EmptyStateComponent, C8yTranslatePipe, AsyncPipe]\n})\nexport class SearchGridComponent implements GridConfigContextProvider {\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() title = '';\n @Input() loadingItemsLabel: string = gettext('Loading results…');\n @Input('columns') set _columns(value: Column[]) {\n if (value) {\n this.columns = value;\n } else {\n this.columns = this.assetSearchService.getDefaultColumns();\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.assetSearchService.getDefaultActionControls();\n }\n }\n @Input() selectable = false;\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.assetSearchService.getDefaultBulkActionControls();\n }\n }\n @Output() onColumnsChange: EventEmitter<Column[]> = new EventEmitter<Column[]>();\n\n @Input()\n searchText = '';\n\n @Input()\n filteringName: string;\n\n /** The name of the key where columns configuration will be stored. */\n @Input() columnsConfigKey: string;\n\n moduleConfig = inject(SEARCH_CONFIG, { optional: true });\n showAdvancedFilters = this.moduleConfig?.showAdvancedFilters ?? false;\n customPlaceholder = this.moduleConfig?.placeholder ?? undefined;\n\n columns: Column[];\n assetSearchService = inject(AssetSearchService);\n pagination: Pagination = this.assetSearchService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = this.assetSearchService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n refresh: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n featureCacheService = inject(FeatureCacheService);\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n wildcardSearchTitle = gettext('Asset data');\n fullTextSearchTitle = gettext('Search results');\n\n private sizeCount = 0;\n private bsModalService = inject(BsModalService);\n private smartGroupsService = inject(SmartGroupsService);\n private subAssetsGridService = inject(SubAssetsService);\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return { key: this.columnsConfigKey || this.assetSearchService.GRID_CONFIG_STORAGE_KEY };\n }\n\n ngOnInit(): void {\n if (!this.filteringName) {\n this.columns = [\n new AssetTypeSearchGridColumn(\n this.showAdvancedFilters,\n { sortOrder: 'desc' },\n this.assetSearchService,\n this.customPlaceholder\n ),\n ...this.assetSearchService.getDefaultColumns()\n ];\n } else {\n this.columns = [\n new AssetTypeSearchGridColumn(\n this.showAdvancedFilters,\n { sortOrder: 'desc' },\n this.assetSearchService\n ),\n new NameDeviceGridColumn({\n sortOrder: 'asc',\n filter: { externalFilterQuery: { names: [this.filteringName] } }\n }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n }\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.setActionControls();\n }\n\n ngAfterViewInit() {\n this.setInitialFilterForTypeColumn();\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const response = await this.assetSearchService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n dataSourceModifier.searchText\n );\n const { res, data, paging } = response;\n\n if (paging.currentPage === 1) {\n this.sizeCount = 0;\n }\n this.sizeCount += data.length;\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res,\n data,\n paging,\n filteredSize: this.sizeCount,\n size: undefined\n };\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup)\n };\n actionControls.push(deleteAction);\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n /**\n * TODO: find better solution. After new changes from DM team, we're running into race condition where\n * this.dataGrid.updateFiltering is executed before this.configurationStrategy.getConfig$() value is emitted.\n * Columns setter sets columns after this.dataGrid.updateFiltering executes its logic. Value of this.columns in\n * dataGrid.updateFiltering is just not yet set.\n */\n setTimeout(() => {\n this.dataGrid.updateFiltering(columnNames, action, false);\n }, 500);\n }\n }\n\n onColumnFilterReset(column: Column) {\n if (column.name === 'type') {\n this.assetSearchService.resetAppliedFilters();\n }\n }\n\n private onDeleteAsset(asset, parentRef) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox: !this.smartGroupsService.isSmartGroup(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n this.refresh.emit();\n }\n });\n }\n\n private setInitialFilterForTypeColumn() {\n const checkboxes = this.assetSearchService.appliedFilters$.value;\n // Set filter only when all checkboxes are not selected\n if (\n checkboxes[SearchFilters.ONLY_DEVICES] !== checkboxes[SearchFilters.ONLY_GROUPS_AND_ASSETS]\n ) {\n const externalFilterQuery = {\n [SearchFilters.ONLY_DEVICES]: checkboxes[SearchFilters.ONLY_DEVICES],\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checkboxes[SearchFilters.ONLY_GROUPS_AND_ASSETS]\n };\n this.updateFiltering(['type'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery\n }\n }\n });\n }\n }\n}\n","<div class=\"card--grid--fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"\n ((isWildcardSearchEnabled$ | async) ? wildcardSearchTitle : fullTextSearchTitle) | translate\n \"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"'auto'\"\n [showSearch]=\"true\"\n [searchText]=\"searchText\"\n [refresh]=\"refresh\"\n (onColumnFilterReset)=\"onColumnFilterReset($event)\"\n >\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, OnDestroy, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Alert,\n AlertService,\n C8yTranslateDirective,\n FeatureCacheService,\n FilteringActionType,\n Status,\n TitleComponent,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { of, Subject } from 'rxjs';\nimport { catchError, takeUntil } from 'rxjs/operators';\nimport { SearchGridComponent } from './search-grid.component';\n\n@Component({\n selector: 'c8y-search-results',\n templateUrl: './search-results.component.html',\n imports: [TitleComponent, C8yTranslateDirective, SearchGridComponent, AsyncPipe]\n})\nexport class SearchResultsComponent implements OnDestroy {\n filter = '';\n searchText = '';\n @ViewChild(SearchGridComponent, { static: true })\n searchGrid: SearchGridComponent;\n filteringName: string;\n\n featureCacheService = inject(FeatureCacheService);\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n private readonly WARNING_TIMEOUT_TIME = 3000;\n private unsubscribe$ = new Subject<void>();\n\n constructor(\n private route: ActivatedRoute,\n private alert: AlertService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(takeUntil(this.unsubscribe$)).subscribe(params => {\n if (params.filter) {\n this.filteringName = params.filter;\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.route.queryParams\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ filter, search }) => this.onQueryParamsChange(filter, search));\n }\n\n resetSearch() {\n if (this.searchGrid.dataGrid.searchText) {\n this.alert.add({\n text: gettext('Search reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: this.WARNING_TIMEOUT_TIME\n } as Alert);\n this.searchText = '';\n this.searchGrid.dataGrid.searchText = '';\n }\n }\n\n resetFilter() {\n this.filter = '';\n if (this.searchGrid.dataGrid.filteringApplied) {\n this.alert.add({\n text: gettext('Filter reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: this.WARNING_TIMEOUT_TIME\n } as Alert);\n this.searchGrid.dataGrid.clearFilters(false);\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private onQueryParamsChange(filter: string, searchTerm: string) {\n if (!this.shouldFilter(filter) && searchTerm) {\n this.searchText = searchTerm || '';\n }\n }\n\n private shouldFilter(filter) {\n if (!filter) {\n return false;\n }\n this.resetSearch();\n this.filter = filter || '';\n this.searchGrid.updateFiltering(['name'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery: {\n names: [this.filter]\n }\n }\n }\n });\n return true;\n }\n}\n","@if (!(isWildcardSearchEnabled$ | async)) {\n <c8y-title>\n <span\n class=\"p-r-4\"\n translate\n >\n Search\n </span>\n @if (searchText) {\n <small\n ngNonBindable\n translate\n [translateParams]=\"{\n searchHint: searchText\n }\"\n >\n searching \"{{ searchHint }}\"\n </small>\n }\n @if (filter) {\n <small\n ngNonBindable\n translate\n [translateParams]=\"{\n filterHint: filter\n }\"\n >\n filtered by \"{{ filterHint }}\"\n </small>\n }\n </c8y-title>\n}\n\n@if (isWildcardSearchEnabled$ | async) {\n <c8y-title translate>Asset table</c8y-title>\n}\n\n<c8y-search-grid\n [searchText]=\"searchText\"\n [filteringName]=\"filteringName\"\n></c8y-search-grid>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CoreModule, CoreSearchModule, hookRoute, hookSearch } from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { SearchActionComponent } from './search-action.component';\nimport { SEARCH_CONFIG, SearchConfig } from './search-config.model';\nimport { SearchCustomFiltersComponent } from './search-custom-filters.component';\nimport { SearchGridComponent } from './search-grid.component';\nimport { SearchResultsComponent } from './search-results.component';\nimport { AssetSearchService } from './search.service';\n\n@NgModule({\n imports: [\n CoreModule,\n DeviceGridModule,\n CoreSearchModule,\n AssetTypeCellRendererComponent,\n SearchResultsComponent,\n SearchGridComponent,\n SearchActionComponent,\n SearchCustomFiltersComponent\n ],\n exports: [SearchResultsComponent, SearchGridComponent],\n providers: [\n AssetSearchService,\n hookRoute({\n path: 'assetsearch',\n component: SearchResultsComponent\n }),\n hookSearch({\n template: SearchActionComponent,\n onSearch: undefined\n })\n ]\n})\nexport class SearchModule {\n static config(config: SearchConfig = {}): ModuleWithProviders<SearchModule> {\n return {\n ngModule: SearchModule,\n providers: [\n {\n provide: SEARCH_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["C8yRouter","catchError","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-search.mjs","sources":["../../search/search.service.ts","../../search/search-config.model.ts","../../search/search-custom-filters.component.ts","../../search/search-custom-filters.component.html","../../search/search-action.component.ts","../../search/search-action.component.html","../../search/columns/asset-type-search-grid-column.ts","../../search/search-grid.component.ts","../../search/search-grid.component.html","../../search/search-results.component.ts","../../search/search-results.component.html","../../search/search.module.ts","../../search/c8y-ngx-components-search.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { QueriesUtil } from '@c8y/client';\nimport {\n ActionControl,\n BulkActionControl,\n Column,\n ContextRouteService,\n FeatureCacheService,\n Pagination,\n SearchFilters,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridService,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { BehaviorSubject, catchError, firstValueFrom, of } from 'rxjs';\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetSearchService {\n GRID_CONFIG_STORAGE_KEY = 'search-grid-config';\n DEFAULT_PAGE_SIZE = 50;\n getGlobalSearchData = this.getSearchData.bind(this);\n appliedFilters$: BehaviorSubject<{\n [SearchFilters.ALL_FILTERS]: boolean;\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: boolean;\n [SearchFilters.ONLY_DEVICES]: boolean;\n [SearchFilters.CURRENT_HIERARCHY]: boolean;\n }> = new BehaviorSubject({\n allFilters: true,\n onlyDevices: true,\n onlyGroupsAndAssets: true,\n currentHierarchy: false\n });\n private queriesUtil: QueriesUtil;\n private featureCacheService: FeatureCacheService = inject(FeatureCacheService);\n private deviceGridService: DeviceGridService = inject(DeviceGridService);\n private assetNodeService: AssetNodeService = inject(AssetNodeService);\n private contextRouteService: ContextRouteService = inject(ContextRouteService);\n\n constructor() {\n this.queriesUtil = new QueriesUtil();\n }\n\n /**\n * Resets the status of applied filters, used during the search.\n * Applies only to filters: 'All', 'Show only devices', 'Show only groups and assets'.\n */\n resetAppliedFilters() {\n this.appliedFilters$.next({\n allFilters: true,\n onlyDevices: true,\n onlyGroupsAndAssets: true,\n currentHierarchy: false\n });\n }\n\n buildCombinedRootQueryFilter(columns: Column[], pagination: Pagination) {\n const rootQuery = {\n __filter: {\n __and: { __not: { __has: `c8y_IsBinary` } }\n }\n };\n\n const { onlyDevices, onlyGroupsAndAssets } = this.appliedFilters$.value;\n const searchQuery = this.buildSearchQuery({ onlyDevices, onlyGroupsAndAssets });\n\n const userQuery = this.deviceGridService.getQueryObj(columns, pagination);\n const queryPart = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\n const queryWithSearch = this.queriesUtil.addAndFilter(fullQuery, searchQuery);\n return queryWithSearch;\n }\n\n async getData(columns: Column[], pagination: Pagination, text?: string) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination);\n if (await this.isWildcardSearchEnabled()) {\n const wildcardQuery = this.queriesUtil.addAndFilter(query, {\n __or: {\n name: `*${text.trim().replace(/\\s+/g, '*')}*`,\n id: text.trim(),\n 'c8y_Hardware.serialNumber': `*${text.trim().replace(/\\s+/g, '*')}*`\n }\n });\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(wildcardQuery)\n });\n }\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(query),\n text\n });\n }\n\n getDefaultColumns(): Column[] {\n const defaultColumns = [\n new NameDeviceGridColumn({ sortOrder: 'asc' }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n return defaultColumns;\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 25,\n currentPage: 1\n };\n }\n\n async isWildcardSearchEnabled(): Promise<boolean> {\n return firstValueFrom(\n this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)))\n );\n }\n\n private buildSearchQuery(model) {\n const filter: any = {};\n const ors = [];\n if (model.types?.length) {\n ors.push({ type: { __in: model.types } });\n }\n if (model.onlyDevices) {\n ors.push({ __has: 'c8y_IsDevice' });\n }\n if (model.onlyGroupsAndAssets) {\n ors.push({ __has: 'c8y_IsDynamicGroup' });\n ors.push({ __has: 'c8y_IsDeviceGroup' });\n }\n if (!model.onlyDevices && !model.onlyGroupsAndAssets) {\n ors.push([\n { __has: 'c8y_IsDeviceGroup' },\n { __has: 'c8y_IsDevice' },\n { __has: 'c8y_IsAsset' }\n ]);\n }\n\n if (ors.length) {\n filter.__or = ors;\n }\n\n if (model.currentHierarchy && this.contextRouteService.activatedContextData?.contextData?.id) {\n filter.__and = [\n { __isinhierarchyof: this.contextRouteService.activatedContextData.contextData.id }\n ];\n }\n return filter;\n }\n\n /**\n * Get search data based on the provided text and pagination.\n * @param text The search text.\n * @param pagination The pagination options.\n * @returns The search results.\n */\n private async getSearchData(\n text: string,\n pagination: Pagination = { currentPage: 1, pageSize: this.DEFAULT_PAGE_SIZE }\n ) {\n const { onlyDevices, onlyGroupsAndAssets, currentHierarchy } = this.appliedFilters$.value;\n const query = this.buildSearchQuery({ onlyDevices, onlyGroupsAndAssets, currentHierarchy });\n const queryString = this.queriesUtil.buildQuery(query);\n if (await this.isWildcardSearchEnabled()) {\n const wildcardQuery = this.queriesUtil.addAndFilter(query, {\n __or: {\n name: `*${text.trim().replace(/\\s+/g, '*')}*`,\n id: text.trim(),\n 'c8y_Hardware.serialNumber': `*${text.trim().replace(/\\s+/g, '*')}*`\n }\n });\n return this.assetNodeService.getAllInventories({\n ...pagination,\n query: this.queriesUtil.buildQuery(wildcardQuery)\n });\n }\n return this.assetNodeService.getAllInventories({ ...pagination, query: queryString, text });\n }\n}\n","import { InjectionToken } from '@angular/core';\nexport const SEARCH_CONFIG = new InjectionToken<SearchConfig>('SearchConfig');\n\n/**\n * Configuration object of the SearchModule.\n */\nexport interface SearchConfig {\n /**\n * Allows to enable advanced filters.\n * Default value: true.\n */\n showAdvancedFilters?: boolean;\n /**\n * Allows a custom placeholder.\n * Default value: ''\n */\n placeholder?: string;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ActivationEnd, Router } from '@angular/router';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n C8yTranslatePipe,\n ContextRouteService,\n SearchFilters,\n TabComponent,\n TabsOutletComponent,\n ViewContext\n} from '@c8y/ngx-components';\nimport { filter, map, startWith } from 'rxjs/operators';\nimport { AssetSearchService } from './search.service';\n\nexport type Checkbox = {\n label: string;\n name: string;\n value: boolean;\n indeterminate?: boolean;\n isDisabled?: boolean;\n};\n\n@Component({\n selector: 'c8y-search-custom-filters',\n templateUrl: 'search-custom-filters.component.html',\n imports: [C8yTranslatePipe, TabsOutletComponent, TabComponent, AsyncPipe, FormsModule]\n})\nexport class SearchCustomFiltersComponent implements OnInit {\n @Input() useTabs = false;\n @Output() customDataQuery = new EventEmitter();\n @Output() refresh = new EventEmitter();\n tabNames = {\n all: gettext('All'),\n devices: gettext('Devices'),\n groupsAndAssets: gettext('Groups and assets')\n };\n selectedTab: (typeof this.tabNames)[keyof typeof this.tabNames] = this.tabNames.all;\n\n checkboxesState: Array<Checkbox> = [\n {\n label: gettext('All'),\n name: SearchFilters.ALL_FILTERS,\n value: true,\n indeterminate: false,\n isDisabled: true\n },\n { label: gettext('Show only devices'), name: SearchFilters.ONLY_DEVICES, value: true },\n {\n label: gettext('Show only groups and assets'),\n name: SearchFilters.ONLY_GROUPS_AND_ASSETS,\n value: true\n }\n ];\n\n @Input()\n isOnlyHierarchyQuery = false;\n @Output()\n isOnlyHierarchyQueryChange = new EventEmitter<boolean>();\n\n private assetSearchService = inject(AssetSearchService);\n private contextRouteService = inject(ContextRouteService);\n private router = inject(Router);\n\n contextRouteData$ = this.router.events.pipe(\n filter(event => event instanceof ActivationEnd),\n map((routeData: ActivationEnd) => {\n const data = this.contextRouteService.getContextData(routeData.snapshot);\n if (data?.context === ViewContext.Group) {\n return data;\n }\n return null;\n }),\n takeUntilDestroyed()\n );\n\n context$ = this.contextRouteData$.pipe(\n startWith(this.contextRouteService.activatedContextData),\n takeUntilDestroyed()\n );\n\n ngOnInit() {\n this.customDataQuery.next(this.assetSearchService.getGlobalSearchData);\n }\n\n onCheckboxChange(event: Event, checkbox: Checkbox): void {\n const { checked } = event.target as HTMLInputElement;\n\n if (checked == undefined) {\n return;\n }\n\n switch (checkbox.name) {\n case SearchFilters.ALL_FILTERS:\n this.onSelectAll(checkbox, checked);\n break;\n case SearchFilters.ONLY_DEVICES:\n this.onAllDevices(checkbox, checked);\n break;\n case SearchFilters.ONLY_GROUPS_AND_ASSETS:\n this.onGroupsAndAssets(checkbox, checked);\n break;\n }\n\n // Handle allFilters checkbox when ONLY_GROUPS_AND_ASSETS and ONLY_DEVICES are selected\n if (\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value &&\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n ) {\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: false,\n isDisabled: true,\n value: true\n });\n }\n\n this.onSearchFilterChange(\n this.getCheckbox(SearchFilters.ALL_FILTERS).value,\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value,\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n );\n\n this.refresh.next(null);\n }\n\n onTabChange(\n tabName: (typeof this.tabNames)[keyof typeof this.tabNames] = this.tabNames.all\n ): void {\n this.selectedTab = tabName;\n this.onSearchFilterChange(\n tabName === this.tabNames.all,\n tabName === this.tabNames.devices,\n tabName === this.tabNames.groupsAndAssets,\n this.isOnlyHierarchyQuery\n );\n }\n\n onHierarchyQueryChange(checked: boolean): void {\n this.isOnlyHierarchyQuery = checked;\n this.isOnlyHierarchyQueryChange.next(checked);\n this.onSearchFilterChange(\n this.selectedTab === this.tabNames.all,\n this.selectedTab === this.tabNames.devices,\n this.selectedTab === this.tabNames.groupsAndAssets,\n checked\n );\n }\n\n onSearchFilterChange(\n all: boolean,\n devices: boolean,\n groupsAndAssets: boolean,\n currentHierarchy = false\n ) {\n this.assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: all,\n [SearchFilters.ONLY_DEVICES]: devices,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: groupsAndAssets,\n [SearchFilters.CURRENT_HIERARCHY]: currentHierarchy\n });\n this.refresh.next(null);\n }\n\n private saveCheckboxValue(checkbox, value) {\n checkbox.value = value;\n }\n\n private onSelectAll(currentCheckbox: Checkbox, checked: boolean) {\n // Block unchecked state\n if (checked) {\n this.saveCheckboxValue(currentCheckbox, checked);\n }\n this.getCheckbox(SearchFilters.ALL_FILTERS).isDisabled = true;\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;\n }\n\n private onAllDevices(currentCheckbox: Checkbox, checked: boolean) {\n this.saveCheckboxValue(currentCheckbox, checked);\n\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: true,\n isDisabled: false,\n value: null\n });\n\n this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;\n }\n\n private onGroupsAndAssets(currentCheckbox: Checkbox, checked: boolean) {\n this.saveCheckboxValue(currentCheckbox, checked);\n\n Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {\n indeterminate: true,\n isDisabled: false,\n value: null\n });\n\n this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;\n }\n\n private getCheckbox(checkboxName: SearchFilters): Checkbox {\n return this.checkboxesState.find(checkbox => checkbox.name === checkboxName);\n }\n}\n","<div class=\"d-flex gap-16 p-l-4 p-l-24 p-r-24\">\n @if (!useTabs) {\n <div class=\"p-b-8 separator-bottom sticky-top p-t-4\">\n @for (checkbox of checkboxesState; track $index) {\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"checkbox.value\"\n [indeterminate]=\"checkbox.indeterminate\"\n (click)=\"onCheckboxChange($event, checkbox)\"\n [attr.disabled]=\"checkbox.isDisabled ? true : null\"\n />\n <span></span>\n <span>{{ checkbox.label | translate }}</span>\n </label>\n }\n </div>\n }\n</div>\n\n@if (useTabs) {\n <c8y-tabs-outlet\n class=\"elevation-none\"\n outletName=\"searchTabs\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n}\n\n<c8y-tab\n [icon]=\"'asterisk-key'\"\n [title]=\"'All devices, assets and groups' | translate\"\n [isActive]=\"selectedTab === tabNames.all\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.all | translate\"\n [priority]=\"1000\"\n (onSelect)=\"onTabChange(tabNames.all)\"\n></c8y-tab>\n<c8y-tab\n [icon]=\"'exchange'\"\n [title]=\"'Devices only' | translate\"\n [isActive]=\"selectedTab === tabNames.devices\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.devices | translate\"\n [priority]=\"750\"\n (onSelect)=\"onTabChange(tabNames.devices)\"\n></c8y-tab>\n<c8y-tab\n [icon]=\"'c8y-modules'\"\n [title]=\"'Assets and groups only' | translate\"\n [isActive]=\"selectedTab === tabNames.groupsAndAssets\"\n [tabsOutlet]=\"'searchTabs'\"\n [label]=\"tabNames.groupsAndAssets | translate\"\n [priority]=\"500\"\n (onSelect)=\"onTabChange(tabNames.groupsAndAssets)\"\n></c8y-tab>\n\n@if (useTabs && (context$ | async)?.contextData?.name) {\n <div class=\"p-l-48 p-t-8 d-flex a-i-center\">\n <span translate>Search only in`specified group or asset`</span>\n <span class=\"text-bold p-l-4\">{{ (context$ | async)?.contextData?.name }}</span>\n <label\n class=\"m-l-8 c8y-switch c8y-switch--inline\"\n [title]=\"'Search only within the current group or asset hierarchy' | translate\"\n >\n <input\n [attr.aria-label]=\"'Search only within the current group or asset hierarchy' | translate\"\n type=\"checkbox\"\n [ngModel]=\"isOnlyHierarchyQuery\"\n (ngModelChange)=\"onHierarchyQueryChange($event)\"\n />\n <span></span>\n </label>\n </div>\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, EventEmitter, inject } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { IManagedObject, IResultList } from '@c8y/client';\nimport {\n RouterService as C8yRouter,\n FeatureCacheService,\n SearchInputComponent,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { catchError, lastValueFrom, Observable, of, UnaryFunction } from 'rxjs';\nimport { SEARCH_CONFIG, SearchConfig } from './search-config.model';\nimport { SearchCustomFiltersComponent } from './search-custom-filters.component';\n\n@Component({\n selector: 'c8y-search-action',\n templateUrl: './search-action.component.html',\n imports: [SearchInputComponent, SearchCustomFiltersComponent, AsyncPipe]\n})\nexport class SearchActionComponent {\n showAdvancedFilters: boolean;\n customPlaceholder: string;\n customQuery: UnaryFunction<string, Observable<IResultList<IManagedObject>>>;\n typeaheadReload = new EventEmitter();\n\n featureCacheService = inject(FeatureCacheService);\n\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n c8yRouter = inject(C8yRouter);\n router = inject(Router);\n moduleConfig: SearchConfig = inject(SEARCH_CONFIG, { optional: true });\n isOnlyHierarchyQuery = false;\n\n constructor() {\n this.showAdvancedFilters = this.moduleConfig?.showAdvancedFilters ?? true;\n this.customPlaceholder = this.moduleConfig?.placeholder;\n }\n\n triggerDataLoad() {\n this.typeaheadReload.next(null);\n }\n\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.triggerDataLoad();\n }\n }\n\n async onSearch(on: string) {\n if (await lastValueFrom(this.isWildcardSearchEnabled$)) {\n return;\n }\n this.navigate(['/assetsearch'], {\n queryParams: { search: on },\n replaceUrl: true\n });\n }\n\n onFilter(on: string) {\n this.navigate(['/assetsearch'], {\n queryParams: { filter: on },\n replaceUrl: true\n });\n }\n\n onClick(mo: IManagedObject) {\n this.router.navigateByUrl(this.c8yRouter.getHref(mo, '/'));\n }\n\n private navigate(commands: any[], extras?: NavigationExtras) {\n this.router\n .navigateByUrl('/', { skipLocationChange: true })\n .then(() => this.router.navigate(commands, extras));\n }\n}\n","<c8y-search-input\n #input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n (onOpenToggle)=\"onOpenChange($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n [mode]=\"(isWildcardSearchEnabled$ | async) ? 'wildcardsearch' : 'search'\"\n>\n @if (showAdvancedFilters && input.term.length > 0) {\n <c8y-search-custom-filters\n (refresh)=\"triggerDataLoad()\"\n [useTabs]=\"isWildcardSearchEnabled$ | async\"\n [(isOnlyHierarchyQuery)]=\"isOnlyHierarchyQuery\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n }\n</c8y-search-input>\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n SearchFilters\n} from '@c8y/ngx-components';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { AssetSearchService } from '../search.service';\nimport { AssetTypeGridColumn } from '@c8y/ngx-components/data-grid-columns/asset-type';\n\nexport class AssetTypeSearchGridColumn extends AssetTypeGridColumn {\n constructor(\n hideExtendedFilters: boolean,\n initialColumnConfig?: ColumnConfig,\n assetSearchService?: AssetSearchService,\n customPlaceholder?: string\n ) {\n super(initialColumnConfig);\n\n this.filterable = true;\n this.filteringConfig = this.getFilteringConfig(\n hideExtendedFilters,\n assetSearchService,\n customPlaceholder\n );\n }\n\n private getFilteringConfig(\n hideExtendedFilters: boolean,\n assetSearchService: AssetSearchService,\n customPlaceholder?: string\n ) {\n return {\n fields: [\n ...getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: gettext('Show items with type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: customPlaceholder ? customPlaceholder : gettext('building`e.g. house`'),\n optional: !hideExtendedFilters\n }),\n {\n key: SearchFilters.ALL_FILTERS,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n disabled: false,\n label: gettext('All'),\n click: (field, clickEvent) => {\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ONLY_DEVICES).setValue(true);\n field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: checked,\n [SearchFilters.ONLY_DEVICES]: true,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: true,\n [SearchFilters.CURRENT_HIERARCHY]: null\n });\n }\n }\n },\n expressionProperties: {\n 'props.indeterminate': (model: any, formState: any, field: FormlyFieldConfig) => {\n // Do nothing\n if (field.form.get(SearchFilters.ALL_FILTERS).value === true) {\n return;\n }\n // Set indeterminate state\n if (\n !field.form.get(SearchFilters.ONLY_DEVICES).value ||\n !field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).value\n ) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null);\n return true;\n }\n return false;\n },\n 'props.disabled': (model: any, formState: any, field: FormlyFieldConfig) => {\n if (field.form.get(SearchFilters.ALL_FILTERS).value === true) {\n return true;\n }\n return false;\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { allFilters } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(allFilters);\n }\n }\n },\n {\n key: SearchFilters.ONLY_DEVICES,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n label: gettext('Show only devices'),\n click: (field, clickEvent) => {\n const oldFilterValue = assetSearchService.appliedFilters$.value;\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(true);\n // Emit new state\n assetSearchService.appliedFilters$.next({\n ...oldFilterValue,\n [SearchFilters.ALL_FILTERS]: true,\n [SearchFilters.ONLY_DEVICES]: checked\n });\n return;\n }\n // Handle unchecked state\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null); // Trigger indeterminate state\n field.form.get(SearchFilters.ONLY_GROUPS_AND_ASSETS).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: null,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: true,\n [SearchFilters.ONLY_DEVICES]: checked,\n [SearchFilters.CURRENT_HIERARCHY]: null\n });\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { onlyDevices } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(onlyDevices);\n }\n }\n },\n {\n key: SearchFilters.ONLY_GROUPS_AND_ASSETS,\n type: 'checkbox',\n hide: hideExtendedFilters,\n props: {\n indeterminate: false,\n label: gettext('Show only groups and assets'),\n click: (field, clickEvent) => {\n const oldFilterValue = assetSearchService.appliedFilters$.value;\n const { checked } = clickEvent.target;\n\n // Handle checked state\n if (checked) {\n field.form.get(SearchFilters.ALL_FILTERS).setValue(true);\n // Emit new state\n assetSearchService.appliedFilters$.next({\n ...oldFilterValue,\n [SearchFilters.ALL_FILTERS]: true,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checked\n });\n return;\n }\n // Handle unchecked state\n field.form.get(SearchFilters.ALL_FILTERS).setValue(null); // Trigger indeterminate state\n field.form.get(SearchFilters.ONLY_DEVICES).setValue(true);\n\n // Emit new state\n assetSearchService.appliedFilters$.next({\n [SearchFilters.ALL_FILTERS]: null,\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checked,\n [SearchFilters.ONLY_DEVICES]: true,\n [SearchFilters.CURRENT_HIERARCHY]: false\n });\n }\n },\n hooks: {\n onInit: field => {\n // Get initial state\n const { onlyGroupsAndAssets } = assetSearchService?.appliedFilters$?.value;\n field.formControl.setValue(onlyGroupsAndAssets);\n }\n }\n }\n ],\n /**\n * Adding devices and groups to a filter is already handled in {@link AssetSearchService#buildSearchQuery}\n * */\n getFilter(model: any): any {\n const filter: any = {};\n const ors = [];\n if (model.types?.length) {\n ors.push({ type: { __in: model.types } });\n }\n if (ors.length) {\n filter.__or = ors;\n }\n return filter;\n }\n };\n }\n}\n","import { Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n C8yTranslatePipe,\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n DataGridComponent,\n DataSourceModifier,\n EmptyStateComponent,\n FeatureCacheService,\n FilteringActionType,\n FilteringModifier,\n GridConfigContextProvider,\n Pagination,\n Row,\n SearchFilters,\n ServerSideDataResult,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport {\n AlarmsDeviceGridColumn,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DeleteAssetsModalComponent,\n DeleteModalCheckboxes,\n SubAssetsService\n} from '@c8y/ngx-components/sub-assets';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { catchError, of } from 'rxjs';\nimport { AssetTypeSearchGridColumn } from './columns/asset-type-search-grid-column';\nimport { SEARCH_CONFIG } from './search-config.model';\nimport { AssetSearchService } from './search.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-search-grid',\n templateUrl: './search-grid.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: SearchGridComponent\n }\n ],\n imports: [DataGridComponent, EmptyStateComponent, C8yTranslatePipe, AsyncPipe]\n})\nexport class SearchGridComponent implements GridConfigContextProvider {\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() title = '';\n @Input() loadingItemsLabel: string = gettext('Loading results…');\n @Input('columns') set _columns(value: Column[]) {\n if (value) {\n this.columns = value;\n } else {\n this.columns = this.assetSearchService.getDefaultColumns();\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.assetSearchService.getDefaultActionControls();\n }\n }\n @Input() selectable = false;\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.assetSearchService.getDefaultBulkActionControls();\n }\n }\n @Output() onColumnsChange: EventEmitter<Column[]> = new EventEmitter<Column[]>();\n\n @Input()\n searchText = '';\n\n @Input()\n filteringName: string;\n\n /** The name of the key where columns configuration will be stored. */\n @Input() columnsConfigKey: string;\n\n moduleConfig = inject(SEARCH_CONFIG, { optional: true });\n showAdvancedFilters = this.moduleConfig?.showAdvancedFilters ?? false;\n customPlaceholder = this.moduleConfig?.placeholder ?? undefined;\n\n columns: Column[];\n assetSearchService = inject(AssetSearchService);\n pagination: Pagination = this.assetSearchService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = this.assetSearchService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n refresh: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n featureCacheService = inject(FeatureCacheService);\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n wildcardSearchTitle = gettext('Asset data');\n fullTextSearchTitle = gettext('Search results');\n\n private sizeCount = 0;\n private bsModalService = inject(BsModalService);\n private smartGroupsService = inject(SmartGroupsService);\n private subAssetsGridService = inject(SubAssetsService);\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return {\n key: this.columnsConfigKey || this.assetSearchService.GRID_CONFIG_STORAGE_KEY,\n configFilter: { filter: false, sort: false }\n };\n }\n\n ngOnInit(): void {\n if (!this.filteringName) {\n this.columns = [\n new AssetTypeSearchGridColumn(\n this.showAdvancedFilters,\n { sortOrder: 'desc' },\n this.assetSearchService,\n this.customPlaceholder\n ),\n ...this.assetSearchService.getDefaultColumns()\n ];\n } else {\n this.columns = [\n new AssetTypeSearchGridColumn(\n this.showAdvancedFilters,\n { sortOrder: 'desc' },\n this.assetSearchService\n ),\n new NameDeviceGridColumn({\n sortOrder: 'asc',\n filter: { externalFilterQuery: { names: [this.filteringName] } }\n }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n }\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.setActionControls();\n }\n\n ngAfterViewInit() {\n this.setInitialFilterForTypeColumn();\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const response = await this.assetSearchService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n dataSourceModifier.searchText\n );\n const { res, data, paging } = response;\n\n if (paging.currentPage === 1) {\n this.sizeCount = 0;\n }\n this.sizeCount += data.length;\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res,\n data,\n paging,\n filteredSize: this.sizeCount,\n size: undefined\n };\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup)\n };\n actionControls.push(deleteAction);\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n /**\n * TODO: find better solution. After new changes from DM team, we're running into race condition where\n * this.dataGrid.updateFiltering is executed before this.configurationStrategy.getConfig$() value is emitted.\n * Columns setter sets columns after this.dataGrid.updateFiltering executes its logic. Value of this.columns in\n * dataGrid.updateFiltering is just not yet set.\n */\n setTimeout(() => {\n this.dataGrid.updateFiltering(columnNames, action, false);\n }, 500);\n }\n }\n\n onColumnFilterReset(column: Column) {\n if (column.name === 'type') {\n this.assetSearchService.resetAppliedFilters();\n }\n }\n\n private onDeleteAsset(asset, parentRef) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox: !this.smartGroupsService.isSmartGroup(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n this.refresh.emit();\n }\n });\n }\n\n private setInitialFilterForTypeColumn() {\n const checkboxes = this.assetSearchService.appliedFilters$.value;\n // Set filter only when all checkboxes are not selected\n if (\n checkboxes[SearchFilters.ONLY_DEVICES] !== checkboxes[SearchFilters.ONLY_GROUPS_AND_ASSETS]\n ) {\n const externalFilterQuery = {\n [SearchFilters.ONLY_DEVICES]: checkboxes[SearchFilters.ONLY_DEVICES],\n [SearchFilters.ONLY_GROUPS_AND_ASSETS]: checkboxes[SearchFilters.ONLY_GROUPS_AND_ASSETS]\n };\n this.updateFiltering(['type'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery\n }\n }\n });\n }\n }\n}\n","<div class=\"card--grid--fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"\n ((isWildcardSearchEnabled$ | async) ? wildcardSearchTitle : fullTextSearchTitle) | translate\n \"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"'auto'\"\n [showSearch]=\"true\"\n [searchText]=\"searchText\"\n [refresh]=\"refresh\"\n (onColumnFilterReset)=\"onColumnFilterReset($event)\"\n >\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, OnDestroy, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Alert,\n AlertService,\n C8yTranslateDirective,\n FeatureCacheService,\n FilteringActionType,\n Status,\n TitleComponent,\n WILDCARD_SEARCH_FEATURE_KEY\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { of, Subject } from 'rxjs';\nimport { catchError, takeUntil } from 'rxjs/operators';\nimport { SearchGridComponent } from './search-grid.component';\n\n@Component({\n selector: 'c8y-search-results',\n templateUrl: './search-results.component.html',\n imports: [TitleComponent, C8yTranslateDirective, SearchGridComponent, AsyncPipe]\n})\nexport class SearchResultsComponent implements OnDestroy {\n filter = '';\n searchText = '';\n @ViewChild(SearchGridComponent, { static: true })\n searchGrid: SearchGridComponent;\n filteringName: string;\n\n featureCacheService = inject(FeatureCacheService);\n isWildcardSearchEnabled$ = this.featureCacheService\n .getFeatureState(WILDCARD_SEARCH_FEATURE_KEY)\n .pipe(catchError(() => of(true)));\n\n private readonly WARNING_TIMEOUT_TIME = 3000;\n private unsubscribe$ = new Subject<void>();\n\n constructor(\n private route: ActivatedRoute,\n private alert: AlertService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(takeUntil(this.unsubscribe$)).subscribe(params => {\n if (params.filter) {\n this.filteringName = params.filter;\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.route.queryParams\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ filter, search }) => this.onQueryParamsChange(filter, search));\n }\n\n resetSearch() {\n if (this.searchGrid.dataGrid.searchText) {\n this.alert.add({\n text: gettext('Search reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: this.WARNING_TIMEOUT_TIME\n } as Alert);\n this.searchText = '';\n this.searchGrid.dataGrid.searchText = '';\n }\n }\n\n resetFilter() {\n this.filter = '';\n if (this.searchGrid.dataGrid.filteringApplied) {\n this.alert.add({\n text: gettext('Filter reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: this.WARNING_TIMEOUT_TIME\n } as Alert);\n this.searchGrid.dataGrid.clearFilters(false);\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private onQueryParamsChange(filter: string, searchTerm: string) {\n if (!this.shouldFilter(filter) && searchTerm) {\n this.searchText = searchTerm || '';\n }\n }\n\n private shouldFilter(filter) {\n if (!filter) {\n return false;\n }\n this.resetSearch();\n this.filter = filter || '';\n this.searchGrid.updateFiltering(['name'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery: {\n names: [this.filter]\n }\n }\n }\n });\n return true;\n }\n}\n","@if (!(isWildcardSearchEnabled$ | async)) {\n <c8y-title>\n <span\n class=\"p-r-4\"\n translate\n >\n Search\n </span>\n @if (searchText) {\n <small\n ngNonBindable\n translate\n [translateParams]=\"{\n searchHint: searchText\n }\"\n >\n searching \"{{ searchHint }}\"\n </small>\n }\n @if (filter) {\n <small\n ngNonBindable\n translate\n [translateParams]=\"{\n filterHint: filter\n }\"\n >\n filtered by \"{{ filterHint }}\"\n </small>\n }\n </c8y-title>\n}\n\n@if (isWildcardSearchEnabled$ | async) {\n <c8y-title translate>Asset table</c8y-title>\n}\n\n<c8y-search-grid\n [searchText]=\"searchText\"\n [filteringName]=\"filteringName\"\n></c8y-search-grid>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CoreModule, CoreSearchModule, hookRoute, hookSearch } from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { SearchActionComponent } from './search-action.component';\nimport { SEARCH_CONFIG, SearchConfig } from './search-config.model';\nimport { SearchCustomFiltersComponent } from './search-custom-filters.component';\nimport { SearchGridComponent } from './search-grid.component';\nimport { SearchResultsComponent } from './search-results.component';\nimport { AssetSearchService } from './search.service';\n\n@NgModule({\n imports: [\n CoreModule,\n DeviceGridModule,\n CoreSearchModule,\n AssetTypeCellRendererComponent,\n SearchResultsComponent,\n SearchGridComponent,\n SearchActionComponent,\n SearchCustomFiltersComponent\n ],\n exports: [SearchResultsComponent, SearchGridComponent],\n providers: [\n AssetSearchService,\n hookRoute({\n path: 'assetsearch',\n component: SearchResultsComponent\n }),\n hookSearch({\n template: SearchActionComponent,\n onSearch: undefined\n })\n ]\n})\nexport class SearchModule {\n static config(config: SearchConfig = {}): ModuleWithProviders<SearchModule> {\n return {\n ngModule: SearchModule,\n providers: [\n {\n provide: SEARCH_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["C8yRouter","catchError","i1"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NgIf, NgClass, JsonPipe, AsyncPipe
|
|
1
|
+
import { NgIf, NgClass, JsonPipe, AsyncPipe } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, Injectable, Input, Component, viewChild, SecurityContext, ViewChild } from '@angular/core';
|
|
4
4
|
import * as i2 from '@angular/forms';
|
|
@@ -17,21 +17,26 @@ import { Subject, first, map, filter, withLatestFrom, switchMap, shareReplay, ta
|
|
|
17
17
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
18
18
|
import { InventoryService } from '@c8y/client';
|
|
19
19
|
import { kebabCase } from 'lodash-es';
|
|
20
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
20
21
|
import { EditorComponent } from '@c8y/ngx-components/editor';
|
|
21
22
|
import { AssetPropertyListComponent, AssetPropertyActionDirective } from '@c8y/ngx-components/asset-properties';
|
|
22
23
|
|
|
23
24
|
const INITIAL_HTML_FORMATTED = `<div>
|
|
24
25
|
<h2>Hello from <span class="branded">HTML widget</span></h2>
|
|
25
26
|
<p class="m-b-8 m-t-16">
|
|
26
|
-
You can use HTML and Javascript template literals here: <br>
|
|
27
|
-
\$\{this.c8yContext ? this.c8yContext.name : 'No device selected'\}
|
|
27
|
+
\$\{this.c8yTranslate('You can use HTML and Javascript template literals here:')\} <br>
|
|
28
|
+
\$\{this.c8yContext ? this.c8yTranslate('Device {{deviceName}} selected', { deviceName: this.c8yContext.name }) : this.c8yTranslate('No device selected')\}
|
|
28
29
|
</p>
|
|
29
30
|
|
|
30
|
-
<a class="btn btn-primary m-b-16" href="#/group"
|
|
31
|
+
<a class="btn btn-primary m-b-16" href="#/group">\$\{this.c8yTranslate('Go to groups')\}</a>
|
|
31
32
|
|
|
32
33
|
<p>
|
|
33
34
|
Use the CSS editor to customize the CSS. You can use <span class="text-bold">any design-token CSS variable</span> in there.
|
|
34
35
|
</p>
|
|
36
|
+
|
|
37
|
+
<p>
|
|
38
|
+
Note that you are only able to translate strings using the c8yTranslate method if they are written in English and their translations are available in the loaded standard or custom translation resources.
|
|
39
|
+
</p>
|
|
35
40
|
</div>`;
|
|
36
41
|
const INITIAL_CSS_FORMATTED = `
|
|
37
42
|
:host > div {
|
|
@@ -449,6 +454,7 @@ class HtmlFrameComponent {
|
|
|
449
454
|
this.useSalt = false;
|
|
450
455
|
this.alerts = [];
|
|
451
456
|
this.sanitizer = inject(DomSanitizer);
|
|
457
|
+
this.translateService = inject(TranslateService);
|
|
452
458
|
this.destroy$ = new Subject();
|
|
453
459
|
this.hostElement = viewChild('hostElement', ...(ngDevMode ? [{ debugName: "hostElement" }] : []));
|
|
454
460
|
this.reload$ = new Subject();
|
|
@@ -549,6 +555,8 @@ class HtmlFrameComponent {
|
|
|
549
555
|
createWebComponent(webComponentName, divHostElement, context) {
|
|
550
556
|
const webComponent = document.createElement(webComponentName);
|
|
551
557
|
webComponent.c8yContext = context;
|
|
558
|
+
const instantTranslate = this.translateService.instant.bind(this.translateService);
|
|
559
|
+
webComponent.c8yTranslate = instantTranslate;
|
|
552
560
|
divHostElement.appendChild(webComponent);
|
|
553
561
|
return webComponent;
|
|
554
562
|
}
|
|
@@ -590,11 +598,11 @@ class HtmlFrameComponent {
|
|
|
590
598
|
return webComponentScript;
|
|
591
599
|
}
|
|
592
600
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HtmlFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
593
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: HtmlFrameComponent, isStandalone: true, selector: "c8y-html-frame", inputs: { config: "config", device: "device", useSalt: "useSalt" }, host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "hostElement", first: true, predicate: ["hostElement"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
594
602
|
}
|
|
595
603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HtmlFrameComponent, decorators: [{
|
|
596
604
|
type: Component,
|
|
597
|
-
args: [{ standalone: true, imports: [
|
|
605
|
+
args: [{ standalone: true, imports: [NgClass], selector: 'c8y-html-frame', host: { class: 'd-contents' }, template: "@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n" }]
|
|
598
606
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
599
607
|
type: Input
|
|
600
608
|
}], device: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-widgets-implementations-html-widget.mjs","sources":["../../widgets/implementations/html-widget/html-widget.model.ts","../../widgets/implementations/html-widget/webcomponent-template.ts","../../widgets/implementations/html-widget/legacy-template.ts","../../widgets/implementations/html-widget/html-widget-config.service.ts","../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.ts","../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.html","../../widgets/implementations/html-widget/html-ai-chat-feedback.component.ts","../../widgets/implementations/html-widget/html-ai-chat-feedback.component.html","../../widgets/implementations/html-widget/html-frame/html-frame.component.ts","../../widgets/implementations/html-widget/html-frame/html-frame.component.html","../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.ts","../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.html","../../widgets/implementations/html-widget/html-widget-config.component.ts","../../widgets/implementations/html-widget/html-widget-config.component.html","../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.ts","../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.html","../../widgets/implementations/html-widget/html-widget.component.ts","../../widgets/implementations/html-widget/html-widget.component.html","../../widgets/implementations/html-widget/c8y-ngx-components-widgets-implementations-html-widget.ts"],"sourcesContent":["import { IIdentified, IManagedObject } from '@c8y/client';\nimport { WidgetSettings } from '@c8y/ngx-components';\n\nexport interface HtmlWidgetConfig {\n device?: IIdentified | null;\n config: HtmlWidget;\n settings?: WidgetSettings;\n\n /**\n * On HTML WIdget 1.0 this property was used to store the HTML code.\n * It is not used anymore, but we need to keep it for backward compatibility.\n * The HTML code is now stored in the config property.\n * @deprecated Use config.code instead.\n */\n html?: any;\n}\n\nexport type C8yProperties = Array<PathProperty | ComputedProperty>;\n\nexport interface HtmlWidget {\n css: string;\n code: string;\n props?: C8yProperties;\n options: HtmlWidgetOptions;\n legacy: boolean;\n devMode: boolean;\n latestCodeHash?: string;\n}\n\nexport interface HtmlWidgetOptions {\n cssEncapsulation: boolean;\n advancedSecurity: boolean;\n}\n\nexport interface WebcomponentContext extends HTMLElement {\n c8yContext: IManagedObject;\n}\n\nexport interface PathProperty {\n name: string;\n path: string;\n query?: never;\n reducer?: never;\n}\n\nexport interface ComputedProperty {\n name: string;\n path?: never;\n query: string;\n reducer?: string;\n}\n\nexport const INITIAL_HTML_FORMATTED = `<div>\n <h2>Hello from <span class=\"branded\">HTML widget</span></h2>\n <p class=\"m-b-8 m-t-16\">\n You can use HTML and Javascript template literals here: <br>\n \\$\\{this.c8yContext ? this.c8yContext.name : 'No device selected'\\}\n </p>\n\n <a class=\"btn btn-primary m-b-16\" href=\"#/group\">Go to groups</a>\n\n <p>\n Use the CSS editor to customize the CSS. You can use <span class=\"text-bold\">any design-token CSS variable</span> in there.\n </p>\n</div>`;\nexport const INITIAL_CSS_FORMATTED = `\n:host > div {\n padding: var(--c8y-root-component-padding-default);\n}\nspan.branded { \n color: var(--brand-primary, var(--c8y-brand-primary)); \n}`;\n\nexport const defaultWebComponentName = 'DefaultWebComponent';\n\nexport const defaultWebComponentAttributeNameContext = 'c8yContext';\n","import { defaultWebComponentName } from './html-widget.model';\n\nexport const webComponentTemplate = (\n html: string,\n css?: string,\n viewEncapsulation?: boolean,\n name = defaultWebComponentName\n) => `\nimport { LitElement, html, css} from 'lit';\n${!viewEncapsulation ? `import { styleImports } from 'styles';` : ''}\n\nexport default class ${name} extends LitElement {\n static styles = css\\`\n ${css}\n \\`;\n\n static properties = {\n // The managed object this widget is assigned to. Can be null.\n c8yContext: { type: Object },\n };\n\n constructor() {\n super();\n }\n\n render() {\n return html\\`${\n viewEncapsulation\n ? html\n : `\n <style>\n \\${styleImports}\n </style>\n ${html}\n `\n }\\`;\n }\n}\n`;\n","export const legacyTemplate = (html: string, deviceId?: string | number, deviceName?: string) => {\n const escapedHtml = html\n // Finds: \\ Replaces with: \\\\\n .replace(/\\\\/g, '\\\\\\\\')\n // Finds: ` Replaces with: \\`\n .replace(/`/g, '\\\\`')\n // Finds: $ Replaces with: \\$\n .replace(/\\$/g, '\\\\$');\n\n return `\nimport { angular } from 'angular';\n\n// NOTE: This is a legacy template for the HTML widget.\n// It is used to compile the HTML content in the context of the AngularJS application.\n// The template is injected into the AngularJS application and compiled using the AngularJS compiler.\n// The template should only be used for backward compatibility purposes.\n// It is recommended to use a web component instead.\n\nif(!angular) {\n throw new Error('AngularJS is not available. Please make sure to include AngularJS in your project.');\n}\n\nconst $injector = angular.element(document.querySelector('c8y-ui-root')).injector();\nif (!$injector) {\n throw new Error('AngularJS injector is not available. Maybe not an hybrid application?');\n}\n\n// defining a new scope\nconst $rootScope = $injector.get('$rootScope');\nconst $scope = $rootScope.$new(true); \n\n// faking the old angularjs config \n$scope.child = { \n config: {\n ${deviceId ? `device: { id: \"${deviceId}\", name: \"${deviceName}\" },` : ''}\n html: \\`<div ng-controller=\"HtmlWidgetCtrl\">${escapedHtml}</div>\\`\n }\n};\n\n// load the needed services\nconst $compile = $injector.get('$compile');\nconst $controller = $injector.get('$controller');\n\n// create the element\nconst htmlElement = angular.element($scope.child.config.html);\n\n// The default controller providing the context\n$controller('HtmlWidgetCtrl', { $scope });\n\n// Compile the element\n$compile(htmlElement)($scope);\n\n// Apply the scope changes\n$rootScope.$apply();\n\nexport default htmlElement[0];`;\n};\n","import { inject, Injectable } from '@angular/core';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { CockpitConfig } from '@c8y/ngx-components/cockpit-config';\nimport { ContextWidgetConfig, WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { isEmpty } from 'lodash';\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n first,\n map,\n Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n switchMap,\n takeUntil,\n withLatestFrom\n} from 'rxjs';\nimport { HtmlWidget, INITIAL_CSS_FORMATTED, INITIAL_HTML_FORMATTED } from './html-widget.model';\nimport { webComponentTemplate } from './webcomponent-template';\nimport { legacyTemplate } from './legacy-template';\n\n@Injectable()\nexport class HtmlWidgetConfigService {\n readonly DEFAULT_AUTO_SAVE_DEBOUNCE = 1000;\n codeChange$ = new Subject<{ value: string; type: 'css' | 'code' }>();\n widgetConfigService = inject(WidgetConfigService);\n appState = inject(AppStateService);\n destroy$ = new Subject<void>();\n\n init$ = this.widgetConfigService.currentConfig$.pipe(\n first(),\n map(current => {\n if (current.html) {\n current.config = this.mapLegacyConfig(current);\n }\n\n return (current.config || {}) as HtmlWidget;\n }),\n filter(config => !!config),\n withLatestFrom(this.appState.currentApplicationConfig),\n switchMap(([widgetConfig, appConfig]) => this.initConfig(appConfig, widgetConfig)),\n shareReplay(),\n takeUntil(this.destroy$)\n );\n\n config$ = this.init$.pipe(switchMap(initValue => this.configChanged$.pipe(startWith(initValue))));\n\n codeEditorChangeConfig$ = combineLatest([\n this.codeChange$.pipe(startWith(undefined)),\n this.config$\n ]).pipe(\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n debounceTime(this.DEFAULT_AUTO_SAVE_DEBOUNCE),\n map(([change, config]) => {\n if (!change) {\n return config;\n }\n if (change.type === 'css') {\n config.css = change.value;\n } else {\n config.code = change.value;\n }\n return { ...config };\n })\n );\n\n configChanged$ = new Subject<HtmlWidget>();\n\n initConfig(appConfig: CockpitConfig, widgetConfig: HtmlWidget): Observable<HtmlWidget> {\n const defaultToAdvancedMode = appConfig?.htmlWidgetDefaultToAdvancedMode ?? false;\n const isEmptyConfig = isEmpty(widgetConfig);\n if (isEmptyConfig && !defaultToAdvancedMode) {\n widgetConfig = this.initDefaultMode(!appConfig?.htmlWidgetDisableSanitization);\n this.save(widgetConfig);\n return of(widgetConfig);\n }\n if (isEmptyConfig) {\n widgetConfig = this.enableAdvancedMode(widgetConfig);\n }\n\n // new config is needed to trigger ngOnChanges\n const newConfig = { ...widgetConfig };\n this.save(newConfig);\n return of(newConfig);\n }\n\n destroy(): void {\n this.destroy$.next();\n this.codeChange$.complete();\n this.configChanged$.complete();\n }\n\n save(config: HtmlWidget) {\n this.widgetConfigService.updateConfig({\n config\n });\n }\n\n changeCode(value: string) {\n this.codeChange$.next({ value, type: 'code' });\n }\n\n changeCss(value: string) {\n this.codeChange$.next({ value, type: 'css' });\n }\n\n enableAdvancedMode(currentConfig: HtmlWidget) {\n const currentHTML = currentConfig?.code || INITIAL_HTML_FORMATTED;\n const currentCSS = currentConfig?.css || INITIAL_CSS_FORMATTED;\n const code = currentConfig?.legacy\n ? legacyTemplate(\n currentHTML,\n this.widgetConfigService.currentConfig?.device?.id,\n this.widgetConfigService.currentConfig?.device?.name\n )\n : webComponentTemplate(currentHTML, currentCSS, false);\n currentConfig = {\n css: '',\n code,\n legacy: false,\n devMode: true,\n options: {\n cssEncapsulation: false,\n advancedSecurity: false\n }\n };\n return currentConfig;\n }\n\n initDefaultMode(advancedSecurity = true): HtmlWidget {\n return {\n css: INITIAL_CSS_FORMATTED,\n code: INITIAL_HTML_FORMATTED,\n legacy: false,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity\n }\n };\n }\n\n private mapLegacyConfig(current: ContextWidgetConfig): HtmlWidget {\n const isAlreadyInAdvancedMode = current?.config?.devMode === true;\n if (isAlreadyInAdvancedMode) {\n return current.config as HtmlWidget;\n }\n\n const isAlreadyMapped = current?.config?.legacy === true;\n if (isAlreadyMapped) {\n return current.config as HtmlWidget;\n }\n\n return {\n code: current.html,\n css: '',\n legacy: true,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity: current.sanitization === 'strict'\n }\n };\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslatePipe, IconDirective, Permissions } from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { HtmlWidgetConfigService } from '../html-widget-config.service';\nimport { HtmlWidgetConfig, HtmlWidgetOptions } from '../html-widget.model';\n\n@Component({\n standalone: true,\n imports: [IconDirective, NgIf, TooltipModule, PopoverModule, C8yTranslatePipe, FormsModule],\n selector: 'c8y-html-widget-advanced-settings',\n templateUrl: './advanced-settings.component.html'\n})\nexport class AdvancedSettingsComponent {\n widgetConfigService = inject(WidgetConfigService);\n htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n router = inject(Router);\n permissionService = inject(Permissions);\n\n canChangeSettings = false;\n @Input()\n devMode: boolean;\n @Input()\n cssEncapsulation: boolean;\n\n CSS_ENCAPSULATION_HELP_CONTEXT = gettext(\n 'If enabled, the CSS will be encapsulated and no platform styling will be applied.'\n );\n\n ngOnInit(): void {\n this.canChangeSettings = this.permissionService.hasAnyRole([\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN,\n Permissions.ROLE_TENANT_ADMIN\n ]);\n }\n\n disableAdvancedMode() {\n const config = this.htmlWidgetConfigService.initDefaultMode();\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n\n enableAdvancedMode() {\n let { config } = this.widgetConfigService.currentConfig as HtmlWidgetConfig;\n config = this.htmlWidgetConfigService.enableAdvancedMode(config);\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n\n toggleAdvancedMode() {\n this.devMode ? this.disableAdvancedMode() : this.enableAdvancedMode();\n this.devMode = !this.devMode;\n }\n\n async changeOption(option: keyof HtmlWidgetOptions) {\n const { config } = this.widgetConfigService.currentConfig as HtmlWidgetConfig;\n config.options[option] = !config.options[option];\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n}\n","<fieldset class=\"c8y-fieldset m-t-0\">\n <legend>{{ 'Developer mode' | translate }}</legend>\n\n <div class=\"d-flex a-i-center p-b-16\">\n <label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n [ngModel]=\"devMode\"\n (change)=\"toggleAdvancedMode()\"\n [disabled]=\"!canChangeSettings\"\n />\n <span></span>\n <span>{{ 'Advanced developer mode' | translate }}</span>\n </label>\n\n <button class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"devMode ? disableAdvanced : enableAdvanced\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n\n <ng-template #enableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n <i [c8yIcon]=\"'imac-settings'\"></i>\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n Create custom widgets by modifying a basic WebComponent with HTML and JavaScript. This\n <strong>unsupported</strong>\n feature is ideal for rapid prototyping and simple customizations.\n </p>\n <p class=\"p-b-8\" translate>\n For production environments, we recommend our fully-supported Angular-based\n <a href=\"https://styleguide.cumulocity.com\" target=\"_blank\">Web SDK</a>.\n <br />\n Enable advanced developer mode to start coding!\n </p>\n </ng-template>\n\n <ng-template #disableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n The advanced developer mode is enabled for this widget allowing to build extensive Web\n Components.\n </p>\n <p class=\"p-b-8\" translate>\n You can disable this mode again, but it will reset the current code.\n </p>\n </ng-template>\n\n <ng-container *ngIf=\"!devMode\">\n <label\n class=\"c8y-switch m-l-auto\"\n >\n <input\n type=\"checkbox\"\n (change)=\"changeOption('cssEncapsulation')\"\n [disabled]=\"!canChangeSettings\"\n [ngModel]=\"cssEncapsulation\"\n />\n <span></span>\n <span>{{ 'CSS encapsulation' | translate }}</span>\n </label>\n <button\n class=\"btn-help m-0\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CSS_ENCAPSULATION_HELP_CONTEXT | translate }}\"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n ></button>\n </ng-container>\n\n </div>\n</fieldset>\n","import { AsyncPipe, JsonPipe, NgClass } from '@angular/common';\nimport { Component, inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport {\n C8yTranslatePipe,\n ListGroupComponent,\n ListItemBodyComponent,\n ListItemCollapseComponent,\n ListItemComponent,\n ListItemIconComponent,\n MarkdownToHtmlPipe\n} from '@c8y/ngx-components';\nimport { AgentStep } from '@c8y/ngx-components/ai';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { HtmlWidgetConfigService } from './html-widget-config.service';\n\n@Component({\n selector: 'c8y-html-ai-chat-feedback',\n templateUrl: './html-ai-chat-feedback.component.html',\n imports: [\n ListGroupComponent,\n ListItemComponent,\n ListItemCollapseComponent,\n ListItemBodyComponent,\n ListItemIconComponent,\n NgClass,\n JsonPipe,\n MarkdownToHtmlPipe,\n TooltipDirective,\n AsyncPipe,\n C8yTranslatePipe\n ],\n standalone: true,\n host: { class: 'agent-step-feedback' }\n})\nexport class HtmlAiChatFeedbackComponent implements OnInit, OnChanges {\n @Input({ required: true }) step: AgentStep;\n /**\n * The label to display for the feedback section.\n */\n label: string;\n /**\n * Indicates whether the feedback section is in a loading state.\n */\n loading = false;\n /**\n * Indicates whether the detailed feedback section is collapsed.\n */\n collapsed = true;\n /**\n * Indicates whether the feedback section can be collapsed.\n */\n canCollapse = false;\n /**\n * The code extracted from the agent step (if any).\n */\n code = '';\n /**\n * The text before the code block (if any).\n */\n textBeforeCode = '';\n /**\n * The text after the code block (if any).\n */\n textAfterCode = '';\n\n private readonly codeTag = 'c8y-code-extract';\n private readonly htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n if (this.step) {\n this.parseAgentStep(this.step);\n }\n }\n\n /**\n * @ignore\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.step) {\n this.parseAgentStep(changes.step.currentValue);\n }\n }\n\n /**\n * Parse the agent step. Extracts the code block if present and updates the state accordingly.\n * @param step The agent step to parse.\n */\n parseAgentStep(step: AgentStep): void {\n if (step.aborted) {\n queueMicrotask(() => {\n this.loading = false;\n });\n }\n if (step.reasoning) {\n this.label = gettext('Reasoning');\n this.loading = false;\n this.canCollapse = true;\n this.collapsed = false;\n }\n\n if (step.toolCalls?.length > 0 && !step.toolResults?.length) {\n this.label = gettext('Analyzing query…');\n this.loading = true;\n this.canCollapse = false;\n this.collapsed = true;\n } else if (step.toolResults?.length > 0) {\n this.label = gettext('Query analyzed.');\n this.loading = false;\n this.canCollapse = true;\n this.collapsed = true;\n }\n\n this.parseCodeBlock(step);\n }\n\n /**\n * Revert to the last applied code.\n */\n revert() {\n this.applyCurrentCode();\n }\n\n private parseCodeBlock(step: AgentStep) {\n const text = step.text;\n const codeBlockStart = text.lastIndexOf(`<${this.codeTag}>`);\n const codeBlockEnd = text.lastIndexOf(`</${this.codeTag}>`);\n const codeBlockStartLength = this.codeTag.length + 2;\n const codeBlockEndLength = this.codeTag.length + 3;\n if (codeBlockStart !== -1) {\n this.code = text.substring(codeBlockStart + codeBlockStartLength);\n this.textBeforeCode = text.substring(0, codeBlockStart + codeBlockStartLength);\n this.label = gettext('Creating widget…');\n this.loading = true;\n this.canCollapse = true;\n this.collapsed = true;\n }\n if (codeBlockEnd !== -1) {\n this.label = gettext('Widget created');\n this.code = text.substring(codeBlockStart + codeBlockStartLength, codeBlockEnd);\n this.loading = false;\n this.textAfterCode = text.substring(codeBlockEnd + codeBlockEndLength);\n this.canCollapse = true;\n this.collapsed = true;\n this.applyCurrentCode();\n }\n }\n\n private applyCurrentCode() {\n const newConfig = {\n code: this.code,\n css: '',\n devMode: true,\n legacy: false,\n options: { advancedSecurity: false, cssEncapsulation: false }\n };\n this.htmlWidgetConfigService.configChanged$.next(newConfig);\n this.htmlWidgetConfigService.widgetConfigService.updateConfig({ config: newConfig }, true);\n }\n}\n","@if (!step.reasoning && !code) {\n <div [innerHTML]=\"step.text | markdownToHtml | async\"></div>\n}\n@if (code) {\n <div [innerHTML]=\"textBeforeCode | markdownToHtml | async\"></div>\n}\n@if (label) {\n <c8y-list-group class=\"m-t-16 m-b-16\">\n <c8y-li\n [active]=\"!loading\"\n [collapsed]=\"collapsed\"\n >\n <c8y-li-icon>\n <span\n class=\"btn-ai btn-ai-hint btn-sm\"\n [ngClass]=\"{ working: loading }\"\n >\n <span></span>\n </span>\n </c8y-li-icon>\n <c8y-li-body>\n {{ label }}\n </c8y-li-body>\n\n @if (canCollapse) {\n <c8y-li-collapse>\n @if (step.reasoning) {\n <div [innerHTML]=\"step.reasoning | markdownToHtml | async\"></div>\n } @else if (code) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ code }}</pre\n >\n @if (!loading) {\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Revert to this version' | translate\"\n [tooltip]=\"'Revert to this version' | translate\"\n container=\"body\"\n (click)=\"revert()\"\n >\n <i c8yIcon=\"undo\"></i>\n </button>\n }\n } @else if (step) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ step | json }}</pre\n >\n }\n </c8y-li-collapse>\n }\n </c8y-li>\n </c8y-list-group>\n}\n\n@if (code) {\n <div [innerHTML]=\"textAfterCode | markdownToHtml | async\"></div>\n}\n","import { NgClass, NgFor } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n SecurityContext,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { Alert } from '@c8y/ngx-components';\nimport { kebabCase } from 'lodash-es';\nimport {\n catchError,\n EMPTY,\n filter,\n from,\n fromEvent,\n isEmpty,\n map,\n merge,\n Observable,\n Subject,\n switchMap,\n takeUntil\n} from 'rxjs';\nimport { defaultWebComponentName, HtmlWidget, WebcomponentContext } from '../html-widget.model';\nimport { webComponentTemplate } from '../webcomponent-template';\nimport { legacyTemplate } from '../legacy-template';\n\n@Component({\n standalone: true,\n imports: [NgFor, NgClass],\n selector: 'c8y-html-frame',\n templateUrl: './html-frame.component.html',\n host: { class: 'd-contents' }\n})\nexport class HtmlFrameComponent implements OnChanges, OnDestroy {\n @Input()\n config: HtmlWidget;\n\n @Input()\n device: IManagedObject | IIdentified;\n\n /**\n * If set to true, it will be ensured that a unique hash is generated\n * for every webcomponent. This is useful if configured as otherwise it might\n * happen that the same code is already used in another webcomponent and the\n * error messages can not be assigned correctly.\n */\n @Input()\n useSalt = false;\n\n alerts: Alert[] = [];\n\n private sanitizer = inject(DomSanitizer);\n private destroy$ = new Subject<void>();\n private hostElement = viewChild<ElementRef<HTMLDivElement>>('hostElement');\n private reload$ = new Subject<void>();\n private latestUrl?: string;\n private htmlContentInitialization$ = this.reload$.pipe(\n filter(() => !!this.hostElement()),\n map(() => this.hostElement().nativeElement),\n switchMap((div: HTMLDivElement) =>\n merge(\n this.listenToErrors(),\n from(this.initDiv(div)).pipe(\n isEmpty(),\n filter(isEmpty => !!isEmpty),\n catchError(error => from([{ text: error, type: 'danger' }]))\n )\n )\n ),\n filter(alert => !!alert),\n takeUntil(this.destroy$)\n );\n private inventoryService = inject(InventoryService);\n\n constructor() {\n this.htmlContentInitialization$.pipe(takeUntil(this.destroy$)).subscribe((alert: Alert) => {\n this.alerts.push(alert);\n console.error(alert.text);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.config?.currentValue ||\n (this.config && changes.device?.previousValue !== changes.device?.currentValue)\n ) {\n this.reloadComponent();\n }\n }\n\n reloadComponent() {\n this.alerts = [];\n const div = this.hostElement();\n div.nativeElement.innerHTML = '';\n this.reload$.next();\n }\n\n async initDiv(divHostElement: HTMLDivElement) {\n const code = this.getCode();\n const hash = await this.generateHash(code, this.useSalt);\n const webComponentName = kebabCase(defaultWebComponentName) + hash;\n const context: IManagedObject = await this.getContext(this.device);\n\n if (customElements.get(webComponentName)) {\n return this.createWebComponent(webComponentName, divHostElement, context);\n }\n\n const url = this.generateUrl(code);\n const defaultModule = await this.loadScript(url);\n\n // if the default module is a string, we will not use a webcomponent\n // instead we will simply parse the string and add it to the div\n // this is the case for legacy HTML widgets\n if (typeof defaultModule.default === 'string') {\n divHostElement.innerHTML = defaultModule.default;\n return EMPTY;\n }\n\n // same goes for an HTML Element\n if (defaultModule.default instanceof HTMLElement) {\n divHostElement.appendChild(defaultModule.default);\n\n // Find and execute scripts\n const scripts = divHostElement.querySelectorAll('script');\n scripts.forEach(script => {\n const newScript = document.createElement('script');\n Array.from(script.attributes).forEach(attr => {\n newScript.setAttribute(attr.name, attr.value);\n });\n newScript.textContent = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n });\n return EMPTY;\n }\n\n // as a race condition can happen on loading, we need\n // to check again if the web component is already defined\n if (!customElements.get(webComponentName)) {\n customElements.define(webComponentName, defaultModule.default);\n }\n this.createWebComponent(webComponentName, divHostElement, context);\n return EMPTY;\n }\n\n private async getContext(\n device: IManagedObject | IIdentified | undefined\n ): Promise<IManagedObject> {\n if (!device) {\n return;\n }\n\n if (!device.self) {\n const { data } = await this.inventoryService.detail(device.id);\n return data;\n }\n return device as IManagedObject;\n }\n\n private async loadScript(url: string): Promise<{ default: any }> {\n const module = await import(/* webpackIgnore: true */ url);\n if (!module.default) {\n throw 'No default export found. Add an \"export default\" statement to your code.';\n }\n\n return module;\n }\n\n private generateUrl(script: string): string {\n const blob = new Blob([script], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n if (this.latestUrl) {\n URL.revokeObjectURL(this.latestUrl);\n }\n this.latestUrl = url;\n return url;\n }\n\n private listenToErrors(): Observable<Alert> {\n const errorEvents$ = fromEvent<ErrorEvent>(window, 'error').pipe(\n filter(event => event.filename?.includes(this.latestUrl)),\n map(event => this.mapErrorEventToAlert(event))\n );\n\n const rejectionEvents$ = fromEvent<PromiseRejectionEvent>(window, 'unhandledrejection').pipe(\n filter(event => event.reason?.stack?.includes(this.latestUrl)),\n map(event => this.mapErrorEventToAlert(event)),\n takeUntil(this.destroy$)\n );\n\n return merge(errorEvents$, rejectionEvents$);\n }\n\n private createWebComponent(\n webComponentName: string,\n divHostElement: HTMLDivElement,\n context: IManagedObject\n ) {\n const webComponent: WebcomponentContext = document.createElement<any>(webComponentName);\n webComponent.c8yContext = context;\n divHostElement.appendChild(webComponent);\n return webComponent;\n }\n\n private mapErrorEventToAlert(event: PromiseRejectionEvent | ErrorEvent): Alert {\n const hasReason = 'reason' in event;\n if (hasReason && event.reason?.name === ReferenceError.name) {\n const undefinedVar = event.reason.message.split(' ')[0];\n return { text: undefinedVar + ' is not defined', type: 'info' };\n }\n return { text: hasReason ? event.reason.message : event.message, type: 'danger' };\n }\n\n private getCode() {\n const isDevMode = this.config.devMode;\n if (isDevMode) {\n return this.config.code;\n }\n return this.createDefaultWebcomponentCode();\n }\n\n private async generateHash(value: string, useSalt: boolean): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(value + (useSalt ? Math.random() : ''));\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n private createDefaultWebcomponentCode(): string {\n if (this.config.legacy) {\n const legacyWebComponent = legacyTemplate(\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.HTML, this.config.code)\n : this.config.code,\n this.device?.id,\n this.device?.name\n );\n return legacyWebComponent;\n }\n\n const webComponentScript = webComponentTemplate(\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.HTML, this.config.code)\n : this.config.code,\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.STYLE, this.config.css)\n : this.config.css,\n this.config.options.cssEncapsulation\n );\n return webComponentScript;\n }\n}\n","<ng-container *ngFor=\"let alert of alerts\">\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n</ng-container>\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n","import { Component, inject, Input, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { C8yTranslatePipe, IconDirective, LoadingComponent, TabsModule } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { WidgetConfigFeedbackComponent } from '@c8y/ngx-components/context-dashboard';\nimport { EditorComponent } from '@c8y/ngx-components/editor';\nimport type * as Monaco from 'monaco-editor';\nimport { Subject } from 'rxjs';\nimport { HtmlWidgetConfigService } from '../html-widget-config.service';\nimport { HtmlWidget } from '../html-widget.model';\nimport { AdvancedSettingsComponent } from '../advanced-settings/advanced-settings.component';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\n@Component({\n standalone: true,\n imports: [\n EditorComponent,\n FormsModule,\n IconDirective,\n C8yTranslatePipe,\n WidgetConfigFeedbackComponent,\n TabsModule,\n TooltipModule,\n PopoverModule,\n LoadingComponent,\n AdvancedSettingsComponent\n ],\n selector: 'c8y-widget-code-editor',\n templateUrl: './widget-code-editor.component.html'\n})\nexport class WidgetCodeEditorComponent implements OnDestroy {\n @Input()\n mode: 'code' | 'css' = 'code';\n\n @Input()\n config: HtmlWidget;\n\n @ViewChild(EditorComponent) editorComponent!: EditorComponent;\n\n configService = inject(HtmlWidgetConfigService);\n\n editor: Monaco.editor.IStandaloneCodeEditor;\n isAutoSaveEnabled = true;\n language: 'html' | 'css' | 'javascript' = 'html';\n value: string;\n isLoading = false;\n\n readonly TAB_WEBCOMPONENT_LABEL = gettext('Web Component`Tab label of HTML Widget`');\n readonly TAB_HTML_LABEL = gettext('HTML`Tab label of HTML Widget`');\n readonly TAB_CSS_LABEL = gettext('CSS`Tab label of HTML Widget`');\n readonly BUTTON_DISABLE_AUTOSAVE_LABEL = gettext(\n 'Disable auto save`An action you can do on the html widget editor`'\n );\n readonly BUTTON_ENABLE_AUTOSAVE_LABEL = gettext(\n 'Enable auto save`An action you can do on the html widget editor`'\n );\n readonly TAB_OUTLET_NAME = 'html-widget-tab-outlet';\n\n private destroy$ = new Subject<void>();\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.config) {\n this.changeCode(this.config.code);\n }\n\n if (changes.config?.currentValue) {\n this.loadCode();\n }\n }\n\n loadCode() {\n this.isLoading = true;\n const isInDevMode = this.config?.devMode;\n this.language = 'html';\n\n if (isInDevMode) {\n this.language = 'javascript';\n }\n\n if (this.mode === 'css') {\n this.language = 'css';\n }\n\n this.value = this.mode === 'code' ? this.config.code : this.config.css;\n\n this.isLoading = false;\n\n if (this.editor) {\n queueMicrotask(() => this.formatCode());\n }\n }\n\n switchMode(mode: 'code' | 'css') {\n this.mode = mode;\n this.loadCode();\n }\n\n editorLoaded(editor: Monaco.editor.IStandaloneCodeEditor) {\n this.editor = editor;\n const monaco = this.editorComponent.monaco;\n this.editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => {\n this.saveCode();\n });\n }\n\n formatCode() {\n this.editor.getAction('editor.action.formatDocument').run();\n }\n\n redo() {\n this.editor.trigger('keyboard', 'redo', null);\n }\n\n undo() {\n this.editor.trigger('keyboard', 'undo', null);\n }\n\n changeCode($event: string) {\n if (this.isAutoSaveEnabled) {\n this.saveCode($event);\n }\n }\n\n saveCode(codeStr?: string) {\n const code = codeStr || this.editor.getValue();\n if (this.mode === 'code') {\n this.configService.changeCode(code);\n return;\n }\n this.configService.changeCss(code);\n }\n}\n","<c8y-widget-config-feedback>\n <div class=\"d-flex\">\n @if (config?.devMode && !config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n translate\n >\n Advanced developer mode\n </span>\n }\n </div>\n <div class=\"d-flex\">\n @if (config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n [title]=\"\n 'This widget is in legacy mode. Consider to upgrade this to a new HTML widget. Read our documentation on details to transform your widget'\n | translate\n \"\n translate\n >\n Legacy mode\n </span>\n }\n </div>\n</c8y-widget-config-feedback>\n\n<div class=\"d-flex d-col fit-h fit-w\">\n <c8y-html-widget-advanced-settings\n [devMode]=\"config?.devMode\"\n [cssEncapsulation]=\"config?.options?.cssEncapsulation\"\n ></c8y-html-widget-advanced-settings>\n\n <fieldset class=\"c8y-fieldset p-0 overflow-hidden\">\n <legend class=\"m-l-16 p-l-0\">{{ 'Code' | translate }}</legend>\n\n <div class=\"btn-group btn-group-sm m-l-0 p-t-8 p-b-8 p-l-16 p-r-16 fit-w d-flex\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"'Undo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"undo()\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"'Redo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"redo()\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Format code' | translate\"\n [tooltip]=\"'Format code' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"formatCode()\"\n >\n <i [c8yIcon]=\"'format-align-left'\"></i>\n </button>\n\n <label class=\"c8y-switch m-l-auto\">\n <input\n type=\"checkbox\"\n [checked]=\"isAutoSaveEnabled\"\n (change)=\"isAutoSaveEnabled = !isAutoSaveEnabled\"\n />\n <span></span>\n <span translate>Auto save</span>\n </label>\n </div>\n\n <div\n class=\"btn-toolbar m-0 p-relative\"\n role=\"toolbar\"\n >\n <c8y-tabs-outlet\n class=\"elevation-none\"\n [outletName]=\"TAB_OUTLET_NAME\"\n [orientation]=\"'horizontal'\"\n [openFirstTab]=\"false\"\n ></c8y-tabs-outlet>\n <c8y-tab\n [icon]=\"'code'\"\n [label]=\"(config?.devMode ? TAB_WEBCOMPONENT_LABEL : TAB_HTML_LABEL) | translate\"\n [priority]=\"100\"\n [showAlways]=\"true\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'code'\"\n (onSelect)=\"switchMode('code')\"\n ></c8y-tab>\n @if (!config?.devMode && !config?.legacy) {\n <c8y-tab\n [icon]=\"'c8y-css'\"\n [label]=\"TAB_CSS_LABEL | translate\"\n [priority]=\"0\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'css'\"\n (onSelect)=\"switchMode('css')\"\n ></c8y-tab>\n }\n </div>\n\n @if (!isLoading) {\n @if (!(mode === 'css' && config?.devMode)) {\n <c8y-editor\n class=\"flex-grow d-block\"\n style=\"height: 450px\"\n [ngModel]=\"value\"\n (ngModelChange)=\"changeCode($event)\"\n [editorOptions]=\"{\n language,\n tabSize: 2,\n insertSpaces: true,\n minimap: { enabled: false }\n }\"\n (editorInit)=\"editorLoaded($event)\"\n ></c8y-editor>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n </fieldset>\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { OptionsService } from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { HtmlFrameComponent } from './html-frame/html-frame.component';\nimport { HtmlWidgetConfigService } from './html-widget-config.service';\nimport { WidgetCodeEditorComponent } from './widget-code-editor-section/widget-code-editor.component';\n\n@Component({\n selector: 'c8y-html-widget-config',\n templateUrl: './html-widget-config.component.html',\n standalone: true,\n imports: [RouterModule, FormsModule, AsyncPipe, HtmlFrameComponent, WidgetCodeEditorComponent]\n})\nexport class HtmlWidgetConfigComponent implements OnDestroy {\n @ViewChild('htmlPreview')\n set htmlPreviewTemplate(template: TemplateRef<any>) {\n if (template) {\n this.widgetConfigService.setPreview(template);\n } else {\n this.widgetConfigService.setPreview(null);\n }\n }\n options = inject(OptionsService);\n htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n widgetConfigService = inject(WidgetConfigService);\n\n ngOnDestroy(): void {\n // sadly the service is component scoped\n // but still not recycled correctly. That is why we do\n // it here.\n this.htmlWidgetConfigService.destroy();\n }\n}\n","<c8y-widget-code-editor\n [config]=\"htmlWidgetConfigService.config$ | async\"\n [mode]=\"'code'\"\n></c8y-widget-code-editor>\n\n<ng-template #htmlPreview>\n <c8y-html-frame\n [config]=\"htmlWidgetConfigService.codeEditorChangeConfig$ | async\"\n [device]=\"(widgetConfigService.currentConfig$ | async).device\"\n [useSalt]=\"true\"\n ></c8y-html-frame>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { C8yTranslatePipe, ClipboardService } from '@c8y/ngx-components';\nimport {\n AssetPropertyActionDirective,\n AssetPropertyListComponent,\n AssetPropertyType\n} from '@c8y/ngx-components/asset-properties';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n selector: 'c8y-html-widget-properties-selector',\n templateUrl: './html-widget-properties-selector.component.html',\n host: {\n class: 'bg-level-1'\n },\n standalone: true,\n imports: [\n AssetPropertyListComponent,\n AssetPropertyActionDirective,\n AsyncPipe,\n C8yTranslatePipe,\n PopoverModule,\n TooltipModule\n ]\n})\nexport class HtmlWidgetPropertiesSelectorComponent {\n widgetConfigService = inject(WidgetConfigService);\n clipboardService = inject(ClipboardService);\n\n /**\n * Copies the property path to the clipboard in a format suitable for use in HTML widget.\n * For nested properties, it uses the keyPath to create a path to nested property.\n * @param context The context containing the property information.\n */\n async copyProperty(context: AssetPropertyType) {\n const nonAlphanumericRegex = /[^a-zA-Z0-9]/;\n let path: string;\n if (context.keyPath) {\n path = context.keyPath\n .map(key => (nonAlphanumericRegex.test(key) ? `['${key}']` : `.${key}`))\n .join('');\n } else {\n path = nonAlphanumericRegex.test(context.name) ? `['${context.name}']` : `.${context.name}`;\n }\n const content = '${this.c8yContext' + path + '}';\n await this.clipboardService.writeText(content);\n }\n}\n","<div\n class=\"d-flex m-b-8\"\n style=\"margin-top: -16px\"\n>\n <em\n class=\"m-l-24 text-muted\"\n translate\n >\n How to use properties in the widget\n </em>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n</div>\n<c8y-asset-property-list\n class=\"inner-scroll bg-inherit d-block\"\n style=\"max-height: 450px\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).device\"\n [config]=\"{\n selectMode: 'none',\n expansionMode: 'expandedByDefault',\n filterable: false,\n allowDragAndDrop: true\n }\"\n>\n <button\n class=\"btn-dot btn fit-h\"\n [attr.aria-label]=\"'Copy' | translate\"\n tooltip=\"{{ 'Copy' | translate }}\"\n type=\"button\"\n *c8yAssetPropertyAction=\"let context\"\n [delay]=\"500\"\n (click)=\"copyProperty(context)\"\n >\n <i class=\"dlt-c8y-icon-copy\"></i>\n </button>\n</c8y-asset-property-list>\n\n<ng-template #helpContent>\n <p\n class=\"p-b-8\"\n translate\n >\n Click the copy icon next to a property, then paste it into the HTML editor below as a template\n literal.\n </p>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { HtmlFrameComponent } from './html-frame/html-frame.component';\nimport { HtmlWidget, HtmlWidgetConfig } from './html-widget.model';\n\n@Component({\n selector: 'c8y-html-widget',\n templateUrl: './html-widget.component.html',\n standalone: true,\n imports: [RouterModule, HtmlFrameComponent]\n})\nexport class HtmlWidgetComponent {\n @Input() config: HtmlWidgetConfig;\n\n ngOnInit(): void {\n if (this.config.html && !this.config.config) {\n this.config.config = this.mapLegacyConfig(this.config);\n }\n }\n\n private mapLegacyConfig(current: ContextWidgetConfig): HtmlWidget {\n const isAlreadyInAdvancedMode = current?.config?.devMode === true;\n if (isAlreadyInAdvancedMode) {\n return current.config as HtmlWidget;\n }\n return {\n code: current.html,\n css: '',\n legacy: true,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity: current.sanitization === 'strict'\n }\n };\n }\n}\n","<c8y-html-frame\n [config]=\"config.config\"\n [device]=\"config.device\"\n></c8y-html-frame>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isEmpty","i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-widgets-implementations-html-widget.mjs","sources":["../../widgets/implementations/html-widget/html-widget.model.ts","../../widgets/implementations/html-widget/webcomponent-template.ts","../../widgets/implementations/html-widget/legacy-template.ts","../../widgets/implementations/html-widget/html-widget-config.service.ts","../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.ts","../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.html","../../widgets/implementations/html-widget/html-ai-chat-feedback.component.ts","../../widgets/implementations/html-widget/html-ai-chat-feedback.component.html","../../widgets/implementations/html-widget/html-frame/html-frame.component.ts","../../widgets/implementations/html-widget/html-frame/html-frame.component.html","../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.ts","../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.html","../../widgets/implementations/html-widget/html-widget-config.component.ts","../../widgets/implementations/html-widget/html-widget-config.component.html","../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.ts","../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.html","../../widgets/implementations/html-widget/html-widget.component.ts","../../widgets/implementations/html-widget/html-widget.component.html","../../widgets/implementations/html-widget/c8y-ngx-components-widgets-implementations-html-widget.ts"],"sourcesContent":["import type { IIdentified, IManagedObject } from '@c8y/client';\nimport type { WidgetSettings } from '@c8y/ngx-components';\nimport type { InterpolationParameters, Translation } from '@ngx-translate/core';\n\nexport interface HtmlWidgetConfig {\n device?: IIdentified | null;\n config: HtmlWidget;\n settings?: WidgetSettings;\n\n /**\n * On HTML WIdget 1.0 this property was used to store the HTML code.\n * It is not used anymore, but we need to keep it for backward compatibility.\n * The HTML code is now stored in the config property.\n * @deprecated Use config.code instead.\n */\n html?: any;\n}\n\nexport type C8yProperties = Array<PathProperty | ComputedProperty>;\n\nexport interface HtmlWidget {\n css: string;\n code: string;\n props?: C8yProperties;\n options: HtmlWidgetOptions;\n legacy: boolean;\n devMode: boolean;\n latestCodeHash?: string;\n}\n\nexport interface HtmlWidgetOptions {\n cssEncapsulation: boolean;\n advancedSecurity: boolean;\n}\n\nexport interface WebcomponentContext extends HTMLElement {\n c8yContext: IManagedObject;\n c8yTranslate: (\n key: string | string[],\n interpolateParams?: InterpolationParameters\n ) => Translation;\n}\n\nexport interface PathProperty {\n name: string;\n path: string;\n query?: never;\n reducer?: never;\n}\n\nexport interface ComputedProperty {\n name: string;\n path?: never;\n query: string;\n reducer?: string;\n}\n\nexport const INITIAL_HTML_FORMATTED = `<div>\n <h2>Hello from <span class=\"branded\">HTML widget</span></h2>\n <p class=\"m-b-8 m-t-16\">\n \\$\\{this.c8yTranslate('You can use HTML and Javascript template literals here:')\\} <br>\n \\$\\{this.c8yContext ? this.c8yTranslate('Device {{deviceName}} selected', { deviceName: this.c8yContext.name }) : this.c8yTranslate('No device selected')\\}\n </p>\n\n <a class=\"btn btn-primary m-b-16\" href=\"#/group\">\\$\\{this.c8yTranslate('Go to groups')\\}</a>\n\n <p>\n Use the CSS editor to customize the CSS. You can use <span class=\"text-bold\">any design-token CSS variable</span> in there.\n </p>\n\n <p>\n Note that you are only able to translate strings using the c8yTranslate method if they are written in English and their translations are available in the loaded standard or custom translation resources.\n </p>\n</div>`;\nexport const INITIAL_CSS_FORMATTED = `\n:host > div {\n padding: var(--c8y-root-component-padding-default);\n}\nspan.branded { \n color: var(--brand-primary, var(--c8y-brand-primary)); \n}`;\n\nexport const defaultWebComponentName = 'DefaultWebComponent';\n\nexport const defaultWebComponentAttributeNameContext = 'c8yContext';\n","import { defaultWebComponentName } from './html-widget.model';\n\nexport const webComponentTemplate = (\n html: string,\n css?: string,\n viewEncapsulation?: boolean,\n name = defaultWebComponentName\n) => `\nimport { LitElement, html, css} from 'lit';\n${!viewEncapsulation ? `import { styleImports } from 'styles';` : ''}\n\nexport default class ${name} extends LitElement {\n static styles = css\\`\n ${css}\n \\`;\n\n static properties = {\n // The managed object this widget is assigned to. Can be null.\n c8yContext: { type: Object },\n };\n\n constructor() {\n super();\n }\n\n render() {\n return html\\`${\n viewEncapsulation\n ? html\n : `\n <style>\n \\${styleImports}\n </style>\n ${html}\n `\n }\\`;\n }\n}\n`;\n","export const legacyTemplate = (html: string, deviceId?: string | number, deviceName?: string) => {\n const escapedHtml = html\n // Finds: \\ Replaces with: \\\\\n .replace(/\\\\/g, '\\\\\\\\')\n // Finds: ` Replaces with: \\`\n .replace(/`/g, '\\\\`')\n // Finds: $ Replaces with: \\$\n .replace(/\\$/g, '\\\\$');\n\n return `\nimport { angular } from 'angular';\n\n// NOTE: This is a legacy template for the HTML widget.\n// It is used to compile the HTML content in the context of the AngularJS application.\n// The template is injected into the AngularJS application and compiled using the AngularJS compiler.\n// The template should only be used for backward compatibility purposes.\n// It is recommended to use a web component instead.\n\nif(!angular) {\n throw new Error('AngularJS is not available. Please make sure to include AngularJS in your project.');\n}\n\nconst $injector = angular.element(document.querySelector('c8y-ui-root')).injector();\nif (!$injector) {\n throw new Error('AngularJS injector is not available. Maybe not an hybrid application?');\n}\n\n// defining a new scope\nconst $rootScope = $injector.get('$rootScope');\nconst $scope = $rootScope.$new(true); \n\n// faking the old angularjs config \n$scope.child = { \n config: {\n ${deviceId ? `device: { id: \"${deviceId}\", name: \"${deviceName}\" },` : ''}\n html: \\`<div ng-controller=\"HtmlWidgetCtrl\">${escapedHtml}</div>\\`\n }\n};\n\n// load the needed services\nconst $compile = $injector.get('$compile');\nconst $controller = $injector.get('$controller');\n\n// create the element\nconst htmlElement = angular.element($scope.child.config.html);\n\n// The default controller providing the context\n$controller('HtmlWidgetCtrl', { $scope });\n\n// Compile the element\n$compile(htmlElement)($scope);\n\n// Apply the scope changes\n$rootScope.$apply();\n\nexport default htmlElement[0];`;\n};\n","import { inject, Injectable } from '@angular/core';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { CockpitConfig } from '@c8y/ngx-components/cockpit-config';\nimport { ContextWidgetConfig, WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { isEmpty } from 'lodash';\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n first,\n map,\n Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n switchMap,\n takeUntil,\n withLatestFrom\n} from 'rxjs';\nimport { HtmlWidget, INITIAL_CSS_FORMATTED, INITIAL_HTML_FORMATTED } from './html-widget.model';\nimport { webComponentTemplate } from './webcomponent-template';\nimport { legacyTemplate } from './legacy-template';\n\n@Injectable()\nexport class HtmlWidgetConfigService {\n readonly DEFAULT_AUTO_SAVE_DEBOUNCE = 1000;\n codeChange$ = new Subject<{ value: string; type: 'css' | 'code' }>();\n widgetConfigService = inject(WidgetConfigService);\n appState = inject(AppStateService);\n destroy$ = new Subject<void>();\n\n init$ = this.widgetConfigService.currentConfig$.pipe(\n first(),\n map(current => {\n if (current.html) {\n current.config = this.mapLegacyConfig(current);\n }\n\n return (current.config || {}) as HtmlWidget;\n }),\n filter(config => !!config),\n withLatestFrom(this.appState.currentApplicationConfig),\n switchMap(([widgetConfig, appConfig]) => this.initConfig(appConfig, widgetConfig)),\n shareReplay(),\n takeUntil(this.destroy$)\n );\n\n config$ = this.init$.pipe(switchMap(initValue => this.configChanged$.pipe(startWith(initValue))));\n\n codeEditorChangeConfig$ = combineLatest([\n this.codeChange$.pipe(startWith(undefined)),\n this.config$\n ]).pipe(\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n debounceTime(this.DEFAULT_AUTO_SAVE_DEBOUNCE),\n map(([change, config]) => {\n if (!change) {\n return config;\n }\n if (change.type === 'css') {\n config.css = change.value;\n } else {\n config.code = change.value;\n }\n return { ...config };\n })\n );\n\n configChanged$ = new Subject<HtmlWidget>();\n\n initConfig(appConfig: CockpitConfig, widgetConfig: HtmlWidget): Observable<HtmlWidget> {\n const defaultToAdvancedMode = appConfig?.htmlWidgetDefaultToAdvancedMode ?? false;\n const isEmptyConfig = isEmpty(widgetConfig);\n if (isEmptyConfig && !defaultToAdvancedMode) {\n widgetConfig = this.initDefaultMode(!appConfig?.htmlWidgetDisableSanitization);\n this.save(widgetConfig);\n return of(widgetConfig);\n }\n if (isEmptyConfig) {\n widgetConfig = this.enableAdvancedMode(widgetConfig);\n }\n\n // new config is needed to trigger ngOnChanges\n const newConfig = { ...widgetConfig };\n this.save(newConfig);\n return of(newConfig);\n }\n\n destroy(): void {\n this.destroy$.next();\n this.codeChange$.complete();\n this.configChanged$.complete();\n }\n\n save(config: HtmlWidget) {\n this.widgetConfigService.updateConfig({\n config\n });\n }\n\n changeCode(value: string) {\n this.codeChange$.next({ value, type: 'code' });\n }\n\n changeCss(value: string) {\n this.codeChange$.next({ value, type: 'css' });\n }\n\n enableAdvancedMode(currentConfig: HtmlWidget) {\n const currentHTML = currentConfig?.code || INITIAL_HTML_FORMATTED;\n const currentCSS = currentConfig?.css || INITIAL_CSS_FORMATTED;\n const code = currentConfig?.legacy\n ? legacyTemplate(\n currentHTML,\n this.widgetConfigService.currentConfig?.device?.id,\n this.widgetConfigService.currentConfig?.device?.name\n )\n : webComponentTemplate(currentHTML, currentCSS, false);\n currentConfig = {\n css: '',\n code,\n legacy: false,\n devMode: true,\n options: {\n cssEncapsulation: false,\n advancedSecurity: false\n }\n };\n return currentConfig;\n }\n\n initDefaultMode(advancedSecurity = true): HtmlWidget {\n return {\n css: INITIAL_CSS_FORMATTED,\n code: INITIAL_HTML_FORMATTED,\n legacy: false,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity\n }\n };\n }\n\n private mapLegacyConfig(current: ContextWidgetConfig): HtmlWidget {\n const isAlreadyInAdvancedMode = current?.config?.devMode === true;\n if (isAlreadyInAdvancedMode) {\n return current.config as HtmlWidget;\n }\n\n const isAlreadyMapped = current?.config?.legacy === true;\n if (isAlreadyMapped) {\n return current.config as HtmlWidget;\n }\n\n return {\n code: current.html,\n css: '',\n legacy: true,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity: current.sanitization === 'strict'\n }\n };\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslatePipe, IconDirective, Permissions } from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { HtmlWidgetConfigService } from '../html-widget-config.service';\nimport { HtmlWidgetConfig, HtmlWidgetOptions } from '../html-widget.model';\n\n@Component({\n standalone: true,\n imports: [IconDirective, NgIf, TooltipModule, PopoverModule, C8yTranslatePipe, FormsModule],\n selector: 'c8y-html-widget-advanced-settings',\n templateUrl: './advanced-settings.component.html'\n})\nexport class AdvancedSettingsComponent {\n widgetConfigService = inject(WidgetConfigService);\n htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n router = inject(Router);\n permissionService = inject(Permissions);\n\n canChangeSettings = false;\n @Input()\n devMode: boolean;\n @Input()\n cssEncapsulation: boolean;\n\n CSS_ENCAPSULATION_HELP_CONTEXT = gettext(\n 'If enabled, the CSS will be encapsulated and no platform styling will be applied.'\n );\n\n ngOnInit(): void {\n this.canChangeSettings = this.permissionService.hasAnyRole([\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN,\n Permissions.ROLE_TENANT_ADMIN\n ]);\n }\n\n disableAdvancedMode() {\n const config = this.htmlWidgetConfigService.initDefaultMode();\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n\n enableAdvancedMode() {\n let { config } = this.widgetConfigService.currentConfig as HtmlWidgetConfig;\n config = this.htmlWidgetConfigService.enableAdvancedMode(config);\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n\n toggleAdvancedMode() {\n this.devMode ? this.disableAdvancedMode() : this.enableAdvancedMode();\n this.devMode = !this.devMode;\n }\n\n async changeOption(option: keyof HtmlWidgetOptions) {\n const { config } = this.widgetConfigService.currentConfig as HtmlWidgetConfig;\n config.options[option] = !config.options[option];\n this.htmlWidgetConfigService.save(config);\n this.htmlWidgetConfigService.configChanged$.next(config);\n }\n}\n","<fieldset class=\"c8y-fieldset m-t-0\">\n <legend>{{ 'Developer mode' | translate }}</legend>\n\n <div class=\"d-flex a-i-center p-b-16\">\n <label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n [ngModel]=\"devMode\"\n (change)=\"toggleAdvancedMode()\"\n [disabled]=\"!canChangeSettings\"\n />\n <span></span>\n <span>{{ 'Advanced developer mode' | translate }}</span>\n </label>\n\n <button class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"devMode ? disableAdvanced : enableAdvanced\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n\n <ng-template #enableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n <i [c8yIcon]=\"'imac-settings'\"></i>\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n Create custom widgets by modifying a basic WebComponent with HTML and JavaScript. This\n <strong>unsupported</strong>\n feature is ideal for rapid prototyping and simple customizations.\n </p>\n <p class=\"p-b-8\" translate>\n For production environments, we recommend our fully-supported Angular-based\n <a href=\"https://styleguide.cumulocity.com\" target=\"_blank\">Web SDK</a>.\n <br />\n Enable advanced developer mode to start coding!\n </p>\n </ng-template>\n\n <ng-template #disableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n The advanced developer mode is enabled for this widget allowing to build extensive Web\n Components.\n </p>\n <p class=\"p-b-8\" translate>\n You can disable this mode again, but it will reset the current code.\n </p>\n </ng-template>\n\n <ng-container *ngIf=\"!devMode\">\n <label\n class=\"c8y-switch m-l-auto\"\n >\n <input\n type=\"checkbox\"\n (change)=\"changeOption('cssEncapsulation')\"\n [disabled]=\"!canChangeSettings\"\n [ngModel]=\"cssEncapsulation\"\n />\n <span></span>\n <span>{{ 'CSS encapsulation' | translate }}</span>\n </label>\n <button\n class=\"btn-help m-0\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CSS_ENCAPSULATION_HELP_CONTEXT | translate }}\"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n ></button>\n </ng-container>\n\n </div>\n</fieldset>\n","import { AsyncPipe, JsonPipe, NgClass } from '@angular/common';\nimport { Component, inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport {\n C8yTranslatePipe,\n ListGroupComponent,\n ListItemBodyComponent,\n ListItemCollapseComponent,\n ListItemComponent,\n ListItemIconComponent,\n MarkdownToHtmlPipe\n} from '@c8y/ngx-components';\nimport { AgentStep } from '@c8y/ngx-components/ai';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { HtmlWidgetConfigService } from './html-widget-config.service';\n\n@Component({\n selector: 'c8y-html-ai-chat-feedback',\n templateUrl: './html-ai-chat-feedback.component.html',\n imports: [\n ListGroupComponent,\n ListItemComponent,\n ListItemCollapseComponent,\n ListItemBodyComponent,\n ListItemIconComponent,\n NgClass,\n JsonPipe,\n MarkdownToHtmlPipe,\n TooltipDirective,\n AsyncPipe,\n C8yTranslatePipe\n ],\n standalone: true,\n host: { class: 'agent-step-feedback' }\n})\nexport class HtmlAiChatFeedbackComponent implements OnInit, OnChanges {\n @Input({ required: true }) step: AgentStep;\n /**\n * The label to display for the feedback section.\n */\n label: string;\n /**\n * Indicates whether the feedback section is in a loading state.\n */\n loading = false;\n /**\n * Indicates whether the detailed feedback section is collapsed.\n */\n collapsed = true;\n /**\n * Indicates whether the feedback section can be collapsed.\n */\n canCollapse = false;\n /**\n * The code extracted from the agent step (if any).\n */\n code = '';\n /**\n * The text before the code block (if any).\n */\n textBeforeCode = '';\n /**\n * The text after the code block (if any).\n */\n textAfterCode = '';\n\n private readonly codeTag = 'c8y-code-extract';\n private readonly htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n if (this.step) {\n this.parseAgentStep(this.step);\n }\n }\n\n /**\n * @ignore\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.step) {\n this.parseAgentStep(changes.step.currentValue);\n }\n }\n\n /**\n * Parse the agent step. Extracts the code block if present and updates the state accordingly.\n * @param step The agent step to parse.\n */\n parseAgentStep(step: AgentStep): void {\n if (step.aborted) {\n queueMicrotask(() => {\n this.loading = false;\n });\n }\n if (step.reasoning) {\n this.label = gettext('Reasoning');\n this.loading = false;\n this.canCollapse = true;\n this.collapsed = false;\n }\n\n if (step.toolCalls?.length > 0 && !step.toolResults?.length) {\n this.label = gettext('Analyzing query…');\n this.loading = true;\n this.canCollapse = false;\n this.collapsed = true;\n } else if (step.toolResults?.length > 0) {\n this.label = gettext('Query analyzed.');\n this.loading = false;\n this.canCollapse = true;\n this.collapsed = true;\n }\n\n this.parseCodeBlock(step);\n }\n\n /**\n * Revert to the last applied code.\n */\n revert() {\n this.applyCurrentCode();\n }\n\n private parseCodeBlock(step: AgentStep) {\n const text = step.text;\n const codeBlockStart = text.lastIndexOf(`<${this.codeTag}>`);\n const codeBlockEnd = text.lastIndexOf(`</${this.codeTag}>`);\n const codeBlockStartLength = this.codeTag.length + 2;\n const codeBlockEndLength = this.codeTag.length + 3;\n if (codeBlockStart !== -1) {\n this.code = text.substring(codeBlockStart + codeBlockStartLength);\n this.textBeforeCode = text.substring(0, codeBlockStart + codeBlockStartLength);\n this.label = gettext('Creating widget…');\n this.loading = true;\n this.canCollapse = true;\n this.collapsed = true;\n }\n if (codeBlockEnd !== -1) {\n this.label = gettext('Widget created');\n this.code = text.substring(codeBlockStart + codeBlockStartLength, codeBlockEnd);\n this.loading = false;\n this.textAfterCode = text.substring(codeBlockEnd + codeBlockEndLength);\n this.canCollapse = true;\n this.collapsed = true;\n this.applyCurrentCode();\n }\n }\n\n private applyCurrentCode() {\n const newConfig = {\n code: this.code,\n css: '',\n devMode: true,\n legacy: false,\n options: { advancedSecurity: false, cssEncapsulation: false }\n };\n this.htmlWidgetConfigService.configChanged$.next(newConfig);\n this.htmlWidgetConfigService.widgetConfigService.updateConfig({ config: newConfig }, true);\n }\n}\n","@if (!step.reasoning && !code) {\n <div [innerHTML]=\"step.text | markdownToHtml | async\"></div>\n}\n@if (code) {\n <div [innerHTML]=\"textBeforeCode | markdownToHtml | async\"></div>\n}\n@if (label) {\n <c8y-list-group class=\"m-t-16 m-b-16\">\n <c8y-li\n [active]=\"!loading\"\n [collapsed]=\"collapsed\"\n >\n <c8y-li-icon>\n <span\n class=\"btn-ai btn-ai-hint btn-sm\"\n [ngClass]=\"{ working: loading }\"\n >\n <span></span>\n </span>\n </c8y-li-icon>\n <c8y-li-body>\n {{ label }}\n </c8y-li-body>\n\n @if (canCollapse) {\n <c8y-li-collapse>\n @if (step.reasoning) {\n <div [innerHTML]=\"step.reasoning | markdownToHtml | async\"></div>\n } @else if (code) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ code }}</pre\n >\n @if (!loading) {\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Revert to this version' | translate\"\n [tooltip]=\"'Revert to this version' | translate\"\n container=\"body\"\n (click)=\"revert()\"\n >\n <i c8yIcon=\"undo\"></i>\n </button>\n }\n } @else if (step) {\n <pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ step | json }}</pre\n >\n }\n </c8y-li-collapse>\n }\n </c8y-li>\n </c8y-list-group>\n}\n\n@if (code) {\n <div [innerHTML]=\"textAfterCode | markdownToHtml | async\"></div>\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n SecurityContext,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { Alert } from '@c8y/ngx-components';\nimport { kebabCase } from 'lodash-es';\nimport {\n catchError,\n EMPTY,\n filter,\n from,\n fromEvent,\n isEmpty,\n map,\n merge,\n Observable,\n Subject,\n switchMap,\n takeUntil\n} from 'rxjs';\nimport { defaultWebComponentName, HtmlWidget, WebcomponentContext } from '../html-widget.model';\nimport { webComponentTemplate } from '../webcomponent-template';\nimport { legacyTemplate } from '../legacy-template';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [NgClass],\n selector: 'c8y-html-frame',\n templateUrl: './html-frame.component.html',\n host: { class: 'd-contents' }\n})\nexport class HtmlFrameComponent implements OnChanges, OnDestroy {\n @Input()\n config: HtmlWidget;\n\n @Input()\n device: IManagedObject | IIdentified;\n\n /**\n * If set to true, it will be ensured that a unique hash is generated\n * for every webcomponent. This is useful if configured as otherwise it might\n * happen that the same code is already used in another webcomponent and the\n * error messages can not be assigned correctly.\n */\n @Input()\n useSalt = false;\n\n alerts: Alert[] = [];\n\n private sanitizer = inject(DomSanitizer);\n private translateService = inject(TranslateService);\n private destroy$ = new Subject<void>();\n private hostElement = viewChild<ElementRef<HTMLDivElement>>('hostElement');\n private reload$ = new Subject<void>();\n private latestUrl?: string;\n private htmlContentInitialization$ = this.reload$.pipe(\n filter(() => !!this.hostElement()),\n map(() => this.hostElement().nativeElement),\n switchMap((div: HTMLDivElement) =>\n merge(\n this.listenToErrors(),\n from(this.initDiv(div)).pipe(\n isEmpty(),\n filter(isEmpty => !!isEmpty),\n catchError(error => from([{ text: error, type: 'danger' }]))\n )\n )\n ),\n filter(alert => !!alert),\n takeUntil(this.destroy$)\n );\n private inventoryService = inject(InventoryService);\n\n constructor() {\n this.htmlContentInitialization$.pipe(takeUntil(this.destroy$)).subscribe((alert: Alert) => {\n this.alerts.push(alert);\n console.error(alert.text);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.config?.currentValue ||\n (this.config && changes.device?.previousValue !== changes.device?.currentValue)\n ) {\n this.reloadComponent();\n }\n }\n\n reloadComponent() {\n this.alerts = [];\n const div = this.hostElement();\n div.nativeElement.innerHTML = '';\n this.reload$.next();\n }\n\n async initDiv(divHostElement: HTMLDivElement) {\n const code = this.getCode();\n const hash = await this.generateHash(code, this.useSalt);\n const webComponentName = kebabCase(defaultWebComponentName) + hash;\n const context: IManagedObject = await this.getContext(this.device);\n\n if (customElements.get(webComponentName)) {\n return this.createWebComponent(webComponentName, divHostElement, context);\n }\n\n const url = this.generateUrl(code);\n const defaultModule = await this.loadScript(url);\n\n // if the default module is a string, we will not use a webcomponent\n // instead we will simply parse the string and add it to the div\n // this is the case for legacy HTML widgets\n if (typeof defaultModule.default === 'string') {\n divHostElement.innerHTML = defaultModule.default;\n return EMPTY;\n }\n\n // same goes for an HTML Element\n if (defaultModule.default instanceof HTMLElement) {\n divHostElement.appendChild(defaultModule.default);\n\n // Find and execute scripts\n const scripts = divHostElement.querySelectorAll('script');\n scripts.forEach(script => {\n const newScript = document.createElement('script');\n Array.from(script.attributes).forEach(attr => {\n newScript.setAttribute(attr.name, attr.value);\n });\n newScript.textContent = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n });\n return EMPTY;\n }\n\n // as a race condition can happen on loading, we need\n // to check again if the web component is already defined\n if (!customElements.get(webComponentName)) {\n customElements.define(webComponentName, defaultModule.default);\n }\n this.createWebComponent(webComponentName, divHostElement, context);\n return EMPTY;\n }\n\n private async getContext(\n device: IManagedObject | IIdentified | undefined\n ): Promise<IManagedObject> {\n if (!device) {\n return;\n }\n\n if (!device.self) {\n const { data } = await this.inventoryService.detail(device.id);\n return data;\n }\n return device as IManagedObject;\n }\n\n private async loadScript(url: string): Promise<{ default: any }> {\n const module = await import(/* webpackIgnore: true */ url);\n if (!module.default) {\n throw 'No default export found. Add an \"export default\" statement to your code.';\n }\n\n return module;\n }\n\n private generateUrl(script: string): string {\n const blob = new Blob([script], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n if (this.latestUrl) {\n URL.revokeObjectURL(this.latestUrl);\n }\n this.latestUrl = url;\n return url;\n }\n\n private listenToErrors(): Observable<Alert> {\n const errorEvents$ = fromEvent<ErrorEvent>(window, 'error').pipe(\n filter(event => event.filename?.includes(this.latestUrl)),\n map(event => this.mapErrorEventToAlert(event))\n );\n\n const rejectionEvents$ = fromEvent<PromiseRejectionEvent>(window, 'unhandledrejection').pipe(\n filter(event => event.reason?.stack?.includes(this.latestUrl)),\n map(event => this.mapErrorEventToAlert(event)),\n takeUntil(this.destroy$)\n );\n\n return merge(errorEvents$, rejectionEvents$);\n }\n\n private createWebComponent(\n webComponentName: string,\n divHostElement: HTMLDivElement,\n context: IManagedObject\n ) {\n const webComponent: WebcomponentContext = document.createElement<any>(webComponentName);\n webComponent.c8yContext = context;\n const instantTranslate = this.translateService.instant.bind(this.translateService);\n webComponent.c8yTranslate = instantTranslate;\n divHostElement.appendChild(webComponent);\n return webComponent;\n }\n\n private mapErrorEventToAlert(event: PromiseRejectionEvent | ErrorEvent): Alert {\n const hasReason = 'reason' in event;\n if (hasReason && event.reason?.name === ReferenceError.name) {\n const undefinedVar = event.reason.message.split(' ')[0];\n return { text: undefinedVar + ' is not defined', type: 'info' };\n }\n return { text: hasReason ? event.reason.message : event.message, type: 'danger' };\n }\n\n private getCode() {\n const isDevMode = this.config.devMode;\n if (isDevMode) {\n return this.config.code;\n }\n return this.createDefaultWebcomponentCode();\n }\n\n private async generateHash(value: string, useSalt: boolean): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(value + (useSalt ? Math.random() : ''));\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n private createDefaultWebcomponentCode(): string {\n if (this.config.legacy) {\n const legacyWebComponent = legacyTemplate(\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.HTML, this.config.code)\n : this.config.code,\n this.device?.id,\n this.device?.name\n );\n return legacyWebComponent;\n }\n\n const webComponentScript = webComponentTemplate(\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.HTML, this.config.code)\n : this.config.code,\n this.config.options.advancedSecurity\n ? this.sanitizer.sanitize(SecurityContext.STYLE, this.config.css)\n : this.config.css,\n this.config.options.cssEncapsulation\n );\n return webComponentScript;\n }\n}\n","@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n","import { Component, inject, Input, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { C8yTranslatePipe, IconDirective, LoadingComponent, TabsModule } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { WidgetConfigFeedbackComponent } from '@c8y/ngx-components/context-dashboard';\nimport { EditorComponent } from '@c8y/ngx-components/editor';\nimport type * as Monaco from 'monaco-editor';\nimport { Subject } from 'rxjs';\nimport { HtmlWidgetConfigService } from '../html-widget-config.service';\nimport { HtmlWidget } from '../html-widget.model';\nimport { AdvancedSettingsComponent } from '../advanced-settings/advanced-settings.component';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\n@Component({\n standalone: true,\n imports: [\n EditorComponent,\n FormsModule,\n IconDirective,\n C8yTranslatePipe,\n WidgetConfigFeedbackComponent,\n TabsModule,\n TooltipModule,\n PopoverModule,\n LoadingComponent,\n AdvancedSettingsComponent\n ],\n selector: 'c8y-widget-code-editor',\n templateUrl: './widget-code-editor.component.html'\n})\nexport class WidgetCodeEditorComponent implements OnDestroy {\n @Input()\n mode: 'code' | 'css' = 'code';\n\n @Input()\n config: HtmlWidget;\n\n @ViewChild(EditorComponent) editorComponent!: EditorComponent;\n\n configService = inject(HtmlWidgetConfigService);\n\n editor: Monaco.editor.IStandaloneCodeEditor;\n isAutoSaveEnabled = true;\n language: 'html' | 'css' | 'javascript' = 'html';\n value: string;\n isLoading = false;\n\n readonly TAB_WEBCOMPONENT_LABEL = gettext('Web Component`Tab label of HTML Widget`');\n readonly TAB_HTML_LABEL = gettext('HTML`Tab label of HTML Widget`');\n readonly TAB_CSS_LABEL = gettext('CSS`Tab label of HTML Widget`');\n readonly BUTTON_DISABLE_AUTOSAVE_LABEL = gettext(\n 'Disable auto save`An action you can do on the html widget editor`'\n );\n readonly BUTTON_ENABLE_AUTOSAVE_LABEL = gettext(\n 'Enable auto save`An action you can do on the html widget editor`'\n );\n readonly TAB_OUTLET_NAME = 'html-widget-tab-outlet';\n\n private destroy$ = new Subject<void>();\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.config) {\n this.changeCode(this.config.code);\n }\n\n if (changes.config?.currentValue) {\n this.loadCode();\n }\n }\n\n loadCode() {\n this.isLoading = true;\n const isInDevMode = this.config?.devMode;\n this.language = 'html';\n\n if (isInDevMode) {\n this.language = 'javascript';\n }\n\n if (this.mode === 'css') {\n this.language = 'css';\n }\n\n this.value = this.mode === 'code' ? this.config.code : this.config.css;\n\n this.isLoading = false;\n\n if (this.editor) {\n queueMicrotask(() => this.formatCode());\n }\n }\n\n switchMode(mode: 'code' | 'css') {\n this.mode = mode;\n this.loadCode();\n }\n\n editorLoaded(editor: Monaco.editor.IStandaloneCodeEditor) {\n this.editor = editor;\n const monaco = this.editorComponent.monaco;\n this.editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => {\n this.saveCode();\n });\n }\n\n formatCode() {\n this.editor.getAction('editor.action.formatDocument').run();\n }\n\n redo() {\n this.editor.trigger('keyboard', 'redo', null);\n }\n\n undo() {\n this.editor.trigger('keyboard', 'undo', null);\n }\n\n changeCode($event: string) {\n if (this.isAutoSaveEnabled) {\n this.saveCode($event);\n }\n }\n\n saveCode(codeStr?: string) {\n const code = codeStr || this.editor.getValue();\n if (this.mode === 'code') {\n this.configService.changeCode(code);\n return;\n }\n this.configService.changeCss(code);\n }\n}\n","<c8y-widget-config-feedback>\n <div class=\"d-flex\">\n @if (config?.devMode && !config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n translate\n >\n Advanced developer mode\n </span>\n }\n </div>\n <div class=\"d-flex\">\n @if (config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n [title]=\"\n 'This widget is in legacy mode. Consider to upgrade this to a new HTML widget. Read our documentation on details to transform your widget'\n | translate\n \"\n translate\n >\n Legacy mode\n </span>\n }\n </div>\n</c8y-widget-config-feedback>\n\n<div class=\"d-flex d-col fit-h fit-w\">\n <c8y-html-widget-advanced-settings\n [devMode]=\"config?.devMode\"\n [cssEncapsulation]=\"config?.options?.cssEncapsulation\"\n ></c8y-html-widget-advanced-settings>\n\n <fieldset class=\"c8y-fieldset p-0 overflow-hidden\">\n <legend class=\"m-l-16 p-l-0\">{{ 'Code' | translate }}</legend>\n\n <div class=\"btn-group btn-group-sm m-l-0 p-t-8 p-b-8 p-l-16 p-r-16 fit-w d-flex\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"'Undo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"undo()\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"'Redo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"redo()\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Format code' | translate\"\n [tooltip]=\"'Format code' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"formatCode()\"\n >\n <i [c8yIcon]=\"'format-align-left'\"></i>\n </button>\n\n <label class=\"c8y-switch m-l-auto\">\n <input\n type=\"checkbox\"\n [checked]=\"isAutoSaveEnabled\"\n (change)=\"isAutoSaveEnabled = !isAutoSaveEnabled\"\n />\n <span></span>\n <span translate>Auto save</span>\n </label>\n </div>\n\n <div\n class=\"btn-toolbar m-0 p-relative\"\n role=\"toolbar\"\n >\n <c8y-tabs-outlet\n class=\"elevation-none\"\n [outletName]=\"TAB_OUTLET_NAME\"\n [orientation]=\"'horizontal'\"\n [openFirstTab]=\"false\"\n ></c8y-tabs-outlet>\n <c8y-tab\n [icon]=\"'code'\"\n [label]=\"(config?.devMode ? TAB_WEBCOMPONENT_LABEL : TAB_HTML_LABEL) | translate\"\n [priority]=\"100\"\n [showAlways]=\"true\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'code'\"\n (onSelect)=\"switchMode('code')\"\n ></c8y-tab>\n @if (!config?.devMode && !config?.legacy) {\n <c8y-tab\n [icon]=\"'c8y-css'\"\n [label]=\"TAB_CSS_LABEL | translate\"\n [priority]=\"0\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'css'\"\n (onSelect)=\"switchMode('css')\"\n ></c8y-tab>\n }\n </div>\n\n @if (!isLoading) {\n @if (!(mode === 'css' && config?.devMode)) {\n <c8y-editor\n class=\"flex-grow d-block\"\n style=\"height: 450px\"\n [ngModel]=\"value\"\n (ngModelChange)=\"changeCode($event)\"\n [editorOptions]=\"{\n language,\n tabSize: 2,\n insertSpaces: true,\n minimap: { enabled: false }\n }\"\n (editorInit)=\"editorLoaded($event)\"\n ></c8y-editor>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n </fieldset>\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { OptionsService } from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { HtmlFrameComponent } from './html-frame/html-frame.component';\nimport { HtmlWidgetConfigService } from './html-widget-config.service';\nimport { WidgetCodeEditorComponent } from './widget-code-editor-section/widget-code-editor.component';\n\n@Component({\n selector: 'c8y-html-widget-config',\n templateUrl: './html-widget-config.component.html',\n standalone: true,\n imports: [RouterModule, FormsModule, AsyncPipe, HtmlFrameComponent, WidgetCodeEditorComponent]\n})\nexport class HtmlWidgetConfigComponent implements OnDestroy {\n @ViewChild('htmlPreview')\n set htmlPreviewTemplate(template: TemplateRef<any>) {\n if (template) {\n this.widgetConfigService.setPreview(template);\n } else {\n this.widgetConfigService.setPreview(null);\n }\n }\n options = inject(OptionsService);\n htmlWidgetConfigService = inject(HtmlWidgetConfigService);\n widgetConfigService = inject(WidgetConfigService);\n\n ngOnDestroy(): void {\n // sadly the service is component scoped\n // but still not recycled correctly. That is why we do\n // it here.\n this.htmlWidgetConfigService.destroy();\n }\n}\n","<c8y-widget-code-editor\n [config]=\"htmlWidgetConfigService.config$ | async\"\n [mode]=\"'code'\"\n></c8y-widget-code-editor>\n\n<ng-template #htmlPreview>\n <c8y-html-frame\n [config]=\"htmlWidgetConfigService.codeEditorChangeConfig$ | async\"\n [device]=\"(widgetConfigService.currentConfig$ | async).device\"\n [useSalt]=\"true\"\n ></c8y-html-frame>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { C8yTranslatePipe, ClipboardService } from '@c8y/ngx-components';\nimport {\n AssetPropertyActionDirective,\n AssetPropertyListComponent,\n AssetPropertyType\n} from '@c8y/ngx-components/asset-properties';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n selector: 'c8y-html-widget-properties-selector',\n templateUrl: './html-widget-properties-selector.component.html',\n host: {\n class: 'bg-level-1'\n },\n standalone: true,\n imports: [\n AssetPropertyListComponent,\n AssetPropertyActionDirective,\n AsyncPipe,\n C8yTranslatePipe,\n PopoverModule,\n TooltipModule\n ]\n})\nexport class HtmlWidgetPropertiesSelectorComponent {\n widgetConfigService = inject(WidgetConfigService);\n clipboardService = inject(ClipboardService);\n\n /**\n * Copies the property path to the clipboard in a format suitable for use in HTML widget.\n * For nested properties, it uses the keyPath to create a path to nested property.\n * @param context The context containing the property information.\n */\n async copyProperty(context: AssetPropertyType) {\n const nonAlphanumericRegex = /[^a-zA-Z0-9]/;\n let path: string;\n if (context.keyPath) {\n path = context.keyPath\n .map(key => (nonAlphanumericRegex.test(key) ? `['${key}']` : `.${key}`))\n .join('');\n } else {\n path = nonAlphanumericRegex.test(context.name) ? `['${context.name}']` : `.${context.name}`;\n }\n const content = '${this.c8yContext' + path + '}';\n await this.clipboardService.writeText(content);\n }\n}\n","<div\n class=\"d-flex m-b-8\"\n style=\"margin-top: -16px\"\n>\n <em\n class=\"m-l-24 text-muted\"\n translate\n >\n How to use properties in the widget\n </em>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n</div>\n<c8y-asset-property-list\n class=\"inner-scroll bg-inherit d-block\"\n style=\"max-height: 450px\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).device\"\n [config]=\"{\n selectMode: 'none',\n expansionMode: 'expandedByDefault',\n filterable: false,\n allowDragAndDrop: true\n }\"\n>\n <button\n class=\"btn-dot btn fit-h\"\n [attr.aria-label]=\"'Copy' | translate\"\n tooltip=\"{{ 'Copy' | translate }}\"\n type=\"button\"\n *c8yAssetPropertyAction=\"let context\"\n [delay]=\"500\"\n (click)=\"copyProperty(context)\"\n >\n <i class=\"dlt-c8y-icon-copy\"></i>\n </button>\n</c8y-asset-property-list>\n\n<ng-template #helpContent>\n <p\n class=\"p-b-8\"\n translate\n >\n Click the copy icon next to a property, then paste it into the HTML editor below as a template\n literal.\n </p>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ContextWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { HtmlFrameComponent } from './html-frame/html-frame.component';\nimport { HtmlWidget, HtmlWidgetConfig } from './html-widget.model';\n\n@Component({\n selector: 'c8y-html-widget',\n templateUrl: './html-widget.component.html',\n standalone: true,\n imports: [RouterModule, HtmlFrameComponent]\n})\nexport class HtmlWidgetComponent {\n @Input() config: HtmlWidgetConfig;\n\n ngOnInit(): void {\n if (this.config.html && !this.config.config) {\n this.config.config = this.mapLegacyConfig(this.config);\n }\n }\n\n private mapLegacyConfig(current: ContextWidgetConfig): HtmlWidget {\n const isAlreadyInAdvancedMode = current?.config?.devMode === true;\n if (isAlreadyInAdvancedMode) {\n return current.config as HtmlWidget;\n }\n return {\n code: current.html,\n css: '',\n legacy: true,\n devMode: false,\n options: {\n cssEncapsulation: false,\n advancedSecurity: current.sanitization === 'strict'\n }\n };\n }\n}\n","<c8y-html-frame\n [config]=\"config.config\"\n [device]=\"config.device\"\n></c8y-html-frame>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isEmpty","i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyDO,MAAM,sBAAsB,GAAG,CAAA;;;;;;;;;;;;;;;;;AAiB/B,MAAM,qBAAqB,GAAG;;;;;;;AAQ9B,MAAM,uBAAuB,GAAG;AAEhC,MAAM,uCAAuC,GAAG;;AClFhD,MAAM,oBAAoB,GAAG,CAClC,IAAY,EACZ,GAAY,EACZ,iBAA2B,EAC3B,IAAI,GAAG,uBAAuB,KAC3B;;EAEH,CAAC,iBAAiB,GAAG,wCAAwC,GAAG,EAAE;;uBAE7C,IAAI,CAAA;;MAErB,GAAG;;;;;;;;;;;;;mBAcH;AACE,MAAE;AACF,MAAE;;;;QAIF,IAAI;AAER,IAAA,CAAA,CAAA;;;;;ACnCG,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,QAA0B,EAAE,UAAmB,KAAI;IAC9F,MAAM,WAAW,GAAG;;AAEjB,SAAA,OAAO,CAAC,KAAK,EAAE,MAAM;;AAErB,SAAA,OAAO,CAAC,IAAI,EAAE,KAAK;;AAEnB,SAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAExB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;MAyBH,QAAQ,GAAG,CAAA,eAAA,EAAkB,QAAQ,CAAA,UAAA,EAAa,UAAU,CAAA,IAAA,CAAM,GAAG,EAAE;kDAC3B,WAAW,CAAA;;;;;;;;;;;;;;;;;;;;+BAoB9B;AAC/B;;MC9Ba,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,0BAA0B,GAAG,IAAI;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAA2C;AACpE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAE9B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAClD,KAAK,EAAE,EACP,GAAG,CAAC,OAAO,IAAG;AACZ,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAChD;AAEA,YAAA,QAAQ,OAAO,CAAC,MAAM,IAAI,EAAE;QAC9B,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAC1B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EACtD,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAClF,WAAW,EAAE,EACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;QAED,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEjG,IAAA,CAAA,uBAAuB,GAAG,aAAa,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC;AACN,SAAA,CAAC,CAAC,IAAI,CACL,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAC7C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;YACvB,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,MAAM;YACf;AACA,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;AACzB,gBAAA,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;YAC3B;iBAAO;AACL,gBAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;YAC5B;AACA,YAAA,OAAO,EAAE,GAAG,MAAM,EAAE;QACtB,CAAC,CAAC,CACH;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAc;AAkG3C,IAAA;IAhGC,UAAU,CAAC,SAAwB,EAAE,YAAwB,EAAA;AAC3D,QAAA,MAAM,qBAAqB,GAAG,SAAS,EAAE,+BAA+B,IAAI,KAAK;AACjF,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC3C,QAAA,IAAI,aAAa,IAAI,CAAC,qBAAqB,EAAE;YAC3C,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,6BAA6B,CAAC;AAC9E,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,YAAY,CAAC;QACzB;QACA,IAAI,aAAa,EAAE;AACjB,YAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACtD;;AAGA,QAAA,MAAM,SAAS,GAAG,EAAE,GAAG,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACpB,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC;IACtB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEA,IAAA,IAAI,CAAC,MAAkB,EAAA;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;YACpC;AACD,SAAA,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChD;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C;AAEA,IAAA,kBAAkB,CAAC,aAAyB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAG,aAAa,EAAE,IAAI,IAAI,sBAAsB;AACjE,QAAA,MAAM,UAAU,GAAG,aAAa,EAAE,GAAG,IAAI,qBAAqB;AAC9D,QAAA,MAAM,IAAI,GAAG,aAAa,EAAE;cACxB,cAAc,CACZ,WAAW,EACX,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,EAClD,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI;cAEtD,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC;AACxD,QAAA,aAAa,GAAG;AACd,YAAA,GAAG,EAAE,EAAE;YACP,IAAI;AACJ,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE;AACP,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,gBAAgB,EAAE;AACnB;SACF;AACD,QAAA,OAAO,aAAa;IACtB;IAEA,eAAe,CAAC,gBAAgB,GAAG,IAAI,EAAA;QACrC,OAAO;AACL,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,gBAAgB,EAAE,KAAK;gBACvB;AACD;SACF;IACH;AAEQ,IAAA,eAAe,CAAC,OAA4B,EAAA;QAClD,MAAM,uBAAuB,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;QACjE,IAAI,uBAAuB,EAAE;YAC3B,OAAO,OAAO,CAAC,MAAoB;QACrC;QAEA,MAAM,eAAe,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;QACxD,IAAI,eAAe,EAAE;YACnB,OAAO,OAAO,CAAC,MAAoB;QACrC;QAEA,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,gBAAgB,EAAE,OAAO,CAAC,YAAY,KAAK;AAC5C;SACF;IACH;+GA9IW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAvB,uBAAuB,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;MCPY,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;QAEvC,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAMzB,QAAA,IAAA,CAAA,8BAA8B,GAAG,OAAO,CACtC,mFAAmF,CACpF;AAiCF,IAAA;IA/BC,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACzD,YAAA,WAAW,CAAC,iCAAiC;AAC7C,YAAA,WAAW,CAAC;AACb,SAAA,CAAC;IACJ;IAEA,mBAAmB,GAAA;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE;AAC7D,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1D;IAEA,kBAAkB,GAAA;QAChB,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAiC;QAC3E,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAChE,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1D;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACrE,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;IAEA,MAAM,YAAY,CAAC,MAA+B,EAAA;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAiC;AAC7E,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1D;+GA9CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBtC,snFAiFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnEY,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAoB,WAAW,2gBAA7B,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIlE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,YACjF,mCAAmC,EAAA,QAAA,EAAA,snFAAA,EAAA;;sBAU5C;;sBAEA;;;MEQU,2BAA2B,CAAA;AAnBxC,IAAA,WAAA,GAAA;AAyBE;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK;AACf;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,IAAI;AAChB;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK;AACnB;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,EAAE;AACT;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,EAAE;AACnB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,EAAE;QAED,IAAA,CAAA,OAAO,GAAG,kBAAkB;AAC5B,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AA+F3E,IAAA;AA7FC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC;IACF;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAChD;IACF;AAEA;;;AAGG;AACH,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,cAAc,CAAC,MAAK;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;AAC3D,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;aAAO,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACvC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAC3B;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEQ,IAAA,cAAc,CAAC,IAAe,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;AAC5D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;QAC3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAClD,QAAA,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,oBAAoB,CAAC;AACjE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC;AAC9E,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,oBAAoB,EAAE,YAAY,CAAC;AAC/E,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,kBAAkB,CAAC;AACtE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,gBAAgB,EAAE;QACzB;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;SAC5D;QACD,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3D,QAAA,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC;IAC5F;+GA9HW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCxC,srDA6DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCI,kBAAkB,2DAClB,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,qBAAqB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGP,gBAAgB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFhB,QAAQ,wCACR,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAElB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAnBvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B;wBACP,kBAAkB;wBAClB,iBAAiB;wBACjB,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,OAAO;wBACP,QAAQ;wBACR,kBAAkB;wBAClB,gBAAgB;wBAChB,SAAS;wBACT;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,IAAA,EACV,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAA,QAAA,EAAA,srDAAA,EAAA;;sBAGrC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEMd,kBAAkB,CAAA;AA0C7B,IAAA,WAAA,GAAA;AAnCA;;;;;AAKG;QAEH,IAAA,CAAA,OAAO,GAAG,KAAK;QAEf,IAAA,CAAA,MAAM,GAAY,EAAE;AAEZ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA6B,aAAa,uDAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;QAE7B,IAAA,CAAA,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACpD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAClC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAC3C,SAAS,CAAC,CAAC,GAAmB,KAC5B,KAAK,CACH,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAC1BA,SAAO,EAAE,EACT,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAC5B,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAC7D,CACF,CACF,EACD,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,EACxB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACO,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAGjD,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAY,KAAI;AACxF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IACE,OAAO,CAAC,MAAM,EAAE,YAAY;AAC5B,aAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/E;YACA,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,GAAG,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;IAEA,MAAM,OAAO,CAAC,cAA8B,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QACxD,MAAM,gBAAgB,GAAG,SAAS,CAAC,uBAAuB,CAAC,GAAG,IAAI;QAClE,MAAM,OAAO,GAAmB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAElE,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC;QAC3E;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;;;;AAKhD,QAAA,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC7C,YAAA,cAAc,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO;AAChD,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,IAAI,aAAa,CAAC,OAAO,YAAY,WAAW,EAAE;AAChD,YAAA,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;;YAGjD,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACzD,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;oBAC3C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAC/C,gBAAA,CAAC,CAAC;AACF,gBAAA,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;gBAC1C,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AACnD,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,KAAK;QACd;;;QAIA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC;QAChE;QACA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC;AAClE,QAAA,OAAO,KAAK;IACd;IAEQ,MAAM,UAAU,CACtB,MAAgD,EAAA;QAEhD,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAChB,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9D,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,MAAwB;IACjC;IAEQ,MAAM,UAAU,CAAC,GAAW,EAAA;QAClC,MAAM,MAAM,GAAG,MAAM,iCAAiC,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,YAAA,MAAM,0EAA0E;QAClF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,WAAW,CAAC,MAAc,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AACpB,QAAA,OAAO,GAAG;IACZ;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,SAAS,CAAa,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EACzD,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAC/C;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAwB,MAAM,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAC1F,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAC9D,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AAED,QAAA,OAAO,KAAK,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAC9C;AAEQ,IAAA,kBAAkB,CACxB,gBAAwB,EACxB,cAA8B,EAC9B,OAAuB,EAAA;QAEvB,MAAM,YAAY,GAAwB,QAAQ,CAAC,aAAa,CAAM,gBAAgB,CAAC;AACvF,QAAA,YAAY,CAAC,UAAU,GAAG,OAAO;AACjC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAClF,QAAA,YAAY,CAAC,YAAY,GAAG,gBAAgB;AAC5C,QAAA,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC;AACxC,QAAA,OAAO,YAAY;IACrB;AAEQ,IAAA,oBAAoB,CAAC,KAAyC,EAAA;AACpE,QAAA,MAAM,SAAS,GAAG,QAAQ,IAAI,KAAK;AACnC,QAAA,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AAC3D,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;QACjE;QACA,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnF;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;QACrC,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;QACzB;AACA,QAAA,OAAO,IAAI,CAAC,6BAA6B,EAAE;IAC7C;AAEQ,IAAA,MAAM,YAAY,CAAC,KAAa,EAAE,OAAgB,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AAC9D,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;AACxD,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF,QAAA,OAAO,OAAO;IAChB;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,MAAM,kBAAkB,GAAG,cAAc,CACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClB,kBAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAChE,kBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB,IAAI,CAAC,MAAM,EAAE,EAAE,EACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAClB;AACD,YAAA,OAAO,kBAAkB;QAC3B;QAEA,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClB,cAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAChE,cAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClB,cAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AAChE,cAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CACrC;AACD,QAAA,OAAO,kBAAkB;IAC3B;+GAlOW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C/B,kfAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EACR,gBAAgB,EAAA,IAAA,EAEpB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAA,QAAA,EAAA,kfAAA,EAAA;;sBAG5B;;sBAGA;;sBASA;2DAQ2D,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEhC9D,yBAAyB,CAAA;AAjBtC,IAAA,WAAA,GAAA;QAmBE,IAAA,CAAA,IAAI,GAAmB,MAAM;AAO7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAG/C,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,QAAQ,GAAkC,MAAM;QAEhD,IAAA,CAAA,SAAS,GAAG,KAAK;AAER,QAAA,IAAA,CAAA,sBAAsB,GAAG,OAAO,CAAC,yCAAyC,CAAC;AAC3E,QAAA,IAAA,CAAA,cAAc,GAAG,OAAO,CAAC,gCAAgC,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC;AACxD,QAAA,IAAA,CAAA,6BAA6B,GAAG,OAAO,CAC9C,mEAAmE,CACpE;AACQ,QAAA,IAAA,CAAA,4BAA4B,GAAG,OAAO,CAC7C,kEAAkE,CACnE;QACQ,IAAA,CAAA,eAAe,GAAG,wBAAwB;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AA8EvC,IAAA;IA5EC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnC;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE;YAChC,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;QAEtB,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACvB;QAEA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;AAEtE,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,cAAc,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC;IACF;AAEA,IAAA,UAAU,CAAC,IAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEA,IAAA,YAAY,CAAC,MAA2C,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAK;YACvE,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAE;IAC7D;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/C;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB;IACF;AAEA,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACvB,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9C,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;YACnC;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;IACpC;+GAzGW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOzB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC5B,28HA2IA,4CD1HI,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC7B,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,+BACb,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,yBAAyB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EANzB,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAWP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,OAAA,EACP;wBACP,eAAe;wBACf,WAAW;wBACX,aAAa;wBACb,gBAAgB;wBAChB,6BAA6B;wBAC7B,UAAU;wBACV,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EACS,wBAAwB,EAAA,QAAA,EAAA,28HAAA,EAAA;;sBAIjC;;sBAGA;;sBAGA,SAAS;uBAAC,eAAe;;;MEtBf,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;AAeE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAQlD,IAAA;IAlBC,IACI,mBAAmB,CAAC,QAA0B,EAAA;QAChD,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC/C;aAAO;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;QAC3C;IACF;IAKA,WAAW,GAAA;;;;AAIT,QAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;IACxC;+GAlBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBtC,mYAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAa,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAxD,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEnC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,UAAA,EAEtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,yBAAyB,CAAC,EAAA,QAAA,EAAA,mYAAA,EAAA;;sBAG7F,SAAS;uBAAC,aAAa;;;MEWb,qCAAqC,CAAA;AAhBlD,IAAA,WAAA,GAAA;AAiBE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAoB5C,IAAA;AAlBC;;;;AAIG;IACH,MAAM,YAAY,CAAC,OAA0B,EAAA;QAC3C,MAAM,oBAAoB,GAAG,cAAc;AAC3C,QAAA,IAAI,IAAY;AAChB,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,GAAG,OAAO,CAAC;iBACZ,GAAG,CAAC,GAAG,KAAK,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA,CAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC;iBACtE,IAAI,CAAC,EAAE,CAAC;QACb;aAAO;YACL,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAA,EAAA,CAAI,GAAG,CAAA,CAAA,EAAI,OAAO,CAAC,IAAI,CAAA,CAAE;QAC7F;AACA,QAAA,MAAM,OAAO,GAAG,mBAAmB,GAAG,IAAI,GAAG,GAAG;QAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC;IAChD;+GArBW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlD,4wCAqDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCI,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,4BAA4B,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAG5B,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHb,SAAS,yCACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKP,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAhBjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,EAAA,IAAA,EAEzC;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,OAAA,EACP;wBACP,0BAA0B;wBAC1B,4BAA4B;wBAC5B,SAAS;wBACT,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,4wCAAA,EAAA;;;MEdU,mBAAmB,CAAA;IAG9B,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACxD;IACF;AAEQ,IAAA,eAAe,CAAC,OAA4B,EAAA;QAClD,MAAM,uBAAuB,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;QACjE,IAAI,uBAAuB,EAAE;YAC3B,OAAO,OAAO,CAAC,MAAoB;QACrC;QACA,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,gBAAgB,EAAE,OAAO,CAAC,YAAY,KAAK;AAC5C;SACF;IACH;+GAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZhC,mGAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMY,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE/B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,mGAAA,EAAA;;sBAG1C;;;AEbH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@c8y/ngx-components","version":"1023.14.96","license":"Apache-2.0","author":"Cumulocity","description":"Angular modules for Cumulocity IoT applications","keywords":["Cumulocity","IoT","m2m","Angular","Components"],"peerDependencies":{"@angular/cdk":"^20.2.14","@angular/common":"^20.3.15","@angular/core":"^20.3.15","@angular/forms":"^20.3.15","@angular/platform-browser":"^20.3.15","@angular/router":"^20.3.15","@angular/upgrade":"^20.3.15","@c8y/bootstrap":"1023.14.96","@c8y/client":"1023.14.96","@novnc/novnc":"1.5.0","@xterm/addon-fit":"0.10.0","@xterm/xterm":"5.5.0","leaflet":"^1.9.4","monaco-editor":">= 0.31.0","lz-string":"1.5.0","rxjs":"7.8.2"},"dependencies":{"@ngx-formly/core":"6.1.3","@ngx-translate/core":"17.0.0","@zip.js/zip.js":"2.7.71","angularx-qrcode":"20.0.0","chroma-js":"3.1.2","file-saver":"2.0.5","libphonenumber-js":"1.12.10","lodash-es":"^4.17.23","marked":"16.3.0","ngx-bootstrap":"20.0.2","semver":"~7.7.1","three":"0.173.0","tslib":"^2.6.3","ajv":"^8.17.1","ajv-formats":"3.0.1","echarts":"6.0.0","ngx-echarts":"20.0.2"},"module":"fesm2022/c8y-ngx-components.mjs","typings":"index.d.ts","exports":{"./locales/de.po":"./locales/de.po","./locales/en.po":"./locales/en.po","./locales/es.po":"./locales/es.po","./locales/fr.po":"./locales/fr.po","./locales/ja_JP.po":"./locales/ja_JP.po","./locales/ko.po":"./locales/ko.po","./locales/nl.po":"./locales/nl.po","./locales/pt_BR.po":"./locales/pt_BR.po","./locales/zh_CN.po":"./locales/zh_CN.po","./locales/zh_TW.po":"./locales/zh_TW.po","./locales/pl.po":"./locales/pl.po","./locales/en_US.po":"./locales/en_US.po","./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/c8y-ngx-components.mjs"},"./actility-device-registration":{"types":"./actility-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-actility-device-registration.mjs"},"./advanced-software-management":{"types":"./advanced-software-management/index.d.ts","default":"./fesm2022/c8y-ngx-components-advanced-software-management.mjs"},"./ai":{"types":"./ai/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai.mjs"},"./ai/agent-chat":{"types":"./ai/agent-chat/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai-agent-chat.mjs"},"./ai/ai-chat":{"types":"./ai/ai-chat/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai-ai-chat.mjs"},"./alarm-event-selector":{"types":"./alarm-event-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarm-event-selector.mjs"},"./alarms":{"types":"./alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms.mjs"},"./alarms/cockpit":{"types":"./alarms/cockpit/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms-cockpit.mjs"},"./alarms/devicemanagement":{"types":"./alarms/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs"},"./api":{"types":"./api/index.d.ts","default":"./fesm2022/c8y-ngx-components-api.mjs"},"./app-logs":{"types":"./app-logs/index.d.ts","default":"./fesm2022/c8y-ngx-components-app-logs.mjs"},"./asset-properties":{"types":"./asset-properties/index.d.ts","default":"./fesm2022/c8y-ngx-components-asset-properties.mjs"},"./assets-navigator":{"types":"./assets-navigator/index.d.ts","default":"./fesm2022/c8y-ngx-components-assets-navigator.mjs"},"./auth-configuration":{"types":"./auth-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-auth-configuration.mjs"},"./binary-file-download":{"types":"./binary-file-download/index.d.ts","default":"./fesm2022/c8y-ngx-components-binary-file-download.mjs"},"./bookmarks":{"types":"./bookmarks/index.d.ts","default":"./fesm2022/c8y-ngx-components-bookmarks.mjs"},"./branding/base-branding":{"types":"./branding/base-branding/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-base-branding.mjs"},"./branding/dark-theme":{"types":"./branding/dark-theme/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-dark-theme.mjs"},"./branding/extra-css-branding-editor":{"types":"./branding/extra-css-branding-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs"},"./branding/plain-branding-editor":{"types":"./branding/plain-branding-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs"},"./branding/plain-branding-editor/lazy":{"types":"./branding/plain-branding-editor/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs"},"./branding/shared":{"types":"./branding/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared.mjs"},"./branding/shared/data":{"types":"./branding/shared/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-data.mjs"},"./branding/shared/lazy":{"types":"./branding/shared/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-lazy.mjs"},"./branding/shared/lazy/add-branding-modal":{"types":"./branding/shared/lazy/add-branding-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs"},"./child-devices":{"types":"./child-devices/index.d.ts","default":"./fesm2022/c8y-ngx-components-child-devices.mjs"},"./cockpit-config":{"types":"./cockpit-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-cockpit-config.mjs"},"./computed-asset-properties":{"types":"./computed-asset-properties/index.d.ts","default":"./fesm2022/c8y-ngx-components-computed-asset-properties.mjs"},"./connectivity":{"types":"./connectivity/index.d.ts","default":"./fesm2022/c8y-ngx-components-connectivity.mjs"},"./context-dashboard":{"types":"./context-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard.mjs"},"./context-dashboard-state":{"types":"./context-dashboard-state/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-state.mjs"},"./context-dashboard/asset/add":{"types":"./context-dashboard/asset/add/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs"},"./context-dashboard/asset/view":{"types":"./context-dashboard/asset/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs"},"./context-dashboard/cockpit-home-dashboard":{"types":"./context-dashboard/cockpit-home-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs"},"./context-dashboard/device/add":{"types":"./context-dashboard/device/add/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs"},"./context-dashboard/device/view":{"types":"./context-dashboard/device/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs"},"./context-dashboard/devicemanagement":{"types":"./context-dashboard/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs"},"./dashboard-details-advanced-tab":{"types":"./dashboard-details-advanced-tab/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs"},"./dashboard-manager":{"types":"./dashboard-manager/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-manager.mjs"},"./dashboard-manager/devicemanagement":{"types":"./dashboard-manager/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs"},"./data-broker":{"types":"./data-broker/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-broker.mjs"},"./data-grid-columns":{"types":"./data-grid-columns/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-grid-columns.mjs"},"./data-grid-columns/asset-type":{"types":"./data-grid-columns/asset-type/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs"},"./datapoint-explorer":{"types":"./datapoint-explorer/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer.mjs"},"./datapoint-explorer/devicemanagement":{"types":"./datapoint-explorer/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs"},"./datapoint-explorer/view":{"types":"./datapoint-explorer/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs"},"./datapoint-library":{"types":"./datapoint-library/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library.mjs"},"./datapoint-library/details":{"types":"./datapoint-library/details/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-details.mjs"},"./datapoint-library/list":{"types":"./datapoint-library/list/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-list.mjs"},"./datapoint-library/model":{"types":"./datapoint-library/model/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-model.mjs"},"./datapoint-library/services":{"types":"./datapoint-library/services/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-services.mjs"},"./datapoint-selector":{"types":"./datapoint-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-selector.mjs"},"./datapoints-export-selector":{"types":"./datapoints-export-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoints-export-selector.mjs"},"./default-subscriptions":{"types":"./default-subscriptions/index.d.ts","default":"./fesm2022/c8y-ngx-components-default-subscriptions.mjs"},"./device-grid":{"types":"./device-grid/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-grid.mjs"},"./device-list":{"types":"./device-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-list.mjs"},"./device-map":{"types":"./device-map/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-map.mjs"},"./device-profile":{"types":"./device-profile/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-profile.mjs"},"./device-protocol-object-mappings":{"types":"./device-protocol-object-mappings/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs"},"./device-protocols":{"types":"./device-protocols/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-protocols.mjs"},"./device-provisioned-certificates":{"types":"./device-provisioned-certificates/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs"},"./device-shell":{"types":"./device-shell/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-shell.mjs"},"./diagnostics":{"types":"./diagnostics/index.d.ts","default":"./fesm2022/c8y-ngx-components-diagnostics.mjs"},"./echart":{"types":"./echart/index.d.ts","default":"./fesm2022/c8y-ngx-components-echart.mjs"},"./echart/models":{"types":"./echart/models/index.d.ts","default":"./fesm2022/c8y-ngx-components-echart-models.mjs"},"./ecosystem":{"types":"./ecosystem/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem.mjs"},"./ecosystem/application-plugins":{"types":"./ecosystem/application-plugins/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs"},"./ecosystem/archived-confirm":{"types":"./ecosystem/archived-confirm/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs"},"./ecosystem/license-confirm":{"types":"./ecosystem/license-confirm/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs"},"./ecosystem/plugin-setup-stepper":{"types":"./ecosystem/plugin-setup-stepper/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs"},"./ecosystem/shared":{"types":"./ecosystem/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-shared.mjs"},"./editor":{"types":"./editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-editor.mjs"},"./events":{"types":"./events/index.d.ts","default":"./fesm2022/c8y-ngx-components-events.mjs"},"./events/events-timeline":{"types":"./events/events-timeline/index.d.ts","default":"./fesm2022/c8y-ngx-components-events-events-timeline.mjs"},"./exports":{"types":"./exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-exports.mjs"},"./exports/list":{"types":"./exports/list/index.d.ts","default":"./fesm2022/c8y-ngx-components-exports-list.mjs"},"./file-preview":{"types":"./file-preview/index.d.ts","default":"./fesm2022/c8y-ngx-components-file-preview.mjs"},"./files-repository":{"types":"./files-repository/index.d.ts","default":"./fesm2022/c8y-ngx-components-files-repository.mjs"},"./gettext":{"types":"./gettext/index.d.ts","default":"./fesm2022/c8y-ngx-components-gettext.mjs"},"./global-context":{"types":"./global-context/index.d.ts","default":"./fesm2022/c8y-ngx-components-global-context.mjs"},"./icon-selector":{"types":"./icon-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector.mjs"},"./icon-selector/icons":{"types":"./icon-selector/icons/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons.mjs"},"./icon-selector/icons/arrows":{"types":"./icon-selector/icons/arrows/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs"},"./icon-selector/icons/city":{"types":"./icon-selector/icons/city/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs"},"./icon-selector/icons/data":{"types":"./icon-selector/icons/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs"},"./icon-selector/icons/dateAndTime":{"types":"./icon-selector/icons/dateAndTime/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs"},"./icon-selector/icons/devicesAndSensors":{"types":"./icon-selector/icons/devicesAndSensors/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs"},"./icon-selector/icons/ecommerce":{"types":"./icon-selector/icons/ecommerce/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs"},"./icon-selector/icons/editing":{"types":"./icon-selector/icons/editing/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs"},"./icon-selector/icons/filesAndFolders":{"types":"./icon-selector/icons/filesAndFolders/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs"},"./icon-selector/icons/finance":{"types":"./icon-selector/icons/finance/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs"},"./icon-selector/icons/hands":{"types":"./icon-selector/icons/hands/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs"},"./icon-selector/icons/location":{"types":"./icon-selector/icons/location/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs"},"./icon-selector/icons/messaging":{"types":"./icon-selector/icons/messaging/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs"},"./icon-selector/icons/multimedia":{"types":"./icon-selector/icons/multimedia/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs"},"./icon-selector/icons/network":{"types":"./icon-selector/icons/network/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs"},"./icon-selector/icons/office":{"types":"./icon-selector/icons/office/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs"},"./icon-selector/icons/people":{"types":"./icon-selector/icons/people/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs"},"./icon-selector/icons/platform":{"types":"./icon-selector/icons/platform/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs"},"./icon-selector/icons/programming":{"types":"./icon-selector/icons/programming/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs"},"./icon-selector/icons/security":{"types":"./icon-selector/icons/security/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs"},"./icon-selector/icons/transport":{"types":"./icon-selector/icons/transport/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs"},"./icon-selector/icons/userInterface":{"types":"./icon-selector/icons/userInterface/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs"},"./icon-selector/icons/weather":{"types":"./icon-selector/icons/weather/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs"},"./icon-selector/model":{"types":"./icon-selector/model/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-model.mjs"},"./interval-picker":{"types":"./interval-picker/index.d.ts","default":"./fesm2022/c8y-ngx-components-interval-picker.mjs"},"./lazy/three":{"types":"./lazy/three/index.d.ts","default":"./fesm2022/c8y-ngx-components-lazy-three.mjs"},"./lazy/three-orbit-controls":{"types":"./lazy/three-orbit-controls/index.d.ts","default":"./fesm2022/c8y-ngx-components-lazy-three-orbit-controls.mjs"},"./location":{"types":"./location/index.d.ts","default":"./fesm2022/c8y-ngx-components-location.mjs"},"./loriot-device-registration":{"types":"./loriot-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-loriot-device-registration.mjs"},"./map":{"types":"./map/index.d.ts","default":"./fesm2022/c8y-ngx-components-map.mjs"},"./messaging-management":{"types":"./messaging-management/index.d.ts","default":"./fesm2022/c8y-ngx-components-messaging-management.mjs"},"./operations":{"types":"./operations/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations.mjs"},"./operations/bulk-operation-from-single":{"types":"./operations/bulk-operation-from-single/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs"},"./operations/bulk-operation-list-item":{"types":"./operations/bulk-operation-list-item/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs"},"./operations/bulk-operation-modal-details":{"types":"./operations/bulk-operation-modal-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-modal-details.mjs"},"./operations/bulk-operation-scheduler":{"types":"./operations/bulk-operation-scheduler/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs"},"./operations/bulk-operation-stepper":{"types":"./operations/bulk-operation-stepper/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs"},"./operations/bulk-operations-list":{"types":"./operations/bulk-operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs"},"./operations/bulk-operations-service":{"types":"./operations/bulk-operations-service/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs"},"./operations/bulk-operations-stepper-container":{"types":"./operations/bulk-operations-stepper-container/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs"},"./operations/bulk-single-operations-list":{"types":"./operations/bulk-single-operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs"},"./operations/create-bulk-operation-details":{"types":"./operations/create-bulk-operation-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs"},"./operations/device-selector":{"types":"./operations/device-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-device-selector.mjs"},"./operations/grid-columns":{"types":"./operations/grid-columns/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-grid-columns.mjs"},"./operations/operation-details":{"types":"./operations/operation-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operation-details.mjs"},"./operations/operation-summary":{"types":"./operations/operation-summary/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operation-summary.mjs"},"./operations/operations-list":{"types":"./operations/operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-list.mjs"},"./operations/operations-list-item-details":{"types":"./operations/operations-list-item-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs"},"./operations/operations-timeline":{"types":"./operations/operations-timeline/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-timeline.mjs"},"./operations/product-experience":{"types":"./operations/product-experience/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-product-experience.mjs"},"./operations/shared":{"types":"./operations/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-shared.mjs"},"./operations/status-filter":{"types":"./operations/status-filter/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-status-filter.mjs"},"./operations/stepper-bulk-type-configuration":{"types":"./operations/stepper-bulk-type-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs"},"./operations/stepper-bulk-type-device-profile":{"types":"./operations/stepper-bulk-type-device-profile/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs"},"./operations/stepper-bulk-type-firmware":{"types":"./operations/stepper-bulk-type-firmware/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs"},"./operations/stepper-bulk-type-software":{"types":"./operations/stepper-bulk-type-software/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs"},"./operations/stepper-frames":{"types":"./operations/stepper-frames/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-frames.mjs"},"./pending-mo-request":{"types":"./pending-mo-request/index.d.ts","default":"./fesm2022/c8y-ngx-components-pending-mo-request.mjs"},"./platform-configuration":{"types":"./platform-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-platform-configuration.mjs"},"./polyfills":{"types":"./polyfills/index.d.ts","default":"./fesm2022/c8y-ngx-components-polyfills.mjs"},"./protocol-lpwan":{"types":"./protocol-lpwan/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-lpwan.mjs"},"./protocol-opcua":{"types":"./protocol-opcua/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-opcua.mjs"},"./protocol-opcua/mappings":{"types":"./protocol-opcua/mappings/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs"},"./register-device":{"types":"./register-device/index.d.ts","default":"./fesm2022/c8y-ngx-components-register-device.mjs"},"./remote-access/configurations":{"types":"./remote-access/configurations/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-configurations.mjs"},"./remote-access/data":{"types":"./remote-access/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-data.mjs"},"./remote-access/passthrough":{"types":"./remote-access/passthrough/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-passthrough.mjs"},"./remote-access/shared":{"types":"./remote-access/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-shared.mjs"},"./remote-access/ssh":{"types":"./remote-access/ssh/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-ssh.mjs"},"./remote-access/ssh/remote-access-ssh-endpoint-modal":{"types":"./remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs"},"./remote-access/telnet":{"types":"./remote-access/telnet/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-telnet.mjs"},"./remote-access/terminal-viewer":{"types":"./remote-access/terminal-viewer/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs"},"./remote-access/vnc":{"types":"./remote-access/vnc/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc.mjs"},"./remote-access/vnc/remote-access-vnc-endpoint-modal":{"types":"./remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs"},"./remote-access/vnc/vnc-viewer":{"types":"./remote-access/vnc/vnc-viewer/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs"},"./replace-device":{"types":"./replace-device/index.d.ts","default":"./fesm2022/c8y-ngx-components-replace-device.mjs"},"./replace-device/replace-device-wizard":{"types":"./replace-device/replace-device-wizard/index.d.ts","default":"./fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs"},"./report-dashboard":{"types":"./report-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-report-dashboard.mjs"},"./reports":{"types":"./reports/index.d.ts","default":"./fesm2022/c8y-ngx-components-reports.mjs"},"./repository":{"types":"./repository/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository.mjs"},"./repository/configuration":{"types":"./repository/configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-configuration.mjs"},"./repository/firmware":{"types":"./repository/firmware/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-firmware.mjs"},"./repository/shared":{"types":"./repository/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-shared.mjs"},"./repository/software":{"types":"./repository/software/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-software.mjs"},"./search":{"types":"./search/index.d.ts","default":"./fesm2022/c8y-ngx-components-search.mjs"},"./sensor-phone":{"types":"./sensor-phone/index.d.ts","default":"./fesm2022/c8y-ngx-components-sensor-phone.mjs"},"./sensor-phone/sensor-phone-modal":{"types":"./sensor-phone/sensor-phone-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs"},"./services":{"types":"./services/index.d.ts","default":"./fesm2022/c8y-ngx-components-services.mjs"},"./services/service-command-tab":{"types":"./services/service-command-tab/index.d.ts","default":"./fesm2022/c8y-ngx-components-services-service-command-tab.mjs"},"./services/shared":{"types":"./services/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-services-shared.mjs"},"./sigfox-device-registration":{"types":"./sigfox-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-sigfox-device-registration.mjs"},"./sms-gateway":{"types":"./sms-gateway/index.d.ts","default":"./fesm2022/c8y-ngx-components-sms-gateway.mjs"},"./static-assets":{"types":"./static-assets/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets.mjs"},"./static-assets/data":{"types":"./static-assets/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets-data.mjs"},"./static-assets/modal":{"types":"./static-assets/modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets-modal.mjs"},"./sub-assets":{"types":"./sub-assets/index.d.ts","default":"./fesm2022/c8y-ngx-components-sub-assets.mjs"},"./tenants":{"types":"./tenants/index.d.ts","default":"./fesm2022/c8y-ngx-components-tenants.mjs"},"./time-context":{"types":"./time-context/index.d.ts","default":"./fesm2022/c8y-ngx-components-time-context.mjs"},"./tracking":{"types":"./tracking/index.d.ts","default":"./fesm2022/c8y-ngx-components-tracking.mjs"},"./translation-editor":{"types":"./translation-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor.mjs"},"./translation-editor/data":{"types":"./translation-editor/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor-data.mjs"},"./translation-editor/lazy":{"types":"./translation-editor/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor-lazy.mjs"},"./trusted-certificates":{"types":"./trusted-certificates/index.d.ts","default":"./fesm2022/c8y-ngx-components-trusted-certificates.mjs"},"./upgrade":{"types":"./upgrade/index.d.ts","default":"./fesm2022/c8y-ngx-components-upgrade.mjs"},"./upgrade/upgraded-services":{"types":"./upgrade/upgraded-services/index.d.ts","default":"./fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs"},"./user-roles":{"types":"./user-roles/index.d.ts","default":"./fesm2022/c8y-ngx-components-user-roles.mjs"},"./widgets/cockpit-exports":{"types":"./widgets/cockpit-exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs"},"./widgets/definitions":{"types":"./widgets/definitions/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions.mjs"},"./widgets/definitions/alarms/alarm-list":{"types":"./widgets/definitions/alarms/alarm-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs"},"./widgets/definitions/alarms/alarm-widget-controls.presets":{"types":"./widgets/definitions/alarms/alarm-widget-controls.presets/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-widget-controls.presets.mjs"},"./widgets/definitions/alarms/all-critical-alarms":{"types":"./widgets/definitions/alarms/all-critical-alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs"},"./widgets/definitions/alarms/recent-alarms":{"types":"./widgets/definitions/alarms/recent-alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs"},"./widgets/definitions/applications":{"types":"./widgets/definitions/applications/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs"},"./widgets/definitions/asset-notes":{"types":"./widgets/definitions/asset-notes/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs"},"./widgets/definitions/cockpit-legacy-welcome":{"types":"./widgets/definitions/cockpit-legacy-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs"},"./widgets/definitions/cockpit-welcome":{"types":"./widgets/definitions/cockpit-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs"},"./widgets/definitions/datapoints-graph":{"types":"./widgets/definitions/datapoints-graph/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs"},"./widgets/definitions/datapoints-table":{"types":"./widgets/definitions/datapoints-table/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs"},"./widgets/definitions/device-control-message":{"types":"./widgets/definitions/device-control-message/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs"},"./widgets/definitions/device-management-welcome":{"types":"./widgets/definitions/device-management-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs"},"./widgets/definitions/event-list":{"types":"./widgets/definitions/event-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs"},"./widgets/definitions/help-and-service":{"types":"./widgets/definitions/help-and-service/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs"},"./widgets/definitions/html-widget":{"types":"./widgets/definitions/html-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs"},"./widgets/definitions/html-widget-ai-config":{"types":"./widgets/definitions/html-widget-ai-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs"},"./widgets/definitions/image":{"types":"./widgets/definitions/image/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-image.mjs"},"./widgets/definitions/info-gauge":{"types":"./widgets/definitions/info-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs"},"./widgets/definitions/kpi":{"types":"./widgets/definitions/kpi/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs"},"./widgets/definitions/linear-gauge":{"types":"./widgets/definitions/linear-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs"},"./widgets/definitions/map":{"types":"./widgets/definitions/map/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-map.mjs"},"./widgets/definitions/markdown":{"types":"./widgets/definitions/markdown/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs"},"./widgets/definitions/quick-links":{"types":"./widgets/definitions/quick-links/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs"},"./widgets/definitions/radial-gauge":{"types":"./widgets/definitions/radial-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs"},"./widgets/definitions/silo":{"types":"./widgets/definitions/silo/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs"},"./widgets/definitions/three-d-rotation":{"types":"./widgets/definitions/three-d-rotation/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs"},"./widgets/device-management-exports":{"types":"./widgets/device-management-exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-device-management-exports.mjs"},"./widgets/exports":{"types":"./widgets/exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-exports.mjs"},"./widgets/implementations/alarms":{"types":"./widgets/implementations/alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs"},"./widgets/implementations/asset-notes":{"types":"./widgets/implementations/asset-notes/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs"},"./widgets/implementations/cockpit-legacy-welcome":{"types":"./widgets/implementations/cockpit-legacy-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs"},"./widgets/implementations/cockpit-welcome":{"types":"./widgets/implementations/cockpit-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs"},"./widgets/implementations/datapoints-graph":{"types":"./widgets/implementations/datapoints-graph/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs"},"./widgets/implementations/datapoints-table":{"types":"./widgets/implementations/datapoints-table/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs"},"./widgets/implementations/device-control-message":{"types":"./widgets/implementations/device-control-message/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs"},"./widgets/implementations/device-management-welcome":{"types":"./widgets/implementations/device-management-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs"},"./widgets/implementations/help-and-service-widget":{"types":"./widgets/implementations/help-and-service-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs"},"./widgets/implementations/html-widget":{"types":"./widgets/implementations/html-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs"},"./widgets/implementations/image":{"types":"./widgets/implementations/image/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-image.mjs"},"./widgets/implementations/info-gauge":{"types":"./widgets/implementations/info-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs"},"./widgets/implementations/kpi":{"types":"./widgets/implementations/kpi/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs"},"./widgets/implementations/linear-gauge":{"types":"./widgets/implementations/linear-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs"},"./widgets/implementations/map":{"types":"./widgets/implementations/map/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-map.mjs"},"./widgets/implementations/markdown":{"types":"./widgets/implementations/markdown/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs"},"./widgets/implementations/quick-links":{"types":"./widgets/implementations/quick-links/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs"},"./widgets/implementations/three-d-rotation":{"types":"./widgets/implementations/three-d-rotation/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs"},"./widgets/implementations/three-d-rotation/lazy-box-model":{"types":"./widgets/implementations/three-d-rotation/lazy-box-model/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs"},"./widgets/implementations/three-d-rotation/lazy-phone-model":{"types":"./widgets/implementations/three-d-rotation/lazy-phone-model/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs"},"./widgets/import-export-config":{"types":"./widgets/import-export-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-import-export-config.mjs"},"./widgets/widget-providers":{"types":"./widgets/widget-providers/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-widget-providers.mjs"}},"sideEffects":false}
|
|
1
|
+
{"name":"@c8y/ngx-components","version":"1023.14.98","license":"Apache-2.0","author":"Cumulocity","description":"Angular modules for Cumulocity IoT applications","keywords":["Cumulocity","IoT","m2m","Angular","Components"],"peerDependencies":{"@angular/cdk":"^20.2.14","@angular/common":"^20.3.15","@angular/core":"^20.3.15","@angular/forms":"^20.3.15","@angular/platform-browser":"^20.3.15","@angular/router":"^20.3.15","@angular/upgrade":"^20.3.15","@c8y/bootstrap":"1023.14.98","@c8y/client":"1023.14.98","@novnc/novnc":"1.5.0","@xterm/addon-fit":"0.10.0","@xterm/xterm":"5.5.0","leaflet":"^1.9.4","monaco-editor":">= 0.31.0","lz-string":"1.5.0","rxjs":"7.8.2"},"dependencies":{"@ngx-formly/core":"6.1.3","@ngx-translate/core":"17.0.0","@zip.js/zip.js":"2.7.71","angularx-qrcode":"20.0.0","chroma-js":"3.1.2","file-saver":"2.0.5","libphonenumber-js":"1.12.10","lodash-es":"^4.17.23","marked":"16.3.0","ngx-bootstrap":"20.0.2","semver":"~7.7.1","three":"0.173.0","tslib":"^2.6.3","ajv":"^8.17.1","ajv-formats":"3.0.1","echarts":"6.0.0","ngx-echarts":"20.0.2"},"module":"fesm2022/c8y-ngx-components.mjs","typings":"index.d.ts","exports":{"./locales/de.po":"./locales/de.po","./locales/en.po":"./locales/en.po","./locales/es.po":"./locales/es.po","./locales/fr.po":"./locales/fr.po","./locales/ja_JP.po":"./locales/ja_JP.po","./locales/ko.po":"./locales/ko.po","./locales/nl.po":"./locales/nl.po","./locales/pt_BR.po":"./locales/pt_BR.po","./locales/zh_CN.po":"./locales/zh_CN.po","./locales/zh_TW.po":"./locales/zh_TW.po","./locales/pl.po":"./locales/pl.po","./locales/en_US.po":"./locales/en_US.po","./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/c8y-ngx-components.mjs"},"./actility-device-registration":{"types":"./actility-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-actility-device-registration.mjs"},"./advanced-software-management":{"types":"./advanced-software-management/index.d.ts","default":"./fesm2022/c8y-ngx-components-advanced-software-management.mjs"},"./ai":{"types":"./ai/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai.mjs"},"./ai/agent-chat":{"types":"./ai/agent-chat/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai-agent-chat.mjs"},"./ai/ai-chat":{"types":"./ai/ai-chat/index.d.ts","default":"./fesm2022/c8y-ngx-components-ai-ai-chat.mjs"},"./alarm-event-selector":{"types":"./alarm-event-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarm-event-selector.mjs"},"./alarms":{"types":"./alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms.mjs"},"./alarms/cockpit":{"types":"./alarms/cockpit/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms-cockpit.mjs"},"./alarms/devicemanagement":{"types":"./alarms/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs"},"./api":{"types":"./api/index.d.ts","default":"./fesm2022/c8y-ngx-components-api.mjs"},"./app-logs":{"types":"./app-logs/index.d.ts","default":"./fesm2022/c8y-ngx-components-app-logs.mjs"},"./asset-properties":{"types":"./asset-properties/index.d.ts","default":"./fesm2022/c8y-ngx-components-asset-properties.mjs"},"./assets-navigator":{"types":"./assets-navigator/index.d.ts","default":"./fesm2022/c8y-ngx-components-assets-navigator.mjs"},"./auth-configuration":{"types":"./auth-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-auth-configuration.mjs"},"./binary-file-download":{"types":"./binary-file-download/index.d.ts","default":"./fesm2022/c8y-ngx-components-binary-file-download.mjs"},"./bookmarks":{"types":"./bookmarks/index.d.ts","default":"./fesm2022/c8y-ngx-components-bookmarks.mjs"},"./branding/base-branding":{"types":"./branding/base-branding/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-base-branding.mjs"},"./branding/dark-theme":{"types":"./branding/dark-theme/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-dark-theme.mjs"},"./branding/extra-css-branding-editor":{"types":"./branding/extra-css-branding-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs"},"./branding/plain-branding-editor":{"types":"./branding/plain-branding-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs"},"./branding/plain-branding-editor/lazy":{"types":"./branding/plain-branding-editor/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs"},"./branding/shared":{"types":"./branding/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared.mjs"},"./branding/shared/data":{"types":"./branding/shared/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-data.mjs"},"./branding/shared/lazy":{"types":"./branding/shared/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-lazy.mjs"},"./branding/shared/lazy/add-branding-modal":{"types":"./branding/shared/lazy/add-branding-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs"},"./child-devices":{"types":"./child-devices/index.d.ts","default":"./fesm2022/c8y-ngx-components-child-devices.mjs"},"./cockpit-config":{"types":"./cockpit-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-cockpit-config.mjs"},"./computed-asset-properties":{"types":"./computed-asset-properties/index.d.ts","default":"./fesm2022/c8y-ngx-components-computed-asset-properties.mjs"},"./connectivity":{"types":"./connectivity/index.d.ts","default":"./fesm2022/c8y-ngx-components-connectivity.mjs"},"./context-dashboard":{"types":"./context-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard.mjs"},"./context-dashboard-state":{"types":"./context-dashboard-state/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-state.mjs"},"./context-dashboard/asset/add":{"types":"./context-dashboard/asset/add/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs"},"./context-dashboard/asset/view":{"types":"./context-dashboard/asset/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs"},"./context-dashboard/cockpit-home-dashboard":{"types":"./context-dashboard/cockpit-home-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs"},"./context-dashboard/device/add":{"types":"./context-dashboard/device/add/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs"},"./context-dashboard/device/view":{"types":"./context-dashboard/device/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs"},"./context-dashboard/devicemanagement":{"types":"./context-dashboard/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs"},"./dashboard-details-advanced-tab":{"types":"./dashboard-details-advanced-tab/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs"},"./dashboard-manager":{"types":"./dashboard-manager/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-manager.mjs"},"./dashboard-manager/devicemanagement":{"types":"./dashboard-manager/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs"},"./data-broker":{"types":"./data-broker/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-broker.mjs"},"./data-grid-columns":{"types":"./data-grid-columns/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-grid-columns.mjs"},"./data-grid-columns/asset-type":{"types":"./data-grid-columns/asset-type/index.d.ts","default":"./fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs"},"./datapoint-explorer":{"types":"./datapoint-explorer/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer.mjs"},"./datapoint-explorer/devicemanagement":{"types":"./datapoint-explorer/devicemanagement/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs"},"./datapoint-explorer/view":{"types":"./datapoint-explorer/view/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs"},"./datapoint-library":{"types":"./datapoint-library/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library.mjs"},"./datapoint-library/details":{"types":"./datapoint-library/details/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-details.mjs"},"./datapoint-library/list":{"types":"./datapoint-library/list/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-list.mjs"},"./datapoint-library/model":{"types":"./datapoint-library/model/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-model.mjs"},"./datapoint-library/services":{"types":"./datapoint-library/services/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-library-services.mjs"},"./datapoint-selector":{"types":"./datapoint-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoint-selector.mjs"},"./datapoints-export-selector":{"types":"./datapoints-export-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-datapoints-export-selector.mjs"},"./default-subscriptions":{"types":"./default-subscriptions/index.d.ts","default":"./fesm2022/c8y-ngx-components-default-subscriptions.mjs"},"./device-grid":{"types":"./device-grid/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-grid.mjs"},"./device-list":{"types":"./device-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-list.mjs"},"./device-map":{"types":"./device-map/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-map.mjs"},"./device-profile":{"types":"./device-profile/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-profile.mjs"},"./device-protocol-object-mappings":{"types":"./device-protocol-object-mappings/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs"},"./device-protocols":{"types":"./device-protocols/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-protocols.mjs"},"./device-provisioned-certificates":{"types":"./device-provisioned-certificates/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs"},"./device-shell":{"types":"./device-shell/index.d.ts","default":"./fesm2022/c8y-ngx-components-device-shell.mjs"},"./diagnostics":{"types":"./diagnostics/index.d.ts","default":"./fesm2022/c8y-ngx-components-diagnostics.mjs"},"./echart":{"types":"./echart/index.d.ts","default":"./fesm2022/c8y-ngx-components-echart.mjs"},"./echart/models":{"types":"./echart/models/index.d.ts","default":"./fesm2022/c8y-ngx-components-echart-models.mjs"},"./ecosystem":{"types":"./ecosystem/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem.mjs"},"./ecosystem/application-plugins":{"types":"./ecosystem/application-plugins/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs"},"./ecosystem/archived-confirm":{"types":"./ecosystem/archived-confirm/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs"},"./ecosystem/license-confirm":{"types":"./ecosystem/license-confirm/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs"},"./ecosystem/plugin-setup-stepper":{"types":"./ecosystem/plugin-setup-stepper/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs"},"./ecosystem/shared":{"types":"./ecosystem/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-ecosystem-shared.mjs"},"./editor":{"types":"./editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-editor.mjs"},"./events":{"types":"./events/index.d.ts","default":"./fesm2022/c8y-ngx-components-events.mjs"},"./events/events-timeline":{"types":"./events/events-timeline/index.d.ts","default":"./fesm2022/c8y-ngx-components-events-events-timeline.mjs"},"./exports":{"types":"./exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-exports.mjs"},"./exports/list":{"types":"./exports/list/index.d.ts","default":"./fesm2022/c8y-ngx-components-exports-list.mjs"},"./file-preview":{"types":"./file-preview/index.d.ts","default":"./fesm2022/c8y-ngx-components-file-preview.mjs"},"./files-repository":{"types":"./files-repository/index.d.ts","default":"./fesm2022/c8y-ngx-components-files-repository.mjs"},"./gettext":{"types":"./gettext/index.d.ts","default":"./fesm2022/c8y-ngx-components-gettext.mjs"},"./global-context":{"types":"./global-context/index.d.ts","default":"./fesm2022/c8y-ngx-components-global-context.mjs"},"./icon-selector":{"types":"./icon-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector.mjs"},"./icon-selector/icons":{"types":"./icon-selector/icons/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons.mjs"},"./icon-selector/icons/arrows":{"types":"./icon-selector/icons/arrows/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs"},"./icon-selector/icons/city":{"types":"./icon-selector/icons/city/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs"},"./icon-selector/icons/data":{"types":"./icon-selector/icons/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs"},"./icon-selector/icons/dateAndTime":{"types":"./icon-selector/icons/dateAndTime/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs"},"./icon-selector/icons/devicesAndSensors":{"types":"./icon-selector/icons/devicesAndSensors/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs"},"./icon-selector/icons/ecommerce":{"types":"./icon-selector/icons/ecommerce/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs"},"./icon-selector/icons/editing":{"types":"./icon-selector/icons/editing/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs"},"./icon-selector/icons/filesAndFolders":{"types":"./icon-selector/icons/filesAndFolders/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs"},"./icon-selector/icons/finance":{"types":"./icon-selector/icons/finance/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs"},"./icon-selector/icons/hands":{"types":"./icon-selector/icons/hands/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs"},"./icon-selector/icons/location":{"types":"./icon-selector/icons/location/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs"},"./icon-selector/icons/messaging":{"types":"./icon-selector/icons/messaging/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs"},"./icon-selector/icons/multimedia":{"types":"./icon-selector/icons/multimedia/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs"},"./icon-selector/icons/network":{"types":"./icon-selector/icons/network/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs"},"./icon-selector/icons/office":{"types":"./icon-selector/icons/office/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs"},"./icon-selector/icons/people":{"types":"./icon-selector/icons/people/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs"},"./icon-selector/icons/platform":{"types":"./icon-selector/icons/platform/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs"},"./icon-selector/icons/programming":{"types":"./icon-selector/icons/programming/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs"},"./icon-selector/icons/security":{"types":"./icon-selector/icons/security/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs"},"./icon-selector/icons/transport":{"types":"./icon-selector/icons/transport/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs"},"./icon-selector/icons/userInterface":{"types":"./icon-selector/icons/userInterface/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs"},"./icon-selector/icons/weather":{"types":"./icon-selector/icons/weather/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs"},"./icon-selector/model":{"types":"./icon-selector/model/index.d.ts","default":"./fesm2022/c8y-ngx-components-icon-selector-model.mjs"},"./interval-picker":{"types":"./interval-picker/index.d.ts","default":"./fesm2022/c8y-ngx-components-interval-picker.mjs"},"./lazy/three":{"types":"./lazy/three/index.d.ts","default":"./fesm2022/c8y-ngx-components-lazy-three.mjs"},"./lazy/three-orbit-controls":{"types":"./lazy/three-orbit-controls/index.d.ts","default":"./fesm2022/c8y-ngx-components-lazy-three-orbit-controls.mjs"},"./location":{"types":"./location/index.d.ts","default":"./fesm2022/c8y-ngx-components-location.mjs"},"./loriot-device-registration":{"types":"./loriot-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-loriot-device-registration.mjs"},"./map":{"types":"./map/index.d.ts","default":"./fesm2022/c8y-ngx-components-map.mjs"},"./messaging-management":{"types":"./messaging-management/index.d.ts","default":"./fesm2022/c8y-ngx-components-messaging-management.mjs"},"./operations":{"types":"./operations/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations.mjs"},"./operations/bulk-operation-from-single":{"types":"./operations/bulk-operation-from-single/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs"},"./operations/bulk-operation-list-item":{"types":"./operations/bulk-operation-list-item/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs"},"./operations/bulk-operation-modal-details":{"types":"./operations/bulk-operation-modal-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-modal-details.mjs"},"./operations/bulk-operation-scheduler":{"types":"./operations/bulk-operation-scheduler/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs"},"./operations/bulk-operation-stepper":{"types":"./operations/bulk-operation-stepper/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs"},"./operations/bulk-operations-list":{"types":"./operations/bulk-operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs"},"./operations/bulk-operations-service":{"types":"./operations/bulk-operations-service/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs"},"./operations/bulk-operations-stepper-container":{"types":"./operations/bulk-operations-stepper-container/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs"},"./operations/bulk-single-operations-list":{"types":"./operations/bulk-single-operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs"},"./operations/create-bulk-operation-details":{"types":"./operations/create-bulk-operation-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs"},"./operations/device-selector":{"types":"./operations/device-selector/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-device-selector.mjs"},"./operations/grid-columns":{"types":"./operations/grid-columns/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-grid-columns.mjs"},"./operations/operation-details":{"types":"./operations/operation-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operation-details.mjs"},"./operations/operation-summary":{"types":"./operations/operation-summary/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operation-summary.mjs"},"./operations/operations-list":{"types":"./operations/operations-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-list.mjs"},"./operations/operations-list-item-details":{"types":"./operations/operations-list-item-details/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs"},"./operations/operations-timeline":{"types":"./operations/operations-timeline/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-operations-timeline.mjs"},"./operations/product-experience":{"types":"./operations/product-experience/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-product-experience.mjs"},"./operations/shared":{"types":"./operations/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-shared.mjs"},"./operations/status-filter":{"types":"./operations/status-filter/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-status-filter.mjs"},"./operations/stepper-bulk-type-configuration":{"types":"./operations/stepper-bulk-type-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs"},"./operations/stepper-bulk-type-device-profile":{"types":"./operations/stepper-bulk-type-device-profile/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs"},"./operations/stepper-bulk-type-firmware":{"types":"./operations/stepper-bulk-type-firmware/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs"},"./operations/stepper-bulk-type-software":{"types":"./operations/stepper-bulk-type-software/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs"},"./operations/stepper-frames":{"types":"./operations/stepper-frames/index.d.ts","default":"./fesm2022/c8y-ngx-components-operations-stepper-frames.mjs"},"./pending-mo-request":{"types":"./pending-mo-request/index.d.ts","default":"./fesm2022/c8y-ngx-components-pending-mo-request.mjs"},"./platform-configuration":{"types":"./platform-configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-platform-configuration.mjs"},"./polyfills":{"types":"./polyfills/index.d.ts","default":"./fesm2022/c8y-ngx-components-polyfills.mjs"},"./protocol-lpwan":{"types":"./protocol-lpwan/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-lpwan.mjs"},"./protocol-opcua":{"types":"./protocol-opcua/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-opcua.mjs"},"./protocol-opcua/mappings":{"types":"./protocol-opcua/mappings/index.d.ts","default":"./fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs"},"./register-device":{"types":"./register-device/index.d.ts","default":"./fesm2022/c8y-ngx-components-register-device.mjs"},"./remote-access/configurations":{"types":"./remote-access/configurations/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-configurations.mjs"},"./remote-access/data":{"types":"./remote-access/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-data.mjs"},"./remote-access/passthrough":{"types":"./remote-access/passthrough/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-passthrough.mjs"},"./remote-access/shared":{"types":"./remote-access/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-shared.mjs"},"./remote-access/ssh":{"types":"./remote-access/ssh/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-ssh.mjs"},"./remote-access/ssh/remote-access-ssh-endpoint-modal":{"types":"./remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs"},"./remote-access/telnet":{"types":"./remote-access/telnet/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-telnet.mjs"},"./remote-access/terminal-viewer":{"types":"./remote-access/terminal-viewer/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs"},"./remote-access/vnc":{"types":"./remote-access/vnc/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc.mjs"},"./remote-access/vnc/remote-access-vnc-endpoint-modal":{"types":"./remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs"},"./remote-access/vnc/vnc-viewer":{"types":"./remote-access/vnc/vnc-viewer/index.d.ts","default":"./fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs"},"./replace-device":{"types":"./replace-device/index.d.ts","default":"./fesm2022/c8y-ngx-components-replace-device.mjs"},"./replace-device/replace-device-wizard":{"types":"./replace-device/replace-device-wizard/index.d.ts","default":"./fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs"},"./report-dashboard":{"types":"./report-dashboard/index.d.ts","default":"./fesm2022/c8y-ngx-components-report-dashboard.mjs"},"./reports":{"types":"./reports/index.d.ts","default":"./fesm2022/c8y-ngx-components-reports.mjs"},"./repository":{"types":"./repository/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository.mjs"},"./repository/configuration":{"types":"./repository/configuration/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-configuration.mjs"},"./repository/firmware":{"types":"./repository/firmware/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-firmware.mjs"},"./repository/shared":{"types":"./repository/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-shared.mjs"},"./repository/software":{"types":"./repository/software/index.d.ts","default":"./fesm2022/c8y-ngx-components-repository-software.mjs"},"./search":{"types":"./search/index.d.ts","default":"./fesm2022/c8y-ngx-components-search.mjs"},"./sensor-phone":{"types":"./sensor-phone/index.d.ts","default":"./fesm2022/c8y-ngx-components-sensor-phone.mjs"},"./sensor-phone/sensor-phone-modal":{"types":"./sensor-phone/sensor-phone-modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs"},"./services":{"types":"./services/index.d.ts","default":"./fesm2022/c8y-ngx-components-services.mjs"},"./services/service-command-tab":{"types":"./services/service-command-tab/index.d.ts","default":"./fesm2022/c8y-ngx-components-services-service-command-tab.mjs"},"./services/shared":{"types":"./services/shared/index.d.ts","default":"./fesm2022/c8y-ngx-components-services-shared.mjs"},"./sigfox-device-registration":{"types":"./sigfox-device-registration/index.d.ts","default":"./fesm2022/c8y-ngx-components-sigfox-device-registration.mjs"},"./sms-gateway":{"types":"./sms-gateway/index.d.ts","default":"./fesm2022/c8y-ngx-components-sms-gateway.mjs"},"./static-assets":{"types":"./static-assets/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets.mjs"},"./static-assets/data":{"types":"./static-assets/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets-data.mjs"},"./static-assets/modal":{"types":"./static-assets/modal/index.d.ts","default":"./fesm2022/c8y-ngx-components-static-assets-modal.mjs"},"./sub-assets":{"types":"./sub-assets/index.d.ts","default":"./fesm2022/c8y-ngx-components-sub-assets.mjs"},"./tenants":{"types":"./tenants/index.d.ts","default":"./fesm2022/c8y-ngx-components-tenants.mjs"},"./time-context":{"types":"./time-context/index.d.ts","default":"./fesm2022/c8y-ngx-components-time-context.mjs"},"./tracking":{"types":"./tracking/index.d.ts","default":"./fesm2022/c8y-ngx-components-tracking.mjs"},"./translation-editor":{"types":"./translation-editor/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor.mjs"},"./translation-editor/data":{"types":"./translation-editor/data/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor-data.mjs"},"./translation-editor/lazy":{"types":"./translation-editor/lazy/index.d.ts","default":"./fesm2022/c8y-ngx-components-translation-editor-lazy.mjs"},"./trusted-certificates":{"types":"./trusted-certificates/index.d.ts","default":"./fesm2022/c8y-ngx-components-trusted-certificates.mjs"},"./upgrade":{"types":"./upgrade/index.d.ts","default":"./fesm2022/c8y-ngx-components-upgrade.mjs"},"./upgrade/upgraded-services":{"types":"./upgrade/upgraded-services/index.d.ts","default":"./fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs"},"./user-roles":{"types":"./user-roles/index.d.ts","default":"./fesm2022/c8y-ngx-components-user-roles.mjs"},"./widgets/cockpit-exports":{"types":"./widgets/cockpit-exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs"},"./widgets/definitions":{"types":"./widgets/definitions/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions.mjs"},"./widgets/definitions/alarms/alarm-list":{"types":"./widgets/definitions/alarms/alarm-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs"},"./widgets/definitions/alarms/alarm-widget-controls.presets":{"types":"./widgets/definitions/alarms/alarm-widget-controls.presets/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-widget-controls.presets.mjs"},"./widgets/definitions/alarms/all-critical-alarms":{"types":"./widgets/definitions/alarms/all-critical-alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs"},"./widgets/definitions/alarms/recent-alarms":{"types":"./widgets/definitions/alarms/recent-alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs"},"./widgets/definitions/applications":{"types":"./widgets/definitions/applications/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs"},"./widgets/definitions/asset-notes":{"types":"./widgets/definitions/asset-notes/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs"},"./widgets/definitions/cockpit-legacy-welcome":{"types":"./widgets/definitions/cockpit-legacy-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs"},"./widgets/definitions/cockpit-welcome":{"types":"./widgets/definitions/cockpit-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs"},"./widgets/definitions/datapoints-graph":{"types":"./widgets/definitions/datapoints-graph/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs"},"./widgets/definitions/datapoints-table":{"types":"./widgets/definitions/datapoints-table/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs"},"./widgets/definitions/device-control-message":{"types":"./widgets/definitions/device-control-message/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs"},"./widgets/definitions/device-management-welcome":{"types":"./widgets/definitions/device-management-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs"},"./widgets/definitions/event-list":{"types":"./widgets/definitions/event-list/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs"},"./widgets/definitions/help-and-service":{"types":"./widgets/definitions/help-and-service/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs"},"./widgets/definitions/html-widget":{"types":"./widgets/definitions/html-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs"},"./widgets/definitions/html-widget-ai-config":{"types":"./widgets/definitions/html-widget-ai-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs"},"./widgets/definitions/image":{"types":"./widgets/definitions/image/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-image.mjs"},"./widgets/definitions/info-gauge":{"types":"./widgets/definitions/info-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs"},"./widgets/definitions/kpi":{"types":"./widgets/definitions/kpi/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs"},"./widgets/definitions/linear-gauge":{"types":"./widgets/definitions/linear-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs"},"./widgets/definitions/map":{"types":"./widgets/definitions/map/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-map.mjs"},"./widgets/definitions/markdown":{"types":"./widgets/definitions/markdown/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs"},"./widgets/definitions/quick-links":{"types":"./widgets/definitions/quick-links/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs"},"./widgets/definitions/radial-gauge":{"types":"./widgets/definitions/radial-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs"},"./widgets/definitions/silo":{"types":"./widgets/definitions/silo/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs"},"./widgets/definitions/three-d-rotation":{"types":"./widgets/definitions/three-d-rotation/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs"},"./widgets/device-management-exports":{"types":"./widgets/device-management-exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-device-management-exports.mjs"},"./widgets/exports":{"types":"./widgets/exports/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-exports.mjs"},"./widgets/implementations/alarms":{"types":"./widgets/implementations/alarms/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs"},"./widgets/implementations/asset-notes":{"types":"./widgets/implementations/asset-notes/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs"},"./widgets/implementations/cockpit-legacy-welcome":{"types":"./widgets/implementations/cockpit-legacy-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs"},"./widgets/implementations/cockpit-welcome":{"types":"./widgets/implementations/cockpit-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs"},"./widgets/implementations/datapoints-graph":{"types":"./widgets/implementations/datapoints-graph/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs"},"./widgets/implementations/datapoints-table":{"types":"./widgets/implementations/datapoints-table/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs"},"./widgets/implementations/device-control-message":{"types":"./widgets/implementations/device-control-message/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs"},"./widgets/implementations/device-management-welcome":{"types":"./widgets/implementations/device-management-welcome/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs"},"./widgets/implementations/help-and-service-widget":{"types":"./widgets/implementations/help-and-service-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs"},"./widgets/implementations/html-widget":{"types":"./widgets/implementations/html-widget/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs"},"./widgets/implementations/image":{"types":"./widgets/implementations/image/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-image.mjs"},"./widgets/implementations/info-gauge":{"types":"./widgets/implementations/info-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs"},"./widgets/implementations/kpi":{"types":"./widgets/implementations/kpi/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs"},"./widgets/implementations/linear-gauge":{"types":"./widgets/implementations/linear-gauge/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs"},"./widgets/implementations/map":{"types":"./widgets/implementations/map/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-map.mjs"},"./widgets/implementations/markdown":{"types":"./widgets/implementations/markdown/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs"},"./widgets/implementations/quick-links":{"types":"./widgets/implementations/quick-links/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs"},"./widgets/implementations/three-d-rotation":{"types":"./widgets/implementations/three-d-rotation/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs"},"./widgets/implementations/three-d-rotation/lazy-box-model":{"types":"./widgets/implementations/three-d-rotation/lazy-box-model/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs"},"./widgets/implementations/three-d-rotation/lazy-phone-model":{"types":"./widgets/implementations/three-d-rotation/lazy-phone-model/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs"},"./widgets/import-export-config":{"types":"./widgets/import-export-config/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-import-export-config.mjs"},"./widgets/widget-providers":{"types":"./widgets/widget-providers/index.d.ts","default":"./fesm2022/c8y-ngx-components-widgets-widget-providers.mjs"}},"sideEffects":false}
|
package/search/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../../search/search.service.ts","../../search/search-config.model.ts","../../search/search-grid.component.ts","../../search/search-results.component.ts","../../search/search-action.component.ts","../../search/search-custom-filters.component.ts","../../search/search.module.ts","../../search/columns/asset-type-search-grid-column.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAwBA;AAIE;AACA;AACA;;AAEE;AACA;AACA;AACA;AACD;;;;;;;AAgBD;;;AAGG;;;;;AA2BG;;;;AA2CN;AAOM;AAQN;AAiCA;;;;;AAKG;;;;AAuBJ;;ACtMD;;AAEG;;AAED;;;AAGG;;AAEH;;;AAGG;;AAEJ;;AC8BD;;AAiBW;;AAET;AAOA;AAKA;AAOS;AACT;AAOU;AAGV;;;;AAQA;AACA;AACA;;AAGA;;;;;AAKA;;AAKA;AACA;AAIA;AACA;;;;;AAOA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../../search/search.service.ts","../../search/search-config.model.ts","../../search/search-grid.component.ts","../../search/search-results.component.ts","../../search/search-action.component.ts","../../search/search-custom-filters.component.ts","../../search/search.module.ts","../../search/columns/asset-type-search-grid-column.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAwBA;AAIE;AACA;AACA;;AAEE;AACA;AACA;AACA;AACD;;;;;;;AAgBD;;;AAGG;;;;;AA2BG;;;;AA2CN;AAOM;AAQN;AAiCA;;;;;AAKG;;;;AAuBJ;;ACtMD;;AAEG;;AAED;;;AAGG;;AAEH;;;AAGG;;AAEJ;;AC8BD;;AAiBW;;AAET;AAOA;AAKA;AAOS;AACT;AAOU;AAGV;;;;AAQA;AACA;AACA;;AAGA;;;;;AAKA;;AAKA;AACA;AAIA;AACA;;;;;AAOA;AAOA;;;;;AA+EA;;AAII;;;AACD;;AAwBH;AAiBA;;;AAoBD;;AC1QD;AAqBI;AACA;AAhBF;AACA;;;AAKA;AACA;AAIA;;AAIU;;AAYV;;;;AAmCA;AAMA;;;AAkBD;;AChGD;;;AAQE;AACA;AAEA;AAEA;AAIA;AACA;;AAEA;;;;;;;AAsCA;;;AAKD;;AC5DK;;;;;;;AAQN;AAMW;AACC;AACA;;;;;AAKR;AACF;AAEA;AAiBA;AAEA;;;;AAMA;AAYA;;;AAiDA;AAYA;AAWA;AAeA;AAIA;AAUA;AAYA;AAYA;;;AAGD;;ACnMD;;;;;AAoCC;;ACrCD;AAEI;AAeF;AA+KD;;;"}
|
|
@@ -4,6 +4,7 @@ import { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';
|
|
|
4
4
|
import { CockpitConfig } from '@c8y/ngx-components/cockpit-config';
|
|
5
5
|
import { Subject, Observable } from 'rxjs';
|
|
6
6
|
import { IManagedObject, IIdentified } from '@c8y/client';
|
|
7
|
+
import { InterpolationParameters, Translation } from '@ngx-translate/core';
|
|
7
8
|
import * as i0 from '@angular/core';
|
|
8
9
|
import { OnInit, OnChanges, SimpleChanges, OnDestroy, TemplateRef } from '@angular/core';
|
|
9
10
|
import { AgentStep } from '@c8y/ngx-components/ai';
|
|
@@ -39,6 +40,7 @@ interface HtmlWidgetOptions {
|
|
|
39
40
|
}
|
|
40
41
|
interface WebcomponentContext extends HTMLElement {
|
|
41
42
|
c8yContext: IManagedObject;
|
|
43
|
+
c8yTranslate: (key: string | string[], interpolateParams?: InterpolationParameters) => Translation;
|
|
42
44
|
}
|
|
43
45
|
interface PathProperty {
|
|
44
46
|
name: string;
|
|
@@ -52,7 +54,7 @@ interface ComputedProperty {
|
|
|
52
54
|
query: string;
|
|
53
55
|
reducer?: string;
|
|
54
56
|
}
|
|
55
|
-
declare const INITIAL_HTML_FORMATTED = "<div>\n <h2>Hello from <span class=\"branded\">HTML widget</span></h2>\n <p class=\"m-b-8 m-t-16\">\n You can use HTML and Javascript template literals here: <br>\n ${this.c8yContext ? this.c8yContext.name : 'No device selected'}\n </p>\n\n <a class=\"btn btn-primary m-b-16\" href=\"#/group\"
|
|
57
|
+
declare const INITIAL_HTML_FORMATTED = "<div>\n <h2>Hello from <span class=\"branded\">HTML widget</span></h2>\n <p class=\"m-b-8 m-t-16\">\n ${this.c8yTranslate('You can use HTML and Javascript template literals here:')} <br>\n ${this.c8yContext ? this.c8yTranslate('Device {{deviceName}} selected', { deviceName: this.c8yContext.name }) : this.c8yTranslate('No device selected')}\n </p>\n\n <a class=\"btn btn-primary m-b-16\" href=\"#/group\">${this.c8yTranslate('Go to groups')}</a>\n\n <p>\n Use the CSS editor to customize the CSS. You can use <span class=\"text-bold\">any design-token CSS variable</span> in there.\n </p>\n\n <p>\n Note that you are only able to translate strings using the c8yTranslate method if they are written in English and their translations are available in the loaded standard or custom translation resources.\n </p>\n</div>";
|
|
56
58
|
declare const INITIAL_CSS_FORMATTED = "\n:host > div {\n padding: var(--c8y-root-component-padding-default);\n}\nspan.branded { \n color: var(--brand-primary, var(--c8y-brand-primary)); \n}";
|
|
57
59
|
declare const defaultWebComponentName = "DefaultWebComponent";
|
|
58
60
|
declare const defaultWebComponentAttributeNameContext = "c8yContext";
|
|
@@ -167,6 +169,7 @@ declare class HtmlFrameComponent implements OnChanges, OnDestroy {
|
|
|
167
169
|
useSalt: boolean;
|
|
168
170
|
alerts: Alert[];
|
|
169
171
|
private sanitizer;
|
|
172
|
+
private translateService;
|
|
170
173
|
private destroy$;
|
|
171
174
|
private hostElement;
|
|
172
175
|
private reload$;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../../../../widgets/implementations/html-widget/html-widget.model.ts","../../../../widgets/implementations/html-widget/html-widget-config.service.ts","../../../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.ts","../../../../widgets/implementations/html-widget/html-ai-chat-feedback.component.ts","../../../../widgets/implementations/html-widget/html-frame/html-frame.component.ts","../../../../widgets/implementations/html-widget/html-widget-config.component.ts","../../../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.ts","../../../../widgets/implementations/html-widget/html-widget.component.ts","../../../../widgets/implementations/html-widget/legacy-template.ts","../../../../widgets/implementations/html-widget/webcomponent-template.ts","../../../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../../../../widgets/implementations/html-widget/html-widget.model.ts","../../../../widgets/implementations/html-widget/html-widget-config.service.ts","../../../../widgets/implementations/html-widget/advanced-settings/advanced-settings.component.ts","../../../../widgets/implementations/html-widget/html-ai-chat-feedback.component.ts","../../../../widgets/implementations/html-widget/html-frame/html-frame.component.ts","../../../../widgets/implementations/html-widget/html-widget-config.component.ts","../../../../widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.ts","../../../../widgets/implementations/html-widget/html-widget.component.ts","../../../../widgets/implementations/html-widget/legacy-template.ts","../../../../widgets/implementations/html-widget/webcomponent-template.ts","../../../../widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;AAKE;;;AAIA;;;;;AAKG;;AAEJ;AAEK;;;;;;;;;AAUL;;;;AAKA;AAEK;;AAEJ;AAID;;;;;;AAOA;;;;;;AAOA;AAED;AAiBA;AAQA;AAEA;;AC3DA;;;;AAGmD;AAAoB;AACrE;AACA;AACA;AAEA;AAgBA;AAEA;AAoBA;AAEA;AAkBA;;;;;AA2CA;AAaA;;;AAsBD;;AC7JD;AAOE;AACA;AACA;AACA;AAEA;;;AAMA;AAIA;;;;AAyBM;;;AAMP;;ACjDD;;AAqBE;;AAEG;;AAEH;;AAEG;AACH;AACA;;AAEG;AACH;AACA;;AAEG;AACH;AACA;;AAEG;AACH;AACA;;AAEG;AACH;AACA;;AAEG;AACH;AAEA;AACA;AAEA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;;AAGG;AACH;AA4BA;;AAEG;;AAKH;AAyBA;;;AAWD;;AC/HD;;AAYE;AAEA;;;;;AAKG;AAEH;;;;;;;;;;;AAmCA;AAKA;;;;;AAsFA;AAUA;AAeA;AAaA;AASA;;AAiBA;;;AAuBD;;ACnQD;;AAeE;AACA;AACA;AAEA;;;AAMD;;ACvBD;AAiBE;AACA;AAEA;;;;AAIG;;;;AAcJ;;AC5CD;;AASE;AAMA;;;AAgBD;;ACrCD;;ACEA;;ACYA;AAmBE;;;AAOA;AAEA;AACA;AACA;;AAEA;;;;;;;;AAeA;AAKA;;AAgCA;AAKA;;;;;AA0BA;;;AAQD;;;"}
|