@progressio_resources/gravity-design-system 1.0.6 → 1.0.7

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.
Files changed (87) hide show
  1. package/esm2020/lib/components/gravity-button/gravity-button.component.mjs +22 -0
  2. package/esm2020/lib/components/gravity-calendar/gravity-calendar.component.mjs +90 -0
  3. package/esm2020/lib/components/gravity-checkbox/gravity-checkbox.component.mjs +23 -0
  4. package/esm2020/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.mjs +43 -0
  5. package/esm2020/lib/components/gravity-radio-button/gravity-radio-button.component.mjs +30 -0
  6. package/esm2020/lib/components/gravity-switch/gravity-switch.component.mjs +17 -0
  7. package/esm2020/lib/components/gravity-text-field/gravity-text-field.component.mjs +62 -0
  8. package/esm2020/lib/gravity-design-system.module.mjs +76 -6
  9. package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.component.mjs +205 -0
  10. package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +480 -0
  11. package/esm2020/lib/vendor/gravity-tooltip/gravity-tooltip.module.mjs +41 -0
  12. package/esm2020/lib/vendor/gravity-tooltip/index.mjs +4 -0
  13. package/esm2020/lib/vendor/gravity-tooltip/options.interface.mjs +2 -0
  14. package/esm2020/lib/vendor/gravity-tooltip/options.mjs +38 -0
  15. package/esm2020/lib/vendor/gravity-tooltip/options.service.mjs +7 -0
  16. package/esm2020/public-api.mjs +11 -3
  17. package/fesm2015/progressio_resources-gravity-design-system.mjs +1085 -28
  18. package/fesm2015/progressio_resources-gravity-design-system.mjs.map +1 -1
  19. package/fesm2020/progressio_resources-gravity-design-system.mjs +1083 -28
  20. package/fesm2020/progressio_resources-gravity-design-system.mjs.map +1 -1
  21. package/lib/components/gravity-button/gravity-button.component.d.ts +17 -0
  22. package/lib/components/gravity-calendar/gravity-calendar.component.d.ts +40 -0
  23. package/lib/components/gravity-checkbox/gravity-checkbox.component.d.ts +8 -0
  24. package/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.d.ts +36 -0
  25. package/lib/components/gravity-radio-button/gravity-radio-button.component.d.ts +13 -0
  26. package/lib/components/gravity-switch/gravity-switch.component.d.ts +6 -0
  27. package/lib/components/gravity-text-field/gravity-text-field.component.d.ts +35 -0
  28. package/lib/gravity-design-system.module.d.ts +16 -2
  29. package/lib/vendor/gravity-tooltip/gravity-tooltip.component.d.ts +42 -0
  30. package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +112 -0
  31. package/lib/vendor/gravity-tooltip/gravity-tooltip.module.d.ts +12 -0
  32. package/lib/vendor/gravity-tooltip/index.d.ts +3 -0
  33. package/lib/vendor/gravity-tooltip/options.d.ts +24 -0
  34. package/lib/vendor/gravity-tooltip/options.interface.d.ts +40 -0
  35. package/lib/vendor/gravity-tooltip/options.service.d.ts +7 -0
  36. package/package.json +9 -2
  37. package/public-api.d.ts +8 -2
  38. package/src/lib/assets/icons/calendar.svg +14 -0
  39. package/src/lib/assets/icons/check.svg +3 -0
  40. package/src/lib/assets/icons/copy.svg +8 -0
  41. package/src/lib/assets/icons/download.svg +7 -0
  42. package/src/lib/assets/icons/edit.svg +8 -0
  43. package/src/lib/assets/icons/eye_closed.svg +8 -0
  44. package/src/lib/assets/icons/eye_open.svg +6 -0
  45. package/src/lib/assets/icons/forgot_password.svg +7 -0
  46. package/src/lib/assets/icons/lock.svg +6 -0
  47. package/src/lib/assets/icons/logout.svg +9 -0
  48. package/src/lib/assets/icons/mail.svg +6 -0
  49. package/src/lib/assets/icons/radio-off.svg +3 -0
  50. package/src/lib/assets/icons/radio-on.svg +3 -0
  51. package/src/lib/assets/icons/search.svg +8 -0
  52. package/src/lib/assets/icons/settings.svg +12 -0
  53. package/src/lib/assets/icons/show_less.svg +6 -0
  54. package/src/lib/assets/icons/show_more.svg +6 -0
  55. package/src/lib/assets/icons/uncheck.svg +3 -0
  56. package/src/lib/assets/icons/user.svg +6 -0
  57. package/src/lib/assets/icons/x.svg +6 -0
  58. package/src/lib/assets/json/icons.json +91 -0
  59. package/src/lib/styles/_card_highlight.scss +40 -0
  60. package/src/lib/styles/_datepicker.scss +101 -0
  61. package/src/lib/styles/_icons.scss +11 -0
  62. package/src/lib/styles/_link.scss +25 -0
  63. package/src/lib/styles/_shared.scss +19 -0
  64. package/src/lib/styles/fundamentals/colors/themes/_hero.theme.scss +13 -10
  65. package/src/lib/styles/fundamentals/colors/tokens/_hero.tokens.scss +15 -13
  66. package/src/lib/styles/fundamentals/typography/_hero.typography.scss +0 -1
  67. package/src/lib/styles/gravity-design-system.scss +7 -0
  68. package/src/lib/styles/overwrite/pretty-checkbox/_core.scss +120 -0
  69. package/src/lib/styles/overwrite/pretty-checkbox/_variables.scss +39 -0
  70. package/src/lib/styles/overwrite/pretty-checkbox/elements/default/_outline.scss +41 -0
  71. package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_fill.scss +7 -0
  72. package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_general.scss +47 -0
  73. package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_mixin.scss +15 -0
  74. package/src/lib/styles/overwrite/pretty-checkbox/pretty-checkbox.scss +29 -0
  75. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html +9 -0
  76. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.sass +134 -0
  77. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts +215 -0
  78. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +506 -0
  79. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.module.ts +33 -0
  80. package/src/lib/vendor/gravity-tooltip/index.ts +3 -0
  81. package/src/lib/vendor/gravity-tooltip/options.interface.ts +37 -0
  82. package/src/lib/vendor/gravity-tooltip/options.service.ts +8 -0
  83. package/src/lib/vendor/gravity-tooltip/options.ts +38 -0
  84. package/esm2020/lib/gravity-design-system.component.mjs +0 -19
  85. package/esm2020/lib/gravity-design-system.service.mjs +0 -11
  86. package/lib/gravity-design-system.component.d.ts +0 -5
  87. package/lib/gravity-design-system.service.d.ts +0 -5
@@ -1,20 +1,90 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { GravityDesignSystemComponent } from './gravity-design-system.component';
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';
3
17
  import * as i0 from "@angular/core";
18
+ import * as i1 from "angular-svg-icon";
19
+ import * as i2 from "angular-svg-icon-preloader";
20
+ import * as i3 from "./vendor/gravity-tooltip/gravity-tooltip.module";
4
21
  export class GravityDesignSystemModule {
5
22
  }
6
23
  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: [GravityDesignSystemComponent], exports: [GravityDesignSystemComponent] });
8
- GravityDesignSystemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule });
24
+ GravityDesignSystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, declarations: [GravityButtonComponent,
25
+ GravityCalendarComponent,
26
+ GravityCheckboxComponent,
27
+ GravityDropdownListComponent,
28
+ GravityRadioButtonComponent,
29
+ GravitySwitchComponent,
30
+ GravityTextFieldComponent], imports: [i1.AngularSvgIconModule, i2.AngularSvgIconPreloaderModule, CommonModule,
31
+ FormsModule, i3.GravityTooltipModule, NgbDatepickerModule,
32
+ NgSelectModule,
33
+ NgxPrettyCheckboxModule,
34
+ ReactiveFormsModule], exports: [GravityButtonComponent,
35
+ GravityCalendarComponent,
36
+ GravityCheckboxComponent,
37
+ GravityDropdownListComponent,
38
+ GravityRadioButtonComponent,
39
+ GravitySwitchComponent,
40
+ GravityTextFieldComponent,
41
+ GravityTooltipModule] });
42
+ GravityDesignSystemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, imports: [AngularSvgIconModule.forRoot(),
43
+ AngularSvgIconPreloaderModule.forRoot({
44
+ configUrl: './assets/gravity/json/icons.json',
45
+ }),
46
+ CommonModule,
47
+ FormsModule,
48
+ GravityTooltipModule.forRoot({}),
49
+ NgbDatepickerModule,
50
+ NgSelectModule,
51
+ NgxPrettyCheckboxModule,
52
+ ReactiveFormsModule, GravityTooltipModule] });
9
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GravityDesignSystemModule, decorators: [{
10
54
  type: NgModule,
11
55
  args: [{
12
56
  declarations: [
13
- GravityDesignSystemComponent
57
+ GravityButtonComponent,
58
+ GravityCalendarComponent,
59
+ GravityCheckboxComponent,
60
+ GravityDropdownListComponent,
61
+ GravityRadioButtonComponent,
62
+ GravitySwitchComponent,
63
+ GravityTextFieldComponent
64
+ ],
65
+ imports: [
66
+ AngularSvgIconModule.forRoot(),
67
+ AngularSvgIconPreloaderModule.forRoot({
68
+ configUrl: './assets/gravity/json/icons.json',
69
+ }),
70
+ CommonModule,
71
+ FormsModule,
72
+ GravityTooltipModule.forRoot({}),
73
+ NgbDatepickerModule,
74
+ NgSelectModule,
75
+ NgxPrettyCheckboxModule,
76
+ ReactiveFormsModule
14
77
  ],
15
78
  exports: [
16
- GravityDesignSystemComponent
79
+ GravityButtonComponent,
80
+ GravityCalendarComponent,
81
+ GravityCheckboxComponent,
82
+ GravityDropdownListComponent,
83
+ GravityRadioButtonComponent,
84
+ GravitySwitchComponent,
85
+ GravityTextFieldComponent,
86
+ GravityTooltipModule
17
87
  ]
18
88
  }]
19
89
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kZXNpZ24tc3lzdGVtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2dyYXZpdHktZGVzaWduLXN5c3RlbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFVL0UsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLGlCQU5sQyw0QkFBNEIsYUFHNUIsNEJBQTRCO3VIQUduQix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFSckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNEJBQTRCO3FCQUM3QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsNEJBQTRCO3FCQUM3QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtHcmF2aXR5RGVzaWduU3lzdGVtQ29tcG9uZW50fSBmcm9tICcuL2dyYXZpdHktZGVzaWduLXN5c3RlbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBHcmF2aXR5RGVzaWduU3lzdGVtQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBHcmF2aXR5RGVzaWduU3lzdGVtQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgR3Jhdml0eURlc2lnblN5c3RlbU1vZHVsZSB7XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kZXNpZ24tc3lzdGVtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2dyYXZpdHktZGVzaWduLXN5c3RlbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQ2hILE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7QUFvQ2xHLE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7dUhBQXpCLHlCQUF5QixpQkFoQ2xDLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLHlCQUF5Qix3RUFPekIsWUFBWTtRQUNaLFdBQVcsMkJBRVgsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsbUJBQW1CLGFBR25CLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLHlCQUF5QjtRQUN6QixvQkFBb0I7dUhBR1gseUJBQXlCLFlBdkJsQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7UUFDOUIsNkJBQTZCLENBQUMsT0FBTyxDQUFDO1lBQ3BDLFNBQVMsRUFBRSxrQ0FBa0M7U0FDOUMsQ0FBQztRQUNGLFlBQVk7UUFDWixXQUFXO1FBQ1gsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixtQkFBbUIsRUFVbkIsb0JBQW9COzJGQUdYLHlCQUF5QjtrQkFsQ3JDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDRCQUE0Qjt3QkFDNUIsMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQixDQUFDLE9BQU8sRUFBRTt3QkFDOUIsNkJBQTZCLENBQUMsT0FBTyxDQUFDOzRCQUNwQyxTQUFTLEVBQUUsa0NBQWtDO3lCQUM5QyxDQUFDO3dCQUNGLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4Qiw0QkFBNEI7d0JBQzVCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7R3Jhdml0eUJ1dHRvbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktYnV0dG9uL2dyYXZpdHktYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jhdml0eVRleHRGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9ncmF2aXR5LXRleHQtZmllbGQvZ3Jhdml0eS10ZXh0LWZpZWxkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtOZ1NlbGVjdE1vZHVsZX0gZnJvbSBcIkBuZy1zZWxlY3Qvbmctc2VsZWN0XCI7XG5pbXBvcnQge0dyYXZpdHlUb29sdGlwTW9kdWxlfSBmcm9tIFwiLi92ZW5kb3IvZ3Jhdml0eS10b29sdGlwXCI7XG5pbXBvcnQge0FuZ3VsYXJTdmdJY29uUHJlbG9hZGVyTW9kdWxlfSBmcm9tIFwiYW5ndWxhci1zdmctaWNvbi1wcmVsb2FkZXJcIjtcbmltcG9ydCB7QW5ndWxhclN2Z0ljb25Nb2R1bGV9IGZyb20gXCJhbmd1bGFyLXN2Zy1pY29uXCI7XG5pbXBvcnQge0dyYXZpdHlDYWxlbmRhckNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyL2dyYXZpdHktY2FsZW5kYXIuY29tcG9uZW50XCI7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJNb2R1bGV9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuaW1wb3J0IHtHcmF2aXR5UmFkaW9CdXR0b25Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9ncmF2aXR5LXJhZGlvLWJ1dHRvbi9ncmF2aXR5LXJhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtOZ3hQcmV0dHlDaGVja2JveE1vZHVsZX0gZnJvbSBcIm5neC1wcmV0dHktY2hlY2tib3hcIjtcbmltcG9ydCB7R3Jhdml0eVN3aXRjaENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktc3dpdGNoL2dyYXZpdHktc3dpdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyYXZpdHlDaGVja2JveENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2dyYXZpdHktY2hlY2tib3gvZ3Jhdml0eS1jaGVja2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBHcmF2aXR5QnV0dG9uQ29tcG9uZW50LFxuICAgIEdyYXZpdHlDYWxlbmRhckNvbXBvbmVudCxcbiAgICBHcmF2aXR5Q2hlY2tib3hDb21wb25lbnQsXG4gICAgR3Jhdml0eURyb3Bkb3duTGlzdENvbXBvbmVudCxcbiAgICBHcmF2aXR5UmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgR3Jhdml0eVN3aXRjaENvbXBvbmVudCxcbiAgICBHcmF2aXR5VGV4dEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZS5mb3JSb290KCksXG4gICAgQW5ndWxhclN2Z0ljb25QcmVsb2FkZXJNb2R1bGUuZm9yUm9vdCh7XG4gICAgICBjb25maWdVcmw6ICcuL2Fzc2V0cy9ncmF2aXR5L2pzb24vaWNvbnMuanNvbicsXG4gICAgfSksXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEdyYXZpdHlUb29sdGlwTW9kdWxlLmZvclJvb3Qoe30pLFxuICAgIE5nYkRhdGVwaWNrZXJNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgTmd4UHJldHR5Q2hlY2tib3hNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgR3Jhdml0eUJ1dHRvbkNvbXBvbmVudCxcbiAgICBHcmF2aXR5Q2FsZW5kYXJDb21wb25lbnQsXG4gICAgR3Jhdml0eUNoZWNrYm94Q29tcG9uZW50LFxuICAgIEdyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnQsXG4gICAgR3Jhdml0eVJhZGlvQnV0dG9uQ29tcG9uZW50LFxuICAgIEdyYXZpdHlTd2l0Y2hDb21wb25lbnQsXG4gICAgR3Jhdml0eVRleHRGaWVsZENvbXBvbmVudCxcbiAgICBHcmF2aXR5VG9vbHRpcE1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlEZXNpZ25TeXN0ZW1Nb2R1bGUge1xufVxuIl19
@@ -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==