@fundamental-ngx/core 0.36.1-rc.51 → 0.36.1-rc.52

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.
@@ -1,55 +1,57 @@
1
1
  export const STANDARD_THEMES = [
2
- {
3
- id: 'sap_fiori_3',
4
- name: 'Fiori 3',
5
- description: 'Use in regular office environment'
6
- },
7
- {
8
- id: 'sap_fiori_3_dark',
9
- name: 'Fiori 3 Dark',
10
- description: 'Use in dimmed environments'
11
- },
12
- {
13
- id: 'sap_fiori_3_hcb',
14
- name: 'High Contrast Black',
15
- description: 'Optimized contrast and accessibility for extremely bright environments'
16
- },
17
- {
18
- id: 'sap_fiori_3_hcw',
19
- name: 'High Contrast White',
20
- description: 'Optimized contrast and accessibility for extremely dark environments'
21
- },
22
- {
23
- id: 'sap_fiori_3_light_dark',
24
- name: 'Light Dark'
25
- },
26
2
  {
27
3
  id: 'sap_horizon',
28
- name: 'Morning Horizon',
4
+ name: 'Morning Horizon (Light)',
29
5
  theming: {
30
6
  themeFontPath: 'sap_horizon_fonts.css'
31
7
  }
32
8
  },
33
9
  {
34
10
  id: 'sap_horizon_dark',
35
- name: 'Evening Horizon',
11
+ name: 'Evening Horizon (Dark)',
36
12
  theming: {
37
13
  themeFontPath: 'sap_horizon_fonts.css'
38
14
  }
39
15
  },
40
16
  {
41
17
  id: 'sap_horizon_hcb',
42
- name: 'High Contrast Black Horizon',
18
+ name: 'Horizon High Contrast Black',
19
+ description: 'Optimized contrast and accessibility for extremely bright environments',
43
20
  theming: {
44
21
  themeFontPath: 'sap_horizon_fonts.css'
45
22
  }
46
23
  },
47
24
  {
48
25
  id: 'sap_horizon_hcw',
49
- name: 'High Contrast White Horizon',
26
+ name: 'Horizon High Contrast White',
27
+ description: 'Optimized contrast and accessibility for extremely dark environments',
50
28
  theming: {
51
29
  themeFontPath: 'sap_horizon_fonts.css'
52
30
  }
31
+ },
32
+ {
33
+ id: 'sap_fiori_3',
34
+ name: 'Quartz Light',
35
+ description: 'Use in regular office environment'
36
+ },
37
+ {
38
+ id: 'sap_fiori_3_dark',
39
+ name: 'Quartz Dark',
40
+ description: 'Use in dimmed environments'
41
+ },
42
+ {
43
+ id: 'sap_fiori_3_hcb',
44
+ name: 'Quartz High Contrast Black',
45
+ description: 'Optimized contrast and accessibility for extremely bright environments'
46
+ },
47
+ {
48
+ id: 'sap_fiori_3_hcw',
49
+ name: 'Quartz High Contrast White',
50
+ description: 'Optimized contrast and accessibility for extremely dark environments'
51
+ },
52
+ {
53
+ id: 'sap_fiori_3_light_dark',
54
+ name: 'Quartz Auto (Depending on the OS Settings)'
53
55
  }
54
56
  ];
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtdGhlbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGhlbWluZy9zdGFuZGFyZC10aGVtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUM5QztRQUNJLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLG1DQUFtQztLQUNuRDtJQUNEO1FBQ0ksRUFBRSxFQUFFLGtCQUFrQjtRQUN0QixJQUFJLEVBQUUsY0FBYztRQUNwQixXQUFXLEVBQUUsNEJBQTRCO0tBQzVDO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsV0FBVyxFQUFFLHdFQUF3RTtLQUN4RjtJQUNEO1FBQ0ksRUFBRSxFQUFFLGlCQUFpQjtRQUNyQixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLFdBQVcsRUFBRSxzRUFBc0U7S0FDdEY7SUFDRDtRQUNJLEVBQUUsRUFBRSx3QkFBd0I7UUFDNUIsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRDtRQUNJLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLElBQUksRUFBRSw2QkFBNkI7UUFDbkMsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLElBQUksRUFBRSw2QkFBNkI7UUFDbkMsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lRGVmaW5pdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy90aGVtZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgU1RBTkRBUkRfVEhFTUVTOiBUaGVtZURlZmluaXRpb25bXSA9IFtcbiAgICB7XG4gICAgICAgIGlkOiAnc2FwX2Zpb3JpXzMnLFxuICAgICAgICBuYW1lOiAnRmlvcmkgMycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIGluIHJlZ3VsYXIgb2ZmaWNlIGVudmlyb25tZW50J1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2RhcmsnLFxuICAgICAgICBuYW1lOiAnRmlvcmkgMyBEYXJrJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gZGltbWVkIGVudmlyb25tZW50cydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY2InLFxuICAgICAgICBuYW1lOiAnSGlnaCBDb250cmFzdCBCbGFjaycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgYnJpZ2h0IGVudmlyb25tZW50cydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY3cnLFxuICAgICAgICBuYW1lOiAnSGlnaCBDb250cmFzdCBXaGl0ZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgZGFyayBlbnZpcm9ubWVudHMnXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfbGlnaHRfZGFyaycsXG4gICAgICAgIG5hbWU6ICdMaWdodCBEYXJrJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9ob3Jpem9uJyxcbiAgICAgICAgbmFtZTogJ01vcm5pbmcgSG9yaXpvbicsXG4gICAgICAgIHRoZW1pbmc6IHtcbiAgICAgICAgICAgIHRoZW1lRm9udFBhdGg6ICdzYXBfaG9yaXpvbl9mb250cy5jc3MnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9kYXJrJyxcbiAgICAgICAgbmFtZTogJ0V2ZW5pbmcgSG9yaXpvbicsXG4gICAgICAgIHRoZW1pbmc6IHtcbiAgICAgICAgICAgIHRoZW1lRm9udFBhdGg6ICdzYXBfaG9yaXpvbl9mb250cy5jc3MnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9oY2InLFxuICAgICAgICBuYW1lOiAnSGlnaCBDb250cmFzdCBCbGFjayBIb3Jpem9uJyxcbiAgICAgICAgdGhlbWluZzoge1xuICAgICAgICAgICAgdGhlbWVGb250UGF0aDogJ3NhcF9ob3Jpem9uX2ZvbnRzLmNzcydcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2hjdycsXG4gICAgICAgIG5hbWU6ICdIaWdoIENvbnRyYXN0IFdoaXRlIEhvcml6b24nLFxuICAgICAgICB0aGVtaW5nOiB7XG4gICAgICAgICAgICB0aGVtZUZvbnRQYXRoOiAnc2FwX2hvcml6b25fZm9udHMuY3NzJ1xuICAgICAgICB9XG4gICAgfVxuXTtcbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtdGhlbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGhlbWluZy9zdGFuZGFyZC10aGVtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUM5QztRQUNJLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsT0FBTyxFQUFFO1lBQ0wsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLElBQUksRUFBRSw2QkFBNkI7UUFDbkMsV0FBVyxFQUFFLHdFQUF3RTtRQUNyRixPQUFPLEVBQUU7WUFDTCxhQUFhLEVBQUUsdUJBQXVCO1NBQ3pDO0tBQ0o7SUFDRDtRQUNJLEVBQUUsRUFBRSxpQkFBaUI7UUFDckIsSUFBSSxFQUFFLDZCQUE2QjtRQUNuQyxXQUFXLEVBQUUsc0VBQXNFO1FBQ25GLE9BQU8sRUFBRTtZQUNMLGFBQWEsRUFBRSx1QkFBdUI7U0FDekM7S0FDSjtJQUNEO1FBQ0ksRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLGNBQWM7UUFDcEIsV0FBVyxFQUFFLG1DQUFtQztLQUNuRDtJQUNEO1FBQ0ksRUFBRSxFQUFFLGtCQUFrQjtRQUN0QixJQUFJLEVBQUUsYUFBYTtRQUNuQixXQUFXLEVBQUUsNEJBQTRCO0tBQzVDO0lBQ0Q7UUFDSSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsV0FBVyxFQUFFLHdFQUF3RTtLQUN4RjtJQUNEO1FBQ0ksRUFBRSxFQUFFLGlCQUFpQjtRQUNyQixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLFdBQVcsRUFBRSxzRUFBc0U7S0FDdEY7SUFDRDtRQUNJLEVBQUUsRUFBRSx3QkFBd0I7UUFDNUIsSUFBSSxFQUFFLDRDQUE0QztLQUNyRDtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZURlZmluaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvdGhlbWUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IFNUQU5EQVJEX1RIRU1FUzogVGhlbWVEZWZpbml0aW9uW10gPSBbXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9ob3Jpem9uJyxcbiAgICAgICAgbmFtZTogJ01vcm5pbmcgSG9yaXpvbiAoTGlnaHQpJyxcbiAgICAgICAgdGhlbWluZzoge1xuICAgICAgICAgICAgdGhlbWVGb250UGF0aDogJ3NhcF9ob3Jpem9uX2ZvbnRzLmNzcydcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2RhcmsnLFxuICAgICAgICBuYW1lOiAnRXZlbmluZyBIb3Jpem9uIChEYXJrKScsXG4gICAgICAgIHRoZW1pbmc6IHtcbiAgICAgICAgICAgIHRoZW1lRm9udFBhdGg6ICdzYXBfaG9yaXpvbl9mb250cy5jc3MnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9oY2InLFxuICAgICAgICBuYW1lOiAnSG9yaXpvbiBIaWdoIENvbnRyYXN0IEJsYWNrJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZWQgY29udHJhc3QgYW5kIGFjY2Vzc2liaWxpdHkgZm9yIGV4dHJlbWVseSBicmlnaHQgZW52aXJvbm1lbnRzJyxcbiAgICAgICAgdGhlbWluZzoge1xuICAgICAgICAgICAgdGhlbWVGb250UGF0aDogJ3NhcF9ob3Jpem9uX2ZvbnRzLmNzcydcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2hjdycsXG4gICAgICAgIG5hbWU6ICdIb3Jpem9uIEhpZ2ggQ29udHJhc3QgV2hpdGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJyxcbiAgICAgICAgdGhlbWluZzoge1xuICAgICAgICAgICAgdGhlbWVGb250UGF0aDogJ3NhcF9ob3Jpem9uX2ZvbnRzLmNzcydcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9maW9yaV8zJyxcbiAgICAgICAgbmFtZTogJ1F1YXJ0eiBMaWdodCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIGluIHJlZ3VsYXIgb2ZmaWNlIGVudmlyb25tZW50J1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2RhcmsnLFxuICAgICAgICBuYW1lOiAnUXVhcnR6IERhcmsnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZSBpbiBkaW1tZWQgZW52aXJvbm1lbnRzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2hjYicsXG4gICAgICAgIG5hbWU6ICdRdWFydHogSGlnaCBDb250cmFzdCBCbGFjaycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgYnJpZ2h0IGVudmlyb25tZW50cydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY3cnLFxuICAgICAgICBuYW1lOiAnUXVhcnR6IEhpZ2ggQ29udHJhc3QgV2hpdGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2xpZ2h0X2RhcmsnLFxuICAgICAgICBuYW1lOiAnUXVhcnR6IEF1dG8gKERlcGVuZGluZyBvbiB0aGUgT1MgU2V0dGluZ3MpJ1xuICAgIH1cbl07XG4iXX0=
@@ -19,44 +19,46 @@ export class ThemesService {
19
19
  /** Available themes */
20
20
  this.themes = [
21
21
  {
22
- id: 'sap_fiori_3',
23
- name: 'Fiori 3',
24
- description: 'Use in regular office environment'
22
+ id: 'sap_horizon',
23
+ name: 'Morning Horizon (Light)'
25
24
  },
26
25
  {
27
- id: 'sap_fiori_3_dark',
28
- name: 'Fiori 3 Dark',
29
- description: 'Use in dimmed environments'
26
+ id: 'sap_horizon_dark',
27
+ name: 'Evening Horizon (Dark)'
30
28
  },
31
29
  {
32
- id: 'sap_fiori_3_hcb',
33
- name: 'High Contrast Black',
34
- description: 'Optimized contrast and accessibility for extremely bright environments'
30
+ id: 'sap_horizon_hcb',
31
+ name: 'Horizon High Contrast Black',
32
+ description: 'Optimized contrast and accessibiliwty for extremely bright environments'
35
33
  },
36
34
  {
37
- id: 'sap_fiori_3_hcw',
38
- name: 'High Contrast White',
35
+ id: 'sap_horizon_hcw',
36
+ name: 'Horizon High Contrast White Horizon',
39
37
  description: 'Optimized contrast and accessibility for extremely dark environments'
40
38
  },
41
39
  {
42
- id: 'sap_fiori_3_light_dark',
43
- name: 'Light Dark'
40
+ id: 'sap_fiori_3',
41
+ name: 'Quartz Light',
42
+ description: 'Use in regular office environment'
44
43
  },
45
44
  {
46
- id: 'sap_horizon',
47
- name: 'Morning Horizon'
45
+ id: 'sap_fiori_3_dark',
46
+ name: 'Quartz Dark',
47
+ description: 'Use in dimmed environments'
48
48
  },
49
49
  {
50
- id: 'sap_horizon_dark',
51
- name: 'Evening Horizon'
50
+ id: 'sap_fiori_3_hcb',
51
+ name: 'Quartz High Contrast Black',
52
+ description: 'Optimized contrast and accessibility for extremely bright environments'
52
53
  },
53
54
  {
54
- id: 'sap_horizon_hcb',
55
- name: 'High Contrast Black Horizon'
55
+ id: 'sap_fiori_3_hcw',
56
+ name: 'Quartz High Contrast White',
57
+ description: 'Optimized contrast and accessibility for extremely dark environments'
56
58
  },
57
59
  {
58
- id: 'sap_horizon_hcw',
59
- name: 'High Contrast White Horizon'
60
+ id: 'sap_fiori_3_light_dark',
61
+ name: 'Quartz Auto (Depending on the OS Settings)'
60
62
  }
61
63
  ];
62
64
  /** Subject triggered, when the theming is changed by URL parameter */
@@ -127,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
127
129
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute, decorators: [{
128
130
  type: Optional
129
131
  }] }, { type: i2.DomSanitizer }]; } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9zZXJ2aWNlcy90aGVtZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQWNoRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFtRHRCLFlBQWdDLGVBQStCLEVBQVUsVUFBd0I7UUFBakUsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQWxEakcsdUJBQXVCO1FBQ3ZCLFdBQU0sR0FBWTtZQUNkO2dCQUNJLEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUsU0FBUztnQkFDZixXQUFXLEVBQUUsbUNBQW1DO2FBQ25EO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGtCQUFrQjtnQkFDdEIsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSw0QkFBNEI7YUFDNUM7WUFDRDtnQkFDSSxFQUFFLEVBQUUsaUJBQWlCO2dCQUNyQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixXQUFXLEVBQUUsd0VBQXdFO2FBQ3hGO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsV0FBVyxF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LFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztTQUM3QyxDQUFDLENBQUM7SUFDUCxDQUFDOzswR0F6SFEsYUFBYTs4R0FBYixhQUFhOzJGQUFiLGFBQWE7a0JBTnpCLFVBQVU7OzBCQXlETSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUiB9IGZyb20gJy4uL2NvbnN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVTZXJ2aWNlT3V0cHV0IHtcbiAgICB0aGVtZVVybDogU2FmZVJlc291cmNlVXJsO1xuICAgIGN1c3RvbVRoZW1lVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBTZXJ2aWNlIHByb3ZpZGluZyB0aGVtZSBzd2l0Y2hlciBmdW5jdGlvbmFsaXR5LlxuICogRGVwcmVjYXRlZCBzaW5jZSAwLjM1LjAgaW4gZmF2b3Igb2YgVGhlbWluZ1NlcnZpY2UgZnJvbSBUaGVtaW5nTW9kdWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBUaGVtZXNTZXJ2aWNlIHtcbiAgICAvKiogQXZhaWxhYmxlIHRoZW1lcyAqL1xuICAgIHRoZW1lczogVGhlbWVbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfMycsXG4gICAgICAgICAgICBuYW1lOiAnRmlvcmkgMycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZSBpbiByZWd1bGFyIG9mZmljZSBlbnZpcm9ubWVudCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19kYXJrJyxcbiAgICAgICAgICAgIG5hbWU6ICdGaW9yaSAzIERhcmsnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gZGltbWVkIGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY2InLFxuICAgICAgICAgICAgbmFtZTogJ0hpZ2ggQ29udHJhc3QgQmxhY2snLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZWQgY29udHJhc3QgYW5kIGFjY2Vzc2liaWxpdHkgZm9yIGV4dHJlbWVseSBicmlnaHQgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2hjdycsXG4gICAgICAgICAgICBuYW1lOiAnSGlnaCBDb250cmFzdCBXaGl0ZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2xpZ2h0X2RhcmsnLFxuICAgICAgICAgICAgbmFtZTogJ0xpZ2h0IERhcmsnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b24nLFxuICAgICAgICAgICAgbmFtZTogJ01vcm5pbmcgSG9yaXpvbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9kYXJrJyxcbiAgICAgICAgICAgIG5hbWU6ICdFdmVuaW5nIEhvcml6b24nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b25faGNiJyxcbiAgICAgICAgICAgIG5hbWU6ICdIaWdoIENvbnRyYXN0IEJsYWNrIEhvcml6b24nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b25faGN3JyxcbiAgICAgICAgICAgIG5hbWU6ICdIaWdoIENvbnRyYXN0IFdoaXRlIEhvcml6b24nXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgLyoqIFN1YmplY3QgdHJpZ2dlcmVkLCB3aGVuIHRoZSB0aGVtaW5nIGlzIGNoYW5nZWQgYnkgVVJMIHBhcmFtZXRlciAqL1xuICAgIHJlYWRvbmx5IG9uVGhlbWVRdWVyeVBhcmFtQ2hhbmdlOiBTdWJqZWN0PFRoZW1lU2VydmljZU91dHB1dD4gPSBuZXcgU3ViamVjdDxUaGVtZVNlcnZpY2VPdXRwdXQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlbWUgYWNjb3JkaW5nIHRvIGFkZGl0aW9uYWwgVVJMIHBhcmFtZXRlci5cbiAgICAgKiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBpbiBmdW5jdGlvbiBhcmd1bWVudC5cbiAgICAgKiBCeSBkZWZhdWx0IGl0J3MgYHRoZW1lYC5cbiAgICAgKiovXG4gICAgc2V0VGhlbWVCeVJvdXRlKHRoZW1lUGFyYW1OYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHRoZW1lUGFyYW1OYW1lIHx8ICd0aGVtZSc7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFRIRU1FX1NXSVRDSEVSX1JPVVRFUl9NSVNTSU5HX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChwYXJhbSkgPT4gcGFyYW0gJiYgcGFyYW1bcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtKSA9PiB0aGlzLl9wcm9wYWdhdGVUaGVtZXMocGFyYW1bcGFyYW1OYW1lXSkpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZVRoZW1lID0gdGhpcy5fZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZSk7XG4gICAgICAgIGlmIChuYXRpdmVUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlVGhlbWVzKG5hdGl2ZVRoZW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdG8gZ2V0IG9uY2UgdGhlbWUgb2JqZWN0IGRpcmVjdGx5IGZyb20gdXJsLiAqL1xuICAgIGdldFRoZW1lc0Zyb21VUkwocGFyYW0/OiBzdHJpbmcpOiBUaGVtZVNlcnZpY2VPdXRwdXQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXJhbSB8fCAndGhlbWUnO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZVRoZW1lID0gdGhpcy5fZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZSk7XG4gICAgICAgIGlmICghbmF0aXZlVGhlbWUgJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlcmUgaXMgbm8gdGhlbWUgcGFyYW0gc2V0IG5hbWVkOiAnICsgcGFyYW0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRoZW1lVXJsOiB0aGlzLnNldFRoZW1lKG5hdGl2ZVRoZW1lKSxcbiAgICAgICAgICAgIGN1c3RvbVRoZW1lVXJsOiB0aGlzLnNldEN1c3RvbVRoZW1lKG5hdGl2ZVRoZW1lKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBBc3NpZ24gY3NzIGZpbGUgY29ycmVzcG9uZGluZyB0byBjaG9zZW4gdGhlbWUgZnJvbSBAc2FwLXRoZW1pbmcgKiovXG4gICAgc2V0VGhlbWUodGhlbWU6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvdGhlbWluZy1iYXNlLycgKyB0aGVtZSArICcvY3NzX3ZhcmlhYmxlcy5jc3MnKTtcbiAgICB9XG5cbiAgICAvKiogQXNzaWduIGNzcyBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gY2hvc2VuIHRoZW1lIGZ1bmRhbWVudGFsLXN0eWxlcyAqKi9cbiAgICBzZXRDdXN0b21UaGVtZSh0aGVtZTogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy9mdW5kYW1lbnRhbC1zdHlsZXMtdGhlbWluZy8nICsgdGhlbWUgKyAnLmNzcycpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcGFyYW1OYW1lID0gcGFyYW1OYW1lLnJlcGxhY2UoL1tbXFxdXS9nLCAnXFxcXCQmJyk7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBwYXJhbU5hbWUgKyAnKD0oW14mI10qKXwmfCN8JCknKSxcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzIHx8ICFyZXN1bHRzWzJdKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZVRoZW1lcyh0aGVtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25UaGVtZVF1ZXJ5UGFyYW1DaGFuZ2UubmV4dCh7XG4gICAgICAgICAgICB0aGVtZVVybDogdGhpcy5zZXRUaGVtZSh0aGVtZSksXG4gICAgICAgICAgICBjdXN0b21UaGVtZVVybDogdGhpcy5zZXRDdXN0b21UaGVtZSh0aGVtZSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9zZXJ2aWNlcy90aGVtZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQWNoRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFxRHRCLFlBQWdDLGVBQStCLEVBQVUsVUFBd0I7UUFBakUsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQXBEakcsdUJBQXVCO1FBQ3ZCLFdBQU0sR0FBWTtZQUNkO2dCQUNJLEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUseUJBQXlCO2FBQ2xDO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGtCQUFrQjtnQkFDdEIsSUFBSSxFQUFFLHdCQUF3QjthQUNqQztZQUNEO2dCQUNJLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFdBQVcsRUFBRSx5RUFBeUU7YUFDekY7WUFDRDtnQkFDSSxFQUFFLEVBQUUsaUJBQWlCO2dCQUNyQixJQUFJLEVBQUUscUNBQXFDO2dCQUMzQyxXQUFXLEVBQUUsc0VBQXNFO2FBQ3RGO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGFBQWE7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LENBQUMsRUFDOUQsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztTQUM3QyxDQUFDLENBQUM7SUFDUCxDQUFDOzswR0EzSFEsYUFBYTs4R0FBYixhQUFhOzJGQUFiLGFBQWE7a0JBTnpCLFVBQVU7OzBCQTJETSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUiB9IGZyb20gJy4uL2NvbnN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVTZXJ2aWNlT3V0cHV0IHtcbiAgICB0aGVtZVVybDogU2FmZVJlc291cmNlVXJsO1xuICAgIGN1c3RvbVRoZW1lVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBTZXJ2aWNlIHByb3ZpZGluZyB0aGVtZSBzd2l0Y2hlciBmdW5jdGlvbmFsaXR5LlxuICogRGVwcmVjYXRlZCBzaW5jZSAwLjM1LjAgaW4gZmF2b3Igb2YgVGhlbWluZ1NlcnZpY2UgZnJvbSBUaGVtaW5nTW9kdWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBUaGVtZXNTZXJ2aWNlIHtcbiAgICAvKiogQXZhaWxhYmxlIHRoZW1lcyAqL1xuICAgIHRoZW1lczogVGhlbWVbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbicsXG4gICAgICAgICAgICBuYW1lOiAnTW9ybmluZyBIb3Jpem9uIChMaWdodCknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b25fZGFyaycsXG4gICAgICAgICAgICBuYW1lOiAnRXZlbmluZyBIb3Jpem9uIChEYXJrKSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9oY2InLFxuICAgICAgICAgICAgbmFtZTogJ0hvcml6b24gSGlnaCBDb250cmFzdCBCbGFjaycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl3dHkgZm9yIGV4dHJlbWVseSBicmlnaHQgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2hjdycsXG4gICAgICAgICAgICBuYW1lOiAnSG9yaXpvbiBIaWdoIENvbnRyYXN0IFdoaXRlIEhvcml6b24nLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZWQgY29udHJhc3QgYW5kIGFjY2Vzc2liaWxpdHkgZm9yIGV4dHJlbWVseSBkYXJrIGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfMycsXG4gICAgICAgICAgICBuYW1lOiAnUXVhcnR6IExpZ2h0JyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIGluIHJlZ3VsYXIgb2ZmaWNlIGVudmlyb25tZW50J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2RhcmsnLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBEYXJrJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIGluIGRpbW1lZCBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfaGNiJyxcbiAgICAgICAgICAgIG5hbWU6ICdRdWFydHogSGlnaCBDb250cmFzdCBCbGFjaycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGJyaWdodCBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfaGN3JyxcbiAgICAgICAgICAgIG5hbWU6ICdRdWFydHogSGlnaCBDb250cmFzdCBXaGl0ZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zX2xpZ2h0X2RhcmsnLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBBdXRvIChEZXBlbmRpbmcgb24gdGhlIE9TIFNldHRpbmdzKSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICAvKiogU3ViamVjdCB0cmlnZ2VyZWQsIHdoZW4gdGhlIHRoZW1pbmcgaXMgY2hhbmdlZCBieSBVUkwgcGFyYW1ldGVyICovXG4gICAgcmVhZG9ubHkgb25UaGVtZVF1ZXJ5UGFyYW1DaGFuZ2U6IFN1YmplY3Q8VGhlbWVTZXJ2aWNlT3V0cHV0PiA9IG5ldyBTdWJqZWN0PFRoZW1lU2VydmljZU91dHB1dD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICoqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGVtZSBhY2NvcmRpbmcgdG8gYWRkaXRpb25hbCBVUkwgcGFyYW1ldGVyLlxuICAgICAqIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBjaGFuZ2VkIGluIGZ1bmN0aW9uIGFyZ3VtZW50LlxuICAgICAqIEJ5IGRlZmF1bHQgaXQncyBgdGhlbWVgLlxuICAgICAqKi9cbiAgICBzZXRUaGVtZUJ5Um91dGUodGhlbWVQYXJhbU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhlbWVQYXJhbU5hbWUgfHwgJ3RoZW1lJztcblxuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoVEhFTUVfU1dJVENIRVJfUk9VVEVSX01JU1NJTkdfRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHBhcmFtKSA9PiBwYXJhbSAmJiBwYXJhbVtwYXJhbU5hbWVdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFyYW0pID0+IHRoaXMuX3Byb3BhZ2F0ZVRoZW1lcyhwYXJhbVtwYXJhbU5hbWVdKSk7XG5cbiAgICAgICAgY29uc3QgbmF0aXZlVGhlbWUgPSB0aGlzLl9nZXROYXRpdmVQYXJhbWV0ZXJCeU5hbWUocGFyYW1OYW1lKTtcbiAgICAgICAgaWYgKG5hdGl2ZVRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9wYWdhdGVUaGVtZXMobmF0aXZlVGhlbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0byBnZXQgb25jZSB0aGVtZSBvYmplY3QgZGlyZWN0bHkgZnJvbSB1cmwuICovXG4gICAgZ2V0VGhlbWVzRnJvbVVSTChwYXJhbT86IHN0cmluZyk6IFRoZW1lU2VydmljZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHBhcmFtIHx8ICd0aGVtZSc7XG5cbiAgICAgICAgY29uc3QgbmF0aXZlVGhlbWUgPSB0aGlzLl9nZXROYXRpdmVQYXJhbWV0ZXJCeU5hbWUocGFyYW1OYW1lKTtcbiAgICAgICAgaWYgKCFuYXRpdmVUaGVtZSAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGVyZSBpcyBubyB0aGVtZSBwYXJhbSBzZXQgbmFtZWQ6ICcgKyBwYXJhbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGhlbWVVcmw6IHRoaXMuc2V0VGhlbWUobmF0aXZlVGhlbWUpLFxuICAgICAgICAgICAgY3VzdG9tVGhlbWVVcmw6IHRoaXMuc2V0Q3VzdG9tVGhlbWUobmF0aXZlVGhlbWUpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEFzc2lnbiBjc3MgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGNob3NlbiB0aGVtZSBmcm9tIEBzYXAtdGhlbWluZyAqKi9cbiAgICBzZXRUaGVtZSh0aGVtZTogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy90aGVtaW5nLWJhc2UvJyArIHRoZW1lICsgJy9jc3NfdmFyaWFibGVzLmNzcycpO1xuICAgIH1cblxuICAgIC8qKiBBc3NpZ24gY3NzIGZpbGUgY29ycmVzcG9uZGluZyB0byBjaG9zZW4gdGhlbWUgZnVuZGFtZW50YWwtc3R5bGVzICoqL1xuICAgIHNldEN1c3RvbVRoZW1lKHRoZW1lOiBzdHJpbmcpOiBTYWZlUmVzb3VyY2VVcmwge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2Z1bmRhbWVudGFsLXN0eWxlcy10aGVtaW5nLycgKyB0aGVtZSArICcuY3NzJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROYXRpdmVQYXJhbWV0ZXJCeU5hbWUocGFyYW1OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBwYXJhbU5hbWUgPSBwYXJhbU5hbWUucmVwbGFjZSgvW1tcXF1dL2csICdcXFxcJCYnKTtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdbPyZdJyArIHBhcmFtTmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxuICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBpZiAoIXJlc3VsdHMgfHwgIXJlc3VsdHNbMl0pIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvcGFnYXRlVGhlbWVzKHRoZW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRoZW1lUXVlcnlQYXJhbUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICAgIHRoZW1lVXJsOiB0aGlzLnNldFRoZW1lKHRoZW1lKSxcbiAgICAgICAgICAgIGN1c3RvbVRoZW1lVXJsOiB0aGlzLnNldEN1c3RvbVRoZW1lKHRoZW1lKVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -52,57 +52,59 @@ class BaseThemingConfig {
52
52
  }
53
53
 
54
54
  const STANDARD_THEMES = [
55
- {
56
- id: 'sap_fiori_3',
57
- name: 'Fiori 3',
58
- description: 'Use in regular office environment'
59
- },
60
- {
61
- id: 'sap_fiori_3_dark',
62
- name: 'Fiori 3 Dark',
63
- description: 'Use in dimmed environments'
64
- },
65
- {
66
- id: 'sap_fiori_3_hcb',
67
- name: 'High Contrast Black',
68
- description: 'Optimized contrast and accessibility for extremely bright environments'
69
- },
70
- {
71
- id: 'sap_fiori_3_hcw',
72
- name: 'High Contrast White',
73
- description: 'Optimized contrast and accessibility for extremely dark environments'
74
- },
75
- {
76
- id: 'sap_fiori_3_light_dark',
77
- name: 'Light Dark'
78
- },
79
55
  {
80
56
  id: 'sap_horizon',
81
- name: 'Morning Horizon',
57
+ name: 'Morning Horizon (Light)',
82
58
  theming: {
83
59
  themeFontPath: 'sap_horizon_fonts.css'
84
60
  }
85
61
  },
86
62
  {
87
63
  id: 'sap_horizon_dark',
88
- name: 'Evening Horizon',
64
+ name: 'Evening Horizon (Dark)',
89
65
  theming: {
90
66
  themeFontPath: 'sap_horizon_fonts.css'
91
67
  }
92
68
  },
93
69
  {
94
70
  id: 'sap_horizon_hcb',
95
- name: 'High Contrast Black Horizon',
71
+ name: 'Horizon High Contrast Black',
72
+ description: 'Optimized contrast and accessibility for extremely bright environments',
96
73
  theming: {
97
74
  themeFontPath: 'sap_horizon_fonts.css'
98
75
  }
99
76
  },
100
77
  {
101
78
  id: 'sap_horizon_hcw',
102
- name: 'High Contrast White Horizon',
79
+ name: 'Horizon High Contrast White',
80
+ description: 'Optimized contrast and accessibility for extremely dark environments',
103
81
  theming: {
104
82
  themeFontPath: 'sap_horizon_fonts.css'
105
83
  }
84
+ },
85
+ {
86
+ id: 'sap_fiori_3',
87
+ name: 'Quartz Light',
88
+ description: 'Use in regular office environment'
89
+ },
90
+ {
91
+ id: 'sap_fiori_3_dark',
92
+ name: 'Quartz Dark',
93
+ description: 'Use in dimmed environments'
94
+ },
95
+ {
96
+ id: 'sap_fiori_3_hcb',
97
+ name: 'Quartz High Contrast Black',
98
+ description: 'Optimized contrast and accessibility for extremely bright environments'
99
+ },
100
+ {
101
+ id: 'sap_fiori_3_hcw',
102
+ name: 'Quartz High Contrast White',
103
+ description: 'Optimized contrast and accessibility for extremely dark environments'
104
+ },
105
+ {
106
+ id: 'sap_fiori_3_light_dark',
107
+ name: 'Quartz Auto (Depending on the OS Settings)'
106
108
  }
107
109
  ];
108
110
 
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_fiori_3',\n name: 'Fiori 3',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Fiori 3 Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Light Dark'\n },\n {\n id: 'sap_horizon',\n name: 'Morning Horizon',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'High Contrast Black Horizon',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'High Contrast White Horizon',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig');\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/core/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /** @hidden */\n private readonly config = new BaseThemingConfig();\n\n /**\n * Current theme applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _currentTheme: CompleteThemeDefinition;\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentTheme = theme;\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: new BaseThemingConfig()\n },\n ThemingService\n ]\n})\nexport class ThemingModule {\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_horizon',\n name: 'Morning Horizon (Light)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon (Dark)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'Horizon High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'Horizon High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_fiori_3',\n name: 'Quartz Light',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Quartz Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'Quartz High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'Quartz High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Quartz Auto (Depending on the OS Settings)'\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig');\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/core/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /** @hidden */\n private readonly config = new BaseThemingConfig();\n\n /**\n * Current theme applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _currentTheme: CompleteThemeDefinition;\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentTheme = theme;\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: new BaseThemingConfig()\n },\n ThemingService\n ]\n})\nexport class ThemingModule {\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2874,44 +2874,46 @@ class ThemesService {
2874
2874
  /** Available themes */
2875
2875
  this.themes = [
2876
2876
  {
2877
- id: 'sap_fiori_3',
2878
- name: 'Fiori 3',
2879
- description: 'Use in regular office environment'
2877
+ id: 'sap_horizon',
2878
+ name: 'Morning Horizon (Light)'
2880
2879
  },
2881
2880
  {
2882
- id: 'sap_fiori_3_dark',
2883
- name: 'Fiori 3 Dark',
2884
- description: 'Use in dimmed environments'
2881
+ id: 'sap_horizon_dark',
2882
+ name: 'Evening Horizon (Dark)'
2885
2883
  },
2886
2884
  {
2887
- id: 'sap_fiori_3_hcb',
2888
- name: 'High Contrast Black',
2889
- description: 'Optimized contrast and accessibility for extremely bright environments'
2885
+ id: 'sap_horizon_hcb',
2886
+ name: 'Horizon High Contrast Black',
2887
+ description: 'Optimized contrast and accessibiliwty for extremely bright environments'
2890
2888
  },
2891
2889
  {
2892
- id: 'sap_fiori_3_hcw',
2893
- name: 'High Contrast White',
2890
+ id: 'sap_horizon_hcw',
2891
+ name: 'Horizon High Contrast White Horizon',
2894
2892
  description: 'Optimized contrast and accessibility for extremely dark environments'
2895
2893
  },
2896
2894
  {
2897
- id: 'sap_fiori_3_light_dark',
2898
- name: 'Light Dark'
2895
+ id: 'sap_fiori_3',
2896
+ name: 'Quartz Light',
2897
+ description: 'Use in regular office environment'
2899
2898
  },
2900
2899
  {
2901
- id: 'sap_horizon',
2902
- name: 'Morning Horizon'
2900
+ id: 'sap_fiori_3_dark',
2901
+ name: 'Quartz Dark',
2902
+ description: 'Use in dimmed environments'
2903
2903
  },
2904
2904
  {
2905
- id: 'sap_horizon_dark',
2906
- name: 'Evening Horizon'
2905
+ id: 'sap_fiori_3_hcb',
2906
+ name: 'Quartz High Contrast Black',
2907
+ description: 'Optimized contrast and accessibility for extremely bright environments'
2907
2908
  },
2908
2909
  {
2909
- id: 'sap_horizon_hcb',
2910
- name: 'High Contrast Black Horizon'
2910
+ id: 'sap_fiori_3_hcw',
2911
+ name: 'Quartz High Contrast White',
2912
+ description: 'Optimized contrast and accessibility for extremely dark environments'
2911
2913
  },
2912
2914
  {
2913
- id: 'sap_horizon_hcw',
2914
- name: 'High Contrast White Horizon'
2915
+ id: 'sap_fiori_3_light_dark',
2916
+ name: 'Quartz Auto (Depending on the OS Settings)'
2915
2917
  }
2916
2918
  ];
2917
2919
  /** Subject triggered, when the theming is changed by URL parameter */