@progressio_resources/gravity-design-system 1.0.6 → 1.0.8
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/esm2020/lib/components/gravity-button/gravity-button.component.mjs +22 -0
- package/esm2020/lib/components/gravity-calendar/gravity-calendar.component.mjs +90 -0
- package/esm2020/lib/components/gravity-checkbox/gravity-checkbox.component.mjs +23 -0
- package/esm2020/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.mjs +43 -0
- package/esm2020/lib/components/gravity-icon/gravity-icon.component.mjs +14 -0
- package/esm2020/lib/components/gravity-radio-button/gravity-radio-button.component.mjs +30 -0
- package/esm2020/lib/components/gravity-switch/gravity-switch.component.mjs +17 -0
- package/esm2020/lib/components/gravity-text-field/gravity-text-field.component.mjs +62 -0
- package/esm2020/lib/gravity-design-system.module.mjs +81 -6
- package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.component.mjs +205 -0
- package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +480 -0
- package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.module.mjs +41 -0
- package/esm2020/lib/vendor/gravity-tooltip/index.mjs +4 -0
- package/esm2020/lib/vendor/gravity-tooltip/options.interface.mjs +2 -0
- package/esm2020/lib/vendor/gravity-tooltip/options.mjs +38 -0
- package/esm2020/lib/vendor/gravity-tooltip/options.service.mjs +7 -0
- package/esm2020/public-api.mjs +12 -3
- package/fesm2015/progressio_resources-gravity-design-system.mjs +1100 -28
- package/fesm2015/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/fesm2020/progressio_resources-gravity-design-system.mjs +1098 -28
- package/fesm2020/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/lib/components/gravity-button/gravity-button.component.d.ts +18 -0
- package/lib/components/gravity-calendar/gravity-calendar.component.d.ts +40 -0
- package/lib/components/gravity-checkbox/gravity-checkbox.component.d.ts +8 -0
- package/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.d.ts +36 -0
- package/lib/components/gravity-icon/gravity-icon.component.d.ts +6 -0
- package/lib/components/gravity-radio-button/gravity-radio-button.component.d.ts +13 -0
- package/lib/components/gravity-switch/gravity-switch.component.d.ts +6 -0
- package/lib/components/gravity-text-field/gravity-text-field.component.d.ts +35 -0
- package/lib/gravity-design-system.module.d.ts +17 -2
- package/lib/vendor/gravity-tooltip/gravity-tooltip.component.d.ts +42 -0
- package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +112 -0
- package/lib/vendor/gravity-tooltip/gravity-tooltip.module.d.ts +12 -0
- package/lib/vendor/gravity-tooltip/index.d.ts +3 -0
- package/lib/vendor/gravity-tooltip/options.d.ts +24 -0
- package/lib/vendor/gravity-tooltip/options.interface.d.ts +40 -0
- package/lib/vendor/gravity-tooltip/options.service.d.ts +7 -0
- package/package.json +9 -2
- package/public-api.d.ts +9 -2
- package/src/lib/assets/icons/calendar.svg +14 -0
- package/src/lib/assets/icons/check.svg +3 -0
- package/src/lib/assets/icons/copy.svg +8 -0
- package/src/lib/assets/icons/download.svg +7 -0
- package/src/lib/assets/icons/edit.svg +8 -0
- package/src/lib/assets/icons/eye_closed.svg +8 -0
- package/src/lib/assets/icons/eye_open.svg +6 -0
- package/src/lib/assets/icons/forgot_password.svg +7 -0
- package/src/lib/assets/icons/lock.svg +6 -0
- package/src/lib/assets/icons/logout.svg +9 -0
- package/src/lib/assets/icons/mail.svg +6 -0
- package/src/lib/assets/icons/radio-off.svg +3 -0
- package/src/lib/assets/icons/radio-on.svg +3 -0
- package/src/lib/assets/icons/search.svg +8 -0
- package/src/lib/assets/icons/settings.svg +12 -0
- package/src/lib/assets/icons/show_less.svg +6 -0
- package/src/lib/assets/icons/show_more.svg +6 -0
- package/src/lib/assets/icons/uncheck.svg +3 -0
- package/src/lib/assets/icons/user.svg +6 -0
- package/src/lib/assets/icons/x.svg +6 -0
- package/src/lib/assets/json/icons.json +91 -0
- package/src/lib/styles/_card_highlight.scss +40 -0
- package/src/lib/styles/_datepicker.scss +101 -0
- package/src/lib/styles/_link.scss +25 -0
- package/src/lib/styles/_shared.scss +19 -0
- package/src/lib/styles/fundamentals/colors/themes/_hero.theme.scss +13 -10
- package/src/lib/styles/fundamentals/colors/tokens/_hero.tokens.scss +15 -13
- package/src/lib/styles/fundamentals/typography/_hero.typography.scss +0 -1
- package/src/lib/styles/gravity-design-system.scss +6 -0
- package/src/lib/styles/overwrite/pretty-checkbox/_core.scss +120 -0
- package/src/lib/styles/overwrite/pretty-checkbox/_variables.scss +39 -0
- package/src/lib/styles/overwrite/pretty-checkbox/elements/default/_outline.scss +41 -0
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_fill.scss +7 -0
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_general.scss +47 -0
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_mixin.scss +15 -0
- package/src/lib/styles/overwrite/pretty-checkbox/pretty-checkbox.scss +29 -0
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html +9 -0
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.sass +134 -0
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts +215 -0
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +506 -0
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.module.ts +33 -0
- package/src/lib/vendor/gravity-tooltip/index.ts +3 -0
- package/src/lib/vendor/gravity-tooltip/options.interface.ts +37 -0
- package/src/lib/vendor/gravity-tooltip/options.service.ts +8 -0
- package/src/lib/vendor/gravity-tooltip/options.ts +38 -0
- package/esm2020/lib/gravity-design-system.component.mjs +0 -19
- package/esm2020/lib/gravity-design-system.service.mjs +0 -11
- package/lib/gravity-design-system.component.d.ts +0 -5
- package/lib/gravity-design-system.service.d.ts +0 -5
|
@@ -1,20 +1,95 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
+
import { GravityButtonComponent } from './components/gravity-button/gravity-button.component';
|
|
5
|
+
import { GravityDropdownListComponent } from "./components/gravity-dropdown-list/gravity-dropdown-list.component";
|
|
6
|
+
import { GravityTextFieldComponent } from "./components/gravity-text-field/gravity-text-field.component";
|
|
7
|
+
import { NgSelectModule } from "@ng-select/ng-select";
|
|
8
|
+
import { GravityTooltipModule } from "./vendor/gravity-tooltip";
|
|
9
|
+
import { AngularSvgIconPreloaderModule } from "angular-svg-icon-preloader";
|
|
10
|
+
import { AngularSvgIconModule } from "angular-svg-icon";
|
|
11
|
+
import { GravityCalendarComponent } from "./components/gravity-calendar/gravity-calendar.component";
|
|
12
|
+
import { NgbDatepickerModule } from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
+
import { GravityRadioButtonComponent } from './components/gravity-radio-button/gravity-radio-button.component';
|
|
14
|
+
import { NgxPrettyCheckboxModule } from "ngx-pretty-checkbox";
|
|
15
|
+
import { GravitySwitchComponent } from './components/gravity-switch/gravity-switch.component';
|
|
16
|
+
import { GravityCheckboxComponent } from './components/gravity-checkbox/gravity-checkbox.component';
|
|
17
|
+
import { GravityIconComponent } from "./components/gravity-icon/gravity-icon.component";
|
|
3
18
|
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "angular-svg-icon";
|
|
20
|
+
import * as i2 from "angular-svg-icon-preloader";
|
|
21
|
+
import * as i3 from "./vendor/gravity-tooltip/gravity-tooltip.module";
|
|
4
22
|
export class GravityDesignSystemModule {
|
|
5
23
|
}
|
|
6
24
|
GravityDesignSystemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
-
GravityDesignSystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, declarations: [
|
|
8
|
-
|
|
25
|
+
GravityDesignSystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, declarations: [GravityButtonComponent,
|
|
26
|
+
GravityCalendarComponent,
|
|
27
|
+
GravityCheckboxComponent,
|
|
28
|
+
GravityDropdownListComponent,
|
|
29
|
+
GravityIconComponent,
|
|
30
|
+
GravityRadioButtonComponent,
|
|
31
|
+
GravitySwitchComponent,
|
|
32
|
+
GravityTextFieldComponent], imports: [i1.AngularSvgIconModule, i2.AngularSvgIconPreloaderModule, CommonModule,
|
|
33
|
+
FormsModule, i3.GravityTooltipModule, NgbDatepickerModule,
|
|
34
|
+
NgSelectModule,
|
|
35
|
+
NgxPrettyCheckboxModule,
|
|
36
|
+
ReactiveFormsModule], exports: [GravityButtonComponent,
|
|
37
|
+
GravityCalendarComponent,
|
|
38
|
+
GravityCheckboxComponent,
|
|
39
|
+
GravityDropdownListComponent,
|
|
40
|
+
GravityIconComponent,
|
|
41
|
+
GravityRadioButtonComponent,
|
|
42
|
+
GravitySwitchComponent,
|
|
43
|
+
GravityTextFieldComponent,
|
|
44
|
+
GravityTooltipModule] });
|
|
45
|
+
GravityDesignSystemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, imports: [AngularSvgIconModule.forRoot(),
|
|
46
|
+
AngularSvgIconPreloaderModule.forRoot({
|
|
47
|
+
configUrl: './assets/gravity/json/icons.json',
|
|
48
|
+
}),
|
|
49
|
+
CommonModule,
|
|
50
|
+
FormsModule,
|
|
51
|
+
GravityTooltipModule.forRoot({}),
|
|
52
|
+
NgbDatepickerModule,
|
|
53
|
+
NgSelectModule,
|
|
54
|
+
NgxPrettyCheckboxModule,
|
|
55
|
+
ReactiveFormsModule, GravityTooltipModule] });
|
|
9
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, decorators: [{
|
|
10
57
|
type: NgModule,
|
|
11
58
|
args: [{
|
|
12
59
|
declarations: [
|
|
13
|
-
|
|
60
|
+
GravityButtonComponent,
|
|
61
|
+
GravityCalendarComponent,
|
|
62
|
+
GravityCheckboxComponent,
|
|
63
|
+
GravityDropdownListComponent,
|
|
64
|
+
GravityIconComponent,
|
|
65
|
+
GravityRadioButtonComponent,
|
|
66
|
+
GravitySwitchComponent,
|
|
67
|
+
GravityTextFieldComponent
|
|
68
|
+
],
|
|
69
|
+
imports: [
|
|
70
|
+
AngularSvgIconModule.forRoot(),
|
|
71
|
+
AngularSvgIconPreloaderModule.forRoot({
|
|
72
|
+
configUrl: './assets/gravity/json/icons.json',
|
|
73
|
+
}),
|
|
74
|
+
CommonModule,
|
|
75
|
+
FormsModule,
|
|
76
|
+
GravityTooltipModule.forRoot({}),
|
|
77
|
+
NgbDatepickerModule,
|
|
78
|
+
NgSelectModule,
|
|
79
|
+
NgxPrettyCheckboxModule,
|
|
80
|
+
ReactiveFormsModule
|
|
14
81
|
],
|
|
15
82
|
exports: [
|
|
16
|
-
|
|
83
|
+
GravityButtonComponent,
|
|
84
|
+
GravityCalendarComponent,
|
|
85
|
+
GravityCheckboxComponent,
|
|
86
|
+
GravityDropdownListComponent,
|
|
87
|
+
GravityIconComponent,
|
|
88
|
+
GravityRadioButtonComponent,
|
|
89
|
+
GravitySwitchComponent,
|
|
90
|
+
GravityTextFieldComponent,
|
|
91
|
+
GravityTooltipModule
|
|
17
92
|
]
|
|
18
93
|
}]
|
|
19
94
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kZXNpZ24tc3lzdGVtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2dyYXZpdHktZGVzaWduLXN5c3RlbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQ2hILE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7QUFzQ3RGLE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7dUhBQXpCLHlCQUF5QixpQkFsQ2xDLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QixvQkFBb0I7UUFDcEIsMkJBQTJCO1FBQzNCLHNCQUFzQjtRQUN0Qix5QkFBeUIsd0VBT3pCLFlBQVk7UUFDWixXQUFXLDJCQUVYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLG1CQUFtQixhQUduQixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qiw0QkFBNEI7UUFDNUIsb0JBQW9CO1FBQ3BCLDJCQUEyQjtRQUMzQixzQkFBc0I7UUFDdEIseUJBQXlCO1FBQ3pCLG9CQUFvQjt1SEFHWCx5QkFBeUIsWUF4QmxDLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUM5Qiw2QkFBNkIsQ0FBQyxPQUFPLENBQUM7WUFDcEMsU0FBUyxFQUFFLGtDQUFrQztTQUM5QyxDQUFDO1FBQ0YsWUFBWTtRQUNaLFdBQVc7UUFDWCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2hDLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLG1CQUFtQixFQVduQixvQkFBb0I7MkZBR1gseUJBQXlCO2tCQXBDckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsNEJBQTRCO3dCQUM1QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0Qix5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7d0JBQzlCLDZCQUE2QixDQUFDLE9BQU8sQ0FBQzs0QkFDcEMsU0FBUyxFQUFFLGtDQUFrQzt5QkFDOUMsQ0FBQzt3QkFDRixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEMsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsNEJBQTRCO3dCQUM1QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7R3Jhdml0eUJ1dHRvbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktYnV0dG9uL2dyYXZpdHktYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jhdml0eVRleHRGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9ncmF2aXR5LXRleHQtZmllbGQvZ3Jhdml0eS10ZXh0LWZpZWxkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtOZ1NlbGVjdE1vZHVsZX0gZnJvbSBcIkBuZy1zZWxlY3Qvbmctc2VsZWN0XCI7XG5pbXBvcnQge0dyYXZpdHlUb29sdGlwTW9kdWxlfSBmcm9tIFwiLi92ZW5kb3IvZ3Jhdml0eS10b29sdGlwXCI7XG5pbXBvcnQge0FuZ3VsYXJTdmdJY29uUHJlbG9hZGVyTW9kdWxlfSBmcm9tIFwiYW5ndWxhci1zdmctaWNvbi1wcmVsb2FkZXJcIjtcbmltcG9ydCB7QW5ndWxhclN2Z0ljb25Nb2R1bGV9IGZyb20gXCJhbmd1bGFyLXN2Zy1pY29uXCI7XG5pbXBvcnQge0dyYXZpdHlDYWxlbmRhckNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyL2dyYXZpdHktY2FsZW5kYXIuY29tcG9uZW50XCI7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJNb2R1bGV9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuaW1wb3J0IHtHcmF2aXR5UmFkaW9CdXR0b25Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9ncmF2aXR5LXJhZGlvLWJ1dHRvbi9ncmF2aXR5LXJhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtOZ3hQcmV0dHlDaGVja2JveE1vZHVsZX0gZnJvbSBcIm5neC1wcmV0dHktY2hlY2tib3hcIjtcbmltcG9ydCB7R3Jhdml0eVN3aXRjaENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktc3dpdGNoL2dyYXZpdHktc3dpdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyYXZpdHlDaGVja2JveENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktY2hlY2tib3gvZ3Jhdml0eS1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHtHcmF2aXR5SWNvbkNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9ncmF2aXR5LWljb24vZ3Jhdml0eS1pY29uLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBHcmF2aXR5QnV0dG9uQ29tcG9uZW50LFxuICAgIEdyYXZpdHlDYWxlbmRhckNvbXBvbmVudCxcbiAgICBHcmF2aXR5Q2hlY2tib3hDb21wb25lbnQsXG4gICAgR3Jhdml0eURyb3Bkb3duTGlzdENvbXBvbmVudCxcbiAgICBHcmF2aXR5SWNvbkNvbXBvbmVudCxcbiAgICBHcmF2aXR5UmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgR3Jhdml0eVN3aXRjaENvbXBvbmVudCxcbiAgICBHcmF2aXR5VGV4dEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZS5mb3JSb290KCksXG4gICAgQW5ndWxhclN2Z0ljb25QcmVsb2FkZXJNb2R1bGUuZm9yUm9vdCh7XG4gICAgICBjb25maWdVcmw6ICcuL2Fzc2V0cy9ncmF2aXR5L2pzb24vaWNvbnMuanNvbicsXG4gICAgfSksXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEdyYXZpdHlUb29sdGlwTW9kdWxlLmZvclJvb3Qoe30pLFxuICAgIE5nYkRhdGVwaWNrZXJNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgTmd4UHJldHR5Q2hlY2tib3hNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgR3Jhdml0eUJ1dHRvbkNvbXBvbmVudCxcbiAgICBHcmF2aXR5Q2FsZW5kYXJDb21wb25lbnQsXG4gICAgR3Jhdml0eUNoZWNrYm94Q29tcG9uZW50LFxuICAgIEdyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnQsXG4gICAgR3Jhdml0eUljb25Db21wb25lbnQsXG4gICAgR3Jhdml0eVJhZGlvQnV0dG9uQ29tcG9uZW50LFxuICAgIEdyYXZpdHlTd2l0Y2hDb21wb25lbnQsXG4gICAgR3Jhdml0eVRleHRGaWVsZENvbXBvbmVudCxcbiAgICBHcmF2aXR5VG9vbHRpcE1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlEZXNpZ25TeXN0ZW1Nb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostBinding, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class GravityTooltipComponent {
|
|
5
|
+
transitionEnd() {
|
|
6
|
+
if (this.show) {
|
|
7
|
+
this.events.emit({
|
|
8
|
+
type: 'shown'
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
set show(value) {
|
|
13
|
+
if (value) {
|
|
14
|
+
this.setPosition();
|
|
15
|
+
}
|
|
16
|
+
this._show = this.hostClassShow = value;
|
|
17
|
+
}
|
|
18
|
+
get show() {
|
|
19
|
+
return this._show;
|
|
20
|
+
}
|
|
21
|
+
get placement() {
|
|
22
|
+
return this.data.options.placement;
|
|
23
|
+
}
|
|
24
|
+
get autoPlacement() {
|
|
25
|
+
return this.data.options.autoPlacement;
|
|
26
|
+
}
|
|
27
|
+
get element() {
|
|
28
|
+
return this.data.element;
|
|
29
|
+
}
|
|
30
|
+
get elementPosition() {
|
|
31
|
+
return this.data.elementPosition;
|
|
32
|
+
}
|
|
33
|
+
get options() {
|
|
34
|
+
return this.data.options;
|
|
35
|
+
}
|
|
36
|
+
get value() {
|
|
37
|
+
return this.data.value;
|
|
38
|
+
}
|
|
39
|
+
get tooltipOffset() {
|
|
40
|
+
return Number(this.data.options.offset);
|
|
41
|
+
}
|
|
42
|
+
get isThemeLight() {
|
|
43
|
+
return this.options['theme'] === 'light';
|
|
44
|
+
}
|
|
45
|
+
constructor(elementRef, renderer) {
|
|
46
|
+
this.elementRef = elementRef;
|
|
47
|
+
this.renderer = renderer;
|
|
48
|
+
this._show = false;
|
|
49
|
+
this.events = new EventEmitter();
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
this.setCustomClass();
|
|
53
|
+
this.setStyles();
|
|
54
|
+
}
|
|
55
|
+
setPosition() {
|
|
56
|
+
if (this.setHostStyle(this.placement)) {
|
|
57
|
+
this.setPlacementClass(this.placement);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
/* Is tooltip outside the visible area */
|
|
62
|
+
const placements = ['top', 'right', 'bottom', 'left'];
|
|
63
|
+
let isPlacementSet;
|
|
64
|
+
for (const placement of placements) {
|
|
65
|
+
if (this.setHostStyle(placement)) {
|
|
66
|
+
this.setPlacementClass(placement);
|
|
67
|
+
isPlacementSet = true;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/* Set original placement */
|
|
72
|
+
if (!isPlacementSet) {
|
|
73
|
+
this.setHostStyle(this.placement, true);
|
|
74
|
+
this.setPlacementClass(this.placement);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
setPlacementClass(placement) {
|
|
79
|
+
this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + placement);
|
|
80
|
+
}
|
|
81
|
+
setHostStyle(placement, disableAutoPlacement = false) {
|
|
82
|
+
const isSvg = this.element instanceof SVGElement;
|
|
83
|
+
const tooltip = this.elementRef.nativeElement;
|
|
84
|
+
const isCustomPosition = !this.elementPosition.right;
|
|
85
|
+
let elementHeight = isSvg ? this.element.getBoundingClientRect().height : this.element.offsetHeight;
|
|
86
|
+
let elementWidth = isSvg ? this.element.getBoundingClientRect().width : this.element.offsetWidth;
|
|
87
|
+
const tooltipHeight = tooltip.clientHeight;
|
|
88
|
+
const tooltipWidth = tooltip.clientWidth;
|
|
89
|
+
const scrollY = window.pageYOffset;
|
|
90
|
+
if (isCustomPosition) {
|
|
91
|
+
elementHeight = 0;
|
|
92
|
+
elementWidth = 0;
|
|
93
|
+
}
|
|
94
|
+
let topStyle;
|
|
95
|
+
let leftStyle;
|
|
96
|
+
if (placement === 'top') {
|
|
97
|
+
topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
|
|
98
|
+
}
|
|
99
|
+
if (placement === 'bottom') {
|
|
100
|
+
topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
|
|
101
|
+
}
|
|
102
|
+
if (placement === 'top' || placement === 'bottom') {
|
|
103
|
+
leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
|
|
104
|
+
}
|
|
105
|
+
if (placement === 'left') {
|
|
106
|
+
leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
|
|
107
|
+
}
|
|
108
|
+
if (placement === 'right') {
|
|
109
|
+
leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
|
|
110
|
+
}
|
|
111
|
+
if (placement === 'left' || placement === 'right') {
|
|
112
|
+
topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltip.clientHeight / 2;
|
|
113
|
+
}
|
|
114
|
+
/* Is tooltip outside the visible area */
|
|
115
|
+
if (this.autoPlacement && !disableAutoPlacement) {
|
|
116
|
+
const topEdge = topStyle;
|
|
117
|
+
const bottomEdge = topStyle + tooltipHeight;
|
|
118
|
+
const leftEdge = leftStyle;
|
|
119
|
+
const rightEdge = leftStyle + tooltipWidth;
|
|
120
|
+
const bodyHeight = window.innerHeight + scrollY;
|
|
121
|
+
const bodyWidth = document.body.clientWidth;
|
|
122
|
+
if (topEdge < 0 || bottomEdge > bodyHeight || leftEdge < 0 || rightEdge > bodyWidth) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
this.hostStyleTop = topStyle + 'px';
|
|
127
|
+
this.hostStyleLeft = leftStyle + 'px';
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
setZIndex() {
|
|
131
|
+
if (this.options['zIndex'] !== 0) {
|
|
132
|
+
this.hostStyleZIndex = this.options['zIndex'];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
setPointerEvents() {
|
|
136
|
+
if (this.options['pointerEvents']) {
|
|
137
|
+
this.hostStylePointerEvents = this.options['pointerEvents'];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
setCustomClass() {
|
|
141
|
+
if (this.options['tooltipClass']) {
|
|
142
|
+
this.options['tooltipClass'].split(' ').forEach((className) => {
|
|
143
|
+
this.renderer.addClass(this.elementRef.nativeElement, className);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
setAnimationDuration() {
|
|
148
|
+
if (Number(this.options['animationDuration']) != this.options['animationDurationDefault']) {
|
|
149
|
+
this.hostStyleTransition = 'opacity ' + this.options['animationDuration'] + 'ms';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
setStyles() {
|
|
153
|
+
this.setZIndex();
|
|
154
|
+
this.setPointerEvents();
|
|
155
|
+
this.setAnimationDuration();
|
|
156
|
+
this.hostClassShadow = this.options['shadow'];
|
|
157
|
+
this.hostClassLight = this.isThemeLight;
|
|
158
|
+
this.hostStyleMaxWidth = this.options['maxWidth'];
|
|
159
|
+
this.hostStyleWidth = this.options['width'] ? this.options['width'] : '';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
GravityTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityTooltipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
+
GravityTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: GravityTooltipComponent, selector: "tooltip", inputs: { data: "data", show: "show" }, host: { listeners: { "transitionend": "transitionEnd($event)" }, properties: { "style.top": "this.hostStyleTop", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" }, classAttribute: "tooltip" }, ngImport: i0, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityTooltipComponent, decorators: [{
|
|
165
|
+
type: Component,
|
|
166
|
+
args: [{ selector: 'tooltip', host: { 'class': 'tooltip' }, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"] }]
|
|
167
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { data: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], hostStyleTop: [{
|
|
170
|
+
type: HostBinding,
|
|
171
|
+
args: ['style.top']
|
|
172
|
+
}], hostStyleLeft: [{
|
|
173
|
+
type: HostBinding,
|
|
174
|
+
args: ['style.left']
|
|
175
|
+
}], hostStyleZIndex: [{
|
|
176
|
+
type: HostBinding,
|
|
177
|
+
args: ['style.z-index']
|
|
178
|
+
}], hostStyleTransition: [{
|
|
179
|
+
type: HostBinding,
|
|
180
|
+
args: ['style.transition']
|
|
181
|
+
}], hostStyleWidth: [{
|
|
182
|
+
type: HostBinding,
|
|
183
|
+
args: ['style.width']
|
|
184
|
+
}], hostStyleMaxWidth: [{
|
|
185
|
+
type: HostBinding,
|
|
186
|
+
args: ['style.max-width']
|
|
187
|
+
}], hostStylePointerEvents: [{
|
|
188
|
+
type: HostBinding,
|
|
189
|
+
args: ['style.pointer-events']
|
|
190
|
+
}], hostClassShow: [{
|
|
191
|
+
type: HostBinding,
|
|
192
|
+
args: ['class.tooltip-show']
|
|
193
|
+
}], hostClassShadow: [{
|
|
194
|
+
type: HostBinding,
|
|
195
|
+
args: ['class.tooltip-shadow']
|
|
196
|
+
}], hostClassLight: [{
|
|
197
|
+
type: HostBinding,
|
|
198
|
+
args: ['class.tooltip-light']
|
|
199
|
+
}], transitionEnd: [{
|
|
200
|
+
type: HostListener,
|
|
201
|
+
args: ['transitionend', ['$event']]
|
|
202
|
+
}], show: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}] } });
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZILE1BQU0sT0FBTyx1QkFBdUI7SUFrQmxDLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEs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LFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7O29IQTVNVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix3bkJDVHBDLGtUQVNBOzJGREFhLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxTQUFTLFFBRWIsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDO3lIQVFqQixJQUFJO3NCQUFaLEtBQUs7Z0JBRW9CLFlBQVk7c0JBQXJDLFdBQVc7dUJBQUMsV0FBVztnQkFDRyxhQUFhO3NCQUF2QyxXQUFXO3VCQUFDLFlBQVk7Z0JBQ0ssZUFBZTtzQkFBNUMsV0FBVzt1QkFBQyxlQUFlO2dCQUNLLG1CQUFtQjtzQkFBbkQsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ0gsY0FBYztzQkFBekMsV0FBVzt1QkFBQyxhQUFhO2dCQUNNLGlCQUFpQjtzQkFBaEQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ08sc0JBQXNCO3NCQUExRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDQSxhQUFhO3NCQUEvQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDSSxlQUFlO3NCQUFuRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDQyxjQUFjO3NCQUFqRCxXQUFXO3VCQUFDLHFCQUFxQjtnQkFHbEMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTNUIsSUFBSTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeydjbGFzcyc6ICd0b29sdGlwJ30sXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktdG9vbHRpcC5jb21wb25lbnQuc2FzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgR3Jhdml0eVRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBfc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgZGF0YTogYW55O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUudG9wJykgaG9zdFN0eWxlVG9wITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQnKSBob3N0U3R5bGVMZWZ0ITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKSBob3N0U3R5bGVaSW5kZXghOiBudW1iZXI7XG4gIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpIGhvc3RTdHlsZVRyYW5zaXRpb24hOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBob3N0U3R5bGVXaWR0aCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBob3N0U3R5bGVNYXhXaWR0aCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpIGhvc3RTdHlsZVBvaW50ZXJFdmVudHMhOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudG9vbHRpcC1zaG93JykgaG9zdENsYXNzU2hvdyE6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MudG9vbHRpcC1zaGFkb3cnKSBob3N0Q2xhc3NTaGFkb3chOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtbGlnaHQnKSBob3N0Q2xhc3NMaWdodCE6IGJvb2xlYW47XG5cbiAgQEhvc3RMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIFsnJGV2ZW50J10pXG4gIHRyYW5zaXRpb25FbmQoKSB7XG4gICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgdGhpcy5ldmVudHMuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdzaG93bidcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzaG93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX3Nob3cgPSB0aGlzLmhvc3RDbGFzc1Nob3cgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93O1xuICB9XG5cbiAgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMucGxhY2VtZW50O1xuICB9XG5cbiAgZ2V0IGF1dG9QbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmF1dG9QbGFjZW1lbnQ7XG4gIH1cblxuICBnZXQgZWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmVsZW1lbnQ7XG4gIH1cblxuICBnZXQgZWxlbWVudFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZWxlbWVudFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudmFsdWU7XG4gIH1cblxuICBnZXQgdG9vbHRpcE9mZnNldCgpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5kYXRhLm9wdGlvbnMub2Zmc2V0KTtcbiAgfVxuXG4gIGdldCBpc1RoZW1lTGlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1sndGhlbWUnXSA9PT0gJ2xpZ2h0JztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEN1c3RvbUNsYXNzKCk7XG4gICAgdGhpcy5zZXRTdHlsZXMoKTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNldEhvc3RTdHlsZSh0aGlzLnBsYWNlbWVudCkpIHtcbiAgICAgIHRoaXMuc2V0UGxhY2VtZW50Q2xhc3ModGhpcy5wbGFjZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBJcyB0b29sdGlwIG91dHNpZGUgdGhlIHZpc2libGUgYXJlYSAqL1xuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG4gICAgICBsZXQgaXNQbGFjZW1lbnRTZXQ7XG5cbiAgICAgIGZvciAoY29uc3QgcGxhY2VtZW50IG9mIHBsYWNlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0SG9zdFN0eWxlKHBsYWNlbWVudCkpIHtcbiAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudCk7XG4gICAgICAgICAgaXNQbGFjZW1lbnRTZXQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBTZXQgb3JpZ2luYWwgcGxhY2VtZW50ICovXG4gICAgICBpZiAoIWlzUGxhY2VtZW50U2V0KSB7XG4gICAgICAgIHRoaXMuc2V0SG9zdFN0eWxlKHRoaXMucGxhY2VtZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRQbGFjZW1lbnRDbGFzcyh0aGlzLnBsYWNlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBzZXRQbGFjZW1lbnRDbGFzcyhwbGFjZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b29sdGlwLScgKyBwbGFjZW1lbnQpO1xuICB9XG5cbiAgc2V0SG9zdFN0eWxlKHBsYWNlbWVudDogc3RyaW5nLCBkaXNhYmxlQXV0b1BsYWNlbWVudDogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNTdmcgPSB0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpc0N1c3RvbVBvc2l0aW9uID0gIXRoaXMuZWxlbWVudFBvc2l0aW9uLnJpZ2h0O1xuXG4gICAgbGV0IGVsZW1lbnRIZWlnaHQgPSBpc1N2ZyA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGxldCBlbGVtZW50V2lkdGggPSBpc1N2ZyA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA6IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCB0b29sdGlwSGVpZ2h0ID0gdG9vbHRpcC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgdG9vbHRpcFdpZHRoID0gdG9vbHRpcC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgaWYgKGlzQ3VzdG9tUG9zaXRpb24pIHtcbiAgICAgIGVsZW1lbnRIZWlnaHQgPSAwO1xuICAgICAgZWxlbWVudFdpZHRoID0gMDtcbiAgICB9XG5cbiAgICBsZXQgdG9wU3R5bGU7XG4gICAgbGV0IGxlZnRTdHlsZTtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZKSAtICh0b29sdGlwSGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0KTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AnIHx8IHBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIGxlZnRTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoIC8gMikgLSB0b29sdGlwV2lkdGggLyAyO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCAtIHRvb2x0aXBXaWR0aCAtIHRoaXMudG9vbHRpcE9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSAncmlnaHQnKSB7XG4gICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0JyB8fCBwbGFjZW1lbnQgPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkpICsgZWxlbWVudEhlaWdodCAvIDIgLSB0b29sdGlwLmNsaWVudEhlaWdodCAvIDI7XG4gICAgfVxuXG4gICAgLyogSXMgdG9vbHRpcCBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgKi9cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50ICYmICFkaXNhYmxlQXV0b1BsYWNlbWVudCkge1xuICAgICAgY29uc3QgdG9wRWRnZSA9IHRvcFN0eWxlO1xuICAgICAgY29uc3QgYm90dG9tRWRnZSA9IHRvcFN0eWxlICsgdG9vbHRpcEhlaWdodDtcbiAgICAgIGNvbnN0IGxlZnRFZGdlID0gbGVmdFN0eWxlO1xuICAgICAgY29uc3QgcmlnaHRFZGdlID0gbGVmdFN0eWxlICsgdG9vbHRpcFdpZHRoO1xuICAgICAgY29uc3QgYm9keUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCArIHNjcm9sbFk7XG4gICAgICBjb25zdCBib2R5V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAodG9wRWRnZSA8IDAgfHwgYm90dG9tRWRnZSA+IGJvZHlIZWlnaHQgfHwgbGVmdEVkZ2UgPCAwIHx8IHJpZ2h0RWRnZSA+IGJvZHlXaWR0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ob3N0U3R5bGVUb3AgPSB0b3BTdHlsZSArICdweCc7XG4gICAgdGhpcy5ob3N0U3R5bGVMZWZ0ID0gbGVmdFN0eWxlICsgJ3B4JztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNldFpJbmRleCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd6SW5kZXgnXSAhPT0gMCkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVaSW5kZXggPSB0aGlzLm9wdGlvbnNbJ3pJbmRleCddO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvaW50ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uc1sncG9pbnRlckV2ZW50cyddKSB7XG4gICAgICB0aGlzLmhvc3RTdHlsZVBvaW50ZXJFdmVudHMgPSB0aGlzLm9wdGlvbnNbJ3BvaW50ZXJFdmVudHMnXTtcbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21DbGFzcygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXSkge1xuICAgICAgdGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXS5zcGxpdCgnICcpLmZvckVhY2goKGNsYXNzTmFtZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICBpZiAoTnVtYmVyKHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSkgIT0gdGhpcy5vcHRpb25zWydhbmltYXRpb25EdXJhdGlvbkRlZmF1bHQnXSkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVUcmFuc2l0aW9uID0gJ29wYWNpdHkgJyArIHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSArICdtcyc7XG4gICAgfVxuICB9XG5cbiAgc2V0U3R5bGVzKCkge1xuICAgIHRoaXMuc2V0WkluZGV4KCk7XG4gICAgdGhpcy5zZXRQb2ludGVyRXZlbnRzKCk7XG4gICAgdGhpcy5zZXRBbmltYXRpb25EdXJhdGlvbigpO1xuXG4gICAgdGhpcy5ob3N0Q2xhc3NTaGFkb3cgPSB0aGlzLm9wdGlvbnNbJ3NoYWRvdyddO1xuICAgIHRoaXMuaG9zdENsYXNzTGlnaHQgPSB0aGlzLmlzVGhlbWVMaWdodDtcbiAgICB0aGlzLmhvc3RTdHlsZU1heFdpZHRoID0gdGhpcy5vcHRpb25zWydtYXhXaWR0aCddO1xuICAgIHRoaXMuaG9zdFN0eWxlV2lkdGggPSB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gPyB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gOiAnJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImlzVGhlbWVMaWdodFwiIGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwib3B0aW9uc1snY29udGVudFR5cGUnXSA9PT0gJ3RlbXBsYXRlJyBlbHNlIGh0bWxPclN0cmluZ1RlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaHRtbE9yU3RyaW5nVGVtcGxhdGU+XG4gIDxkaXYgW2lubmVySFRNTF09XCJ2YWx1ZVwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|