@fundamental-ngx/core 0.35.2-rc.4 → 0.35.2-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/package.json +1 -1
  20. package/dynamic-side-content/package.json +1 -1
  21. package/esm2020/theming/theming.service.mjs +1 -1
  22. package/facets/package.json +1 -1
  23. package/feed-input/package.json +1 -1
  24. package/feed-list-item/package.json +1 -1
  25. package/fesm2015/fundamental-ngx-core-theming.mjs.map +1 -1
  26. package/fesm2020/fundamental-ngx-core-theming.mjs.map +1 -1
  27. package/file-uploader/package.json +1 -1
  28. package/fixed-card-layout/package.json +1 -1
  29. package/flexible-column-layout/package.json +1 -1
  30. package/form/package.json +1 -1
  31. package/formatted-text/package.json +1 -1
  32. package/grid-list/package.json +1 -1
  33. package/icon/package.json +1 -1
  34. package/illustrated-message/package.json +1 -1
  35. package/infinite-scroll/package.json +1 -1
  36. package/info-label/package.json +1 -1
  37. package/inline-help/package.json +1 -1
  38. package/input-group/package.json +1 -1
  39. package/layout-grid/package.json +1 -1
  40. package/layout-panel/package.json +1 -1
  41. package/link/package.json +1 -1
  42. package/list/package.json +1 -1
  43. package/menu/package.json +1 -1
  44. package/message-box/package.json +1 -1
  45. package/message-strip/package.json +1 -1
  46. package/message-toast/package.json +1 -1
  47. package/micro-process-flow/package.json +1 -1
  48. package/mobile-mode/package.json +1 -1
  49. package/multi-input/package.json +1 -1
  50. package/nested-list/package.json +1 -1
  51. package/notification/package.json +1 -1
  52. package/object-identifier/package.json +1 -1
  53. package/object-marker/package.json +1 -1
  54. package/object-number/package.json +1 -1
  55. package/object-status/package.json +1 -1
  56. package/overflow-layout/package.json +12 -12
  57. package/package.json +1 -1
  58. package/pagination/package.json +1 -1
  59. package/panel/package.json +1 -1
  60. package/popover/package.json +1 -1
  61. package/product-switch/package.json +1 -1
  62. package/progress-indicator/package.json +1 -1
  63. package/quick-view/package.json +1 -1
  64. package/radio/package.json +1 -1
  65. package/rating-indicator/package.json +1 -1
  66. package/resizable-card-layout/package.json +1 -1
  67. package/scroll-spy/package.json +1 -1
  68. package/scrollbar/package.json +1 -1
  69. package/segmented-button/package.json +1 -1
  70. package/select/package.json +1 -1
  71. package/shared/package.json +1 -1
  72. package/shellbar/package.json +1 -1
  73. package/side-navigation/package.json +1 -1
  74. package/slider/package.json +1 -1
  75. package/split-button/package.json +1 -1
  76. package/splitter/package.json +1 -1
  77. package/status-indicator/package.json +1 -1
  78. package/step-input/package.json +1 -1
  79. package/switch/package.json +1 -1
  80. package/table/package.json +1 -1
  81. package/tabs/package.json +1 -1
  82. package/text/package.json +1 -1
  83. package/theming/esm2020/theming.service.mjs +1 -1
  84. package/theming/fesm2015/fundamental-ngx-core-theming.mjs.map +1 -1
  85. package/theming/fesm2020/fundamental-ngx-core-theming.mjs.map +1 -1
  86. package/theming/package.json +1 -1
  87. package/tile/package.json +1 -1
  88. package/time/package.json +1 -1
  89. package/time-picker/package.json +1 -1
  90. package/timeline/package.json +1 -1
  91. package/title/package.json +1 -1
  92. package/token/package.json +1 -1
  93. package/toolbar/package.json +1 -1
  94. package/tree/package.json +1 -1
  95. package/upload-collection/package.json +1 -1
  96. package/utils/package.json +1 -1
  97. package/vertical-navigation/package.json +1 -1
  98. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/checkbox",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/combobox",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/date-picker",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime-picker",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dialog",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-page",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-side-content",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -178,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
178
178
  type: Inject,
179
179
  args: [THEMING_CONFIG_TOKEN]
180
180
  }] }]; } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGhlbWluZy90aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU9wRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUdoRCxNQUFNLE9BQU8sY0FBYztJQThCdkI7O09BRUc7SUFDSCxZQUNZLGdCQUFrQyxFQUNoQixTQUFtQixFQUN6QixlQUErQixFQUdsQyxlQUF1QztRQUxoRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDekIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBR2xDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQXRDNUQsY0FBYztRQUNHLFdBQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENB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RU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRIRU1FX1NXSVRDSEVSX1JPVVRFUl9NSVNTSU5HX0VSUk9SIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEJhc2VUaGVtaW5nQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgVGhlbWluZ0NvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy90aGVtaW5nLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1RBTkRBUkRfVEhFTUVTIH0gZnJvbSAnLi9zdGFuZGFyZC10aGVtZXMnO1xuaW1wb3J0IHtcbiAgICBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbixcbiAgICBDb21wbGV0ZVRoZW1pbmdSZXNvdXJjZSxcbiAgICBUaGVtZURlZmluaXRpb24sXG4gICAgVGhlbWVTdHlsZUxpbmtcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3RoZW1lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUSEVNSU5HX0NPTkZJR19UT0tFTiB9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZW1pbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gbmV3IEJhc2VUaGVtaW5nQ29uZmlnKCk7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRoZW1lIGFwcGxpZWQgdG8gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIGdldCBjdXJyZW50VGhlbWUoKTogT2JzZXJ2YWJsZTxDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaGVtZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hdmFpbGFibGVUaGVtZXM6IE1hcDxzdHJpbmcsIENvbXBsZXRlVGhlbWVEZWZpbml0aW9uPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RhbmRhcmRUaGVtZXM6IFRoZW1lRGVmaW5pdGlvbltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFRoZW1lOiBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFRoZW1lU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PENvbXBsZXRlVGhlbWVEZWZpbml0aW9uIHwgbnVsbD4gPVxuICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbXBsZXRlVGhlbWVEZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVEhFTUlOR19DT05GSUdfVE9LRU4pXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb3ZpZGVkQ29uZmlnOiBQYXJ0aWFsPFRoZW1pbmdDb25maWc+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2UoY2xvbmVEZWVwKHRoaXMuY29uZmlnKSwgY2xvbmVEZWVwKHRoaXMuX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSB0aGlzLl9yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodGhpcy5fZG9jdW1lbnQsIG51bGwpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZXhjbHVkZURlZmF1bHRUaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YW5kYXJkVGhlbWVzID0gU1RBTkRBUkRfVEhFTUVTO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVyZ2VkVGhlbWVzID0gdGhpcy5fZm9ybWF0UHJvdmlkZWRUaGVtZXModGhpcy5jb25maWcuY3VzdG9tVGhlbWVzKTtcbiAgICAgICAgdGhpcy5fYXZhaWxhYmxlVGhlbWVzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBsZXRlVGhlbWVEZWZpbml0aW9uPihcbiAgICAgICAgICAgIG1lcmdlZFRoZW1lcy5tYXAoKHRoZW1lKSA9PiBbdGhlbWUuaWQsIHRoZW1lXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgdGhlbWUgY2hhbmdlIGJhc2VkIG9uIHF1ZXJ5IHBhcmFtZXRlciBvciBwcm92aWRlZCBkZWZhdWx0IHRoZW1lIGluIGNvbmZpZy5cbiAgICAgKi9cbiAgICBpbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuY2hhbmdlVGhlbWVPblF1ZXJ5UGFyYW1DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRoZW1lQnlSb3V0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRUaGVtZSh0aGlzLmNvbmZpZy5kZWZhdWx0VGhlbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRlZmluZWQgdGhlbWUuXG4gICAgICogQHBhcmFtIHRoZW1lSWQgSUQgb2YgdGhlbWUgdGhhdCBuZWVkcyB0byBiZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKi9cbiAgICBzZXRUaGVtZSh0aGVtZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLl9hdmFpbGFibGVUaGVtZXMuZ2V0KHRoZW1lSWQpO1xuXG4gICAgICAgIGlmICghdGhlbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgVGhlbWUgd2l0aCBJRCAnJHt0aGVtZUlkfScgaXMgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgaWYgSUQgaXMgY29ycmVjdCBvciBwcm92aWRlIGN1c3RvbSB0aGVtZSBmb3IgVGhlbWluZ01vZHVsZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnYmFzZS10aGVtZScsIHRoZW1lLnRoZW1pbmcudGhlbWluZ0Jhc2VQYXRoKTtcbiAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnY3VzdG9tLXRoZW1lJywgdGhlbWUudGhlbWluZy50aGVtZVBhdGgpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZXhjbHVkZVRoZW1pbmdGb250cykge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnZm9udHMnLCB0aGVtZS50aGVtaW5nLnRoZW1lRm9udFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUaGVtZSA9IHRoZW1lO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGhlbWVTdWJqZWN0Lm5leHQodGhlbWUpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYXJyYXkgb2YgYXZhaWxhYmxlIHRoZW1lcy5cbiAgICAgKi9cbiAgICBnZXRUaGVtZXMoKTogQ29tcGxldGVUaGVtZURlZmluaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5fYXZhaWxhYmxlVGhlbWVzXS5tYXAoKGVudHJ5KSA9PiBlbnRyeVsxXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHBhcmFtIHJlc291cmNlVXJsXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXRUaGVtZVJlc291cmNlKHR5cGU6IFRoZW1lU3R5bGVMaW5rLCByZXNvdXJjZVVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpbmtFbG0gPSB0aGlzLl9nZXRTdHlsZUxpbmtFbGVtZW50KHR5cGUpO1xuXG4gICAgICAgIGlmIChsaW5rRWxtLmdldEF0dHJpYnV0ZSgnaHJlZicpID09PSByZXNvdXJjZVVybCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGxpbmtFbG0sICdocmVmJywgcmVzb3VyY2VVcmwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gdHlwZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3R5bGVMaW5rRWxlbWVudCh0eXBlOiBUaGVtZVN0eWxlTGluayk6IEhUTUxMaW5rRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGlua0VsZW1lbnQgPSB0aGlzLl9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbmZpZy50aGVtZVN0eWxlTGlua0lkZW50aWZpZXJzW3R5cGVdKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdMaW5rRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTGlua0VsZW1lbnQgYXMgSFRNTExpbmtFbGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3TGlua0VsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShuZXdMaW5rRWxlbWVudCwgJ3JlbCcsICdzdHlsZXNoZWV0Jyk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShuZXdMaW5rRWxlbWVudCwgJ2lkJywgdGhpcy5jb25maWcudGhlbWVTdHlsZUxpbmtJZGVudGlmaWVyc1t0eXBlXSk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2RvY3VtZW50LmhlYWQsIG5ld0xpbmtFbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gbmV3TGlua0VsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB0aGVtZXNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2Zvcm1hdFByb3ZpZGVkVGhlbWVzKHRoZW1lcz86IFRoZW1lRGVmaW5pdGlvbltdKTogQ29tcGxldGVUaGVtZURlZmluaXRpb25bXSB7XG4gICAgICAgIHRoZW1lcyA9IHRoZW1lcyB8fCBbXTtcbiAgICAgICAgY29uc3QgbWVyZ2VkVGhlbWVzID0gWy4uLnRoaXMuX3N0YW5kYXJkVGhlbWVzLCAuLi50aGVtZXNdO1xuXG4gICAgICAgIGlmIChtZXJnZWRUaGVtZXMubGVuZ3RoID09PSAwICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvci4gTm8gdGhlbWVzIHdlcmUgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVyZ2VkVGhlbWVzLm1hcCgodGhlbWUpID0+IHtcbiAgICAgICAgICAgIHRoZW1lLnRoZW1pbmcgPSB0aGlzLl9nZXRUaGVtaW5nUmVzb3VyY2VDb25maWcodGhlbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoZW1lO1xuICAgICAgICB9KSBhcyBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbltdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VGhlbWluZ1Jlc291cmNlQ29uZmlnKHRoZW1lOiBUaGVtZURlZmluaXRpb24pOiBDb21wbGV0ZVRoZW1pbmdSZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gdGhlbWUudGhlbWluZyB8fCB7fTtcbiAgICAgICAgY29uc3QgZGVmYXVsdENvbmZpZzogQ29tcGxldGVUaGVtaW5nUmVzb3VyY2UgPSB7XG4gICAgICAgICAgICB0aGVtaW5nQmFzZVBhdGg6IGBhc3NldHMvdGhlbWluZy1iYXNlLyR7dGhlbWUuaWR9L2Nzc192YXJpYWJsZXMuY3NzYCxcbiAgICAgICAgICAgIHRoZW1lUGF0aDogYGFzc2V0cy9mdW5kYW1lbnRhbC1zdHlsZXMtdGhlbWluZy8ke3RoZW1lLmlkfS5jc3NgLFxuICAgICAgICAgICAgdGhlbWVGb250UGF0aDogYCR7dGhpcy5jb25maWcuZGVmYXVsdEZvbnRGaWxlfV9mb250cy5jc3NgXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZGVmYXVsdENvbmZpZywgZXhpc3RpbmdDb25maWcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcGFyYW1OYW1lID0gcGFyYW1OYW1lLnJlcGxhY2UoL1tbXFxcXFxcXV0vZywgJ1xcXFwkJicpO1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgcGFyYW1OYW1lICsgJyg9KFteJiNdKil8JnwjfCQpJyksXG4gICAgICAgICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgIGlmICghcmVzdWx0cyB8fCAhcmVzdWx0c1syXSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1syXS5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNldCB0aGVtZSBhY2NvcmRpbmcgdG8gYWRkaXRpb25hbCBVUkwgcGFyYW1ldGVyLlxuICAgICAqIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBjaGFuZ2VkIGluIGZ1bmN0aW9uIGFyZ3VtZW50LlxuICAgICAqKi9cbiAgICBwcml2YXRlIF9zZXRUaGVtZUJ5Um91dGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHRoaXMuY29uZmlnLnRoZW1lUXVlcnlQYXJhbTtcblxuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoVEhFTUVfU1dJVENIRVJfUk9VVEVSX01JU1NJTkdfRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHBhcmFtKSA9PiBwYXJhbSAmJiBwYXJhbVtwYXJhbU5hbWVdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFyYW0pID0+IHRoaXMuc2V0VGhlbWUocGFyYW1bcGFyYW1OYW1lXSkpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZVRoZW1lID0gdGhpcy5fZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZSkgfHwgdGhpcy5jb25maWcuZGVmYXVsdFRoZW1lO1xuICAgICAgICB0aGlzLnNldFRoZW1lKG5hdGl2ZVRoZW1lKTtcbiAgICB9XG59XG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGhlbWluZy90aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU9wRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUdoRCxNQUFNLE9BQU8sY0FBYztJQThCdkI7O09BRUc7SUFDSCxZQUNZLGdCQUFrQyxFQUNoQixTQUFtQixFQUN6QixlQUErQixFQUdsQyxlQUF1QztRQUxoRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDekIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBR2xDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQXRDNUQsY0FBYztRQUNHLFdBQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENB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RU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRIRU1FX1NXSVRDSEVSX1JPVVRFUl9NSVNTSU5HX0VSUk9SIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEJhc2VUaGVtaW5nQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgVGhlbWluZ0NvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy90aGVtaW5nLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1RBTkRBUkRfVEhFTUVTIH0gZnJvbSAnLi9zdGFuZGFyZC10aGVtZXMnO1xuaW1wb3J0IHtcbiAgICBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbixcbiAgICBDb21wbGV0ZVRoZW1pbmdSZXNvdXJjZSxcbiAgICBUaGVtZURlZmluaXRpb24sXG4gICAgVGhlbWVTdHlsZUxpbmtcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3RoZW1lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUSEVNSU5HX0NPTkZJR19UT0tFTiB9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZW1pbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gbmV3IEJhc2VUaGVtaW5nQ29uZmlnKCk7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRoZW1lIGFwcGxpZWQgdG8gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIGdldCBjdXJyZW50VGhlbWUoKTogT2JzZXJ2YWJsZTxDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaGVtZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hdmFpbGFibGVUaGVtZXM6IE1hcDxzdHJpbmcsIENvbXBsZXRlVGhlbWVEZWZpbml0aW9uPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RhbmRhcmRUaGVtZXM6IFRoZW1lRGVmaW5pdGlvbltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFRoZW1lOiBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFRoZW1lU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PENvbXBsZXRlVGhlbWVEZWZpbml0aW9uIHwgbnVsbD4gPVxuICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbXBsZXRlVGhlbWVEZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVEhFTUlOR19DT05GSUdfVE9LRU4pXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb3ZpZGVkQ29uZmlnOiBQYXJ0aWFsPFRoZW1pbmdDb25maWc+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2UoY2xvbmVEZWVwKHRoaXMuY29uZmlnKSwgY2xvbmVEZWVwKHRoaXMuX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSB0aGlzLl9yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodGhpcy5fZG9jdW1lbnQsIG51bGwpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZXhjbHVkZURlZmF1bHRUaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YW5kYXJkVGhlbWVzID0gU1RBTkRBUkRfVEhFTUVTO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVyZ2VkVGhlbWVzID0gdGhpcy5fZm9ybWF0UHJvdmlkZWRUaGVtZXModGhpcy5jb25maWcuY3VzdG9tVGhlbWVzKTtcbiAgICAgICAgdGhpcy5fYXZhaWxhYmxlVGhlbWVzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBsZXRlVGhlbWVEZWZpbml0aW9uPihcbiAgICAgICAgICAgIG1lcmdlZFRoZW1lcy5tYXAoKHRoZW1lKSA9PiBbdGhlbWUuaWQsIHRoZW1lXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgdGhlbWUgY2hhbmdlIGJhc2VkIG9uIHF1ZXJ5IHBhcmFtZXRlciBvciBwcm92aWRlZCBkZWZhdWx0IHRoZW1lIGluIGNvbmZpZy5cbiAgICAgKi9cbiAgICBpbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuY2hhbmdlVGhlbWVPblF1ZXJ5UGFyYW1DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRoZW1lQnlSb3V0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRUaGVtZSh0aGlzLmNvbmZpZy5kZWZhdWx0VGhlbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRlZmluZWQgdGhlbWUuXG4gICAgICogQHBhcmFtIHRoZW1lSWQgSUQgb2YgdGhlbWUgdGhhdCBuZWVkcyB0byBiZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKi9cbiAgICBzZXRUaGVtZSh0aGVtZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLl9hdmFpbGFibGVUaGVtZXMuZ2V0KHRoZW1lSWQpO1xuXG4gICAgICAgIGlmICghdGhlbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgVGhlbWUgd2l0aCBJRCAnJHt0aGVtZUlkfScgaXMgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgaWYgSUQgaXMgY29ycmVjdCBvciBwcm92aWRlIGN1c3RvbSB0aGVtZSBmb3IgVGhlbWluZ01vZHVsZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnYmFzZS10aGVtZScsIHRoZW1lLnRoZW1pbmcudGhlbWluZ0Jhc2VQYXRoKTtcbiAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnY3VzdG9tLXRoZW1lJywgdGhlbWUudGhlbWluZy50aGVtZVBhdGgpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZXhjbHVkZVRoZW1pbmdGb250cykge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGhlbWVSZXNvdXJjZSgnZm9udHMnLCB0aGVtZS50aGVtaW5nLnRoZW1lRm9udFBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFRoZW1lID0gdGhlbWU7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUaGVtZVN1YmplY3QubmV4dCh0aGVtZSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcnJheSBvZiBhdmFpbGFibGUgdGhlbWVzLlxuICAgICAqL1xuICAgIGdldFRoZW1lcygpOiBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLl9hdmFpbGFibGVUaGVtZXNdLm1hcCgoZW50cnkpID0+IGVudHJ5WzFdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHR5cGVcbiAgICAgKiBAcGFyYW0gcmVzb3VyY2VVcmxcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldFRoZW1lUmVzb3VyY2UodHlwZTogVGhlbWVTdHlsZUxpbmssIHJlc291cmNlVXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlua0VsbSA9IHRoaXMuX2dldFN0eWxlTGlua0VsZW1lbnQodHlwZSk7XG5cbiAgICAgICAgaWYgKGxpbmtFbG0uZ2V0QXR0cmlidXRlKCdocmVmJykgPT09IHJlc291cmNlVXJsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGlua0VsbSwgJ2hyZWYnLCByZXNvdXJjZVVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTdHlsZUxpbmtFbGVtZW50KHR5cGU6IFRoZW1lU3R5bGVMaW5rKTogSFRNTExpbmtFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdMaW5rRWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY29uZmlnLnRoZW1lU3R5bGVMaW5rSWRlbnRpZmllcnNbdHlwZV0pO1xuXG4gICAgICAgIGlmIChleGlzdGluZ0xpbmtFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdMaW5rRWxlbWVudCBhcyBIVE1MTGlua0VsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdMaW5rRWxlbWVudCA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKG5ld0xpbmtFbGVtZW50LCAncmVsJywgJ3N0eWxlc2hlZXQnKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKG5ld0xpbmtFbGVtZW50LCAnaWQnLCB0aGlzLmNvbmZpZy50aGVtZVN0eWxlTGlua0lkZW50aWZpZXJzW3R5cGVdKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZG9jdW1lbnQuaGVhZCwgbmV3TGlua0VsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBuZXdMaW5rRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHRoZW1lc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0UHJvdmlkZWRUaGVtZXModGhlbWVzPzogVGhlbWVEZWZpbml0aW9uW10pOiBDb21wbGV0ZVRoZW1lRGVmaW5pdGlvbltdIHtcbiAgICAgICAgdGhlbWVzID0gdGhlbWVzIHx8IFtdO1xuICAgICAgICBjb25zdCBtZXJnZWRUaGVtZXMgPSBbLi4udGhpcy5fc3RhbmRhcmRUaGVtZXMsIC4uLnRoZW1lc107XG5cbiAgICAgICAgaWYgKG1lcmdlZFRoZW1lcy5sZW5ndGggPT09IDAgJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yLiBObyB0aGVtZXMgd2VyZSBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIHlvdXIgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXJnZWRUaGVtZXMubWFwKCh0aGVtZSkgPT4ge1xuICAgICAgICAgICAgdGhlbWUudGhlbWluZyA9IHRoaXMuX2dldFRoZW1pbmdSZXNvdXJjZUNvbmZpZyh0aGVtZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhlbWU7XG4gICAgICAgIH0pIGFzIENvbXBsZXRlVGhlbWVEZWZpbml0aW9uW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRUaGVtaW5nUmVzb3VyY2VDb25maWcodGhlbWU6IFRoZW1lRGVmaW5pdGlvbik6IENvbXBsZXRlVGhlbWluZ1Jlc291cmNlIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdDb25maWcgPSB0aGVtZS50aGVtaW5nIHx8IHt9O1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBDb21wbGV0ZVRoZW1pbmdSZXNvdXJjZSA9IHtcbiAgICAgICAgICAgIHRoZW1pbmdCYXNlUGF0aDogYGFzc2V0cy90aGVtaW5nLWJhc2UvJHt0aGVtZS5pZH0vY3NzX3ZhcmlhYmxlcy5jc3NgLFxuICAgICAgICAgICAgdGhlbWVQYXRoOiBgYXNzZXRzL2Z1bmRhbWVudGFsLXN0eWxlcy10aGVtaW5nLyR7dGhlbWUuaWR9LmNzc2AsXG4gICAgICAgICAgICB0aGVtZUZvbnRQYXRoOiBgJHt0aGlzLmNvbmZpZy5kZWZhdWx0Rm9udEZpbGV9X2ZvbnRzLmNzc2BcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkZWZhdWx0Q29uZmlnLCBleGlzdGluZ0NvbmZpZyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROYXRpdmVQYXJhbWV0ZXJCeU5hbWUocGFyYW1OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBwYXJhbU5hbWUgPSBwYXJhbU5hbWUucmVwbGFjZSgvW1tcXFxcXFxdXS9nLCAnXFxcXCQmJyk7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBwYXJhbU5hbWUgKyAnKD0oW14mI10qKXwmfCN8JCknKSxcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzIHx8ICFyZXN1bHRzWzJdKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2V0IHRoZW1lIGFjY29yZGluZyB0byBhZGRpdGlvbmFsIFVSTCBwYXJhbWV0ZXIuXG4gICAgICogVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgaW4gZnVuY3Rpb24gYXJndW1lbnQuXG4gICAgICoqL1xuICAgIHByaXZhdGUgX3NldFRoZW1lQnlSb3V0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5jb25maWcudGhlbWVRdWVyeVBhcmFtO1xuXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigocGFyYW0pID0+IHBhcmFtICYmIHBhcmFtW3BhcmFtTmFtZV0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYXJhbSkgPT4gdGhpcy5zZXRUaGVtZShwYXJhbVtwYXJhbU5hbWVdKSk7XG5cbiAgICAgICAgY29uc3QgbmF0aXZlVGhlbWUgPSB0aGlzLl9nZXROYXRpdmVQYXJhbWV0ZXJCeU5hbWUocGFyYW1OYW1lKSB8fCB0aGlzLmNvbmZpZy5kZWZhdWx0VGhlbWU7XG4gICAgICAgIHRoaXMuc2V0VGhlbWUobmF0aXZlVGhlbWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-list-item",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -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 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_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 +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 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_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,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/file-uploader",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/fixed-card-layout",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/flexible-column-layout",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/form/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/form",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/formatted-text",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/grid-list",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/icon/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/icon",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/illustrated-message",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/infinite-scroll",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/info-label",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/inline-help",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/input-group",
3
- "version": "0.35.2-rc.4",
3
+ "version": "0.35.2-rc.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"