@c8y/ngx-components 1011.0.33 → 1011.0.35
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/bundles/c8y-ngx-components-sub-assets.umd.js +4 -5
- package/bundles/c8y-ngx-components-sub-assets.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-sub-assets.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-sub-assets.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-upgrade.umd.js +6 -5
- package/bundles/c8y-ngx-components-upgrade.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-upgrade.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-upgrade.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.js +62 -20
- package/bundles/c8y-ngx-components.umd.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.min.js +1 -1
- package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
- package/c8y-ngx-components.metadata.json +1 -1
- package/core/action-bar/action-bar.component.d.ts +22 -6
- package/core/common/outlet.directive.d.ts +7 -0
- package/core/data-grid/data-grid.component.d.ts +3 -0
- package/esm2015/core/action-bar/action-bar.component.js +41 -15
- package/esm2015/core/bootstrap/bootstrap.component.js +2 -2
- package/esm2015/core/common/outlet.directive.js +19 -2
- package/esm2015/core/data-grid/data-grid.component.js +6 -2
- package/esm2015/sub-assets/sub-assets-grid.component.js +6 -7
- package/esm2015/upgrade/action-bar.factory.js +6 -2
- package/esm2015/upgrade/bridge.service.js +2 -5
- package/fesm2015/c8y-ngx-components-sub-assets.js +4 -5
- package/fesm2015/c8y-ngx-components-sub-assets.js.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.js +5 -5
- package/fesm2015/c8y-ngx-components-upgrade.js.map +1 -1
- package/fesm2015/c8y-ngx-components.js +62 -17
- package/fesm2015/c8y-ngx-components.js.map +1 -1
- package/package.json +2 -2
- package/sub-assets/c8y-ngx-components-sub-assets.metadata.json +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts +3 -3
- package/upgrade/action-bar.factory.d.ts +1 -0
- package/upgrade/c8y-ngx-components-upgrade.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../upgrade/ng1/views.provider.ts","../../upgrade/bridge.service.ts","../../upgrade/action-bar.factory.ts","../../upgrade/action.factory.ts","../../upgrade/breadcrumb.factory.ts","../../upgrade/nodes.factory.ts","../../upgrade/tabs.factory.ts","../../upgrade/docs.factory.ts","../../upgrade/auth-bridge.service.ts","../../upgrade/absolute-date.service.ts","../../upgrade/upgrade.module.ts","../../upgrade/ng1/downgraded.components.ts","../../upgrade/ng1/serverMessages.service.ts","../../upgrade/ng1/downgraded.services.ts","../../upgrade/ng1/http.interceptor.ts","../../upgrade/ng1/navigator-node-root-legacy.ts","../../upgrade/ng1/root.component.ts","../../upgrade/ng1/index.ts","../../upgrade/ng1/title.decorator.ts","../../upgrade/ng1/alert.decorator.ts","../../upgrade/ng1/groupsHierarchyNavigator.decorator.ts","../../upgrade/ng1/navigator.provider.ts","../../upgrade/ng1/gettextCatalog.decorator.ts","../../upgrade/hybrid-app.module.ts","../../upgrade/upgrade.routes.ts","../../upgrade/dashboard/dashboard-bridge.service.ts","../../upgrade/dashboard/widget.component.ts","../../upgrade/dashboard/device-selector.component.ts","../../upgrade/dashboard/component.factory.ts","../../upgrade/dashboard/copy-action.component.ts","../../upgrade/dashboard/paste-action.component.ts","../../upgrade/dashboard/dashboard-actions.factory.ts","../../upgrade/dashboard/dashboard-upgrade.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","ViewContextLegacyParameter","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__values","o","s","m","i","__read","r","ar","error","BridgeService","injector","appState","router","ngZone","routerService","actionService","$liveTabs","BehaviorSubject","fixE2eIssues","$ng1RouteChangeSuccess","fromNg1Event","get","$ng1RouteChangeStart","hookLanguage","hookTabs","hookNavigator","hookUserMenu","hookViewProvider","initialNavigation","ng1Routes","prototype","_this","c8yViews","when","template","contextViews","subscribe","cfg","addRoute","name","path","icon","context","ViewContext","contextKey","priority","component","EmptyComponent","data","showIf","ngxRoute","params","assign","_a","id","showIfResult","invoke","undefined","$routeParams","Boolean","runPhase","refresh","fallbackRoutes","match","regexp","RegExp","keys","optional","$route","defineProperty","routes","key","forEach","c8yUiUtil","_getContext","getContext","events","pipe","filter","event","ActivationEnd","snapshot","routeConfig","replace","contextData","ngZone_1","Utils_1","window","org","cometd","Utils","timeoutFn_1","setTimeout","args","_i","arguments","runOutsideAngular","ace_1","ace","editFn_1","edit","ngZone_2","first","map","store","lang","switchToLanguage","$apply","$location","c8yTabs","liveTabs","addTab","tab","decodeURIComponent","url","navigate","split","queryParams","search","skipLocationChange","$routeChanges","merge","EVENT_UPDATE","of","debounceTime","navigationNodes$","rootNodes$","getTabs","onlyVisible","show","upgradeTab","routeTabs","switchMap","all","checkingVisibility","startWith","combineLatest","_b","route","live","concat","getQuickLinks","list","getActionBarItems","c8yActionBar","$rootScope","elements","element","getAttribute","placement","getBreadcrumbs","c8yBreadcrumbs","breadcrumbs","breadcrumbsData","resolveBreadcrumbsData","from","liveBreadcrumbs","getLiveBreadcrumbs","items","ex","isArray","getSearch","c8ySearch","item","term","onSearch","getActions","registeredActions","action","hidden","text","disabled","obj","evt","stopListening","fromEventPattern","handler","$on","userMenuService","c8yAccessDenied","add","gettext","click","showAccessDeniedRequestsList","bridgeServiceFactory","bridgeServiceProvider","provide","useFactory","deps","AppStateService","Router","NgZone","RouterService","ActionService","Ng1ActionBarFactoryService","bridge","routeChanges$","Injectable","Ng1ActionFactoryService","tabs","items$","newTabs","handleTabsRedirect","redirectedTab","find","redirectedTo","topPriorityTab","TabsService","Ng1BreadcrumbFactoryService","trigger","ReplaySubject","Ng1NodesFactoryService","Ng1TabsFactoryService","tabsObservable","Ng1DocsFactoryService","links","el","type","AuthBridgeService","basicAuth","fetchClient","hookAuth","updateBasicAuth","credentials","headers","getFetchOptions","Authorization","updateCredentials","setAuth","currentUser","u","token","setToken","tfatoken","$emit","hasAuth","tfa","c8yAuth","onSetToken","setTFAToken","authReady","authBridgeServiceFactory","authBridgeServiceProvider","BasicAuth","FetchClient","AbsoluteDateService","datePipe","getFilter","transform","absoluteDateServiceFactory","absoluteDateServiceProvider","DatePipe","NgModule","imports","RouterModule","exports","providers","HOOK_NAVIGATOR_NODES","useClass","multi","HOOK_TABS","HOOK_ACTION_BAR","HOOK_ACTION","HOOK_BREADCRUMB","HOOK_DOCS","bootstrapComponent","downgradeComponent","BootstrapComponent","userTotpComponent","UserTotpRevokeComponent","appLogsAutoRefreshComponent","AppLogsAutoRefreshComponent","dataGridComponent","DataGridComponent","loadingComponent","LoadingComponent","rangeDisplayComponent","RangeDisplayComponent","helpComponent","HelpComponent","ServerMessagesService","translateService","patterns","MESSAGE_PATTERNS","translate","instant","TranslateService","Inject","HOOK_PATTERN_MESSAGES","absoluteDateService","downgradeInjectable","bridgeService","authBridgeService","appStateService","headerService","HeaderService","alertsService","AlertService","UserMenuService","apiService","ApiService","docsService","DocsService","passwordService","PasswordService","cachedLocaleDictionaryService","CachedLocaleDictionaryService","serverMessagesService","bulkOperationDetailsService","BulkOperationDetailsService","c8yNg1HttpInterceptor","$q","c8yLoadingIndicator","c8yApiService","finishRequest","res","config","method","onFinish","response","options","request","onStart","requestError","rejection","responseError","NavigatorNodeRootLegacy","_super","__","constructor","create","__extends","addRoot","nodeData","duplicate","parent","preventDuplicates","parents","some","routerLinkExact","createNode","node","newNode","update","bind","root","defineProperties","realName","_parent","addChild","nodeChild","set","NavigatorNodeRoot","rootComponent","controller","$timeout","c8yBase","c8yNavigator","c8yApplication","c8yHeaderService","vm","onAuthStateChange","authState","onAppInfo","tabsHorizontal","appOption","checkReady","document","querySelector","clientWidth","widthSet","$onInit","states","nav","open","isOpen","navOpen","configNavigator","canToggle","rootNodes","currentAppCached","navHiddenOnStartup","controllerAs","NAME","preventNg1Bootstrap","angular","module","$httpProvider","ng1InterceptorIndex","interceptors","indexOf","splice","directive","factory","service","QueriesUtil","decorator","$delegate","$injector","$templateCache","$compile","changeTitle","newTitleSubtitleObjOrPromise","skipTitleTranslation","skipSubtitleTranslation","newTitleSubtitleObj","changeTitleInAngular","_c","title","_d","subtitle","_e","_f","isolatedScope","$new","domElement","setTitleElement","$element","templateUrl","targetScope","alert","addAlert","transformAlert","allNames","Set","getPrototypeOf","e_1","getOwnPropertyNames","newAlert","onClose","onDetail","property","loadAll","addGroupNavigation","provider","rootNodesSubject","Subject","conditionalNodes","defer","children","addNavigation","nodes","showIfPermissions","showIfContainsVisibleViews","isConditional","navNode","removeNavigation","found","remove","findNode","$get","processShowIf","visibilityPromises","views","getByPath","view","configureVisibility","pick","viewsConditionalVisibility","every","visible","showIfPermission","$routeProvider","c8yTabsProvider","c8yPathUtils","viewMap","prefixWithSlash","newPath","__c8y_locales","c8yLocales","initDone","currentCfg","originalPath","upgradedContext","isUpgrade","appendSegment","substring","existingConfig","createTab","resolveRedirectTo","gettextCatalog","sortedCurrentCfg","sortTabsViews","current","pathParams","unary","val","redirectedViewPath","startsWith","$interpolate","c8yTranslate","originalGetString","getString","input","scope","translatedString","interpolatedString","stringToReturn","ng1Modules","HybridAppModule","ngDoBootstrap","bootstrap","upgrade","getElementById","strictDi","UPGRADE_ROUTES","DashboardBridgeService","ng1Injector","zone","contextDashboardService","actionBarService","dashboardSvc","compile","instantiateComponent","widget","dashboard","child","transformChildWithContext","forcedContext","transformedChild_1","deviceType","updateConfigTargetsWithContext","loadTemplate","loadConfigTemplate","editDashboard","editCurrentDashboard","dashboardId","copyDashboard","getDashboard","c8y_Dashboard","dashboardClipboard","pasteDashboard","newDashboard","navigateToDashboard","instantiateDeviceSelector","widgetConfig","transformedChild","dashboardContext","widgetComponent","innerHTML","test","relativeTo","getActivatedRoute","onlyDeviceSelector","settings","ng1","forms","rootId","configCmp","configComponent","configTemplateUrl","$watch","formStatus","formDisabled","componentForm","$invalid","ContextDashboardService","ActionBarService","WidgetComponent","dashboardBridgeService","ngOnInit","nativeElement","ng1Scope","resizeSubscription","onChangeDashboard","$broadcast","ngOnDestroy","$destroy","unsubscribe","Component","selector","changeDetection","ChangeDetectionStrategy","OnPush","WidgetsDashboardComponent","decorators","Optional","ElementRef","DeviceSelectorComponent","Ng1ComponentFactoryService","ng1Components","components","cmp","transformConfigWithContext","componentTransformConfigWithContext","nameDisplay","description","previewImage","noNewWidgets","CopyActionComponent","vcRef","createEmbeddedView","templateCopy","ViewContainerRef","ViewChild","read","TemplateRef","static","PasteActionComponent","dashboardName","templatePaste","Ng1DashboardActionFactoryService","activeRoute","actions","canCopy","Device","Group","includes","canPaste","dashboardBridgeFactory","declarations","entryComponents","CommonModule","C8yTranslateModule","HOOK_COMPONENTS"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { startsWith, unary, map, find, forEach } from 'lodash-es';\nimport { ViewContext } from '@c8y/ngx-components';\nimport { ReplaySubject } from 'rxjs';\n\nexport enum ViewContextLegacyParameter {\n Device = 'deviceId',\n Group = 'groupId',\n User = 'userId',\n Application = 'applicationId',\n SubscribedApplications = 'applicationId',\n Tenant = 'tenantId'\n}\n\nfunction c8yViewsProvider($routeProvider, c8yTabsProvider, c8yPathUtils) {\n 'ngInject';\n\n const viewMap = {};\n const contextViews = new ReplaySubject();\n\n return {\n when,\n $get() {\n return {\n contextViews,\n when(path, cfg) {\n return when(path, cfg, true);\n },\n getByPath,\n prefixWithSlash\n };\n }\n };\n\n /**\n * @ngdoc function\n * @name when\n * @methodOf c8y.ui.provider:c8yViewsProvider\n *\n * @description\n * Defines a view for given route.\n * If multiple views are defined for a single route then there will be a separate tab for each view available when user visits that route.\n *\n * @param path Target route.\n * @param cfg View configuration object with the following properties:\n *\n * - **name** - `string` - View's name (in case of multiple views at single route this will be displayed as tab's title).\n * - **priority** - `integer` - View's priority (in case of multiple views at single route this will determine the position of view's tab in the tabs stack).\n * - **icon** - `string` - Font Awesome icon name for the view (displayed on the tab's header).\n * - **showIf** - `function` - Function returning boolean value indicating whether to show a tab for the view or not.\n * - **templateUrl** - `string` - Path to the template to use for displaying the view.\n *\n * You can also provide other view options - the same as available for standard {@link https://docs.angularjs.org/api/ngRoute/provider/$routeProvider $routeProvider} in AngularJS.\n *\n * @example\n * The following example demonstrates how to add a new view to device details route\n * (which will be displayed as a tab if other views are assigned to the same route):\n * <pre>\n * c8yViewsProvider.when('/device/:deviceId', {\n * name: 'Tracking',\n * templateUrl: ':::PLUGIN_PATH:::/views/index.html',\n * icon: 'crosshairs',\n * showIf: ['$routeParams', 'c8yDevices', function ($routeParams, c8yDevices) {\n * var deviceId = $routeParams.deviceId;\n * return c8yDevices.detailCached(deviceId).then(function (res) {\n * var device = res.data;\n * return device && (device.c8y_MotionTracking || device.c8y_Geofence);\n * });\n * }]\n * });\n * </pre>\n */\n function when(path, cfg, runPhase) {\n const newPath = prefixWithSlash(path);\n cfg.resolve = cfg.resolve || {};\n // eslint-disable-next-line no-underscore-dangle\n cfg.resolve.__c8y_locales = [\n 'c8yLocales',\n c8yLocales => {\n return c8yLocales.initDone;\n }\n ];\n\n let currentCfg = viewMap[newPath];\n const originalPath = newPath;\n\n if (!cfg.name) {\n // console.warn('View name not defined');\n }\n\n if (!currentCfg) {\n viewMap[newPath] = [];\n currentCfg = viewMap[newPath];\n }\n\n const upgradedContext = Object.keys(ViewContext)\n .map(key => ({\n key,\n isUpgrade:\n prefixWithSlash(ViewContext[key].replace('id', ViewContextLegacyParameter[key])) === path\n }))\n .find(({ isUpgrade }) => isUpgrade);\n\n if (upgradedContext) {\n currentCfg.push(cfg);\n cfg.path = newPath;\n\n const p = c8yPathUtils.appendSegment(originalPath.replace(path, ''), cfg.name);\n contextViews.next({\n ...cfg,\n path: cfg.name ? p.substring(1) : '',\n contextKey: upgradedContext.key,\n runPhase\n });\n cfg.showIf = undefined;\n if (cfg.name) {\n cfg.path = c8yPathUtils.appendSegment(originalPath, cfg.name);\n }\n } else {\n if (currentCfg.length === 1) {\n const [existingConfig] = currentCfg;\n existingConfig.path = c8yPathUtils.appendSegment(originalPath, existingConfig.name);\n existingConfig.tab = createTab(originalPath, existingConfig);\n $routeProvider.when(existingConfig.path, existingConfig);\n }\n\n currentCfg.push(cfg);\n cfg.path = newPath;\n\n if (currentCfg.length > 1) {\n cfg.path = c8yPathUtils.appendSegment(originalPath, cfg.name);\n createTab(originalPath, cfg);\n\n $routeProvider.when(prefixWithSlash(originalPath), {\n resolveRedirectTo($route, $q, c8yUiUtil, c8yTabs, gettextCatalog) {\n 'ngInject';\n\n const sortedCurrentCfg = c8yTabsProvider.sortTabsViews(currentCfg, gettextCatalog);\n const params = $route.current.pathParams;\n\n return $q\n .all(map(sortedCurrentCfg, unary(c8yUiUtil.configureVisibility)))\n .then(views => {\n const first = find(views, 'show');\n let url = first.path;\n forEach(params, (val, key) => {\n url = url.replace(`:${key}`, val);\n });\n c8yTabs.redirectedViewPath = url;\n return url;\n });\n }\n });\n }\n }\n return $routeProvider.when(prefixWithSlash(cfg.path), cfg);\n }\n\n function getByPath(path) {\n return viewMap[prefixWithSlash(path)];\n }\n\n function createTab(path, cfg) {\n c8yTabsProvider.addTab(path, cfg);\n }\n\n function prefixWithSlash(path) {\n const prefix = startsWith(path, '/') ? '' : '/';\n return prefix + path;\n }\n}\n\nexport { c8yViewsProvider };\n","import {\n Action,\n ActionBarItem,\n ActionService,\n AppStateService,\n Breadcrumb,\n BreadcrumbItem,\n EmptyComponent,\n RouterService,\n Search,\n Tab,\n ViewContext,\n gettext,\n DocLink\n} from '@c8y/ngx-components';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n from,\n fromEventPattern,\n of\n} from 'rxjs';\nimport { debounceTime, filter, map, merge, skip, startWith, switchMap } from 'rxjs/operators';\nimport { isArray } from 'lodash-es';\n\nimport { ActivationEnd } from '@angular/router';\nimport { NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ViewContextLegacyParameter } from './ng1/views.provider';\n\nexport class BridgeService {\n $routeChanges: Observable<any>;\n $ng1RouteChangeSuccess: Observable<any>;\n $ng1RouteChangeStart: Observable<any>;\n $liveTabs: Subject<Tab[]> = new BehaviorSubject([]);\n navigationNodes$: Observable<any>;\n constructor(\n public injector: any,\n private appState: AppStateService,\n public router: Router,\n private ngZone: NgZone,\n private routerService: RouterService,\n private actionService: ActionService\n ) {\n this.fixE2eIssues();\n this.$ng1RouteChangeSuccess = this.fromNg1Event(\n this.injector.get('$rootScope'),\n '$routeChangeSuccess'\n );\n this.$ng1RouteChangeStart = this.fromNg1Event(\n this.injector.get('$rootScope'),\n '$routeChangeStart'\n );\n this.hookLanguage();\n this.hookTabs();\n this.hookNavigator();\n this.hookUserMenu();\n this.hookViewProvider();\n this.router.initialNavigation();\n this.ng1Routes();\n }\n\n hookViewProvider() {\n const c8yViews = this.injector.get('c8yViews');\n // fix to trigger an angularjs route change success\n // event on context route match to make legacy\n // view-providers resolve.\n c8yViews.when('/device/:id', {\n template: ''\n });\n c8yViews.when('/group/:id', {\n template: ''\n });\n c8yViews.contextViews.subscribe(cfg => this.addRoute(cfg));\n }\n\n addRoute(cfg) {\n this.routerService.addRoute({\n label: cfg.label || cfg.name,\n path: cfg.path,\n icon: cfg.icon,\n context: ViewContext[cfg.contextKey] as ViewContext,\n priority: cfg.priority,\n component: EmptyComponent,\n data: {\n showIf: cfg.showIf\n ? ngxRoute => {\n const params = {\n ...ngxRoute.params,\n [ViewContextLegacyParameter[cfg.contextKey]]: ngxRoute.params.id\n };\n const showIfResult = this.injector.invoke(cfg.showIf, undefined, {\n $routeParams: params\n });\n // make sure showIf result is a promise with boolean result:\n return this.injector\n .get('$q')\n .when(showIfResult)\n .then(Boolean);\n }\n : undefined\n }\n });\n\n if (cfg.runPhase) {\n this.routerService.refresh();\n }\n }\n\n ng1Routes() {\n const template = '';\n const fallbackRoutes = [];\n\n // tslint:disable-next-line: forin\n for (const context in ViewContext) {\n const path = ViewContext[context].match(/(\\w+)\\//)[1];\n const regexp = new RegExp(`^/${path}/(?:([^/]+)).*$`);\n fallbackRoutes.push({\n keys: [{ name: ViewContextLegacyParameter[context], optional: false }],\n regexp,\n template\n });\n }\n\n /**\n * When asset detail routes (/device/:id, /group/:id) are matched in Angular Router, ngRoute in\n * angular.js must also have matching generic routes so that the ids can be extracted from the paths and\n * injected in multiple calls (showIf, c8yActions, etc) as properties of $routeParams.\n *\n * The function in src/ngRoute/route.js (angular.js) where the routes are matched is called parseRoute(). This\n * function calls angular.forEach and in turn this function checks for the presence of a forEach method before\n * trying object key iteration.\n * By attaching a non enumerable forEach method to the routes object we guarantee that the fallback generic routes\n * are only matched after any other registered through $routeProvider.when.\n */\n const $route = this.injector.get('$route');\n Object.defineProperty($route.routes, 'forEach', {\n // make non enumerable\n value: function forEach(iterator, context) {\n // tslint:disable-next-line: forin\n for (const key in this) {\n iterator.call(context, this[key], key, this);\n }\n fallbackRoutes.forEach(r => iterator.call(context, r));\n }\n });\n\n /**\n * Some functions use the current context. As some parts are upgraded and some not, the following updates the\n * angularjs getContext function to resolve always the right context.\n */\n const c8yUiUtil = this.injector.get('c8yUiUtil');\n const _getContext = c8yUiUtil.getContext;\n this.router.events\n .pipe(filter(event => event instanceof ActivationEnd))\n .subscribe((event: ActivationEnd) => {\n if (event.snapshot.routeConfig.path === '**') {\n c8yUiUtil.getContext = _getContext;\n } else if (event.snapshot.data && event.snapshot.data.context) {\n c8yUiUtil.getContext = () => {\n return {\n context: event.snapshot.data.context.replace('/:id', ''),\n id: event.snapshot.data.contextData.id\n };\n };\n } else {\n c8yUiUtil.getContext = () => ({ context: null, id: null });\n }\n });\n }\n\n fixE2eIssues() {\n try {\n const { ngZone } = this;\n const { Utils } = (window as any).org.cometd;\n const timeoutFn = Utils.setTimeout;\n // tslint:disable-next-line:only-arrow-functions\n Utils.setTimeout = function(...args) {\n return ngZone.runOutsideAngular(() => timeoutFn.apply(Utils, args));\n };\n } catch (e) {\n // do nothing\n }\n\n try {\n const { ace } = window as any;\n const editFn = ace.edit;\n const { ngZone } = this;\n // tslint:disable-next-line:only-arrow-functions\n ace.edit = function(...args) {\n return ngZone.runOutsideAngular(() => editFn.apply(ace, args));\n };\n } catch (e) {\n // do nothing\n }\n }\n\n hookLanguage() {\n let first = true;\n this.appState\n .map(store => store.lang)\n .subscribe(lang => {\n this.injector.get('c8yLocales').switchToLanguage(lang);\n if (!first) {\n this.injector.get('$rootScope').$apply();\n }\n first = false;\n });\n }\n\n hookTabs() {\n // Just for instantiation of the c8yAction service\n this.injector.get('c8yActions');\n const $location = this.injector.get('$location');\n const c8yTabs = this.injector.get('c8yTabs');\n let liveTabs = [];\n c8yTabs.addTab = tab => {\n liveTabs.push({\n ...tab,\n label: tab.label || tab.name,\n path: decodeURIComponent(tab.path)\n });\n this.$liveTabs.next(liveTabs);\n };\n this.$ng1RouteChangeStart.subscribe(e => {\n liveTabs = [];\n this.$liveTabs.next(liveTabs);\n });\n this.$ng1RouteChangeSuccess.subscribe(e => {\n const path = $location.path();\n if (this.router.url !== path) {\n this.router.navigate(path === '/' ? '' : path.split('/'), {\n queryParams: $location.search(),\n skipLocationChange: true\n });\n }\n if (this.actionService) {\n this.actionService.refresh();\n }\n });\n this.$routeChanges = this.$ng1RouteChangeSuccess.pipe(\n merge(this.fromNg1Event(c8yTabs, c8yTabs.EVENT_UPDATE), of(1)),\n debounceTime(100)\n );\n }\n\n hookNavigator() {\n this.navigationNodes$ = this.injector.get('c8yNavigator').rootNodes$;\n }\n\n getTabs(): Observable<any> {\n const onlyVisible = ({ show }) => show;\n const upgradeTab = tab => ({\n ...tab,\n label: tab.label || tab.name,\n path: decodeURIComponent(tab.path)\n });\n const routeTabs = this.$routeChanges.pipe(\n switchMap(() => {\n const routes = this.injector.get('c8yTabs').routeTabs;\n const visibilityPromise = Promise.all(\n routes.map(({ checkingVisibility }) => checkingVisibility)\n );\n return visibilityPromise.then(() => routes.filter(onlyVisible).map(upgradeTab));\n }),\n startWith([])\n );\n return combineLatest(routeTabs, this.$liveTabs).pipe(\n map(([route, live]) => route.concat(live))\n );\n }\n\n getQuickLinks(): Promise<DocLink[]> {\n const c8yQuickLinks = this.injector.get('c8yQuickLinks');\n return c8yQuickLinks.list();\n }\n\n getActionBarItems(): Observable<ActionBarItem> {\n const c8yActionBar = this.injector.get('c8yActionBar');\n const $rootScope = this.injector.get('$rootScope');\n const getActionBarElements = () =>\n c8yActionBar.elements.map(element => ({\n priority: element.getAttribute('action-bar-priority') || 0,\n template: element,\n placement: element.getAttribute('action-bar-position') || 'right'\n }));\n return this.fromNg1Event($rootScope, 'c8yActionBarChanged').pipe(\n startWith(1),\n map(getActionBarElements)\n );\n }\n\n getBreadcrumbs(): Observable<Breadcrumb[]> {\n const $location = this.injector.get('$location');\n const path = $location.path();\n const c8yBreadcrumbs = this.injector.get('c8yBreadcrumbs');\n const breadcrumbs = c8yBreadcrumbs.get(path) || {};\n const breadcrumbsData = this.resolveBreadcrumbsData(breadcrumbs.data);\n return from(breadcrumbsData).pipe(\n map((value: any[]) => {\n const liveBreadcrumbs = c8yBreadcrumbs.getLiveBreadcrumbs();\n value = value.concat(liveBreadcrumbs);\n return value.map(\n items => ({ items: items as BreadcrumbItem[] } as Breadcrumb)\n );\n })\n );\n }\n\n resolveBreadcrumbsData(data): Observable<any[]> {\n try {\n return this.injector.invoke(data);\n } catch (ex) {\n // empty\n }\n if (isArray(data)) {\n return of([data]);\n }\n return of([]);\n }\n\n getSearch(): Search[] {\n const c8ySearch = this.injector.get('c8ySearch');\n return c8ySearch.list().map(item => {\n return {\n icon: 'search',\n name: item.name,\n term: '',\n onSearch() {\n if (this.term) {\n c8ySearch.search(this.term);\n }\n }\n } as Search;\n });\n }\n\n getActions(): Observable<Action> {\n const registeredActions = this.injector.get('c8yActions').registeredActions;\n return of(\n registeredActions\n .filter(action => !action.hidden)\n .map(action => ({\n // The priority was reversed: Aligned it to dashboard, high first, low last.\n priority: (action.priority || 0) * -1,\n label: action.text,\n icon: action.icon,\n disabled: action.disabled,\n action: () => {\n this.injector.invoke(action.action, action);\n }\n }))\n );\n }\n\n fromNg1Event(obj, evt) {\n let stopListening;\n function add(handler) {\n stopListening = obj.$on(evt, handler);\n }\n return fromEventPattern(add, () => stopListening());\n }\n\n private hookUserMenu() {\n const userMenuService = this.injector.get('c8yUserMenuService');\n const c8yAccessDenied = this.injector.get('c8yAccessDenied');\n userMenuService.add({\n icon: 'access',\n priority: 10,\n label: gettext('Access denied requests'),\n click: c8yAccessDenied.showAccessDeniedRequestsList\n });\n }\n}\n\nexport function bridgeServiceFactory(\n injector: any,\n appState: AppStateService,\n router: Router,\n ngZone: NgZone,\n routerService: RouterService,\n actionService: ActionService\n) {\n return new BridgeService(injector, appState, router, ngZone, routerService, actionService);\n}\n\nexport const bridgeServiceProvider = {\n provide: BridgeService,\n useFactory: bridgeServiceFactory,\n deps: ['$injector', AppStateService, Router, NgZone, RouterService, ActionService]\n};\n","import { Injectable } from '@angular/core';\nimport { ActionBarFactory, ActionBarItem } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class Ng1ActionBarFactoryService implements ActionBarFactory {\n routeChanges$: Observable<any>;\n constructor(\n private bridge: BridgeService\n ) {\n this.routeChanges$ = bridge.$routeChanges;\n }\n\n get(): Observable<ActionBarItem> {\n return this.bridge.getActionBarItems();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, ActionFactory, TabsService } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class Ng1ActionFactoryService implements ActionFactory {\n routeChanges$: Observable<any>;\n $location: any;\n constructor(\n private bridge: BridgeService,\n private tabs: TabsService\n ) {\n this.routeChanges$ = bridge.$routeChanges;\n this.$location = bridge.injector.get('$location');\n this.tabs.items$.subscribe((newTabs) => this.handleTabsRedirect(newTabs));\n }\n\n handleTabsRedirect(tabs) {\n /**\n * This function is doing the same process as function redirect in the file\n * modules/core/ui/navigation/tabs.provider.js\n * That function is not run because bridge.service.ts overrides the method addTab where the redirect() was called.\n */\n const redirectedTab = tabs.find((tab) => tab.redirectedTo);\n const [ topPriorityTab ] = tabs;\n if (redirectedTab && !topPriorityTab.redirectedTo) {\n this.$location.replace();\n this.$location.path(topPriorityTab.path);\n topPriorityTab.redirectedTo = true;\n redirectedTab.redirectedTo = false;\n }\n }\n\n get() {\n return this.bridge.getActions();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BreadcrumbFactory } from '@c8y/ngx-components';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport { BridgeService } from './bridge.service';\n\n@Injectable()\nexport class Ng1BreadcrumbFactoryService implements BreadcrumbFactory {\n private trigger: any = new ReplaySubject(1);\n private breadcrumbs = this.trigger.pipe(\n debounceTime(100),\n switchMap(() => {\n return this.bridge.getBreadcrumbs();\n })\n );\n constructor(\n private bridge: BridgeService\n ) {}\n\n get() {\n this.trigger.next();\n return this.breadcrumbs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class Ng1NodesFactoryService implements NavigatorNodeFactory {\n constructor(\n private bridge: BridgeService\n ) {}\n\n get() {\n return this.bridge.navigationNodes$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TabFactory } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class Ng1TabsFactoryService implements TabFactory {\n tabsObservable;\n constructor(private bridge: BridgeService) {\n this.tabsObservable = bridge.getTabs();\n }\n get() {\n return this.tabsObservable;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DocLinkFactory, DocLink } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\n\n@Injectable()\nexport class Ng1DocsFactoryService implements DocLinkFactory {\n private links: Promise<DocLink[]>;\n constructor(private bridge: BridgeService) {\n this.links = this.bridge.getQuickLinks();\n this.links.then(list => {\n list.map(el => {\n el.type = el.type || 'quicklink';\n return el;\n });\n });\n }\n\n get() {\n return this.links;\n }\n}\n","import {\n AppStateService,\n} from '@c8y/ngx-components';\nimport { BasicAuth, FetchClient, ICredentials } from '@c8y/client';\n\nexport class AuthBridgeService {\n constructor(\n public injector: any,\n private basicAuth: BasicAuth,\n private fetchClient: FetchClient,\n private appState: AppStateService\n ) {\n this.hookAuth();\n }\n\n updateBasicAuth(credentials: ICredentials) {\n const { headers } = this.fetchClient.getFetchOptions({});\n if (headers.Authorization) {\n const token = headers.Authorization.match(/basic\\s(.*)$/i)[1];\n if (token) {\n this.basicAuth.updateCredentials(credentials);\n this.fetchClient.setAuth(this.basicAuth);\n }\n }\n }\n\n hookAuth() {\n this.appState.currentUser.subscribe(u => {\n if (u) {\n this.injector.get('c8yAuth').headers = () => this.fetchClient.getFetchOptions({}).headers;\n const { headers } = this.fetchClient.getFetchOptions({});\n if (headers.Authorization) {\n const token = headers.Authorization.match(/basic\\s(.*)$/i)[1];\n if (token) {\n this.setToken(token, headers.tfatoken);\n }\n } else {\n this.setToken(undefined, headers.tfatoken, 'Oauth');\n }\n this.injector.get('$rootScope').$emit('authStateChange', { hasAuth: true });\n } else {\n this.injector.get('$rootScope').$emit('authStateChange', { hasAuth: false });\n }\n });\n }\n\n setToken(token?: string, tfa?: string, type = 'Basic') {\n const c8yAuth = this.injector.get('c8yAuth');\n if (type === 'Basic') {\n c8yAuth.onSetToken({ token, type });\n if (tfa) {\n c8yAuth.setTFAToken(tfa);\n }\n } else {\n c8yAuth.authReady();\n }\n }\n}\n\nexport function authBridgeServiceFactory(\n injector: any,\n basicAuth: BasicAuth,\n fetchClient: FetchClient,\n appState: AppStateService\n) {\n return new AuthBridgeService(injector, basicAuth, fetchClient, appState);\n}\n\nexport const authBridgeServiceProvider = {\n provide: AuthBridgeService,\n useFactory: authBridgeServiceFactory,\n deps: ['$injector', BasicAuth, FetchClient, AppStateService]\n};\n","import {DatePipe} from '@c8y/ngx-components';\n\nexport class AbsoluteDateService {\n constructor(private datePipe: DatePipe) {}\n getFilter() {\n return (value: any) => this.datePipe.transform(value);\n }\n }\nexport function absoluteDateServiceFactory(datePipe: DatePipe) {\n return new AbsoluteDateService(datePipe).getFilter();\n}\nexport const absoluteDateServiceProvider = {\n provide: AbsoluteDateService,\n useFactory: absoluteDateServiceFactory,\n deps: [DatePipe]\n};\n","import { bridgeServiceProvider } from './bridge.service';\nimport {\n HOOK_ACTION,\n HOOK_ACTION_BAR,\n HOOK_BREADCRUMB,\n HOOK_NAVIGATOR_NODES,\n HOOK_TABS,\n HOOK_DOCS,\n RouterModule\n} from '@c8y/ngx-components';\nimport { Ng1ActionBarFactoryService } from './action-bar.factory';\nimport { Ng1ActionFactoryService } from './action.factory';\nimport { Ng1BreadcrumbFactoryService } from './breadcrumb.factory';\nimport { Ng1NodesFactoryService } from './nodes.factory';\nimport { Ng1TabsFactoryService } from './tabs.factory';\nimport { NgModule } from '@angular/core';\nimport { Ng1DocsFactoryService } from './docs.factory';\nimport { authBridgeServiceProvider } from './auth-bridge.service';\nimport { absoluteDateServiceProvider } from './absolute-date.service';\n\n@NgModule({\n imports: [RouterModule],\n exports: [],\n providers: [\n absoluteDateServiceProvider,\n bridgeServiceProvider,\n authBridgeServiceProvider,\n { provide: HOOK_NAVIGATOR_NODES, useClass: Ng1NodesFactoryService, multi: true },\n { provide: HOOK_TABS, useClass: Ng1TabsFactoryService, multi: true },\n { provide: HOOK_ACTION_BAR, useClass: Ng1ActionBarFactoryService, multi: true },\n { provide: HOOK_ACTION, useClass: Ng1ActionFactoryService, multi: true },\n { provide: HOOK_BREADCRUMB, useClass: Ng1BreadcrumbFactoryService, multi: true },\n { provide: HOOK_DOCS, useClass: Ng1DocsFactoryService, multi: true }\n ]\n})\nexport class UpgradeModule {}\n","import { downgradeComponent } from '@angular/upgrade/static';\nimport {\n BootstrapComponent,\n DataGridComponent,\n UserTotpRevokeComponent,\n LoadingComponent\n} from '@c8y/ngx-components';\nimport { AppLogsAutoRefreshComponent } from '@c8y/ngx-components/app-logs';\nimport { RangeDisplayComponent } from '@c8y/ngx-components';\nimport { HelpComponent } from '@c8y/ngx-components';\nexport const bootstrapComponent = downgradeComponent({ component: BootstrapComponent });\nexport const userTotpComponent = downgradeComponent({ component: UserTotpRevokeComponent });\nexport const appLogsAutoRefreshComponent = downgradeComponent({\n component: AppLogsAutoRefreshComponent\n});\nexport const dataGridComponent = downgradeComponent({ component: DataGridComponent });\nexport const loadingComponent = downgradeComponent({ component: LoadingComponent });\nexport const rangeDisplayComponent = downgradeComponent({ component: RangeDisplayComponent });\nexport const helpComponent = downgradeComponent({ component: HelpComponent });\n","import { Injectable, Inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HOOK_PATTERN_MESSAGES } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ServerMessagesService {\n\n MESSAGE_PATTERNS: any;\n constructor(\n private translateService: TranslateService,\n @Inject(HOOK_PATTERN_MESSAGES) patterns\n ) {\n this.MESSAGE_PATTERNS = patterns;\n }\n\n translate(s: string) {\n return this.translateService.instant(s);\n }\n}\n","import { downgradeInjectable } from '@angular/upgrade/static';\nimport {\n AlertService,\n AppStateService,\n DocsService,\n HeaderService,\n PasswordService,\n UserMenuService,\n CachedLocaleDictionaryService\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { BulkOperationDetailsService } from '@c8y/ngx-components/operations/bulk-operations-list';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BridgeService } from '../bridge.service';\nimport { AbsoluteDateService } from '../absolute-date.service';\nimport { ServerMessagesService } from './serverMessages.service';\nimport { AuthBridgeService } from '../auth-bridge.service';\n\nexport const absoluteDateService = downgradeInjectable(AbsoluteDateService);\nexport const bridgeService = downgradeInjectable(BridgeService);\nexport const authBridgeService = downgradeInjectable(AuthBridgeService);\nexport const appStateService = downgradeInjectable(AppStateService);\nexport const headerService = downgradeInjectable(HeaderService);\nexport const alertsService = downgradeInjectable(AlertService);\nexport const userMenuService = downgradeInjectable(UserMenuService);\nexport const apiService = downgradeInjectable(ApiService);\nexport const docsService = downgradeInjectable(DocsService);\nexport const passwordService = downgradeInjectable(PasswordService);\nexport const translateService = downgradeInjectable(TranslateService);\nexport const cachedLocaleDictionaryService = downgradeInjectable(CachedLocaleDictionaryService);\nexport const serverMessagesService = downgradeInjectable(ServerMessagesService);\nexport const bulkOperationDetailsService = downgradeInjectable(BulkOperationDetailsService);\n","function c8yNg1HttpInterceptor(\r\n $q,\r\n c8yLoadingIndicator,\r\n c8yApiService\r\n) {\r\n 'ngInject';\r\n\r\n function request(config) {\r\n const { url, method } = config;\r\n c8yApiService.onStart({ url, method, options: config });\r\n return config;\r\n }\r\n\r\n function requestError(rejection) {\r\n finishRequest(rejection);\r\n return $q.reject(rejection);\r\n }\r\n\r\n function response(res) {\r\n finishRequest(res);\r\n return res;\r\n }\r\n\r\n function responseError(rejection) {\r\n finishRequest(rejection);\r\n c8yLoadingIndicator.responseError(rejection);\r\n return $q.reject(rejection);\r\n }\r\n\r\n function finishRequest(res) {\r\n const { url, method } = res.config;\r\n c8yApiService.onFinish({\r\n url,\r\n method,\r\n response: res,\r\n options: res.config\r\n });\r\n }\r\n\r\n return {\r\n request,\r\n requestError,\r\n response,\r\n responseError\r\n };\r\n}\r\n\r\nexport { c8yNg1HttpInterceptor };\r\n","import { NavigatorNodeRoot, NavigatorNode } from '@c8y/ngx-components';\nimport { assign } from 'lodash-es';\n\nexport class NavigatorNodeRootLegacy extends NavigatorNodeRoot {\n\n addRoot(nodeData): NavigatorNode {\n let duplicate;\n if (nodeData.path === '') {\n nodeData.path = '/';\n }\n nodeData.label = nodeData.name;\n if (typeof nodeData.parent === 'object') {\n nodeData.parent.label = nodeData.parent.name;\n }\n\n if (nodeData.preventDuplicates) {\n duplicate = this.find(({ path, parents, label}) => {\n return path === nodeData.path &&\n (label === nodeData.label) &&\n parents.some((p) => p.label === nodeData.parent);\n });\n if (duplicate) {\n duplicate.routerLinkExact = false;\n }\n }\n\n return duplicate || super.addRoot(nodeData);\n }\n\n createNode(node) {\n const newNode = super.createNode(node);\n const update = newNode.update.bind(newNode);\n const root = this;\n return Object.defineProperties(assign(newNode, {\n realName: (newNode as any).name || newNode.label,\n _parent: true, // just use it to detect if it has been deleted\n update(data) {\n if (this._parent === undefined) {\n // _parent was deleted somene instead to put this in root\n root.addRoot(this);\n // put it back so it can be deleted again\n this._parent = true;\n }\n update(data);\n },\n addChild(nodeChild) {\n this.add(root.createNode(nodeChild));\n }\n }), {\n label: {\n get() {\n return this.realName || '';\n },\n set(name) {\n this.realName = name;\n }\n },\n name: {\n get() {\n return this.realName || '';\n },\n set(name) {\n this.realName = name;\n }\n },\n show: {\n get() {\n return !this.hidden;\n },\n set(show) {\n this.hidden = !show;\n }\n }\n });\n }\n}\n","const rootComponent = {\n template: `\n <c8y-bootstrap>\n <div id=\"c8y-legacy-view\">\n <div ng-view ng-if=\"vm.widthSet && vm.authState.hasAuth\"></div>\n </div>\n </c8y-bootstrap>`,\n controller: c8yUiRootController,\n controllerAs: 'vm'\n};\n\nfunction c8yUiRootController(\n $rootScope,\n $timeout,\n c8yBase,\n c8yNavigator,\n c8yApplication,\n c8yHeaderService\n) {\n 'ngInject';\n const vm = this;\n\n Object.assign(vm, {\n $onInit,\n navOpen: false\n });\n\n ////////////\n\n function $onInit() {\n c8yHeaderService.map((states) => states.nav.open).subscribe((isOpen) => {\n vm.navOpen = isOpen;\n });\n c8yHeaderService.configNavigator({canToggle: true});\n $rootScope.$on('authStateChange', onAuthStateChange);\n vm.rootNodes = c8yNavigator.rootNodes;\n c8yApplication.currentAppCached().then(onAppInfo);\n vm.navHiddenOnStartup = c8yBase.appOption('hide_navigator');\n checkReady();\n }\n\n function onAuthStateChange(evt, data) {\n vm.authState = data;\n }\n\n function onAppInfo() {\n vm.tabsHorizontal = c8yBase.appOption('tabsHorizontal');\n }\n\n function checkReady() {\n const element = document.querySelector('#c8y-legacy-view');\n const hasWidth = element && element.clientWidth;\n if (hasWidth) {\n vm.widthSet = true;\n } else {\n $timeout(checkReady);\n }\n }\n}\nexport { rootComponent };\n","import { NgZone } from '@angular/core';\nimport { downgradeInjectable } from '@angular/upgrade/static';\nimport * as angular from 'angular';\nimport { c8yAlertDecorator } from './alert.decorator';\nimport {\n appLogsAutoRefreshComponent,\n bootstrapComponent,\n dataGridComponent,\n loadingComponent,\n userTotpComponent,\n rangeDisplayComponent,\n helpComponent\n} from './downgraded.components';\nimport {\n absoluteDateService,\n alertsService,\n apiService,\n appStateService,\n bridgeService,\n authBridgeService,\n bulkOperationDetailsService,\n docsService,\n headerService,\n passwordService,\n serverMessagesService,\n translateService,\n userMenuService,\n cachedLocaleDictionaryService\n} from './downgraded.services';\nimport { QueriesUtil } from '@c8y/client';\nimport { gettextCatalogDecorator } from './gettextCatalog.decorator';\nimport { groupTypesHierarchyNavigatorDecorator } from './groupsHierarchyNavigator.decorator';\nimport { c8yNg1HttpInterceptor } from './http.interceptor';\nimport { c8yNavigatorProvider } from './navigator.provider';\nimport { rootComponent } from './root.component';\nimport { c8yTitleDecorator } from './title.decorator';\nimport { c8yViewsProvider } from './views.provider';\n\nconst NAME = 'c8y.upgrade';\n(window as any).preventNg1Bootstrap = true;\n\nangular\n .module(NAME, [])\n // tslint:disable-next-line:only-arrow-functions\n .config(function($httpProvider) {\n 'ngInject';\n\n const ng1InterceptorIndex = $httpProvider.interceptors.indexOf('c8yLoadingIndicator');\n if (ng1InterceptorIndex > -1) {\n $httpProvider.interceptors.splice(ng1InterceptorIndex, 1);\n }\n $httpProvider.interceptors.push(c8yNg1HttpInterceptor);\n })\n .component('c8yUiRoot', rootComponent)\n .directive('c8yBootstrap', bootstrapComponent)\n .factory('c8yBridgeService', bridgeService)\n .factory('c8yAuthBridgeService', authBridgeService)\n .factory('c8yAppStateService', appStateService)\n .factory('c8yHeaderService', headerService)\n .factory('c8yUserMenuService', userMenuService)\n // tslint:disable-next-line:only-arrow-functions\n .service('c8yQueriesUtil', function() {\n return new QueriesUtil();\n })\n .decorator('c8yTitle', c8yTitleDecorator)\n .factory('c8yAlert', alertsService)\n .decorator('c8yAlert', c8yAlertDecorator)\n .decorator('groupTypesHierarchyNavigator', groupTypesHierarchyNavigatorDecorator) // prevents loading the groups\n .factory('c8yApiService', apiService)\n .factory('c8yDocs', docsService)\n .service('c8yPasswordConfirm', passwordService);\n\nangular\n .module('c8y.ui')\n .filter('absoluteDate', absoluteDateService)\n .directive('c8yLoading', loadingComponent)\n .provider('c8yNavigator', c8yNavigatorProvider)\n .provider('c8yViews', c8yViewsProvider)\n .directive('c8yUserTotpRevoke', userTotpComponent)\n .directive('c8yAppLogsAutoRefresh', appLogsAutoRefreshComponent)\n .directive('c8yDataGrid', dataGridComponent)\n .directive('c8yRangeDisplay', rangeDisplayComponent)\n .directive('c8yHelp', helpComponent)\n .factory('c8yTranslate', translateService)\n .factory('c8yCachedLocaleDictionaryService', cachedLocaleDictionaryService)\n .factory('c8yBulkOperationDetailsService', bulkOperationDetailsService)\n .decorator('gettextCatalog', gettextCatalogDecorator)\n .factory('c8yServerMessages', serverMessagesService)\n .factory('ngZone', downgradeInjectable(NgZone));\n\nexport const ng1Modules = ['app', NAME];\n","import * as angular from 'angular';\n\nfunction c8yTitleDecorator(\n $q,\n $delegate,\n $injector,\n $rootScope,\n $location,\n $templateCache,\n $compile,\n c8yHeaderService\n) {\n 'ngInject';\n\n const exports = {\n translate,\n changeTitleInAngular\n };\n\n $delegate.changeTitle = changeTitle;\n $delegate.setTitleElement = setTitleElement;\n\n $rootScope.$on('$routeChangeStart', () => {\n changeTitle({});\n });\n\n $rootScope.$on('$routeChangeSuccess', (event) => {\n const title = $delegate.get($location.path());\n if (title) {\n const titleData = $q.when(title.data ? $injector.invoke(title.data) : {});\n titleData.then((data) => {\n const { templateUrl } = data;\n if (templateUrl) {\n const template = $templateCache.get(templateUrl);\n setTitleElement($compile(template)(event.targetScope));\n } else {\n changeTitle(data);\n }\n });\n }\n });\n\n function changeTitle(newTitleSubtitleObjOrPromise, options = { skipTitleTranslation: false, skipSubtitleTranslation: false }) {\n $q.when(newTitleSubtitleObjOrPromise).then(newTitleSubtitleObj =>\n changeTitleInAngular(translate(newTitleSubtitleObj, options)));\n }\n\n function translate(\n { title = '', subtitle = '' },\n { skipTitleTranslation = false, skipSubtitleTranslation = false }\n ) {\n const titleTemplate = skipTitleTranslation ? '{{ title }}' : '{{ title | translate }}';\n const subtitleTemplate = skipSubtitleTranslation ? '{{ subtitle }}' : '{{ subtitle | translate }}';\n const template = `\n <h1 class=\"text-truncate\">${titleTemplate}\n <small>${subtitleTemplate}</small></h1>\n `;\n\n const isolatedScope = $rootScope.$new(true);\n isolatedScope.title = title;\n isolatedScope.subtitle = subtitle;\n\n return $compile(angular.element(template))(isolatedScope)[0];\n }\n\n function changeTitleInAngular(domElement) {\n c8yHeaderService.changeTitle(domElement);\n }\n\n function setTitleElement($element) {\n $element.show();\n changeTitleInAngular($element[0]);\n }\n\n return $delegate;\n}\n\nexport { c8yTitleDecorator };\n","function c8yAlertDecorator($delegate, $rootScope, $injector) {\r\n 'ngInject';\r\n\r\n $delegate.add = alert => {\r\n $delegate.addAlert(transformAlert(alert));\r\n };\r\n\r\n $rootScope.$on('alert', (evt, alert) => {\r\n $delegate.addAlert(transformAlert(alert));\r\n });\r\n\r\n $rootScope.$on('message', (evt, alert) => {\r\n $delegate.addAlert(transformAlert(alert));\r\n });\r\n\r\n /**\r\n * Solution based on the: https://stackoverflow.com/questions/40102148/how-to-iterate-over-all-properties-in-objects-prototype-chain.\r\n * Problem came after switching to ES6, as all prototype properties of classes are non-enumerable.\r\n */\r\n const allNames = new Set();\r\n for (let o = $delegate; o !== Object.prototype; o = Object.getPrototypeOf(o)) {\r\n for (const name of Object.getOwnPropertyNames(o)) {\r\n allNames.add(name);\r\n }\r\n }\r\n Array.from(allNames).forEach((property: string) => {\r\n if (typeof $delegate[property] === 'function') {\r\n $delegate[property] = $delegate[property].bind($delegate);\r\n }\r\n });\r\n\r\n function transformAlert(alert: any) {\r\n const newAlert: any = { ...alert };\r\n if (alert.onClose) {\r\n newAlert.onClose = () => {\r\n $injector.invoke(alert.onClose);\r\n };\r\n }\r\n if (alert.onDetail) {\r\n newAlert.onDetail = () => {\r\n $injector.invoke(alert.onDetail);\r\n };\r\n }\r\n return newAlert;\r\n }\r\n\r\n return $delegate;\r\n}\r\n\r\nexport { c8yAlertDecorator };\r\n","function groupTypesHierarchyNavigatorDecorator(\n $delegate,\n $q,\n) {\n 'ngInject';\n $delegate.loadAll = () => $q.when();\n $delegate.addGroupNavigation = () => $q.when();\n return $delegate;\n}\n\nexport { groupTypesHierarchyNavigatorDecorator };\n","import { NavigatorNode } from '@c8y/ngx-components';\nimport { Observable, Subject, defer, of } from 'rxjs';\nimport { merge } from 'rxjs/operators';\nimport { pick, map, property, some, every } from 'lodash-es';\nimport { NavigatorNodeRootLegacy } from './navigator-node-root-legacy';\n\n// Just to hook into the bridge service\nexport function c8yNavigatorProvider() {\n const root = new NavigatorNodeRootLegacy();\n const rootNodesSubject: Subject<NavigatorNode[]> = new Subject();\n const conditionalNodes = [];\n const rootNodes$: Observable<NavigatorNode[]> = rootNodesSubject.pipe(\n merge(defer(() => of(root.children))),\n );\n\n function addNavigation(nodes) {\n const nodeList = (Array.isArray(nodes) ? nodes : [nodes]);\n nodeList.forEach((node) => {\n if (isConditional(node)) {\n node.hidden = undefined;\n conditionalNodes.push(node);\n }\n node.navNode = root.addRoot(node);\n });\n rootNodesSubject.next(root.children);\n }\n\n function removeNavigation(node) {\n const found = root.find((n) => n === node);\n if (found) {\n found.parents.forEach((p) => p.remove(found));\n rootNodesSubject.next(root.children);\n }\n }\n\n function findNode(node) {\n return root.find(node);\n }\n\n function isConditional(node) {\n return node.showIf || node.showIfPermissions || node.showIfContainsVisibleViews;\n }\n\n function $get($q, $injector) {\n 'ngInject';\n\n // This avoids the circular dependency\n setTimeout(() => conditionalNodes.forEach(processShowIf));\n\n function processShowIf(node) {\n const c8yUiUtil = $injector.get('c8yUiUtil');\n const visibilityPromises = [];\n const {\n showIf,\n showIfPermissions,\n showIfContainsVisibleViews\n } = node;\n\n if (showIf) {\n visibilityPromises.push($injector.invoke(showIf));\n }\n if (showIfContainsVisibleViews) {\n visibilityPromises.push(viewsConditionalVisibility(node));\n }\n\n c8yUiUtil.configureVisibility({\n showIf: () => $q.all(visibilityPromises).then(every),\n showIfPermissions\n }, 'visible')\n .then(({ visible }) => {\n if (visible) {\n node.navNode.update({\n hidden: false,\n showIf: null,\n showIfPermission: null,\n showIfContainsVisibleViews: null\n });\n } else {\n node.navNode.update({\n hidden: true\n });\n }\n });\n }\n\n function viewsConditionalVisibility(node) {\n const c8yUiUtil = $injector.get('c8yUiUtil');\n const c8yViews = $injector.get('c8yViews');\n const views = c8yViews.getByPath(node.path);\n return $q.all(\n map(views, (view) => c8yUiUtil\n .configureVisibility(pick(view, ['showIf', 'showIfPermissions']), 'show', false)\n .then(property('show'))\n )\n )\n .then(some);\n }\n\n return {\n rootNodes() {\n return root.children;\n },\n findNode,\n addNavigation,\n removeNavigation,\n rootNodes$\n };\n }\n\n return {\n $get,\n addNavigation,\n removeNavigation\n };\n}\n","import * as angular from 'angular';\n\nfunction gettextCatalogDecorator(\n $delegate,\n $interpolate,\n c8yTranslate\n) {\n 'ngInject';\n\n const gettextCatalog = $delegate;\n const originalGetString = angular.bind(gettextCatalog, gettextCatalog.getString);\n\n function newGetString(input, scope, context) {\n if (typeof input === 'string') {\n const translatedString = originalGetString(input, scope, context);\n const interpolatedString = scope ? $interpolate(input)(scope) : input;\n\n let stringToReturn = translatedString;\n\n if (translatedString && translatedString === interpolatedString) {\n const translatedServerMessage = c8yTranslate.instant(interpolatedString);\n stringToReturn = translatedServerMessage;\n }\n\n return stringToReturn;\n }\n\n return input;\n }\n\n gettextCatalog.getString = newGetString;\n\n return gettextCatalog;\n}\n\nexport { gettextCatalogDecorator };\n","import { UpgradeModule as NgUpgradeModule } from '@angular/upgrade/static';\nimport { ng1Modules } from './ng1';\n\nexport abstract class HybridAppModule {\n ng1Modules = ng1Modules;\n protected upgrade: NgUpgradeModule;\n\n ngDoBootstrap() {\n (window as any).bootstrap();\n this.upgrade.bootstrap(document.getElementById('app'), this.ng1Modules, { strictDi: false });\n }\n}\n","import { EmptyComponent } from '@c8y/ngx-components';\n\nexport const UPGRADE_ROUTES = [\n { path: '**', component: EmptyComponent}\n];\n","import { Injectable, NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ActionBarService, getActivatedRoute } from '@c8y/ngx-components';\nimport {\n ContextDashboardService,\n ContextDashboardManagedObject,\n ContextWidgetConfig\n} from '@c8y/ngx-components/context-dashboard';\nimport { gettext } from '@c8y/ngx-components';\nimport { get } from 'lodash-es';\n\n@Injectable()\nexport class DashboardBridgeService {\n dashboardSvc;\n compile;\n dashboardClipboard;\n\n constructor(\n private ng1Injector: any,\n private zone: NgZone,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private actionBarService: ActionBarService\n ) {\n this.dashboardSvc = ng1Injector.get('dashboardSvc');\n this.compile = ng1Injector.get('$compile');\n }\n\n get ng1Components() {\n return this.ng1Injector.get('c8yComponents');\n }\n\n async instantiateComponent(widget, element) {\n const { dashboard, context, child } = widget;\n if (dashboard) {\n const transformedChild = await this.dashboardSvc.transformChildWithContext(\n this.dashboardSvc.forcedContext || context,\n dashboard,\n child\n );\n if (this.dashboardSvc.forcedContext || dashboard.deviceType) {\n await this.dashboardSvc.updateConfigTargetsWithContext(\n this.dashboardSvc.forcedContext || context,\n transformedChild.config\n );\n }\n return this.zone.runOutsideAngular(() =>\n this.loadTemplate(transformedChild, child, element, context)\n );\n } else {\n return this.loadConfigTemplate(element, widget);\n }\n }\n\n async editDashboard(dashboard) {\n return this.dashboardSvc.editCurrentDashboard({ dashboardId: dashboard.id });\n }\n\n copyDashboard() {\n const dashboard = this.getDashboard();\n const couldCopy = this.dashboardSvc.copyDashboard(dashboard.c8y_Dashboard);\n if (couldCopy) {\n this.dashboardClipboard = dashboard;\n this.actionBarService.refresh();\n return dashboard;\n }\n }\n\n async pasteDashboard() {\n try {\n const newDashboard = await this.dashboardSvc.pasteDashboard();\n this.navigateToDashboard(newDashboard);\n this.dashboardClipboard = undefined;\n } catch (ex) {\n // intended empty\n }\n this.actionBarService.refresh();\n }\n\n instantiateDeviceSelector(element, widgetConfig: ContextWidgetConfig) {\n return this.loadConfigTemplate(element, widgetConfig, true);\n }\n\n private loadTemplate(transformedChild, child, element, context) {\n const scope = this.ng1Injector.get('$rootScope').$new(true);\n scope.child = transformedChild;\n scope.dashboardContext = context;\n if (child.widgetComponent) {\n element.innerHTML = `<c8y-ui-component component-name=\"'${\n child.widgetComponent\n }'\" config=\"child.config\" context=\"dashboardContext\"></c8y-ui-component>`;\n } else if (child.templateUrl) {\n element.innerHTML = `<ng-include src=\"'${child.templateUrl}'\"></ng-include>`;\n }\n this.compile(element)(scope);\n return scope;\n }\n\n private navigateToDashboard(dashboard: ContextDashboardManagedObject) {\n if (/dashboard/.test(this.router.url)) {\n this.router.navigate(['..', dashboard.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n } else {\n this.router.navigate(['..', 'dashboard', dashboard.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n }\n }\n\n private getDashboard() {\n return getActivatedRoute(this.router).snapshot.data.dashboard;\n }\n\n private loadConfigTemplate(\n element,\n widgetConfig: ContextWidgetConfig,\n onlyDeviceSelector = false\n ) {\n const { settings } = widgetConfig;\n const scope = this.ng1Injector.get('$rootScope').$new(true);\n\n scope.settings = { ...settings, ...settings.ng1 };\n scope.options = widgetConfig.options;\n scope.config = widgetConfig;\n scope.forms = {};\n scope.rootId = settings.context.id;\n scope.dashboard = get(widgetConfig, 'settings.dashboardMo');\n\n let configCmp = '';\n if (!onlyDeviceSelector) {\n if (widgetConfig.settings.configComponent) {\n configCmp = `<c8y-ui-component component-name=\"'${\n widgetConfig.settings.configComponent\n }'\" config=\"config\"></c8y-ui-component>`;\n } else if (widgetConfig.settings.configTemplateUrl) {\n configCmp = `<ng-include src=\"'${widgetConfig.settings.configTemplateUrl}'\"></ng-include>`;\n }\n }\n\n element.innerHTML = `\n <ng-form name=\"forms.componentForm\">\n <div class=\"form-group\"\n ng-if=\"!settings.noDeviceTarget\"\n ng-style=\"{height: settings.hideTarget && '0', overflow: 'hidden'}\"\n >\n <label translate>${gettext('Target assets or devices')}</label>\n <c8y-device-selector-combo parent=\"rootId\"\n selected-child-device=\"config.device\"\n groups-selectable=\"settings.groupsSelectable\"\n select-required=\"!settings.deviceTargetNotRequired\"\n ></c8y-device-selector-combo>\n </div>\n ${configCmp}\n </ng-form>`;\n\n scope.$watch('forms.componentForm.$invalid', formStatus => {\n this.contextDashboardService.formDisabled = formStatus;\n });\n this.compile(element)(scope);\n this.contextDashboardService.formDisabled = scope.forms.componentForm.$invalid;\n\n return scope;\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, OnDestroy, Optional } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { WidgetsDashboardComponent } from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'c8y-widget-legacy',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WidgetComponent implements OnInit, OnDestroy {\n ng1Scope;\n config;\n private resizeSubscription?: Subscription;\n constructor(\n @Optional() private dashboard: WidgetsDashboardComponent,\n private dashboardBridgeService: DashboardBridgeService,\n private el: ElementRef\n ) {}\n\n async ngOnInit() {\n this.ng1Scope = await this.dashboardBridgeService.instantiateComponent(this.config, this.el.nativeElement);\n if (this.dashboard) {\n this.resizeSubscription = this.dashboard.onChangeDashboard.subscribe(() => {\n this.ng1Scope.$broadcast('dashboardResize');\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.ng1Scope) {\n this.ng1Scope.$destroy();\n }\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n}\n","import { Input, ChangeDetectionStrategy, Component, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-device-selector-legacy',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DeviceSelectorComponent implements OnInit, OnDestroy {\n ng1Scope;\n config;\n\n constructor(\n private dashboardBridgeService: DashboardBridgeService,\n private el: ElementRef\n ) {}\n\n async ngOnInit() {\n this.ng1Scope = this.dashboardBridgeService.instantiateDeviceSelector(this.el.nativeElement, this.config);\n }\n\n ngOnDestroy(): void {\n if (this.ng1Scope) {\n this.ng1Scope.$destroy();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DynamicComponentDefinition } from '@c8y/ngx-components';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { WidgetComponent } from './widget.component';\nimport { DeviceSelectorComponent } from './device-selector.component';\n\n@Injectable()\nexport class Ng1ComponentFactoryService {\n constructor(private bridge: DashboardBridgeService) {}\n async get() {\n const components = (await this.bridge.ng1Components.list()).map(cmp => {\n const data = {\n settings: {\n ...cmp.options,\n configTemplateUrl: cmp.configTemplateUrl,\n widgetComponent: cmp.widgetComponent,\n configComponent: cmp.configComponent,\n transformConfigWithContext:\n cmp.transformConfigWithContext || cmp.componentTransformConfigWithContext,\n upgrade: true\n }\n } as any;\n data.settings.templateUrl = cmp.templateUrl; // workaround as in object it creates build error\n\n return {\n id: cmp.name,\n label: cmp.nameDisplay || cmp.name,\n description: cmp.description,\n component: WidgetComponent,\n configComponent: WidgetComponent,\n previewImage: cmp.previewImage,\n data\n } as DynamicComponentDefinition;\n });\n\n // add the device selector legacy component\n components.push({\n id: 'device.selector.legacy',\n label: 'Device selector',\n description: '',\n data: { settings: { noNewWidgets: true, upgrade: true } },\n component: DeviceSelectorComponent\n });\n\n return components;\n }\n}\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-copy-action-legacy',\n template: `\n <ng-template #templateCopy>\n <li>\n <button title=\"{{'Copy dashboard' | translate}}\" (click)=\"copyDashboard()\">\n <i class=\"dlt-c8y-icon-copy m-r-4\"></i><span translate>Copy dashboard</span>\n </button>\n </li>\n </ng-template>\n `\n})\nexport class CopyActionComponent implements OnInit {\n @ViewChild('templateCopy', { read: TemplateRef, static: true }) templateCopy;\n\n constructor(\n private vcRef: ViewContainerRef,\n private dashboardBridgeService: DashboardBridgeService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templateCopy);\n }\n\n copyDashboard() {\n this.dashboardBridgeService.copyDashboard();\n }\n}\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-paste-action-legacy',\n template: `\n <ng-template #templatePaste>\n <li>\n <button title=\"{{'Paste dashboard' | translate}}\" (click)=\"pasteDashboard()\">\n <i class=\"m-r-4\" c8yIcon=\"clipboard\"></i><span translate>Paste dashboard</span> <span\n >\"{{ dashboardName }}\"</span\n >\n </button>\n </li>\n </ng-template>\n `\n})\nexport class PasteActionComponent implements OnInit {\n @ViewChild('templatePaste', { read: TemplateRef, static: true }) templatePaste;\n dashboardName = '';\n\n constructor(\n private vcRef: ViewContainerRef,\n private dashboardBridgeService: DashboardBridgeService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templatePaste);\n this.dashboardName = this.dashboardBridgeService.dashboardClipboard.c8y_Dashboard.name;\n }\n\n pasteDashboard() {\n this.dashboardBridgeService.pasteDashboard();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ActionBarFactory, ActionBarItem, ViewContext } from '@c8y/ngx-components';\nimport { CopyActionComponent } from './copy-action.component';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { PasteActionComponent } from './paste-action.component';\n\n@Injectable()\nexport class Ng1DashboardActionFactoryService implements ActionBarFactory {\n constructor(private dashboardBridgeService: DashboardBridgeService) {}\n\n get(activeRoute?: ActivatedRoute) {\n const actions = [];\n const data =\n !activeRoute.parent || activeRoute.snapshot.data.context\n ? activeRoute.snapshot.data\n : activeRoute.parent.snapshot.data;\n const { contextData } = data;\n const canCopy =\n contextData &&\n activeRoute.snapshot.data.dashboard &&\n [ViewContext.Device, ViewContext.Group].includes(data.context);\n const canPaste =\n contextData &&\n [ViewContext.Device, ViewContext.Group].includes(data.context) &&\n this.dashboardBridgeService.dashboardClipboard;\n\n if (canCopy) {\n actions.push({\n priority: -20,\n placement: 'more',\n template: CopyActionComponent\n } as ActionBarItem);\n }\n\n if (canPaste) {\n actions.push({\n priority: -10,\n placement: 'more',\n template: PasteActionComponent\n } as ActionBarItem);\n }\n\n return actions;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, NgZone, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ActionBarService, HOOK_ACTION_BAR, HOOK_COMPONENTS} from '@c8y/ngx-components';\nimport { ContextDashboardService } from '@c8y/ngx-components/context-dashboard';\nimport { Ng1ComponentFactoryService } from './component.factory';\nimport { CopyActionComponent } from './copy-action.component';\nimport { Ng1DashboardActionFactoryService } from './dashboard-actions.factory';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { PasteActionComponent } from './paste-action.component';\nimport { WidgetComponent } from './widget.component';\nimport { DeviceSelectorComponent } from './device-selector.component';\nimport { C8yTranslateModule } from '@c8y/ngx-components';\n\n@NgModule({\n declarations: [DeviceSelectorComponent, WidgetComponent, CopyActionComponent, PasteActionComponent],\n entryComponents: [DeviceSelectorComponent, WidgetComponent, CopyActionComponent, PasteActionComponent],\n imports: [CommonModule, C8yTranslateModule],\n providers: [\n {\n provide: DashboardBridgeService,\n useFactory: dashboardBridgeFactory,\n deps: ['$injector', NgZone, Router, [new Optional(), ContextDashboardService], ActionBarService]\n },\n { provide: HOOK_COMPONENTS, useClass: Ng1ComponentFactoryService, multi: true },\n { provide: HOOK_ACTION_BAR, useClass: Ng1DashboardActionFactoryService, multi: true }\n ]\n})\nexport class DashboardUpgradeModule {}\n\nexport function dashboardBridgeFactory(injector, ngZone, router, contextDashboardService, actionBarService) {\n return new DashboardBridgeService(injector, ngZone, router, contextDashboardService, actionBarService);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../upgrade/ng1/views.provider.ts","../../upgrade/bridge.service.ts","../../upgrade/action-bar.factory.ts","../../upgrade/action.factory.ts","../../upgrade/breadcrumb.factory.ts","../../upgrade/nodes.factory.ts","../../upgrade/tabs.factory.ts","../../upgrade/docs.factory.ts","../../upgrade/auth-bridge.service.ts","../../upgrade/absolute-date.service.ts","../../upgrade/upgrade.module.ts","../../upgrade/ng1/downgraded.components.ts","../../upgrade/ng1/serverMessages.service.ts","../../upgrade/ng1/downgraded.services.ts","../../upgrade/ng1/http.interceptor.ts","../../upgrade/ng1/navigator-node-root-legacy.ts","../../upgrade/ng1/root.component.ts","../../upgrade/ng1/index.ts","../../upgrade/ng1/title.decorator.ts","../../upgrade/ng1/alert.decorator.ts","../../upgrade/ng1/groupsHierarchyNavigator.decorator.ts","../../upgrade/ng1/navigator.provider.ts","../../upgrade/ng1/gettextCatalog.decorator.ts","../../upgrade/hybrid-app.module.ts","../../upgrade/upgrade.routes.ts","../../upgrade/dashboard/dashboard-bridge.service.ts","../../upgrade/dashboard/widget.component.ts","../../upgrade/dashboard/device-selector.component.ts","../../upgrade/dashboard/component.factory.ts","../../upgrade/dashboard/copy-action.component.ts","../../upgrade/dashboard/paste-action.component.ts","../../upgrade/dashboard/dashboard-actions.factory.ts","../../upgrade/dashboard/dashboard-upgrade.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","ViewContextLegacyParameter","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__values","o","s","m","i","__read","r","ar","error","BridgeService","injector","appState","router","ngZone","routerService","actionService","$liveTabs","BehaviorSubject","fixE2eIssues","$ng1RouteChangeSuccess","fromNg1Event","get","$ng1RouteChangeStart","hookLanguage","hookTabs","hookNavigator","hookUserMenu","hookViewProvider","initialNavigation","ng1Routes","prototype","_this","c8yViews","when","template","contextViews","subscribe","cfg","addRoute","name","path","icon","context","ViewContext","contextKey","priority","component","EmptyComponent","data","showIf","ngxRoute","params","assign","_a","id","showIfResult","invoke","undefined","$routeParams","Boolean","runPhase","refresh","fallbackRoutes","match","regexp","RegExp","keys","optional","$route","defineProperty","routes","key","forEach","c8yUiUtil","_getContext","getContext","events","pipe","filter","event","ActivationEnd","snapshot","routeConfig","replace","contextData","ngZone_1","Utils_1","window","org","cometd","Utils","timeoutFn_1","setTimeout","args","_i","arguments","runOutsideAngular","ace_1","ace","editFn_1","edit","ngZone_2","first","map","store","lang","switchToLanguage","$apply","$location","c8yTabs","liveTabs","addTab","tab","decodeURIComponent","url","navigate","split","queryParams","search","skipLocationChange","$routeChanges","merge","EVENT_UPDATE","of","debounceTime","navigationNodes$","rootNodes$","getTabs","onlyVisible","show","upgradeTab","routeTabs","switchMap","all","checkingVisibility","startWith","combineLatest","_b","route","live","concat","getQuickLinks","list","getActionBarItems","c8yActionBar","$rootScope","elements","element","getAttribute","placement","getBreadcrumbs","c8yBreadcrumbs","breadcrumbs","breadcrumbsData","resolveBreadcrumbsData","from","liveBreadcrumbs","getLiveBreadcrumbs","items","ex","isArray","getSearch","c8ySearch","item","term","onSearch","getActions","registeredActions","action","hidden","text","disabled","obj","evt","stopListening","fromEventPattern","handler","$on","userMenuService","c8yAccessDenied","add","gettext","click","showAccessDeniedRequestsList","bridgeServiceFactory","bridgeServiceProvider","provide","useFactory","deps","AppStateService","Router","NgZone","RouterService","ActionService","Ng1ActionBarFactoryService","bridge","routeChanges$","Injectable","Ng1ActionFactoryService","tabs","items$","newTabs","handleTabsRedirect","redirectedTab","find","redirectedTo","topPriorityTab","TabsService","Ng1BreadcrumbFactoryService","trigger","ReplaySubject","Ng1NodesFactoryService","Ng1TabsFactoryService","tabsObservable","Ng1DocsFactoryService","links","el","type","AuthBridgeService","basicAuth","fetchClient","hookAuth","updateBasicAuth","credentials","headers","getFetchOptions","Authorization","updateCredentials","setAuth","currentUser","u","token","setToken","tfatoken","$emit","hasAuth","tfa","c8yAuth","onSetToken","setTFAToken","authReady","authBridgeServiceFactory","authBridgeServiceProvider","BasicAuth","FetchClient","AbsoluteDateService","datePipe","getFilter","transform","absoluteDateServiceFactory","absoluteDateServiceProvider","DatePipe","NgModule","imports","RouterModule","exports","providers","HOOK_NAVIGATOR_NODES","useClass","multi","HOOK_TABS","HOOK_ACTION_BAR","HOOK_ACTION","HOOK_BREADCRUMB","HOOK_DOCS","bootstrapComponent","downgradeComponent","BootstrapComponent","userTotpComponent","UserTotpRevokeComponent","appLogsAutoRefreshComponent","AppLogsAutoRefreshComponent","dataGridComponent","DataGridComponent","loadingComponent","LoadingComponent","rangeDisplayComponent","RangeDisplayComponent","helpComponent","HelpComponent","ServerMessagesService","translateService","patterns","MESSAGE_PATTERNS","translate","instant","TranslateService","Inject","HOOK_PATTERN_MESSAGES","absoluteDateService","downgradeInjectable","bridgeService","authBridgeService","appStateService","headerService","HeaderService","alertsService","AlertService","UserMenuService","apiService","ApiService","docsService","DocsService","passwordService","PasswordService","cachedLocaleDictionaryService","CachedLocaleDictionaryService","serverMessagesService","bulkOperationDetailsService","BulkOperationDetailsService","c8yNg1HttpInterceptor","$q","c8yLoadingIndicator","c8yApiService","finishRequest","res","config","method","onFinish","response","options","request","onStart","requestError","rejection","responseError","NavigatorNodeRootLegacy","_super","__","constructor","create","__extends","addRoot","nodeData","duplicate","parent","preventDuplicates","parents","some","routerLinkExact","createNode","node","newNode","update","bind","root","defineProperties","realName","_parent","addChild","nodeChild","set","NavigatorNodeRoot","rootComponent","controller","$timeout","c8yBase","c8yNavigator","c8yApplication","c8yHeaderService","vm","onAuthStateChange","authState","onAppInfo","tabsHorizontal","appOption","checkReady","document","querySelector","clientWidth","widthSet","$onInit","states","nav","open","isOpen","navOpen","configNavigator","canToggle","rootNodes","currentAppCached","navHiddenOnStartup","controllerAs","NAME","preventNg1Bootstrap","angular","module","$httpProvider","ng1InterceptorIndex","interceptors","indexOf","splice","directive","factory","service","QueriesUtil","decorator","$delegate","$injector","$templateCache","$compile","changeTitle","newTitleSubtitleObjOrPromise","skipTitleTranslation","skipSubtitleTranslation","newTitleSubtitleObj","changeTitleInAngular","_c","title","_d","subtitle","_e","_f","isolatedScope","$new","domElement","setTitleElement","$element","templateUrl","targetScope","alert","addAlert","transformAlert","allNames","Set","getPrototypeOf","e_1","getOwnPropertyNames","newAlert","onClose","onDetail","property","loadAll","addGroupNavigation","provider","rootNodesSubject","Subject","conditionalNodes","defer","children","addNavigation","nodes","showIfPermissions","showIfContainsVisibleViews","isConditional","navNode","removeNavigation","found","remove","findNode","$get","processShowIf","visibilityPromises","views","getByPath","view","configureVisibility","pick","viewsConditionalVisibility","every","visible","showIfPermission","$routeProvider","c8yTabsProvider","c8yPathUtils","viewMap","prefixWithSlash","newPath","__c8y_locales","c8yLocales","initDone","currentCfg","originalPath","upgradedContext","isUpgrade","appendSegment","substring","existingConfig","createTab","resolveRedirectTo","gettextCatalog","sortedCurrentCfg","sortTabsViews","current","pathParams","unary","val","redirectedViewPath","startsWith","$interpolate","c8yTranslate","originalGetString","getString","input","scope","translatedString","interpolatedString","stringToReturn","ng1Modules","HybridAppModule","ngDoBootstrap","bootstrap","upgrade","getElementById","strictDi","UPGRADE_ROUTES","DashboardBridgeService","ng1Injector","zone","contextDashboardService","actionBarService","dashboardSvc","compile","instantiateComponent","widget","dashboard","child","transformChildWithContext","forcedContext","transformedChild_1","deviceType","updateConfigTargetsWithContext","loadTemplate","loadConfigTemplate","editDashboard","editCurrentDashboard","dashboardId","copyDashboard","getDashboard","c8y_Dashboard","dashboardClipboard","pasteDashboard","newDashboard","navigateToDashboard","instantiateDeviceSelector","widgetConfig","transformedChild","dashboardContext","widgetComponent","innerHTML","test","relativeTo","getActivatedRoute","onlyDeviceSelector","settings","ng1","forms","rootId","configCmp","configComponent","configTemplateUrl","$watch","formStatus","formDisabled","componentForm","$invalid","ContextDashboardService","ActionBarService","WidgetComponent","dashboardBridgeService","ngOnInit","nativeElement","ng1Scope","resizeSubscription","onChangeDashboard","$broadcast","ngOnDestroy","$destroy","unsubscribe","Component","selector","changeDetection","ChangeDetectionStrategy","OnPush","WidgetsDashboardComponent","decorators","Optional","ElementRef","DeviceSelectorComponent","Ng1ComponentFactoryService","ng1Components","components","cmp","transformConfigWithContext","componentTransformConfigWithContext","nameDisplay","description","previewImage","noNewWidgets","CopyActionComponent","vcRef","createEmbeddedView","templateCopy","ViewContainerRef","ViewChild","read","TemplateRef","static","PasteActionComponent","dashboardName","templatePaste","Ng1DashboardActionFactoryService","activeRoute","actions","canCopy","Device","Group","includes","canPaste","dashboardBridgeFactory","declarations","entryComponents","CommonModule","C8yTranslateModule","HOOK_COMPONENTS"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { startsWith, unary, map, find, forEach } from 'lodash-es';\nimport { ViewContext } from '@c8y/ngx-components';\nimport { ReplaySubject } from 'rxjs';\n\nexport enum ViewContextLegacyParameter {\n Device = 'deviceId',\n Group = 'groupId',\n User = 'userId',\n Application = 'applicationId',\n SubscribedApplications = 'applicationId',\n Tenant = 'tenantId'\n}\n\nfunction c8yViewsProvider($routeProvider, c8yTabsProvider, c8yPathUtils) {\n 'ngInject';\n\n const viewMap = {};\n const contextViews = new ReplaySubject();\n\n return {\n when,\n $get() {\n return {\n contextViews,\n when(path, cfg) {\n return when(path, cfg, true);\n },\n getByPath,\n prefixWithSlash\n };\n }\n };\n\n /**\n * @ngdoc function\n * @name when\n * @methodOf c8y.ui.provider:c8yViewsProvider\n *\n * @description\n * Defines a view for given route.\n * If multiple views are defined for a single route then there will be a separate tab for each view available when user visits that route.\n *\n * @param path Target route.\n * @param cfg View configuration object with the following properties:\n *\n * - **name** - `string` - View's name (in case of multiple views at single route this will be displayed as tab's title).\n * - **priority** - `integer` - View's priority (in case of multiple views at single route this will determine the position of view's tab in the tabs stack).\n * - **icon** - `string` - Font Awesome icon name for the view (displayed on the tab's header).\n * - **showIf** - `function` - Function returning boolean value indicating whether to show a tab for the view or not.\n * - **templateUrl** - `string` - Path to the template to use for displaying the view.\n *\n * You can also provide other view options - the same as available for standard {@link https://docs.angularjs.org/api/ngRoute/provider/$routeProvider $routeProvider} in AngularJS.\n *\n * @example\n * The following example demonstrates how to add a new view to device details route\n * (which will be displayed as a tab if other views are assigned to the same route):\n * <pre>\n * c8yViewsProvider.when('/device/:deviceId', {\n * name: 'Tracking',\n * templateUrl: ':::PLUGIN_PATH:::/views/index.html',\n * icon: 'crosshairs',\n * showIf: ['$routeParams', 'c8yDevices', function ($routeParams, c8yDevices) {\n * var deviceId = $routeParams.deviceId;\n * return c8yDevices.detailCached(deviceId).then(function (res) {\n * var device = res.data;\n * return device && (device.c8y_MotionTracking || device.c8y_Geofence);\n * });\n * }]\n * });\n * </pre>\n */\n function when(path, cfg, runPhase) {\n const newPath = prefixWithSlash(path);\n cfg.resolve = cfg.resolve || {};\n // eslint-disable-next-line no-underscore-dangle\n cfg.resolve.__c8y_locales = [\n 'c8yLocales',\n c8yLocales => {\n return c8yLocales.initDone;\n }\n ];\n\n let currentCfg = viewMap[newPath];\n const originalPath = newPath;\n\n if (!cfg.name) {\n // console.warn('View name not defined');\n }\n\n if (!currentCfg) {\n viewMap[newPath] = [];\n currentCfg = viewMap[newPath];\n }\n\n const upgradedContext = Object.keys(ViewContext)\n .map(key => ({\n key,\n isUpgrade:\n prefixWithSlash(ViewContext[key].replace('id', ViewContextLegacyParameter[key])) === path\n }))\n .find(({ isUpgrade }) => isUpgrade);\n\n if (upgradedContext) {\n currentCfg.push(cfg);\n cfg.path = newPath;\n\n const p = c8yPathUtils.appendSegment(originalPath.replace(path, ''), cfg.name);\n contextViews.next({\n ...cfg,\n path: cfg.name ? p.substring(1) : '',\n contextKey: upgradedContext.key,\n runPhase\n });\n cfg.showIf = undefined;\n if (cfg.name) {\n cfg.path = c8yPathUtils.appendSegment(originalPath, cfg.name);\n }\n } else {\n if (currentCfg.length === 1) {\n const [existingConfig] = currentCfg;\n existingConfig.path = c8yPathUtils.appendSegment(originalPath, existingConfig.name);\n existingConfig.tab = createTab(originalPath, existingConfig);\n $routeProvider.when(existingConfig.path, existingConfig);\n }\n\n currentCfg.push(cfg);\n cfg.path = newPath;\n\n if (currentCfg.length > 1) {\n cfg.path = c8yPathUtils.appendSegment(originalPath, cfg.name);\n createTab(originalPath, cfg);\n\n $routeProvider.when(prefixWithSlash(originalPath), {\n resolveRedirectTo($route, $q, c8yUiUtil, c8yTabs, gettextCatalog) {\n 'ngInject';\n\n const sortedCurrentCfg = c8yTabsProvider.sortTabsViews(currentCfg, gettextCatalog);\n const params = $route.current.pathParams;\n\n return $q\n .all(map(sortedCurrentCfg, unary(c8yUiUtil.configureVisibility)))\n .then(views => {\n const first = find(views, 'show');\n let url = first.path;\n forEach(params, (val, key) => {\n url = url.replace(`:${key}`, val);\n });\n c8yTabs.redirectedViewPath = url;\n return url;\n });\n }\n });\n }\n }\n return $routeProvider.when(prefixWithSlash(cfg.path), cfg);\n }\n\n function getByPath(path) {\n return viewMap[prefixWithSlash(path)];\n }\n\n function createTab(path, cfg) {\n c8yTabsProvider.addTab(path, cfg);\n }\n\n function prefixWithSlash(path) {\n const prefix = startsWith(path, '/') ? '' : '/';\n return prefix + path;\n }\n}\n\nexport { c8yViewsProvider };\n","import {\n Action,\n ActionBarItem,\n ActionService,\n AppStateService,\n Breadcrumb,\n BreadcrumbItem,\n EmptyComponent,\n RouterService,\n Search,\n Tab,\n ViewContext,\n gettext,\n DocLink\n} from '@c8y/ngx-components';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n from,\n fromEventPattern,\n of\n} from 'rxjs';\nimport { debounceTime, filter, map, merge, skip, startWith, switchMap } from 'rxjs/operators';\nimport { isArray } from 'lodash-es';\n\nimport { ActivationEnd } from '@angular/router';\nimport { NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ViewContextLegacyParameter } from './ng1/views.provider';\n\nexport class BridgeService {\n $routeChanges: Observable<any>;\n $ng1RouteChangeSuccess: Observable<any>;\n $ng1RouteChangeStart: Observable<any>;\n $liveTabs: Subject<Tab[]> = new BehaviorSubject([]);\n navigationNodes$: Observable<any>;\n constructor(\n public injector: any,\n private appState: AppStateService,\n public router: Router,\n private ngZone: NgZone,\n private routerService: RouterService,\n private actionService: ActionService\n ) {\n this.fixE2eIssues();\n this.$ng1RouteChangeSuccess = this.fromNg1Event(\n this.injector.get('$rootScope'),\n '$routeChangeSuccess'\n );\n this.$ng1RouteChangeStart = this.fromNg1Event(\n this.injector.get('$rootScope'),\n '$routeChangeStart'\n );\n this.hookLanguage();\n this.hookTabs();\n this.hookNavigator();\n this.hookUserMenu();\n this.hookViewProvider();\n this.router.initialNavigation();\n this.ng1Routes();\n }\n\n hookViewProvider() {\n const c8yViews = this.injector.get('c8yViews');\n // fix to trigger an angularjs route change success\n // event on context route match to make legacy\n // view-providers resolve.\n c8yViews.when('/device/:id', {\n template: ''\n });\n c8yViews.when('/group/:id', {\n template: ''\n });\n c8yViews.contextViews.subscribe(cfg => this.addRoute(cfg));\n }\n\n addRoute(cfg) {\n this.routerService.addRoute({\n label: cfg.label || cfg.name,\n path: cfg.path,\n icon: cfg.icon,\n context: ViewContext[cfg.contextKey] as ViewContext,\n priority: cfg.priority,\n component: EmptyComponent,\n data: {\n showIf: cfg.showIf\n ? ngxRoute => {\n const params = {\n ...ngxRoute.params,\n [ViewContextLegacyParameter[cfg.contextKey]]: ngxRoute.params.id\n };\n const showIfResult = this.injector.invoke(cfg.showIf, undefined, {\n $routeParams: params\n });\n // make sure showIf result is a promise with boolean result:\n return this.injector.get('$q').when(showIfResult).then(Boolean);\n }\n : undefined\n }\n });\n\n if (cfg.runPhase) {\n this.routerService.refresh();\n }\n }\n\n ng1Routes() {\n const template = '';\n const fallbackRoutes = [];\n\n // tslint:disable-next-line: forin\n for (const context in ViewContext) {\n const path = ViewContext[context].match(/(\\w+)\\//)[1];\n const regexp = new RegExp(`^/${path}/(?:([^/]+)).*$`);\n fallbackRoutes.push({\n keys: [{ name: ViewContextLegacyParameter[context], optional: false }],\n regexp,\n template\n });\n }\n\n /**\n * When asset detail routes (/device/:id, /group/:id) are matched in Angular Router, ngRoute in\n * angular.js must also have matching generic routes so that the ids can be extracted from the paths and\n * injected in multiple calls (showIf, c8yActions, etc) as properties of $routeParams.\n *\n * The function in src/ngRoute/route.js (angular.js) where the routes are matched is called parseRoute(). This\n * function calls angular.forEach and in turn this function checks for the presence of a forEach method before\n * trying object key iteration.\n * By attaching a non enumerable forEach method to the routes object we guarantee that the fallback generic routes\n * are only matched after any other registered through $routeProvider.when.\n */\n const $route = this.injector.get('$route');\n Object.defineProperty($route.routes, 'forEach', {\n // make non enumerable\n value: function forEach(iterator, context) {\n // tslint:disable-next-line: forin\n for (const key in this) {\n iterator.call(context, this[key], key, this);\n }\n fallbackRoutes.forEach(r => iterator.call(context, r));\n }\n });\n\n /**\n * Some functions use the current context. As some parts are upgraded and some not, the following updates the\n * angularjs getContext function to resolve always the right context.\n */\n const c8yUiUtil = this.injector.get('c8yUiUtil');\n const _getContext = c8yUiUtil.getContext;\n this.router.events\n .pipe(filter(event => event instanceof ActivationEnd))\n .subscribe((event: ActivationEnd) => {\n if (event.snapshot.routeConfig.path === '**') {\n c8yUiUtil.getContext = _getContext;\n } else if (event.snapshot.data && event.snapshot.data.context) {\n c8yUiUtil.getContext = () => {\n return {\n context: event.snapshot.data.context.replace('/:id', ''),\n id: event.snapshot.data.contextData.id\n };\n };\n } else {\n c8yUiUtil.getContext = () => ({ context: null, id: null });\n }\n });\n }\n\n fixE2eIssues() {\n try {\n const { ngZone } = this;\n const { Utils } = (window as any).org.cometd;\n const timeoutFn = Utils.setTimeout;\n // tslint:disable-next-line:only-arrow-functions\n Utils.setTimeout = function(...args) {\n return ngZone.runOutsideAngular(() => timeoutFn.apply(Utils, args));\n };\n } catch (e) {\n // do nothing\n }\n\n try {\n const { ace } = window as any;\n const editFn = ace.edit;\n const { ngZone } = this;\n // tslint:disable-next-line:only-arrow-functions\n ace.edit = function(...args) {\n return ngZone.runOutsideAngular(() => editFn.apply(ace, args));\n };\n } catch (e) {\n // do nothing\n }\n }\n\n hookLanguage() {\n let first = true;\n this.appState\n .map(store => store.lang)\n .subscribe(lang => {\n this.injector.get('c8yLocales').switchToLanguage(lang);\n if (!first) {\n this.injector.get('$rootScope').$apply();\n }\n first = false;\n });\n }\n\n hookTabs() {\n // Just for instantiation of the c8yAction service\n this.injector.get('c8yActions');\n const $location = this.injector.get('$location');\n const c8yTabs = this.injector.get('c8yTabs');\n let liveTabs = [];\n c8yTabs.addTab = tab => {\n liveTabs.push({\n ...tab,\n label: tab.label || tab.name,\n path: decodeURIComponent(tab.path)\n });\n this.$liveTabs.next(liveTabs);\n };\n this.$ng1RouteChangeStart.subscribe(e => {\n liveTabs = [];\n this.$liveTabs.next(liveTabs);\n });\n this.$ng1RouteChangeSuccess.subscribe(e => {\n const path = $location.path();\n if (this.router.url !== path) {\n this.router.navigate(path === '/' ? '' : path.split('/'), {\n queryParams: $location.search(),\n skipLocationChange: true\n });\n }\n if (this.actionService) {\n this.actionService.refresh();\n }\n });\n this.$routeChanges = this.$ng1RouteChangeSuccess.pipe(\n merge(this.fromNg1Event(c8yTabs, c8yTabs.EVENT_UPDATE), of(1)),\n debounceTime(100)\n );\n }\n\n hookNavigator() {\n this.navigationNodes$ = this.injector.get('c8yNavigator').rootNodes$;\n }\n\n getTabs(): Observable<any> {\n const onlyVisible = ({ show }) => show;\n const upgradeTab = tab => ({\n ...tab,\n label: tab.label || tab.name,\n path: decodeURIComponent(tab.path)\n });\n const routeTabs = this.$routeChanges.pipe(\n switchMap(() => {\n const routes = this.injector.get('c8yTabs').routeTabs;\n const visibilityPromise = Promise.all(\n routes.map(({ checkingVisibility }) => checkingVisibility)\n );\n return visibilityPromise.then(() => routes.filter(onlyVisible).map(upgradeTab));\n }),\n startWith([])\n );\n return combineLatest(routeTabs, this.$liveTabs).pipe(\n map(([route, live]) => route.concat(live))\n );\n }\n\n getQuickLinks(): Promise<DocLink[]> {\n const c8yQuickLinks = this.injector.get('c8yQuickLinks');\n return c8yQuickLinks.list();\n }\n\n getActionBarItems(): Observable<ActionBarItem> {\n const c8yActionBar = this.injector.get('c8yActionBar');\n const $rootScope = this.injector.get('$rootScope');\n const getActionBarElements = () =>\n c8yActionBar.elements.map(element => ({\n priority: element.getAttribute('action-bar-priority') || 0,\n template: element,\n placement: element.getAttribute('action-bar-position') || 'right'\n }));\n return this.fromNg1Event($rootScope, 'c8yActionBarChanged').pipe(\n startWith(1),\n map(getActionBarElements)\n );\n }\n\n getBreadcrumbs(): Observable<Breadcrumb[]> {\n const $location = this.injector.get('$location');\n const path = $location.path();\n const c8yBreadcrumbs = this.injector.get('c8yBreadcrumbs');\n const breadcrumbs = c8yBreadcrumbs.get(path) || {};\n const breadcrumbsData = this.resolveBreadcrumbsData(breadcrumbs.data);\n return from(breadcrumbsData).pipe(\n map((value: any[]) => {\n const liveBreadcrumbs = c8yBreadcrumbs.getLiveBreadcrumbs();\n value = value.concat(liveBreadcrumbs);\n return value.map(items => ({ items: items as BreadcrumbItem[] } as Breadcrumb));\n })\n );\n }\n\n resolveBreadcrumbsData(data): Observable<any[]> {\n try {\n return this.injector.invoke(data);\n } catch (ex) {\n // empty\n }\n if (isArray(data)) {\n return of([data]);\n }\n return of([]);\n }\n\n getSearch(): Search[] {\n const c8ySearch = this.injector.get('c8ySearch');\n return c8ySearch.list().map(item => {\n return {\n icon: 'search',\n name: item.name,\n term: '',\n onSearch() {\n if (this.term) {\n c8ySearch.search(this.term);\n }\n }\n } as Search;\n });\n }\n\n getActions(): Observable<Action> {\n const registeredActions = this.injector.get('c8yActions').registeredActions;\n return of(\n registeredActions\n .filter(action => !action.hidden)\n .map(action => ({\n // The priority was reversed: Aligned it to dashboard, high first, low last.\n priority: (action.priority || 0) * -1,\n label: action.text,\n icon: action.icon,\n disabled: action.disabled,\n action: () => {\n this.injector.invoke(action.action, action);\n }\n }))\n );\n }\n\n fromNg1Event(obj, evt) {\n let stopListening;\n function add(handler) {\n stopListening = obj.$on(evt, handler);\n }\n return fromEventPattern(add, () => stopListening());\n }\n\n private hookUserMenu() {\n const userMenuService = this.injector.get('c8yUserMenuService');\n const c8yAccessDenied = this.injector.get('c8yAccessDenied');\n userMenuService.add({\n icon: 'access',\n priority: 10,\n label: gettext('Access denied requests'),\n click: c8yAccessDenied.showAccessDeniedRequestsList\n });\n }\n}\n\nexport function bridgeServiceFactory(\n injector: any,\n appState: AppStateService,\n router: Router,\n ngZone: NgZone,\n routerService: RouterService,\n actionService: ActionService\n) {\n return new BridgeService(injector, appState, router, ngZone, routerService, actionService);\n}\n\nexport const bridgeServiceProvider = {\n provide: BridgeService,\n useFactory: bridgeServiceFactory,\n deps: ['$injector', AppStateService, Router, NgZone, RouterService, ActionService]\n};\n","import { Injectable } from '@angular/core';\nimport { ActionBarFactory, ActionBarItem } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Injectable()\nexport class Ng1ActionBarFactoryService implements ActionBarFactory {\n routeChanges$: Observable<any>;\n $ng1RouteChangeSuccess: Observable<any>;\n constructor(private bridge: BridgeService) {\n this.routeChanges$ = bridge.$routeChanges;\n this.$ng1RouteChangeSuccess = bridge.$ng1RouteChangeSuccess;\n }\n\n get(): Observable<ActionBarItem> {\n return this.routeChanges$.pipe(\n switchMap(e => {\n return this.bridge.getActionBarItems();\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, ActionFactory, TabsService } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class Ng1ActionFactoryService implements ActionFactory {\n routeChanges$: Observable<any>;\n $location: any;\n constructor(\n private bridge: BridgeService,\n private tabs: TabsService\n ) {\n this.routeChanges$ = bridge.$routeChanges;\n this.$location = bridge.injector.get('$location');\n this.tabs.items$.subscribe((newTabs) => this.handleTabsRedirect(newTabs));\n }\n\n handleTabsRedirect(tabs) {\n /**\n * This function is doing the same process as function redirect in the file\n * modules/core/ui/navigation/tabs.provider.js\n * That function is not run because bridge.service.ts overrides the method addTab where the redirect() was called.\n */\n const redirectedTab = tabs.find((tab) => tab.redirectedTo);\n const [ topPriorityTab ] = tabs;\n if (redirectedTab && !topPriorityTab.redirectedTo) {\n this.$location.replace();\n this.$location.path(topPriorityTab.path);\n topPriorityTab.redirectedTo = true;\n redirectedTab.redirectedTo = false;\n }\n }\n\n get() {\n return this.bridge.getActions();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BreadcrumbFactory } from '@c8y/ngx-components';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport { BridgeService } from './bridge.service';\n\n@Injectable()\nexport class Ng1BreadcrumbFactoryService implements BreadcrumbFactory {\n private trigger: any = new ReplaySubject(1);\n private breadcrumbs = this.trigger.pipe(\n debounceTime(100),\n switchMap(() => {\n return this.bridge.getBreadcrumbs();\n })\n );\n constructor(\n private bridge: BridgeService\n ) {}\n\n get() {\n this.trigger.next();\n return this.breadcrumbs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class Ng1NodesFactoryService implements NavigatorNodeFactory {\n constructor(\n private bridge: BridgeService\n ) {}\n\n get() {\n return this.bridge.navigationNodes$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TabFactory } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class Ng1TabsFactoryService implements TabFactory {\n tabsObservable;\n constructor(private bridge: BridgeService) {\n this.tabsObservable = bridge.getTabs();\n }\n get() {\n return this.tabsObservable;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DocLinkFactory, DocLink } from '@c8y/ngx-components';\nimport { BridgeService } from './bridge.service';\n\n@Injectable()\nexport class Ng1DocsFactoryService implements DocLinkFactory {\n private links: Promise<DocLink[]>;\n constructor(private bridge: BridgeService) {\n this.links = this.bridge.getQuickLinks();\n this.links.then(list => {\n list.map(el => {\n el.type = el.type || 'quicklink';\n return el;\n });\n });\n }\n\n get() {\n return this.links;\n }\n}\n","import {\n AppStateService,\n} from '@c8y/ngx-components';\nimport { BasicAuth, FetchClient, ICredentials } from '@c8y/client';\n\nexport class AuthBridgeService {\n constructor(\n public injector: any,\n private basicAuth: BasicAuth,\n private fetchClient: FetchClient,\n private appState: AppStateService\n ) {\n this.hookAuth();\n }\n\n updateBasicAuth(credentials: ICredentials) {\n const { headers } = this.fetchClient.getFetchOptions({});\n if (headers.Authorization) {\n const token = headers.Authorization.match(/basic\\s(.*)$/i)[1];\n if (token) {\n this.basicAuth.updateCredentials(credentials);\n this.fetchClient.setAuth(this.basicAuth);\n }\n }\n }\n\n hookAuth() {\n this.appState.currentUser.subscribe(u => {\n if (u) {\n this.injector.get('c8yAuth').headers = () => this.fetchClient.getFetchOptions({}).headers;\n const { headers } = this.fetchClient.getFetchOptions({});\n if (headers.Authorization) {\n const token = headers.Authorization.match(/basic\\s(.*)$/i)[1];\n if (token) {\n this.setToken(token, headers.tfatoken);\n }\n } else {\n this.setToken(undefined, headers.tfatoken, 'Oauth');\n }\n this.injector.get('$rootScope').$emit('authStateChange', { hasAuth: true });\n } else {\n this.injector.get('$rootScope').$emit('authStateChange', { hasAuth: false });\n }\n });\n }\n\n setToken(token?: string, tfa?: string, type = 'Basic') {\n const c8yAuth = this.injector.get('c8yAuth');\n if (type === 'Basic') {\n c8yAuth.onSetToken({ token, type });\n if (tfa) {\n c8yAuth.setTFAToken(tfa);\n }\n } else {\n c8yAuth.authReady();\n }\n }\n}\n\nexport function authBridgeServiceFactory(\n injector: any,\n basicAuth: BasicAuth,\n fetchClient: FetchClient,\n appState: AppStateService\n) {\n return new AuthBridgeService(injector, basicAuth, fetchClient, appState);\n}\n\nexport const authBridgeServiceProvider = {\n provide: AuthBridgeService,\n useFactory: authBridgeServiceFactory,\n deps: ['$injector', BasicAuth, FetchClient, AppStateService]\n};\n","import {DatePipe} from '@c8y/ngx-components';\n\nexport class AbsoluteDateService {\n constructor(private datePipe: DatePipe) {}\n getFilter() {\n return (value: any) => this.datePipe.transform(value);\n }\n }\nexport function absoluteDateServiceFactory(datePipe: DatePipe) {\n return new AbsoluteDateService(datePipe).getFilter();\n}\nexport const absoluteDateServiceProvider = {\n provide: AbsoluteDateService,\n useFactory: absoluteDateServiceFactory,\n deps: [DatePipe]\n};\n","import { bridgeServiceProvider } from './bridge.service';\nimport {\n HOOK_ACTION,\n HOOK_ACTION_BAR,\n HOOK_BREADCRUMB,\n HOOK_NAVIGATOR_NODES,\n HOOK_TABS,\n HOOK_DOCS,\n RouterModule\n} from '@c8y/ngx-components';\nimport { Ng1ActionBarFactoryService } from './action-bar.factory';\nimport { Ng1ActionFactoryService } from './action.factory';\nimport { Ng1BreadcrumbFactoryService } from './breadcrumb.factory';\nimport { Ng1NodesFactoryService } from './nodes.factory';\nimport { Ng1TabsFactoryService } from './tabs.factory';\nimport { NgModule } from '@angular/core';\nimport { Ng1DocsFactoryService } from './docs.factory';\nimport { authBridgeServiceProvider } from './auth-bridge.service';\nimport { absoluteDateServiceProvider } from './absolute-date.service';\n\n@NgModule({\n imports: [RouterModule],\n exports: [],\n providers: [\n absoluteDateServiceProvider,\n bridgeServiceProvider,\n authBridgeServiceProvider,\n { provide: HOOK_NAVIGATOR_NODES, useClass: Ng1NodesFactoryService, multi: true },\n { provide: HOOK_TABS, useClass: Ng1TabsFactoryService, multi: true },\n { provide: HOOK_ACTION_BAR, useClass: Ng1ActionBarFactoryService, multi: true },\n { provide: HOOK_ACTION, useClass: Ng1ActionFactoryService, multi: true },\n { provide: HOOK_BREADCRUMB, useClass: Ng1BreadcrumbFactoryService, multi: true },\n { provide: HOOK_DOCS, useClass: Ng1DocsFactoryService, multi: true }\n ]\n})\nexport class UpgradeModule {}\n","import { downgradeComponent } from '@angular/upgrade/static';\nimport {\n BootstrapComponent,\n DataGridComponent,\n UserTotpRevokeComponent,\n LoadingComponent\n} from '@c8y/ngx-components';\nimport { AppLogsAutoRefreshComponent } from '@c8y/ngx-components/app-logs';\nimport { RangeDisplayComponent } from '@c8y/ngx-components';\nimport { HelpComponent } from '@c8y/ngx-components';\nexport const bootstrapComponent = downgradeComponent({ component: BootstrapComponent });\nexport const userTotpComponent = downgradeComponent({ component: UserTotpRevokeComponent });\nexport const appLogsAutoRefreshComponent = downgradeComponent({\n component: AppLogsAutoRefreshComponent\n});\nexport const dataGridComponent = downgradeComponent({ component: DataGridComponent });\nexport const loadingComponent = downgradeComponent({ component: LoadingComponent });\nexport const rangeDisplayComponent = downgradeComponent({ component: RangeDisplayComponent });\nexport const helpComponent = downgradeComponent({ component: HelpComponent });\n","import { Injectable, Inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HOOK_PATTERN_MESSAGES } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ServerMessagesService {\n\n MESSAGE_PATTERNS: any;\n constructor(\n private translateService: TranslateService,\n @Inject(HOOK_PATTERN_MESSAGES) patterns\n ) {\n this.MESSAGE_PATTERNS = patterns;\n }\n\n translate(s: string) {\n return this.translateService.instant(s);\n }\n}\n","import { downgradeInjectable } from '@angular/upgrade/static';\nimport {\n AlertService,\n AppStateService,\n DocsService,\n HeaderService,\n PasswordService,\n UserMenuService,\n CachedLocaleDictionaryService\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { BulkOperationDetailsService } from '@c8y/ngx-components/operations/bulk-operations-list';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BridgeService } from '../bridge.service';\nimport { AbsoluteDateService } from '../absolute-date.service';\nimport { ServerMessagesService } from './serverMessages.service';\nimport { AuthBridgeService } from '../auth-bridge.service';\n\nexport const absoluteDateService = downgradeInjectable(AbsoluteDateService);\nexport const bridgeService = downgradeInjectable(BridgeService);\nexport const authBridgeService = downgradeInjectable(AuthBridgeService);\nexport const appStateService = downgradeInjectable(AppStateService);\nexport const headerService = downgradeInjectable(HeaderService);\nexport const alertsService = downgradeInjectable(AlertService);\nexport const userMenuService = downgradeInjectable(UserMenuService);\nexport const apiService = downgradeInjectable(ApiService);\nexport const docsService = downgradeInjectable(DocsService);\nexport const passwordService = downgradeInjectable(PasswordService);\nexport const translateService = downgradeInjectable(TranslateService);\nexport const cachedLocaleDictionaryService = downgradeInjectable(CachedLocaleDictionaryService);\nexport const serverMessagesService = downgradeInjectable(ServerMessagesService);\nexport const bulkOperationDetailsService = downgradeInjectable(BulkOperationDetailsService);\n","function c8yNg1HttpInterceptor(\r\n $q,\r\n c8yLoadingIndicator,\r\n c8yApiService\r\n) {\r\n 'ngInject';\r\n\r\n function request(config) {\r\n const { url, method } = config;\r\n c8yApiService.onStart({ url, method, options: config });\r\n return config;\r\n }\r\n\r\n function requestError(rejection) {\r\n finishRequest(rejection);\r\n return $q.reject(rejection);\r\n }\r\n\r\n function response(res) {\r\n finishRequest(res);\r\n return res;\r\n }\r\n\r\n function responseError(rejection) {\r\n finishRequest(rejection);\r\n c8yLoadingIndicator.responseError(rejection);\r\n return $q.reject(rejection);\r\n }\r\n\r\n function finishRequest(res) {\r\n const { url, method } = res.config;\r\n c8yApiService.onFinish({\r\n url,\r\n method,\r\n response: res,\r\n options: res.config\r\n });\r\n }\r\n\r\n return {\r\n request,\r\n requestError,\r\n response,\r\n responseError\r\n };\r\n}\r\n\r\nexport { c8yNg1HttpInterceptor };\r\n","import { NavigatorNodeRoot, NavigatorNode } from '@c8y/ngx-components';\nimport { assign } from 'lodash-es';\n\nexport class NavigatorNodeRootLegacy extends NavigatorNodeRoot {\n\n addRoot(nodeData): NavigatorNode {\n let duplicate;\n if (nodeData.path === '') {\n nodeData.path = '/';\n }\n nodeData.label = nodeData.name;\n if (typeof nodeData.parent === 'object') {\n nodeData.parent.label = nodeData.parent.name;\n }\n\n if (nodeData.preventDuplicates) {\n duplicate = this.find(({ path, parents, label}) => {\n return path === nodeData.path &&\n (label === nodeData.label) &&\n parents.some((p) => p.label === nodeData.parent);\n });\n if (duplicate) {\n duplicate.routerLinkExact = false;\n }\n }\n\n return duplicate || super.addRoot(nodeData);\n }\n\n createNode(node) {\n const newNode = super.createNode(node);\n const update = newNode.update.bind(newNode);\n const root = this;\n return Object.defineProperties(assign(newNode, {\n realName: (newNode as any).name || newNode.label,\n _parent: true, // just use it to detect if it has been deleted\n update(data) {\n if (this._parent === undefined) {\n // _parent was deleted somene instead to put this in root\n root.addRoot(this);\n // put it back so it can be deleted again\n this._parent = true;\n }\n update(data);\n },\n addChild(nodeChild) {\n this.add(root.createNode(nodeChild));\n }\n }), {\n label: {\n get() {\n return this.realName || '';\n },\n set(name) {\n this.realName = name;\n }\n },\n name: {\n get() {\n return this.realName || '';\n },\n set(name) {\n this.realName = name;\n }\n },\n show: {\n get() {\n return !this.hidden;\n },\n set(show) {\n this.hidden = !show;\n }\n }\n });\n }\n}\n","const rootComponent = {\n template: `\n <c8y-bootstrap>\n <div id=\"c8y-legacy-view\">\n <div ng-view ng-if=\"vm.widthSet && vm.authState.hasAuth\"></div>\n </div>\n </c8y-bootstrap>`,\n controller: c8yUiRootController,\n controllerAs: 'vm'\n};\n\nfunction c8yUiRootController(\n $rootScope,\n $timeout,\n c8yBase,\n c8yNavigator,\n c8yApplication,\n c8yHeaderService\n) {\n 'ngInject';\n const vm = this;\n\n Object.assign(vm, {\n $onInit,\n navOpen: false\n });\n\n ////////////\n\n function $onInit() {\n c8yHeaderService.map((states) => states.nav.open).subscribe((isOpen) => {\n vm.navOpen = isOpen;\n });\n c8yHeaderService.configNavigator({canToggle: true});\n $rootScope.$on('authStateChange', onAuthStateChange);\n vm.rootNodes = c8yNavigator.rootNodes;\n c8yApplication.currentAppCached().then(onAppInfo);\n vm.navHiddenOnStartup = c8yBase.appOption('hide_navigator');\n checkReady();\n }\n\n function onAuthStateChange(evt, data) {\n vm.authState = data;\n }\n\n function onAppInfo() {\n vm.tabsHorizontal = c8yBase.appOption('tabsHorizontal');\n }\n\n function checkReady() {\n const element = document.querySelector('#c8y-legacy-view');\n const hasWidth = element && element.clientWidth;\n if (hasWidth) {\n vm.widthSet = true;\n } else {\n $timeout(checkReady);\n }\n }\n}\nexport { rootComponent };\n","import { NgZone } from '@angular/core';\nimport { downgradeInjectable } from '@angular/upgrade/static';\nimport * as angular from 'angular';\nimport { c8yAlertDecorator } from './alert.decorator';\nimport {\n appLogsAutoRefreshComponent,\n bootstrapComponent,\n dataGridComponent,\n loadingComponent,\n userTotpComponent,\n rangeDisplayComponent,\n helpComponent\n} from './downgraded.components';\nimport {\n absoluteDateService,\n alertsService,\n apiService,\n appStateService,\n bridgeService,\n authBridgeService,\n bulkOperationDetailsService,\n docsService,\n headerService,\n passwordService,\n serverMessagesService,\n translateService,\n userMenuService,\n cachedLocaleDictionaryService\n} from './downgraded.services';\nimport { QueriesUtil } from '@c8y/client';\nimport { gettextCatalogDecorator } from './gettextCatalog.decorator';\nimport { groupTypesHierarchyNavigatorDecorator } from './groupsHierarchyNavigator.decorator';\nimport { c8yNg1HttpInterceptor } from './http.interceptor';\nimport { c8yNavigatorProvider } from './navigator.provider';\nimport { rootComponent } from './root.component';\nimport { c8yTitleDecorator } from './title.decorator';\nimport { c8yViewsProvider } from './views.provider';\n\nconst NAME = 'c8y.upgrade';\n(window as any).preventNg1Bootstrap = true;\n\nangular\n .module(NAME, [])\n // tslint:disable-next-line:only-arrow-functions\n .config(function($httpProvider) {\n 'ngInject';\n\n const ng1InterceptorIndex = $httpProvider.interceptors.indexOf('c8yLoadingIndicator');\n if (ng1InterceptorIndex > -1) {\n $httpProvider.interceptors.splice(ng1InterceptorIndex, 1);\n }\n $httpProvider.interceptors.push(c8yNg1HttpInterceptor);\n })\n .component('c8yUiRoot', rootComponent)\n .directive('c8yBootstrap', bootstrapComponent)\n .factory('c8yBridgeService', bridgeService)\n .factory('c8yAuthBridgeService', authBridgeService)\n .factory('c8yAppStateService', appStateService)\n .factory('c8yHeaderService', headerService)\n .factory('c8yUserMenuService', userMenuService)\n // tslint:disable-next-line:only-arrow-functions\n .service('c8yQueriesUtil', function() {\n return new QueriesUtil();\n })\n .decorator('c8yTitle', c8yTitleDecorator)\n .factory('c8yAlert', alertsService)\n .decorator('c8yAlert', c8yAlertDecorator)\n .decorator('groupTypesHierarchyNavigator', groupTypesHierarchyNavigatorDecorator) // prevents loading the groups\n .factory('c8yApiService', apiService)\n .factory('c8yDocs', docsService)\n .service('c8yPasswordConfirm', passwordService);\n\nangular\n .module('c8y.ui')\n .filter('absoluteDate', absoluteDateService)\n .directive('c8yLoading', loadingComponent)\n .provider('c8yNavigator', c8yNavigatorProvider)\n .provider('c8yViews', c8yViewsProvider)\n .directive('c8yUserTotpRevoke', userTotpComponent)\n .directive('c8yAppLogsAutoRefresh', appLogsAutoRefreshComponent)\n .directive('c8yDataGrid', dataGridComponent)\n .directive('c8yRangeDisplay', rangeDisplayComponent)\n .directive('c8yHelp', helpComponent)\n .factory('c8yTranslate', translateService)\n .factory('c8yCachedLocaleDictionaryService', cachedLocaleDictionaryService)\n .factory('c8yBulkOperationDetailsService', bulkOperationDetailsService)\n .decorator('gettextCatalog', gettextCatalogDecorator)\n .factory('c8yServerMessages', serverMessagesService)\n .factory('ngZone', downgradeInjectable(NgZone));\n\nexport const ng1Modules = ['app', NAME];\n","import * as angular from 'angular';\n\nfunction c8yTitleDecorator(\n $q,\n $delegate,\n $injector,\n $rootScope,\n $location,\n $templateCache,\n $compile,\n c8yHeaderService\n) {\n 'ngInject';\n\n const exports = {\n translate,\n changeTitleInAngular\n };\n\n $delegate.changeTitle = changeTitle;\n $delegate.setTitleElement = setTitleElement;\n\n $rootScope.$on('$routeChangeStart', () => {\n changeTitle({});\n });\n\n $rootScope.$on('$routeChangeSuccess', (event) => {\n const title = $delegate.get($location.path());\n if (title) {\n const titleData = $q.when(title.data ? $injector.invoke(title.data) : {});\n titleData.then((data) => {\n const { templateUrl } = data;\n if (templateUrl) {\n const template = $templateCache.get(templateUrl);\n setTitleElement($compile(template)(event.targetScope));\n } else {\n changeTitle(data);\n }\n });\n }\n });\n\n function changeTitle(newTitleSubtitleObjOrPromise, options = { skipTitleTranslation: false, skipSubtitleTranslation: false }) {\n $q.when(newTitleSubtitleObjOrPromise).then(newTitleSubtitleObj =>\n changeTitleInAngular(translate(newTitleSubtitleObj, options)));\n }\n\n function translate(\n { title = '', subtitle = '' },\n { skipTitleTranslation = false, skipSubtitleTranslation = false }\n ) {\n const titleTemplate = skipTitleTranslation ? '{{ title }}' : '{{ title | translate }}';\n const subtitleTemplate = skipSubtitleTranslation ? '{{ subtitle }}' : '{{ subtitle | translate }}';\n const template = `\n <h1 class=\"text-truncate\">${titleTemplate}\n <small>${subtitleTemplate}</small></h1>\n `;\n\n const isolatedScope = $rootScope.$new(true);\n isolatedScope.title = title;\n isolatedScope.subtitle = subtitle;\n\n return $compile(angular.element(template))(isolatedScope)[0];\n }\n\n function changeTitleInAngular(domElement) {\n c8yHeaderService.changeTitle(domElement);\n }\n\n function setTitleElement($element) {\n $element.show();\n changeTitleInAngular($element[0]);\n }\n\n return $delegate;\n}\n\nexport { c8yTitleDecorator };\n","function c8yAlertDecorator($delegate, $rootScope, $injector) {\r\n 'ngInject';\r\n\r\n $delegate.add = alert => {\r\n $delegate.addAlert(transformAlert(alert));\r\n };\r\n\r\n $rootScope.$on('alert', (evt, alert) => {\r\n $delegate.addAlert(transformAlert(alert));\r\n });\r\n\r\n $rootScope.$on('message', (evt, alert) => {\r\n $delegate.addAlert(transformAlert(alert));\r\n });\r\n\r\n /**\r\n * Solution based on the: https://stackoverflow.com/questions/40102148/how-to-iterate-over-all-properties-in-objects-prototype-chain.\r\n * Problem came after switching to ES6, as all prototype properties of classes are non-enumerable.\r\n */\r\n const allNames = new Set();\r\n for (let o = $delegate; o !== Object.prototype; o = Object.getPrototypeOf(o)) {\r\n for (const name of Object.getOwnPropertyNames(o)) {\r\n allNames.add(name);\r\n }\r\n }\r\n Array.from(allNames).forEach((property: string) => {\r\n if (typeof $delegate[property] === 'function') {\r\n $delegate[property] = $delegate[property].bind($delegate);\r\n }\r\n });\r\n\r\n function transformAlert(alert: any) {\r\n const newAlert: any = { ...alert };\r\n if (alert.onClose) {\r\n newAlert.onClose = () => {\r\n $injector.invoke(alert.onClose);\r\n };\r\n }\r\n if (alert.onDetail) {\r\n newAlert.onDetail = () => {\r\n $injector.invoke(alert.onDetail);\r\n };\r\n }\r\n return newAlert;\r\n }\r\n\r\n return $delegate;\r\n}\r\n\r\nexport { c8yAlertDecorator };\r\n","function groupTypesHierarchyNavigatorDecorator(\n $delegate,\n $q,\n) {\n 'ngInject';\n $delegate.loadAll = () => $q.when();\n $delegate.addGroupNavigation = () => $q.when();\n return $delegate;\n}\n\nexport { groupTypesHierarchyNavigatorDecorator };\n","import { NavigatorNode } from '@c8y/ngx-components';\nimport { Observable, Subject, defer, of } from 'rxjs';\nimport { merge } from 'rxjs/operators';\nimport { pick, map, property, some, every } from 'lodash-es';\nimport { NavigatorNodeRootLegacy } from './navigator-node-root-legacy';\n\n// Just to hook into the bridge service\nexport function c8yNavigatorProvider() {\n const root = new NavigatorNodeRootLegacy();\n const rootNodesSubject: Subject<NavigatorNode[]> = new Subject();\n const conditionalNodes = [];\n const rootNodes$: Observable<NavigatorNode[]> = rootNodesSubject.pipe(\n merge(defer(() => of(root.children))),\n );\n\n function addNavigation(nodes) {\n const nodeList = (Array.isArray(nodes) ? nodes : [nodes]);\n nodeList.forEach((node) => {\n if (isConditional(node)) {\n node.hidden = undefined;\n conditionalNodes.push(node);\n }\n node.navNode = root.addRoot(node);\n });\n rootNodesSubject.next(root.children);\n }\n\n function removeNavigation(node) {\n const found = root.find((n) => n === node);\n if (found) {\n found.parents.forEach((p) => p.remove(found));\n rootNodesSubject.next(root.children);\n }\n }\n\n function findNode(node) {\n return root.find(node);\n }\n\n function isConditional(node) {\n return node.showIf || node.showIfPermissions || node.showIfContainsVisibleViews;\n }\n\n function $get($q, $injector) {\n 'ngInject';\n\n // This avoids the circular dependency\n setTimeout(() => conditionalNodes.forEach(processShowIf));\n\n function processShowIf(node) {\n const c8yUiUtil = $injector.get('c8yUiUtil');\n const visibilityPromises = [];\n const {\n showIf,\n showIfPermissions,\n showIfContainsVisibleViews\n } = node;\n\n if (showIf) {\n visibilityPromises.push($injector.invoke(showIf));\n }\n if (showIfContainsVisibleViews) {\n visibilityPromises.push(viewsConditionalVisibility(node));\n }\n\n c8yUiUtil.configureVisibility({\n showIf: () => $q.all(visibilityPromises).then(every),\n showIfPermissions\n }, 'visible')\n .then(({ visible }) => {\n if (visible) {\n node.navNode.update({\n hidden: false,\n showIf: null,\n showIfPermission: null,\n showIfContainsVisibleViews: null\n });\n } else {\n node.navNode.update({\n hidden: true\n });\n }\n });\n }\n\n function viewsConditionalVisibility(node) {\n const c8yUiUtil = $injector.get('c8yUiUtil');\n const c8yViews = $injector.get('c8yViews');\n const views = c8yViews.getByPath(node.path);\n return $q.all(\n map(views, (view) => c8yUiUtil\n .configureVisibility(pick(view, ['showIf', 'showIfPermissions']), 'show', false)\n .then(property('show'))\n )\n )\n .then(some);\n }\n\n return {\n rootNodes() {\n return root.children;\n },\n findNode,\n addNavigation,\n removeNavigation,\n rootNodes$\n };\n }\n\n return {\n $get,\n addNavigation,\n removeNavigation\n };\n}\n","import * as angular from 'angular';\n\nfunction gettextCatalogDecorator(\n $delegate,\n $interpolate,\n c8yTranslate\n) {\n 'ngInject';\n\n const gettextCatalog = $delegate;\n const originalGetString = angular.bind(gettextCatalog, gettextCatalog.getString);\n\n function newGetString(input, scope, context) {\n if (typeof input === 'string') {\n const translatedString = originalGetString(input, scope, context);\n const interpolatedString = scope ? $interpolate(input)(scope) : input;\n\n let stringToReturn = translatedString;\n\n if (translatedString && translatedString === interpolatedString) {\n const translatedServerMessage = c8yTranslate.instant(interpolatedString);\n stringToReturn = translatedServerMessage;\n }\n\n return stringToReturn;\n }\n\n return input;\n }\n\n gettextCatalog.getString = newGetString;\n\n return gettextCatalog;\n}\n\nexport { gettextCatalogDecorator };\n","import { UpgradeModule as NgUpgradeModule } from '@angular/upgrade/static';\nimport { ng1Modules } from './ng1';\n\nexport abstract class HybridAppModule {\n ng1Modules = ng1Modules;\n protected upgrade: NgUpgradeModule;\n\n ngDoBootstrap() {\n (window as any).bootstrap();\n this.upgrade.bootstrap(document.getElementById('app'), this.ng1Modules, { strictDi: false });\n }\n}\n","import { EmptyComponent } from '@c8y/ngx-components';\n\nexport const UPGRADE_ROUTES = [\n { path: '**', component: EmptyComponent}\n];\n","import { Injectable, NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ActionBarService, getActivatedRoute } from '@c8y/ngx-components';\nimport {\n ContextDashboardService,\n ContextDashboardManagedObject,\n ContextWidgetConfig\n} from '@c8y/ngx-components/context-dashboard';\nimport { gettext } from '@c8y/ngx-components';\nimport { get } from 'lodash-es';\n\n@Injectable()\nexport class DashboardBridgeService {\n dashboardSvc;\n compile;\n dashboardClipboard;\n\n constructor(\n private ng1Injector: any,\n private zone: NgZone,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private actionBarService: ActionBarService\n ) {\n this.dashboardSvc = ng1Injector.get('dashboardSvc');\n this.compile = ng1Injector.get('$compile');\n }\n\n get ng1Components() {\n return this.ng1Injector.get('c8yComponents');\n }\n\n async instantiateComponent(widget, element) {\n const { dashboard, context, child } = widget;\n if (dashboard) {\n const transformedChild = await this.dashboardSvc.transformChildWithContext(\n this.dashboardSvc.forcedContext || context,\n dashboard,\n child\n );\n if (this.dashboardSvc.forcedContext || dashboard.deviceType) {\n await this.dashboardSvc.updateConfigTargetsWithContext(\n this.dashboardSvc.forcedContext || context,\n transformedChild.config\n );\n }\n return this.zone.runOutsideAngular(() =>\n this.loadTemplate(transformedChild, child, element, context)\n );\n } else {\n return this.loadConfigTemplate(element, widget);\n }\n }\n\n async editDashboard(dashboard) {\n return this.dashboardSvc.editCurrentDashboard({ dashboardId: dashboard.id });\n }\n\n copyDashboard() {\n const dashboard = this.getDashboard();\n const couldCopy = this.dashboardSvc.copyDashboard(dashboard.c8y_Dashboard);\n if (couldCopy) {\n this.dashboardClipboard = dashboard;\n this.actionBarService.refresh();\n return dashboard;\n }\n }\n\n async pasteDashboard() {\n try {\n const newDashboard = await this.dashboardSvc.pasteDashboard();\n this.navigateToDashboard(newDashboard);\n this.dashboardClipboard = undefined;\n } catch (ex) {\n // intended empty\n }\n this.actionBarService.refresh();\n }\n\n instantiateDeviceSelector(element, widgetConfig: ContextWidgetConfig) {\n return this.loadConfigTemplate(element, widgetConfig, true);\n }\n\n private loadTemplate(transformedChild, child, element, context) {\n const scope = this.ng1Injector.get('$rootScope').$new(true);\n scope.child = transformedChild;\n scope.dashboardContext = context;\n if (child.widgetComponent) {\n element.innerHTML = `<c8y-ui-component component-name=\"'${\n child.widgetComponent\n }'\" config=\"child.config\" context=\"dashboardContext\"></c8y-ui-component>`;\n } else if (child.templateUrl) {\n element.innerHTML = `<ng-include src=\"'${child.templateUrl}'\"></ng-include>`;\n }\n this.compile(element)(scope);\n return scope;\n }\n\n private navigateToDashboard(dashboard: ContextDashboardManagedObject) {\n if (/dashboard/.test(this.router.url)) {\n this.router.navigate(['..', dashboard.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n } else {\n this.router.navigate(['..', 'dashboard', dashboard.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n }\n }\n\n private getDashboard() {\n return getActivatedRoute(this.router).snapshot.data.dashboard;\n }\n\n private loadConfigTemplate(\n element,\n widgetConfig: ContextWidgetConfig,\n onlyDeviceSelector = false\n ) {\n const { settings } = widgetConfig;\n const scope = this.ng1Injector.get('$rootScope').$new(true);\n\n scope.settings = { ...settings, ...settings.ng1 };\n scope.options = widgetConfig.options;\n scope.config = widgetConfig;\n scope.forms = {};\n scope.rootId = settings.context.id;\n scope.dashboard = get(widgetConfig, 'settings.dashboardMo');\n\n let configCmp = '';\n if (!onlyDeviceSelector) {\n if (widgetConfig.settings.configComponent) {\n configCmp = `<c8y-ui-component component-name=\"'${\n widgetConfig.settings.configComponent\n }'\" config=\"config\"></c8y-ui-component>`;\n } else if (widgetConfig.settings.configTemplateUrl) {\n configCmp = `<ng-include src=\"'${widgetConfig.settings.configTemplateUrl}'\"></ng-include>`;\n }\n }\n\n element.innerHTML = `\n <ng-form name=\"forms.componentForm\">\n <div class=\"form-group\"\n ng-if=\"!settings.noDeviceTarget\"\n ng-style=\"{height: settings.hideTarget && '0', overflow: 'hidden'}\"\n >\n <label translate>${gettext('Target assets or devices')}</label>\n <c8y-device-selector-combo parent=\"rootId\"\n selected-child-device=\"config.device\"\n groups-selectable=\"settings.groupsSelectable\"\n select-required=\"!settings.deviceTargetNotRequired\"\n ></c8y-device-selector-combo>\n </div>\n ${configCmp}\n </ng-form>`;\n\n scope.$watch('forms.componentForm.$invalid', formStatus => {\n this.contextDashboardService.formDisabled = formStatus;\n });\n this.compile(element)(scope);\n this.contextDashboardService.formDisabled = scope.forms.componentForm.$invalid;\n\n return scope;\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, OnDestroy, Optional } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { WidgetsDashboardComponent } from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'c8y-widget-legacy',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WidgetComponent implements OnInit, OnDestroy {\n ng1Scope;\n config;\n private resizeSubscription?: Subscription;\n constructor(\n @Optional() private dashboard: WidgetsDashboardComponent,\n private dashboardBridgeService: DashboardBridgeService,\n private el: ElementRef\n ) {}\n\n async ngOnInit() {\n this.ng1Scope = await this.dashboardBridgeService.instantiateComponent(this.config, this.el.nativeElement);\n if (this.dashboard) {\n this.resizeSubscription = this.dashboard.onChangeDashboard.subscribe(() => {\n this.ng1Scope.$broadcast('dashboardResize');\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.ng1Scope) {\n this.ng1Scope.$destroy();\n }\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n}\n","import { Input, ChangeDetectionStrategy, Component, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-device-selector-legacy',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DeviceSelectorComponent implements OnInit, OnDestroy {\n ng1Scope;\n config;\n\n constructor(\n private dashboardBridgeService: DashboardBridgeService,\n private el: ElementRef\n ) {}\n\n async ngOnInit() {\n this.ng1Scope = this.dashboardBridgeService.instantiateDeviceSelector(this.el.nativeElement, this.config);\n }\n\n ngOnDestroy(): void {\n if (this.ng1Scope) {\n this.ng1Scope.$destroy();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DynamicComponentDefinition } from '@c8y/ngx-components';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { WidgetComponent } from './widget.component';\nimport { DeviceSelectorComponent } from './device-selector.component';\n\n@Injectable()\nexport class Ng1ComponentFactoryService {\n constructor(private bridge: DashboardBridgeService) {}\n async get() {\n const components = (await this.bridge.ng1Components.list()).map(cmp => {\n const data = {\n settings: {\n ...cmp.options,\n configTemplateUrl: cmp.configTemplateUrl,\n widgetComponent: cmp.widgetComponent,\n configComponent: cmp.configComponent,\n transformConfigWithContext:\n cmp.transformConfigWithContext || cmp.componentTransformConfigWithContext,\n upgrade: true\n }\n } as any;\n data.settings.templateUrl = cmp.templateUrl; // workaround as in object it creates build error\n\n return {\n id: cmp.name,\n label: cmp.nameDisplay || cmp.name,\n description: cmp.description,\n component: WidgetComponent,\n configComponent: WidgetComponent,\n previewImage: cmp.previewImage,\n data\n } as DynamicComponentDefinition;\n });\n\n // add the device selector legacy component\n components.push({\n id: 'device.selector.legacy',\n label: 'Device selector',\n description: '',\n data: { settings: { noNewWidgets: true, upgrade: true } },\n component: DeviceSelectorComponent\n });\n\n return components;\n }\n}\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-copy-action-legacy',\n template: `\n <ng-template #templateCopy>\n <li>\n <button title=\"{{'Copy dashboard' | translate}}\" (click)=\"copyDashboard()\">\n <i class=\"dlt-c8y-icon-copy m-r-4\"></i><span translate>Copy dashboard</span>\n </button>\n </li>\n </ng-template>\n `\n})\nexport class CopyActionComponent implements OnInit {\n @ViewChild('templateCopy', { read: TemplateRef, static: true }) templateCopy;\n\n constructor(\n private vcRef: ViewContainerRef,\n private dashboardBridgeService: DashboardBridgeService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templateCopy);\n }\n\n copyDashboard() {\n this.dashboardBridgeService.copyDashboard();\n }\n}\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\n\n@Component({\n selector: 'c8y-paste-action-legacy',\n template: `\n <ng-template #templatePaste>\n <li>\n <button title=\"{{'Paste dashboard' | translate}}\" (click)=\"pasteDashboard()\">\n <i class=\"m-r-4\" c8yIcon=\"clipboard\"></i><span translate>Paste dashboard</span> <span\n >\"{{ dashboardName }}\"</span\n >\n </button>\n </li>\n </ng-template>\n `\n})\nexport class PasteActionComponent implements OnInit {\n @ViewChild('templatePaste', { read: TemplateRef, static: true }) templatePaste;\n dashboardName = '';\n\n constructor(\n private vcRef: ViewContainerRef,\n private dashboardBridgeService: DashboardBridgeService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templatePaste);\n this.dashboardName = this.dashboardBridgeService.dashboardClipboard.c8y_Dashboard.name;\n }\n\n pasteDashboard() {\n this.dashboardBridgeService.pasteDashboard();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ActionBarFactory, ActionBarItem, ViewContext } from '@c8y/ngx-components';\nimport { CopyActionComponent } from './copy-action.component';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { PasteActionComponent } from './paste-action.component';\n\n@Injectable()\nexport class Ng1DashboardActionFactoryService implements ActionBarFactory {\n constructor(private dashboardBridgeService: DashboardBridgeService) {}\n\n get(activeRoute?: ActivatedRoute) {\n const actions = [];\n const data =\n !activeRoute.parent || activeRoute.snapshot.data.context\n ? activeRoute.snapshot.data\n : activeRoute.parent.snapshot.data;\n const { contextData } = data;\n const canCopy =\n contextData &&\n activeRoute.snapshot.data.dashboard &&\n [ViewContext.Device, ViewContext.Group].includes(data.context);\n const canPaste =\n contextData &&\n [ViewContext.Device, ViewContext.Group].includes(data.context) &&\n this.dashboardBridgeService.dashboardClipboard;\n\n if (canCopy) {\n actions.push({\n priority: -20,\n placement: 'more',\n template: CopyActionComponent\n } as ActionBarItem);\n }\n\n if (canPaste) {\n actions.push({\n priority: -10,\n placement: 'more',\n template: PasteActionComponent\n } as ActionBarItem);\n }\n\n return actions;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, NgZone, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ActionBarService, HOOK_ACTION_BAR, HOOK_COMPONENTS} from '@c8y/ngx-components';\nimport { ContextDashboardService } from '@c8y/ngx-components/context-dashboard';\nimport { Ng1ComponentFactoryService } from './component.factory';\nimport { CopyActionComponent } from './copy-action.component';\nimport { Ng1DashboardActionFactoryService } from './dashboard-actions.factory';\nimport { DashboardBridgeService } from './dashboard-bridge.service';\nimport { PasteActionComponent } from './paste-action.component';\nimport { WidgetComponent } from './widget.component';\nimport { DeviceSelectorComponent } from './device-selector.component';\nimport { C8yTranslateModule } from '@c8y/ngx-components';\n\n@NgModule({\n declarations: [DeviceSelectorComponent, WidgetComponent, CopyActionComponent, PasteActionComponent],\n entryComponents: [DeviceSelectorComponent, WidgetComponent, CopyActionComponent, PasteActionComponent],\n imports: [CommonModule, C8yTranslateModule],\n providers: [\n {\n provide: DashboardBridgeService,\n useFactory: dashboardBridgeFactory,\n deps: ['$injector', NgZone, Router, [new Optional(), ContextDashboardService], ActionBarService]\n },\n { provide: HOOK_COMPONENTS, useClass: Ng1ComponentFactoryService, multi: true },\n { provide: HOOK_ACTION_BAR, useClass: Ng1DashboardActionFactoryService, multi: true }\n ]\n})\nexport class DashboardUpgradeModule {}\n\nexport function dashboardBridgeFactory(injector, ngZone, router, contextDashboardService, actionBarService) {\n return new DashboardBridgeService(injector, ngZone, router, contextDashboardService, actionBarService);\n}\n"]}
|