@dangl/angular-material-shared 2.2.0 → 2.3.0-beta0037

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 (172) hide show
  1. package/{esm2015/dangl-angular-material-shared.js → esm2020/dangl-angular-material-shared.mjs} +0 -0
  2. package/esm2020/lib/angular-material-shared.module.mjs +38 -0
  3. package/esm2020/lib/components/footer/footer.component.mjs +33 -0
  4. package/esm2020/lib/components/header/header.component.mjs +80 -0
  5. package/esm2020/lib/components/tiny-mce/tiny-mce.component.mjs +104 -0
  6. package/{esm2015/lib/models/footer-options.js → esm2020/lib/models/footer-options.mjs} +0 -0
  7. package/{esm2015/lib/utils/guid-generator.js → esm2020/lib/utils/guid-generator.mjs} +0 -0
  8. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  9. package/fesm2015/dangl-angular-material-shared.mjs +292 -0
  10. package/fesm2015/dangl-angular-material-shared.mjs.map +1 -0
  11. package/fesm2020/dangl-angular-material-shared.mjs +290 -0
  12. package/fesm2020/dangl-angular-material-shared.mjs.map +1 -0
  13. package/{dangl-angular-material-shared.d.ts → index.d.ts} +1 -0
  14. package/lib/angular-material-shared.module.d.ts +12 -0
  15. package/lib/components/footer/footer.component.d.ts +3 -0
  16. package/lib/components/header/header.component.d.ts +3 -0
  17. package/lib/components/tiny-mce/tiny-mce.component.d.ts +3 -0
  18. package/package.json +28 -16
  19. package/styles/material-style.scss +1 -1
  20. package/styles/material-theme.scss +4 -3
  21. package/styles/material-variables.scss +9 -8
  22. package/tinymce-assets/icons/default/icons.js +11 -1
  23. package/tinymce-assets/icons/default/icons.min.js +1 -1
  24. package/tinymce-assets/langs/cs.js +118 -75
  25. package/tinymce-assets/langs/cy.js +61 -18
  26. package/tinymce-assets/langs/da.js +60 -17
  27. package/tinymce-assets/langs/de.js +60 -17
  28. package/tinymce-assets/langs/eo.js +334 -138
  29. package/tinymce-assets/langs/es_ES.js +32 -2
  30. package/tinymce-assets/langs/fa.js +60 -17
  31. package/tinymce-assets/langs/fa_IR.js +31 -1
  32. package/tinymce-assets/langs/fr_FR.js +60 -17
  33. package/tinymce-assets/langs/hu_HU.js +60 -17
  34. package/tinymce-assets/langs/ja.js +60 -17
  35. package/tinymce-assets/langs/ko_KR.js +3 -3
  36. package/tinymce-assets/langs/nb_NO.js +61 -18
  37. package/tinymce-assets/langs/nl.js +60 -17
  38. package/tinymce-assets/langs/pl.js +60 -17
  39. package/tinymce-assets/langs/pt_BR.js +60 -17
  40. package/tinymce-assets/langs/pt_PT.js +60 -17
  41. package/tinymce-assets/langs/ro.js +60 -17
  42. package/tinymce-assets/langs/ro_RO.js +32 -2
  43. package/tinymce-assets/langs/ru.js +60 -17
  44. package/tinymce-assets/langs/ru_RU.js +445 -0
  45. package/tinymce-assets/langs/sl.js +59 -14
  46. package/tinymce-assets/langs/ta.js +60 -17
  47. package/tinymce-assets/langs/ta_IN.js +60 -17
  48. package/tinymce-assets/langs/th_TH.js +60 -17
  49. package/tinymce-assets/langs/tr_TR.js +81 -8
  50. package/tinymce-assets/langs/vi.js +179 -21
  51. package/tinymce-assets/langs/zh_CN.js +60 -17
  52. package/tinymce-assets/plugins/advlist/plugin.js +29 -48
  53. package/tinymce-assets/plugins/advlist/plugin.min.js +2 -2
  54. package/tinymce-assets/plugins/anchor/plugin.js +8 -8
  55. package/tinymce-assets/plugins/anchor/plugin.min.js +2 -2
  56. package/tinymce-assets/plugins/autolink/plugin.js +58 -30
  57. package/tinymce-assets/plugins/autolink/plugin.min.js +2 -2
  58. package/tinymce-assets/plugins/autoresize/plugin.js +25 -12
  59. package/tinymce-assets/plugins/autoresize/plugin.min.js +2 -2
  60. package/tinymce-assets/plugins/autosave/plugin.js +9 -9
  61. package/tinymce-assets/plugins/autosave/plugin.min.js +2 -2
  62. package/tinymce-assets/plugins/bbcode/plugin.js +6 -6
  63. package/tinymce-assets/plugins/bbcode/plugin.min.js +2 -2
  64. package/tinymce-assets/plugins/charmap/plugin.js +39 -49
  65. package/tinymce-assets/plugins/charmap/plugin.min.js +2 -2
  66. package/tinymce-assets/plugins/code/plugin.js +9 -10
  67. package/tinymce-assets/plugins/code/plugin.min.js +2 -2
  68. package/tinymce-assets/plugins/codesample/plugin.js +1921 -1914
  69. package/tinymce-assets/plugins/codesample/plugin.min.js +2 -2
  70. package/tinymce-assets/plugins/colorpicker/plugin.js +1 -2
  71. package/tinymce-assets/plugins/colorpicker/plugin.min.js +2 -2
  72. package/tinymce-assets/plugins/contextmenu/plugin.js +1 -2
  73. package/tinymce-assets/plugins/contextmenu/plugin.min.js +2 -2
  74. package/tinymce-assets/plugins/directionality/plugin.js +186 -53
  75. package/tinymce-assets/plugins/directionality/plugin.min.js +2 -2
  76. package/tinymce-assets/plugins/emoticons/js/emojiimages.js +1572 -1572
  77. package/tinymce-assets/plugins/emoticons/js/emojiimages.min.js +1 -1
  78. package/tinymce-assets/plugins/emoticons/js/emojis.js +1572 -1572
  79. package/tinymce-assets/plugins/emoticons/js/emojis.min.js +1 -1
  80. package/tinymce-assets/plugins/emoticons/plugin.js +231 -200
  81. package/tinymce-assets/plugins/emoticons/plugin.min.js +2 -2
  82. package/tinymce-assets/plugins/fullpage/plugin.js +42 -42
  83. package/tinymce-assets/plugins/fullpage/plugin.min.js +2 -2
  84. package/tinymce-assets/plugins/fullscreen/plugin.js +496 -129
  85. package/tinymce-assets/plugins/fullscreen/plugin.min.js +2 -2
  86. package/tinymce-assets/plugins/help/plugin.js +101 -122
  87. package/tinymce-assets/plugins/help/plugin.min.js +2 -2
  88. package/tinymce-assets/plugins/hr/plugin.js +9 -10
  89. package/tinymce-assets/plugins/hr/plugin.min.js +2 -2
  90. package/tinymce-assets/plugins/image/plugin.js +78 -73
  91. package/tinymce-assets/plugins/image/plugin.min.js +2 -2
  92. package/tinymce-assets/plugins/imagetools/plugin.js +484 -307
  93. package/tinymce-assets/plugins/imagetools/plugin.min.js +2 -2
  94. package/tinymce-assets/plugins/importcss/plugin.js +50 -51
  95. package/tinymce-assets/plugins/importcss/plugin.min.js +2 -2
  96. package/tinymce-assets/plugins/insertdatetime/plugin.js +22 -17
  97. package/tinymce-assets/plugins/insertdatetime/plugin.min.js +2 -2
  98. package/tinymce-assets/plugins/legacyoutput/plugin.js +8 -8
  99. package/tinymce-assets/plugins/legacyoutput/plugin.min.js +2 -2
  100. package/tinymce-assets/plugins/link/plugin.js +131 -125
  101. package/tinymce-assets/plugins/link/plugin.min.js +2 -2
  102. package/tinymce-assets/plugins/lists/plugin.js +256 -229
  103. package/tinymce-assets/plugins/lists/plugin.min.js +2 -2
  104. package/tinymce-assets/plugins/media/plugin.js +124 -147
  105. package/tinymce-assets/plugins/media/plugin.min.js +2 -2
  106. package/tinymce-assets/plugins/nonbreaking/plugin.js +13 -14
  107. package/tinymce-assets/plugins/nonbreaking/plugin.min.js +2 -2
  108. package/tinymce-assets/plugins/noneditable/plugin.js +6 -6
  109. package/tinymce-assets/plugins/noneditable/plugin.min.js +2 -2
  110. package/tinymce-assets/plugins/pagebreak/plugin.js +16 -17
  111. package/tinymce-assets/plugins/pagebreak/plugin.min.js +2 -2
  112. package/tinymce-assets/plugins/paste/plugin.js +196 -157
  113. package/tinymce-assets/plugins/paste/plugin.min.js +2 -2
  114. package/tinymce-assets/plugins/preview/plugin.js +13 -14
  115. package/tinymce-assets/plugins/preview/plugin.min.js +2 -2
  116. package/tinymce-assets/plugins/print/plugin.js +13 -14
  117. package/tinymce-assets/plugins/print/plugin.min.js +2 -2
  118. package/tinymce-assets/plugins/quickbars/plugin.js +33 -48
  119. package/tinymce-assets/plugins/quickbars/plugin.min.js +2 -2
  120. package/tinymce-assets/plugins/save/plugin.js +9 -8
  121. package/tinymce-assets/plugins/save/plugin.min.js +2 -2
  122. package/tinymce-assets/plugins/searchreplace/plugin.js +73 -70
  123. package/tinymce-assets/plugins/searchreplace/plugin.min.js +2 -2
  124. package/tinymce-assets/plugins/spellchecker/plugin.js +22 -23
  125. package/tinymce-assets/plugins/spellchecker/plugin.min.js +2 -2
  126. package/tinymce-assets/plugins/tabfocus/plugin.js +21 -20
  127. package/tinymce-assets/plugins/tabfocus/plugin.min.js +2 -2
  128. package/tinymce-assets/plugins/table/plugin.js +2831 -2264
  129. package/tinymce-assets/plugins/table/plugin.min.js +2 -2
  130. package/tinymce-assets/plugins/template/plugin.js +84 -70
  131. package/tinymce-assets/plugins/template/plugin.min.js +2 -2
  132. package/tinymce-assets/plugins/textcolor/plugin.js +1 -2
  133. package/tinymce-assets/plugins/textcolor/plugin.min.js +2 -2
  134. package/tinymce-assets/plugins/textpattern/plugin.js +76 -96
  135. package/tinymce-assets/plugins/textpattern/plugin.min.js +2 -2
  136. package/tinymce-assets/plugins/toc/plugin.js +31 -29
  137. package/tinymce-assets/plugins/toc/plugin.min.js +2 -2
  138. package/tinymce-assets/plugins/visualblocks/plugin.js +10 -11
  139. package/tinymce-assets/plugins/visualblocks/plugin.min.js +2 -2
  140. package/tinymce-assets/plugins/visualchars/plugin.js +52 -67
  141. package/tinymce-assets/plugins/visualchars/plugin.min.js +2 -2
  142. package/tinymce-assets/plugins/wordcount/plugin.js +67 -58
  143. package/tinymce-assets/plugins/wordcount/plugin.min.js +2 -2
  144. package/tinymce-assets/skins/ui/oxide/content.css +1 -1
  145. package/tinymce-assets/skins/ui/oxide/content.inline.css +1 -1
  146. package/tinymce-assets/skins/ui/oxide/content.inline.min.css +1 -1
  147. package/tinymce-assets/skins/ui/oxide/content.min.css +1 -1
  148. package/tinymce-assets/skins/ui/oxide/skin.css +35 -22
  149. package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -1
  150. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.css +7 -7
  151. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.min.css +1 -1
  152. package/tinymce-assets/skins/ui/oxide-dark/content.css +1 -1
  153. package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +1 -1
  154. package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +1 -1
  155. package/tinymce-assets/skins/ui/oxide-dark/content.min.css +1 -1
  156. package/tinymce-assets/skins/ui/oxide-dark/skin.css +35 -22
  157. package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -1
  158. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.css +7 -7
  159. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.min.css +1 -1
  160. package/tinymce-assets/themes/mobile/theme.js +2798 -3255
  161. package/tinymce-assets/themes/mobile/theme.min.js +2 -2
  162. package/tinymce-assets/themes/silver/theme.js +25400 -25371
  163. package/tinymce-assets/themes/silver/theme.min.js +2 -2
  164. package/bundles/dangl-angular-material-shared.umd.js +0 -285
  165. package/bundles/dangl-angular-material-shared.umd.js.map +0 -1
  166. package/dangl-angular-material-shared.metadata.json +0 -1
  167. package/esm2015/lib/angular-material-shared.module.js +0 -25
  168. package/esm2015/lib/components/footer/footer.component.js +0 -27
  169. package/esm2015/lib/components/header/header.component.js +0 -67
  170. package/esm2015/lib/components/tiny-mce/tiny-mce.component.js +0 -100
  171. package/fesm2015/dangl-angular-material-shared.js +0 -259
  172. package/fesm2015/dangl-angular-material-shared.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { FooterComponent } from './components/footer/footer.component';
3
+ import { HeaderComponent } from './components/header/header.component';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { MatToolbarModule } from '@angular/material/toolbar';
7
+ import { NgModule } from '@angular/core';
8
+ import { RouterModule } from '@angular/router';
9
+ import { TinyMceComponent } from './components/tiny-mce/tiny-mce.component';
10
+ import * as i0 from "@angular/core";
11
+ export class AngularMaterialSharedModule {
12
+ }
13
+ AngularMaterialSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularMaterialSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ AngularMaterialSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: AngularMaterialSharedModule, declarations: [FooterComponent, HeaderComponent, TinyMceComponent], imports: [MatToolbarModule,
15
+ MatIconModule,
16
+ MatButtonModule,
17
+ RouterModule,
18
+ CommonModule], exports: [FooterComponent, HeaderComponent, TinyMceComponent] });
19
+ AngularMaterialSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularMaterialSharedModule, imports: [MatToolbarModule,
20
+ MatIconModule,
21
+ MatButtonModule,
22
+ RouterModule,
23
+ CommonModule] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularMaterialSharedModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ imports: [
28
+ MatToolbarModule,
29
+ MatIconModule,
30
+ MatButtonModule,
31
+ RouterModule,
32
+ CommonModule
33
+ ],
34
+ declarations: [FooterComponent, HeaderComponent, TinyMceComponent],
35
+ exports: [FooterComponent, HeaderComponent, TinyMceComponent]
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tYXRlcmlhbC1zaGFyZWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1tYXRlcmlhbC1zaGFyZWQvc3JjL2xpYi9hbmd1bGFyLW1hdGVyaWFsLXNoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFhNUUsTUFBTSxPQUFPLDJCQUEyQjs7d0hBQTNCLDJCQUEyQjt5SEFBM0IsMkJBQTJCLGlCQUh2QixlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixhQU4vRCxnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGVBQWU7UUFDZixZQUFZO1FBQ1osWUFBWSxhQUdKLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCO3lIQUVqRCwyQkFBMkIsWUFUcEMsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixlQUFlO1FBQ2YsWUFBWTtRQUNaLFlBQVk7MkZBS0gsMkJBQTJCO2tCQVh2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixZQUFZO3dCQUNaLFlBQVk7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDbEUsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVGlueU1jZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90aW55LW1jZS90aW55LW1jZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbRm9vdGVyQ29tcG9uZW50LCBIZWFkZXJDb21wb25lbnQsIFRpbnlNY2VDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtGb290ZXJDb21wb25lbnQsIEhlYWRlckNvbXBvbmVudCwgVGlueU1jZUNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNYXRlcmlhbFNoYXJlZE1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,33 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ import * as i2 from "@angular/common";
5
+ export class FooterComponent {
6
+ constructor() {
7
+ this.currentYear = new Date().getFullYear();
8
+ this.showLegalNotice = false;
9
+ this.legalNoticeText = 'Legal Notice';
10
+ this.legalNoticeLink = 'legal-notice';
11
+ this.useLegalNoticeCallback = false;
12
+ this.legalNoticeCallback = new EventEmitter();
13
+ }
14
+ }
15
+ FooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: FooterComponent, selector: "dangl-footer", inputs: { showLegalNotice: "showLegalNotice", legalNoticeText: "legalNoticeText", legalNoticeLink: "legalNoticeLink", useLegalNoticeCallback: "useLegalNoticeCallback", options: "options" }, outputs: { legalNoticeCallback: "legalNoticeCallback" }, ngImport: i0, template: "<footer class=\"gd-footer\">\r\n <p>\r\n <ng-template [ngIf]=\"!options\">\r\n <span class=\"gd-logo gd-logo-sm\">GD</span>\r\n <span>&nbsp;</span>\r\n <a href=\"https://www.dangl-it.com\"\r\n >Dangl<strong>IT</strong> GmbH \u00A9 {{ currentYear }}</a\r\n >\r\n </ng-template>\r\n <ng-template [ngIf]=\"options\">\r\n <span *ngIf=\"options.logoInitials\" class=\"gd-logo gd-logo-sm\">{{\r\n options.logoInitials\r\n }}</span>\r\n <span>&nbsp;</span>\r\n <a *ngIf=\"options.copyrightUrl\" href=\"{{ options.copyrightUrl }}\"\r\n ><span [innerHtml]=\"options.companyNameHtml\"></span\r\n ></a>\r\n <span\r\n *ngIf=\"!options.copyrightUrl\"\r\n [innerHtml]=\"options.companyNameHtml\"\r\n ></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"showLegalNotice\">\r\n -\r\n <a *ngIf=\"!useLegalNoticeCallback\" [routerLink]=\"legalNoticeLink\">{{\r\n legalNoticeText\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n *ngIf=\"useLegalNoticeCallback\"\r\n (click)=\"legalNoticeCallback.next(null)\"\r\n >{{ legalNoticeText }}</a\r\n >\r\n </ng-template>\r\n </p>\r\n</footer>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: FooterComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'dangl-footer', template: "<footer class=\"gd-footer\">\r\n <p>\r\n <ng-template [ngIf]=\"!options\">\r\n <span class=\"gd-logo gd-logo-sm\">GD</span>\r\n <span>&nbsp;</span>\r\n <a href=\"https://www.dangl-it.com\"\r\n >Dangl<strong>IT</strong> GmbH \u00A9 {{ currentYear }}</a\r\n >\r\n </ng-template>\r\n <ng-template [ngIf]=\"options\">\r\n <span *ngIf=\"options.logoInitials\" class=\"gd-logo gd-logo-sm\">{{\r\n options.logoInitials\r\n }}</span>\r\n <span>&nbsp;</span>\r\n <a *ngIf=\"options.copyrightUrl\" href=\"{{ options.copyrightUrl }}\"\r\n ><span [innerHtml]=\"options.companyNameHtml\"></span\r\n ></a>\r\n <span\r\n *ngIf=\"!options.copyrightUrl\"\r\n [innerHtml]=\"options.companyNameHtml\"\r\n ></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"showLegalNotice\">\r\n -\r\n <a *ngIf=\"!useLegalNoticeCallback\" [routerLink]=\"legalNoticeLink\">{{\r\n legalNoticeText\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n *ngIf=\"useLegalNoticeCallback\"\r\n (click)=\"legalNoticeCallback.next(null)\"\r\n >{{ legalNoticeText }}</a\r\n >\r\n </ng-template>\r\n </p>\r\n</footer>\r\n" }]
20
+ }], propDecorators: { showLegalNotice: [{
21
+ type: Input
22
+ }], legalNoticeText: [{
23
+ type: Input
24
+ }], legalNoticeLink: [{
25
+ type: Input
26
+ }], useLegalNoticeCallback: [{
27
+ type: Input
28
+ }], options: [{
29
+ type: Input
30
+ }], legalNoticeCallback: [{
31
+ type: Output
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkUsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFPRSxnQkFBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFOUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxjQUFjLENBQUM7UUFDakMsb0JBQWUsR0FBRyxjQUFjLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FFcEQ7OzRHQVhZLGVBQWU7Z0dBQWYsZUFBZSwyU0NUNUIsZ3VDQW9DQTsyRkQzQmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxjQUFjOzhCQVFmLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZvb3Rlck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9vdGVyLW9wdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYW5nbC1mb290ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvb3Rlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQge1xyXG5cclxuICBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0xlZ2FsTm90aWNlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGVnYWxOb3RpY2VUZXh0ID0gJ0xlZ2FsIE5vdGljZSc7XHJcbiAgQElucHV0KCkgbGVnYWxOb3RpY2VMaW5rID0gJ2xlZ2FsLW5vdGljZSc7XHJcbiAgQElucHV0KCkgdXNlTGVnYWxOb3RpY2VDYWxsYmFjayA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZvb3Rlck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIGxlZ2FsTm90aWNlQ2FsbGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG59XHJcbiIsIjxmb290ZXIgY2xhc3M9XCJnZC1mb290ZXJcIj5cclxuICA8cD5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhb3B0aW9uc1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImdkLWxvZ28gZ2QtbG9nby1zbVwiPkdEPC9zcGFuPlxyXG4gICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5kYW5nbC1pdC5jb21cIlxyXG4gICAgICAgID5EYW5nbDxzdHJvbmc+SVQ8L3N0cm9uZz4gR21iSCDCqSB7eyBjdXJyZW50WWVhciB9fTwvYVxyXG4gICAgICA+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIm9wdGlvbnNcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zLmxvZ29Jbml0aWFsc1wiIGNsYXNzPVwiZ2QtbG9nbyBnZC1sb2dvLXNtXCI+e3tcclxuICAgICAgICBvcHRpb25zLmxvZ29Jbml0aWFsc1xyXG4gICAgICB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxyXG4gICAgICA8YSAqbmdJZj1cIm9wdGlvbnMuY29weXJpZ2h0VXJsXCIgaHJlZj1cInt7IG9wdGlvbnMuY29weXJpZ2h0VXJsIH19XCJcclxuICAgICAgICA+PHNwYW4gW2lubmVySHRtbF09XCJvcHRpb25zLmNvbXBhbnlOYW1lSHRtbFwiPjwvc3BhblxyXG4gICAgICA+PC9hPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgICpuZ0lmPVwiIW9wdGlvbnMuY29weXJpZ2h0VXJsXCJcclxuICAgICAgICBbaW5uZXJIdG1sXT1cIm9wdGlvbnMuY29tcGFueU5hbWVIdG1sXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2hvd0xlZ2FsTm90aWNlXCI+XHJcbiAgICAgIC1cclxuICAgICAgPGEgKm5nSWY9XCIhdXNlTGVnYWxOb3RpY2VDYWxsYmFja1wiIFtyb3V0ZXJMaW5rXT1cImxlZ2FsTm90aWNlTGlua1wiPnt7XHJcbiAgICAgICAgbGVnYWxOb3RpY2VUZXh0XHJcbiAgICAgIH19PC9hPlxyXG4gICAgICA8YVxyXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICpuZ0lmPVwidXNlTGVnYWxOb3RpY2VDYWxsYmFja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImxlZ2FsTm90aWNlQ2FsbGJhY2submV4dChudWxsKVwiXHJcbiAgICAgICAgPnt7IGxlZ2FsTm90aWNlVGV4dCB9fTwvYVxyXG4gICAgICA+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcD5cclxuPC9mb290ZXI+XHJcbiJdfQ==
@@ -0,0 +1,80 @@
1
+ import { Component, EventEmitter, Input, Output, } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/toolbar";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/material/button";
6
+ import * as i4 from "@angular/router";
7
+ import * as i5 from "@angular/common";
8
+ export class HeaderComponent {
9
+ constructor() {
10
+ this.showMenuButton = false;
11
+ this.logoInitials = "GD";
12
+ this.menuButtonClicked = new EventEmitter();
13
+ this._forceDisablePrereleaseHeader = false;
14
+ }
15
+ set showPrerelease(val) {
16
+ if (val) {
17
+ this._forceDisablePrereleaseHeader = false;
18
+ this._showPrerelease = this.checkPrereleaseData();
19
+ }
20
+ else {
21
+ this._forceDisablePrereleaseHeader = true;
22
+ this._showPrerelease = false;
23
+ }
24
+ }
25
+ get showPrerelease() {
26
+ if (this._forceDisablePrereleaseHeader) {
27
+ return false;
28
+ }
29
+ return this._showPrerelease;
30
+ }
31
+ ngOnChanges(_) {
32
+ if (!this._forceDisablePrereleaseHeader) {
33
+ this._showPrerelease = this.checkPrereleaseData();
34
+ }
35
+ }
36
+ checkPrereleaseData() {
37
+ let isShowing = this.preReleaseVersion != null ||
38
+ this.preReleaseBuildDate != null ||
39
+ this.preReleaseLiveSiteLink != null;
40
+ if (this.preReleaseVersion != null && typeof Storage !== "undefined") {
41
+ isShowing =
42
+ this.preReleaseVersion !==
43
+ localStorage.getItem("dangl_preview_notice_header_hide_version");
44
+ }
45
+ return isShowing;
46
+ }
47
+ hideForCurrentVersion() {
48
+ if (typeof Storage !== "undefined") {
49
+ localStorage.setItem("dangl_preview_notice_header_hide_version", this.preReleaseVersion);
50
+ this.showPrerelease = false;
51
+ }
52
+ }
53
+ }
54
+ HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: HeaderComponent, selector: "dangl-header", inputs: { prefix: "prefix", postfix: "postfix", showMenuButton: "showMenuButton", logoInitials: "logoInitials", iconUrl: "iconUrl", preReleaseVersion: "preReleaseVersion", preReleaseBuildDate: "preReleaseBuildDate", preReleaseLiveSiteLink: "preReleaseLiveSiteLink", showPrerelease: "showPrerelease" }, outputs: { menuButtonClicked: "menuButtonClicked" }, usesOnChanges: true, ngImport: i0, template: "<mat-toolbar color=\"primary\">\r\n <mat-toolbar-row>\r\n <button\r\n mat-button\r\n class=\"menu-button\"\r\n *ngIf=\"showMenuButton\"\r\n (click)=\"menuButtonClicked.next(null)\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n <a routerLink=\"/\" class=\"header-title\" *ngIf=\"iconUrl\">\r\n <img class=\"dangl-header-logo\" [src]=\"iconUrl\" />\r\n </a>\r\n <a routerLink=\"/\" class=\"header-title\">\r\n <h1>\r\n <span *ngIf=\"logoInitials\" class=\"gd-logo\">{{ logoInitials }}</span>\r\n <ng-container *ngIf=\"prefix || postfix\">\r\n {{ prefix }}<strong>{{ postfix }}</strong>\r\n </ng-container>\r\n </h1>\r\n </a>\r\n <span class=\"toolbar-spacer\"></span>\r\n <ng-content></ng-content>\r\n </mat-toolbar-row>\r\n <mat-toolbar-row *ngIf=\"showPrerelease\" class=\"preview-notice\">\r\n <div class=\"preview-row\">\r\n <span> <mat-icon>warning</mat-icon> This is a preview site. </span>\r\n <a href=\"{{ preReleaseLiveSiteLink }}\" *ngIf=\"preReleaseLiveSiteLink\"\r\n >Click here to go to the live site</a\r\n >\r\n <div>\r\n <button\r\n mat-button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"showPrerelease = false\"\r\n >\r\n OK\r\n </button>\r\n <button\r\n mat-button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"hideForCurrentVersion()\"\r\n >\r\n Hide for this version\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"preview-row\">\r\n <span *ngIf=\"preReleaseVersion\">Version: {{ preReleaseVersion }}</span>\r\n <span *ngIf=\"preReleaseBuildDate\"\r\n >Built: {{ preReleaseBuildDate | date: \"dd.MM.yyyy HH:mm\" }}</span\r\n >\r\n </div>\r\n </mat-toolbar-row>\r\n <mat-toolbar-row class=\"header-divider\"></mat-toolbar-row>\r\n</mat-toolbar>\r\n", styles: [".header-divider{background-color:#3b4c55;height:12px}.preview-notice{background-color:#f44336;display:flex;flex-direction:column}.preview-notice .preview-row{display:flex;width:100%;flex-direction:row;justify-content:space-between}.preview-notice .preview-row a{text-decoration:underline}.dangl-header-logo{max-height:64px;vertical-align:middle}@media (max-width: 599px){.dangl-header-logo{max-height:56px}}mat-toolbar-row{padding-left:0}.header-title{padding-left:16px}.menu-button{height:100%;margin-left:0;min-width:auto;width:52px}.menu-button mat-icon{transform:scale(1.25)}.toolbar-spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HeaderComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: "dangl-header", template: "<mat-toolbar color=\"primary\">\r\n <mat-toolbar-row>\r\n <button\r\n mat-button\r\n class=\"menu-button\"\r\n *ngIf=\"showMenuButton\"\r\n (click)=\"menuButtonClicked.next(null)\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n <a routerLink=\"/\" class=\"header-title\" *ngIf=\"iconUrl\">\r\n <img class=\"dangl-header-logo\" [src]=\"iconUrl\" />\r\n </a>\r\n <a routerLink=\"/\" class=\"header-title\">\r\n <h1>\r\n <span *ngIf=\"logoInitials\" class=\"gd-logo\">{{ logoInitials }}</span>\r\n <ng-container *ngIf=\"prefix || postfix\">\r\n {{ prefix }}<strong>{{ postfix }}</strong>\r\n </ng-container>\r\n </h1>\r\n </a>\r\n <span class=\"toolbar-spacer\"></span>\r\n <ng-content></ng-content>\r\n </mat-toolbar-row>\r\n <mat-toolbar-row *ngIf=\"showPrerelease\" class=\"preview-notice\">\r\n <div class=\"preview-row\">\r\n <span> <mat-icon>warning</mat-icon> This is a preview site. </span>\r\n <a href=\"{{ preReleaseLiveSiteLink }}\" *ngIf=\"preReleaseLiveSiteLink\"\r\n >Click here to go to the live site</a\r\n >\r\n <div>\r\n <button\r\n mat-button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"showPrerelease = false\"\r\n >\r\n OK\r\n </button>\r\n <button\r\n mat-button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"hideForCurrentVersion()\"\r\n >\r\n Hide for this version\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"preview-row\">\r\n <span *ngIf=\"preReleaseVersion\">Version: {{ preReleaseVersion }}</span>\r\n <span *ngIf=\"preReleaseBuildDate\"\r\n >Built: {{ preReleaseBuildDate | date: \"dd.MM.yyyy HH:mm\" }}</span\r\n >\r\n </div>\r\n </mat-toolbar-row>\r\n <mat-toolbar-row class=\"header-divider\"></mat-toolbar-row>\r\n</mat-toolbar>\r\n", styles: [".header-divider{background-color:#3b4c55;height:12px}.preview-notice{background-color:#f44336;display:flex;flex-direction:column}.preview-notice .preview-row{display:flex;width:100%;flex-direction:row;justify-content:space-between}.preview-notice .preview-row a{text-decoration:underline}.dangl-header-logo{max-height:64px;vertical-align:middle}@media (max-width: 599px){.dangl-header-logo{max-height:56px}}mat-toolbar-row{padding-left:0}.header-title{padding-left:16px}.menu-button{height:100%;margin-left:0;min-width:auto;width:52px}.menu-button mat-icon{transform:scale(1.25)}.toolbar-spacer{flex:1 1 auto}\n"] }]
59
+ }], propDecorators: { prefix: [{
60
+ type: Input
61
+ }], postfix: [{
62
+ type: Input
63
+ }], showMenuButton: [{
64
+ type: Input
65
+ }], logoInitials: [{
66
+ type: Input
67
+ }], iconUrl: [{
68
+ type: Input
69
+ }], menuButtonClicked: [{
70
+ type: Output
71
+ }], preReleaseVersion: [{
72
+ type: Input
73
+ }], preReleaseBuildDate: [{
74
+ type: Input
75
+ }], preReleaseLiveSiteLink: [{
76
+ type: Input
77
+ }], showPrerelease: [{
78
+ type: Input
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFPdkIsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFRVyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVuQixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBd0J6QyxrQ0FBNkIsR0FBRyxLQUFLLENBQUM7S0E4Qi9DO0lBaERDLElBQWEsY0FBYyxDQUFDLEdBQVk7UUFDdEMsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDbkQ7YUFBTTtZQUNMLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLElBQUksSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3RDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUtELFdBQVcsQ0FBQyxDQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksU0FBUyxHQUNYLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNwRSxTQUFTO2dCQUNQLElBQUksQ0FBQyxpQkFBaUI7b0JBQ3RCLFlBQVksQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFDbEMsWUFBWSxDQUFDLE9BQU8sQ0FDbEIsMENBQTBDLEVBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7NEdBM0RVLGVBQWU7Z0dBQWYsZUFBZSw0YUNmNUIsczlEQTBEQTsyRkQzQ2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxjQUFjOzhCQUtmLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUUsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRU8sY0FBYztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJkYW5nbC1oZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2hlYWRlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9oZWFkZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHByZWZpeDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBvc3RmaXg6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93TWVudUJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxvZ29Jbml0aWFscyA9IFwiR0RcIjtcclxuICBASW5wdXQoKSBpY29uVXJsOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG1lbnVCdXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKSBwcmVSZWxlYXNlVmVyc2lvbjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByZVJlbGVhc2VCdWlsZERhdGU6IERhdGU7XHJcbiAgQElucHV0KCkgcHJlUmVsZWFzZUxpdmVTaXRlTGluazogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBzZXQgc2hvd1ByZXJlbGVhc2UodmFsOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX2ZvcmNlRGlzYWJsZVByZXJlbGVhc2VIZWFkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fc2hvd1ByZXJlbGVhc2UgPSB0aGlzLmNoZWNrUHJlcmVsZWFzZURhdGEoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2ZvcmNlRGlzYWJsZVByZXJlbGVhc2VIZWFkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9zaG93UHJlcmVsZWFzZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dQcmVyZWxlYXNlKCkge1xyXG4gICAgaWYgKHRoaXMuX2ZvcmNlRGlzYWJsZVByZXJlbGVhc2VIZWFkZXIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dQcmVyZWxlYXNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd1ByZXJlbGVhc2U6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfZm9yY2VEaXNhYmxlUHJlcmVsZWFzZUhlYWRlciA9IGZhbHNlO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2ZvcmNlRGlzYWJsZVByZXJlbGVhc2VIZWFkZXIpIHtcclxuICAgICAgdGhpcy5fc2hvd1ByZXJlbGVhc2UgPSB0aGlzLmNoZWNrUHJlcmVsZWFzZURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrUHJlcmVsZWFzZURhdGEoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNTaG93aW5nID1cclxuICAgICAgdGhpcy5wcmVSZWxlYXNlVmVyc2lvbiAhPSBudWxsIHx8XHJcbiAgICAgIHRoaXMucHJlUmVsZWFzZUJ1aWxkRGF0ZSAhPSBudWxsIHx8XHJcbiAgICAgIHRoaXMucHJlUmVsZWFzZUxpdmVTaXRlTGluayAhPSBudWxsO1xyXG4gICAgaWYgKHRoaXMucHJlUmVsZWFzZVZlcnNpb24gIT0gbnVsbCAmJiB0eXBlb2YgU3RvcmFnZSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpc1Nob3dpbmcgPVxyXG4gICAgICAgIHRoaXMucHJlUmVsZWFzZVZlcnNpb24gIT09XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJkYW5nbF9wcmV2aWV3X25vdGljZV9oZWFkZXJfaGlkZV92ZXJzaW9uXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvd2luZztcclxuICB9XHJcblxyXG4gIGhpZGVGb3JDdXJyZW50VmVyc2lvbigpIHtcclxuICAgIGlmICh0eXBlb2YgU3RvcmFnZSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICBcImRhbmdsX3ByZXZpZXdfbm90aWNlX2hlYWRlcl9oaWRlX3ZlcnNpb25cIixcclxuICAgICAgICB0aGlzLnByZVJlbGVhc2VWZXJzaW9uXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2hvd1ByZXJlbGVhc2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gIDxtYXQtdG9vbGJhci1yb3c+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1idXR0b25cclxuICAgICAgY2xhc3M9XCJtZW51LWJ1dHRvblwiXHJcbiAgICAgICpuZ0lmPVwic2hvd01lbnVCdXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwibWVudUJ1dHRvbkNsaWNrZWQubmV4dChudWxsKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGEgcm91dGVyTGluaz1cIi9cIiBjbGFzcz1cImhlYWRlci10aXRsZVwiICpuZ0lmPVwiaWNvblVybFwiPlxyXG4gICAgICA8aW1nIGNsYXNzPVwiZGFuZ2wtaGVhZGVyLWxvZ29cIiBbc3JjXT1cImljb25VcmxcIiAvPlxyXG4gICAgPC9hPlxyXG4gICAgPGEgcm91dGVyTGluaz1cIi9cIiBjbGFzcz1cImhlYWRlci10aXRsZVwiPlxyXG4gICAgICA8aDE+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dvSW5pdGlhbHNcIiBjbGFzcz1cImdkLWxvZ29cIj57eyBsb2dvSW5pdGlhbHMgfX08L3NwYW4+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZWZpeCB8fCBwb3N0Zml4XCI+XHJcbiAgICAgICAgICB7eyBwcmVmaXggfX08c3Ryb25nPnt7IHBvc3RmaXggfX08L3N0cm9uZz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9oMT5cclxuICAgIDwvYT5cclxuICAgIDxzcGFuIGNsYXNzPVwidG9vbGJhci1zcGFjZXJcIj48L3NwYW4+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9tYXQtdG9vbGJhci1yb3c+XHJcbiAgPG1hdC10b29sYmFyLXJvdyAqbmdJZj1cInNob3dQcmVyZWxlYXNlXCIgY2xhc3M9XCJwcmV2aWV3LW5vdGljZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByZXZpZXctcm93XCI+XHJcbiAgICAgIDxzcGFuPiA8bWF0LWljb24+d2FybmluZzwvbWF0LWljb24+IFRoaXMgaXMgYSBwcmV2aWV3IHNpdGUuIDwvc3Bhbj5cclxuICAgICAgPGEgaHJlZj1cInt7IHByZVJlbGVhc2VMaXZlU2l0ZUxpbmsgfX1cIiAqbmdJZj1cInByZVJlbGVhc2VMaXZlU2l0ZUxpbmtcIlxyXG4gICAgICAgID5DbGljayBoZXJlIHRvIGdvIHRvIHRoZSBsaXZlIHNpdGU8L2FcclxuICAgICAgPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dQcmVyZWxlYXNlID0gZmFsc2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE9LXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaGlkZUZvckN1cnJlbnRWZXJzaW9uKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEhpZGUgZm9yIHRoaXMgdmVyc2lvblxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInByZXZpZXctcm93XCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwicHJlUmVsZWFzZVZlcnNpb25cIj5WZXJzaW9uOiB7eyBwcmVSZWxlYXNlVmVyc2lvbiB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJwcmVSZWxlYXNlQnVpbGREYXRlXCJcclxuICAgICAgICA+QnVpbHQ6IHt7IHByZVJlbGVhc2VCdWlsZERhdGUgfCBkYXRlOiBcImRkLk1NLnl5eXkgSEg6bW1cIiB9fTwvc3BhblxyXG4gICAgICA+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC10b29sYmFyLXJvdz5cclxuICA8bWF0LXRvb2xiYXItcm93IGNsYXNzPVwiaGVhZGVyLWRpdmlkZXJcIj48L21hdC10b29sYmFyLXJvdz5cclxuPC9tYXQtdG9vbGJhcj5cclxuIl19
@@ -0,0 +1,104 @@
1
+ import { Component, forwardRef, Inject, Input } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { GuidGenerator } from '../../utils/guid-generator';
4
+ import * as i0 from "@angular/core";
5
+ export class TinyMceComponent {
6
+ constructor(baseUrl, ngZone) {
7
+ this.baseUrl = baseUrl;
8
+ this.ngZone = ngZone;
9
+ this.elementId = GuidGenerator.generatePseudoRandomGuid();
10
+ this.onTouchedCallback = () => { };
11
+ this.onChangeCallback = () => { };
12
+ }
13
+ get editorContent() {
14
+ return this._editorContent;
15
+ }
16
+ set editorContent(value) {
17
+ if (value !== this._editorContent) {
18
+ this._editorContent = value;
19
+ this.ngZone.run(() => {
20
+ // tinyMCE events are outside of the Angular zone
21
+ // ngZone.run() makes sure everything runs in the
22
+ // Angular zone, so it integrates in the Angular
23
+ // lifecycle. Otherwise, e.g., 'required' validation
24
+ // would not update on change
25
+ this.onChangeCallback(value);
26
+ });
27
+ }
28
+ }
29
+ ngAfterViewInit() {
30
+ tinymce.init({
31
+ selector: '#' + this.elementId,
32
+ plugins: ['link', 'paste', 'table', 'image', 'code'],
33
+ language: this.tinyMceLanguageCode,
34
+ base_url: this.baseUrl,
35
+ branding: false,
36
+ setup: editor => {
37
+ editor.on('change keyup', () => {
38
+ const content = editor.getContent();
39
+ this.editorContent = content;
40
+ });
41
+ },
42
+ init_instance_callback: editor => {
43
+ if (editor && this.editorContent) {
44
+ editor.setContent(this.editorContent);
45
+ }
46
+ this.editor = editor;
47
+ }
48
+ });
49
+ }
50
+ ngOnDestroy() {
51
+ tinymce.remove(this.editor);
52
+ }
53
+ writeValue(obj) {
54
+ obj = obj || '';
55
+ this.editorContent = obj;
56
+ if (!this.editor) {
57
+ return;
58
+ }
59
+ const tinyMceContent = this.editor.getContent();
60
+ if (tinyMceContent !== obj) {
61
+ this.editor.setContent(obj);
62
+ }
63
+ }
64
+ registerOnChange(fn) {
65
+ this.onChangeCallback = fn;
66
+ }
67
+ registerOnTouched(fn) {
68
+ this.onTouchedCallback = fn;
69
+ }
70
+ setDisabledState(isDisabled) {
71
+ if (isDisabled) {
72
+ this.editor.setMode('readonly');
73
+ }
74
+ else {
75
+ this.editor.setMode('design');
76
+ }
77
+ }
78
+ }
79
+ TinyMceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TinyMceComponent, deps: [{ token: 'TINYMCE_BASE_URL' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
80
+ TinyMceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: TinyMceComponent, selector: "dangl-tiny-mce", inputs: { tinyMceLanguageUrl: "tinyMceLanguageUrl", tinyMceLanguageCode: "tinyMceLanguageCode" }, providers: [
81
+ {
82
+ provide: NG_VALUE_ACCESSOR,
83
+ useExisting: forwardRef(() => TinyMceComponent),
84
+ multi: true,
85
+ }
86
+ ], ngImport: i0, template: "<textarea id=\"{{ elementId }}\"></textarea>\r\n", styles: [""] });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TinyMceComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'dangl-tiny-mce', providers: [
90
+ {
91
+ provide: NG_VALUE_ACCESSOR,
92
+ useExisting: forwardRef(() => TinyMceComponent),
93
+ multi: true,
94
+ }
95
+ ], template: "<textarea id=\"{{ elementId }}\"></textarea>\r\n" }]
96
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
97
+ type: Inject,
98
+ args: ['TINYMCE_BASE_URL']
99
+ }] }, { type: i0.NgZone }]; }, propDecorators: { tinyMceLanguageUrl: [{
100
+ type: Input
101
+ }], tinyMceLanguageCode: [{
102
+ type: Input
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlueS1tY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1tYXRlcmlhbC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RpbnktbWNlL3RpbnktbWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90aW55LW1jZS90aW55LW1jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBZ0IzRCxNQUFNLE9BQU8sZ0JBQWdCO0lBNEIzQixZQUFnRCxPQUFlLEVBQ3JELE1BQWM7UUFEd0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNyRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEJ4QixjQUFTLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFvQjdDLHNCQUFpQixHQUFlLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBcUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSXZELENBQUM7SUF0QkQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFhO1FBQzdCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFH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cUJBQ0Y7OzBCQThCWSxNQUFNOzJCQUFDLGtCQUFrQjtpRUExQjdCLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdCwgTmdab25lLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyAnQWZ0ZXJWaWV3SW5pdCcgYW5kICdPbkRlc3Ryb3knIHNob3VsZCBiZSBwbGFjZWQgaW4gYSBzZXBhcmF0ZSBpbXBvcnQgdG9cclxuLy8gbWl0aWdhdGUgdGhpcyBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzE1NDMjaXNzdWVjb21tZW50LTU5Mzg3Mzg3NFxyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHdWlkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ3VpZC1nZW5lcmF0b3InO1xyXG5cclxuZGVjbGFyZSB2YXIgdGlueW1jZTogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYW5nbC10aW55LW1jZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbnktbWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW55LW1jZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGlueU1jZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbnlNY2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgdGlueU1jZUxhbmd1YWdlVXJsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGlueU1jZUxhbmd1YWdlQ29kZTogc3RyaW5nO1xyXG5cclxuICBlbGVtZW50SWQgPSBHdWlkR2VuZXJhdG9yLmdlbmVyYXRlUHNldWRvUmFuZG9tR3VpZCgpO1xyXG4gIGVkaXRvcjogYW55O1xyXG4gIHByaXZhdGUgX2VkaXRvckNvbnRlbnQ6IHN0cmluZztcclxuICBnZXQgZWRpdG9yQ29udGVudCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG4gIHNldCBlZGl0b3JDb250ZW50KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fZWRpdG9yQ29udGVudCkge1xyXG4gICAgICB0aGlzLl9lZGl0b3JDb250ZW50ID0gdmFsdWU7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgLy8gdGlueU1DRSBldmVudHMgYXJlIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZVxyXG4gICAgICAgIC8vIG5nWm9uZS5ydW4oKSBtYWtlcyBzdXJlIGV2ZXJ5dGhpbmcgcnVucyBpbiB0aGVcclxuICAgICAgICAvLyBBbmd1bGFyIHpvbmUsIHNvIGl0IGludGVncmF0ZXMgaW4gdGhlIEFuZ3VsYXJcclxuICAgICAgICAvLyBsaWZlY3ljbGUuIE90aGVyd2lzZSwgZS5nLiwgJ3JlcXVpcmVkJyB2YWxpZGF0aW9uXHJcbiAgICAgICAgLy8gd291bGQgbm90IHVwZGF0ZSBvbiBjaGFuZ2VcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KCdUSU5ZTUNFX0JBU0VfVVJMJykgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aW55bWNlLmluaXQoe1xyXG4gICAgICBzZWxlY3RvcjogJyMnICsgdGhpcy5lbGVtZW50SWQsXHJcbiAgICAgIHBsdWdpbnM6IFsnbGluaycsICdwYXN0ZScsICd0YWJsZScsICdpbWFnZScsICdjb2RlJ10sXHJcbiAgICAgIGxhbmd1YWdlOiB0aGlzLnRpbnlNY2VMYW5ndWFnZUNvZGUsXHJcbiAgICAgIGJhc2VfdXJsOiB0aGlzLmJhc2VVcmwsXHJcbiAgICAgIGJyYW5kaW5nOiBmYWxzZSwgLy8gVG8gZGlzYWJsZSAnUE9XRVJFRCBCWSBUSU5ZTUNFJyBpbiBmb290ZXJcclxuICAgICAgc2V0dXA6IGVkaXRvciA9PiB7XHJcbiAgICAgICAgZWRpdG9yLm9uKCdjaGFuZ2Uga2V5dXAnLCAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gZWRpdG9yLmdldENvbnRlbnQoKTtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yQ29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGluaXRfaW5zdGFuY2VfY2FsbGJhY2s6IGVkaXRvciA9PiB7XHJcbiAgICAgICAgaWYgKGVkaXRvciAmJiB0aGlzLmVkaXRvckNvbnRlbnQpIHtcclxuICAgICAgICAgIGVkaXRvci5zZXRDb250ZW50KHRoaXMuZWRpdG9yQ29udGVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGlueW1jZS5yZW1vdmUodGhpcy5lZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgb2JqID0gb2JqIHx8ICcnO1xyXG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gb2JqO1xyXG4gICAgaWYgKCF0aGlzLmVkaXRvcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW55TWNlQ29udGVudCA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnQoKTtcclxuICAgIGlmICh0aW55TWNlQ29udGVudCAhPT0gb2JqKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yLnNldENvbnRlbnQob2JqKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmVkaXRvci5zZXRNb2RlKCdyZWFkb25seScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3Iuc2V0TW9kZSgnZGVzaWduJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8dGV4dGFyZWEgaWQ9XCJ7eyBlbGVtZW50SWQgfX1cIj48L3RleHRhcmVhPlxyXG4iXX0=