@iapps/ng-dhis2-ui 1.0.0 → 1.0.1
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/esm2022/index.mjs +1 -2
- package/fesm2022/iapps-ng-dhis2-ui.mjs +2 -48
- package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/package.json +1 -1
- package/esm2022/lib/modules/app-shell/app-shell.component.mjs +0 -33
- package/esm2022/lib/modules/app-shell/app-shell.module.mjs +0 -19
- package/esm2022/lib/modules/app-shell/index.mjs +0 -6
- package/lib/modules/app-shell/app-shell.component.d.ts +0 -8
- package/lib/modules/app-shell/app-shell.module.d.ts +0 -9
- package/lib/modules/app-shell/index.d.ts +0 -2
package/esm2022/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from './lib/ng-dhis2-ui.module';
|
|
2
2
|
export * from './lib/modules/header-bar';
|
|
3
3
|
export * from './lib/modules/button';
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL25nLWRoaXMyLXVpLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL2hlYWRlci1iYXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9hcHAtc2hlbGwnO1xuIl19
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9uZy1kaGlzMi11aS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9oZWFkZXItYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvYnV0dG9uJztcbiJdfQ==
|
|
@@ -24,8 +24,7 @@ import { Divider } from '@dhis2-ui/divider';
|
|
|
24
24
|
import { Layer } from '@dhis2-ui/layer';
|
|
25
25
|
import { CircularLoader } from '@dhis2-ui/loader';
|
|
26
26
|
import { MenuItem, MenuDivider } from '@dhis2-ui/menu';
|
|
27
|
-
import { Button as Button$1
|
|
28
|
-
import AppAdapter from '@dhis2/app-adapter';
|
|
27
|
+
import { Button as Button$1 } from '@dhis2/ui';
|
|
29
28
|
|
|
30
29
|
class NgDhis2UiModule {
|
|
31
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgDhis2UiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1186,54 +1185,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1186
1185
|
// Use of this source code is governed by a BSD-style
|
|
1187
1186
|
// license that can be found in the LICENSE file.
|
|
1188
1187
|
|
|
1189
|
-
class AppShellComponent extends ReactWrapperComponent {
|
|
1190
|
-
constructor() {
|
|
1191
|
-
super(...arguments);
|
|
1192
|
-
this.appConfig = {
|
|
1193
|
-
// url: process.env.REACT_APP_DHIS2_BASE_URL,
|
|
1194
|
-
// appName: process.env.REACT_APP_DHIS2_APP_NAME || '',
|
|
1195
|
-
// appVersion: process.env.REACT_APP_DHIS2_APP_VERSION || '',
|
|
1196
|
-
// apiVersion: parseInt(process.env.REACT_APP_DHIS2_API_VERSION),
|
|
1197
|
-
// pwaEnabled: process.env.REACT_APP_DHIS2_APP_PWA_ENABLED === 'true',
|
|
1198
|
-
// plugin: process.env.REACT_APP_DHIS2_APP_PLUGIN === 'true',
|
|
1199
|
-
};
|
|
1200
|
-
this.component = React__default.createElement(AppAdapter, { ...this.appConfig },
|
|
1201
|
-
React__default.createElement(React__default.Suspense, { fallback: React__default.createElement(Layer$1, { level: layers.alert },
|
|
1202
|
-
React__default.createElement(CenteredContent, null,
|
|
1203
|
-
React__default.createElement(CircularLoader$1, null))) }));
|
|
1204
|
-
}
|
|
1205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1206
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppShellComponent, selector: "ng-dhis2-ui-app-shell", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1207
|
-
}
|
|
1208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, decorators: [{
|
|
1209
|
-
type: Component,
|
|
1210
|
-
args: [{
|
|
1211
|
-
selector: 'ng-dhis2-ui-app-shell',
|
|
1212
|
-
template: '<ng-content></ng-content>',
|
|
1213
|
-
}]
|
|
1214
|
-
}] });
|
|
1215
|
-
|
|
1216
|
-
class AppShellModule {
|
|
1217
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1218
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, declarations: [AppShellComponent], imports: [CommonModule, SharedDhis2UiModule], exports: [AppShellComponent] }); }
|
|
1219
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, imports: [CommonModule, SharedDhis2UiModule] }); }
|
|
1220
|
-
}
|
|
1221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, decorators: [{
|
|
1222
|
-
type: NgModule,
|
|
1223
|
-
args: [{
|
|
1224
|
-
declarations: [AppShellComponent],
|
|
1225
|
-
imports: [CommonModule, SharedDhis2UiModule],
|
|
1226
|
-
exports: [AppShellComponent],
|
|
1227
|
-
}]
|
|
1228
|
-
}] });
|
|
1229
|
-
|
|
1230
|
-
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
1231
|
-
// Use of this source code is governed by a BSD-style
|
|
1232
|
-
// license that can be found in the LICENSE file.
|
|
1233
|
-
|
|
1234
1188
|
/**
|
|
1235
1189
|
* Generated bundle index. Do not edit.
|
|
1236
1190
|
*/
|
|
1237
1191
|
|
|
1238
|
-
export {
|
|
1192
|
+
export { ButtonComponent, ButtonModule, HeaderBarComponent, HeaderBarModule, NgDhis2UiModule };
|
|
1239
1193
|
//# sourceMappingURL=iapps-ng-dhis2-ui.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../ng-dhis2-ui/src/lib/ng-dhis2-ui.module.ts","../../../ng-dhis2-ui/src/lib/shared/components/react-component-wrapper/react-wrapper.component.tsx","../../../ng-dhis2-ui/src/lib/shared/components/index.ts","../../../ng-dhis2-ui/src/lib/shared/shared.module.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-app.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-notification.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-data.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/index.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/join-path.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/apps.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/logo-image.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/logo.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/notification-icon.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/notifications.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/use-debug-info.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-table.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-modal.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-header.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar-context.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/update-notification.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-menu.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile/use-on-doc-click.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/title.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/header-bar.component.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/header-bar.module.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/index.ts","../../../ng-dhis2-ui/src/lib/modules/button/button.component.tsx","../../../ng-dhis2-ui/src/lib/modules/button/button.module.ts","../../../ng-dhis2-ui/src/lib/modules/button/index.ts","../../../ng-dhis2-ui/src/lib/modules/app-shell/app-shell.component.tsx","../../../ng-dhis2-ui/src/lib/modules/app-shell/app-shell.module.ts","../../../ng-dhis2-ui/src/lib/modules/app-shell/index.ts","../../../ng-dhis2-ui/src/iapps-ng-dhis2-ui.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class NgDhis2UiModule {}\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport parse from 'html-react-parser';\nimport * as React from 'react';\nimport { ComponentProps } from 'react';\nimport * as ReactDOM from 'react-dom/client';\n(window as any).React = React;\n\n@Directive({\n selector: 'ng-dhis2-ui-wrapper',\n})\nexport class ReactWrapperComponent\n implements OnChanges, OnDestroy, AfterViewInit\n{\n @Input() props?: ComponentProps<any>;\n @Input() component!: React.ElementType;\n\n @ContentChild('ngDhis2UiContent') content!: ElementRef<HTMLElement>;\n protected reactDomRoot?: ReactDOM.Root;\n\n constructor(protected elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.render();\n }\n\n ngOnChanges(): void {\n if (this.elementRef) this.render();\n }\n\n ngOnDestroy() {\n this.reactDomRoot?.unmount();\n }\n\n protected render() {\n if (!this.component) throw new Error('React component must be supplied');\n\n if (!this.reactDomRoot) return;\n\n const jsxContent = this.content?.nativeElement?.outerHTML\n ? parse(this.content?.nativeElement?.outerHTML)\n : undefined;\n\n this.reactDomRoot.render(\n <this.component {...this.props}> {jsxContent || ''} </this.component>\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nimport { ReactWrapperComponent } from './react-component-wrapper/react-wrapper.component';\n\nexport const sharedComponents: any[] = [];\n\nexport { ReactWrapperComponent };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { sharedComponents } from './components';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [...sharedComponents],\n exports: [...sharedComponents],\n})\nexport class SharedDhis2UiModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarApp {\n name!: string;\n namespace!: string;\n defaultAction!: string;\n displayName!: string;\n icon!: string;\n description!: string;\n\n constructor(module: Record<string, unknown>) {\n this.name = module['name'] as string;\n this.namespace = module['namespace'] as string;\n this.defaultAction = this.getPath(module['defaultAction'] as string);\n this.icon = this.getPath(module['icon'] as string);\n this.displayName = module['displayName'] as string;\n this.description = module['description'] as string;\n }\n\n getPath(item: string) {\n if (item?.startsWith('../')) {\n return '../../' + item;\n }\n return item;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarNotification {\n unreadInterpretations?: number;\n unreadMessageConversations?: number;\n\n constructor(notification: Record<string, number>) {\n this.unreadInterpretations = notification['unreadInterpretations'];\n this.unreadMessageConversations =\n notification['unreadMessageConversations'];\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, catchError, map, of, zip } from 'rxjs';\nimport { HeaderBarApp } from './header-bar-app.model';\nimport { HeaderBarNotification } from './header-bar-notification.model';\n\nexport class HeaderBarData {\n apps!: HeaderBarApp[];\n title!: string;\n help: any;\n notifications!: HeaderBarNotification;\n user!: Record<string, unknown>;\n\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n getApps(): Observable<HeaderBarApp[]> {\n return this.httpClient\n .get('dhis-web-commons/menu/getModules.action', {\n useRootUrl: true,\n })\n .pipe(\n catchError(() =>\n of({\n modules: [],\n })\n ),\n map((result: { modules: Record<string, unknown>[] }) => {\n return (result?.modules || [])\n .map((module: Record<string, unknown>) => new HeaderBarApp(module))\n .filter((headerBarApp) => headerBarApp);\n })\n );\n }\n\n getNotifications(): Observable<HeaderBarNotification | null> {\n return this.httpClient\n .get('me/dashboard')\n .pipe(\n map((notifications: Record<string, number>) =>\n notifications ? new HeaderBarNotification(notifications) : null\n )\n );\n }\n\n get(): Observable<HeaderBarData | null> {\n return zip(\n this.getApps(),\n this.httpClient.get('systemSettings/helpPageLink'),\n this.httpClient.get('me/dashboard'),\n this.httpClient.get('systemSettings/applicationTitle'),\n this.httpClient.get(\n 'me.json?fields=authorities,avatar,email,name,settings'\n )\n ).pipe(\n map(\n (response: [HeaderBarApp[], any, HeaderBarNotification, any, any]) => {\n if (response) {\n const [apps, help, notifications, title, user] = response;\n this.apps = apps;\n this.help = help;\n this.notifications = notifications;\n this.title = title as string;\n this.user = user;\n\n return this;\n }\n\n return null;\n }\n ),\n catchError(() => {\n return of(null);\n })\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar-data.model';\nexport * from './header-bar-app.model';\n","export const joinPath = (...parts: any[]) => {\n const realParts = parts.filter((part) => !!part)\n return realParts.map((part) => part.replace(/^\\/+|\\/+$/g, '')).join('/')\n}\n","import { Card } from '@dhis2-ui/card';\nimport { InputField } from '@dhis2-ui/input';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors, spacers, theme } from '@dhis2/ui-constants';\nimport { IconApps24, IconSettings24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { joinPath } from './join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/**\n * Copied from here:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n */\nfunction escapeRegExpCharacters(text: string) {\n return text.replace(/[/.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction Search({ value, onChange, baseUrl }: any) {\n return (\n <div className=\"headerbar-apps-search\">\n <span className=\"headerbar-apps-search-input\">\n <InputField\n value={value}\n name=\"filter\"\n placeholder={i18n.t('Search apps')}\n onChange={onChange}\n initialFocus\n />\n </span>\n\n <span className=\"headerbar-apps-search-icon\">\n <a href={joinPath(baseUrl, 'dhis-web-menu-management')}>\n <IconSettings24 color={colors.grey700} />\n </a>\n </span>\n\n <style jsx>{`\n .headerbar-apps-search {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n height: 52px;\n margin: 8px;\n }\n\n .headerbar-apps-search-input {\n flex: 1 100%;\n }\n\n .headerbar-apps-search-icon {\n flex: 1 auto;\n margin: 8px;\n }\n `}</style>\n </div>\n );\n}\n\nSearch.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n baseUrl: PropTypes.string,\n};\n\nfunction Item({ name, path, img }: any) {\n return (\n <a className=\"headerbar-app-item\" href={path}>\n <img className=\"headerbar-app-item-logo\" src={img} alt=\"app logo\" />\n\n <div className=\"headerbar-app-item-title\">{name}</div>\n\n <style jsx>{`\n .headerbar-app-item {\n display: flex;\n flex-direction: column;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n .headerbar-app-item-logo {\n display: inline-block;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover,\n .headerbar-app-item-logo:focus {\n background-color: ${theme.primary050};\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover > div {\n font-weight: 500;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo {\n width: 48px;\n height: 48px;\n margin: 8px;\n cursor: pointer;\n }\n\n .headerbar-app-item-title {\n overflow-wrap: anywhere;\n margin-top: 14px;\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n letter-spacing: 0.01em;\n line-height: 14px;\n text-align: center;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n}\n\nItem.propTypes = {\n img: PropTypes.string,\n name: PropTypes.string,\n path: PropTypes.string,\n};\n\nfunction List({ apps, filter }: any) {\n return (\n <div\n className=\"headerbar-apps-menu-list\"\n data-test=\"headerbar-apps-menu-list\"\n >\n {apps\n .filter(({ displayName, name }: any) => {\n const appName = displayName || name;\n const formattedAppName = appName.toLowerCase();\n const formattedFilter = escapeRegExpCharacters(filter).toLowerCase();\n\n return filter.length > 0\n ? formattedAppName.match(formattedFilter)\n : true;\n })\n .map(({ displayName, name, defaultAction, icon }: any, idx: string) => (\n <Item\n key={`app-${name}-${idx}`}\n name={displayName || name}\n path={defaultAction}\n img={icon}\n />\n ))}\n\n <style jsx>{`\n .headerbar-apps-menu-list {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-content: flex-start;\n align-items: flex-start;\n justify-content: flex-start;\n width: 30vw;\n min-width: 300px;\n max-width: 560px;\n\n min-height: 200px;\n max-height: 465px;\n margin: 0 8px 8px 8px;\n\n overflow: auto;\n overflow-x: hidden;\n }\n `}</style>\n </div>\n );\n}\nList.propTypes = {\n apps: PropTypes.array,\n filter: PropTypes.string,\n};\n\nconst AppMenu = ({ apps, filter, onFilterChange, baseUrl }: any) => (\n <div className=\"headerbar-apps-menu\" data-test=\"headerbar-apps-menu\">\n <Card>\n <Search value={filter} onChange={onFilterChange} baseUrl={baseUrl} />\n <List apps={apps} filter={filter} />\n </Card>\n\n <style jsx>{`\n .headerbar-apps-menu {\n z-index: 10000;\n position: absolute;\n right: -4px;\n }\n `}</style>\n </div>\n);\n\nAppMenu.propTypes = {\n apps: PropTypes.array.isRequired,\n onFilterChange: PropTypes.func.isRequired,\n filter: PropTypes.string,\n baseUrl: PropTypes.string,\n};\n\nconst Apps = ({ apps, baseUrl }: any) => {\n const [show, setShow] = useState(false);\n const [filter, setFilter] = useState('');\n\n const handleVisibilityToggle = useCallback(() => setShow(!show), [show]);\n const handleFilterChange = useCallback(\n ({ value }: any) => setFilter(value),\n []\n );\n\n const containerEl = useRef(null);\n const onDocClick = useCallback((evt: any) => {\n if (\n containerEl.current &&\n !(containerEl.current as any).contains(evt.target)\n ) {\n setShow(false);\n }\n }, []);\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n return () => document.removeEventListener('click', onDocClick);\n }, [onDocClick]);\n\n return (\n <div\n className=\"headerbar-apps\"\n ref={containerEl}\n data-test=\"headerbar-apps\"\n >\n <button onClick={handleVisibilityToggle} data-test=\"headerbar-apps-icon\">\n <IconApps24 color={colors.white} />\n </button>\n\n {show ? (\n <AppMenu\n apps={apps}\n filter={filter}\n baseUrl={baseUrl}\n onFilterChange={handleFilterChange}\n />\n ) : null}\n\n <style jsx>{`\n .headerbar-apps button {\n display: block;\n background: transparent;\n padding: ${spacers.dp4} ${spacers.dp12} 0;\n border: 0;\n cursor: pointer;\n height: 100%;\n }\n .headerbar-apps button:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-apps button:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-apps button:hover {\n background: #1a557f;\n }\n .headerbar-apps button:active {\n background: #104067;\n }\n\n .headerbar-apps {\n position: relative;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nApps.propTypes = {\n apps: PropTypes.array.isRequired,\n baseUrl: PropTypes.string,\n};\n\nexport default Apps;\n","import { LogoIconWhite } from '@dhis2-ui/logo'\nimport { useDataQuery } from '@dhis2/app-runtime'\nimport React from 'react'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst query = {\n customLogo: {\n resource: 'staticContent/logo_banner',\n },\n}\n\nconst pathExists = (data: any) =>\n data &&\n data.customLogo &&\n data.customLogo.images &&\n data.customLogo.images.png\n\nexport const LogoImage = () => {\n const { loading, error, data } = useDataQuery(query) as any;\n\n \n if (loading) {\n return null\n }\n\n let Logo\n if (!error && pathExists(data)) {\n \n Logo = (\n <img\n alt=\"Headerbar Logo\"\n src={data.customLogo.images.png}\n \n />\n \n )\n } else {\n \n Logo = <LogoIconWhite />\n\n }\n\n return (\n <div className=\"header-bar-logo\">\n {Logo}\n <style jsx>{`\n .header-bar-logo {\n min-width: 48px;\n max-width: 250px;\n height: 48px;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n align-items: center;\n overflow: hidden;\n }\n\n .header-bar-logo svg {\n height: 25px;\n width: 27px;\n }\n \n .header-bar-logo img {\n max-height: 100%;\n min-height: auto;\n width: auto;\n }\n `}</style>\n </div>\n )\n}\n","import { useConfig } from '@dhis2/app-runtime';\nimport React from 'react';\nimport { LogoImage } from './logo-image';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\ninterface LogoProp {\n baseUrl: string;\n}\n\nexport const Logo = ({ baseUrl }: LogoProp) => {\n return (\n <div className=\"headerbar-logo\" data-test=\"headerbar-logo\">\n <a href={baseUrl}>\n <LogoImage />\n </a>\n\n <style jsx>{`\n .headerbar-logo {\n box-sizing: border-box;\n min-width: 49px;\n max-height: 48px;\n margin: 0 12px 0 0;\n border-right: 1px solid rgba(32, 32, 32, 0.15);\n }\n .headerbar-logo:hover {\n background-color: #1a557f;\n }\n\n .headerbar-logo a,\n .headerbar-logo a:hover,\n .headerbar-logo a:focus,\n .headerbar-logo a:active,\n .headerbar-logo a:visited {\n user-select: none;\n }\n .headerbar-logo a:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-logo a:focus:not(:focus-visible) {\n outline: none;\n }\n `}</style>\n </div>\n );\n};\n","import { colors, theme, spacers } from '@dhis2/ui-constants'\nimport { IconMessages24, IconMail24 } from '@dhis2/ui-icons'\nimport PropTypes from 'prop-types'\nimport React from 'react'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\n\nfunction icon(kind: string) {\n if (kind === 'message') {\n return <IconMessages24 color={colors.white} />\n } else {\n return <IconMail24 color={colors.white} />\n }\n}\n\nexport const NotificationIcon = (params: any) => {\n const { count, href, kind, dataTestId } = params;\n const notificationClassName = \"headerbar-notification-icon \" + kind\n return (\n <a href={href} className={notificationClassName} data-test={dataTestId}>\n {icon(kind)}\n\n {count > 0 && <span data-test={`${dataTestId}-count`}>{count}</span>}\n\n <style jsx>{`\n .headerbar-notification-icon {\n position: relative;\n margin: 0;\n cursor: pointer;\n padding: 0 ${spacers.dp12};\n height: 100%;\n display: flex;\n align-items: center;\n }\n .headerbar-notification-icon:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-notification-icon:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-notification-icon:hover {\n background: #1a557f;\n }\n .headerbar-notification-icon:active {\n background: #104067;\n }\n .headerbar-notification-icon span {\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1;\n position: absolute;\n top: 3px;\n right: 2px;\n min-width: 18px;\n min-height: 18px;\n border-radius: ${spacers.dp12};\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),\n 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n background-color: ${theme.secondary500};\n color: ${colors.white};\n font-size: 13px;\n font-weight: 600;\n line-height: 15px;\n text-align: center;\n cursor: inherit;\n padding: 0 ${spacers.dp4};\n }\n `}</style>\n </a>\n) }\n\nNotificationIcon.defaultProps = {\n count: 0,\n}\n\nNotificationIcon.propTypes = {\n href: PropTypes.string.isRequired,\n count: PropTypes.number,\n dataTestId: PropTypes.string,\n message: PropTypes.string,\n kind: PropTypes.oneOf(['interpretation', 'message']),\n}\n","import { useConfig } from '@dhis2/app-runtime'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { joinPath } from './join-path'\nimport { NotificationIcon } from './notification-icon'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\n\n/*\n AUTHORITIES:\n - ALL: superuser\n - M_dhis-web-interpretation: access to interpretations app\n - M_dhis-web-messaging: access to messaging app\n */\n\nconst hasAuthority = (userAuthorities: any, authId: string) =>\n Array.isArray(userAuthorities) &&\n userAuthorities.some(\n (userAuthId) => userAuthId === 'ALL' || userAuthId === authId\n )\n\nexport const Notifications = (params: any) => {\n const {\n interpretations,\n messages,\n userAuthorities,\n } = params;\n const { baseUrl } = useConfig()\n\n return (\n <div className=\"headerbar-notifications\" data-test=\"headerbar-notifications\">\n {hasAuthority(userAuthorities, 'M_dhis-web-interpretation') && (\n <NotificationIcon\n count={interpretations}\n href={joinPath(baseUrl, 'dhis-web-interpretation')}\n kind=\"message\"\n dataTestId=\"headerbar-interpretations\"\n />\n )}\n\n {hasAuthority(userAuthorities, 'M_dhis-web-messaging') && (\n <NotificationIcon\n message=\"email\"\n count={messages}\n href={joinPath(baseUrl, 'dhis-web-messaging')}\n kind=\"interpretation\"\n dataTestId=\"headerbar-messages\"\n />\n )}\n\n <style jsx>{`\n .headerbar-notifications {\n user-select: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 100%;\n }\n `}</style>\n </div>\n )\n}\n\nNotifications.propTypes = {\n interpretations: PropTypes.number,\n messages: PropTypes.number,\n userAuthorities: PropTypes.arrayOf(PropTypes.string),\n}\n","import { useConfig } from '@dhis2/app-runtime'\n\nexport const useDebugInfo = () => {\n const { appName, appVersion, systemInfo } = useConfig() as any\n\n return {\n app_name: appName || null,\n app_version: appVersion?.full || null,\n dhis2_version: systemInfo?.version || null,\n dhis2_revision: systemInfo?.revision || null,\n }\n}\n\nexport const useFormattedDebugInfo = () =>\n JSON.stringify(useDebugInfo(), undefined, 2)\n","import { colors } from '@dhis2/ui-constants';\nimport React from 'react';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst formatDebugInfoKey = (key: any) => {\n const tokens = key.split('_');\n return tokens\n .map((token: any) => {\n if (token.toLowerCase() === 'dhis2') {\n return 'DHIS2';\n } else {\n return token[0].toUpperCase() + token.substr(1).toLowerCase();\n }\n })\n .join(' ');\n};\n\nexport function DebugInfoTable() {\n const debugInfo = useDebugInfo() as any;\n return (\n <table {...{ 'data-test': 'dhis2-ui-headerbar-debuginfotable' }}>\n <tbody>\n {Object.keys(debugInfo).map((key) => (\n <tr key={key}>\n <td className=\"debug-info-key\">{formatDebugInfoKey(key)}</td>\n <td>{debugInfo[key]}</td>\n </tr>\n ))}\n </tbody>\n <style jsx>{`\n table {\n white-space: pre-wrap;\n font-size: 14px;\n line-height: 1.2;\n color: ${colors.grey700};\n font-famile: Menlo, Courier, monospace !important;\n }\n td {\n padding: 3px 16px 3px 0;\n }\n .debug-info-key {\n font-weight: bold;\n }\n `}</style>\n </table>\n );\n}\n","import { Button, ButtonStrip } from '@dhis2-ui/button'\nimport { Modal, ModalActions, ModalContent, ModalTitle } from '@dhis2-ui/modal'\nimport { useAlert } from '@dhis2/app-runtime'\nimport i18n from '@dhis2/d2-i18n'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { DebugInfoTable } from './debug-info-table'\nimport { useFormattedDebugInfo } from './use-debug-info'\n\nexport function DebugInfoModal(params: any) {\n const { onClose } = params;\n const debugInfo = useFormattedDebugInfo()\n const { show: showClipboardAlert } = useAlert(\n 'Debug information copied to clipboard',\n { duration: 3000 }\n )\n\n const copyDebugInfo = () => {\n navigator.clipboard.writeText(debugInfo)\n onClose()\n showClipboardAlert()\n }\n\n return (\n <Modal position=\"middle\" dataTest=\"dhis2-ui-headerbar-debuginfomodal\">\n <ModalTitle>{i18n.t('Debug info')}</ModalTitle>\n <ModalContent>\n <DebugInfoTable />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => onClose()}>{i18n.t('Close')}</Button>\n <Button\n primary\n onClick={copyDebugInfo}\n dataTest=\"dhis2-ui-headerbar-debuginfomodal-copybutton\"\n >\n {i18n.t('Copy debug info')}\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n )\n}\n\nDebugInfoModal.propTypes = {\n onClose: PropTypes.func.isRequired,\n}\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const DebugInfoMenuItem = (params: any) => {\n const { hideProfileMenu, showDebugInfoModal } = params;\n const debugInfo = useDebugInfo();\n\n const openDebugModal = () => {\n hideProfileMenu();\n showDebugInfoModal();\n };\n\n const debugInfoLabel = (\n <div className=\"root\">\n <div\n className=\"instance-info version\"\n data-test=\"dhis2-ui-headerbar-instanceinfo\"\n >\n {debugInfo.dhis2_version\n ? i18n.t('DHIS2 {{dhis2Version}}', {\n dhis2Version: debugInfo.dhis2_version,\n })\n : i18n.t('DHIS2 version unknown')}\n </div>\n <div className=\"version\" data-test=\"dhis2-ui-headerbar-appinfo\">\n {debugInfo.app_name\n ? debugInfo.app_version\n ? `${debugInfo.app_name} ${debugInfo.app_version}`\n : i18n.t('{{appName}} version unknown', {\n appName: debugInfo.app_name,\n })\n : debugInfo.app_version\n ? i18n.t('App {{appVersion}}', {\n appVersion: debugInfo.app_version,\n })\n : i18n.t('App version unknown')}\n {}\n </div>\n <style jsx>{`\n .root {\n color: ${colors.grey700};\n font-style: italic;\n font-size: 14px;\n line-height: 17px;\n }\n .instance-info {\n margin-bottom: 4px;\n }\n .version {\n white-space: no-wrap;\n }\n `}</style>\n </div>\n );\n\n return (\n <MenuItem\n dense\n onClick={openDebugModal}\n label={debugInfoLabel}\n dataTest=\"dhis2-ui-headerbar-debuginfo\"\n />\n );\n};\n\nDebugInfoMenuItem.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar'\nimport { useConfig } from '@dhis2/app-runtime'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { joinPath } from '../join-path'\nimport i18n from '@dhis2/d2-i18n'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst ProfileName = (params: any) => {\n const { children } = params;\n return (\n <div className=\"headerbar-profile-username\" data-test=\"headerbar-profile-username\">\n {children}\n\n <style jsx>{`\n .headerbar-profile-username {\n margin-bottom: 3px;\n font-size: 16px;\n line-height: 19px;\n }\n `}</style>\n </div>\n) }\nProfileName.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileEmail = (params: any) => {\n const { children } = params;\n return (\n <div className=\"headerbar-profile-user-email\" data-test=\"headerbar-profile-user-email\">\n {children}\n \n <style jsx>{`\n .headerbar-profile-user-email {\n margin-bottom: 6px;\n font-size: 14px;\n line-height: 16px;\n }\n `}</style>\n </div>\n )\n}\nProfileEmail.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileEdit = (params: any) => {\n const { children } = params;\n const { baseUrl } = useConfig()\n\n return (\n <a\n className=\"headerbar-profile-edit-profile-link\"\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/profile')}\n data-test=\"headerbar-profile-edit-profile-link\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-edit-profile-link {\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n line-height: 14px;\n text-decoration: underline !important;\n cursor: pointer;\n }\n `}</style>\n </a>\n )\n}\n\nProfileEdit.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileDetails = (params: any) => {\n const { name, email } = params;\n return (\n <div className=\"headerbar-profile-details\">\n <ProfileName>{name}</ProfileName>\n <ProfileEmail>{email}</ProfileEmail>\n <ProfileEdit>{i18n.t('Edit profile')}</ProfileEdit>\n \n <style jsx>{`\n .headerbar-profile-details {\n display: flex;\n flex-direction: column;\n margin-left: 20px;\n color: #000;\n font-size: 14px;\n font-weight: 400;\n }\n `}</style>\n </div>\n )\n}\n\nProfileDetails.propTypes = {\n email: PropTypes.string,\n name: PropTypes.string,\n}\n\nexport const ProfileHeader = (params: any) => {\n const { name, email, avatarId } = params;\n return (<div className=\"headerbar-profile-header\">\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-menu-icon\"\n large\n />\n <ProfileDetails name={name} email={email} />\n\n <style jsx>{`\n .headerbar-profile-header {\n display: flex;\n flex-direction: row;\n margin-left: 24px;\n padding-top: 20px;\n }\n `}</style>\n </div>\n) }\n\nProfileHeader.propTypes = {\n avatarId: PropTypes.string,\n email: PropTypes.string,\n name: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\nimport React, { createContext, useContext } from 'react'\n\nconst headerBarContext = createContext({\n updateAvailable: false,\n onApplyAvailableUpdate: () => {},\n})\n\nexport const HeaderBarContextProvider = (params: any) => {\n const {\n updateAvailable,\n onApplyAvailableUpdate,\n children,\n } = params;\n return (\n <headerBarContext.Provider\n value={{ updateAvailable, onApplyAvailableUpdate }}\n >\n {children}\n </headerBarContext.Provider>\n )\n}\nHeaderBarContextProvider.propTypes = {\n children: PropTypes.node,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n}\n\nexport const useHeaderBarContext = () => useContext(headerBarContext)\n","import { MenuItem } from '@dhis2-ui/menu'\nimport { useConfig } from '@dhis2/app-runtime'\nimport { colors } from '@dhis2/ui-constants'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { useHeaderBarContext } from '../header-bar-context'\nimport i18n from '@dhis2/d2-i18n'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nexport function UpdateNotification(params: any) {\n const { hideProfileMenu } =params;\n const { appName } = useConfig()\n const { updateAvailable, onApplyAvailableUpdate } = useHeaderBarContext()\n const onClick = () => {\n hideProfileMenu()\n onApplyAvailableUpdate?.()\n }\n\n const updateNotificationLabel = (\n <div className=\"root\">\n <div className=\"badge\" />\n <div className=\"spacer\" />\n <div className=\"message\">\n {appName\n ? i18n.t('New {{appName}} version available', { appName })\n : i18n.t('New app version available')}\n <br />\n {i18n.t('Click to reload')}\n </div>\n <style jsx>{`\n .root {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 14px;\n line-height: 17px;\n }\n .badge {\n display: inline-block;\n width: 12px;\n height: 12px;\n margin: 0 8px;\n border-radius: 6px;\n background-color: ${colors.blue600};\n }\n .spacer {\n display: inline-block;\n width: 8px;\n }\n .message {\n display: inline-block;\n }\n `}</style>\n </div>\n )\n\n return updateAvailable ? (\n <MenuItem\n dense\n onClick={onClick}\n label={updateNotificationLabel}\n dataTest=\"dhis2-ui-headerbar-updatenotification\"\n />\n ) : null\n}\n\nUpdateNotification.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n}\n","import { Card } from '@dhis2-ui/card'\nimport { Center } from '@dhis2-ui/center'\nimport { Divider } from '@dhis2-ui/divider'\nimport { Layer } from '@dhis2-ui/layer'\nimport { CircularLoader } from '@dhis2-ui/loader'\nimport { MenuDivider, MenuItem } from '@dhis2-ui/menu'\nimport { clearSensitiveCaches, useConfig } from '@dhis2/app-runtime'\nimport { colors } from '@dhis2/ui-constants'\nimport {\n IconSettings24,\n IconInfo24,\n IconLogOut24,\n IconUser24,\n IconQuestion24,\n} from '@dhis2/ui-icons'\nimport PropTypes from 'prop-types'\nimport React, { useState } from 'react'\nimport { DebugInfoMenuItem } from '../debug-info/debug-info-menu-item'\nimport { joinPath } from '../join-path'\nimport i18n from '@dhis2/d2-i18n';\nimport { ProfileHeader } from './profile-header'\nimport { UpdateNotification } from './update-notification'\n\nconst LoadingMask = () => (\n <Layer\n translucent\n disablePortal\n dataTest=\"headerbar-profile-menu-loading-mask\"\n >\n <Center>\n <CircularLoader />\n </Center>\n </Layer>\n)\n\nconst ProfileContents = (params: any) => {\n const {\n name,\n email,\n avatarId,\n helpUrl,\n hideProfileMenu,\n showDebugInfoModal,\n } = params;\n const { baseUrl } = useConfig()\n const [loading, setLoading] = useState(false)\n\n return (\n <Card>\n <div className=\"headerbar-profile-contents\">\n <ProfileHeader name={name} email={email} avatarId={avatarId} />\n <Divider margin=\"13px 0 7px 0\" />\n <ul data-test=\"headerbar-profile-menu\">\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/settings'\n )}\n label={i18n.t('Settings')}\n value=\"settings\"\n icon={<IconSettings24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/account'\n )}\n label={i18n.t('Account')}\n value=\"account\"\n icon={<IconUser24 color={colors.grey700} />}\n />\n {helpUrl && (\n <MenuItem\n href={helpUrl}\n label={i18n.t('Help')}\n value=\"help\"\n icon={<IconQuestion24 color={colors.grey700} />}\n />\n )}\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/aboutPage'\n )}\n label={i18n.t('About DHIS2')}\n value=\"about\"\n icon={<IconInfo24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-commons-security/logout.action'\n )}\n // NB: By MenuItem implementation, this callback\n // overwrites default navigation behavior but maintains\n // the href attribute\n onClick={async () => {\n setLoading(true)\n await clearSensitiveCaches()\n setLoading(false)\n window.location.assign(\n joinPath(\n baseUrl,\n 'dhis-web-commons-security/logout.action'\n )\n )\n }}\n label={i18n.t('Logout')}\n value=\"logout\"\n icon={<IconLogOut24 color={colors.grey700} />}\n />\n <MenuDivider dense />\n <DebugInfoMenuItem\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={showDebugInfoModal}\n />\n <UpdateNotification hideProfileMenu={hideProfileMenu} />\n </ul>\n </div>\n\n {loading && <LoadingMask />}\n\n <style jsx>{`\n .headerbar-profile-contents {\n width: 100%;\n padding: 0;\n }\n\n .headerbar-profile-contents ul {\n padding: 0;\n margin: 0;\n }\n\n .headerbar-profile-contents a {\n display: inline-flex !important;\n }\n\n .headerbar-profile-contents a,\n .headerbar-profile-contents a:hover,\n .headerbar-profile-contents a:focus,\n .headerbar-profile-contents a:active,\n .headerbar-profile-contents a:visited {\n text-decoration: none;\n display: block;\n }\n `}</style>\n </Card>\n )\n}\n\nProfileContents.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n}\n\nexport const ProfileMenu = (params: any) => {\n const { ...props }=params;\n return (\n <div className=\"headerbar-profile-menu\" data-test=\"headerbar-profile-menu\">\n <ProfileContents {...props} />\n <style jsx>{`\n .headerbar-profile-menu {\n z-index: 10000;\n position: absolute;\n right: 4px;\n width: 320px;\n }\n `}</style>\n </div>\n )\n}\n\nProfileMenu.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n}\n","import { useEffect, useMemo } from 'react'\n\nexport const useOnDocClick = (containerRef: any, hide: any) => {\n const onDocClick = useMemo(() => {\n return (evt: any) => {\n if (!containerRef.current) {\n return null\n }\n\n if (!containerRef.current.contains(evt.target)) {\n hide()\n }\n\n return null;\n }\n }, [containerRef, hide])\n\n useEffect(() => {\n document.addEventListener('click', onDocClick)\n\n return () => {\n document.removeEventListener('click', onDocClick)\n }\n }, [onDocClick])\n}\n","import { UserAvatar } from '@dhis2-ui/user-avatar'\nimport PropTypes from 'prop-types'\nimport React, { useCallback, useRef, useState } from 'react'\nimport { DebugInfoModal } from './debug-info/debug-info-modal'\nimport { ProfileMenu } from './profile-menu'\nimport { useOnDocClick } from './profile/use-on-doc-click'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst Profile = (params: any) => {\n const { name, email, avatarId, helpUrl } = params;\n const [showProfileMenu, setShowProfileMenu] = useState(false)\n const [showDebugInfoModal, setShowDebugInfoModal] = useState(false)\n const hideProfileMenu = useCallback(\n () => setShowProfileMenu(false),\n [setShowProfileMenu]\n )\n const toggleProfileMenu = useCallback(\n () => setShowProfileMenu((show) => !show),\n [setShowProfileMenu]\n ) as any\n const containerRef = useRef(null)\n\n useOnDocClick(containerRef, hideProfileMenu)\n\n return (\n <div\n ref={containerRef}\n data-test=\"headerbar-profile\"\n className=\"headerbar-profile\"\n >\n <button\n className=\"headerbar-profile-btn\"\n onClick={toggleProfileMenu}\n >\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-icon\"\n medium\n />\n </button>\n\n {showProfileMenu && (\n <ProfileMenu\n avatarId={avatarId}\n name={name}\n email={email}\n helpUrl={helpUrl}\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={() => {\n setShowDebugInfoModal(true)\n }}\n />\n )}\n {showDebugInfoModal && (\n <DebugInfoModal\n onClose={() => {\n setShowDebugInfoModal(false)\n }}\n />\n )}\n\n <style jsx>{`\n .headerbar-profile {\n position: relative;\n height: 100%;\n }\n\n .headerbar-profile-btn {\n background: transparent;\n padding: 6px;\n border: 0;\n cursor: pointer;\n }\n .headerbar-profile-btn:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-profile-btn:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-profile-btn:hover {\n background: #1a557f;\n }\n .headerbar-profile-btn:active {\n background: #104067;\n }\n `}</style>\n </div>\n )\n}\n\nProfile.propTypes = {\n name: PropTypes.string.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n}\n\nexport default Profile\n","import PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const Title = (params: any) => {\n const { app, instance } = params;\n return (\n <div className=\"headerbar-title\" data-test=\"headerbar-title\">\n {app ? `${instance} - ${app}` : `${instance}`}\n\n <style jsx>{`\n .headerbar-title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.01em;\n white-space: nowrap;\n }\n `}</style>\n </div>\n );\n};\nTitle.propTypes = {\n app: PropTypes.string,\n instance: PropTypes.string,\n};\n","import i18n from '@dhis2/d2-i18n';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { HeaderBarData } from '../models';\nimport Apps from './apps';\nimport { Logo } from './logo';\nimport { Notifications } from './notifications';\nimport Profile from './profile';\nimport { Title } from './title';\n\ninterface HeaderBarProp {\n appName: string;\n data: HeaderBarData;\n className?: string;\n}\n\nexport const HeaderBar = ({ appName, data, className }: HeaderBarProp) => {\n const loading = false;\n const error = null;\n\n // See https://jira.dhis2.org/browse/LIBS-180\n if (!loading && !error) {\n // TODO: This will run every render which is probably wrong!\n // Also, setting the global locale shouldn't be done in the headerbar\n const locale = (data.user['settings'] as any)['keyUiLocale'] || 'en';\n i18n.setDefaultNamespace('default');\n i18n.changeLanguage(locale);\n }\n\n {\n /* TODO: Find better way to attach base URL */\n }\n const baseUrl = '../../../';\n\n return (\n <header className={className}>\n <div className=\"main\">\n {!loading && !error && (\n <>\n <Logo baseUrl={baseUrl} />\n\n <Title\n app={appName}\n instance={(data.title as any)['applicationTitle']}\n />\n\n <div className=\"right-control-spacer\" />\n\n {/*TODO: Find better approach to handle PWA */}\n {/* {'pwaEnabled' && <OnlineStatus />} */}\n\n <Notifications\n interpretations={data.notifications.unreadInterpretations}\n messages={data.notifications.unreadMessageConversations}\n userAuthorities={data.user['authorities'] as any}\n />\n <Apps apps={data.apps} baseUrl={baseUrl} />\n\n <Profile\n name={data.user['name'] as string}\n email={data.user['email'] as string}\n avatarId={((data.user['avatar'] || {}) as any)['id']}\n helpUrl={data.help.helpPageLink}\n />\n </>\n )}\n </div>\n\n {/* {'pwaEnabled' && !loading && !error && <OnlineStatus dense />} */}\n\n <style jsx>{`\n .main {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n background-color: #2c6693;\n color: ${colors.white};\n height: 48px;\n }\n .right-control-spacer {\n margin-left: auto;\n }\n `}</style>\n </header>\n );\n};\n\nHeaderBar.propTypes = {\n appName: PropTypes.string,\n data: HeaderBarData,\n className: PropTypes.string,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, firstValueFrom } from 'rxjs';\nimport { HeaderBarData } from './models';\nimport { ReactWrapperComponent } from '../../shared/components';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { HeaderBar } from './utils/header-bar';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container *ngIf=\"data$ | async as data\"> </ng-container>`,\n})\nexport class HeaderBarComponent extends ReactWrapperComponent {\n data$!: Observable<HeaderBarData | null>;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const manifest = await firstValueFrom(this.httpClient.manifest());\n const data = await firstValueFrom(new HeaderBarData(this.httpClient).get());\n\n this.component = data\n ? () => (\n <DataProvider>\n {<HeaderBar appName={manifest?.name} data={data} />}\n </DataProvider>\n )\n : () => <div>Something went wrong</div>;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { HeaderBarComponent } from './header-bar.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [HeaderBarComponent],\n exports: [HeaderBarComponent],\n})\nexport class HeaderBarModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar.module';\nexport * from './header-bar.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Button } from '@dhis2/ui';\nimport { ReactWrapperComponent } from '../../shared/components';\n\n@Component({\n selector: 'ng-dhis2-ui-button',\n template: '<ng-content></ng-content>',\n\n})\nexport class ButtonComponent extends ReactWrapperComponent {\n @Input() label!: string;\n @Input() primary?: boolean;\n @Input() secondary?: boolean;\n @Input() destructive?: boolean;\n @Input() disabled?: boolean;\n @Input() small?: boolean;\n @Input() large?: boolean;\n\n @Output() buttonClick: EventEmitter<any> = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onClick: (e: any) => {\n this.onButtonClick(e);\n },\n };\n\n override component = Button;\n\n\n ngOnInit() {\n this.props = {\n ...this.props,\n primary: this.primary,\n secondary: this.secondary,\n destructive: this.destructive,\n small: this.small,\n large: this.large,\n };\n }\n\n onButtonClick(event: any) {\n this.buttonClick.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent],\n exports: [ButtonComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n})\nexport class ButtonModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './button.module';\nexport * from './button.component';\n","import { Component } from '@angular/core';\nimport { ReactWrapperComponent } from '../../shared/components';\nimport AppAdapter from '@dhis2/app-adapter'\nimport { Layer, layers, CenteredContent, CircularLoader } from '@dhis2/ui'\nimport React from 'react';\n\n@Component({\n selector: 'ng-dhis2-ui-app-shell',\n template: '<ng-content></ng-content>',\n})\nexport class AppShellComponent extends ReactWrapperComponent {\n appConfig = {\n // url: process.env.REACT_APP_DHIS2_BASE_URL,\n // appName: process.env.REACT_APP_DHIS2_APP_NAME || '',\n // appVersion: process.env.REACT_APP_DHIS2_APP_VERSION || '',\n // apiVersion: parseInt(process.env.REACT_APP_DHIS2_API_VERSION),\n // pwaEnabled: process.env.REACT_APP_DHIS2_APP_PWA_ENABLED === 'true',\n // plugin: process.env.REACT_APP_DHIS2_APP_PLUGIN === 'true',\n}\n override component = <AppAdapter {...this.appConfig}>\n <React.Suspense\n fallback={\n <Layer level={layers.alert}>\n <CenteredContent>\n <CircularLoader />\n </CenteredContent>\n </Layer>\n }\n >\n {/* <D2App config={appConfig} /> */}\n </React.Suspense>\n</AppAdapter> as any\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { AppShellComponent } from './app-shell.component';\n\n@NgModule({\n declarations: [AppShellComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n exports: [AppShellComponent],\n})\nexport class AppShellModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './app-shell.component';\nexport * from './app-shell.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","Button","Layer","CircularLoader"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAEX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA,CAAA;;;ACSA,MAAc,CAAC,KAAK,GAAG,KAAK,CAAC;MAKjB,qBAAqB,CAAA;AAShC,IAAA,WAAA,CAAsB,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;KAAI;IAE7D,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KACpC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;KAC9B;IAES,MAAM,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS;cACrD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC;cAC7C,SAAS,CAAC;AAEd,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,KAAA,CAAA,aAAA,CAAC,IAAI,CAAC,SAAS,EAAA,EAAA,GAAK,IAAI,CAAC,KAAK,EAAA;;AAAI,YAAA,UAAU,IAAI,EAAE;AAAmB,YAAA,GAAA,CAAA,CACtE,CAAC;KACH;+GArCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA,CAAA;iGAIU,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAE4B,OAAO,EAAA,CAAA;sBAAxC,YAAY;uBAAC,kBAAkB,CAAA;;;ACzBlC;AACA;AACA;AAGO,MAAM,gBAAgB,GAAU,EAAE;;MCI5B,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAJpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAIX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAJpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,GAAG,gBAAgB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC;AAC/B,iBAAA,CAAA;;;ACRD;AACA;AACA;MACa,YAAY,CAAA;AAQvB,IAAA,WAAA,CAAY,MAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAW,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAW,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAW,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAW,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAW,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAW,CAAC;KACpD;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,QAAQ,GAAG,IAAI,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;AC1BD;AACA;AACA;MACa,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CAAY,YAAoC,EAAA;AAC9C,QAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,0BAA0B;YAC7B,YAAY,CAAC,4BAA4B,CAAC,CAAC;KAC9C;AACF;;ACZD;AACA;AACA;MAOa,aAAa,CAAA;AAOxB,IAAA,WAAA,CAAoB,UAAqC,EAAA;QAArC,IAAU,CAAA,UAAA,GAAV,UAAU,CAA2B;KAAI;IAE7D,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,UAAU;aACnB,GAAG,CAAC,yCAAyC,EAAE;AAC9C,YAAA,UAAU,EAAE,IAAI;SACjB,CAAC;AACD,aAAA,IAAI,CACH,UAAU,CAAC,MACT,EAAE,CAAC;AACD,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,MAA8C,KAAI;AACrD,YAAA,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;iBAC1B,GAAG,CAAC,CAAC,MAA+B,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;iBAClE,MAAM,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;SAC3C,CAAC,CACH,CAAC;KACL;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,UAAU;aACnB,GAAG,CAAC,cAAc,CAAC;aACnB,IAAI,CACH,GAAG,CAAC,CAAC,aAAqC,KACxC,aAAa,GAAG,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,IAAI,CAChE,CACF,CAAC;KACL;IAED,GAAG,GAAA;QACD,OAAO,GAAG,CACR,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,EACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iCAAiC,CAAC,EACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,uDAAuD,CACxD,CACF,CAAC,IAAI,CACJ,GAAG,CACD,CAAC,QAAgE,KAAI;AACnE,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC1D,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,gBAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAe,CAAC;AAC7B,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAEjB,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CACF,EACD,UAAU,CAAC,MAAK;AACd,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;KACH;AACF;;AC9ED;AACA;AACA;;ACFO,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAY,KAAI;AACxC,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IAChD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5E,CAAC;;ACaD;;;AAGG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAA;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAO,EAAA;AAC/C,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA;QACpCA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,6BAA6B,EAAA;YAC3CA,cAAC,CAAA,aAAA,CAAA,UAAU,EACT,EAAA,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,QAAQ,EACb,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAA,IAAA,EAAA,CACZ,CACG;QAEPA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,4BAA4B,EAAA;AAC1C,YAAAA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC,EAAA;gBACpDA,cAAC,CAAA,aAAA,CAAA,cAAc,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAI,CAAA,CACvC,CACC;AAEP,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;OAiBX,CAAS,CACN,EACN;AACJ,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;AACjB,IAAA,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;AAClC,IAAA,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACnC,OAAO,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAO,EAAA;IACpC,QACEA,oCAAG,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,IAAI,EAAA;QAC1CA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,UAAU,EAAG,CAAA;AAEpE,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,IAAI,CAAO;AAEtD,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BY,4BAAA,EAAA,KAAK,CAAC,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BvC,CAAS,CACR,EACJ;AACJ,CAAC;AAED,IAAI,CAAC,SAAS,GAAG;IACf,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,IAAI,EAAE,SAAS,CAAC,MAAM;IACtB,IAAI,EAAE,SAAS,CAAC,MAAM;CACvB,CAAC;AAEF,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAO,EAAA;AACjC,IAAA,QACEA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,0BAA0B,eAC1B,0BAA0B,EAAA;QAEnC,IAAI;aACF,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAO,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,WAAW,IAAI,IAAI,CAAC;AACpC,YAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AAErE,YAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,kBAAE,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC;kBACvC,IAAI,CAAC;AACX,SAAC,CAAC;AACD,aAAA,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAO,EAAE,GAAW,MAChEA,cAAA,CAAA,aAAA,CAAC,IAAI,EACH,EAAA,GAAG,EAAE,CAAO,IAAA,EAAA,IAAI,IAAI,GAAG,CAAA,CAAE,EACzB,IAAI,EAAE,WAAW,IAAI,IAAI,EACzB,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,IAAI,EAAA,CACT,CACH,CAAC;AAEJ,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;OAmBX,CAAS,CACN,EACN;AACJ,CAAC;AACD,IAAI,CAAC,SAAS,GAAG;IACf,IAAI,EAAE,SAAS,CAAC,KAAK;IACrB,MAAM,EAAE,SAAS,CAAC,MAAM;CACzB,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAO,MAC7DA,sCAAK,SAAS,EAAC,qBAAqB,EAAA,WAAA,EAAW,qBAAqB,EAAA;AAClE,IAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,IAAA;AACH,QAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAI,CAAA;QACrEA,cAAC,CAAA,aAAA,CAAA,IAAI,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,CAC/B;AAEP,IAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;KAMX,CAAS,CACN,CACP,CAAC;AAEF,OAAO,CAAC,SAAS,GAAG;AAClB,IAAA,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU;AAChC,IAAA,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACzC,MAAM,EAAE,SAAS,CAAC,MAAM;IACxB,OAAO,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAO,KAAI;IACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEzC,IAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,IAAA,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,EAAE,KAAK,EAAO,KAAK,SAAS,CAAC,KAAK,CAAC,EACpC,EAAE,CACH,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,GAAQ,KAAI;QAC1C,IACE,WAAW,CAAC,OAAO;YACnB,CAAE,WAAW,CAAC,OAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAClD;YACA,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,SAAA;KACF,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,CAAC,MAAK;AACb,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC/C,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjE,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,QACEA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,EAC1B,GAAG,EAAE,WAAW,EAAA,WAAA,EACN,gBAAgB,EAAA;AAE1B,QAAAA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,OAAO,EAAE,sBAAsB,EAAA,WAAA,EAAY,qBAAqB,EAAA;YACtEA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAC5B;QAER,IAAI,IACHA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EACN,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,kBAAkB,EAAA,CAClC,IACA,IAAI;AAER,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;AAIG,mBAAA,EAAA,OAAO,CAAC,GAAG,CAAI,CAAA,EAAA,OAAO,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;OAuBzC,CAAS,CACN,EACN;AACJ,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG;AACf,IAAA,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU;IAChC,OAAO,EAAE,SAAS,CAAC,MAAM;CAC1B;;ACjSD,MAAM,KAAK,GAAG;AACV,IAAA,UAAU,EAAE;AACR,QAAA,QAAQ,EAAE,2BAA2B;AACxC,KAAA;CACJ,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAAS,KACzB,IAAI;AACJ,IAAA,IAAI,CAAC,UAAU;IACf,IAAI,CAAC,UAAU,CAAC,MAAM;AACtB,IAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAA;AAEvB,MAAM,SAAS,GAAG,MAAK;AAC1B,IAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,CAAQ,CAAC;AAG5D,IAAA,IAAI,OAAO,EAAE;AACT,QAAA,OAAO,IAAI,CAAA;AACd,KAAA;AAED,IAAA,IAAI,IAAI,CAAA;AACR,IAAA,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAE5B,QAAA,IAAI,IACAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACA,GAAG,EAAC,gBAAgB,EACpB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAA,CAEjC,CAED,CAAA;AACJ,KAAA;AAAM,SAAA;AAEH,QAAA,IAAI,GAAGA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,IAAA,CAAI,CAAA;AAE5B,KAAA;AAED,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iBAAiB,EAAA;QAC3B,IAAI;AACL,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;aAuBX,CAAS,CACR,EACT;AACL,CAAC;;AC9DM,MAAM,IAAI,GAAG,CAAC,EAAE,OAAO,EAAY,KAAI;AAC5C,IAAA,QACEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,eAAW,gBAAgB,EAAA;QACxDA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,OAAO,EAAA;YACdA,cAAC,CAAA,aAAA,CAAA,SAAS,OAAG,CACX;AAEJ,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BX,CAAS,CACN,EACN;AACJ,CAAC;;ACtCD,SAAS,IAAI,CAAC,IAAY,EAAA;IACtB,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,OAAOA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAC,EAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,CAAI,CAAA;AACjD,KAAA;AAAM,SAAA;QACH,OAAOA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAC,EAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,CAAI,CAAA;AAC7C,KAAA;AACL,CAAC;AAEM,MAAM,gBAAgB,GAAG,CAAC,MAAW,KAAI;IAC5C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AACjD,IAAA,MAAM,qBAAqB,GAAG,8BAA8B,GAAG,IAAI,CAAA;IACnE,QACAA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAA,WAAA,EAAa,UAAU,EAAA;QACjE,IAAI,CAAC,IAAI,CAAC;QAEV,KAAK,GAAG,CAAC,IAAIA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAiB,GAAG,UAAU,CAAA,MAAA,CAAQ,EAAG,EAAA,KAAK,CAAQ;AAEpE,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;AAKS,2BAAA,EAAA,OAAO,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BR,+BAAA,EAAA,OAAO,CAAC,IAAI,CAAA;;;AAGT,kCAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AAC7B,uBAAA,EAAA,MAAM,CAAC,KAAK,CAAA;;;;;;AAMR,2BAAA,EAAA,OAAO,CAAC,GAAG,CAAA;;SAE/B,CAAS,CACV,EACP;AAAC,CAAC,CAAA;AAEH,gBAAgB,CAAC,YAAY,GAAG;AAC5B,IAAA,KAAK,EAAE,CAAC;CACX,CAAA;AAED,gBAAgB,CAAC,SAAS,GAAG;AACzB,IAAA,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACjC,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,UAAU,EAAE,SAAS,CAAC,MAAM;IAC5B,OAAO,EAAE,SAAS,CAAC,MAAM;IACzB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;CACvD;;AC3ED;;;;;AAKG;AAEH,MAAM,YAAY,GAAG,CAAC,eAAoB,EAAE,MAAc,KACtD,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC9B,IAAA,eAAe,CAAC,IAAI,CAChB,CAAC,UAAU,KAAK,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM,CAChE,CAAA;AAEE,MAAM,aAAa,GAAG,CAAC,MAAW,KAAI;IACzC,MAAM,EACF,eAAe,EACf,QAAQ,EACR,eAAe,GAClB,GAAG,MAAM,CAAC;AACX,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;AAE/B,IAAA,QACIA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,eAAW,yBAAyB,EAAA;AACvE,QAAA,YAAY,CAAC,eAAe,EAAE,2BAA2B,CAAC,KACvDA,cAAA,CAAA,aAAA,CAAC,gBAAgB,EAAA,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAClD,IAAI,EAAC,SAAS,EACd,UAAU,EAAC,2BAA2B,GACxC,CACL;AAEA,QAAA,YAAY,CAAC,eAAe,EAAE,sBAAsB,CAAC,KAClDA,cAAC,CAAA,aAAA,CAAA,gBAAgB,IACb,OAAO,EAAC,OAAO,EACf,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAC7C,IAAI,EAAC,gBAAgB,EACrB,UAAU,EAAC,oBAAoB,GACjC,CACL;AAED,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;aAQX,CAAS,CACR,EACT;AACL,CAAC,CAAA;AAED,aAAa,CAAC,SAAS,GAAG;IACtB,eAAe,EAAE,SAAS,CAAC,MAAM;IACjC,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;CACvD;;ACtEM,MAAM,YAAY,GAAG,MAAK;IAC7B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EAAS,CAAA;IAE9D,OAAO;QACH,QAAQ,EAAE,OAAO,IAAI,IAAI;AACzB,QAAA,WAAW,EAAE,UAAU,EAAE,IAAI,IAAI,IAAI;AACrC,QAAA,aAAa,EAAE,UAAU,EAAE,OAAO,IAAI,IAAI;AAC1C,QAAA,cAAc,EAAE,UAAU,EAAE,QAAQ,IAAI,IAAI;KAC/C,CAAA;AACL,CAAC,CAAA;AAEM,MAAM,qBAAqB,GAAG,MACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;;ACJhD,MAAM,kBAAkB,GAAG,CAAC,GAAQ,KAAI;IACtC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAA,OAAO,MAAM;AACV,SAAA,GAAG,CAAC,CAAC,KAAU,KAAI;AAClB,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AACnC,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/D,SAAA;AACH,KAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;SAEc,cAAc,GAAA;AAC5B,IAAA,MAAM,SAAS,GAAG,YAAY,EAAS,CAAC;AACxC,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAa,WAAW,EAAE,mCAAmC,EAAA;AAC3D,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EACG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAC9BA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EAAA;YACVA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,EAAA,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAM;YAC7DA,cAAK,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAA,SAAS,CAAC,GAAG,CAAC,CAAM,CACtB,CACN,CAAC,CACI;AACR,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;AAKW,2BAAA,EAAA,MAAM,CAAC,OAAO,CAAA;;;;;;;;;aAS9B,CAAS,CACV,EACR;AACJ;;AC3CM,SAAU,cAAc,CAAC,MAAW,EAAA;AACtC,IAAA,MAAM,EAAE,OAAO,EAAE,GAAI,MAAM,CAAC;AAC5B,IAAA,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAA;AACzC,IAAA,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,QAAQ,CACzC,uCAAuC,EACvC,EAAE,QAAQ,EAAE,IAAI,EAAE,CACrB,CAAA;IAED,MAAM,aAAa,GAAG,MAAK;AACvB,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AACxC,QAAA,OAAO,EAAE,CAAA;AACT,QAAA,kBAAkB,EAAE,CAAA;AACxB,KAAC,CAAA;IAED,QACIA,cAAC,CAAA,aAAA,CAAA,KAAK,EAAC,EAAA,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,mCAAmC,EAAA;QACjEA,cAAC,CAAA,aAAA,CAAA,UAAU,QAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAc;AAC/C,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,IAAA;YACTA,cAAC,CAAA,aAAA,CAAA,cAAc,OAAG,CACP;AACf,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,IAAA;YACTA,cAAC,CAAA,aAAA,CAAA,WAAW,IAAC,GAAG,EAAA,IAAA,EAAA;AACZ,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,OAAO,EAAE,MAAM,OAAO,EAAE,EAAA,EAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAU;gBAC5DA,cAAC,CAAA,aAAA,CAAA,MAAM,IACH,OAAO,EAAA,IAAA,EACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAC,8CAA8C,IAEtD,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CACrB,CACC,CACH,CACX,EACX;AACL,CAAC;AAED,cAAc,CAAC,SAAS,GAAG;AACvB,IAAA,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CACrC;;AClCM,MAAM,iBAAiB,GAAG,CAAC,MAAW,KAAI;AAC/C,IAAA,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;AACvD,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,eAAe,EAAE,CAAC;AAClB,QAAA,kBAAkB,EAAE,CAAC;AACvB,KAAC,CAAC;AAEF,IAAA,MAAM,cAAc,IAClBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAAA;QACnBA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uBAAuB,EAAA,WAAA,EACvB,iCAAiC,EAE1C,EAAA,SAAS,CAAC,aAAa;AACtB,cAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE;gBAC/B,YAAY,EAAE,SAAS,CAAC,aAAa;aACtC,CAAC;AACJ,cAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAC/B;QACNA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA,WAAA,EAAW,4BAA4B,EAC5D,EAAA,SAAS,CAAC,QAAQ;cACf,SAAS,CAAC,WAAW;kBACnB,GAAG,SAAS,CAAC,QAAQ,CAAI,CAAA,EAAA,SAAS,CAAC,WAAW,CAAE,CAAA;AAClD,kBAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,EAAE;oBACpC,OAAO,EAAE,SAAS,CAAC,QAAQ;iBAC5B,CAAC;cACJ,SAAS,CAAC,WAAW;AACvB,kBAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE;oBAC3B,UAAU,EAAE,SAAS,CAAC,WAAW;iBAClC,CAAC;AACJ,kBAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAE7B;AACN,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;AAEW,2BAAA,EAAA,MAAM,CAAC,OAAO,CAAA;;;;;;;;;;;aAW9B,CAAS,CACZ,CACP,CAAC;AAEF,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,QAAQ,IACP,KAAK,EAAA,IAAA,EACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAC,8BAA8B,EAAA,CACvC,EACF;AACJ,CAAC,CAAC;AAEF,iBAAiB,CAAC,SAAS,GAAG;AAC5B,IAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;AAC1C,IAAA,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC9C;;ACjED,MAAM,WAAW,GAAG,CAAC,MAAW,KAAI;AAChC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC5B,IAAA,QACAA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,4BAA4B,eAAW,4BAA4B,EAAA;QAC7E,QAAQ;AAET,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;SAMX,CAAS,CACR,EACT;AAAC,CAAC,CAAA;AACH,WAAW,CAAC,SAAS,GAAG;IACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;CAC7B,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,MAAW,KAAI;AACjC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC5B,IAAA,QACIA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,8BAA8B,eAAW,8BAA8B,EAAA;QACjF,QAAQ;AAET,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;aAMX,CAAS,CACR,EACT;AACL,CAAC,CAAA;AACD,YAAY,CAAC,SAAS,GAAG;IACrB,QAAQ,EAAE,SAAS,CAAC,MAAM;CAC7B,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAW,KAAI;AAChC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC5B,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;AAE/B,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,SAAS,EAAC,qCAAqC,EAC/C,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC,eAChD,qCAAqC,EAAA;QAE9C,QAAQ;AAET,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;aAQX,CAAS,CACV,EACP;AACL,CAAC,CAAA;AAED,WAAW,CAAC,SAAS,GAAG;IACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;CAC7B,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,MAAW,KAAI;AACnC,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAC/B,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,EAAA;QACtCA,cAAC,CAAA,aAAA,CAAA,WAAW,EAAE,IAAA,EAAA,IAAI,CAAe;QACjCA,cAAC,CAAA,aAAA,CAAA,YAAY,EAAE,IAAA,EAAA,KAAK,CAAgB;QACpCA,cAAC,CAAA,aAAA,CAAA,WAAW,QAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAe;AAEnD,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;aASX,CAAS,CACR,EACT;AACL,CAAC,CAAA;AAED,cAAc,CAAC,SAAS,GAAG;IACvB,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,IAAI,EAAE,SAAS,CAAC,MAAM;CACzB,CAAA;AAEM,MAAM,aAAa,GAAG,CAAC,MAAW,KAAI;IACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AACzC,IAAA,QAAQA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA;AAC7C,QAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACP,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAC,6BAA6B,EACtC,KAAK,EACP,IAAA,EAAA,CAAA;QACFA,cAAC,CAAA,aAAA,CAAA,cAAc,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA;AAE5C,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;SAOX,CAAS,CACR,EACT;AAAC,CAAC,CAAA;AAEH,aAAa,CAAC,SAAS,GAAG;IACtB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,IAAI,EAAE,SAAS,CAAC,MAAM;CACzB;;ACnID,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACnC,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,sBAAsB,EAAE,MAAK,GAAG;AACnC,CAAA,CAAC,CAAA;AAEK,MAAM,wBAAwB,GAAG,CAAC,MAAW,KAAI;IACpD,MAAM,EACF,eAAe,EACf,sBAAsB,EACtB,QAAQ,GACX,GAAG,MAAM,CAAC;AACX,IAAA,QACIA,cAAC,CAAA,aAAA,CAAA,gBAAgB,CAAC,QAAQ,IACtB,KAAK,EAAE,EAAE,eAAe,EAAE,sBAAsB,EAAE,IAEjD,QAAQ,CACe,EAC/B;AACL,CAAC,CAAA;AACD,wBAAwB,CAAC,SAAS,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC,IAAI;IACxB,eAAe,EAAE,SAAS,CAAC,IAAI;IAC/B,sBAAsB,EAAE,SAAS,CAAC,IAAI;CACzC,CAAA;AAEM,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC;;ACd/D,SAAU,kBAAkB,CAAC,MAAW,EAAA;AAC1C,IAAA,MAAM,EAAE,eAAe,EAAE,GAAE,MAAM,CAAC;AAClC,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,mBAAmB,EAAE,CAAA;IACzE,MAAM,OAAO,GAAG,MAAK;AACjB,QAAA,eAAe,EAAE,CAAA;QACjB,sBAAsB,IAAI,CAAA;AAC9B,KAAC,CAAA;AAED,IAAA,MAAM,uBAAuB,IACzBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAAA;QACjBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,OAAO,EAAG,CAAA;QACzBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,QAAQ,EAAG,CAAA;QAC1BA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA;YACnB,OAAO;kBACF,IAAI,CAAC,CAAC,CAAC,mCAAmC,EAAE,EAAE,OAAO,EAAE,CAAC;AAC1D,kBAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACzCA,cAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACL,YAAA,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CACxB;AACN,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcgB,sCAAA,EAAA,MAAM,CAAC,OAAO,CAAA;;;;;;;;;aASzC,CAAS,CACR,CACT,CAAA;IAED,OAAO,eAAe,IAClBA,cAAC,CAAA,aAAA,CAAA,QAAQ,EACL,EAAA,KAAK,EACL,IAAA,EAAA,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAC,uCAAuC,EAClD,CAAA,IACF,IAAI,CAAA;AACZ,CAAC;AAED,kBAAkB,CAAC,SAAS,GAAG;AAC3B,IAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC7C;;AClDD,MAAM,WAAW,GAAG,OAChBA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACF,WAAW,EACX,IAAA,EAAA,aAAa,EACb,IAAA,EAAA,QAAQ,EAAC,qCAAqC,EAAA;AAE9C,IAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,IAAA;AACH,QAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,CAAG,CACb,CACL,CACX,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAW,KAAI;AACpC,IAAA,MAAM,EACF,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,EACP,eAAe,EACf,kBAAkB,GACrB,GAAG,MAAM,CAAC;AACX,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,QACIA,6BAAC,IAAI,EAAA,IAAA;QACDA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,4BAA4B,EAAA;AACvC,YAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA;AAC/D,YAAAA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,MAAM,EAAC,cAAc,EAAG,CAAA;AACjC,YAAAA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,WAAA,EAAc,wBAAwB,EAAA;AAClC,gBAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACL,IAAI,EAAE,QAAQ,CACV,OAAO,EACP,kCAAkC,CACrC,EACD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EACzB,KAAK,EAAC,UAAU,EAChB,IAAI,EAAEA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAI,EACjD,CAAA;AACF,gBAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACL,IAAI,EAAE,QAAQ,CACV,OAAO,EACP,iCAAiC,CACpC,EACD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EACxB,KAAK,EAAC,SAAS,EACf,IAAI,EAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAI,EAC7C,CAAA;AACD,gBAAA,OAAO,KACJA,cAAC,CAAA,aAAA,CAAA,QAAQ,IACL,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EACrB,KAAK,EAAC,MAAM,EACZ,IAAI,EAAEA,cAAC,CAAA,aAAA,CAAA,cAAc,EAAC,EAAA,KAAK,EAAE,MAAM,CAAC,OAAO,EAAA,CAAI,GACjD,CACL;AACD,gBAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACL,IAAI,EAAE,QAAQ,CACV,OAAO,EACP,mCAAmC,CACtC,EACD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAC5B,KAAK,EAAC,OAAO,EACb,IAAI,EAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAI,EAC7C,CAAA;gBACFA,cAAC,CAAA,aAAA,CAAA,QAAQ,IACL,IAAI,EAAE,QAAQ,CACV,OAAO,EACP,yCAAyC,CAC5C;;;;oBAID,OAAO,EAAE,YAAW;wBAChB,UAAU,CAAC,IAAI,CAAC,CAAA;wBAChB,MAAM,oBAAoB,EAAE,CAAA;wBAC5B,UAAU,CAAC,KAAK,CAAC,CAAA;AACjB,wBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAClB,QAAQ,CACJ,OAAO,EACP,yCAAyC,CAC5C,CACJ,CAAA;qBACJ,EACD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EACvB,KAAK,EAAC,QAAQ,EACd,IAAI,EAAEA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAA,CAAI,EAC/C,CAAA;gBACFA,cAAC,CAAA,aAAA,CAAA,WAAW,EAAC,EAAA,KAAK,EAAG,IAAA,EAAA,CAAA;gBACrBA,cAAC,CAAA,aAAA,CAAA,iBAAiB,IACd,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACxC,CAAA;AACF,gBAAAA,cAAA,CAAA,aAAA,CAAC,kBAAkB,EAAC,EAAA,eAAe,EAAE,eAAe,EAAA,CAAI,CACvD,CACH;QAEL,OAAO,IAAIA,cAAC,CAAA,aAAA,CAAA,WAAW,EAAG,IAAA,CAAA;AAE3B,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;aAuBX,CAAS,CACP,EACV;AACL,CAAC,CAAA;AAED,eAAe,CAAC,SAAS,GAAG;AACxB,IAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;AAC1C,IAAA,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC7C,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,OAAO,EAAE,SAAS,CAAC,MAAM;IACzB,IAAI,EAAE,SAAS,CAAC,MAAM;CACzB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,MAAW,KAAI;AACvC,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE,GAAC,MAAM,CAAC;AAC1B,IAAA,QACIA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,eAAW,wBAAwB,EAAA;QACtEA,cAAC,CAAA,aAAA,CAAA,eAAe,EAAK,EAAA,GAAA,KAAK,EAAI,CAAA;AAC9B,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;aAOX,CAAS,CACR,EACT;AACL,CAAC,CAAA;AAED,WAAW,CAAC,SAAS,GAAG;AACpB,IAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;AAC1C,IAAA,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC7C,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,OAAO,EAAE,SAAS,CAAC,MAAM;IACzB,IAAI,EAAE,SAAS,CAAC,MAAM;CACzB;;ACrLM,MAAM,aAAa,GAAG,CAAC,YAAiB,EAAE,IAAS,KAAI;AAC1D,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAK;QAC5B,OAAO,CAAC,GAAQ,KAAI;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACvB,gBAAA,OAAO,IAAI,CAAA;AACd,aAAA;YAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC5C,gBAAA,IAAI,EAAE,CAAA;AACT,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;AACL,KAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAA;IAExB,SAAS,CAAC,MAAK;AACX,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAE9C,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AACrD,SAAC,CAAA;AACL,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;AACpB,CAAC;;ACXD,MAAM,OAAO,GAAG,CAAC,MAAW,KAAI;IAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAClD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnE,IAAA,MAAM,eAAe,GAAG,WAAW,CAC/B,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAC/B,CAAC,kBAAkB,CAAC,CACvB,CAAA;IACD,MAAM,iBAAiB,GAAG,WAAW,CACjC,MAAM,kBAAkB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EACzC,CAAC,kBAAkB,CAAC,CAChB,CAAA;AACR,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AAEjC,IAAA,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;IAE5C,QACIA,cACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,YAAY,eACP,mBAAmB,EAC7B,SAAS,EAAC,mBAAmB,EAAA;AAE7B,QAAAA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,iBAAiB,EAAA;AAE1B,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EACP,EAAA,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAC,wBAAwB,EACjC,MAAM,SACR,CACG;AAER,QAAA,eAAe,KACZA,cAAC,CAAA,aAAA,CAAA,WAAW,EACR,EAAA,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,MAAK;gBACrB,qBAAqB,CAAC,IAAI,CAAC,CAAA;AAC/B,aAAC,GACH,CACL;QACA,kBAAkB,KACfA,cAAC,CAAA,aAAA,CAAA,cAAc,IACX,OAAO,EAAE,MAAK;gBACV,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAChC,aAAC,GACH,CACL;AAED,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;aAyBX,CAAS,CACR,EACT;AACL,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,GAAG;AAChB,IAAA,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACjC,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,OAAO,EAAE,SAAS,CAAC,MAAM;CAC5B;;AC7FM,MAAM,KAAK,GAAG,CAAC,MAAW,KAAI;AACnC,IAAA,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AACjC,IAAA,QACEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,iBAAiB,eAAW,iBAAiB,EAAA;AACzD,QAAA,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,GAAG,CAAA,CAAE,GAAG,CAAA,EAAG,QAAQ,CAAE,CAAA;AAE7C,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;;;OASX,CAAS,CACN,EACN;AACJ,CAAC,CAAC;AACF,KAAK,CAAC,SAAS,GAAG;IAChB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,QAAQ,EAAE,SAAS,CAAC,MAAM;CAC3B;;ACdM,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAiB,KAAI;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC;;AAGnB,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE;;;AAGtB,QAAA,MAAM,MAAM,GAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7B,KAAA;AAED,IAAA;;AAEC,KAAA;IACD,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAE,SAAS,EAAA;QAC1BA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAClB,EAAA,CAAC,OAAO,IAAI,CAAC,KAAK,KACjBA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,YAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAE,OAAO,EAAI,CAAA;AAE1B,YAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAG,IAAI,CAAC,KAAa,CAAC,kBAAkB,CAAC,EACjD,CAAA;YAEFA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,sBAAsB,EAAG,CAAA;YAKxCA,cAAC,CAAA,aAAA,CAAA,aAAa,EACZ,EAAA,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB,EACzD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,0BAA0B,EACvD,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAQ,EAChD,CAAA;YACFA,cAAC,CAAA,aAAA,CAAA,IAAI,EAAC,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAI,CAAA;YAE3CA,cAAC,CAAA,aAAA,CAAA,OAAO,IACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAW,EACjC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAW,EACnC,QAAQ,EAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAU,IAAI,CAAC,EACpD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAA,CAC/B,CACD,CACJ,CACG;AAIN,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,GAAG,EAAE,IAAA,EAAA,EAAA,CAAA;;;;;;;AAOC,iBAAA,EAAA,MAAM,CAAC,KAAK,CAAA;;;;;;OAMxB,CAAS,CACH,EACT;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC,MAAM;AACzB,IAAA,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,eAAe,EAAE,SAAS,CAAC,IAAI;IAC/B,sBAAsB,EAAE,SAAS,CAAC,IAAI;CACvC;;ACjFK,MAAO,kBAAmB,SAAQ,qBAAqB,CAAA;IAG3D,WACE,CAAA,UAAmC,EAC3B,UAAqC,EAAA;QAE7C,KAAK,CAAC,UAAU,CAAC,CAAC;QAFV,IAAU,CAAA,UAAA,GAAV,UAAU,CAA2B;KAG9C;AAEQ,IAAA,MAAM,eAAe,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,QAAA,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5E,IAAI,CAAC,SAAS,GAAG,IAAI;cACjB,OACEA,cAAC,CAAA,aAAA,CAAA,YAAY,EACV,IAAA,EAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAI,CAAA,CACtC,CAChB;AACH,cAAE,MAAMA,iEAA+B,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;+GAxBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,qFAFnB,CAA8D,4DAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAE7D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAA8D,4DAAA,CAAA;AACzE,iBAAA,CAAA;;;MCHY,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAHX,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADvB,YAAY,EAAE,mBAAmB,aAEjC,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEjB,eAAe,EAAA,OAAA,EAAA,CAJhB,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIhC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBAC5C,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACTD;AACA;AACA;;ACQM,MAAO,eAAgB,SAAQ,qBAAqB,CAAA;AAL1D,IAAA,WAAA,GAAA;;AAcY,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,KAAK,GAA4B;AACxC,YAAA,OAAO,EAAE,CAAC,CAAM,KAAI;AAClB,gBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACvB;SACF,CAAC;QAEO,IAAS,CAAA,SAAA,GAAGC,QAAM,CAAC;AAiB7B,KAAA;IAdC,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;KACH;AAED,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;+GAjCU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,oRAHhB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAG1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,2BAA2B;AAEtC,iBAAA,CAAA;8BAEU,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MCTI,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAJR,eAAe,CAAA,EAAA,OAAA,EAAA,CAEpB,YAAY,EAAE,mBAAmB,aADjC,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;gHAGd,YAAY,EAAA,OAAA,EAAA,CAFb,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEhC,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAC7C,iBAAA,CAAA;;;ACTD;AACA;AACA;;ACQM,MAAO,iBAAkB,SAAQ,qBAAqB,CAAA;AAJ5D,IAAA,WAAA,GAAA;;AAKG,QAAA,IAAA,CAAA,SAAS,GAAG;;;;;;;SAOd,CAAA;AACU,QAAA,IAAA,CAAA,SAAS,GAAGD,cAAC,CAAA,aAAA,CAAA,UAAU,EAAK,EAAA,GAAA,IAAI,CAAC,SAAS,EAAA;AACnD,YAAAA,cAAA,CAAA,aAAA,CAACA,cAAK,CAAC,QAAQ,EAAA,EACX,QAAQ,EACJA,cAAC,CAAA,aAAA,CAAAE,OAAK,EAAC,EAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA;AACtB,oBAAAF,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,IAAA;AACZ,wBAAAA,cAAA,CAAA,aAAA,CAACG,gBAAc,EAAG,IAAA,CAAA,CACJ,CACd,EAAA,CAIC,CACC,CAAA;AACnB,KAAA;+GAtBY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oFAFlB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAE1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA,CAAA;;;MCCY,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,mBAAmB,aACjC,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBAC5C,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;ACTD;AACA;AACA;;ACFA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../ng-dhis2-ui/src/lib/ng-dhis2-ui.module.ts","../../../ng-dhis2-ui/src/lib/shared/components/react-component-wrapper/react-wrapper.component.tsx","../../../ng-dhis2-ui/src/lib/shared/components/index.ts","../../../ng-dhis2-ui/src/lib/shared/shared.module.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-app.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-notification.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-data.model.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/models/index.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/join-path.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/apps.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/logo-image.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/logo.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/notification-icon.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/notifications.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/use-debug-info.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-table.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-modal.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-header.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar-context.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/update-notification.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-menu.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile/use-on-doc-click.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/profile.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/title.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/header-bar.component.tsx","../../../ng-dhis2-ui/src/lib/modules/header-bar/header-bar.module.ts","../../../ng-dhis2-ui/src/lib/modules/header-bar/index.ts","../../../ng-dhis2-ui/src/lib/modules/button/button.component.tsx","../../../ng-dhis2-ui/src/lib/modules/button/button.module.ts","../../../ng-dhis2-ui/src/lib/modules/button/index.ts","../../../ng-dhis2-ui/src/iapps-ng-dhis2-ui.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class NgDhis2UiModule {}\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport parse from 'html-react-parser';\nimport * as React from 'react';\nimport { ComponentProps } from 'react';\nimport * as ReactDOM from 'react-dom/client';\n(window as any).React = React;\n\n@Directive({\n selector: 'ng-dhis2-ui-wrapper',\n})\nexport class ReactWrapperComponent\n implements OnChanges, OnDestroy, AfterViewInit\n{\n @Input() props?: ComponentProps<any>;\n @Input() component!: React.ElementType;\n\n @ContentChild('ngDhis2UiContent') content!: ElementRef<HTMLElement>;\n protected reactDomRoot?: ReactDOM.Root;\n\n constructor(protected elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.render();\n }\n\n ngOnChanges(): void {\n if (this.elementRef) this.render();\n }\n\n ngOnDestroy() {\n this.reactDomRoot?.unmount();\n }\n\n protected render() {\n if (!this.component) throw new Error('React component must be supplied');\n\n if (!this.reactDomRoot) return;\n\n const jsxContent = this.content?.nativeElement?.outerHTML\n ? parse(this.content?.nativeElement?.outerHTML)\n : undefined;\n\n this.reactDomRoot.render(\n <this.component {...this.props}> {jsxContent || ''} </this.component>\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nimport { ReactWrapperComponent } from './react-component-wrapper/react-wrapper.component';\n\nexport const sharedComponents: any[] = [];\n\nexport { ReactWrapperComponent };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { sharedComponents } from './components';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [...sharedComponents],\n exports: [...sharedComponents],\n})\nexport class SharedDhis2UiModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarApp {\n name!: string;\n namespace!: string;\n defaultAction!: string;\n displayName!: string;\n icon!: string;\n description!: string;\n\n constructor(module: Record<string, unknown>) {\n this.name = module['name'] as string;\n this.namespace = module['namespace'] as string;\n this.defaultAction = this.getPath(module['defaultAction'] as string);\n this.icon = this.getPath(module['icon'] as string);\n this.displayName = module['displayName'] as string;\n this.description = module['description'] as string;\n }\n\n getPath(item: string) {\n if (item?.startsWith('../')) {\n return '../../' + item;\n }\n return item;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarNotification {\n unreadInterpretations?: number;\n unreadMessageConversations?: number;\n\n constructor(notification: Record<string, number>) {\n this.unreadInterpretations = notification['unreadInterpretations'];\n this.unreadMessageConversations =\n notification['unreadMessageConversations'];\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, catchError, map, of, zip } from 'rxjs';\nimport { HeaderBarApp } from './header-bar-app.model';\nimport { HeaderBarNotification } from './header-bar-notification.model';\n\nexport class HeaderBarData {\n apps!: HeaderBarApp[];\n title!: string;\n help: any;\n notifications!: HeaderBarNotification;\n user!: Record<string, unknown>;\n\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n getApps(): Observable<HeaderBarApp[]> {\n return this.httpClient\n .get('dhis-web-commons/menu/getModules.action', {\n useRootUrl: true,\n })\n .pipe(\n catchError(() =>\n of({\n modules: [],\n })\n ),\n map((result: { modules: Record<string, unknown>[] }) => {\n return (result?.modules || [])\n .map((module: Record<string, unknown>) => new HeaderBarApp(module))\n .filter((headerBarApp) => headerBarApp);\n })\n );\n }\n\n getNotifications(): Observable<HeaderBarNotification | null> {\n return this.httpClient\n .get('me/dashboard')\n .pipe(\n map((notifications: Record<string, number>) =>\n notifications ? new HeaderBarNotification(notifications) : null\n )\n );\n }\n\n get(): Observable<HeaderBarData | null> {\n return zip(\n this.getApps(),\n this.httpClient.get('systemSettings/helpPageLink'),\n this.httpClient.get('me/dashboard'),\n this.httpClient.get('systemSettings/applicationTitle'),\n this.httpClient.get(\n 'me.json?fields=authorities,avatar,email,name,settings'\n )\n ).pipe(\n map(\n (response: [HeaderBarApp[], any, HeaderBarNotification, any, any]) => {\n if (response) {\n const [apps, help, notifications, title, user] = response;\n this.apps = apps;\n this.help = help;\n this.notifications = notifications;\n this.title = title as string;\n this.user = user;\n\n return this;\n }\n\n return null;\n }\n ),\n catchError(() => {\n return of(null);\n })\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar-data.model';\nexport * from './header-bar-app.model';\n","export const joinPath = (...parts: any[]) => {\n const realParts = parts.filter((part) => !!part)\n return realParts.map((part) => part.replace(/^\\/+|\\/+$/g, '')).join('/')\n}\n","import { Card } from '@dhis2-ui/card';\nimport { InputField } from '@dhis2-ui/input';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors, spacers, theme } from '@dhis2/ui-constants';\nimport { IconApps24, IconSettings24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { joinPath } from './join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/**\n * Copied from here:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n */\nfunction escapeRegExpCharacters(text: string) {\n return text.replace(/[/.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction Search({ value, onChange, baseUrl }: any) {\n return (\n <div className=\"headerbar-apps-search\">\n <span className=\"headerbar-apps-search-input\">\n <InputField\n value={value}\n name=\"filter\"\n placeholder={i18n.t('Search apps')}\n onChange={onChange}\n initialFocus\n />\n </span>\n\n <span className=\"headerbar-apps-search-icon\">\n <a href={joinPath(baseUrl, 'dhis-web-menu-management')}>\n <IconSettings24 color={colors.grey700} />\n </a>\n </span>\n\n <style jsx>{`\n .headerbar-apps-search {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n height: 52px;\n margin: 8px;\n }\n\n .headerbar-apps-search-input {\n flex: 1 100%;\n }\n\n .headerbar-apps-search-icon {\n flex: 1 auto;\n margin: 8px;\n }\n `}</style>\n </div>\n );\n}\n\nSearch.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n baseUrl: PropTypes.string,\n};\n\nfunction Item({ name, path, img }: any) {\n return (\n <a className=\"headerbar-app-item\" href={path}>\n <img className=\"headerbar-app-item-logo\" src={img} alt=\"app logo\" />\n\n <div className=\"headerbar-app-item-title\">{name}</div>\n\n <style jsx>{`\n .headerbar-app-item {\n display: flex;\n flex-direction: column;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n .headerbar-app-item-logo {\n display: inline-block;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover,\n .headerbar-app-item-logo:focus {\n background-color: ${theme.primary050};\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover > div {\n font-weight: 500;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo {\n width: 48px;\n height: 48px;\n margin: 8px;\n cursor: pointer;\n }\n\n .headerbar-app-item-title {\n overflow-wrap: anywhere;\n margin-top: 14px;\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n letter-spacing: 0.01em;\n line-height: 14px;\n text-align: center;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n}\n\nItem.propTypes = {\n img: PropTypes.string,\n name: PropTypes.string,\n path: PropTypes.string,\n};\n\nfunction List({ apps, filter }: any) {\n return (\n <div\n className=\"headerbar-apps-menu-list\"\n data-test=\"headerbar-apps-menu-list\"\n >\n {apps\n .filter(({ displayName, name }: any) => {\n const appName = displayName || name;\n const formattedAppName = appName.toLowerCase();\n const formattedFilter = escapeRegExpCharacters(filter).toLowerCase();\n\n return filter.length > 0\n ? formattedAppName.match(formattedFilter)\n : true;\n })\n .map(({ displayName, name, defaultAction, icon }: any, idx: string) => (\n <Item\n key={`app-${name}-${idx}`}\n name={displayName || name}\n path={defaultAction}\n img={icon}\n />\n ))}\n\n <style jsx>{`\n .headerbar-apps-menu-list {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-content: flex-start;\n align-items: flex-start;\n justify-content: flex-start;\n width: 30vw;\n min-width: 300px;\n max-width: 560px;\n\n min-height: 200px;\n max-height: 465px;\n margin: 0 8px 8px 8px;\n\n overflow: auto;\n overflow-x: hidden;\n }\n `}</style>\n </div>\n );\n}\nList.propTypes = {\n apps: PropTypes.array,\n filter: PropTypes.string,\n};\n\nconst AppMenu = ({ apps, filter, onFilterChange, baseUrl }: any) => (\n <div className=\"headerbar-apps-menu\" data-test=\"headerbar-apps-menu\">\n <Card>\n <Search value={filter} onChange={onFilterChange} baseUrl={baseUrl} />\n <List apps={apps} filter={filter} />\n </Card>\n\n <style jsx>{`\n .headerbar-apps-menu {\n z-index: 10000;\n position: absolute;\n right: -4px;\n }\n `}</style>\n </div>\n);\n\nAppMenu.propTypes = {\n apps: PropTypes.array.isRequired,\n onFilterChange: PropTypes.func.isRequired,\n filter: PropTypes.string,\n baseUrl: PropTypes.string,\n};\n\nconst Apps = ({ apps, baseUrl }: any) => {\n const [show, setShow] = useState(false);\n const [filter, setFilter] = useState('');\n\n const handleVisibilityToggle = useCallback(() => setShow(!show), [show]);\n const handleFilterChange = useCallback(\n ({ value }: any) => setFilter(value),\n []\n );\n\n const containerEl = useRef(null);\n const onDocClick = useCallback((evt: any) => {\n if (\n containerEl.current &&\n !(containerEl.current as any).contains(evt.target)\n ) {\n setShow(false);\n }\n }, []);\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n return () => document.removeEventListener('click', onDocClick);\n }, [onDocClick]);\n\n return (\n <div\n className=\"headerbar-apps\"\n ref={containerEl}\n data-test=\"headerbar-apps\"\n >\n <button onClick={handleVisibilityToggle} data-test=\"headerbar-apps-icon\">\n <IconApps24 color={colors.white} />\n </button>\n\n {show ? (\n <AppMenu\n apps={apps}\n filter={filter}\n baseUrl={baseUrl}\n onFilterChange={handleFilterChange}\n />\n ) : null}\n\n <style jsx>{`\n .headerbar-apps button {\n display: block;\n background: transparent;\n padding: ${spacers.dp4} ${spacers.dp12} 0;\n border: 0;\n cursor: pointer;\n height: 100%;\n }\n .headerbar-apps button:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-apps button:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-apps button:hover {\n background: #1a557f;\n }\n .headerbar-apps button:active {\n background: #104067;\n }\n\n .headerbar-apps {\n position: relative;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nApps.propTypes = {\n apps: PropTypes.array.isRequired,\n baseUrl: PropTypes.string,\n};\n\nexport default Apps;\n","import { LogoIconWhite } from '@dhis2-ui/logo'\nimport { useDataQuery } from '@dhis2/app-runtime'\nimport React from 'react'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst query = {\n customLogo: {\n resource: 'staticContent/logo_banner',\n },\n}\n\nconst pathExists = (data: any) =>\n data &&\n data.customLogo &&\n data.customLogo.images &&\n data.customLogo.images.png\n\nexport const LogoImage = () => {\n const { loading, error, data } = useDataQuery(query) as any;\n\n \n if (loading) {\n return null\n }\n\n let Logo\n if (!error && pathExists(data)) {\n \n Logo = (\n <img\n alt=\"Headerbar Logo\"\n src={data.customLogo.images.png}\n \n />\n \n )\n } else {\n \n Logo = <LogoIconWhite />\n\n }\n\n return (\n <div className=\"header-bar-logo\">\n {Logo}\n <style jsx>{`\n .header-bar-logo {\n min-width: 48px;\n max-width: 250px;\n height: 48px;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n align-items: center;\n overflow: hidden;\n }\n\n .header-bar-logo svg {\n height: 25px;\n width: 27px;\n }\n \n .header-bar-logo img {\n max-height: 100%;\n min-height: auto;\n width: auto;\n }\n `}</style>\n </div>\n )\n}\n","import { useConfig } from '@dhis2/app-runtime';\nimport React from 'react';\nimport { LogoImage } from './logo-image';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\ninterface LogoProp {\n baseUrl: string;\n}\n\nexport const Logo = ({ baseUrl }: LogoProp) => {\n return (\n <div className=\"headerbar-logo\" data-test=\"headerbar-logo\">\n <a href={baseUrl}>\n <LogoImage />\n </a>\n\n <style jsx>{`\n .headerbar-logo {\n box-sizing: border-box;\n min-width: 49px;\n max-height: 48px;\n margin: 0 12px 0 0;\n border-right: 1px solid rgba(32, 32, 32, 0.15);\n }\n .headerbar-logo:hover {\n background-color: #1a557f;\n }\n\n .headerbar-logo a,\n .headerbar-logo a:hover,\n .headerbar-logo a:focus,\n .headerbar-logo a:active,\n .headerbar-logo a:visited {\n user-select: none;\n }\n .headerbar-logo a:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-logo a:focus:not(:focus-visible) {\n outline: none;\n }\n `}</style>\n </div>\n );\n};\n","import { colors, theme, spacers } from '@dhis2/ui-constants'\nimport { IconMessages24, IconMail24 } from '@dhis2/ui-icons'\nimport PropTypes from 'prop-types'\nimport React from 'react'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\n\nfunction icon(kind: string) {\n if (kind === 'message') {\n return <IconMessages24 color={colors.white} />\n } else {\n return <IconMail24 color={colors.white} />\n }\n}\n\nexport const NotificationIcon = (params: any) => {\n const { count, href, kind, dataTestId } = params;\n const notificationClassName = \"headerbar-notification-icon \" + kind\n return (\n <a href={href} className={notificationClassName} data-test={dataTestId}>\n {icon(kind)}\n\n {count > 0 && <span data-test={`${dataTestId}-count`}>{count}</span>}\n\n <style jsx>{`\n .headerbar-notification-icon {\n position: relative;\n margin: 0;\n cursor: pointer;\n padding: 0 ${spacers.dp12};\n height: 100%;\n display: flex;\n align-items: center;\n }\n .headerbar-notification-icon:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-notification-icon:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-notification-icon:hover {\n background: #1a557f;\n }\n .headerbar-notification-icon:active {\n background: #104067;\n }\n .headerbar-notification-icon span {\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1;\n position: absolute;\n top: 3px;\n right: 2px;\n min-width: 18px;\n min-height: 18px;\n border-radius: ${spacers.dp12};\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),\n 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n background-color: ${theme.secondary500};\n color: ${colors.white};\n font-size: 13px;\n font-weight: 600;\n line-height: 15px;\n text-align: center;\n cursor: inherit;\n padding: 0 ${spacers.dp4};\n }\n `}</style>\n </a>\n) }\n\nNotificationIcon.defaultProps = {\n count: 0,\n}\n\nNotificationIcon.propTypes = {\n href: PropTypes.string.isRequired,\n count: PropTypes.number,\n dataTestId: PropTypes.string,\n message: PropTypes.string,\n kind: PropTypes.oneOf(['interpretation', 'message']),\n}\n","import { useConfig } from '@dhis2/app-runtime'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { joinPath } from './join-path'\nimport { NotificationIcon } from './notification-icon'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\n\n/*\n AUTHORITIES:\n - ALL: superuser\n - M_dhis-web-interpretation: access to interpretations app\n - M_dhis-web-messaging: access to messaging app\n */\n\nconst hasAuthority = (userAuthorities: any, authId: string) =>\n Array.isArray(userAuthorities) &&\n userAuthorities.some(\n (userAuthId) => userAuthId === 'ALL' || userAuthId === authId\n )\n\nexport const Notifications = (params: any) => {\n const {\n interpretations,\n messages,\n userAuthorities,\n } = params;\n const { baseUrl } = useConfig()\n\n return (\n <div className=\"headerbar-notifications\" data-test=\"headerbar-notifications\">\n {hasAuthority(userAuthorities, 'M_dhis-web-interpretation') && (\n <NotificationIcon\n count={interpretations}\n href={joinPath(baseUrl, 'dhis-web-interpretation')}\n kind=\"message\"\n dataTestId=\"headerbar-interpretations\"\n />\n )}\n\n {hasAuthority(userAuthorities, 'M_dhis-web-messaging') && (\n <NotificationIcon\n message=\"email\"\n count={messages}\n href={joinPath(baseUrl, 'dhis-web-messaging')}\n kind=\"interpretation\"\n dataTestId=\"headerbar-messages\"\n />\n )}\n\n <style jsx>{`\n .headerbar-notifications {\n user-select: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 100%;\n }\n `}</style>\n </div>\n )\n}\n\nNotifications.propTypes = {\n interpretations: PropTypes.number,\n messages: PropTypes.number,\n userAuthorities: PropTypes.arrayOf(PropTypes.string),\n}\n","import { useConfig } from '@dhis2/app-runtime'\n\nexport const useDebugInfo = () => {\n const { appName, appVersion, systemInfo } = useConfig() as any\n\n return {\n app_name: appName || null,\n app_version: appVersion?.full || null,\n dhis2_version: systemInfo?.version || null,\n dhis2_revision: systemInfo?.revision || null,\n }\n}\n\nexport const useFormattedDebugInfo = () =>\n JSON.stringify(useDebugInfo(), undefined, 2)\n","import { colors } from '@dhis2/ui-constants';\nimport React from 'react';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst formatDebugInfoKey = (key: any) => {\n const tokens = key.split('_');\n return tokens\n .map((token: any) => {\n if (token.toLowerCase() === 'dhis2') {\n return 'DHIS2';\n } else {\n return token[0].toUpperCase() + token.substr(1).toLowerCase();\n }\n })\n .join(' ');\n};\n\nexport function DebugInfoTable() {\n const debugInfo = useDebugInfo() as any;\n return (\n <table {...{ 'data-test': 'dhis2-ui-headerbar-debuginfotable' }}>\n <tbody>\n {Object.keys(debugInfo).map((key) => (\n <tr key={key}>\n <td className=\"debug-info-key\">{formatDebugInfoKey(key)}</td>\n <td>{debugInfo[key]}</td>\n </tr>\n ))}\n </tbody>\n <style jsx>{`\n table {\n white-space: pre-wrap;\n font-size: 14px;\n line-height: 1.2;\n color: ${colors.grey700};\n font-famile: Menlo, Courier, monospace !important;\n }\n td {\n padding: 3px 16px 3px 0;\n }\n .debug-info-key {\n font-weight: bold;\n }\n `}</style>\n </table>\n );\n}\n","import { Button, ButtonStrip } from '@dhis2-ui/button'\nimport { Modal, ModalActions, ModalContent, ModalTitle } from '@dhis2-ui/modal'\nimport { useAlert } from '@dhis2/app-runtime'\nimport i18n from '@dhis2/d2-i18n'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { DebugInfoTable } from './debug-info-table'\nimport { useFormattedDebugInfo } from './use-debug-info'\n\nexport function DebugInfoModal(params: any) {\n const { onClose } = params;\n const debugInfo = useFormattedDebugInfo()\n const { show: showClipboardAlert } = useAlert(\n 'Debug information copied to clipboard',\n { duration: 3000 }\n )\n\n const copyDebugInfo = () => {\n navigator.clipboard.writeText(debugInfo)\n onClose()\n showClipboardAlert()\n }\n\n return (\n <Modal position=\"middle\" dataTest=\"dhis2-ui-headerbar-debuginfomodal\">\n <ModalTitle>{i18n.t('Debug info')}</ModalTitle>\n <ModalContent>\n <DebugInfoTable />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => onClose()}>{i18n.t('Close')}</Button>\n <Button\n primary\n onClick={copyDebugInfo}\n dataTest=\"dhis2-ui-headerbar-debuginfomodal-copybutton\"\n >\n {i18n.t('Copy debug info')}\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n )\n}\n\nDebugInfoModal.propTypes = {\n onClose: PropTypes.func.isRequired,\n}\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const DebugInfoMenuItem = (params: any) => {\n const { hideProfileMenu, showDebugInfoModal } = params;\n const debugInfo = useDebugInfo();\n\n const openDebugModal = () => {\n hideProfileMenu();\n showDebugInfoModal();\n };\n\n const debugInfoLabel = (\n <div className=\"root\">\n <div\n className=\"instance-info version\"\n data-test=\"dhis2-ui-headerbar-instanceinfo\"\n >\n {debugInfo.dhis2_version\n ? i18n.t('DHIS2 {{dhis2Version}}', {\n dhis2Version: debugInfo.dhis2_version,\n })\n : i18n.t('DHIS2 version unknown')}\n </div>\n <div className=\"version\" data-test=\"dhis2-ui-headerbar-appinfo\">\n {debugInfo.app_name\n ? debugInfo.app_version\n ? `${debugInfo.app_name} ${debugInfo.app_version}`\n : i18n.t('{{appName}} version unknown', {\n appName: debugInfo.app_name,\n })\n : debugInfo.app_version\n ? i18n.t('App {{appVersion}}', {\n appVersion: debugInfo.app_version,\n })\n : i18n.t('App version unknown')}\n {}\n </div>\n <style jsx>{`\n .root {\n color: ${colors.grey700};\n font-style: italic;\n font-size: 14px;\n line-height: 17px;\n }\n .instance-info {\n margin-bottom: 4px;\n }\n .version {\n white-space: no-wrap;\n }\n `}</style>\n </div>\n );\n\n return (\n <MenuItem\n dense\n onClick={openDebugModal}\n label={debugInfoLabel}\n dataTest=\"dhis2-ui-headerbar-debuginfo\"\n />\n );\n};\n\nDebugInfoMenuItem.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar'\nimport { useConfig } from '@dhis2/app-runtime'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { joinPath } from '../join-path'\nimport i18n from '@dhis2/d2-i18n'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst ProfileName = (params: any) => {\n const { children } = params;\n return (\n <div className=\"headerbar-profile-username\" data-test=\"headerbar-profile-username\">\n {children}\n\n <style jsx>{`\n .headerbar-profile-username {\n margin-bottom: 3px;\n font-size: 16px;\n line-height: 19px;\n }\n `}</style>\n </div>\n) }\nProfileName.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileEmail = (params: any) => {\n const { children } = params;\n return (\n <div className=\"headerbar-profile-user-email\" data-test=\"headerbar-profile-user-email\">\n {children}\n \n <style jsx>{`\n .headerbar-profile-user-email {\n margin-bottom: 6px;\n font-size: 14px;\n line-height: 16px;\n }\n `}</style>\n </div>\n )\n}\nProfileEmail.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileEdit = (params: any) => {\n const { children } = params;\n const { baseUrl } = useConfig()\n\n return (\n <a\n className=\"headerbar-profile-edit-profile-link\"\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/profile')}\n data-test=\"headerbar-profile-edit-profile-link\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-edit-profile-link {\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n line-height: 14px;\n text-decoration: underline !important;\n cursor: pointer;\n }\n `}</style>\n </a>\n )\n}\n\nProfileEdit.propTypes = {\n children: PropTypes.string,\n}\n\nconst ProfileDetails = (params: any) => {\n const { name, email } = params;\n return (\n <div className=\"headerbar-profile-details\">\n <ProfileName>{name}</ProfileName>\n <ProfileEmail>{email}</ProfileEmail>\n <ProfileEdit>{i18n.t('Edit profile')}</ProfileEdit>\n \n <style jsx>{`\n .headerbar-profile-details {\n display: flex;\n flex-direction: column;\n margin-left: 20px;\n color: #000;\n font-size: 14px;\n font-weight: 400;\n }\n `}</style>\n </div>\n )\n}\n\nProfileDetails.propTypes = {\n email: PropTypes.string,\n name: PropTypes.string,\n}\n\nexport const ProfileHeader = (params: any) => {\n const { name, email, avatarId } = params;\n return (<div className=\"headerbar-profile-header\">\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-menu-icon\"\n large\n />\n <ProfileDetails name={name} email={email} />\n\n <style jsx>{`\n .headerbar-profile-header {\n display: flex;\n flex-direction: row;\n margin-left: 24px;\n padding-top: 20px;\n }\n `}</style>\n </div>\n) }\n\nProfileHeader.propTypes = {\n avatarId: PropTypes.string,\n email: PropTypes.string,\n name: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\nimport React, { createContext, useContext } from 'react'\n\nconst headerBarContext = createContext({\n updateAvailable: false,\n onApplyAvailableUpdate: () => {},\n})\n\nexport const HeaderBarContextProvider = (params: any) => {\n const {\n updateAvailable,\n onApplyAvailableUpdate,\n children,\n } = params;\n return (\n <headerBarContext.Provider\n value={{ updateAvailable, onApplyAvailableUpdate }}\n >\n {children}\n </headerBarContext.Provider>\n )\n}\nHeaderBarContextProvider.propTypes = {\n children: PropTypes.node,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n}\n\nexport const useHeaderBarContext = () => useContext(headerBarContext)\n","import { MenuItem } from '@dhis2-ui/menu'\nimport { useConfig } from '@dhis2/app-runtime'\nimport { colors } from '@dhis2/ui-constants'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { useHeaderBarContext } from '../header-bar-context'\nimport i18n from '@dhis2/d2-i18n'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nexport function UpdateNotification(params: any) {\n const { hideProfileMenu } =params;\n const { appName } = useConfig()\n const { updateAvailable, onApplyAvailableUpdate } = useHeaderBarContext()\n const onClick = () => {\n hideProfileMenu()\n onApplyAvailableUpdate?.()\n }\n\n const updateNotificationLabel = (\n <div className=\"root\">\n <div className=\"badge\" />\n <div className=\"spacer\" />\n <div className=\"message\">\n {appName\n ? i18n.t('New {{appName}} version available', { appName })\n : i18n.t('New app version available')}\n <br />\n {i18n.t('Click to reload')}\n </div>\n <style jsx>{`\n .root {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 14px;\n line-height: 17px;\n }\n .badge {\n display: inline-block;\n width: 12px;\n height: 12px;\n margin: 0 8px;\n border-radius: 6px;\n background-color: ${colors.blue600};\n }\n .spacer {\n display: inline-block;\n width: 8px;\n }\n .message {\n display: inline-block;\n }\n `}</style>\n </div>\n )\n\n return updateAvailable ? (\n <MenuItem\n dense\n onClick={onClick}\n label={updateNotificationLabel}\n dataTest=\"dhis2-ui-headerbar-updatenotification\"\n />\n ) : null\n}\n\nUpdateNotification.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n}\n","import { Card } from '@dhis2-ui/card'\nimport { Center } from '@dhis2-ui/center'\nimport { Divider } from '@dhis2-ui/divider'\nimport { Layer } from '@dhis2-ui/layer'\nimport { CircularLoader } from '@dhis2-ui/loader'\nimport { MenuDivider, MenuItem } from '@dhis2-ui/menu'\nimport { clearSensitiveCaches, useConfig } from '@dhis2/app-runtime'\nimport { colors } from '@dhis2/ui-constants'\nimport {\n IconSettings24,\n IconInfo24,\n IconLogOut24,\n IconUser24,\n IconQuestion24,\n} from '@dhis2/ui-icons'\nimport PropTypes from 'prop-types'\nimport React, { useState } from 'react'\nimport { DebugInfoMenuItem } from '../debug-info/debug-info-menu-item'\nimport { joinPath } from '../join-path'\nimport i18n from '@dhis2/d2-i18n';\nimport { ProfileHeader } from './profile-header'\nimport { UpdateNotification } from './update-notification'\n\nconst LoadingMask = () => (\n <Layer\n translucent\n disablePortal\n dataTest=\"headerbar-profile-menu-loading-mask\"\n >\n <Center>\n <CircularLoader />\n </Center>\n </Layer>\n)\n\nconst ProfileContents = (params: any) => {\n const {\n name,\n email,\n avatarId,\n helpUrl,\n hideProfileMenu,\n showDebugInfoModal,\n } = params;\n const { baseUrl } = useConfig()\n const [loading, setLoading] = useState(false)\n\n return (\n <Card>\n <div className=\"headerbar-profile-contents\">\n <ProfileHeader name={name} email={email} avatarId={avatarId} />\n <Divider margin=\"13px 0 7px 0\" />\n <ul data-test=\"headerbar-profile-menu\">\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/settings'\n )}\n label={i18n.t('Settings')}\n value=\"settings\"\n icon={<IconSettings24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/account'\n )}\n label={i18n.t('Account')}\n value=\"account\"\n icon={<IconUser24 color={colors.grey700} />}\n />\n {helpUrl && (\n <MenuItem\n href={helpUrl}\n label={i18n.t('Help')}\n value=\"help\"\n icon={<IconQuestion24 color={colors.grey700} />}\n />\n )}\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-user-profile/#/aboutPage'\n )}\n label={i18n.t('About DHIS2')}\n value=\"about\"\n icon={<IconInfo24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(\n baseUrl,\n 'dhis-web-commons-security/logout.action'\n )}\n // NB: By MenuItem implementation, this callback\n // overwrites default navigation behavior but maintains\n // the href attribute\n onClick={async () => {\n setLoading(true)\n await clearSensitiveCaches()\n setLoading(false)\n window.location.assign(\n joinPath(\n baseUrl,\n 'dhis-web-commons-security/logout.action'\n )\n )\n }}\n label={i18n.t('Logout')}\n value=\"logout\"\n icon={<IconLogOut24 color={colors.grey700} />}\n />\n <MenuDivider dense />\n <DebugInfoMenuItem\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={showDebugInfoModal}\n />\n <UpdateNotification hideProfileMenu={hideProfileMenu} />\n </ul>\n </div>\n\n {loading && <LoadingMask />}\n\n <style jsx>{`\n .headerbar-profile-contents {\n width: 100%;\n padding: 0;\n }\n\n .headerbar-profile-contents ul {\n padding: 0;\n margin: 0;\n }\n\n .headerbar-profile-contents a {\n display: inline-flex !important;\n }\n\n .headerbar-profile-contents a,\n .headerbar-profile-contents a:hover,\n .headerbar-profile-contents a:focus,\n .headerbar-profile-contents a:active,\n .headerbar-profile-contents a:visited {\n text-decoration: none;\n display: block;\n }\n `}</style>\n </Card>\n )\n}\n\nProfileContents.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n}\n\nexport const ProfileMenu = (params: any) => {\n const { ...props }=params;\n return (\n <div className=\"headerbar-profile-menu\" data-test=\"headerbar-profile-menu\">\n <ProfileContents {...props} />\n <style jsx>{`\n .headerbar-profile-menu {\n z-index: 10000;\n position: absolute;\n right: 4px;\n width: 320px;\n }\n `}</style>\n </div>\n )\n}\n\nProfileMenu.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n}\n","import { useEffect, useMemo } from 'react'\n\nexport const useOnDocClick = (containerRef: any, hide: any) => {\n const onDocClick = useMemo(() => {\n return (evt: any) => {\n if (!containerRef.current) {\n return null\n }\n\n if (!containerRef.current.contains(evt.target)) {\n hide()\n }\n\n return null;\n }\n }, [containerRef, hide])\n\n useEffect(() => {\n document.addEventListener('click', onDocClick)\n\n return () => {\n document.removeEventListener('click', onDocClick)\n }\n }, [onDocClick])\n}\n","import { UserAvatar } from '@dhis2-ui/user-avatar'\nimport PropTypes from 'prop-types'\nimport React, { useCallback, useRef, useState } from 'react'\nimport { DebugInfoModal } from './debug-info/debug-info-modal'\nimport { ProfileMenu } from './profile-menu'\nimport { useOnDocClick } from './profile/use-on-doc-click'\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n }\n\nconst Profile = (params: any) => {\n const { name, email, avatarId, helpUrl } = params;\n const [showProfileMenu, setShowProfileMenu] = useState(false)\n const [showDebugInfoModal, setShowDebugInfoModal] = useState(false)\n const hideProfileMenu = useCallback(\n () => setShowProfileMenu(false),\n [setShowProfileMenu]\n )\n const toggleProfileMenu = useCallback(\n () => setShowProfileMenu((show) => !show),\n [setShowProfileMenu]\n ) as any\n const containerRef = useRef(null)\n\n useOnDocClick(containerRef, hideProfileMenu)\n\n return (\n <div\n ref={containerRef}\n data-test=\"headerbar-profile\"\n className=\"headerbar-profile\"\n >\n <button\n className=\"headerbar-profile-btn\"\n onClick={toggleProfileMenu}\n >\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-icon\"\n medium\n />\n </button>\n\n {showProfileMenu && (\n <ProfileMenu\n avatarId={avatarId}\n name={name}\n email={email}\n helpUrl={helpUrl}\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={() => {\n setShowDebugInfoModal(true)\n }}\n />\n )}\n {showDebugInfoModal && (\n <DebugInfoModal\n onClose={() => {\n setShowDebugInfoModal(false)\n }}\n />\n )}\n\n <style jsx>{`\n .headerbar-profile {\n position: relative;\n height: 100%;\n }\n\n .headerbar-profile-btn {\n background: transparent;\n padding: 6px;\n border: 0;\n cursor: pointer;\n }\n .headerbar-profile-btn:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-profile-btn:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-profile-btn:hover {\n background: #1a557f;\n }\n .headerbar-profile-btn:active {\n background: #104067;\n }\n `}</style>\n </div>\n )\n}\n\nProfile.propTypes = {\n name: PropTypes.string.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n}\n\nexport default Profile\n","import PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const Title = (params: any) => {\n const { app, instance } = params;\n return (\n <div className=\"headerbar-title\" data-test=\"headerbar-title\">\n {app ? `${instance} - ${app}` : `${instance}`}\n\n <style jsx>{`\n .headerbar-title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.01em;\n white-space: nowrap;\n }\n `}</style>\n </div>\n );\n};\nTitle.propTypes = {\n app: PropTypes.string,\n instance: PropTypes.string,\n};\n","import i18n from '@dhis2/d2-i18n';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { HeaderBarData } from '../models';\nimport Apps from './apps';\nimport { Logo } from './logo';\nimport { Notifications } from './notifications';\nimport Profile from './profile';\nimport { Title } from './title';\n\ninterface HeaderBarProp {\n appName: string;\n data: HeaderBarData;\n className?: string;\n}\n\nexport const HeaderBar = ({ appName, data, className }: HeaderBarProp) => {\n const loading = false;\n const error = null;\n\n // See https://jira.dhis2.org/browse/LIBS-180\n if (!loading && !error) {\n // TODO: This will run every render which is probably wrong!\n // Also, setting the global locale shouldn't be done in the headerbar\n const locale = (data.user['settings'] as any)['keyUiLocale'] || 'en';\n i18n.setDefaultNamespace('default');\n i18n.changeLanguage(locale);\n }\n\n {\n /* TODO: Find better way to attach base URL */\n }\n const baseUrl = '../../../';\n\n return (\n <header className={className}>\n <div className=\"main\">\n {!loading && !error && (\n <>\n <Logo baseUrl={baseUrl} />\n\n <Title\n app={appName}\n instance={(data.title as any)['applicationTitle']}\n />\n\n <div className=\"right-control-spacer\" />\n\n {/*TODO: Find better approach to handle PWA */}\n {/* {'pwaEnabled' && <OnlineStatus />} */}\n\n <Notifications\n interpretations={data.notifications.unreadInterpretations}\n messages={data.notifications.unreadMessageConversations}\n userAuthorities={data.user['authorities'] as any}\n />\n <Apps apps={data.apps} baseUrl={baseUrl} />\n\n <Profile\n name={data.user['name'] as string}\n email={data.user['email'] as string}\n avatarId={((data.user['avatar'] || {}) as any)['id']}\n helpUrl={data.help.helpPageLink}\n />\n </>\n )}\n </div>\n\n {/* {'pwaEnabled' && !loading && !error && <OnlineStatus dense />} */}\n\n <style jsx>{`\n .main {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n background-color: #2c6693;\n color: ${colors.white};\n height: 48px;\n }\n .right-control-spacer {\n margin-left: auto;\n }\n `}</style>\n </header>\n );\n};\n\nHeaderBar.propTypes = {\n appName: PropTypes.string,\n data: HeaderBarData,\n className: PropTypes.string,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, firstValueFrom } from 'rxjs';\nimport { HeaderBarData } from './models';\nimport { ReactWrapperComponent } from '../../shared/components';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { HeaderBar } from './utils/header-bar';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container *ngIf=\"data$ | async as data\"> </ng-container>`,\n})\nexport class HeaderBarComponent extends ReactWrapperComponent {\n data$!: Observable<HeaderBarData | null>;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const manifest = await firstValueFrom(this.httpClient.manifest());\n const data = await firstValueFrom(new HeaderBarData(this.httpClient).get());\n\n this.component = data\n ? () => (\n <DataProvider>\n {<HeaderBar appName={manifest?.name} data={data} />}\n </DataProvider>\n )\n : () => <div>Something went wrong</div>;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { HeaderBarComponent } from './header-bar.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [HeaderBarComponent],\n exports: [HeaderBarComponent],\n})\nexport class HeaderBarModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar.module';\nexport * from './header-bar.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Button } from '@dhis2/ui';\nimport { ReactWrapperComponent } from '../../shared/components';\n\n@Component({\n selector: 'ng-dhis2-ui-button',\n template: '<ng-content></ng-content>',\n\n})\nexport class ButtonComponent extends ReactWrapperComponent {\n @Input() label!: string;\n @Input() primary?: boolean;\n @Input() secondary?: boolean;\n @Input() destructive?: boolean;\n @Input() disabled?: boolean;\n @Input() small?: boolean;\n @Input() large?: boolean;\n\n @Output() buttonClick: EventEmitter<any> = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onClick: (e: any) => {\n this.onButtonClick(e);\n },\n };\n\n override component = Button;\n\n\n ngOnInit() {\n this.props = {\n ...this.props,\n primary: this.primary,\n secondary: this.secondary,\n destructive: this.destructive,\n small: this.small,\n large: this.large,\n };\n }\n\n onButtonClick(event: any) {\n this.buttonClick.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent],\n exports: [ButtonComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n})\nexport class ButtonModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './button.module';\nexport * from './button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","Button"],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { ReactWrapperComponent } from '../../shared/components';
|
|
3
|
-
import AppAdapter from '@dhis2/app-adapter';
|
|
4
|
-
import { Layer, layers, CenteredContent, CircularLoader } from '@dhis2/ui';
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class AppShellComponent extends ReactWrapperComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.appConfig = {
|
|
11
|
-
// url: process.env.REACT_APP_DHIS2_BASE_URL,
|
|
12
|
-
// appName: process.env.REACT_APP_DHIS2_APP_NAME || '',
|
|
13
|
-
// appVersion: process.env.REACT_APP_DHIS2_APP_VERSION || '',
|
|
14
|
-
// apiVersion: parseInt(process.env.REACT_APP_DHIS2_API_VERSION),
|
|
15
|
-
// pwaEnabled: process.env.REACT_APP_DHIS2_APP_PWA_ENABLED === 'true',
|
|
16
|
-
// plugin: process.env.REACT_APP_DHIS2_APP_PLUGIN === 'true',
|
|
17
|
-
};
|
|
18
|
-
this.component = React.createElement(AppAdapter, { ...this.appConfig },
|
|
19
|
-
React.createElement(React.Suspense, { fallback: React.createElement(Layer, { level: layers.alert },
|
|
20
|
-
React.createElement(CenteredContent, null,
|
|
21
|
-
React.createElement(CircularLoader, null))) }));
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppShellComponent, selector: "ng-dhis2-ui-app-shell", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, decorators: [{
|
|
27
|
-
type: Component,
|
|
28
|
-
args: [{
|
|
29
|
-
selector: 'ng-dhis2-ui-app-shell',
|
|
30
|
-
template: '<ng-content></ng-content>',
|
|
31
|
-
}]
|
|
32
|
-
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLFVBQVUsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFNMUIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHFCQUFxQjtJQUo1RDs7UUFLRyxjQUFTLEdBQUc7UUFDWCw2Q0FBNkM7UUFDN0MsdURBQXVEO1FBQ3ZELDZEQUE2RDtRQUM3RCxpRUFBaUU7UUFDakUsc0VBQXNFO1FBQ3RFLDZEQUE2RDtTQUNoRSxDQUFBO1FBQ1UsY0FBUyxHQUFHLG9CQUFDLFVBQVUsT0FBSyxJQUFJLENBQUMsU0FBUztZQUNuRCxvQkFBQyxLQUFLLENBQUMsUUFBUSxJQUNYLFFBQVEsRUFDSixvQkFBQyxLQUFLLElBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUN0QixvQkFBQyxlQUFlO3dCQUNaLG9CQUFDLGNBQWMsT0FBRyxDQUNKLENBQ2QsR0FJQyxDQUNDLENBQUE7S0FDbkI7K0dBdEJZLGlCQUFpQjttR0FBakIsaUJBQWlCLG9GQUZsQiwyQkFBMkI7OzRGQUUxQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCBBcHBBZGFwdGVyIGZyb20gJ0BkaGlzMi9hcHAtYWRhcHRlcidcbmltcG9ydCB7IExheWVyLCBsYXllcnMsIENlbnRlcmVkQ29udGVudCwgQ2lyY3VsYXJMb2FkZXIgfSBmcm9tICdAZGhpczIvdWknXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1kaGlzMi11aS1hcHAtc2hlbGwnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBTaGVsbENvbXBvbmVudCBleHRlbmRzIFJlYWN0V3JhcHBlckNvbXBvbmVudCB7XG4gICBhcHBDb25maWcgPSB7XG4gICAgLy8gdXJsOiBwcm9jZXNzLmVudi5SRUFDVF9BUFBfREhJUzJfQkFTRV9VUkwsXG4gICAgLy8gYXBwTmFtZTogcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RISVMyX0FQUF9OQU1FIHx8ICcnLFxuICAgIC8vIGFwcFZlcnNpb246IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfVkVSU0lPTiB8fCAnJyxcbiAgICAvLyBhcGlWZXJzaW9uOiBwYXJzZUludChwcm9jZXNzLmVudi5SRUFDVF9BUFBfREhJUzJfQVBJX1ZFUlNJT04pLFxuICAgIC8vIHB3YUVuYWJsZWQ6IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfUFdBX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICAvLyBwbHVnaW46IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfUExVR0lOID09PSAndHJ1ZScsXG59XG4gIG92ZXJyaWRlIGNvbXBvbmVudCA9IDxBcHBBZGFwdGVyIHsuLi50aGlzLmFwcENvbmZpZ30+XG4gIDxSZWFjdC5TdXNwZW5zZVxuICAgICAgZmFsbGJhY2s9e1xuICAgICAgICAgIDxMYXllciBsZXZlbD17bGF5ZXJzLmFsZXJ0fT5cbiAgICAgICAgICAgICAgPENlbnRlcmVkQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxDaXJjdWxhckxvYWRlciAvPlxuICAgICAgICAgICAgICA8L0NlbnRlcmVkQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyPlxuICAgICAgfVxuICA+XG4gICAgICB7LyogPEQyQXBwIGNvbmZpZz17YXBwQ29uZmlnfSAvPiAqL31cbiAgPC9SZWFjdC5TdXNwZW5zZT5cbjwvQXBwQWRhcHRlcj4gYXMgYW55XG59XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { SharedDhis2UiModule } from '../../shared/shared.module';
|
|
4
|
-
import { AppShellComponent } from './app-shell.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class AppShellModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, declarations: [AppShellComponent], imports: [CommonModule, SharedDhis2UiModule], exports: [AppShellComponent] }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, imports: [CommonModule, SharedDhis2UiModule] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
declarations: [AppShellComponent],
|
|
15
|
-
imports: [CommonModule, SharedDhis2UiModule],
|
|
16
|
-
exports: [AppShellComponent],
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9hcHAtc2hlbGwvYXBwLXNoZWxsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPMUQsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQUpWLGlCQUFpQixhQUN0QixZQUFZLEVBQUUsbUJBQW1CLGFBQ2pDLGlCQUFpQjtnSEFFaEIsY0FBYyxZQUhmLFlBQVksRUFBRSxtQkFBbUI7OzRGQUdoQyxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkRGhpczJVaU1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEFwcFNoZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtc2hlbGwuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQXBwU2hlbGxDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWREaGlzMlVpTW9kdWxlXSxcbiAgZXhwb3J0czogW0FwcFNoZWxsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwU2hlbGxNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
-
// Use of this source code is governed by a BSD-style
|
|
3
|
-
// license that can be found in the LICENSE file.
|
|
4
|
-
export * from './app-shell.component';
|
|
5
|
-
export * from './app-shell.module';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvYXBwLXNoZWxsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDIzIFVEU00gREhJUzIgTGFiLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGVcbi8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS5cbmV4cG9ydCAqIGZyb20gJy4vYXBwLXNoZWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1zaGVsbC5tb2R1bGUnO1xuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ReactWrapperComponent } from '../../shared/components';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class AppShellComponent extends ReactWrapperComponent {
|
|
4
|
-
appConfig: {};
|
|
5
|
-
component: any;
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellComponent, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellComponent, "ng-dhis2-ui-app-shell", never, {}, {}, never, ["*"], false, never>;
|
|
8
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./app-shell.component.tsx";
|
|
3
|
-
import * as i2 from "@angular/common";
|
|
4
|
-
import * as i3 from "../../shared/shared.module";
|
|
5
|
-
export declare class AppShellModule {
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellModule, never>;
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AppShellModule, [typeof i1.AppShellComponent], [typeof i2.CommonModule, typeof i3.SharedDhis2UiModule], [typeof i1.AppShellComponent]>;
|
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<AppShellModule>;
|
|
9
|
-
}
|